Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

chenyi 2 gadi atpakaļ
vecāks
revīzija
911b576878
20 mainītis faili ar 345 papildinājumiem un 229 dzēšanām
  1. 2 2
      RMS/src/main/java/cn/cslg/report/common/model/vo/CompareScenariosVO.java
  2. 7 5
      RMS/src/main/java/cn/cslg/report/controller/ReportController.java
  3. 32 0
      RMS/src/main/java/cn/cslg/report/controller/ReportFileController.java
  4. 76 54
      RMS/src/main/java/cn/cslg/report/controller/TaskController.java
  5. 1 1
      RMS/src/main/java/cn/cslg/report/controller/TempleController.java
  6. 7 2
      RMS/src/main/java/cn/cslg/report/entity/AssoScenarIOS.java
  7. 0 32
      RMS/src/main/java/cn/cslg/report/entity/CompareScenariosAndRecords.java
  8. 0 29
      RMS/src/main/java/cn/cslg/report/entity/Files.java
  9. 6 0
      RMS/src/main/java/cn/cslg/report/entity/Report.java
  10. 92 0
      RMS/src/main/java/cn/cslg/report/entity/ReportFiles.java
  11. 8 0
      RMS/src/main/java/cn/cslg/report/entity/asso/AssoRecordsFeature.java
  12. 0 29
      RMS/src/main/java/cn/cslg/report/entity/asso/AssoScenariosRecords.java
  13. 0 1
      RMS/src/main/java/cn/cslg/report/mapper/AssoPatentFileMapper.java
  14. 3 2
      RMS/src/main/java/cn/cslg/report/mapper/CompareScenariosAndRecordsMapper.java
  15. 2 2
      RMS/src/main/java/cn/cslg/report/mapper/FileMapper.java
  16. 0 7
      RMS/src/main/java/cn/cslg/report/service/business/AssoPatentFileService.java
  17. 4 3
      RMS/src/main/java/cn/cslg/report/service/business/CompareScenariosAndRecordsService.java
  18. 39 13
      RMS/src/main/java/cn/cslg/report/service/business/CompareScenariosService.java
  19. 0 47
      RMS/src/main/java/cn/cslg/report/service/business/FileService.java
  20. 66 0
      RMS/src/main/java/cn/cslg/report/service/business/ReportFileService.java

+ 2 - 2
RMS/src/main/java/cn/cslg/report/common/model/vo/CompareScenariosVO.java

@@ -1,6 +1,7 @@
 package cn.cslg.report.common.model.vo;
 import cn.cslg.report.entity.CompareRecords;
 import cn.cslg.report.entity.Features;
+import cn.cslg.report.entity.asso.AssoRecordsFeature;
 import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 import lombok.experimental.Accessors;
@@ -33,6 +34,5 @@ public class CompareScenariosVO {
      * 对比记录id集合,featuresID
      */
     private List<Integer> recordIDList;
-    private List<CompareRecords> compareRecords;
-    private List<Features> features;
+    private List<AssoRecordsFeature> assoRecordsFeatures;
 }

+ 7 - 5
RMS/src/main/java/cn/cslg/report/controller/ReportController.java

@@ -5,9 +5,7 @@ import cn.cslg.report.common.model.vo.ReportVO;
 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.AssoTaskPersonelService;
-import cn.cslg.report.service.business.CompareFilesService;
-import cn.cslg.report.service.business.ReportService;
+import cn.cslg.report.service.business.*;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
@@ -16,8 +14,10 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.util.List;
 
 @Tag(name = "报告管理")
 @RestController
