/getFBStats:历史7天暴雨预警叫应信息统计。

master
ForwithyNew 2024-06-07 16:45:21 +08:00
parent 6a6ccb1419
commit 0f3fc836d7
2 changed files with 119 additions and 0 deletions

View File

@ -364,6 +364,110 @@ public class QXWarnController {
return ResultJson.ok(""); return ResultJson.ok("");
} }
/**
* 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;
}
private List<QXWarningVO> getPageWarning(List<WarningData> data, int pageNumber, int pageSize){ private List<QXWarningVO> getPageWarning(List<WarningData> data, int pageNumber, int pageSize){
List<QXWarningVO> qxWarningVOS = new ArrayList<>(); List<QXWarningVO> qxWarningVOS = new ArrayList<>();
// List<WarningData.Warning> warnList = Lists.newArrayList();//汇总 // List<WarningData.Warning> warnList = Lists.newArrayList();//汇总

View File

@ -0,0 +1,15 @@
package com.whdc.model.vo;
import lombok.Data;
import java.util.List;
@Data
public class FBStatsVO {
private int orgWarnSum;//暴雨黄色预警次数
private int redWarnSum;//暴雨红色预警次数
private List<String> cnOrgCallList;//叫应的县列表-暴雨黄色预警
private int callOrgSum;//叫应次数-暴雨黄色预警
private List<String> cnRedCallList;//叫应的县列表-暴雨红色预警
private int callRedSum;//叫应次数-暴雨红色预警
}