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/util/WordUtil.java |  100 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 81 insertions(+), 19 deletions(-)

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 04ab44a..c0d2f18 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,8 @@
 package cn.gistack.sm.sjztmd.word.util;
 
+import cn.gistack.alerts.sms.vo.SmsResultVO;
+import cn.gistack.sm.intelligentCall.vo.CallTaskResultVO;
+import cn.gistack.sm.sjztmd.entity.YwFloodReportInfo;
 import cn.gistack.sm.sjztmd.util.MyDateUtils;
 import cn.gistack.sm.sjztmd.word.vo.*;
 import com.deepoove.poi.XWPFTemplate;
@@ -20,23 +23,43 @@
  */
 public class WordUtil {
 
-	public static byte[] compileTemplateAndRenderData(TbWordVO tbWordVO,Map<String,Object> tableMap) throws Exception {
+	public static byte[] compileTemplateAndRenderData(TbWordVO tbWordVO, Map<String, Object> tableMap) throws Exception {
 		InputStream inputStream = WordUtil.class.getClassLoader().getResourceAsStream("word/doc/skcgmb.docx");
 		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-		XWPFTemplate template = XWPFTemplate.compile(inputStream).render(createParams(tbWordVO,tableMap));
+		XWPFTemplate template = XWPFTemplate.compile(inputStream).render(createParams(tbWordVO, tableMap));
 		template.write(outputStream);
 		outputStream.flush();
 		outputStream.close();
 		return outputStream.toByteArray();
 	}
 
+	/**
+	 * 去除小数位为0的
+	 * @param num
+	 * @return
+	 */
+	public static String removeTrailingZero(String num) {
+		// 检查是否包含小数点
+		if (num.contains(".")) {
+			// 分割整数和小数部分
+			String[] parts = num.split("\\.");
+			if (parts.length == 2) {
+				// 去除小数部分末尾的0,并检查是否仅剩下小数点(例如"123.")
+				String decimalPart = parts[1].replaceAll("0+$", "").replaceAll("^\\.$", "");
+				// 如果小数部分处理后为空,则返回整数部分;否则拼接整数和小数部分
+				return decimalPart.isEmpty() ? parts[0] : parts[0] + "." + decimalPart;
+			}
+		}
+		// 如果不包含小数点或处理失败,则返回原字符串
+		return num;
+	}
 
 	/**
 	 * 根据水库id获取数据
 	 *
 	 * @return
 	 */
-	private static Map<String, Object> createParams(TbWordVO tbWordVO,Map<String,Object> tableMap) {
+	private static Map<String, Object> createParams(TbWordVO tbWordVO, Map<String, Object> tableMap) {
 		Map<String, Object> params = new HashMap<>();
 		params.put("水库名称", tbWordVO.getResName());
 		params.put("市", tbWordVO.getCityName());
@@ -45,12 +68,12 @@
 		params.put("河流名称", tbWordVO.getLocRvName());
 		params.put("水库功能", tbWordVO.getResFuncText());
 		params.put("调节性能", tbWordVO.getAdjustPropText());
-		params.put("水库坝址以上控制流域面积", tbWordVO.getConArea());
-		params.put("流域多年平均降雨量", tbWordVO.getMoyearRainAvg());
-		params.put("多年平均年径流量", tbWordVO.getMoyearFlAvg());
+		params.put("水库坝址以上控制流域面积", removeTrailingZero(tbWordVO.getConArea()));
+		params.put("流域多年平均降雨量", removeTrailingZero(tbWordVO.getMoyearRainAvg()));
+		params.put("多年平均年径流量", removeTrailingZero(tbWordVO.getMoyearFlAvg()));
 		params.put("设计洪水标准", tbWordVO.getDesFlSta());
 		params.put("校核洪水标准", tbWordVO.getChecFlSta());
-		params.put("总库容", tbWordVO.getTotalCap());
+		params.put("总库容", removeTrailingZero(tbWordVO.getTotalCap()));
 		params.put("水文特征", tbWordVO.getHydrologicalCharacteristics());
 		params.put("工程等别", tbWordVO.getEngGrad());
 		params.put("挡水建筑物泄洪建筑物正常溢洪道", tbWordVO.getBuildingText());
@@ -87,11 +110,11 @@
 	}
 
 
-	public static byte[] GetOverInfo(List<TotalInfo> totalList, List<DzkInfo> dzkList, List<OverDetail> overDetailList,List<SzInfo> szInfoList) throws Exception {
+	public static byte[] GetOverInfo(List<TotalInfo> totalList, List<DzkInfo> dzkList, List<OverDetail> overDetailList, List<SzInfo> szInfoList, List<SmsResultVO> dxyjList, List<CallTaskResultVO> whtjList, YwFloodReportInfo ywFloodReportInfo) throws Exception {
 		InputStream inputStream = WordUtil.class.getClassLoader().getResourceAsStream("word/doc/overFloodTemplate.docx");
 		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-		OverWord overWord = new OverWord(totalList, dzkList, overDetailList, szInfoList);
-		XWPFTemplate template = XWPFTemplate.compile(inputStream).render(createOverWordParam(overWord));
+		OverWord overWord = new OverWord(totalList, dzkList, overDetailList, szInfoList, dxyjList, whtjList, null);
+		XWPFTemplate template = XWPFTemplate.compile(inputStream).render(createOverWordParam(overWord, ywFloodReportInfo));
 		template.write(outputStream);
 		outputStream.flush();
 		outputStream.close();
@@ -99,19 +122,18 @@
 	}
 
 	/**
-	 *
-	 * @param totalList 全省水库超汛
-	 * @param dzkList 大中库超汛
-	 * @param overDetailList 超汛明细
-	 * @param szInfoList 省直超汛
-	 * @param totalOverList 超正常
+	 * @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{
+	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);
+		OverWord overWord = new OverWord(totalList, dzkList, overDetailList, szInfoList, totalOverList, totalOver10List);
 		XWPFTemplate template = XWPFTemplate.compile(inputStream).render(createOverWordParam(overWord));
 		template.write(outputStream);
 		outputStream.flush();
@@ -128,16 +150,51 @@
 		String dxStr = StringUtil.isNotBlank(overWord.getOverBigInfo()) ? "超汛限的水库的大型水库有:" : "";
 		params.put("超汛限的水库的大型水库有", dxStr);
 		params.put("大型水库详情", overWord.getOverBigInfo());
+		String zxStr = StringUtil.isNotBlank(overWord.getOverMidInfo()) ? "超汛限的水库的中型水库有:" : "";
+		params.put("超汛限的水库的中型水库有", zxStr);
 		params.put("中型水库详情", overWord.getOverMidInfo());
 		params.put("省直水库详情", overWord.getProvinceInfo());
+		params.put("短信预警和外呼抽查", overWord.getSmsResultInfo());
+		params.put("重点水库详情", overWord.getZdInfo());
 		//不在汛期内
-		if (!MyDateUtils.isTodayInFloodSeason()){
+		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 Map<String, Object> createOverWordParam(OverWord overWord, YwFloodReportInfo info) {
+		Map<String, Object> params = new HashMap<>();
+
+		params.put("时间", overWord.getTm());
+		params.put("全省水库超汛限", overWord.getTotalInfo());
+		params.put("小型水库详情", overWord.getOverSmallInfo());
+		String dxStr = StringUtil.isNotBlank(overWord.getOverBigInfo()) ? "超汛限的水库的大型水库有:" : "";
+		params.put("超汛限的水库的大型水库有", dxStr);
+		params.put("大型水库详情", overWord.getOverBigInfo());
+		String zxStr = StringUtil.isNotBlank(overWord.getOverMidInfo()) ? "超汛限的水库的中型水库有:" : "";
+		params.put("超汛限的水库的中型水库有", zxStr);
+		params.put("中型水库详情", overWord.getOverMidInfo());
+		params.put("省直水库详情", overWord.getProvinceInfo());
+		params.put("短信预警和外呼抽查", overWord.getSmsResultInfo());
+		params.put("重点水库详情", overWord.getZdInfo());
+		//不在汛期内
+		if (!MyDateUtils.isTodayInFloodSeason()) {
+			params.put("全省水库超正常", overWord.getTotalOverNormalInfo());
+			params.put("全省水库超正常十厘米以上", overWord.getTotalOverNormal10Info());
+			params.put("超正常小型水库详情", overWord.getOverNormalSmallInfo());
+			params.put("超正常大型水库详情", overWord.getOverNormalBigInfo());
+			params.put("超正常中型水库详情", overWord.getOverNormalMidInfo());
+		}
+
+		//昨日报汛
+		params.put("昨日全省水库超汛限", info.getTotalInfo().replace("今日", "昨日"));
+		params.put("昨日超汛限的小型水库有", info.getOversmallInfo());
 
 		return params;
 	}
@@ -153,4 +210,9 @@
 	}
 
 
+	public static OverWord GetOverInfo(List<TotalInfo> totalList) {
+
+		OverWord overWord = new OverWord(totalList);
+		return overWord;
+	}
 }

--
Gitblit v1.9.3