xiexiang 1 年之前
父節點
當前提交
8e11ef54d7

+ 1 - 1
src/main/java/cn/cslg/pas/common/dto/business/AvoidDesignDTO.java

@@ -14,7 +14,7 @@ public class AvoidDesignDTO {
      */
     private Integer featureId;
     private String content;
-    private String expalinText;
+    private String explainText;
     private Integer rightSort;
     private Integer rightType;
 

+ 5 - 0
src/main/java/cn/cslg/pas/common/dto/business/AvoidDesignInsertDTO.java

@@ -17,6 +17,11 @@ public class AvoidDesignInsertDTO {
     private Integer projectId;
 
     /**
+     * 内容
+     */
+    private String wholeContent;
+
+    /**
      * 特征信息与回避设计方向
      */
     private List<AvoidDesignDTO> avoidDesignDTOS;

+ 33 - 0
src/main/java/cn/cslg/pas/common/dto/business/GetAvoidDesignDTO.java

@@ -0,0 +1,33 @@
+package cn.cslg.pas.common.dto.business;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 查询回避设计方案DTO
+ * @Author xiexiang
+ * @Date 2023/12/7
+ */
+@Data
+public class GetAvoidDesignDTO {
+    /**
+     * 报告id
+     */
+    private Integer projectId;
+
+    /**
+     * 是否重拆
+     */
+    private Boolean ifReSplit;
+
+    /**
+     * 拆分类型
+     * 0仅拆主权要 1全部拆分
+     */
+    private Integer splitType;
+    /**
+     * 拆分形式
+     * 0逗号拆分 1分号拆分 2逗号和分号拆分
+     */
+    private Integer splitBy;
+}

+ 2 - 1
src/main/java/cn/cslg/pas/common/dto/business/ReportProjectDTO.java

@@ -68,5 +68,6 @@ public class ReportProjectDTO {
     private String productOrTech;
     @Schema(description = "关联报告")
     private Integer AssoReportId;
-
+    @Schema(description = "是否直接完成")
+    private Boolean ifFinish;
 }

+ 64 - 0
src/main/java/cn/cslg/pas/common/vo/business/AvoidDesignRightVO.java

@@ -0,0 +1,64 @@
+package cn.cslg.pas.common.vo.business;
+
+import cn.cslg.pas.common.vo.CompareMessageVO;
+import cn.cslg.pas.domain.business.Feature;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 回避设计方案查询权要层
+ * @Author xiexiang
+ * @Date 2023/12/7
+ */
+@Data
+public class AvoidDesignRightVO {
+    /**
+     * 权要名
+     */
+    private String RightName;
+    /**
+     * 专利号
+     */
+    private String signPatentNo;
+    /**
+     * 特征拆分人ID
+     */
+    private Integer partnerId;
+    /**
+     * 专利ID
+     */
+    private String patentNo;
+
+    /**
+     * 内容
+     */
+    private String contentOut;
+
+    /**
+     * 内容
+     */
+    private String content;
+    /**
+     * 类型
+     */
+    private Integer type;
+
+    private Integer sort;
+
+    /**
+     * 所属报告
+     */
+    private Integer projectId;
+
+    /**
+     *
+     */
+    private List<CompareMessageVO> compareMessageVOS;
+
+
+    /**
+     * 特征与回避设计方向信息
+     */
+    private List<AvoidDesignVO> avoidDesignVOS;
+}

+ 19 - 3
src/main/java/cn/cslg/pas/common/vo/business/AvoidDesignVO.java

@@ -23,12 +23,28 @@ public class AvoidDesignVO {
      */
     private Integer featureId;
 
-    private Feature feature;
+    /**
+     * 特征内容
+     */
+    private String content;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
 
     /**
-     * 所属报告
+     *
      */
-    private Integer projectId;
+    private Integer rightSort;
+
+    private Integer rightType;
+
+    private String explainText;
+
+    private String formId;
+
+    private Integer sysOrder;
 
     /**
      * 回避设计方向

+ 4 - 4
src/main/java/cn/cslg/pas/common/vo/business/AvoidDesignWholeVO.java

@@ -23,9 +23,9 @@ public class AvoidDesignWholeVO {
     private Integer projectType;
 
     /**
-     * 内容
+     * 回避设计总体方向内容
      */
-    private String content;
+    private String wholeContent;
 
     /**
      * 创建人id
@@ -43,7 +43,7 @@ public class AvoidDesignWholeVO {
     private Date createTime;
 
     /**
-     * 回避设计方向VO
+     * 权要信息
      */
-    private List<AvoidDesignVO> avoidDesignVOS;
+    private List<AvoidDesignRightVO> avoidDesignRightVOS;
 }

+ 5 - 31
src/main/java/cn/cslg/pas/controller/AvoidDesignController.java

@@ -1,16 +1,12 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
-import cn.cslg.pas.common.dto.business.AvoidDesignDTO;
-import cn.cslg.pas.common.dto.business.AvoidDesignInsertDTO;
-import cn.cslg.pas.common.dto.business.AvoidDesignWholeDTO;
-import cn.cslg.pas.common.dto.business.CustomFieldDTO;
+import cn.cslg.pas.common.dto.business.*;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.vo.business.AvoidDesignWholeVO;
 import cn.cslg.pas.exception.ConditionException;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
-import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.service.business.AvoidDesignService;
 import cn.cslg.pas.service.business.AvoidDesignWholeService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -36,7 +32,7 @@ public class AvoidDesignController {
     @Autowired
     private AvoidDesignWholeService avoidDesignWholeService;
 
-    @Operation(summary = "新增回避设计方案")
+    @Operation(summary = "保存回避设计方案")
     @PostMapping("/addAvoidDesign")
     public Response addAvoidDesign(@RequestBody AvoidDesignInsertDTO avoidDesignInsertDTO) throws Exception {
         if (avoidDesignInsertDTO != null) {
@@ -59,32 +55,10 @@ public class AvoidDesignController {
     }
 
     @Operation(summary = "查询回避设计方案")
-    @GetMapping("/getAvoidDesign")
-    public Response getAvoidDesign(Integer projectId) throws Exception {
-        AvoidDesignWholeVO avoidDesignWholeVO = avoidDesignWholeService.getAvoidDesignWhole(projectId);
+    @PostMapping("/getAvoidDesign")
+    public Response getAvoidDesign(@RequestBody GetAvoidDesignDTO getAvoidDesignDTO) throws Exception {
+        AvoidDesignWholeVO avoidDesignWholeVO = avoidDesignWholeService.getAvoidDesignWhole(getAvoidDesignDTO);
         return Response.success(avoidDesignWholeVO);
     }
 
-    @Operation(summary = "新增回避设计方案总体方向")
-    @PostMapping("/addAvoidDesignWhole")
-    public Response addAvoidDesignWhole(@RequestBody AvoidDesignWholeDTO avoidDesignWholeDTO) throws Exception {
-        if (avoidDesignWholeDTO != null) {
-            Integer id = null;
-            try {
-                id= avoidDesignWholeService.addAvoidDesignWhole(avoidDesignWholeDTO);
-            } catch (Exception e) {
-                if (e instanceof XiaoShiException) {
-                    return Response.error(e.getMessage());
-                } else if (e instanceof UnLoginException) {
-                    return Response.unLogin(e.getMessage());
-                } else if (e instanceof ConditionException) {
-                    return Response.conditionError(e.getMessage());
-                }
-            }
-            return Response.success(id);
-        } else {
-            return Response.error("入参为null");
-        }
-    }
-
 }

+ 32 - 1
src/main/java/cn/cslg/pas/controller/FeatureController.java

@@ -5,7 +5,11 @@ import cn.cslg.pas.common.dto.QuerySplitDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.vo.business.SplitVO;
+import cn.cslg.pas.domain.business.ReportProject;
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.service.business.FeatureService;
+import cn.cslg.pas.service.business.ReportProjectService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,7 +29,10 @@ public class FeatureController {
     @Autowired
     private FeatureService featureService;
 
-    @Operation(summary = "查询特征")
+    @Autowired
+    private ReportProjectService reportProjectService;
+
+    @Operation(summary = "拆分查询特征")
     @PostMapping("/spiltFeature")
     public Response spiltFeature(@RequestBody SplitVO splitVO) throws Exception {
         try {
@@ -76,4 +83,28 @@ public class FeatureController {
         }
 
     }
+
+    @Operation(summary = "查询特征")
+    @PostMapping("/getFeatrues")
+    public Response getFeatrues(@RequestBody SplitVO splitVO) throws Exception {
+        try {
+            Records records = new Records();
+            splitVO.setIfReSplit(false);
+            if (splitVO.getProjectId() != null) {
+                LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper();
+                queryWrapper.eq(ReportProject::getProjectId, splitVO.getProjectId());
+                ReportProject reportProject = reportProjectService.getOne(queryWrapper, false);
+                if (reportProject != null) {
+                    splitVO.setPatentNo(reportProject.getSignPatentNo());
+                } else {
+                    throw new XiaoShiException("未查询到报告");
+                }
+            }
+            records.setData(featureService.splitPatentFeature(splitVO));
+            return Response.success(records);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
+    }
+
 }

+ 2 - 0
src/main/java/cn/cslg/pas/domain/business/Feature.java

@@ -73,4 +73,6 @@ public class Feature extends BaseEntity<Feature> {
     @TableField(value = "tenant_id")
     private Integer tenantId;
 
+    @TableField(value="sys_order")
+    private Integer sysOrder;
 }

+ 4 - 2
src/main/java/cn/cslg/pas/domain/business/PatentSplitMessage.java

@@ -10,14 +10,14 @@ import java.util.Date;
 
 /**
  * <p>
- * 事件
+ * 专利权要拆分条件记录
  * </p>
  *
  * @author 李仁杰
  * @since 2022-10-20
  */
 @Data
-@TableName("event")
+@TableName("patent_split_message")
 /*数据库中的表对应的类
  */
 public class PatentSplitMessage extends BaseEntity<PatentSplitMessage> {
@@ -31,4 +31,6 @@ public class PatentSplitMessage extends BaseEntity<PatentSplitMessage> {
     private Date createTime;
     @TableField(value = "tenant_id")
     private Integer tenantId;
+    @TableField(value = "task_id")
+    private Integer taskId;
 }

+ 38 - 42
src/main/java/cn/cslg/pas/service/business/AvoidDesignService.java

@@ -2,11 +2,13 @@ package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.AvoidDesignDTO;
 import cn.cslg.pas.common.dto.business.AvoidDesignInsertDTO;
+import cn.cslg.pas.common.dto.business.AvoidDesignWholeDTO;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.business.AvoidDesignVO;
 import cn.cslg.pas.domain.business.AvoidDesign;
+import cn.cslg.pas.domain.business.AvoidDesignWhole;
 import cn.cslg.pas.domain.business.Feature;
 import cn.cslg.pas.domain.business.ReportProject;
 import cn.cslg.pas.exception.UnLoginException;
@@ -16,6 +18,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -41,19 +44,22 @@ public class AvoidDesignService extends ServiceImpl<AvoidDesignMapper, AvoidDesi
     @Autowired
     private ReportProjectService reportProjectService;
 
+    @Autowired
+    private AvoidDesignWholeService avoidDesignWholeService;
+
     /**
      * 新增回避设计
      * @param avoidDesignInsertDTO
      * @return
      */
     public List<Integer> addAvoidDesign(AvoidDesignInsertDTO avoidDesignInsertDTO){
-//        //获取登录人信息
-//        PersonnelVO personnelVO = new PersonnelVO();
-//        try {
-//            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-//        } catch (Exception e) {
-//            throw new UnLoginException("未登录");
-//        }
+        //获取登录人信息
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
         Integer projectId = avoidDesignInsertDTO.getProjectId();
         if (projectId == null) {
             throw new XiaoShiException("projectId不能为空");
@@ -72,13 +78,25 @@ public class AvoidDesignService extends ServiceImpl<AvoidDesignMapper, AvoidDesi
         List<AvoidDesignDTO> avoidDesignDTOS = avoidDesignInsertDTO.getAvoidDesignDTOS();
         //根据专利号和projectId,删除特征
         LambdaQueryWrapper<Feature> deleteWrapper =new LambdaQueryWrapper<>();
-        deleteWrapper.eq(Feature::getPatentNo,patentNo)
-                        .eq(Feature::getProjectId,projectId);
+        deleteWrapper.eq(Feature::getPatentNo, patentNo)
+                        .eq(Feature::getProjectId, projectId);
         featureService.remove(deleteWrapper);
         //根据projectId删除回避设计方向数据
         LambdaQueryWrapper<AvoidDesign> deleteWrapper2 = new LambdaQueryWrapper<>();
         deleteWrapper2.eq(AvoidDesign::getProjectId, projectId);
         this.remove(deleteWrapper2);
+        LambdaQueryWrapper<AvoidDesignWhole> deleteWrapper3 = new LambdaQueryWrapper<>();
+        deleteWrapper3.eq(AvoidDesignWhole::getProjectId, projectId);
+        avoidDesignWholeService.remove(deleteWrapper3);
+        //新增总体方向
+        //首先新增总体方向
+        AvoidDesignWholeDTO avoidDesignWholeDTO = new AvoidDesignWholeDTO();
+        avoidDesignWholeDTO.setContent(avoidDesignInsertDTO.getWholeContent());
+        avoidDesignWholeDTO.setProjectId(avoidDesignInsertDTO.getProjectId());
+        Integer wholeId = avoidDesignWholeService.addAvoidDesignWhole(avoidDesignWholeDTO);
+        if (wholeId == null) {
+            throw new XiaoShiException("总体方向添加失败");
+        }
         //新增插入回避设计方向集合
         List<AvoidDesign> avoidDesignList = new ArrayList<>();
         //遍历传入集合
@@ -88,21 +106,21 @@ public class AvoidDesignService extends ServiceImpl<AvoidDesignMapper, AvoidDesi
             feature.setPatentNo(patentNo);
             feature.setProjectId(projectId);
             feature.setContent(avoidDesignDTO.getContent());
-            feature.setExplainText(avoidDesignDTO.getExpalinText());
-//            feature.setCreateId(personnelVO.getId());
-            feature.setCreateId("328");
+            feature.setExplainText(avoidDesignDTO.getExplainText());
+            feature.setCreateId(personnelVO.getId());
             feature.setRightType(avoidDesignDTO.getRightType());
             feature.insert();
             //获取特征id
             Integer featureId = feature.getId();
-            //插入回避设计方向
-            AvoidDesign avoidDesign = new AvoidDesign();
-            avoidDesign.setProjectId(projectId);
-            avoidDesign.setFeatureId(featureId);
-            avoidDesign.setDirection(avoidDesignDTO.getDirection());
-//            avoidDesign.setCreateId(personnelVO.getId());
-            avoidDesign.setCreateId("328");
-            avoidDesignList.add(avoidDesign);
+            if (avoidDesignDTO.getDirection() != null) {
+                //插入回避设计方向
+                AvoidDesign avoidDesign = new AvoidDesign();
+                avoidDesign.setProjectId(projectId);
+                avoidDesign.setFeatureId(featureId);
+                avoidDesign.setDirection(avoidDesignDTO.getDirection());
+                avoidDesign.setCreateId(personnelVO.getId());
+                avoidDesignList.add(avoidDesign);
+            }
         }
         List<Integer> ids = new ArrayList<>();
         if (!avoidDesignList.isEmpty()) {
@@ -111,26 +129,4 @@ public class AvoidDesignService extends ServiceImpl<AvoidDesignMapper, AvoidDesi
         }
         return ids;
     }
-
-    /**
-     * 查询回避设计
-     */
-    public List<AvoidDesignVO> queryAvoidDesign(Integer projectId){
-        List<AvoidDesignVO> avoidDesignVOS = new ArrayList<>();
-        LambdaQueryWrapper<AvoidDesign> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(AvoidDesign::getProjectId, projectId);
-        List<AvoidDesign> avoidDesignList = this.list(queryWrapper);
-        if (!avoidDesignList.isEmpty()) {
-            avoidDesignList.forEach(item -> {
-                AvoidDesignVO avoidDesignVO = new AvoidDesignVO();
-                BeanUtils.copyProperties(item, avoidDesignVO);
-                avoidDesignVOS.add(avoidDesignVO);
-            });
-        }
-        return avoidDesignVOS;
-    }
-
-    public void deleteAvoidDesign(){
-
-    }
 }

+ 178 - 93
src/main/java/cn/cslg/pas/service/business/AvoidDesignWholeService.java

@@ -2,24 +2,25 @@ package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.AvoidDesignWholeDTO;
 import cn.cslg.pas.common.dto.business.AvoidDesignWholeUpdateDTO;
+import cn.cslg.pas.common.dto.business.GetAvoidDesignDTO;
 import cn.cslg.pas.common.model.cronModel.Personnel;
+import cn.cslg.pas.common.vo.PatentRightVo;
+import cn.cslg.pas.common.vo.business.AvoidDesignRightVO;
 import cn.cslg.pas.common.vo.business.AvoidDesignVO;
 import cn.cslg.pas.common.vo.business.AvoidDesignWholeVO;
-import cn.cslg.pas.domain.business.AvoidDesignWhole;
-import cn.cslg.pas.domain.business.Feature;
-import cn.cslg.pas.domain.business.Project;
-import cn.cslg.pas.domain.business.ProjectTask;
+import cn.cslg.pas.common.vo.business.SplitVO;
+import cn.cslg.pas.domain.business.*;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.AvoidDesignWholeMapper;
 import cn.cslg.pas.service.permissions.PermissionService;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.apache.xmlbeans.xml.stream.XMLStreamException;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
-import org.springframework.web.context.annotation.ApplicationScope;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -33,6 +34,7 @@ import java.util.List;
 @Service
 public class AvoidDesignWholeService extends ServiceImpl<AvoidDesignWholeMapper, AvoidDesignWhole> {
     @Autowired
+    @Lazy
     private AvoidDesignService avoidDesignService;
 
     @Autowired
@@ -44,6 +46,9 @@ public class AvoidDesignWholeService extends ServiceImpl<AvoidDesignWholeMapper,
     @Autowired
     private FeatureService featureService;
 
+    @Autowired
+    private ReportProjectService reportProjectService;
+
     /**
      * 新增回避设计方案总体方向
      * @param avoidDesignWholeDTO
@@ -66,105 +71,185 @@ public class AvoidDesignWholeService extends ServiceImpl<AvoidDesignWholeMapper,
     }
 
     /**
-     * 更新回避设计方案总体方向
-     * @param avoidDesignWholeUpdateDTO
-     * @return
-     */
-    public Integer updateAvoidDesignWhole(AvoidDesignWholeUpdateDTO avoidDesignWholeUpdateDTO){
-        if (avoidDesignWholeUpdateDTO.getId() == null) {
-            throw new XiaoShiException("id不能为空");
-        }
-        //根据id查询回避设计总体方向
-        AvoidDesignWhole avoidDesignWhole = this.getById(avoidDesignWholeUpdateDTO.getId());
-        BeanUtils.copyProperties(avoidDesignWholeUpdateDTO, avoidDesignWhole);
-        avoidDesignWhole.updateById();
-        return avoidDesignWhole.getId();
-    }
-
-    /**
      * 查询回避设计方案
-     * @param projectId
+     * @param getAvoidDesignDTO
      * @return
      */
-    public AvoidDesignWholeVO getAvoidDesignWhole(Integer projectId) throws IOException {
-        AvoidDesignWholeVO avoidDesignWholeVO = new AvoidDesignWholeVO();
-        //根据projectId查询回避设计方案总体方向
-        LambdaQueryWrapper<AvoidDesignWhole> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(AvoidDesignWhole::getProjectId, projectId);
-        List<AvoidDesignWhole> avoidDesignWholeList = this.list(queryWrapper);
-        if (!avoidDesignWholeList.isEmpty()) {
-            AvoidDesignWhole avoidDesignWhole = avoidDesignWholeList.get(0);
-            //复制总体方向数据
-            BeanUtils.copyProperties(avoidDesignWhole, avoidDesignWholeVO);
-            //根据projectId查询回避设计方向数据
-            List<AvoidDesignVO> avoidDesignVOS = avoidDesignService.queryAvoidDesign(projectId);
-            avoidDesignWholeVO.setAvoidDesignVOS(avoidDesignVOS);
-            //装载名称等信息
-            this.loadAvoidDesignWhole(avoidDesignWholeVO);
+    public AvoidDesignWholeVO getAvoidDesignWhole(GetAvoidDesignDTO getAvoidDesignDTO) throws IOException {
+        //判断参数不能为空
+        Integer projectId = getAvoidDesignDTO.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("projectId为空");
         }
-        return avoidDesignWholeVO;
-    }
-
-    /**
-     * 装载回避设计方案总数据(回避设计方案总体方向and回避设计方向集合)
-     * @param avoidDesignWholeVO
-     */
-    public void loadAvoidDesignWhole(AvoidDesignWholeVO avoidDesignWholeVO) throws IOException {
-        //创建需要查询的ids
-        List<String> createIds = new ArrayList<>();
-        List<Personnel> personnels = new ArrayList<>();
-        //将回避设计总体方向的人员id插入其中
-        createIds.add(avoidDesignWholeVO.getCreateId());
-        List<AvoidDesignVO> avoidDesignVOS = avoidDesignWholeVO.getAvoidDesignVOS();
-        //回避设计方向集合不为空,遍历将人员ids插入其中
-        if (!avoidDesignVOS.isEmpty()) {
-            avoidDesignVOS.forEach(item -> {
-                if (item.getCreateId() != null) {
-                    createIds.add(item.getCreateId());
-                }
-            });
+        if (getAvoidDesignDTO.getIfReSplit() == null) {
+            throw new XiaoShiException("ifReSplit不能为空");
         }
-        //查询创建人名称
-        if (createIds.size() != 0) {
-            String res = permissionService.getPersonnelByIdsFromPCS(createIds);
-            JSONObject jsonObject = JSONObject.parseObject(res);
-            personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+        if (getAvoidDesignDTO.getSplitBy() == null) {
+            throw new XiaoShiException("splitBy不能为空");
         }
-        //首先装载回避设计总体方向的人员名称
-        Personnel personnelWhole = personnels.stream().filter(item -> item.getId().equals(avoidDesignWholeVO.getCreateId())).findFirst().orElse(null);
-        if (personnelWhole != null) {
-            avoidDesignWholeVO.setCreateName(personnelWhole.getPersonnelName());
+        if (getAvoidDesignDTO.getSplitType() == null) {
+            throw new XiaoShiException("splitType不能为空");
+        }
+        //返回的VO类
+        AvoidDesignWholeVO avoidDesignWholeVO = new AvoidDesignWholeVO();
+        avoidDesignWholeVO.setProjectId(projectId);
+        //根据projectId查询专利号
+        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportProject::getProjectId, projectId);
+        ReportProject reportProject = reportProjectService.getOne(queryWrapper, false);
+        String patentNo = reportProject.getSignPatentNo();
+        //新建查询拆分特征DTO
+        SplitVO splitVO = new SplitVO();
+        BeanUtils.copyProperties(getAvoidDesignDTO, splitVO);
+        splitVO.setPatentNo(patentNo);
+        List<PatentRightVo> patentRightVos = new ArrayList<>();
+        //判断是否重拆
+        if (getAvoidDesignDTO.getIfReSplit() == true) {//重拆
+            //重拆需要清空原有特征表、回避设计方向表、回避设计总体方向表
+            //清空回避设计方向表
+            LambdaQueryWrapper<AvoidDesign> deleteWrapper = new LambdaQueryWrapper<>();
+            deleteWrapper.eq(AvoidDesign::getProjectId, projectId);
+            avoidDesignService.remove(deleteWrapper);
+            //清空回避设计总体方向表
+            LambdaQueryWrapper<AvoidDesignWhole> deleteWholeWapper = new LambdaQueryWrapper<>();
+            deleteWholeWapper.eq(AvoidDesignWhole::getProjectId, projectId);
+            this.remove(deleteWholeWapper);
+            //清空特征表
+            //根据重拆条件拆分权要保存到特征表
+            patentRightVos = featureService.splitPatentFeature(splitVO);
         } else {
-            throw new XiaoShiException("未获取到当前登陆人信息");
+            //不重拆
+            patentRightVos = featureService.splitPatentFeature(splitVO);
         }
-        //新建
-        List<Integer> projectIds = new ArrayList<>();
-        //将回避设计的projectId插入其中
-        projectIds.add(avoidDesignWholeVO.getProjectId());
-        List<Project> projects = projectTaskService.getProjectInfo(projectIds);
-        if (!projects.isEmpty()) {
-            Project project = projects.stream().filter(item -> item.getId().equals(avoidDesignWholeVO.getProjectId())).findFirst().orElse(null);
-            if (project != null) {
-                avoidDesignWholeVO.setProjectName(project.getName());
-                avoidDesignWholeVO.setProjectType(project.getType());
+        if (!patentRightVos.isEmpty()) {
+            //根据projectId查询回避设计方案总体方向
+            LambdaQueryWrapper<AvoidDesignWhole> getWholeWrapper = new LambdaQueryWrapper<>();
+            getWholeWrapper.eq(AvoidDesignWhole::getProjectId, projectId);
+            AvoidDesignWhole avoidDesignWhole = this.getOne(getWholeWrapper, false);
+            //复制总体方向数据
+            if (avoidDesignWhole != null) {
+                BeanUtils.copyProperties(avoidDesignWhole, avoidDesignWholeVO);
+                avoidDesignWholeVO.setWholeContent(avoidDesignWhole.getContent());
             } else {
-                throw new XiaoShiException("未查询到报告信息");
+                avoidDesignWholeVO.setWholeContent(null);
             }
+            //新建权要层信息
+            List<AvoidDesignRightVO> avoidDesignRightVOS = new ArrayList<>();
+            //遍历装载权要层信息
+            patentRightVos.forEach(item -> {
+                AvoidDesignRightVO avoidDesignRightVO = new AvoidDesignRightVO();
+                BeanUtils.copyProperties(item, avoidDesignRightVO);
+                //新建特征与回避设计方向VOS
+                List<AvoidDesignVO> avoidDesignVOS = new ArrayList<>();
+                //特征信息
+                List<Feature> features = item.getFeatures();
+                avoidDesignVOS = this.loadAvoidDesign(projectId, features);
+                avoidDesignRightVO.setAvoidDesignVOS(avoidDesignVOS);
+                avoidDesignRightVOS.add(avoidDesignRightVO);
+            });
+            avoidDesignWholeVO.setAvoidDesignRightVOS(avoidDesignRightVOS);
+        } else {
+            throw new XiaoShiException("特征查询错误");
         }
-        //遍历装载回避设计方向的人员名称
-        for (AvoidDesignVO avoidDesignVO : avoidDesignVOS) {
-            //装载人员信息
-            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(avoidDesignVO.getCreateId())).findFirst().orElse(null);
-            if (personnel != null) {
-                avoidDesignVO.setCreateName(personnel.getPersonnelName());
-            } else {
-                throw new XiaoShiException("未获取到当前登陆人信息");
+//        //装载名称等信息
+//        this.loadAvoidDesignWhole(avoidDesignWholeVO);
+        return avoidDesignWholeVO;
+    }
+
+    public  List<AvoidDesignVO> loadAvoidDesign(Integer projectId, List<Feature> features) {
+        List<AvoidDesignVO> avoidDesignVOS = new ArrayList<>();
+        LambdaQueryWrapper<AvoidDesign> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AvoidDesign::getProjectId, projectId);
+        List<AvoidDesign> avoidDesignList = avoidDesignService.list(queryWrapper);
+        for (Feature feature : features) {
+            //新建特征与回避设计方向VO
+            AvoidDesignVO avoidDesignVO = new AvoidDesignVO();
+            //装载特征部分的信息
+            avoidDesignVO.setFeatureId(feature.getId());
+            avoidDesignVO.setContent(feature.getContent());
+            avoidDesignVO.setPatentNo(feature.getPatentNo());
+            avoidDesignVO.setRightSort(feature.getRightSort());
+            avoidDesignVO.setRightType(feature.getRightType());
+            avoidDesignVO.setExplainText(feature.getExplainText());
+            avoidDesignVO.setFormId(feature.getFromId());
+            avoidDesignVO.setSysOrder(feature.getSysOrder());
+            //装载回避设计部分(可能为空)
+            if (!avoidDesignList.isEmpty()) {
+                AvoidDesign avoidDesign = avoidDesignList.stream().filter(item -> item.getFeatureId() != null && item.getFeatureId().equals(feature.getId())).findFirst().orElse(null);
+                if (avoidDesign != null) {
+                    avoidDesignVO.setId(avoidDesign.getId());
+                    avoidDesignVO.setDirection(avoidDesign.getDirection());
+                    avoidDesignVO.setCreateId(avoidDesign.getCreateId());
+                    avoidDesignVO.setCreateTime(avoidDesign.getCreateTime());
+                }
             }
-            //装载特征集合
-            Feature feature = featureService.getById(avoidDesignVO.getFeatureId());
-            avoidDesignVO.setFeature(feature);
+            avoidDesignVOS.add(avoidDesignVO);
         }
-
-
+        return avoidDesignVOS;
     }
+
+//    /**
+//     * 装载回避设计方案总数据(回避设计方案总体方向and回避设计方向集合)
+//     * @param avoidDesignWholeVO
+//     */
+//    public void loadAvoidDesignWhole(AvoidDesignWholeVO avoidDesignWholeVO) throws IOException {
+//        //创建需要查询的ids
+//        List<String> createIds = new ArrayList<>();
+//        List<Personnel> personnels = new ArrayList<>();
+//        //将回避设计总体方向的人员id插入其中
+//        createIds.add(avoidDesignWholeVO.getCreateId());
+//        List<AvoidDesignVO> avoidDesignVOS = avoidDesignWholeVO.getAvoidDesignVOS();
+//        //回避设计方向集合不为空,遍历将人员ids插入其中
+//        if (!avoidDesignVOS.isEmpty()) {
+//            avoidDesignVOS.forEach(item -> {
+//                if (item.getCreateId() != null) {
+//                    createIds.add(item.getCreateId());
+//                }
+//            });
+//        }
+//        //查询创建人名称
+//        if (createIds.size() != 0) {
+//            String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+//            JSONObject jsonObject = JSONObject.parseObject(res);
+//            personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+//        }
+//        //首先装载回避设计总体方向的人员名称
+//        Personnel personnelWhole = personnels.stream().filter(item -> item.getId().equals(avoidDesignWholeVO.getCreateId())).findFirst().orElse(null);
+//        if (personnelWhole != null) {
+//            avoidDesignWholeVO.setCreateName(personnelWhole.getPersonnelName());
+//        } else {
+//            throw new XiaoShiException("未获取到当前登陆人信息");
+//        }
+//        //新建
+//        List<Integer> projectIds = new ArrayList<>();
+//        //将回避设计的projectId插入其中
+//        projectIds.add(avoidDesignWholeVO.getProjectId());
+//        List<Project> projects = projectTaskService.getProjectInfo(projectIds);
+//        if (!projects.isEmpty()) {
+//            Project project = projects.stream().filter(item -> item.getId().equals(avoidDesignWholeVO.getProjectId())).findFirst().orElse(null);
+//            if (project != null) {
+//                avoidDesignWholeVO.setProjectName(project.getName());
+//                avoidDesignWholeVO.setProjectType(project.getType());
+//            } else {
+//                throw new XiaoShiException("未查询到报告信息");
+//            }
+//        }
+//        //遍历装载回避设计方向的人员名称
+//        for (AvoidDesignVO avoidDesignVO : avoidDesignVOS) {
+//            //装载人员信息
+//            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(avoidDesignVO.getCreateId())).findFirst().orElse(null);
+//            if (personnel != null) {
+//                avoidDesignVO.setCreateName(personnel.getPersonnelName());
+//            } else {
+//                throw new XiaoShiException("未获取到当前登陆人信息");
+//            }
+//            //装载特征集合
+//            Feature feature = featureService.getById(avoidDesignVO.getFeatureId());
+//            avoidDesignVO.setContent(feature.getContent());
+//            avoidDesignVO.setExplainText(feature.getExplainText());
+//            avoidDesignVO.setRightSort(feature.getRightSort());
+//            avoidDesignVO.setRightType(feature.getRightType());
+//            avoidDesignVO.setPatentNo(feature.getPatentNo());
+//        }
+//    }
 }

+ 11 - 10
src/main/java/cn/cslg/pas/service/business/FeatureService.java

@@ -86,12 +86,11 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
             flags.add(";");
             flags.add(",");
             flags.add(",");
-
-            if (splitType.equals(0)) {  //当splitType=0仅拆解主权要
-                partRightSorts = patentRights.stream().filter(item -> item.getType().equals(1)).map(RePatentClaim::getSort).collect(Collectors.toList());
-            } else if (splitType.equals(1)) {  //当splitType=1拆解全部权要
-                partRightSorts = patentRights.stream().map(RePatentClaim::getSort).collect(Collectors.toList());
-            }
+        }
+        if (splitType.equals(0)) {  //当splitType=0仅拆解主权要
+            partRightSorts = patentRights.stream().filter(item -> item.getType().equals(1)).map(RePatentClaim::getSort).collect(Collectors.toList());
+        } else if (splitType.equals(1)) {  //当splitType=1拆解全部权要
+            partRightSorts = patentRights.stream().map(RePatentClaim::getSort).collect(Collectors.toList());
         }
 
         //
@@ -158,6 +157,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
                             feature.setCreateId(personnelVO.getId());
                             feature.setRightType(patentRights.get(i).getType());
                             feature.setTenantId(personnelVO.getTenantId());
+                            feature.setSysOrder(t + 1);
                             featureList.add(feature);
                         }
                         if (featureList.size() > 0) {
@@ -200,6 +200,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
                     feature.setCreateId(personnelVO.getId());
                     feature.setRightType(patentRights.get(i).getType());
                     feature.setTenantId(personnelVO.getTenantId());
+                    feature.setSysOrder(t + 1);
                     featureList.add(feature);
                 }
                 if (featureList.size() > 0) {
@@ -221,9 +222,9 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
         for (int i = 0; i < patentRights.size(); i++) {
             List<Feature> featureList = new ArrayList<>();
             Integer sort = patentRights.get(i).getSort();
-
-            featureList = allFeatures.stream().filter(item -> item.getRightSort().equals(sort)).collect(Collectors.toList());
-
+            if (!allFeatures.isEmpty()) {
+                featureList = allFeatures.stream().filter(item -> sort.equals(item.getRightSort())).collect(Collectors.toList());
+            }
             PatentRightVo patentRightVo = new PatentRightVo();
             patentRightVo.setPatentNo(patentRights.get(i).getPatentNo());
             patentRightVo.setFeatures(featureList);
@@ -232,7 +233,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
             patentRightVo.setType(patentRights.get(i).getType());
             patentRightVo.setContentOut(patentRights.get(i).getContentOut());
             patentRightVo.setProjectId(projectId);
-            patentRightVo.setRightName("权要" + sort);
+            patentRightVo.setRightName("权要" + (sort + 1));
             patentRightVo.setSignPatentNo(patentNo);
             patentRightVos.add(patentRightVo);
         }

+ 13 - 5
src/main/java/cn/cslg/pas/service/business/ReportProjectService.java

@@ -298,7 +298,11 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
         ReportProject reportProject = new ReportProject();
         BeanUtils.copyProperties(reportProjectDTO, reportProject);
         reportProject.setProjectId(project.getId());
-        reportProject.setStatus(0);
+        if (reportProjectDTO.getIfFinish() == true) {
+            reportProject.setStatus(3);
+        } else {
+            reportProject.setStatus(2);
+        }
         reportProject.insert();
 
         /**
@@ -697,9 +701,11 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
             if (assoProjectFileTemp.size() != 0) {
                 List<String> guidTemp = assoProjectFileTemp.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
                 if (guidTemp.size() != 0) {
-                    List<SystemFile> systemFileTemp = systemFiles.stream().filter(item -> guidTemp.contains(item.getGuid())).collect(Collectors.toList());
-                    if (systemFileTemp.size() != 0) {
-                        reportProjectVO.setSystemFileList(systemFileTemp);
+                    if (systemFiles != null) {
+                        List<SystemFile> systemFileTemp = systemFiles.stream().filter(item -> guidTemp.contains(item.getGuid())).collect(Collectors.toList());
+                        if (systemFileTemp.size() != 0) {
+                            reportProjectVO.setSystemFileList(systemFileTemp);
+                        }
                     }
                 }
             }
@@ -803,7 +809,9 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
             //装载报告状态
             SystemDict systemDictStatus = reportTypeList.stream().filter(item -> reportProjectVO.getReportType().equals(Integer.parseInt(item.getValue()))&&item.getType().equals("REPORT_STATE")).findFirst().orElse(null);
             if (systemDict != null) {
-                reportProjectVO.setStatusName(systemDictStatus.getLabel());
+                if (systemDictStatus != null) {
+                    reportProjectVO.setStatusName(systemDictStatus.getLabel());
+                }
             }
 
         }

+ 3 - 3
src/main/java/cn/cslg/pas/service/business/es/EsService.java

@@ -748,11 +748,11 @@ public class EsService {
         //原始数据
         Query q = QueryBuilders.term(t -> t.field("claim.if_origin").value(true));
         //申请号
-        Query q1 = QueryBuilders.term(t -> t.field("app_no").value(patentNo));
+        Query q1 = QueryBuilders.term(t -> t.field("app_no.keyword").value(patentNo));
         //公开号
-        Query q2 = QueryBuilders.term(t -> t.field("public_no").value(patentNo));
+        Query q2 = QueryBuilders.term(t -> t.field("public_no.keyword").value(patentNo));
         //授权号
-        Query q3 = QueryBuilders.term(t -> t.field("grant_no").value(patentNo));
+        Query q3 = QueryBuilders.term(t -> t.field("grant_no.keyword").value(patentNo));
         Query query = QueryBuilders.bool(i -> i.should(q1, q2, q3));
         Query bool = QueryBuilders.bool(i -> i.must(q,query));
         builder.query(bool);

+ 4 - 4
src/test/java/cn/cslg/pas/service/AvoidDesignServiceTests.java

@@ -33,7 +33,7 @@ public class AvoidDesignServiceTests {
             avoidDesignDTO.setContent("内容" + i);
             avoidDesignDTO.setRightSort(i);
             avoidDesignDTO.setRightType(0);
-            avoidDesignDTO.setExpalinText("解释" + i);
+            avoidDesignDTO.setExplainText("解释" + i);
             avoidDesignDTO.setDirection("回避设计方向" + i);
             avoidDesignDTOS.add(avoidDesignDTO);
         }
@@ -58,8 +58,8 @@ public class AvoidDesignServiceTests {
 
     @Test
     public void testGet() throws Exception {
-        Integer projectId = 49;
-        Response response = avoidDesignController.getAvoidDesign(projectId);
-        System.out.println("-----" + response.getData());
+//        Integer projectId = 49;
+//        Response response = avoidDesignController.getAvoidDesign(projectId);
+//        System.out.println("-----" + response.getData());
     }
 }

+ 4 - 4
src/test/java/cn/cslg/pas/service/FeatureTests.java

@@ -42,10 +42,10 @@ public class FeatureTests {
 
     @Test
     public  void test(){
-        LambdaQueryWrapper<Feature> featureLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        featureLambdaQueryWrapper.eq(Feature::getSplitBy, 2);
-        Feature feature = featureService.getOne(featureLambdaQueryWrapper,false);
-        System.out.println(feature);
+//        LambdaQueryWrapper<Feature> featureLambdaQueryWrapper = new LambdaQueryWrapper<>();
+//        featureLambdaQueryWrapper.eq(Feature::getSplitBy, 2);
+//        Feature feature = featureService.getOne(featureLambdaQueryWrapper,false);
+//        System.out.println(feature);
     }
 
     @Test