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