From f4ab89e7032bea8d3c7e05a44946c3fdb58b7473 Mon Sep 17 00:00:00 2001
From: chen_xi <276999030@qq.com>
Date: Tue, 27 Sep 2022 11:15:18 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
screen-api/src/main/java/com/moral/api/service/impl/ExcelServiceImpl.java | 193 ++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 177 insertions(+), 16 deletions(-)
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/ExcelServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/ExcelServiceImpl.java
index 99491f1..a551074 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/ExcelServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/ExcelServiceImpl.java
@@ -83,9 +83,11 @@
MultipartFile file5 = files.get(4);
Map<String, Object> map5 = getMap5(file5);
map.put("c5",map5);
- MultipartFile file6 = files.get(5);
- Map<String, Object> map6 = getMap6(file6);
- map.put("c6",map6);
+ if (files.size()>5){
+ MultipartFile file6 = files.get(5);
+ Map<String, Object> map6 = getMap6(file6);
+ map.put("c6",map6);
+ }
String s = JSON.toJSONString(map);
excel1.setValue(s);
excel1.setTime(date);
@@ -113,9 +115,11 @@
MultipartFile file5 = files.get(4);
Map<String, Object> map5 = getMap5(file5);
map.put("c5",map5);
- MultipartFile file6 = files.get(5);
- Map<String, Object> map6 = getMap6(file6);
- map.put("c6",map6);
+ if (files.size()>5){
+ MultipartFile file6 = files.get(5);
+ Map<String, Object> map6 = getMap6(file6);
+ map.put("c6",map6);
+ }
String s = JSON.toJSONString(map);
excel.setValue(s);
excelMapper.updateById(excel);
@@ -384,7 +388,7 @@
// "������8���������������������90���������������������"+O3y+"������/������������������"+code5+"%���" +
// "���������������������������������"+AQIy+"%���������"+code6+"%���";
- excelVo.setQuality(s3+s4);
+ excelVo.setQuality(s4+s3);
excelVo.setSu(s1);
excelVo.setCount(count);
excelVo.setPM10(PM10);
@@ -760,25 +764,37 @@
for (String s : strings1) {
HashMap<String, Object> map = new HashMap<>();
List<Double> doubles = ListHashMap.get(s);
+
+ ArrayList<Double> list = new ArrayList<>();
+ double co = getCo(doubles.get(0));
+ double so2 = getSo2(doubles.get(1));
+ double no2 = getNo2(doubles.get(2));
+ double pm10 = getPm10(doubles.get(3));
+ double pm2_5 = getPm2_5(doubles.get(4));
+ double o3 = getO3(doubles.get(5));
+ list.add(co);
+ list.add(so2);
+ list.add(no2);
+ list.add(pm10);
+ list.add(pm2_5);
+ list.add(o3);
+
+ Double aqi = Collections.max(list);
+
map.put("a21005",doubles.get(0));
map.put("a21026",doubles.get(1));
map.put("a21004",doubles.get(2));
map.put("a34002",doubles.get(3));
map.put("a34004",doubles.get(4));
map.put("a05024",doubles.get(5));
- AQI aqi = AQIUtils.dailyAQI(map);
- Integer aqiValue = aqi.getAQIValue();
- map.put("AQI",aqiValue);
- List<String> primaryPollutantNames = aqi.getPrimaryPollutantNames();
- String primaryPollutant = "__";
- if (!ObjectUtils.isEmpty(primaryPollutantNames)) {
- primaryPollutant = primaryPollutantNames.stream().map(String::valueOf).collect(Collectors.joining(","));
- }
- map.put("SU", primaryPollutant);
+ map.put("AQI",aqi);
+ map.put("SU", getSU(aqi,list));
resultMap.put(s,map);
}
return resultMap;
}
+
+
/**
* ���������������
@@ -947,4 +963,149 @@
}
return round;
}
+ /**
+ * ���������������������
+ * @param aqi
+ * @param list
+ * @return
+ */
+ private String getSU(Double aqi,ArrayList list){
+ String SU=null;
+ if (aqi<=50){
+ SU="-";
+ } else if (aqi==list.get(1)){
+ SU="SO2";
+ }else if (aqi==list.get(0)){
+ SU="CO";
+ }else if (aqi==list.get(2)){
+ SU="NO2";
+ }else if (aqi==list.get(3)){
+ SU="PM10";
+ }else if (aqi==list.get(4)){
+ SU="PM2.5";
+ }else if (aqi==list.get(5)){
+ SU="O3";
+ }
+ return SU;
+ }
+
+ private static double getSo2(double so2){
+ double v = 0.0;
+ if (so2<50){
+ v = 50 * so2 / 50;
+ }else if (so2<150 && so2 >= 50){
+ v = 50 * (so2 - 50) / 100 + 50;
+ }else if (so2<475 && so2 >= 150){
+ v = 50 * (so2 - 150) / 325 + 100;
+ }else if (so2<800 && so2 >= 475){
+ v = 50 * (so2 - 475) / 325 + 150;
+ }else {
+ v = 100 * (so2 - 800) / 800 + 200;
+ }
+ return Math.round(v);
+ }
+
+ private static double getNo2(double no2){
+ double v = 0.0;
+ if (no2<40){
+ v = 50 * no2 / 40;
+ }else if (no2<80 && no2 >= 40){
+ v = 50 * (no2 - 40) / 40 + 50;
+ }else if (no2<180 && no2 >= 80){
+ v = 50 * (no2 - 80) / 100 + 100;
+ }else if (no2<280 && no2 >= 180){
+ v = 50 * (no2 - 180) / 100 + 150;
+ }else if (no2<565 && no2 >= 280){
+ v = 100 * (no2 - 280) / 285 + 200;
+ }else if (no2<750 && no2 >= 565){
+ v = 100 * (no2 - 565) / 185 + 300;
+ }
+ else {
+ v = 100 * (no2 - 750) / 190 + 400;
+ }
+ return Math.round(v);
+ }
+
+
+ private static double getCo(double co){
+ double v = 0.0;
+ if (co<2){
+ v = 50 * co / 2;
+ }else if (co<4 && co >= 2){
+ v = 50 * (co - 2) / 2 + 50;
+ }else if (co<14 && co >= 4){
+ v = 50 * (co - 4) / 10 + 100;
+ }else if (co<24 && co >= 14){
+ v = 50 * (co - 14) / 10 + 150;
+ }else if (co<36 && co >= 24){
+ v = 100 * (co - 24) / 12 + 200;
+ }else if (co<48 && co >= 36){
+ v = 100 * (co - 36) / 12 + 300;
+ }
+ else {
+ v = 100 * (co - 48) / 12 + 400;
+ }
+ return Math.round(v);
+ }
+
+ private static double getPm10(double pm10){
+ double v = 0.0;
+ if (pm10<50){
+ v = 50 * pm10 / 50;
+ }else if (pm10<150 && pm10 >= 50){
+ v = 50 * (pm10 - 50) / 100 + 50;
+ }else if (pm10<250 && pm10 >= 150){
+ v = 50 * (pm10 - 150) / 100 + 100;
+ }else if (pm10<350 && pm10 >= 250){
+ v = 50 * (pm10 - 250) / 100 + 150;
+ }else if (pm10<420 && pm10 >= 350){
+ v = 100 * (pm10 - 350) / 70 + 200;
+ }else if (pm10<500 && pm10 >= 420){
+ v = 100 * (pm10 - 420) / 80 + 300;
+ }
+ else {
+ v = 100 * (pm10 - 500) / 100 + 400;
+ }
+ return Math.round(v);
+ }
+
+ private static double getPm2_5(double pm2_5){
+ double v = 0.0;
+ if (pm2_5<35){
+ v = 50 * pm2_5 / 35;
+ }else if (pm2_5<75 && pm2_5 >= 35){
+ v = 50 * (pm2_5 - 35) / 40 + 50;
+ }else if (pm2_5<115 && pm2_5 >= 75){
+ v = 50 * (pm2_5 - 75) / 40 + 100;
+ }else if (pm2_5<150 && pm2_5 >= 115){
+ v = 50 * (pm2_5 - 115) / 35 + 150;
+ }else if (pm2_5<250 && pm2_5 >= 150){
+ v = 100 * (pm2_5 - 150) / 100 + 200;
+ }else if (pm2_5<350 && pm2_5 >= 250){
+ v = 100 * (pm2_5 - 250) / 100 + 300;
+ }
+ else {
+ v = 100 * (pm2_5 - 350) / 150 + 400;
+ }
+ return Math.round(v);
+ }
+
+
+ private static double getO3(double o3){
+ double v = 0.0;
+ if (o3<100){
+ v = 50 * o3 / 100;
+ }else if (o3<160 && o3 >= 100){
+ v = 50 * (o3 - 100) / 60 + 50;
+ }else if (o3<215 && o3 >= 160){
+ v = 50 * (o3 - 160) / 55 + 100;
+ }else if (o3<265 && o3 >= 215){
+ v = 50 * (o3 - 215) / 50 + 150;
+ }else if (o3<800 && o3 >= 265){
+ v = 100 * (o3 - 265) / 535 + 200;
+ }else if (o3<1000 && o3 >= 800){
+ v = 100 * (o3 - 800) / 200 + 300;
+ }
+ return Math.round(v);
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0