From 0bdd1bda41e6fa8436d070b1f4e5b1f19f86d9d8 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 27 Feb 2024 14:34:46 +0800
Subject: [PATCH] Merge branch 'jtdev' into 20240222-patrol

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java                    |   21 +++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java     |   11 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/inFloodSeason_overFloodTemplate.docx               |    0 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/OverWord.java                       |  141 +++++++++++++++++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml                 |   16 ++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/overFloodTemplate.docx                             |    0 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/util/MyDateUtils.java                       |   39 ++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/util/WordUtil.java                     |   32 +++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/controller/DownTemplateController.java |   23 +++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java                |    8 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/impl/SjztmdServiceImpl.java    |   36 +++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java             |    8 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/ISjztmdService.java            |    2 
 13 files changed, 330 insertions(+), 7 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java
index 4575600..8d4b5d0 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/hk/controller/HkController.java
@@ -333,8 +333,11 @@
 	public R syncVideo(@RequestBody HkVO hk) {
 		// 通过水库编号获取区域(区县)名称
 		AttResAdVO info = attResBaseService.getWaterRegionInfoByResGuid(hk.getRegionIndexCode());
-		String resName = hk.getRegionName();
+		// 判断该水库同一个区县下是否存在同水库名称的,如果是存在多个,水库名称前面拼上乡镇名称
+		String resName = setWaterName(hk,info);
+		// 设置区域名称
 		hk.setRegionName(info.getCountyName());
+		// 判断
 		// 通过区域名称查询对应的区域编号
 		String rootRegionId = hkService.regionNodesByParams(hk);
 		if (null!= rootRegionId && !rootRegionId.equals("")){
@@ -364,4 +367,20 @@
 		}
 	}
 
+	/**
+	 * 设置水库名称( 判断该水库同一个区县下是否存在同水库名称的,如果是存在多个,水库名称前面拼上乡镇名称)
+	 * @param hk
+	 * @param info
+	 * @return
+	 */
+	private String setWaterName(HkVO hk, AttResAdVO info) {
+		// 根据水库名称、所在区域查询改水库的数量
+		Integer number = attResBaseService.getWaterCountByResNameAndCountyName(hk.getRegionName(),info.getCountyCode());
+		if (number>1){
+			return  hk.getRegionName() + "(" + info.getTownName() + ")";
+		}else {
+			return hk.getRegionName();
+		}
+	}
+
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java
index bc02ea6..6aab487 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java
@@ -70,4 +70,12 @@
 	int getDimResInfoACount();
 
     Boolean updateIsShowStatus(@Param("ids") String ids, @Param("isShow") Integer status);
+
+	/**
+	 * 根据水库名称、所在区域查询改水库的数量
+	 * @param resName 水库名称
+	 * @param countyCode 区县编号
+	 * @return
+	 */
+	Integer getWaterCountByResNameAndCountyName(@Param("resName") String resName,@Param("countyCode")  String countyCode);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml
index 263678c..024122d 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml
@@ -236,5 +236,21 @@
 
     </update>
 
