Przeglądaj źródła

报告,专题库增伤改查

lwhhszx 1 rok temu
rodzic
commit
8821c004e9
54 zmienionych plików z 2124 dodań i 200 usunięć
  1. 101 0
      src/main/java/cn/cslg/pas/common/dto/business/PatentDigProjectDTO.java
  2. 99 0
      src/main/java/cn/cslg/pas/common/dto/business/PatentDigProjectUpdateDTO.java
  3. 34 0
      src/main/java/cn/cslg/pas/common/vo/EntrustVO.java
  4. 1 1
      src/main/java/cn/cslg/pas/common/vo/PersonSelfFieldVO.java
  5. 34 0
      src/main/java/cn/cslg/pas/common/vo/ProductOrCategoryVO.java
  6. 13 0
      src/main/java/cn/cslg/pas/common/vo/business/CronVO.java
  7. 129 0
      src/main/java/cn/cslg/pas/common/vo/business/PatentDigProjectVO.java
  8. 23 1
      src/main/java/cn/cslg/pas/common/vo/business/ReportProjectVO.java
  9. 13 0
      src/main/java/cn/cslg/pas/common/vo/business/SimplePersonVO.java
  10. 8 0
      src/main/java/cn/cslg/pas/controller/CommonController.java
  11. 26 16
      src/main/java/cn/cslg/pas/controller/PatentDigProjectController.java
  12. 3 0
      src/main/java/cn/cslg/pas/controller/PatentProjectController.java
  13. 6 6
      src/main/java/cn/cslg/pas/controller/ReportProjectController.java
  14. 48 0
      src/main/java/cn/cslg/pas/domain/business/AssoProjectPerson.java
  15. 1 1
      src/main/java/cn/cslg/pas/domain/business/AssoProjectScenario.java
  16. 0 2
      src/main/java/cn/cslg/pas/domain/business/Event.java
  17. 3 7
      src/main/java/cn/cslg/pas/domain/business/PatentDigProject.java
  18. 11 0
      src/main/java/cn/cslg/pas/domain/business/RdProject.java
  19. 1 1
      src/main/java/cn/cslg/pas/domain/business/ReportProject.java
  20. 11 0
      src/main/java/cn/cslg/pas/domain/business/SystemDict.java
  21. 38 0
      src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetDepartmentNameOrder.java
  22. 44 0
      src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetEntrustOrder.java
  23. 49 0
      src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetEventOrder.java
  24. 44 0
      src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetMatterOrder.java
  25. 42 0
      src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetProductOrCategoryOrder.java
  26. 47 0
      src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetProjectScenarioOrder.java
  27. 42 0
      src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetReportNumOrder.java
  28. 1 1
      src/main/java/cn/cslg/pas/mapper/AssoProjectMapper.java
  29. 15 0
      src/main/java/cn/cslg/pas/mapper/AssoProjectPersonMapper.java
  30. 2 0
      src/main/java/cn/cslg/pas/mapper/EventMapper.java
  31. 4 0
      src/main/java/cn/cslg/pas/mapper/PatentDigProjectMapper.java
  32. 3 0
      src/main/java/cn/cslg/pas/mapper/ProductMapper.java
  33. 17 0
      src/main/java/cn/cslg/pas/service/business/AssoProjectPersonService.java
  34. 18 0
      src/main/java/cn/cslg/pas/service/business/CommonService.java
  35. 1 0
      src/main/java/cn/cslg/pas/service/business/EventService.java
  36. 17 0
      src/main/java/cn/cslg/pas/service/business/MatterService.java
  37. 48 0
      src/main/java/cn/cslg/pas/service/business/PatentDigProjectFilesService.java
  38. 524 7
      src/main/java/cn/cslg/pas/service/business/PatentDigProjectService.java
  39. 12 2
      src/main/java/cn/cslg/pas/service/business/PatentProjectService.java
  40. 69 15
      src/main/java/cn/cslg/pas/service/business/ReportProjectService.java
  41. 14 0
      src/main/java/cn/cslg/pas/service/business/SystemDictService.java
  42. 4 1
      src/main/java/cn/cslg/pas/service/common/PersonFieldService.java
  43. 28 0
      src/main/java/cn/cslg/pas/service/permissions/PermissionService.java
  44. 225 0
      src/main/resources/jsons/patentDigProject.json
  45. 45 35
      src/main/resources/jsons/patentProject.json
  46. 57 93
      src/main/resources/jsons/reportProject.json
  47. 7 6
      src/main/resources/mapper/AssoProject.xml
  48. 1 1
      src/main/resources/mapper/AssoProjectEvent.xml
  49. 13 0
      src/main/resources/mapper/Event.xml
  50. 26 0
      src/main/resources/mapper/PatentDigProjectMapper.xml
  51. 2 1
      src/main/resources/mapper/PatentProjectMapper.xml
  52. 16 0
      src/main/resources/mapper/ProductMapper.xml
  53. 7 3
      src/main/resources/mapper/ReportProjectMapper.xml
  54. 77 0
      src/test/java/cn/cslg/pas/service/PatentDigProjectServiceTests.java

+ 101 - 0
src/main/java/cn/cslg/pas/common/dto/business/PatentDigProjectDTO.java

@@ -0,0 +1,101 @@
+package cn.cslg.pas.common.dto.business;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+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;
+
+/**
+ * <p>
+ * 专利挖掘DTO类
+ * </p>
+ *
+ * @author 李仁杰
+ * @since 2022-11-41
+ */
+@Data
+/*数据库中的表对应的类
+ */
+public class PatentDigProjectDTO {
+    /**
+     * 名称
+     */
+    private String name;
+
+
+    /**
+     * 研发项目
+     */
+
+    private Integer rdProjectId;
+
+    private  String headId;
+    /**
+     * 研发项目名称
+     */
+    private String rdName;
+
+    /**
+     * 研发项目编号
+     */
+    private String rdnumber;
+
+    /**
+     * 产品阶段
+     */
+    private String productPhase;
+    /**
+     * 产品
+     */
+
+    private String product;
+    /**
+     * 产出
+     */
+    private String output;
+
+    /**
+     * 技术方向
+     */
+    private String technicalDirection;
+
+
+
+    /**
+     * 是否检索
+     */
+    private Boolean ifSearch;
+
+    /**
+     * 相关竞争对手
+     */
+    private String relatedCompetitors;
+
+    /**
+     * 技术关键词
+     */
+    private String technicalKeyword;
+
+    /**
+     *进度
+     */
+    private String process;
+
+    /**
+     *状态
+     */
+    private Integer state;
+    @Schema(description = "参与人id")
+    private List<String> involvedPersonIds;
+    @Schema(description = "描述")
+    private String description;
+    @Schema(description = "事件集合")
+    private List<ProjectEventDTO> events;
+    @Schema(description = "文件guids")
+    private List<String> fileGuids;
+
+}

+ 99 - 0
src/main/java/cn/cslg/pas/common/dto/business/PatentDigProjectUpdateDTO.java

@@ -0,0 +1,99 @@
+package cn.cslg.pas.common.dto.business;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 专利挖掘DTO类
+ * </p>
+ *
+ * @author 李仁杰
+ * @since 2022-11-41
+ */
+@Data
+/*数据库中的表对应的类
+ */
+public class PatentDigProjectUpdateDTO {
+    private Integer id;
+    /**
+     * 名称
+     */
+    private String name;
+
+
+    /**
+     * 研发项目
+     */
+
+    private Integer rdProjectId;
+
+    private  String headId;
+    /**
+     * 研发项目名称
+     */
+    private String rdName;
+
+    /**
+     * 研发项目编号
+     */
+    private String rdnumber;
+
+    /**
+     * 产品阶段
+     */
+    private String productPhase;
+    /**
+     * 产品
+     */
+
+    private String product;
+    /**
+     * 产出
+     */
+    private String output;
+
+    /**
+     * 技术方向
+     */
+    private String technicalDirection;
+
+
+
+    /**
+     * 是否检索
+     */
+    private Boolean ifSearch;
+
+    /**
+     * 相关竞争对手
+     */
+    private String relatedCompetitors;
+
+    /**
+     * 技术关键词
+     */
+    private String technicalKeyword;
+
+    /**
+     *进度
+     */
+    private String process;
+
+    /**
+     *状态
+     */
+    private Integer state;
+    @Schema(description = "参与人id")
+    private List<String> involvedPersonIds;
+    @Schema(description = "描述")
+    private String description;
+    @Schema(description = "事件集合")
+    private List<ProjectEventDTO> events;
+    @Schema(description = "文件guids")
+    private List<String> fileGuids;
+
+
+}

+ 34 - 0
src/main/java/cn/cslg/pas/common/vo/EntrustVO.java

@@ -0,0 +1,34 @@
+package cn.cslg.pas.common.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author 李仁杰
+ * @date 2023-11-12
+ * @description
+ */
+
+@Data
+@Accessors(chain = true)
+public class EntrustVO {
+    /**
+     * Front:
+     * Back:ID
+     */
+    private String entrustId;
+
+    /**
+     * Front:
+     * Back:数据权限名称
+     */
+    private String name;
+
+    /**
+     * Front:
+     * Back:数据权限描述
+     */
+    private Integer entrustType;
+
+
+}

+ 1 - 1
src/main/java/cn/cslg/pas/common/vo/PersonSelfFieldVO.java

@@ -14,7 +14,7 @@ public class PersonSelfFieldVO {
     private Boolean ifSearch;
     private Boolean ifShow;
     private Boolean ifHidden;
-
+    private Boolean defaultHidden;
     private Integer createType;
 
 }

+ 34 - 0
src/main/java/cn/cslg/pas/common/vo/ProductOrCategoryVO.java

@@ -0,0 +1,34 @@
+package cn.cslg.pas.common.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author 李仁杰
+ * @date 2023-11-12
+ * @description
+ */
+
+@Data
+@Accessors(chain = true)
+public class ProductOrCategoryVO {
+    /**
+     * Front:
+     * Back:ID
+     */
+    private String id;
+
+    /**
+     * Front:
+     * Back:数据权限名称
+     */
+    private String name;
+
+    /**
+     * Front:
+     * Back:数据权限描述
+     */
+    private Integer type;
+
+
+}

+ 13 - 0
src/main/java/cn/cslg/pas/common/vo/business/CronVO.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.vo.business;
+
+import lombok.Data;
+
+
+/**
+ * 核心结论vo类
+ */
+@Data
+public class CronVO {
+ private  Integer cronId;
+ private String cronName;
+}

+ 129 - 0
src/main/java/cn/cslg/pas/common/vo/business/PatentDigProjectVO.java

@@ -0,0 +1,129 @@
+package cn.cslg.pas.common.vo.business;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 专利挖局ReportProjectVO类
+ * </p>
+ *
+ * @author 李仁杰
+ * @since 2022-11-10
+ */
+@Data
+/*数据库中的表对应的类
+ */
+public class PatentDigProjectVO {
+
+    @Schema(description = "id")
+    private Integer id;
+
+    @Schema(description = "名称")
+    private String name;
+
+
+    @Schema(description = "负责人")
+    private String headId;
+    @Schema(description = "负责人名称")
+    private String headName;
+    /**
+     * 产出
+     */
+    private String output;
+
+    /**
+     * 技术方向
+     */
+    private String technicalDirection;
+
+
+
+    /**
+     * 是否检索
+     */
+    private Boolean ifSearch;
+
+    /**
+     * 相关竞争对手
+     */
+    private String relatedCompetitors;
+
+    /**
+     * 技术关键词
+     */
+    private String technicalKeyword;
+
+    /**
+     *
+     */
+    private String process;
+
+    /**
+     *
+     */
+    private Integer state;
+
+
+    /**
+     * 研发项目名称
+     */
+    private String rdName;
+
+    /**
+     * 研发项目编号
+     */
+    private String rdnumber;
+
+    /**
+     * 产品阶段
+     */
+    private String productPhase;
+    /**
+     * 产品
+     */
+
+    private String product;
+    /**
+     * 创建人
+     */
+    @Schema(description = "创建人")
+    private String createId;
+
+    /**
+     * 创建人
+     */
+    @Schema(description = "创建人")
+    private String createName;
+
+    @Schema(description= "创建时间")
+    private Date createTime;
+    @Schema(description = "事件id")
+    private List<Integer> eventIds;
+
+    @Schema(description = "事件名称")
+    private List<String> eventNames;
+    @Schema(description = "处理事项id")
+    private List<Integer> matterIds;
+
+    @Schema(description = "处理事项名称")
+    private List<String> matterNames;
+
+    @Schema(description = "应用场景id")
+    private List<Integer> scenarioIds;
+
+
+    @Schema(description = "参与人")
+    private List<SimplePersonVO> involvedPersons;
+    @Schema(description = "应用场景名称")
+    private List<String> scenarioNames;
+    @Schema(description = "描述")
+    private String description;
+    @Schema(description = "文件信息")
+    private List<SystemFile> systemFileList;
+}

