lwhhszx 2 éve
szülő
commit
b10375b068
24 módosított fájl, 335 hozzáadás és 57 törlés
  1. 1 1
      RMS/src/main/java/cn/cslg/report/common/model/vo/CompareMessageVO.java
  2. 22 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/QueryCompareMessageVo.java
  3. 53 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/synergyTaskVO.java
  4. 0 4
      RMS/src/main/java/cn/cslg/report/controller/CompareFilesController.java
  5. 10 2
      RMS/src/main/java/cn/cslg/report/controller/CompareMessageController.java
  6. 6 1
      RMS/src/main/java/cn/cslg/report/controller/TaskController.java
  7. 1 1
      RMS/src/main/java/cn/cslg/report/entity/CompareFiles.java
  8. 2 0
      RMS/src/main/java/cn/cslg/report/mapper/CompareMessageMapper.java
  9. 10 9
      RMS/src/main/java/cn/cslg/report/service/OutInterfaceService.java
  10. 51 10
      RMS/src/main/java/cn/cslg/report/service/business/CompareMessageService.java
  11. 10 5
      RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java
  12. 45 24
      RMS/src/main/java/cn/cslg/report/service/business/ReportService.java
  13. 115 0
      RMS/src/main/java/cn/cslg/report/service/business/TaskService.java
  14. 4 0
      RMS/src/main/resources/mapper/CompareMessageMapper.xml
  15. BIN
      RMS/target/classes/cn/cslg/report/common/model/vo/PatentRightVo.class
  16. BIN
      RMS/target/classes/cn/cslg/report/controller/FeatureController.class
  17. BIN
      RMS/target/classes/cn/cslg/report/controller/TaskController.class
  18. BIN
      RMS/target/classes/cn/cslg/report/entity/CompareFiles.class
  19. BIN
      RMS/target/classes/cn/cslg/report/service/OutInterfaceService.class
  20. BIN
      RMS/target/classes/cn/cslg/report/service/business/CompareFilesService.class
  21. BIN
      RMS/target/classes/cn/cslg/report/service/business/FeatureService.class
  22. BIN
      RMS/target/classes/cn/cslg/report/service/business/ReportService.class
  23. BIN
      RMS/target/classes/cn/cslg/report/service/business/TaskService.class
  24. 5 0
      RMS/target/classes/mapper/AssoTaskPersonelMapper.xml

+ 1 - 1
RMS/src/main/java/cn/cslg/report/common/model/vo/CompareMessageVO.java

@@ -18,7 +18,7 @@ import java.util.List;
 @Data
 @Accessors(chain = true)
 @Schema(description="分配任务VO",required = true)