@@ -26,6 +26,7 @@ import java.io.IOException;
 public class ReportController {
     private final ReportService reportService;
    private final AssoTaskPersonelService assoTaskPersonelService;
+   private final ReportFileService reportFileService;
 
     /**
      * @param report 报告类
@@ -35,7 +36,7 @@ public class ReportController {
      */
     @RequestMapping(value = "/addReport", method = RequestMethod.POST)
     @Operation(summary = "新增报告")
-    public String addReport(@RequestBody Report report) {
+    public String addReport(Report report , List<MultipartFile> file) {
         // TODO: 2022/11/4 关于错误提示与对应的错误码还需要制定 避免前台看到失败字样 用网络异常来代替说明
         // 目前的错误说明有
         //  添加成功 是正常添加成功
@@ -46,7 +47,8 @@ public class ReportController {
         // 以上的说明可以参考或者改变,按照实际情况使用,另外这些说明我没有设置CODE码,建议加上
 
         if (report != null) {
-
+          Integer fileId =  reportFileService.uploadFiles(file.get(0));
+          report.setFileID(fileId);
             Integer flag = reportService.addReport(report);
 
             return Response.success("添加成功");

+ 32 - 0
RMS/src/main/java/cn/cslg/report/controller/ReportFileController.java

@@ -0,0 +1,32 @@
+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.ReportFiles;
+import cn.cslg.report.entity.Template;
+import cn.cslg.report.service.business.TemplateService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+@Tag(name = "文件")
+@RestController
+@RequestMapping(Constants.REPORT_API + "/reportFile")
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class ReportFileController {
+    public final TemplateService templateService;
+    @RequestMapping(value = "/add", method = RequestMethod.POST)
+    @Operation(summary = "添加文件")
+    public  String getTemplateByType(ReportFiles reportFiles,MultipartFile file) throws IOException{
+        return Response.success();
+    }
+
+}

+ 76 - 54
RMS/src/main/java/cn/cslg/report/controller/TaskController.java

@@ -140,21 +140,22 @@ public class TaskController {
         queryWrapper.eq(CompareScenarios::getReportId, reportId);
         List<CompareScenarios> compareScenarios = compareScenariosService.list(queryWrapper);
         List<Integer> scenarioIds = compareScenarios.stream().map(CompareScenarios::getId).collect(Collectors.toList());
-        //根据对比方案Id 从关联表里获得对比记录ID
-        LambdaQueryWrapper<CompareScenariosAndRecords> queryRecordsByIDs = new LambdaQueryWrapper<>();
-        queryRecordsByIDs.in(CompareScenariosAndRecords::getScenariosID, scenarioIds);
-        List<CompareScenariosAndRecords> scenariosRecords = scenariosRecordsService.list(queryRecordsByIDs);
-        List<Integer> recordIds = scenariosRecords.stream().map(CompareScenariosAndRecords::getRecordID).collect(Collectors.toList());
+        //根据对比方案Id 从关联表里获得对比记录特征关联ID
+        LambdaQueryWrapper<AssoScenarIOS> queryRecordsByIDs = new LambdaQueryWrapper<>();
+        queryRecordsByIDs.in(AssoScenarIOS::getScenariosID, scenarioIds);
+        List<AssoScenarIOS> scenariosRecords = scenariosRecordsService.list(queryRecordsByIDs);
+        List<Integer> recordfeatureRecordIds = scenariosRecords.stream().map(AssoScenarIOS::getFeatureRecordID).collect(Collectors.toList());
+        //根据关联ID查出报告Id和特征Id
+        LambdaQueryWrapper<AssoRecordsFeature> wrapper =new LambdaQueryWrapper<>();
+        wrapper.in(AssoRecordsFeature::getId,recordfeatureRecordIds);
+        List<AssoRecordsFeature> assoRecordsFeatures =assoRecordsFeatureService.list(wrapper);
+        List<Integer> recordIds =assoRecordsFeatures.stream().map(AssoRecordsFeature::getRecordsId).collect(Collectors.toList());
         //根据对比记录ID查询对比记录
         LambdaQueryWrapper<CompareRecords> queryPatentByIDs = new LambdaQueryWrapper<>();
         queryPatentByIDs.in(CompareRecords::getId, recordIds);
         List<CompareRecords> compareRecords = compareRecordsService.list(queryPatentByIDs);
         //根据对比记录ID获得专利号
         List<String> PatentNos = compareRecords.stream().map(CompareRecords::getPatentNo).collect(Collectors.toList());
-        //根据对比记录ID从对比记录特征关联表里获得关联数据
-        LambdaQueryWrapper<AssoRecordsFeature> queryAssoByRecordId = new LambdaQueryWrapper<>();
-        queryAssoByRecordId.in(AssoRecordsFeature::getRecordsId, recordIds);
-        List<AssoRecordsFeature> assoRecordsFeatures = assoRecordsFeatureService.list(queryAssoByRecordId);
         PatentVO patentVO = new PatentVO();
         patentVO.setPatentNos(PatentNos);
         //根据专利号查询专利详细信息
@@ -196,13 +197,16 @@ public class TaskController {
         List<Integer> rightIds = new ArrayList<>();
         for (int i = 0; i < compareScenarios.size(); i++) {
             CompareScenarios item1 = compareScenarios.get(i);
+            //获得单个对比方案的
+            List<AssoScenarIOS> partScenariosRecords = scenariosRecords.stream().filter(item -> item.getScenariosID().equals(item1.getId())).collect(Collectors.toList());
+            List<Integer> featureRecordsIds = partScenariosRecords.stream().map(AssoScenarIOS::getFeatureRecordID).collect(Collectors.toList());
+            List<AssoRecordsFeature> assoRecordsFeatures1 =   assoRecordsFeatures.stream().filter(item->featureRecordsIds.contains(item.getId())).collect(Collectors.toList());
+            List<Integer> partRecordIds=assoRecordsFeatures1.stream().map(AssoRecordsFeature::getRecordsId).collect(Collectors.toList());
+            List<Integer> partFetIds =assoRecordsFeatures1.stream().map(AssoRecordsFeature::getFeatureId).collect(Collectors.toList());
             //获得单个对比方案的权要的所有特征
-            List<Features> partFeatures = allFeatures.stream().filter(item -> item.getRightId().equals(item1.getRightId())).collect(Collectors.toList());
+            List<Features> partFeatures = allFeatures.stream().filter(item -> partFetIds.contains(item.getId())).collect(Collectors.toList());
             List<Integer> partFeatureIds = partFeatures.stream().map(Features::getId).collect(Collectors.toList());
-            //获得单个对比方案的
-            List<CompareScenariosAndRecords> partScenariosRecords = scenariosRecords.stream().filter(item -> item.getScenariosID().equals(item1.getId())).collect(Collectors.toList());
-            List<Integer> recordsIds = partScenariosRecords.stream().map(CompareScenariosAndRecords::getRecordID).collect(Collectors.toList());
-            List<CompareRecords> records = compareRecords.stream().filter(item -> recordsIds.contains(item.getId())).collect(Collectors.toList());
+            List<CompareRecords> records = compareRecords.stream().filter(item -> partRecordIds.contains(item.getId())).collect(Collectors.toList());
             //存放单条对比结果的map
             Map<String, Object> temMap = new HashMap<>();
             if (partFeatures.get(0).getRightType().equals(1)) {
@@ -211,8 +215,9 @@ public class TaskController {
                 temMap.put("rightName", "附属" + partFeatures.get(0).getRightName());
             }
             temMap.put("rightId", item1.getRightId());
+            temMap.put("remark",item1.getContrastResult());
             // 从关联数据里获得特征id
-            if (rightIds.contains(item1.getRightId())) {
+            if (!rightIds.contains(item1.getRightId())) {
                 rightIds.add(item1.getRightId());
             }
             //存放对比方案每一个特征记录
@@ -221,9 +226,9 @@ public class TaskController {
                 Map<String, Object> map = new HashMap<>();
                 map.put("featureContent", tem.getContent());
                 AssoRecordsFeature assoRecordsFeature = assoRecordsFeatures.stream().filter(item -> item.getFeatureId().equals(tem.getId())).findFirst().orElse(new AssoRecordsFeature());
-                map.put("compareResult", assoRecordsFeature.getComResult());
+                map.put("compareResult", assoRecordsFeature.getComResult()!=null?assoRecordsFeature.getComResult():"");
                 CompareRecords record = records.stream().filter(item -> item.getId().equals(assoRecordsFeature.getRecordsId())).findFirst().orElse(new CompareRecords());
-                map.put("compareContent", record.getContent());
+                map.put("compareContent", record.getContent()!=null?record.getContent():"");
                 maps.add(map);
             });
             //方案内容
@@ -237,50 +242,41 @@ public class TaskController {
                 }
             });
             //比较所有专利号和权要所有权要的大小,如果相等则将该专利加入到新颖性列表中
+
             List<String> noveltyFiles = new ArrayList<>();
             patentNOs.forEach(
                     item -> {
                         List<Integer> temRecordIds = records.stream().filter(tm -> tm.getPatentNo().equals(item)).map(CompareRecords::getId).collect(Collectors.toList());
                         List<Integer> temFIds = assoRecordsFeatures.stream().filter(tm -> temRecordIds.contains(tm.getRecordsId())).map(AssoRecordsFeature::getFeatureId).collect(Collectors.toList());
+                        String tmName = item;
+                        if (OtherName.containsKey(item)) {
+                            tmName = OtherName.get(item).toString();
+                        }
                         if (temFIds.size() == partFeatures.size()) {
-                            String tmName = item;
-                            if (OtherName.containsKey(item)) {
-                                tmName = OtherName.get(item).toString();
-                            }
                             noveltyFiles.add(tmName);
                         }
                     }
             );
-            //创造性模块
+
+            //创造性列表
             List<String> creativeFiles = new ArrayList<>();
-            partFeatureIds.forEach(
+            //当前方案所有的特征Id
+            partFeatures.forEach(
                     item -> {
-                        List<Integer> temRecordIDs = assoRecordsFeatures.stream().filter(tm -> tm.getFeatureId().equals(item)).map(AssoRecordsFeature::getRecordsId).collect(Collectors.toList());
-                        List<CompareRecords> temRecords = records.stream().filter(tm -> temRecordIDs.contains(tm.getId())).collect(Collectors.toList());
-                        List<String> temStrs = new ArrayList<>();
-                        temRecords.forEach(
-                                tm -> {
-                                    String name = tm.getPatentNo();
-                                    if (OtherName.containsKey(tm.getPatentNo())) {
-                                        name = OtherName.get(tm.getPatentNo()).toString();
-                                    }
-
-                                    if (!temStrs.contains(name)) {
-                                        temStrs.add(name);
-                                    }
-                                }
-                        );
-                        List<CompareScenariosAndRecords> andRecords = partScenariosRecords.stream().filter(tm -> tm.getFeaturesID().equals(item)).collect(Collectors.toList());
-                        if (andRecords.size() != 0) {
-                            temStrs.add("C");
-                        }
-                        String join = StringUtils.join(temStrs, "+");
-                        creativeFiles.add(join);
+                        String tmName = item.getSignPatentNo();
+                        if (OtherName.containsKey(tmName)) {
+                        tmName = OtherName.get(tmName).toString();
+                    }
+                        if(!creativeFiles.contains(tmName)){
+                        creativeFiles.add(tmName);}
                     }
             );
-
-            String creative = StringUtils.join(creativeFiles, "、");
-            String novelty = StringUtils.join(noveltyFiles, "-");
+            List<AssoScenarIOS> andRecords = partScenariosRecords.stream().filter(tm -> tm.getScenariosID().equals(item1.getId())).collect(Collectors.toList());
+            if (andRecords.size() != 0) {
+                creativeFiles.add("C");
+            }
+            String creative =creativeFiles.size()==0?"": StringUtils.join(creativeFiles, "+");
+            String novelty =noveltyFiles.size()==0?"": StringUtils.join(noveltyFiles, "-");
             //新颖性
             temMap.put("novelty", novelty);
             //创造性
@@ -288,22 +284,48 @@ public class TaskController {
             scenariosMaps.add(temMap);
 
         }
-        List<Object> allRightScenarios=new ArrayList<>();
+        List<Map<String,Object>> allRightScenarios=new ArrayList<>();
+        List<Map<String,Object>> resultMaps =new ArrayList<>();
         rightIds.forEach(tem -> {
+            Map<String,Object> map =new HashMap<>();
+            Map<String,Object> resultMap =new HashMap<>();
             List<Map<String, Object>> rightScenarios = new ArrayList<>();
-            scenariosMaps.forEach(item -> {
+            //存放新颖性信息
+            List<String> noveList=new ArrayList<>();
+            List<String> creaList=new ArrayList<>();
+                    //存放创造性信息
+            for (int t=0;t<scenariosMaps.size();t++){
+                Map<String,Object> item =scenariosMaps.get(t);
                 if (item.get("rightId").equals(tem)) {
+                    item.put("scenariosName","对比组合"+(t+1));
                     rightScenarios.add(item);
+                  if(item.get("novelty").toString()!="") {
+                      if(!noveList.contains(item.get("novelty").toString())){
+                    noveList.add(item.get("novelty").toString());}
+                  }
+                  if(item.get("creative").toString()!=""){
+                      if(!creaList.contains(item.get("creative").toString())){
+                    creaList.add(item.get("creative").toString());}
+                  }
                 }
-            });
-            allRightScenarios.add(rightScenarios);
+
+            }
+            map.put("rightScenrios",rightScenarios);
+            map.put("rightName",rightScenarios.get(0).get("rightName"));
+            String creative =creaList.size()==0?"": StringUtils.join(creaList, "、");
+            String novelty =noveList.size()==0?"": StringUtils.join(noveList, "-");
+            resultMap.put("rightName",rightScenarios.get(0).get("rightName"));
+            resultMap.put("rightNovelty",novelty);
+            resultMap.put("rightCreative",creative);
+            allRightScenarios.add(map);
+            resultMaps.add(resultMap);
         });
 
 
         // 为表格的显示绑定行循环
         LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
         // 将bz设置为行循环绑定的数据源的key,即key是bz的value会在模板中的{{bz}}处进行解析
-        Configure configure = Configure.builder().bind("patentList", policy).bind("compareResult", policy).bind("fileDetails", policy).build();
+        Configure configure = Configure.builder().bind("patentList", policy).bind("fileDetails", policy).bind("allResults", policy).build();
         Map<String, Object> map = new HashMap<>();
 
         //1.系统数据
@@ -312,10 +334,10 @@ public class TaskController {
         map.put("sys", new SystemMO(ds[0], ds[1], ds[2], "", "reportName"));
         map.put("sss", "saeqeq");
         map.put("patentList", patentListMaps);
-        map.put("compareResult", allRightScenarios);
+        map.put("combinations", allRightScenarios);
+        map.put("allResults",resultMaps);
         // 读取模板、数据并渲染
         XWPFTemplate template = XWPFTemplate.compile(filePath, configure).render(map);
-
 //         文件是否已存在,则删除
         File file = new File(outPath);
         if (file.exists()) {

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

@@ -1,7 +1,7 @@
 package cn.cslg.report.controller;
 
 import cn.cslg.report.common.core.base.Constants;
-import cn.cslg.report.entity.ReviewHistory;
+
 import cn.cslg.report.entity.Template;
 import cn.cslg.report.service.business.ReviewHistoryService;
 import cn.cslg.report.service.business.TemplateService;

+ 7 - 2
RMS/src/main/java/cn/cslg/report/entity/AssoScenarIOS.java

@@ -3,6 +3,7 @@ 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;
@@ -14,10 +15,14 @@ import lombok.experimental.Accessors;
 public class AssoScenarIOS extends BaseEntity<AssoScenarIOS> {
     @TableField(value = "ID")
     private Integer id;
+    @Schema(description = "对比方案ID")
     @TableField(value = "SCENARIOS_ID")
     private Integer scenariosID;
-    @TableField(value = "RECORD_ID")
-   private Integer recordID;
+    @Schema(description = "特征记录关联ID")
+    @TableField(value = "FEATURE_RECORD_ID")
+   private Integer featureRecordID;
+
+    @Schema(description = "公识特征ID")
     @TableField(value = "FEATURES_ID")
     private Integer featuresID;
 

+ 0 - 32
RMS/src/main/java/cn/cslg/report/entity/CompareScenariosAndRecords.java

@@ -1,32 +0,0 @@
-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 lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-@Data
-@Accessors(chain = true)
-@EqualsAndHashCode(callSuper = true)
-@TableName(value = "ASSO_SCENARIOS_RECORDS")
-public class CompareScenariosAndRecords  extends BaseEntity<CompareScenariosAndRecords> {
-    /**
-     * 对比方案id
-     */
-    @TableField(value = "SCENARIOS_ID")
-    public Integer scenariosID;
-    /**
-     * 对比记录ID
-     */
-    @TableField(value = "RECORD_ID")
-    public Integer recordID;
-    /**
-     * features特征id
-     */
-    @TableField(value = "FEATURES_ID")
-    public Integer featuresID;
-
-
-}

+ 0 - 29
RMS/src/main/java/cn/cslg/report/entity/Files.java

@@ -1,29 +0,0 @@
-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 lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * 文件表
- */
-@Data
-@Accessors(chain = true)
-@EqualsAndHashCode(callSuper = true)
-@TableName(value = "FILE")
-public class Files extends BaseEntity<Files> {
-    /**
-     * 文件名称
-     */
-    @TableField(value = "FILE_NAME")
-    private String fileName;
-
-    /**
-     * 文件路径
-     */
-    @TableField(value = "FILE_PATH")
-    private String filePath;
-}

+ 6 - 0
RMS/src/main/java/cn/cslg/report/entity/Report.java

@@ -175,6 +175,12 @@ public class Report extends BaseEntity<Report> {
     private String createPersonName;
 
     /**
+     * 文件ID
+     */
+    @Schema(description="文件Id")
+    @TableField(value = "FILE_ID")
+    private Integer fileID;
+    /**
      * 场景列表
      */
     @TableField(exist = false)

+ 92 - 0
RMS/src/main/java/cn/cslg/report/entity/ReportFiles.java

@@ -0,0 +1,92 @@
+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 org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 文件表
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+@TableName(value = "REPORT_FILE")
+public class ReportFiles extends BaseEntity<ReportFiles> {
+    /**
+     * 附件名称
+     */
+    @Schema(description = "附件名称")
+    @TableField("NAME")
+    private String name;
+
+    /**
+     * 文件名称
+     */
+    @Schema(description = "附件名称")
+    @TableField("FILE_NAME")
+    private String fileName;
+
+    /**
+     * 附件上传地址
+     */
+    @Schema(description = "附件名称")
+    @TableField("ADDRESS")
+    private String url;
+
+    /**
+     * 报告ID
+     */
+    @Schema(description = "附件名称")
+    @TableField("ZID")
+    private Integer reportId;
+
+    @Schema(description = "备注")
+@TableField("REMARK")
+    private String remark;
+
+    /**
+     * 上传时间
+     */
+    @Schema(description = "上传时间")
+    @TableField("UPDATE_TIME")
+    private Integer createTime;
+
+    /**
+     * 上传人
+     */
+    @Schema(description = "上传人")
+    @TableField("UID")
+    private Integer createBy;
+
+    /**
+     * 类型
+     */
+    @Schema(description = "类型")
+    @TableField("TYPE")
+    private String type;
+
+    /**
+     * 大小
+     */
+    @Schema(description = "大小")
+    @TableField("SIZE")
+    private Integer size;
+
+    /**
+     * 后缀
+     */
+    @Schema(description = "后缀")
+    @TableField("SUFFIX")
+    private String suffix;
+
+    @TableField(exist = false)
+    private String createName;
+
+    @TableField(exist = false)
+    private String projectName;
+}

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

@@ -1,6 +1,8 @@
 package cn.cslg.report.entity.asso;
 
 import cn.cslg.report.common.model.BaseEntity;
+import cn.cslg.report.entity.CompareRecords;
+import cn.cslg.report.entity.Features;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -29,5 +31,11 @@ public class AssoRecordsFeature extends BaseEntity<AssoRecordsFeature> {
     @TableField(value = "COM_RESULT")
     private String comResult;
 
+    @TableField(exist = false)
+    private CompareRecords compareRecords;
+
+    @TableField(exist = false)
+    private Features features;
+
 
 }

+ 0 - 29
RMS/src/main/java/cn/cslg/report/entity/asso/AssoScenariosRecords.java

@@ -1,29 +0,0 @@
-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 lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * 对比方案与对比记录关联表
- */
-@Data
-@Accessors(chain = true)
-@EqualsAndHashCode(callSuper = true)
-@TableName(value = "ASSO_SCENARIOS_RECORDS")
-public class AssoScenariosRecords extends BaseEntity<AssoScenariosRecords> {
-    /**
-     * 对比方案ID
-     */
-    @TableField(value = "SCENARIOS_ID")
-    private String scenariosId;
-
-    /**
-     * 对比记录ID
-     */
-    @TableField(value = "RECORD_ID")
-    private String recordId;
-}

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

@@ -1,7 +1,6 @@
 package cn.cslg.report.mapper;
 
 
-import cn.cslg.report.entity.Files;
 import cn.cslg.report.entity.asso.AssoPatentFile;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;

+ 3 - 2
RMS/src/main/java/cn/cslg/report/mapper/CompareScenariosAndRecordsMapper.java

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

+ 2 - 2
RMS/src/main/java/cn/cslg/report/mapper/FileMapper.java

@@ -1,11 +1,11 @@
 package cn.cslg.report.mapper;
 
 
-import cn.cslg.report.entity.Files;
+import cn.cslg.report.entity.ReportFiles;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
 @Mapper
-public interface FileMapper extends BaseMapper<Files> {
+public interface ReportFileMapper extends BaseMapper<ReportFiles> {
 
 }

+ 0 - 7
RMS/src/main/java/cn/cslg/report/service/business/AssoPatentFileService.java

@@ -1,19 +1,12 @@
 package cn.cslg.report.service.business;
 
-import cn.cslg.report.common.model.dto.UploadFileDTO;
-import cn.cslg.report.common.utils.FileUtils;
-import cn.cslg.report.entity.Files;
 import cn.cslg.report.entity.asso.AssoPatentFile;
 import cn.cslg.report.mapper.AssoPatentFileMapper;
-import cn.cslg.report.mapper.FileMapper;
 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 org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
 
 @Service
 @Slf4j

+ 4 - 3
RMS/src/main/java/cn/cslg/report/service/business/CompareScenariosAndRecordsService.java

@@ -1,8 +1,9 @@
 package cn.cslg.report.service.business;
 
 import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.entity.AssoScenarIOS;
 import cn.cslg.report.entity.CompareScenarios;
-import cn.cslg.report.entity.CompareScenariosAndRecords;
+import cn.cslg.report.mapper.AssoScenarIOSMapper;
 import cn.cslg.report.mapper.CompareScenariosAndRecordsMapper;
 import cn.cslg.report.mapper.CompareScenariosMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -14,8 +15,8 @@ import org.springframework.stereotype.Service;
 @Service
 @Slf4j
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
-public class CompareScenariosAndRecordsService extends ServiceImpl<CompareScenariosAndRecordsMapper, CompareScenariosAndRecords> {
-    public  String add(CompareScenariosAndRecords compareScenariosAndRecords){
+public class CompareScenariosAndRecordsService extends ServiceImpl<AssoScenarIOSMapper, AssoScenarIOS> {
+    public  String add(AssoScenarIOS compareScenariosAndRecords){
         compareScenariosAndRecords.insert();
         return Response.success();
     }

+ 39 - 13
RMS/src/main/java/cn/cslg/report/service/business/CompareScenariosService.java

@@ -4,6 +4,7 @@ import cn.cslg.report.common.model.vo.CompareScenariosVO;
 import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.report.entity.*;
+import cn.cslg.report.entity.asso.AssoRecordsFeature;
 import cn.cslg.report.mapper.CompareScenariosMapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -29,6 +30,7 @@ public class CompareScenariosService extends ServiceImpl<CompareScenariosMapper,
     private  final LoginUtils loginUtils;
     private final CompareRecordsService compareRecordsService;
     private final FeatureService featureService;
+    private final AssoRecordsFeatureService assoRecordsFeatureService;
     public String add(CompareScenariosVO compareScenariosVO) throws IOException{
         //对比方案信息入表
         CompareScenarios compareScenarios = new CompareScenarios();
@@ -42,17 +44,17 @@ public class CompareScenariosService extends ServiceImpl<CompareScenariosMapper,
         Integer id = compareScenarios.getId();
         List<Integer> FeaturesId = compareScenariosVO.getFeaturesIDList();
         for(Integer integer:FeaturesId){
-            CompareScenariosAndRecords compareScenariosAndRecords = new CompareScenariosAndRecords();
+            AssoScenarIOS compareScenariosAndRecords = new AssoScenarIOS();
             compareScenariosAndRecords.setScenariosID(id);
             compareScenariosAndRecords.setFeaturesID(integer);
-            compareScenariosAndRecords.setRecordID(0);
+            compareScenariosAndRecords.setFeatureRecordID(0);
             compareScenariosAndRecordsService.add(compareScenariosAndRecords);
         }
         List<Integer> recordIDList = compareScenariosVO.getRecordIDList();
         for(Integer integer:recordIDList) {
-            CompareScenariosAndRecords compareScenariosAndRecords = new CompareScenariosAndRecords();
+            AssoScenarIOS compareScenariosAndRecords = new AssoScenarIOS();
             compareScenariosAndRecords.setScenariosID(id);
-            compareScenariosAndRecords.setRecordID(integer);
+            compareScenariosAndRecords.setFeatureRecordID(integer);
             compareScenariosAndRecords.setFeaturesID(0);
             compareScenariosAndRecordsService.add(compareScenariosAndRecords);
         }
@@ -61,9 +63,11 @@ public class CompareScenariosService extends ServiceImpl<CompareScenariosMapper,
 
     public String select(int reportID)throws IOException{
        List<CompareScenariosVO> list=new ArrayList<>();
+       //根据报告ID查询对比方案
         LambdaQueryWrapper<CompareScenarios> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(CompareScenarios::getReportId, reportID);
         List<CompareScenarios> CompareScenarios = this.list(wrapper);
+        //遍历对比方案
         for (CompareScenarios a:CompareScenarios){
             CompareScenariosVO compareScenariosVO=new CompareScenariosVO();
             compareScenariosVO.setRightId(a.getRightId());
@@ -73,16 +77,38 @@ public class CompareScenariosService extends ServiceImpl<CompareScenariosMapper,
             compareScenariosVO.setRight(a.getRightName());
             //根据对比方案ID获得s所有对比方案和对比记录关联信息
             List<AssoScenarIOS> select = assoScenarIOSService.select(a.getId());
-            //获得Id不为0的对比记录Id
-            List<Integer> recordIds = select.stream().filter(item->item.getRecordID()!=0).map(AssoScenarIOS::getRecordID).collect(Collectors.toList());
-            LambdaQueryWrapper<CompareRecords> wrapper1 =new LambdaQueryWrapper<>();
-            wrapper1.in(CompareRecords::getId,recordIds);
-            //获得方案的所有记录
-            List<CompareRecords> compareRecords = compareRecordsService.list(wrapper1);
-           List<Integer> featuresIds =select.stream().filter(item->!item.getFeaturesID().equals(0)).map(AssoScenarIOS::getFeaturesID).collect(Collectors.toList());
+            //获得Id不为0的对比记录和特征关联Id
+            List<Integer> featureRecordIds = select.stream().filter(item->item.getFeatureRecordID()!=0).map(AssoScenarIOS::getFeatureRecordID).collect(Collectors.toList());
+            //根据关联Id获得特征Id和对比记录ID
+            LambdaQueryWrapper<AssoRecordsFeature> wrapper1 =new LambdaQueryWrapper<>();
+            wrapper1.in(AssoRecordsFeature::getId,featureRecordIds);
+            List<AssoRecordsFeature> assoRecordsFeatures =assoRecordsFeatureService.list(wrapper1);
+            //特征Id
+            List<Integer> featureIds= assoRecordsFeatures.stream().map(AssoRecordsFeature::getFeatureId).collect(Collectors.toList());
+            //对比记录Id
+            List<Integer> recordId  =assoRecordsFeatures.stream().map(AssoRecordsFeature::getRecordsId).collect(Collectors.toList());
+            //根据特征Id查询特征
+            LambdaQueryWrapper<Features> wrapper2 =new LambdaQueryWrapper<>();
+            wrapper2.in(Features::getId,featureIds);
+            List<Features> features =featureService.list(wrapper2);
+            //根据记录ID查询记录
+            LambdaQueryWrapper<CompareRecords> wrapper3 =new LambdaQueryWrapper<>();
+            wrapper3.in(CompareRecords::getId,recordId);
+            List<CompareRecords> compareRecords =compareRecordsService.list(wrapper3);
+            assoRecordsFeatures.forEach(
+                 item->{
+                  Features features1 =features.stream().filter(tem->tem.getId().equals(item.getFeatureId())).findFirst().orElse(new Features());
+                  CompareRecords compareRecords1 =compareRecords.stream().filter(tem->tem.getId().equals(item.getRecordsId())).findFirst().orElse(new CompareRecords());
+                     item.setCompareRecords(compareRecords1);
+                     item.setFeatures(features1);
+                 }
+
+            );
+
+           List<Integer> featuresIds =select.stream().filter(item->item.getFeatureRecordID().equals(0)).map(AssoScenarIOS::getFeaturesID).collect(Collectors.toList());
             compareScenariosVO.setFeaturesIDList(featuresIds);
-            compareScenariosVO.setCompareRecords(compareRecords);
-            list.add(compareScenariosVO);
+            compareScenariosVO.setAssoRecordsFeatures(assoRecordsFeatures);
+         list.add(compareScenariosVO);
         }
         return Response.success(list);
 

+ 0 - 47
RMS/src/main/java/cn/cslg/report/service/business/FileService.java

@@ -1,47 +0,0 @@
-package cn.cslg.report.service.business;
-
-import cn.cslg.report.common.model.dto.UploadFileDTO;
-import cn.cslg.report.common.utils.FileUtils;
-import cn.cslg.report.entity.Files;
-import cn.cslg.report.entity.asso.AssoRecordsFeature;
-import cn.cslg.report.mapper.AssoRecordsFeatureMapper;
-import cn.cslg.report.mapper.FileMapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import io.swagger.v3.oas.models.security.SecurityScheme;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.tomcat.jni.File;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
-
-@Service
-@Slf4j
-@RequiredArgsConstructor(onConstructor_ = {@Lazy})
-public class FileService extends ServiceImpl<FileMapper, Files> {
-    private  final FileUtils fileUtils;
-    public Files uploadFiles(MultipartFile file){
-        UploadFileDTO fileDTO = fileUtils.uploadFile(file);
-        String path = fileUtils.getPath(fileDTO.getPath());
-        Files file1=new Files();
-        file1.setFilePath(path);
-        file1.setFileName(fileDTO.getName());
-        file1.insert();
-        return file1;
-    }
-
-    public void deleteFiles(List<Integer> fileIds)
-    {
-        this.removeByIds(fileIds);
-    }
-
-    public void getFiles(Integer FileId)
-    {
-    Files file =  this.getById(FileId);
-      String filePath =file.getFilePath();
-      String fileName =file.getFileName();
-    }
-
-}

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

@@ -0,0 +1,66 @@
+package cn.cslg.report.service.business;
+
+import cn.cslg.report.common.model.dto.UploadFileDTO;
+import cn.cslg.report.common.utils.DateUtils;
+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.entity.ReportFiles;
+import cn.cslg.report.mapper.ReportFileMapper;
+import cn.hutool.core.io.FileUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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 org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+@Service
+@Slf4j
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class ReportFileService extends ServiceImpl<ReportFileMapper, ReportFiles> {
+    private  final FileUtils fileUtils;
+    private final LoginUtils loginUtils;
+    public Integer uploadFiles(MultipartFile file){
+//        ReportFiles temp = this.getProjectFileByName(projectFile.getName(), projectFile.getProjectId(), projectFile.getType(), FileUtil.extName(file.getOriginalFilename()));
+//        if (temp != null) {
+//            return -1;
+//        }
+        UploadFileDTO fileDTO = fileUtils.uploadFile(file);
+        ReportFiles reportFiles =new ReportFiles();
+        reportFiles.setSize((int) file.getSize());
+        reportFiles.setUrl(fileDTO.getPath());
+        reportFiles.setFileName(fileDTO.getFileName());
+        reportFiles.setCreateTime(DateUtils.getDateTime());
+        reportFiles.setCreateBy(loginUtils.getId());
+        reportFiles.setSuffix(fileDTO.getExtName());
+        reportFiles.insert();
+        return reportFiles.getId();
+
+
+    }
+
+    public void deleteFiles(List<Integer> fileIds)
+    {
+        this.removeByIds(fileIds);
+    }
+
+
+    public ReportFiles getProjectFileByName(String name, Integer projectId, String type, String suffix) {
+        LambdaQueryWrapper<ReportFiles> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportFiles::getName, name);
+        queryWrapper.eq(ReportFiles::getReportId, projectId);
+        queryWrapper.eq(ReportFiles::getType, type);
+        queryWrapper.eq(ReportFiles::getSuffix, suffix);
+        return this.getOne(queryWrapper);
+    }
+    public void getFiles(Integer FileId)
+    {
+    ReportFiles file =  this.getById(FileId);
+      String fileName =file.getFileName();
+    }
+
+}