预警统计接口新增

master
徐杰盟 2024-06-13 15:11:45 +08:00
parent 23c0238a6d
commit 1e0b174c74
8 changed files with 445 additions and 89 deletions

View File

@ -15,6 +15,7 @@ import com.whdc.utils.HttpUtil;
import com.whdc.utils.ResultJson;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.compress.utils.Lists;
@ -23,10 +24,7 @@ import org.apache.http.HttpStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
@ -61,9 +59,9 @@ public class QXWarnController {
//根据warnid是否重复
if (CollectionUtils.isNotEmpty(
service.lambdaQuery()
.eq(QXWarning::getWarnid,dto.getWarnid()).list()
.eq(QXWarning::getWarnid, dto.getWarnid()).list()
)
){
) {
return ResultJson.error("该名称或编码重复");
}
@ -101,7 +99,7 @@ public class QXWarnController {
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++){
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();
@ -118,7 +116,7 @@ public class QXWarnController {
qxwarning.setCnnm(warningVO.getCnnm());
insert(qxwarning);
}
warningList = warningList.stream().filter(o->o.getStatus().equals("0")).collect(Collectors.toList());
warningList = warningList.stream().filter(o -> o.getStatus().equals("0")).collect(Collectors.toList());
return ResultJson.ok(warningList);
}
@ -135,15 +133,15 @@ public class QXWarnController {
@RequestBody WarnDppleDto dto) {
List<WarnDppleVO> warnDpples = new ArrayList<>();
String[] cnnms = dto.getCnnm().split(",");
for(int i=0;i<cnnms.length;i++){
for (int i = 0; i < cnnms.length; i++) {
String cnnm = cnnms[i];
String cnnm2 = cnnm.replace("县","").replace("区","");
String cnnm2 = cnnm.replace("县", "").replace("区", "");
// String adcd = adinfoService.getAdcdByAdnm2(cnnm2);//根据区县的名字找到对应的adcd
// System.out.println(adcd);
if (StringUtils.isNotBlank(cnnm2)){
if (StringUtils.isNotBlank(cnnm2)) {
List<AddressBookOld> dpples = addressBookOldService.getListByAdnm2(cnnm2);
System.out.println("dpple个数"+dpples.size());
for(AddressBookOld dpple:dpples){
System.out.println("dpple个数" + dpples.size());
for (AddressBookOld dpple : dpples) {
WarnDppleVO warndpple = new WarnDppleVO();
warndpple.setCtnm(dto.getCtnm());
warndpple.setCnnm(cnnm);
@ -152,7 +150,7 @@ public class QXWarnController {
warndpple.setPhone(dpple.getPhone());
warnDpples.add(warndpple);
}
}else{
} else {
log.info("当前行政区划不存在: " + dto.getCnnm());
}
}
@ -170,10 +168,10 @@ public class QXWarnController {
//根据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()
.eq(WarnMsgFB::getWarnid, dto.getWarnid())
.eq(WarnMsgFB::getCalledPhone, String.valueOf(dto.getCalledPhone())).list()
)
){
) {
return ResultJson.error("该名称或编码重复");
}
@ -206,12 +204,12 @@ public class QXWarnController {
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);
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";
String dayStartTime = zerofill(year) + "-" + zerofill(month) + "-" + zerofill(day) + " " +
"00" + ":" + "00" + ":" + "00";
System.out.println(dayStartTime);
ApiDto dayDto = new ApiDto();
@ -236,13 +234,13 @@ public class QXWarnController {
// System.out.println("日统计-"+warnList.getSumCount()+"个");
// }
dayWarnNum = getCount2(data);
System.out.println("日统计:"+dayWarnNum +"个");
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;
int weekminus = day_of_week == 0 ? 7 : day_of_week - 1;
Calendar weekStartDay = Calendar.getInstance();
weekStartDay.add(Calendar.DAY_OF_YEAR, (weekminus-1)*(-1));
weekStartDay.add(Calendar.DAY_OF_YEAR, (weekminus - 1) * (-1));
String weekStartTime = CalendarDayStartToString(weekStartDay);
System.out.println(weekStartTime);
ApiDto weekDto = new ApiDto();
@ -253,7 +251,7 @@ public class QXWarnController {
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);
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));
@ -263,13 +261,13 @@ public class QXWarnController {
// System.out.println("周统计-"+warnList.getSumCount()+"个");
// }
weekWarnNum = getCount2(data);
System.out.println("周统计:"+weekWarnNum +"个");
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));
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();
@ -280,7 +278,7 @@ public class QXWarnController {
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);
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));
@ -290,13 +288,13 @@ public class QXWarnController {
// System.out.println("月统计-"+warnList.getSumCount()+"个");
// }
monthWarnNum = getCount2(data);
System.out.println("月统计:"+monthWarnNum +"个");
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));
yearStartDay.add(Calendar.DAY_OF_YEAR, yeardayminus * (-1));
String yearStartTime = CalendarDayStartToString(yearStartDay);
System.out.println(yearStartTime);
ApiDto yearDto = new ApiDto();
@ -307,7 +305,7 @@ public class QXWarnController {
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);
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));
@ -317,7 +315,7 @@ public class QXWarnController {
// System.out.println("年统计-"+warnList.getSumCount()+"个");
// }
yearWarnNum = getCount2(data);
System.out.println("年统计:"+yearWarnNum +"个");
System.out.println("年统计:" + yearWarnNum + "个");
}
@ -330,7 +328,6 @@ public class QXWarnController {
// List<QXWarningVO> qxWarningList = getLatestTen(data);
return ResultJson.ok(warnStatsVO);
}
@ -366,19 +363,19 @@ public class QXWarnController {
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);
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)){
if (Objects.isNull(pageNumber) || Objects.isNull(pageSize)) {
System.out.println("pageNumber和pageSize有至少一个为null");
qxWarningList = getLatestTen(data);
}else{
} else {
System.out.println("pageNumber和pageSize全不为null");
System.out.println("pageNumber:"+pageNumber);
System.out.println("pageSize:"+pageSize);
System.out.println("pageNumber:" + pageNumber);
System.out.println("pageSize:" + pageSize);
qxWarningList = getPageWarning(data, pageNumber, pageSize);
}
historyWarnsVO.setWarnList(qxWarningList);
@ -400,7 +397,7 @@ public class QXWarnController {
public ResultJson<FBStatsVO> getFeedBackStats(@RequestBody GroupWarningDto dto) {
String startTime = dto.getStartTime();
String endTime = dto.getEndTime();
if(Objects.isNull(startTime)&&Objects.isNull(endTime)){
if (Objects.isNull(startTime) && Objects.isNull(endTime)) {
//当前时间
Calendar startCalendarDay = Calendar.getInstance();
int year = startCalendarDay.get(Calendar.YEAR);
@ -409,16 +406,16 @@ public class QXWarnController {
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)+" "+
"08"+":"+"00"+":"+"00";
String nowTime = zerofill(year) + "-" + zerofill(month) + "-" + zerofill(day) + " " +
"08" + ":" + "00" + ":" + "00";
System.out.println(nowTime);
ArrayList<ApiDto.Filter> filter = Lists.newArrayList();
FBStatsVO fbStatsVO = null;
//当前时间往前7天——本周预警统计
int day_of_week = startCalendarDay.get(Calendar.DAY_OF_WEEK);
int weekminus = day_of_week == 0?7: day_of_week - 1;
int weekminus = day_of_week == 0 ? 7 : day_of_week - 1;
Calendar weekStartDay = Calendar.getInstance();
weekStartDay.add(Calendar.DAY_OF_YEAR, (weekminus-1)*(-1));
weekStartDay.add(Calendar.DAY_OF_YEAR, (weekminus - 1) * (-1));
String weekStartTime = CalendarDayStartToString2(weekStartDay);
// Calendar weekStartDay = Calendar.getInstance();
// weekStartDay.add(Calendar.DAY_OF_YEAR, 37*(-1));
@ -432,7 +429,7 @@ public class QXWarnController {
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);
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));
@ -447,7 +444,7 @@ public class QXWarnController {
// System.out.println("周统计:"+weekWarnNum +"个");
return ResultJson.ok(fbStatsVO);
}
}else{
} else {
ApiDto searchDto = new ApiDto();
ArrayList<ApiDto.Filter> filter = Lists.newArrayList();
searchDto.setStartTime(startTime);
@ -457,7 +454,7 @@ public class QXWarnController {
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);
System.out.println("searchjson:"+searchjson);
System.out.println("searchjson:" + searchjson);
FBStatsVO fbStatsVO = null;
if (searchjson != null && searchjson.getInteger("code") == HttpStatus.SC_OK) {
List<WarningData> data = searchjson.getJSONArray("data").toJavaList(WarningData.class);
@ -470,7 +467,7 @@ public class QXWarnController {
return null;
}
private FBStatsVO getCount3(List<WarningData> data){
private FBStatsVO getCount3(List<WarningData> data) {
int sum = 0;
FBStatsVO fbStats = new FBStatsVO();
// Set<String> cnCallList = new ArrayList<>();
@ -495,11 +492,11 @@ public class QXWarnController {
fbStats.setRedWarnSum(redList.size());
//查询叫应信息根据warnid查询——暴雨橙色预警
//根据预警id查找有没有呼叫过
for(WarningData.Warning warning:orgList){
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++){
for (int i = 0; i < cnList.length; i++) {
cnOrgCallList.add(cnList[i]);
}
orgfbSum += msgfbList.size();
@ -508,11 +505,11 @@ public class QXWarnController {
fbStats.setCnOrgCallList(new ArrayList<>(cnOrgCallList));
//查询叫应信息根据warnid查询——暴雨红色预警
//根据预警id查找有没有呼叫过
for(WarningData.Warning warning:redList){
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++){
for (int i = 0; i < cnList.length; i++) {
cnRedCallList.add(cnList[i]);
}
redfbSum += msgfbList.size();
@ -522,7 +519,7 @@ public class QXWarnController {
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<WarningData.Warning> warnList = Lists.newArrayList();//汇总
List<QXWarningVO> warnList = Lists.newArrayList();//汇总
@ -561,39 +558,39 @@ public class QXWarnController {
}
}
List<QXWarningVO> dataList2 = warnList.stream().sorted(Comparator.comparing(QXWarningVO::getPublishTime).reversed()).collect(Collectors.toList());
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++){
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++) {
QXWarningVO qxWarningVO = dataList2.get(i);
//根据预警id查找有没有呼叫过
List<WarnMsgFB> msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(qxWarningVO.getWarnid()));//warning
if(msgfbList.size()>0){
if (msgfbList.size() > 0) {
qxWarningVO.setStatus("1");
}else{
} 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++){
} 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){
if (msgfbList.size() > 0) {
qxWarningVO.setStatus("1");
}else{
} else {
qxWarningVO.setStatus("0");
}
qxWarningVOS.add(qxWarningVO);
}
}else{
} else {
}
return qxWarningVOS;
}
private List<QXWarningVO> getLatestTen(List<WarningData> data){
private List<QXWarningVO> getLatestTen(List<WarningData> data) {
List<QXWarningVO> qxWarningVOS = new ArrayList<>();
// List<WarningData.Warning> warnList = Lists.newArrayList();//汇总
List<QXWarningVO> warnList = Lists.newArrayList();//汇总
@ -632,10 +629,10 @@ public class QXWarnController {
}
}
List<QXWarningVO> dataList2 = warnList.stream().sorted(Comparator.comparing(QXWarningVO::getPublishTime).reversed()).collect(Collectors.toList());
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++){
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++) {
// System.out.println("时间:"+dataList2.get(i).getPublishTime());
// QXWarningVO qxWarningVO = new QXWarningVO();
// qxWarningVO.setPublishTime(dataList2.get(i).getPublishTime());
@ -643,15 +640,15 @@ public class QXWarnController {
QXWarningVO qxWarningVO = dataList2.get(i);
//根据预警id查找有没有呼叫过
List<WarnMsgFB> msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(qxWarningVO.getWarnid()));//warning
if(msgfbList.size()>0){
if (msgfbList.size() > 0) {
qxWarningVO.setStatus("1");
}else{
} else {
qxWarningVO.setStatus("0");
}
// qxWarningVO.setStatus();
qxWarningVOS.add(qxWarningVO);
}
}else{
} else {
qxWarningVOS = dataList2;
}
return qxWarningVOS;
@ -698,9 +695,9 @@ public class QXWarnController {
String adnm = publishUnit.replace("气象台", "");
//根据预警id查找有没有呼叫过
List<WarnMsgFB> msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(warning.getId()));//warning
if(msgfbList.size()>0){
if (msgfbList.size() > 0) {
vo.setStatus("1");
}else{
} else {
vo.setStatus("0");
}
// String adcd = adinfoService.getAdcdByAdnm2(adnm);
@ -714,8 +711,8 @@ public class QXWarnController {
}
}
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());
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());
return respList.stream().sorted(Comparator.comparing(QXWarningVO::getPublishTime).reversed())
.collect(Collectors.toList());
}
@ -764,21 +761,24 @@ public class QXWarnController {
return warnList;
}
static String zerofill(int number){
return String.valueOf(number).length()>1?String.valueOf(number):"0"+String.valueOf(number);
static String zerofill(int number) {
return String.valueOf(number).length() > 1 ? String.valueOf(number) : "0" + String.valueOf(number);
}
static String CalendarDayStartToString(Calendar calendarTime){
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";
return zerofill(year) + "-" + zerofill(month) + "-" + zerofill(day) + " " +
"00" + ":" + "00" + ":" + "00";
}
//统计函数
private int getCount2(List<WarningData> data){
private int getCount2(List<WarningData> data) {
int sum = 0;
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
List<WarningData.Warning> warnList = Lists.newArrayList();//汇总
@ -791,18 +791,151 @@ public class QXWarnController {
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());
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());
return warnList.size();
}
static String CalendarDayStartToString2(Calendar calendarTime){
static String CalendarDayStartToString2(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"+":"+"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) {
LocalDate stm = LocalDate.parse(stmStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDate etm = LocalDate.parse(etmStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
QXWarnStatisticsVo vo = new QXWarnStatisticsVo();
String str = HttpUtil.getBySetCookie("https://shdata.cloudowr.cn/shwarn/msg/totalquery?stm=" + stm + "&etm=" + etm,
"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();
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("人次。")
;
vo.setShWarnStr(warnStr.toString());
}
List<QXWarning> list = service.getWarnAndMsg(stm.toString(), etm.toString());
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("日,");
Map<String, List<QXWarning>> map = list.stream()
.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));
});
warnStr.setCharAt(warnStr.length() -1 , '。');
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));
});
warnStr.setCharAt(warnStr.length() -1 , '。');
} 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));
});
warnStr.setCharAt(warnStr.length() -1 , '。');
} 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;
}
}

