xiexiang 1 ano atrás
pai
commit
11f5630691
26 arquivos alterados com 1246 adições e 17 exclusões
  1. 28 0
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/AddAdminProceedDTO.java
  2. 47 0
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/AddInvalidDecisionFileDTO.java
  3. 32 0
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/AddOralTrailDTO.java
  4. 27 0
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/AddStateOpinionDTO.java
  5. 28 0
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/UpdateAdminProceedDTO.java
  6. 45 0
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/UpdateInvalidDecisionFileDTO.java
  7. 33 0
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/UpdateOralTrailDTO.java
  8. 28 0
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/UpdateStateOpinionDTO.java
  9. 29 0
      src/main/java/cn/cslg/pas/common/vo/invalidVO/AdminProceedVO.java
  10. 40 0
      src/main/java/cn/cslg/pas/common/vo/invalidVO/InvalidDecisionFileVO.java
  11. 1 0
      src/main/java/cn/cslg/pas/common/vo/invalidVO/InvalidRequestFileVO.java
  12. 32 0
      src/main/java/cn/cslg/pas/common/vo/invalidVO/OralTrailVO.java
  13. 20 0
      src/main/java/cn/cslg/pas/common/vo/invalidVO/ReportAffairVO.java
  14. 27 0
      src/main/java/cn/cslg/pas/common/vo/invalidVO/StateOpinionVO.java
  15. 80 6
      src/main/java/cn/cslg/pas/controller/ReportAffairController.java
  16. 27 0
      src/main/java/cn/cslg/pas/domain/business/AdminProceed.java
  17. 45 0
      src/main/java/cn/cslg/pas/domain/business/InvalidDecisionFile.java
  18. 39 0
      src/main/java/cn/cslg/pas/domain/business/OralTrail.java
  19. 13 0
      src/main/java/cn/cslg/pas/mapper/AdminProceedMapper.java
  20. 13 0
      src/main/java/cn/cslg/pas/mapper/InvalidDecisionFileMapper.java
  21. 13 0
      src/main/java/cn/cslg/pas/mapper/OralTrailMapper.java
  22. 145 0
      src/main/java/cn/cslg/pas/service/business/AdminProceedService.java
  23. 142 0
      src/main/java/cn/cslg/pas/service/business/InvalidDecisionFileService.java
  24. 1 0
      src/main/java/cn/cslg/pas/service/business/InvalidRequestFileService.java
  25. 149 0
      src/main/java/cn/cslg/pas/service/business/OralTrailService.java
  26. 162 11
      src/main/java/cn/cslg/pas/service/business/ReportAffairService.java

+ 28 - 0
src/main/java/cn/cslg/pas/common/dto/invalidDTO/AddAdminProceedDTO.java

@@ -0,0 +1,28 @@
+package cn.cslg.pas.common.dto.invalidDTO;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Data
+public class AddAdminProceedDTO {
+    private Integer projectId;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date proceedingTime;
+
+    private String conclusion;
+
+    private List<String> fileGuids;
+
+    private String description;
+}

+ 47 - 0
src/main/java/cn/cslg/pas/common/dto/invalidDTO/AddInvalidDecisionFileDTO.java

@@ -0,0 +1,47 @@
+package cn.cslg.pas.common.dto.invalidDTO;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 上传无效决定书
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Data
+public class AddInvalidDecisionFileDTO {
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date invalidDecisionTime;
+
+    private Integer projectId;
+
+    /**
+     * 决定书号码
+     */
+    private String fileNo;
+
+    /**
+     * 法律依据
+     */
+    private String legalBase;
+
+    /**
+     * 决定要点
+     */
+    private String decisionKey;
+
+    private String conclusion;
+
+    private List<String> fileGuids;
+
+    private String description;
+
+}

+ 32 - 0
src/main/java/cn/cslg/pas/common/dto/invalidDTO/AddOralTrailDTO.java

@@ -0,0 +1,32 @@
+package cn.cslg.pas.common.dto.invalidDTO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 上传口审记录
+ * @Author xiexiang
+ * @Date 2023/12/23
+ */
+@Data
+public class AddOralTrailDTO {
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date oralTrailTime;
+
+    private String position;
+
+    private String participator;
+
+    private Integer projectId;
+
+    private List<String> fileGuids;
+
+    private String description;
+
+    private String remark;
+}

+ 27 - 0
src/main/java/cn/cslg/pas/common/dto/invalidDTO/AddStateOpinionDTO.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.common.dto.invalidDTO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 陈述意见书
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Data
+public class AddStateOpinionDTO {
+    private Integer projectId;
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date stateReplyTime;
+
+    private String conclusion;
+
+    private List<String> fileGuids;
+
+    private String description;
+}

+ 28 - 0
src/main/java/cn/cslg/pas/common/dto/invalidDTO/UpdateAdminProceedDTO.java

@@ -0,0 +1,28 @@
+package cn.cslg.pas.common.dto.invalidDTO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Data
+public class UpdateAdminProceedDTO {
+    private Integer proceedingId;
+    private Integer projectId;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date proceedingTime;
+
+    private String conclusion;
+
+    private List<String> fileGuids;
+
+    private String description;
+}

+ 45 - 0
src/main/java/cn/cslg/pas/common/dto/invalidDTO/UpdateInvalidDecisionFileDTO.java