+ 23 - 1
src/main/java/cn/cslg/pas/common/vo/business/ReportProjectVO.java

@@ -138,6 +138,8 @@ public class ReportProjectVO {
     @Schema(description = "发文序号")
     private String issueNumber;
 
+    @Schema(description = "报告类型")
+    private Integer reportType;
     /**
      * 发明创造名称
      */
@@ -163,7 +165,9 @@ public class ReportProjectVO {
      * 结论论述
      */
     @Schema(description = "结论论述")
-    private String cron_description;
+    private String cronDescription;
+
+
 
     /**
      * 创建人
@@ -185,6 +189,24 @@ public class ReportProjectVO {
 
     @Schema(description = "事件名称")
     private List<String> eventNames;
+
+    @Schema(description = "应用场景id")
+    private List<Integer> scenarioIds;
+
+    @Schema(description = "应用场景名称")
+    private List<String> scenarioNames;
+
+
+    @Schema(description = "处理事项id")
+    private List<Integer> matterIds;
+
+    @Schema(description = "处理事项名称")
+    private List<String> matterNames;
+
+    @Schema(description = "产品/技术")
+    private String productOrTech;
+    @Schema(description = "核心结论")
+    private List<CronVO> crons;
     @Schema(description = "文件信息")
     private List<SystemFile> systemFileList;
 }

+ 13 - 0
src/main/java/cn/cslg/pas/common/vo/business/SimplePersonVO.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.vo.business;
+
+import lombok.Data;
+
+
+/**
+ * 核心结论vo类
+ */
+@Data
+public class SimplePersonVO {
+ private  String personId;
+ private String personName;
+}

+ 8 - 0
src/main/java/cn/cslg/pas/controller/CommonController.java

@@ -108,4 +108,12 @@ public class CommonController {
         records.setData(assoScenarioMatterService.queryMatterIds(scenarioIds));
         return Response.success(records);
     }
+
+    @GetMapping("/queryCrons")
+    @Operation(summary = "查找核心结论")
+    public Response queryCrons(Integer reportType){
+        Records records = new Records();
+        records.setData(systemDictService.getCrons(reportType));
+        return Response.success(records);
+    }
 }

+ 26 - 16
src/main/java/cn/cslg/pas/controller/PatentDigProjectController.java

@@ -2,16 +2,20 @@ package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.dto.business.EventDTO;
+import cn.cslg.pas.common.dto.business.PatentDigProjectDTO;
+import cn.cslg.pas.common.dto.business.PatentDigProjectUpdateDTO;
 import cn.cslg.pas.common.dto.business.UpdateEventDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.StringGroupRequest;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.domain.business.RdProject;
 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.factorys.businessFactory.BusinessFactory;
+import cn.cslg.pas.service.business.PatentDigProjectService;
 import com.alibaba.fastjson.JSONObject;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
@@ -38,7 +42,7 @@ public class PatentDigProjectController {
     @Operation(summary = "查询专利挖掘项目")
     @PostMapping("/queryPatentDigProject")
     public Response queryPatentDigProject(@RequestBody StringRequest stringRequest) throws Exception {
-        Business business = businessFactory.getClass("reportProjectService");
+        Business business = businessFactory.getClass("patentDigProjectService");
         Records records = (Records) business.queryMessage(stringRequest);
         return Response.success(records);
     }
@@ -46,13 +50,12 @@ public class PatentDigProjectController {
 
     @Operation(summary = "添加专利挖掘项目")
     @PostMapping("/addPatentDigProject")
-    public Response addPatentDigProject(String event, List<MultipartFile> files) throws Exception {
-        if (event != null) {
-            EventDTO eventDTO = JSONObject.parseObject(event, EventDTO.class);
-            Business business = businessFactory.getClass("eventService");
+    public Response addPatentDigProject(@RequestBody PatentDigProjectDTO patentDigProjectDTO) throws Exception {
+        if (patentDigProjectDTO != null) {
+            Business business = businessFactory.getClass("patentDigProjectService");
             Integer id = null;
             try {
-                id = (Integer) business.addMessage(eventDTO, files);
+                id = (Integer) business.addMessage(patentDigProjectDTO);
             } catch (Exception e) {
                 if (e instanceof XiaoShiException) {
                     return Response.error(e.getMessage());
@@ -64,30 +67,29 @@ public class PatentDigProjectController {
             }
             return Response.success(id);
         } else {
-            return Response.error("网络异常");
+            return Response.error("参数错误");
         }
     }
 
     @Operation(summary = "更新专利挖掘项目")
     @PostMapping("/updatePatentDigProject")
-    public Response updatePatentDigProject(String event, List<MultipartFile> files) throws Exception {
-        if (event != null) {
-            UpdateEventDTO updateEventDTO = JSONObject.parseObject(event, UpdateEventDTO.class);
-            Business business = businessFactory.getClass("eventService");
-            business.updateMessage(updateEventDTO, files);
+    public Response updatePatentDigProject(@RequestBody PatentDigProjectUpdateDTO patentDigProjectUpdateDTO) throws Exception {
+        if (patentDigProjectUpdateDTO != null) {
+            Business business = businessFactory.getClass("patentDigProjectService");
+            business.updateMessage(patentDigProjectUpdateDTO);
             return Response.success(1);
         }
         else {
-            return Response.error("网络异常");
+            return Response.error("参数错误");
         }
     }
 
     @Operation(summary = "删除专利挖掘项目")
     @PostMapping("/deletePatentDigProject")
-    public String deletePatentDigProject(@RequestBody List<Integer> ids) throws Exception {
-        Business business = businessFactory.getClass("eventService");
+    public Response deletePatentDigProject(@RequestBody List<Integer> ids) throws Exception {
+        Business business = businessFactory.getClass("patentDigProjectService");
         business.deleteMessage(ids);
-        return Response.success();
+        return Response.success(ids);
     }
 
     @Operation(summary = "分组专利挖掘项目")
@@ -98,4 +100,12 @@ public class PatentDigProjectController {
         return Response.success(records);
     }
 
+    @Operation(summary = "根据号码查询研发项目")
+    @PostMapping("/getRdProjectByNumber")
+    public Response getRdProjectByNumber(String number) throws Exception {
+        Business business = businessFactory.getClass("patentDigProjectService");
+        PatentDigProjectService projectService =(PatentDigProjectService)business;
+      List<RdProject>  rdProjects = projectService.getRdProjectByNumber(number);
+        return Response.success(rdProjects);
+    }
 }

+ 3 - 0
src/main/java/cn/cslg/pas/controller/PatentProjectController.java

@@ -61,6 +61,9 @@ public class PatentProjectController {
                 } else if (e instanceof ConditionException) {
                     return Response.conditionError(e.getMessage());
                 }
+                else{
+                    return Response.error(e.getMessage());
+                }
             }
             return Response.success(id);
         } else {

+ 6 - 6
src/main/java/cn/cslg/pas/controller/ReportProjectController.java

@@ -4,6 +4,7 @@ import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.dto.business.EventDTO;
 import cn.cslg.pas.common.dto.business.ReportProjectDTO;
 import cn.cslg.pas.common.dto.business.UpdateEventDTO;
+import cn.cslg.pas.common.dto.business.UpdateReportProjectDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.StringGroupRequest;
 import cn.cslg.pas.common.model.request.StringRequest;
@@ -70,12 +71,11 @@ public class ReportProjectController {
 
     @Operation(summary = "更新报告")
     @PostMapping("/updateReportProject")
-    public Response updatePatentProject(String event, List<MultipartFile> files) throws Exception {
-        if (event != null) {
-            UpdateEventDTO updateEventDTO = JSONObject.parseObject(event, UpdateEventDTO.class);
+    public Response updatePatentProject(@RequestBody UpdateReportProjectDTO updateReportProjectDTO) throws Exception {
+        if (updateReportProjectDTO != null) {
             Business business = businessFactory.getClass("reportProjectService");
-            business.updateMessage(updateEventDTO, files);
-            return Response.success(1);
+           Integer id =(Integer)business.updateMessage(updateReportProjectDTO);
+            return Response.success(id);
         }
         else {
             return Response.error("网络异常");
@@ -85,7 +85,7 @@ public class ReportProjectController {
     @Operation(summary = "删除报告")
     @PostMapping("/deleteReportProject")
     public String deletePatentProject(@RequestBody List<Integer> ids) throws Exception {
-        Business business = businessFactory.getClass("eventService");
+        Business business = businessFactory.getClass("reportProjectService");
         business.deleteMessage(ids);
         return Response.success();
     }

+ 48 - 0
src/main/java/cn/cslg/pas/domain/business/AssoProjectPerson.java

@@ -0,0 +1,48 @@
+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;
+import org.joda.time.DateTime;
+
+/**
+ * 项目与可见人员关联表
+ * @Author xiexiang
+ * @Date 2023/11/1
+ */
+@Data
+@TableName("asso_project_person")
+public class AssoProjectPerson extends BaseEntity<AssoProjectPerson> {
+
+    /**
+     * 产品id
+     */
+    @TableField(value = "project_id")
+    private Integer projectId;
+
+    /**
+     * 人员id
+     */
+    @TableField(value = "person_id")
+    private String personId;
+
+    /**
+     * 人员角色
+     * 0管理员1查看人员2禁止查看人员
+     */
+    @TableField(value = "role")
+    private Integer role;
+
+    /**
+     * 创建人id
+     */
+    @TableField(value = "create_id")
+    private String createId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private DateTime createTime;
+}

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

@@ -15,7 +15,7 @@ import org.joda.time.DateTime;
  * @since 2022-11-2
  */
 @Data
-@TableName("aso_project_scenario")
+@TableName("asso_project_scenario")
 public class AssoProjectScenario extends BaseEntity<AssoProjectScenario> {
     @TableField(value = "project_id")
     private Integer projectId;

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

@@ -30,8 +30,6 @@ public class Event extends BaseEntity<Event> {
     private Integer scenarioId;
     @TableField(value = "event_date")
     private Date eventDate;
-    @TableField(value = "event_id")
-    private Integer eventId;
     @TableField(value = "description")
     private String description;
     @TableField(value = "tenant_id")

+ 3 - 7
src/main/java/cn/cslg/pas/domain/business/PatentDigProject.java

@@ -27,7 +27,7 @@ public class PatentDigProject extends BaseEntity<PatentDigProject> {
      * 项目id
      */
     @TableField(value = "project_id")
-    private Integer project_id;
+    private Integer projectId;
 
     /**
      * 研发项目id
@@ -47,11 +47,7 @@ public class PatentDigProject extends BaseEntity<PatentDigProject> {
     @TableField(value = "technical_direction")
     private String technicalDirection;
 
-    /**
-     * 产品阶段
-     */
-    @TableField(value = "product_phase")
-    private String productPhase;
+
 
     /**
      * 是否检索
@@ -68,7 +64,7 @@ public class PatentDigProject extends BaseEntity<PatentDigProject> {
     /**
      * 技术关键词
      */
-    @TableField(value = "technicalKeyword")
+    @TableField(value = "technical_keyword")
     private String technicalKeyword;
 
     /**

+ 11 - 0
src/main/java/cn/cslg/pas/domain/business/RdProject.java

@@ -39,6 +39,17 @@ public class RdProject extends BaseEntity<RdProject> {
     private String number;
 
     /**
+     * 产品阶段
+     */
+    @TableField(value = "product_phase")
+    private String productPhase;
+
+    /**
+     * 产品
+     */
+    @TableField(value = "product")
+    private String product;
+    /**
      * 创建人
      */
     @TableField(value = "create_id")

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

@@ -88,6 +88,6 @@ public class ReportProject extends BaseEntity<ReportProject> {
      * 结论论述
      */
     @TableField(value = "cron_description")
-    private String cron_description;
+    private String cronDescription;
 
 }

+ 11 - 0
src/main/java/cn/cslg/pas/domain/business/SystemDict.java

@@ -2,6 +2,7 @@ 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;
 
@@ -29,6 +30,16 @@ public class SystemDict extends BaseEntity<SystemDict> {
      */
     private String type;
 
+    /**
+     * 组合
+     */
+    @TableField("group_type")
+    private String groupType;
+
+    /**
+     * 组名
+     */
+
     public SystemDict() {
         this.label = "-";
         this.value = "-1";

+ 38 - 0
src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetDepartmentNameOrder.java

@@ -0,0 +1,38 @@
+package cn.cslg.pas.factorys.getOrderFactory;
+
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSON;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Slf4j
+@Component
+public class GetDepartmentNameOrder implements GetOrderObject {
+    @Autowired
+    private PermissionService permissionService;
+
+    @Override
+    public String getOrderString(String orderBy, Integer orderType) {
+        List<String> ids = new ArrayList<>();
+        //根据名称查询部门id
+        try {
+            String json = permissionService.getDepartmentOrders(orderType);
+            ids = JSON.parseArray(json, String.class);
+        } catch (Exception e) {
+        }
+        if(ids.size()==0){
+            return "";
+        }
+        String idStr = StringUtils.join(ids, ",");
+        String orderStr = " field(" + orderBy + "," + idStr + ")";
+        String re = orderStr;
+        return re;
+    }
+
+}

+ 44 - 0
src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetEntrustOrder.java

@@ -0,0 +1,44 @@
+package cn.cslg.pas.factorys.getOrderFactory;
+
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.EntrustVO;
+import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSON;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Slf4j
+@Component
+public class GetEntrustOrder implements GetOrderObject {
+    @Autowired
+    private PermissionService permissionService;
+
+    @Override
+    public String getOrderString(String orderBy, Integer orderType) {
+        List<EntrustVO> entrustVOS = new ArrayList<>();
+        //根据名称查询部门id
+        try {
+            String json = permissionService.getEntrustsOrder(orderType);
+            entrustVOS = JSON.parseArray(json, EntrustVO.class);
+        } catch (Exception e) {
+        }
+        if(entrustVOS.size()==0){
+            return "";
+        }
+         StringBuilder stringBuilder =new StringBuilder("(case ");
+        for (int i=0;i<entrustVOS.size();i++){
+
+            stringBuilder.append("when p.entrust_type="+entrustVOS.get(i).getEntrustType()+" and p.entrust_id="+entrustVOS.get(i).getEntrustId()+" then "+i+" ");
+        }
+         stringBuilder.append("else "+(entrustVOS.size()+1)+" end)");
+
+        String re = stringBuilder.toString();
+        return re;
+    }
+
+}

+ 49 - 0
src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetEventOrder.java

@@ -0,0 +1,49 @@
+package cn.cslg.pas.factorys.getOrderFactory;
+
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.domain.business.Event;
+import cn.cslg.pas.mapper.EventMapper;
+import cn.cslg.pas.service.business.CommonService;
+import cn.cslg.pas.service.business.EventService;
+import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSON;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Slf4j
+@Component
+
+public class GetEventOrder implements GetOrderObject {
+    @Autowired
+    private EventMapper eventMapper;
+
+    @Override
+    public String getOrderString(String orderBy, Integer orderType) {
+        List<Integer> ids = new ArrayList<>();
+        //根据名称查询人员id
+        try {
+            ids = eventMapper.getEventOrder(orderType);
+        } catch (Exception e) {
+        }
+        if(ids.size()==0){
+            return  "";
+        }
+      List<String> idsStr =new ArrayList<>();
+        ids.forEach(item->{idsStr.add(item.toString());});
+        idsStr.add("'null'");
+
+        orderBy =" COALESCE("+orderBy+",'null')";
+        String idStr = StringUtils.join(idsStr, ",");
+        String orderStr = " field(" + orderBy + "," + idStr + ")";
+        String re = orderStr;
+
+        return re;
+    }
+
+}

+ 44 - 0
src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetMatterOrder.java

@@ -0,0 +1,44 @@
+package cn.cslg.pas.factorys.getOrderFactory;
+
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.mapper.EventMapper;
+import cn.cslg.pas.service.business.MatterService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Slf4j
+@Component
+
+public class GetMatterOrder implements GetOrderObject {
+    @Autowired
+    private MatterService matterService;
+
+    @Override
+    public String getOrderString(String orderBy, Integer orderType) {
+        List<Integer> ids = new ArrayList<>();
+        //根据名称查询人员id
+        try {
+            ids = matterService.getMatterOrders(orderType);
+        } catch (Exception e) {
+        }
+        if(ids.size()==0){
+            return  "";
+        }
+      List<String> idsStr =new ArrayList<>();
+        ids.forEach(item->{idsStr.add(item.toString());});
+        idsStr.add("'null'");
+
+        orderBy =" COALESCE("+orderBy+",'null')";
+        String idStr = StringUtils.join(idsStr, ",");
+        String orderStr = " field(" + orderBy + "," + idStr + ")";
+        String re = orderStr;
+
+        return re;
+    }
+
+}

+ 42 - 0
src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetProductOrCategoryOrder.java

@@ -0,0 +1,42 @@
+package cn.cslg.pas.factorys.getOrderFactory;
+
+import cn.cslg.pas.common.vo.EntrustVO;
+import cn.cslg.pas.common.vo.ProductOrCategoryVO;
+import cn.cslg.pas.mapper.ProductMapper;
+import cn.cslg.pas.service.business.ProductService;
+import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSON;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Slf4j
+@Component
+public class GetProductOrCategoryOrder implements GetOrderObject {
+@Autowired
+private ProductMapper productMapper;
+
+    @Override
+    public String getOrderString(String orderBy, Integer orderType) {
+        List<ProductOrCategoryVO> productOrCategoryVOS = new ArrayList<>();
+        //根据名称查询部门id
+           productOrCategoryVOS = productMapper.getProductOrCategoryNameOrder(orderType);
+        if(productOrCategoryVOS.size()==0){
+            return "";
+        }
+         StringBuilder stringBuilder =new StringBuilder("(case ");
+        for (int i=0;i<productOrCategoryVOS.size();i++){
+
+            stringBuilder.append("when aspt.tree_type="+productOrCategoryVOS.get(i).getType()+" and aspt.field_id="+productOrCategoryVOS.get(i).getId()+" then "+i+" ");
+        }
+         stringBuilder.append("else "+(productOrCategoryVOS.size()+1)+" end)");
+
+        String re = stringBuilder.toString();
+        return re;
+    }
+
+}

+ 47 - 0
src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetProjectScenarioOrder.java

@@ -0,0 +1,47 @@
+package cn.cslg.pas.factorys.getOrderFactory;
+
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.service.business.SystemDictService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Slf4j
+@Component
+public class GetProjectScenarioOrder implements GetOrderObject {
+    @Autowired
+    private SystemDictService systemDictService;
+
+    @Override
+    public String getOrderString(String orderBy, Integer orderType) {
+        List<String> ids = new ArrayList<>();
+        //根据名称查询应用场景id
+
+          ids = systemDictService.getScenarioOrderIds(orderType);
+   if(ids.size()==0){
+       return "";
+   }
+        List<String> idsStr =new ArrayList<>();
+        ids.forEach(item->{idsStr.add(item.toString());});
+        idsStr.add("'null'");
+
+        orderBy =" COALESCE("+orderBy+",'null')";
+        String idStr = StringUtils.join(idsStr, ",");
+        String orderStr = " field(" + orderBy + "," + idStr + ")";
+        if(orderType.equals(0)){
+
+            orderStr+=" asc";
+        }
+        else {
+            orderStr+=" desc";
+        }
+        String re = orderStr;
+
+        return re;
+    }
+
+}

+ 42 - 0
src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetReportNumOrder.java

@@ -0,0 +1,42 @@
+package cn.cslg.pas.factorys.getOrderFactory;
+
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.mapper.AssoProjectEventMapper;
+import cn.cslg.pas.mapper.AssoProjectMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Slf4j
+@Component
+public class GetReportNumOrder implements GetOrderObject {
+    @Autowired
+    private AssoProjectMapper assoProjectMapper;
+
+    @Override
+    public String getOrderString(String orderBy, Integer orderType) {
+        List<Integer> ids = new ArrayList<>();
+        String orderTypeStr ="";
+        //根据名称查询人员id
+            if (orderType.equals(0)) {
+                orderTypeStr=" asc";
+            } else {
+                orderTypeStr= " desc";
+            }
+          ids = assoProjectMapper.getReportProjectNumOrder();
+        if(ids.size()==0){
+            return "";
+        }
+
+        String idStr = StringUtils.join(ids, ",");
+        String orderStr = " field(" + orderBy + "," + idStr + ") " +orderTypeStr;
+        String re = orderStr;
+
+        return re;
+    }
+
+}

+ 1 - 1
src/main/java/cn/cslg/pas/mapper/AssoProjectMapper.java

@@ -17,5 +17,5 @@ import java.util.List;
 @Repository
 public interface AssoProjectMapper extends BaseMapper<AssoProject> {
     public List<ReportCountVO> getReportCount(List<Integer> patentProjectIds);
-    public List<Integer> getReportProjectNumOrder(String orderType);
+    public List<Integer> getReportProjectNumOrder();
 }

+ 15 - 0
src/main/java/cn/cslg/pas/mapper/AssoProjectPersonMapper.java

@@ -0,0 +1,15 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.AssoProductPerson;
+import cn.cslg.pas.domain.business.AssoProjectPerson;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 项目与人员关联Mapper层
+ * @Author lirj
+ * @Date 2023/11/10
+ */
+@Repository
+public interface AssoProjectPersonMapper extends BaseMapper<AssoProjectPerson> {
+}

+ 2 - 0
src/main/java/cn/cslg/pas/mapper/EventMapper.java

@@ -4,6 +4,7 @@ import cn.cslg.pas.common.vo.business.EventVO;
 import cn.cslg.pas.domain.business.Event;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -20,4 +21,5 @@ public interface EventMapper extends BaseMapper<Event> {
     public List<String> getGroups(List<String> sqls,String tableName,String groupField,String selectField);
     public Long getEventCount(String sql);
     public Long getGroupsCount(List<String> sqls,String tableName,String groupField,String selectField);
+    public List<Integer> getEventOrder(@Param("orderType") Integer orderType);
 }

+ 4 - 0
src/main/java/cn/cslg/pas/mapper/PatentDigProjectMapper.java

@@ -1,6 +1,8 @@
 package cn.cslg.pas.mapper;
 
 
+import cn.cslg.pas.common.vo.business.PatentDigProjectVO;
+import cn.cslg.pas.common.vo.business.PatentProjectVO;
 import cn.cslg.pas.domain.business.PatentDigProject;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
@@ -15,5 +17,7 @@ import java.util.List;
  */
 @Repository
 public interface PatentDigProjectMapper extends BaseMapper<PatentDigProject> {
+    public List<PatentDigProjectVO> getPatentDigProject(String sql1, String sql2, String sql3);
+    public Long getPatentDigCount(String sql1);
 
 }

+ 3 - 0
src/main/java/cn/cslg/pas/mapper/ProductMapper.java

@@ -1,8 +1,10 @@
 package cn.cslg.pas.mapper;
 
+import cn.cslg.pas.common.vo.ProductOrCategoryVO;
 import cn.cslg.pas.common.vo.business.ProductVO;
 import cn.cslg.pas.domain.business.Product;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -16,4 +18,5 @@ import java.util.List;
 public interface ProductMapper extends BaseMapper<Product> {
     List<ProductVO> getProduct(String sql1,String sql2,String sql3);
     Long getProductCount(String sql);
+    List<ProductOrCategoryVO> getProductOrCategoryNameOrder(@Param("orderType") Integer orderType);
 }

+ 17 - 0
src/main/java/cn/cslg/pas/service/business/AssoProjectPersonService.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.domain.business.AssoProductPerson;
+import cn.cslg.pas.domain.business.AssoProjectPerson;
+import cn.cslg.pas.mapper.AssoProductPersonMapper;
+import cn.cslg.pas.mapper.AssoProjectPersonMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 项目与可见人员关联表Service层
+ * @Author lrj
+ * @Date 2023/11/10
+ */
+@Service
+public class AssoProjectPersonService extends ServiceImpl<AssoProjectPersonMapper, AssoProjectPerson> {
+}

+ 18 - 0
src/main/java/cn/cslg/pas/service/business/CommonService.java

@@ -4,8 +4,11 @@ import cn.cslg.pas.common.model.common.QueryCondition;
 import cn.cslg.pas.common.model.cronModel.GroupConfig;
 import cn.cslg.pas.common.vo.ConditionVO;
 import cn.cslg.pas.common.vo.EntityVO;
+import cn.cslg.pas.domain.business.Event;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.io.*;
@@ -20,6 +23,8 @@ import java.util.List;
 @Service
 @Slf4j
 public class CommonService {
+    @Autowired
+    private EventService eventService;
     /**
      * 根据获得文件json
      *
@@ -65,4 +70,17 @@ public class CommonService {
         });
         return entityVOS;
     }
+
+    public  List<Integer> getEventOrders(Integer orderType){
+        LambdaQueryWrapper<Event> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.select(Event::getId);
+        if (orderType.equals(0)) {
+            queryWrapper.orderByAsc(Event::getName);
+        } else {
+            queryWrapper.orderByDesc(Event::getName);
+        }
+        java.util.function.Function<Object, Integer> f = (o -> Integer.parseInt(o.toString()));
+        List<Integer> ids = eventService.listObjs(queryWrapper, f);
+        return ids;
+    }
 }

+ 1 - 0
src/main/java/cn/cslg/pas/service/business/EventService.java

@@ -432,4 +432,5 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
     }
 
 
+
 }

+ 17 - 0
src/main/java/cn/cslg/pas/service/business/MatterService.java

@@ -1,11 +1,15 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.domain.business.Event;
 import cn.cslg.pas.domain.business.Matter;
 import cn.cslg.pas.mapper.MatterMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @Author xiexiang
  * @Date 2023/11/7
@@ -13,4 +17,17 @@ import org.springframework.stereotype.Service;
 @Slf4j
 @Service
 public class MatterService extends ServiceImpl<MatterMapper, Matter> {
+
+    public List<Integer> getMatterOrders(Integer orderType){
+        LambdaQueryWrapper<Matter> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.select(Matter::getId);
+        if (orderType.equals(0)) {
+            queryWrapper.orderByAsc(Matter::getName);
+        } else {
+            queryWrapper.orderByDesc(Matter::getName);
+        }
+        java.util.function.Function<Object, Integer> f = (o -> Integer.parseInt(o.toString()));
+        List<Integer> ids = this.listObjs(queryWrapper, f);
+        return ids;
+    }
 }

+ 48 - 0
src/main/java/cn/cslg/pas/service/business/PatentDigProjectFilesService.java

@@ -1,11 +1,21 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.business.PatentDigProjectDTO;
+import cn.cslg.pas.common.dto.business.ReportProjectDTO;
 import cn.cslg.pas.common.model.request.GroupRequest;
 import cn.cslg.pas.common.model.request.QueryRequest;
+import cn.cslg.pas.domain.business.PatentDigProject;
 import cn.cslg.pas.domain.business.PatentDigProjectFiles;
+import cn.cslg.pas.domain.business.Project;
+import cn.cslg.pas.domain.business.RdProject;
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.mapper.PatentDigProjectFilesMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.experimental.Accessors;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -18,6 +28,11 @@ import java.util.List;
  */
 @Service
 public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFilesMapper, PatentDigProjectFiles> implements Business {
+
+    @Autowired
+    private  RdProjectService rdProjectService;
+
+
     @Override
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
         return null;
@@ -45,6 +60,39 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
 
     @Override
     public Object addMessage(Object object) {
+        PatentDigProjectDTO patentDigProjectDTO = (PatentDigProjectDTO) object;
+
+        PatentDigProject patentDigProject = new PatentDigProject();
+        BeanUtils.copyProperties(patentDigProjectDTO, patentDigProject);
+        Project project =new Project();
+        project.setTenantId(1);
+        project.setType(3);
+        project.setCreateId("328");
+          project.insert();
+        patentDigProject.setProjectId(project.getId());
+
+        //判断rdProjectId是否为空
+        if (patentDigProjectDTO.getRdProjectId() == null) {
+            //根据编号查询研发项目
+            if (patentDigProjectDTO.getRdnumber() != null) {
+                //根据研发项目编号查询研发项目
+                LambdaQueryWrapper<RdProject> queryWrapper =new LambdaQueryWrapper<>();
+                queryWrapper.eq(RdProject::getNumber,patentDigProjectDTO.getRdnumber());
+              List<RdProject> rdProjects =  rdProjectService.list(queryWrapper);
+              if(rdProjects.size()!=0){
+                  patentDigProject.setRdProjectId(rdProjects.get(0).getId());
+              }
+else{
+    RdProject rdProject =new RdProject();
+    rdProject.setCreateId("328");
+    rdProject.setTenantId(1);
+    rdProject.setNumber(patentDigProjectDTO.getRdnumber());
+    rdProject.setProductPhase(patentDigProjectDTO.getProductPhase());
+              }
+            }
+
+        }
+
         return null;
     }
 

+ 524 - 7
src/main/java/cn/cslg/pas/service/business/PatentDigProjectService.java

@@ -1,23 +1,92 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.business.PatentDigProjectDTO;
+import cn.cslg.pas.common.dto.business.PatentDigProjectUpdateDTO;
+import cn.cslg.pas.common.dto.business.ProjectEventDTO;
+import cn.cslg.pas.common.model.cronModel.Personnel;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.model.cronModel.SystemFile;
 import cn.cslg.pas.common.model.request.GroupRequest;
 import cn.cslg.pas.common.model.request.QueryRequest;
-import cn.cslg.pas.domain.business.PatentDigProject;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.vo.business.PatentDigProjectVO;
+import cn.cslg.pas.common.vo.business.PatentProjectVO;
+import cn.cslg.pas.common.vo.business.SimplePersonVO;
+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.mapper.PatentDigProjectMapper;
+import cn.cslg.pas.service.common.FileManagerService;
+import cn.cslg.pas.service.permissions.PermissionService;
+import cn.cslg.pas.service.query.FormatQueryService;
+import com.alibaba.fastjson.JSONObject;
+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 org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
-public class PatentDigProjectService  extends ServiceImpl<PatentDigProjectMapper, PatentDigProject> implements Business {
+public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper, PatentDigProject> implements Business {
+    @Autowired
+    private RdProjectService rdProjectService;
+    @Autowired
+    private AssoProjectFileService assoProjectFileService;
+    @Autowired
+    private ProjectService projectService;
+    @Autowired
+    private FormatQueryService formatQueryService;
+    @Autowired
+    private PatentDigProjectMapper patentDigProjectMapper;
+
+    @Autowired
+    private FileManagerService fileManagerService;
+    @Autowired
+    private PermissionService permissionService;
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private LoginUtils loginUtils;
+    @Autowired
+    private AssoProjectEventService assoProjectEventService;
+
+    @Autowired
+    private EventService eventService;
+
+    @Autowired
+    private AssoProjectPersonService assoProjectPersonService;
+
+    @Autowired
+    private MatterService matterService;
+    @Autowired
+    private ScenarioService scenarioService;
+
     @Override
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
-        return null;
+        List<String> sqls = formatQueryService.reSqls(queryRequest, "patentDigProject");
+        //根据sql查询专题库信息
+        List<PatentDigProjectVO> patentProjectVOS = patentDigProjectMapper.getPatentDigProject(sqls.get(0), sqls.get(1), sqls.get(2));
+        Long total = patentDigProjectMapper.getPatentDigCount(sqls.get(0));
+        //装载专利数据库信息
+        this.loadPatentDigProject(patentProjectVOS);
+        Records records = new Records();
+        records.setCurrent(queryRequest.getCurrent());
+        records.setSize(queryRequest.getSize());
+        records.setData(patentProjectVOS);
+        records.setTotal(total);
+        return records;
     }
 
     @Override
@@ -27,7 +96,24 @@ public class PatentDigProjectService  extends ServiceImpl<PatentDigProjectMapper
 
     @Override
     public Object deleteMessage(List<Integer> ids) throws IOException {
-        return null;
+        if (ids == null || ids.size() == 0) {
+            throw new XiaoShiException("ids不能为空");
+        }
+        //根据projectId 删除专利挖掘项目
+        LambdaQueryWrapper<PatentDigProject> digProjectQueryWrapper = new LambdaQueryWrapper<>();
+        digProjectQueryWrapper.in(PatentDigProject::getProjectId, ids);
+        this.remove(digProjectQueryWrapper);
+
+        //根据projectId 删除相关文件
+        LambdaQueryWrapper<AssoProjectFile> deleteFileWrapper = new LambdaQueryWrapper<>();
+        deleteFileWrapper.in(AssoProjectFile::getProjectId, ids);
+        assoProjectFileService.remove(deleteFileWrapper);
+
+        //TODO 删除流程文件
+
+        //根据专利挖掘项目删除项目
+        projectService.removeBatchByIds(ids);
+        return ids;
     }
 
     @Override
@@ -41,12 +127,443 @@ public class PatentDigProjectService  extends ServiceImpl<PatentDigProjectMapper
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Object addMessage(Object object) {
-        return null;
+        //获取登陆人信息 用于设置创建人
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        String userId = personnelVO.getId();
+        PatentDigProjectDTO patentDigProjectDTO = (PatentDigProjectDTO) object;
+        PatentDigProject patentDigProject = new PatentDigProject();
+        BeanUtils.copyProperties(patentDigProjectDTO, patentDigProject);
+        Project project = new Project();
+        project.setTenantId(personnelVO.getTenantId());
+        project.setType(3);
+        project.setHeadId(patentDigProjectDTO.getHeadId());
+        project.setCreateId(personnelVO.getId());
+        project.setDescription(patentDigProjectDTO.getDescription());
+        project.insert();
+        patentDigProject.setProjectId(project.getId());
+
+        //判断rdProjectId是否为空
+        if (patentDigProjectDTO.getRdProjectId() == null) {
+            //根据编号查询研发项目
+            if (patentDigProjectDTO.getRdnumber() != null) {
+                //根据研发项目编号查询研发项目
+                LambdaQueryWrapper<RdProject> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(RdProject::getNumber, patentDigProjectDTO.getRdnumber());
+                List<RdProject> rdProjects = rdProjectService.list(queryWrapper);
+                if (rdProjects.size() != 0) {
+                    patentDigProject.setRdProjectId(rdProjects.get(0).getId());
+                } else {
+                    RdProject rdProject = new RdProject();
+                    rdProject.setName(patentDigProjectDTO.getRdName());
+                    rdProject.setCreateId(userId);
+                    rdProject.setTenantId(personnelVO.getTenantId());
+                    rdProject.setNumber(patentDigProjectDTO.getRdnumber());
+                    rdProject.setProductPhase(patentDigProjectDTO.getProductPhase());
+                    rdProject.setProduct(patentDigProjectDTO.getProduct());
+                    rdProject.insert();
+                    patentDigProject.setRdProjectId(rdProject.getId());
+                }
+            }
+
+        }
+        patentDigProject.setState(1);
+        patentDigProject.setTenantId(personnelVO.getTenantId());
+        patentDigProject.insert();
+
+        /**
+         * 装载和附件关联
+         */
+        List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
+        List<String> fileGuids = patentDigProjectDTO.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);
+            }
+        }
+
+        /**
+         * 装载事件与project关联
+         */
+        List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
+
+        List<ProjectEventDTO> events = patentDigProjectDTO.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);
+        }
+        /**
+         *装载参与人
+         */
+
+        if (patentDigProjectDTO.getInvolvedPersonIds() != null && patentDigProjectDTO.getInvolvedPersonIds().size() != 0) {
+            List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
+            patentDigProjectDTO.getInvolvedPersonIds().forEach(item -> {
+                AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
+                assoProjectPerson.setPersonId(item);
+                assoProjectPerson.setRole(1);
+                assoProjectPerson.setProjectId(project.getId());
+                assoProjectPerson.setCreateId(userId);
+                assoProjectPersonList.add(assoProjectPerson);
+            });
+            assoProjectPersonService.saveBatch(assoProjectPersonList);
+        }
+
+        return patentDigProject.getId();
     }
 
     @Override
     public Object updateMessage(Object object) {
-        return null;
+        //获取登陆人信息 用于设置创建人
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        String userId = personnelVO.getId();
+        PatentDigProjectUpdateDTO projectUpdateDTO = (PatentDigProjectUpdateDTO) object;
+        PatentDigProject patentDigProject = new PatentDigProject();
+        BeanUtils.copyProperties(projectUpdateDTO, patentDigProject);
+        Project project = projectService.getById(projectUpdateDTO.getId());
+        project.setHeadId(projectUpdateDTO.getHeadId());
+        project.setDescription(projectUpdateDTO.getDescription());
+        project.updateById();
+
+
+        //根据projectId查询专利挖掘项目
+        LambdaQueryWrapper<PatentDigProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PatentDigProject::getProjectId, project.getId());
+        List<PatentDigProject> patentDigProjects = this.list(queryWrapper);
+
+
+        if (patentDigProjects.size() != 0) {
+            //装载专利挖掘项目基本信息
+            patentDigProject = patentDigProjects.get(0);
+            patentDigProject.setName(projectUpdateDTO.getName());
+            patentDigProject.setIfSearch(projectUpdateDTO.getIfSearch());
+            patentDigProject.setOutput(projectUpdateDTO.getOutput());
+            patentDigProject.setTechnicalDirection(projectUpdateDTO.getTechnicalDirection());
+            patentDigProject.setRelatedCompetitors(projectUpdateDTO.getRelatedCompetitors());
+            patentDigProject.setTechnicalKeyword(projectUpdateDTO.getTechnicalKeyword());
+            patentDigProject.setProcess(projectUpdateDTO.getProcess());
+
+            //装载研发项目基本信息
+            //判断rdProjectId是否为空
+            if (projectUpdateDTO.getRdProjectId() == null) {
+                //根据编号查询研发项目
+                if (projectUpdateDTO.getRdnumber() != null) {
+                    //根据研发项目编号查询研发项目
+                    LambdaQueryWrapper<RdProject> rdQueryWrapper = new LambdaQueryWrapper<>();
+                    rdQueryWrapper.eq(RdProject::getNumber, projectUpdateDTO.getRdnumber());
+                    List<RdProject> rdProjects = rdProjectService.list(rdQueryWrapper);
+                    if (rdProjects.size() != 0) {
+                        rdProjects.get(0).setName(projectUpdateDTO.getRdName());
+                        rdProjects.get(0).setProductPhase(projectUpdateDTO.getProductPhase());
+                        rdProjects.get(0).setProduct(projectUpdateDTO.getProduct());
+                        rdProjects.get(0).updateById();
+                        patentDigProject.setRdProjectId(rdProjects.get(0).getId());
+                    } else {
+                        RdProject rdProject = new RdProject();
+                        rdProject.setName(projectUpdateDTO.getRdName());
+                        rdProject.setCreateId(userId);
+                        rdProject.setTenantId(personnelVO.getTenantId());
+                        rdProject.setNumber(projectUpdateDTO.getRdnumber());
+                        rdProject.setProductPhase(projectUpdateDTO.getProductPhase());
+                        rdProject.setProduct(projectUpdateDTO.getProduct());
+                        rdProject.insert();
+                        patentDigProject.setRdProjectId(rdProject.getId());
+                    }
+                }
+
+            }
+
+        }
+
+        //移除和附件关联
+        LambdaQueryWrapper<AssoProjectFile> assoQueryWrapper = new LambdaQueryWrapper<>();
+        assoQueryWrapper.eq(AssoProjectFile::getProjectId, projectUpdateDTO.getId());
+        assoProjectFileService.remove(assoQueryWrapper);
+
+        /**
+         * 装载和附件关联
+         */
+        List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
+        List<String> fileGuids = projectUpdateDTO.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);
+            }
+        }
+
+        //删除和事件关联
+        LambdaQueryWrapper<AssoProjectEvent> assoEventQueryWrapper = new LambdaQueryWrapper<>();
+        assoEventQueryWrapper.eq(AssoProjectEvent::getProjectId, projectUpdateDTO.getId());
+        assoProjectEventService.remove(assoEventQueryWrapper);
+        /**
+         * 装载事件与project关联
+         */
+        List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
+
+        List<ProjectEventDTO> events = projectUpdateDTO.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);
+            }
+        }
+
+
+            LambdaQueryWrapper<AssoProjectPerson> assoProjectPersonLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            assoProjectPersonLambdaQueryWrapper.eq(AssoProjectPerson::getProjectId, projectUpdateDTO.getId());
+            assoProjectPersonService.remove(assoProjectPersonLambdaQueryWrapper);
+
+            /**
+             *装载参与人
+             */
+            if (projectUpdateDTO.getInvolvedPersonIds() != null && projectUpdateDTO.getInvolvedPersonIds().size() != 0) {
+                List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
+                projectUpdateDTO.getInvolvedPersonIds().forEach(item -> {
+                    AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
+                    assoProjectPerson.setPersonId(item);
+                    assoProjectPerson.setRole(1);
+                    assoProjectPerson.setProjectId(project.getId());
+                    assoProjectPerson.setCreateId(userId);
+                    assoProjectPersonList.add(assoProjectPerson);
+                });
+                assoProjectPersonService.saveBatch(assoProjectPersonList);
+            }
+            return projectUpdateDTO.getId();
+        }
+
+
+        public List<RdProject> getRdProjectByNumber (String number){
+            if (number != null) {
+                number = "";
+            }
+            LambdaQueryWrapper<RdProject> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.like(RdProject::getNumber, number);
+            List<RdProject> rdProjects = rdProjectService.list(queryWrapper);
+            return rdProjects;
+        }
+
+
+        public void loadPatentDigProject (List < PatentDigProjectVO > patentDigProjectVOS) throws IOException {
+            List<String> createIds = new ArrayList<>();
+            List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
+            List<Integer> ids = new ArrayList<>();
+            List<String> guids = new ArrayList<>();
+            List<SystemFile> systemFiles = new ArrayList<>();
+            List<Personnel> personnels = new ArrayList<>();
+            List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
+            List<Event> events = new ArrayList<>();
+            List<Scenario> scenarios = new ArrayList<>();
+            List<Matter> matters = new ArrayList<>();
+            List<AssoProjectPerson> assoProjectPersonList =new ArrayList<>();
+            //获得创建人id集合
+            patentDigProjectVOS.forEach(
+                    item -> {
+
+                        if (item.getCreateId() != null) {
+                            createIds.add(item.getCreateId());
+                        }
+
+                        if (item.getHeadId() != null) {
+                            createIds.add(item.getHeadId());
+                        }
+                        if (item.getId() != null) {
+                            ids.add(item.getId());
+                        }
+
+                    }
+            );
+
+
+            if (ids.size() != 0) {
+                //根据事件id获得专利数据库文件关联表
+                LambdaQueryWrapper<AssoProjectFile> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.in(AssoProjectFile::getProjectId, ids);
+                assoProjectFiles = assoProjectFileService.list(queryWrapper);
+                guids = assoProjectFiles.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
+            }
+
+
+            //查询文件
+            if (guids.size() != 0) {
+                String res = fileManagerService.getSystemFileFromFMS(guids);
+
+                systemFiles = JSONObject.parseArray(res, SystemFile.class);
+            }
+
+            //查询应用场景、调查类型、事件和专题库的关联
+            if (ids != null && ids.size() > 0) {
+                LambdaQueryWrapper<AssoProjectEvent> assoProjectEventQueryWrapper = new LambdaQueryWrapper<>();
+                assoProjectEventQueryWrapper.in(AssoProjectEvent::getProjectId, ids);
+                assoProjectEvents = assoProjectEventService.list(assoProjectEventQueryWrapper);
+
+                //查询事件
+                if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
+                    scenarios = scenarioService.list();
+                    matters = matterService.list();
+                    List<Integer> eventIds = assoProjectEvents.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
+                    if (eventIds.size() != 0) {
+                        LambdaQueryWrapper<Event> eventQueryWrapper = new LambdaQueryWrapper<>();
+                        eventQueryWrapper.in(Event::getId, eventIds);
+                        events = eventService.list(eventQueryWrapper);
+                    }
+
+                }
+
+                //查询和参与人关联
+                LambdaQueryWrapper<AssoProjectPerson> projectPersonLambdaQueryWrapper =new LambdaQueryWrapper<>();
+                projectPersonLambdaQueryWrapper.in(AssoProjectPerson::getProjectId,ids);
+                assoProjectPersonList=assoProjectPersonService.list(projectPersonLambdaQueryWrapper);
+                List<String> personIds = assoProjectPersonList.stream().map(AssoProjectPerson::getPersonId).collect(Collectors.toList());
+                  createIds.addAll(personIds);
+            }
+            //查询创建人名称
+            if (createIds.size() != 0) {
+                String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+                JSONObject jsonObject = JSONObject.parseObject(res);
+                personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+            }
+
+
+
+
+
+            //装载信息
+            for (PatentDigProjectVO patentDigProjectVO : patentDigProjectVOS) {
+
+                //装载人员信息
+                Personnel personnel = personnels.stream().filter(item -> item.getId().equals(patentDigProjectVO.getCreateId())).findFirst().orElse(null);
+                if (personnel != null) {
+                    patentDigProjectVO.setCreateName(personnel.getPersonnelName());
+                }
+
+                if (patentDigProjectVO.getHeadId() != null) {
+                    Personnel headPersonnel = personnels.stream().filter(item -> item.getId().equals(patentDigProjectVO.getHeadId())).findFirst().orElse(null);
+                    if (headPersonnel != null) {
+                        patentDigProjectVO.setHeadName(personnel.getPersonnelName());
+                    }
+                }
+
+
+                //装载参与人
+                List<SimplePersonVO> simplePersonVOS =new ArrayList<>();
+                List<AssoProjectPerson> assoProjectPersonTmps =assoProjectPersonList.stream().filter(item->item.getProjectId().equals(patentDigProjectVO.getId())).collect(Collectors.toList());
+                List<String> personIds =assoProjectPersonTmps.stream().map(AssoProjectPerson::getPersonId).collect(Collectors.toList());
+                if(personIds.size()!=0){
+                    List<Personnel> personneltmps = personnels.stream().filter(item -> personIds.contains(item.getId())).collect(Collectors.toList());
+                    personneltmps.forEach(item->{
+                        SimplePersonVO simplePersonVO =new SimplePersonVO();
+                        simplePersonVO.setPersonId(item.getId());
+                        simplePersonVO.setPersonName(item.getPersonnelName());
+                        simplePersonVOS.add(simplePersonVO);
+                    });
+                }
+                patentDigProjectVO.setInvolvedPersons(simplePersonVOS);
+
+                //装载文件信息
+                List<AssoProjectFile> assoProjectFileTemp = assoProjectFiles.stream().filter(item -> item.getProjectId().equals(patentDigProjectVO.getId())).collect(Collectors.toList());
+                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) {
+                            patentDigProjectVO.setSystemFileList(systemFileTemp);
+                        }
+                    }
+                }
+
+                //装载事件 应用场景,处理事项
+                List<Integer> eventIds = new ArrayList<>();
+                List<Integer> matterIds = new ArrayList<>();
+                List<Integer> scenarioIds = new ArrayList<>();
+                List<String> eventTmpNames = new ArrayList<>();
+                List<String> matterTmpNames = new ArrayList<>();
+                List<String> scenarioTmpNames = new ArrayList<>();
+                if (assoProjectEvents != null) {
+                    List<AssoProjectEvent> assoProjectEventTmps = assoProjectEvents.stream().filter(item -> item.getProjectId().equals(patentDigProjectVO.getId())).collect(Collectors.toList());
+
+                    if (assoProjectEventTmps.size() != 0) {
+                        //过滤出事件
+                        eventIds = assoProjectEventTmps.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
+                        matterIds = assoProjectEventTmps.stream().filter(item -> item.getMatterId() != null).map(AssoProjectEvent::getMatterId).collect(Collectors.toList());
+                        scenarioIds = assoProjectEventTmps.stream().filter(item -> item.getScenarioId() != null).map(AssoProjectEvent::getScenarioId).collect(Collectors.toList());
+
+                        List<Integer> eventIdsFilter = eventIds;
+                        List<Integer> matterIdsFilter = matterIds;
+                        List<Integer> scenarioIdsFilter = scenarioIds;
+
+                        List<Event> eventTmps = events.stream().filter(item -> eventIdsFilter.contains(item.getId())).collect(Collectors.toList());
+                        List<Matter> matterTmps = matters.stream().filter(item -> matterIdsFilter.contains(item.getId())).collect(Collectors.toList());
+                        List<Scenario> scenarioTmps = scenarios.stream().filter(item -> scenarioIdsFilter.contains(item.getId())).collect(Collectors.toList());
+                        eventTmpNames = eventTmps.stream().map(Event::getName).collect(Collectors.toList());
+                        eventIds=eventTmps.stream().map(Event::getId).collect(Collectors.toList());
+                        matterTmpNames = matterTmps.stream().map(Matter::getName).collect(Collectors.toList());
+                        matterIds=matterTmps.stream().map(Matter::getId).collect(Collectors.toList());
+                        scenarioTmpNames = scenarioTmps.stream().map(Scenario::getName).collect(Collectors.toList());
+                        scenarioIds=scenarioTmps.stream().map(Scenario::getId).collect(Collectors.toList());
+
+                    }
+                }
+                patentDigProjectVO.setScenarioIds(scenarioIds);
+                patentDigProjectVO.setMatterIds(matterIds);
+                patentDigProjectVO.setEventIds(eventIds);
+                patentDigProjectVO.setScenarioNames(scenarioTmpNames);
+                patentDigProjectVO.setMatterNames(matterTmpNames);
+                patentDigProjectVO.setEventNames(eventTmpNames);
+            }
+
+
+        }
+
     }
-}

+ 12 - 2
src/main/java/cn/cslg/pas/service/business/PatentProjectService.java

@@ -169,6 +169,12 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
 
         //TODO 根据id删除导入任务信息(导入任务模块未完成,暂时不做)
 
+        //删除专利数据库
+        LambdaQueryWrapper<PatentProject> patentProjectLambdaQueryWrapper =new LambdaQueryWrapper<>();
+        patentProjectLambdaQueryWrapper.in(PatentProject::getProjectId,ids);
+        this.remove(patentProjectLambdaQueryWrapper);
+projectService.removeBatchByIds(ids);
+
         //
         return ids;
     }
@@ -286,6 +292,7 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
         }
         project.setCreateId(personnelVO.getId());
         project.setTenantId(personnelVO.getTenantId());
+        project.setType(1);
         project.insert();
 
         /**
@@ -683,7 +690,7 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
                 List<Integer> eventIds = assoProjectEvents.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
                 if (eventIds.size() != 0) {
                     LambdaQueryWrapper<Event> eventQueryWrapper = new LambdaQueryWrapper<>();
-                    eventQueryWrapper.in(Event::getEventId, eventIds);
+                    eventQueryWrapper.in(Event::getId, eventIds);
                     events = eventService.list(eventQueryWrapper);
                 }
 
@@ -812,8 +819,11 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
                     List<Matter> matterTmps = matters.stream().filter(item -> matterIdsFilter.contains(item.getId())).collect(Collectors.toList());
                     List<Scenario> scenarioTmps = scenarios.stream().filter(item -> scenarioIdsFilter.contains(item.getId())).collect(Collectors.toList());
                     eventTmpNames = eventTmps.stream().map(Event::getName).collect(Collectors.toList());
+                    eventIds=eventTmps.stream().map(Event::getId).collect(Collectors.toList());
                     matterTmpNames = matterTmps.stream().map(Matter::getName).collect(Collectors.toList());
+                    matterIds=matterTmps.stream().map(Matter::getId).collect(Collectors.toList());
                     scenarioTmpNames = scenarioTmps.stream().map(Scenario::getName).collect(Collectors.toList());
+                    scenarioIds=scenarioTmps.stream().map(Scenario::getId).collect(Collectors.toList());
 
                 }
             }
@@ -827,7 +837,7 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
 
             //装载产品,产品分类,技术分类
             if (assoProjectTreeNodes != null) {
-                AssoProjectTreeNode assoProjectTreeNode = assoProjectTreeNodes.stream().filter(item -> item.getProjectId().equals(patentProjectVO.getId()) && item.getTreeType().equals(2) || item.getTreeType().equals(3)).
+                AssoProjectTreeNode assoProjectTreeNode = assoProjectTreeNodes.stream().filter(item -> item.getProjectId().equals(patentProjectVO.getId()) && (item.getTreeType().equals(2) || item.getTreeType().equals(3))).
                         findFirst().orElse(null);
                 if (assoProjectTreeNode != null) {
                     if(assoProjectTreeNode.getTreeType().equals(2)){

+ 69 - 15
src/main/java/cn/cslg/pas/service/business/ReportProjectService.java

@@ -46,8 +46,6 @@ import java.util.stream.Collectors;
 @Service
 @Slf4j
 public class ReportProjectService extends ServiceImpl<ReportProjectMapper, ReportProject> implements Business {
-    @Autowired
-    private EventMapper eventMapper;
 
     @Autowired
     private ReportProjectMapper reportProjectMapper;
@@ -58,21 +56,12 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
     private FileManagerService fileManagerService;
 
     @Autowired
-    private AssoEventFileService assoEventFileService;
-
-    @Autowired
     private QueryGroupFactory queryGroupFactory;
 
     @Autowired
     private PermissionService permissionService;
 
     @Autowired
-    private SystemDictService systemDictService;
-
-    @Autowired
-    private AssoProjectEventMapper assoProjectEventMapper;
-
-    @Autowired
     private AssoProjectEventService assoProjectEventService;
 
     @Autowired
@@ -99,16 +88,25 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
     @Autowired
     private AssoProjectService assoProjectService;
 
+    @Autowired
+    private SystemDictService systemDictService;
+    @Autowired
+    private MatterService matterService;
 
+    @Autowired
+    private ScenarioService scenarioService;
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
-        List<String> sqls = formatQueryService.reSqls(queryRequest, "event");
+        List<String> sqls = formatQueryService.reSqls(queryRequest, "reportProject");
+
         //根据sql查询事件信息
         List<ReportProjectVO> reportProject = reportProjectMapper.getReportProject(sqls.get(0), sqls.get(1), sqls.get(2));
         this.loadReportProjectVO(reportProject);
+
         //查询总数
         Long total = reportProjectMapper.getReportProjectCount(sqls.get(0));
+
         //装载事件信息
         Records records = new Records();
         records.setCurrent(queryRequest.getCurrent());
@@ -212,7 +210,6 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
         records.setTotal(reGroupDataVO.getTotal());
         return records;
     }
-
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Object addMessage(Object object) {
@@ -494,7 +491,11 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
         List<Integer> ids = new ArrayList<>();
         List<Client> clients = new ArrayList<>();
         List<Event> events =new ArrayList<>();
+        List<AssoReportCron> assoReportCrons =new ArrayList<>();
         List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
+        List<SystemDict> systemDictList =new ArrayList<>();
+        List<Scenario> scenarios = new ArrayList<>();
+        List<Matter> matters = new ArrayList<>();
         reportProjectVOs.forEach(
                 item -> {
 
@@ -529,6 +530,9 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
         List<SystemFile> systemFiles = new ArrayList<>();
         List<AssoProjectFile> assoEventFiles = new ArrayList<>();
 
+
+
+
         //查询创建人名称
         if (createIds.size() != 0) {
             String res = permissionService.getPersonnelByIdsFromPCS(createIds);
@@ -549,6 +553,18 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
             queryWrapper.in(AssoProjectFile::getProjectId, ids);
             assoEventFiles = assoProjectFileService.list(queryWrapper);
             guids = assoEventFiles.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
+
+            //查询核心结论
+            LambdaQueryWrapper<AssoReportCron> reportCronLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            reportCronLambdaQueryWrapper.in(AssoReportCron::getProjectId,ids);
+            assoReportCrons =assoReportCronService.list(reportCronLambdaQueryWrapper);
+            if(assoReportCrons!=null&&assoReportCrons.size()!=0){
+                LambdaQueryWrapper<SystemDict> systemDictLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                systemDictLambdaQueryWrapper.eq(SystemDict::getGroupType,"ASSESS");
+                systemDictList =systemDictService.list(systemDictLambdaQueryWrapper);
+
+            }
+
         }
 
 
@@ -574,10 +590,12 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
 
             //查询事件
             if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
+                scenarios = scenarioService.list();
+                matters = matterService.list();
                 List<Integer> eventIds = assoProjectEvents.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
                 if (eventIds.size() != 0) {
                     LambdaQueryWrapper<Event> eventQueryWrapper = new LambdaQueryWrapper<>();
-                    eventQueryWrapper.in(Event::getEventId, eventIds);
+                    eventQueryWrapper.in(Event::getId, eventIds);
                     events = eventService.list(eventQueryWrapper);
                 }
 
@@ -643,28 +661,64 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
             }
 
             //装载事件
+            //装载事件 应用场景,处理事项
             List<Integer> eventIds = new ArrayList<>();
+            List<Integer> matterIds = new ArrayList<>();
+            List<Integer> scenarioIds = new ArrayList<>();
             List<String> eventTmpNames = new ArrayList<>();
+            List<String> matterTmpNames = new ArrayList<>();
+            List<String> scenarioTmpNames = new ArrayList<>();
             if (assoProjectEvents != null) {
                 List<AssoProjectEvent> assoProjectEventTmps = assoProjectEvents.stream().filter(item -> item.getProjectId().equals(reportProjectVO.getId())).collect(Collectors.toList());
 
                 if (assoProjectEventTmps.size() != 0) {
                     //过滤出事件
                     eventIds = assoProjectEventTmps.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
+                    matterIds = assoProjectEventTmps.stream().filter(item -> item.getMatterId() != null).map(AssoProjectEvent::getMatterId).collect(Collectors.toList());
+                    scenarioIds = assoProjectEventTmps.stream().filter(item -> item.getScenarioId() != null).map(AssoProjectEvent::getScenarioId).collect(Collectors.toList());
 
                     List<Integer> eventIdsFilter = eventIds;
+                    List<Integer> matterIdsFilter = matterIds;
+                    List<Integer> scenarioIdsFilter = scenarioIds;
 
                     List<Event> eventTmps = events.stream().filter(item -> eventIdsFilter.contains(item.getId())).collect(Collectors.toList());
+                    List<Matter> matterTmps = matters.stream().filter(item -> matterIdsFilter.contains(item.getId())).collect(Collectors.toList());
+                    List<Scenario> scenarioTmps = scenarios.stream().filter(item -> scenarioIdsFilter.contains(item.getId())).collect(Collectors.toList());
                     eventTmpNames = eventTmps.stream().map(Event::getName).collect(Collectors.toList());
+                    eventIds=eventTmps.stream().map(Event::getId).collect(Collectors.toList());
+                    matterTmpNames = matterTmps.stream().map(Matter::getName).collect(Collectors.toList());
+                    matterIds=matterTmps.stream().map(Matter::getId).collect(Collectors.toList());
+                    scenarioTmpNames = scenarioTmps.stream().map(Scenario::getName).collect(Collectors.toList());
+                    scenarioIds=scenarioTmps.stream().map(Scenario::getId).collect(Collectors.toList());
 
                 }
             }
-
+            reportProjectVO.setScenarioIds(scenarioIds);
+            reportProjectVO.setMatterIds(matterIds);
             reportProjectVO.setEventIds(eventIds);
+            reportProjectVO.setScenarioNames(scenarioTmpNames);
+            reportProjectVO.setMatterNames(matterTmpNames);
             reportProjectVO.setEventNames(eventTmpNames);
 
 
+            List<CronVO> cronVOS =new ArrayList<>();
+            //装载核心结论
+            if(assoReportCrons!=null&&assoReportCrons.size()!=0){
+                List<AssoReportCron> assoReportCronTmps =assoReportCrons.stream().filter(item->item.getProjectId().equals(reportProjectVO.getId())).collect(Collectors.toList());
+                if (assoReportCronTmps.size() != 0) {
+                    //过滤出事件
+                  List<Integer>  cronIds = assoReportCronTmps.stream().map(AssoReportCron::getCronId).collect(Collectors.toList());
+                  List<SystemDict> systemDicts =systemDictList.stream().filter(item->cronIds.contains(Integer.parseInt(item.getValue()))).collect(Collectors.toList());
+                  systemDicts.forEach(item->{
+                      CronVO cronVO =new CronVO();
+                      cronVO.setCronId(Integer.parseInt(item.getValue()));
+                      cronVO.setCronName(item.getLabel());
+                      cronVOS.add(cronVO);
+                  });
 
+                }
+            }
+        reportProjectVO.setCrons(cronVOS);
         }
     }
 

+ 14 - 0
src/main/java/cn/cslg/pas/service/business/SystemDictService.java

@@ -63,4 +63,18 @@ public class SystemDictService extends ServiceImpl<SystemDictMapper, SystemDict>
         return ids;
     }
 
+
+
+    public List<SystemDict> getCrons(Integer reportType) {
+        String type ="";
+        switch (reportType){
+            case 0:
+                type="INVALID_ASSESS";
+                break;
+        }
+        LambdaQueryWrapper<SystemDict> queryWrapper = new LambdaQueryWrapper<>();
+      queryWrapper.eq(SystemDict::getType,type);
+        List<SystemDict> systemDictList = this.list(queryWrapper);
+        return systemDictList;
+    }
 }

+ 4 - 1
src/main/java/cn/cslg/pas/service/common/PersonFieldService.java

@@ -65,7 +65,10 @@ public class PersonFieldService {
         Integer order = 0;
         for (PersonSelfFieldVO item : fieldVOS) {
             item.setOrder(order);
-            item.setIfHidden(false);
+            if(item.getDefaultHidden()!=null&&item.getDefaultHidden().equals(true))
+            { item.setIfHidden(true);}
+            else{
+            item.setIfHidden(false);}
             order++;
         }
 

+ 28 - 0
src/main/java/cn/cslg/pas/service/permissions/PermissionService.java

@@ -167,5 +167,33 @@ public class PermissionService {
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
 
+    /**
+     * 获得所有部门排序接口
+     * @param orderType
+     * @return
+     * @throws IOException
+     */
+    public String getDepartmentOrders(Integer orderType) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getDepartmentOrders?orderType=" + orderType)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
 
+    /**
+     * 获得所有委托方排序接口
+     * @param orderType
+     * @return
+     * @throws IOException
+     */
+    public String getEntrustsOrder(Integer orderType) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getEntrustsOrder?orderType=" + orderType)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
 }

+ 225 - 0
src/main/resources/jsons/patentDigProject.json

@@ -0,0 +1,225 @@
+[
+  {"name":"Id",
+    "type":"Integer",
+    "value":"id",
+    "field":"id",
+    "sqlField": "p.id",
+    "sqlClass": "getComSql",
+    "orderClass": "",
+    "groupClass":"",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"false"
+
+  },
+  {"name":"挖掘项目名称",
+  "type":"String",
+  "value":"name",
+  "field": "name",
+  "sqlField": "p.name",
+  "sqlClass": "getLikeSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getComGroup",
+  "ifSearch":"true",
+  "ifGroup": "false",
+    "ifShow":"true"
+},
+  {"name":"创建人",
+    "type":"String",
+    "value":"createName",
+    "field": "createName",
+    "sqlField": "p.create_id",
+    "sqlClass": "getCreateNameSql",
+    "orderClass": "getCreateNameOrder",
+    "groupClass":"getComGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"创建时间",
+    "type":"DateTime",
+    "value":"createTime",
+    "field": "createTime",
+    "sqlField": "p.create_time",
+    "sqlClass": "getDateTimeSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getTimeGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"描述",
+    "type":"String",
+    "value":"description",
+    "field": "description",
+    "sqlField": "p.description",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"负责人名称",
+    "type":"String",
+    "value":"headName",
+    "field": "headName",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  }
+,
+  {"name":"产出",
+    "type":"String",
+    "value":"output",
+    "field": "output",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  }
+,
+  {"name":"技术方向",
+    "type":"String",
+    "value":"technicalDirection",
+    "field": "technicalDirection",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  }
+,
+  {"name":"是否检索",
+    "type":"Integer",
+    "value":"ifSearch",
+    "field": "ifSearch",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  }
+,
+  {"name":"相关竞争对手",
+    "type":"String",
+    "value":"relatedCompetitors",
+    "field": "relatedCompetitors",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  }
+,
+  {"name":"技术关键词",
+    "type":"String",
+    "value":"technicalKeyword",
+    "field": "technicalKeyword",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  }
+,
+  {"name":"进度",
+    "type":"String",
+    "value":"process",
+    "field": "process",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  },
+  {"name":"状态",
+    "type":"String",
+    "value":"state",
+    "field": "state",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  },
+  {"name":"研发项目名称",
+    "type":"String",
+    "value":"rdName",
+    "field": "rdName",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  },
+  {"name":"研发项目编号",
+    "type":"String",
+    "value":"rdnumber",
+    "field": "rdnumber",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  }
+,
+  {"name":"产品",
+    "type":"String",
+    "value":"product",
+    "field": "product",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  },
+  {"name":"产品阶段",
+    "type":"String",
+    "value":"productPhase",
+    "field": "productPhase",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"false",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  }
+
+]

+ 45 - 35
src/main/resources/jsons/patentProject.json

@@ -7,9 +7,10 @@
     "sqlClass": "getComSql",
     "orderClass": "",
     "groupClass":"",
-    "ifSearch":"true",
+    "ifSearch":"false",
     "ifGroup": "false",
     "ifShow":"false"
+
   },
   {"name":"专利数据库名称",
   "type":"String",
@@ -23,6 +24,19 @@
   "ifGroup": "false",
     "ifShow":"true"
 },