+    <!--根据水库名称、所在区域查询改水库的数量-->
+    <select id="getWaterCountByResNameAndCountyName" resultType="java.lang.Integer">
+        SELECT
+            count(1)
+        FROM sjzt_md."att_res_base" a
+        LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
+        LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
+        LEFT JOIN sjzt_md."att_ad_base" d ON c."p_ad_code" = d."guid"
+        where a."name" = #{resName}
+        and (
+            (b."ad_grad" = 3 and b."ad_code" = #{countyCode})
+            or
+            (c."ad_grad" = 3 and c."ad_code" = #{countyCode})
+        )
+    </select>
+
 
 </mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java
index b3ad0d8..6cee98b 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java
@@ -57,4 +57,12 @@
 	int getDimResInfoACount();
 
     Boolean updateIsShowStatus(String ids, Integer status);
+
+	/**
+	 * 根据水库名称、所在区域查询改水库的数量
+	 * @param resName 水库名称
+	 * @param countyName 区县
+	 * @return
+	 */
+	Integer getWaterCountByResNameAndCountyName(String resName, String countyName);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java
index 73d6b39..6a85f17 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java
@@ -123,4 +123,15 @@
 	public Boolean updateIsShowStatus(String ids, Integer status) {
 		return baseMapper.updateIsShowStatus(ids,status);
 	}
+
+	/**
+	 * 根据水库名称、所在区域查询改水库的数量
+	 * @param resName 水库名称
+	 * @param countyCode 区县
+	 * @return
+	 */
+	@Override
+	public Integer getWaterCountByResNameAndCountyName(String resName, String countyCode) {
+		return baseMapper.getWaterCountByResNameAndCountyName(resName,countyCode);
+	}
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/util/MyDateUtils.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/util/MyDateUtils.java
new file mode 100644
index 0000000..2907625
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/util/MyDateUtils.java
@@ -0,0 +1,39 @@
+package cn.gistack.sm.sjztmd.util;
+
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.StringUtil;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public  class MyDateUtils {
+
+	/**
+	 * 判断当前日期是否在汛期,汛期
+	 * @return
+	 */
+	public static Boolean isTodayInFloodSeason(){
+		Boolean inSeason = true;
+
+		Date today = DateUtil.now();
+
+		String todayStr = DateUtil.format(today, "yyyy-MM-dd");
+		String nowYear = todayStr.split("-")[0];
+
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+		try {
+			Date startDate = sdf.parse(StringUtil.format("{}-05-01",nowYear));
+			Date endDate = sdf.parse(StringUtil.format("{}-11-01",nowYear));
+
+			inSeason = today.after(startDate)&&today.before(endDate);
+			return inSeason;
+		} catch (ParseException e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/controller/DownTemplateController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/controller/DownTemplateController.java
index bb91bd2..6c7ca14 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/controller/DownTemplateController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/controller/DownTemplateController.java
@@ -2,6 +2,7 @@
 
 
 
+import cn.gistack.sm.sjztmd.util.MyDateUtils;
 import cn.gistack.sm.sjztmd.word.service.ISjztmdService;
 import cn.gistack.sm.sjztmd.word.util.ExcelUtil;
 import cn.gistack.sm.sjztmd.word.util.WordUtil;
@@ -73,8 +74,28 @@
 		List<OverDetail> overDetailList = sjztmdService.getOverDetailInfo(isShow);
 		List<SzInfo> szInfoList = sjztmdService.getSzInfo(isShow);
 
-		byte[] data = WordUtil.GetOverInfo(totalList,dzkList,overDetailList,szInfoList);
+		HashMap<String,String> over10Params = new HashMap<>();
+		//small_start_stag=0&small_end_stag=2&mid_start_stag=0&mid_end_stag=2&big_start_stag=0&big_end_stag=2
+		over10Params.put("small_start_stag", "10");
+		over10Params.put("mid_start_stag", "10");
+		over10Params.put("big_start_stag", "10");
 
+		HashMap<String,String> normalParams = new HashMap<>();
+		//small_start_stag=0&small_end_stag=2&mid_start_stag=0&mid_end_stag=2&big_start_stag=0&big_end_stag=2
+		normalParams.put("small_start_stag", "0");
+		normalParams.put("mid_start_stag", "0");
+		normalParams.put("big_start_stag", "0");
+
+
+		List<TotalInfo> totalOverList = sjztmdService.getTotalOverInfo(isShow,normalParams);
+		List<TotalInfo> totalOver10List = sjztmdService.getTotalOverInfo(isShow,over10Params);
+		byte[] data =  null;
+		if (MyDateUtils.isTodayInFloodSeason()){
+			data = WordUtil.GetOverInfo(totalList,dzkList,overDetailList,szInfoList);
+		}else {
+			data= WordUtil.GetNotInSeasonOverInfo(totalList,dzkList,overDetailList,szInfoList,totalOverList,totalOver10List);
+
+		}
 		// 创建响应实体并设置响应头,将输出流作为响应体返回给客户端
 		InputStreamResource resource = new InputStreamResource(new ByteArrayInputStream(data));
 
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/ISjztmdService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/ISjztmdService.java
index d85aa96..c4b8830 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/ISjztmdService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/ISjztmdService.java
@@ -37,4 +37,6 @@
 	List<StationExport> getImageStation(HttpServletResponse response, StationParams params, String exportFunc);
 
 	List<StationExport> getOsmotic(HttpServletResponse response, StationParams params, String exportFunc);
+
+	List<TotalInfo> getTotalOverInfo(String isShow, HashMap<String, String> over10Params);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/impl/SjztmdServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/impl/SjztmdServiceImpl.java
index 31f8fab..8c2db7e 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/impl/SjztmdServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/impl/SjztmdServiceImpl.java
@@ -18,6 +18,7 @@
 import com.alibaba.fastjson.parser.Feature;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,14 +38,19 @@
 @Service
 @AllArgsConstructor
 @DS("zt")
+@Slf4j
 public class SjztmdServiceImpl implements ISjztmdService {
 
 	//总计
-	private final String RIBAO_SHEET1_TOTAL_URL = "/services/1234567890ABCDEFGHIJKLMN/ribao_sheet1/api?small_start_stag=0&small_end_stag=2&mid_start_stag=0&mid_end_stag=2&big_start_stag=0&big_end_stag=2";
+//	private final String RIBAO_SHEET1_TOTAL_URL = "/services/1234567890ABCDEFGHIJKLMN/ribao_sheet1/api?small_start_stag=0&small_end_stag=2&mid_start_stag=0&mid_end_stag=2&big_start_stag=0&big_end_stag=2";
+	private final String RIBAO_SHEET1_TOTAL_URL = "/services/1234567890ABCDEFGHIJKLMN/ribao_sheet1/api?small_start_stag=0&mid_start_stag=0&big_start_stag=0";
+	private final String RIBAO_SHEET1_OVER_NORM_POOL_STAG = "/services/1234567890ABCDEFGHIJKLMN/ribao/sheet1_over_norm_pool_stag/api?";
 	//中大型水库
-	private final String RIBAO_SHEET2_ZDX_URL = "/services/1234567890ABCDEFGHIJKLMN/ribao/sheet2_zdx/api?mid_start_stag=0&mid_end_stag=2&big_start_stag=0&big_end_stag=2";
+//	private final String RIBAO_SHEET2_ZDX_URL = "/services/1234567890ABCDEFGHIJKLMN/ribao/sheet2_zdx/api?mid_start_stag=0&mid_end_stag=2&big_start_stag=0&big_end_stag=2";
+	private final String RIBAO_SHEET2_ZDX_URL = "/services/1234567890ABCDEFGHIJKLMN/ribao/sheet2_zdx/api?mid_start_stag=0&big_start_stag=0";
 	//超汛明细
-	private final String RIBAO_SHEET3_OVER_STAG_LIST_URL = "/services/1234567890ABCDEFGHIJKLMN/ribao/sheet3_over_stag_list/api?small_start_stag=0&small_end_stag=2&mid_start_stag=0&mid_end_stag=2&big_start_stag=0&big_end_stag=2";
+//	private final String RIBAO_SHEET3_OVER_STAG_LIST_URL = "/services/1234567890ABCDEFGHIJKLMN/ribao/sheet3_over_stag_list/api?small_start_stag=0&small_end_stag=2&mid_start_stag=0&mid_end_stag=2&big_start_stag=0&big_end_stag=2";
+	private final String RIBAO_SHEET3_OVER_STAG_LIST_URL = "/services/1234567890ABCDEFGHIJKLMN/ribao/sheet3_over_stag_list/api?small_start_stag=0&mid_start_stag=0&big_start_stag=0";
 	//省直管
 	private final String SZ_INFO = "/services/1234567890ABCDEFGHIJKLMN/ribao/shengzh_new_rz/api";
 
@@ -593,6 +599,28 @@
 	}
 
 	@Override
+	public List<TotalInfo> getTotalOverInfo(String isShow, HashMap<String, String> map) {
+
+		String params = "&is_show=" + isShow;
+		if (map != null){
+			for (Map.Entry<String, String> entry : map.entrySet()){
+				String key=entry.getKey();
+				String vlaue = entry.getValue();
+
+				String p = StringUtil.format("&{}={}",key,vlaue);
+				params +=p;
+			}
+		}
+
+		JSONObject ztData = this.getZtData(params, RIBAO_SHEET1_OVER_NORM_POOL_STAG);
+		JSONArray data = ztData.getJSONArray("data");
+		List<TotalInfo> list = data.toJavaList(TotalInfo.class);
+		return list;
+
+	}
+
+
+	@Override
 	public List<DzkInfo> getDzkInfo(String isShow) {
 		JSONObject ztData = this.getZtData("&is_show="+isShow, RIBAO_SHEET2_ZDX_URL);
 		JSONArray data = ztData.getJSONArray("data");
@@ -1127,6 +1155,8 @@
 		if (activeProfile.equals("test")) {
 			url = ZtApiUrlConstant.url_prefix_test + url + params;
 		}
+
+		log.info("请求url地址:{}", url);
 		//设置请求头
 		HttpHeaders headers = new HttpHeaders();
 		headers.add(ZtConfigConstant.header_key, ZtConfigConstant.header_value);
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/util/WordUtil.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/util/WordUtil.java
index dbbe6ff..c209699 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/util/WordUtil.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/util/WordUtil.java
@@ -1,5 +1,6 @@
 package cn.gistack.sm.sjztmd.word.util;
 
+import cn.gistack.sm.sjztmd.util.MyDateUtils;
 import cn.gistack.sm.sjztmd.word.vo.*;
 import com.deepoove.poi.XWPFTemplate;
 import com.deepoove.poi.data.NumbericRenderData;
@@ -96,6 +97,27 @@
 		return outputStream.toByteArray();
 	}
 
+	/**
+	 *
+	 * @param totalList 全省水库超汛
+	 * @param dzkList 大中库超汛
+	 * @param overDetailList 超汛明细
+	 * @param szInfoList 省直超汛
+	 * @param totalOverList 超正常
+	 * @param totalOver10List 超正常10cm
+	 * @return
+	 */
+	public static byte[] GetNotInSeasonOverInfo(List<TotalInfo> totalList, List<DzkInfo> dzkList, List<OverDetail> overDetailList, List<SzInfo> szInfoList, List<TotalInfo> totalOverList, List<TotalInfo> totalOver10List) throws Exception{
+		InputStream inputStream = WordUtil.class.getClassLoader().getResourceAsStream("word/doc/inFloodSeason_overFloodTemplate.docx");
+		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+		OverWord overWord = new OverWord(totalList, dzkList, overDetailList, szInfoList,totalOverList,totalOver10List);
+		XWPFTemplate template = XWPFTemplate.compile(inputStream).render(createOverWordParam(overWord));
+		template.write(outputStream);
+		outputStream.flush();
+		outputStream.close();
+		return outputStream.toByteArray();
+	}
+
 	private static Map<String, Object> createOverWordParam(OverWord overWord) {
 		Map<String, Object> params = new HashMap<>();
 
@@ -105,9 +127,16 @@
 		params.put("大型水库详情", overWord.getOverBigInfo());
 		params.put("中型水库详情", overWord.getOverMidInfo());
 		params.put("省直水库详情", overWord.getProvinceInfo());
+		//不在汛期内
+		if (!MyDateUtils.isTodayInFloodSeason()){
+			params.put("全省水库超正常", overWord.getTotalOverNormalInfo());
+			params.put("全省水库超正常十厘米以上", overWord.getTotalOverNormal10Info());
+			params.put("超正常小型水库详情", overWord.getOverNormalSmallInfo());
+			params.put("超正常大型水库详情", overWord.getOverNormalBigInfo());
+			params.put("超正常中型水库详情", overWord.getOverNormalMidInfo());
+		}
 
 		return params;
-
 	}
 
 	private static byte[] GenerateWord(String templatePath, Object object) throws Exception {
@@ -120,4 +149,5 @@
 		return outputStream.toByteArray();
 	}
 
+
 }
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 a73216e..ec5ff96 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
@@ -7,6 +7,7 @@
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -17,14 +18,28 @@
 	private String tm;
 	private String hour;
 
-	//超汛限
+	//全省超汛限
 	private String totalInfo;
+	//超汛限小型水库
 	private String overSmallInfo;
+	//超汛限大型水库
 	private String overBigInfo;
+	//超汛限中型水库
 	private String overMidInfo;
 
 	//省直水库
 	private String provinceInfo;
+
+	//全省水库超正常
+	private String totalOverNormalInfo;
+	//超正常小型水库
+	private String overNormalSmallInfo;
+	//全省水库超正常10cm以上
+	private String totalOverNormal10Info;
+	//超正常大型水库
+	private String overNormalBigInfo;
+	//超正常中型水库
+	private String overNormalMidInfo;
 
 	public OverWord(List<TotalInfo> totalList, List<DzkInfo> dzkList, List<OverDetail> overDetailList,List<SzInfo> szInfoList){
 		this.tm = new SimpleDateFormat("MM月dd日H时").format(new Date());
@@ -35,6 +50,130 @@
 		formatSzInfo(szInfoList);
 	}
 
+	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());
+
+		formatTotalInfo(totalList);
+		formatDzkInfo(dzkList);
+		formatSzInfo(szInfoList);
+
+		formatOverNormal(totalOverList,totalOver10List);
+	}
+
+	/**
+	 * 构建超正常信息
+	 * @param totalOverList
+	 * @param totalOver10List
+	 */
+	private void formatOverNormal(List<TotalInfo> totalOverList, List<TotalInfo> totalOver10List) {
+
+		int total = 0;
+		int big = 0;
+		int mid = 0;
+		int small = 0;
+		int dangerCountTotal = 0;
+		int overDangerCountTotal = 0;
+		List<String> smallList = new ArrayList<>();
+		List<String> midList = new ArrayList<>();
+		List<String> bigList = new ArrayList<>();
+
+
+		for (int i = 0; i < totalOverList.size(); i++) {
+			TotalInfo totalInfo = totalOverList.get(i);
+			total += totalInfo.getCount_all();
+			big += totalInfo.getBig_all();
+			mid += totalInfo.getMid_all();
+			small += totalInfo.getSmall_all();
+			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());
+				smallList.add(smallRegionCout);
+			}
+			// "mid_over_detail": "许家冲水库-5.59,游河水库-1.42,马鞍山水库-0.2,桃园河水库-3.19,白果河水库-1.56,两河口水库-4.97",
+			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->{
+					String reservoirName = item.split("~")[0];
+					bigList.add(reservoirName);
+				});
+			}
+
+			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->{
+					String reservoirName = item.split("~")[0];
+					midList.add(reservoirName);
+				});
+			}
+		}
+
+		String totalValue =
+			StringUtil.format("今日{},全省共有{}座水库超正常水位,其中大型水库{}座、中型水库{}座、小型水库{}座。全省水库持续安全运行。全省病险水库中,有{}座超正常水位,有{}座没有超正常但超了控制运用水位",
+				this.hour,total,big,mid,small,dangerCountTotal,overDangerCountTotal);
+
+		String totalOverNormal10Value = getOverNormal10(totalOver10List);
+
+		String smallValue = String.join("、",smallList);
+		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= "    其中,没有超正常的中型水库。";
+		}
+
+		this.totalOverNormalInfo = totalValue;
+		this.overNormalSmallInfo =smallValue;
+		this.overNormalBigInfo = bigValue;
+		this.overNormalMidInfo = midValue;
+		this.totalOverNormal10Info = totalOverNormal10Value;
+
+	}
+
+	//获取超正常10cm的水库
+	private String getOverNormal10(List<TotalInfo> totalOver10List) {
+
+		int total = 0;
+		int big = 0;
+		int mid = 0;
+		int small = 0;
+		int dangerCountTotal = 0;
+		int overDangerCountTotal = 0;
+
+		for (int i = 0; i < totalOver10List.size(); i++) {
+			TotalInfo totalInfo = totalOver10List.get(i);
+			total += totalInfo.getCount_all();
+			big += totalInfo.getBig_all();
+			mid += totalInfo.getMid_all();
+			small += totalInfo.getSmall_all();
+			dangerCountTotal += totalInfo.getDanger_count_all();
+			overDangerCountTotal += totalInfo.getOver_danger_count_all();
+		}
+
+		String totalValue =
+			StringUtil.format("今日{},全省共有{}座水库超正常水位,其中大型水库{}座、中型水库{}座、小型水库{}座。全省水库持续安全运行。全省病险水库中,有{}座超正常水位,有{}座没有超正常但超了控制运用水位",
+				this.hour,total,big,mid,small,dangerCountTotal,overDangerCountTotal);
+
+		return totalValue;
+	}
+
 	/**
 	 * 构建省直信息
 	 * @param szInfoList
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/inFloodSeason_overFloodTemplate.docx b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/inFloodSeason_overFloodTemplate.docx
new file mode 100644
index 0000000..194dec1
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/inFloodSeason_overFloodTemplate.docx
Binary files differ
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/overFloodTemplate.docx b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/overFloodTemplate.docx
index 2d34a1b..efe3ffe 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/overFloodTemplate.docx
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/overFloodTemplate.docx
Binary files differ

--
Gitblit v1.9.3