@@ -0,0 +1,45 @@
+package cn.cslg.pas.common.dto.invalidDTO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 上传无效决定书
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Data
+public class UpdateInvalidDecisionFileDTO {
+    private Integer invalidDecisionFileId;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date invalidDecisionTime;
+
+    private Integer projectId;
+    /**
+     * 决定书号码
+     */
+    private String fileNo;
+
+    /**
+     * 法律依据
+     */
+    private String legalBase;
+
+    /**
+     * 决定要点
+     */
+    private String decisionKey;
+
+    private String conclusion;
+
+    private List<String> fileGuids;
+
+    private String description;
+
+}

+ 33 - 0
src/main/java/cn/cslg/pas/common/dto/invalidDTO/UpdateOralTrailDTO.java

@@ -0,0 +1,33 @@
+package cn.cslg.pas.common.dto.invalidDTO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 上传口审记录
+ * @Author xiexiang
+ * @Date 2023/12/23
+ */
+@Data
+public class UpdateOralTrailDTO {
+    private Integer oralTrailId;
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date oralTrailTime;
+
+    private String position;
+
+    private String participator;
+
+    private Integer projectId;
+
+    private List<String> fileGuids;
+
+    private String description;
+
+    private String remark;
+}

+ 28 - 0
src/main/java/cn/cslg/pas/common/dto/invalidDTO/UpdateStateOpinionDTO.java

@@ -0,0 +1,28 @@
+package cn.cslg.pas.common.dto.invalidDTO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 陈述意见书
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Data
+public class UpdateStateOpinionDTO {
+    private Integer stateOpinionId;
+    private Integer projectId;
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date stateReplyTime;
+
+    private String conclusion;
+
+    private List<String> fileGuids;
+
+    private String description;
+}

+ 29 - 0
src/main/java/cn/cslg/pas/common/vo/invalidVO/AdminProceedVO.java

@@ -0,0 +1,29 @@
+package cn.cslg.pas.common.vo.invalidVO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 行政诉讼书返回VO
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Data
+public class AdminProceedVO {
+    private Integer proceedingId;
+    private Integer projectId;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date proceedingTime;
+
+    private String conclusion;
+
+    private List<String> fileGuids;
+
+    private String description;
+}

+ 40 - 0
src/main/java/cn/cslg/pas/common/vo/invalidVO/InvalidDecisionFileVO.java

@@ -0,0 +1,40 @@
+package cn.cslg.pas.common.vo.invalidVO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 无效决定书VO
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Data
+public class InvalidDecisionFileVO {
+    private Integer invalidDecisionFileId;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date invalidDecisionTime;
+
+    private Integer projectId;
+    /**
+     * 决定书号码
+     */
+    private String fileNo;
+
+    /**
+     * 法律依据
+     */
+    private String legalBase;
+
+    /**
+     * 决定要点
+     */
+    private String decisionKey;
+
+    private String conclusion;
+}

+ 1 - 0
src/main/java/cn/cslg/pas/common/vo/invalidVO/InvalidRequestFileVO.java