+  {"name":"负责人名称",
+    "type":"String",
+    "value":"headName",
+    "field": "headName",
+    "sqlField": "head_id",
+    "sqlClass": "getCreateNameSql",
+    "orderClass": "getCreateNameOrder",
+    "groupClass":"getComGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  },
   {"name":"创建人",
     "type":"String",
     "value":"createName",
@@ -34,8 +48,8 @@
     "ifSearch":"true",
     "ifGroup": "false",
     "ifShow":"true"
-
   },
+
   {"name":"创建时间",
     "type":"DateTime",
     "value":"createTime",
@@ -67,7 +81,7 @@
     "sqlField": "p.description",
     "sqlClass": "getComSql",
     "orderClass": "getComOrder",
-    "ifSearch":"true",
+    "ifSearch":"false",
     "ifGroup": "false",
     "ifShow":"true"
   },
@@ -75,37 +89,26 @@
     "type":"Array",
     "value":"scenarioNames",
     "field": "scenarioNames",
-    "sqlField": "scenario_id",
+    "sqlField": "aspe.scenario_id",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
+    "orderClass": "getProjectScenarioOrder",
     "groupClass":"getScenarioGroup",
     "ifSearch":"true",
     "ifGroup": "true",
     "ifShow":"true"
   },
-  {"name":"负责人名称",
-    "type":"String",
-    "value":"headName",
-    "field": "headName",
-    "sqlField": "scenario_id",
-    "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
-    "ifGroup": "false",
-    "ifShow":"true"
-  },
   {"name":"负责部门",
     "type":"String",
     "value":"departmentName",
     "field": "departmentName",
-    "sqlField": "scenario_id",
+    "sqlField": "p.department_id",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
+    "orderClass": "getDepartmentNameOrder",
     "groupClass":"getScenarioGroup",
     "ifSearch":"true",
     "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow":"true",
+    "defaultHidden": "true"
   },
   {"name":"委托方",
     "type":"String",
@@ -113,11 +116,12 @@
     "field": "entrustName",
     "sqlField": "scenario_id",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
+    "orderClass": "getEntrustOrder",
     "groupClass":"getScenarioGroup",
     "ifSearch":"true",
     "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow":"true",
+    "defaultHidden": "true"
   },
   {"name":"合同号",
     "type":"String",
@@ -129,7 +133,8 @@
     "groupClass":"getScenarioGroup",
     "ifSearch":"true",
     "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow":"true",
+    "defaultHidden": "true"
   },
   {"name":"内部卷号",
     "type":"String",
@@ -141,7 +146,8 @@
     "groupClass":"getScenarioGroup",
     "ifSearch":"true",
     "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow":"true",
+    "defaultHidden": "true"
   },
   {"name":"委案日",
     "type":"String",
@@ -153,39 +159,42 @@
     "groupClass":"getScenarioGroup",
     "ifSearch":"true",
     "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow":"true",
+    "defaultHidden": "true"
   },
   {"name":"报告数量",
     "type":"String",
     "value":"reportProjectNum",
     "field": "reportProjectNum",
-    "sqlField": "scenario_id",
+    "sqlField": "p.id",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
+    "orderClass": "getReportNumOrder",
     "groupClass":"getScenarioGroup",
     "ifSearch":"true",
     "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow":"true",
+    "defaultHidden": "true"
   },
   {"name":"调查类型",
     "type":"Array",
     "value":"matterNames",
     "field": "matterNames",
-    "sqlField": "scenario_id",
+    "sqlField": "aspe.matter_id",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
+    "orderClass": "getMatterOrder",
     "groupClass":"getScenarioGroup",
     "ifSearch":"true",
     "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow":"true",
+    "defaultHidden": "true"
   },
   {"name":"相关事件",
     "type":"Array",
     "value":"eventNames",
     "field": "eventNames",
-    "sqlField": "scenario_id",
+    "sqlField": "aspe.event_id",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
+    "orderClass": "getEventOrder",
     "groupClass":"getScenarioGroup",
     "ifSearch":"true",
     "ifGroup": "false",
@@ -197,7 +206,7 @@
     "field": "productOrCategoryName",
     "sqlField": "scenario_id",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
+    "orderClass": "getProductOrCategoryOrder",
     "groupClass":"getScenarioGroup",
     "ifSearch":"true",
     "ifGroup": "false",
@@ -213,7 +222,8 @@
     "groupClass":"getScenarioGroup",
     "ifSearch":"true",
     "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow":"true",
+    "defaultHidden": "true"
   }
 
 ]

