fxkh-txl-service/src/main/java/com/whdc/controller/QXWarnController.java

603 lines
29 KiB
Java
Raw Normal View History

package com.whdc.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Sets;
import com.whdc.model.dto.ApiDto;
import com.whdc.model.dto.GroupWarningDto;
import com.whdc.model.dto.WarnDppleDto;
import com.whdc.model.entity.AddressBook;
import com.whdc.model.entity.WarnMsgFB;
import com.whdc.model.vo.*;
import com.whdc.service.IAddressBookService;
import com.whdc.service.IAdinfoService;
import com.whdc.service.IWarnMsgFBService;
import com.whdc.utils.HttpUtil;
import com.whdc.utils.ResultJson;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
import java.util.stream.Collectors;
import static com.whdc.controller.WarningController.THIS_REDIS_KEY;
//湖北省防汛抗旱调度系统-气象预警
@Slf4j
@Api(tags = "预警 - Controller")
@RestController
@RequestMapping("/qxwarning")
public class QXWarnController {
@Autowired
private IAddressBookService addressBookService;
@Autowired
private IAdinfoService adinfoService;
@Autowired
private IWarnMsgFBService warnMsgFBService;
/**
* -
*
* @param dto
* @return
*/
@ApiOperation(value = "气象预警-正在生效的预警信息")
@PostMapping("/getGroupWarning")
@Cacheable(value = THIS_REDIS_KEY, key = "#root.method.name+':'+#dto.toString()")
public ResultJson<List<QXWarningVO>> getGroupWarning(
@RequestBody GroupWarningDto dto) {
ApiDto apiDto = new ApiDto();
// 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);
return ResultJson.ok(getList(data, publishUnit, warnSignalLevel, warnSignalType));
}
return ResultJson.ok(json);
}
/**
*
*/
@ApiOperation(value = "获取预警信息的防御责任人")
@PostMapping("/getDpple")
@Cacheable(value = THIS_REDIS_KEY, key = "#root.method.name+':'+#dto.toString()")
public ResultJson<List<WarnDppleVO>> getDpple(
@RequestBody WarnDppleDto dto) {
List<WarnDppleVO> warnDpples = new ArrayList<>();
String[] cnnms = dto.getCnnm().split(",");
for(int i=0;i<cnnms.length;i++){
String cnnm = cnnms[i];
String cnnm2 = cnnm.replace("县","").replace("区","");
String adcd = adinfoService.getAdcdByAdnm2(cnnm2);//根据区县的名字找到对应的adcd
System.out.println(adcd);
if (StringUtils.isNotBlank(adcd)){
List<AddressBook> dpples = addressBookService.getListByAdnm(adcd);
System.out.println("dpple个数"+dpples.size());
for(AddressBook dpple:dpples){
WarnDppleVO warndpple = new WarnDppleVO();
warndpple.setCtnm(dto.getCtnm());
warndpple.setCnnm(cnnm);
warndpple.setName(dpple.getName());
warndpple.setPosition(dpple.getPosition());
warndpple.setPhone(dpple.getPhone());
warnDpples.add(warndpple);
}
}else{
log.info("当前行政区划不存在: " + dto.getCnnm());
}
}
return ResultJson.ok(warnDpples);
}
/**
*
*
* @param dto
* @return
*/
@ApiOperation(value = "历史气象预警统计")
@PostMapping("/getHistoryStats")
@Cacheable(value = THIS_REDIS_KEY, key = "#root.method.name+':'+#dto.toString()")
public ResultJson<WarnStatsVO> getHistoryStats(@RequestBody GroupWarningDto dto) {
WarnStatsVO warnStatsVO = new WarnStatsVO();
int dayWarnNum = 0;//日预警个数
int weekWarnNum = 0;//周预警个数
int monthWarnNum = 0;//月预警个数
int yearWarnNum = 0;//年预警个数
List<QXWarningVO> warnList = new ArrayList<>();
//当前时间
Calendar startCalendarDay = Calendar.getInstance();
int year = startCalendarDay.get(Calendar.YEAR);
int month = startCalendarDay.get(Calendar.MONTH) + 1; //第一个月从0开始所以得到月份1
int day = startCalendarDay.get(Calendar.DAY_OF_MONTH);
int hour = startCalendarDay.get(Calendar.HOUR_OF_DAY);
int minute = startCalendarDay.get(Calendar.MINUTE);
int second = startCalendarDay.get(Calendar.SECOND);
String nowTime = zerofill(year)+"-"+zerofill(month)+"-"+zerofill(day)+" "+
zerofill(hour)+":"+zerofill(minute)+":"+zerofill(second);
System.out.println(nowTime);
//当前时间往前24小时——今日预警统计
String dayStartTime = zerofill(year)+"-"+zerofill(month)+"-"+zerofill(day)+" "+
"00"+":"+"00"+":"+"00";
System.out.println(dayStartTime);
ApiDto dayDto = new ApiDto();
dayDto.setStartTime(dayStartTime);
dayDto.setEndTime(nowTime);
dayDto.setPageNumber(dto.getPageNumber());
dayDto.setPageSize(99999);
ArrayList<ApiDto.Filter> filter = Lists.newArrayList();
String publishUnit = dto.getPublishUnit();
String warnSignalLevel = dto.getWarnSignalLevel();
String warnSignalType = dto.getWarnSignalType();
dayDto.setFilter(filter);
String daystr = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(dayDto));
// String str = HttpUtil.sendPost("http://127.0.0.1:20000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(apiDto));
JSONObject dayjson = JSON.parseObject(daystr);
if (dayjson != null && dayjson.getInteger("code") == HttpStatus.SC_OK) {
List<WarningData> data = dayjson.getJSONArray("data").toJavaList(WarningData.class);
// return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType));
// List<WarningHistoryListVo> listWarnStats = getCount(data, publishUnit, warnSignalLevel, warnSignalType);
// System.out.println("日统计:"+listWarnStats.size());
// for(WarningHistoryListVo warnList:listWarnStats){
// System.out.println("日统计-"+warnList.getSumCount()+"个");
// }
dayWarnNum = getCount2(data);
System.out.println("日统计:"+dayWarnNum +"个");
}
//当前时间往前7天——本周预警统计
int day_of_week = startCalendarDay.get(Calendar.DAY_OF_WEEK);
int weekminus = day_of_week == 0?7: day_of_week - 1;
Calendar weekStartDay = Calendar.getInstance();
weekStartDay.add(Calendar.DAY_OF_YEAR, (weekminus-1)*(-1));
String weekStartTime = CalendarDayStartToString(weekStartDay);
System.out.println(weekStartTime);
ApiDto weekDto = new ApiDto();
weekDto.setStartTime(weekStartTime);
weekDto.setEndTime(nowTime);
weekDto.setPageNumber(dto.getPageNumber());
weekDto.setPageSize(99999);
weekDto.setFilter(filter);
String weekstr = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(weekDto));
JSONObject weekjson = JSON.parseObject(weekstr);
System.out.println("weekstr:"+weekjson);
if (weekjson != null && weekjson.getInteger("code") == HttpStatus.SC_OK) {
List<WarningData> data = weekjson.getJSONArray("data").toJavaList(WarningData.class);
// return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType));
// List<WarningHistoryListVo> listWarnStats = getCount(data, publishUnit, warnSignalLevel, warnSignalType);
// System.out.println("周统计:"+listWarnStats.size());
// for(WarningHistoryListVo warnList:listWarnStats){
// System.out.println("周统计-"+warnList.getSumCount()+"个");
// }
weekWarnNum = getCount2(data);
System.out.println("周统计:"+weekWarnNum +"个");
}
//当前时间往前30天——本月预警统计
int day_of_month = startCalendarDay.get(Calendar.DAY_OF_MONTH);
Calendar monthStartDay = Calendar.getInstance();
int monthdayminus = day_of_month-1;
monthStartDay.add(Calendar.DAY_OF_YEAR, monthdayminus*(-1));
String monthStartTime = CalendarDayStartToString(monthStartDay);
System.out.println(monthStartTime);
ApiDto monthDto = new ApiDto();
monthDto.setStartTime(monthStartTime);
monthDto.setEndTime(nowTime);
monthDto.setPageNumber(dto.getPageNumber());
monthDto.setPageSize(99999);
monthDto.setFilter(filter);
String monthstr = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(monthDto));
JSONObject monthjson = JSON.parseObject(monthstr);
System.out.println("monthstr:"+monthjson);
if (monthjson != null && monthjson.getInteger("code") == HttpStatus.SC_OK) {
List<WarningData> data = monthjson.getJSONArray("data").toJavaList(WarningData.class);
// return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType));
// List<WarningHistoryListVo> listWarnStats = getCount(data, publishUnit, warnSignalLevel, warnSignalType);
// System.out.println("月统计:"+listWarnStats.size());
// for(WarningHistoryListVo warnList:listWarnStats){
// System.out.println("月统计-"+warnList.getSumCount()+"个");
// }
monthWarnNum = getCount2(data);
System.out.println("月统计:"+monthWarnNum +"个");
}
//当前时间往前360天——全年预警数
int day_of_year = startCalendarDay.get(Calendar.DAY_OF_YEAR);
Calendar yearStartDay = Calendar.getInstance();
int yeardayminus = day_of_year - 1;
yearStartDay.add(Calendar.DAY_OF_YEAR, yeardayminus*(-1));
String yearStartTime = CalendarDayStartToString(yearStartDay);
System.out.println(yearStartTime);
ApiDto yearDto = new ApiDto();
yearDto.setStartTime(yearStartTime);
yearDto.setEndTime(nowTime);
yearDto.setPageNumber(dto.getPageNumber());
yearDto.setPageSize(99999);
yearDto.setFilter(filter);
String yearstr = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(yearDto));
JSONObject yearjson = JSON.parseObject(yearstr);
System.out.println("yearstr:"+yearjson);
if (yearjson != null && yearjson.getInteger("code") == HttpStatus.SC_OK) {
List<WarningData> data = yearjson.getJSONArray("data").toJavaList(WarningData.class);
//// return ResultJson.ok(getCount(data, publishUnit, warnSignalLevel, warnSignalType));
// List<WarningHistoryListVo> listWarnStats = getCount(data, publishUnit, warnSignalLevel, warnSignalType);
// System.out.println("年统计:"+listWarnStats.size());
// for(WarningHistoryListVo warnList:listWarnStats){
// System.out.println("年统计-"+warnList.getSumCount()+"个");
// }
yearWarnNum = getCount2(data);
System.out.println("年统计:"+yearWarnNum +"个");
}
warnStatsVO.setDayWarnNum(dayWarnNum);
warnStatsVO.setWeekWarnNum(weekWarnNum);
warnStatsVO.setMonthWarnNum(monthWarnNum);
warnStatsVO.setYearWarnNum(yearWarnNum);
//查找最近10条数据,放到warnList属性上
// List<QXWarningVO> qxWarningList = getLatestTen(data);
return ResultJson.ok(warnStatsVO);
}
/**
*
*
* @param dto
* @return
*/
@ApiOperation(value = "历史气象预警统计")
@PostMapping("/getHistoryWarning")
@Cacheable(value = THIS_REDIS_KEY, key = "#root.method.name+':'+#dto.toString()")
public ResultJson<QXWarningVO> getHistoryGroupWarning(@RequestBody GroupWarningDto dto) {
List<QXWarningVO> warnList = new ArrayList<>();
ApiDto apiDto = new ApiDto();
// apiDto.setStartTime(dto.getStartTime());//一年的起始时间
// apiDto.setEndTime(dto.getEndTime());//当前时间
apiDto.setPageNumber(dto.getPageNumber());//第几页
apiDto.setPageSize(dto.getPageSize());//一页10个
ArrayList<ApiDto.Filter> filter = Lists.newArrayList();
int pageNumber = dto.getPageNumber();
int pageSize = dto.getPageSize();
//当前时间
Calendar startCalendarDay = Calendar.getInstance();
int year = startCalendarDay.get(Calendar.YEAR);
int month = startCalendarDay.get(Calendar.MONTH) + 1; //第一个月从0开始所以得到月份1
int day = startCalendarDay.get(Calendar.DAY_OF_MONTH);
int hour = startCalendarDay.get(Calendar.HOUR_OF_DAY);
int minute = startCalendarDay.get(Calendar.MINUTE);
int second = startCalendarDay.get(Calendar.SECOND);
String nowTime = zerofill(year)+"-"+zerofill(month)+"-"+zerofill(day)+" "+
zerofill(hour)+":"+zerofill(minute)+":"+zerofill(second);
System.out.println(nowTime);
apiDto.setEndTime(nowTime);//当前时间
int day_of_year = startCalendarDay.get(Calendar.DAY_OF_YEAR);
Calendar yearStartDay = Calendar.getInstance();
int yeardayminus = day_of_year - 1;
yearStartDay.add(Calendar.DAY_OF_YEAR, yeardayminus*(-1));
String yearStartTime = CalendarDayStartToString(yearStartDay);
System.out.println(yearStartTime);
apiDto.setStartTime(yearStartTime);//一年的起始时间
String publishUnit = dto.getPublishUnit();
String warnSignalLevel = dto.getWarnSignalLevel();
String warnSignalType = dto.getWarnSignalType();
apiDto.setFilter(filter);
String str = HttpUtil.sendPost("http://223.75.53.141:8000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(apiDto));
// String str = HttpUtil.sendPost("http://127.0.0.1:20000/shzh/met/zyqxfw/api/warning/getGroupWarning", JSON.toJSONString(apiDto));
JSONObject json = JSON.parseObject(str);
if (json != null && json.getInteger("code") == HttpStatus.SC_OK) {
List<WarningData> data = json.getJSONArray("data").toJavaList(WarningData.class);
int count = getCount2(data);
System.out.println("历史预警数量:"+data.size());
System.out.println("历史预警数量2"+count);
//查找最近10条数据,放到warnList属性上
List<QXWarningVO> qxWarningList = null;
//getLatestTen(data);
if(Objects.isNull(pageNumber)||Objects.isNull(pageSize)){
System.out.println("pageNumber和pageSize有至少一个为null");
qxWarningList = getLatestTen(data);
}else{
System.out.println("pageNumber和pageSize全不为null");
System.out.println("pageNumber:"+pageNumber);
System.out.println("pageSize:"+pageSize);
qxWarningList = getPageWarning(data, pageNumber, pageSize);
}
return ResultJson.ok(qxWarningList);
}
return ResultJson.ok("");
}
private List<QXWarningVO> getPageWarning(List<WarningData> data, int pageNumber, int pageSize){
List<QXWarningVO> qxWarningVOS = new ArrayList<>();
// List<WarningData.Warning> warnList = Lists.newArrayList();//汇总
List<QXWarningVO> warnList = Lists.newArrayList();//汇总
for (WarningData datum : data) {
String ctnm = datum.getEffectArea();//市级范围
for (WarningData.TypeList typeList : datum.getTypeList()) {//里面的
// 预警类型
String type = typeList.getType();
List<WarningData.Warning> warnListOrigin = typeList.getWarnList();
// warnList = warnListFilter(warnList, reqPublishUnit, reqWarnSignalLevel, reqWarnSignalType);
for (WarningData.Warning warning : warnListOrigin) {
String cnnm = warning.getEffectArea();
QXWarningVO vo = new QXWarningVO();
String publishUnit = warning.getPublishUnit();
// vo.setTitle(publishUnit + "发布" + type + "预警");
vo.setCtnm(ctnm);//市级名称
vo.setCnnm(cnnm);//县级名称
vo.setPublishUnit(publishUnit);//发布单位
vo.setPublishTime(warning.getPublishTime());//预警发布时间
vo.setWarnSignalType(warning.getWarnSignalType());//预警类型
vo.setWarnSignalLevel(warning.getWarnSignalLevel());//预警级别
vo.setContent(warning.getContent());//预警内容
vo.setWarnid(warning.getId());
// vo.setAdnm(publishUnit.replace("气象台", ""));
String adnm = publishUnit.replace("气象台", "");
// String adcd = adinfoService.getAdcdByAdnm2(adnm);
// if (StringUtils.isNotBlank(adcd)){
//// vo.setAddressBooks(addressBookService.getListByAdnm(adcd));
// }else{
// log.info("当前行政区划不存在: " + adnm);
// }
warnList.add(vo);
}
}
}
List<QXWarningVO> dataList2 = warnList.stream().sorted(Comparator.comparing(QXWarningVO::getPublishTime).reversed()).collect(Collectors.toList());
if(dataList2.size()>=(pageNumber-1)*pageSize&&dataList2.size()>=pageNumber*pageSize){
for(int i=(pageNumber-1)*pageSize;i<pageNumber*pageSize;i++){
QXWarningVO qxWarningVO = dataList2.get(i);
//根据预警id查找有没有呼叫过
List<WarnMsgFB> msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(qxWarningVO.getWarnid()));//warning
if(msgfbList.size()>0){
qxWarningVO.setStatus("1");
}else{
qxWarningVO.setStatus("0");
}
qxWarningVOS.add(qxWarningVO);
}
}else if(dataList2.size()>=(pageNumber-1)*pageSize&&dataList2.size()<pageNumber*pageSize){
for(int i=(pageNumber-1)*pageSize;i<dataList2.size();i++){
QXWarningVO qxWarningVO = dataList2.get(i);
//根据预警id查找有没有呼叫过
List<WarnMsgFB> msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(qxWarningVO.getWarnid()));//warning
if(msgfbList.size()>0){
qxWarningVO.setStatus("1");
}else{
qxWarningVO.setStatus("0");
}
qxWarningVOS.add(qxWarningVO);
}
}else{
}
return qxWarningVOS;
}
private List<QXWarningVO> getLatestTen(List<WarningData> data){
List<QXWarningVO> qxWarningVOS = new ArrayList<>();
// List<WarningData.Warning> warnList = Lists.newArrayList();//汇总
List<QXWarningVO> warnList = Lists.newArrayList();//汇总
for (WarningData datum : data) {
String ctnm = datum.getEffectArea();//市级范围
for (WarningData.TypeList typeList : datum.getTypeList()) {//里面的
// 预警类型
String type = typeList.getType();
List<WarningData.Warning> warnListOrigin = typeList.getWarnList();
// warnList = warnListFilter(warnList, reqPublishUnit, reqWarnSignalLevel, reqWarnSignalType);
for (WarningData.Warning warning : warnListOrigin) {
String cnnm = warning.getEffectArea();
QXWarningVO vo = new QXWarningVO();
String publishUnit = warning.getPublishUnit();
// vo.setTitle(publishUnit + "发布" + type + "预警");
vo.setCtnm(ctnm);//市级名称
vo.setCnnm(cnnm);//县级名称
vo.setPublishUnit(publishUnit);//发布单位
vo.setPublishTime(warning.getPublishTime());//预警发布时间
vo.setWarnSignalType(warning.getWarnSignalType());//预警类型
vo.setWarnSignalLevel(warning.getWarnSignalLevel());//预警级别
vo.setContent(warning.getContent());//预警内容
vo.setWarnid(warning.getId());
// vo.setAdnm(publishUnit.replace("气象台", ""));
String adnm = publishUnit.replace("气象台", "");
// String adcd = adinfoService.getAdcdByAdnm2(adnm);
// if (StringUtils.isNotBlank(adcd)){
//// vo.setAddressBooks(addressBookService.getListByAdnm(adcd));
// }else{
// log.info("当前行政区划不存在: " + adnm);
// }
warnList.add(vo);
}
}
}
List<QXWarningVO> dataList2 = warnList.stream().sorted(Comparator.comparing(QXWarningVO::getPublishTime).reversed()).collect(Collectors.toList());
if(dataList2.size()>=10){
for(int i=0;i<10;i++){
// System.out.println("时间:"+dataList2.get(i).getPublishTime());
// QXWarningVO qxWarningVO = new QXWarningVO();
// qxWarningVO.setPublishTime(dataList2.get(i).getPublishTime());
// qxWarningVOS.add(qxWarningVO);
QXWarningVO qxWarningVO = dataList2.get(i);
//根据预警id查找有没有呼叫过
List<WarnMsgFB> msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(qxWarningVO.getWarnid()));//warning
if(msgfbList.size()>0){
qxWarningVO.setStatus("1");
}else{
qxWarningVO.setStatus("0");
}
// qxWarningVO.setStatus();
qxWarningVOS.add(qxWarningVO);
}
}else{
qxWarningVOS = dataList2;
}
return qxWarningVOS;
// respList.stream().sorted(Comparator.comparing(WarningListVo::getPublishTime).reversed()).collect(Collectors.toList())
}
/**
*
*
* @param data
* @return
*/
private List<QXWarningVO> getList(List<WarningData> data,
String reqPublishUnit,
String reqWarnSignalLevel,
String reqWarnSignalType) {
List<QXWarningVO> respList = Lists.newArrayList();
for (WarningData datum : data) {//最外层的列表
String ctnm = datum.getEffectArea();//市级范围
for (WarningData.TypeList typeList : datum.getTypeList()) {//里面的
// 预警类型
String type = typeList.getType();
List<WarningData.Warning> warnList = typeList.getWarnList();
warnList = warnListFilter(warnList, reqPublishUnit, reqWarnSignalLevel, reqWarnSignalType);
for (WarningData.Warning warning : warnList) {
String cnnm = warning.getEffectArea();
QXWarningVO vo = new QXWarningVO();
String publishUnit = warning.getPublishUnit();
// vo.setTitle(publishUnit + "发布" + type + "预警");
vo.setCtnm(ctnm);//市级名称
vo.setCnnm(cnnm);//县级名称
vo.setPublishUnit(publishUnit);//发布单位
vo.setPublishTime(warning.getPublishTime());//预警发布时间
vo.setWarnSignalType(warning.getWarnSignalType());//预警类型
vo.setWarnSignalLevel(warning.getWarnSignalLevel());//预警级别
vo.setContent(warning.getContent());//预警内容
vo.setWarnid(warning.getId());
// vo.setAdnm(publishUnit.replace("气象台", ""));
String adnm = publishUnit.replace("气象台", "");
//根据预警id查找有没有呼叫过
List<WarnMsgFB> msgfbList = warnMsgFBService.find(new WarnMsgFB().setWarnid(warning.getId()));//warning
if(msgfbList.size()>0){
vo.setStatus("1");
}else{
vo.setStatus("0");
}
// String adcd = adinfoService.getAdcdByAdnm2(adnm);
// if (StringUtils.isNotBlank(adcd)){
//// vo.setAddressBooks(addressBookService.getListByAdnm(adcd));
// }else{
// log.info("当前行政区划不存在: " + adnm);
// }
respList.add(vo);
}
}
}
return respList.stream().sorted(Comparator.comparing(QXWarningVO::getPublishTime).reversed())
.collect(Collectors.toList());
}
/**
*
*
* @return
*/
private List<WarningData.Warning> warnListFilter(List<WarningData.Warning> warnList,
String publishUnit,
String warnSignalLevel,
String warnSignalType
) {
if (StringUtils.isNotBlank(publishUnit)) {
HashSet<String> set = Sets.newHashSet(publishUnit.split(","));
if (CollectionUtils.isNotEmpty(set)) {
warnList = warnList.stream()
.filter(w ->
set.contains(w.getPublishUnit().split("气象")[0])
).collect(Collectors.toList());
}
}
if (StringUtils.isNotBlank(warnSignalLevel)) {
HashSet<String> set = Sets.newHashSet(warnSignalLevel.split(","));
if (CollectionUtils.isNotEmpty(set)) {
warnList = warnList.stream()
.filter(w ->
set.contains(w.getWarnSignalLevel())
).collect(Collectors.toList());
}
}
if (StringUtils.isNotBlank(warnSignalType)) {
HashSet<String> set = Sets.newHashSet(warnSignalType.split(","));
if (CollectionUtils.isNotEmpty(set)) {
warnList = warnList.stream()
.filter(w ->
set.contains(w.getWarnSignalType())
).collect(Collectors.toList());
}
}
return warnList;
}
static String zerofill(int number){
return String.valueOf(number).length()>1?String.valueOf(number):"0"+String.valueOf(number);
}
static String CalendarDayStartToString(Calendar calendarTime){
int year = calendarTime.get(Calendar.YEAR);
int month = calendarTime.get(Calendar.MONTH) + 1; //第一个月从0开始所以得到月份1
int day = calendarTime.get(Calendar.DAY_OF_MONTH);
int hour = calendarTime.get(Calendar.HOUR_OF_DAY);
int minute = calendarTime.get(Calendar.MINUTE);
int second = calendarTime.get(Calendar.SECOND);
return zerofill(year)+"-"+zerofill(month)+"-"+zerofill(day)+" "+
"00"+":"+"00"+":"+"00";
}
private int getCount2(List<WarningData> data){
int sum = 0;
List<WarningData.Warning> warnList = Lists.newArrayList();//汇总
for (WarningData datum : data) {
for (WarningData.TypeList typeList : datum.getTypeList()) {
warnList.addAll(typeList.getWarnList());
}
}
return warnList.size();
}
}