View File

@ -8,4 +8,6 @@ import java.util.List;
public interface QXWarningMapper extends BaseMapper<QXWarning> {
List<QXWarning> find(@Param("dto")QXWarning dto);
List<QXWarning> getWarnAndMsg(@Param("stm") String stm,@Param("etm") String etm);
}

View File

@ -0,0 +1,21 @@
package com.whdc.model.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Description:
* Created by XuSan on 2024/6/13.
*
* @author XuSan
* @version 1.0
*/
@Data
public class QXWarnStatisticsVo {
@ApiModelProperty(value = "山洪预警叫应")
private String ShWarnStr;
@ApiModelProperty(value = "暴雨预警叫应")
private String ByWarnStr;
}

View File

@ -0,0 +1,102 @@
package com.whdc.model.vo;
import lombok.Data;
import java.util.List;
/**
* Description:
* Created by XuSan on 2024/6/13.
*
* @author XuSan
* @version 1.0
*/
@Data
public class TotalQueryVo {
private List<Page> page;
private Sgxpt sgxpt;
private Ssdxtj ssdxtj;
private Summary summary;
private Syw syw;
private List<Yjtj> yjtj;
@Data
public static class Syw {
private Long rs;
private Long sum;
}
@Data
public static class Outlist {
private String adcd;
private String adnm;
private Long sum;
}
@Data
public static class Summary {
private Long gb;
private Long qt;
private Long rs;
private Long wbcount;
private Long yj;
private Long zdy;
private Long zs;
}
@Data
public static class Sgxpt {
private Long cNT;
private Long rS;
}
@Data
public static class Page {
private _id _id;
private Long gb;
private Long qt;
private Long rs;
private Long wbcount;
private Long yj;
private Long yjrs;
private Long zdy;
}
@Data
public static class _id {
private String adcd;
private String adnm;
}
@Data
public static class Ssdxtj {
private Long allcnt;
private List<Outlist> outlist;
}
@Data
public static class Yjtj {
private _id _id;
private Long count;
private Long sdcount;
private Long wbcount;
}
}

