From 1f93887d0e1e327cf7a1dc644cb59b5f8cca1e88 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Mon, 10 Oct 2022 13:57:42 +0800
Subject: [PATCH] 上传浑南区图表功能
---
screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java | 1049 ++++++++++++++++++++++++++++++++++++++++++++++++++++
screen-api/src/main/java/com/moral/api/service/ExcelService.java | 21
screen-api/src/main/java/com/moral/api/controller/ExcelController.java | 47 ++
screen-api/src/main/java/com/moral/api/service/HnExcelService.java | 33 +
screen-api/src/main/java/com/moral/api/pojo/vo/excel/SyExcelVo.java | 20 +
screen-api/src/main/java/com/moral/api/service/impl/ExcelServiceImpl.java | 9
6 files changed, 1,168 insertions(+), 11 deletions(-)
diff --git a/screen-api/src/main/java/com/moral/api/controller/ExcelController.java b/screen-api/src/main/java/com/moral/api/controller/ExcelController.java
index 1425868..3aa71db 100644
--- a/screen-api/src/main/java/com/moral/api/controller/ExcelController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/ExcelController.java
@@ -11,6 +11,7 @@
import org.springframework.web.multipart.MultipartHttpServletRequest;
import java.io.IOException;
+import java.text.ParseException;
import java.util.List;
import java.util.Map;
@@ -18,7 +19,9 @@
import com.moral.api.pojo.bo.ExcelBO;
import com.moral.api.pojo.vo.excel.ExcelVo;
+import com.moral.api.pojo.vo.excel.SyExcelVo;
import com.moral.api.service.ExcelService;
+import com.moral.api.service.HnExcelService;
import com.moral.constant.ResponseCodeEnum;
import com.moral.constant.ResultMessage;
import com.moral.util.WebUtils;
@@ -31,8 +34,12 @@
@Autowired
private ExcelService excelService;
+
+ @Autowired
+ private HnExcelService hnExcelService;
+
/**
- * ������
+ * ���������������
* @param request
* @return
* @throws IOException
@@ -50,7 +57,7 @@
/**
- * ������
+ * ���������������
* @param id
* @return
*/
@@ -86,4 +93,40 @@
return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),excelBOS);
}
+
+ /**
+ * ���������������������
+ * @param request
+ * @return
+ * @throws IOException
+ */
+ @PostMapping("syExcelImport")
+ public ResultMessage syExcelImport(HttpServletRequest request) throws IOException, ParseException {
+ Map<String, Object> params = WebUtils.getParametersStartingWith(request, null);
+ if (!params.containsKey("time") || !params.containsKey("code") || params.containsKey("data")){
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
+ List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("files");
+ ExcelBO excelImport = hnExcelService.getExcelImport(files, params);
+ return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),excelImport);
+ }
+
+ /**
+ * ���������������
+ * @param id
+ * @return
+ */
+ @GetMapping("/syExcelExport")
+ public ResultMessage syExcelExport(Integer id){
+ if (id==null){
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
+
+ SyExcelVo syExcelVo = hnExcelService.SyExport(id);
+ if (syExcelVo==null){
+ return ResultMessage.fail(ResponseCodeEnum.TARGET_IS_NULL.getCode(), ResponseCodeEnum.TARGET_IS_NULL.getMsg());
+ }
+ return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),syExcelVo);
+ }
+
}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/excel/SyExcelVo.java b/screen-api/src/main/java/com/moral/api/pojo/vo/excel/SyExcelVo.java
new file mode 100644
index 0000000..219c9d1
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/excel/SyExcelVo.java
@@ -0,0 +1,20 @@
+package com.moral.api.pojo.vo.excel;
+
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.Map;
+
+@Data
+public class SyExcelVo {
+
+ private String code1;
+ private String code2;
+ private String code3;
+ private String code4;
+ private String code5;
+ private String code6;
+
+ private Map<String, ArrayList<String>> list;
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/ExcelService.java b/screen-api/src/main/java/com/moral/api/service/ExcelService.java
index 0b1e330..5cbdc40 100644
--- a/screen-api/src/main/java/com/moral/api/service/ExcelService.java
+++ b/screen-api/src/main/java/com/moral/api/service/ExcelService.java
@@ -4,6 +4,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
+import java.text.ParseException;
import java.util.List;
import java.util.Map;
@@ -12,14 +13,28 @@
import com.moral.api.pojo.vo.excel.ExcelVo;
-public interface ExcelService {
+public interface ExcelService {
+ /**
+ * ���������������
+ * @param files
+ * @param params
+ * @return
+ * @throws IOException
+ */
public ExcelBO importTemplate(List<MultipartFile> files, Map<String, Object> params) throws IOException;
-
+ /**
+ * ���������������
+ * @param id
+ * @return
+ */
public ExcelVo export(Integer id);
-
+ //������
public List<ExcelBO> excelSelect(String startTime,String code,String endTime);
+
+
+
}
diff --git a/screen-api/src/main/java/com/moral/api/service/HnExcelService.java b/screen-api/src/main/java/com/moral/api/service/HnExcelService.java
new file mode 100644
index 0000000..31b8088
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/HnExcelService.java
@@ -0,0 +1,33 @@
+package com.moral.api.service;
+
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.text.ParseException;
+import java.util.List;
+import java.util.Map;
+
+import com.moral.api.pojo.bo.ExcelBO;
+import com.moral.api.pojo.vo.excel.SyExcelVo;
+
+public interface HnExcelService {
+
+
+ /**
+ * ���������������
+ * @param files
+ * @param params
+ * @return
+ * @throws IOException
+ * @throws ParseException
+ */
+ ExcelBO getExcelImport(List<MultipartFile> files, Map<String, Object> params) throws IOException, ParseException;
+
+
+ /**
+ * ���������������
+ * @param id
+ * @return
+ */
+ SyExcelVo SyExport(Integer id);
+}
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 a551074..79b6f06 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
@@ -36,8 +36,7 @@
import com.moral.api.pojo.vo.excel.ExcelVo;
import com.moral.api.service.ExcelService;
import com.moral.api.utils.ExcelUtils;
-import com.moral.pojo.AQI;
-import com.moral.util.AQIUtils;
+
import com.moral.util.DateUtils;
@@ -48,7 +47,7 @@
private ExcelMapper excelMapper;
/**
- * ������
+ * ���������������
* @param files
* @param params
* @return
@@ -131,14 +130,12 @@
}
/**
- * ������
+ * ���������������
* @param id
* @return
*/
@Override
public ExcelVo export(Integer id) {
-
-
HashMap<String, Object> map1 = new HashMap<>();
ArrayList<Map<String,Object>> list1 = new ArrayList<>();
ArrayList<Map<String,Object>> list2 = new ArrayList<>();
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java
new file mode 100644
index 0000000..b7490fe
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java
@@ -0,0 +1,1049 @@
+package com.moral.api.service.impl;
+
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.moral.api.entity.TbExcel;
+import com.moral.api.mapper.ExcelMapper;
+import com.moral.api.pojo.bo.ExcelBO;
+import com.moral.api.pojo.vo.excel.SyExcelVo;
+import com.moral.api.service.HnExcelService;
+import com.moral.api.utils.ExcelUtils;
+import com.moral.pojo.AQI;
+import com.moral.util.AQIUtils;
+import com.moral.util.AmendUtils;
+import com.moral.util.DateUtils;
+
+
+@Service
+public class HnExcelServiceImpl implements HnExcelService {
+
+ @Autowired
+ private ExcelMapper excelMapper;
+
+ /**
+ * ���������������
+ * @param files
+ * @param params
+ * @return
+ * @throws IOException
+ * @throws ParseException
+ */
+ @Override
+ public ExcelBO getExcelImport(List<MultipartFile> files, Map<String, Object> params) throws IOException, ParseException {
+ String time = (String) params.get("time");
+ String code = (String) params.get("code");
+ String time1 = (String) params.get("date");
+ Date date = DateUtils.getDate(time, "yyyy-MM-dd");
+ Date date1 = DateUtils.getDate(time1, "yyyy-MM-dd");
+ ExcelBO excelBO = new ExcelBO();
+ QueryWrapper<TbExcel> wrapper = new QueryWrapper<>();
+ wrapper.eq("time",date).eq("code",code);
+ TbExcel excel = excelMapper.selectOne(wrapper);
+ if (excel==null){
+ TbExcel excel1 = new TbExcel();
+ HashMap<String, Map<String, List<Integer>>> map = new HashMap<>();
+ MultipartFile file1 = files.get(0);
+ Map<String, List<Integer>> map1 = getMap1(file1, 0,time);
+ map.put("������������",map1);
+ Map<String, List<Integer>> map2 = getMap1(file1, 1,time);
+ map.put("���������",map2);
+ Map<String, List<Integer>> map3 = getTo(file1,time);
+ map.put("���������",map3);
+ String s = JSON.toJSONString(map);
+ excel1.setValue(s);
+ excel1.setTime(date);
+ excel1.setCode(code);
+ excel1.setDate(date1);
+ excelMapper.insert(excel1);
+ excelBO.setId(excel1.getId());
+ excelBO.setTime(excel1.getTime());
+ excelBO.setDate(excel1.getDate());
+ }else {
+ HashMap<String, Map<String, List<Integer>>> map = new HashMap<>();
+ MultipartFile file1 = files.get(0);
+ Map<String, List<Integer>> map1 = getMap1(file1, 0,time);
+ map.put("������������",map1);
+ Map<String, List<Integer>> map2 = getMap1(file1, 1,time);
+ map.put("���������",map2);
+ Map<String, List<Integer>> map3 = getTo(file1,time);
+ map.put("���������",map3);
+ String s = JSON.toJSONString(map);
+ excel.setValue(s);
+ excelMapper.updateById(excel);
+ excelBO.setId(excel.getId());
+ excelBO.setTime(excel.getTime());
+ excelBO.setDate(excel.getDate());
+
+ }
+ return excelBO;
+
+ }
+
+ /**
+ * ���������������
+ * @param id
+ * @return
+ */
+ @Override
+ public SyExcelVo SyExport(Integer id) {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ HashMap<String, ArrayList<String>> rsMap = new HashMap<>();
+ SyExcelVo syExcelVo = new SyExcelVo();
+ TbExcel excel = excelMapper.selectById(id);
+ String value = excel.getValue();
+ Date time = excel.getTime();
+ String format = sdf.format(time);
+ String substring = format.substring(5, 7);
+ int data= Integer.parseInt(substring);
+
+ Map<String, Map<String, List<Integer>>> map = JSON.parseObject(value, Map.class);
+ Set<String> strings = map.keySet();
+ for (String string : strings) {
+ if (string.equals("������������")){
+ Map<String, List<Integer>> stringListMap = map.get(string);
+ Set<String> strings1 = stringListMap.keySet();
+ for (String s : strings1) {
+ if (s.equals("count")){
+ ArrayList<String> list1 = getList(stringListMap, s);
+ rsMap.put("hnd1",list1);
+ }
+ if (s.equals("PM2_5")){
+ ArrayList<String> list1 = getArrayList(stringListMap, s);
+ rsMap.put("hnd2",list1);
+
+ }
+ }
+ }
+ if (string.equals("���������")){
+ Map<String, List<Integer>> stringListMap = map.get(string);
+ Set<String> strings1 = stringListMap.keySet();
+ for (String s : strings1) {
+ if (s.equals("count")){
+ ArrayList<String> list1 = getList(stringListMap, s);
+ rsMap.put("xxj1",list1);
+ }
+ if (s.equals("PM2_5")){
+ ArrayList<String> list1 = getArrayList(stringListMap, s);
+ rsMap.put("xxj2",list1);
+ }
+ }
+ }
+ if (string.equals("���������")){
+ Map<String, List<Integer>> stringListMap = map.get(string);
+ Set<String> strings1 = stringListMap.keySet();
+ for (String s : strings1) {
+ if (s.equals("count")){
+ ArrayList<String> list1 = new ArrayList<>();
+ List<Integer> list = stringListMap.get(s);
+ Integer sum =0;
+ if (data>=1 && data<=3){
+ sum = list.get(0) + list.get(1) + list.get(2);
+ }else if (data>=4 &&data<=6){
+ sum = list.get(3) + list.get(4) + list.get(5);
+ }else if (data>=7 &&data<=9){
+ sum = list.get(6) + list.get(7) + list.get(8);
+ }else {
+ sum = list.get(9) + list.get(10) + list.get(11);
+ }
+ syExcelVo.setCode5(sum.toString());
+ for (int i = 0; i < list.size()-1; i++) {
+ if (list.get(i)==0){
+ list1.add("");
+ continue;
+ }
+ list1.add(list.get(i).toString());
+ }
+ Integer integer = list.get(12);
+ syExcelVo.setCode1(integer.toString());
+ Integer integer1 = list.get(13);
+ int i = integer - integer1;
+ String code ="";
+ if (i<=0){
+ code = "������"+i+"���";
+ }else {
+ code = "������"+i+"���";
+ }
+ list1.add(code);
+ syExcelVo.setCode2(code);
+ list1.add(0,"������������");
+ rsMap.put("hnq1",list1);
+ }
+ if (s.equals("PM2_5")){
+ ArrayList<String> list1 = new ArrayList<>();
+ List<Integer> list = stringListMap.get(s);
+ Integer sum =0;
+ if (data>=1 && data<=3){
+ sum = list.get(0) + list.get(1) + list.get(2);
+ }else if (data>=4 &&data<=6){
+ sum = list.get(3) + list.get(4) + list.get(5);
+ }else if (data>=7 &&data<=9){
+ sum = list.get(6) + list.get(7) + list.get(8);
+ }else {
+ sum = list.get(9) + list.get(10) + list.get(11);
+ }
+
+ Integer round = Math.round(sum / 3);
+ syExcelVo.setCode6(round.toString());
+ for (int i = 0; i < list.size()-1; i++) {
+ if (list.get(i)==0){
+ list1.add("");
+ continue;
+ }
+ list1.add(list.get(i).toString());
+ }
+ Integer integer = list.get(12);
+ syExcelVo.setCode3(integer.toString());
+ Integer integer1 = list.get(13);
+ double i = integer - integer1;
+
+ double i1 = AmendUtils.sciCal((i / integer1)*100,1);
+ String code = "";
+ if (i1<=0){
+ code = "������"+i1+"%";
+ }else {
+ code = "������"+i1+"%";
+ }
+
+ list1.add(code);
+ syExcelVo.setCode4(code);
+ list1.add(0,"PM2.5������������/������");
+ rsMap.put("hnq2",list1);
+ }
+ }
+ }
+ }
+
+ ArrayList<String> list1 = new ArrayList<>();
+ ArrayList<String> list2 = new ArrayList<>();
+ for (int i = 0; i < 15; i++) {
+ if (i==0){
+ list1.add("������������");
+ continue;
+ }
+ list1.add("");
+ }
+ list2.addAll(list1);
+ list2.remove(0);
+ list2.add(0,"PM2.5������������/������");
+ rsMap.put("sy1",list1);
+ rsMap.put("sy2",list2);
+ syExcelVo.setList(rsMap);
+ return syExcelVo;
+ }
+
+
+ //������pm2.5������
+ private ArrayList<String> getArrayList(Map<String, List<Integer>> stringListMap, String s) {
+ ArrayList<String> list1 = new ArrayList<>();
+ List<Integer> list = stringListMap.get(s);
+ for (int i = 0; i < list.size()-1; i++) {
+ if (list.get(i)==0){
+ list1.add("");
+ continue;
+ }
+ list1.add(list.get(i).toString());
+ }
+ Integer integer = list.get(12);
+ Integer integer1 = list.get(13);
+ double i1 = 0.0;
+ if (integer1!=0){
+ double i = integer - integer1;
+ i1 = AmendUtils.sciCal((i / integer1)*100,1);
+ }
+ String code = "";
+ if (i1<=0){
+ code = "������"+i1+"%";
+ }else {
+ code = "������"+i1+"%";
+ }
+ list1.add(code);
+ list1.add(0,"PM2.5������������/������");
+ return list1;
+ }
+
+ //������������������
+ private ArrayList<String> getList(Map<String, List<Integer>> stringListMap, String s) {
+ ArrayList<String> list1 = new ArrayList<>();
+ List<Integer> list = stringListMap.get(s);
+ for (int i = 0; i < list.size()-1; i++) {
+ if (list.get(i)==0){
+ list1.add("");
+ continue;
+ }
+ list1.add(list.get(i).toString());
+ }
+ Integer integer = list.get(12);
+ Integer integer1 = list.get(13);
+ int i = integer - integer1;
+ String code = "";
+ if (i<=0){
+ code = "������"+i+"���";
+ }else {
+ code = "������"+i+"���";
+ }
+ list1.add(code);
+ list1.add(0,"������������");
+ return list1;
+ }
+ //������������
+ private Map<String, List<Integer>> getMap1(MultipartFile file, int code,String time) throws IOException, ParseException {
+ XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream());
+ HashMap<String, Object> rsMap1 = new HashMap<>();
+ HashMap<String, Object> rsMap2 = new HashMap<>();
+ HashMap<String, Object> rsMap3 = new HashMap<>();
+ XSSFSheet sheetAt = workbook.getSheetAt(code);
+ //������������������
+ int lastRowNum = sheetAt.getLastRowNum();
+ for (int i = 2; i <= lastRowNum; i++) {
+ XSSFRow row = sheetAt.getRow(i);
+ if (row == null) {
+ continue;
+ }
+ short lastCellNum = row.getLastCellNum();
+ if (lastCellNum < 8) {
+ continue;
+ }
+ Object[] objects = new Object[lastCellNum];
+ for (int j = 0; j < lastCellNum; j++) {
+ Cell cell = row.getCell(j);
+ if (cell != null) {
+ Object value = ExcelUtils.getValue(cell);
+ objects[j] = value;
+ }
+
+ }
+ HashMap<String, Object> map = new HashMap<>();
+ HashMap<String, Object> map1 = new HashMap<>();
+ HashMap<String, Object> map2 = new HashMap<>();
+ if (objects.length == 9) {
+ map.put("time", objects[0]);
+ map.put("PM10", objects[1]);
+ map.put("a34004", objects[2]);
+ map.put("SO2", objects[3]);
+ map.put("NO2", objects[4]);
+ map.put("CO", objects[5]);
+ map.put("O3_8H", objects[6]);
+ map.put("AQI", objects[7]);
+ rsMap1.put(objects[0].toString(), map);
+ }
+ if (objects.length == 18) {
+ map.put("time", objects[0]);
+ map.put("PM10", objects[1]);
+ map.put("a34004", objects[2]);
+ map.put("SO2", objects[3]);
+ map.put("NO2", objects[4]);
+ map.put("CO", objects[5]);
+ map.put("O3_8H", objects[6]);
+ map.put("AQI", objects[7]);
+ rsMap1.put(objects[0].toString(), map);
+
+ if (!objects[11].toString().contains("H")
+ && !objects[12].toString().contains("H")
+ && !objects[13].toString().contains("H")
+ && !objects[14].toString().contains("H")
+ && !objects[15].toString().contains("H")
+ && !objects[16].toString().contains("H"))
+ {
+ map1.put("time", objects[10]);
+ map1.put("PM10", objects[11]);
+ map1.put("a34004", objects[12]);
+ map1.put("SO2", objects[13]);
+ map1.put("NO2", objects[14]);
+ map1.put("CO", objects[15]);
+ map1.put("O3_8H", objects[16]);
+ map1.put("AQI", objects[17]);
+ rsMap2.put(objects[10].toString(), map1);
+ }
+
+ }
+
+ if (objects.length == 27) {
+ map.put("time", objects[0]);
+ map.put("PM10", objects[1]);
+ map.put("a34004", objects[2]);
+ map.put("SO2", objects[3]);
+ map.put("NO2", objects[4]);
+ map.put("CO", objects[5]);
+ map.put("O3_8H", objects[6]);
+ map.put("AQI", objects[7]);
+ rsMap1.put(objects[0].toString(), map);
+ if ( !objects[11].toString().contains("H")
+ && !objects[12].toString().contains("H")
+ && !objects[13].toString().contains("H")
+ && !objects[14].toString().contains("H")
+ && !objects[15].toString().contains("H")
+ && !objects[16].toString().contains("H")
+ ) {
+
+ map1.put("time", objects[10]);
+ map1.put("PM10", objects[11]);
+ map1.put("a34004", objects[12]);
+ map1.put("SO2", objects[13]);
+ map1.put("NO2", objects[14]);
+ map1.put("CO", objects[15]);
+ map1.put("O3_8H", objects[16]);
+ map1.put("AQI", objects[17]);
+ rsMap2.put(objects[10].toString(), map1);
+ }
+ if ( !objects[20].toString().contains("H")
+ && !objects[21].toString().contains("H")
+ && !objects[22].toString().contains("H")
+ && !objects[23].toString().contains("H")
+ && !objects[24].toString().contains("H")
+ && !objects[25].toString().contains("H")
+ ) {
+ map2.put("time", objects[19]);
+ map2.put("PM10", objects[20]);
+ map2.put("a34004", objects[21]);
+ map2.put("SO2", objects[22]);
+ map2.put("NO2", objects[23]);
+ map2.put("CO", objects[24]);
+ map2.put("O3_8H", objects[25]);
+ map2.put("AQI", objects[26]);
+ rsMap3.put(objects[19].toString(), map2);
+ }
+ }
+
+ }
+ //���������������pm2.5���������������
+ Map<String, List<Integer>> map = getMap(rsMap3);
+ //������������PM2.5���������������
+ Map<String, Integer> map2 = getResult(rsMap2, time);
+ List<Integer> list = map.get("count");
+ list.add(map2.get("count"));
+ List<Integer> list1 = map.get("PM2_5");
+ list1.add(map2.get("PM2_5"));
+ return map;
+ }
+
+ /**
+ * ������PM2.5 ���������������
+ *
+ * @param rsMap3
+ */
+ private Map<String, List<Integer>> getMap(HashMap<String, Object> rsMap3) {
+ HashMap<String, List<Integer>> listMap = new HashMap<>();
+ Set<String> strings = rsMap3.keySet();
+ ArrayList<Double> list1 = new ArrayList<>();
+ ArrayList<Double> list2 = new ArrayList<>();
+ ArrayList<Double> list3 = new ArrayList<>();
+ ArrayList<Double> list4 = new ArrayList<>();
+ ArrayList<Double> list5 = new ArrayList<>();
+ ArrayList<Double> list6 = new ArrayList<>();
+ ArrayList<Double> list7 = new ArrayList<>();
+ ArrayList<Double> list8 = new ArrayList<>();
+ ArrayList<Double> list9 = new ArrayList<>();
+ ArrayList<Double> list10 = new ArrayList<>();
+ ArrayList<Double> list11 = new ArrayList<>();
+ ArrayList<Double> list12 = new ArrayList<>();
+ ArrayList<Double> resList = new ArrayList<>();
+ ArrayList<Integer> list = new ArrayList<>();
+ ArrayList<Integer> listPM = new ArrayList<>();
+ int count1 = 0;
+ int count2 = 0;
+ int count3 = 0;
+ int count4 = 0;
+ int count5 = 0;
+ int count6 = 0;
+ int count7 = 0;
+ int count8 = 0;
+ int count9 = 0;
+ int count10 = 0;
+ int count11 = 0;
+ int count12 = 0;
+ for (String string : strings) {
+ String substring = string.substring(5, 7);
+
+ if (substring.equals("01")) {
+ Object o = rsMap3.get(string);
+ String s = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s, Map.class);
+ String aqi = map.get("AQI").toString();
+ String pm2_5 = map.get("a34004").toString();
+ list1.add(Double.parseDouble(pm2_5));
+ resList.add(Double.parseDouble(pm2_5));
+ if (Double.parseDouble(aqi) < 100) {
+ count1++;
+ }
+ }
+ if (substring.equals("02")) {
+ Object o = rsMap3.get(string);
+ String s = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s, Map.class);
+ String aqi = map.get("AQI").toString();
+ String pm2_5 = map.get("a34004").toString();
+ list2.add(Double.parseDouble(pm2_5));
+ resList.add(Double.parseDouble(pm2_5));
+ if (Double.parseDouble(aqi) < 100) {
+ count2++;
+ }
+ }
+ if (substring.equals("03")) {
+ Object o = rsMap3.get(string);
+ String s = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s, Map.class);
+ String aqi = map.get("AQI").toString();
+ String pm2_5 = map.get("a34004").toString();
+ list3.add(Double.parseDouble(pm2_5));
+ resList.add(Double.parseDouble(pm2_5));
+ if (Double.parseDouble(aqi) < 100) {
+ count3++;
+ }
+ }
+ if (substring.equals("04")) {
+ Object o = rsMap3.get(string);
+ String s = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s, Map.class);
+
+ String aqi = map.get("AQI").toString();
+
+ String pm2_5 = map.get("a34004").toString();
+ list4.add(Double.parseDouble(pm2_5));
+ resList.add(Double.parseDouble(pm2_5));
+ if (Double.parseDouble(aqi) < 100) {
+ count4++;
+ }
+ }
+ if (substring.equals("05")) {
+ Object o = rsMap3.get(string);
+ String s = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s, Map.class);
+ String aqi = map.get("AQI").toString();
+ String pm2_5 = map.get("a34004").toString();
+ list5.add(Double.parseDouble(pm2_5));
+ resList.add(Double.parseDouble(pm2_5));
+ if (Double.parseDouble(aqi) < 100) {
+ count5++;
+ }
+ }
+ if (substring.equals("06")) {
+ Object o = rsMap3.get(string);
+ String s = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s, Map.class);
+ String aqi = map.get("AQI").toString();
+ String pm2_5 = map.get("a34004").toString();
+ list6.add(Double.parseDouble(pm2_5));
+ resList.add(Double.parseDouble(pm2_5));
+ if (Double.parseDouble(aqi) < 100) {
+ count6++;
+ }
+ }
+ if (substring.equals("07")) {
+ Object o = rsMap3.get(string);
+ String s = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s, Map.class);
+ String aqi = map.get("AQI").toString();
+ String pm2_5 = map.get("a34004").toString();
+ list7.add(Double.parseDouble(pm2_5));
+ resList.add(Double.parseDouble(pm2_5));
+ if (Double.parseDouble(aqi) < 100) {
+ count7++;
+ }
+ }
+ if (substring.equals("08")) {
+ Object o = rsMap3.get(string);
+ String s = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s, Map.class);
+ String aqi = map.get("AQI").toString();
+ String pm2_5 = map.get("a34004").toString();
+ list8.add(Double.parseDouble(pm2_5));
+ resList.add(Double.parseDouble(pm2_5));
+ if (Double.parseDouble(aqi) < 100) {
+ count8++;
+ }
+ }
+ if (substring.equals("09")) {
+ Object o = rsMap3.get(string);
+ String s = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s, Map.class);
+ String aqi = map.get("AQI").toString();
+ String pm2_5 = map.get("a34004").toString();
+ list9.add(Double.parseDouble(pm2_5));
+ resList.add(Double.parseDouble(pm2_5));
+ if (Double.parseDouble(aqi) < 100) {
+ count9++;
+ }
+ }
+ if (substring.equals("10")) {
+ Object o = rsMap3.get(string);
+ String s = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s, Map.class);
+ String aqi = map.get("AQI").toString();
+ String pm2_5 = map.get("a34004").toString();
+ list10.add(Double.parseDouble(pm2_5));
+ resList.add(Double.parseDouble(pm2_5));
+ if (Double.parseDouble(aqi) < 100) {
+ count10++;
+ }
+ }
+ if (substring.equals("11")) {
+ Object o = rsMap3.get(string);
+ String s = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s, Map.class);
+ String aqi = map.get("AQI").toString();
+ String pm2_5 = map.get("a34004").toString();
+ list11.add(Double.parseDouble(pm2_5));
+ resList.add(Double.parseDouble(pm2_5));
+ if (Double.parseDouble(aqi) < 100) {
+ count11++;
+ }
+ }
+ if (substring.equals("12")) {
+ Object o = rsMap3.get(string);
+ String s = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s, Map.class);
+ String aqi = map.get("AQI").toString();
+ String pm2_5 = map.get("a34004").toString();
+ list12.add(Double.parseDouble(pm2_5));
+ resList.add(Double.parseDouble(pm2_5));
+ if (Double.parseDouble(aqi) < 100) {
+ count12++;
+ }
+ }
+
+ }
+ list.add(count1);
+ list.add(count2);
+ list.add(count3);
+ list.add(count4);
+ list.add(count5);
+ list.add(count6);
+ list.add(count7);
+ list.add(count8);
+ list.add(count9);
+ list.add(count10);
+ list.add(count11);
+ list.add(count12);
+
+ Integer sum = list.stream().reduce(Integer::sum).orElse(0);
+ list.add(sum);
+ listMap.put("count", list);
+
+ Integer collect1 = 0;
+ if (list1.size() > 0) {
+ collect1 = Math.toIntExact(Math.round(list1.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ }
+ Integer collect2 = 0;
+ if (list2.size() > 0) {
+ collect2 = Math.toIntExact(Math.round(list2.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ }
+ Integer collect3 = 0;
+ if (list3.size() > 0) {
+ collect3 = Math.toIntExact(Math.round(list3.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ }
+ Integer collect4 = 0;
+ if (list4.size() > 0) {
+ collect4 = Math.toIntExact(Math.round(list4.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ }
+ Integer collect5 = 0;
+ if (list5.size() > 0) {
+ collect5 = Math.toIntExact(Math.round(list5.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ }
+ Integer collect6 = 0;
+ if (list6.size() > 0) {
+ collect6 = Math.toIntExact(Math.round(list6.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ }
+ Integer collect7 = 0;
+ if (list7.size() > 0) {
+ collect7 = Math.toIntExact(Math.round(list7.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ }
+ Integer collect8 = 0;
+ if (list8.size() > 0) {
+ collect8 = Math.toIntExact(Math.round(list8.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ }
+ Integer collect9 = 0;
+ if (list9.size() > 0) {
+ collect9 = Math.toIntExact(Math.round(list9.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ }
+ Integer collect10 = 0;
+ if (list10.size() > 0) {
+ collect10 = Math.toIntExact(Math.round(list10.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ }
+ Integer collect11 = 0;
+ if (list11.size() > 0) {
+ collect11 = Math.toIntExact(Math.round(list11.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ }
+ Integer collect12 = 0;
+ if (list12.size() > 0) {
+ collect12 = Math.toIntExact(Math.round(list12.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ }
+ //���������pm2.5������
+ int resPM25 = Math.toIntExact(Math.round(resList.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ listPM.add(collect1);
+ listPM.add(collect2);
+ listPM.add(collect3);
+ listPM.add(collect4);
+ listPM.add(collect5);
+ listPM.add(collect6);
+ listPM.add(collect7);
+ listPM.add(collect8);
+ listPM.add(collect9);
+ listPM.add(collect10);
+ listPM.add(collect11);
+ listPM.add(collect12);
+ listPM.add(resPM25);
+ listMap.put("PM2_5", listPM);
+ return listMap;
+ }
+
+ /**
+ * ������������PM2.5���������������
+ *
+ * @param rsMap2
+ */
+ private Map<String, Integer> getResult(HashMap<String, Object> rsMap2, String time) throws ParseException {
+ HashMap<String, Integer> rsMap = new HashMap<>();
+ ArrayList<Double> list = new ArrayList<>();
+ SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
+ Calendar instance = Calendar.getInstance();
+ instance.setTime(sdf1.parse(time));
+ instance.add(Calendar.YEAR, -1);
+ Date date = instance.getTime();
+ //���������
+ long time1 = date.getTime();
+ int count = 0;
+ Set<String> strings = rsMap2.keySet();
+ for (String string : strings) {
+ Date parse = sdf1.parse(string);
+ long time2 = parse.getTime();
+ if (time2 <= time1) {
+ Object o = rsMap2.get(string);
+ String s = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s, Map.class);
+ String aqi = map.get("AQI").toString();
+ String pm2_5 = map.get("a34004").toString();
+ list.add(Double.parseDouble(pm2_5));
+ if (Double.parseDouble(aqi) < 100) {
+ count++;
+ }
+ }
+ }
+ //���������pm2.5������
+ int PM2_5 = Math.toIntExact(Math.round(list.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ rsMap.put("count", count);
+ rsMap.put("PM2_5", PM2_5);
+
+ return rsMap;
+ }
+
+ /**
+ * ������ ������������������
+ * @param file
+ * @throws IOException
+ */
+ private Map<String, List<Integer>> getTo(MultipartFile file,String time) throws IOException, ParseException {
+ XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream());
+ HashMap<String, Object> rsMap1 = new HashMap<>();
+ HashMap<String, Object> rsMap2 = new HashMap<>();
+ HashMap<String, Object> rsMap3 = new HashMap<>();
+ HashMap<String, Object> rsMap4 = new HashMap<>();
+ //������������������
+ HashMap<String, Object> hnMap1 = new HashMap<>();
+ //������������������
+ HashMap<String, Object> hnMap2 = new HashMap<>();
+
+ XSSFSheet sheetAt = workbook.getSheetAt(0);
+
+ //������������������
+ //������������
+ int lastRowNum = sheetAt.getLastRowNum();
+ for (int i = 2; i <= lastRowNum; i++) {
+ XSSFRow row = sheetAt.getRow(i);
+ if (row == null) {
+ continue;
+ }
+ short lastCellNum = row.getLastCellNum();
+ if (lastCellNum < 8) {
+ continue;
+ }
+ Object[] objects = new Object[lastCellNum];
+ for (int j = 0; j < lastCellNum; j++) {
+ Cell cell = row.getCell(j);
+ if (cell != null) {
+ Object value = ExcelUtils.getValue(cell);
+ objects[j] = value;
+ }
+
+ }
+ HashMap<String, Object> map1 = new HashMap<>();
+ HashMap<String, Object> map2 = new HashMap<>();
+ if (objects.length == 18) {
+ if ( !objects[11].toString().contains("H")
+ && !objects[12].toString().contains("H")
+ && !objects[13].toString().contains("H")
+ && !objects[14].toString().contains("H")
+ && !objects[15].toString().contains("H")
+ && !objects[16].toString().contains("H")
+ ) {
+// map1.put("time", objects[10]);
+ //PM10
+ map1.put("a34002", objects[11]);
+ //PM2_5
+ map1.put("a34004", objects[12]);
+ //SO2
+ map1.put("a21026", objects[13]);
+ //NO2
+ map1.put("a21004", objects[14]);
+ //CO
+ map1.put("a21005", objects[15]);
+ //O3_8H
+ map1.put("a05024", objects[16]);
+
+ rsMap1.put(objects[10].toString(), map1);
+ }
+
+ }
+
+ if (objects.length == 27) {
+ if ( !objects[11].toString().contains("H")
+ && !objects[12].toString().contains("H")
+ && !objects[13].toString().contains("H")
+ && !objects[14].toString().contains("H")
+ && !objects[15].toString().contains("H")
+ && !objects[16].toString().contains("H")
+
+ ) {
+ map1.put("a34002", objects[11]);
+ map1.put("a34004", objects[12]);
+ map1.put("a21026", objects[13]);
+ map1.put("a21004", objects[14]);
+ map1.put("a21005", objects[15]);
+ map1.put("a05024", objects[16]);
+
+ rsMap1.put(objects[10].toString(), map1);
+ }
+ if (
+ !objects[20].toString().contains("H")
+ && !objects[21].toString().contains("H")
+ && !objects[22].toString().contains("H")
+ && !objects[23].toString().contains("H")
+ && !objects[24].toString().contains("H")
+ && !objects[25].toString().contains("H"))
+ {
+ map2.put("a34002", objects[20]);
+ map2.put("a34004", objects[21]);
+ map2.put("a21026", objects[22]);
+ map2.put("a21004", objects[23]);
+ map2.put("a21005", objects[24]);
+ map2.put("a05024", objects[25]);
+
+ rsMap2.put(objects[19].toString(), map2);
+ }
+ }
+
+ }
+
+ //���������
+ XSSFSheet sheetAt1 = workbook.getSheetAt(1);
+
+ int lastRowNum1 = sheetAt1.getLastRowNum();
+ for (int i = 2; i < lastRowNum1; i++) {
+ XSSFRow row = sheetAt1.getRow(i);
+ if (row == null) {
+ continue;
+ }
+ short lastCellNum = row.getLastCellNum();
+ if (lastCellNum < 8) {
+ continue;
+ }
+ Object[] objects = new Object[lastCellNum];
+ for (int j = 0; j < lastCellNum; j++) {
+ Cell cell = row.getCell(j);
+ if (cell != null) {
+ Object value = ExcelUtils.getValue(cell);
+ objects[j] = value;
+ }
+
+ }
+ HashMap<String, Object> map1 = new HashMap<>();
+ HashMap<String, Object> map2 = new HashMap<>();
+ if (objects.length == 18) {
+ if ( !objects[11].toString().contains("H")
+ && !objects[12].toString().contains("H")
+ && !objects[13].toString().contains("H")
+ && !objects[14].toString().contains("H")
+ && !objects[15].toString().contains("H")
+ && !objects[16].toString().contains("H")
+ ) {
+// map1.put("time", objects[10]);
+ map1.put("a34002", objects[11]);
+ map1.put("a34004", objects[12]);
+ map1.put("a21026", objects[13]);
+ map1.put("a21004", objects[14]);
+ map1.put("a21005", objects[15]);
+ map1.put("a05024", objects[16]);
+
+ rsMap3.put(objects[10].toString(), map1);
+ }
+
+ }
+
+ if (objects.length == 27) {
+ if ( !objects[11].toString().contains("H")
+ && !objects[12].toString().contains("H")
+ && !objects[13].toString().contains("H")
+ && !objects[14].toString().contains("H")
+ && !objects[15].toString().contains("H")
+ && !objects[16].toString().contains("H"))
+ {
+ map1.put("a34002", objects[11]);
+ map1.put("a34004", objects[12]);
+ map1.put("a21026", objects[13]);
+ map1.put("a21004", objects[14]);
+ map1.put("a21005", objects[15]);
+ map1.put("a05024", objects[16]);
+
+ rsMap3.put(objects[10].toString(), map1);
+ }
+ if ( !objects[20].toString().contains("H")
+ && !objects[21].toString().contains("H")
+ && !objects[22].toString().contains("H")
+ && !objects[23].toString().contains("H")
+ && !objects[24].toString().contains("H")
+ && !objects[25].toString().contains("H")
+ ) {
+// map2.put("time", objects[19]);
+ map2.put("a34002", objects[20]);
+ map2.put("a34004", objects[21]);
+ map2.put("a21026", objects[22]);
+ map2.put("a21004", objects[23]);
+ map2.put("a21005", objects[24]);
+ map2.put("a05024", objects[25]);
+ rsMap4.put(objects[19].toString(), map2);
+ }
+ }
+
+ }
+ Set<String> strings = rsMap1.keySet();
+ for (String string : strings) {
+ Object o = rsMap1.get(string);
+ String s = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s, Map.class);
+ if (!rsMap3.containsKey(string)){
+ hnMap1.put(string,map);
+ continue;
+ }
+ Object o1 = rsMap3.get(string);
+ String s1 = JSON.toJSONString(o1);
+ Map map1 = JSON.parseObject(s1, Map.class);
+ Set sets = map1.keySet();
+ HashMap<Object, Object> hs = new HashMap<>();
+ for (Object set : sets) {
+ if (set.toString().equals("a21005")){
+ String s3 = map1.get(set).toString();
+ String s2 = map.get(set).toString();
+ hs.put(set,new BigDecimal((Double.parseDouble(s3)+Double.parseDouble(s2))/2).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue());
+ continue;
+ }
+ String s3 = map1.get(set).toString();
+ String s2 = map.get(set).toString();
+ hs.put(set,Math.round((Double.parseDouble(s3)+Double.parseDouble(s2))/2));
+ }
+ hnMap1.put(string,hs);
+ }
+
+ Set<String> strings2 = rsMap3.keySet();
+ for (String s : strings2) {
+ Object o = rsMap3.get(s);
+ String s1 = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s1, Map.class);
+ if (!hnMap1.containsKey(s)){
+ hnMap1.put(s,map);
+ }
+ }
+
+ Set<String> strings1 = rsMap2.keySet();
+ for (String s : strings1) {
+ Object o = rsMap2.get(s);
+ String s1 = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s1, Map.class);
+ if (!rsMap4.containsKey(s)){
+ hnMap2.put(s,map);
+ continue;
+ }
+ Object o1 = rsMap4.get(s);
+ String s2 = JSON.toJSONString(o1);
+ Map map1 = JSON.parseObject(s2, Map.class);
+ Set sets = map1.keySet();
+ HashMap<Object, Object> hs = new HashMap<>();
+ for (Object set : sets) {
+ if (set.toString().equals("a21005")){
+ String s3 = map1.get(set).toString();
+ String s4 = map.get(set).toString();
+ hs.put(set,new BigDecimal((Double.parseDouble(s3)+Double.parseDouble(s4))/2).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue());
+ continue;
+ }
+ String s3 = map1.get(set).toString();
+ String s4 = map.get(set).toString();
+ hs.put(set,Math.round((Double.parseDouble(s3)+Double.parseDouble(s4))/2));
+
+ }
+ hnMap2.put(s,hs);
+ }
+
+ Set<String> strings3 = rsMap4.keySet();
+ for (String s : strings3) {
+ Object o = rsMap4.get(s);
+ String s1 = JSON.toJSONString(o);
+ Map map = JSON.parseObject(s1, Map.class);
+ if (!rsMap2.containsKey(s1)){
+ hnMap2.put(s,map);
+ }
+ }
+ //���������������aqi
+ getHnMap(hnMap2);
+ //���������������aqi
+ getHnMap(hnMap1);
+ //
+ Map<String, List<Integer>> map = getMap(hnMap2);
+
+
+ Map<String, Integer> map2 = getResult(hnMap1, time);
+
+ List<Integer> list = map.get("count");
+ list.add(map2.get("count"));
+ List<Integer> list1 = map.get("PM2_5");
+ list1.add(map2.get("PM2_5"));
+
+ return map;
+
+ }
+ //������aqi
+ private void getHnMap(HashMap<String, Object> hnMap2) {
+ Set<String> strings4 = hnMap2.keySet();
+ for (String s : strings4) {
+ Object o = hnMap2.get(s);
+ String s1 = JSON.toJSONString(o);
+ Map rs = JSON.parseObject(s1, Map.class);
+ AQI aqi = AQIUtils.dailyAQI(rs);
+ JSONObject jsonObject = JSON.parseObject(s1);
+ jsonObject.put("AQI",aqi.getAQIValue());
+ String s2 = JSON.toJSONString(jsonObject);
+ Map map = JSON.parseObject(s2, Map.class);
+ hnMap2.put(s,map);
+ }
+ }
+
+}
--
Gitblit v1.8.0