chendayu 2 lat temu
rodzic
commit
9e4a743203

+ 14 - 1
RMS/src/main/java/cn/cslg/report/common/GlobalException.java

@@ -3,7 +3,9 @@ package cn.cslg.report.common;
 import cn.cslg.report.common.core.exception.PermissionException;
 import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.common.utils.ResponseEnum;
+import cn.cslg.report.exception.XiaoShiException;
 import cn.dev33.satoken.exception.NotLoginException;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 
@@ -11,8 +13,12 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 /**
- * 全局异常处理
+ * 全局异常处理类
+ *
+ * @Author chenyu
+ * @Date 2023/7/3
  */
+@Slf4j
 @RestControllerAdvice // 可指定包前缀,比如:(basePackages = "com.pj.admin")
 public class GlobalException {
 
@@ -29,4 +35,11 @@ public class GlobalException {
             return Response.error(ResponseEnum.SYSTEM_ERROR);
         }
     }
+
+    @ExceptionHandler
+    public Response handleXiaoShiException(XiaoShiException e) {
+        log.info("全局异常处理机制捕获到XiaoShiException,异常信息提示:{}", e.getMessage());
+        return Response.fail(e.getMessage());
+    }
+
 }

+ 31 - 0
RMS/src/main/java/cn/cslg/report/common/model/dto/ProofAddNewDTO.java

