lyhzzz hai 1 ano
pai
achega
93d96e1996

+ 2 - 2
pom.xml

@@ -107,7 +107,7 @@
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>easyexcel</artifactId>
-            <version>3.1.0</version>
+            <version>4.0.0</version>
         </dependency>
 
         <dependency>
@@ -147,7 +147,7 @@
         <dependency>
             <groupId>com.deepoove</groupId>
             <artifactId>poi-tl</artifactId>
-            <version>1.9.0</version>
+            <version>1.12.2</version>
         </dependency>
     </dependencies>
 

+ 100 - 0
src/main/java/com/fdkankan/fusion/controller/CaseExtractDetailController.java

@@ -0,0 +1,100 @@
+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);
+        }
+
+    }
+
+}
+

+ 81 - 0
src/main/java/com/fdkankan/fusion/entity/CaseExtractDetail.java

@@ -0,0 +1,81 @@
+package com.fdkankan.fusion.entity;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fdkankan.fusion.typehandle.JsonArrayTypeHandler;
+import com.fdkankan.fusion.typehandle.JsonObjTypeHandler;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2024-07-05
+ */
+@Getter
+@Setter
+@TableName(value = "t_case_extract_detail",autoResultMap = true)
+public class CaseExtractDetail implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+
+    @TableField("caseId")
+    private Integer caseId;
+
+    /**
+     * 地址
+     */
+    @TableField("address")
+    private String address;
+
+    /**
+     * 提取时间
+     */
+    @TableField(typeHandler = JsonObjTypeHandler.class)
+    private JSONObject time;
+
+    /**
+     * 提取清单
+     */
+    @TableField(typeHandler = JsonArrayTypeHandler.class)
+    private JSONArray detail;
+
+    /**
+     * 提取人信息
+     */
+    @TableField(typeHandler = JsonArrayTypeHandler.class)
+    private JSONArray extractUser;
+
+    /**
+     * 证人信息
+     */
+    @TableField(typeHandler = JsonArrayTypeHandler.class)
+    private JSONArray witnessInfo;
+
+    @TableField("tb_status")
+    @TableLogic
+    private Integer tbStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/fusion/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") ;
 
         generate(path,"fusion", getTables(new String[]{
-               "t_case_img"
+               "t_case_extract_detail"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 18 - 0
src/main/java/com/fdkankan/fusion/mapper/ICaseExtractDetailMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.fusion.mapper;
+
+import com.fdkankan.fusion.entity.CaseExtractDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2024-07-05
+ */
+@Mapper
+public interface ICaseExtractDetailMapper extends BaseMapper<CaseExtractDetail> {
+
+}

+ 24 - 0
src/main/java/com/fdkankan/fusion/response/WitnessVo.java

@@ -12,4 +12,28 @@ public class WitnessVo {
     private String day;
     private String id;
     private String address;
+
+    public String getName() {
+        return name == null?"":name;
+    }
+
+    public String getYear() {
+        return year== null?"":year;
+    }
+
+    public String getMonth() {
+        return month== null?"":month;
+    }
+
+    public String getDay() {
+        return day== null?"":day;
+    }
+
+    public String getId() {
+        return id== null?"":id;
+    }
+
+    public String getAddress() {
+        return address== null?"":address;
+    }
 }

+ 19 - 0
src/main/java/com/fdkankan/fusion/service/ICaseExtractDetailService.java

@@ -0,0 +1,19 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.CaseExtractDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2024-07-05
+ */
+public interface ICaseExtractDetailService extends IService<CaseExtractDetail> {
+
+    CaseExtractDetail getByCaseId(Integer caseId);
+
+    void saveByParam(CaseExtractDetail caseExtractDetail);
+}

+ 42 - 0
src/main/java/com/fdkankan/fusion/service/impl/CaseExtractDetailServiceImpl.java

@@ -0,0 +1,42 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.entity.CaseExtractDetail;
+import com.fdkankan.fusion.entity.CaseInquest;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.fusion.mapper.ICaseExtractDetailMapper;
+import com.fdkankan.fusion.service.ICaseExtractDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2024-07-05
+ */
+@Service
+public class CaseExtractDetailServiceImpl extends ServiceImpl<ICaseExtractDetailMapper, CaseExtractDetail> implements ICaseExtractDetailService {
+
+    @Override
+    public CaseExtractDetail getByCaseId(Integer caseId) {
+        LambdaQueryWrapper<CaseExtractDetail> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CaseExtractDetail::getCaseId,caseId);
+        return this.getOne(wrapper);
+    }
+
+    @Override
+    public void saveByParam(CaseExtractDetail caseExtractDetail) {
+        if(caseExtractDetail.getCaseId() == null){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        CaseExtractDetail dbCaseExtractDetail = this.getByCaseId(caseExtractDetail.getCaseId());
+        if(dbCaseExtractDetail != null){
+            caseExtractDetail.setId(dbCaseExtractDetail.getId());
+        }
+        this.saveOrUpdate(caseExtractDetail);
+    }
+}

+ 5 - 0
src/main/resources/mapper/fusion/CaseExtractDetailMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.fusion.mapper.ICaseExtractDetailMapper">
+
+</mapper>

BIN=BIN
src/main/resources/template/extract-template.docx