Explorar o código

Merge remote-tracking branch 'origin/master'

lwhhszx hai 1 ano
pai
achega
218e8dd7db

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

@@ -0,0 +1,26 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+/**
+ * 回避设计DTO
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@Data
+public class AvoidDesignDTO {
+    /**
+     * 对应特征
+     */
+    private Integer featureId;
+    private String content;
+    private String expalinText;
+    private Integer rightSort;
+    private Integer rightType;
+
+    /**
+     * 回避设计方向
+     */
+    private String direction;
+    
+}

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

@@ -0,0 +1,23 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 新增回避设计方案以及特征DTO
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@Data
+public class AvoidDesignInsertDTO {
+    /**
+     * 所属报告
+     */
+    private Integer projectId;
+
+    /**
+     * 特征信息与回避设计方向
+     */
+    private List<AvoidDesignDTO> avoidDesignDTOS;
+}

+ 32 - 0
src/main/java/cn/cslg/pas/common/dto/business/AvoidDesignUpdateDTO.java

@@ -0,0 +1,32 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+/**
+ * 回避设计UpdateDTO
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@Data
+public class AvoidDesignUpdateDTO {
+    /**
+     * id
+     */
+    private Integer id;
+
+    /**
+     * 对应特征
+     */
+    private Integer featureId;
+
+    /**
+     * 所属报告
+     */
+    private Integer projectId;
+
+    /**
+     * 回避设计方向
+     */
+    private String direction;
+    
+}

+ 23 - 0
src/main/java/cn/cslg/pas/common/dto/business/AvoidDesignWholeDTO.java

@@ -0,0 +1,23 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+
+/**
+ * 回避设计方向DTO
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@Data
+public class AvoidDesignWholeDTO {
+    /**
+     * 所属报告
+     */
+    private Integer projectId;
+
+    /**
+     * 内容
+     */
+    private String content;
+    
+}

+ 28 - 0
src/main/java/cn/cslg/pas/common/dto/business/AvoidDesignWholeUpdateDTO.java

@@ -0,0 +1,28 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+
+/**
+ * 回避设计方向DTO
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@Data
+public class AvoidDesignWholeUpdateDTO {
+    /**
+     * id
+     */
+    private Integer id;
+
+    /**
+     * 所属报告
+     */
+    private Integer projectId;
+
+    /**
+     * 内容
+     */
+    private String content;
+    
+}

+ 53 - 0
src/main/java/cn/cslg/pas/common/vo/business/AvoidDesignVO.java

@@ -0,0 +1,53 @@
+package cn.cslg.pas.common.vo.business;
+
+import cn.cslg.pas.domain.business.Feature;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 回避设计VO
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@Data
+public class AvoidDesignVO {
+    /**
+     * id
+     */
+    private Integer id;
+
+    /**
+     * 对应特征
+     */
+    private Integer featureId;
+
+    private Feature feature;
+
+    /**
+     * 所属报告
+     */
+    private Integer projectId;
+
+    /**
+     * 回避设计方向
+     */
+    private String direction;
+
+    /**
+     * 创建人id
+     */
+    private String createId;
+
+    /**
+     * 创建人名称
+     */
+    private String createName;
+
+    /**
+     * 创建时间
+     */
+    private Date CreateTime;
+
+}

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

@@ -0,0 +1,49 @@
+package cn.cslg.pas.common.vo.business;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 回避设计方案总体方向VO
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@Data
+public class AvoidDesignWholeVO {
+    /**
+     * 所属报告
+     */
+    private Integer projectId;
+
+    private String projectName;
+
+    private Integer projectType;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 创建人id
+     */
+    private String createId;
+
+    /**
+     * 创建人名称
+     */
+    private String createName;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 回避设计方向VO
+     */
+    private List<AvoidDesignVO> avoidDesignVOS;
+}

+ 2 - 0
src/main/java/cn/cslg/pas/common/vo/business/ProjectTaskVO.java

