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;
|
2024-06-11 11:59:57 +08:00
|
|
|
|
import com.whdc.model.entity.AddressBookOld;
|
2024-06-11 17:34:24 +08:00
|
|
|
|
import com.whdc.model.entity.QXWarning;
|
2024-06-05 18:00:55 +08:00
|
|
|
|
import com.whdc.model.entity.WarnMsgFB;
|
|
|
|
|
|
import com.whdc.model.vo.*;
|
2024-06-11 17:34:24 +08:00
|
|
|
|
import com.whdc.service.*;
|
2024-06-13 16:06:46 +08:00
|
|
|
|
import com.whdc.utils.DateUtils;
|
2024-06-05 18:00:55 +08:00
|
|
|
|
import com.whdc.utils.HttpUtil;
|
|
|
|
|
|
import com.whdc.utils.ResultJson;
|
|
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
2024-06-13 15:11:45 +08:00
|
|
|
|
import io.swagger.annotations.ApiParam;
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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;
|
2024-06-11 17:34:24 +08:00
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
2024-06-13 15:11:45 +08:00
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
2024-06-05 18:00:55 +08:00
|
|
|
|
|
2024-06-11 11:48:38 +08:00
|
|
|
|
import java.time.LocalDate;
|
2024-06-17 11:17:33 +08:00
|
|
|
|
import java.time.LocalDateTime;
|
2024-06-11 11:48:38 +08:00
|
|
|
|
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;
|
2024-06-11 11:59:57 +08:00
|
|
|
|
@Autowired
|
|
|
|
|
|
private IAddressBookOldService addressBookOldService;
|
2024-06-05 18:00:55 +08:00
|
|
|
|
@Autowired
|
|
|
|
|
|
private IAdinfoService adinfoService;
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
private IWarnMsgFBService warnMsgFBService;
|
2024-06-11 17:34:24 +08:00
|
|
|
|
@Autowired
|
|
|
|
|
|
private IQXWarningService service;
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation(value = "新增")
|
|
|
|
|
|
@PostMapping(value = "/add")
|
|
|
|
|
|
public ResultJson<String> insert(@RequestBody @Validated QXWarning dto) {
|
|
|
|
|
|
|
|
|
|
|
|
//根据warnid是否重复
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(
|
|
|
|
|
|
service.lambdaQuery()
|
2024-06-13 15:11:45 +08:00
|
|
|
|
.eq(QXWarning::getWarnid, dto.getWarnid()).list()
|
2024-06-11 17:34:24 +08:00
|
|
|
|
)
|
2024-06-13 15:11:45 +08:00
|
|
|
|
) {
|
2024-06-11 17:34:24 +08:00
|
|
|
|
return ResultJson.error("该名称或编码重复");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
boolean save = service.save(dto);
|
|
|
|
|
|
return ResultJson.ok(save);
|
|
|
|
|
|
}
|
2024-06-05 18:00:55 +08:00
|
|
|
|
|
2024-06-13 16:32:32 +08:00
|
|
|
|
// @Async
|
|
|
|
|
|
@ApiOperation(value = "预警数据同步接口", notes = "预警数据同步接口")
|
|
|
|
|
|
@GetMapping("/syncData")
|
|
|
|
|
|
// @Scheduled(cron ="0 0/5 * * * ?")
|
2024-06-13 16:06:46 +08:00
|
|
|
|
public void syncData() {
|
2024-06-13 16:32:32 +08:00
|
|
|
|
log.info("预警数据同步开始!!!");
|
2024-06-13 16:06:46 +08:00
|
|
|
|
ApiDto apiDto = new ApiDto();
|
|
|
|
|
|
apiDto.setFilter(Lists.newArrayList());
|
|
|
|
|
|
|
2024-06-13 16:32:32 +08:00
|
|
|
|
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));
|
2024-06-13 16:06:46 +08:00
|
|
|
|
JSONObject json = JSON.parseObject(str);
|
|
|
|
|
|
if (json != null && json.getInteger("code") == HttpStatus.SC_OK) {
|
|
|
|
|
|
List<WarningData> data = json.getJSONArray("data").toJavaList(WarningData.class);
|
|
|
|
|
|
List<QXWarningVO> warningList = getList(data, null, null, null);
|
2024-06-13 16:32:32 +08:00
|
|
|
|
log.info("预警数据同步获取数据条数 " + warningList.size());
|
2024-06-13 16:06:46 +08:00
|
|
|
|
List<Integer> warnIds = warningList.stream().map(QXWarningVO::getWarnid).collect(Collectors.toList());
|
2024-06-13 16:32:32 +08:00
|
|
|
|
|
2024-06-13 16:06:46 +08:00
|
|
|
|
List<QXWarning> list = service.lambdaQuery().in(QXWarning::getWarnid, warnIds).list();
|
2024-06-13 16:32:32 +08:00
|
|
|
|
log.info("预警数据同步已存预警 " + list.size());
|
|
|
|
|
|
|
2024-06-13 16:06:46 +08:00
|
|
|
|
Set<Integer> dbWarnSet = list.stream().map(QXWarning::getWarnid).collect(Collectors.toSet());
|
|
|
|
|
|
|
|
|
|
|
|
List<QXWarning> adds = Lists.newArrayList();
|
|
|
|
|
|
for (QXWarningVO warningVO : warningList) {
|
|
|
|
|
|
if (!dbWarnSet.contains(warningVO.getWarnid())) {
|
|
|
|
|
|
QXWarning qxwarning = new QXWarning();
|
|
|
|
|
|
qxwarning.setCreateTime(DateUtils.dateToStrYMDHds(warningVO.getCreateTime()));
|
|
|
|
|
|
qxwarning.setPublishTime(DateUtils.dateToStrYMDHds(warningVO.getPublishTime()));
|
|
|
|
|
|
qxwarning.setStartTime(DateUtils.dateToStrYMDHds(warningVO.getStartTime()));
|
|
|
|
|
|
qxwarning.setEndTime(DateUtils.dateToStrYMDHds(warningVO.getEndTime()));
|
|
|
|
|
|
qxwarning.setWarnSignalType(warningVO.getWarnSignalType());
|
|
|
|
|
|
qxwarning.setWarnSignalLevel(warningVO.getWarnSignalLevel());
|
|
|
|
|
|
qxwarning.setPublishUnit(warningVO.getPublishUnit());
|
|
|
|
|
|
qxwarning.setContent(warningVO.getContent());
|
|
|
|
|
|
qxwarning.setWarnid(warningVO.getWarnid());
|
|
|
|
|
|
qxwarning.setCtnm(warningVO.getCtnm());
|
|
|
|
|
|
qxwarning.setCnnm(warningVO.getCnnm());
|
|
|
|
|
|
adds.add(qxwarning);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(adds)) {
|
2024-06-13 16:32:32 +08:00
|
|
|
|
log.info("预警数据同步待添加预警 " + adds.size());
|
2024-06-13 16:06:46 +08:00
|
|
|
|
if (this.service.saveBatch(adds)) {
|
|
|
|
|
|
log.info("添加成功 " + adds.size());
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-06-13 16:32:32 +08:00
|
|
|
|
|
|
|
|
|
|
log.info("预警数据同步执行完成!!!");
|
|
|
|
|
|
|
2024-06-13 16:06:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-05 18:00:55 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 气象预警-正在生效的预警信息
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param dto
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
|
|
|
|
|
@ApiOperation(value = "气象预警-正在生效的预警信息")
|
|
|
|
|
|
@PostMapping("/getGroupWarning")
|
2024-06-13 16:06:46 +08:00
|
|
|
|
// @Cacheable(value = THIS_REDIS_KEY, key = "#root.method.name+':'+#dto.toString()")
|
|
|
|
|
|
public ResultJson<List<QXWarningVO>> getGroupWarning() {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
|
2024-06-13 16:06:46 +08:00
|
|
|
|
return ResultJson.ok(service.find());
|
2024-06-05 18:00:55 +08:00
|
|
|
|
}
|
2024-06-13 16:06:46 +08:00
|
|
|
|
//
|
|
|
|
|
|
// /**
|
|
|
|
|
|
// * 气象预警-正在生效的预警信息
|
|
|
|
|
|
// *
|
|
|
|
|
|
// * @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);
|
|
|
|
|
|
// List<QXWarningVO> warningList = getList(data, publishUnit, warnSignalLevel, warnSignalType);
|
|
|
|
|
|
// //将warningList存起来
|
|
|
|
|
|
// for (int i = 0; i < warningList.size(); i++) {
|
|
|
|
|
|
// DateTimeFormatter SECOND_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
// QXWarningVO warningVO = warningList.get(i);
|
|
|
|
|
|
// QXWarning qxwarning = new QXWarning();
|
|
|
|
|
|
// qxwarning.setCreateTime(Date.from(LocalDateTime.parse(warningVO.getCreateTime(), SECOND_FORMATTER).atZone(ZoneId.systemDefault()).toInstant()));
|
|
|
|
|
|
// qxwarning.setPublishTime(Date.from(LocalDateTime.parse(warningVO.getPublishTime(), SECOND_FORMATTER).atZone(ZoneId.systemDefault()).toInstant()));
|
|
|
|
|
|
// qxwarning.setStartTime(Date.from(LocalDateTime.parse(warningVO.getStartTime(), SECOND_FORMATTER).atZone(ZoneId.systemDefault()).toInstant()));
|
|
|
|
|
|
// qxwarning.setEndTime(Date.from(LocalDateTime.parse(warningVO.getEndTime(), SECOND_FORMATTER).atZone(ZoneId.systemDefault()).toInstant()));
|
|
|
|
|
|
// qxwarning.setWarnSignalType(warningVO.getWarnSignalType());
|
|
|
|
|
|
// qxwarning.setWarnSignalLevel(warningVO.getWarnSignalLevel());
|
|
|
|
|
|
// qxwarning.setPublishUnit(warningVO.getPublishUnit());
|
|
|
|
|
|
// qxwarning.setContent(warningVO.getContent());
|
|
|
|
|
|
// qxwarning.setWarnid(warningVO.getWarnid());
|
|
|
|
|
|
// qxwarning.setCtnm(warningVO.getCtnm());
|
|
|
|
|
|
// qxwarning.setCnnm(warningVO.getCnnm());
|
|
|
|
|
|
// insert(qxwarning);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// warningList = warningList.stream().filter(o -> o.getStatus().equals("0")).collect(Collectors.toList());
|
|
|
|
|
|
// return ResultJson.ok(warningList);
|
|
|
|
|
|
// }
|
|
|
|
|
|
//
|
|
|
|
|
|
// return ResultJson.ok(json);
|
|
|
|
|
|
// }
|
2024-06-05 18:00:55 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取联系人
|
|
|
|
|
|
*/
|
|
|
|
|
|
@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(",");
|
2024-06-13 15:11:45 +08:00
|
|
|
|
for (int i = 0; i < cnnms.length; i++) {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
String cnnm = cnnms[i];
|
2024-06-13 15:11:45 +08:00
|
|
|
|
String cnnm2 = cnnm.replace("县", "").replace("区", "");
|
2024-06-11 11:59:57 +08:00
|
|
|
|
// String adcd = adinfoService.getAdcdByAdnm2(cnnm2);//根据区县的名字找到对应的adcd
|
|
|
|
|
|
// System.out.println(adcd);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
if (StringUtils.isNotBlank(cnnm2)) {
|
2024-06-11 11:59:57 +08:00
|
|
|
|
List<AddressBookOld> dpples = addressBookOldService.getListByAdnm2(cnnm2);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
System.out.println("dpple个数:" + dpples.size());
|
|
|
|
|
|
for (AddressBookOld dpple : dpples) {
|
2024-06-17 11:17:33 +08:00
|
|
|
|
dpple.decryptPhone();
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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);
|
|
|
|
|
|
}
|
2024-06-13 15:11:45 +08:00
|
|
|
|
} else {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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()
|
2024-06-13 15:11:45 +08:00
|
|
|
|
.eq(WarnMsgFB::getWarnid, dto.getWarnid())
|
|
|
|
|
|
.eq(WarnMsgFB::getCalledPhone, String.valueOf(dto.getCalledPhone())).list()
|
2024-06-06 10:23:50 +08:00
|
|
|
|
)
|
2024-06-13 15:11:45 +08:00
|
|
|
|
) {
|
2024-06-06 10:23:50 +08:00
|
|
|
|
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);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
String nowTime = zerofill(year) + "-" + zerofill(month) + "-" + zerofill(day) + " " +
|
|
|
|
|
|
zerofill(hour) + ":" + zerofill(minute) + ":" + zerofill(second);
|
2024-06-05 18:00:55 +08:00
|
|
|
|
System.out.println(nowTime);
|
|
|
|
|
|
//当前时间往前24小时——今日预警统计
|
2024-06-13 15:11:45 +08:00
|
|
|
|
String dayStartTime = zerofill(year) + "-" + zerofill(month) + "-" + zerofill(day) + " " +
|
|
|
|
|
|
"00" + ":" + "00" + ":" + "00";
|
2024-06-05 18:00:55 +08: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);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
System.out.println("日统计:" + dayWarnNum + "个");
|
2024-06-05 18:00:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
//当前时间往前7天——本周预警统计
|
|
|
|
|
|
int day_of_week = startCalendarDay.get(Calendar.DAY_OF_WEEK);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
int weekminus = day_of_week == 0 ? 7 : day_of_week - 1;
|
2024-06-05 18:00:55 +08:00
|
|
|
|
Calendar weekStartDay = Calendar.getInstance();
|
2024-06-13 15:11:45 +08:00
|
|
|
|
weekStartDay.add(Calendar.DAY_OF_YEAR, (weekminus - 1) * (-1));
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
System.out.println("weekstr:" + weekjson);
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
System.out.println("周统计:" + weekWarnNum + "个");
|
2024-06-05 18:00:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
//当前时间往前30天——本月预警统计
|
|
|
|
|
|
int day_of_month = startCalendarDay.get(Calendar.DAY_OF_MONTH);
|
|
|
|
|
|
Calendar monthStartDay = Calendar.getInstance();
|
2024-06-13 15:11:45 +08:00
|
|
|
|
int monthdayminus = day_of_month - 1;
|
|
|
|
|
|
monthStartDay.add(Calendar.DAY_OF_YEAR, monthdayminus * (-1));
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
System.out.println("monthstr:" + monthjson);
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
System.out.println("月统计:" + monthWarnNum + "个");
|
2024-06-05 18:00:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
//当前时间往前360天——全年预警数
|
|
|
|
|
|
int day_of_year = startCalendarDay.get(Calendar.DAY_OF_YEAR);
|
|
|
|
|
|
Calendar yearStartDay = Calendar.getInstance();
|
|
|
|
|
|
int yeardayminus = day_of_year - 1;
|
2024-06-13 15:11:45 +08:00
|
|
|
|
yearStartDay.add(Calendar.DAY_OF_YEAR, yeardayminus * (-1));
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
System.out.println("yearstr:" + yearjson);
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
System.out.println("年统计:" + yearWarnNum + "个");
|
2024-06-05 18:00:55 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
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")
|
2024-06-17 11:17:33 +08:00
|
|
|
|
// @Cacheable(value = THIS_REDIS_KEY, key = "#root.method.name+':'+#dto.toString()")
|
2024-06-13 09:25:12 +08:00
|
|
|
|
public ResultJson<HistoryWarnsVO> getHistoryWarning(@RequestBody GroupWarningDto dto) {
|
2024-06-17 11:17:33 +08:00
|
|
|
|
// List<QXWarningVO> warnList = new ArrayList<>();
|
|
|
|
|
|
// HistoryWarnsVO historyWarnsVO = new HistoryWarnsVO();
|
|
|
|
|
|
// 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();
|
|
|
|
|
|
//
|
|
|
|
|
|
// 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);
|
|
|
|
|
|
// historyWarnsVO.setCount(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);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// historyWarnsVO.setWarnList(qxWarningList);
|
|
|
|
|
|
// return ResultJson.ok(historyWarnsVO);
|
|
|
|
|
|
// }
|
|
|
|
|
|
//
|
|
|
|
|
|
// return ResultJson.ok("");
|
2024-06-05 18:00:55 +08:00
|
|
|
|
|
2024-06-17 11:17:33 +08:00
|
|
|
|
return ResultJson.ok(service.page(dto));
|
2024-06-05 18:00:55 +08:00
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-07 16:45:21 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 历史7天暴雨预警叫应信息统计
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param dto
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
2024-06-11 14:50:42 +08:00
|
|
|
|
@ApiOperation(value = "历史n天暴雨预警叫应信息统计")
|
2024-06-07 16:45:21 +08:00
|
|
|
|
@PostMapping("/getFBStats")
|
|
|
|
|
|
@Cacheable(value = THIS_REDIS_KEY, key = "#root.method.name+':'+#dto.toString()")
|
|
|
|
|
|
public ResultJson<FBStatsVO> getFeedBackStats(@RequestBody GroupWarningDto dto) {
|
2024-06-11 14:50:42 +08:00
|
|
|
|
String startTime = dto.getStartTime();
|
|
|
|
|
|
String endTime = dto.getEndTime();
|
2024-06-13 15:11:45 +08:00
|
|
|
|
if (Objects.isNull(startTime) && Objects.isNull(endTime)) {
|
2024-06-11 14:50:42 +08:00
|
|
|
|
//当前时间
|
|
|
|
|
|
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);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
String nowTime = zerofill(year) + "-" + zerofill(month) + "-" + zerofill(day) + " " +
|
|
|
|
|
|
"08" + ":" + "00" + ":" + "00";
|
2024-06-11 14:50:42 +08:00
|
|
|
|
System.out.println(nowTime);
|
|
|
|
|
|
ArrayList<ApiDto.Filter> filter = Lists.newArrayList();
|
|
|
|
|
|
FBStatsVO fbStatsVO = null;
|
|
|
|
|
|
//当前时间往前7天——本周预警统计
|
2024-06-12 11:13:18 +08:00
|
|
|
|
int day_of_week = startCalendarDay.get(Calendar.DAY_OF_WEEK);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
int weekminus = day_of_week == 0 ? 7 : day_of_week - 1;
|
2024-06-11 14:50:42 +08:00
|
|
|
|
Calendar weekStartDay = Calendar.getInstance();
|
2024-06-13 15:11:45 +08:00
|
|
|
|
weekStartDay.add(Calendar.DAY_OF_YEAR, (weekminus - 1) * (-1));
|
2024-06-12 11:13:18 +08:00
|
|
|
|
String weekStartTime = CalendarDayStartToString2(weekStartDay);
|
|
|
|
|
|
// Calendar weekStartDay = Calendar.getInstance();
|
|
|
|
|
|
// weekStartDay.add(Calendar.DAY_OF_YEAR, 37*(-1));
|
|
|
|
|
|
// String weekStartTime = CalendarDayStartToString(weekStartDay);
|
2024-06-11 14:50:42 +08:00
|
|
|
|
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);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
System.out.println("weekstr:" + weekjson);
|
2024-06-11 14:50:42 +08:00
|
|
|
|
if (weekjson != null && weekjson.getInteger("code") == HttpStatus.SC_OK) {
|
|
|
|
|
|
List<WarningData> data = weekjson.getJSONArray("data").toJavaList(WarningData.class);
|
2024-06-07 16:45:21 +08:00
|
|
|
|
// 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()+"个");
|
|
|
|
|
|
// }
|
2024-06-11 14:50:42 +08:00
|
|
|
|
fbStatsVO = getCount3(data);
|
2024-06-12 11:13:18 +08:00
|
|
|
|
fbStatsVO.setStartTime(weekDto.getStartTime());//Date.from(LocalDateTime.parse(weekDto.getStartTime(), SECOND_FORMATTER).atZone(ZoneId.systemDefault()).toInstant())
|
|
|
|
|
|
fbStatsVO.setEndTime(weekDto.getEndTime());//Date.from(LocalDateTime.parse(weekDto.getEndTime(), SECOND_FORMATTER).atZone(ZoneId.systemDefault()).toInstant())
|
2024-06-07 16:45:21 +08:00
|
|
|
|
// System.out.println("周统计:"+weekWarnNum +"个");
|
2024-06-11 14:50:42 +08:00
|
|
|
|
return ResultJson.ok(fbStatsVO);
|
|
|
|
|
|
}
|
2024-06-13 15:11:45 +08:00
|
|
|
|
} else {
|
2024-06-11 14:50:42 +08:00
|
|
|
|
ApiDto searchDto = new ApiDto();
|
|
|
|
|
|
ArrayList<ApiDto.Filter> filter = Lists.newArrayList();
|
|
|
|
|
|
searchDto.setStartTime(startTime);
|
|
|
|
|
|
searchDto.setEndTime(endTime);
|
|
|
|
|
|
searchDto.setPageNumber(dto.getPageNumber());
|
|
|
|
|
|
searchDto.setPageSize(99999);
|
|
|
|
|
|
searchDto.setFilter(filter);
|
|
|
|
|
|
String searchstr = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(searchDto));
|
|
|
|
|
|
JSONObject searchjson = JSON.parseObject(searchstr);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
System.out.println("searchjson:" + searchjson);
|
2024-06-11 14:50:42 +08:00
|
|
|
|
FBStatsVO fbStatsVO = null;
|
|
|
|
|
|
if (searchjson != null && searchjson.getInteger("code") == HttpStatus.SC_OK) {
|
|
|
|
|
|
List<WarningData> data = searchjson.getJSONArray("data").toJavaList(WarningData.class);
|
|
|
|
|
|
fbStatsVO = getCount3(data);
|
2024-06-12 11:13:18 +08:00
|
|
|
|
fbStatsVO.setStartTime(startTime);
|
|
|
|
|
|
fbStatsVO.setEndTime(endTime);
|
2024-06-11 14:50:42 +08:00
|
|
|
|
return ResultJson.ok(fbStatsVO);
|
|
|
|
|
|
}
|
2024-06-07 16:45:21 +08:00
|
|
|
|
}
|
2024-06-11 14:50:42 +08:00
|
|
|
|
return null;
|
2024-06-07 16:45:21 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-13 15:11:45 +08:00
|
|
|
|
private FBStatsVO getCount3(List<WarningData> data) {
|
2024-06-07 16:45:21 +08:00
|
|
|
|
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,查找有没有呼叫过
|
2024-06-13 15:11:45 +08:00
|
|
|
|
for (WarningData.Warning warning : orgList) {
|
2024-06-07 16:45:21 +08:00
|
|
|
|
List<WarnMsgFB> msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(warning.getId()));//查询msgfb
|
|
|
|
|
|
String cn = warning.getEffectArea();
|
|
|
|
|
|
String[] cnList = cn.split(",");
|
2024-06-13 15:11:45 +08:00
|
|
|
|
for (int i = 0; i < cnList.length; i++) {
|
2024-06-07 16:45:21 +08:00
|
|
|
|
cnOrgCallList.add(cnList[i]);
|
|
|
|
|
|
}
|
|
|
|
|
|
orgfbSum += msgfbList.size();
|
|
|
|
|
|
}
|
|
|
|
|
|
fbStats.setCallOrgSum(orgfbSum);
|
|
|
|
|
|
fbStats.setCnOrgCallList(new ArrayList<>(cnOrgCallList));
|
|
|
|
|
|
//查询叫应信息:根据warnid查询——暴雨红色预警
|
|
|
|
|
|
//根据预警id,查找有没有呼叫过
|
2024-06-13 15:11:45 +08:00
|
|
|
|
for (WarningData.Warning warning : redList) {
|
2024-06-07 16:45:21 +08:00
|
|
|
|
List<WarnMsgFB> msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(warning.getId()));//查询msgfb
|
|
|
|
|
|
String cn = warning.getEffectArea();
|
|
|
|
|
|
String[] cnList = cn.split(",");
|
2024-06-13 15:11:45 +08:00
|
|
|
|
for (int i = 0; i < cnList.length; i++) {
|
2024-06-07 16:45:21 +08:00
|
|
|
|
cnRedCallList.add(cnList[i]);
|
|
|
|
|
|
}
|
|
|
|
|
|
redfbSum += msgfbList.size();
|
|
|
|
|
|
}
|
|
|
|
|
|
fbStats.setCallOrgSum(redfbSum);
|
|
|
|
|
|
fbStats.setCnOrgCallList(new ArrayList<>(cnRedCallList));
|
|
|
|
|
|
return fbStats;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-13 15:11:45 +08:00
|
|
|
|
private List<QXWarningVO> getPageWarning(List<WarningData> data, int pageNumber, int pageSize) {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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());
|
2024-06-13 15:11:45 +08:00
|
|
|
|
dataList2 = dataList2.stream().filter(o -> "暴雨".equals(o.getWarnSignalType()) || "雷雨大风".equals(o.getWarnSignalType())).collect(Collectors.toList());
|
|
|
|
|
|
dataList2 = dataList2.stream().filter(o -> "红色".equals(o.getWarnSignalLevel()) || "橙色".equals(o.getWarnSignalLevel())).collect(Collectors.toList());
|
|
|
|
|
|
if (dataList2.size() >= (pageNumber - 1) * pageSize && dataList2.size() >= pageNumber * pageSize) {
|
|
|
|
|
|
for (int i = (pageNumber - 1) * pageSize; i < pageNumber * pageSize; i++) {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
QXWarningVO qxWarningVO = dataList2.get(i);
|
|
|
|
|
|
//根据预警id,查找有没有呼叫过
|
|
|
|
|
|
List<WarnMsgFB> msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(qxWarningVO.getWarnid()));//warning
|
2024-06-13 15:11:45 +08:00
|
|
|
|
if (msgfbList.size() > 0) {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
qxWarningVO.setStatus("1");
|
2024-06-13 15:11:45 +08:00
|
|
|
|
} else {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
qxWarningVO.setStatus("0");
|
|
|
|
|
|
}
|
|
|
|
|
|
qxWarningVOS.add(qxWarningVO);
|
|
|
|
|
|
}
|
2024-06-13 15:11:45 +08:00
|
|
|
|
} else if (dataList2.size() >= (pageNumber - 1) * pageSize && dataList2.size() < pageNumber * pageSize) {
|
|
|
|
|
|
for (int i = (pageNumber - 1) * pageSize; i < dataList2.size(); i++) {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
QXWarningVO qxWarningVO = dataList2.get(i);
|
|
|
|
|
|
//根据预警id,查找有没有呼叫过
|
|
|
|
|
|
List<WarnMsgFB> msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(qxWarningVO.getWarnid()));//warning
|
2024-06-13 15:11:45 +08:00
|
|
|
|
if (msgfbList.size() > 0) {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
qxWarningVO.setStatus("1");
|
2024-06-13 15:11:45 +08:00
|
|
|
|
} else {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
qxWarningVO.setStatus("0");
|
|
|
|
|
|
}
|
|
|
|
|
|
qxWarningVOS.add(qxWarningVO);
|
|
|
|
|
|
}
|
2024-06-13 15:11:45 +08:00
|
|
|
|
} else {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
return qxWarningVOS;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-13 15:11:45 +08:00
|
|
|
|
private List<QXWarningVO> getLatestTen(List<WarningData> data) {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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());
|
2024-06-13 15:11:45 +08:00
|
|
|
|
dataList2 = dataList2.stream().filter(o -> "暴雨".equals(o.getWarnSignalType()) || "雷雨大风".equals(o.getWarnSignalType())).collect(Collectors.toList());
|
|
|
|
|
|
dataList2 = dataList2.stream().filter(o -> "红色".equals(o.getWarnSignalLevel()) || "橙色".equals(o.getWarnSignalLevel())).collect(Collectors.toList());
|
|
|
|
|
|
if (dataList2.size() >= 10) {
|
|
|
|
|
|
for (int i = 0; i < 10; i++) {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
// 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
|
2024-06-13 15:11:45 +08:00
|
|
|
|
if (msgfbList.size() > 0) {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
qxWarningVO.setStatus("1");
|
2024-06-13 15:11:45 +08:00
|
|
|
|
} else {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
qxWarningVO.setStatus("0");
|
|
|
|
|
|
}
|
|
|
|
|
|
// qxWarningVO.setStatus();
|
|
|
|
|
|
qxWarningVOS.add(qxWarningVO);
|
|
|
|
|
|
}
|
2024-06-13 15:11:45 +08:00
|
|
|
|
} else {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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());
|
2024-06-11 17:38:55 +08:00
|
|
|
|
vo.setCreateTime(warning.getCreateTime());
|
|
|
|
|
|
vo.setStartTime(warning.getStartTime());
|
|
|
|
|
|
vo.setEndTime(warning.getEndTime());
|
2024-06-05 18:00:55 +08:00
|
|
|
|
// vo.setAdnm(publishUnit.replace("气象台", ""));
|
|
|
|
|
|
String adnm = publishUnit.replace("气象台", "");
|
|
|
|
|
|
//根据预警id,查找有没有呼叫过
|
|
|
|
|
|
List<WarnMsgFB> msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(warning.getId()));//warning
|
2024-06-13 15:11:45 +08:00
|
|
|
|
if (msgfbList.size() > 0) {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
vo.setStatus("1");
|
2024-06-13 15:11:45 +08:00
|
|
|
|
} else {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
vo.setStatus("0");
|
|
|
|
|
|
}
|
|
|
|
|
|
// String adcd = adinfoService.getAdcdByAdnm2(adnm);
|
|
|
|
|
|
// if (StringUtils.isNotBlank(adcd)){
|
|
|
|
|
|
//// vo.setAddressBooks(addressBookService.getListByAdnm(adcd));
|
|
|
|
|
|
// }else{
|
|
|
|
|
|
// log.info("当前行政区划不存在: " + adnm);
|
|
|
|
|
|
// }
|
|
|
|
|
|
respList.add(vo);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-13 15:11:45 +08:00
|
|
|
|
respList = respList.stream().filter(o -> "暴雨".equals(o.getWarnSignalType()) || "雷雨大风".equals(o.getWarnSignalType())).collect(Collectors.toList());
|
|
|
|
|
|
respList = respList.stream().filter(o -> "红色".equals(o.getWarnSignalLevel()) || "橙色".equals(o.getWarnSignalLevel())).collect(Collectors.toList());
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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;
|
|
|
|
|
|
}
|
2024-06-13 15:11:45 +08:00
|
|
|
|
|
|
|
|
|
|
static String zerofill(int number) {
|
|
|
|
|
|
return String.valueOf(number).length() > 1 ? String.valueOf(number) : "0" + String.valueOf(number);
|
2024-06-05 18:00:55 +08:00
|
|
|
|
}
|
2024-06-13 15:11:45 +08:00
|
|
|
|
|
|
|
|
|
|
static String CalendarDayStartToString(Calendar calendarTime) {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
return zerofill(year) + "-" + zerofill(month) + "-" + zerofill(day) + " " +
|
|
|
|
|
|
"00" + ":" + "00" + ":" + "00";
|
2024-06-05 18:00:55 +08:00
|
|
|
|
}
|
2024-06-13 15:11:45 +08:00
|
|
|
|
|
2024-06-11 11:48:38 +08:00
|
|
|
|
//统计函数
|
2024-06-13 15:11:45 +08:00
|
|
|
|
private int getCount2(List<WarningData> data) {
|
2024-06-05 18:00:55 +08:00
|
|
|
|
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());
|
2024-06-13 15:11:45 +08:00
|
|
|
|
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();
|
|
|
|
|
|
}
|
2024-06-13 15:11:45 +08:00
|
|
|
|
|
|
|
|
|
|
static String CalendarDayStartToString2(Calendar calendarTime) {
|
2024-06-12 11:13:18 +08:00
|
|
|
|
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);
|
2024-06-13 15:11:45 +08:00
|
|
|
|
return zerofill(year) + "-" + zerofill(month) + "-" + zerofill(day) + " " +
|
|
|
|
|
|
"00" + ":" + "08" + ":" + "00";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* https://shdata.cloudowr.cn/shwarn/msg/totalquery?stm=2024-06-01&etm=2024-06-12
|
|
|
|
|
|
*
|
|
|
|
|
|
* @return
|
|
|
|
|
|
*/
|
|
|
|
|
|
@ApiOperation(value = "预警统计")
|
|
|
|
|
|
@GetMapping(value = "/statistics/{stm}/{etm}")
|
|
|
|
|
|
public ResultJson<QXWarnStatisticsVo> totalquery(@PathVariable("stm") @ApiParam(name = "stm", value = "开始时间, yyyy-MM-dd") String stmStr,
|
|
|
|
|
|
@PathVariable("etm") @ApiParam(name = "etm", value = "结束时间, yyyy-MM-dd") String etmStr) {
|
|
|
|
|
|
|
2024-06-17 11:17:33 +08:00
|
|
|
|
DateTimeFormatter pattern = DateTimeFormatter.ofPattern(DateUtils.DATE_TIME_PATTERN);
|
|
|
|
|
|
LocalDateTime stm = LocalDateTime.parse(stmStr, DateTimeFormatter.ofPattern(DateUtils.DATE_TIME_PATTERN));
|
|
|
|
|
|
LocalDateTime etm = LocalDateTime.parse(etmStr, DateTimeFormatter.ofPattern(DateUtils.DATE_TIME_PATTERN));
|
2024-06-13 15:11:45 +08:00
|
|
|
|
|
|
|
|
|
|
QXWarnStatisticsVo vo = new QXWarnStatisticsVo();
|
|
|
|
|
|
|
2024-06-17 11:17:33 +08:00
|
|
|
|
String str = HttpUtil.getBySetCookie("https://shdata.cloudowr.cn/shwarn/msg/totalquery?stm=" + stm.toLocalDate().toString() + "&etm=" + etm.toLocalDate().toString(),
|
2024-06-13 15:11:45 +08:00
|
|
|
|
"userobj=%7B%22_id%22%3A%2260a7da8809d9cfa5622920a6%22%2C%22name%22%3A%22%E9%B2%A7%E7%9F%B3%E5%80%BC%E7%8F%AD%E4%B8%93%E7%94%A8%22%2C%22phone%22%3A%2218888888888%22%2C%22utype%22%3A0%2C%22dept%22%3A%22%E9%B2%A7%E7%9F%B3%22%2C%22tm%22%3A%222024-03-23T01%3A54%3A46.225Z%22%2C%22token%22%3A%226726a6d2e96b902d23381a19dcdc18cb%22%2C%22ctm%22%3A%222021-05-21T16%3A06%3A32.707Z%22%2C%22chkc%22%3Afalse%2C%22ywjk%22%3Afalse%2C%22yywh%22%3Afalse%7D; token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ3aXRoRXhwaXJlc0F0IjoxNzE4MzMzNTYzOTE3LCJleHAiOjE3MTgzMzM1NjMsInVzZXJuYW1lIjoiYWRtaW4ifQ.-leem8iPu0zzPuGtRTZ-Lp5m_mLBzX1UzJfLbDBSpjc");
|
|
|
|
|
|
JSONObject json = JSON.parseObject(str);
|
|
|
|
|
|
if (json != null && json.getInteger("ok") == 1) {
|
|
|
|
|
|
TotalQueryVo data = json.getJSONObject("results").toJavaObject(TotalQueryVo.class);
|
|
|
|
|
|
StringBuilder warnStr = new StringBuilder();
|
|
|
|
|
|
warnStr.append(stm.getYear()).append("年").append(stm.getMonthValue()).append("月").append(stm.getDayOfMonth()).append("日至")
|
|
|
|
|
|
.append(etm.getYear()).append("年").append(etm.getMonthValue()).append("月").append(etm.getDayOfMonth()).append("日,湖北省");
|
|
|
|
|
|
|
|
|
|
|
|
List<TotalQueryVo.Yjtj> yjtj = data.getYjtj();
|
|
|
|
|
|
TotalQueryVo.Summary summary = data.getSummary();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
long sum = yjtj.stream().mapToLong(TotalQueryVo.Yjtj::getCount).sum();
|
|
|
|
|
|
long wbSum = yjtj.stream().mapToLong(TotalQueryVo.Yjtj::getWbcount).sum();
|
|
|
|
|
|
|
|
|
|
|
|
List<TotalQueryVo.Page> page = data.getPage();
|
|
|
|
|
|
long yjrs = page.stream().mapToLong(TotalQueryVo.Page::getYjrs).sum();
|
|
|
|
|
|
long rs = page.stream().mapToLong(TotalQueryVo.Page::getRs).sum();
|
|
|
|
|
|
|
|
|
|
|
|
long dxzs = page.stream().mapToLong(TotalQueryVo.Page::getYj).sum()
|
|
|
|
|
|
+ page.stream().mapToLong(TotalQueryVo.Page::getZdy).sum()
|
|
|
|
|
|
+ page.stream().mapToLong(TotalQueryVo.Page::getQt).sum()
|
|
|
|
|
|
+ page.stream().mapToLong(TotalQueryVo.Page::getGb).sum();
|
2024-06-13 16:06:46 +08:00
|
|
|
|
|
2024-06-13 15:11:45 +08:00
|
|
|
|
List<TotalQueryVo.Outlist> outlist = data.getSsdxtj().getOutlist();
|
|
|
|
|
|
|
|
|
|
|
|
long szdxls = outlist.stream().filter(o -> !"420000000000".equals(o.getAdcd())).mapToLong(TotalQueryVo.Outlist::getSum).sum();
|
|
|
|
|
|
long szdxlsAll = outlist.stream().mapToLong(TotalQueryVo.Outlist::getSum).sum();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TotalQueryVo.Syw syw = data.getSyw();
|
|
|
|
|
|
TotalQueryVo.Sgxpt sgxpt = data.getSgxpt();
|
|
|
|
|
|
|
|
|
|
|
|
warnStr.append(yjtj.size()).append("个县共产生山洪预警").append(sum).append("次,")
|
|
|
|
|
|
.append("对外发布预警").append(wbSum).append("次,")
|
|
|
|
|
|
.append("共发送山洪预警短信").append(summary.getYj()).append("条,")
|
|
|
|
|
|
.append("涉及防汛责任人").append(yjrs).append("人次,")
|
|
|
|
|
|
.append("另发送防洪警示短信").append(dxzs - summary.getYj()).append("条,")
|
|
|
|
|
|
.append("涉及防汛责任人").append(rs - yjrs).append("人次;")
|
|
|
|
|
|
.append("市级平台共发送防洪警示短信").append(szdxls).append("条,")
|
|
|
|
|
|
.append("涉及防汛责任人").append(szdxls).append("人次;")
|
|
|
|
|
|
.append("省级平台共发送防洪警示、运维提示短信").append(syw.getSum() + sgxpt.getCNT() + szdxlsAll).append("条,")
|
|
|
|
|
|
.append("涉及防汛责任人").append(syw.getRs() + sgxpt.getRS() + szdxlsAll).append("人次。")
|
2024-06-13 16:06:46 +08:00
|
|
|
|
;
|
2024-06-13 15:11:45 +08:00
|
|
|
|
vo.setShWarnStr(warnStr.toString());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-17 11:17:33 +08:00
|
|
|
|
List<QXWarning> list = service.getWarnAndMsg(stm.format(pattern), etm.format(pattern));
|
2024-06-13 15:11:45 +08:00
|
|
|
|
if (CollectionUtils.isNotEmpty(list)) {
|
|
|
|
|
|
StringBuilder warnStr = new StringBuilder();
|
|
|
|
|
|
|
|
|
|
|
|
warnStr.append(stm.getYear()).append("年").append(stm.getMonthValue()).append("月").append(stm.getDayOfMonth()).append("日至")
|
|
|
|
|
|
.append(etm.getYear()).append("年").append(etm.getMonthValue()).append("月").append(etm.getDayOfMonth()).append("日,");
|
|
|
|
|
|
|
2024-06-17 11:17:33 +08:00
|
|
|
|
List<QXWarning> qxWarnings = service.lambdaQuery().between(QXWarning::getPublishTime, stm, etm).list();
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, List<QXWarning>> map = qxWarnings.stream()
|
2024-06-13 15:11:45 +08:00
|
|
|
|
.collect(Collectors.groupingBy(QXWarning::getWarnSignalLevel));
|
|
|
|
|
|
List<QXWarning> orange = map.get("橙色");
|
|
|
|
|
|
List<QXWarning> red = map.get("红色");
|
|
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(orange) && CollectionUtils.isNotEmpty(red)) {
|
|
|
|
|
|
warnStr.append("我省共产生橙色气象预警").append(orange.size()).append("次,电话叫应");
|
|
|
|
|
|
Map<String, List<QXWarning>> orangeList = orange.stream().collect(Collectors.groupingBy(QXWarning::getCtnm, Collectors.toList()));
|
|
|
|
|
|
|
|
|
|
|
|
orangeList.forEach((k, v) -> {
|
|
|
|
|
|
warnStr.append(getCnnmStr(v));
|
|
|
|
|
|
});
|
2024-06-13 16:06:46 +08:00
|
|
|
|
warnStr.setCharAt(warnStr.length() - 1, '。');
|
2024-06-13 15:11:45 +08:00
|
|
|
|
|
|
|
|
|
|
warnStr.append("红色气象预警").append(red.size()).append("次,电话叫应");
|
|
|
|
|
|
Map<String, List<QXWarning>> redList = red.stream().collect(Collectors.groupingBy(QXWarning::getCtnm, Collectors.toList()));
|
|
|
|
|
|
|
|
|
|
|
|
redList.forEach((k, v) -> {
|
|
|
|
|
|
warnStr.append(getCnnmStr(v));
|
|
|
|
|
|
});
|
2024-06-13 16:06:46 +08:00
|
|
|
|
warnStr.setCharAt(warnStr.length() - 1, '。');
|
2024-06-13 15:11:45 +08:00
|
|
|
|
|
|
|
|
|
|
} else if (CollectionUtils.isNotEmpty(orange) && CollectionUtils.isEmpty(red)) {
|
|
|
|
|
|
warnStr.append("我省共产生橙色气象预警").append(orange.size()).append("次,电话叫应");
|
|
|
|
|
|
Map<String, List<QXWarning>> orangeList = orange.stream().collect(Collectors.groupingBy(QXWarning::getCtnm, Collectors.toList()));
|
|
|
|
|
|
|
|
|
|
|
|
orangeList.forEach((k, v) -> {
|
|
|
|
|
|
warnStr.append(getCnnmStr(v));
|
|
|
|
|
|
});
|
2024-06-13 16:06:46 +08:00
|
|
|
|
warnStr.setCharAt(warnStr.length() - 1, '。');
|
2024-06-13 15:11:45 +08:00
|
|
|
|
|
|
|
|
|
|
} else if (CollectionUtils.isNotEmpty(red) && CollectionUtils.isEmpty(orange)) {
|
|
|
|
|
|
warnStr.append("我省共产生红色气象预警").append(red.size()).append("次,电话叫应");
|
|
|
|
|
|
Map<String, List<QXWarning>> redList = red.stream().collect(Collectors.groupingBy(QXWarning::getCtnm, Collectors.toList()));
|
|
|
|
|
|
|
|
|
|
|
|
redList.forEach((k, v) -> {
|
|
|
|
|
|
warnStr.append(getCnnmStr(v));
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
vo.setByWarnStr(warnStr.toString());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return ResultJson.ok(vo);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private StringBuilder getCnnmStr(List<QXWarning> list) {
|
|
|
|
|
|
List<String> lists = list.stream().map(QXWarning::getCnnm).distinct().collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
HashSet<String> cnnmSet = Sets.newHashSet();
|
|
|
|
|
|
for (String str : lists) {
|
|
|
|
|
|
String[] split = str.split(",");
|
|
|
|
|
|
cnnmSet.addAll(Arrays.asList(split));
|
|
|
|
|
|
}
|
|
|
|
|
|
StringBuilder builder = new StringBuilder();
|
|
|
|
|
|
cnnmSet.forEach(s -> builder.append(s).append("、"));
|
|
|
|
|
|
|
|
|
|
|
|
return builder;
|
2024-06-12 11:13:18 +08:00
|
|
|
|
}
|
2024-06-13 15:11:45 +08:00
|
|
|
|
}
|