From 1d46a2bc8a1b843eb2ee84e65fdc2f61651a18a3 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Wed, 29 Nov 2023 17:55:59 +0800
Subject: [PATCH] 填报word修改

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/eightFloodInfoTemplate.doc                         |    0 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/util/WordUtil.java                     |   17 ++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/controller/DownTemplateController.java |   18 +++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/impl/SjztmdServiceImpl.java    |   52 +++++++++++++++++++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/TbWordVO.java                       |   31 +++++++++++----
 5 files changed, 108 insertions(+), 10 deletions(-)

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 ef49299..784ff99 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
@@ -20,6 +20,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -55,4 +56,21 @@
 			.body(resource); // 将InputStreamResource对象作为响应体
 	}
 
+	@GetMapping("/download/eightFloodInfo")
+	public ResponseEntity eightFloodInfo() throws Exception{
+		String time = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
+
+		String fileName =  time+ "全省水库防汛情况.docx";
+		byte[] data = WordUtil.GetEightFloodInfo();
+
+		// 创建响应实体并设置响应头,将输出流作为响应体返回给客户端
+		InputStreamResource resource = new InputStreamResource(new ByteArrayInputStream(data));
+
+		// 将临时文件添加到响应中,以便用户下载
+		return ResponseEntity.ok()
+			.contentType(MediaType.APPLICATION_OCTET_STREAM) // 设置响应的内容类型为二进制流(octet stream)
+			.header("Content-Disposition", "attachment; filename=\"" + fileName) // 设置响应的Content-Disposition头,以便浏览器提示用户下载文件
+			.body(resource); // 将InputStreamResource对象作为响应体
+	}
+
 }
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 a04e39d..0be851b 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
@@ -1,14 +1,26 @@
 package cn.gistack.sm.sjztmd.word.service.impl;
 
+import cn.gistack.common.utils.SpringContextUtil;
 import cn.gistack.sm.sjztmd.entity.*;
 import cn.gistack.sm.sjztmd.mapper.SjztMdMapper;
 import cn.gistack.sm.sjztmd.service.*;
 import cn.gistack.sm.sjztmd.word.service.ISjztmdService;
 import cn.gistack.sm.sjztmd.word.vo.TbWordVO;
+import cn.gistack.sm.sjztods.constant.ZtApiUrlConstant;
+import cn.gistack.sm.sjztods.constant.ZtConfigConstant;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.parser.Feature;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
 
 import java.util.HashMap;
 import java.util.List;
@@ -18,7 +30,8 @@
 @AllArgsConstructor
 @DS("zt")
 public class SjztmdServiceImpl implements ISjztmdService {
-
+	@Autowired
+	private RestTemplate restTemplate;
 	private final SjztMdMapper mapper;
 
 	private final ITbAttResBaseService attResBaseService;
@@ -62,5 +75,42 @@
 		return tbWordVO;
 	}
 
+	/**
+	 * 调用接口获取中台数据
+	 */
+	public JSONObject getZtData(String params, String url){
+		// 获取环境
+		String activeProfile = SpringContextUtil.getActiveProfile();
+		if (activeProfile.equals("dev")){
+			url = ZtApiUrlConstant.url_prefix_dev + url;
+		}
+		if (activeProfile.equals("prod")){
+			url = ZtApiUrlConstant.url_prefix_prod + url;
+		}
+		if (activeProfile.equals("test")){
+			url = ZtApiUrlConstant.url_prefix_test + url;
+		}
+		//设置请求头
+		HttpHeaders headers = new HttpHeaders();
+		headers.add(ZtConfigConstant.header_key, ZtConfigConstant.header_value);
+		//封装请求头
+		HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<MultiValueMap<String, Object>>(headers);
+		try {
+			//有请求头,有参数请求
+			ResponseEntity<String> responseEntity =
+				restTemplate.exchange(url + params,
+					HttpMethod.GET,
+					formEntity,
+					String.class);
+			// Feature.IgnoreNotMatch 保留null值的属性
+			JSONObject jsonObject = JSON.parseObject(responseEntity.getBody(), Feature.IgnoreNotMatch);
+			// 返回
+			return jsonObject;
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
 
 }
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 89bcddf..2f9a089 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
@@ -25,6 +25,23 @@
 		return outputStream.toByteArray();
 	}
 
