CaseExtractDetailController.java 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package com.fdkankan.fusion.controller;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.deepoove.poi.XWPFTemplate;
  5. import com.deepoove.poi.config.Configure;
  6. import com.deepoove.poi.data.TextRenderData;
  7. import com.deepoove.poi.data.style.Style;
  8. import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
  9. import com.deepoove.poi.util.PoitlIOUtils;
  10. import com.fdkankan.fusion.common.ResultCode;
  11. import com.fdkankan.fusion.common.ResultData;
  12. import com.fdkankan.fusion.entity.CaseExtractDetail;
  13. import com.fdkankan.fusion.entity.CaseInquest;
  14. import com.fdkankan.fusion.exception.BusinessException;
  15. import com.fdkankan.fusion.response.CaseInquestVo;
  16. import com.fdkankan.fusion.response.WitnessVo;
  17. import com.fdkankan.fusion.service.ICaseExtractDetailService;
  18. import org.springframework.beans.BeanUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.web.bind.annotation.*;
  21. import javax.servlet.http.HttpServletRequest;
  22. import javax.servlet.http.HttpServletResponse;
  23. import java.io.BufferedOutputStream;
  24. import java.io.IOException;
  25. import java.io.InputStream;
  26. import java.io.OutputStream;
  27. /**
  28. * <p>
  29. * 前端控制器
  30. * </p>
  31. *
  32. * @author
  33. * @since 2024-07-05
  34. */
  35. @RestController
  36. @RequestMapping("/caseExtractDetail")
  37. public class CaseExtractDetailController {
  38. @Autowired
  39. ICaseExtractDetailService caseExtractDetailService;
  40. @GetMapping("/info")
  41. public ResultData info(@RequestParam(required = false) Integer caseId){
  42. return ResultData.ok(caseExtractDetailService.getByCaseId(caseId));
  43. }
  44. @PostMapping("/saveOrUpdate")
  45. public ResultData saveOrUpdate(@RequestBody CaseExtractDetail caseExtractDetail){
  46. caseExtractDetailService.saveByParam(caseExtractDetail);
  47. return ResultData.ok();
  48. }
  49. @GetMapping("/downDocx")
  50. public void downDocx(@RequestParam(required = false) Integer caseId,
  51. HttpServletResponse res, HttpServletRequest req) throws IOException {
  52. if(caseId == null){
  53. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  54. }
  55. CaseExtractDetail caseExtractDetail = caseExtractDetailService.getByCaseId(caseId);
  56. if(caseExtractDetail == null){
  57. throw new BusinessException(ResultCode.INQUEST_ERROR2);
  58. }
  59. XWPFTemplate template = caseExtractDetailService.getWordByTemplate(caseExtractDetail);
  60. // 设置响应头,指定文件类型和内容长度
  61. res.setContentType("application/octet-stream");
  62. res.setHeader("Content-Disposition", "attachment; filename=output.docx");
  63. try {
  64. // 返回网络流
  65. OutputStream out = res.getOutputStream();
  66. BufferedOutputStream bos = new BufferedOutputStream(out);
  67. template.write(bos);
  68. bos.flush();
  69. out.flush();
  70. // 关闭流
  71. PoitlIOUtils.closeQuietlyMulti(template, bos, out);
  72. } catch (IOException e) {
  73. throw new RuntimeException(e);
  74. }
  75. }
  76. }