xiexiang 1 năm trước cách đây
mục cha
commit
857ab73ca2

+ 20 - 10
src/main/java/cn/cslg/pas/common/dto/business/PatentProjectDTO.java

@@ -1,11 +1,9 @@
 package cn.cslg.pas.common.dto.business;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
+import cn.hutool.core.date.DateTime;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
 
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -17,20 +15,32 @@ import java.util.List;
 public class PatentProjectDTO {
     @Schema(description = "名称")
     private String name;
-    @Schema(description = "事件集合")
-    List<ProjectEventDTO>  events;
-    @Schema(description = "处理人id")
-    private Integer headId;
-    @Schema(description = "负责部门id")
-    private Integer departmentId;
     @Schema(description = "委托类型1客户,2部门")
     private Integer entrustType;
-    @Schema(description = "委托id")
+    @Schema(description = "委托方id")
     private Integer entrustId;
+    @Schema(description = "负责人id")
+    private Integer headId;
+    @Schema(description = "负责部门id")
+    private Integer departmentId;
+    @Schema(description = "项目类型(1专题库 2报告 3专利挖掘项目)")
+    private Integer type;
+    @Schema(description = "合同号")
+    private String contractNo;
+    @Schema(description = "内部卷号")
+    private String volumeNumber;
+    @Schema(description = "委案日")
+    private DateTime commissionCaseDay;
+    @Schema(description = "描述")
+    private String description;
     @Schema(description = "是否更新")
     private Boolean ifUpdate;
     @Schema(description = "树结构")
     private List<ProjectTreesDTO> trees;
     @Schema(description = "周期")
     private String crons;
+    @Schema(description = "事件集合")
+    private List<ProjectEventDTO> events;
+    @Schema(description = "文件guids")
+    private List<String> fileGuids;
 }

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

