| | |
| | | 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; |
| | |
| | | |
| | | @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); |
| | |
| | | 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,1,time1+"-"+endTime1); |
| | | downloadWord(fileName, map, response,"空气质量周报"+time+".docx"); |
| | | //ksDate = DateUtils.addDays(ksDate,7); |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | String path = getPath(fileName);//我这放 resources包下 |
| | | try { |
| | | //获取模板文档 |
| | | OutputStream out = new FileOutputStream("E:\\home\\week\\" + newFileName); |
| | | 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); |
| | |
| | | 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){ |
| | | |
| | | // 0 一样1 两高 2两低,3高,低 |
| | |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | /*String ks = "2020-06-01"; |
| | | 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"; |
| | | /*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); |
| | | } |
| | | }*/ |
| | | |
| | | |
| | | } |