From 5b151edd036879a501451d5cc109576879c7da0b Mon Sep 17 00:00:00 2001 From: ForwithyNew <2008nmj@sina.com> Date: Wed, 5 Jun 2024 18:00:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B9=96=E5=8C=97=E9=98=B2=E6=B1=9B=E6=8A=97?= =?UTF-8?q?=E6=97=B1=E8=B0=83=E5=BA=A6=E7=B3=BB=E7=BB=9F=EF=BC=9A=E9=A2=84?= =?UTF-8?q?=E8=AD=A6=E4=BF=A1=E6=81=AF=E5=92=8C=E5=8F=AB=E5=BA=94=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=8E=A5=E5=8F=A3=E5=AE=8C=E6=88=90=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/whdc/controller/QXWarnController.java | 602 ++++++++++++++++++ .../java/com/whdc/mapper/AdinfoMapper.java | 2 + .../java/com/whdc/mapper/WarnMsgFBMapper.java | 15 + .../java/com/whdc/model/dto/WarnDppleDto.java | 51 ++ .../java/com/whdc/model/entity/WarnMsgFB.java | 54 ++ .../java/com/whdc/model/vo/QXWarningVO.java | 46 ++ .../java/com/whdc/model/vo/WarnDppleVO.java | 28 + .../java/com/whdc/model/vo/WarnStatsVO.java | 36 ++ .../java/com/whdc/service/IAdinfoService.java | 2 + .../com/whdc/service/IWarnMsgFBService.java | 11 + .../whdc/service/impl/AdinfoServiceImpl.java | 13 + .../service/impl/WarnMsgFBServiceImpl.java | 20 + src/main/resources/application.yml | 20 +- src/main/resources/mapper/AdinfoMapper.xml | 6 +- src/main/resources/mapper/WarnMsgFBMapper.xml | 17 + 15 files changed, 912 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/whdc/controller/QXWarnController.java create mode 100644 src/main/java/com/whdc/mapper/WarnMsgFBMapper.java create mode 100644 src/main/java/com/whdc/model/dto/WarnDppleDto.java create mode 100644 src/main/java/com/whdc/model/entity/WarnMsgFB.java create mode 100644 src/main/java/com/whdc/model/vo/QXWarningVO.java create mode 100644 src/main/java/com/whdc/model/vo/WarnDppleVO.java create mode 100644 src/main/java/com/whdc/model/vo/WarnStatsVO.java create mode 100644 src/main/java/com/whdc/service/IWarnMsgFBService.java create mode 100644 src/main/java/com/whdc/service/impl/WarnMsgFBServiceImpl.java create mode 100644 src/main/resources/mapper/WarnMsgFBMapper.xml diff --git a/src/main/java/com/whdc/controller/QXWarnController.java b/src/main/java/com/whdc/controller/QXWarnController.java new file mode 100644 index 0000000..8f7302f --- /dev/null +++ b/src/main/java/com/whdc/controller/QXWarnController.java @@ -0,0 +1,602 @@ +package com.whdc.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Sets; +import com.whdc.model.dto.ApiDto; +import com.whdc.model.dto.GroupWarningDto; +import com.whdc.model.dto.WarnDppleDto; +import com.whdc.model.entity.AddressBook; +import com.whdc.model.entity.WarnMsgFB; +import com.whdc.model.vo.*; +import com.whdc.service.IAddressBookService; +import com.whdc.service.IAdinfoService; +import com.whdc.service.IWarnMsgFBService; +import com.whdc.utils.HttpUtil; +import com.whdc.utils.ResultJson; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.compress.utils.Lists; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.HttpStatus; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.Cacheable; +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 java.util.*; +import java.util.stream.Collectors; + +import static com.whdc.controller.WarningController.THIS_REDIS_KEY; + +//湖北省防汛抗旱调度系统-气象预警 +@Slf4j +@Api(tags = "预警 - Controller") +@RestController +@RequestMapping("/qxwarning") +public class QXWarnController { + @Autowired + private IAddressBookService addressBookService; + + @Autowired + private IAdinfoService adinfoService; + + @Autowired + private IWarnMsgFBService warnMsgFBService; + + /** + * 气象预警-正在生效的预警信息 + * + * @param dto + * @return + */ + @ApiOperation(value = "气象预警-正在生效的预警信息") + @PostMapping("/getGroupWarning") + @Cacheable(value = THIS_REDIS_KEY, key = "#root.method.name+':'+#dto.toString()") + public ResultJson> getGroupWarning( + @RequestBody GroupWarningDto dto) { + + ApiDto apiDto = new ApiDto(); +// apiDto.setStartTime(dto.getStartTime());//!!!!!!需要注释掉!!!!!! +// apiDto.setEndTime(dto.getEndTime());//!!!!!!需要注释掉!!!!!! + apiDto.setPageNumber(dto.getPageNumber()); + apiDto.setPageSize(dto.getPageSize()); + ArrayList filter = Lists.newArrayList(); + String publishUnit = dto.getPublishUnit(); + String warnSignalLevel = dto.getWarnSignalLevel(); + String warnSignalType = dto.getWarnSignalType(); + apiDto.setFilter(filter); + System.out.println(apiDto); + String str = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(apiDto)); +// String str = HttpUtil.sendPost("http://127.0.0.1:20000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(apiDto)); + JSONObject json = JSON.parseObject(str); + if (json != null && json.getInteger("code") == HttpStatus.SC_OK) { + List data = json.getJSONArray("data").toJavaList(WarningData.class); + return ResultJson.ok(getList(data, publishUnit, warnSignalLevel, warnSignalType)); + } + + return ResultJson.ok(json); + } + + /** + * 获取联系人 + */ + @ApiOperation(value = "获取预警信息的防御责任人") + @PostMapping("/getDpple") + @Cacheable(value = THIS_REDIS_KEY, key = "#root.method.name+':'+#dto.toString()") + public ResultJson> getDpple( + @RequestBody WarnDppleDto dto) { + List warnDpples = new ArrayList<>(); + String[] cnnms = dto.getCnnm().split(","); + for(int i=0;i dpples = addressBookService.getListByAdnm(adcd); + System.out.println("dpple个数:"+dpples.size()); + for(AddressBook dpple:dpples){ + WarnDppleVO warndpple = new WarnDppleVO(); + warndpple.setCtnm(dto.getCtnm()); + warndpple.setCnnm(cnnm); + warndpple.setName(dpple.getName()); + warndpple.setPosition(dpple.getPosition()); + warndpple.setPhone(dpple.getPhone()); + warnDpples.add(warndpple); + } + }else{ + log.info("当前行政区划不存在: " + dto.getCnnm()); + } + } + return ResultJson.ok(warnDpples); + } + + /** + * 历史气象预警统计 + * + * @param dto + * @return + */ + @ApiOperation(value = "历史气象预警统计") + @PostMapping("/getHistoryStats") + @Cacheable(value = THIS_REDIS_KEY, key = "#root.method.name+':'+#dto.toString()") + public ResultJson getHistoryStats(@RequestBody GroupWarningDto dto) { + WarnStatsVO warnStatsVO = new WarnStatsVO(); + int dayWarnNum = 0;//日预警个数 + int weekWarnNum = 0;//周预警个数 + int monthWarnNum = 0;//月预警个数 + int yearWarnNum = 0;//年预警个数 + List warnList = new ArrayList<>(); + + //当前时间 + Calendar startCalendarDay = Calendar.getInstance(); + int year = startCalendarDay.get(Calendar.YEAR); + int month = startCalendarDay.get(Calendar.MONTH) + 1; //第一个月从0开始,所以得到月份+1 + int day = startCalendarDay.get(Calendar.DAY_OF_MONTH); + 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); + System.out.println(nowTime); + //当前时间往前24小时——今日预警统计 + String dayStartTime = zerofill(year)+"-"+zerofill(month)+"-"+zerofill(day)+" "+ + "00"+":"+"00"+":"+"00"; + System.out.println(dayStartTime); + + ApiDto dayDto = new ApiDto(); + dayDto.setStartTime(dayStartTime); + dayDto.setEndTime(nowTime); + dayDto.setPageNumber(dto.getPageNumber()); + dayDto.setPageSize(99999); + ArrayList filter = Lists.newArrayList(); + String publishUnit = dto.getPublishUnit(); + String warnSignalLevel = dto.getWarnSignalLevel(); + String warnSignalType = dto.getWarnSignalType(); + dayDto.setFilter(filter); + String daystr = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(dayDto)); +// String str = HttpUtil.sendPost("http://127.0.0.1:20000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(apiDto)); + JSONObject dayjson = JSON.parseObject(daystr); + if (dayjson != null && dayjson.getInteger("code") == HttpStatus.SC_OK) { + List data = dayjson.getJSONArray("data").toJavaList(WarningData.class); +// return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType)); +// List listWarnStats = getCount(data, publishUnit, warnSignalLevel, warnSignalType); +// System.out.println("日统计:"+listWarnStats.size()); +// for(WarningHistoryListVo warnList:listWarnStats){ +// System.out.println("日统计-:"+warnList.getSumCount()+"个"); +// } + dayWarnNum = getCount2(data); + 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; + Calendar weekStartDay = Calendar.getInstance(); + weekStartDay.add(Calendar.DAY_OF_YEAR, (weekminus-1)*(-1)); + String weekStartTime = CalendarDayStartToString(weekStartDay); + System.out.println(weekStartTime); + ApiDto weekDto = new ApiDto(); + weekDto.setStartTime(weekStartTime); + weekDto.setEndTime(nowTime); + weekDto.setPageNumber(dto.getPageNumber()); + weekDto.setPageSize(99999); + 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); + 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)); +// List listWarnStats = getCount(data, publishUnit, warnSignalLevel, warnSignalType); +// System.out.println("周统计:"+listWarnStats.size()); +// for(WarningHistoryListVo warnList:listWarnStats){ +// System.out.println("周统计-:"+warnList.getSumCount()+"个"); +// } + weekWarnNum = getCount2(data); + 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)); + String monthStartTime = CalendarDayStartToString(monthStartDay); + System.out.println(monthStartTime); + ApiDto monthDto = new ApiDto(); + monthDto.setStartTime(monthStartTime); + monthDto.setEndTime(nowTime); + monthDto.setPageNumber(dto.getPageNumber()); + monthDto.setPageSize(99999); + 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); + 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)); +// List listWarnStats = getCount(data, publishUnit, warnSignalLevel, warnSignalType); +// System.out.println("月统计:"+listWarnStats.size()); +// for(WarningHistoryListVo warnList:listWarnStats){ +// System.out.println("月统计-:"+warnList.getSumCount()+"个"); +// } + monthWarnNum = getCount2(data); + 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)); + String yearStartTime = CalendarDayStartToString(yearStartDay); + System.out.println(yearStartTime); + ApiDto yearDto = new ApiDto(); + yearDto.setStartTime(yearStartTime); + yearDto.setEndTime(nowTime); + yearDto.setPageNumber(dto.getPageNumber()); + yearDto.setPageSize(99999); + 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); + 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)); +// List listWarnStats = getCount(data, publishUnit, warnSignalLevel, warnSignalType); +// System.out.println("年统计:"+listWarnStats.size()); +// for(WarningHistoryListVo warnList:listWarnStats){ +// System.out.println("年统计-:"+warnList.getSumCount()+"个"); +// } + yearWarnNum = getCount2(data); + System.out.println("年统计:"+yearWarnNum +"个"); + + + } + warnStatsVO.setDayWarnNum(dayWarnNum); + warnStatsVO.setWeekWarnNum(weekWarnNum); + warnStatsVO.setMonthWarnNum(monthWarnNum); + warnStatsVO.setYearWarnNum(yearWarnNum); + + //查找最近10条数据,放到warnList属性上 +// List qxWarningList = getLatestTen(data); + + + + return ResultJson.ok(warnStatsVO); + } + + /** + * 历史气象预警统计 + * + * @param dto + * @return + */ + @ApiOperation(value = "历史气象预警统计") + @PostMapping("/getHistoryWarning") + @Cacheable(value = THIS_REDIS_KEY, key = "#root.method.name+':'+#dto.toString()") + public ResultJson getHistoryGroupWarning(@RequestBody GroupWarningDto dto) { + List warnList = new ArrayList<>(); + + ApiDto apiDto = new ApiDto(); +// apiDto.setStartTime(dto.getStartTime());//一年的起始时间 +// apiDto.setEndTime(dto.getEndTime());//当前时间 + apiDto.setPageNumber(dto.getPageNumber());//第几页 + apiDto.setPageSize(dto.getPageSize());//一页10个 + ArrayList filter = Lists.newArrayList(); + + int pageNumber = dto.getPageNumber(); + int pageSize = dto.getPageSize(); + + //当前时间 + Calendar startCalendarDay = Calendar.getInstance(); + int year = startCalendarDay.get(Calendar.YEAR); + int month = startCalendarDay.get(Calendar.MONTH) + 1; //第一个月从0开始,所以得到月份+1 + int day = startCalendarDay.get(Calendar.DAY_OF_MONTH); + 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); + System.out.println(nowTime); + apiDto.setEndTime(nowTime);//当前时间 + + 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)); + String yearStartTime = CalendarDayStartToString(yearStartDay); + System.out.println(yearStartTime); + apiDto.setStartTime(yearStartTime);//一年的起始时间 + + String publishUnit = dto.getPublishUnit(); + String warnSignalLevel = dto.getWarnSignalLevel(); + String warnSignalType = dto.getWarnSignalType(); + apiDto.setFilter(filter); + String str = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(apiDto)); +// String str = HttpUtil.sendPost("http://127.0.0.1:20000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(apiDto)); + JSONObject json = JSON.parseObject(str); + 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); + //查找最近10条数据,放到warnList属性上 + List qxWarningList = null; + //getLatestTen(data); + if(Objects.isNull(pageNumber)||Objects.isNull(pageSize)){ + System.out.println("pageNumber和pageSize有至少一个为null"); + qxWarningList = getLatestTen(data); + }else{ + System.out.println("pageNumber和pageSize全不为null"); + System.out.println("pageNumber:"+pageNumber); + System.out.println("pageSize:"+pageSize); + qxWarningList = getPageWarning(data, pageNumber, pageSize); + } + return ResultJson.ok(qxWarningList); + } + + return ResultJson.ok(""); + } + + private List getPageWarning(List data, int pageNumber, int pageSize){ + List qxWarningVOS = new ArrayList<>(); +// List warnList = Lists.newArrayList();//汇总 + List warnList = Lists.newArrayList();//汇总 + for (WarningData datum : data) { + String ctnm = datum.getEffectArea();//市级范围 + + for (WarningData.TypeList typeList : datum.getTypeList()) {//里面的 + // 预警类型 + String type = typeList.getType(); + List warnListOrigin = typeList.getWarnList(); +// warnList = warnListFilter(warnList, reqPublishUnit, reqWarnSignalLevel, reqWarnSignalType); + for (WarningData.Warning warning : warnListOrigin) { + String cnnm = warning.getEffectArea(); + QXWarningVO vo = new QXWarningVO(); + String publishUnit = warning.getPublishUnit(); +// vo.setTitle(publishUnit + "发布" + type + "预警"); + vo.setCtnm(ctnm);//市级名称 + vo.setCnnm(cnnm);//县级名称 + vo.setPublishUnit(publishUnit);//发布单位 + vo.setPublishTime(warning.getPublishTime());//预警发布时间 + vo.setWarnSignalType(warning.getWarnSignalType());//预警类型 + vo.setWarnSignalLevel(warning.getWarnSignalLevel());//预警级别 + vo.setContent(warning.getContent());//预警内容 + vo.setWarnid(warning.getId()); +// vo.setAdnm(publishUnit.replace("气象台", "")); + String adnm = publishUnit.replace("气象台", ""); + +// String adcd = adinfoService.getAdcdByAdnm2(adnm); +// if (StringUtils.isNotBlank(adcd)){ +//// vo.setAddressBooks(addressBookService.getListByAdnm(adcd)); +// }else{ +// log.info("当前行政区划不存在: " + adnm); +// } + warnList.add(vo); + } + } + } + List dataList2 = warnList.stream().sorted(Comparator.comparing(QXWarningVO::getPublishTime).reversed()).collect(Collectors.toList()); + if(dataList2.size()>=(pageNumber-1)*pageSize&&dataList2.size()>=pageNumber*pageSize){ + for(int i=(pageNumber-1)*pageSize;i msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(qxWarningVO.getWarnid()));//warning + if(msgfbList.size()>0){ + qxWarningVO.setStatus("1"); + }else{ + qxWarningVO.setStatus("0"); + } + qxWarningVOS.add(qxWarningVO); + } + }else if(dataList2.size()>=(pageNumber-1)*pageSize&&dataList2.size() msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(qxWarningVO.getWarnid()));//warning + if(msgfbList.size()>0){ + qxWarningVO.setStatus("1"); + }else{ + qxWarningVO.setStatus("0"); + } + qxWarningVOS.add(qxWarningVO); + } + }else{ + + } + return qxWarningVOS; + } + + private List getLatestTen(List data){ + List qxWarningVOS = new ArrayList<>(); +// List warnList = Lists.newArrayList();//汇总 + List warnList = Lists.newArrayList();//汇总 + for (WarningData datum : data) { + String ctnm = datum.getEffectArea();//市级范围 + + for (WarningData.TypeList typeList : datum.getTypeList()) {//里面的 + // 预警类型 + String type = typeList.getType(); + List warnListOrigin = typeList.getWarnList(); +// warnList = warnListFilter(warnList, reqPublishUnit, reqWarnSignalLevel, reqWarnSignalType); + for (WarningData.Warning warning : warnListOrigin) { + String cnnm = warning.getEffectArea(); + QXWarningVO vo = new QXWarningVO(); + String publishUnit = warning.getPublishUnit(); +// vo.setTitle(publishUnit + "发布" + type + "预警"); + vo.setCtnm(ctnm);//市级名称 + vo.setCnnm(cnnm);//县级名称 + vo.setPublishUnit(publishUnit);//发布单位 + vo.setPublishTime(warning.getPublishTime());//预警发布时间 + vo.setWarnSignalType(warning.getWarnSignalType());//预警类型 + vo.setWarnSignalLevel(warning.getWarnSignalLevel());//预警级别 + vo.setContent(warning.getContent());//预警内容 + vo.setWarnid(warning.getId()); +// vo.setAdnm(publishUnit.replace("气象台", "")); + String adnm = publishUnit.replace("气象台", ""); + +// String adcd = adinfoService.getAdcdByAdnm2(adnm); +// if (StringUtils.isNotBlank(adcd)){ +//// vo.setAddressBooks(addressBookService.getListByAdnm(adcd)); +// }else{ +// log.info("当前行政区划不存在: " + adnm); +// } + warnList.add(vo); + } + } + } + List dataList2 = warnList.stream().sorted(Comparator.comparing(QXWarningVO::getPublishTime).reversed()).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()); +// qxWarningVOS.add(qxWarningVO); + QXWarningVO qxWarningVO = dataList2.get(i); + //根据预警id,查找有没有呼叫过 + List msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(qxWarningVO.getWarnid()));//warning + if(msgfbList.size()>0){ + qxWarningVO.setStatus("1"); + }else{ + qxWarningVO.setStatus("0"); + } +// qxWarningVO.setStatus(); + qxWarningVOS.add(qxWarningVO); + } + }else{ + qxWarningVOS = dataList2; + } + return qxWarningVOS; +// respList.stream().sorted(Comparator.comparing(WarningListVo::getPublishTime).reversed()).collect(Collectors.toList()) + } + + /** + * 正在生效预警 + * + * @param data + * @return + */ + private List getList(List data, + String reqPublishUnit, + String reqWarnSignalLevel, + String reqWarnSignalType) { + + List respList = Lists.newArrayList(); + for (WarningData datum : data) {//最外层的列表 + String ctnm = datum.getEffectArea();//市级范围 + for (WarningData.TypeList typeList : datum.getTypeList()) {//里面的 + // 预警类型 + String type = typeList.getType(); + List warnList = typeList.getWarnList(); + + warnList = warnListFilter(warnList, reqPublishUnit, reqWarnSignalLevel, reqWarnSignalType); + for (WarningData.Warning warning : warnList) { + String cnnm = warning.getEffectArea(); + QXWarningVO vo = new QXWarningVO(); + String publishUnit = warning.getPublishUnit(); +// vo.setTitle(publishUnit + "发布" + type + "预警"); + vo.setCtnm(ctnm);//市级名称 + vo.setCnnm(cnnm);//县级名称 + vo.setPublishUnit(publishUnit);//发布单位 + vo.setPublishTime(warning.getPublishTime());//预警发布时间 + vo.setWarnSignalType(warning.getWarnSignalType());//预警类型 + vo.setWarnSignalLevel(warning.getWarnSignalLevel());//预警级别 + vo.setContent(warning.getContent());//预警内容 + vo.setWarnid(warning.getId()); +// vo.setAdnm(publishUnit.replace("气象台", "")); + String adnm = publishUnit.replace("气象台", ""); + //根据预警id,查找有没有呼叫过 + List msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(warning.getId()));//warning + if(msgfbList.size()>0){ + vo.setStatus("1"); + }else{ + vo.setStatus("0"); + } +// String adcd = adinfoService.getAdcdByAdnm2(adnm); +// if (StringUtils.isNotBlank(adcd)){ +//// vo.setAddressBooks(addressBookService.getListByAdnm(adcd)); +// }else{ +// log.info("当前行政区划不存在: " + adnm); +// } + respList.add(vo); + } + } + } + + + return respList.stream().sorted(Comparator.comparing(QXWarningVO::getPublishTime).reversed()) + .collect(Collectors.toList()); + } + + /** + * 正在生效预警 + * + * @return + */ + private List warnListFilter(List warnList, + String publishUnit, + String warnSignalLevel, + String warnSignalType + ) { + if (StringUtils.isNotBlank(publishUnit)) { + HashSet set = Sets.newHashSet(publishUnit.split(",")); + if (CollectionUtils.isNotEmpty(set)) { + warnList = warnList.stream() + .filter(w -> + set.contains(w.getPublishUnit().split("气象")[0]) + ).collect(Collectors.toList()); + } + } + + + if (StringUtils.isNotBlank(warnSignalLevel)) { + HashSet set = Sets.newHashSet(warnSignalLevel.split(",")); + if (CollectionUtils.isNotEmpty(set)) { + warnList = warnList.stream() + .filter(w -> + set.contains(w.getWarnSignalLevel()) + ).collect(Collectors.toList()); + } + } + + + if (StringUtils.isNotBlank(warnSignalType)) { + HashSet set = Sets.newHashSet(warnSignalType.split(",")); + if (CollectionUtils.isNotEmpty(set)) { + warnList = warnList.stream() + .filter(w -> + set.contains(w.getWarnSignalType()) + ).collect(Collectors.toList()); + } + } + + return warnList; + } + static String zerofill(int number){ + return String.valueOf(number).length()>1?String.valueOf(number):"0"+String.valueOf(number); + } + 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"; + } + private int getCount2(List data){ + int sum = 0; + List warnList = Lists.newArrayList();//汇总 + for (WarningData datum : data) { + for (WarningData.TypeList typeList : datum.getTypeList()) { + warnList.addAll(typeList.getWarnList()); + } + } + return warnList.size(); + } +} diff --git a/src/main/java/com/whdc/mapper/AdinfoMapper.java b/src/main/java/com/whdc/mapper/AdinfoMapper.java index bcd46c4..3e68ae5 100644 --- a/src/main/java/com/whdc/mapper/AdinfoMapper.java +++ b/src/main/java/com/whdc/mapper/AdinfoMapper.java @@ -18,4 +18,6 @@ public interface AdinfoMapper extends BaseMapper { List find(@Param("dto") Adinfo dto); List selectByCdOrNm(@Param("adcd") String adcd, @Param("adnm")String adnm); + + Adinfo selectAdcdByAdnm(@Param("adnm")String adnm); } \ No newline at end of file diff --git a/src/main/java/com/whdc/mapper/WarnMsgFBMapper.java b/src/main/java/com/whdc/mapper/WarnMsgFBMapper.java new file mode 100644 index 0000000..2aefc27 --- /dev/null +++ b/src/main/java/com/whdc/mapper/WarnMsgFBMapper.java @@ -0,0 +1,15 @@ +package com.whdc.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.whdc.model.entity.WarnMsgFB; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface WarnMsgFBMapper extends BaseMapper { + List selectByWarnid(@Param("warnid") Integer warnid); + + List find(@Param("dto")WarnMsgFB dto); + + List selectByWarnidAndCalledPhone(@Param("warnid")Integer warnid, @Param("calledPhone")String calledPhone); +} diff --git a/src/main/java/com/whdc/model/dto/WarnDppleDto.java b/src/main/java/com/whdc/model/dto/WarnDppleDto.java new file mode 100644 index 0000000..f0b7f7b --- /dev/null +++ b/src/main/java/com/whdc/model/dto/WarnDppleDto.java @@ -0,0 +1,51 @@ +package com.whdc.model.dto; + +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +@Data +public class WarnDppleDto { + @ApiModelProperty(value = "发布时间") + private String publishTime; + + @ApiModelProperty(value = "发布单位") + private String publishUnit; + + @ApiParam(value = "预警类型") + @ApiModelProperty(value = "预警类型", dataType = "java.lang.String") + private String warnSignalType; + + @ApiParam(value = "预警级别") + @ApiModelProperty(value = "预警级别", dataType = "java.lang.String") + private String warnSignalLevel; + +// @ApiParam(value = "行政区划") +// @ApiModelProperty(value = "行政区划", dataType = "java.lang.String") +// private String adnm; + + @ApiParam(value = "区县名称") + @ApiModelProperty(value = "区县名称", dataType = "java.lang.String") + private String cnnm; + + @ApiParam(value = "市名称") + @ApiModelProperty(value = "市名称", dataType = "java.lang.String") + private String ctnm; + + @ApiModelProperty(value = "预警内容") + private String content; + + @ApiParam(value = "状态") + @ApiModelProperty(value = "状态", dataType = "java.lang.String") + private String status; + + @ApiParam(value = "预警信息id") + @ApiModelProperty(value = "预警信息id", dataType = "java.lang.String") + private Integer warnid; + + @ApiModelProperty(value = "页数", dataType = "java.lang.Integer", example = "1") + private Integer pageNumber = 1; + + @ApiModelProperty(value = "条数", dataType = "java.lang.Integer", example = "999") + private Integer pageSize = 999; +} diff --git a/src/main/java/com/whdc/model/entity/WarnMsgFB.java b/src/main/java/com/whdc/model/entity/WarnMsgFB.java new file mode 100644 index 0000000..64cdb6b --- /dev/null +++ b/src/main/java/com/whdc/model/entity/WarnMsgFB.java @@ -0,0 +1,54 @@ +package com.whdc.model.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.Date; + +@Data +@Accessors(chain = true) // chain = true 实现链式调用 +@ApiModel(value = "WARNMSG_FEEDBACK 对象", description = "预警消息叫应反馈表") +@JsonInclude(JsonInclude.Include.NON_NULL) // 表示序列化非null属性 +@TableName("FXKH_TXL.WARNMSG_FEEDBACK") +public class WarnMsgFB { + @TableField("ID") + @ApiModelProperty(value = "预警叫应反馈信息ID") + private Integer id; + + @TableField("WARNID") + @ApiModelProperty(value = "预警信息ID") + private Integer warnid; + + @TableField("PUBLISH_TIME") + @ApiModelProperty(value = "预警信息发布时间") + private Date publishTime; + + @TableField("HANDLE_TIME") + @ApiModelProperty(value = "预警信息处理时间") + private Date handleTime; + + @TableField("CALL_TIME") + @ApiModelProperty(value = "预警信息呼叫时间") + private Date callTime; + + @TableField("CALLED_PERSON") + @ApiModelProperty(value="被呼叫人姓名") + private String calledPerson; + + @TableField("CALLED_POSITION") + @ApiModelProperty(value="被呼叫人职务") + private String calledPosition; + + @TableField("CALLED_PHONE") + @ApiModelProperty(value="被呼叫人手机号") + private String calledPhone; + + @TableField("CALL_PERSON") + @ApiModelProperty(value="呼叫人姓名") + private String callPerson; +} diff --git a/src/main/java/com/whdc/model/vo/QXWarningVO.java b/src/main/java/com/whdc/model/vo/QXWarningVO.java new file mode 100644 index 0000000..005814f --- /dev/null +++ b/src/main/java/com/whdc/model/vo/QXWarningVO.java @@ -0,0 +1,46 @@ +package com.whdc.model.vo; + +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiParam; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class QXWarningVO { + @ApiModelProperty(value = "发布时间") + private String publishTime; + + @ApiModelProperty(value = "发布单位") + private String publishUnit; + + @ApiParam(value = "预警类型") + @ApiModelProperty(value = "预警类型", dataType = "java.lang.String") + private String warnSignalType; + + @ApiParam(value = "预警级别") + @ApiModelProperty(value = "预警级别", dataType = "java.lang.String") + private String warnSignalLevel; + + @ApiParam(value = "区县名称") + @ApiModelProperty(value = "区县名称", dataType = "java.lang.String") + private String cnnm; + + @ApiParam(value = "市名称") + @ApiModelProperty(value = "市名称", dataType = "java.lang.String") + private String ctnm; + + @ApiModelProperty(value = "预警内容") + private String content; + + @ApiParam(value = "状态") + @ApiModelProperty(value = "状态", dataType = "java.lang.String") + private String status; + + @ApiParam(value = "预警信息id") + @ApiModelProperty(value = "预警信息id", dataType = "java.lang.String") + private Integer warnid; + +} diff --git a/src/main/java/com/whdc/model/vo/WarnDppleVO.java b/src/main/java/com/whdc/model/vo/WarnDppleVO.java new file mode 100644 index 0000000..a1d147e --- /dev/null +++ b/src/main/java/com/whdc/model/vo/WarnDppleVO.java @@ -0,0 +1,28 @@ +package com.whdc.model.vo; + +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiParam; +import lombok.Data; + +@Data +public class WarnDppleVO { + @ApiParam(value = "区县名称") + @ApiModelProperty(value = "区县名称", dataType = "java.lang.String") + private String cnnm; + + @ApiParam(value = "市名称") + @ApiModelProperty(value = "市名称", dataType = "java.lang.String") + private String ctnm; + + @ApiParam(value = "姓名") + @ApiModelProperty(value = "姓名") + private String name; + + @ApiParam("职务") + @ApiModelProperty(value = "职务") + private String position; + + @ApiParam("手机号") + @ApiModelProperty(value = "手机号") + private String phone; +} diff --git a/src/main/java/com/whdc/model/vo/WarnStatsVO.java b/src/main/java/com/whdc/model/vo/WarnStatsVO.java new file mode 100644 index 0000000..854fc0f --- /dev/null +++ b/src/main/java/com/whdc/model/vo/WarnStatsVO.java @@ -0,0 +1,36 @@ +package com.whdc.model.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class WarnStatsVO { +// @ApiModelProperty(value = "统计") +// private Integer sumCount = 0; +// +// @ApiModelProperty(value = "红统计") +// private Integer redCount = 0; +// +// @ApiModelProperty(value = "橙统计") +// private Integer oraCount = 0; +// +// @ApiModelProperty(value = "黄统计") +// private Integer yelCount = 0; +// +// @ApiModelProperty(value = "蓝统计") +// private Integer bluCount = 0; + + @ApiModelProperty(value="日预警个数") + private Integer dayWarnNum = 0;//日预警个数 + + @ApiModelProperty(value="周预警个数") + private Integer weekWarnNum = 0;//周预警个数 + + @ApiModelProperty(value="月预警个数") + private Integer monthWarnNum = 0;//月预警个数 + + @ApiModelProperty(value="年预警个数") + private Integer yearWarnNum = 0;//年预警个数 + +// private List warnList; +} diff --git a/src/main/java/com/whdc/service/IAdinfoService.java b/src/main/java/com/whdc/service/IAdinfoService.java index ca7902f..5219f4a 100644 --- a/src/main/java/com/whdc/service/IAdinfoService.java +++ b/src/main/java/com/whdc/service/IAdinfoService.java @@ -25,4 +25,6 @@ public interface IAdinfoService extends IService { List tree(String adcd, String adnm1); String getAdcdByAdnm(String adnm); + + String getAdcdByAdnm2(String cnnm2); } \ No newline at end of file diff --git a/src/main/java/com/whdc/service/IWarnMsgFBService.java b/src/main/java/com/whdc/service/IWarnMsgFBService.java new file mode 100644 index 0000000..7ebb022 --- /dev/null +++ b/src/main/java/com/whdc/service/IWarnMsgFBService.java @@ -0,0 +1,11 @@ +package com.whdc.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.whdc.model.entity.WarnMsgFB; + +import java.util.List; + +public interface IWarnMsgFBService extends IService { + + List find(WarnMsgFB dto); +} diff --git a/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java b/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java index 82ae102..e0817d3 100644 --- a/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java +++ b/src/main/java/com/whdc/service/impl/AdinfoServiceImpl.java @@ -124,6 +124,19 @@ public class AdinfoServiceImpl extends ServiceImpl impleme return null; } + public String getAdcdByAdnm2(String adnm){ + Adinfo one = this.baseMapper.selectAdcdByAdnm(adnm); + if (one != null) { + String adcd = one.getAdcd(); + if (adcd.contains("00000000000")){ + // 查询市辖区的数据 + adcd = adcd.replace("00000000000","01000000000"); + } + return adcd; + } + return null; + } + public List treeList(String adcd, String adnm) { if(StringUtils.isNotBlank(adcd) && adcd.endsWith("0000000000000")){ diff --git a/src/main/java/com/whdc/service/impl/WarnMsgFBServiceImpl.java b/src/main/java/com/whdc/service/impl/WarnMsgFBServiceImpl.java new file mode 100644 index 0000000..af0acc7 --- /dev/null +++ b/src/main/java/com/whdc/service/impl/WarnMsgFBServiceImpl.java @@ -0,0 +1,20 @@ +package com.whdc.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.whdc.mapper.WarnMsgFBMapper; +import com.whdc.model.entity.WarnMsgFB; +import com.whdc.service.IWarnMsgFBService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@Service +public class WarnMsgFBServiceImpl extends ServiceImpl implements IWarnMsgFBService { + + @Override + public List find(WarnMsgFB dto) {//默认根据warnid和calledphone查找 + return baseMapper.selectByWarnidAndCalledPhone(dto.getWarnid(),dto.getCalledPhone()); + } +} \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index c5ccf7d..188abe1 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -10,12 +10,12 @@ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: dm.jdbc.driver.DmDriver -# url: jdbc:dm://local.gunshiiot.com:5236?schema=FXKH_TXL -# username: SYSDBA -# password: SYSDBA001 - url: jdbc:dm://10.42.6.247:5236?schema=FXKH_TXL - username: SHZH - password: Shzh_890 + url: jdbc:dm://local.gunshiiot.com:5236?schema=FXKH_TXL + username: SYSDBA + password: SYSDBA001 +# url: jdbc:dm://10.42.6.247:5236?schema=FXKH_TXL +# username: SHZH +# password: Shzh_890 druid: initialSize: 5 minIdle: 5 @@ -39,11 +39,11 @@ spring: # Redis redis: database: 5 - host: 10.42.6.75 -# host: 127.0.0.1 +# host: 10.42.6.75 + host: 127.0.0.1 port: 6379 -# password: - password: Whdc_890 + password: +# password: Whdc_890 servlet: multipart: diff --git a/src/main/resources/mapper/AdinfoMapper.xml b/src/main/resources/mapper/AdinfoMapper.xml index dca99a7..0eecfdf 100644 --- a/src/main/resources/mapper/AdinfoMapper.xml +++ b/src/main/resources/mapper/AdinfoMapper.xml @@ -47,5 +47,9 @@ ) - + \ No newline at end of file diff --git a/src/main/resources/mapper/WarnMsgFBMapper.xml b/src/main/resources/mapper/WarnMsgFBMapper.xml new file mode 100644 index 0000000..0e529bd --- /dev/null +++ b/src/main/resources/mapper/WarnMsgFBMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + \ No newline at end of file