123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package com.fdkankan.fusion.controller;
- import com.alibaba.fastjson.JSONObject;
- import com.deepoove.poi.XWPFTemplate;
- import com.deepoove.poi.config.Configure;
- import com.deepoove.poi.data.TextRenderData;
- import com.deepoove.poi.data.style.Style;
- import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
- import com.deepoove.poi.util.PoitlIOUtils;
- import com.fdkankan.fusion.common.ResultCode;
- import com.fdkankan.fusion.common.ResultData;
- import com.fdkankan.fusion.entity.CaseExtractDetail;
- import com.fdkankan.fusion.entity.CaseInquest;
- import com.fdkankan.fusion.exception.BusinessException;
- import com.fdkankan.fusion.response.CaseInquestVo;
- import com.fdkankan.fusion.response.WitnessVo;
- import com.fdkankan.fusion.service.ICaseExtractDetailService;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.BufferedOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- /**
- * <p>
- * 前端控制器
- * </p>
- *
- * @author
- * @since 2024-07-05
- */
- @RestController
- @RequestMapping("/caseExtractDetail")
- public class CaseExtractDetailController {
- @Autowired
- ICaseExtractDetailService caseExtractDetailService;
- @GetMapping("/info")
- public ResultData info(@RequestParam(required = false) Integer caseId){
- return ResultData.ok(caseExtractDetailService.getByCaseId(caseId));
- }
- @PostMapping("/saveOrUpdate")
- public ResultData saveOrUpdate(@RequestBody CaseExtractDetail caseExtractDetail){
- caseExtractDetailService.saveByParam(caseExtractDetail);
- return ResultData.ok();
- }
- @GetMapping("/downDocx")
- public void downDocx(@RequestParam(required = false) Integer caseId,
- HttpServletResponse res, HttpServletRequest req) throws IOException {
- if(caseId == null){
- throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
- }
- CaseExtractDetail caseExtractDetail = caseExtractDetailService.getByCaseId(caseId);
- if(caseExtractDetail == null){
- throw new BusinessException(ResultCode.INQUEST_ERROR2);
- }
- InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("template/extract-template.docx");
- // 渲染模板
- // 定义行循环插件
- LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
- Configure config = Configure.builder()
- .bind("detail", policy).bind("extractUser", policy).bind("witnessInfo", policy).build();
- XWPFTemplate template = XWPFTemplate.compile(inputStream,config).render(caseExtractDetail);
- // 设置响应头,指定文件类型和内容长度
- res.setContentType("application/octet-stream");
- res.setHeader("Content-Disposition", "attachment; filename=output.docx");
- try {
- // 返回网络流
- OutputStream out = res.getOutputStream();
- BufferedOutputStream bos = new BufferedOutputStream(out);
- template.write(bos);
- bos.flush();
- out.flush();
- // 关闭流
- PoitlIOUtils.closeQuietlyMulti(template, bos, out);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
|