Browse Source

上传部分 2022/12/6

lwhhszx 2 years ago
parent
commit
754a23bdc6
27 changed files with 664 additions and 202 deletions
  1. 0 1
      RMS/src/main/java/cn/cslg/report/controller/CompareRecordsController.java
  2. 7 2
      RMS/src/main/java/cn/cslg/report/controller/InvalidRecordController.java
  3. 9 4
      RMS/src/main/java/cn/cslg/report/controller/LitigationHistoryController.java
  4. 11 4
      RMS/src/main/java/cn/cslg/report/controller/ReferencesController.java
  5. 8 6
      RMS/src/main/java/cn/cslg/report/controller/ReportController.java
  6. 16 8
      RMS/src/main/java/cn/cslg/report/controller/ReviewHistoryController.java
  7. 17 5
      RMS/src/main/java/cn/cslg/report/controller/TaskController.java
  8. 48 2
      RMS/src/main/java/cn/cslg/report/entity/ImportTask.java
  9. 8 0
      RMS/src/main/java/cn/cslg/report/entity/InvalidRecord.java
  10. 7 0
      RMS/src/main/java/cn/cslg/report/entity/LitigationHistory.java
  11. 8 0
      RMS/src/main/java/cn/cslg/report/entity/References.java
  12. 6 1
      RMS/src/main/java/cn/cslg/report/entity/ReviewHistory.java
  13. 28 0
      RMS/src/main/java/cn/cslg/report/entity/asso/AssoReferenceFile.java
  14. 10 0
      RMS/src/main/java/cn/cslg/report/mapper/AssoReferenceFileMapper.java
  15. 1 1
      RMS/src/main/java/cn/cslg/report/mapper/ReferencesMapper.java
  16. 53 25
      RMS/src/main/java/cn/cslg/report/service/BaseService.java
  17. 0 1
      RMS/src/main/java/cn/cslg/report/service/business/AssoLitigationHisFileService.java
  18. 34 0
      RMS/src/main/java/cn/cslg/report/service/business/AssoReferenceFileService.java
  19. 25 11
      RMS/src/main/java/cn/cslg/report/service/business/ImportTaskService.java
  20. 81 10
      RMS/src/main/java/cn/cslg/report/service/business/InvalidRecordService.java
  21. 76 7
      RMS/src/main/java/cn/cslg/report/service/business/LitigationHistoryService.java
  22. 86 8
      RMS/src/main/java/cn/cslg/report/service/business/ReferencesService.java
  23. 0 94
      RMS/src/main/java/cn/cslg/report/service/business/ReportFieldService.java
  24. 42 4
      RMS/src/main/java/cn/cslg/report/service/business/ReportService.java
  25. 78 5
      RMS/src/main/java/cn/cslg/report/service/business/ReviewHistoryService.java
  26. 3 1
      RMS/src/main/java/cn/cslg/report/service/business/TaskService.java
  27. 2 2
      RMS/src/main/java/cn/cslg/report/service/business/TemplateService.java

+ 0 - 1
RMS/src/main/java/cn/cslg/report/controller/CompareRecordsController.java

