screen-api/pom.xml
@@ -135,6 +135,36 @@ <artifactId>hutool-all</artifactId> <version>5.3.0</version> </dependency> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.15.1</version> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.14.0</version> </dependency> <dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> <version>4.2.1</version> </dependency> <dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> <version>4.5.1</version> </dependency> <dependency> <groupId>org.openpnp</groupId> <artifactId>opencv</artifactId> <version>3.2.0-1</version> </dependency> </dependencies> <build> screen-api/src/main/java/com/moral/api/controller/YcReptilesController.java
New file @@ -0,0 +1,714 @@ package com.moral.api.controller; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.fill.FillConfig; import com.alibaba.excel.write.metadata.fill.FillWrapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.moral.api.config.Interceptor.UserHelper; import com.moral.api.entity.FileTable; import com.moral.api.entity.YcGenerateReport; import com.moral.api.exception.BusinessException; import com.moral.api.pojo.enums.FileTableEnum; import com.moral.api.pojo.enums.FileType; import com.moral.api.pojo.ext.allocation.AllocationPageExt; import com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportPageExt; import com.moral.api.pojo.query.allocation.AllocationPageCond; import com.moral.api.pojo.query.ycgeneratereport.YcGenerateReportPageCond; import com.moral.api.pojo.query.ycgeneratereport.YcGenerateReportUploadCond; import com.moral.api.pojo.vo.allocation.AllocationPageVo; import com.moral.api.pojo.vo.user.QxUser; import com.moral.api.pojo.vo.yc.AqiResultVo; import com.moral.api.pojo.vo.yc.SixConcentrationsVo; import com.moral.api.pojo.vo.ycgeneratereport.YcGenerateReportPageVo; import com.moral.api.service.FileTableService; import com.moral.api.service.ReptileResultService; import com.moral.api.service.YcGenerateReportService; import com.moral.api.service.impl.ReptileResultServiceImpl; import com.moral.constant.PageResult; import com.moral.constant.ResultMessage; import com.moral.util.DateUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.io.File; import java.io.IOException; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.Year; import java.util.*; import java.util.stream.Collectors; /** * @ClassName TestController * @Description TODO * @Author @cjl * @Date 2024-03-04 9:58 * @Version 1.0 */ @Slf4j @Api(tags = {"盐城接口数据"}) @RestController @RequestMapping("/cityReptiles") public class YcReptilesController { @Autowired private ReptileResultService resultService; @Autowired private YcGenerateReportService ycGenerateReportService; @Autowired private FileTableService fileTableService; @Value("${file.path}") private String basePath; @GetMapping("/report") @ApiOperation("生成报告") public ResultMessage report(@RequestParam @ApiParam(value = "字典",name = "code") String code, @RequestParam(required = false) @ApiParam(value = "时间",name = "time") String time){ String filePath = getFilePath(FileTableEnum.YC_GENERATEEXCEL.value.toString()); String targetFolder = basePath.replaceAll(com.moral.api.utils.StringUtils.BACKSLASH.concat(com.moral.api.utils.StringUtils.BACKSLASH), com.moral.api.utils.StringUtils.SLASH).concat(com.moral.api.utils.StringUtils.SLASH).concat(filePath); generateReport(time,code,targetFolder,filePath); return ResultMessage.ok(); } @PostMapping("/page") @ApiOperation("分页") public ResultMessage<PageResult<YcGenerateReportPageVo>> page(@Valid @RequestBody YcGenerateReportPageCond ycGenerateReportPageCond) { Page<YcGenerateReportPageExt> page = ycGenerateReportService.extPage(ycGenerateReportPageCond); PageResult<YcGenerateReportPageVo> result = new PageResult<>(page); result.setList(YcGenerateReportPageVo.convert(page.getRecords())); return ResultMessage.ok(result); } @PostMapping("/fileUpload") @ApiOperation("重新上传") public ResultMessage fileUpload(@Valid @RequestBody YcGenerateReportUploadCond uploadCond) { ycGenerateReportService.fileUpload(uploadCond); return ResultMessage.ok(); } public void generateReport(String time,String code,String filePath,String path) { YcReptilesController testController = new YcReptilesController(); String yc = "大丰区,阜宁县,盐都区,响水县,建湖县,东台市,亭湖区,射阳县,盐城市区,滨海县,盐南高新区,开发区"; String gk = "大丰高级中学,开发区管委会,宝龙广场,盐城电厂,市监测站,月亮广场"; String url = "http://116.147.41.178:8081/DataReport/AQIReport"; String cookie = null; if(StringUtils.isEmpty(code)){ cookie = "ASP.NET_SessionId=xo1nn2mvzmhaeb2csok130fd;CurrentAMenuID=2fa3c748-bf4e-4453-9544-e5fd860d74bf;"; }else { cookie = code+"CurrentAMenuID=2fa3c748-bf4e-4453-9544-e5fd860d74bf;"; } Date resultDate = null; if(StringUtils.isEmpty(time)){ resultDate= new Date(); }else { resultDate = DateUtils.convertDate(time); } ReptileResultService resultService = new ReptileResultServiceImpl(); Date endDate = DateUtils.addDays(resultDate,-1); String endDateTime = DateUtils.dateToDateString(endDate,DateUtils.yyyy_MM_dd_EN); //Map<String,Object> map0 = resultService.getYcDaily(url,cookie,DateUtils.dateToDateString(DateUtils.getFirstDayOfLastYear(endDate),DateUtils.yyyy_MM_dd_EN),2); Map<String,Object> map = resultService.getYcDaily(url,cookie,endDateTime,2); Map<String,Object> map0 = resultService.getYcDaily(url,cookie,DateUtils.dateToDateString(DateUtils.getFirstDayOfLastYear(endDate),DateUtils.yyyy_MM_dd_EN),2); Date dateTime = DateUtils.getFirstDayOfMonth(resultDate); String sTime = DateUtils.dateToDateString(dateTime); String eTime = endDateTime+" 00:00:00"; String url1 = "http://116.147.41.178:8081/AQA/YearCustom/Year_Custom1?sTime="+sTime+"&eTime="+eTime+"&type=1&viewtype=1&isDustDay=true&DecimalPlaces=1"; Map<String,Object> map1 = resultService.getYcDaily(url1,cookie,null,3); String url2 = "http://116.147.41.178:8081/AQI/Statistics/YouLiangRateDataNewNewNew?sTime="+sTime+"&eTime="+eTime+"&DecimalPlaces=1&isDustDay=false&selec=0&selet=0&isDustDayXianShi=false"; Map<String,Object> map3 = resultService.getYcDaily(url2,cookie,null,1); sTime = DateUtils.dateToDateString(DateUtils.getFirstDayOfLastYear(DateUtils.getFirstDayOfMonth(dateTime))); eTime = DateUtils.dateToDateString(DateUtils.getFirstDayOfLastYear(endDate)); url1 = "http://116.147.41.178:8081/AQA/YearCustom/Year_Custom1?sTime="+sTime+"&eTime="+eTime+"&type=1&viewtype=1&isDustDay=true&DecimalPlaces=1"; Map<String,Object> map2 = resultService.getYcDaily(url1,cookie,null,3); url2 = "http://116.147.41.178:8081/AQI/Statistics/YouLiangRateDataNewNewNew?sTime="+sTime+"&eTime="+eTime+"&DecimalPlaces=1&isDustDay=false&selec=0&selet=0&isDustDayXianShi=false"; Map<String,Object> map4 = resultService.getYcDaily(url2,cookie,null,1); Date dateFirstTime = DateUtils.getFirstDayOfCurrYear(); sTime = DateUtils.dateToDateString(dateFirstTime); eTime = endDateTime+" 00:00:00"; url1 = "http://116.147.41.178:8081/AQA/YearCustom/Year_Custom1?sTime="+sTime+"&eTime="+eTime+"&type=1&viewtype=1&isDustDay=true&DecimalPlaces=1"; Map<String,Object> map5 = resultService.getYcDaily(url1,cookie,null,3); url2 = "http://116.147.41.178:8081/AQI/Statistics/YouLiangRateDataNewNewNew?sTime="+sTime+"&eTime="+eTime+"&DecimalPlaces=1&isDustDay=false&selec=0&selet=0&isDustDayXianShi=false"; Map<String,Object> map7 = resultService.getYcDaily(url2,cookie,null,1); // 污染天 String url3 = "http://116.147.41.178:8081/AQI/Statistics/StandardRateData?&sTime="+sTime+"&eTime="+eTime; Map<String,Object> surplusMap = resultService.getYcDaily(url3,cookie,null,4); sTime = DateUtils.dateToDateString(DateUtils.getFirstDayOfLastYear(dateFirstTime)); eTime = DateUtils.dateToDateString(DateUtils.getFirstDayOfLastYear(endDate)); url1 = "http://116.147.41.178:8081/AQA/YearCustom/Year_Custom1?sTime="+sTime+"&eTime="+eTime+"&type=1&viewtype=1&isDustDay=true&DecimalPlaces=1"; Map<String,Object> map6 = resultService.getYcDaily(url1,cookie,null,3); url2 = "http://116.147.41.178:8081/AQI/Statistics/YouLiangRateDataNewNewNew?sTime="+sTime+"&eTime="+eTime+"&DecimalPlaces=1&isDustDay=false&selec=0&selet=0&isDustDayXianShi=false"; Map<String,Object> map8 = resultService.getYcDaily(url2,cookie,null,1); url3 = "http://116.147.41.178:8081/AQI/Statistics/StandardRateData?&sTime="+sTime+"&eTime="+eTime; Map<String,Object> surplusOldMap = resultService.getYcDaily(url3,cookie,null,4); //String templateFile = "E:/java/模板-盐城县市区统计001.xlsx"; // 结果文件,省去了根据模板文件生成的步骤 // String resultFile = "E:/java/模板-盐城县市区统计1.xlsx"; String templateFile = basePath+"/模板-盐城县市区统计001.xlsx"; String resultFileName = endDateTime+"盐城县市区统计.xlsx";; String resultFile =UUID.randomUUID().toString()+".xlsx";; storageFile(filePath.concat(resultFile)); // 根据模板文件生成目标文件 ExcelWriter excelWriter = EasyExcel .write(filePath.concat(resultFile)) .withTemplate(templateFile) // 单独设置单元格格式 // .registerWriteHandler(new CellStyleHandler()) .build(); WriteSheet writeSheet = EasyExcel.writerSheet("日").build(); WriteSheet writeSheet1 = EasyExcel.writerSheet("月").build(); WriteSheet writeSheet2 = EasyExcel.writerSheet("年").build(); // 每次都会重新生成新的一行,而不是使用下面的空行 FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.FALSE).build(); // 第一种占位符替换 /* Map<String, Object> map = new HashMap<>(); List<TestVo> list = new ArrayList<>(); TestVo testVo = TestVo.builder().sj("Sj11").sl("2234").build(); TestVo testVo1 = TestVo.builder().sj("Sj1").sl("2214").build(); list.add(testVo); list.add(testVo1);*/ // map.put("time", "111113"); // map.put("time1", "2222224"); // map.put("dd", list); List<AqiResultVo> list = (List<AqiResultVo>) map.get("table"); List<AqiResultVo> listG = list.stream().filter(it->yc.contains(it.getName())).collect(Collectors.toList()); List<AqiResultVo> listG1 = list.stream().filter(it->!yc.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); excelWriter.fill(map, writeSheet); excelWriter.fill(new FillWrapper("data",listG),fillConfig, writeSheet); map1.put("title1",map2.get("title")); excelWriter.fill(map1, writeSheet1); List<SixConcentrationsVo> list1 = (List<SixConcentrationsVo>) map1.get("table"); testController.listReplaceName(list1); List<SixConcentrationsVo> list1G = list1.stream().filter(it->yc.contains(it.getName())).collect(Collectors.toList()); List<SixConcentrationsVo> list1G1 = list1.stream().filter(it->!yc.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); List<SixConcentrationsVo> list2 = (List<SixConcentrationsVo>) map2.get("table"); testController.listReplaceName(list2); List<SixConcentrationsVo> list2G = list2.stream().filter(it->yc.contains(it.getName())).collect(Collectors.toList()); List<SixConcentrationsVo> list2G1 = list2.stream().filter(it->!yc.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); List<SixConcentrationsVo> list3 = (List<SixConcentrationsVo>) map3.get("table"); testController.listReplaceName(list3); List<SixConcentrationsVo> list3G = list3.stream().filter(it->yc.contains(it.getName())).collect(Collectors.toList()); List<SixConcentrationsVo> list3G1 = list3.stream().filter(it->!yc.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); List<SixConcentrationsVo> list4 = (List<SixConcentrationsVo>) map4.get("table"); testController.listReplaceName(list4); List<SixConcentrationsVo> list4G = list4.stream().filter(it->yc.contains(it.getName())).collect(Collectors.toList()); List<SixConcentrationsVo> list4G1 = list4.stream().filter(it->!yc.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); excelWriter.fill(new FillWrapper("data1",list1G),fillConfig, writeSheet1); excelWriter.fill(new FillWrapper("data2",list2G),fillConfig, writeSheet1); excelWriter.fill(new FillWrapper("data3",list3G),fillConfig, writeSheet1); excelWriter.fill(new FillWrapper("data4",list4G),fillConfig, writeSheet1); map5.put("title3",map5.get("title")); map5.put("title4",map6.get("title")); excelWriter.fill(map5, writeSheet2); List<SixConcentrationsVo> list5 = (List<SixConcentrationsVo>) map5.get("table"); testController.listReplaceName(list5); List<SixConcentrationsVo> list5G = list5.stream().filter(it->yc.contains(it.getName())).collect(Collectors.toList()); List<SixConcentrationsVo> list5G1 = list5.stream().filter(it->!yc.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); List<SixConcentrationsVo> list6 = (List<SixConcentrationsVo>) map6.get("table"); testController.listReplaceName(list6); List<SixConcentrationsVo> list6G = list6.stream().filter(it->yc.contains(it.getName())).collect(Collectors.toList()); List<SixConcentrationsVo> list6G1 = list6.stream().filter(it->!yc.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); List<SixConcentrationsVo> list7 = (List<SixConcentrationsVo>) map7.get("table"); testController.listReplaceName(list7); List<SixConcentrationsVo> list7G = list7.stream().filter(it->yc.contains(it.getName())).collect(Collectors.toList()); List<SixConcentrationsVo> list7G1 = list7.stream().filter(it->!yc.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); List<SixConcentrationsVo> list8 = (List<SixConcentrationsVo>) map8.get("table"); testController.listReplaceName(list8); List<SixConcentrationsVo> list8G = list8.stream().filter(it->yc.contains(it.getName())).collect(Collectors.toList()); List<SixConcentrationsVo> list8G1 = list8.stream().filter(it->!yc.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); excelWriter.fill(new FillWrapper("data5",list5G),fillConfig, writeSheet2); excelWriter.fill(new FillWrapper("data6",list6G),fillConfig, writeSheet2); excelWriter.fill(new FillWrapper("data7",list7G),fillConfig, writeSheet2); excelWriter.fill(new FillWrapper("data8",list8G),fillConfig, writeSheet2); //excelWriter.fill(map, writeSheet1); //excelWriter.fill(new FillWrapper("time2",list),fillConfig, writeSheet1); excelWriter.finish(); //String templateFile1 = "E:/java/模板-日报模板计算00.xlsx"; // 结果文件,省去了根据模板文件生成的步骤 //String resultFile1 = "E:/java/模板-日报模板计算1.xlsx"; String templateFile1 = basePath+"/模板-日报模板计算00.xlsx"; String resultFileName1 = endDateTime+"日报统计.xlsx"; String resultFile1 = UUID.randomUUID().toString()+".xlsx";; storageFile(filePath.concat(resultFile1)); // 根据模板文件生成目标文件 ExcelWriter excelWriter1 = EasyExcel .write(filePath.concat(resultFile1)) .withTemplate(templateFile1) // 单独设置单元格格式 // .registerWriteHandler(new CellStyleHandler()) .build(); WriteSheet writeSheet4 = EasyExcel.writerSheet("日排名").build(); WriteSheet writeSheet5 = EasyExcel.writerSheet("月排名").build(); WriteSheet writeSheet6 = EasyExcel.writerSheet("年排名").build(); map.put("title1",map0.get("title")); excelWriter1.fill(map, writeSheet4); List<AqiResultVo> list0 = (List<AqiResultVo>) map0.get("table"); excelWriter1.fill(new FillWrapper("data",listG1),fillConfig, writeSheet4); excelWriter1.fill(new FillWrapper("data0",list0),fillConfig, writeSheet4); //map1.put("title1",map2.get("title")); excelWriter1.fill(map1, writeSheet5); excelWriter1.fill(new FillWrapper("data1",list1G1),fillConfig, writeSheet5); excelWriter1.fill(new FillWrapper("data2",list2G1),fillConfig, writeSheet5); excelWriter1.fill(new FillWrapper("data3",list3G1),fillConfig, writeSheet5); excelWriter1.fill(new FillWrapper("data4",list4G1),fillConfig, writeSheet5); excelWriter1.fill(map5, writeSheet6); excelWriter1.fill(new FillWrapper("data5",list5G1),fillConfig, writeSheet6); excelWriter1.fill(new FillWrapper("data6",list6G1),fillConfig, writeSheet6); excelWriter1.fill(new FillWrapper("data7",list7G1),fillConfig, writeSheet6); excelWriter1.fill(new FillWrapper("data8",list8G1),fillConfig, writeSheet6); excelWriter1.finish(); log.info("开始生成简报"); List<AqiResultVo> Yc = listG.stream().filter(it->it.getName().equals("盐城市区")).collect(Collectors.toList()); // 月-优良 SixConcentrationsVo ycMon = testController.sixResult(list1G,"盐城市区"); SixConcentrationsVo ycMonOld = testController.sixResult(list2G,"盐城市区"); SixConcentrationsVo ycYMon = testController.sixResult(list3G,"盐城市区"); SixConcentrationsVo ycYMonOld = testController.sixResult(list4G,"盐城市区"); // 年-优良 SixConcentrationsVo ycYear = testController.sixResult(list5G,"盐城市区"); SixConcentrationsVo ycYearOld = testController.sixResult(list6G,"盐城市区"); SixConcentrationsVo ycYYear = testController.sixResult(list7G,"盐城市区"); SixConcentrationsVo ycYYearOld = testController.sixResult(list8G,"盐城市区"); // 超标天 int surplusDay = (int) surplusMap.get("surplusDay"); int surplusOldDay = (int) surplusOldMap.get("surplusDay"); StringBuilder broadcast = new StringBuilder(); String timeDay = map.get("title").toString().substring(3,map.get("title").toString().length()); String timeMon = map1.get("title").toString().substring(3,map1.get("title").toString().length()); String timeYear = map5.get("title").toString().substring(3,map5.get("title").toString().length()); broadcast.append("各位领导、同事,").append(timeDay).append("空气质量分析简报,请查阅。").append("\n"); broadcast.append("【盐城市空气质量情况】").append("\n"); broadcast.append(timeDay+",盐城市环境空气质量为"+Yc.get(0).getCategory()+",其中PM2.5浓度为"+ Yc.get(0).getGranule25()+"微克/立方米、O3浓度为"+Yc.get(0).getOO()+"微克/立方米、优良率为"). append(Yc.get(0).getCategory().equals("良")||Yc.get(0).getCategory().equals("优")?"100%;":"0%;").append("\n"); broadcast.append(timeMon+",盐城市PM2.5浓度均值为"+ycMon.getPM25()+"微克/立方米,同比"+testController.compareYear(ycMon.getPM25(),ycMonOld.getPM25(),2)+";O3浓度均值为"); broadcast.append(ycMon.getOOAvg()+"微克/立方米,同比"+testController.compareYear(ycMon.getOOAvg(),ycMonOld.getOOAvg(),2)+"。优良率为"+ycYMon.getExcellentRateRatio()+"%,同比"+testController.compareYear(ycYMon.getExcellentRateRatio(),ycYMonOld.getExcellentRateRatio(),1)+"。").append("\n"); broadcast.append("截至"+timeDay+",盐城市PM2.5浓度均值为"+ycYear.getPM25()+"微克/立方米,同比"+testController.compareYear(ycYear.getPM25(),ycYearOld.getPM25(),2)+"。O3浓度均值为"); broadcast.append(ycYear.getOOAvg()+"微克/立方米,同比"+testController.compareYear(ycYear.getOOAvg(),ycYearOld.getOOAvg(),2)+"。优良率为"+ycYYear.getExcellentRateRatio()+"%,同比"+testController.compareYear(ycYYear.getExcellentRateRatio(),ycYYearOld.getExcellentRateRatio(),1)+"。").append("\n"); broadcast.append("\n"); broadcast.append("【盐城市空气质量达标情况分析】").append("\n"); broadcast.append("截至"+timeDay+",盐城市 PM2.5累积均值为"+ycYear.getPM25()+"微克/立方米(去年同期"+ycYearOld.getPM25()+"微克/立方米),同比"+testController.compareYear(ycYear.getPM25(),ycYearOld.getPM25(),2)+",若要PM2.5年均浓度达到目标值27.0微克/立方米,剩余"); broadcast.append(testController.annualTarget(ycYear.getPM25(),27.0,resultDate)+"优良天数比率为"+ycYYear.getExcellentRateRatio()+"(去年同期"+ycYYearOld.getExcellentRateRatio()+"),同比"+testController.compareYear(ycYYear.getExcellentRateRatio(),ycYYearOld.getExcellentRateRatio(),1)+";当前已超标"+surplusDay+"天,超标天数已超过同期污染天数"+(surplusDay-surplusOldDay)+"天。").append("\n"); broadcast.append("\n"); broadcast.append("【国控站点空气质量情况】").append("\n"); broadcast.append("截至"+timeDay+",各国控站空气质量排名情况如下:").append("\n");; List<SixConcentrationsVo> list5G2 = list5G1.stream().filter(it->gk.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); List<SixConcentrationsVo> list6G2 = list6G1.stream().filter(it->gk.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); List<SixConcentrationsVo> list5G3 = testController.resultList(list5G2,list6G2,2); broadcast.append("PM2.5排名情况:绝对值排名后三名分别为:"+testController.rankingList(list5G2,1)).append("改善排名后三名分别为:"+testController.rankingList(list5G3,2)).append("\n"); broadcast.append("O3排名情况:绝对值排名后三名分别为:"+testController.rankingList(list5G2,3)).append("改善排名后三名分别为:"+testController.rankingList(list5G3,4)).append("\n"); List<SixConcentrationsVo> list7G2 = list7G1.stream().filter(it->gk.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); List<SixConcentrationsVo> list8G2 = list8G1.stream().filter(it->gk.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); List<SixConcentrationsVo> list7G3 = testController.resultList(list7G2,list8G2,1); broadcast.append("优良率排名情况:绝对值排名后三名分别为:"+testController.rankingList(list7G2,5)).append("改善排名后三名分别为:"+testController.rankingList(list7G3,6)).append("\n");; broadcast.append("\n"); broadcast.append("【省控站点空气质量情况】").append("\n"); broadcast.append("截至"+timeDay+",各省控站空气质量排名情况如下:").append("\n");; List<SixConcentrationsVo> list5G4 = list5G1.stream().filter(it->!gk.contains(it.getName())&&!it.getName().equals("总计")&&!it.getName().equals("亭湖区政府(自建站)")).collect(Collectors.toList()); List<SixConcentrationsVo> list6G4 = list6G1.stream().filter(it->!gk.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); List<SixConcentrationsVo> list5G5 = testController.resultList(list5G4,list6G4,2); broadcast.append("PM2.5排名情况:绝对值排名后三名分别为:"+testController.rankingList(list5G4,1)).append("改善排名后三名分别为:"+testController.rankingList(list5G5,2)).append("\n"); broadcast.append("O3排名情况:绝对值排名后三名分别为:"+testController.rankingList(list5G4,3)).append("改善排名后三名分别为:"+testController.rankingList(list5G5,4)).append("\n"); List<SixConcentrationsVo> list7G4 = list7G1.stream().filter(it->!gk.contains(it.getName())&&!it.getName().equals("总计")&&!it.getName().equals("亭湖区政府(自建站)")).collect(Collectors.toList()); List<SixConcentrationsVo> list8G4= list8G1.stream().filter(it->!gk.contains(it.getName())&&!it.getName().equals("总计")).collect(Collectors.toList()); List<SixConcentrationsVo> list7G5 = testController.resultList(list7G4,list8G4,1); broadcast.append("优良率排名情况:绝对值排名后三名分别为:"+testController.rankingList(list7G4,5)).append("改善排名后三名分别为:"+testController.rankingList(list7G5,6)).append("\n"); broadcast.append("\n"); broadcast.append("【11个县(市、区)空气质量情况】").append("\n"); broadcast.append(timeMon+",各县(市、区)空气质量排名情况如下:").append("\n"); List<SixConcentrationsVo> list1G0 = list1G.stream().filter(it->!it.getName().equals("盐城市区")).collect(Collectors.toList()); List<SixConcentrationsVo> list1G3 = testController.resultList(list1G0,list2G,2); broadcast.append("PM2.5排名情况:绝对值排名后三名分别为:"+testController.rankingList(list1G0,1)).append("改善排名后三名分别为:"+testController.rankingList(list1G3,2)).append("\n"); broadcast.append("O3排名情况:绝对值排名后三名分别为:"+testController.rankingList(list1G0,3)).append("改善排名后三名分别为:"+testController.rankingList(list1G3,4)).append("\n"); List<SixConcentrationsVo> list3G0 = list3G.stream().filter(it->!it.getName().equals("盐城市区")).collect(Collectors.toList()); List<SixConcentrationsVo> list3G3 = testController.resultList(list3G0,list4G,1); broadcast.append("优良率排名情况:绝对值排名后三名分别为:"+testController.rankingList(list3G0,5)).append("改善排名后三名分别为:"+testController.rankingList(list3G3,6)).append("\n"); broadcast.append("截至"+timeDay+",各县(市、区)空气质量排名情况如下:").append("\n"); List<SixConcentrationsVo> list5G00 = list5G.stream().filter(it->!it.getName().equals("盐城市区")).collect(Collectors.toList()); List<SixConcentrationsVo> list5G0 = testController.resultList(list5G00,list6G,2); broadcast.append("PM2.5排名情况:绝对值排名后三名分别为:"+testController.rankingList(list5G00,1)).append("改善排名后三名分别为:"+testController.rankingList(list5G0,2)).append("\n"); broadcast.append("O3排名情况:绝对值排名后三名分别为:"+testController.rankingList(list5G00,3)).append("改善排名后三名分别为:"+testController.rankingList(list5G0,4)).append("\n"); List<SixConcentrationsVo> list7G00 = list7G.stream().filter(it->!it.getName().equals("盐城市区")).collect(Collectors.toList()); List<SixConcentrationsVo> list7G0 = testController.resultList(list7G00,list8G,1); broadcast.append("优良率排名情况:绝对值排名后三名分别为:"+testController.rankingList(list7G00,5)).append("改善排名后三名分别为:"+testController.rankingList(list7G0,6)).append("\n"); broadcast.append("\n"); log.info(broadcast.toString()); log.info("生成结束"); // 插入附件 表格 LambdaQueryChainWrapper<YcGenerateReport> wrapper = ycGenerateReportService.lambdaQuery(); wrapper.eq(YcGenerateReport::getReportTime,DateUtils.convertDate(endDateTime)); YcGenerateReport ycGenerateReport = wrapper.one(); if(ycGenerateReport == null){ ycGenerateReport = new YcGenerateReport(); ycGenerateReport.setReportTime(DateUtils.convertDate(endDateTime)); ycGenerateReport.setReportContent(broadcast.toString()).setOriginalContent(broadcast.toString()); ycGenerateReportService.save(ycGenerateReport); }else { ycGenerateReport.setReportContent(broadcast.toString()).setOriginalContent(broadcast.toString()); ycGenerateReportService.updateById(ycGenerateReport); } Integer id = ycGenerateReport.getId(); LambdaQueryChainWrapper<FileTable> wrapperFile = fileTableService.lambdaQuery(); wrapperFile.eq(FileTable::getFileModule,FileTableEnum.YC_GENERATEEXCEL.getValue()); wrapperFile.eq(FileTable::getRelationId,id); List<FileTable> listFileTable = wrapperFile.list(); if(CollectionUtils.isNotEmpty(listFileTable)){ listFileTable.forEach(it->it.setIsDel(1)); fileTableService.updateBatchById(listFileTable); } // 封装文件信息 QxUser user = UserHelper.getCurrentUser(); FileTable fileTable = new FileTable(); fileTable.setFileModule(FileTableEnum.YC_GENERATEEXCEL.getValue()).setRelationId(id) .setFileName(resultFileName).setFileAddress(path.concat(resultFile)).setFileType(FileType.EXCEL.getValue()); if (Objects.nonNull(user)) { fileTable.setCreateId(user.getUserId()).setCreateName(user.getUserName()).setCreateTime(new Date()); } fileTableService.save(fileTable); fileTable.setFileName(resultFileName1).setFileAddress(path.concat(resultFile)); fileTableService.save(fileTable); } public static void main(String[] args) { Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); // 设置时区为东八区 String dateString = sdf.format(date); System.out.println(dateString); } public String compareYear(Double d1,Double d2,int type){ BigDecimal r = BigDecimal.ZERO; BigDecimal decimal = d2==null?BigDecimal.ZERO:new BigDecimal(d2); if(type == 1){ r = (new BigDecimal(d1).subtract(decimal)).setScale(1, BigDecimal.ROUND_HALF_UP).stripTrailingZeros(); }else { if(d2==null){ r = new BigDecimal(100).setScale(1, BigDecimal.ROUND_HALF_UP).stripTrailingZeros(); }else { r = (new BigDecimal(d1).subtract(decimal)).divide(decimal,3, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100d)).stripTrailingZeros(); } } if(1 == r.compareTo(BigDecimal.ZERO)){ return 1==type?"上升"+r.toPlainString()+"个百分点" :"上升"+r.toPlainString()+"%"; }else if(0 == r.compareTo(BigDecimal.ZERO)){ return "持平"; }else { r = r.abs().setScale(2,BigDecimal.ROUND_HALF_UP).stripTrailingZeros(); return 1==type?"下降"+r.toPlainString()+"个百分点" :"下降"+r.toPlainString()+"%"; } } public List<Object> compareYearList(Double d1,Double d2,int type){ BigDecimal decimal = d2==null?BigDecimal.ZERO:new BigDecimal(d2); List<Object> list = new ArrayList<>(); BigDecimal r = BigDecimal.ZERO; if(type == 1){ r = (new BigDecimal(d1).subtract(decimal)).setScale(1, BigDecimal.ROUND_HALF_UP).stripTrailingZeros(); }else { if(d2 == null){ r = new BigDecimal(100).setScale(1, BigDecimal.ROUND_HALF_UP).stripTrailingZeros(); }else { r = (new BigDecimal(d1).subtract(decimal)).divide(new BigDecimal(d2),3, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100d)).stripTrailingZeros(); } } list.add(r); if(1 == r.compareTo(BigDecimal.ZERO)){ if(1==type){ list.add("上升"+r.toPlainString()+"个百分点"); }else { list.add("上升"+r.toPlainString()+"%"); } }else if(0 == r.compareTo(BigDecimal.ZERO)){ list.add("持平"); }else { r = r.abs().setScale(2,BigDecimal.ROUND_HALF_UP).stripTrailingZeros(); if(1==type){ list.add("下降"+r.toPlainString()+"个百分点"); }else { list.add("下降"+r.toPlainString()+"%"); } } return list; } public SixConcentrationsVo sixResult(List<SixConcentrationsVo> list,String name){ SixConcentrationsVo sixConcentrationsVo = new SixConcentrationsVo(); if(CollectionUtils.isNotEmpty(list)){ sixConcentrationsVo = list.stream().filter(it->it.getName().equals(name)).collect(Collectors.toList()).get(0); } return sixConcentrationsVo; } public String annualTarget(Double d,Double target,Date date){ int year = DateUtils.getYear(date); int totalDays = Year.of(year).length(); LocalDate todayLast = LocalDate.now().minusDays(1); LocalDate yearEnd = LocalDate.of(year, 12, 31); long daysLeft = yearEnd.toEpochDay() - todayLast.toEpochDay(); BigDecimal r = new BigDecimal(target).multiply(new BigDecimal(totalDays)); BigDecimal r1 = new BigDecimal(d).multiply(new BigDecimal(totalDays-daysLeft)); BigDecimal r3 = (r.subtract(r1)).divide(new BigDecimal(daysLeft),1,BigDecimal.ROUND_HALF_UP); return daysLeft+"天PM2.5日均浓度应低于"+r3+"微克/立方米,"; } public String rankingList(List<SixConcentrationsVo> list,int type){ List<SixConcentrationsVo> resultList = new ArrayList<>(); String resultStr = null; if(1 == type){ resultList = list.stream().sorted(Comparator.comparing(SixConcentrationsVo::getPM25,Comparator.reverseOrder())).collect(Collectors.toList()); }else if(2 == type){ resultList = list.stream().sorted(Comparator.comparing(SixConcentrationsVo::getYoYPM25,Comparator.reverseOrder())).collect(Collectors.toList()); }else if(3 == type){ resultList = list.stream().sorted(Comparator.comparing(SixConcentrationsVo::getOOAvg,Comparator.reverseOrder())).collect(Collectors.toList()); }else if(4 == type){ resultList = list.stream().sorted(Comparator.comparing(SixConcentrationsVo::getYoYO3,Comparator.reverseOrder())).collect(Collectors.toList()); }else if(5 == type){ resultList = list.stream().sorted(Comparator.comparing(SixConcentrationsVo::getExcellentRateRatio)).collect(Collectors.toList()); }else if(6 == type){ resultList = list.stream().sorted(Comparator.comparing(SixConcentrationsVo::getExcellentRateRatioYoY)).collect(Collectors.toList()); } resultStr = improveList(resultList,type,1); return resultStr; } public List<SixConcentrationsVo> resultList(List<SixConcentrationsVo> list1,List<SixConcentrationsVo> list2,int type){ for(SixConcentrationsVo x : list1){ for(SixConcentrationsVo x1 : list2){ if(x.getName().equals(x1.getName())){ if(type == 1){ List<Object> rateRatioList = compareYearList(x.getExcellentRateRatio(),x1.getExcellentRateRatio(),1); BigDecimal excellentRateRatioYoY = (BigDecimal) rateRatioList.get(0); x.setExcellentRateRatioYoY(excellentRateRatioYoY.doubleValue()); x.setExcellentRateRatioYoYStr(rateRatioList.get(1).toString()); }else { List<Object> pm25List = compareYearList(x.getPM25(),x1.getPM25(),2); x.setYoYPM25((BigDecimal) pm25List.get(0)); x.setYoYPM25Str(pm25List.get(1).toString()); List<Object> o3List = compareYearList(x.getOOAvg(),x1.getOOAvg(),2); x.setYoYO3((BigDecimal) o3List.get(0)); x.setYoYO3Str(o3List.get(1).toString()); } } } } return list1; } private String improveList(List<SixConcentrationsVo> resultList,int type,int lastType){ //resultList.stream().sorted(Comparator.comparing(SixConcentrationsVo::getPM25,Comparator.reverseOrder())).collect(Collectors.toList()); int num = 1; int numLength = 1; Map<String,List<SixConcentrationsVo>> map = new LinkedHashMap<>(); for(int i = 0;i<resultList.size();i++){ SixConcentrationsVo concentrationsVo = resultList.get(i); if(StringUtils.isEmpty(concentrationsVo.getName())&&!StringUtils.isEmpty(concentrationsVo.getExcellentRateName())){ concentrationsVo.setName(concentrationsVo.getExcellentRateName()); } String result = null; boolean numType =false; if(num>3){ numType =true; } //pm2.5,2.5改善,O3,O3改善 if(1 == type){ result = Double.toString(concentrationsVo.getPM25()); }else if(2 == type){ result = concentrationsVo.getYoYPM25Str(); }else if(3 == type){ result = Double.toString(concentrationsVo.getOOAvg()); }else if(4 == type){ result = concentrationsVo.getYoYO3Str(); }else if(5 == type){ result = Double.toString(concentrationsVo.getExcellentRateRatio()); }else if(6 == type){ result = concentrationsVo.getExcellentRateRatioYoYStr(); } if(map.containsKey(result)){ numType =false; } if(numType){ break; } if(!map.containsKey(result)){ if(numLength >3){ break; } List<SixConcentrationsVo> list = new ArrayList<>(); list.add(concentrationsVo); map.put(result,list); num++; }else { List<SixConcentrationsVo> list = map.get(result); list.add(concentrationsVo); map.put(result ,list); } numLength++; } StringBuilder topThree = new StringBuilder(); StringBuilder topThreeNum = new StringBuilder(); num = 1; int mapNum = map.size(); String unitName = null; if(1 == type||3 == type){ unitName = "微克/立方米"; }else if(5 == type){ unitName = "%"; }else{ unitName = ""; } for(Map.Entry entry : map.entrySet()){ String mapKey = entry.getKey().toString(); List<SixConcentrationsVo> mapValue = (List<SixConcentrationsVo>)entry.getValue(); if(1 == mapValue.size()){ topThree.append(mapValue.get(0).getName()); topThreeNum.append(mapKey).append(unitName); }else{ topThree.append(mapValue.get(0).getName()).append("("); /* if(5 == type){ topThreeNum.append(mapKey+"%").append(unitName).append("("); }else { }*/ topThreeNum.append(mapKey).append(unitName).append("("); for(int i = 1 ;i<mapValue.size();i++){ if(i == mapValue.size()-1){ topThreeNum.append(mapKey).append(unitName).append(")"); topThree.append(mapValue.get(i).getName()).append("并列)"); }else { topThreeNum.append(mapKey).append(unitName).append("、"); topThree.append(mapValue.get(i).getName()).append("、"); } } } if(num<mapNum){ topThree.append("、"); topThreeNum.append("、"); }else { topThree.append(","); if(6 == type){ topThreeNum.append("。"); }else { topThreeNum.append(";"); } } num++; } String resultTopThree = null; if(1 == type || 3 == type){ resultTopThree = topThree.toString()+"浓度分别为"+topThreeNum.toString(); }else if(2 == type || 4 == type || 6 == type){ resultTopThree = topThree.toString()+"同比分别为"+topThreeNum.toString(); }else if(5 == type){ resultTopThree = topThree.toString()+"比例分别为"+topThreeNum.toString(); } return resultTopThree; } public void listReplaceName(List<SixConcentrationsVo> list){ for(SixConcentrationsVo l : list){ if(org.apache.commons.lang3.StringUtils.isNotEmpty(l.getName())&&l.getName().equals("大丰高级中学(国)")){ l.setName("大丰高级中学"); } if(org.apache.commons.lang3.StringUtils.isNotEmpty(l.getName())&&l.getName().equals("盐都区(市)")){ l.setName("盐都区"); } if(org.apache.commons.lang3.StringUtils.isNotEmpty(l.getExcellentRateName())&&l.getExcellentRateName().equals("大丰高级中学(国)")){ l.setExcellentRateName("大丰高级中学"); } if(org.apache.commons.lang3.StringUtils.isNotEmpty(l.getExcellentRateName())&&l.getExcellentRateName().equals("盐都区(市)")){ l.setExcellentRateName("盐都区"); } } } private String getFilePath(String sysCode) { return sysCode.concat(com.moral.api.utils.StringUtils.SLASH).concat(DateUtils.dateToDateString(new Date(),DateUtils.yyyyMMdd_EN)).concat(com.moral.api.utils.StringUtils.SLASH); } private void storageFile(String filePath){ File f = new File(filePath); try { // 保存文件 if (!f.getParentFile().exists()) { boolean success = f.mkdir(); if (!f.getParentFile().mkdirs()) { log.error("error:创建文件失败! dir={}", f.getAbsolutePath()); } } } catch (Exception e) { log.error("error:文件上传失败!!!e={}", e.getMessage()); throw new BusinessException("文件上传失败,请重试!"); } } } screen-api/src/main/java/com/moral/api/entity/YcGenerateReport.java
New file @@ -0,0 +1,56 @@ package com.moral.api.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.moral.api.pojo.bean.BaseInvalidEntity; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.util.Date; /** * <p> * 盐城报告表 * </p> * deyt template generate * * @author JI * @since 2024-03-26 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class YcGenerateReport extends BaseInvalidEntity<YcGenerateReport> { /** * 主键id */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 报告日期 */ private Date reportTime; /** * 报告内容 */ private String reportContent; /** * 原始内容 */ private String originalContent; /** * 作废理由 */ private String invalidReason; } screen-api/src/main/java/com/moral/api/mapper/FileTableMapper.java
@@ -2,6 +2,10 @@ import com.moral.api.entity.FileTable; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.moral.api.pojo.vo.file.FileVo; import java.util.List; import java.util.Map; /** * <p> @@ -13,4 +17,5 @@ */ public interface FileTableMapper extends BaseMapper<FileTable> { List<FileVo> fileList(Map map); } screen-api/src/main/java/com/moral/api/mapper/YcGenerateReportMapper.java
New file @@ -0,0 +1,54 @@ package com.moral.api.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.moral.api.entity.YcGenerateReport; import com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportExt; import com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportListExt; import com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportPageExt; import com.moral.api.pojo.query.ycgeneratereport.YcGenerateReportListCond; import com.moral.api.pojo.query.ycgeneratereport.YcGenerateReportPageCond; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * 盐城报告表 Mapper 接口 * </p> * deyt template generate * @author JI * @since 2024-03-26 */ public interface YcGenerateReportMapper extends BaseMapper<YcGenerateReport> { /** * 逻辑删除 * @param param * @return */ int deleteByIdWithFill(YcGenerateReport param); /** * 查询单个详情 * @param id * @return YcGenerateReportExt */ YcGenerateReportExt extOne(@Param("id") Integer id); /** * 查询列表详情 * @param ycGenerateReportListCond * @return YcGenerateReportListExt */ List<YcGenerateReportListExt> extList(@Param("ycgeneratereport") YcGenerateReportListCond ycGenerateReportListCond); /** * 查询分页详情 * @param page * @param ycGenerateReportPageCond * @return YcGenerateReportPageExt */ Page<YcGenerateReportPageExt> extPage(Page page, @Param("ycgeneratereport") YcGenerateReportPageCond ycGenerateReportPageCond); } screen-api/src/main/java/com/moral/api/pojo/enums/FileTableEnum.java
@@ -41,7 +41,10 @@ * 小程序头像 */ APP_ALLOCATION(1202401, "app头像"), /** * 盐城自动excel */ YC_GENERATEEXCEL(1250301, "盐城自动生成报告"), ; @EnumValue screen-api/src/main/java/com/moral/api/pojo/ext/ycgeneratereport/YcGenerateReportExt.java
New file @@ -0,0 +1,21 @@ package com.moral.api.pojo.ext.ycgeneratereport; import com.moral.api.entity.YcGenerateReport; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** * <p> * 盐城报告表 * </p> * deyt template generate * @author JI * @since 2024-03-26 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class YcGenerateReportExt extends YcGenerateReport { } screen-api/src/main/java/com/moral/api/pojo/ext/ycgeneratereport/YcGenerateReportListExt.java
New file @@ -0,0 +1,22 @@ package com.moral.api.pojo.ext.ycgeneratereport; import com.moral.api.entity.YcGenerateReport; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** * <p> * 盐城报告表 * </p> * deyt template generate * @author JI * @since 2024-03-26 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class YcGenerateReportListExt extends YcGenerateReport { } screen-api/src/main/java/com/moral/api/pojo/ext/ycgeneratereport/YcGenerateReportPageExt.java
New file @@ -0,0 +1,98 @@ package com.moral.api.pojo.ext.ycgeneratereport; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.moral.api.entity.YcGenerateReport; import com.moral.api.pojo.vo.file.FileVo; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.sql.Date; import java.util.List; /** * <p> * 盐城报告表 * </p> * deyt template generate * @author JI * @since 2024-03-26 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class YcGenerateReportPageExt{ /** * 主键id */ private Integer id; /** * 报告日期 */ private Date reportTime; /** * 报告内容 */ private String reportContent; /** * 原始内容 */ private String originalContent; /** * 是否删除 */ @TableLogic private Integer isDel; /** * 是否作废 */ private Integer isInvalid; /** * 作废理由 */ private String invalidReason; /** * 创建人id */ private Integer createId; /** * 创建人姓名 */ private String createName; /** * 创建时间 */ private Date createTime; /** * 更新人id */ private Integer updateId; /** * 更新人姓名 */ private String updateName; /** * 更新时间 */ private Date updateTime; private List<FileVo> list; } screen-api/src/main/java/com/moral/api/pojo/query/ycgeneratereport/YcGenerateReportAddCond.java
New file @@ -0,0 +1,73 @@ package com.moral.api.pojo.query.ycgeneratereport; import com.moral.api.entity.YcGenerateReport; import com.moral.api.utils.BeanConverts; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; /** * <p> * 盐城报告表 * </p> * deyt template generate * @author JI * @since 2024-03-26 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="YcGenerateReport - 新增对象", description="YcGenerateReport - 新增对象") public class YcGenerateReportAddCond implements Serializable { @ApiModelProperty(value = "主键id") private Integer id; @ApiModelProperty(value = "报告日期") private Date reportTime; @ApiModelProperty(value = "报告内容") private String reportContent; @ApiModelProperty(value = "原始内容") private String originalContent; @ApiModelProperty(value = "是否删除") private Integer isDel; @ApiModelProperty(value = "是否作废") private Integer isInvalid; @ApiModelProperty(value = "作废理由") private String invalidReason; @ApiModelProperty(value = "创建人id") private Integer createId; @ApiModelProperty(value = "创建人姓名") private String createName; @ApiModelProperty(value = "创建时间") private Date createTime; @ApiModelProperty(value = "更新人id") private Integer updateId; @ApiModelProperty(value = "更新人姓名") private String updateName; @ApiModelProperty(value = "更新时间") private Date updateTime; public YcGenerateReport convert() { YcGenerateReport ycGenerateReport = BeanConverts.convert(this, YcGenerateReport.class); return ycGenerateReport; } } screen-api/src/main/java/com/moral/api/pojo/query/ycgeneratereport/YcGenerateReportListCond.java
New file @@ -0,0 +1,28 @@ package com.moral.api.pojo.query.ycgeneratereport; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; /** * <p> * 盐城报告表 * </p> * deyt template generate * @author JI * @since 2024-03-26 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="YcGenerateReport - 列表查询对象", description="YcGenerateReport - 列表查询对象") public class YcGenerateReportListCond implements Serializable { @ApiModelProperty(value = "ID") private Integer id; } screen-api/src/main/java/com/moral/api/pojo/query/ycgeneratereport/YcGenerateReportPageCond.java
New file @@ -0,0 +1,34 @@ package com.moral.api.pojo.query.ycgeneratereport; import com.moral.api.pojo.query.PageCond; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; /** * <p> * 盐城报告表 * </p> * deyt template generate * @author JI * @since 2024-03-26 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="YcGenerateReport - 分页查询对象", description="YcGenerateReport - 分页查询对象") public class YcGenerateReportPageCond implements Serializable{ @ApiModelProperty(value = "开始时间") private String startTime; @ApiModelProperty(value = "结束时间") private String endTime; @ApiModelProperty(value = "分页参数") private PageCond page; } screen-api/src/main/java/com/moral/api/pojo/query/ycgeneratereport/YcGenerateReportUpdateCond.java
New file @@ -0,0 +1,73 @@ package com.moral.api.pojo.query.ycgeneratereport; import com.moral.api.entity.YcGenerateReport; import com.moral.api.utils.BeanConverts; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; /** * <p> * 盐城报告表 * </p> * deyt template generate * @author JI * @since 2024-03-26 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="YcGenerateReport - 更新对象", description="YcGenerateReport - 更新对象") public class YcGenerateReportUpdateCond implements Serializable { @ApiModelProperty(value = "主键id") private Integer id; @ApiModelProperty(value = "报告日期") private Date reportTime; @ApiModelProperty(value = "报告内容") private String reportContent; @ApiModelProperty(value = "原始内容") private String originalContent; @ApiModelProperty(value = "是否删除") private Integer isDel; @ApiModelProperty(value = "是否作废") private Integer isInvalid; @ApiModelProperty(value = "作废理由") private String invalidReason; @ApiModelProperty(value = "创建人id") private Integer createId; @ApiModelProperty(value = "创建人姓名") private String createName; @ApiModelProperty(value = "创建时间") private Date createTime; @ApiModelProperty(value = "更新人id") private Integer updateId; @ApiModelProperty(value = "更新人姓名") private String updateName; @ApiModelProperty(value = "更新时间") private Date updateTime; public YcGenerateReport convert() { YcGenerateReport ycGenerateReport = BeanConverts.convert(this, YcGenerateReport.class); return ycGenerateReport; } } screen-api/src/main/java/com/moral/api/pojo/query/ycgeneratereport/YcGenerateReportUploadCond.java
New file @@ -0,0 +1,35 @@ package com.moral.api.pojo.query.ycgeneratereport; import com.moral.api.pojo.query.PageCond; import com.moral.api.pojo.vo.file.FileVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.List; /** * <p> * 盐城报告表 * </p> * deyt template generate * @author JI * @since 2024-03-26 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="YcGenerateReportUploadCond - 重新上传对象", description="YcGenerateReportUploadCond - 重新上传对象") public class YcGenerateReportUploadCond implements Serializable{ @ApiModelProperty(value = "报告表id") private Integer id; @ApiModelProperty(value = "附件list") private List<FileVo> list; } screen-api/src/main/java/com/moral/api/pojo/vo/yc/AqiResultVo.java
New file @@ -0,0 +1,80 @@ package com.moral.api.pojo.vo.yc; import com.moral.api.controller.YcReptilesController; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; /** * @ClassName TsetVo * @Description TODO * @Author @cjl * @Date 2024-03-04 11:17 * @Version 1.0 */ @Data @Builder @AllArgsConstructor @NoArgsConstructor public class AqiResultVo { private String name; private double SO2; private double SO2Index; private double NO2; private double NO2Index; private double granule; private double granuleIndex; private double CO; private double COIndex; private String OO; private String OOIndex; private double granule25; private double granule25Index; private String AQI; private String SW; private String airQuality; private String category; private String colour; public static void main(String[] args) { YcReptilesController testController = new YcReptilesController(); String str = testController.compareYear(42.6d, 46d,2); System.out.println(str); /*List<SixConcentrationsVo> list = new ArrayList<>(); list.add(SixConcentrationsVo.builder().name("宝龙广场").PM25(51d).build()); list.add(SixConcentrationsVo.builder().name("市监测站").PM25(32d).build()); list.add(SixConcentrationsVo.builder().name("大丰高级中学").PM25(51d).build()); list.add(SixConcentrationsVo.builder().name("响水县自来水厂").PM25(33d).build()); list.add(SixConcentrationsVo.builder().name("响水职业中学").PM25(51d).build()); List<SixConcentrationsVo> list1 = new ArrayList<>(); list1.add(SixConcentrationsVo.builder().name("宝龙广场").PM25(89d).build()); list1.add(SixConcentrationsVo.builder().name("市监测站").PM25(32d).build()); list1.add(SixConcentrationsVo.builder().name("大丰高级中学").PM25(44d).build()); list1.add(SixConcentrationsVo.builder().name("响水县自来水厂").PM25(33d).build()); list1.add(SixConcentrationsVo.builder().name("响水职业中学").PM25(78d).build()); List<SixConcentrationsVo> listAll = testController.resultList(list,list1,2); String str = testController.rankingList(listAll,2); System.out.println(str);*/ } } screen-api/src/main/java/com/moral/api/pojo/vo/yc/SixConcentrationsVo.java
New file @@ -0,0 +1,88 @@ package com.moral.api.pojo.vo.yc; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.math.BigDecimal; /** * @ClassName SixConcentrationsVo * @Description TODO * @Author @cjl * @Date 2024-03-07 11:24 * @Version 1.0 */ @Data @Builder @AllArgsConstructor @NoArgsConstructor public class SixConcentrationsVo { private String name; private double SO2; private String SO2ExceedingMultiple; private double SO2Avg; private String SO2ExceedingMultipleTwo; private double NO2; private String NO2ExceedingMultiple; private double NO2Avg; private String NO2ExceedingMultipleTwo; private double PM10; private String PM10ExceedingMultiple; private double PM10Avg; private String PM10ExceedingMultipleTwo; private double CO; /*private String COExceedingMultiple;*/ private double COAvg; private String COExceedingMultipleTwo; private double OO; /* private String OOExceedingMultiple;*/ private double OOAvg; private String OOExceedingMultipleTwo; private double PM25; private String PM25ExceedingMultiple; private double PM25Avg; private String PM25ExceedingMultipleTwo; private String excellentRateName; private double excellentRateRatio; private double excellentRateRatioYoY; private BigDecimal YoYPM25; private String YoYPM25Str; private BigDecimal YoYO3; private String YoYO3Str; private String excellentRateRatioYoYStr; } screen-api/src/main/java/com/moral/api/pojo/vo/ycgeneratereport/YcGenerateReportListVo.java
New file @@ -0,0 +1,80 @@ package com.moral.api.pojo.vo.ycgeneratereport; import com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportListExt; import com.moral.api.utils.BeanConverts; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * <p> * 盐城报告表 * </p> * deyt template generate * @author JI * @since 2024-03-26 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="YcGenerateReport - 列表VO对象", description="YcGenerateReport - 列表VO对象") public class YcGenerateReportListVo implements Serializable { @ApiModelProperty(value = "主键id") private Integer id; @ApiModelProperty(value = "报告日期") private Date reportTime; @ApiModelProperty(value = "报告内容") private String reportContent; @ApiModelProperty(value = "原始内容") private String originalContent; @ApiModelProperty(value = "是否删除") private Integer isDel; @ApiModelProperty(value = "是否作废") private Integer isInvalid; @ApiModelProperty(value = "作废理由") private String invalidReason; @ApiModelProperty(value = "创建人id") private Integer createId; @ApiModelProperty(value = "创建人姓名") private String createName; @ApiModelProperty(value = "创建时间") private Date createTime; @ApiModelProperty(value = "更新人id") private Integer updateId; @ApiModelProperty(value = "更新人姓名") private String updateName; @ApiModelProperty(value = "更新时间") private Date updateTime; public static YcGenerateReportListVo convert(YcGenerateReportListExt ycGenerateReportListExt) { YcGenerateReportListVo ycGenerateReportListVo = BeanConverts.convert(ycGenerateReportListExt, YcGenerateReportListVo.class); return ycGenerateReportListVo; } public static List<YcGenerateReportListVo> convert(List<YcGenerateReportListExt> ycGenerateReportListExtList) { return ycGenerateReportListExtList.stream().map(YcGenerateReportListVo::convert).collect(Collectors.toList()); } } screen-api/src/main/java/com/moral/api/pojo/vo/ycgeneratereport/YcGenerateReportPageVo.java
New file @@ -0,0 +1,79 @@ package com.moral.api.pojo.vo.ycgeneratereport; import com.fasterxml.jackson.annotation.JsonFormat; import com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportPageExt; import com.moral.api.pojo.vo.file.FileVo; import com.moral.api.utils.BeanConverts; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.apache.commons.collections.CollectionUtils; import java.io.Serializable; import java.sql.Date; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * <p> * 盐城报告表 * </p> * deyt template generate * @author JI * @since 2024-03-26 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="YcGenerateReport - 分页VO对象", description="YcGenerateReport - 分页VO对象") public class YcGenerateReportPageVo implements Serializable { @ApiModelProperty(value = "主键id") private Integer id; @ApiModelProperty(value = "报告日期") @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8") private Date reportTime; @ApiModelProperty(value = "报告内容") private String reportContent; @ApiModelProperty(value = "创建人id") private Integer createId; @ApiModelProperty(value = "创建人姓名") private String createName; @ApiModelProperty(value = "创建时间") private Date createTime; @ApiModelProperty(value = "更新人id") private Integer updateId; @ApiModelProperty(value = "更新人姓名") private String updateName; @ApiModelProperty(value = "更新时间") private Date updateTime; @ApiModelProperty(value = "附件") private List<FileVo> list; public static YcGenerateReportPageVo convert(YcGenerateReportPageExt ycGenerateReportPageExt) { YcGenerateReportPageVo ycGenerateReportPageVo = BeanConverts.convert(ycGenerateReportPageExt, YcGenerateReportPageVo.class); return ycGenerateReportPageVo; } public static List<YcGenerateReportPageVo> convert(List<YcGenerateReportPageExt> ycGenerateReportPageExtList) { return ycGenerateReportPageExtList.stream().map(YcGenerateReportPageVo::convert).collect(Collectors.toList()); } public List<FileVo> getList() { return CollectionUtils.isEmpty(list)?new ArrayList<>():list; } } screen-api/src/main/java/com/moral/api/pojo/vo/ycgeneratereport/YcGenerateReportVo.java
New file @@ -0,0 +1,75 @@ package com.moral.api.pojo.vo.ycgeneratereport; import com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportExt; import com.moral.api.utils.BeanConverts; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; /** * <p> * 盐城报告表 * </p> * deyt template generate * @author JI * @since 2024-03-26 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="YcGenerateReport - 详情VO对象", description="YcGenerateReport - 详情VO对象") public class YcGenerateReportVo implements Serializable { @ApiModelProperty(value = "主键id") private Integer id; @ApiModelProperty(value = "报告日期") private Date reportTime; @ApiModelProperty(value = "报告内容") private String reportContent; @ApiModelProperty(value = "原始内容") private String originalContent; @ApiModelProperty(value = "是否删除") private Integer isDel; @ApiModelProperty(value = "是否作废") private Integer isInvalid; @ApiModelProperty(value = "作废理由") private String invalidReason; @ApiModelProperty(value = "创建人id") private Integer createId; @ApiModelProperty(value = "创建人姓名") private String createName; @ApiModelProperty(value = "创建时间") private Date createTime; @ApiModelProperty(value = "更新人id") private Integer updateId; @ApiModelProperty(value = "更新人姓名") private String updateName; @ApiModelProperty(value = "更新时间") private Date updateTime; public static YcGenerateReportVo convert(YcGenerateReportExt ycGenerateReportExt) { YcGenerateReportVo ycGenerateReportVo = BeanConverts.convert(ycGenerateReportExt, YcGenerateReportVo.class); return ycGenerateReportVo; } } screen-api/src/main/java/com/moral/api/service/ReptileResultService.java
New file @@ -0,0 +1,16 @@ package com.moral.api.service; import java.util.Map; /** * @ClassName reptileResultService * @Description TODO * @Author @cjl * @Date 2024-02-27 13:50 * @Version 1.0 */ public interface ReptileResultService { Map<String,Object> getYcDaily(String url,String cookie,String time,int type); } screen-api/src/main/java/com/moral/api/service/YcGenerateReportService.java
New file @@ -0,0 +1,67 @@ package com.moral.api.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.moral.api.entity.YcGenerateReport; import com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportExt; import com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportListExt; import com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportPageExt; import com.moral.api.pojo.query.ycgeneratereport.*; import java.util.List; /** * <p> * 盐城报告表 服务类 * </p> * deyt template generate * @author JI * @since 2024-03-26 */ public interface YcGenerateReportService extends IService<YcGenerateReport> { /** * 逻辑删除 * @param id * @return */ boolean removeByIdWithFill(Integer id); /** * 根据id查询详情 * @param id * @return YcGenerateReportExt */ YcGenerateReportExt extOne(Integer id); /** * 查询列表详情 * @param ycGenerateReportListCond * @return YcGenerateReportListExt */ List<YcGenerateReportListExt> extList(YcGenerateReportListCond ycGenerateReportListCond); /** * 查询分页详情 * @param ycGenerateReportPageCond * @return YcGenerateReportPageExt */ Page<YcGenerateReportPageExt> extPage(YcGenerateReportPageCond ycGenerateReportPageCond); /** * 保存 * @param ycGenerateReportAddCond * @return */ boolean save(YcGenerateReportAddCond ycGenerateReportAddCond); /** * 更新 * @param ycGenerateReportUpdateCond * @return */ boolean update(YcGenerateReportUpdateCond ycGenerateReportUpdateCond); boolean fileUpload(YcGenerateReportUploadCond uploadCond); } screen-api/src/main/java/com/moral/api/service/impl/ReptileResultServiceImpl.java
New file @@ -0,0 +1,487 @@ package com.moral.api.service.impl; import com.moral.api.pojo.vo.yc.AqiResultVo; import com.moral.api.pojo.vo.yc.SixConcentrationsVo; import com.moral.api.service.ReptileResultService; import lombok.extern.slf4j.Slf4j; import okhttp3.*; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; /** * @ClassName reptileResultServiceImpl * @Description TODO * @Author @cjl * @Date 2024-02-27 13:50 * @Version 1.0 */ @Service @Slf4j public class ReptileResultServiceImpl implements ReptileResultService { @Override public Map<String,Object> getYcDaily(String url,String cookie,String time,int type) { /*String host = "http://116.147.41.178:8081"; String path = "/Home/AjaxLogin"; String method = "POST"; Map<String, String> headers = new HashMap<String, String>(); Map<String, String> querys = new HashMap<String, String>(); try { HttpResponse response = HttpUtils.doPost(host, path, method, headers, new HashMap<>(),querys); }catch (Exception e) { e.printStackTrace(); }*/ return saveRedis(url,cookie,null,type,time,"2024-03-06 10:00:00"); } public static void main(String[] args) { String host = "http://116.147.41.178:8081?t="+System.currentTimeMillis();; String path = "/Home/AjaxLogin"; String path1 = "/AQI/Statistics/YouLiangRateDataNewNewNew?sTime=2024-01-01%2000:00:00&eTime=2024-02-26%2000:00:00&DecimalPlaces=0&isDustDay=false&selec=0&selet=0&Time=2024-02&isDustDayXianShi=false"; String method = "POST"; Map<String, String> headers = new HashMap<String, String>(); headers.put("Cookie","ASP.NET_SessionId=vpt0ai143s0npijvnl4bmm0b"); Map<String, String> querys = new HashMap<String, String>(); querys.put("user","shbj"); querys.put("password","shbj@123"); querys.put("yzma","7557"); String url = "http://116.147.41.178:8081/AQI/Statistics/YouLiangRateDataNewNewNew?sTime=2024-01-01%2000:00:00&eTime=2024-03-03%2000:00:00&DecimalPlaces=0&isDustDay=false&selec=0&selet=0&Time=2024-02&isDustDayXianShi=false"; String url1 = "http://116.147.41.178:8081/DataReport/AQIReport"; /*String cookie = "ASP.NET_SessionId=anpfqfg3qy0k3xlcbtqyfa0w;CurrentAMenuID=2fa3c748-bf4e-4453-9544-e5fd860d74bf;";*/ String cookie = "ASP.NET_SessionId=xo1nn2mvzmhaeb2csok130fd; CurrentSiteID=1fa76063-ec08-4907-ae54-0f78b57fec08; "; StringBuffer stringBuffer = new StringBuffer(); try { // HttpResponse response = HttpUtils.doPost(host, path, method, headers, new HashMap<>(),querys); // Header[] headerList = response.getHeaders("Set-Cookie"); // if(0 == headerList.length){ // return; // } // String cookieResult = headerList[0].toString().substring(0, headerList[0].toString().indexOf(";")); // System.out.println(cookieResult); // stringBuffer.append(cookieResult).append(";CurrentAMenuID=2fa3c748-bf4e-4453-9544-e5fd860d74bf;"); // AQI统计 /*ReptileResultServiceImpl resultService = new ReptileResultServiceImpl(); resultService.saveRedis(url1,cookie,null,2,"2024-03-05","2024-03-06 10:00:00");*/ // 六项浓度均值 /*String sTime="2024-01-01 00:00:00"; String eTime="2024-03-06 00:00:00"; String url2 = "http://116.147.41.178:8081/AQA/YearCustom/Year_Custom1?sTime="+sTime+"&eTime="+eTime+"&type=1&viewtype=1&isDustDay=true&DecimalPlaces=1"; ReptileResultServiceImpl resultService = new ReptileResultServiceImpl(); resultService.saveRedis(url2,cookie,null,3,"2024-03-05","2024-03-06 10:00:00");*/ // 县市区考核 // String url3 = "http://116.147.41.178:8081/AQA/Statistics/YouLiangRateDataNewNewNew?sTime="+sTime+"&eTime="+eTime+"&DecimalPlaces=1&isDustDay=false&selec=0&selet=0&Time=2024-03&isDustDayXianShi=false"; /* String sTime="2024-01-01"; String eTime="2024-03-06"; String url3 = "http://116.147.41.178:8081/AQI/Statistics/YouLiangRateDataNewNewNew?sTime="+sTime+"&eTime="+eTime+"&DecimalPlaces=1&isDustDay=false&selec=0&selet=0&isDustDayXianShi=false"; ReptileResultServiceImpl resultService = new ReptileResultServiceImpl(); resultService.saveRedis(url3,cookie,null,1,"2024-03-05","2024-03-06 10:00:00"); */ //达标率 String sTime="2023-01-01"; String eTime="2023-03-12"; String url4 = "http://116.147.41.178:8081/AQI/Statistics/StandardRateData?&sTime="+sTime+"&eTime="+eTime; ReptileResultServiceImpl resultService = new ReptileResultServiceImpl(); resultService.saveRedis(url4,cookie,null,4,"2024-03-05","2024-03-06 10:00:00"); int i = 0; }catch (Exception e) { log.error("错误>>>",e); } } public Map<String,Object> saveRedis(String url,String cookie,String redisString,int type,String time,String newTime){ Map<String,Object> map = new HashMap<>(); StringBuffer data = new StringBuffer(); int timeout = 60; OkHttpClient client = new OkHttpClient().newBuilder().connectTimeout(timeout, TimeUnit.SECONDS) .readTimeout(timeout, TimeUnit.SECONDS).writeTimeout(timeout, TimeUnit.SECONDS) .build(); Request request = new Request.Builder() .url(url) .method("POST", resultBody(type,time,newTime)) .addHeader("Cookie", cookie) .build(); try { Response response = client.newCall(request).execute(); String responseData = response.body().string(); //System.out.println(responseData); Document doc = Jsoup.parse(responseData); Element thead = null; Element tbody = null; if(2 == type){ Element element = doc.select("#Vdate").first(); thead = element.select("thead").last(); tbody = element.select("tbody").last(); }else { thead = doc.select("thead").last(); tbody = doc.select("tbody").last(); } Elements trsHead = thead.select("tr"); if(trsHead.size()>0){ String title = trsHead.get(0).select("th").get(0).text(); data.append(title + "\t"); data.append("\n"); map.put("title",title); } Elements trs = tbody.select("tr"); int id = 0; List<AqiResultVo> tableResult = new ArrayList<>(); List<SixConcentrationsVo> tableSixResult = new ArrayList<>(); for (Element tr : trs) { Elements tds = tr.select("td"); id = 0; if(2 == type && tds.size() == 18){ if(tds.get(1).text().equals("NA")&&tds.get(2).text().equals("NA")&&tds.get(3).text().equals("NA")&&tds.get(4).text().equals("NA")&&tds.get(5).text().equals("NA")){ continue; } AqiResultVo testVo = AqiResultVo.builder().name(tds.get(0).text()).SO2(Double.valueOf(tds.get(1).text())) .SO2Index(Double.valueOf(tds.get(2).text())).NO2(Double.valueOf(tds.get(3).text())).NO2Index(Double.valueOf(tds.get(4).text())) .granule(tds.get(5).text().equals("NA")?0:Double.valueOf(tds.get(5).text())).granuleIndex(tds.get(6).text().equals("NA")?0:Double.valueOf(tds.get(6).text())).CO(tds.get(7).text().equals("NA")?0:Double.valueOf(tds.get(7).text())) .COIndex(tds.get(8).text().equals("NA")?0:Double.valueOf(tds.get(8).text())).OO(tds.get(9).text()).OOIndex(tds.get(10).text()) .granule25(tds.get(11).text().equals("NA")?0:Double.valueOf(tds.get(11).text())).granule25Index(tds.get(12).text().equals("NA")?0:Double.valueOf(tds.get(12).text())).AQI(tds.get(13).text()) .SW(tds.get(14).text()).airQuality(tds.get(15).text()).category(tds.get(16).text()) .colour(tds.get(17).text()) .build(); tableResult.add(testVo); }else if(3 == type && 23 == tds.size()){ SixConcentrationsVo sixConcentrationsVo = SixConcentrationsVo.builder() .name(tds.get(0).text()).SO2(Double.valueOf(tds.get(1).text())) .SO2ExceedingMultiple(tds.get(2).text()).SO2Avg(Double.valueOf(tds.get(3).text())).SO2ExceedingMultipleTwo(tds.get(4).text()) .NO2(Double.valueOf(tds.get(5).text())).NO2ExceedingMultiple(tds.get(6).text()).NO2Avg(Double.valueOf(tds.get(7).text())) .NO2ExceedingMultipleTwo(tds.get(8).text()).PM10(Double.valueOf(tds.get(9).text())).PM10ExceedingMultiple(tds.get(10).text()) .PM10Avg(Double.valueOf(tds.get(11).text())).PM10ExceedingMultipleTwo(tds.get(12).text()).CO(Double.valueOf(tds.get(13).text())) .COAvg(Double.valueOf(tds.get(14).text())).COExceedingMultipleTwo(tds.get(15).text()).OO(Double.valueOf(tds.get(16).text())) .OOAvg(Double.valueOf(tds.get(17).text())).OOExceedingMultipleTwo(tds.get(18).text()).PM25(Double.valueOf(tds.get(19).text())) .PM25ExceedingMultiple(tds.get(20).text()).PM25Avg(Double.valueOf(tds.get(21).text())).PM25ExceedingMultipleTwo(tds.get(22).text()) .build(); tableSixResult.add(sixConcentrationsVo); }else if(1 == type && 20 == tds.size()){ SixConcentrationsVo sixConcentrationsVo = SixConcentrationsVo.builder() .excellentRateName(tds.get(1).text()).excellentRateRatio(Double.valueOf(tds.get(14).text())) .excellentRateRatioYoY(Double.valueOf(tds.get(15).text())).name(tds.get(1).text()) .build(); tableSixResult.add(sixConcentrationsVo); }else if(4 == type && 28 == tds.size() ){ int rDay = BigDecimal.valueOf(Double.valueOf(tds.get(25).text())).subtract(BigDecimal.valueOf(Double.valueOf(tds.get(26).text()))).intValue(); map.put("surplusDay",rDay); } for (Element td : tds) { Elements tdList = td.getElementsByClass("class_xianshi"); if(1 == type){ if(tdList.size()>0 || id ==0){ id++; continue; } } data.append(td.text() + "\t"); } data.append("\n"); } if(2 == type){ map.put("table",tableResult); }else if(3 ==type){ map.put("table",tableSixResult); }else if(1 == type){ map.put("table",tableSixResult); } System.out.println(data.toString()); }catch (Exception e){ log.error("错误>>>",e); } return map; } private RequestBody resultBody(int type, String time, String newTime){ RequestBody body = null; if(1 == type){ body = new MultipartBody.Builder().setType(MultipartBody.FORM) .addFormDataPart("sids[]","1fa76063-ec08-4907-ae54-0f78b57fec08") .addFormDataPart("sids[]","d9a3e3d7-3a9e-45ce-9066-d3ee644f2777") .addFormDataPart("sids[]","39db8e45-8ecd-4314-addd-bb9d3bfd5e22") .addFormDataPart("sids[]","8fb74ca0-f1c2-4b43-b93a-d6f4a3f95ea9") .addFormDataPart("sids[]","67cd5c80-d475-4b3e-b544-d6bd825767a4") .addFormDataPart("sids[]","35d19f51-df72-4ee7-afcb-1ac93471f273") .addFormDataPart("sids[]","ca6bb16e-dc1b-403d-8501-358ddd17a82f") .addFormDataPart("sids[]","791e37f2-47dd-44a8-8cdb-1166387fe11a") .addFormDataPart("sids[]","3c97d443-772c-40f8-8962-cdaf5097b35c") .addFormDataPart("sids[]","6f2ee392-e989-4069-811f-18924155de18") .addFormDataPart("sids[]","e3be2a96-831c-493b-bfa8-8c6ff1aec698") .addFormDataPart("sids[]","d30b414c-ba52-453e-84fa-46451e2cb768") .addFormDataPart("sids[]","1d94cf00-c1a8-44d4-9468-cdc9d5c60711") .addFormDataPart("sids[]","240b6457-6037-4f98-ad63-51b011f3313a") .addFormDataPart("sids[]","faeab8e5-7dbc-4382-bcb3-9879b248315e") .addFormDataPart("sids[]","6c214d7b-b8df-43ef-8304-5b0443e1e34c") .addFormDataPart("sids[]","a72c9e60-cf73-4dc9-aa51-b2e98b41bb96") .addFormDataPart("sids[]","ff180f3b-af4b-4f20-ac71-94a707c5ac79") .addFormDataPart("sids[]","fe06316e-6132-4be8-9dab-e0ac944a2030") .addFormDataPart("sids[]","753da141-1b30-488b-b9b2-eb65a8268a37") .addFormDataPart("sids[]","3ff41b7b-f0b6-4af7-bc3f-f4b3b48671ee") .addFormDataPart("rids[]","2a38e028-db85-4afa-a682-a6f5e015e231") .addFormDataPart("rids[]","085fab12-2897-4a54-93fe-009288a4b933") .addFormDataPart("rids[]","780470c6-b99c-4ab8-88e5-9155aeef354c") .addFormDataPart("rids[]","58b02ba2-936b-4a20-a090-1b859cdd82a4") .addFormDataPart("rids[]","bffb79ac-e836-476b-b981-78cc752ec751") .addFormDataPart("rids[]","9d2d6eb3-ebca-4fa6-bf5b-6e01e85ba784") .addFormDataPart("rids[]","00e1a970-e889-42e0-a45c-79b506b826ac") .addFormDataPart("rids[]","3bea4bc8-23c0-4b9d-8eb1-b7e874c7c0fa") .addFormDataPart("rids[]","28e31d35-068f-4674-b70e-c742f9881b27") .addFormDataPart("rids[]","442f00ea-75b7-4fcb-8e39-52cbf4e76e15") .addFormDataPart("rids[]","203567c0-bff7-449a-bbe1-21ea9b62567b") .addFormDataPart("rids[]","c3d506b0-8541-4086-ac72-b34e5155e1a4") .addFormDataPart("r_sids[0][]","2a38e028-db85-4afa-a682-a6f5e015e231")// .addFormDataPart("r_sids[0][]","1fa76063-ec08-4907-ae54-0f78b57fec08") .addFormDataPart("r_sids[0][]","ca6bb16e-dc1b-403d-8501-358ddd17a82f") .addFormDataPart("r_sids[1][]","085fab12-2897-4a54-93fe-009288a4b933")// .addFormDataPart("r_sids[1][]","791e37f2-47dd-44a8-8cdb-1166387fe11a") .addFormDataPart("r_sids[1][]","3c97d443-772c-40f8-8962-cdaf5097b35c") .addFormDataPart("r_sids[2][]","cd11ce0b-5a31-43c1-879a-425866585652") .addFormDataPart("r_sids[2][]","6f2ee392-e989-4069-811f-18924155de18") .addFormDataPart("r_sids[2][]","e3be2a96-831c-493b-bfa8-8c6ff1aec698") .addFormDataPart("r_sids[3][]","780470c6-b99c-4ab8-88e5-9155aeef354c") .addFormDataPart("r_sids[3][]","d30b414c-ba52-453e-84fa-46451e2cb768") .addFormDataPart("r_sids[3][]","1d94cf00-c1a8-44d4-9468-cdc9d5c60711") .addFormDataPart("r_sids[4][]","58b02ba2-936b-4a20-a090-1b859cdd82a4") .addFormDataPart("r_sids[4][]","240b6457-6037-4f98-ad63-51b011f3313a") .addFormDataPart("r_sids[4][]","faeab8e5-7dbc-4382-bcb3-9879b248315e") .addFormDataPart("r_sids[5][]","bffb79ac-e836-476b-b981-78cc752ec751") .addFormDataPart("r_sids[5][]","6c214d7b-b8df-43ef-8304-5b0443e1e34c") .addFormDataPart("r_sids[5][]","a72c9e60-cf73-4dc9-aa51-b2e98b41bb96") .addFormDataPart("r_sids[6][]","9d2d6eb3-ebca-4fa6-bf5b-6e01e85ba784") .addFormDataPart("r_sids[6][]","8fb74ca0-f1c2-4b43-b93a-d6f4a3f95ea9") .addFormDataPart("r_sids[6][]","67cd5c80-d475-4b3e-b544-d6bd825767a4") .addFormDataPart("r_sids[7][]","00e1a970-e889-42e0-a45c-79b506b826ac") .addFormDataPart("r_sids[7][]","ff180f3b-af4b-4f20-ac71-94a707c5ac79") .addFormDataPart("r_sids[7][]","fe06316e-6132-4be8-9dab-e0ac944a2030") .addFormDataPart("r_sids[8][]","3bea4bc8-23c0-4b9d-8eb1-b7e874c7c0fa") .addFormDataPart("r_sids[8][]","1fa76063-ec08-4907-ae54-0f78b57fec08") .addFormDataPart("r_sids[8][]","d9a3e3d7-3a9e-45ce-9066-d3ee644f2777") .addFormDataPart("r_sids[8][]","39db8e45-8ecd-4314-addd-bb9d3bfd5e22") .addFormDataPart("r_sids[8][]","8fb74ca0-f1c2-4b43-b93a-d6f4a3f95ea9") .addFormDataPart("r_sids[8][]","67cd5c80-d475-4b3e-b544-d6bd825767a4") .addFormDataPart("r_sids[8][]","35d19f51-df72-4ee7-afcb-1ac93471f273") .addFormDataPart("r_sids[9][]","28e31d35-068f-4674-b70e-c742f9881b27") .addFormDataPart("r_sids[9][]","753da141-1b30-488b-b9b2-eb65a8268a37") .addFormDataPart("r_sids[9][]","3ff41b7b-f0b6-4af7-bc3f-f4b3b48671ee") .addFormDataPart("r_sids[10][]","442f00ea-75b7-4fcb-8e39-52cbf4e76e15") .addFormDataPart("r_sids[10][]","39db8e45-8ecd-4314-addd-bb9d3bfd5e22") .addFormDataPart("r_sids[10][]","e3be2a96-831c-493b-bfa8-8c6ff1aec698") .addFormDataPart("r_sids[11][]","203567c0-bff7-449a-bbe1-21ea9b62567b") .addFormDataPart("r_sids[11][]","d9a3e3d7-3a9e-45ce-9066-d3ee644f2777") .addFormDataPart("r_sids[12][]","c3d506b0-8541-4086-ac72-b34e5155e1a4") .addFormDataPart("r_sids[12][]","35d19f51-df72-4ee7-afcb-1ac93471f273") .addFormDataPart("r_sids[12][]","6f2ee392-e989-4069-811f-18924155de18") .build(); }else if(2 == type){ body = new MultipartBody.Builder().setType(MultipartBody.FORM) .addFormDataPart("chose","station") .addFormDataPart("Region","on") .addFormDataPart("Station","on") .addFormDataPart("Item","1fa76063-ec08-4907-ae54-0f78b57fec08") .addFormDataPart("Item","d9a3e3d7-3a9e-45ce-9066-d3ee644f2777") .addFormDataPart("Item","39db8e45-8ecd-4314-addd-bb9d3bfd5e22") .addFormDataPart("Item","8fb74ca0-f1c2-4b43-b93a-d6f4a3f95ea9") .addFormDataPart("Item","67cd5c80-d475-4b3e-b544-d6bd825767a4") .addFormDataPart("Item","35d19f51-df72-4ee7-afcb-1ac93471f273") .addFormDataPart("Item","ca6bb16e-dc1b-403d-8501-358ddd17a82f") .addFormDataPart("Item","791e37f2-47dd-44a8-8cdb-1166387fe11a") .addFormDataPart("Item","3c97d443-772c-40f8-8962-cdaf5097b35c") .addFormDataPart("Item","6f2ee392-e989-4069-811f-18924155de18") .addFormDataPart("Item","e3be2a96-831c-493b-bfa8-8c6ff1aec698") .addFormDataPart("Item","d30b414c-ba52-453e-84fa-46451e2cb768") .addFormDataPart("Item","1d94cf00-c1a8-44d4-9468-cdc9d5c60711") .addFormDataPart("Item","240b6457-6037-4f98-ad63-51b011f3313a") .addFormDataPart("Item","faeab8e5-7dbc-4382-bcb3-9879b248315e") .addFormDataPart("Item","6c214d7b-b8df-43ef-8304-5b0443e1e34c") .addFormDataPart("Item","a72c9e60-cf73-4dc9-aa51-b2e98b41bb96") .addFormDataPart("Item","ff180f3b-af4b-4f20-ac71-94a707c5ac79") .addFormDataPart("Item","fe06316e-6132-4be8-9dab-e0ac944a2030") .addFormDataPart("Item","753da141-1b30-488b-b9b2-eb65a8268a37") .addFormDataPart("Item","3ff41b7b-f0b6-4af7-bc3f-f4b3b48671ee") .addFormDataPart("ItemCity","2a38e028-db85-4afa-a682-a6f5e015e231") .addFormDataPart("ItemCity","085fab12-2897-4a54-93fe-009288a4b933") .addFormDataPart("ItemCity","780470c6-b99c-4ab8-88e5-9155aeef354c") .addFormDataPart("ItemCity","58b02ba2-936b-4a20-a090-1b859cdd82a4") .addFormDataPart("ItemCity","bffb79ac-e836-476b-b981-78cc752ec751") .addFormDataPart("ItemCity","9d2d6eb3-ebca-4fa6-bf5b-6e01e85ba784") .addFormDataPart("ItemCity","00e1a970-e889-42e0-a45c-79b506b826ac") .addFormDataPart("ItemCity","3bea4bc8-23c0-4b9d-8eb1-b7e874c7c0fa") .addFormDataPart("ItemCity","28e31d35-068f-4674-b70e-c742f9881b27") .addFormDataPart("ItemCity","442f00ea-75b7-4fcb-8e39-52cbf4e76e15") .addFormDataPart("ItemCity","203567c0-bff7-449a-bbe1-21ea9b62567b") .addFormDataPart("ItemCity","c3d506b0-8541-4086-ac72-b34e5155e1a4") .addFormDataPart("2a38e028-db85-4afa-a682-a6f5e015e231Item","1fa76063-ec08-4907-ae54-0f78b57fec08") .addFormDataPart("2a38e028-db85-4afa-a682-a6f5e015e231Item","ca6bb16e-dc1b-403d-8501-358ddd17a82f") .addFormDataPart("085fab12-2897-4a54-93fe-009288a4b933Item","791e37f2-47dd-44a8-8cdb-1166387fe11a") .addFormDataPart("085fab12-2897-4a54-93fe-009288a4b933Item","3c97d443-772c-40f8-8962-cdaf5097b35c") .addFormDataPart("cd11ce0b-5a31-43c1-879a-425866585652Item","6f2ee392-e989-4069-811f-18924155de18") .addFormDataPart("cd11ce0b-5a31-43c1-879a-425866585652Item","e3be2a96-831c-493b-bfa8-8c6ff1aec698") .addFormDataPart("780470c6-b99c-4ab8-88e5-9155aeef354cItem","d30b414c-ba52-453e-84fa-46451e2cb768") .addFormDataPart("780470c6-b99c-4ab8-88e5-9155aeef354cItem","1d94cf00-c1a8-44d4-9468-cdc9d5c60711") .addFormDataPart("58b02ba2-936b-4a20-a090-1b859cdd82a4Item","240b6457-6037-4f98-ad63-51b011f3313a") .addFormDataPart("58b02ba2-936b-4a20-a090-1b859cdd82a4Item","faeab8e5-7dbc-4382-bcb3-9879b248315e") .addFormDataPart("bffb79ac-e836-476b-b981-78cc752ec751Item","6c214d7b-b8df-43ef-8304-5b0443e1e34c") .addFormDataPart("bffb79ac-e836-476b-b981-78cc752ec751Item","a72c9e60-cf73-4dc9-aa51-b2e98b41bb96") .addFormDataPart("9d2d6eb3-ebca-4fa6-bf5b-6e01e85ba784Item","8fb74ca0-f1c2-4b43-b93a-d6f4a3f95ea9") .addFormDataPart("9d2d6eb3-ebca-4fa6-bf5b-6e01e85ba784Item","67cd5c80-d475-4b3e-b544-d6bd825767a4") .addFormDataPart("00e1a970-e889-42e0-a45c-79b506b826acItem","ff180f3b-af4b-4f20-ac71-94a707c5ac79") .addFormDataPart("00e1a970-e889-42e0-a45c-79b506b826acItem","fe06316e-6132-4be8-9dab-e0ac944a2030") .addFormDataPart("3bea4bc8-23c0-4b9d-8eb1-b7e874c7c0faItem","1fa76063-ec08-4907-ae54-0f78b57fec08") .addFormDataPart("3bea4bc8-23c0-4b9d-8eb1-b7e874c7c0faItem","d9a3e3d7-3a9e-45ce-9066-d3ee644f2777") .addFormDataPart("3bea4bc8-23c0-4b9d-8eb1-b7e874c7c0faItem","39db8e45-8ecd-4314-addd-bb9d3bfd5e22") .addFormDataPart("3bea4bc8-23c0-4b9d-8eb1-b7e874c7c0faItem","8fb74ca0-f1c2-4b43-b93a-d6f4a3f95ea9") .addFormDataPart("3bea4bc8-23c0-4b9d-8eb1-b7e874c7c0faItem","67cd5c80-d475-4b3e-b544-d6bd825767a4") .addFormDataPart("3bea4bc8-23c0-4b9d-8eb1-b7e874c7c0faItem","35d19f51-df72-4ee7-afcb-1ac93471f273") .addFormDataPart("28e31d35-068f-4674-b70e-c742f9881b27Item","753da141-1b30-488b-b9b2-eb65a8268a37") .addFormDataPart("28e31d35-068f-4674-b70e-c742f9881b27Item","3ff41b7b-f0b6-4af7-bc3f-f4b3b48671ee") .addFormDataPart("442f00ea-75b7-4fcb-8e39-52cbf4e76e15Item","39db8e45-8ecd-4314-addd-bb9d3bfd5e22") .addFormDataPart("442f00ea-75b7-4fcb-8e39-52cbf4e76e15Item","e3be2a96-831c-493b-bfa8-8c6ff1aec698") .addFormDataPart("203567c0-bff7-449a-bbe1-21ea9b62567bItem","d9a3e3d7-3a9e-45ce-9066-d3ee644f2777") .addFormDataPart("c3d506b0-8541-4086-ac72-b34e5155e1a4Item","35d19f51-df72-4ee7-afcb-1ac93471f273") .addFormDataPart("c3d506b0-8541-4086-ac72-b34e5155e1a4Item","6f2ee392-e989-4069-811f-18924155de18") .addFormDataPart("date",time) //.addFormDataPart("dateTime",newTime) .build(); }else if(3 == type){ body = new MultipartBody.Builder().setType(MultipartBody.FORM) .addFormDataPart("sids[]","1fa76063-ec08-4907-ae54-0f78b57fec08") .addFormDataPart("sids[]","d9a3e3d7-3a9e-45ce-9066-d3ee644f2777") .addFormDataPart("sids[]","39db8e45-8ecd-4314-addd-bb9d3bfd5e22") .addFormDataPart("sids[]","8fb74ca0-f1c2-4b43-b93a-d6f4a3f95ea9") .addFormDataPart("sids[]","67cd5c80-d475-4b3e-b544-d6bd825767a4") .addFormDataPart("sids[]","35d19f51-df72-4ee7-afcb-1ac93471f273") .addFormDataPart("sids[]","ca6bb16e-dc1b-403d-8501-358ddd17a82f") .addFormDataPart("sids[]","791e37f2-47dd-44a8-8cdb-1166387fe11a") .addFormDataPart("sids[]","3c97d443-772c-40f8-8962-cdaf5097b35c") .addFormDataPart("sids[]","6f2ee392-e989-4069-811f-18924155de18") .addFormDataPart("sids[]","e3be2a96-831c-493b-bfa8-8c6ff1aec698") .addFormDataPart("sids[]","d30b414c-ba52-453e-84fa-46451e2cb768") .addFormDataPart("sids[]","1d94cf00-c1a8-44d4-9468-cdc9d5c60711") .addFormDataPart("sids[]","240b6457-6037-4f98-ad63-51b011f3313a") .addFormDataPart("sids[]","faeab8e5-7dbc-4382-bcb3-9879b248315e") .addFormDataPart("sids[]","6c214d7b-b8df-43ef-8304-5b0443e1e34c") .addFormDataPart("sids[]","a72c9e60-cf73-4dc9-aa51-b2e98b41bb96") .addFormDataPart("sids[]","ff180f3b-af4b-4f20-ac71-94a707c5ac79") .addFormDataPart("sids[]","fe06316e-6132-4be8-9dab-e0ac944a2030") .addFormDataPart("sids[]","753da141-1b30-488b-b9b2-eb65a8268a37") .addFormDataPart("sids[]","3ff41b7b-f0b6-4af7-bc3f-f4b3b48671ee") .addFormDataPart("rids[]","2a38e028-db85-4afa-a682-a6f5e015e231") .addFormDataPart("rids[]","085fab12-2897-4a54-93fe-009288a4b933") .addFormDataPart("rids[]","780470c6-b99c-4ab8-88e5-9155aeef354c") .addFormDataPart("rids[]","58b02ba2-936b-4a20-a090-1b859cdd82a4") .addFormDataPart("rids[]","bffb79ac-e836-476b-b981-78cc752ec751") .addFormDataPart("rids[]","9d2d6eb3-ebca-4fa6-bf5b-6e01e85ba784") .addFormDataPart("rids[]","00e1a970-e889-42e0-a45c-79b506b826ac") .addFormDataPart("rids[]","3bea4bc8-23c0-4b9d-8eb1-b7e874c7c0fa") .addFormDataPart("rids[]","28e31d35-068f-4674-b70e-c742f9881b27") .addFormDataPart("rids[]","442f00ea-75b7-4fcb-8e39-52cbf4e76e15") .addFormDataPart("rids[]","203567c0-bff7-449a-bbe1-21ea9b62567b") .addFormDataPart("rids[]","c3d506b0-8541-4086-ac72-b34e5155e1a4") .addFormDataPart("r_sids[0][]","2a38e028-db85-4afa-a682-a6f5e015e231") .addFormDataPart("r_sids[0][]","1fa76063-ec08-4907-ae54-0f78b57fec08") .addFormDataPart("r_sids[0][]","ca6bb16e-dc1b-403d-8501-358ddd17a82f") .addFormDataPart("r_sids[1][]","085fab12-2897-4a54-93fe-009288a4b933") .addFormDataPart("r_sids[1][]","791e37f2-47dd-44a8-8cdb-1166387fe11a") .addFormDataPart("r_sids[1][]","3c97d443-772c-40f8-8962-cdaf5097b35c") .addFormDataPart("r_sids[2][]","cd11ce0b-5a31-43c1-879a-425866585652") .addFormDataPart("r_sids[2][]","6f2ee392-e989-4069-811f-18924155de18") .addFormDataPart("r_sids[2][]","e3be2a96-831c-493b-bfa8-8c6ff1aec698") .addFormDataPart("r_sids[3][]","780470c6-b99c-4ab8-88e5-9155aeef354c") .addFormDataPart("r_sids[3][]","d30b414c-ba52-453e-84fa-46451e2cb768") .addFormDataPart("r_sids[3][]","1d94cf00-c1a8-44d4-9468-cdc9d5c60711") .addFormDataPart("r_sids[4][]","58b02ba2-936b-4a20-a090-1b859cdd82a4") .addFormDataPart("r_sids[4][]","240b6457-6037-4f98-ad63-51b011f3313a") .addFormDataPart("r_sids[4][]","faeab8e5-7dbc-4382-bcb3-9879b248315e") .addFormDataPart("r_sids[5][]","bffb79ac-e836-476b-b981-78cc752ec751") .addFormDataPart("r_sids[5][]","6c214d7b-b8df-43ef-8304-5b0443e1e34c") .addFormDataPart("r_sids[5][]","a72c9e60-cf73-4dc9-aa51-b2e98b41bb96") .addFormDataPart("r_sids[6][]","9d2d6eb3-ebca-4fa6-bf5b-6e01e85ba784") .addFormDataPart("r_sids[6][]","8fb74ca0-f1c2-4b43-b93a-d6f4a3f95ea9") .addFormDataPart("r_sids[6][]","67cd5c80-d475-4b3e-b544-d6bd825767a4") .addFormDataPart("r_sids[7][]","00e1a970-e889-42e0-a45c-79b506b826ac") .addFormDataPart("r_sids[7][]","ff180f3b-af4b-4f20-ac71-94a707c5ac79") .addFormDataPart("r_sids[7][]","fe06316e-6132-4be8-9dab-e0ac944a2030") .addFormDataPart("r_sids[8][]","3bea4bc8-23c0-4b9d-8eb1-b7e874c7c0fa") .addFormDataPart("r_sids[8][]","1fa76063-ec08-4907-ae54-0f78b57fec08") .addFormDataPart("r_sids[8][]","d9a3e3d7-3a9e-45ce-9066-d3ee644f2777") .addFormDataPart("r_sids[8][]","39db8e45-8ecd-4314-addd-bb9d3bfd5e22") .addFormDataPart("r_sids[8][]","8fb74ca0-f1c2-4b43-b93a-d6f4a3f95ea9") .addFormDataPart("r_sids[8][]","67cd5c80-d475-4b3e-b544-d6bd825767a4") .addFormDataPart("r_sids[8][]","35d19f51-df72-4ee7-afcb-1ac93471f273") .addFormDataPart("r_sids[9][]","28e31d35-068f-4674-b70e-c742f9881b27") .addFormDataPart("r_sids[9][]","753da141-1b30-488b-b9b2-eb65a8268a37") .addFormDataPart("r_sids[9][]","3ff41b7b-f0b6-4af7-bc3f-f4b3b48671ee") .addFormDataPart("r_sids[10][]","442f00ea-75b7-4fcb-8e39-52cbf4e76e15") .addFormDataPart("r_sids[10][]","39db8e45-8ecd-4314-addd-bb9d3bfd5e22") .addFormDataPart("r_sids[10][]","e3be2a96-831c-493b-bfa8-8c6ff1aec698") .addFormDataPart("r_sids[11][]","203567c0-bff7-449a-bbe1-21ea9b62567b") .addFormDataPart("r_sids[11][]","d9a3e3d7-3a9e-45ce-9066-d3ee644f2777") .addFormDataPart("r_sids[12][]","c3d506b0-8541-4086-ac72-b34e5155e1a4") .addFormDataPart("r_sids[12][]","35d19f51-df72-4ee7-afcb-1ac93471f273") .addFormDataPart("r_sids[12][]","6f2ee392-e989-4069-811f-18924155de18").build(); }else if(4 == type){ body = new MultipartBody.Builder().setType(MultipartBody.FORM) .addFormDataPart("rids[]","3bea4bc8-23c0-4b9d-8eb1-b7e874c7c0fa") .addFormDataPart("r_sids[0][]","2a38e028-db85-4afa-a682-a6f5e015e231") .addFormDataPart("r_sids[0][]","1fa76063-ec08-4907-ae54-0f78b57fec08") .addFormDataPart("r_sids[0][]","ca6bb16e-dc1b-403d-8501-358ddd17a82f") .addFormDataPart("r_sids[1][]","085fab12-2897-4a54-93fe-009288a4b933") .addFormDataPart("r_sids[1][]","791e37f2-47dd-44a8-8cdb-1166387fe11a") .addFormDataPart("r_sids[1][]","3c97d443-772c-40f8-8962-cdaf5097b35c") .addFormDataPart("r_sids[2][]","cd11ce0b-5a31-43c1-879a-425866585652") .addFormDataPart("r_sids[2][]","6f2ee392-e989-4069-811f-18924155de18") .addFormDataPart("r_sids[3][]","780470c6-b99c-4ab8-88e5-9155aeef354c") .addFormDataPart("r_sids[3][]","35d19f51-df72-4ee7-afcb-1ac93471f273") .addFormDataPart("r_sids[3][]","d30b414c-ba52-453e-84fa-46451e2cb768") .addFormDataPart("r_sids[4][]","58b02ba2-936b-4a20-a090-1b859cdd82a4") .addFormDataPart("r_sids[4][]","240b6457-6037-4f98-ad63-51b011f3313a") .addFormDataPart("r_sids[4][]","faeab8e5-7dbc-4382-bcb3-9879b248315e") .addFormDataPart("r_sids[5][]","bffb79ac-e836-476b-b981-78cc752ec751") .addFormDataPart("r_sids[5][]","6c214d7b-b8df-43ef-8304-5b0443e1e34c") .addFormDataPart("r_sids[5][]","a72c9e60-cf73-4dc9-aa51-b2e98b41bb96") .addFormDataPart("r_sids[6][]","9d2d6eb3-ebca-4fa6-bf5b-6e01e85ba784") .addFormDataPart("r_sids[6][]","8fb74ca0-f1c2-4b43-b93a-d6f4a3f95ea9") .addFormDataPart("r_sids[6][]","67cd5c80-d475-4b3e-b544-d6bd825767a4") .addFormDataPart("r_sids[7][]","00e1a970-e889-42e0-a45c-79b506b826ac") .addFormDataPart("r_sids[7][]","ff180f3b-af4b-4f20-ac71-94a707c5ac79") .addFormDataPart("r_sids[7][]","fe06316e-6132-4be8-9dab-e0ac944a2030") .addFormDataPart("r_sids[8][]","3bea4bc8-23c0-4b9d-8eb1-b7e874c7c0fa") .addFormDataPart("r_sids[8][]","1fa76063-ec08-4907-ae54-0f78b57fec08") .addFormDataPart("r_sids[8][]","d9a3e3d7-3a9e-45ce-9066-d3ee644f2777") .addFormDataPart("r_sids[8][]","39db8e45-8ecd-4314-addd-bb9d3bfd5e22") .addFormDataPart("r_sids[8][]","8fb74ca0-f1c2-4b43-b93a-d6f4a3f95ea9") .addFormDataPart("r_sids[8][]","67cd5c80-d475-4b3e-b544-d6bd825767a4") .addFormDataPart("r_sids[8][]","35d19f51-df72-4ee7-afcb-1ac93471f273") .addFormDataPart("r_sids[9][]","28e31d35-068f-4674-b70e-c742f9881b27") .addFormDataPart("r_sids[9][]","753da141-1b30-488b-b9b2-eb65a8268a37") .addFormDataPart("r_sids[9][]","3ff41b7b-f0b6-4af7-bc3f-f4b3b48671ee") .addFormDataPart("r_sids[10][]","442f00ea-75b7-4fcb-8e39-52cbf4e76e15") .addFormDataPart("r_sids[10][]","39db8e45-8ecd-4314-addd-bb9d3bfd5e22") .addFormDataPart("r_sids[10][]","e3be2a96-831c-493b-bfa8-8c6ff1aec698") .addFormDataPart("r_sids[11][]","203567c0-bff7-449a-bbe1-21ea9b62567b") .addFormDataPart("r_sids[11][]","d9a3e3d7-3a9e-45ce-9066-d3ee644f2777") .build(); } return body; } } screen-api/src/main/java/com/moral/api/service/impl/YcGenerateReportServiceImpl.java
New file @@ -0,0 +1,79 @@ package com.moral.api.service.impl; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; import com.moral.api.entity.FileTable; import com.moral.api.entity.YcGenerateReport; import com.moral.api.pojo.enums.FileTableEnum; import com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportExt; import com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportListExt; import com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportPageExt; import com.moral.api.mapper.YcGenerateReportMapper; import com.moral.api.pojo.query.ycgeneratereport.*; import com.moral.api.pojo.vo.file.FileVo; import com.moral.api.service.FileTableService; import com.moral.api.service.YcGenerateReportService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * <p> * 盐城报告表 服务实现类 * </p> * deyt template generate * @author JI * @since 2024-03-26 */ @Service public class YcGenerateReportServiceImpl extends ServiceImpl<YcGenerateReportMapper, YcGenerateReport> implements YcGenerateReportService { private final FileTableService fileTableService; public YcGenerateReportServiceImpl(FileTableService fileTableService) { this.fileTableService = fileTableService; } @Override public boolean removeByIdWithFill(Integer id) { return SqlHelper.retBool(this.baseMapper.deleteByIdWithFill(new YcGenerateReport().setId(id))); } @Override public YcGenerateReportExt extOne(Integer id) { return this.baseMapper.extOne(id); } @Override public List<YcGenerateReportListExt> extList(YcGenerateReportListCond ycGenerateReportListCond) { return this.baseMapper.extList(ycGenerateReportListCond); } @Override public Page<YcGenerateReportPageExt> extPage(YcGenerateReportPageCond ycGenerateReportPageCond) { Page<YcGenerateReportPageExt> pageExtPage = this.baseMapper.extPage(ycGenerateReportPageCond.getPage().convertPage(), ycGenerateReportPageCond); return pageExtPage; } @Override public boolean save(YcGenerateReportAddCond ycGenerateReportAddCond) { return this.save(ycGenerateReportAddCond.convert()); } @Override public boolean update(YcGenerateReportUpdateCond ycGenerateReportUpdateCond) { return this.updateById(ycGenerateReportUpdateCond.convert()); } @Override @Transactional public boolean fileUpload(YcGenerateReportUploadCond uploadCond) { fileTableService.upDateResult(uploadCond.getList(),uploadCond.getId(), FileTableEnum.YC_GENERATEEXCEL.value); return true; } } screen-api/src/main/resources/mapper/FileTableMapper.xml
@@ -17,4 +17,9 @@ <result column="create_time" property="createTime" /> </resultMap> <select id="fileList" resultType="com.moral.api.pojo.vo.file.FileVo"> select file_id,file_name,file_type from file_table where file_module = 1250301 and relation_id= #{relation_id} and is_del = 0 order by file_id desc </select> </mapper> screen-api/src/main/resources/mapper/YcGenerateReportMapper.xml
New file @@ -0,0 +1,77 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.moral.api.mapper.YcGenerateReportMapper"> <!-- 通用查询映射结果 deyt template generate --> <resultMap id="BaseResultMap" type="com.moral.api.entity.YcGenerateReport"> <id column="id" property="id" /> <result column="report_time" property="reportTime" /> <result column="report_content" property="reportContent" /> <result column="original_content" property="originalContent" /> <result column="invalid_reason" property="invalidReason" /> </resultMap> <!-- 通用查询映射结果 deyt template generate --> <resultMap id="BaseResultMyMap" type="com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportPageExt"> <id column="id" property="id" /> <result column="report_time" property="reportTime" /> <result column="report_content" property="reportContent" /> <result column="original_content" property="originalContent" /> <result column="is_del" property="isDel" /> <result column="is_invalid" property="isInvalid" /> <result column="invalid_reason" property="invalidReason" /> <result column="create_id" property="createId" /> <result column="create_name" property="createName" /> <result column="create_time" property="createTime" /> <result column="update_id" property="updateId" /> <result column="update_name" property="updateName" /> <result column="update_time" property="updateTime" /> <collection property="list" ofType="com.moral.api.pojo.vo.file.FileVo" select="com.moral.api.mapper.FileTableMapper.fileList" column="id"></collection> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, report_time, report_content, original_content, is_del, is_invalid, invalid_reason, create_id, create_name, create_time, update_id, update_name, update_time </sql> <!-- 通用查询结果列 --> <sql id="YcGenerateReport_Column_List"> ycgeneratereport.id, ycgeneratereport.report_time, ycgeneratereport.report_content, ycgeneratereport.original_content, ycgeneratereport.is_del, ycgeneratereport.is_invalid, ycgeneratereport.invalid_reason, ycgeneratereport.create_id, ycgeneratereport.create_name, ycgeneratereport.create_time, ycgeneratereport.update_id, ycgeneratereport.update_name, ycgeneratereport.update_time </sql> <select id="extOne" resultType="com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportExt"> SELECT <include refid="YcGenerateReport_Column_List"/> FROM yc_generate_report ycgeneratereport where ycgeneratereport.id = #{id} </select> <select id="extList" resultType="com.moral.api.pojo.ext.ycgeneratereport.YcGenerateReportListExt"> SELECT <include refid="YcGenerateReport_Column_List"/> FROM yc_generate_report ycgeneratereport <where> 1 = 1 <if test="ycgeneratereport.id != null and ycgeneratereport.id != 0"> and ycgeneratereport.id = #{ycgeneratereport.id} </if> </where> </select> <select id="extPage" resultMap="BaseResultMyMap"> SELECT <include refid="YcGenerateReport_Column_List"/> FROM yc_generate_report ycgeneratereport <where> 1 = 1 <if test="ycgeneratereport.startTime != null and ycgeneratereport.startTime != '' "> and date(ycgeneratereport.report_time) <![CDATA[>=]]> #{ycgeneratereport.startTime} </if> <if test="ycgeneratereport.endTime != null and ycgeneratereport.endTime !='' "> and date(ycgeneratereport.report_time) <![CDATA[<=]]> #{ycgeneratereport.endTime} </if> </where> order by ycgeneratereport.report_time desc </select> </mapper> screen-common/src/main/java/com/moral/util/DateUtils.java
@@ -1869,6 +1869,13 @@ String lastYear = getDateAddYear(DateUtils.dateToDateString(getDate(), DateUtils.yyyy), -1); return DateUtils.getDate(lastYear, DateUtils.yyyy); } //去年指定日期 public static Date getFirstDayOfLastYear(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.YEAR, -1); return calendar.getTime(); } //获取一天中每个小时的前后一小时集合 public static Map<Date, List<Integer>> getBeforeAndAfterHourDate(Date date) {