+ 57 - 93
src/main/resources/jsons/reportProject.json

@@ -21,7 +21,8 @@
     "groupClass":"getComGroup",
   "ifSearch":"true",
   "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow":"true",
+    "defaultHidden": "true"
 },
   {"name":"创建人",
     "type":"String",
@@ -33,7 +34,47 @@
     "groupClass":"getComGroup",
     "ifSearch":"true",
     "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow":"true",
+    "defaultHidden": "true"
+  },
+  {"name":"负责人名称",
+    "type":"String",
+    "value":"headName",
+    "field": "headName",
+    "sqlField": "head_id",
+    "sqlClass": "getCreateNameSql",
+    "orderClass": "getCreateNameOrder",
+    "groupClass":"getComGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  },
+  {"name":"负责部门",
+    "type":"String",
+    "value":"departmentName",
+    "field": "departmentName",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  },
+  {"name":"委托方",
+    "type":"String",
+    "value":"entrustName",
+    "field": "entrustName",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
   },
   {"name":"创建时间",
     "type":"DateTime",
@@ -47,7 +88,7 @@
     "ifGroup": "false",
     "ifShow":"true"
   },
-  {"name":"标的专利",
+  {"name":"标的专利或产品",
     "type":"String",
     "value":"signPatentNo",
     "field": "signPatentNo",
@@ -58,17 +99,6 @@
     "ifGroup": "false",
     "ifShow":"true"
   },
-  {"name":"标的产品号",
-    "type":"String",
-    "value":"signProjectId",
-    "field": "signProjectId",
-    "sqlField": "sign_patent_no",
-    "sqlClass": "getLikeSql",
-    "orderClass": "getComOrder",
-    "ifSearch":"true",
-    "ifGroup": "false",
-    "ifShow":"true"
-  },
   {"name":"报告类型",
     "type":"Integer",
     "value":"reportType",
@@ -126,72 +156,6 @@
     "ifGroup": "false",
     "ifShow":"true"
   },
-  {"name":"无效宣告请求人",
-    "type":"String",
-    "value":"invalidApplication",
-    "field": "invalidApplication",
-    "sqlField": "p.description",
-    "sqlClass": "getComSql",
-    "orderClass": "getComOrder",
-    "ifSearch":"true",
-    "ifGroup": "false",
-    "ifShow":"true"
-  },
-  {"name":"专利权人",
-    "type":"String",
-    "value":"currentApplication",
-    "field": "currentApplication",
-    "sqlField": "p.description",
-    "sqlClass": "getComSql",
-    "orderClass": "getComOrder",
-    "ifSearch":"true",
-    "ifGroup": "false",
-    "ifShow":"true"
-  },
-  {"name":"发明创造名称",
-    "type":"String",
-    "value":"inventionName",
-    "field": "inventionName",
-    "sqlField": "p.description",
-    "sqlClass": "getComSql",
-    "orderClass": "getComOrder",
-    "ifSearch":"true",
-    "ifGroup": "false",
-    "ifShow":"true"
-  },
-  {"name":"发文序号",
-    "type":"String",
-    "value":"issueNumber",
-    "field": "issueNumber",
-    "sqlField": "p.description",
-    "sqlClass": "getComSql",
-    "orderClass": "getComOrder",
-    "ifSearch":"true",
-    "ifGroup": "false",
-    "ifShow":"true"
-  },
-  {"name":"案件编号",
-    "type":"String",
-    "value":"caseNumber",
-    "field": "caseNumber",
-    "sqlField": "p.description",
-    "sqlClass": "getComSql",
-    "orderClass": "getComOrder",
-    "ifSearch":"true",
-    "ifGroup": "false",
-    "ifShow":"true"
-  },{"name":"合同号",
-  "type":"String",
-  "value":"contractNo",
-  "field": "contractNo",
-  "sqlField": "scenario_id",
-  "sqlClass": "getComSql",
-  "orderClass": "getScenarioNameOrder",
-  "groupClass":"getScenarioGroup",
-  "ifSearch":"true",
-  "ifGroup": "false",
-  "ifShow":"true"
-},
   {"name":"内部卷号",
     "type":"String",
     "value":"volumeNumber",
@@ -202,18 +166,18 @@
     "groupClass":"getScenarioGroup",
     "ifSearch":"true",
     "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow":"true",
+    "defaultHidden": "true"
   },
-  {"name":"委案日",
-    "type":"String",
-    "value":"commissionCaseDay",
-    "field": "commissionCaseDay",
-    "sqlField": "scenario_id",
-    "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
-    "ifGroup": "false",
-    "ifShow":"true"
-  }
+  {"name":"产品/技术",
+  "type":"String",
+  "value":"productOrTech",
+  "field": "productOrTech",
+  "sqlField": "rp.product_or_tech",
+  "sqlClass": "getLikeSql",
+  "orderClass": "getComOrder",
+  "ifSearch":"true",
+  "ifGroup": "false",
+  "ifShow":"true"
+}
 ]

+ 7 - 6
src/main/resources/mapper/AssoProject.xml

@@ -6,10 +6,10 @@
         pas_prod2.asso_project
         <where>
             project_id in
-            <foreach collection="patentProjectIds" index="index" item="item" open="(" separator=" or " close=")">
+            <foreach collection="patentProjectIds" index="index" item="item" open="(" separator=" , " close=")">
                 #{item}
             </foreach>
-         and asso_project_type=2
+            and asso_project_type=2
             group by project_id
 
         </where>
@@ -18,13 +18,14 @@
     </select>
 
     <select id="getReportProjectNumOrder" resultType="java.lang.Integer">
-        select project_id from (   select project_id as projectIdcount(*) as projectCount from
-        pas_prod2.asso_project
+        select projectId from (select project_id as projectId,count(*) as c from
+        asso_project
         <where>
-           asso_project_type=2
+            asso_project_type=2
             group by project_id
         </where>
-        ) as t order by c #{orderType}
+        ) as t order by c
     </select>
 
+
 </mapper>

+ 1 - 1
src/main/resources/mapper/AssoProjectEvent.xml

@@ -18,7 +18,7 @@
 
     <select id="getEventProjectNumOrder" resultType="java.lang.Integer">
         select event_id from (select event_id, count(*) as c from
-        pas_prod2.asso_project_event
+        asso_project_event
         <where>
             project_type =#{projectType}
             group by event_id,project_type

+ 13 - 0
src/main/resources/mapper/Event.xml

@@ -37,4 +37,17 @@
          group by ${groupField}
         ) as c
     </select>
+
+
+
+    <select id="getEventOrder"  resultType="java.lang.Integer">
+        select id from event
+            order  by name
+        <if test="orderType==0">
+            asc
+        </if>
+        <if test="orderType!=0">
+            desc
+        </if>
+    </select>
 </mapper>

+ 26 - 0
src/main/resources/mapper/PatentDigProjectMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="cn.cslg.pas.mapper.PatentDigProjectMapper">
+    <select id="getPatentDigProject" resultType="cn.cslg.pas.common.vo.business.PatentDigProjectVO">
+        select p.id,dp.name as name,dp.output as output,dp.technical_direction as technicalDirection,dp.if_search as
+        ifSearch,dp.related_competitors as relatedCompetitors,dp.technical_keyword as technicalKeyword,dp.process as
+        process,dp.state as state,rp.name as rdName,rp.number as rdnumber,rp.product_phase as productPhase,rp.product as product,
+        p.create_id as createId,p.create_time as createTime,p.description as description,p.head_id as headId
+        from patent_dig_project as dp left join project as p
+        on dp.project_id =p.id left join rd_project rp on dp.rd_project_id =rp.id
+        <if test="sql1!=''">
+            where ${sql1}
+        </if>
+        ${sql2} ${sql3}
+    </select>
+
+
+    <select id="getPatentDigCount" resultType="java.lang.Long">
+        select count(*)
+        from patent_dig_project as dp left join project as p
+        on dp.project_id =p.id left join rd_project rp on dp.rd_project_id =rp.id
+        <if test="sql1!=''">
+            where ${sql1}
+        </if>
+    </select>
+</mapper>

+ 2 - 1
src/main/resources/mapper/PatentProjectMapper.xml

@@ -7,7 +7,8 @@
         createId,p.create_time as createTime,pp.if_update as ifUpdate,pp.crons as crons,
         p.entrust_type as  entrustType,p.entrust_id as entrustId,p.head_id as headId,p.department_id as departmentId
         from patent_project as pp left join project as p
-        on pp.project_id =p.id
+        on pp.project_id =p.id  left join asso_project_tree_node as aspt on p.id =aspt.project_id
+        left join asso_project_event as aspe on p.id =aspe.project_id
         <if test="sql1!=''">
             where ${sql1}
         </if>

+ 16 - 0
src/main/resources/mapper/ProductMapper.xml

@@ -29,4 +29,20 @@
         </if>
 
     </select>
+
+    <select id="getProductOrCategoryNameOrder" resultType="cn.cslg.pas.common.vo.ProductOrCategoryVO">
+        select *
+        from (select id as id, name as name, 2 as type
+        from product
+        union all
+        select id as id, name as name, 3 as type
+        from product_category) as c
+        order by name
+        <if test="orderType==0">
+            asc
+        </if>
+        <if test="orderType!=0">
+            desc
+        </if>
+    </select>
 </mapper>

+ 7 - 3
src/main/resources/mapper/ReportProjectMapper.xml

@@ -2,9 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="cn.cslg.pas.mapper.ReportProjectMapper">
     <select id="getReportProject" resultType="cn.cslg.pas.common.vo.business.ReportProjectVO">
-        select p.id as id,p.name as name ,rp.sign_patent_no as signPatentNo,p.contract_no as contract_no,p.volume_number as
+        select p.id as id,p.name as name ,rp.sign_patent_no as signPatentNo,p.contract_no as contract_no,p.volume_number
+        as
         volumeNumber,p.commission_case_day as commissionCaseDay,p.description as description,p.create_id as
-        createId,p.create_time as createTime from report as rp left join project as p
+        createId,p.create_time as createTime, rp.report_type as reportType ,p.head_id as headId,p.department_id as
+        departmentId,
+        p.entrust_type as entrustType,p.entrust_id as entrustId,rp.product_or_tech as productOrTech,rp.cron_description
+        as cronDescription from report as rp left join project as p
         on rp.project_id =p.id
         <if test="sql1!=''">
             where ${sql1}
@@ -13,7 +17,7 @@
     </select>
 
     <select id="getReportProjectCount" resultType="java.lang.Long">
-        select count(*) from (select distinct p.id  from report as rp left join project as p
+        select count(*) from (select distinct p.id from report as rp left join project as p
         on rp.project_id =p.id
         <if test="sql1!=''">
             where ${sql1}

+ 77 - 0
src/test/java/cn/cslg/pas/service/PatentDigProjectServiceTests.java

@@ -0,0 +1,77 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.model.request.OrderDTO;
+import cn.cslg.pas.common.model.request.StringGroupRequest;
+import cn.cslg.pas.common.model.request.StringRequest;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.controller.EventController;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.http.entity.ContentType;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * @author chenyu
+ * @date 2023/9/6
+ */
+@SpringBootTest
+public class PatentDigProjectServiceTests {
+    @Autowired
+    private EventController eventController;
+
+
+
+    @Test
+        void add() throws Exception {
+        JSONObject jsonObj = new JSONObject();
+        jsonObj.put("name", "事件4");
+        jsonObj.put("description", "描述1");
+        jsonObj.put("clientId", 1);
+        jsonObj.put("scenarioId", 2);
+        jsonObj.put("eventDate","");
+        String json_to_string = JSONObject.toJSONString(jsonObj);
+        List<MultipartFile> list = new ArrayList<>();
+        File file = new File("C:\\Users\\admin\\Desktop\\test.txt");
+        MultipartFile mulFile = new MockMultipartFile(
+                "th.jpg", //文件名
+                "th.jpg", //originalName 相当于上传文件在客户机上的文件名
+                ContentType.APPLICATION_OCTET_STREAM.toString(), //文件类型
+                new FileInputStream(file) //文件流
+        );
+        list.add(mulFile);
+        eventController.addEvent(json_to_string, list);
+
+
+
+    }
+
+
+    @Test
+    void groupEvent() throws Exception {
+        StringGroupRequest queryRequest = new StringGroupRequest();
+        queryRequest.setSearchQuery("name~事件 and createName=朱");
+        List<OrderDTO> dtos = new ArrayList<>();
+        OrderDTO orderDTO1 = new OrderDTO();
+        orderDTO1.setOrderBy("name");
+        orderDTO1.setOrderType(0);
+        OrderDTO orderDTO2 = new OrderDTO();
+        orderDTO2.setOrderBy("createName");
+        orderDTO2.setOrderType(1);
+        dtos.add(orderDTO1);
+        dtos.add(orderDTO2);
+        queryRequest.setOrderDTOList(dtos);
+        queryRequest.setCurrent(Long.parseLong("1"));
+        queryRequest.setSize(Long.parseLong("10"));
+        queryRequest.setGroupBy("name");
+        eventController.groupEvent(queryRequest);
+    }
+}