|  |  |  | 
|---|
|  |  |  | package com.moral.api.controller; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import cn.afterturn.easypoi.entity.ImageEntity; | 
|---|
|  |  |  | import cn.afterturn.easypoi.word.WordExportUtil; | 
|---|
|  |  |  | import com.alibaba.excel.EasyExcel; | 
|---|
|  |  |  | import com.alibaba.excel.ExcelWriter; | 
|---|
|  |  |  | import com.alibaba.excel.write.metadata.WriteSheet; | 
|---|
|  |  |  | import com.moral.api.dto.SysTestDTO; | 
|---|
|  |  |  | import com.moral.api.entity.SysTest; | 
|---|
|  |  |  | import com.moral.api.service.SysTestService; | 
|---|
|  |  |  | import com.moral.util.DateUtils; | 
|---|
|  |  |  | 
|---|
|  |  |  | import org.apache.commons.collections4.CollectionUtils; | 
|---|
|  |  |  | import org.apache.commons.lang3.StringUtils; | 
|---|
|  |  |  | import org.apache.poi.xwpf.usermodel.XWPFDocument; | 
|---|
|  |  |  | import org.jfree.chart.ChartFactory; | 
|---|
|  |  |  | import org.jfree.chart.ChartUtils; | 
|---|
|  |  |  | import org.jfree.chart.JFreeChart; | 
|---|
|  |  |  | import org.jfree.chart.StandardChartTheme; | 
|---|
|  |  |  | import org.jfree.chart.labels.StandardPieSectionLabelGenerator; | 
|---|
|  |  |  | import org.jfree.chart.plot.PiePlot; | 
|---|
|  |  |  | import org.jfree.data.general.DefaultPieDataset; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.util.Assert; | 
|---|
|  |  |  | import org.springframework.util.ResourceUtils; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.GetMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RequestMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RestController; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.servlet.http.HttpServletResponse; | 
|---|
|  |  |  | import java.io.File; | 
|---|
|  |  |  | import java.io.OutputStream; | 
|---|
|  |  |  | import java.awt.*; | 
|---|
|  |  |  | import java.io.*; | 
|---|
|  |  |  | import java.lang.reflect.Field; | 
|---|
|  |  |  | import java.math.BigDecimal; | 
|---|
|  |  |  | import java.net.URLEncoder; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.stream.Collectors; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("resultWord") | 
|---|
|  |  |  | public void adresultWordd(HttpServletResponse response,String time) { | 
|---|
|  |  |  | List<SysTest> listAll = sysTestService.listAll(time,"2022-06-22",null); | 
|---|
|  |  |  | public void adresultWordd(HttpServletResponse response,String time,String endTime) { | 
|---|
|  |  |  | // for(int i = 495;i<1095;i++){ | 
|---|
|  |  |  | List<SysTest> listAll = sysTestService.listAll(time,endTime,null); | 
|---|
|  |  |  | if(CollectionUtils.isEmpty(listAll)){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /*  Date endTime =listAll.get(0).getTime(); | 
|---|
|  |  |  | String endTimeStr = DateUtils.dateToDateString(endTime,DateUtils.yyyyMMdd_EN); | 
|---|
|  |  |  | String  fileName = "空气质量日报.docx"; | 
|---|
|  |  |  | Map<String,Object> map = resultMap(listAll); | 
|---|
|  |  |  | downloadWord(fileName, map, response,"空气质量日报"+endTimeStr+".docx");*/ | 
|---|
|  |  |  | //  time = DateUtils.dateToDateString(DateUtils.addDays(endTime,1),DateUtils.yyyy_MM_dd_EN); | 
|---|
|  |  |  | //   } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("excelM") | 
|---|
|  |  |  | public void excelM(HttpServletResponse response,String time,String endTime) { | 
|---|
|  |  |  | // for(int i = 495;i<1095;i++){ | 
|---|
|  |  |  | String ks = "2020-06-01"; | 
|---|
|  |  |  | Date ksDate = DateUtils.convertDate(ks); | 
|---|
|  |  |  | List<SysTest> result = new ArrayList<>(); | 
|---|
|  |  |  | for(int i = 0;i<37;i++){ | 
|---|
|  |  |  | Date jsDate =  DateUtils.getLastDayOfCurrMonth(ksDate); | 
|---|
|  |  |  | List<SysTest> listAll = sysTestService.listAllAvg(DateUtils.dateToDateString(ksDate,DateUtils.yyyy_MM_dd_EN),DateUtils.dateToDateString(jsDate,DateUtils.yyyy_MM_dd_EN),null); | 
|---|
|  |  |  | System.out.println("开始:"+DateUtils.dateToDateString(ksDate,DateUtils.yyyy_MM_dd_EN)); | 
|---|
|  |  |  | System.out.println("结束:"+DateUtils.dateToDateString(jsDate,DateUtils.yyyy_MM_dd_EN)); | 
|---|
|  |  |  | ksDate =  DateUtils.addMonths(ksDate,1); | 
|---|
|  |  |  | result.addAll(listAll); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(CollectionUtils.isEmpty(result)){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String path = "D:\\空气质量月数据.xls"; | 
|---|
|  |  |  | WriteSheet build = EasyExcel.writerSheet("因子信息").head(SysTestDTO.class).build(); | 
|---|
|  |  |  | // 创建 easyexcel 的写出类构造器 参数 告诉构造器,我的excel将来要写到哪里,以及execl中数据是基于哪个java对象模板创建的 | 
|---|
|  |  |  | ExcelWriter excelWriter = EasyExcel.write(path, SysTestDTO.class).build(); | 
|---|
|  |  |  | excelWriter.write(result, build); | 
|---|
|  |  |  | excelWriter.finish(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("excelDay") | 
|---|
|  |  |  | public void excelDay(HttpServletResponse response,String time,String endTime) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<SysTest> listAll = sysTestService.listAll(time,endTime,null); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(CollectionUtils.isEmpty(listAll)){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Date endTime =listAll.get(0).getTime(); | 
|---|
|  |  |  | String endTimeStr = DateUtils.dateToDateString(endTime,DateUtils.yyyyMMdd_EN); | 
|---|
|  |  |  | String  fileName = "空气质量日报.docx"; | 
|---|
|  |  |  | Map<String,Object> map = resultMap(listAll); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //实体转map | 
|---|
|  |  |  | // Map result = JSON.parseObject(JSON.toJSONString(entity), Map.class); | 
|---|
|  |  |  | //        Map<String, Object> result = EasyPoiUtil.entityToMap(entity); | 
|---|
|  |  |  | downloadWord(fileName, map, response,"空气质量日报"+endTimeStr+".docx"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String path = "D:\\空气质量日数据.xls"; | 
|---|
|  |  |  | WriteSheet build = EasyExcel.writerSheet("因子信息").head(SysTestDTO.class).build(); | 
|---|
|  |  |  | // 创建 easyexcel 的写出类构造器 参数 告诉构造器,我的excel将来要写到哪里,以及execl中数据是基于哪个java对象模板创建的 | 
|---|
|  |  |  | ExcelWriter excelWriter = EasyExcel.write(path, SysTestDTO.class).build(); | 
|---|
|  |  |  | excelWriter.write(listAll, build); | 
|---|
|  |  |  | excelWriter.finish(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("resultWordWeek") | 
|---|
|  |  |  | public void resultWordWeek(HttpServletResponse response) { | 
|---|
|  |  |  | String ks = "2020-06-22"; | 
|---|
|  |  |  | Date ksDate = DateUtils.convertDate(ks); | 
|---|
|  |  |  | for(int i = 0;i<157;i++){ | 
|---|
|  |  |  | Date jsDate =  DateUtils.addDays(ksDate,6); | 
|---|
|  |  |  | String time = DateUtils.dateToDateString(ksDate,DateUtils.yyyy_MM_dd_EN); | 
|---|
|  |  |  | String endTime = DateUtils.dateToDateString(jsDate,DateUtils.yyyy_MM_dd_EN); | 
|---|
|  |  |  | List<SysTest> listAll = sysTestService.listAllAvg(time,endTime,null); | 
|---|
|  |  |  | if(CollectionUtils.isEmpty(listAll)){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String  fileName = "空气质量周报.docx"; | 
|---|
|  |  |  | String time1 = DateUtils.dateToDateString(ksDate,"yyyy.MM.dd"); | 
|---|
|  |  |  | String endTime1= DateUtils.dateToDateString(jsDate,"yyyy.MM.dd"); | 
|---|
|  |  |  | Map<String,Object> map = resultWeekMap(listAll,i+1,time1+"-"+endTime1); | 
|---|
|  |  |  | downloadWord(fileName, map, response,"空气质量周报"+time+".docx"); | 
|---|
|  |  |  | ksDate =  DateUtils.addDays(ksDate,7); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("resultWordMonth") | 
|---|
|  |  |  | public void resultWordMonth(HttpServletResponse response) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String ks = "2020-06-01"; | 
|---|
|  |  |  | Date ksDate = DateUtils.convertDate(ks); | 
|---|
|  |  |  | for(int i = 0;i<37;i++){ | 
|---|
|  |  |  | Date jsDate =  DateUtils.getLastDayOfCurrMonth(ksDate);; | 
|---|
|  |  |  | String time = DateUtils.dateToDateString(ksDate,DateUtils.yyyy_MM_dd_EN); | 
|---|
|  |  |  | String endTime = DateUtils.dateToDateString(jsDate,DateUtils.yyyy_MM_dd_EN); | 
|---|
|  |  |  | List<SysTest> listAll = sysTestService.listAllAvg(time,endTime,null); | 
|---|
|  |  |  | if(CollectionUtils.isEmpty(listAll)){ | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<SysTest> listDay = sysTestService.listAll(time,endTime,null); | 
|---|
|  |  |  | String  fileName = "空气质量月报.docx"; | 
|---|
|  |  |  | String time1 = DateUtils.dateToDateString(ksDate,"yyyy年MM月"); | 
|---|
|  |  |  | Long days = DateUtils.getQuotByDays(DateUtils.dateToDateString(listDay.get(0).getTime()),DateUtils.dateToDateString(listDay.get(listDay.size()-1).getTime())); | 
|---|
|  |  |  | Map<String,Object> map = resultWeekMap(listAll,time1,listDay,days.intValue()); | 
|---|
|  |  |  | downloadWord(fileName, map, response,"空气质量月报"+time1+".docx"); | 
|---|
|  |  |  | ksDate =  DateUtils.addMonths(ksDate,1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static void downloadWord(String fileName, Map<String, Object> params, HttpServletResponse response,String newFileName) { | 
|---|
|  |  |  | String path = getPath(fileName);//我这放 resources包下 | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //获取模板文档 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | OutputStream out = new FileOutputStream("E:\\home\\mon\\" + newFileName); | 
|---|
|  |  |  | File rootFile = new File(ResourceUtils.getURL("classpath:").getPath()); | 
|---|
|  |  |  | File file= new File(rootFile, path); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | XWPFDocument word = WordExportUtil.exportWord07(file.getPath(), params); | 
|---|
|  |  |  | response.setCharacterEncoding("utf-8"); | 
|---|
|  |  |  | response.setContentType("multipart/form-data"); | 
|---|
|  |  |  | response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(newFileName, "utf-8")); | 
|---|
|  |  |  | OutputStream out = response.getOutputStream(); | 
|---|
|  |  |  | //OutputStream out = response.getOutputStream(); | 
|---|
|  |  |  | word.write(out); | 
|---|
|  |  |  | out.flush(); | 
|---|
|  |  |  | out.close(); | 
|---|
|  |  |  | 
|---|
|  |  |  | resultMap.put(name+"S", StringUtils.isNotEmpty(s.getSu())?s.getSu():"--"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String bodyName = stringButterStr(listAll); | 
|---|
|  |  |  | //日报 | 
|---|
|  |  |  | String bodyName = stringButterStr(listAll); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | resultMap.put("主要内容",bodyName); | 
|---|
|  |  |  | return resultMap; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | private Map<String,Object> resultWeekMap(List<SysTest> listAll,int week,String weekTime){ | 
|---|
|  |  |  | Map<String,Object> resultMap = new HashMap<>(); | 
|---|
|  |  |  | resultMap.put("周",week); | 
|---|
|  |  |  | resultMap.put("日期",weekTime); | 
|---|
|  |  |  | String name = "沙"; | 
|---|
|  |  |  | for(SysTest s : listAll){ | 
|---|
|  |  |  | if(s.getName().contains("友")){ | 
|---|
|  |  |  | name = "友"; | 
|---|
|  |  |  | }else if(s.getName().contains("中")){ | 
|---|
|  |  |  | name = "中"; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | name = "沙"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | resultMap.put(name+"AQI", StringUtils.isNotEmpty(s.getAqi())?s.getAqi():"--"); | 
|---|
|  |  |  | resultMap.put(name+"PM10", StringUtils.isNotEmpty(s.getPm10())?s.getPm10():"--"); | 
|---|
|  |  |  | resultMap.put(name+"PM2", StringUtils.isNotEmpty(s.getPm25())?s.getPm25():"--"); | 
|---|
|  |  |  | resultMap.put(name+"SO2", StringUtils.isNotEmpty(s.getSo2())?s.getSo2():"--"); | 
|---|
|  |  |  | resultMap.put(name+"NO2", StringUtils.isNotEmpty(s.getNo2())?s.getNo2():"--"); | 
|---|
|  |  |  | resultMap.put(name+"CO", StringUtils.isNotEmpty(s.getCo())?s.getCo():"--"); | 
|---|
|  |  |  | resultMap.put(name+"O3", StringUtils.isNotEmpty(s.getO3())?s.getO3():"--"); | 
|---|
|  |  |  | resultMap.put(name+"TV", StringUtils.isNotEmpty(s.getVoc())?s.getVoc():"--"); | 
|---|
|  |  |  | resultMap.put(name+"S", StringUtils.isNotEmpty(s.getSu())?s.getSu():"--"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // String bodyName = stringButterStrWeek(listAll); | 
|---|
|  |  |  | HashMap<String, Integer> datas = new HashMap<>(3); | 
|---|
|  |  |  | datas.put("一号",10); | 
|---|
|  |  |  | datas.put("二号",20); | 
|---|
|  |  |  | datas.put("三号",40); | 
|---|
|  |  |  | ImageEntity imageEntity = pieChart("测试",datas, 500, 300); | 
|---|
|  |  |  | resultMap.put("主要内容",imageEntity); | 
|---|
|  |  |  | return resultMap; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | private Map<String,Object> resultWeekMap(List<SysTest> listAll,String weekTime,List<SysTest> listDay,int days){ | 
|---|
|  |  |  | Map<String,Object> resultMap = new HashMap<>(); | 
|---|
|  |  |  | resultMap.put("日期",weekTime); | 
|---|
|  |  |  | String name = "沙"; | 
|---|
|  |  |  | for(SysTest s : listAll){ | 
|---|
|  |  |  | if(s.getName().contains("友")){ | 
|---|
|  |  |  | name = "友"; | 
|---|
|  |  |  | }else if(s.getName().contains("中")){ | 
|---|
|  |  |  | name = "中"; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | name = "沙"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | resultMap.put(name+"AQI", StringUtils.isNotEmpty(s.getAqi())?s.getAqi():"--"); | 
|---|
|  |  |  | resultMap.put(name+"PM10", StringUtils.isNotEmpty(s.getPm10())?s.getPm10():"--"); | 
|---|
|  |  |  | resultMap.put(name+"PM2", StringUtils.isNotEmpty(s.getPm25())?s.getPm25():"--"); | 
|---|
|  |  |  | resultMap.put(name+"SO2", StringUtils.isNotEmpty(s.getSo2())?s.getSo2():"--"); | 
|---|
|  |  |  | resultMap.put(name+"NO2", StringUtils.isNotEmpty(s.getNo2())?s.getNo2():"--"); | 
|---|
|  |  |  | resultMap.put(name+"CO", StringUtils.isNotEmpty(s.getCo())?s.getCo():"--"); | 
|---|
|  |  |  | resultMap.put(name+"O3", StringUtils.isNotEmpty(s.getO3())?s.getO3():"--"); | 
|---|
|  |  |  | resultMap.put(name+"TV", StringUtils.isNotEmpty(s.getVoc())?s.getVoc():"--"); | 
|---|
|  |  |  | resultMap.put(name+"S", StringUtils.isNotEmpty(s.getSu())?s.getSu():"--"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // String bodyName = stringButterStrWeek(listAll); | 
|---|
|  |  |  | /*HashMap<String, Integer> datas = new HashMap<>(3); | 
|---|
|  |  |  | datas.put("一号",10); | 
|---|
|  |  |  | datas.put("二号",20); | 
|---|
|  |  |  | datas.put("三号",40); | 
|---|
|  |  |  | ImageEntity imageEntity = pieChart("测试",datas, 500, 300);*/ | 
|---|
|  |  |  | // resultMap.put("主要内容",imageEntity); | 
|---|
|  |  |  | resultMap.putAll(month(listDay,days+1)); | 
|---|
|  |  |  | return resultMap; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Map<String,Object> month(List<SysTest> listDay, int days){ | 
|---|
|  |  |  | Map<String,Object> map = new HashMap<>(); | 
|---|
|  |  |  | map.put("沙优良",0); | 
|---|
|  |  |  | map.put("友优良",0); | 
|---|
|  |  |  | map.put("沙优",0); | 
|---|
|  |  |  | map.put("沙良",0); | 
|---|
|  |  |  | map.put("沙轻",0); | 
|---|
|  |  |  | map.put("沙中",0); | 
|---|
|  |  |  | map.put("沙重",0); | 
|---|
|  |  |  | map.put("沙严",0); | 
|---|
|  |  |  | map.put("友优",0); | 
|---|
|  |  |  | map.put("友良",0); | 
|---|
|  |  |  | map.put("友轻",0); | 
|---|
|  |  |  | map.put("友中",0); | 
|---|
|  |  |  | map.put("友重",0); | 
|---|
|  |  |  | map.put("友严",0); | 
|---|
|  |  |  | map.put("中优",0); | 
|---|
|  |  |  | map.put("中良",0); | 
|---|
|  |  |  | map.put("中轻",0); | 
|---|
|  |  |  | map.put("中中",0); | 
|---|
|  |  |  | map.put("中重",0); | 
|---|
|  |  |  | map.put("中严",0); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Map<String,Integer> map1 = new HashMap<>(); | 
|---|
|  |  |  | Map<String,Integer> map11 = new HashMap<>(); | 
|---|
|  |  |  | Map<String,Integer> map111 = new HashMap<>(); | 
|---|
|  |  |  | Map<String,Integer> map2 = new HashMap<>(); | 
|---|
|  |  |  | Map<String,Integer> map22 = new HashMap<>(); | 
|---|
|  |  |  | Map<String,Integer> map222 = new HashMap<>(); | 
|---|
|  |  |  | List<Integer> list1 = Arrays.asList(0,0); | 
|---|
|  |  |  | List<Integer> list2 = Arrays.asList(0,0); | 
|---|
|  |  |  | List<Integer> list3 = Arrays.asList(0,0); | 
|---|
|  |  |  | String name = "沙"; | 
|---|
|  |  |  | String levelName = "优"; | 
|---|
|  |  |  | for(SysTest s : listDay){ | 
|---|
|  |  |  | if(s.getName().contains("友")){ | 
|---|
|  |  |  | name = "友"; | 
|---|
|  |  |  | }else if(s.getName().contains("中")){ | 
|---|
|  |  |  | name = "中"; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | name = "沙"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Double.parseDouble(s.getAqi()) <= 50){ | 
|---|
|  |  |  | levelName = "优"; | 
|---|
|  |  |  | }else if(Double.parseDouble(s.getAqi()) <= 100){ | 
|---|
|  |  |  | levelName = "良"; | 
|---|
|  |  |  | }else if(Double.parseDouble(s.getAqi()) <= 150){ | 
|---|
|  |  |  | levelName = "轻"; | 
|---|
|  |  |  | }else if(Double.parseDouble(s.getAqi()) <= 200){ | 
|---|
|  |  |  | levelName = "中"; | 
|---|
|  |  |  | }else if(Double.parseDouble(s.getAqi()) <= 300){ | 
|---|
|  |  |  | levelName = "重"; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | levelName = "严"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(StringUtils.isNotEmpty(s.getSu()) && s.getName().contains("沙")){ | 
|---|
|  |  |  | s.setSu(s.getSu().equals("-")?"无":s.getSu()); | 
|---|
|  |  |  | if(map1.containsKey(s.getSu())){ | 
|---|
|  |  |  | map1.put(s.getSu(),map1.get(s.getSu())+1); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | map1.put(s.getSu(),1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StringUtils.isNotEmpty(s.getSu())&& s.getName().contains("友")){ | 
|---|
|  |  |  | s.setSu(s.getSu().equals("-")?"无":s.getSu()); | 
|---|
|  |  |  | if(map11.containsKey(s.getSu())){ | 
|---|
|  |  |  | map11.put(s.getSu(),map11.get(s.getSu())+1); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | map11.put(s.getSu(),1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StringUtils.isNotEmpty(s.getSu())&&s.getName().contains("中")){ | 
|---|
|  |  |  | s.setSu(s.getSu().equals("-")?"无":s.getSu()); | 
|---|
|  |  |  | if(map111.containsKey(s.getSu())){ | 
|---|
|  |  |  | map111.put(s.getSu(),map111.get(s.getSu())+1); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | map111.put(s.getSu(),1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Double.parseDouble(s.getAqi()) <= 100){ | 
|---|
|  |  |  | if(map.containsKey(name+"优良")){ | 
|---|
|  |  |  | map.put(name+"优良",Integer.parseInt(map.get(name+"优良").toString())+1); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | map.put(name+"优良",1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | if(map.containsKey(name+"污染")){ | 
|---|
|  |  |  | map.put(name+"污染",Integer.parseInt(map.get(name+"污染").toString())+1); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | map.put(name+"污染",1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StringUtils.isNotEmpty(s.getSu())&& s.getName().contains("沙") && s.getSu().contains("PM2.5")){ | 
|---|
|  |  |  | list1.set(0,list1.get(0)+1); | 
|---|
|  |  |  | }else if(StringUtils.isNotEmpty(s.getSu())&& s.getName().contains("沙") && s.getSu().contains("O3")){ | 
|---|
|  |  |  | list1.set(1,list1.get(1)+1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StringUtils.isNotEmpty(s.getSu())&& s.getName().contains("友") && s.getSu().contains("PM2.5")){ | 
|---|
|  |  |  | list2.set(0,list2.get(0)+1); | 
|---|
|  |  |  | }else if(StringUtils.isNotEmpty(s.getSu())&& s.getName().contains("友") && s.getSu().contains("O3")){ | 
|---|
|  |  |  | list2.set(1,list2.get(1)+1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StringUtils.isNotEmpty(s.getSu())&& s.getName().contains("中") && s.getSu().contains("PM2.5")){ | 
|---|
|  |  |  | list3.set(0,list3.get(0)+1); | 
|---|
|  |  |  | }else if(StringUtils.isNotEmpty(s.getSu())&& s.getName().contains("中") && s.getSu().contains("O3")){ | 
|---|
|  |  |  | list3.set(1,list3.get(1)+1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(map.containsKey(name+levelName)){ | 
|---|
|  |  |  | map.put(name+levelName,Integer.parseInt(map.get(name+levelName).toString())+1); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | map.put(name+levelName,1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String level = levelName; | 
|---|
|  |  |  | if(level.equals("轻")){ | 
|---|
|  |  |  | level = "轻度污染"; | 
|---|
|  |  |  | }else if(level.equals("中")){ | 
|---|
|  |  |  | level = "中度污染"; | 
|---|
|  |  |  | }else if(level.equals("重")){ | 
|---|
|  |  |  | level = "重度污染"; | 
|---|
|  |  |  | }else if(level.equals("严")){ | 
|---|
|  |  |  | level = "严重污染"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(s.getName().contains("沙")){ | 
|---|
|  |  |  | if(map2.containsKey(levelName)){ | 
|---|
|  |  |  | map2.put(levelName,map2.get(levelName)+1); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | map2.put(levelName,1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else if(s.getName().contains("友")){ | 
|---|
|  |  |  | if(map22.containsKey(levelName)){ | 
|---|
|  |  |  | map22.put(levelName,map22.get(levelName)+1); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | map22.put(levelName,1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else if(s.getName().contains("中")){ | 
|---|
|  |  |  | if(map222.containsKey(levelName)){ | 
|---|
|  |  |  | map222.put(levelName,map222.get(levelName)+1); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | map222.put(levelName,1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BigDecimal zb1 = BigDecimal.valueOf(Integer.parseInt(map.get("沙优良").toString())*100).divide(BigDecimal.valueOf(days),2,BigDecimal.ROUND_HALF_UP); | 
|---|
|  |  |  | map.put("沙优良占比",zb1.toString()+"%"); | 
|---|
|  |  |  | BigDecimal zb2 = BigDecimal.valueOf(Integer.parseInt(map.get("友优良").toString())*100).divide(BigDecimal.valueOf(days),2,BigDecimal.ROUND_HALF_UP); | 
|---|
|  |  |  | map.put("友优良占比",zb2.toString()+"%"); | 
|---|
|  |  |  | BigDecimal zb3 = BigDecimal.valueOf(Integer.parseInt(map.get("中优良").toString())*100).divide(BigDecimal.valueOf(days),2,BigDecimal.ROUND_HALF_UP); | 
|---|
|  |  |  | map.put("中优良占比",zb3.toString()+"%"); | 
|---|
|  |  |  | ImageEntity imageEntity2 = pieChart("空气质量等级占比分布图",map2, 500, 300); | 
|---|
|  |  |  | map.put("沙空气饼图",imageEntity2); | 
|---|
|  |  |  | ImageEntity imageEntity22 = pieChart("空气质量等级占比分布图",map22, 500, 300); | 
|---|
|  |  |  | map.put("友空气饼图",imageEntity22); | 
|---|
|  |  |  | ImageEntity imageEntity222 = pieChart("空气质量等级占比分布图",map222, 500, 300); | 
|---|
|  |  |  | map.put("中空气饼图",imageEntity222); | 
|---|
|  |  |  | ImageEntity imageEntity1 = pieChart("首要污染物占比分布图",map1, 500, 300); | 
|---|
|  |  |  | map.put("沙首污饼图",imageEntity1); | 
|---|
|  |  |  | ImageEntity imageEntity11 = pieChart("首要污染物占比分布图",map11, 500, 300); | 
|---|
|  |  |  | map.put("友首污饼图",imageEntity11); | 
|---|
|  |  |  | ImageEntity imageEntity111 = pieChart("首要污染物占比分布图",map111, 500, 300); | 
|---|
|  |  |  | map.put("中首污饼图",imageEntity111); | 
|---|
|  |  |  | StringBuffer buffer = new StringBuffer(); | 
|---|
|  |  |  | if(!list1.get(0).equals(0)){ | 
|---|
|  |  |  | BigDecimal num = BigDecimal.valueOf(list1.get(0)*100).divide(BigDecimal.valueOf(Integer.parseInt(map.get("沙污染").toString())),2,BigDecimal.ROUND_HALF_UP); | 
|---|
|  |  |  | buffer.append("PM2.5(占比"+num+"%),"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!list1.get(1).equals(0)){ | 
|---|
|  |  |  | BigDecimal num = BigDecimal.valueOf(list1.get(1)*100).divide(BigDecimal.valueOf(Integer.parseInt(map.get("沙污染").toString())),2,BigDecimal.ROUND_HALF_UP); | 
|---|
|  |  |  | buffer.append("O3(占比"+num+"%),"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | map.put("沙污染占比",buffer.toString().length()>0?"首要污染物为"+buffer.toString():new StringBuffer()); | 
|---|
|  |  |  | StringBuffer buffer1 = new StringBuffer(); | 
|---|
|  |  |  | if(!list2.get(0) .equals(0)){ | 
|---|
|  |  |  | BigDecimal num = BigDecimal.valueOf(list2.get(0)*100).divide(BigDecimal.valueOf(Integer.parseInt(map.get("友污染").toString())),2,BigDecimal.ROUND_HALF_UP); | 
|---|
|  |  |  | buffer1.append("PM2.5(占比"+num+"%),"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!list2.get(1) .equals(0)){ | 
|---|
|  |  |  | BigDecimal num = BigDecimal.valueOf(list2.get(1)*100).divide(BigDecimal.valueOf(Integer.parseInt(map.get("友污染").toString())),2,BigDecimal.ROUND_HALF_UP); | 
|---|
|  |  |  | buffer1.append("O3(占比"+num+"%),"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | map.put("友污染占比",buffer1.toString().length()>0?"首要污染物为"+buffer1.toString():new StringBuffer()); | 
|---|
|  |  |  | StringBuffer buffer2 = new StringBuffer(); | 
|---|
|  |  |  | if(!list3.get(0) .equals(0)){ | 
|---|
|  |  |  | BigDecimal num = BigDecimal.valueOf(list3.get(0)*100).divide(BigDecimal.valueOf(Integer.parseInt(map.get("中污染").toString())),2,BigDecimal.ROUND_HALF_UP); | 
|---|
|  |  |  | buffer2.append("PM2.5(占比"+num+"%),"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!list3.get(1).equals(0)){ | 
|---|
|  |  |  | BigDecimal num = BigDecimal.valueOf(list3.get(1)*100).divide(BigDecimal.valueOf(Integer.parseInt(map.get("中污染").toString())),2,BigDecimal.ROUND_HALF_UP); | 
|---|
|  |  |  | buffer2.append("O3(占比"+num+"%),"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | map.put("中污染占比",buffer2.toString().length()>0?"首要污染物为"+buffer2.toString():new StringBuffer()); | 
|---|
|  |  |  | return map; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String stringButterStr(List<SysTest> listAll){ | 
|---|
|  |  |  | 
|---|
|  |  |  | int sizeLowResult = 0; | 
|---|
|  |  |  | String highName = "沙岗村"; | 
|---|
|  |  |  | String lowName = "沙岗村"; | 
|---|
|  |  |  | StringBuffer highCode = new StringBuffer(); | 
|---|
|  |  |  | StringBuffer lowCode = new StringBuffer(); | 
|---|
|  |  |  | //1 两高 2两低 | 
|---|
|  |  |  | if(type == 1){ | 
|---|
|  |  |  | SysTest ResultAqi = listAll.stream().min(Comparator.comparing(SysTest::getAqi)).get(); | 
|---|
|  |  |  | if(ResultAqi.getName().contains("沙岗村")){ | 
|---|
|  |  |  | lowName = "沙岗村"; | 
|---|
|  |  |  | highName = "友爱村、中间村"; | 
|---|
|  |  |  | }else if(ResultAqi.getName().contains("友爱村")){ | 
|---|
|  |  |  | lowName = "友爱村"; | 
|---|
|  |  |  | highName = "沙岗村、中间村"; | 
|---|
|  |  |  | } else if(ResultAqi.getName().contains("中间村")){ | 
|---|
|  |  |  | lowName = "中间村"; | 
|---|
|  |  |  | highName = "沙岗村、友爱村"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //1 两高 2两低 | 
|---|
|  |  |  | if(type == 1){ | 
|---|
|  |  |  | SysTest ResultAqi = listAll.stream().min(Comparator.comparing(SysTest::getAqi)).get(); | 
|---|
|  |  |  | if(ResultAqi.getName().contains("沙岗村")){ | 
|---|
|  |  |  | lowName = "沙岗村"; | 
|---|
|  |  |  | highName = "友爱村、中间村"; | 
|---|
|  |  |  | }else if(ResultAqi.getName().contains("友爱村")){ | 
|---|
|  |  |  | lowName = "友爱村"; | 
|---|
|  |  |  | highName = "沙岗村、中间村"; | 
|---|
|  |  |  | } else if(ResultAqi.getName().contains("中间村")){ | 
|---|
|  |  |  | lowName = "中间村"; | 
|---|
|  |  |  | highName = "沙岗村、友爱村"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else if(type == 2){ | 
|---|
|  |  |  | SysTest ResultAqi = listAll.stream().max(Comparator.comparing(SysTest::getAqi)).get(); | 
|---|
|  |  |  | if(ResultAqi.getName().contains("沙岗村")){ | 
|---|
|  |  |  | highName = "沙岗村"; | 
|---|
|  |  |  | lowName = "友爱村、中间村"; | 
|---|
|  |  |  | }else if(ResultAqi.getName().contains("友爱村")){ | 
|---|
|  |  |  | highName = "沙岗村"; | 
|---|
|  |  |  | lowName = "友爱村、中间村"; | 
|---|
|  |  |  | } else if(ResultAqi.getName().contains("中间村")){ | 
|---|
|  |  |  | highName = "沙岗村"; | 
|---|
|  |  |  | lowName = "友爱村、中间村"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else if(type == 3){ | 
|---|
|  |  |  | if(aqiHigh == aqiHighResult){ | 
|---|
|  |  |  | sizeHighResult = 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(aqiMiddle == aqiHighResult){ | 
|---|
|  |  |  | sizeHighResult = 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(aqiLow == aqiHighResult){ | 
|---|
|  |  |  | sizeHighResult = 2; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(aqiHigh == aqiLowResult){ | 
|---|
|  |  |  | sizeLowResult = 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(aqiMiddle == aqiLowResult){ | 
|---|
|  |  |  | sizeLowResult = 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(aqiLow == aqiLowResult){ | 
|---|
|  |  |  | sizeLowResult = 2; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | SysTest HighResult = listAll.get(sizeHighResult); | 
|---|
|  |  |  | SysTest LowResult = listAll.get(sizeLowResult); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }else if(type == 2){ | 
|---|
|  |  |  | SysTest ResultAqi = listAll.stream().max(Comparator.comparing(SysTest::getAqi)).get(); | 
|---|
|  |  |  | if(ResultAqi.getName().contains("沙岗村")){ | 
|---|
|  |  |  | highName = "沙岗村"; | 
|---|
|  |  |  | lowName = "友爱村、中间村"; | 
|---|
|  |  |  | }else if(ResultAqi.getName().contains("友爱村")){ | 
|---|
|  |  |  | highName = "沙岗村"; | 
|---|
|  |  |  | lowName = "友爱村、中间村"; | 
|---|
|  |  |  | } else if(ResultAqi.getName().contains("中间村")){ | 
|---|
|  |  |  | highName = "沙岗村"; | 
|---|
|  |  |  | lowName = "友爱村、中间村"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else if(type == 3){ | 
|---|
|  |  |  | if(aqiHigh == aqiHighResult){ | 
|---|
|  |  |  | sizeHighResult = 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(aqiMiddle == aqiHighResult){ | 
|---|
|  |  |  | sizeHighResult = 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(aqiLow == aqiHighResult){ | 
|---|
|  |  |  | sizeHighResult = 2; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(aqiHigh == aqiLowResult){ | 
|---|
|  |  |  | sizeLowResult = 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(aqiMiddle == aqiLowResult){ | 
|---|
|  |  |  | sizeLowResult = 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(aqiLow == aqiLowResult){ | 
|---|
|  |  |  | sizeLowResult = 2; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | SysTest HighResult = listAll.get(sizeHighResult); | 
|---|
|  |  |  | SysTest LowResult = listAll.get(sizeLowResult); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(HighResult.getName().contains("友爱村")){ | 
|---|
|  |  |  | highName = "友爱村"; | 
|---|
|  |  |  | }else if(HighResult.getName().contains("中尖村")){ | 
|---|
|  |  |  | highName = "中尖村"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(LowResult.getName().contains("友爱村")){ | 
|---|
|  |  |  | lowName = "友爱村"; | 
|---|
|  |  |  | }else if(LowResult.getName().contains("中尖村")){ | 
|---|
|  |  |  | lowName = "中尖村"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(HighResult.getName().contains("友爱村")){ | 
|---|
|  |  |  | highName = "友爱村"; | 
|---|
|  |  |  | }else if(HighResult.getName().contains("中尖村")){ | 
|---|
|  |  |  | highName = "中尖村"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | SysTest result0 = listAll.get(0); | 
|---|
|  |  |  | SysTest result1 = listAll.get(1); | 
|---|
|  |  |  | SysTest result2 = listAll.get(2); | 
|---|
|  |  |  | Map<String,String> pm10 = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getPm10(),result1.getPm10(),result2.getPm10()); | 
|---|
|  |  |  | Map<String,String> pm25 = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getPm25(),result1.getPm25(),result2.getPm25()); | 
|---|
|  |  |  | Map<String,String> so = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getSo2(),result1.getSo2(),result2.getSo2()); | 
|---|
|  |  |  | Map<String,String> no = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getNo2(),result1.getNo2(),result2.getNo2()); | 
|---|
|  |  |  | Map<String,String> co = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getCo(),result1.getCo(),result2.getCo()); | 
|---|
|  |  |  | Map<String,String> o3 = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getO3(),result1.getO3(),result2.getO3()); | 
|---|
|  |  |  | stringBuffer.append(highName+"整体空气质量(AQI)较高,"+lowName+"整体空气质量(AQI)较低。"); | 
|---|
|  |  |  | if(pm10.isEmpty()&& pm25.isEmpty()&&so.isEmpty()&& no.isEmpty()&& co.isEmpty()&& o3.isEmpty()){ | 
|---|
|  |  |  | return stringBuffer.toString(); | 
|---|
|  |  |  | if(LowResult.getName().contains("友爱村")){ | 
|---|
|  |  |  | lowName = "友爱村"; | 
|---|
|  |  |  | }else if(LowResult.getName().contains("中尖村")){ | 
|---|
|  |  |  | lowName = "中尖村"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | stringBuffer.append("其中:"); | 
|---|
|  |  |  | if(!pm10.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("PM10较高的是:"+pm10.get("high")+";较低的是:"+pm10.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!pm25.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("PM2.5较高的是:"+pm25.get("high")+";较低的是:"+pm25.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!so.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("SO2较高的是:"+so.get("high")+";较低的是:"+so.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!no.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("NO2较高的是:"+no.get("high")+";较低的是:"+no.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!co.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("CO较高的是:"+co.get("high")+";较低的是:"+co.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!o3.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("O3较高的是:"+o3.get("high")+";较低的是:"+o3.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | SysTest result0 = listAll.get(0); | 
|---|
|  |  |  | SysTest result1 = listAll.get(1); | 
|---|
|  |  |  | SysTest result2 = listAll.get(2); | 
|---|
|  |  |  | Map<String,String> pm10 = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getPm10(),result1.getPm10(),result2.getPm10()); | 
|---|
|  |  |  | Map<String,String> pm25 = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getPm25(),result1.getPm25(),result2.getPm25()); | 
|---|
|  |  |  | Map<String,String> so = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getSo2(),result1.getSo2(),result2.getSo2()); | 
|---|
|  |  |  | Map<String,String> no = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getNo2(),result1.getNo2(),result2.getNo2()); | 
|---|
|  |  |  | Map<String,String> co = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getCo(),result1.getCo(),result2.getCo()); | 
|---|
|  |  |  | Map<String,String> o3 = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getO3(),result1.getO3(),result2.getO3()); | 
|---|
|  |  |  | stringBuffer.append(highName+"整体空气质量(AQI)较高,"+lowName+"整体空气质量(AQI)较低。"); | 
|---|
|  |  |  | if(pm10.isEmpty()&& pm25.isEmpty()&&so.isEmpty()&& no.isEmpty()&& co.isEmpty()&& o3.isEmpty()){ | 
|---|
|  |  |  | return stringBuffer.toString(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | stringBuffer.append("其中:"); | 
|---|
|  |  |  | if(!pm10.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("PM10较高的是:"+pm10.get("high")+";较低的是:"+pm10.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!pm25.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("PM2.5较高的是:"+pm25.get("high")+";较低的是:"+pm25.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!so.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("SO2较高的是:"+so.get("high")+";较低的是:"+so.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!no.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("NO2较高的是:"+no.get("high")+";较低的是:"+no.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!co.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("CO较高的是:"+co.get("high")+";较低的是:"+co.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!o3.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("O3较高的是:"+o3.get("high")+";较低的是:"+o3.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return stringBuffer.toString(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String stringButterStrWeek(List<SysTest> listAll){ | 
|---|
|  |  |  | StringBuffer stringBuffer = new StringBuffer(); | 
|---|
|  |  |  | SysTest result0 = listAll.get(0); | 
|---|
|  |  |  | SysTest result1 = listAll.get(1); | 
|---|
|  |  |  | SysTest result2 = listAll.get(2); | 
|---|
|  |  |  | Map<String,String> pm10 = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getPm10(),result1.getPm10(),result2.getPm10()); | 
|---|
|  |  |  | Map<String,String> pm25 = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getPm25(),result1.getPm25(),result2.getPm25()); | 
|---|
|  |  |  | Map<String,String> so = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getSo2(),result1.getSo2(),result2.getSo2()); | 
|---|
|  |  |  | Map<String,String> no = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getNo2(),result1.getNo2(),result2.getNo2()); | 
|---|
|  |  |  | Map<String,String> co = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getCo(),result1.getCo(),result2.getCo()); | 
|---|
|  |  |  | Map<String,String> o3 = nameCode(result0.getName(),result1.getName(),result2.getName(),result0.getO3(),result1.getO3(),result2.getO3()); | 
|---|
|  |  |  | if(pm10.isEmpty()&& pm25.isEmpty()&&so.isEmpty()&& no.isEmpty()&& co.isEmpty()&& o3.isEmpty()){ | 
|---|
|  |  |  | return stringBuffer.toString(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | stringBuffer.append("其中:"); | 
|---|
|  |  |  | if(!pm10.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("PM10较高的是:"+pm10.get("high")+";较低的是:"+pm10.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!pm25.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("PM2.5较高的是:"+pm25.get("high")+";较低的是:"+pm25.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!so.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("SO2较高的是:"+so.get("high")+";较低的是:"+so.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!no.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("NO2较高的是:"+no.get("high")+";较低的是:"+no.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!co.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("CO较高的是:"+co.get("high")+";较低的是:"+co.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(!o3.isEmpty()){ | 
|---|
|  |  |  | stringBuffer.append("O3较高的是:"+o3.get("high")+";较低的是:"+o3.get("low")+"。"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return stringBuffer.toString(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | private Map<String,String> nameCode(String name1,String name2,String name3,String nums1,String nums2,String nums3){ | 
|---|
|  |  |  | double num1 = StringUtils.isNotEmpty(nums1)?Double.parseDouble(nums1):0; | 
|---|
|  |  |  | double num2 = StringUtils.isNotEmpty(nums2)?Double.parseDouble(nums2):0; | 
|---|
|  |  |  | 
|---|
|  |  |  | return map; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | private static String tempImgPath="E:\\home\\image\\tempJfree.jpg"; | 
|---|
|  |  |  | private static byte[] imgToByte(){ | 
|---|
|  |  |  | File file = new File(tempImgPath); | 
|---|
|  |  |  | byte[] buffer = null; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | FileInputStream fis = new FileInputStream(file); | 
|---|
|  |  |  | ByteArrayOutputStream bos = new ByteArrayOutputStream(1000); | 
|---|
|  |  |  | byte[] b = new byte[1000]; | 
|---|
|  |  |  | int n; | 
|---|
|  |  |  | while ((n = fis.read(b)) != -1) { | 
|---|
|  |  |  | bos.write(b, 0, n); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | fis.close(); | 
|---|
|  |  |  | bos.close(); | 
|---|
|  |  |  | buffer = bos.toByteArray(); | 
|---|
|  |  |  | } catch (IOException e) { | 
|---|
|  |  |  | log.error(e.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //删除临时文件 | 
|---|
|  |  |  | //file.delete(); | 
|---|
|  |  |  | return buffer; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public ImageEntity pieChart(String title, Map<String, Integer> datas, int width, int height) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //创建主题样式 | 
|---|
|  |  |  | StandardChartTheme standardChartTheme = new StandardChartTheme("CN"); | 
|---|
|  |  |  | //设置标题字体 | 
|---|
|  |  |  | standardChartTheme.setExtraLargeFont(new Font("宋体", Font.BOLD, 20)); | 
|---|
|  |  |  | //设置图例的字体 | 
|---|
|  |  |  | standardChartTheme.setRegularFont(new Font("宋体", Font.PLAIN, 15)); | 
|---|
|  |  |  | //设置轴向的字体 | 
|---|
|  |  |  | standardChartTheme.setLargeFont(new Font("宋体", Font.PLAIN, 15)); | 
|---|
|  |  |  | //设置主题样式 | 
|---|
|  |  |  | ChartFactory.setChartTheme(standardChartTheme); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //根据jfree生成一个本地饼状图 | 
|---|
|  |  |  | DefaultPieDataset pds = new DefaultPieDataset(); | 
|---|
|  |  |  | datas.forEach(pds::setValue); | 
|---|
|  |  |  | //图标标题、数据集合、是否显示图例标识、是否显示tooltips、是否支持超链接 | 
|---|
|  |  |  | JFreeChart chart = ChartFactory.createPieChart(title, pds, true, false, false); | 
|---|
|  |  |  | //设置抗锯齿 | 
|---|
|  |  |  | chart.setTextAntiAlias(false); | 
|---|
|  |  |  | PiePlot plot = (PiePlot) chart.getPlot(); | 
|---|
|  |  |  | plot.setNoDataMessage("暂无数据"); | 
|---|
|  |  |  | //忽略无值的分类 | 
|---|
|  |  |  | plot.setIgnoreNullValues(true); | 
|---|
|  |  |  | plot.setBackgroundAlpha(0f); | 
|---|
|  |  |  | //设置标签阴影颜色 | 
|---|
|  |  |  | plot.setShadowPaint(new Color(255,255,255)); | 
|---|
|  |  |  | //设置标签生成器(默认{0}) | 
|---|
|  |  |  | plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}({1})/{2}")); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | ChartUtils.saveChartAsJPEG(new File(tempImgPath), chart, width, height); | 
|---|
|  |  |  | } catch (IOException e1) { | 
|---|
|  |  |  | log.error("生成饼状图失败!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ImageEntity imageEntity = new ImageEntity(imgToByte(), width, height); | 
|---|
|  |  |  | Assert.notNull(imageEntity.getData(),"生成饼状图对象失败!"); | 
|---|
|  |  |  | return imageEntity; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static void main(String[] args) { | 
|---|
|  |  |  | String ks = "2020-06-01"; | 
|---|
|  |  |  | Date ksDate = DateUtils.convertDate(ks); | 
|---|
|  |  |  | for(int i = 0;i<37;i++){ | 
|---|
|  |  |  | Date jsDate =  DateUtils.getLastDayOfCurrMonth(ksDate); | 
|---|
|  |  |  | System.out.println("开始:"+DateUtils.dateToDateString(ksDate,DateUtils.yyyy_MM_dd_EN)); | 
|---|
|  |  |  | System.out.println("结束:"+DateUtils.dateToDateString(jsDate,DateUtils.yyyy_MM_dd_EN)); | 
|---|
|  |  |  | ksDate =  DateUtils.addMonths(ksDate,1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /*String ks = "2020-06-22"; | 
|---|
|  |  |  | Date ksDate = DateUtils.convertDate(ks); | 
|---|
|  |  |  | for(int i = 0;i<157;i++){ | 
|---|
|  |  |  | Date jsDate =  DateUtils.addDays(ksDate,6); | 
|---|
|  |  |  | System.out.println("开始:"+DateUtils.dateToDateString(ksDate,DateUtils.yyyy_MM_dd_EN)); | 
|---|
|  |  |  | System.out.println("结束:"+DateUtils.dateToDateString(jsDate,DateUtils.yyyy_MM_dd_EN)); | 
|---|
|  |  |  | ksDate =  DateUtils.addDays(ksDate,7); | 
|---|
|  |  |  | }*/ | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|