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