From 41a83e40f815a01bfe314538c06f285e7085eed5 Mon Sep 17 00:00:00 2001
From: shenyijian <1178253012@qq.com>
Date: Thu, 20 Jun 2024 09:23:48 +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 |  182 ++++++++++++++++++++++++++------------------
 1 files changed, 107 insertions(+), 75 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 54cfea0..a9f7fef 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,6 +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;
@@ -44,29 +46,55 @@
 
 	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());
 
@@ -74,11 +102,12 @@
 		formatDzkInfo(dzkList);
 		formatSzInfo(szInfoList);
 
-		formatOverNormal(totalOverList,totalOver10List);
+		formatOverNormal(totalOverList, totalOver10List);
 	}
 
 	/**
 	 * 构建超正常信息
+	 *
 	 * @param totalOverList
 	 * @param totalOver10List
 	 */
@@ -104,28 +133,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);
 				});
@@ -134,34 +163,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;
@@ -190,13 +219,14 @@
 
 		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) {
@@ -209,78 +239,79 @@
 		}
 
 //		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) {
@@ -305,45 +336,46 @@
 //		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 = "超汛限的小型水库有:";
 
@@ -365,22 +397,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