/getFBStats:历史7天暴雨预警叫应信息统计。
parent
6a6ccb1419
commit
0f3fc836d7
|
|
@ -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();//汇总
|
||||||
|
|
|
||||||
|
|
@ -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;//叫应次数-暴雨红色预警
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue