guoshilong
2023-11-29 1d46a2bc8a1b843eb2ee84e65fdc2f61651a18a3
填报word修改
4 files modified
1 files added
108 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/controller/DownTemplateController.java 18 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/impl/SjztmdServiceImpl.java 52 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/util/WordUtil.java 17 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/vo/TbWordVO.java 21 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/eightFloodInfoTemplate.doc patch | view | raw | blame | history
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对象作为响应体
    }
}
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;
    }
}
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
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 @@
        }
        //工程等别
        if (tbAttResBase.getEngGrad() != null){
        this.engGrad = tbAttResBase.getEngGrad();
        }
        if (tbAttResBase.getStartTime() != null){
        //开工时间 (2022年9月)
        this.startTime = new SimpleDateFormat("yyyy年MM月").format(tbAttResBase.getStartTime());
        }
        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();
        //(若一类坝,不介绍问题,二、三类坝介绍)
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/resources/word/doc/eightFloodInfoTemplate.doc
Binary files differ