-public class CompareMessageVO {
+public class CompareMessageVO  {
     private Integer id;
     @Schema(description = "标的说明")
     private String targetDescription;

+ 22 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/QueryCompareMessageVo.java

@@ -0,0 +1,22 @@
+package cn.cslg.report.common.model.vo;
+
+import cn.cslg.report.common.model.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author lrj
+ * @date 2022-11-9
+ * @description 任务VO类
+ */
+@Data
+@Accessors(chain = true)
+@Schema(description="分配任务VO",required = true)
+public class QueryCompareMessageVo  extends BaseVO {
+    @Schema(description = "对比结果")
+    private Integer compareResult;
+    @Schema(description = "报告Id")
+    private Integer reportId;
+
+}

+ 53 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/synergyTaskVO.java

@@ -0,0 +1,53 @@
+package cn.cslg.report.common.model.vo;
+
+
+import cn.cslg.report.common.model.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author lrj
+ * @date 2022-11-9
+ * @description 任务VO类
+ */
+@Data
+@Accessors(chain = true)
+@Schema(description="协同任务VO",required = true)
+public class synergyTaskVO extends BaseVO {
+
+    @Schema(description = "任务名")
+    private String taskName;
+
+    @Schema(description = "任务类型")
+    private Integer taskType;
+
+    @Schema(description = "报告Id")
+    private Integer reportId;
+
+    @Schema(description = "人员专利号对象")
+    List<assignPatents> assigns ;
+
+    @Schema(description = "任务结束时间")
+    private Date endTime;
+
+    @Schema(description = "备注")
+    private String remark;
+    @Schema(description = "筛选条件")
+    private PatentVO patentVO;
+
+    @Data
+    public static class assignPatents{
+        @Schema(description = "人员Id")
+            private Integer personId;
+
+        @Schema(description = "专利号列表")
+        private List<String> patentNos;
+
+        @Schema(description = "分配数量")
+        private Integer assignCount;
+    }
+}

+ 0 - 4
RMS/src/main/java/cn/cslg/report/controller/CompareFilesController.java

@@ -47,8 +47,4 @@ public class CompareFilesController {
     }
 
 
-
-
-
-
 }

+ 10 - 2
RMS/src/main/java/cn/cslg/report/controller/CompareMessageController.java

@@ -1,7 +1,9 @@
 package cn.cslg.report.controller;
 
 import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.model.BaseVO;
 import cn.cslg.report.common.model.vo.CompareMessageVO;
+import cn.cslg.report.common.model.vo.QueryCompareMessageVo;
 import cn.cslg.report.common.utils.DateUtils;
 import cn.cslg.report.common.utils.FileUtils;
 import cn.cslg.report.common.utils.Response;
@@ -61,7 +63,13 @@ public class CompareMessageController {
 
     @GetMapping("queryCompareMessage")
     @Operation(summary = "查找FTO对比记录")
-    public String queryCompareMessage(Integer taskId,String patentNo) throws IOException {
-        return Response.success(compareMessageService.queryCompareMessage(taskId,patentNo));
+    public String queryCompareMessage(Integer taskId,Integer reportId,String patentNo) throws IOException {
+        return Response.success(compareMessageService.queryCompareMessage(taskId,reportId,patentNo));
+    }
+
+    @GetMapping("queryComparedMessage")
+    @Operation(summary = "获得已经对比过的报告专利")
+    public String queryComparedMessage(QueryCompareMessageVo queryVo) throws IOException {
+        return Response.success(compareMessageService.queryComparedMessage(queryVo));
     }
 }

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

@@ -69,13 +69,18 @@ public class TaskController {
         return taskService.auditTask(auditTaskVO);
     }
 
-
     @RequestMapping(value = "/addAssTask", method = RequestMethod.POST)
     @Operation(summary = "添加分配任务")
     public String addAssTask(@RequestBody AssignTaskVO assignTaskVO) throws ParseException, IOException {
         return taskService.addAssTask(assignTaskVO);
     }
 
+    @RequestMapping(value = "/addSynergyTask", method = RequestMethod.POST)
+    @Operation(summary = "添加协同任务")
+    public String addSynergyTask(@RequestBody AssignTaskVO assignTaskVO) throws ParseException, IOException {
+        return taskService.addAssTask(assignTaskVO);
+    }
+
     @RequestMapping(value = "/reTaskPatents", method = RequestMethod.POST)
     @Operation(summary = "返回任务专利清单")
     public String reTaskPatents(@RequestBody PatentVO patentVO) throws ParseException, IOException {

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

@@ -36,7 +36,7 @@ public class CompareFiles extends BaseEntity<CompareFiles> {
      * 状态
      */
     @TableField(value = "STATE")
-    private String state;
+    private Integer state;
 
 
 }

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

@@ -4,6 +4,7 @@ import cn.cslg.report.common.model.vo.CompareMessageVO;
 import cn.cslg.report.entity.CompareMessage;
 import cn.cslg.report.entity.asso.AssoTaskPatentSplit;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import io.swagger.v3.oas.models.security.SecurityScheme;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -12,4 +13,5 @@ import java.util.List;
 @Mapper
 public interface CompareMessageMapper extends BaseMapper<CompareMessage> {
     List<CompareMessageVO> getCompareMessage(@Param("taskId") Integer taskId,@Param("patentNo") String patentNo);
+    List<String> getNoCompareNos(@Param("reportId") Integer reportId);
 }

+ 10 - 9
RMS/src/main/java/cn/cslg/report/service/OutInterfaceService.java

@@ -224,7 +224,6 @@ public class OutInterfaceService {
         OkHttpClient okHttpClient = new OkHttpClient();
         Request request = new Request.Builder()
                 .url(PCSUrl + "/permission/api/system/getPersonnelByIds")
-                .addHeader("Cookie", LoginUtils.getToken())
                 .post(requestBody)
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
@@ -281,30 +280,32 @@ public class OutInterfaceService {
         OkHttpClient okHttpClient = new OkHttpClient();
         Request request = new Request.Builder()
                 .url(PASUrl + "/api/v2/patent/right?patentNo=" + patentNo)
-//                .addHeader("Cookie", LoginUtils.getToken())
                 .get()
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
 
-    public String getClientNameFromPAS(Integer id) throws IOException {
+    public String getDeparts(List<Integer> ids) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient();
+        String param = new Gson().toJson(ids);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
         Request request = new Request.Builder()
-                .url(PASUrl + "/api/v2/client/getClientName?id=" + id)
-                .get()
+                .url(PCSUrl + "/permission/api/system/getDeparts")
+                .post(requestBody)
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
 
-    public String getPersonNameAndDepart(Integer personId, Integer departId) throws IOException {
+    public String getClientNameFromPAS(List<Integer> ids) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient();
+        String param = new Gson().toJson(ids);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
         Request request = new Request.Builder()
-                .url(PCSUrl + "/permission/api/system/getPersonNameAndDepart?personId=" + personId + "&departId=" + departId)
-                .get()
+                .url(PASUrl + "/api/v2/system/getClientsByIds")
+                .post(requestBody)
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
-
     public String getPatentNos(Integer projectId) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient();
         Request request = new Request.Builder()

+ 51 - 10
RMS/src/main/java/cn/cslg/report/service/business/CompareMessageService.java

@@ -1,9 +1,6 @@
 package cn.cslg.report.service.business;
 
-import cn.cslg.report.common.model.vo.CompareMessageVO;
-import cn.cslg.report.common.model.vo.PatentRightVo;
-import cn.cslg.report.common.model.vo.PersonnelVO;
-import cn.cslg.report.common.model.vo.SplitVO;
+import cn.cslg.report.common.model.vo.*;
 import cn.cslg.report.common.utils.CacheUtils;
 import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.entity.*;
@@ -39,6 +36,7 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
     private final OutInterfaceService outInterfaceService;
     private final AssoTaskPatentSplitService assoTaskPatentSplitService;
     private final AssoTaskPersonelService assoTaskPersonelService;
+    private final CompareFilesService compareFilesService;
 
     @Transactional(rollbackFor = Exception.class)
     public Boolean addCompareMessage(List<CompareMessageVO> vos) {
@@ -49,12 +47,42 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
         // 获取登录人信息
         PersonnelVO personnelVO = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
         List<CompareMessage> compareMessages = new ArrayList<>();
-        //根据登录人Id,报告Id,标的专利号查询特征
+        //根据任务Id,标的专利号查询特征
         LambdaQueryWrapper<Features> wrapper = new LambdaQueryWrapper<>();
         if (vos.get(0).getTaskId() != null && vos.get(0).getSignPatentNo() != null) {
             wrapper.eq(Features::getTaskId, vos.get(0).getTaskId())
                     .eq(Features::getSignPatentNo, vos.get(0).getSignPatentNo());
-            Features feature = featureService.list(wrapper).get(0);
+            List<Features> features =featureService.list(wrapper);
+            Features feature = features.get(0);
+            //根据特征ID 删除原来的对比记录
+            List<Integer> fIds =features.stream().map(Features::getId).collect(Collectors.toList());
+            LambdaQueryWrapper<CompareMessage> queryWrapper2 =new LambdaQueryWrapper<>();
+            queryWrapper2.in(CompareMessage::getFeatureId,fIds);
+            this.remove(queryWrapper2);
+            //根据任务ID和专利号改变任务专利状态
+            LambdaQueryWrapper<AssoTaskPersonel> queryWrapper =new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoTaskPersonel::getTaskId,vos.get(0).getTaskId());
+            queryWrapper.eq(AssoTaskPersonel::getPatentNo,vos.get(0).getSignPatentNo());
+            List<AssoTaskPersonel> assoTaskPersonels =assoTaskPersonelService.list(queryWrapper);
+            if(assoTaskPersonels.size()!=0){
+                AssoTaskPersonel assoTaskPersonel =assoTaskPersonels.get(0);
+                assoTaskPersonel.setState(1);
+                assoTaskPersonel.updateById();
+            }
+            //获得任务的报告Id
+          Task task =  taskService.getById(vos.get(0).getTaskId());
+            Integer reportId =task.getReportId();
+            //根据报告Id和专利号改变报告专利状态
+            LambdaQueryWrapper<CompareFiles> queryWrapper1 =new LambdaQueryWrapper<>();
+            queryWrapper1.eq(CompareFiles::getReportId,reportId);
+            queryWrapper1.eq(CompareFiles::getPatentNo,vos.get(0).getSignPatentNo());
+
+            List<CompareFiles> compareFiles =compareFilesService.list(queryWrapper1);
+            if(compareFiles.size()!=0){
+                CompareFiles compareFile =compareFiles.get(0);
+                compareFile.setState(1);
+                compareFile.updateById();
+            }
             //根据登录人Id,报告Id,标的专利号删除原有特征
             featureService.remove(wrapper);
             for (int i = 0; i < vos.size(); i++) {
@@ -94,7 +122,7 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
         return this.removeByIds(ids);
     }
 
-    public Map<String, Object> queryCompareMessage(Integer taskId, String patentNo) throws IOException {
+    public Map<String, Object> queryCompareMessage(Integer taskId, Integer reportId,String patentNo) throws IOException {
         List<PatentRightVo> patentRightVos = new ArrayList<>();
         String resBody = outInterfaceService.getPatentRightFromPAS(patentNo);
         JSONObject jsonObject = JSONObject.parseObject(resBody);
@@ -105,7 +133,12 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
 
         //查询特征
         LambdaQueryWrapper<Features> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(Features::getTaskId, taskId);
+        if(taskId!=null){
+            queryWrapper.eq(Features::getTaskId, taskId);
+        }
+        else if(reportId!=null) {
+            queryWrapper.eq(Features::getReportId,reportId);
+        }
         queryWrapper.eq(Features::getSignPatentNo, patentNo);
         List<Features> features = featureService.list(queryWrapper);
         List<Integer> featureIds = features.stream().map(Features::getId).collect(Collectors.toList());
@@ -115,12 +148,13 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
         List<CompareMessageVO> compareMessageVOS =new ArrayList<>();
         features.forEach(item->{
             CompareMessageVO compareMessageVO =new CompareMessageVO();
-            BeanUtil.copyProperties(compareMessageVO,item);
+            BeanUtil.copyProperties(item,compareMessageVO);
             CompareMessage compareMessage =new CompareMessage();
             if( compareMessages.size()!=0){
           compareMessage = compareMessages.stream().filter(tem->tem.getFeatureId().equals(item.getId())).findFirst().get();
+                BeanUtil.copyProperties(compareMessage,compareMessageVO);
             }
-           BeanUtil.copyProperties(compareMessageVO,compareMessage);
+            compareMessageVOS.add(compareMessageVO);
         });
         //将拆解的权要和特征装载到对象PatentRightVo
         for (int i = 0; i < patentRights.size(); i++) {
@@ -152,4 +186,11 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
         return map;
     }
 
+
+    public Map<String, Object> queryComparedMessage(QueryCompareMessageVo queryVo) throws IOException {
+
+        Map<String, Object> map = new HashMap<String, Object>();
+
+        return map;
+    }
 }

+ 10 - 5
RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java

@@ -202,15 +202,20 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         List<Features> featureFromDb = this.queryFeatures(featureTO);
         //删除所有不符合登录人拆分条件的拆分特征
         LambdaQueryWrapper<Features> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(Features::getReportId, reportId)
-                .eq(Features::getSignPatentNo, patentNo);
+        wrapper.eq(Features::getReportId, reportId);
+        if(taskId!=null) {
+            wrapper.eq(Features::getTaskId, taskId);
+        }
+        wrapper.eq(Features::getSignPatentNo, patentNo);
         wrapper.and(QueryWrapper -> QueryWrapper.ne(Features::getSplitBy, a).or().ne(Features::getSplitType, b));
         if(taskId!=null){
             List<Features> features =this.list(wrapper);
             List<Integer> Ids =features.stream().map(Features::getId).collect(Collectors.toList());
-            LambdaQueryWrapper<CompareMessage> queryWrapper =new LambdaQueryWrapper<>();
-            queryWrapper.in(CompareMessage::getFeatureId,Ids);
-            compareMessageService.remove(queryWrapper);
+            if(Ids!=null&&Ids.size()!=0) {
+                LambdaQueryWrapper<CompareMessage> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.in(CompareMessage::getFeatureId, Ids);
+                compareMessageService.remove(queryWrapper);
+            }
         }
         this.remove(wrapper);
         //将拆解的权要和特征装载到对象PatentRightVo

+ 45 - 24
RMS/src/main/java/cn/cslg/report/service/business/ReportService.java

@@ -6,12 +6,14 @@ import cn.cslg.report.common.model.vo.ReportVO;
 import cn.cslg.report.common.model.vo.SystemDictVO;
 import cn.cslg.report.common.utils.*;
 import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
+import cn.cslg.report.entity.Personnel;
 import cn.cslg.report.entity.Report;
 
 import cn.cslg.report.entity.ReportFiles;
 import cn.cslg.report.entity.asso.AssoReportFile;
 import cn.cslg.report.mapper.ReportMapper;
 import cn.cslg.report.service.OutInterfaceService;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -61,25 +63,14 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
         try {
             report.getScenarioList();
             report.setScenarioId(StringUtils.join(report.getScenarioList(), ","));
-            String res1 = outInterfaceService.getClientNameFromPAS(report.getClientId());
-            JSONObject jsonObject = JSONObject.parseObject(res1);
-            String clientName = jsonObject.getString("data");
-            String res2 = outInterfaceService.getPersonNameAndDepart(report.getPersonId(), report.getDepartmentId());
             if (report.getAssociateReportId() != null) {
                 LambdaQueryWrapper<Report> wrapper = new LambdaQueryWrapper<>();
                 wrapper.eq(Report::getId, report.getAssociateReportId());
                 Report assioReport = this.list(wrapper).get(0);
                 report.setAssociateReportName(assioReport.getName());
             }
-            JSONObject jsonObject2 = JSONObject.parseObject(res2);
-            Map<String, Object> map = (Map<String, Object>) jsonObject2.get("data");
-            report.setClientName(clientName);
-            report.setDepartmentName(map.get("departName").toString());
-            report.setPersonName(map.get("personName").toString());
-
             PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
             report.setCreatePersonId(personnelVO.getId());
-            report.setCreatePersonName(personnelVO.getName());
             boolean addFlag = this.save(report);
 
             if (files != null && files.size() != 0) {
@@ -121,6 +112,7 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
         if (reportVO.getSignPatentNo() != null && reportVO.getSignPatentNo() != "") {
             queryWrapper.like(Report::getSignPatentNo, reportVO.getSignPatentNo());
         }
+        //控制只能查询自己负责或创建的报告
         queryWrapper.and(QueryWrapper -> {
             QueryWrapper.eq(Report::getCreatePersonId, loginUtils.getId())
                     .or().eq(Report::getPersonId, loginUtils.getId());
@@ -150,31 +142,61 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
         //提出报告Id
         List<Integer> reportIds = reports.stream().map(Report::getId).collect(Collectors.toList());
         // 提出客户Id
-        List<Integer> clientId =reports.stream().map(Report::getClientId).collect(Collectors.toList());
+        List<Integer> clientIds = reports.stream().map(Report::getClientId).collect(Collectors.toList());
         //提出部门Id
-        List<Integer> departId =reports.stream().map(Report::getDepartmentId).collect(Collectors.toList());
+        List<Integer> departIds = reports.stream().map(Report::getDepartmentId).collect(Collectors.toList());
         //提出人员Id
-        List<Integer> personId =reports.stream().map(Report::getDepartmentId).collect(Collectors.toList());
+        List<Integer> personIds = reports.stream().map(Report::getDepartmentId).collect(Collectors.toList());
         //提出创建人Id
-        List<Integer> createId =reports.stream().map(Report::getCreatePersonId).collect(Collectors.toList());
-        //根据客户Id查出客户信息
-
-
-         //根据报告ID查询报告文件关联信息
+        List<Integer> createIds = reports.stream().map(Report::getCreatePersonId).collect(Collectors.toList());
+        personIds.addAll(createIds);
+        //根据报告ID查询报告文件关联信息
         List<AssoReportFile> assoReportFiles = assoReportFileService.queryFileByReportId(reportIds);
         List<ReportFiles> reportFilesList = new ArrayList<>();
         if (assoReportFiles.size() != 0) {
             List<Integer> fileIds = assoReportFiles.stream().map(AssoReportFile::getFileId).collect(Collectors.toList());
             reportFilesList = reportFileService.getFiles(fileIds);
         }
-
         String res = outInterfaceService.getDictsFromPAS();
         JSONObject jsonObject = JSONObject.parseObject(res);
         List<SystemDictVO> list = JSONArray.parseArray(jsonObject.getString("data"), SystemDictVO.class);
         List<ReportFiles> temList = reportFilesList;
+        //根据人员Id获得人员信息
+        String res1 = outInterfaceService.getPersonnelByIdsFromPCS(personIds);
+        JSONObject jsonObject1 = JSONObject.parseObject(res1);
+        //解析jason获得标的专利的权要
+        List<Personnel> personnels = JSON.parseArray(jsonObject1.getString("data"), Personnel.class);
+        //根据部门Id 获得部门信息
+        List<Map<String, Object>> mapDeparts =new ArrayList<>();
+        if(departIds.size()!=0) {
+            String res2 = outInterfaceService.getDeparts(departIds);
+            mapDeparts = JSONObject.parseArray(res2);
+        }
+        //根据客户Id 获得客户信息
+        List<Map<String, Object>> mapClients =new ArrayList<>();
+        if(clientIds.size()!=0) {
+            String res3 = outInterfaceService.getClientNameFromPAS(clientIds);
+            mapClients =JSONObject.parseArray(res3);
+        }
         //过滤报告
-        reports.forEach(
-                item -> {
+        for(Report item :reports){
+                    //装载创建人名和负责人名
+                    List<Personnel> mapCre = personnels.stream().filter(tem -> tem.getId().equals(item.getPersonId())).collect(Collectors.toList());
+                    List<Personnel> mapDuty = personnels.stream().filter(tem -> tem.getId().equals(item.getCreatePersonId())).collect(Collectors.toList());
+                    if(mapDuty.size()!=0)
+                    item.setPersonName(mapDuty.get(0).getPersonnelName());
+                    if(mapCre.size()!=0)
+                    item.setCreatePersonName(mapCre.get(0).getPersonnelName());
+                    //装载部门名
+                    List<Map<String, Object>> mapDeaprt = mapDeparts.stream().filter(tem -> tem.get("departId").toString().equals(item.getPersonId().toString())).collect(Collectors.toList());
+                     if(mapDeaprt.size()!=0){
+                         item.setDepartmentName(mapDeaprt.get(0).get("departName").toString());
+                     }
+                     //装载客户
+                    List<Map<String, Object>> mapClient = mapClients.stream().filter(tem -> tem.get("clientId").toString().equals(item.getClientId().toString())).collect(Collectors.toList());
+                    if(mapClient.size()!=0){
+                        item.setClientName(mapClient.get(0).get("clientName").toString());
+                    }
                     //装载报告应用场景
                     if (StringUtils.isNotEmpty(item.getScenarioId())) {
                         item.setScenarioList(StringUtils.changeStringToString(item.getScenarioId(), ","));
@@ -190,8 +212,7 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
                         List<ReportFiles> partFiles = temList.stream().filter(tem -> partFileIds.contains(tem.getId())).collect(Collectors.toList());
                         item.setReportFiles(partFiles);
                     }
-                });
-
+                }
         return reports;
     }
 

+ 115 - 0
RMS/src/main/java/cn/cslg/report/service/business/TaskService.java

@@ -578,6 +578,121 @@ return dataPage;
         }
 
 
+    //添加协同任务
+    @Transactional(rollbackFor = Exception.class)
+    public String addSynergyTask(AssignTaskVO assignTaskVO) throws ParseException, IOException {
+        PatentVO patentVO = new PatentVO();
+        if (assignTaskVO.getPatentVO() != null) {
+            patentVO = assignTaskVO.getPatentVO();
+        }
+        LambdaQueryWrapper<Report> wrapper1 = new LambdaQueryWrapper<>();
+        wrapper1.eq(Report::getId, assignTaskVO.getReportId());
+        Report report = reportService.list(wrapper1).get(0);
+        //添加分配任务时将报告的状态置为创建中
+        if (report.getStatus() != 2) {
+            report.setStatus(2);
+            report.updateById();
+        }
+        String signPatentNO = report.getSignPatentNo();
+        //遍历assignTaskVO的分配人员信息assigns,在任务表里插入分配任务
+        List<String> selectedNos = new ArrayList<>();
+        //记录所有人的id
+        List<Integer> personIds = new ArrayList<>();
+        //记录总共专利号数量
+        int num = 0;
+        List<AssignTaskVO.assignPatents> personPatents = assignTaskVO.getAssigns();
+        for (int i = 0; i < personPatents.size(); i++) {
+            selectedNos.addAll(personPatents.get(i).getPatentNos());
+            num += personPatents.get(i).getAssignCount();
+            personIds.add(personPatents.get(i).getPersonId());
+        }
+        String resBody = outInterfaceService.getPersonnelByIdsFromPCS(personIds);
+        JSONObject jsonObject = JSONObject.parseObject(resBody);
+        //解析jason获得标的专利的权要
+        List<Personnel> personnels = JSON.parseArray(jsonObject.getString("data"), Personnel.class);
+        //获得登录人的信息
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
+        num += selectedNos.size();
+        // 根据报告Id获得待分配的专利号
+        LambdaQueryWrapper<CompareFiles> wrapper = new LambdaQueryWrapper<>();
+        wrapper.select(CompareFiles::getPatentNo)
+                .eq(CompareFiles::getReportId, assignTaskVO.getReportId())
+                .eq(CompareFiles::getState, 0);
+        List<CompareFiles> compareFiles = compareFilesService.list(wrapper);
+        List<String> AllpatentNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
+        //无查询条件
+        if (patentVO == null || patentVO.getFiledOptions() == null || patentVO.getFiledOptions().size() == 0) {
+            patentVO.setPatentNos(AllpatentNos);
+        }
+        //有查询条件时,自定义字段的专利号和任务的专利号取交集
+        else {
+            List<String> temPatentNos = reportFieldService.getPatentNo1(patentVO.getFiledOptions(),patentVO.getReportId(),patentVO.getTaskId(),patentVO.getTaskStatus());
+            patentVO.setPatentNos(temPatentNos);
+        }
+        String res = outInterfaceService.getConPantentNos(patentVO, 1);
+        JSONObject jsonObject1 = JSONObject.parseObject(res);
+        List<String> patentNos = JSONArray.parseArray(jsonObject1.get("data").toString(), String.class);
+        if (patentNos.size() > num) {
+            return Response.error("分配数量超过未分配总数");
+        }
+        //待分配的专利号列表剔除分配信息中已经存在的专利号
+        patentNos.removeAll(selectedNos);
+        List<AssoTaskPersonel> assoTaskPersonels = new ArrayList<>();
+        //记录分配的位置
+        int flag = 0;
+        //遍历assignTaskVO的分配人员信息assigns,装配人员所被分配的专利信息
+        for (int i = 0; i < personPatents.size(); i++) {
+            Integer handlePersonId = personIds.get(i);
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(handlePersonId)).findFirst().orElse(new Personnel());
+            Task task = new Task();
+            task.setTaskName(assignTaskVO.getTaskName());
+            task.setReportId(assignTaskVO.getReportId());
+            task.setType(assignTaskVO.getTaskType());
+            task.setTaskStatus(0);
+            task.setProgress(0.0);
+            task.setEndTime(assignTaskVO.getEndTime());
+            task.setRemark(assignTaskVO.getRemark());
+            task.setHandlePersonId(handlePersonId);
+            task.setHandlePersonName(personnel.getPersonnelName());
+            task.setCreateID(personnelVO.getId());
+            task.setCreateName(personnelVO.getName());
+            task.setSignPatentNo(signPatentNO);
+            //发送邮件
+            if(task.insert()) {
+                Map<String, Object> map = new HashMap<>();
+                map.put("title", "任务通知");
+                map.put("template", "mail/eTask.html");
+                map.put("value1", task.getHandlePersonName());
+                map.put("img", "\\src\\main\\resources\\mail\\logo.png");
+                map.put("email", task.getPersonEmail());
+                map.put("value2", task.getCreateName());
+                map.put("value3", "分配任务");
+                map.put("value4", task.getEndTime());
+                map.put("value5", "http://139.224.24.90:8086/");
+                mailUtils.sendEmailMessage(map);
+            }
+            //根据数量从分配的专利号列表中截取该数量的专利号,加上分配信息的专利号进行装配
+            List<String> partNos = new ArrayList<>();
+            if (personPatents.get(i).getPatentNos() == null || personPatents.get(i).getPatentNos().size() == 0) {
+                partNos = patentNos.subList(flag, flag + personPatents.get(i).getAssignCount());
+                flag += personPatents.get(i).getAssignCount();
+            }
+            partNos.addAll(personPatents.get(i).getPatentNos());
+            for (int t = 0; t < partNos.size(); t++) {
+                AssoTaskPersonel assoTaskPersonel = new AssoTaskPersonel();
+                assoTaskPersonel.setTaskId(task.getId());
+                assoTaskPersonel.setTaskType(2);
+                assoTaskPersonel.setPatentNo(partNos.get(t));
+                assoTaskPersonel.setPersonelId(personPatents.get(i).getPersonId());
+                assoTaskPersonel.setPersonelType(1);
+                assoTaskPersonel.setReportId(assignTaskVO.getReportId());
+                assoTaskPersonels.add(assoTaskPersonel);
+            }
+        }
+        // 分配信息入库
+        assoTaskPersonelService.saveBatch(assoTaskPersonels);
+        return Response.success();
+    }
 
 
 }

+ 4 - 0
RMS/src/main/resources/mapper/CompareMessageMapper.xml

@@ -6,5 +6,9 @@
         where a.SIGN_PATENT_NO=#{patentNo} and a.TASK_ID=#{taskId};
     </select>
 
+    <select id="getNoCompareNos" resultType="java.lang.String">
+        select  distinct a.SIGN_PATENT_NO from FEATURES a left join  COMPARE_MESSAGE b on a.ID=b.FEATURE_ID and  a.REPORT_ID=#{reportId} and b.COMPARE_RESULT is not null;
+    </select>
+
 
 </mapper>

BIN
RMS/target/classes/cn/cslg/report/common/model/vo/PatentRightVo.class


BIN
RMS/target/classes/cn/cslg/report/controller/FeatureController.class


BIN
RMS/target/classes/cn/cslg/report/controller/TaskController.class


BIN
RMS/target/classes/cn/cslg/report/entity/CompareFiles.class


BIN
RMS/target/classes/cn/cslg/report/service/OutInterfaceService.class


BIN
RMS/target/classes/cn/cslg/report/service/business/CompareFilesService.class


BIN
RMS/target/classes/cn/cslg/report/service/business/FeatureService.class


BIN
RMS/target/classes/cn/cslg/report/service/business/ReportService.class


BIN
RMS/target/classes/cn/cslg/report/service/business/TaskService.class


+ 5 - 0
RMS/target/classes/mapper/AssoTaskPersonelMapper.xml

@@ -6,4 +6,9 @@
        where PERSON_ID=#{personelId} and STATE=#{state} and TASK_ID=#{taskId}
     </select>
 
+    <select id="getSplitMessage" resultType="cn.cslg.report.entity.asso.AssoTaskPatentSplit">
+        select b.* from ASSO_TASK_PATENT a left join ASSO_TASK_PATENT_SPLIT as b on a.id=b.TASK_PATENT_ID
+        where a.PATENT_NO=#{patentNo} and a.TASK_ID=#{taskId} limit 1;
+    </select>
+
 </mapper>