View File

@ -7,4 +7,5 @@ import java.util.List;
public interface IQXWarningService extends IService<QXWarning> {
List<QXWarning> find(QXWarning dto);
List<QXWarning> getWarnAndMsg(String stm,String etm);
}

View File

@ -16,4 +16,9 @@ public class QXWarningServiceImpl extends ServiceImpl<QXWarningMapper, QXWarnin
public List<QXWarning> find(QXWarning dto) {
return null;
}
@Override
public List<QXWarning> getWarnAndMsg(String stm, String etm) {
return getBaseMapper().getWarnAndMsg(stm,etm);
}
}

View File

@ -136,6 +136,85 @@ public class HttpUtil {
}
public static String getBySetCookie(String _url,String cookie) {
InputStream is = null;
BufferedReader br = null;
HttpURLConnection conn = null;
String jstr = null;
try {
log.info("请求地址: " + _url);
URL url = new URL(_url);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
if (StringUtils.isNotBlank(cookie)){
// 设置cookie
conn.setRequestProperty("Cookie", cookie);
}
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
conn.connect();
if (conn.getResponseCode() == 200) {
is = conn.getInputStream();
if (is != null) {
br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
StringBuffer sb = new StringBuffer();
String tmp = "";
while ((tmp = br.readLine()) != null) {
sb.append(tmp);
}
jstr = sb.toString();
log.info("响应参数: " + jstr);
jstr = jsonFormat(jstr);
return jstr;
}
} else if (conn.getResponseCode() == 500) {
is = conn.getErrorStream();
if (is != null) {
br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
StringBuffer sb = new StringBuffer();
String tmp = "";
while ((tmp = br.readLine()) != null) {
sb.append(tmp);
}
jstr = sb.toString();
if (jstr.contains("Token失效请重新登录")) { // 第三方token失效处理
return "{\"code\": 301,\"extMessage\":\"Token失效请重新登录\"}";
}
}
}
} catch (Exception ignore) {
} finally {
if (br != null) {
try {
br.close();
} catch (IOException ignore) {
}
}
if (is != null) {
try {
is.close();
} catch (IOException ignore) {
}
}
if (conn != null) {
try {
conn.disconnect();
} catch (Exception ignore) {
}
}
}
return null;
}
public static String get(String _url, String authorization) {
InputStream is = null;
BufferedReader br = null;

View File

@ -4,4 +4,17 @@
<select id="find" resultType="com.whdc.model.entity.QXWarning">
</select>
<select id="getWarnAndMsg" resultType="com.whdc.model.entity.QXWarning">
SELECT
Q.WARN_SIGNAL_LEVEL,
Q.CTNM,
Q.CNNM
FROM
FXKH_TXL.WARNMSG_FEEDBACK WF
LEFT JOIN FXKH_TXL.QXWARNING Q ON WF.WARNID = Q.WARNID
WHERE
WF.HANDLE_TIME BETWEEN #{stm} AND #{etm}
AND Q.WARN_SIGNAL_LEVEL IS NOT NULL
AND Q.CNNM IS NOT NULL
</select>
</mapper>