@@ -0,0 +1,31 @@
+package cn.cslg.report.common.model.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 上传文献证据DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/7/3
+ */
+@Accessors(chain = true)
+@Data
+public class ProofAddNewDTO implements Serializable {
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+    /**
+     * 证据名称
+     */
+    private String proofName;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 8 - 8
RMS/src/main/java/cn/cslg/report/common/model/dto/ShareReportDTO.java

@@ -1,26 +1,26 @@
 package cn.cslg.report.common.model.dto;
 
-import cn.cslg.report.common.model.BaseVO;
 import lombok.Data;
 
 import java.util.List;
 
 @Data
-public class ShareReportDTO{
-private Integer reportId;
-private List<Integer> personIds;
-private String personName;
-private String userName;
+public class ShareReportDTO {
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+    private List<Integer> personIds;
+    private String personName;
+    private String userName;
     /**
      * 每页条数
      */
     private Long size;
-
     /**
      * 当前页数
      */
     private Long current;
-
     /**
      * 数据总数
      */

+ 8 - 0
RMS/src/main/java/cn/cslg/report/common/utils/Response.java

@@ -71,6 +71,14 @@ public class Response {
         this.message = message;
     }
 
+    public static Response fail(Object data) {
+        Response response = new Response();
+        response.setCode(0);
+        response.setMessage(data + "");
+        response.setData(data);
+        return response;
+    }
+
     public Response() {
     }
 

+ 21 - 16
RMS/src/main/java/cn/cslg/report/controller/InvalidReReport/ProofController.java

@@ -1,6 +1,7 @@
 package cn.cslg.report.controller.InvalidReReport;
 
 import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.model.dto.ProofAddNewDTO;
 import cn.cslg.report.common.model.dto.ShareReportDTO;
 import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.service.business.InvalidReReport.ProofService;
@@ -13,16 +14,19 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.mail.Multipart;
 import java.io.IOException;
+import java.util.List;
 
 /**
- * 报告分享管理的Controller层
+ * 文献证据的Controller层
  *
  * @Author lrj
  * @Data 2023/4/1
  */
-@Tag(name = "无效应对证据管理")
+@Tag(name = "文献证据管理")
 @Slf4j
 @RequiredArgsConstructor
 @RestController
@@ -30,27 +34,28 @@ import java.io.IOException;
 public class ProofController {
     private final ProofService proofService;
 
-    @Operation(summary = "上传专利文献证据(文件)")
-    @PostMapping("/addPatentProofByFile")
-    public String addPatentProofByFile(@RequestBody ShareReportDTO shareReportDTO) {
-        proofService.
-        return Response.success(flag);
-    }
+//    @Operation(summary = "上传专利文献证据(文件)")
+//    @PostMapping("/addPatentProofByFile")
+//    public String addPatentProofByFile(@RequestBody ShareReportDTO shareReportDTO) {
+//        proofService.addPatentProofByFile()
+//        return Response.success(flag);
+//    }
 
 
     @Operation(summary = "上传非专利文献证据")
     @PostMapping("/addProofByFile")
-    public String addProofByFile(@RequestBody ShareReportDTO shareReportDTO) {
-        proofService
+    public String addProofByFile(@RequestBody ProofAddNewDTO proofAddNewDTO, List<MultipartFile> files) {
+        log.info("开始处理【上传非专利文献证据】的请求,请求参数为:{}, {}", proofAddNewDTO, files);
+
+        proofService.addProofByFile(proofAddNewDTO, files);
         return Response.success();
     }
 
 
-    @Operation(summary = "上传专利文献证据(专利号)")
-    @PostMapping("/addPatentFile")
-    public String addPatentFile(@RequestBody ShareReportDTO shareReportDTO) throws IOException {
-
-        return Response.success(assoReportPersonService.showShare(shareReportDTO));
-    }
+//    @Operation(summary = "上传专利文献证据(专利号)")
+//    @PostMapping("/addPatentFile")
+//    public String addPatentFile(@RequestBody ShareReportDTO shareReportDTO) throws IOException {
+//        return Response.success(assoReportPersonService.showShare(shareReportDTO));
+//    }
 
 }

+ 17 - 6
RMS/src/main/java/cn/cslg/report/entity/invalidReReport/Proof.java

@@ -9,6 +9,7 @@ import java.util.Date;
 
 /**
  * 证据表
+ *
  * @Author xiexiang
  * @Date 2023/6/28
  */
@@ -20,31 +21,41 @@ public class Proof extends BaseEntity<Proof> {
      */
     @TableField("REPORT_ID")
     private Integer reportId;
-
+    /**
+     * 证据名称
+     */
+    @TableField("PROOF_NAME")
+    private String proofName;
     /**
      * 排序
      */
     @TableField("SORT")
     private Integer sort;
-
     /**
-     * 证据类型
+     * 证据类型(1专利文献 2非专利文献)
      */
     @TableField("PROOF_TYPE")
     private Integer proofType;
-
     /**
      * 专利号
      */
     @TableField("PATENT_NO")
     private String patentNo;
-
+    /**
+     * 文件id
+     */
+    @TableField("FILE_ID")
+    private Integer fileId;
+    /**
+     * 备注
+     */
+    @TableField("REMARK")
+    private String remark;
     /**
      * 创建人
      */
     @TableField("CREATE_ID")
     private Integer createId;
-
     /**
      * 创建时间
      */

+ 1 - 1
RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/ProofDetailMapper.java

@@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
 /**
+ * 证据详情Mapper层
  *
- *证据详情Mapper层
  * @Author 李仁杰
  * @Date 2023/6/28
  */

+ 1 - 1
RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/ProofGroupMapper.java

@@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
 /**
+ * 证据组合的Mapper层
  *
- *证据详情Mapper层
  * @Author 李仁杰
  * @Date 2023/6/28
  */

+ 1 - 1
RMS/src/main/java/cn/cslg/report/mapper/InvalidReReport/ProofMapper.java

@@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
 /**
+ * 证据类型的Mapper层
  *
- *证据详情Mapper层
  * @Author 李仁杰
  * @Date 2023/6/28
  */

+ 59 - 18
RMS/src/main/java/cn/cslg/report/service/business/InvalidReReport/ProofService.java

@@ -1,46 +1,87 @@
 package cn.cslg.report.service.business.InvalidReReport;
 
+import cn.cslg.report.common.model.dto.ProofAddNewDTO;
+import cn.cslg.report.common.model.dto.UploadFileDTO;
+import cn.cslg.report.common.model.vo.PersonnelVO;
+import cn.cslg.report.common.utils.CacheUtils;
+import cn.cslg.report.common.utils.FileUtils;
 import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
+import cn.cslg.report.common.utils.ThrowException;
 import cn.cslg.report.entity.Template;
+import cn.cslg.report.entity.invalidReReport.Proof;
+import cn.cslg.report.mapper.InvalidReReport.ProofMapper;
 import cn.cslg.report.mapper.TemplateMapper;
+import cn.cslg.report.service.business.ReportFileService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.mail.Multipart;
+import java.util.ArrayList;
+import java.util.List;
 
+/**
+ * 文献证据的Service层实现类
+ */
 @Service
 @Slf4j
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
-public class ProofService extends ServiceImpl<TemplateMapper, Template> {
-    //上传专利文献证据(文件)
-    public String addPatentProofByFile(Template template) {
-        LambdaQueryWrapper<Template> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(Template::getReportType, template.getReportType());
-        IPage<Template> templateIPage = this.page(new Page<>(template.getCurrent(), template.getSize()), wrapper);
-        return Response.success(templateIPage);
-
-    }
+public class ProofService extends ServiceImpl<ProofMapper, Proof> {
+    private final CacheUtils cacheUtils;
+    private final LoginUtils loginUtils;
+    private final ReportFileService reportFileService;
 
     //上传非专利文献证据
-    public String addProofByFile(Template template) {
+    public void addProofByFile(ProofAddNewDTO proofAddNewDTO, List<MultipartFile> files) {
+        log.info("开始处理【上传非专利文献证据】的业务,参数为:{}, {}", proofAddNewDTO, files);
 
+        //检查本次请求合法性(是否有上传非专利文献证据)
+        if (files == null || files.size() == 0) {
+            ThrowException.throwXiaoShiException("未上传文件");
+        }
 
+        //获取当前登陆人信息
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
 
-          return  "";
+        ArrayList<Proof> proofs = new ArrayList<>();
+        //上传非专利文献证据文件附件,附件信息入报告系统文件表后,返回附件ids
+        List<Integer> fileIds = reportFileService.uploadFiles(files);
+        //查询证据表,取出该报告已有证据最大排序序号
+        List<Proof> proofList = this.list(new LambdaQueryWrapper<Proof>().eq(Proof::getReportId, proofAddNewDTO.getReportId()).orderByDesc(Proof::getSort));
+        Integer biggestSort;
+        //若该报告目前没有证据,则最大排序序号设为0;若有则最大排序序号就是当前按序号倒序的第一个证据的排序序号
+        if (proofList == null || proofList.size() == 0) {
+            biggestSort = 0;
+        } else {
+            biggestSort = proofList.get(0).getSort();
+        }
+        //遍历证据文件,证据表实体类装载数据
+        for (Integer fileId : fileIds) {
+            Proof proof = new Proof();
+            BeanUtils.copyProperties(proofAddNewDTO, proof);  //DTO赋值给实体类(装载报告id、证据名称、备注)
+            proof.setProofType(2);  //装载证据类型
+            proof.setCreateId(personnelVO.getId());  //装载创建人id
+            proof.setFileId(fileId);  //装载文件id
+            proof.setSort(++biggestSort);
+            proofs.add(proof);
+        }
+        //证据表新增数据
+        boolean saveResult = this.saveBatch(proofs);
+        if (!saveResult) {
+            ThrowException.throwXiaoShiException("上传非专利文献证据失败,服务器忙请稍后再次尝试");
+        }
+
+        log.info("上传非专利文献证据完成");
 
     }
 
-    //上传专利文献证据(专利号)
-    public String addPatentFile(Template template) {
-        LambdaQueryWrapper<Template> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(Template::getReportType, template.getReportType());
-        IPage<Template> templateIPage = this.page(new Page<>(template.getCurrent(), template.getSize()), wrapper);
-        return Response.success(templateIPage);
 
-    }
 }

+ 2 - 2
RMS/src/main/java/cn/cslg/report/service/business/ReportFileService.java

@@ -46,8 +46,8 @@ public class ReportFileService extends ServiceImpl<ReportFileMapper, ReportFiles
             reportFiles.add(reportFile);
         });
         this.saveBatch(reportFiles);
-        List<Integer> reportIds = reportFiles.stream().map(ReportFiles::getId).collect(Collectors.toList());
-        return reportIds;
+        List<Integer> fileIds = reportFiles.stream().map(ReportFiles::getId).collect(Collectors.toList());
+        return fileIds;
 
 
     }