| | |
| | | package cn.gistack.sm.sjztmd.word.vo; |
| | | |
| | | import cn.gistack.alerts.sms.vo.SmsResultVO; |
| | | import cn.gistack.sm.intelligentCall.entity.CallTask; |
| | | import cn.gistack.sm.intelligentCall.vo.CallTaskResultVO; |
| | | import lombok.Data; |
| | | import org.springblade.core.tool.utils.DateUtil; |
| | | import org.springblade.core.tool.utils.ObjectUtil; |
| | |
| | | |
| | | private String smsResultInfo; |
| | | |
| | | public OverWord(List<TotalInfo> totalList, List<DzkInfo> dzkList, List<OverDetail> overDetailList,List<SzInfo> szInfoList,List<SmsResultVO> resultVOList){ |
| | | public OverWord(List<TotalInfo> totalList, List<DzkInfo> dzkList, List<OverDetail> overDetailList, List<SzInfo> szInfoList, List<SmsResultVO> resultVOList, List<CallTaskResultVO> whtjList,String isNew) { |
| | | this.tm = new SimpleDateFormat("MM月dd日H时").format(new Date()); |
| | | this.hour = new SimpleDateFormat("H时").format(new Date()); |
| | | |
| | | formatTotalInfo(totalList); |
| | | formatDzkInfo(dzkList); |
| | | formatSzInfo(szInfoList); |
| | | formatSmsResultInfo(resultVOList); |
| | | formatSmsResultInfo(resultVOList, whtjList); |
| | | } |
| | | |
| | | private void formatSmsResultInfo(List<SmsResultVO> resultVOList) { |
| | | private void formatSmsResultInfo(List<SmsResultVO> resultVOList, List<CallTaskResultVO> whtjList) { |
| | | // 短信预警处理 |
| | | int dxyjCount = 0; |
| | | for (SmsResultVO vo : resultVOList) { |
| | | int number = null == vo.getNumber()?0:vo.getNumber(); |
| | | int number = null == vo.getNumber() ? 0 : vo.getNumber(); |
| | | dxyjCount = dxyjCount + number; |
| | | } |
| | | |
| | | String str = StringUtil.format("过去24小时内,发送水库短信预警{}条,抽查黄冈、襄阳、随州、荆门水库防汛责任人XX人次,应答率XX,责任人履职情况总体较好。", |
| | | dxyjCount); |
| | | // 外呼统计处理 |
| | | int cityNameIndex = 0; //记录增加行政区划次数 |
| | | String cityNames = ""; //行政区划集合 |
| | | int jtCount = 0; //接通的数量 |
| | | for (CallTaskResultVO callTaskResultVO : whtjList) { |
| | | |
| | | if (StringUtil.isNotBlank(callTaskResultVO.getCityName())) { |
| | | if (StringUtil.isBlank(cityNames)) { |
| | | cityNames = cityNames + callTaskResultVO.getCityName(); |
| | | } else { |
| | | //如果存在不添加 |
| | | if (cityNames.indexOf(callTaskResultVO.getCityName()) < 0 && cityNameIndex <4) { |
| | | cityNames = cityNames + "、" + callTaskResultVO.getCityName(); |
| | | cityNameIndex = cityNameIndex + 1; |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | if (callTaskResultVO.getCallResult().equals("200000")) { |
| | | jtCount = jtCount + 1; |
| | | } |
| | | |
| | | } |
| | | double jtl = Double.valueOf(jtCount) / whtjList.size() * 100; |
| | | String str = StringUtil.format("过去24小时内,发送水库短信预警{}条,抽查{}等水库防汛责任人{}人次,应答率{},责任人履职情况总体较好。", |
| | | dxyjCount,cityNames,whtjList.size(),String.format("%.2f", jtl) + "%"); |
| | | this.smsResultInfo = str; |
| | | } |
| | | |
| | | public OverWord(List<TotalInfo> totalList, List<DzkInfo> dzkList, List<OverDetail> overDetailList,List<SzInfo> szInfoList,List<TotalInfo> totalOverList, List<TotalInfo> totalOver10List){ |
| | | public OverWord(List<TotalInfo> totalList, List<DzkInfo> dzkList, List<OverDetail> overDetailList, List<SzInfo> szInfoList, List<TotalInfo> totalOverList, List<TotalInfo> totalOver10List) { |
| | | this.tm = new SimpleDateFormat("MM月dd日H时").format(new Date()); |
| | | this.hour = new SimpleDateFormat("H时").format(new Date()); |
| | | |
| | |
| | | formatDzkInfo(dzkList); |
| | | formatSzInfo(szInfoList); |
| | | |
| | | formatOverNormal(totalOverList,totalOver10List); |
| | | formatOverNormal(totalOverList, totalOver10List); |
| | | } |
| | | |
| | | /** |
| | | * 构建超正常信息 |
| | | * |
| | | * @param totalOverList |
| | | * @param totalOver10List |
| | | */ |
| | |
| | | dangerCountTotal += totalInfo.getDanger_count_all(); |
| | | overDangerCountTotal += totalInfo.getOver_danger_count_all(); |
| | | |
| | | if (totalInfo.getSmall_all() != 0){ |
| | | String smallRegionCout = StringUtil.format("{}{}座",totalInfo.getP_ad_name(),totalInfo.getSmall_all()); |
| | | if (totalInfo.getSmall_all() != 0) { |
| | | String smallRegionCout = StringUtil.format("{}{}座", totalInfo.getP_ad_name(), totalInfo.getSmall_all()); |
| | | smallList.add(smallRegionCout); |
| | | } |
| | | // "mid_over_detail": "许家冲水库-5.59,游河水库-1.42,马鞍山水库-0.2,桃园河水库-3.19,白果河水库-1.56,两河口水库-4.97", |
| | | if (totalInfo.getBig_over_detail() != null){ |
| | | if (totalInfo.getBig_over_detail() != null) { |
| | | String bigOverDetail = totalInfo.getBig_over_detail(); |
| | | //许家冲水库-5.59 游河水库-1.42 马鞍山水库-0.2 |
| | | List<String> list = Arrays.asList(bigOverDetail.split(",")); |
| | | |
| | | list.forEach(item->{ |
| | | list.forEach(item -> { |
| | | String reservoirName = item.split("~")[0]; |
| | | bigList.add(reservoirName); |
| | | }); |
| | | } |
| | | |
| | | if (totalInfo.getMid_over_detail() != null){ |
| | | if (totalInfo.getMid_over_detail() != null) { |
| | | String midOverDetail = totalInfo.getMid_over_detail(); |
| | | //许家冲水库-5.59 游河水库-1.42 马鞍山水库-0.2 |
| | | List<String> list = Arrays.asList(midOverDetail.split(",")); |
| | | |
| | | list.forEach(item->{ |
| | | list.forEach(item -> { |
| | | String reservoirName = item.split("~")[0]; |
| | | midList.add(reservoirName); |
| | | }); |
| | |
| | | |
| | | String totalValue = |
| | | StringUtil.format("今日{},全省共有{}座水库超正常水位,其中大型水库{}座、中型水库{}座、小型水库{}座。全省水库持续安全运行。全省病险水库中,有{}座超正常水位,有{}座没有超正常但超了控制运用水位", |
| | | this.hour,total,big,mid,small,dangerCountTotal,overDangerCountTotal); |
| | | this.hour, total, big, mid, small, dangerCountTotal, overDangerCountTotal); |
| | | |
| | | String totalOverNormal10Value = getOverNormal10(totalOver10List); |
| | | String smallValue = ""; |
| | | if (smallList.size()>0){ |
| | | smallValue = String.join("、",smallList); |
| | | }else { |
| | | if (smallList.size() > 0) { |
| | | smallValue = String.join("、", smallList); |
| | | } else { |
| | | smallValue = "没有超正常的小型水库"; |
| | | } |
| | | |
| | | String bigValue=""; |
| | | if (bigList.size()>0){ |
| | | bigValue= |
| | | StringUtil.format(" 其中,超正常的大型水库有{}。",String.join("、",bigList)); |
| | | }else{ |
| | | bigValue= " 其中,没有超正常的大型水库。"; |
| | | String bigValue = ""; |
| | | if (bigList.size() > 0) { |
| | | bigValue = |
| | | StringUtil.format(" 其中,超正常的大型水库有{}。", String.join("、", bigList)); |
| | | } else { |
| | | bigValue = " 其中,没有超正常的大型水库。"; |
| | | } |
| | | |
| | | String midValue = ""; |
| | | if (midList.size()>0){ |
| | | midValue= |
| | | StringUtil.format(" 其中,超正常的中型水库有{}。",String.join("、",midList)); |
| | | }else{ |
| | | midValue= " 其中,没有超正常的中型水库。"; |
| | | if (midList.size() > 0) { |
| | | midValue = |
| | | StringUtil.format(" 其中,超正常的中型水库有{}。", String.join("、", midList)); |
| | | } else { |
| | | midValue = " 其中,没有超正常的中型水库。"; |
| | | } |
| | | |
| | | this.totalOverNormalInfo = totalValue; |
| | | this.overNormalSmallInfo =smallValue; |
| | | this.overNormalSmallInfo = smallValue; |
| | | this.overNormalBigInfo = bigValue; |
| | | this.overNormalMidInfo = midValue; |
| | | this.totalOverNormal10Info = totalOverNormal10Value; |
| | |
| | | |
| | | String totalValue = |
| | | StringUtil.format("今日{},全省共有{}座水库超正常水位,其中大型水库{}座、中型水库{}座、小型水库{}座。全省水库持续安全运行。全省病险水库中,有{}座超正常水位,有{}座没有超正常但超了控制运用水位", |
| | | this.hour,total,big,mid,small,dangerCountTotal,overDangerCountTotal); |
| | | this.hour, total, big, mid, small, dangerCountTotal, overDangerCountTotal); |
| | | |
| | | return totalValue; |
| | | } |
| | | |
| | | /** |
| | | * 构建省直信息 |
| | | * |
| | | * @param szInfoList |
| | | */ |
| | | private void formatSzInfo(List<SzInfo> szInfoList) { |
| | |
| | | } |
| | | |
| | | // this.provinceInfo = String.join("\n\r\r\r\r",list); |
| | | this.provinceInfo = String.join("\n",list); |
| | | this.provinceInfo = String.join("\n", list); |
| | | } |
| | | |
| | | private String generateSzInfo(SzInfo szInfo){ |
| | | private String generateSzInfo(SzInfo szInfo) { |
| | | String text = ""; |
| | | |
| | | String oldTm = new SimpleDateFormat("MM月dd日H时").format(DateUtil.parse(szInfo.getOld_tm(),"yyyy-MM-dd HH:mm:ss")); |
| | | String oldTm = new SimpleDateFormat("MM月dd日H时").format(DateUtil.parse(szInfo.getOld_tm(), "yyyy-MM-dd HH:mm:ss")); |
| | | Double oldRz = szInfo.getOld_rz(); |
| | | |
| | | String newTm = new SimpleDateFormat("MM月dd日H时").format(DateUtil.parse(szInfo.getNew_tm(),"yyyy-MM-dd HH:mm:ss")); |
| | | String newTm = new SimpleDateFormat("MM月dd日H时").format(DateUtil.parse(szInfo.getNew_tm(), "yyyy-MM-dd HH:mm:ss")); |
| | | Double newRz = szInfo.getNew_rz(); |
| | | |
| | | Double diffRz = Math.abs(szInfo.getDiff_rz()); |
| | | String resNm = szInfo.getStcd(); |
| | | String upOrDown = ""; |
| | | if (szInfo.getDiff_rz()>=0){ |
| | | if (szInfo.getDiff_rz() >= 0) { |
| | | upOrDown = "上涨"; |
| | | }else { |
| | | } else { |
| | | upOrDown = "下降"; |
| | | } |
| | | String flse_lim_stag=""; |
| | | String flse_lim_stag = ""; |
| | | String control_z = ""; |
| | | String wat_shed_area = ""; |
| | | |
| | | switch (resNm){ |
| | | switch (resNm) { |
| | | case "高关水库": |
| | | flse_lim_stag = "118"; |
| | | control_z="117"; |
| | | control_z = "117"; |
| | | wat_shed_area = "303"; |
| | | break; |
| | | case "王英水库": |
| | | flse_lim_stag = "70"; |
| | | control_z="67"; |
| | | control_z = "67"; |
| | | wat_shed_area = "243"; |
| | | break; |
| | | case "吴岭水库": |
| | | flse_lim_stag = "62.20"; |
| | | control_z=""; |
| | | control_z = ""; |
| | | wat_shed_area = "102"; |
| | | break; |
| | | case "富水水库": |
| | | flse_lim_stag = "57"; |
| | | control_z="55"; |
| | | control_z = "55"; |
| | | wat_shed_area = "2450"; |
| | | break; |
| | | case "漳河水库": |
| | | flse_lim_stag = "122.6"; |
| | | control_z="122"; |
| | | control_z = "122"; |
| | | wat_shed_area = "2212"; |
| | | break; |
| | | } |
| | | |
| | | List<String> detailList = new ArrayList<>(); |
| | | if (StringUtil.isNotBlank(flse_lim_stag)){ |
| | | detailList.add(StringUtil.format("汛限水位{}米",flse_lim_stag)); |
| | | if (StringUtil.isNotBlank(flse_lim_stag)) { |
| | | detailList.add(StringUtil.format("汛限水位{}米", flse_lim_stag)); |
| | | } |
| | | if (StringUtil.isNotBlank(control_z)){ |
| | | detailList.add(StringUtil.format("控制运用水位{}米",control_z)); |
| | | if (StringUtil.isNotBlank(control_z)) { |
| | | detailList.add(StringUtil.format("控制运用水位{}米", control_z)); |
| | | } |
| | | if (StringUtil.isNotBlank(wat_shed_area)){ |
| | | detailList.add(StringUtil.format("集雨面积{}平方千米",wat_shed_area)); |
| | | if (StringUtil.isNotBlank(wat_shed_area)) { |
| | | detailList.add(StringUtil.format("集雨面积{}平方千米", wat_shed_area)); |
| | | } |
| | | String detail = StringUtil.join(detailList,","); |
| | | String detail = StringUtil.join(detailList, ","); |
| | | |
| | | text = StringUtil.format(" {}{}水位{}米,{}库水位{}米,({}{}米,{})。", |
| | | resNm,oldTm,oldRz,newTm,newRz,upOrDown,diffRz,detail); |
| | | resNm, oldTm, oldRz, newTm, newRz, upOrDown, diffRz, detail); |
| | | |
| | | return text; |
| | | } |
| | | |
| | | /** |
| | | * 构建大中库信息 |
| | | * |
| | | * @param dzkList |
| | | */ |
| | | private void formatDzkInfo(List<DzkInfo> dzkList) { |
| | |
| | | // this.overBigInfo = String.join("\n\r\r\r\r",bigListInfo); |
| | | // this.overMidInfo = String.join("\n\r\r\r\r",midListInfo); |
| | | |
| | | this.overBigInfo = String.join("\n",bigListInfo); |
| | | this.overMidInfo = String.join("\n",midListInfo); |
| | | this.overBigInfo = String.join("\n", bigListInfo); |
| | | this.overMidInfo = String.join("\n", midListInfo); |
| | | } |
| | | |
| | | private String generateDzkInfo(DzkInfo dzkInfo){ |
| | | private String generateDzkInfo(DzkInfo dzkInfo) { |
| | | String text = ""; |
| | | |
| | | List<String> detailList = new ArrayList<>(); |
| | | if (StringUtil.isNotBlank(dzkInfo.getIs_gate())){ |
| | | detailList.add(StringUtil.format("溢洪道{}",dzkInfo.getIs_gate())); |
| | | if (StringUtil.isNotBlank(dzkInfo.getIs_gate())) { |
| | | detailList.add(StringUtil.format("溢洪道{}", dzkInfo.getIs_gate())); |
| | | } |
| | | if (ObjectUtil.isNotEmpty(dzkInfo.getOver_stag())){ |
| | | detailList.add(StringUtil.format("超汛限水位{}米",dzkInfo.getOver_stag())); |
| | | if (ObjectUtil.isNotEmpty(dzkInfo.getOver_stag())) { |
| | | detailList.add(StringUtil.format("超汛限水位{}米", dzkInfo.getOver_stag())); |
| | | } |
| | | if (ObjectUtil.isNotEmpty(dzkInfo.getTot_cap())){ |
| | | detailList.add(StringUtil.format("总库容{}万立方米",dzkInfo.getTot_cap())); |
| | | if (ObjectUtil.isNotEmpty(dzkInfo.getTot_cap())) { |
| | | detailList.add(StringUtil.format("总库容{}万立方米", dzkInfo.getTot_cap())); |
| | | } |
| | | if (ObjectUtil.isNotEmpty(dzkInfo.getWat_shed_area())){ |
| | | detailList.add(StringUtil.format("集雨面积{}平方千米",dzkInfo.getWat_shed_area())); |
| | | if (ObjectUtil.isNotEmpty(dzkInfo.getWat_shed_area())) { |
| | | detailList.add(StringUtil.format("集雨面积{}平方千米", dzkInfo.getWat_shed_area())); |
| | | } |
| | | if (ObjectUtil.isNotEmpty(dzkInfo.getTb_norm_pool_stag())){ |
| | | detailList.add(StringUtil.format("正常蓄水位{}米",dzkInfo.getTb_norm_pool_stag())); |
| | | if (ObjectUtil.isNotEmpty(dzkInfo.getTb_norm_pool_stag())) { |
| | | detailList.add(StringUtil.format("正常蓄水位{}米", dzkInfo.getTb_norm_pool_stag())); |
| | | } |
| | | if (ObjectUtil.isNotEmpty(dzkInfo.getTb_flse_lim_stag())){ |
| | | detailList.add(StringUtil.format("汛限水位{}米",dzkInfo.getTb_flse_lim_stag())); |
| | | if (ObjectUtil.isNotEmpty(dzkInfo.getTb_flse_lim_stag())) { |
| | | detailList.add(StringUtil.format("汛限水位{}米", dzkInfo.getTb_flse_lim_stag())); |
| | | } |
| | | |
| | | String detail = String.join(",",detailList); |
| | | text = StringUtil.format(" {}{}{}({})。",dzkInfo.getP_ad_name(),dzkInfo.getAd_name(),dzkInfo.getRes_name(),detail); |
| | | String detail = String.join(",", detailList); |
| | | text = StringUtil.format(" {}{}{}({})。", dzkInfo.getP_ad_name(), dzkInfo.getAd_name(), dzkInfo.getRes_name(), detail); |
| | | |
| | | return text; |
| | | } |
| | | |
| | | /** |
| | | * 构建全省水库超汛限信息 |
| | | * |
| | | * @param totalList |
| | | * @return |
| | | */ |
| | | private void formatTotalInfo(List<TotalInfo> totalList){ |
| | | private void formatTotalInfo(List<TotalInfo> totalList) { |
| | | String totalLabel = "全省水库超汛限:"; |
| | | String smallLable = "超汛限的小型水库有:"; |
| | | |
| | |
| | | dangerCountTotal += totalInfo.getDanger_count_all(); |
| | | overDangerCountTotal += totalInfo.getOver_danger_count_all(); |
| | | |
| | | if (totalInfo.getSmall_all() == 0){ |
| | | if (totalInfo.getSmall_all() == 0) { |
| | | continue; |
| | | } |
| | | |
| | | String smallRegionCout = StringUtil.format("{}{}座",totalInfo.getP_ad_name(),totalInfo.getSmall_all()); |
| | | String smallRegionCout = StringUtil.format("{}{}座", totalInfo.getP_ad_name(), totalInfo.getSmall_all()); |
| | | smallList.add(smallRegionCout); |
| | | } |
| | | |
| | | String totalValue = |
| | | StringUtil.format("今日{},全省共有{}座水库超汛限水位,其中大型水库{}座、中型水库{}座、小型水库{}座。全省水库持续安全运行。全省病险水库中,有{}座超汛限水位,有{}座没有超汛限但超了控制运用水位", |
| | | this.hour,total,big,mid,small,dangerCountTotal,overDangerCountTotal); |
| | | this.hour, total, big, mid, small, dangerCountTotal, overDangerCountTotal); |
| | | |
| | | String smallValue = String.join("、",smallList); |
| | | String smallValue = String.join("、", smallList); |
| | | |
| | | this.totalInfo = totalValue; |
| | | this.overSmallInfo =smallValue; |
| | | this.overSmallInfo = smallValue; |
| | | } |
| | | |
| | | } |