+	public static byte[] GetEightFloodInfo() throws Exception{
+		String templatePath = "word/doc/eightFloodInfoTemplate.docx";
+		HashMap<String,Object> map = new HashMap<>();
+		byte[] bytes = GenerateWord(templatePath, map);
+		return bytes;
+	}
+
+	private static byte[] GenerateWord(String templatePath,Object object) throws Exception {
+		InputStream inputStream = WordUtil.class.getClassLoader().getResourceAsStream(templatePath);
+		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+		XWPFTemplate template = XWPFTemplate.compile(inputStream).render(object);
+		template.write(outputStream);
+		outputStream.flush();
+		outputStream.close();
+		return outputStream.toByteArray();
+	}
+
 	/**
 	 * 根据水库id获取数据
 	 * @return
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/TbWordVO.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/TbWordVO.java
index fb57563..c5253db 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/TbWordVO.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/TbWordVO.java
@@ -212,7 +212,7 @@
 			}
 
 			this.subDamInfo = GenerateDamInfo(subDamName, subDam);
-		}else{
+		}else if (damCount == 1){
 			TbAttResWaterBlock mainDam = tbAttResWaterBlockList.get(0);
 			//第一个就是主坝
 			this.mainDamInfo = GenerateDamInfo("主坝", mainDam);
@@ -438,13 +438,20 @@
 		}
 
 		//工程等别
-		this.engGrad = tbAttResBase.getEngGrad();
+		if (tbAttResBase.getEngGrad() != null){
+			this.engGrad = tbAttResBase.getEngGrad();
+		}
 
-		//开工时间 (2022年9月)
-		this.startTime = new SimpleDateFormat("yyyy年MM月").format(tbAttResBase.getStartTime());
+		if (tbAttResBase.getStartTime() != null){
+			//开工时间 (2022年9月)
+			this.startTime = new SimpleDateFormat("yyyy年MM月").format(tbAttResBase.getStartTime());
+		}
 
-		//蓄水时间(2022年9月)
-		this.waterStorageTm = new SimpleDateFormat("yyyy年MM月").format(tbAttResBase.getWaterStorageTm());
+		if (tbAttResBase.getWaterStorageTm() != null){
+			//蓄水时间(2022年9月)
+			this.waterStorageTm = new SimpleDateFormat("yyyy年MM月").format(tbAttResBase.getWaterStorageTm());
+		}
+
 	}
 
 	private void formatTbAttResStagChar(TbAttResStagChar tbAttResStagChar) {
@@ -525,8 +532,12 @@
 		}
 
 		this.protectCity = tbAttResEngBene.getCity();
+
+		double person = tbAttResEngBene.getFlControlPerson() / 1000.0;
+
+
 		this.protectPersonLand =
-			StringUtil.format("{}万人口、{}万亩耕地", String.format("%.2f",tbAttResEngBene.getFlControlPerson()/1000) , String.format("%.2f", tbAttResEngBene.getFlControlLand() / 1000));
+			StringUtil.format("{}万人口、{}万亩耕地", String.format("%.2f",person) , String.format("%.2f", tbAttResEngBene.getFlControlLand() / 1000));
 		////铁路、公路、管线、企业几个依次罗列,超过三个列出第二个后为“XX等”,后面不需罗列
 
 		String railway = tbAttResEngBene.getRailway();
@@ -588,8 +599,10 @@
 		if (tbAttResSafetyMonitor ==null){
 			return;
 		}
-
-		String time = new SimpleDateFormat("yyyy年MM月").format(tbAttResSafetyMonitor.getSafetyAppraisalTime());
+		String time = "";
+		if (tbAttResSafetyMonitor.getSafetyAppraisalTime() != null){
+			 time = new SimpleDateFormat("yyyy年MM月").format(tbAttResSafetyMonitor.getSafetyAppraisalTime());
+		}
 		String type = SafetyAppraisalTypeEnum.find(tbAttResSafetyMonitor.getSafetyAppraisalResult()).getLabel();
 		String surveyProblem = tbAttResSafetyMonitor.getSurveyProblem();
 		//(若一类坝,不介绍问题,二、三类坝介绍)
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/eightFloodInfoTemplate.doc b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/eightFloodInfoTemplate.doc
new file mode 100644
index 0000000..d1b9856
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/eightFloodInfoTemplate.doc
Binary files differ

--
Gitblit v1.9.3