@@ -16,8 +16,8 @@ import java.util.List;
 @Data
 
 public class ProjectTreesDTO {
-    @Schema(description = "1 技术分类 2产品 3产品分类")
-    private Integer type;
+    @Schema(description = "1技术分类 2产品 3产品分类")
+    private Integer treeType;
     @Schema(description = "栏位id")
     private Integer fieldId;
     @Schema(description = "值id")

+ 0 - 6
src/main/java/cn/cslg/pas/common/dto/business/ReportProjectDTO.java

@@ -24,10 +24,4 @@ public class ReportProjectDTO {
     private Integer entrustType;
     @Schema(description = "委托id")
     private Integer entrustId;
-    @Schema(description = "是否更新")
-    private Boolean ifUpdate;
-    @Schema(description = "树结构")
-    private List<ProjectTreesDTO> trees;
-    @Schema(description = "周期")
-    private String crons;
 }

+ 5 - 4
src/main/java/cn/cslg/pas/domain/business/AssoProjectEvent.java

@@ -11,7 +11,7 @@ import org.joda.time.DateTime;
  * 事件项目关联表
  * </p>
  *
- * @author 李仁杰
+ * @author xx
  * @since 2022-10-20
  */
 @Data
@@ -21,16 +21,17 @@ import org.joda.time.DateTime;
 public class AssoProjectEvent extends BaseEntity<AssoProjectEvent> {
     @TableField(value = "project_id")
     private Integer projectId;
+    /**
+     * 0专题库/1报告类型
+     */
     @TableField(value = "project_type")
     private Integer projectType;
     @TableField(value = "matter_id")
     private Integer matterId;
     @TableField(value = "event_id")
     private Integer eventId;
-    @TableField(value = "file_guid")
-    private String fileGuid;
     @TableField(value = "create_id")
-    private Integer createId;
+    private String createId;
     @TableField(value = "create_time")
     private DateTime createTime;
 }

+ 43 - 0
src/main/java/cn/cslg/pas/domain/business/AssoProjectTreeNode.java

@@ -0,0 +1,43 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 专题库、报告与架构关联
+ * @Author xiexiang
+ * @Date 2023/11/2
+ */
+@Data
+@TableName("asso_project_tree_node")
+/*数据库中的表对应的类
+ */
+public class AssoProjectTreeNode extends BaseEntity<AssoProjectTreeNode> {
+    /**
+     * 专题库、报告id
+     */
+    @TableField(value = "project_id")
+    private Integer projectId;
+
+    /**
+     * 树类型
+     * 1技术分类 2产品 3产品分类
+     */
+    @TableField(value = "tree_type")
+    private Integer treeType;
+
+    /**
+     * 树id
+     */
+    @TableField(value = "field_id")
+    private Integer fieldId;
+
+    /**
+     * 树节点id
+     */
+    @TableField(value = "value_id")
+    private Integer valueId;
+}
+

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

@@ -21,13 +21,13 @@ public class PatentProject extends BaseEntity<PatentProject> {
      * 项目id
      */
     @TableField(value = "project_id")
-    private String project_id;
+    private Integer projectId;
 
     /**
      * 是否更新
      */
     @TableField(value = "if_update")
-    private  Boolean ifUpdate;
+    private Boolean ifUpdate;
 
     /**
      * 更新周期

+ 9 - 3
src/main/java/cn/cslg/pas/domain/business/Project.java

@@ -72,15 +72,21 @@ public class Project extends BaseEntity<Project> {
     @TableField(value = "commission_case_day")
     private String commissionCaseDay;
 
-
+    /**
+     * 描述
+     */
     @TableField(value = "description")
     private String description;
 
-
+    /**
+     * 所属租户
+     */
     @TableField(value = "tenant_id")
     private Integer tenantId;
 
-
+    /**
+     * 创建人
+     */
     @TableField(value = "create_id")
     private String createId;
 

+ 14 - 0
src/main/java/cn/cslg/pas/mapper/AssoProjectTreeNodeMapper.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.AssoProjectTreeNode;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 专题库、报告与架构关联表
+ * @Author xiexiang
+ * @Date 2023/11/2
+ */
+@Repository
+public interface AssoProjectTreeNodeMapper extends BaseMapper<AssoProjectTreeNode> {
+}

+ 15 - 0
src/main/java/cn/cslg/pas/service/business/AssoProjectTreeNodeService.java

@@ -0,0 +1,15 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.domain.business.AssoProjectTreeNode;
+import cn.cslg.pas.mapper.AssoProjectTreeNodeMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/11/2
+ */
+@Service
+public class AssoProjectTreeNodeService extends ServiceImpl<AssoProjectTreeNodeMapper, AssoProjectTreeNode> {
+
+}

+ 105 - 22
src/main/java/cn/cslg/pas/service/business/PatentProjectService.java

@@ -1,8 +1,6 @@
 package cn.cslg.pas.service.business;
 
-import cn.cslg.pas.common.dto.business.EventDTO;
-import cn.cslg.pas.common.dto.business.PatentProjectDTO;
-import cn.cslg.pas.common.dto.business.UpdateEventDTO;
+import cn.cslg.pas.common.dto.business.*;
 import cn.cslg.pas.common.model.cronModel.*;
 import cn.cslg.pas.common.model.request.GroupRequest;
 import cn.cslg.pas.common.model.request.QueryRequest;
@@ -13,6 +11,7 @@ import cn.cslg.pas.common.vo.business.EventCountVO;
 import cn.cslg.pas.common.vo.business.EventVO;
 import cn.cslg.pas.domain.business.*;
 
+import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.factorys.reGroupFactory.QueryGroupFactory;
@@ -78,6 +77,12 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
     @Autowired
     private AssoProjectEventService assoProjectEventService;
 
+    @Autowired
+    private AssoProjectTreeNodeService assoProjectTreeNodeService;
+
+    @Autowired
+    private AssoProjectFileService assoProjectFileService;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
@@ -187,27 +192,105 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
     @Transactional(rollbackFor = Exception.class)
     public Object addMessage(Object object) {
         //TODO 校验参数
-        //1 判断是否选择更新并且上传了cron表达式
-        //2校验必传参数是否上传
-
-        //装载project
         PatentProjectDTO patentProjectDTO =(PatentProjectDTO)object;
+        //判断是否选择更新并且上传了cron表达式
+        if (patentProjectDTO.getIfUpdate() != false) {
+            if (patentProjectDTO.getCrons() == null && patentProjectDTO.getCrons().equals("")) {
+                throw new XiaoShiException("选择更新,则cron表达式不能为空!");
+            }
+        }
+        //校验必传参数是否上传
+        if (patentProjectDTO.getHeadId() == null) {
+            throw new XiaoShiException("负责人id不能为空");
+        }
+        //获取登陆人信息 用于设置创建人
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        /**
+         * 装载project
+         */
         Project project = new Project();
-        BeanUtils.copyProperties(patentProjectDTO,project);
-
-        //装载patentProject
-        PatentProject patentProject=new PatentProject();
-        BeanUtils.copyProperties(patentProjectDTO,patentProject);
-
-        //装载事件与project关联
-        AssoProjectEvent assoProjectEvent =new AssoProjectEvent();
-
-        //装载树结构和project关联
-
-
-        //装载和附件关联
-        AssoProjectFile assoProjectFile =new AssoProjectFile();
-        return null;
+        BeanUtils.copyProperties(patentProjectDTO, project);
+        project.setCreateId(personnelVO.getId());
+        project.setTenantId(personnelVO.getTenantId());
+        project.insert();
+        /**
+         * 装载patentProject
+         */
+        PatentProject patentProject = new PatentProject();
+        BeanUtils.copyProperties(patentProjectDTO, patentProject);
+        patentProject.setProjectId(project.getId());
+        patentProject.insert();
+        /**
+         * 装载事件与project关联
+         */
+        List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
+
+        List<ProjectEventDTO> events = patentProjectDTO.getEvents();
+        if (events != null && events.size() != 0) {
+            //遍历传入的事件集合
+            for (ProjectEventDTO projectEventDTO : events) {
+                AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
+                //事件id和处理事项id
+                BeanUtils.copyProperties(projectEventDTO, assoProjectEvent);
+                //项目id
+                assoProjectEvent.setProjectId(project.getId());
+                //创建人
+                assoProjectEvent.setCreateId(personnelVO.getId());
+                //类型为专题库
+                assoProjectEvent.setProjectType(0);
+                assoProjectEvents.add(assoProjectEvent);
+            }
+            if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
+                assoProjectEventService.saveBatch(assoProjectEvents);
+            }
+        }
+        /**
+         * 装载树结构和project关联
+         */
+        List<AssoProjectTreeNode> assoProjectTreeNodes = new ArrayList<>();
+        List<ProjectTreesDTO> trees = patentProjectDTO.getTrees();
+        if (trees != null && trees.size() != 0) {
+            //遍历传入的树
+            for (ProjectTreesDTO projectTreesDTO : trees) {
+                List<Integer> valueIds = projectTreesDTO.getValueIds();
+                //遍历值id集合
+                for (Integer valueId : valueIds) {
+                    AssoProjectTreeNode assoProjectTreeNode = new AssoProjectTreeNode();
+                    BeanUtils.copyProperties(projectTreesDTO, assoProjectTreeNode);
+                    //专题库、报告id
+                    assoProjectTreeNode.setProjectId(project.getId());
+                    //值id
+                    assoProjectTreeNode.setValueId(valueId);
+                    assoProjectTreeNodes.add(assoProjectTreeNode);
+                }
+            }
+            if (assoProjectTreeNodes != null && assoProjectTreeNodes.size() != 0) {
+                assoProjectTreeNodeService.saveBatch(assoProjectTreeNodes);
+            }
+        }
+        /**
+         * 装载和附件关联
+         */
+        List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
+        List<String> fileGuids = patentProjectDTO.getFileGuids();
+        if (fileGuids != null && fileGuids.size() != 0) {
+            for (String fileGuid : fileGuids) {
+                AssoProjectFile assoProjectFile = new AssoProjectFile();
+                assoProjectFile.setProjectId(project.getId());
+                assoProjectFile.setFileGuid(fileGuid);
+                assoProjectFile.setCreateId(personnelVO.getId());
+                assoProjectFiles.add(assoProjectFile);
+            }
+            if (assoProjectFiles != null && assoProjectFiles.size() != 0) {
+                assoProjectFileService.saveBatch(assoProjectFiles);
+            }
+        }
+        return project.getId();
     }
 
     @Override