@@ -21,7 +21,6 @@ import java.io.IOException;
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class CompareRecordsController {
     private final CompareRecordsService compareRecordsService;
-    private  final  LoginUtils loginUtils;
 
     @PostMapping(value = "/addCompareRecords")
     @Operation(summary = "增加对比记录数据")

+ 7 - 2
RMS/src/main/java/cn/cslg/report/controller/InvalidRecordController.java

@@ -1,6 +1,7 @@
 package cn.cslg.report.controller;
 
 import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.entity.InvalidRecord;
 import cn.cslg.report.entity.LitigationHistory;
 import cn.cslg.report.service.business.InvalidRecordService;
@@ -31,8 +32,12 @@ public class InvalidRecordController {
     @RequestMapping(value = "/updateInvalidRecord", method = RequestMethod.POST)
     @Operation(summary = "修改无效记录")
     @Transactional(rollbackFor = Exception.class)
-    public String updateInvalidRecord(@RequestBody InvalidRecord invalidRecord)throws IOException{
-        return invalidRecordService.updateInvalidRecord(invalidRecord);
+    public String updateInvalidRecord( InvalidRecord invalidRecord, List<MultipartFile> files)throws IOException{
+      Boolean flag=  invalidRecordService.updateInvalidRecord(invalidRecord,files);
+      if(flag) {
+          return Response.success();
+      }
+        return Response.error();
 
     }
     @GetMapping(value = "/deleInvalidRecord")

+ 9 - 4
RMS/src/main/java/cn/cslg/report/controller/LitigationHistoryController.java

@@ -1,6 +1,7 @@
 package cn.cslg.report.controller;
 
 import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.entity.LitigationHistory;
 import cn.cslg.report.service.business.LitigationHistoryService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -27,14 +28,18 @@ public class LitigationHistoryController {
     }
     @PostMapping(value = "/addLitigationHistory")
     @Operation(summary = "增加诉讼历史")
-    public String addLitigationHistory( LitigationHistory litigationHistory, List<MultipartFile> file)throws IOException{
-        return litigationHistoryService.addLitigationHistory(litigationHistory,file);
+    public String addLitigationHistory( LitigationHistory litigationHistory, List<MultipartFile> files)throws IOException{
+        return litigationHistoryService.addLitigationHistory(litigationHistory,files);
     }
     @PostMapping(value = "/updateLitigationHistory")
     @Operation(summary = "修改诉讼历史")
     @Transactional(rollbackFor = Exception.class)
-    public String updateLitigationHistory(@RequestBody LitigationHistory litigationHistory)throws IOException{
-        return litigationHistoryService.updateLitigationHistory(litigationHistory);
+    public String updateLitigationHistory( LitigationHistory litigationHistory,List<MultipartFile> files)throws IOException{
+        Boolean flag = litigationHistoryService.updateLitigationHistory(litigationHistory,files);
+        if(flag){
+            return Response.success();
+        }
+        return Response.error();
     }
 
     @PostMapping(value = "/queryLitigationHistory")

+ 11 - 4
RMS/src/main/java/cn/cslg/report/controller/ReferencesController.java

@@ -1,6 +1,7 @@
 package cn.cslg.report.controller;
 
 import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.entity.References;
 import cn.cslg.report.service.business.ReferencesService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -9,8 +10,10 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.util.List;
 
 @Tag(name = "其他参考资料")
 @RestController
@@ -20,14 +23,18 @@ public class ReferencesController {
     public final ReferencesService referencesService;
     @RequestMapping(value = "/addReferences", method = RequestMethod.POST)
     @Operation(summary = "增加参考资料")
-    public  String addReferences(@RequestBody References references) throws IOException{
-        return referencesService.addReferences(references);
+    public  String addReferences( References references, List<MultipartFile> files) throws IOException{
+        return referencesService.addReferences(references,files);
     }
     @RequestMapping(value = "/updateReferences", method = RequestMethod.POST)
     @Operation(summary = "修改参考资料")
     @Transactional(rollbackFor = Exception.class)
-    public String updateReferences( @RequestBody References references)throws IOException{
-        return referencesService.updateReferences(references);
+    public String updateReferences( @RequestBody References references, List<MultipartFile> files)throws IOException{
+        Boolean flag=referencesService.updateReferences(references,files);
+        if (flag) {
+            return Response.success();
+        }
+        return Response.error();
 
     }
     @GetMapping(value = "/deleReferences")

+ 8 - 6
RMS/src/main/java/cn/cslg/report/controller/ReportController.java

@@ -6,6 +6,8 @@ import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.common.utils.StringUtils;
 import cn.cslg.report.entity.Report;
 import cn.cslg.report.service.business.*;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.JsonObject;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
@@ -39,7 +41,7 @@ public class ReportController {
     @RequestMapping(value = "/addReport", method = RequestMethod.POST)
     @Operation(summary = "新增报告")
     @Transactional(rollbackFor = Exception.class)
-    public String addReport(Report report, List<MultipartFile> file) {
+    public String addReport(Report report, List<MultipartFile> files) {
         // TODO: 2022/11/4 关于错误提示与对应的错误码还需要制定 避免前台看到失败字样 用网络异常来代替说明
         // 目前的错误说明有
         //  添加成功 是正常添加成功
@@ -50,7 +52,7 @@ public class ReportController {
         // 以上的说明可以参考或者改变,按照实际情况使用,另外这些说明我没有设置CODE码,建议加上
         if (report != null) {
             //新建报告并返回报告Id
-            Integer reportId = reportService.addReport(report,file);
+            Integer reportId = reportService.addReport(report,files);
 
             return Response.success("添加成功");
 
@@ -61,10 +63,11 @@ public class ReportController {
 
     @RequestMapping(value = "/updateReport", method = RequestMethod.POST)
     @Operation(summary = "修改报告")
-    public String updateReport(@RequestBody Report report) {
+    public String updateReport( String report, List<MultipartFile> files) {
         if (report != null) {
-            report.setScenarioId(StringUtils.join(report.getScenarioList(), ","));
-            Boolean flag = reportService.updateById(report);
+            Report report1 =JSONObject.parseObject(report,Report.class);
+            report1.setScenarioId(StringUtils.join(report1.getScenarioList(), ","));
+            Boolean flag = reportService.updateReport(report1,files);
             if (flag) {
                 return Response.success("添加成功");
             } else {
@@ -85,7 +88,6 @@ public class ReportController {
     @RequestMapping(value = "/deleReport", method = RequestMethod.GET)
     @Operation(summary = "删除报告")
     public String deleReport(Integer id) throws IOException {
-        assoTaskPersonelService.deleAssoTaskPersonel(id);
         return reportService.reportDele(id);
     }
 

+ 16 - 8
RMS/src/main/java/cn/cslg/report/controller/ReviewHistoryController.java

@@ -1,9 +1,9 @@
 package cn.cslg.report.controller;
 
 import cn.cslg.report.common.core.base.Constants;
-import cn.cslg.report.entity.InvalidRecord;
+import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.entity.ReviewHistory;
 import cn.cslg.report.entity.ReviewHistory;
-import cn.cslg.report.service.business.InvalidRecordService;
 import cn.cslg.report.service.business.ReviewHistoryService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -22,27 +22,35 @@ import java.util.List;
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class ReviewHistoryController {
     public final ReviewHistoryService reviewHistoryService;
+
     @RequestMapping(value = "/addReviewHistory", method = RequestMethod.POST)
     @Operation(summary = "增加审查历史")
-    public  String addInvalidRecord(ReviewHistory reviewHistory,List<MultipartFile> files) throws IOException{
-        return reviewHistoryService.addReviewHistory(reviewHistory,files);
+    public String addReviewHistory(ReviewHistory reviewHistory, List<MultipartFile> files) throws IOException {
+        return reviewHistoryService.addReviewHistory(reviewHistory, files);
     }
+
     @RequestMapping(value = "/updateReviewHistory", method = RequestMethod.POST)
     @Operation(summary = "修改审查历史")
     @Transactional(rollbackFor = Exception.class)
-    public String updateInvalidRecord(@RequestBody ReviewHistory reviewHistory)throws IOException{
-        return reviewHistoryService.updateReviewHistory(reviewHistory);
+    public String updateReviewHistory(ReviewHistory reviewHistory, List<MultipartFile> files) throws IOException {
+        Boolean flag = reviewHistoryService.updateReviewHistory(reviewHistory, files);
+        if (flag) {
+            return Response.success();
+        }
+        return Response.error();
 
     }
+
     @GetMapping(value = "/deleReviewHistory")
     @Operation(summary = "删除审查历史")
-    public String deleInvalidRecord(int id)throws IOException{
+    public String deleReviewHistory(int id) throws IOException {
         return reviewHistoryService.deleteReviewHistory(id);
     }
+
     @PostMapping(value = "/queryReviewHistory")
     @Operation(summary = "查询审查历史")
     @Transactional(rollbackFor = Exception.class)
-    public String queryInvalidRecord(@RequestBody ReviewHistory reviewHistory)throws IOException{
+    public String queryReviewHistory(@RequestBody ReviewHistory reviewHistory) throws IOException {
         return reviewHistoryService.queryReviewHistory(reviewHistory);
     }
 

+ 17 - 5
RMS/src/main/java/cn/cslg/report/controller/TaskController.java

@@ -22,6 +22,8 @@ import com.deepoove.poi.XWPFTemplate;
 import com.deepoove.poi.config.Configure;
 import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
 import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.apache.poi.hssf.record.Record;
@@ -50,6 +52,7 @@ public class TaskController {
 
     private final TaskService taskService;
     private final BaseService baseService;
+    private final ImportTaskService importTaskService;
 
     @RequestMapping(value = "/deleteTask", method = RequestMethod.POST)
     @Operation(summary = "删除任务")
@@ -77,8 +80,8 @@ public class TaskController {
 
     @RequestMapping(value = "/addTask", method = RequestMethod.POST)
     @Operation(summary = "新增审核任务")
-    public String addTask( TaskVO taskVO,List<MultipartFile> file) throws ParseException, IOException {
-        return taskService.addTask(taskVO,file);
+    public String addTask( String taskVO,List<MultipartFile> files) throws ParseException, IOException {
+        return taskService.addTask(taskVO,files);
     }
 
     @RequestMapping(value = "/auditTask", method = RequestMethod.POST)
@@ -106,11 +109,20 @@ public class TaskController {
         return taskService.reTaskPatents(taskVO);
     }
 
-    @RequestMapping(value = "/import", method = RequestMethod.GET)
+    @RequestMapping(value = "/import", method = RequestMethod.POST)
     @Operation(summary = "导入")
     public String importPatent(MultipartFile file, Integer reportId) throws ParseException, IOException {
+        ImportTask importTask =baseService.getImportPatentTaskParamsBro(file, reportId);
+            baseService.uploadToPCS(importTask);
         //解析file装载数据
-        TaskParams taskParams = baseService.getImportPatentTaskParamsBro(file, reportId);
-        return Response.success();
+        return Response.success(importTask );
     }
+
+    @RequestMapping(value = "/reImportTask", method = RequestMethod.POST)
+    @Operation(summary = "根据报告Id和状态返回导入任务列表")
+    public String reImportTask(@RequestBody ImportTask importTask) {
+
+        return importTaskService.reImportTask(importTask);
+    }
+
 }

+ 48 - 2
RMS/src/main/java/cn/cslg/report/entity/ImportTask.java

@@ -3,10 +3,13 @@ package cn.cslg.report.entity;
 import cn.cslg.report.common.model.BaseEntity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.util.Date;
+
 /**
  * 导入任务表
  */
@@ -15,6 +18,13 @@ import lombok.experimental.Accessors;
 @EqualsAndHashCode(callSuper = true)
 @TableName(value = "IMPORT_TASK")
 public class ImportTask extends BaseEntity<ImportTask> {
+
+    /**
+     * 文件名
+     */
+    @TableField(value = "TASK_NAME")
+    private String taskName;
+
     /**
      * 报告ID
      */
@@ -31,11 +41,47 @@ public class ImportTask extends BaseEntity<ImportTask> {
      * 创建时间
      */
     @TableField(value = "CREATE_DATE")
-    private String createDate;
+    private Date createDate;
+
+    /**
+     * 结束时间
+     */
+    @TableField(value = "FINISH_TIME")
+    private Date finishTime;
+
+    /**
+     * 创建人Id
+     */
+    @TableField(value = "CREATE_USER_ID")
+    private Integer createUserId;
+    /**
+     * 创建人名
+     */
+    @TableField(value = "CREATE_USER_NAME")
+    private String createUserName;
+
+    /**
+     * 文件路径
+     */
+    @TableField(value = "FILE_PATH")
+    private String filePath;
 
     /**
      * 状态
      */
     @TableField(value = "STATE")
-    private String state;
+    private Integer state;
+    /**
+     * 每页条数
+     */
+    @Schema(description = "每页条数")
+    @TableField(exist = false)
+    private Integer size;
+
+    /**
+     * 当前页数
+     */
+    @Schema(description = "当前页数")
+    @TableField(exist = false)
+    private Integer current;
 }

+ 8 - 0
RMS/src/main/java/cn/cslg/report/entity/InvalidRecord.java

@@ -9,6 +9,8 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.util.List;
+
 /**
  * 无效记录表
  */
@@ -99,5 +101,11 @@ public class InvalidRecord extends BaseEntity<InvalidRecord> {
     @TableField(exist = false)
     private Integer total;
 
+    /**
+     * 文件
+     */
+    @TableField(exist = false)
+    private List<ReportFiles> reportFiles;
+
 
 }

+ 7 - 0
RMS/src/main/java/cn/cslg/report/entity/LitigationHistory.java

@@ -12,6 +12,7 @@ import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 诉讼历史表
@@ -104,4 +105,10 @@ public class LitigationHistory extends BaseEntity<LitigationHistory> {
     @TableField(exist = false)
     private Integer total;
 
+    /**
+     * 文件
+     */
+    @TableField(exist = false)
+    private List<ReportFiles> reportFiles;
+
 }

+ 8 - 0
RMS/src/main/java/cn/cslg/report/entity/References.java

@@ -10,6 +10,7 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 无效记录表
@@ -81,4 +82,11 @@ public class References extends BaseEntity<References> {
     @TableField(exist = false)
     private Integer total;
 
+    /**
+     * 文件
+     */
+    @TableField(exist = false)
+    private List<ReportFiles> reportFiles;
+
+
 }

+ 6 - 1
RMS/src/main/java/cn/cslg/report/entity/ReviewHistory.java

@@ -11,6 +11,7 @@ import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
+import java.util.List;
 
 
 /**
@@ -84,5 +85,9 @@ public class ReviewHistory extends BaseEntity<ReviewHistory> {
     @TableField(exist = false)
     private Integer total;
 
-
+    /**
+     * 文件
+     */
+    @TableField(exist = false)
+    private List<ReportFiles> reportFiles;
 }

+ 28 - 0
RMS/src/main/java/cn/cslg/report/entity/asso/AssoReferenceFile.java

@@ -0,0 +1,28 @@
+package cn.cslg.report.entity.asso;
+
+import cn.cslg.report.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 对比方案与对比记录关联表
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+@TableName(value = "ASSO_REFERENCE_FILE")
+public class AssoReferenceFile extends BaseEntity<AssoReferenceFile> {
+
+    @Schema(description = "其他参考资料Id")
+    @TableField(value = "REFERENCE_ID")
+    private Integer referenceId;
+
+    @Schema(description = "文件ID")
+    @TableField(value = "FILE_ID")
+    private Integer fileId;
+
+}

+ 10 - 0
RMS/src/main/java/cn/cslg/report/mapper/AssoReferenceFileMapper.java

@@ -0,0 +1,10 @@
+package cn.cslg.report.mapper;
+
+import cn.cslg.report.entity.asso.AssoReferenceFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface AssoReferenceFileMapper extends BaseMapper<AssoReferenceFile> {
+
+}

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

@@ -1,6 +1,6 @@
 package cn.cslg.report.mapper;
 
-import cn.cslg.report.entity.InvalidRecord;
+import cn.cslg.report.entity.ReviewHistory;
 import cn.cslg.report.entity.References;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;

+ 53 - 25
RMS/src/main/java/cn/cslg/report/service/BaseService.java

@@ -19,6 +19,7 @@ import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -26,10 +27,9 @@ import org.springframework.web.multipart.MultipartFile;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 @Slf4j
 @Service
@@ -241,13 +241,11 @@ public class BaseService {
     }
 
     //获得
-    @Transactional(rollbackFor = Exception.class)
-    public TaskParams getImportPatentTaskParamsBro(MultipartFile file,Integer reportId) throws IOException {
+    public ImportTask getImportPatentTaskParamsBro(MultipartFile file,Integer reportId) throws IOException {
         //上传文档
         UploadFileDTO fileDTO = fileUtils.uploadFile(file);
         //获得文档保存的路径
         String path = fileUtils.getPath(fileDTO.getPath());
-
         File file1 = new File(path);
         String fileName = file1.getName();
         Workbook workbook = null;
@@ -261,51 +259,81 @@ public class BaseService {
         Sheet sheet1 = workbook.getSheetAt(0); // excel文件的工作簿的名称
         // 不作处理时获取的行数
         int total = sheet1.getLastRowNum();
+        PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
         ImportTask importTask =new ImportTask();
         importTask.setImportCount(total);
         importTask.setReportId(reportId);
+        importTask.setState(0);
+        importTask.setCreateUserId(personnelVO.getId());
+        importTask.setCreateUserName(personnelVO.getName());
+        importTask.setFilePath(path);
+        importTask.setTaskName(file.getOriginalFilename());
         importTask.insert();
+        return importTask;
+    }
+
+
+    @Async()
+    public void uploadToPCS(ImportTask importTask){
+        Integer total =importTask.getImportCount();
         List<List<Object>> fileHead =new ArrayList<>();
         //解析excel文件并保存进map里
-        ExcelUtil.readBySax(path, -1, (sheetIndex, rowIndex, row) ->
+        ExcelUtil.readBySax(importTask.getFilePath(), -1, (sheetIndex, rowIndex, row) ->
                 { if(rowIndex==0)
                 { fileHead.add(row);}
-                    else {
-                        List<Map<Object, Object>> mapList = new ArrayList<>();
-                        mapList.add(IterUtil.toMap(fileHead.get(0),row));
+                else {
+                    Integer i = Math.toIntExact(rowIndex-1);
+                    List<Map<Object, Object>> mapList = new ArrayList<>();
+                    mapList.add(IterUtil.toMap(fileHead.get(0),row));
                     TaskParams taskParams = new TaskParams();
-                    taskParams.setPath(path);
+                    taskParams.setPath(importTask.getFilePath());
                     taskParams.setTaskType(1);
+                    taskParams.setOldName(importTask.getTaskName());
+                    taskParams.setTotal(importTask.getImportCount());
+                    taskParams.setTaskId(importTask.getId());
                     taskParams.setRowList(mapList);
-                    taskParams.setUserId(String.valueOf(loginUtils.getId()));
-                    taskParams.setOldName(file.getOriginalFilename());
-                    taskParams.setTotal(total);
+                    taskParams.setUserId(String.valueOf(importTask.getCreateUserId()));
                     taskParams.setIndex((int) rowIndex);
-                    taskParams.setTaskId(importTask.getId());
                     try {
-                    outInterfaceService.importPatents(taskParams);
+                        outInterfaceService.importPatents(taskParams);
+                        if((int) rowIndex==taskParams.getTotal())
+                        {
+                            importTask.setState(1);
+                            SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+                            Date date = new Date(System.currentTimeMillis());
+                            importTask.setFinishTime(formatter.parse(formatter.format(date)));
+                            importTask.updateById();
+                        }
+                        //通过WebSocket 在每一次循环结束后 向前端发送完成进度
                         WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
                                 .setTaskId(taskParams.getTaskId())
-                                .setComplete(true)
+                                .setComplete(false)
                                 .setIndex((int) rowIndex)
                                 .setTaskType(Constants.TASK_IMPORT_PATENT)
-                                .setPercentage(100L)
+                                .setPercentage(total == 0 ? 0 : Math.round((total.equals(i) ? (i * 1D) : (i + 1D)) / total * 100D))
                                 .setFileName("")
                                 .setOldName(taskParams.getOldName())
                                 .setUrl("")
                                 .setTotal(total), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), taskParams.getUserId());
-                    } catch (IOException e) {
+                    } catch (IOException | ParseException e) {
                         e.printStackTrace();
                     }
                 }
-
                 }
+        );
+        WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
+                .setTaskId(importTask.getId())
+                .setComplete(true)
+                .setIndex(total)
+                .setTaskType(Constants.TASK_IMPORT_PATENT)
+                .setPercentage(100L)
+                .setFileName("")
+                .setOldName(importTask.getTaskName())
+                .setUrl("")
+                .setTotal(total), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), String.valueOf(importTask.getCreateUserId()));
 
 
-
-               );
-        TaskParams taskParams =new TaskParams();
-        return taskParams;
     }
 
 }

+ 0 - 1
RMS/src/main/java/cn/cslg/report/service/business/AssoLitigationHisFileService.java

@@ -1,7 +1,6 @@
 package cn.cslg.report.service.business;
 
 import cn.cslg.report.common.utils.Response;
-import cn.cslg.report.entity.asso.AssoInvalidRecordFile;
 import cn.cslg.report.entity.asso.AssoLitigationHisFile;
 import cn.cslg.report.entity.asso.AssoReportFile;
 import cn.cslg.report.mapper.AssoLitigationHisFileMapper;

+ 34 - 0
RMS/src/main/java/cn/cslg/report/service/business/AssoReferenceFileService.java

@@ -0,0 +1,34 @@
+package cn.cslg.report.service.business;
+
+import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.entity.asso.AssoLitigationHisFile;
+import cn.cslg.report.entity.asso.AssoReferenceFile;
+import cn.cslg.report.mapper.AssoLitigationHisFileMapper;
+import cn.cslg.report.mapper.AssoReferenceFileMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+@Slf4j
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class AssoReferenceFileService extends ServiceImpl<AssoReferenceFileMapper, AssoReferenceFile> {
+
+    //添加
+    public String addAsso(Integer id, List<Integer> fileIds) {
+        List<AssoReferenceFile> tems = new ArrayList<>();
+        fileIds.forEach(item -> {
+            AssoReferenceFile tem = new AssoReferenceFile();
+            tem.setReferenceId(id);
+            tem.setFileId(item);
+            tems.add(tem);
+        });
+        this.saveBatch(tems);
+        return Response.success();
+    }
+}

+ 25 - 11
RMS/src/main/java/cn/cslg/report/service/business/ImportTaskService.java

@@ -1,31 +1,45 @@
 package cn.cslg.report.service.business;
 
-import cn.cslg.report.common.core.base.Constants;
-import cn.cslg.report.common.utils.LogExceptionUtil;
 import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.entity.ImportTask;
-import cn.cslg.report.entity.SysDictItem;
+
 import cn.cslg.report.mapper.ImportTaskMapper;
-import cn.cslg.report.mapper.SystemDictItemMapper;
+
 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.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
+
+/**
+ * @author 李仁杰
+ */
 @Service
 @Slf4j
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask> {
-    /**
-     * @return 成功返回客户列表信息 失败返回错误信息
-     * @title 获取部分客户
-     * @author 沈永艺
-     */
+    public String reImportTask(ImportTask importTask) {
+        LambdaQueryWrapper<ImportTask> queryWrapper = new LambdaQueryWrapper<>();
+        if (importTask.getReportId() != null) {
+            queryWrapper.eq(ImportTask::getReportId, importTask.getReportId());
+        }
+        if (importTask.getState() != null) {
+            queryWrapper.eq(ImportTask::getState, importTask.getState());
+        }
+        queryWrapper.orderByDesc(ImportTask::getCreateDate);
+        if(importTask.getCurrent()!=null&&importTask.getSize()!=null){
+        IPage<ImportTask> importTaskIPage = this.page(new Page<>(importTask.getCurrent(),importTask.getSize()),queryWrapper);
+            return Response.success(importTaskIPage);
+        }
+         return Response.success(this.list(queryWrapper));
+
+
+    }
 
 }

+ 81 - 10
RMS/src/main/java/cn/cslg/report/service/business/InvalidRecordService.java

@@ -1,9 +1,9 @@
 package cn.cslg.report.service.business;
 
 import cn.cslg.report.common.utils.Response;
-import cn.cslg.report.entity.ImportTask;
-import cn.cslg.report.entity.InvalidRecord;
-import cn.cslg.report.entity.LitigationHistory;
+import cn.cslg.report.entity.*;
+import cn.cslg.report.entity.asso.AssoInvalidRecordFile;
+import cn.cslg.report.entity.asso.AssoReportFile;
 import cn.cslg.report.mapper.ImportTaskMapper;
 import cn.cslg.report.mapper.InvalidRecordMapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -17,7 +17,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 @Slf4j
@@ -25,39 +27,108 @@ import java.util.List;
 public class InvalidRecordService extends ServiceImpl<InvalidRecordMapper, InvalidRecord> {
     public final InvalidRecordMapper invalidRecordMapper;
     private final ReportFileService reportFileService;
-    private final  AssoInvalidRecordFileService assoInvalidRecordFileService;
+    private final AssoInvalidRecordFileService assoInvalidRecordFileService;
+
     public String deleteInvalidRecord(int id) throws IOException {
+        InvalidRecord invalidRecord =this.getById(id);
         this.removeById(id);
+        LambdaQueryWrapper<AssoInvalidRecordFile> wrapper =new LambdaQueryWrapper<>();
+        wrapper.eq(AssoInvalidRecordFile::getInvalidId,invalidRecord.getId());
+        List<AssoInvalidRecordFile> assoes= assoInvalidRecordFileService.list(wrapper);
+        List<Integer> fileIds =assoes.stream().map(AssoInvalidRecordFile::getFileId).collect(Collectors.toList());
+        reportFileService.removeByIds(fileIds);
+        assoInvalidRecordFileService.remove(wrapper);
         return Response.success();
     }
 
-    public String updateInvalidRecord(InvalidRecord invalidRecord) throws IOException {
-        invalidRecord.updateById();
-        return Response.success();
+    public Boolean updateInvalidRecord(InvalidRecord invalidRecord, List<MultipartFile> files) throws IOException {
+        // 根据无效Id查询对应的附件Id
+        LambdaQueryWrapper<AssoInvalidRecordFile> wrapper =new LambdaQueryWrapper<>();
+        wrapper.eq(AssoInvalidRecordFile::getInvalidId,invalidRecord.getId());
+        List<AssoInvalidRecordFile> assoes= assoInvalidRecordFileService.list(wrapper);
+        List<Integer> fileIds =assoes.stream().map(AssoInvalidRecordFile::getFileId).collect(Collectors.toList());
+        // 获得更新后的附件Id
+        List<Integer> updateFileId =new ArrayList<>();
+        if(invalidRecord.getReportFiles()!=null){
+            updateFileId = invalidRecord.getReportFiles().stream().map(ReportFiles::getId).collect(Collectors.toList());
+            fileIds.removeAll(updateFileId);}
+        //做差获得被删除的文件Id
+        if(fileIds.size()!=0){
+            //根据文件Id删除报告文件关联表记录
+            LambdaQueryWrapper<AssoInvalidRecordFile> deleteWrapper = new LambdaQueryWrapper<>();
+            deleteWrapper.in(AssoInvalidRecordFile::getFileId,fileIds);
+            assoInvalidRecordFileService.remove(deleteWrapper);
+            //根据文件Id删除文件表记录
+            reportFileService.removeByIds(fileIds);
+        }
+//添加附件
+        if (files!=null&&files.size() != 0) {
+            //将文档上传并返回文件入库的Id
+            List<Integer> fileIdList = reportFileService.uploadFiles(files);
+            assoInvalidRecordFileService.addAsso(invalidRecord.getId(), fileIdList);
+
+        }
+
+        return invalidRecord.updateById();
     }
 
-    public String addInvalidRecord(InvalidRecord invalidRecord,List<MultipartFile> files) throws IOException {
+    public String addInvalidRecord(InvalidRecord invalidRecord, List<MultipartFile> files) throws IOException {
         invalidRecord.insert();
-        if (files==null&&files.size() != 0) {
+        if (files == null && files.size() != 0) {
             //将文档上传并返回文件入库的Id
             List<Integer> fileIds = reportFileService.uploadFiles(files);
-            assoInvalidRecordFileService.addAsso(invalidRecord.getId(),fileIds);
+            assoInvalidRecordFileService.addAsso(invalidRecord.getId(), fileIds);
         }
         return Response.success();
     }
 
+    //查找无效记录
     public String queryInvalidRecord(InvalidRecord invalidRecord) {
         LambdaQueryWrapper<InvalidRecord> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(InvalidRecord::getPatentNo, invalidRecord.getPatentNo());
         if (invalidRecord.getSize() != null && invalidRecord.getSize() != null) {
             IPage<InvalidRecord> pages = this.page(new Page<>(invalidRecord.getCurrent(), invalidRecord.getSize()), wrapper);
+            pages.setRecords(this.thisInvaliRecord(pages.getRecords()));
             return Response.success(pages);
         } else {
             List<InvalidRecord> invalidRecords = this.list(wrapper);
+            invalidRecords =thisInvaliRecord(invalidRecords);
             return Response.success(invalidRecords);
         }
     }
 
+    //装载无效记录
+    public List<InvalidRecord> thisInvaliRecord(List<InvalidRecord> invalidRecords) {
+        //获得无效记录的Id
+        List<Integer> ids = invalidRecords.stream().map(InvalidRecord::getId).collect(Collectors.toList());
+        if (ids.size() != 0) {
+            //根据无效记录Id获得无效记录和文件的关联信息
+            LambdaQueryWrapper<AssoInvalidRecordFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoInvalidRecordFile::getInvalidId, ids);
+            List<AssoInvalidRecordFile> assoInvalidRecordFiles = assoInvalidRecordFileService.list();
+            //根据关联信息查询附件信息
+            if (assoInvalidRecordFiles.size() != 0) {
+                List<Integer> fileIds = assoInvalidRecordFiles.stream().map(AssoInvalidRecordFile::getFileId).collect(Collectors.toList());
+                LambdaQueryWrapper<ReportFiles> wrapper = new LambdaQueryWrapper<>();
+                wrapper.in(ReportFiles::getId, fileIds);
+                List<ReportFiles> reportFiles = reportFileService.list(wrapper);
+                //遍历装载文件信息
+                invalidRecords.forEach(item -> {
+                    List<AssoInvalidRecordFile> partAsso = assoInvalidRecordFiles.stream().filter(tem -> tem.getInvalidId().equals(item.getId())).collect(Collectors.toList());
+                    List<ReportFiles> reportFilesList = new ArrayList<>();
+                    if (partAsso.size() != 0) {
+                        List<Integer> partFileIds = partAsso.stream().map(AssoInvalidRecordFile::getFileId).collect(Collectors.toList());
+                        List<ReportFiles> reportFiles1 = reportFiles.stream().filter(tem -> partFileIds.contains(tem.getId())).collect(Collectors.toList());
+                        reportFilesList = reportFiles1;
+                    }
+                    item.setReportFiles(reportFilesList);
+                });
+            }
+
+        }
+        return invalidRecords;
 
     }
 
+}
+

+ 76 - 7
RMS/src/main/java/cn/cslg/report/service/business/LitigationHistoryService.java

@@ -2,9 +2,8 @@ package cn.cslg.report.service.business;
 
 import cn.cslg.report.common.utils.DataUtils;
 import cn.cslg.report.common.utils.Response;
-import cn.cslg.report.entity.ImportTask;
-import cn.cslg.report.entity.LitigationHistory;
-import cn.cslg.report.entity.Report;
+import cn.cslg.report.entity.*;
+import cn.cslg.report.entity.asso.AssoLitigationHisFile;
 import cn.cslg.report.mapper.ImportTaskMapper;
 import cn.cslg.report.mapper.LitigationHistoryMapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -18,7 +17,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 @Slf4j
@@ -27,9 +28,15 @@ public class LitigationHistoryService extends ServiceImpl<LitigationHistoryMappe
     private final ReportFileService reportFileService;
     private final AssoLitigationHisFileService  assoLitigationHisFileService;
     public String deleteLitigationHistory(int id){
+        LitigationHistory litigationHistory =this.getById(id);
         this.removeById(id);
+        LambdaQueryWrapper<AssoLitigationHisFile> wrapper =new LambdaQueryWrapper<>();
+        wrapper.eq(AssoLitigationHisFile::getLitiHisId,litigationHistory.getId());
+        List<AssoLitigationHisFile> assoes= assoLitigationHisFileService.list(wrapper);
+        List<Integer> fileIds =assoes.stream().map(AssoLitigationHisFile::getFileId).collect(Collectors.toList());
+        reportFileService.removeByIds(fileIds);
+        assoLitigationHisFileService.remove(wrapper);
        return Response.success();
-
     }
 
     public String addLitigationHistory(LitigationHistory litigationHistory,List<MultipartFile> files){
@@ -42,9 +49,36 @@ public class LitigationHistoryService extends ServiceImpl<LitigationHistoryMappe
         return Response.success();
     }
 
-    public String updateLitigationHistory(LitigationHistory litigationHistory){
-        litigationHistory.updateById();
-        return Response.success();
+    public Boolean updateLitigationHistory(LitigationHistory litigationHistory,List<MultipartFile> files){
+
+        // 根据无效Id查询对应的附件Id
+        LambdaQueryWrapper<AssoLitigationHisFile> wrapper =new LambdaQueryWrapper<>();
+        wrapper.eq(AssoLitigationHisFile::getLitiHisId,litigationHistory.getId());
+        List<AssoLitigationHisFile> assoes= assoLitigationHisFileService.list(wrapper);
+        List<Integer> fileIds =assoes.stream().map(AssoLitigationHisFile::getFileId).collect(Collectors.toList());
+        // 获得更新后的附件Id
+        List<Integer> updateFileId =new ArrayList<>();
+        if(litigationHistory.getReportFiles()!=null){
+            updateFileId = litigationHistory.getReportFiles().stream().map(ReportFiles::getId).collect(Collectors.toList());
+            fileIds.removeAll(updateFileId);}
+        //做差获得被删除的文件Id
+        if(fileIds.size()!=0){
+            //根据文件Id删除报告文件关联表记录
+            LambdaQueryWrapper<AssoLitigationHisFile> deleteWrapper = new LambdaQueryWrapper<>();
+            deleteWrapper.in(AssoLitigationHisFile::getFileId,fileIds);
+            assoLitigationHisFileService.remove(deleteWrapper);
+            //根据文件Id删除文件表记录
+            reportFileService.removeByIds(fileIds);
+        }
+//添加附件
+        if (files!=null&&files.size() != 0) {
+            //将文档上传并返回文件入库的Id
+            List<Integer> fileIdList = reportFileService.uploadFiles(files);
+            assoLitigationHisFileService.addAsso(litigationHistory.getId(), fileIdList);
+
+        }
+
+        return litigationHistory.updateById();
     }
 
     public String queryLitigationHistory(LitigationHistory litigationHistory){
@@ -52,11 +86,46 @@ public class LitigationHistoryService extends ServiceImpl<LitigationHistoryMappe
                wrapper.eq(LitigationHistory::getPatentNo,litigationHistory.getPatentNo());
         if (litigationHistory.getSize() != null && litigationHistory.getSize() != null) {
             IPage<LitigationHistory> pages = this.page(new Page<>(litigationHistory.getCurrent(), litigationHistory.getSize()), wrapper);
+            pages.setRecords(this.LitigationHistory(pages.getRecords()));
             return Response.success(pages);
         } else {
             List<LitigationHistory>  histories= this.list(wrapper);
+            histories =this.LitigationHistory(histories);
             return Response.success(histories);
         }
     }
 
+    //装载诉讼历史
+    public List<LitigationHistory> LitigationHistory(List<LitigationHistory> litigationHistories) {
+        //获得诉讼历史的Id
+        List<Integer> ids = litigationHistories.stream().map(LitigationHistory::getId).collect(Collectors.toList());
+        if (ids.size() != 0) {
+            //根据诉讼历史的Id获得诉讼历史和文件的关联信息
+            LambdaQueryWrapper<AssoLitigationHisFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoLitigationHisFile::getLitiHisId, ids);
+            List<AssoLitigationHisFile> assoLitigationHisFiles = assoLitigationHisFileService.list();
+            //根据关联信息查询附件信息
+            if (assoLitigationHisFiles.size() != 0) {
+                List<Integer> fileIds = assoLitigationHisFiles.stream().map(AssoLitigationHisFile::getFileId).collect(Collectors.toList());
+                LambdaQueryWrapper<ReportFiles> wrapper = new LambdaQueryWrapper<>();
+                wrapper.in(ReportFiles::getId, fileIds);
+                List<ReportFiles> reportFiles = reportFileService.list(wrapper);
+                //遍历装载文件信息
+                litigationHistories.forEach(item -> {
+                    List<AssoLitigationHisFile> partAsso = assoLitigationHisFiles.stream().filter(tem -> tem.getLitiHisId().equals(item.getId())).collect(Collectors.toList());
+                    List<ReportFiles> reportFilesList = new ArrayList<>();
+                    if (partAsso.size() != 0) {
+                        List<Integer> partFileIds = partAsso.stream().map(AssoLitigationHisFile::getFileId).collect(Collectors.toList());
+                        List<ReportFiles> reportFiles1 = reportFiles.stream().filter(tem -> partFileIds.contains(tem.getId())).collect(Collectors.toList());
+                        reportFilesList = reportFiles1;
+                    }
+                    item.setReportFiles(reportFilesList);
+                });
+            }
+
+        }
+        return litigationHistories;
+
+    }
+
 }

+ 86 - 8
RMS/src/main/java/cn/cslg/report/service/business/ReferencesService.java

@@ -1,10 +1,13 @@
 package cn.cslg.report.service.business;
 
 import cn.cslg.report.common.utils.Response;
-import cn.cslg.report.entity.InvalidRecord;
+import cn.cslg.report.entity.ReportFiles;
+import cn.cslg.report.entity.ReviewHistory;
 import cn.cslg.report.entity.References;
 import cn.cslg.report.entity.ReviewHistory;
-import cn.cslg.report.mapper.InvalidRecordMapper;
+import cn.cslg.report.entity.asso.AssoReferenceFile;
+import cn.cslg.report.entity.asso.AssoReviewHisFile;
+import cn.cslg.report.mapper.ReviewHistoryMapper;
 import cn.cslg.report.mapper.ReferencesMapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -14,28 +17,69 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 @Slf4j
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class ReferencesService extends ServiceImpl<ReferencesMapper, References> {
-    public final InvalidRecordMapper invalidRecordMapper;
-
+  private  final ReportFileService reportFileService;
+  private final AssoReferenceFileService assoReferenceFileService;
     public String deleteReferences(int id) throws IOException {
+        References references =this.getById(id);
         this.removeById(id);
+        LambdaQueryWrapper<AssoReferenceFile> wrapper =new LambdaQueryWrapper<>();
+        wrapper.eq(AssoReferenceFile::getReferenceId,references.getId());
+        List<AssoReferenceFile> assoes= assoReferenceFileService.list(wrapper);
+        List<Integer> fileIds =assoes.stream().map(AssoReferenceFile::getFileId).collect(Collectors.toList());
+        reportFileService.removeByIds(fileIds);
+        assoReferenceFileService.remove(wrapper);
         return Response.success();
     }
 
-    public String updateReferences(References references) throws IOException {
-        references.updateById();
-        return Response.success();
+    public Boolean updateReferences(References references, List<MultipartFile> files) throws IOException {
+
+        // 根据无效Id查询对应的附件Id
+        LambdaQueryWrapper<AssoReferenceFile> wrapper =new LambdaQueryWrapper<>();
+        wrapper.eq(AssoReferenceFile::getReferenceId,references.getId());
+        List<AssoReferenceFile> assoes= assoReferenceFileService.list(wrapper);
+        List<Integer> fileIds =assoes.stream().map(AssoReferenceFile::getFileId).collect(Collectors.toList());
+        // 获得更新后的附件Id
+        List<Integer> updateFileId =new ArrayList<>();
+        if(references.getReportFiles()!=null){
+            updateFileId = references.getReportFiles().stream().map(ReportFiles::getId).collect(Collectors.toList());
+            fileIds.removeAll(updateFileId);}
+        //做差获得被删除的文件Id
+        if(fileIds.size()!=0){
+            //根据文件Id删除报告文件关联表记录
+            LambdaQueryWrapper<AssoReferenceFile> deleteWrapper = new LambdaQueryWrapper<>();
+            deleteWrapper.in(AssoReferenceFile::getFileId,fileIds);
+            assoReferenceFileService.remove(deleteWrapper);
+            //根据文件Id删除文件表记录
+            reportFileService.removeByIds(fileIds);
+        }
+//添加附件
+        if (files!=null&&files.size() != 0) {
+            //将文档上传并返回文件入库的Id
+            List<Integer> fileIdList = reportFileService.uploadFiles(files);
+            assoReferenceFileService.addAsso(references.getId(), fileIdList);
+
+        }
+        return references.updateById();
     }
 
-    public String addReferences(References references) throws IOException {
+    public String addReferences(References references,List<MultipartFile> files) throws IOException {
         references.insert();
+        if (files==null&&files.size() != 0) {
+            //将文档上传并返回文件入库的Id
+            List<Integer> fileIds = reportFileService.uploadFiles(files);
+            assoReferenceFileService.addAsso(references.getId(),fileIds);
+        }
         return Response.success();
     }
 
@@ -44,12 +88,46 @@ public class ReferencesService extends ServiceImpl<ReferencesMapper, References>
         wrapper.eq(References::getPatentNo,references.getPatentNo());
         if (references.getSize() != null && references.getSize() != null) {
             IPage<References> pages = this.page(new Page<>(references.getCurrent(), references.getSize()), wrapper);
+            pages.setRecords(this.thisReference(pages.getRecords()));
             return Response.success(pages);
         } else {
             List<References> referencesList= this.list(wrapper);
+            referencesList =this.thisReference(referencesList);
             return Response.success(referencesList);
         }
     }
 
+    //装载其他参考资料
+    public List<References> thisReference(List<References> references) {
+        //获得无效记录的Id
+        List<Integer> ids = references.stream().map(References::getId).collect(Collectors.toList());
+        if (ids.size() != 0) {
+            //根据无效记录Id获得无效记录和文件的关联信息
+            LambdaQueryWrapper<AssoReferenceFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoReferenceFile::getReferenceId, ids);
+            List<AssoReferenceFile> assoReferenceFiles = assoReferenceFileService.list();
+            //根据关联信息查询附件信息
+            if (assoReferenceFiles.size() != 0) {
+                List<Integer> fileIds = assoReferenceFiles.stream().map(AssoReferenceFile::getFileId).collect(Collectors.toList());
+                LambdaQueryWrapper<ReportFiles> wrapper = new LambdaQueryWrapper<>();
+                wrapper.in(ReportFiles::getId, fileIds);
+                List<ReportFiles> reportFiles = reportFileService.list(wrapper);
+                //遍历装载文件信息
+                references.forEach(item -> {
+                    List<AssoReferenceFile> partAsso = assoReferenceFiles.stream().filter(tem -> tem.getReferenceId().equals(item.getId())).collect(Collectors.toList());
+                    List<ReportFiles> reportFilesList = new ArrayList<>();
+                    if (partAsso.size() != 0) {
+                        List<Integer> partFileIds = partAsso.stream().map(AssoReferenceFile::getFileId).collect(Collectors.toList());
+                        List<ReportFiles> reportFiles1 = reportFiles.stream().filter(tem -> partFileIds.contains(tem.getId())).collect(Collectors.toList());
+                        reportFilesList = reportFiles1;
+                    }
+                    item.setReportFiles(reportFilesList);
+                });
+            }
+
+        }
+        return references;
+
+    }
 
 }

+ 0 - 94
RMS/src/main/java/cn/cslg/report/service/business/ReportFieldService.java

@@ -283,100 +283,6 @@ public class ReportFieldService extends ServiceImpl<ReportFieldMapper, ReportFie
 
     }
 
-//    public IPage<PatentQueryFieldSourceDTO> getPatentAttributeSourcePageList(PatentQueryFieldSourceVO params) {
-//        this.setPatentQuerySourceParams(params);
-//        if (params.getKey().equals("40-0")) {
-//            Integer projectId = params.getProjectId();
-//            List<PatentQueryFieldSourceDTO> dataList = baseMapper.getCountStatus(projectId);
-//            List<PatentQueryFieldSourceDTO> lstA = new ArrayList<>();
-//            List<PatentQueryFieldSourceDTO> lstB = new ArrayList<>();
-//            dataList.forEach(item -> {
-//                if (StringUtils.changeStringToString(item.getLabel(), "\\|").size() > 1) {
-//                    lstA.add(item);
-//                } else {
-//                    lstB.add(item);
-//                }
-//            });
-//            lstA.forEach(item -> {
-//                List<String> stringList = StringUtils.changeStringToString(item.getLabel(), "\\|");
-//
-//                stringList.forEach(x -> {
-//                    List<PatentQueryFieldSourceDTO> lstC = new ArrayList<>();
-//                    for (PatentQueryFieldSourceDTO patentQueryFieldSourceDTO : lstB) {
-//                        if (!lstB.stream().map(PatentQueryFieldSourceDTO::getLabel).collect(Collectors.toList()).contains(x)) {
-//                            PatentQueryFieldSourceDTO a = new PatentQueryFieldSourceDTO();
-//                            a.setCount(item.getCount());
-//                            a.setLabel(x);
-//                            lstC.add(a);
-//                            break;
-//                        }
-//                        if (patentQueryFieldSourceDTO.getLabel().equals(x)) {
-//                            patentQueryFieldSourceDTO.setCount(patentQueryFieldSourceDTO.getCount() + item.getCount());
-//                        }
-//                    }
-//                    lstB.addAll(lstC);
-//                });
-//            });
-//            List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Collections.singletonList(Constants.PATENT_STATUS));
-//            lstB.forEach(b -> {
-//                Integer status = Integer.parseInt(systemDictList.stream()
-//                        .filter(systemDict -> systemDict.getType().equals(Constants.PATENT_STATUS) && systemDict.getLabel().equals(b.getLabel()))
-//                        .findFirst()
-//                        .orElse(new SystemDict()).getValue());
-//                b.setValue(String.valueOf(status));
-//            });
-//            IPage<PatentQueryFieldSourceDTO> pageList = baseMapper.getPatentQuerySourcePageList(new Page<>(params.getCurrent(), params.getSize()), params, new ArrayList<>());
-//            pageList.setRecords(lstB);
-//            return pageList;
-//        }
-//        IPage<PatentQueryFieldSourceDTO> pageList = baseMapper.getPatentQuerySourcePageList(new Page<>(params.getCurrent(), params.getSize()), params, new ArrayList<>());
-//        pageList.getRecords().forEach(item -> item.setIds(null));
-//        return pageList;
-//    }
-
-//    private void setPatentQuerySourceParams(PatentQueryFieldSourceVO params) {
-//        List<Integer> field = StringUtils.changeStringToInteger(params.getKey(), "-");
-//        Integer type = 0;
-//        Integer level = 0;
-//        Integer status = 0;
-//        switch (params.getKey()) {
-//            case "18-6":
-//            case "18-7":
-//            case "18-8":
-//            case "23-6":
-//            case "23-7":
-//            case "23-8":
-//                params.setApplicantType(2);
-//                break;
-//            case "19-6":
-//            case "19-7":
-//            case "19-8":
-//            case "24-6":
-//            case "24-7":
-//            case "24-8":
-//                params.setApplicantType(1);
-//                break;
-//            case "29-17":
-//            case "30-17":
-//            case "29-18":
-//            case "29-19":
-//            case "29-20":
-//            case "30-18":
-//            case "30-19":
-//            case "30-20":
-//                params.setApplicantType(field.get(0) == 29 ? 2 : 1);
-//                break;
-//            default:
-//                params.setCustomFieldId(field.get(0));
-//                if (params.getType().equals("6") && field.get(1).equals(0)) {
-//                    params.setCustomFieldTreeType(0);
-//                } else {
-//                    params.setCustomFieldTreeType(null);
-//                }
-//        }
-//    }
-
-
 
     }
 

+ 42 - 4
RMS/src/main/java/cn/cslg/report/service/business/ReportService.java

@@ -45,13 +45,13 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
     private final LoginUtils loginUtils;
     private final AssoReportFileService assoReportFileService;
     private final ReportFileService reportFileService;
-
+    private final AssoTaskPersonelService assoTaskPersonelService;
     /**
      * @param report 报告类
      * @author 沈永艺
      */
     @Transactional(rollbackFor = Exception.class)
-    public Integer addReport(Report report ,List<MultipartFile> file) {
+    public Integer addReport(Report report ,List<MultipartFile> files) {
         try {
             report.getScenarioList();
             report.setScenarioId(StringUtils.join(report.getScenarioList(), ","));
@@ -75,9 +75,9 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
             report.setCreatePersonName(personnelVO.getName());
             boolean addFlag = this.save(report);
 
-            if (file!=null&&file.size() != 0) {
+            if (files!=null&&files.size() != 0) {
                 //将文档上传并返回文件入库的Id
-                List<Integer> fileIds = reportFileService.uploadFiles(file);
+                List<Integer> fileIds = reportFileService.uploadFiles(files);
                 assoReportFileService.addAsso(report.getId(), fileIds);
 
             }
@@ -153,7 +153,45 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
 
         return reports;
     }
+
+    //更新报告
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean updateReport( Report report, List<MultipartFile> files){
+        // 根据报告Id查询对应的附件Id
+        LambdaQueryWrapper<AssoReportFile> wrapper =new LambdaQueryWrapper<>();
+        wrapper.eq(AssoReportFile::getReportId,report.getId());
+List<AssoReportFile> assoReportFiles= assoReportFileService.list(wrapper);
+List<Integer> fileIds =assoReportFiles.stream().map(AssoReportFile::getFileId).collect(Collectors.toList());
+       // 获得报告更新后的附件Id
+        List<Integer> updateFileId =new ArrayList<>();
+        if(report.getReportFiles()!=null){
+       updateFileId = report.getReportFiles().stream().map(ReportFiles::getId).collect(Collectors.toList());
+            fileIds.removeAll(updateFileId);}
+        //做差获得被删除的文件Id
+
+if(fileIds.size()!=0){
+    //根据文件Id删除报告文件关联表记录
+    LambdaQueryWrapper<AssoReportFile> deleteWrapper = new LambdaQueryWrapper<>();
+    deleteWrapper.in(AssoReportFile::getFileId,fileIds);
+    assoReportFileService.remove(deleteWrapper);
+    //根据文件Id删除文件表记录
+    reportFileService.removeByIds(fileIds);
+}
+//添加附件
+        if (files!=null&&files.size() != 0) {
+            //将文档上传并返回文件入库的Id
+            List<Integer> fileIdList = reportFileService.uploadFiles(files);
+            assoReportFileService.addAsso(report.getId(), fileIdList);
+
+        }
+     return  report.updateById();
+
+    }
+
+    //删除报告
     public String reportDele(int id) throws IOException{
+        assoTaskPersonelService.deleAssoTaskPersonel(id);
+
        int  dele  = reportMapper.dele(id);
         if(dele>0){
             return Response.success();

+ 78 - 5
RMS/src/main/java/cn/cslg/report/service/business/ReviewHistoryService.java

@@ -1,9 +1,11 @@
 package cn.cslg.report.service.business;
 
 import cn.cslg.report.common.utils.Response;
-import cn.cslg.report.entity.InvalidRecord;
 import cn.cslg.report.entity.ReviewHistory;
-import cn.cslg.report.mapper.InvalidRecordMapper;
+import cn.cslg.report.entity.ReportFiles;
+import cn.cslg.report.entity.ReviewHistory;
+import cn.cslg.report.entity.asso.AssoReviewHisFile;
+import cn.cslg.report.mapper.ReviewHistoryMapper;
 import cn.cslg.report.mapper.ReviewHistoryMapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -16,7 +18,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 @Slf4j
@@ -24,14 +28,49 @@ import java.util.List;
 public class ReviewHistoryService extends ServiceImpl<ReviewHistoryMapper, ReviewHistory> {
 private final   ReportFileService reportFileService;
 private final AssoReviewHisFileService assoReviewHisFileService;
+
+
     public String deleteReviewHistory(int id) throws IOException {
+        ReviewHistory ReviewHistory =this.getById(id);
+        this.removeById(id);
+        LambdaQueryWrapper<AssoReviewHisFile> wrapper =new LambdaQueryWrapper<>();
+        wrapper.eq(AssoReviewHisFile::getReviewHistoryId,ReviewHistory.getId());
+        List<AssoReviewHisFile> assoes= assoReviewHisFileService.list(wrapper);
+        List<Integer> fileIds =assoes.stream().map(AssoReviewHisFile::getFileId).collect(Collectors.toList());
+        reportFileService.removeByIds(fileIds);
+        assoReviewHisFileService.remove(wrapper);
         this.removeById(id);
         return Response.success();
     }
 
-    public String updateReviewHistory(ReviewHistory reviewHistory)  {
-        reviewHistory.updateById();
-        return Response.success();
+    public Boolean updateReviewHistory(ReviewHistory reviewHistory,List<MultipartFile> files)  {
+        // 根据无效Id查询对应的附件Id
+        LambdaQueryWrapper<AssoReviewHisFile> wrapper =new LambdaQueryWrapper<>();
+        wrapper.eq(AssoReviewHisFile::getReviewHistoryId,reviewHistory.getId());
+        List<AssoReviewHisFile> assoes= assoReviewHisFileService.list(wrapper);
+        List<Integer> fileIds =assoes.stream().map(AssoReviewHisFile::getFileId).collect(Collectors.toList());
+        // 获得更新后的附件Id
+        List<Integer> updateFileId =new ArrayList<>();
+        if(reviewHistory.getReportFiles()!=null){
+            updateFileId = reviewHistory.getReportFiles().stream().map(ReportFiles::getId).collect(Collectors.toList());
+            fileIds.removeAll(updateFileId);}
+        //做差获得被删除的文件Id
+        if(fileIds.size()!=0){
+            //根据文件Id删除报告文件关联表记录
+            LambdaQueryWrapper<AssoReviewHisFile> deleteWrapper = new LambdaQueryWrapper<>();
+            deleteWrapper.in(AssoReviewHisFile::getFileId,fileIds);
+            assoReviewHisFileService.remove(deleteWrapper);
+            //根据文件Id删除文件表记录
+            reportFileService.removeByIds(fileIds);
+        }
+//添加附件
+        if (files!=null&&files.size() != 0) {
+            //将文档上传并返回文件入库的Id
+            List<Integer> fileIdList = reportFileService.uploadFiles(files);
+            assoReviewHisFileService.addAsso(reviewHistory.getId(), fileIdList);
+
+        }
+        return reviewHistory.updateById();
     }
 
     public String addReviewHistory(ReviewHistory reviewHistory,List<MultipartFile> files) throws IOException {
@@ -49,12 +88,46 @@ private final AssoReviewHisFileService assoReviewHisFileService;
         wrapper.eq(ReviewHistory::getPatentNo,reviewHistory.getPatentNo());
         if (reviewHistory.getSize() != null && reviewHistory.getSize() != null) {
             IPage<ReviewHistory> pages = this.page(new Page<>(reviewHistory.getCurrent(), reviewHistory.getSize()), wrapper);
+            pages.setRecords(this.thisReviewHistory(pages.getRecords()));
             return Response.success(pages);
         } else {
             List<ReviewHistory> reviewHistories= this.list(wrapper);
+            reviewHistories =thisReviewHistory(reviewHistories);
             return Response.success(reviewHistories);
         }
     }
+    
+    //装载无效记录
+    public List<ReviewHistory> thisReviewHistory(List<ReviewHistory> reviewHistories) {
+        //获得无效记录的Id
+        List<Integer> ids = reviewHistories.stream().map(ReviewHistory::getId).collect(Collectors.toList());
+        if (ids.size() != 0) {
+            //根据无效记录Id获得无效记录和文件的关联信息
+            LambdaQueryWrapper<AssoReviewHisFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoReviewHisFile::getReviewHistoryId, ids);
+            List<AssoReviewHisFile> assoReviewHistoryFiles = assoReviewHisFileService.list();
+            //根据关联信息查询附件信息
+            if (assoReviewHistoryFiles.size() != 0) {
+                List<Integer> fileIds = assoReviewHistoryFiles.stream().map(AssoReviewHisFile::getFileId).collect(Collectors.toList());
+                LambdaQueryWrapper<ReportFiles> wrapper = new LambdaQueryWrapper<>();
+                wrapper.in(ReportFiles::getId, fileIds);
+                List<ReportFiles> reportFiles = reportFileService.list(wrapper);
+                //遍历装载文件信息
+                reviewHistories.forEach(item -> {
+                    List<AssoReviewHisFile> partAsso = assoReviewHistoryFiles.stream().filter(tem -> tem.getReviewHistoryId().equals(item.getId())).collect(Collectors.toList());
+                    List<ReportFiles> reportFilesList = new ArrayList<>();
+                    if (partAsso.size() != 0) {
+                        List<Integer> partFileIds = partAsso.stream().map(AssoReviewHisFile::getFileId).collect(Collectors.toList());
+                        List<ReportFiles> reportFiles1 = reportFiles.stream().filter(tem -> partFileIds.contains(tem.getId())).collect(Collectors.toList());
+                        reportFilesList = reportFiles1;
+                    }
+                    item.setReportFiles(reportFilesList);
+                });
+            }
 
+        }
+        return reviewHistories;
+
+    }
 
 }

+ 3 - 1
RMS/src/main/java/cn/cslg/report/service/business/TaskService.java

@@ -110,9 +110,11 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
 
     //添加审核任务
     @Transactional(rollbackFor = Exception.class)
-    public String addTask(TaskVO taskVO,List<MultipartFile> file) throws ParseException, IOException {
+    public String addTask(String taskVOStr,List<MultipartFile> file) throws ParseException, IOException {
+        TaskVO taskVO =JSONObject.parseObject(taskVOStr,TaskVO.class);
         //先添加一个报告
         Integer reportId = reportService.addReport(taskVO.getReport(),file);
+
         //数据库导入task
 
         //任务人员关联表导入数据

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

@@ -1,9 +1,9 @@
 package cn.cslg.report.service.business;
 
 import cn.cslg.report.common.utils.Response;
-import cn.cslg.report.entity.InvalidRecord;
+import cn.cslg.report.entity.ReviewHistory;
 import cn.cslg.report.entity.Template;
-import cn.cslg.report.mapper.InvalidRecordMapper;
+import cn.cslg.report.mapper.ReviewHistoryMapper;
 import cn.cslg.report.mapper.TemplateMapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;