湖北防汛抗旱调度系统:预警信息和叫应信息接口完成。

master
ForwithyNew 2024-06-05 18:00:55 +08:00
parent 1329a6e096
commit 5b151edd03
15 changed files with 912 additions and 11 deletions

View File

@ -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<List<QXWarningVO>> 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<ApiDto.Filter> 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<WarningData> 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<List<WarnDppleVO>> getDpple(
@RequestBody WarnDppleDto dto) {
List<WarnDppleVO> warnDpples = new ArrayList<>();
String[] cnnms = dto.getCnnm().split(",");
for(int i=0;i<cnnms.length;i++){
String cnnm = cnnms[i];
String cnnm2 = cnnm.replace("县","").replace("区","");
String adcd = adinfoService.getAdcdByAdnm2(cnnm2);//根据区县的名字找到对应的adcd
System.out.println(adcd);
if (StringUtils.isNotBlank(adcd)){
List<AddressBook> 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<WarnStatsVO> getHistoryStats(@RequestBody GroupWarningDto dto) {
WarnStatsVO warnStatsVO = new WarnStatsVO();
int dayWarnNum = 0;//日预警个数
int weekWarnNum = 0;//周预警个数
int monthWarnNum = 0;//月预警个数
int yearWarnNum = 0;//年预警个数
List<QXWarningVO> 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<ApiDto.Filter> 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<WarningData> data = dayjson.getJSONArray("data").toJavaList(WarningData.class);
// return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType));
// List<WarningHistoryListVo> 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<WarningData> data = weekjson.getJSONArray("data").toJavaList(WarningData.class);
// return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType));
// List<WarningHistoryListVo> 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<WarningData> data = monthjson.getJSONArray("data").toJavaList(WarningData.class);
// return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType));
// List<WarningHistoryListVo> 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<WarningData> data = yearjson.getJSONArray("data").toJavaList(WarningData.class);
//// return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType));
// List<WarningHistoryListVo> 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<QXWarningVO> 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<QXWarningVO> getHistoryGroupWarning(@RequestBody GroupWarningDto dto) {
List<QXWarningVO> 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<ApiDto.Filter> 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<WarningData> data = json.getJSONArray("data").toJavaList(WarningData.class);
int count = getCount2(data);
System.out.println("历史预警数量:"+data.size());
System.out.println("历史预警数量2"+count);
//查找最近10条数据,放到warnList属性上
List<QXWarningVO> 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<QXWarningVO> getPageWarning(List<WarningData> data, int pageNumber, int pageSize){
List<QXWarningVO> qxWarningVOS = new ArrayList<>();
// List<WarningData.Warning> warnList = Lists.newArrayList();//汇总
List<QXWarningVO> warnList = Lists.newArrayList();//汇总
for (WarningData datum : data) {
String ctnm = datum.getEffectArea();//市级范围
for (WarningData.TypeList typeList : datum.getTypeList()) {//里面的
// 预警类型
String type = typeList.getType();
List<WarningData.Warning> 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<QXWarningVO> 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<pageNumber*pageSize;i++){
QXWarningVO qxWarningVO = dataList2.get(i);
//根据预警id查找有没有呼叫过
List<WarnMsgFB> 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()<pageNumber*pageSize){
for(int i=(pageNumber-1)*pageSize;i<dataList2.size();i++){
QXWarningVO qxWarningVO = dataList2.get(i);
//根据预警id查找有没有呼叫过
List<WarnMsgFB> 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<QXWarningVO> getLatestTen(List<WarningData> data){
List<QXWarningVO> qxWarningVOS = new ArrayList<>();
// List<WarningData.Warning> warnList = Lists.newArrayList();//汇总
List<QXWarningVO> warnList = Lists.newArrayList();//汇总
for (WarningData datum : data) {
String ctnm = datum.getEffectArea();//市级范围
for (WarningData.TypeList typeList : datum.getTypeList()) {//里面的
// 预警类型
String type = typeList.getType();
List<WarningData.Warning> 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<QXWarningVO> 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<WarnMsgFB> 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<QXWarningVO> getList(List<WarningData> data,
String reqPublishUnit,
String reqWarnSignalLevel,
String reqWarnSignalType) {
List<QXWarningVO> respList = Lists.newArrayList();
for (WarningData datum : data) {//最外层的列表
String ctnm = datum.getEffectArea();//市级范围
for (WarningData.TypeList typeList : datum.getTypeList()) {//里面的
// 预警类型
String type = typeList.getType();
List<WarningData.Warning> 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<WarnMsgFB> 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<WarningData.Warning> warnListFilter(List<WarningData.Warning> warnList,
String publishUnit,
String warnSignalLevel,
String warnSignalType
) {
if (StringUtils.isNotBlank(publishUnit)) {
HashSet<String> 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<String> 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<String> 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<WarningData> data){
int sum = 0;
List<WarningData.Warning> warnList = Lists.newArrayList();//汇总
for (WarningData datum : data) {
for (WarningData.TypeList typeList : datum.getTypeList()) {
warnList.addAll(typeList.getWarnList());
}
}
return warnList.size();
}
}

View File

@ -18,4 +18,6 @@ public interface AdinfoMapper extends BaseMapper<Adinfo> {
List<Adinfo> find(@Param("dto") Adinfo dto); List<Adinfo> find(@Param("dto") Adinfo dto);
List<Adinfo> selectByCdOrNm(@Param("adcd") String adcd, @Param("adnm")String adnm); List<Adinfo> selectByCdOrNm(@Param("adcd") String adcd, @Param("adnm")String adnm);
Adinfo selectAdcdByAdnm(@Param("adnm")String adnm);
} }

View File

@ -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<WarnMsgFB> {
List<WarnMsgFB> selectByWarnid(@Param("warnid") Integer warnid);
List<WarnMsgFB> find(@Param("dto")WarnMsgFB dto);
List<WarnMsgFB> selectByWarnidAndCalledPhone(@Param("warnid")Integer warnid, @Param("calledPhone")String calledPhone);
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<QXWarningVO> warnList;
}

View File

@ -25,4 +25,6 @@ public interface IAdinfoService extends IService<Adinfo> {
List<AdcdTree> tree(String adcd, String adnm1); List<AdcdTree> tree(String adcd, String adnm1);
String getAdcdByAdnm(String adnm); String getAdcdByAdnm(String adnm);
String getAdcdByAdnm2(String cnnm2);
} }

View File

@ -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<WarnMsgFB> {
List<WarnMsgFB> find(WarnMsgFB dto);
}

View File

@ -124,6 +124,19 @@ public class AdinfoServiceImpl extends ServiceImpl<AdinfoMapper, Adinfo> impleme
return null; 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<Adinfo> treeList(String adcd, String adnm) { public List<Adinfo> treeList(String adcd, String adnm) {
if(StringUtils.isNotBlank(adcd) && adcd.endsWith("0000000000000")){ if(StringUtils.isNotBlank(adcd) && adcd.endsWith("0000000000000")){

View File

@ -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<WarnMsgFBMapper, WarnMsgFB> implements IWarnMsgFBService {
@Override
public List<WarnMsgFB> find(WarnMsgFB dto) {//默认根据warnid和calledphone查找
return baseMapper.selectByWarnidAndCalledPhone(dto.getWarnid(),dto.getCalledPhone());
}
}

View File

@ -10,12 +10,12 @@ spring:
datasource: datasource:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: dm.jdbc.driver.DmDriver driver-class-name: dm.jdbc.driver.DmDriver
# url: jdbc:dm://local.gunshiiot.com:5236?schema=FXKH_TXL url: jdbc:dm://local.gunshiiot.com:5236?schema=FXKH_TXL
# username: SYSDBA username: SYSDBA
# password: SYSDBA001 password: SYSDBA001
url: jdbc:dm://10.42.6.247:5236?schema=FXKH_TXL # url: jdbc:dm://10.42.6.247:5236?schema=FXKH_TXL
username: SHZH # username: SHZH
password: Shzh_890 # password: Shzh_890
druid: druid:
initialSize: 5 initialSize: 5
minIdle: 5 minIdle: 5
@ -39,11 +39,11 @@ spring:
# Redis # Redis
redis: redis:
database: 5 database: 5
host: 10.42.6.75 # host: 10.42.6.75
# host: 127.0.0.1 host: 127.0.0.1
port: 6379 port: 6379
# password: password:
password: Whdc_890 # password: Whdc_890
servlet: servlet:
multipart: multipart:

View File

@ -47,5 +47,9 @@
) )
</select> </select>
<select id="selectAdcdByAdnm" resultType="com.whdc.model.entity.Adinfo">
select t.adcd, t.adnm
from FXKH_TXL.ADINFO t
where t.adnm like CONCAT(#{adnm},'%')
</select>
</mapper> </mapper>

View File

@ -0,0 +1,17 @@
<?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.whdc.mapper.WarnMsgFBMapper">
<select id="find" resultType="com.whdc.model.entity.WarnMsgFB">
</select>
<select id="selectByWarnid" resultType="com.whdc.model.entity.WarnMsgFB">
select * from FXKH_TXL.WARNMSG_FEEDBACK
where warnid = #{warnid}
</select>
<select id="selectByWarnidAndCalledPhone" resultType="com.whdc.model.entity.WarnMsgFB">
select * from FXKH_TXL.WARNMSG_FEEDBACK
where warnid = #{warnid}
<if test="calledPhone!=null and calledPhone!=''">and called_phone = #{calledPhone}</if>
</select>
</mapper>