2024-06-05 18:00:55 +08:00
|
|
|
|
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;
|
|
|
|
|
|
|
2024-06-11 11:48:38 +08:00
|
|
|
|
import java.time.LocalDate;
|
|
|
|
|
|
import java.time.format.DateTimeFormatter;
|
2024-06-05 18:00:55 +08:00
|
|
|
|
import java.util.*;
|
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
import static com.whdc.controller.WarningController.THIS_REDIS_KEY;
|
|
|
|
|
|
|
|
|
|
|
|
//湖北省防汛抗旱调度系统-气象预警
|
|
|
|
|
|
@Slf4j
|
2024-06-06 10:08:22 +08:00
|
|
|
|
@Api(tags = "气象预警 - Controller")
|
2024-06-05 18:00:55 +08:00
|
|
|
|
@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();
|
2024-06-07 14:02:04 +08:00
|
|
|
|
apiDto.setStartTime(dto.getStartTime());//!!!!!!需要注释掉!!!!!!
|
|
|
|
|
|
apiDto.setEndTime(dto.getEndTime());//!!!!!!需要注释掉!!!!!!
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-06 10:23:50 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 确认处理完成
|
|
|
|
|
|
*/
|
|
|
|
|
|
@ApiOperation(value = "确认处理完成")
|
|
|
|
|
|
@PostMapping("/confirmHandle")
|
|
|
|
|
|
@Cacheable(value = THIS_REDIS_KEY, key = "#root.method.name+':'+#dto.toString()")
|
|
|
|
|
|
public ResultJson<List<WarnDppleVO>> confirmHandle(
|
|
|
|
|
|
@RequestBody WarnMsgFB dto) {
|
|
|
|
|
|
//根据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()
|
|
|
|
|
|
)
|
|
|
|
|
|
){
|
|
|
|
|
|
return ResultJson.error("该名称或编码重复");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
boolean save = warnMsgFBService.save(dto);
|
|
|
|
|
|
return ResultJson.ok(save);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-05 18:00:55 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 历史气象预警统计
|
|
|
|
|
|
*
|
|
|
|
|
|
* @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
|
|
|
|
|
|
*/
|
2024-06-06 10:23:50 +08:00
|
|
|
|
@ApiOperation(value = "历史气象预警查询")
|
2024-06-05 18:00:55 +08:00
|
|
|
|
@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("");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-07 16:45:21 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 历史7天暴雨预警叫应信息统计
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param dto
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
|
|
|
|
|
@ApiOperation(value = "历史7天暴雨预警叫应信息统计")
|
|
|
|
|
|
@PostMapping("/getFBStats")
|
|
|
|
|
|
@Cacheable(value = THIS_REDIS_KEY, key = "#root.method.name+':'+#dto.toString()")
|
|
|
|
|
|
public ResultJson<FBStatsVO> getFeedBackStats(@RequestBody GroupWarningDto dto) {
|
|
|
|
|
|
//当前时间
|
|
|
|
|
|
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);
|
|
|
|
|
|
ArrayList<ApiDto.Filter> filter = Lists.newArrayList();
|
|
|
|
|
|
FBStatsVO fbStatsVO = null;
|
|
|
|
|
|
//当前时间往前7天——本周预警统计
|
|
|
|
|
|
Calendar weekStartDay = Calendar.getInstance();
|
|
|
|
|
|
weekStartDay.add(Calendar.DAY_OF_YEAR, 37*(-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()+"个");
|
|
|
|
|
|
// }
|
|
|
|
|
|
fbStatsVO = getCount3(data);
|
|
|
|
|
|
// System.out.println("周统计:"+weekWarnNum +"个");
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
return ResultJson.ok(fbStatsVO);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private FBStatsVO getCount3(List<WarningData> data){
|
|
|
|
|
|
int sum = 0;
|
|
|
|
|
|
FBStatsVO fbStats = new FBStatsVO();
|
|
|
|
|
|
// Set<String> cnCallList = new ArrayList<>();
|
|
|
|
|
|
Set cnOrgCallList = new HashSet<>();
|
|
|
|
|
|
Set cnRedCallList = new HashSet<>();
|
|
|
|
|
|
int orgfbSum = 0;
|
|
|
|
|
|
int redfbSum = 0;
|
|
|
|
|
|
List<WarningData.Warning> warnList = Lists.newArrayList();//汇总
|
|
|
|
|
|
for (WarningData datum : data) {
|
|
|
|
|
|
for (WarningData.TypeList typeList : datum.getTypeList()) {
|
|
|
|
|
|
warnList.addAll(typeList.getWarnList());
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
List<WarningData.Warning> list = warnList.stream().filter(o -> "暴雨".equals(o.getWarnSignalType())).collect(Collectors.toList());
|
|
|
|
|
|
//统计暴雨橙色预警
|
|
|
|
|
|
List<WarningData.Warning> orgList = list.stream().filter(o -> "橙色".equals(o.getWarnSignalLevel())).collect(Collectors.toList());
|
|
|
|
|
|
//统计暴雨红色预警
|
|
|
|
|
|
List<WarningData.Warning> redList = list.stream().filter(o -> "红色".equals(o.getWarnSignalLevel())).collect(Collectors.toList());
|
|
|
|
|
|
//暴雨橙色预警个数
|
|
|
|
|
|
fbStats.setOrgWarnSum(orgList.size());
|
|
|
|
|
|
//暴雨红色预警个数
|
|
|
|
|
|
fbStats.setRedWarnSum(redList.size());
|
|
|
|
|
|
//查询叫应信息:根据warnid查询——暴雨橙色预警
|
|
|
|
|
|
//根据预警id,查找有没有呼叫过
|
|
|
|
|
|
for(WarningData.Warning warning:orgList){
|
|
|
|
|
|
List<WarnMsgFB> msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(warning.getId()));//查询msgfb
|
|
|
|
|
|
String cn = warning.getEffectArea();
|
|
|
|
|
|
String[] cnList = cn.split(",");
|
|
|
|
|
|
for(int i=0;i<cnList.length;i++){
|
|
|
|
|
|
cnOrgCallList.add(cnList[i]);
|
|
|
|
|
|
}
|
|
|
|
|
|
orgfbSum += msgfbList.size();
|
|
|
|
|
|
}
|
|
|
|
|
|
fbStats.setCallOrgSum(orgfbSum);
|
|
|
|
|
|
fbStats.setCnOrgCallList(new ArrayList<>(cnOrgCallList));
|
|
|
|
|
|
//查询叫应信息:根据warnid查询——暴雨红色预警
|
|
|
|
|
|
//根据预警id,查找有没有呼叫过
|
|
|
|
|
|
for(WarningData.Warning warning:redList){
|
|
|
|
|
|
List<WarnMsgFB> msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(warning.getId()));//查询msgfb
|
|
|
|
|
|
String cn = warning.getEffectArea();
|
|
|
|
|
|
String[] cnList = cn.split(",");
|
|
|
|
|
|
for(int i=0;i<cnList.length;i++){
|
|
|
|
|
|
cnRedCallList.add(cnList[i]);
|
|
|
|
|
|
}
|
|
|
|
|
|
redfbSum += msgfbList.size();
|
|
|
|
|
|
}
|
|
|
|
|
|
fbStats.setCallOrgSum(redfbSum);
|
|
|
|
|
|
fbStats.setCnOrgCallList(new ArrayList<>(cnRedCallList));
|
|
|
|
|
|
return fbStats;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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";
|
|
|
|
|
|
}
|
2024-06-11 11:48:38 +08:00
|
|
|
|
//统计函数
|
2024-06-05 18:00:55 +08:00
|
|
|
|
private int getCount2(List<WarningData> data){
|
|
|
|
|
|
int sum = 0;
|
2024-06-11 11:48:38 +08:00
|
|
|
|
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
2024-06-05 18:00:55 +08:00
|
|
|
|
List<WarningData.Warning> warnList = Lists.newArrayList();//汇总
|
|
|
|
|
|
for (WarningData datum : data) {
|
|
|
|
|
|
for (WarningData.TypeList typeList : datum.getTypeList()) {
|
|
|
|
|
|
warnList.addAll(typeList.getWarnList());
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-06-11 11:48:38 +08:00
|
|
|
|
warnList = warnList.stream().filter(o -> {
|
|
|
|
|
|
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());
|
2024-06-05 18:00:55 +08:00
|
|
|
|
return warnList.size();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|