@@ -12,6 +12,7 @@ import java.util.Date;
  */
 @Data
 public class InvalidRequestFileVO {
+    private Integer invalidRequestFileId;
     /**
      * 无效请求日
      */

+ 32 - 0
src/main/java/cn/cslg/pas/common/vo/invalidVO/OralTrailVO.java

@@ -0,0 +1,32 @@
+package cn.cslg.pas.common.vo.invalidVO;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 口审记录VO
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Data
+public class OralTrailVO {
+    private Integer oralTrailId;
+    /**
+     * 口审地点
+     */
+    private String position;
+
+    private Date oralTrailTime;
+
+    /**
+     * 参与人
+     */
+    private String participator;
+
+    /**
+     * 笔录描述
+     */
+    private String description;
+}

+ 20 - 0
src/main/java/cn/cslg/pas/common/vo/invalidVO/ReportAffairVO.java

@@ -59,4 +59,24 @@ public class ReportAffairVO {
      * 无效请求书返回VO
      */
     private InvalidRequestFileVO invalidRequestFileVO;
+
+    /**
+     * 口审记录返回VO
+     */
+    private OralTrailVO oralTrailVO;
+
+    /**
+     * 无效决定书返回VO
+     */
+    private InvalidDecisionFileVO invalidDecisionFileVO;
+
+    /**
+     * 行政诉讼书返回VO
+     */
+    private AdminProceedVO adminProceedVO;
+
+    /**
+     * 陈述意见书返回VO
+     */
+    private StateOpinionVO stateOpinionVO;
 }

+ 27 - 0
src/main/java/cn/cslg/pas/common/vo/invalidVO/StateOpinionVO.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.common.vo.invalidVO;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 陈述意见书
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Data
+public class StateOpinionVO {
+    private Integer stateOpinionId;
+
+    private Integer projectId;
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date stateReplyTime;
+
+    private List<String> fileGuids;
+
+    private String description;
+}

+ 80 - 6
src/main/java/cn/cslg/pas/controller/ReportAffairController.java

@@ -1,16 +1,12 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
-import cn.cslg.pas.common.dto.invalidDTO.AddInvalidRequestFileDTO;
-import cn.cslg.pas.common.dto.invalidDTO.QueryReportAffairDTO;
-import cn.cslg.pas.common.dto.invalidDTO.UpdateInvalidRequestFileDTO;
+import cn.cslg.pas.common.dto.invalidDTO.*;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.vo.invalidVO.ReportAffairVO;
 import cn.cslg.pas.exception.XiaoShiException;
-import cn.cslg.pas.factorys.businessFactory.Business;
-import cn.cslg.pas.service.business.InvalidRequestFileService;
-import cn.cslg.pas.service.business.ReportAffairService;
+import cn.cslg.pas.service.business.*;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,6 +28,12 @@ public class ReportAffairController {
     private InvalidRequestFileService invalidRequestFileService;
     @Autowired
     private ReportAffairService reportAffairService;
+    @Autowired
+    private OralTrailService oralTrailService;
+    @Autowired
+    private InvalidDecisionFileService invalidDecisionFileService;
+    @Autowired
+    private AdminProceedService adminProceedService;
 
     @Operation(summary = "上传无效请求书")
     @PostMapping("/addInvalidRequestFile")
@@ -72,4 +74,76 @@ public class ReportAffairController {
             throw new XiaoShiException("需要删除的ids不能为空!");
         }
     }
+
+    @Operation(summary = "上传口审记录")
+    @PostMapping("/addOralTrail")
+    public Response addOralTrail(@RequestBody AddOralTrailDTO addOralTrailDTO) throws Exception {
+        Integer id = oralTrailService.add(addOralTrailDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "修改口审记录")
+    @PostMapping("/updateOralTrail")
+    public Response updateOralTrail(@RequestBody UpdateOralTrailDTO updateOralTrailDTO) throws Exception {
+        Integer id = oralTrailService.update(updateOralTrailDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "上传无效决定书")
+    @PostMapping("/addInvalidDecisionFile")
+    public Response addInvalidDecisionFile(@RequestBody AddInvalidDecisionFileDTO addInvalidDecisionFileDTO) throws Exception {
+        Integer id = invalidDecisionFileService.add(addInvalidDecisionFileDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "修改无效决定书")
+    @PostMapping("/updateInvalidDecisionFile")
+    public Response updateInvalidDecisionFile(@RequestBody UpdateInvalidDecisionFileDTO updateInvalidDecisionFileDTO) throws Exception {
+        Integer id = invalidDecisionFileService.update(updateInvalidDecisionFileDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "上传行政诉讼书")
+    @PostMapping("/addAdminProceed")
+    public Response addAdminProceed(@RequestBody AddAdminProceedDTO addAdminProceedDTO) throws Exception {
+        Integer id = adminProceedService.add(addAdminProceedDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "修改行政诉讼书")
+    @PostMapping("/updateAdminProceed")
+    public Response updateAdminProceed(@RequestBody UpdateAdminProceedDTO updateAdminProceedDTO) throws Exception {
+        Integer id = adminProceedService.update(updateAdminProceedDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "上传陈述意见书")
+    @PostMapping("/addStateOpinion")
+    public Response addStateOpinion(@RequestBody AddStateOpinionDTO addStateOpinionDTO) throws Exception {
+        Integer id = reportAffairService.addStateOpinion(addStateOpinionDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "修改陈述意见书")
+    @PostMapping("/updateStateOpinion")
+    public Response updateStateOpinion(@RequestBody UpdateStateOpinionDTO updateStateOpinionDTO) throws Exception {
+        Integer id = reportAffairService.updateStateOpinion(updateStateOpinionDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
 }

+ 27 - 0
src/main/java/cn/cslg/pas/domain/business/AdminProceed.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 行政诉讼书
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Data
+@TableName("admin_proceed")
+public class AdminProceed extends BaseEntity<AdminProceed> {
+    /**
+     * 结论
+     */
+    @TableField(value = "conclusion")
+    private String conclusion;
+
+    /**
+     * 报告事务id
+     */
+    @TableField(value = "report_affair_id")
+    private Integer reportAffairId;
+}

+ 45 - 0
src/main/java/cn/cslg/pas/domain/business/InvalidDecisionFile.java

@@ -0,0 +1,45 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 无效决定书
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Data
+@TableName("invalid_decision_file")
+public class InvalidDecisionFile extends BaseEntity<InvalidDecisionFile> {
+    /**
+     * 报告事务id
+     */
+    @TableField(value = "report_affair_id")
+    private Integer reportAffairId;
+
+    /**
+     * 决定书号码
+     */
+    @TableField(value = "file_no")
+    private String fileNo;
+
+    /**
+     * 法律依据
+     */
+    @TableField(value = "legal_base")
+    private String legalBase;
+
+    /**
+     * 决定要点
+     */
+    @TableField(value = "decision_key")
+    private String decisionKey;
+
+    /**
+     * 结论
+     */
+    @TableField(value = "conclusion")
+    private String conclusion;
+}

+ 39 - 0
src/main/java/cn/cslg/pas/domain/business/OralTrail.java

@@ -0,0 +1,39 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 口审记录
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Data
+@TableName("oral_trail")
+public class OralTrail extends BaseEntity<OralTrail> {
+    /**
+     * 口审地点
+     */
+    @TableField(value = "position")
+    private String position;
+
+    /**
+     * 参与人
+     */
+    @TableField(value = "participator")
+    private String participator;
+
+    /**
+     * 笔录描述
+     */
+    @TableField(value = "description")
+    private String description;
+
+    /**
+     * 报告事务id
+     */
+    @TableField(value = "report_affair_id")
+    private Integer reportAffairId;
+}

+ 13 - 0
src/main/java/cn/cslg/pas/mapper/AdminProceedMapper.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.AdminProceed;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Repository
+public interface AdminProceedMapper extends BaseMapper<AdminProceed> {
+}

+ 13 - 0
src/main/java/cn/cslg/pas/mapper/InvalidDecisionFileMapper.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.InvalidDecisionFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Repository
+public interface InvalidDecisionFileMapper extends BaseMapper<InvalidDecisionFile> {
+}

+ 13 - 0
src/main/java/cn/cslg/pas/mapper/OralTrailMapper.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.OralTrail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Repository
+public interface OralTrailMapper extends BaseMapper<OralTrail> {
+}

+ 145 - 0
src/main/java/cn/cslg/pas/service/business/AdminProceedService.java

@@ -0,0 +1,145 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.business.ReportAffairDTO;
+import cn.cslg.pas.common.dto.invalidDTO.AddAdminProceedDTO;
+import cn.cslg.pas.common.dto.invalidDTO.UpdateAdminProceedDTO;
+import cn.cslg.pas.common.vo.invalidVO.AdminProceedVO;
+import cn.cslg.pas.common.vo.invalidVO.OralTrailVO;
+import cn.cslg.pas.domain.business.AdminProceed;
+import cn.cslg.pas.domain.business.AssoReportAffairFile;
+import cn.cslg.pas.domain.business.OralTrail;
+import cn.cslg.pas.domain.business.ReportAffair;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.AdminProceedMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Slf4j
+@Service
+public class AdminProceedService extends ServiceImpl<AdminProceedMapper, AdminProceed> {
+    @Autowired
+    private ReportAffairService reportAffairService;
+
+    @Autowired
+    private AssoReportAffairFileService assoReportAffairFileService;
+
+    public Integer add(AddAdminProceedDTO addDto){
+        if (addDto == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer projectId = addDto.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("报告id为空");
+        }
+        //1. 首先上传报告事务,拿到报告事务id
+        ReportAffairDTO reportAffairDTO = new ReportAffairDTO();
+        reportAffairDTO.setProjectId(projectId);
+        //行政诉讼书 4
+        reportAffairDTO.setAffairType(4);
+        //发生时间是口审时间
+        reportAffairDTO.setOccurredTime(addDto.getProceedingTime());
+        //备注
+        reportAffairDTO.setDescription(addDto.getDescription());
+        Integer reportAffairId = reportAffairService.addReportAffair(reportAffairDTO);
+
+        if (reportAffairId == null) {
+            throw new XiaoShiException("上传报告事务失败");
+        }
+        //2. 上传行政诉讼
+        AdminProceed adminLitigation = new AdminProceed();
+        adminLitigation.setConclusion(addDto.getConclusion());
+        adminLitigation.setReportAffairId(reportAffairId);
+        adminLitigation.insert();
+        //3. 添加报告事务与文件关联
+        List<String> fileGuids = addDto.getFileGuids();
+        if (fileGuids != null && !fileGuids.isEmpty()) {
+            List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
+            fileGuids.forEach(item -> {
+                AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
+                assoReportAffairFile.setReportAffairId(reportAffairId);
+                assoReportAffairFile.setFileGuid(item);
+                assoReportAffairFiles.add(assoReportAffairFile);
+            });
+            assoReportAffairFileService.saveBatch(assoReportAffairFiles);
+        }
+        return reportAffairId;
+    }
+
+    public AdminProceedVO getAdminProceed(Integer reportAffairId) {
+        LambdaQueryWrapper<AdminProceed> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AdminProceed::getReportAffairId, reportAffairId);
+        AdminProceed adminProceed = this.getOne(queryWrapper, false);
+        AdminProceedVO adminProceedVO = new AdminProceedVO();
+        if (adminProceed != null) {
+            BeanUtils.copyProperties(adminProceed, adminProceedVO);
+            adminProceedVO.setProceedingId(adminProceed.getId());
+        }
+        ReportAffair reportAffair = reportAffairService.getById(reportAffairId);
+        adminProceedVO.setProceedingTime(reportAffair.getOccurredTime());
+        return adminProceedVO;
+    }
+
+    /**
+     * 更新行政记录
+     * @param updateDTO
+     * @return
+     */
+    public Integer update(UpdateAdminProceedDTO updateDTO){
+        if (updateDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer projectId = updateDTO.getProjectId();
+        Integer id = updateDTO.getProceedingId();
+        if (id == null) {
+            throw new XiaoShiException("id为空");
+        }
+        if (projectId == null) {
+            throw new XiaoShiException("报告id为空");
+        }
+        //1. 根据id查出行政记录
+        AdminProceed al = this.getById(id);
+        if (al == null) {
+            throw new XiaoShiException("oralTrail查询错误");
+        }
+        BeanUtils.copyProperties(updateDTO, al);
+        al.updateById();
+        Integer reportAffairId = al.getReportAffairId();
+        //2. 拿到报告事务id,获取报告事务
+        ReportAffair reportAffair = reportAffairService.getById(reportAffairId);
+        reportAffair.setProjectId(projectId);
+        //发生时间是无效请求日
+        reportAffair.setOccurredTime(updateDTO.getProceedingTime());
+        //备注
+        reportAffair.setDescription(updateDTO.getDescription());
+        reportAffair.updateById();
+        //3. 更新报告事务与文件关联
+        List<String> fileGuids = updateDTO.getFileGuids();
+        if (fileGuids != null && !fileGuids.isEmpty()) {
+            LambdaQueryWrapper<AssoReportAffairFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoReportAffairFile::getReportAffairId, reportAffairId);
+            assoReportAffairFileService.remove(queryWrapper);
+
+            List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
+            fileGuids.forEach(item -> {
+                AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
+                assoReportAffairFile.setReportAffairId(reportAffairId);
+                assoReportAffairFile.setFileGuid(item);
+                assoReportAffairFiles.add(assoReportAffairFile);
+            });
+            assoReportAffairFileService.saveBatch(assoReportAffairFiles);
+        }
+        return reportAffairId;
+    }
+
+}

+ 142 - 0
src/main/java/cn/cslg/pas/service/business/InvalidDecisionFileService.java

@@ -0,0 +1,142 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.business.ReportAffairDTO;
+import cn.cslg.pas.common.dto.invalidDTO.AddInvalidDecisionFileDTO;
+import cn.cslg.pas.common.dto.invalidDTO.UpdateInvalidDecisionFileDTO;
+import cn.cslg.pas.common.vo.invalidVO.InvalidDecisionFileVO;
+import cn.cslg.pas.common.vo.invalidVO.OralTrailVO;
+import cn.cslg.pas.domain.business.AssoReportAffairFile;
+import cn.cslg.pas.domain.business.InvalidDecisionFile;
+import cn.cslg.pas.domain.business.OralTrail;
+import cn.cslg.pas.domain.business.ReportAffair;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.InvalidDecisionFileMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Slf4j
+@Service
+public class InvalidDecisionFileService extends ServiceImpl<InvalidDecisionFileMapper, InvalidDecisionFile> {
+    @Autowired
+    private ReportAffairService reportAffairService;
+
+    @Autowired
+    private AssoReportAffairFileService assoReportAffairFileService;
+
+    public Integer add(AddInvalidDecisionFileDTO addInvalidDecisionFileDTO){
+        if (addInvalidDecisionFileDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer projectId = addInvalidDecisionFileDTO.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("报告id为空");
+        }
+        //1. 首先上传报告事务,拿到报告事务id
+        ReportAffairDTO reportAffairDTO = new ReportAffairDTO();
+        reportAffairDTO.setProjectId(projectId);
+        //无效决定书 3
+        reportAffairDTO.setAffairType(3);
+        //发生时间是口审时间
+        reportAffairDTO.setOccurredTime(addInvalidDecisionFileDTO.getInvalidDecisionTime());
+        //备注
+        reportAffairDTO.setDescription(addInvalidDecisionFileDTO.getDescription());
+        Integer reportAffairId = reportAffairService.addReportAffair(reportAffairDTO);
+
+        if (reportAffairId == null) {
+            throw new XiaoShiException("上传报告事务失败");
+        }
+        //2. 上传无效决定书
+        InvalidDecisionFile invalidDecisionFile = new InvalidDecisionFile();
+        invalidDecisionFile.setFileNo(addInvalidDecisionFileDTO.getFileNo());
+        invalidDecisionFile.setDecisionKey(addInvalidDecisionFileDTO.getDecisionKey());
+        invalidDecisionFile.setConclusion(addInvalidDecisionFileDTO.getConclusion());
+        invalidDecisionFile.setLegalBase(addInvalidDecisionFileDTO.getLegalBase());
+        invalidDecisionFile.setReportAffairId(reportAffairId);
+        invalidDecisionFile.insert();
+        //3. 添加报告事务与文件关联
+        List<String> fileGuids = addInvalidDecisionFileDTO.getFileGuids();
+        if (fileGuids != null && !fileGuids.isEmpty()) {
+            List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
+            fileGuids.forEach(item -> {
+                AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
+                assoReportAffairFile.setReportAffairId(reportAffairId);
+                assoReportAffairFile.setFileGuid(item);
+                assoReportAffairFiles.add(assoReportAffairFile);
+            });
+            assoReportAffairFileService.saveBatch(assoReportAffairFiles);
+        }
+        return reportAffairId;
+    }
+
+    public Integer update(UpdateInvalidDecisionFileDTO updateInvalidDecisionFileDTO){
+        if (updateInvalidDecisionFileDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer projectId = updateInvalidDecisionFileDTO.getProjectId();
+        Integer id = updateInvalidDecisionFileDTO.getInvalidDecisionFileId();
+        if (id == null) {
+            throw new XiaoShiException("id为空");
+        }
+        if (projectId == null) {
+            throw new XiaoShiException("报告id为空");
+        }
+        //1. 根据id查出无效决定书
+        InvalidDecisionFile invalidDecisionFile = this.getById(id);
+        if (invalidDecisionFile == null) {
+            throw new XiaoShiException("invalidDecisionFile查询错误");
+        }
+        BeanUtils.copyProperties(updateInvalidDecisionFileDTO, invalidDecisionFile);
+        invalidDecisionFile.updateById();
+        Integer reportAffairId = invalidDecisionFile.getReportAffairId();
+        //2. 拿到报告事务id,获取报告事务
+        ReportAffair reportAffair = reportAffairService.getById(reportAffairId);
+        reportAffair.setProjectId(projectId);
+        //发生时间是无效请求日
+        reportAffair.setOccurredTime(updateInvalidDecisionFileDTO.getInvalidDecisionTime());
+        //备注
+        reportAffair.setDescription(updateInvalidDecisionFileDTO.getDescription());
+        reportAffair.updateById();
+        //3. 更新报告事务与文件关联
+        List<String> fileGuids = updateInvalidDecisionFileDTO.getFileGuids();
+        if (fileGuids != null && !fileGuids.isEmpty()) {
+            LambdaQueryWrapper<AssoReportAffairFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoReportAffairFile::getReportAffairId, reportAffairId);
+            assoReportAffairFileService.remove(queryWrapper);
+
+            List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
+            fileGuids.forEach(item -> {
+                AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
+                assoReportAffairFile.setReportAffairId(reportAffairId);
+                assoReportAffairFile.setFileGuid(item);
+                assoReportAffairFiles.add(assoReportAffairFile);
+            });
+            assoReportAffairFileService.saveBatch(assoReportAffairFiles);
+        }
+        return reportAffairId;
+    }
+
+    public InvalidDecisionFileVO getInvalidDecisionFile(Integer reportAffairId) {
+        LambdaQueryWrapper<InvalidDecisionFile> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(InvalidDecisionFile::getReportAffairId, reportAffairId);
+        InvalidDecisionFile invalidDecisionFile = this.getOne(queryWrapper, false);
+        InvalidDecisionFileVO invalidDecisionFileVO = new InvalidDecisionFileVO();
+        if (invalidDecisionFile != null) {
+            BeanUtils.copyProperties(invalidDecisionFile, invalidDecisionFileVO);
+            invalidDecisionFileVO.setInvalidDecisionFileId(invalidDecisionFile.getId());
+        }
+        ReportAffair reportAffair = reportAffairService.getById(reportAffairId);
+        invalidDecisionFileVO.setInvalidDecisionTime(reportAffair.getOccurredTime());
+        return invalidDecisionFileVO;
+    }
+}

+ 1 - 0
src/main/java/cn/cslg/pas/service/business/InvalidRequestFileService.java

@@ -89,6 +89,7 @@ public class InvalidRequestFileService extends ServiceImpl<InvalidRequestFileMap
         InvalidRequestFileVO invalidRequestFileVO = new InvalidRequestFileVO();
         if (invalidRequestFile != null) {
             BeanUtils.copyProperties(invalidRequestFile, invalidRequestFileVO);
+            invalidRequestFileVO.setInvalidRequestFileId(invalidRequestFile.getId());
         }
         return invalidRequestFileVO;
     }

+ 149 - 0
src/main/java/cn/cslg/pas/service/business/OralTrailService.java

@@ -0,0 +1,149 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.business.ReportAffairDTO;
+import cn.cslg.pas.common.dto.invalidDTO.AddOralTrailDTO;
+import cn.cslg.pas.common.dto.invalidDTO.UpdateOralTrailDTO;
+import cn.cslg.pas.common.vo.invalidVO.InvalidRequestFileVO;
+import cn.cslg.pas.common.vo.invalidVO.OralTrailVO;
+import cn.cslg.pas.domain.business.AssoReportAffairFile;
+import cn.cslg.pas.domain.business.InvalidRequestFile;
+import cn.cslg.pas.domain.business.OralTrail;
+import cn.cslg.pas.domain.business.ReportAffair;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.OralTrailMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 口审记录Service
+ * @Author xiexiang
+ * @Date 2023/12/28
+ */
+@Slf4j
+@Service
+public class OralTrailService extends ServiceImpl<OralTrailMapper, OralTrail> {
+    @Autowired
+    private ReportAffairService reportAffairService;
+
+    @Autowired
+    private AssoReportAffairFileService assoReportAffairFileService;
+
+    public Integer add(AddOralTrailDTO addOralTrailDTO){
+        if (addOralTrailDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer projectId = addOralTrailDTO.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("报告id为空");
+        }
+        //1. 首先上传报告事务,拿到报告事务id
+        ReportAffairDTO reportAffairDTO = new ReportAffairDTO();
+        reportAffairDTO.setProjectId(projectId);
+        //口审记录 0
+        reportAffairDTO.setAffairType(0);
+        //发生时间是口审时间
+        reportAffairDTO.setOccurredTime(addOralTrailDTO.getOralTrailTime());
+        //备注
+        reportAffairDTO.setDescription(addOralTrailDTO.getRemark());
+        Integer reportAffairId = reportAffairService.addReportAffair(reportAffairDTO);
+
+        if (reportAffairId == null) {
+            throw new XiaoShiException("上传报告事务失败");
+        }
+        //2. 上传口审记录
+        OralTrail oralTrail = new OralTrail();
+        oralTrail.setParticipator(addOralTrailDTO.getParticipator());
+        oralTrail.setPosition(addOralTrailDTO.getPosition());
+        oralTrail.setDescription(addOralTrailDTO.getDescription());
+        oralTrail.setReportAffairId(reportAffairId);
+        oralTrail.insert();
+        //3. 添加报告事务与文件关联
+        List<String> fileGuids = addOralTrailDTO.getFileGuids();
+        if (fileGuids != null && !fileGuids.isEmpty()) {
+            List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
+            fileGuids.forEach(item -> {
+                AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
+                assoReportAffairFile.setReportAffairId(reportAffairId);
+                assoReportAffairFile.setFileGuid(item);
+                assoReportAffairFiles.add(assoReportAffairFile);
+            });
+            assoReportAffairFileService.saveBatch(assoReportAffairFiles);
+        }
+        return reportAffairId;
+    }
+
+    public OralTrailVO getOralTrailVO(Integer reportAffairId) {
+        LambdaQueryWrapper<OralTrail> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(OralTrail::getReportAffairId, reportAffairId);
+        OralTrail oralTrail = this.getOne(queryWrapper, false);
+        OralTrailVO oralTrailVO = new OralTrailVO();
+        if (oralTrail != null) {
+            BeanUtils.copyProperties(oralTrail, oralTrailVO);
+            oralTrailVO.setOralTrailId(oralTrail.getId());
+        }
+        ReportAffair reportAffair = reportAffairService.getById(reportAffairId);
+        oralTrailVO.setOralTrailTime(reportAffair.getOccurredTime());
+        return oralTrailVO;
+    }
+
+    /**
+     * 更新口审记录
+     * @param updateOralTrailDTO
+     * @return
+     */
+    public Integer update(UpdateOralTrailDTO updateOralTrailDTO){
+        if (updateOralTrailDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer projectId = updateOralTrailDTO.getProjectId();
+        Integer id = updateOralTrailDTO.getOralTrailId();
+        if (id == null) {
+            throw new XiaoShiException("id为空");
+        }
+        if (projectId == null) {
+            throw new XiaoShiException("报告id为空");
+        }
+        //1. 根据id查出口审记录
+        OralTrail oralTrail = this.getById(id);
+        if (oralTrail == null) {
+            throw new XiaoShiException("oralTrail查询错误");
+        }
+        BeanUtils.copyProperties(updateOralTrailDTO, oralTrail);
+        oralTrail.updateById();
+        Integer reportAffairId = oralTrail.getReportAffairId();
+        //2. 拿到报告事务id,获取报告事务
+        ReportAffair reportAffair = reportAffairService.getById(reportAffairId);
+        reportAffair.setProjectId(projectId);
+        //发生时间是无效请求日
+        reportAffair.setOccurredTime(updateOralTrailDTO.getOralTrailTime());
+        //备注
+        reportAffair.setDescription(updateOralTrailDTO.getRemark());
+        reportAffair.updateById();
+        //3. 更新报告事务与文件关联
+        List<String> fileGuids = updateOralTrailDTO.getFileGuids();
+        if (fileGuids != null && !fileGuids.isEmpty()) {
+            LambdaQueryWrapper<AssoReportAffairFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoReportAffairFile::getReportAffairId, reportAffairId);
+            assoReportAffairFileService.remove(queryWrapper);
+
+            List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
+            fileGuids.forEach(item -> {
+                AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
+                assoReportAffairFile.setReportAffairId(reportAffairId);
+                assoReportAffairFile.setFileGuid(item);
+                assoReportAffairFiles.add(assoReportAffairFile);
+            });
+            assoReportAffairFileService.saveBatch(assoReportAffairFiles);
+        }
+        return reportAffairId;
+    }
+}

+ 162 - 11
src/main/java/cn/cslg/pas/service/business/ReportAffairService.java

@@ -1,14 +1,16 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.ReportAffairDTO;
+import cn.cslg.pas.common.dto.invalidDTO.AddAdminProceedDTO;
+import cn.cslg.pas.common.dto.invalidDTO.AddStateOpinionDTO;
 import cn.cslg.pas.common.dto.invalidDTO.QueryReportAffairDTO;
+import cn.cslg.pas.common.dto.invalidDTO.UpdateStateOpinionDTO;
 import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.model.cronModel.SystemFile;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
-import cn.cslg.pas.common.vo.invalidVO.InvalidRequestFileVO;
-import cn.cslg.pas.common.vo.invalidVO.ReportAffairVO;
+import cn.cslg.pas.common.vo.invalidVO.*;
 import cn.cslg.pas.domain.business.AssoReportAffairFile;
 import cn.cslg.pas.domain.business.InvalidRequestFile;
 import cn.cslg.pas.domain.business.ReportAffair;
@@ -22,7 +24,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -47,9 +51,19 @@ public class ReportAffairService extends ServiceImpl<ReportAffairMapper, ReportA
     @Autowired
     private FileManagerService fileManagerService;
     @Autowired
+    @Lazy
     private InvalidRequestFileService invalidRequestFileService;
     @Autowired
     private PermissionService permissionService;
+    @Autowired
+    @Lazy
+    private OralTrailService oralTrailService;
+    @Autowired
+    @Lazy
+    private InvalidDecisionFileService invalidDecisionFileService;
+    @Autowired
+    @Lazy
+    private AdminProceedService adminProceedService;
 
     /**
      * 创建报告事务
@@ -119,16 +133,16 @@ public class ReportAffairService extends ServiceImpl<ReportAffairMapper, ReportA
             BeanUtils.copyProperties(item, reportAffairVO);
             //根据事务类型选择不同的装载方式
             Integer type = reportAffairVO.getAffairType();
-            if (type == 0) {
-
-            } else if (type == 1) {//无效请求书
+            if (type == 0) {//0 口审记录
+                this.loadOralTrail(reportAffairVO);
+            } else if (type == 1) {//1 无效请求书
                 this.loadInvalidRequestFile(reportAffairVO);
-            } else if (type == 2) {
-
-            } else if (type == 3) {
-
-            } else if (type == 4) {
-
+            } else if (type == 2) {//2 陈述意见书
+                this.loadStateOpinion(reportAffairVO);
+            } else if (type == 3) {//3 无效决定书
+                this.loadInvalidDecisionFile(reportAffairVO);
+            } else if (type == 4) {//4 行政诉讼书
+                this.loadAdminProceed(reportAffairVO);
             }
             reportAffairVOS.add(reportAffairVO);
         });
@@ -208,4 +222,141 @@ public class ReportAffairService extends ServiceImpl<ReportAffairMapper, ReportA
             }
         }
     }
+
+
+    /**
+     * 装载口审记录
+     *
+     * @param reportAffairVO
+     */
+    public void loadOralTrail(ReportAffairVO reportAffairVO) {
+        Integer reportAffairId = reportAffairVO.getId();
+        OralTrailVO oralTrailVO = oralTrailService.getOralTrailVO(reportAffairId);
+        reportAffairVO.setOralTrailVO(oralTrailVO);
+    }
+
+
+    /**
+     * 装载无效决定书
+     *
+     * @param reportAffairVO
+     */
+    public void loadInvalidDecisionFile(ReportAffairVO reportAffairVO) {
+        Integer reportAffairId = reportAffairVO.getId();
+        InvalidDecisionFileVO invalidDecisionFileVO = invalidDecisionFileService.getInvalidDecisionFile(reportAffairId);
+        reportAffairVO.setInvalidDecisionFileVO(invalidDecisionFileVO);
+    }
+
+    /**
+     * 装载行政诉讼书
+     *
+     * @param reportAffairVO
+     */
+    public void loadAdminProceed(ReportAffairVO reportAffairVO) {
+        Integer reportAffairId = reportAffairVO.getId();
+        AdminProceedVO adminProceedVO = adminProceedService.getAdminProceed(reportAffairId);
+        reportAffairVO.setAdminProceedVO(adminProceedVO);
+    }
+
+    /**
+     * 上传陈述意见书
+     * @param addStateOpinionDTO
+     * @return
+     */
+    public Integer addStateOpinion(AddStateOpinionDTO addStateOpinionDTO){
+        if (addStateOpinionDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer projectId = addStateOpinionDTO.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("报告id为空");
+        }
+        //1. 首先上传报告事务,拿到报告事务id
+        ReportAffairDTO reportAffairDTO = new ReportAffairDTO();
+        reportAffairDTO.setProjectId(projectId);
+        //陈述意见书 2
+        reportAffairDTO.setAffairType(2);
+        //发生时间是无效请求日
+        reportAffairDTO.setOccurredTime(addStateOpinionDTO.getStateReplyTime());
+        //备注
+        reportAffairDTO.setDescription(addStateOpinionDTO.getDescription());
+        Integer reportAffairId = this.addReportAffair(reportAffairDTO);
+
+        if (reportAffairId == null) {
+            throw new XiaoShiException("上传报告事务失败");
+        }
+        //3. 添加报告事务与文件关联
+        List<String> fileGuids = addStateOpinionDTO.getFileGuids();
+        if (fileGuids != null && !fileGuids.isEmpty()) {
+            List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
+            fileGuids.forEach(item -> {
+                AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
+                assoReportAffairFile.setReportAffairId(reportAffairId);
+                assoReportAffairFile.setFileGuid(item);
+                assoReportAffairFiles.add(assoReportAffairFile);
+            });
+            assoReportAffairFileService.saveBatch(assoReportAffairFiles);
+        }
+        return reportAffairId;
+    }
+
+    /**
+     * 更新陈述意见
+     * @param updateStateOpinionDTO
+     * @return
+     */
+    public Integer updateStateOpinion(UpdateStateOpinionDTO updateStateOpinionDTO){
+        if (updateStateOpinionDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer projectId = updateStateOpinionDTO.getProjectId();
+        Integer reportAffairId = updateStateOpinionDTO.getStateOpinionId();
+        if (reportAffairId == null) {
+            throw new XiaoShiException("reportAffairId为空");
+        }
+        if (projectId == null) {
+            throw new XiaoShiException("报告id为空");
+        }
+        //2. 拿到报告事务id,获取报告事务
+        ReportAffair reportAffair = this.getById(reportAffairId);
+        reportAffair.setProjectId(projectId);
+        //发生时间是无效请求日
+        reportAffair.setOccurredTime(updateStateOpinionDTO.getStateReplyTime());
+        //备注
+        reportAffair.setDescription(updateStateOpinionDTO.getDescription());
+        reportAffair.updateById();
+        //3. 更新报告事务与文件关联
+        List<String> fileGuids = updateStateOpinionDTO.getFileGuids();
+        if (fileGuids != null && !fileGuids.isEmpty()) {
+            LambdaQueryWrapper<AssoReportAffairFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoReportAffairFile::getReportAffairId, reportAffairId);
+            assoReportAffairFileService.remove(queryWrapper);
+
+            List<AssoReportAffairFile> assoReportAffairFiles = new ArrayList<>();
+            fileGuids.forEach(item -> {
+                AssoReportAffairFile assoReportAffairFile = new AssoReportAffairFile();
+                assoReportAffairFile.setReportAffairId(reportAffairId);
+                assoReportAffairFile.setFileGuid(item);
+                assoReportAffairFiles.add(assoReportAffairFile);
+            });
+            assoReportAffairFileService.saveBatch(assoReportAffairFiles);
+        }
+        return reportAffairId;
+    }
+
+    /**
+     * 装载陈述意见书
+     *
+     * @param reportAffairVO
+     */
+    public void loadStateOpinion(ReportAffairVO reportAffairVO) {
+        Integer reportAffairId = reportAffairVO.getId();
+        StateOpinionVO stateOpinionVO = new StateOpinionVO();
+        ReportAffair reportAffair = this.getById(reportAffairId);
+        stateOpinionVO.setStateOpinionId(reportAffairId);
+        stateOpinionVO.setDescription(reportAffair.getDescription());
+        stateOpinionVO.setStateReplyTime(reportAffair.getOccurredTime());
+        stateOpinionVO.setProjectId(reportAffair.getProjectId());
+        reportAffairVO.setStateOpinionVO(stateOpinionVO);
+    }
 }