@@ -31,6 +31,8 @@ public class ProjectTaskVO {
      */
     private String projectName;
 
+    private Integer projectType;
+
     /**
      * 0标引任务
      * 1项目开卷审核任务

+ 90 - 0
src/main/java/cn/cslg/pas/controller/AvoidDesignController.java

@@ -0,0 +1,90 @@
+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.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;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 回避设计方案
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/avoidDesign")
+@RestController
+public class AvoidDesignController {
+    @Autowired
+    private AvoidDesignService avoidDesignService;
+
+    @Autowired
+    private AvoidDesignWholeService avoidDesignWholeService;
+
+    @Operation(summary = "新增回避设计方案")
+    @PostMapping("/addAvoidDesign")
+    public Response addAvoidDesign(@RequestBody AvoidDesignInsertDTO avoidDesignInsertDTO) throws Exception {
+        if (avoidDesignInsertDTO != null) {
+            List<Integer> ids = new ArrayList<>();
+            try {
+                ids = avoidDesignService.addAvoidDesign(avoidDesignInsertDTO);
+            } 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(ids);
+        } else {
+            return Response.error("入参为null");
+        }
+    }
+
+    @Operation(summary = "查询回避设计方案")
+    @GetMapping("/getAvoidDesign")
+    public Response getAvoidDesign(Integer projectId) throws Exception {
+        AvoidDesignWholeVO avoidDesignWholeVO = avoidDesignWholeService.getAvoidDesignWhole(projectId);
+        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");
+        }
+    }
+
+}

+ 0 - 1
src/main/java/cn/cslg/pas/domain/business/AvoidDesign.java

@@ -15,7 +15,6 @@ import java.util.Date;
 @Data
 @TableName("avoid_design")
 public class AvoidDesign extends BaseEntity<AvoidDesign> {
-
     /**
      * 对应特征
      */

+ 0 - 1
src/main/java/cn/cslg/pas/domain/business/AvoidDesignWhole.java

@@ -15,7 +15,6 @@ import java.util.Date;
 @Data
 @TableName("avoid_design_whole")
 public class AvoidDesignWhole extends BaseEntity<AvoidDesignWhole> {
-
     /**
      * 所属报告
      */

+ 121 - 0
src/main/java/cn/cslg/pas/service/business/AvoidDesignService.java

@@ -1,10 +1,27 @@
 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.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.Feature;
+import cn.cslg.pas.domain.business.ReportProject;
+import cn.cslg.pas.exception.UnLoginException;
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.AvoidDesignMapper;
+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.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * 回避设计Service
  * @Author xiexiang
@@ -12,4 +29,108 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class AvoidDesignService extends ServiceImpl<AvoidDesignMapper, AvoidDesign> {
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private LoginUtils loginUtils;
+
+    @Autowired
+    private FeatureService featureService;
+
+    @Autowired
+    private ReportProjectService reportProjectService;
+
+    /**
+     * 新增回避设计
+     * @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("未登录");
+//        }
+        Integer projectId = avoidDesignInsertDTO.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("projectId不能为空");
+        }
+        //根据projctId查询出专利号
+        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportProject::getProjectId, projectId);
+        List<ReportProject> reportProjects = reportProjectService.list(queryWrapper);
+        String patentNo = "";
+        if (!reportProjects.isEmpty()) {
+            ReportProject reportProject = reportProjects.get(0);
+            patentNo = reportProject.getSignPatentNo();
+        } else {
+            throw new XiaoShiException("未查询到报告专利号");
+        }
+        List<AvoidDesignDTO> avoidDesignDTOS = avoidDesignInsertDTO.getAvoidDesignDTOS();
+        //根据专利号和projectId,删除特征
+        LambdaQueryWrapper<Feature> deleteWrapper =new LambdaQueryWrapper<>();
+        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);
+        //新增插入回避设计方向集合
+        List<AvoidDesign> avoidDesignList = new ArrayList<>();
+        //遍历传入集合
+        for (AvoidDesignDTO avoidDesignDTO : avoidDesignDTOS) {
+            Feature feature = new Feature();
+            feature.setRightSort(avoidDesignDTO.getRightSort());
+            feature.setPatentNo(patentNo);
+            feature.setProjectId(projectId);
+            feature.setContent(avoidDesignDTO.getContent());
+            feature.setExplainText(avoidDesignDTO.getExpalinText());
+//            feature.setCreateId(personnelVO.getId());
+            feature.setCreateId("328");
+            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);
+        }
+        List<Integer> ids = new ArrayList<>();
+        if (!avoidDesignList.isEmpty()) {
+            this.saveBatch(avoidDesignList);
+            ids = avoidDesignList.stream().map(AvoidDesign::getId).collect(Collectors.toList());
+        }
+        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(){
+
+    }
 }

+ 156 - 1
src/main/java/cn/cslg/pas/service/business/AvoidDesignWholeService.java

@@ -1,15 +1,170 @@
 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.model.cronModel.Personnel;
+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.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.stereotype.Service;
+import org.springframework.web.context.annotation.ApplicationScope;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
- * 回避设计方向Service
+ * 回避设计方案总体方向Service
  * @Author xiexiang
  * @Date 2023/12/5
  */
 @Service
 public class AvoidDesignWholeService extends ServiceImpl<AvoidDesignWholeMapper, AvoidDesignWhole> {
+    @Autowired
+    private AvoidDesignService avoidDesignService;
+
+    @Autowired
+    private PermissionService permissionService;
+
+    @Autowired
+    private ProjectTaskService projectTaskService;
+
+    @Autowired
+    private FeatureService featureService;
+
+    /**
+     * 新增回避设计方案总体方向
+     * @param avoidDesignWholeDTO
+     * @return
+     */
+    public Integer addAvoidDesignWhole(AvoidDesignWholeDTO avoidDesignWholeDTO){
+        AvoidDesignWhole avoidDesignWhole = new AvoidDesignWhole();
+        BeanUtils.copyProperties(avoidDesignWholeDTO, avoidDesignWhole);
+//        //获取登录人信息
+//        PersonnelVO personnelVO = new PersonnelVO();
+//        try {
+//            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+//        } catch (Exception e) {
+//            throw new UnLoginException("未登录");
+//        }
+//        avoidDesignWhole.setCreateId(personnelVO.getId());
+        avoidDesignWhole.setCreateId("328");
+        avoidDesignWhole.insert();
+        return avoidDesignWhole.getId();
+    }
+
+    /**
+     * 更新回避设计方案总体方向
+     * @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
+     * @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);
+        }
+        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 (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.setFeature(feature);
+        }
+
+
+    }
 }

+ 168 - 134
src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java

@@ -71,6 +71,9 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     @Autowired
     private FileManagerService fileManagerService;
 
+    @Autowired
+    private ProjectService projectService;
+
 
     /**
      * 项目开卷审核任务
@@ -209,6 +212,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     public void loadProjectTask(List<ProjectTaskVO> projectTaskVOS) throws IOException {
         List<String> createIds = new ArrayList<>();
         List<String> handlerIds = new ArrayList<>();
+        List<Integer> projectIds = new ArrayList<>();
         projectTaskVOS.forEach(
                 item -> {
                     if (item.getCreateId() != null) {
@@ -217,6 +221,9 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                     if (item.getHandler() != null) {
                         handlerIds.add(item.getHandler());
                     }
+                    if (item.getProjectId() != null) {
+                        projectIds.add(item.getProjectId());
+                    }
                 }
         );
         List<Personnel> personnels = new ArrayList<>();
@@ -233,12 +240,17 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
             JSONObject jsonObject = JSONObject.parseObject(res);
             personnels2 = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
         }
+        //根据报告ids查询项目信息
+        List<Project> projects = new ArrayList<>();
+        if (!projectIds.isEmpty()) {
+            projects = this.getProjectInfo(projectIds);
+        }
         //装载信息
         for (ProjectTaskVO projectTaskVO : projectTaskVOS) {
             //装载人员信息
             Personnel personnel = personnels.stream().filter(item -> item.getId().equals(projectTaskVO.getCreateId())).findFirst().orElse(null);
             Personnel personnel2 = personnels2.stream().filter(item -> item.getId().equals(projectTaskVO.getHandler())).findFirst().orElse(null);
-            if(personnel != null){
+            if (personnel != null) {
                 projectTaskVO.setCreateName(personnel.getPersonnelName());
                 projectTaskVO.setHandlerName(personnel2.getPersonnelName());
             } else {
@@ -246,142 +258,145 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
             }
             String name = patentDigProjectFilesService.getProcessName(projectTaskVO.getProcessId());
             projectTaskVO.setProcessName(name);
+            Project project = projects.stream().filter(item -> item.getId().equals(projectTaskVO.getProjectId())).findFirst().orElse(null);
+            projectTaskVO.setProjectName(project.getName());
+            projectTaskVO.setProjectType(project.getType());
         }
     }
 
-    /**
-     * 根据任务id查询任务详情以及处理结果以及审核历史
-     * @param taskId
-     * @return
-     */
-    public TaskDetailsVO queryAuditHistory(Integer taskId) throws IOException {
-        //新建返回VO类
-        TaskDetailsVO taskDetailsVO = new TaskDetailsVO();
-        List<HandleResultFileVO> handleResultFileVOS = new ArrayList<>();
-        List<AuditHistoryVO> auditHistoryVOS = new ArrayList<>();
-        //根据taskId查询此条任务详情
-        ProjectTask currentTask = this.getById(taskId);
-        //根据此条任务详情获取assoTaskId
-        Integer assoTaskId = currentTask.getAssoTaskId();
-        List<ProjectTask> allProjectTasks = new ArrayList<>();
-        if (assoTaskId != null) {
-            //根据assoTaskId获取最初任务的详情
-            LambdaQueryWrapper<ProjectTask> assoTaskWrapper = new LambdaQueryWrapper<>();
-            assoTaskWrapper.eq(ProjectTask::getId, assoTaskId);
-            ProjectTaskVO projectTaskVO = new ProjectTaskVO();
-            ProjectTask assoTask = this.list(assoTaskWrapper).get(0);
-            if (assoTask != null) {
-                //装载最初任务详情
-                BeanUtils.copyProperties(assoTask, projectTaskVO);
-                taskDetailsVO.setProjectTaskVO(projectTaskVO);
-                if (assoTask.getType() == 7) {
-                    //专利挖掘文件任务
-                    LambdaQueryWrapper<PatentDigProjectFiles> queryWrapper = new LambdaQueryWrapper<>();
-                    queryWrapper.eq(PatentDigProjectFiles::getTaskId, assoTask.getId());
-                    List<PatentDigProjectFiles> patentDigProjectFiles = patentDigProjectFilesService.list(queryWrapper);
-                    List<String> fileGuids = new ArrayList<>();
-                    List<SystemFile> systemFiles = new ArrayList<>();
-                    if (!patentDigProjectFiles.isEmpty()) {
-                        fileGuids = patentDigProjectFiles.stream().map(PatentDigProjectFiles::getFileGuid).collect(Collectors.toList());
-                    }
-                    //调用文件系统查询文件信息接口
-                    if (!fileGuids.isEmpty()) {
-                        String res = fileManagerService.getSystemFileFromFMS(fileGuids);
-                        systemFiles = JSONObject.parseArray(res, SystemFile.class);
-                    }
-                    if (!systemFiles.isEmpty()) {
-                        for (PatentDigProjectFiles patentDigProjectFiles1 : patentDigProjectFiles) {
-                            HandleResultFileVO handleResultFileVO = new HandleResultFileVO();
-                            //装载文件信息
-                            SystemFile systemFile = systemFiles.stream().filter(item -> item.getGuid().equals(patentDigProjectFiles1.getFileGuid())).findFirst().orElse(null);
-                            if (systemFile != null) {
-                                BeanUtils.copyProperties(patentDigProjectFiles1, handleResultFileVO);
-                                handleResultFileVO.setGuid(patentDigProjectFiles1.getFileGuid());
-                                handleResultFileVO.setType(systemFile.getType());
-                                handleResultFileVO.setOriginalName(systemFile.getOriginalName());
-                            }
-                            handleResultFileVOS.add(handleResultFileVO);
-                        }
-                    }
-                }
-                //根据assoTaskId查询所有任务的id
-                LambdaQueryWrapper<ProjectTask> allTaskWrapper = new LambdaQueryWrapper<>();
-                allTaskWrapper.eq(ProjectTask::getAssoTaskId, assoTaskId);
-                allProjectTasks = this.list(allTaskWrapper);
-            }
-        }
-        //审核历史返回VO以及集合
-        if (allProjectTasks != null) {
-           for (ProjectTask item : allProjectTasks) {
-               if (item != null) {
-                   if (item.getId() != item.getAssoTaskId()) {
-                       AuditHistoryVO auditHistoryVO = new AuditHistoryVO();
-                       //任务详情VO
-                       ProjectTaskVO auditHistoryTaskVO = new ProjectTaskVO();
-                       BeanUtils.copyProperties(item, auditHistoryTaskVO);
-                       //处理结果VO
-                       TaskHandleResultVO taskHandleResultVO = new TaskHandleResultVO();
-                       LambdaQueryWrapper<TaskHandleResult> queryWrapper = new LambdaQueryWrapper<>();
-                       queryWrapper.eq(TaskHandleResult::getTaskId, item.getId());
-                       List<TaskHandleResult> taskHandleResults = taskHandleResultService.list(queryWrapper);
-                       if (taskHandleResults.size() != 0) {
-                           TaskHandleResult taskHandleResult = taskHandleResults.get(0);
-                           if (taskHandleResult != null) {
-                               BeanUtils.copyProperties(taskHandleResult, taskHandleResultVO);
-                               auditHistoryVO.setProjectTaskVO(auditHistoryTaskVO);
-                               auditHistoryVO.setTaskHandleResultVO(taskHandleResultVO);
-                           }
-                       }
-                       auditHistoryVOS.add(auditHistoryVO);
-                   }
-               }
-            }
-            taskDetailsVO.setAuditHistoryVOS(auditHistoryVOS);
-        }
-        //全部的文件信息(获取所有的任务的id,查出所有的结果id)
-        List<Integer> allTaskIds = allProjectTasks.stream().map(ProjectTask::getId).collect(Collectors.toList());
-        LambdaQueryWrapper<TaskHandleResult> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.in(TaskHandleResult::getTaskId, allTaskIds);
-        List<TaskHandleResult> taskHandleResults = taskHandleResultService.list(queryWrapper);
-        List<Integer> resultIds = new ArrayList<>();
-        if (taskHandleResults != null && !taskHandleResults.isEmpty()) {
-            resultIds = taskHandleResults.stream().map(TaskHandleResult::getId).collect(Collectors.toList());
-        }
-        //根据所有的结果ids查询所有fileGuids
-        if (resultIds != null && !resultIds.isEmpty()) {
-            LambdaQueryWrapper<AssoHandleResultFile> allGuidsWrapper = new LambdaQueryWrapper<>();
-            allGuidsWrapper.in(AssoHandleResultFile::getTaskHandleResultId, resultIds);
-            List<AssoHandleResultFile> assoHandleResultFiles = assoHandleResultFileService.list(allGuidsWrapper);
-            List<String> fileGuids = new ArrayList<>();
-            List<SystemFile> systemFiles = new ArrayList<>();
-            if (!assoHandleResultFiles.isEmpty()) {
-                fileGuids = assoHandleResultFiles.stream().map(AssoHandleResultFile::getFileGuid).collect(Collectors.toList());
-            }
-            //调用文件系统查询文件信息接口
-            if (!fileGuids.isEmpty()) {
-                String res = fileManagerService.getSystemFileFromFMS(fileGuids);
-                systemFiles = JSONObject.parseArray(res, SystemFile.class);
-            }
-            if (!systemFiles.isEmpty()) {
-                for (AssoHandleResultFile assoHandleResultFile : assoHandleResultFiles) {
-                    HandleResultFileVO handleResultFileVO = new HandleResultFileVO();
-                    //装载文件信息
-                    SystemFile systemFile = systemFiles.stream().filter(item -> item.getGuid().equals(assoHandleResultFile.getFileGuid())).findFirst().orElse(null);
-                    if (systemFile != null) {
-                        BeanUtils.copyProperties(assoHandleResultFile, handleResultFileVO);
-                        handleResultFileVO.setGuid(assoHandleResultFile.getFileGuid());
-                        handleResultFileVO.setType(systemFile.getType());
-                        handleResultFileVO.setOriginalName(systemFile.getOriginalName());
-                    }
-                    handleResultFileVOS.add(handleResultFileVO);
-                }
-            }
-        }
-        taskDetailsVO.setSystemFileList(handleResultFileVOS);
-        //装载名称
-        this.loadTaskDetails(taskDetailsVO);
-        return taskDetailsVO;
-    }
+//    /**
+//     * 根据任务id查询任务详情以及处理结果以及审核历史
+//     * @param taskId
+//     * @return
+//     */
+//    public TaskDetailsVO queryAuditHistory(Integer taskId) throws IOException {
+//        //新建返回VO类
+//        TaskDetailsVO taskDetailsVO = new TaskDetailsVO();
+//        List<HandleResultFileVO> handleResultFileVOS = new ArrayList<>();
+//        List<AuditHistoryVO> auditHistoryVOS = new ArrayList<>();
+//        //根据taskId查询此条任务详情
+//        ProjectTask currentTask = this.getById(taskId);
+//        //根据此条任务详情获取assoTaskId
+//        Integer assoTaskId = currentTask.getAssoTaskId();
+//        List<ProjectTask> allProjectTasks = new ArrayList<>();
+//        if (assoTaskId != null) {
+//            //根据assoTaskId获取最初任务的详情
+//            LambdaQueryWrapper<ProjectTask> assoTaskWrapper = new LambdaQueryWrapper<>();
+//            assoTaskWrapper.eq(ProjectTask::getId, assoTaskId);
+//            ProjectTaskVO projectTaskVO = new ProjectTaskVO();
+//            ProjectTask assoTask = this.list(assoTaskWrapper).get(0);
+//            if (assoTask != null) {
+//                //装载最初任务详情
+//                BeanUtils.copyProperties(assoTask, projectTaskVO);
+//                taskDetailsVO.setProjectTaskVO(projectTaskVO);
+//                if (assoTask.getType() == 7) {
+//                    //专利挖掘文件任务
+//                    LambdaQueryWrapper<PatentDigProjectFiles> queryWrapper = new LambdaQueryWrapper<>();
+//                    queryWrapper.eq(PatentDigProjectFiles::getTaskId, assoTask.getId());
+//                    List<PatentDigProjectFiles> patentDigProjectFiles = patentDigProjectFilesService.list(queryWrapper);
+//                    List<String> fileGuids = new ArrayList<>();
+//                    List<SystemFile> systemFiles = new ArrayList<>();
+//                    if (!patentDigProjectFiles.isEmpty()) {
+//                        fileGuids = patentDigProjectFiles.stream().map(PatentDigProjectFiles::getFileGuid).collect(Collectors.toList());
+//                    }
+//                    //调用文件系统查询文件信息接口
+//                    if (!fileGuids.isEmpty()) {
+//                        String res = fileManagerService.getSystemFileFromFMS(fileGuids);
+//                        systemFiles = JSONObject.parseArray(res, SystemFile.class);
+//                    }
+//                    if (!systemFiles.isEmpty()) {
+//                        for (PatentDigProjectFiles patentDigProjectFiles1 : patentDigProjectFiles) {
+//                            HandleResultFileVO handleResultFileVO = new HandleResultFileVO();
+//                            //装载文件信息
+//                            SystemFile systemFile = systemFiles.stream().filter(item -> item.getGuid().equals(patentDigProjectFiles1.getFileGuid())).findFirst().orElse(null);
+//                            if (systemFile != null) {
+//                                BeanUtils.copyProperties(patentDigProjectFiles1, handleResultFileVO);
+//                                handleResultFileVO.setGuid(patentDigProjectFiles1.getFileGuid());
+//                                handleResultFileVO.setType(systemFile.getType());
+//                                handleResultFileVO.setOriginalName(systemFile.getOriginalName());
+//                            }
+//                            handleResultFileVOS.add(handleResultFileVO);
+//                        }
+//                    }
+//                }
+//                //根据assoTaskId查询所有任务的id
+//                LambdaQueryWrapper<ProjectTask> allTaskWrapper = new LambdaQueryWrapper<>();
+//                allTaskWrapper.eq(ProjectTask::getAssoTaskId, assoTaskId);
+//                allProjectTasks = this.list(allTaskWrapper);
+//            }
+//        }
+//        //审核历史返回VO以及集合
+//        if (allProjectTasks != null) {
+//           for (ProjectTask item : allProjectTasks) {
+//               if (item != null) {
+//                   if (item.getId() != item.getAssoTaskId()) {
+//                       AuditHistoryVO auditHistoryVO = new AuditHistoryVO();
+//                       //任务详情VO
+//                       ProjectTaskVO auditHistoryTaskVO = new ProjectTaskVO();
+//                       BeanUtils.copyProperties(item, auditHistoryTaskVO);
+//                       //处理结果VO
+//                       TaskHandleResultVO taskHandleResultVO = new TaskHandleResultVO();
+//                       LambdaQueryWrapper<TaskHandleResult> queryWrapper = new LambdaQueryWrapper<>();
+//                       queryWrapper.eq(TaskHandleResult::getTaskId, item.getId());
+//                       List<TaskHandleResult> taskHandleResults = taskHandleResultService.list(queryWrapper);
+//                       if (taskHandleResults.size() != 0) {
+//                           TaskHandleResult taskHandleResult = taskHandleResults.get(0);
+//                           if (taskHandleResult != null) {
+//                               BeanUtils.copyProperties(taskHandleResult, taskHandleResultVO);
+//                               auditHistoryVO.setProjectTaskVO(auditHistoryTaskVO);
+//                               auditHistoryVO.setTaskHandleResultVO(taskHandleResultVO);
+//                           }
+//                       }
+//                       auditHistoryVOS.add(auditHistoryVO);
+//                   }
+//               }
+//            }
+//            taskDetailsVO.setAuditHistoryVOS(auditHistoryVOS);
+//        }
+//        //全部的文件信息(获取所有的任务的id,查出所有的结果id)
+//        List<Integer> allTaskIds = allProjectTasks.stream().map(ProjectTask::getId).collect(Collectors.toList());
+//        LambdaQueryWrapper<TaskHandleResult> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.in(TaskHandleResult::getTaskId, allTaskIds);
+//        List<TaskHandleResult> taskHandleResults = taskHandleResultService.list(queryWrapper);
+//        List<Integer> resultIds = new ArrayList<>();
+//        if (taskHandleResults != null && !taskHandleResults.isEmpty()) {
+//            resultIds = taskHandleResults.stream().map(TaskHandleResult::getId).collect(Collectors.toList());
+//        }
+//        //根据所有的结果ids查询所有fileGuids
+//        if (resultIds != null && !resultIds.isEmpty()) {
+//            LambdaQueryWrapper<AssoHandleResultFile> allGuidsWrapper = new LambdaQueryWrapper<>();
+//            allGuidsWrapper.in(AssoHandleResultFile::getTaskHandleResultId, resultIds);
+//            List<AssoHandleResultFile> assoHandleResultFiles = assoHandleResultFileService.list(allGuidsWrapper);
+//            List<String> fileGuids = new ArrayList<>();
+//            List<SystemFile> systemFiles = new ArrayList<>();
+//            if (!assoHandleResultFiles.isEmpty()) {
+//                fileGuids = assoHandleResultFiles.stream().map(AssoHandleResultFile::getFileGuid).collect(Collectors.toList());
+//            }
+//            //调用文件系统查询文件信息接口
+//            if (!fileGuids.isEmpty()) {
+//                String res = fileManagerService.getSystemFileFromFMS(fileGuids);
+//                systemFiles = JSONObject.parseArray(res, SystemFile.class);
+//            }
+//            if (!systemFiles.isEmpty()) {
+//                for (AssoHandleResultFile assoHandleResultFile : assoHandleResultFiles) {
+//                    HandleResultFileVO handleResultFileVO = new HandleResultFileVO();
+//                    //装载文件信息
+//                    SystemFile systemFile = systemFiles.stream().filter(item -> item.getGuid().equals(assoHandleResultFile.getFileGuid())).findFirst().orElse(null);
+//                    if (systemFile != null) {
+//                        BeanUtils.copyProperties(assoHandleResultFile, handleResultFileVO);
+//                        handleResultFileVO.setGuid(assoHandleResultFile.getFileGuid());
+//                        handleResultFileVO.setType(systemFile.getType());
+//                        handleResultFileVO.setOriginalName(systemFile.getOriginalName());
+//                    }
+//                    handleResultFileVOS.add(handleResultFileVO);
+//                }
+//            }
+//        }
+//        taskDetailsVO.setSystemFileList(handleResultFileVOS);
+//        //装载名称
+//        this.loadTaskDetails(taskDetailsVO);
+//        return taskDetailsVO;
+//    }
 
 
     /**
@@ -758,4 +773,23 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     public Object updateMessage(Object object) {
         return null;
     }
+
+    public List<Project> getProjectInfo(List<Integer> projectIds){
+        LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(Project::getId, projectIds);
+        List<Project> projects = projectService.list(queryWrapper);
+        if (!projects.isEmpty()) {
+            projects.forEach(item -> {
+                Integer type = item.getType();
+                if (type == 3) {
+                    //挖掘项目
+                    LambdaQueryWrapper<PatentDigProject> queryWrapper1 = new LambdaQueryWrapper<>();
+                    queryWrapper1.eq(PatentDigProject::getProjectId, item.getId());
+                    PatentDigProject patentDigProject = patentDigProjectService.getOne(queryWrapper1, false);
+                    item.setName(patentDigProject.getName());
+                }
+            });
+        }
+        return projects;
+    }
 }

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

@@ -0,0 +1,65 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.dto.business.AvoidDesignDTO;
+import cn.cslg.pas.common.dto.business.AvoidDesignInsertDTO;
+import cn.cslg.pas.common.dto.business.AvoidDesignUpdateDTO;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.controller.AvoidDesignController;
+import cn.cslg.pas.service.business.AvoidDesignService;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/12/5
+ */
+@SpringBootTest
+public class AvoidDesignServiceTests {
+    @Autowired
+    private AvoidDesignService avoidDesignService;
+
+    @Autowired
+    private AvoidDesignController avoidDesignController;
+
+    @Test
+    public void test() throws Exception {
+        List<AvoidDesignDTO> avoidDesignDTOS = new ArrayList<>();
+        for (int i = 6; i < 12; i++) {
+            AvoidDesignDTO avoidDesignDTO = new AvoidDesignDTO();
+            avoidDesignDTO.setContent("内容" + i);
+            avoidDesignDTO.setRightSort(i);
+            avoidDesignDTO.setRightType(0);
+            avoidDesignDTO.setExpalinText("解释" + i);
+            avoidDesignDTO.setDirection("回避设计方向" + i);
+            avoidDesignDTOS.add(avoidDesignDTO);
+        }
+        AvoidDesignInsertDTO avoidDesignInsertDTO = new AvoidDesignInsertDTO();
+        avoidDesignInsertDTO.setProjectId(49);
+
+        avoidDesignInsertDTO.setAvoidDesignDTOS(avoidDesignDTOS);
+        Response response =  avoidDesignController.addAvoidDesign(avoidDesignInsertDTO);
+        System.out.println("-----" + response.getData());
+    }
+
+    @Test
+    public void testUpdate() {
+        AvoidDesignUpdateDTO avoidDesignUpdateDTO = new AvoidDesignUpdateDTO();
+        avoidDesignUpdateDTO.setId(2);
+        avoidDesignUpdateDTO.setFeatureId(1);
+        avoidDesignUpdateDTO.setProjectId(2);
+        avoidDesignUpdateDTO.setDirection("测试更新");
+//        Integer id = avoidDesignService.updateAvoidDesign(avoidDesignUpdateDTO);
+//        System.out.println("testUpdate:" + id);
+    }
+
+    @Test
+    public void testGet() throws Exception {
+        Integer projectId = 49;
+        Response response = avoidDesignController.getAvoidDesign(projectId);
+        System.out.println("-----" + response.getData());
+    }
+}