From 08a962d2925baa255207fdf979e6fee794f1773b Mon Sep 17 00:00:00 2001
From: ke <893754509@qq.com>
Date: Fri, 19 Jul 2024 12:25:19 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/OverWord.java |  279 +++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 186 insertions(+), 93 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/OverWord.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/OverWord.java
index a22c8cc..65999d4 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/OverWord.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/OverWord.java
@@ -1,5 +1,8 @@
 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;
@@ -41,16 +44,74 @@
 	//超正常中型水库
 	private String overNormalMidInfo;
 
-	public OverWord(List<TotalInfo> totalList, List<DzkInfo> dzkList, List<OverDetail> overDetailList,List<SzInfo> szInfoList){
+	private String smsResultInfo;
+	private String zdInfo;
+
+	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, whtjList);
 	}
 
-	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) {
+		this.tm = new SimpleDateFormat("MM月dd日H时").format(new Date());
+		this.hour = new SimpleDateFormat("H时").format(new Date());
+		formatTotalInfo(totalList);
+	}
+
+	private void formatSmsResultInfo(List<SmsResultVO> resultVOList, List<CallTaskResultVO> whtjList) {
+		// 短信预警处理
+		int dxyjCount = 0;
+		for (SmsResultVO vo : resultVOList) {
+			int number = null == vo.getNumber() ? 0 : vo.getNumber();
+			dxyjCount = dxyjCount + number;
+		}
+
+		// 外呼统计处理
+		int cityNameIndex = 0; //记录增加行政区划次数
+		String cityNames = ""; //行政区划集合
+		int jtCount = 0; //接通的数量
+		for (CallTaskResultVO callTaskResultVO : whtjList) {
+
+			if(null == callTaskResultVO.getId()) {
+				continue;
+			}
+
+			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;
+			}
+
+			if (callTaskResultVO.getIsSmsFill().equals("已反馈")) {
+				jtCount = jtCount + 1;
+			}
+
+		}
+
+		double whtjCount = whtjList.size() > 0 ? whtjList.size() : 1;
+		double jtl = Double.valueOf(jtCount) / whtjCount * 100;
+		String str = StringUtil.format("过去24小时内,发送水库短信预警{}条,抽查{}等水库防汛责任人{}人次,应答率{},责任人履职情况总体较好。",
+			dxyjCount, cityNames.replace("恩施土家族苗族自治州","恩施州"), 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) {
 		this.tm = new SimpleDateFormat("MM月dd日H时").format(new Date());
 		this.hour = new SimpleDateFormat("H时").format(new Date());
 
@@ -58,11 +119,12 @@
 		formatDzkInfo(dzkList);
 		formatSzInfo(szInfoList);
 
-		formatOverNormal(totalOverList,totalOver10List);
+		formatOverNormal(totalOverList, totalOver10List);
 	}
 
 	/**
 	 * 构建超正常信息
+	 *
 	 * @param totalOverList
 	 * @param totalOver10List
 	 */
@@ -88,28 +150,28 @@
 			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);
 				});
@@ -118,34 +180,34 @@
 
 		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;
@@ -174,97 +236,124 @@
 
 		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) {
 		List<String> list = new ArrayList<>();
 
+		List<String> listZd = new ArrayList<>();
+
 		for (int i = 0; i < szInfoList.size(); i++) {
 			SzInfo szInfo = szInfoList.get(i);
-			String text = generateSzInfo(szInfo);
-			list.add(text);
+			if (szInfo.getType().equals("省直水库")) {
+				String text = generateSzInfo(szInfo);
+				list.add(text);
+			} else {
+				listZd.add(generateSzInfo(szInfo));
+			}
+
 		}
 
 //		this.provinceInfo = String.join("\n\r\r\r\r",list);
-		this.provinceInfo = String.join("\n",list);
+		this.provinceInfo = String.join("\n", list);
+		this.zdInfo = String.join("\n", listZd);
 	}
 
-	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 = "";
+		String weir_top_elevation = "";
 
