From 1e0b174c7431bf4f0ed219920c3947125fc62a1c Mon Sep 17 00:00:00 2001 From: xjm Date: Thu, 13 Jun 2024 15:11:45 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E8=AD=A6=E7=BB=9F=E8=AE=A1=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/whdc/controller/QXWarnController.java | 311 +++++++++++++----- .../java/com/whdc/mapper/QXWarningMapper.java | 2 + .../com/whdc/model/vo/QXWarnStatisticsVo.java | 21 ++ .../java/com/whdc/model/vo/TotalQueryVo.java | 102 ++++++ .../com/whdc/service/IQXWarningService.java | 1 + .../service/impl/QXWarningServiceImpl.java | 5 + src/main/java/com/whdc/utils/HttpUtil.java | 79 +++++ src/main/resources/mapper/QXWarningMapper.xml | 13 + 8 files changed, 445 insertions(+), 89 deletions(-) create mode 100644 src/main/java/com/whdc/model/vo/QXWarnStatisticsVo.java create mode 100644 src/main/java/com/whdc/model/vo/TotalQueryVo.java diff --git a/src/main/java/com/whdc/controller/QXWarnController.java b/src/main/java/com/whdc/controller/QXWarnController.java index 8fba5a0..e851ef6 100644 --- a/src/main/java/com/whdc/controller/QXWarnController.java +++ b/src/main/java/com/whdc/controller/QXWarnController.java @@ -15,6 +15,7 @@ import com.whdc.utils.HttpUtil; import com.whdc.utils.ResultJson; 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.apache.commons.compress.utils.Lists; @@ -23,10 +24,7 @@ import org.apache.http.HttpStatus; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.time.LocalDate; import java.time.LocalDateTime; @@ -61,9 +59,9 @@ public class QXWarnController { //根据warnid是否重复 if (CollectionUtils.isNotEmpty( service.lambdaQuery() - .eq(QXWarning::getWarnid,dto.getWarnid()).list() + .eq(QXWarning::getWarnid, dto.getWarnid()).list() ) - ){ + ) { return ResultJson.error("该名称或编码重复"); } @@ -101,7 +99,7 @@ public class QXWarnController { List data = json.getJSONArray("data").toJavaList(WarningData.class); List warningList = getList(data, publishUnit, warnSignalLevel, warnSignalType); //将warningList存起来 - for(int i=0;io.getStatus().equals("0")).collect(Collectors.toList()); + warningList = warningList.stream().filter(o -> o.getStatus().equals("0")).collect(Collectors.toList()); return ResultJson.ok(warningList); } @@ -135,15 +133,15 @@ public class QXWarnController { @RequestBody WarnDppleDto dto) { List warnDpples = new ArrayList<>(); String[] cnnms = dto.getCnnm().split(","); - for(int i=0;i dpples = addressBookOldService.getListByAdnm2(cnnm2); - System.out.println("dpple个数:"+dpples.size()); - for(AddressBookOld dpple:dpples){ + System.out.println("dpple个数:" + dpples.size()); + for (AddressBookOld dpple : dpples) { WarnDppleVO warndpple = new WarnDppleVO(); warndpple.setCtnm(dto.getCtnm()); warndpple.setCnnm(cnnm); @@ -152,7 +150,7 @@ public class QXWarnController { warndpple.setPhone(dpple.getPhone()); warnDpples.add(warndpple); } - }else{ + } else { log.info("当前行政区划不存在: " + dto.getCnnm()); } } @@ -170,10 +168,10 @@ public class QXWarnController { //根据warnid和phone判断是否重复 if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty( warnMsgFBService.lambdaQuery() - .eq(WarnMsgFB::getWarnid,dto.getWarnid()) - .eq(WarnMsgFB::getCalledPhone,String.valueOf(dto.getCalledPhone())).list() + .eq(WarnMsgFB::getWarnid, dto.getWarnid()) + .eq(WarnMsgFB::getCalledPhone, String.valueOf(dto.getCalledPhone())).list() ) - ){ + ) { return ResultJson.error("该名称或编码重复"); } @@ -206,12 +204,12 @@ public class QXWarnController { int hour = startCalendarDay.get(Calendar.HOUR_OF_DAY); int minute = startCalendarDay.get(Calendar.MINUTE); int second = startCalendarDay.get(Calendar.SECOND); - String nowTime = zerofill(year)+"-"+zerofill(month)+"-"+zerofill(day)+" "+ - zerofill(hour)+":"+zerofill(minute)+":"+zerofill(second); + String nowTime = zerofill(year) + "-" + zerofill(month) + "-" + zerofill(day) + " " + + zerofill(hour) + ":" + zerofill(minute) + ":" + zerofill(second); System.out.println(nowTime); //当前时间往前24小时——今日预警统计 - String dayStartTime = zerofill(year)+"-"+zerofill(month)+"-"+zerofill(day)+" "+ - "00"+":"+"00"+":"+"00"; + String dayStartTime = zerofill(year) + "-" + zerofill(month) + "-" + zerofill(day) + " " + + "00" + ":" + "00" + ":" + "00"; System.out.println(dayStartTime); ApiDto dayDto = new ApiDto(); @@ -236,13 +234,13 @@ public class QXWarnController { // System.out.println("日统计-:"+warnList.getSumCount()+"个"); // } dayWarnNum = getCount2(data); - System.out.println("日统计:"+dayWarnNum +"个"); + System.out.println("日统计:" + dayWarnNum + "个"); } //当前时间往前7天——本周预警统计 int day_of_week = startCalendarDay.get(Calendar.DAY_OF_WEEK); - int weekminus = day_of_week == 0?7: day_of_week - 1; + int weekminus = day_of_week == 0 ? 7 : day_of_week - 1; Calendar weekStartDay = Calendar.getInstance(); - weekStartDay.add(Calendar.DAY_OF_YEAR, (weekminus-1)*(-1)); + weekStartDay.add(Calendar.DAY_OF_YEAR, (weekminus - 1) * (-1)); String weekStartTime = CalendarDayStartToString(weekStartDay); System.out.println(weekStartTime); ApiDto weekDto = new ApiDto(); @@ -253,7 +251,7 @@ public class QXWarnController { weekDto.setFilter(filter); String weekstr = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(weekDto)); JSONObject weekjson = JSON.parseObject(weekstr); - System.out.println("weekstr:"+weekjson); + System.out.println("weekstr:" + weekjson); if (weekjson != null && weekjson.getInteger("code") == HttpStatus.SC_OK) { List data = weekjson.getJSONArray("data").toJavaList(WarningData.class); // return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType)); @@ -263,13 +261,13 @@ public class QXWarnController { // System.out.println("周统计-:"+warnList.getSumCount()+"个"); // } weekWarnNum = getCount2(data); - System.out.println("周统计:"+weekWarnNum +"个"); + System.out.println("周统计:" + weekWarnNum + "个"); } //当前时间往前30天——本月预警统计 int day_of_month = startCalendarDay.get(Calendar.DAY_OF_MONTH); Calendar monthStartDay = Calendar.getInstance(); - int monthdayminus = day_of_month-1; - monthStartDay.add(Calendar.DAY_OF_YEAR, monthdayminus*(-1)); + int monthdayminus = day_of_month - 1; + monthStartDay.add(Calendar.DAY_OF_YEAR, monthdayminus * (-1)); String monthStartTime = CalendarDayStartToString(monthStartDay); System.out.println(monthStartTime); ApiDto monthDto = new ApiDto(); @@ -280,7 +278,7 @@ public class QXWarnController { monthDto.setFilter(filter); String monthstr = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(monthDto)); JSONObject monthjson = JSON.parseObject(monthstr); - System.out.println("monthstr:"+monthjson); + System.out.println("monthstr:" + monthjson); if (monthjson != null && monthjson.getInteger("code") == HttpStatus.SC_OK) { List data = monthjson.getJSONArray("data").toJavaList(WarningData.class); // return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType)); @@ -290,13 +288,13 @@ public class QXWarnController { // System.out.println("月统计-:"+warnList.getSumCount()+"个"); // } monthWarnNum = getCount2(data); - System.out.println("月统计:"+monthWarnNum +"个"); + System.out.println("月统计:" + monthWarnNum + "个"); } //当前时间往前360天——全年预警数 int day_of_year = startCalendarDay.get(Calendar.DAY_OF_YEAR); Calendar yearStartDay = Calendar.getInstance(); int yeardayminus = day_of_year - 1; - yearStartDay.add(Calendar.DAY_OF_YEAR, yeardayminus*(-1)); + yearStartDay.add(Calendar.DAY_OF_YEAR, yeardayminus * (-1)); String yearStartTime = CalendarDayStartToString(yearStartDay); System.out.println(yearStartTime); ApiDto yearDto = new ApiDto(); @@ -307,7 +305,7 @@ public class QXWarnController { yearDto.setFilter(filter); String yearstr = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(yearDto)); JSONObject yearjson = JSON.parseObject(yearstr); - System.out.println("yearstr:"+yearjson); + System.out.println("yearstr:" + yearjson); if (yearjson != null && yearjson.getInteger("code") == HttpStatus.SC_OK) { List data = yearjson.getJSONArray("data").toJavaList(WarningData.class); //// return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType)); @@ -317,7 +315,7 @@ public class QXWarnController { // System.out.println("年统计-:"+warnList.getSumCount()+"个"); // } yearWarnNum = getCount2(data); - System.out.println("年统计:"+yearWarnNum +"个"); + System.out.println("年统计:" + yearWarnNum + "个"); } @@ -330,7 +328,6 @@ public class QXWarnController { // List qxWarningList = getLatestTen(data); - return ResultJson.ok(warnStatsVO); } @@ -366,19 +363,19 @@ public class QXWarnController { if (json != null && json.getInteger("code") == HttpStatus.SC_OK) { List data = json.getJSONArray("data").toJavaList(WarningData.class); int count = getCount2(data); - System.out.println("历史预警数量:"+data.size()); - System.out.println("历史预警数量2:"+count); + System.out.println("历史预警数量:" + data.size()); + System.out.println("历史预警数量2:" + count); historyWarnsVO.setCount(count); //查找最近10条数据,放到warnList属性上 List qxWarningList = null; //getLatestTen(data); - if(Objects.isNull(pageNumber)||Objects.isNull(pageSize)){ + if (Objects.isNull(pageNumber) || Objects.isNull(pageSize)) { System.out.println("pageNumber和pageSize有至少一个为null"); qxWarningList = getLatestTen(data); - }else{ + } else { System.out.println("pageNumber和pageSize全不为null"); - System.out.println("pageNumber:"+pageNumber); - System.out.println("pageSize:"+pageSize); + System.out.println("pageNumber:" + pageNumber); + System.out.println("pageSize:" + pageSize); qxWarningList = getPageWarning(data, pageNumber, pageSize); } historyWarnsVO.setWarnList(qxWarningList); @@ -400,7 +397,7 @@ public class QXWarnController { public ResultJson getFeedBackStats(@RequestBody GroupWarningDto dto) { String startTime = dto.getStartTime(); String endTime = dto.getEndTime(); - if(Objects.isNull(startTime)&&Objects.isNull(endTime)){ + if (Objects.isNull(startTime) && Objects.isNull(endTime)) { //当前时间 Calendar startCalendarDay = Calendar.getInstance(); int year = startCalendarDay.get(Calendar.YEAR); @@ -409,16 +406,16 @@ public class QXWarnController { int hour = startCalendarDay.get(Calendar.HOUR_OF_DAY); int minute = startCalendarDay.get(Calendar.MINUTE); int second = startCalendarDay.get(Calendar.SECOND); - String nowTime = zerofill(year)+"-"+zerofill(month)+"-"+zerofill(day)+" "+ - "08"+":"+"00"+":"+"00"; + String nowTime = zerofill(year) + "-" + zerofill(month) + "-" + zerofill(day) + " " + + "08" + ":" + "00" + ":" + "00"; System.out.println(nowTime); ArrayList filter = Lists.newArrayList(); FBStatsVO fbStatsVO = null; //当前时间往前7天——本周预警统计 int day_of_week = startCalendarDay.get(Calendar.DAY_OF_WEEK); - int weekminus = day_of_week == 0?7: day_of_week - 1; + int weekminus = day_of_week == 0 ? 7 : day_of_week - 1; Calendar weekStartDay = Calendar.getInstance(); - weekStartDay.add(Calendar.DAY_OF_YEAR, (weekminus-1)*(-1)); + weekStartDay.add(Calendar.DAY_OF_YEAR, (weekminus - 1) * (-1)); String weekStartTime = CalendarDayStartToString2(weekStartDay); // Calendar weekStartDay = Calendar.getInstance(); // weekStartDay.add(Calendar.DAY_OF_YEAR, 37*(-1)); @@ -432,7 +429,7 @@ public class QXWarnController { weekDto.setFilter(filter); String weekstr = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(weekDto)); JSONObject weekjson = JSON.parseObject(weekstr); - System.out.println("weekstr:"+weekjson); + System.out.println("weekstr:" + weekjson); if (weekjson != null && weekjson.getInteger("code") == HttpStatus.SC_OK) { List data = weekjson.getJSONArray("data").toJavaList(WarningData.class); // return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType)); @@ -447,7 +444,7 @@ public class QXWarnController { // System.out.println("周统计:"+weekWarnNum +"个"); return ResultJson.ok(fbStatsVO); } - }else{ + } else { ApiDto searchDto = new ApiDto(); ArrayList filter = Lists.newArrayList(); searchDto.setStartTime(startTime); @@ -457,7 +454,7 @@ public class QXWarnController { searchDto.setFilter(filter); String searchstr = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(searchDto)); JSONObject searchjson = JSON.parseObject(searchstr); - System.out.println("searchjson:"+searchjson); + System.out.println("searchjson:" + searchjson); FBStatsVO fbStatsVO = null; if (searchjson != null && searchjson.getInteger("code") == HttpStatus.SC_OK) { List data = searchjson.getJSONArray("data").toJavaList(WarningData.class); @@ -470,7 +467,7 @@ public class QXWarnController { return null; } - private FBStatsVO getCount3(List data){ + private FBStatsVO getCount3(List data) { int sum = 0; FBStatsVO fbStats = new FBStatsVO(); // Set cnCallList = new ArrayList<>(); @@ -495,11 +492,11 @@ public class QXWarnController { fbStats.setRedWarnSum(redList.size()); //查询叫应信息:根据warnid查询——暴雨橙色预警 //根据预警id,查找有没有呼叫过 - for(WarningData.Warning warning:orgList){ + for (WarningData.Warning warning : orgList) { List msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(warning.getId()));//查询msgfb String cn = warning.getEffectArea(); String[] cnList = cn.split(","); - for(int i=0;i(cnOrgCallList)); //查询叫应信息:根据warnid查询——暴雨红色预警 //根据预警id,查找有没有呼叫过 - for(WarningData.Warning warning:redList){ + for (WarningData.Warning warning : redList) { List msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(warning.getId()));//查询msgfb String cn = warning.getEffectArea(); String[] cnList = cn.split(","); - for(int i=0;i getPageWarning(List data, int pageNumber, int pageSize){ + private List getPageWarning(List data, int pageNumber, int pageSize) { List qxWarningVOS = new ArrayList<>(); // List warnList = Lists.newArrayList();//汇总 List warnList = Lists.newArrayList();//汇总 @@ -561,39 +558,39 @@ public class QXWarnController { } } List dataList2 = warnList.stream().sorted(Comparator.comparing(QXWarningVO::getPublishTime).reversed()).collect(Collectors.toList()); - dataList2 = dataList2.stream().filter(o -> "暴雨".equals(o.getWarnSignalType())||"雷雨大风".equals(o.getWarnSignalType())).collect(Collectors.toList()); - dataList2 = dataList2.stream().filter(o -> "红色".equals(o.getWarnSignalLevel())||"橙色".equals(o.getWarnSignalLevel())).collect(Collectors.toList()); - if(dataList2.size()>=(pageNumber-1)*pageSize&&dataList2.size()>=pageNumber*pageSize){ - for(int i=(pageNumber-1)*pageSize;i "暴雨".equals(o.getWarnSignalType()) || "雷雨大风".equals(o.getWarnSignalType())).collect(Collectors.toList()); + dataList2 = dataList2.stream().filter(o -> "红色".equals(o.getWarnSignalLevel()) || "橙色".equals(o.getWarnSignalLevel())).collect(Collectors.toList()); + if (dataList2.size() >= (pageNumber - 1) * pageSize && dataList2.size() >= pageNumber * pageSize) { + for (int i = (pageNumber - 1) * pageSize; i < pageNumber * pageSize; i++) { QXWarningVO qxWarningVO = dataList2.get(i); //根据预警id,查找有没有呼叫过 List msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(qxWarningVO.getWarnid()));//warning - if(msgfbList.size()>0){ + if (msgfbList.size() > 0) { qxWarningVO.setStatus("1"); - }else{ + } else { qxWarningVO.setStatus("0"); } qxWarningVOS.add(qxWarningVO); } - }else if(dataList2.size()>=(pageNumber-1)*pageSize&&dataList2.size()= (pageNumber - 1) * pageSize && dataList2.size() < pageNumber * pageSize) { + for (int i = (pageNumber - 1) * pageSize; i < dataList2.size(); i++) { QXWarningVO qxWarningVO = dataList2.get(i); //根据预警id,查找有没有呼叫过 List msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(qxWarningVO.getWarnid()));//warning - if(msgfbList.size()>0){ + if (msgfbList.size() > 0) { qxWarningVO.setStatus("1"); - }else{ + } else { qxWarningVO.setStatus("0"); } qxWarningVOS.add(qxWarningVO); } - }else{ + } else { } return qxWarningVOS; } - private List getLatestTen(List data){ + private List getLatestTen(List data) { List qxWarningVOS = new ArrayList<>(); // List warnList = Lists.newArrayList();//汇总 List warnList = Lists.newArrayList();//汇总 @@ -632,10 +629,10 @@ public class QXWarnController { } } List dataList2 = warnList.stream().sorted(Comparator.comparing(QXWarningVO::getPublishTime).reversed()).collect(Collectors.toList()); - dataList2 = dataList2.stream().filter(o -> "暴雨".equals(o.getWarnSignalType())||"雷雨大风".equals(o.getWarnSignalType())).collect(Collectors.toList()); - dataList2 = dataList2.stream().filter(o -> "红色".equals(o.getWarnSignalLevel())||"橙色".equals(o.getWarnSignalLevel())).collect(Collectors.toList()); - if(dataList2.size()>=10){ - for(int i=0;i<10;i++){ + dataList2 = dataList2.stream().filter(o -> "暴雨".equals(o.getWarnSignalType()) || "雷雨大风".equals(o.getWarnSignalType())).collect(Collectors.toList()); + dataList2 = dataList2.stream().filter(o -> "红色".equals(o.getWarnSignalLevel()) || "橙色".equals(o.getWarnSignalLevel())).collect(Collectors.toList()); + if (dataList2.size() >= 10) { + for (int i = 0; i < 10; i++) { // System.out.println("时间:"+dataList2.get(i).getPublishTime()); // QXWarningVO qxWarningVO = new QXWarningVO(); // qxWarningVO.setPublishTime(dataList2.get(i).getPublishTime()); @@ -643,15 +640,15 @@ public class QXWarnController { QXWarningVO qxWarningVO = dataList2.get(i); //根据预警id,查找有没有呼叫过 List msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(qxWarningVO.getWarnid()));//warning - if(msgfbList.size()>0){ + if (msgfbList.size() > 0) { qxWarningVO.setStatus("1"); - }else{ + } else { qxWarningVO.setStatus("0"); } // qxWarningVO.setStatus(); qxWarningVOS.add(qxWarningVO); } - }else{ + } else { qxWarningVOS = dataList2; } return qxWarningVOS; @@ -698,9 +695,9 @@ public class QXWarnController { String adnm = publishUnit.replace("气象台", ""); //根据预警id,查找有没有呼叫过 List msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(warning.getId()));//warning - if(msgfbList.size()>0){ + if (msgfbList.size() > 0) { vo.setStatus("1"); - }else{ + } else { vo.setStatus("0"); } // String adcd = adinfoService.getAdcdByAdnm2(adnm); @@ -714,8 +711,8 @@ public class QXWarnController { } } - respList = respList.stream().filter(o -> "暴雨".equals(o.getWarnSignalType())||"雷雨大风".equals(o.getWarnSignalType())).collect(Collectors.toList()); - respList = respList.stream().filter(o -> "红色".equals(o.getWarnSignalLevel())||"橙色".equals(o.getWarnSignalLevel())).collect(Collectors.toList()); + respList = respList.stream().filter(o -> "暴雨".equals(o.getWarnSignalType()) || "雷雨大风".equals(o.getWarnSignalType())).collect(Collectors.toList()); + respList = respList.stream().filter(o -> "红色".equals(o.getWarnSignalLevel()) || "橙色".equals(o.getWarnSignalLevel())).collect(Collectors.toList()); return respList.stream().sorted(Comparator.comparing(QXWarningVO::getPublishTime).reversed()) .collect(Collectors.toList()); } @@ -764,21 +761,24 @@ public class QXWarnController { return warnList; } - static String zerofill(int number){ - return String.valueOf(number).length()>1?String.valueOf(number):"0"+String.valueOf(number); + + static String zerofill(int number) { + return String.valueOf(number).length() > 1 ? String.valueOf(number) : "0" + String.valueOf(number); } - static String CalendarDayStartToString(Calendar calendarTime){ + + static String CalendarDayStartToString(Calendar calendarTime) { int year = calendarTime.get(Calendar.YEAR); int month = calendarTime.get(Calendar.MONTH) + 1; //第一个月从0开始,所以得到月份+1 int day = calendarTime.get(Calendar.DAY_OF_MONTH); int hour = calendarTime.get(Calendar.HOUR_OF_DAY); int minute = calendarTime.get(Calendar.MINUTE); int second = calendarTime.get(Calendar.SECOND); - return zerofill(year)+"-"+zerofill(month)+"-"+zerofill(day)+" "+ - "00"+":"+"00"+":"+"00"; + return zerofill(year) + "-" + zerofill(month) + "-" + zerofill(day) + " " + + "00" + ":" + "00" + ":" + "00"; } + //统计函数 - private int getCount2(List data){ + private int getCount2(List data) { int sum = 0; DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); List warnList = Lists.newArrayList();//汇总 @@ -791,18 +791,151 @@ public class QXWarnController { LocalDate date = LocalDate.parse(o.getPublishTime(), format); return date.isAfter(LocalDate.parse("2024-04-28 08:00:00", format)); }).collect(Collectors.toList()); - warnList = warnList.stream().filter(o -> "暴雨".equals(o.getWarnSignalType())||"雷雨大风".equals(o.getWarnSignalType())).collect(Collectors.toList()); - warnList = warnList.stream().filter(o -> "红色".equals(o.getWarnSignalLevel())||"橙色".equals(o.getWarnSignalLevel())).collect(Collectors.toList()); + warnList = warnList.stream().filter(o -> "暴雨".equals(o.getWarnSignalType()) || "雷雨大风".equals(o.getWarnSignalType())).collect(Collectors.toList()); + warnList = warnList.stream().filter(o -> "红色".equals(o.getWarnSignalLevel()) || "橙色".equals(o.getWarnSignalLevel())).collect(Collectors.toList()); return warnList.size(); } - static String CalendarDayStartToString2(Calendar calendarTime){ + + static String CalendarDayStartToString2(Calendar calendarTime) { int year = calendarTime.get(Calendar.YEAR); int month = calendarTime.get(Calendar.MONTH) + 1; //第一个月从0开始,所以得到月份+1 int day = calendarTime.get(Calendar.DAY_OF_MONTH); int hour = calendarTime.get(Calendar.HOUR_OF_DAY); int minute = calendarTime.get(Calendar.MINUTE); int second = calendarTime.get(Calendar.SECOND); - return zerofill(year)+"-"+zerofill(month)+"-"+zerofill(day)+" "+ - "00"+":"+"08"+":"+"00"; + return zerofill(year) + "-" + zerofill(month) + "-" + zerofill(day) + " " + + "00" + ":" + "08" + ":" + "00"; } -} + + /** + * https://shdata.cloudowr.cn/shwarn/msg/totalquery?stm=2024-06-01&etm=2024-06-12 + * + * @return + */ + @ApiOperation(value = "预警统计") + @GetMapping(value = "/statistics/{stm}/{etm}") + public ResultJson totalquery(@PathVariable("stm") @ApiParam(name = "stm", value = "开始时间, yyyy-MM-dd") String stmStr, + @PathVariable("etm") @ApiParam(name = "etm", value = "结束时间, yyyy-MM-dd") String etmStr) { + + + LocalDate stm = LocalDate.parse(stmStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + LocalDate etm = LocalDate.parse(etmStr, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + + QXWarnStatisticsVo vo = new QXWarnStatisticsVo(); + + String str = HttpUtil.getBySetCookie("https://shdata.cloudowr.cn/shwarn/msg/totalquery?stm=" + stm + "&etm=" + etm, + "userobj=%7B%22_id%22%3A%2260a7da8809d9cfa5622920a6%22%2C%22name%22%3A%22%E9%B2%A7%E7%9F%B3%E5%80%BC%E7%8F%AD%E4%B8%93%E7%94%A8%22%2C%22phone%22%3A%2218888888888%22%2C%22utype%22%3A0%2C%22dept%22%3A%22%E9%B2%A7%E7%9F%B3%22%2C%22tm%22%3A%222024-03-23T01%3A54%3A46.225Z%22%2C%22token%22%3A%226726a6d2e96b902d23381a19dcdc18cb%22%2C%22ctm%22%3A%222021-05-21T16%3A06%3A32.707Z%22%2C%22chkc%22%3Afalse%2C%22ywjk%22%3Afalse%2C%22yywh%22%3Afalse%7D; token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ3aXRoRXhwaXJlc0F0IjoxNzE4MzMzNTYzOTE3LCJleHAiOjE3MTgzMzM1NjMsInVzZXJuYW1lIjoiYWRtaW4ifQ.-leem8iPu0zzPuGtRTZ-Lp5m_mLBzX1UzJfLbDBSpjc"); + JSONObject json = JSON.parseObject(str); + if (json != null && json.getInteger("ok") == 1) { + TotalQueryVo data = json.getJSONObject("results").toJavaObject(TotalQueryVo.class); + StringBuilder warnStr = new StringBuilder(); + warnStr.append(stm.getYear()).append("年").append(stm.getMonthValue()).append("月").append(stm.getDayOfMonth()).append("日至") + .append(etm.getYear()).append("年").append(etm.getMonthValue()).append("月").append(etm.getDayOfMonth()).append("日,湖北省"); + + List yjtj = data.getYjtj(); + TotalQueryVo.Summary summary = data.getSummary(); + + + long sum = yjtj.stream().mapToLong(TotalQueryVo.Yjtj::getCount).sum(); + long wbSum = yjtj.stream().mapToLong(TotalQueryVo.Yjtj::getWbcount).sum(); + + List page = data.getPage(); + long yjrs = page.stream().mapToLong(TotalQueryVo.Page::getYjrs).sum(); + long rs = page.stream().mapToLong(TotalQueryVo.Page::getRs).sum(); + + long dxzs = page.stream().mapToLong(TotalQueryVo.Page::getYj).sum() + + page.stream().mapToLong(TotalQueryVo.Page::getZdy).sum() + + page.stream().mapToLong(TotalQueryVo.Page::getQt).sum() + + page.stream().mapToLong(TotalQueryVo.Page::getGb).sum(); + + List outlist = data.getSsdxtj().getOutlist(); + + long szdxls = outlist.stream().filter(o -> !"420000000000".equals(o.getAdcd())).mapToLong(TotalQueryVo.Outlist::getSum).sum(); + long szdxlsAll = outlist.stream().mapToLong(TotalQueryVo.Outlist::getSum).sum(); + + + TotalQueryVo.Syw syw = data.getSyw(); + TotalQueryVo.Sgxpt sgxpt = data.getSgxpt(); + + warnStr.append(yjtj.size()).append("个县共产生山洪预警").append(sum).append("次,") + .append("对外发布预警").append(wbSum).append("次,") + .append("共发送山洪预警短信").append(summary.getYj()).append("条,") + .append("涉及防汛责任人").append(yjrs).append("人次,") + .append("另发送防洪警示短信").append(dxzs - summary.getYj()).append("条,") + .append("涉及防汛责任人").append(rs - yjrs).append("人次;") + .append("市级平台共发送防洪警示短信").append(szdxls).append("条,") + .append("涉及防汛责任人").append(szdxls).append("人次;") + .append("省级平台共发送防洪警示、运维提示短信").append(syw.getSum() + sgxpt.getCNT() + szdxlsAll).append("条,") + .append("涉及防汛责任人").append(syw.getRs() + sgxpt.getRS() + szdxlsAll).append("人次。") +; + vo.setShWarnStr(warnStr.toString()); + } + + List list = service.getWarnAndMsg(stm.toString(), etm.toString()); + if (CollectionUtils.isNotEmpty(list)) { + StringBuilder warnStr = new StringBuilder(); + + warnStr.append(stm.getYear()).append("年").append(stm.getMonthValue()).append("月").append(stm.getDayOfMonth()).append("日至") + .append(etm.getYear()).append("年").append(etm.getMonthValue()).append("月").append(etm.getDayOfMonth()).append("日,"); + + Map> map = list.stream() + .collect(Collectors.groupingBy(QXWarning::getWarnSignalLevel)); + List orange = map.get("橙色"); + List red = map.get("红色"); + + if (CollectionUtils.isNotEmpty(orange) && CollectionUtils.isNotEmpty(red)) { + warnStr.append("我省共产生橙色气象预警").append(orange.size()).append("次,电话叫应"); + Map> orangeList = orange.stream().collect(Collectors.groupingBy(QXWarning::getCtnm, Collectors.toList())); + + orangeList.forEach((k, v) -> { + warnStr.append(getCnnmStr(v)); + }); + warnStr.setCharAt(warnStr.length() -1 , '。'); + + warnStr.append("红色气象预警").append(red.size()).append("次,电话叫应"); + Map> redList = red.stream().collect(Collectors.groupingBy(QXWarning::getCtnm, Collectors.toList())); + + redList.forEach((k, v) -> { + warnStr.append(getCnnmStr(v)); + }); + warnStr.setCharAt(warnStr.length() -1 , '。'); + + } else if (CollectionUtils.isNotEmpty(orange) && CollectionUtils.isEmpty(red)) { + warnStr.append("我省共产生橙色气象预警").append(orange.size()).append("次,电话叫应"); + Map> orangeList = orange.stream().collect(Collectors.groupingBy(QXWarning::getCtnm, Collectors.toList())); + + orangeList.forEach((k, v) -> { + warnStr.append(getCnnmStr(v)); + }); + warnStr.setCharAt(warnStr.length() -1 , '。'); + + } else if (CollectionUtils.isNotEmpty(red) && CollectionUtils.isEmpty(orange)) { + warnStr.append("我省共产生红色气象预警").append(red.size()).append("次,电话叫应"); + Map> redList = red.stream().collect(Collectors.groupingBy(QXWarning::getCtnm, Collectors.toList())); + + redList.forEach((k, v) -> { + warnStr.append(getCnnmStr(v)); + }); + } + + vo.setByWarnStr(warnStr.toString()); + } + + return ResultJson.ok(vo); + + } + + private StringBuilder getCnnmStr(List list) { + List lists = list.stream().map(QXWarning::getCnnm).distinct().collect(Collectors.toList()); + + HashSet cnnmSet = Sets.newHashSet(); + for (String str : lists) { + String[] split = str.split(","); + cnnmSet.addAll(Arrays.asList(split)); + } + StringBuilder builder = new StringBuilder(); + cnnmSet.forEach(s -> builder.append(s).append("、")); + + return builder; + } +} \ No newline at end of file diff --git a/src/main/java/com/whdc/mapper/QXWarningMapper.java b/src/main/java/com/whdc/mapper/QXWarningMapper.java index 02fbf1b..0dff75d 100644 --- a/src/main/java/com/whdc/mapper/QXWarningMapper.java +++ b/src/main/java/com/whdc/mapper/QXWarningMapper.java @@ -8,4 +8,6 @@ import java.util.List; public interface QXWarningMapper extends BaseMapper { List find(@Param("dto")QXWarning dto); + + List getWarnAndMsg(@Param("stm") String stm,@Param("etm") String etm); } diff --git a/src/main/java/com/whdc/model/vo/QXWarnStatisticsVo.java b/src/main/java/com/whdc/model/vo/QXWarnStatisticsVo.java new file mode 100644 index 0000000..dcda108 --- /dev/null +++ b/src/main/java/com/whdc/model/vo/QXWarnStatisticsVo.java @@ -0,0 +1,21 @@ +package com.whdc.model.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Description: + * Created by XuSan on 2024/6/13. + * + * @author XuSan + * @version 1.0 + */ +@Data +public class QXWarnStatisticsVo { + + @ApiModelProperty(value = "山洪预警叫应") + private String ShWarnStr; + + @ApiModelProperty(value = "暴雨预警叫应") + private String ByWarnStr; +} diff --git a/src/main/java/com/whdc/model/vo/TotalQueryVo.java b/src/main/java/com/whdc/model/vo/TotalQueryVo.java new file mode 100644 index 0000000..4a1c8ec --- /dev/null +++ b/src/main/java/com/whdc/model/vo/TotalQueryVo.java @@ -0,0 +1,102 @@ +package com.whdc.model.vo; + +import lombok.Data; + +import java.util.List; + +/** + * Description: + * Created by XuSan on 2024/6/13. + * + * @author XuSan + * @version 1.0 + */ +@Data +public class TotalQueryVo { + + private List page; + private Sgxpt sgxpt; + private Ssdxtj ssdxtj; + private Summary summary; + private Syw syw; + private List yjtj; + + @Data + public static class Syw { + + private Long rs; + private Long sum; + + } + + @Data + public static class Outlist { + + private String adcd; + private String adnm; + private Long sum; + + } + + + @Data + public static class Summary { + + private Long gb; + private Long qt; + private Long rs; + private Long wbcount; + private Long yj; + private Long zdy; + private Long zs; + + } + + @Data + public static class Sgxpt { + + private Long cNT; + private Long rS; + + } + + @Data + public static class Page { + + private _id _id; + private Long gb; + private Long qt; + private Long rs; + private Long wbcount; + private Long yj; + private Long yjrs; + private Long zdy; + + } + + @Data + public static class _id { + + private String adcd; + private String adnm; + + } + @Data + public static class Ssdxtj { + + private Long allcnt; + private List outlist; + + } + + @Data + public static class Yjtj { + + private _id _id; + private Long count; + private Long sdcount; + private Long wbcount; + + } +} + diff --git a/src/main/java/com/whdc/service/IQXWarningService.java b/src/main/java/com/whdc/service/IQXWarningService.java index bed2891..3a3d753 100644 --- a/src/main/java/com/whdc/service/IQXWarningService.java +++ b/src/main/java/com/whdc/service/IQXWarningService.java @@ -7,4 +7,5 @@ import java.util.List; public interface IQXWarningService extends IService { List find(QXWarning dto); + List getWarnAndMsg(String stm,String etm); } \ No newline at end of file diff --git a/src/main/java/com/whdc/service/impl/QXWarningServiceImpl.java b/src/main/java/com/whdc/service/impl/QXWarningServiceImpl.java index fd98bed..f998e4c 100644 --- a/src/main/java/com/whdc/service/impl/QXWarningServiceImpl.java +++ b/src/main/java/com/whdc/service/impl/QXWarningServiceImpl.java @@ -16,4 +16,9 @@ public class QXWarningServiceImpl extends ServiceImpl find(QXWarning dto) { return null; } + + @Override + public List getWarnAndMsg(String stm, String etm) { + return getBaseMapper().getWarnAndMsg(stm,etm); + } } diff --git a/src/main/java/com/whdc/utils/HttpUtil.java b/src/main/java/com/whdc/utils/HttpUtil.java index e81ae13..1999b24 100644 --- a/src/main/java/com/whdc/utils/HttpUtil.java +++ b/src/main/java/com/whdc/utils/HttpUtil.java @@ -136,6 +136,85 @@ public class HttpUtil { } + public static String getBySetCookie(String _url,String cookie) { + InputStream is = null; + BufferedReader br = null; + HttpURLConnection conn = null; + String jstr = null; + try { + + log.info("请求地址: " + _url); + + URL url = new URL(_url); + conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + + if (StringUtils.isNotBlank(cookie)){ + // 设置cookie + conn.setRequestProperty("Cookie", cookie); + } + + conn.setConnectTimeout(5000); + conn.setReadTimeout(5000); + conn.connect(); + if (conn.getResponseCode() == 200) { + is = conn.getInputStream(); + if (is != null) { + br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); + StringBuffer sb = new StringBuffer(); + String tmp = ""; + while ((tmp = br.readLine()) != null) { + sb.append(tmp); + } + jstr = sb.toString(); + + log.info("响应参数: " + jstr); + + jstr = jsonFormat(jstr); + + + return jstr; + } + } else if (conn.getResponseCode() == 500) { + is = conn.getErrorStream(); + if (is != null) { + br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); + StringBuffer sb = new StringBuffer(); + String tmp = ""; + while ((tmp = br.readLine()) != null) { + sb.append(tmp); + } + jstr = sb.toString(); + if (jstr.contains("Token失效,请重新登录")) { // 第三方token失效处理 + return "{\"code\": 301,\"extMessage\":\"Token失效,请重新登录\"}"; + } + } + } + } catch (Exception ignore) { + } finally { + if (br != null) { + try { + br.close(); + } catch (IOException ignore) { + } + } + if (is != null) { + try { + is.close(); + } catch (IOException ignore) { + } + } + if (conn != null) { + try { + conn.disconnect(); + } catch (Exception ignore) { + } + } + } + return null; + } + + public static String get(String _url, String authorization) { InputStream is = null; BufferedReader br = null; diff --git a/src/main/resources/mapper/QXWarningMapper.xml b/src/main/resources/mapper/QXWarningMapper.xml index 911b881..2b65189 100644 --- a/src/main/resources/mapper/QXWarningMapper.xml +++ b/src/main/resources/mapper/QXWarningMapper.xml @@ -4,4 +4,17 @@ + \ No newline at end of file