-		switch (resNm){
-			case "高关水库":
-				flse_lim_stag = "118";
-				control_z="117";
-				wat_shed_area = "303";
-				break;
-			case "王英水库":
-				flse_lim_stag = "70";
-				control_z="67";
-				wat_shed_area = "243";
-				break;
-			case "吴岭水库":
-				flse_lim_stag = "62.20";
-				control_z="";
-				wat_shed_area = "102";
-				break;
-			case "富水水库":
-				flse_lim_stag = "57";
-				control_z="55";
-				wat_shed_area = "2450";
-				break;
-			case "漳河水库":
-				flse_lim_stag = "122.6";
-				control_z="122";
-				wat_shed_area = "2212";
-				break;
-		}
+		if (null != szInfo.getFlse_lim_stag())
+			flse_lim_stag = String.valueOf(szInfo.getFlse_lim_stag());
+		if (null != szInfo.getControl_z())
+			control_z = String.valueOf(szInfo.getControl_z());
+		if (null != szInfo.getWat_shed_area())
+			wat_shed_area = String.valueOf(szInfo.getWat_shed_area());
+		if (null != szInfo.getWeir_top_elevation())
+			weir_top_elevation = String.valueOf(szInfo.getWeir_top_elevation());
+
+		// 之前临时处理逻辑 --2024-06-20去除--
+//		switch (resNm) {
+//			case "高关水库":
+//				flse_lim_stag = "118";
+//				control_z = "117";
+//				wat_shed_area = "";
+//				break;
+//			case "王英水库":
+//				flse_lim_stag = "70";
+//				control_z = "67";
+//				wat_shed_area = "";
+//				break;
+//			case "吴岭水库":
+//				flse_lim_stag = "62.20";
+//				control_z = "";
+//				wat_shed_area = "102";
+//				break;
+//			case "富水水库":
+//				flse_lim_stag = "55";
+//				control_z = "54";
+//				wat_shed_area = "";
+//				break;
+//			case "漳河水库":
+//				flse_lim_stag = "122.6";
+//				control_z = "121.8";
+//				wat_shed_area = "";
+//				break;
+//		}
 
 		List<String> detailList = new ArrayList<>();
-		if (StringUtil.isNotBlank(flse_lim_stag)){
-			detailList.add(StringUtil.format("汛限水位{}米",flse_lim_stag));
+		if (StringUtil.isNotBlank(weir_top_elevation)) {
+			detailList.add(StringUtil.format("堰顶高程{}米", weir_top_elevation));
 		}
-		if (StringUtil.isNotBlank(control_z)){
-			detailList.add(StringUtil.format("控制运用水位{}米",control_z));
+		if (StringUtil.isNotBlank(flse_lim_stag)) {
+			detailList.add(StringUtil.format("汛限水位{}米", flse_lim_stag));
 		}
-		if (StringUtil.isNotBlank(wat_shed_area)){
-			detailList.add(StringUtil.format("集雨面积{}平方千米",wat_shed_area));
+		if (StringUtil.isNotBlank(flse_lim_stag)) {
+			detailList.add(StringUtil.format("汛限水位{}米", flse_lim_stag));
 		}
-		String detail = StringUtil.join(detailList,",");
+		if (StringUtil.isNotBlank(control_z)) {
+			detailList.add(StringUtil.format("控制运用水位{}米", control_z));
+		}
+		if (StringUtil.isNotBlank(wat_shed_area)) {
+			detailList.add(StringUtil.format("集雨面积{}平方千米", wat_shed_area));
+		}
+		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) {
@@ -289,45 +378,49 @@
 //		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()));
+		}
+		if (ObjectUtil.isNotEmpty(dzkInfo.getTb_weir_top_elevation())) {
+			detailList.add(StringUtil.format("堰顶高程{}米", dzkInfo.getTb_weir_top_elevation()));
 		}
 
-		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 = "超汛限的小型水库有:";
 
@@ -349,22 +442,22 @@
 			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;
 	}
 
 }

--
Gitblit v1.9.3