Procházet zdrojové kódy

报告专利挖掘

lwhhszx před 1 rokem
rodič
revize
518d5f8995
34 změnil soubory, kde provedl 1223 přidání a 504 odebrání
  1. 4 1
      src/main/java/cn/cslg/pas/common/dto/business/PatentDigProjectDTO.java
  2. 4 1
      src/main/java/cn/cslg/pas/common/dto/business/PatentDigProjectUpdateDTO.java
  3. 2 0
      src/main/java/cn/cslg/pas/common/dto/business/ReportProjectDTO.java
  4. 2 0
      src/main/java/cn/cslg/pas/common/dto/business/UpdateReportProjectDTO.java
  5. 1 0
      src/main/java/cn/cslg/pas/common/model/cronModel/SqlObject.java
  6. 2 8
      src/main/java/cn/cslg/pas/common/vo/EntrustVO.java
  7. 16 0
      src/main/java/cn/cslg/pas/common/vo/business/PatentDigProjectVO.java
  8. 6 1
      src/main/java/cn/cslg/pas/common/vo/business/ReportProjectVO.java
  9. 7 6
      src/main/java/cn/cslg/pas/controller/PatentDigProjectController.java
  10. 2 2
      src/main/java/cn/cslg/pas/controller/PatentProjectController.java
  11. 3 3
      src/main/java/cn/cslg/pas/controller/ReportProjectController.java
  12. 6 6
      src/main/java/cn/cslg/pas/domain/business/CustomField.java
  13. 1 1
      src/main/java/cn/cslg/pas/domain/business/ReportProject.java
  14. 1 0
      src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetComOrder.java
  15. 2 1
      src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetDateTimeSql.java
  16. 58 0
      src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetDepartmentNameSql.java
  17. 61 0
      src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetEntrustTrueNameSql.java
  18. 61 0
      src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetEventNameSql.java
  19. 2 1
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetComGroup.java
  20. 5 5
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetScenarioGroup.java
  21. 5 3
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetTimeGroup.java
  22. 7 1
      src/main/java/cn/cslg/pas/mapper/EventMapper.java
  23. 3 0
      src/main/java/cn/cslg/pas/mapper/PatentDigProjectMapper.java
  24. 4 4
      src/main/java/cn/cslg/pas/service/business/AssoScenarioMatterService.java
  25. 12 0
      src/main/java/cn/cslg/pas/service/business/EventService.java
  26. 413 245
      src/main/java/cn/cslg/pas/service/business/PatentDigProjectService.java
  27. 13 13
      src/main/java/cn/cslg/pas/service/business/PatentProjectService.java
  28. 87 6
      src/main/java/cn/cslg/pas/service/business/ReportProjectService.java
  29. 25 1
      src/main/java/cn/cslg/pas/service/business/SystemDictService.java
  30. 56 0
      src/main/java/cn/cslg/pas/service/permissions/PermissionService.java
  31. 202 152
      src/main/resources/jsons/patentDigProject.json
  32. 44 19
      src/main/resources/jsons/patentProject.json
  33. 95 21
      src/main/resources/jsons/reportProject.json
  34. 11 3
      src/test/java/cn/cslg/pas/service/PatentProjectTests.java

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

@@ -26,7 +26,10 @@ public class PatentDigProjectDTO {
      */
     private String name;
 
-
+    @Schema(description = "委托方id")
+    private String entrustId;
+    @Schema(description = "委托方名称") //查询/分组
+    private String entrustName;
     /**
      * 研发项目
      */

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

@@ -22,7 +22,10 @@ public class PatentDigProjectUpdateDTO {
      * 名称
      */
     private String name;
-
+    @Schema(description = "委托方id")
+    private String entrustId;
+    @Schema(description = "委托方名称") //查询/分组
+    private String entrustName;
 
     /**
      * 研发项目

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

@@ -19,6 +19,8 @@ public class ReportProjectDTO {
     private Integer entrustType;
     @Schema(description = "委托方id")
     private String entrustId;
+    @Schema(description = "委托方名称") //查询/分组
+    private String entrustName;
     @Schema(description = "负责人id")
     private String headId;
     @Schema(description = "负责部门id")

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

@@ -20,6 +20,8 @@ public class UpdateReportProjectDTO {
     private Integer entrustType;
     @Schema(description = "委托方id")
     private String entrustId;
+    @Schema(description = "委托方名称") //查询/分组
+    private String entrustName;
     @Schema(description = "负责人id")
     private String headId;
     @Schema(description = "负责部门id")

+ 1 - 0
src/main/java/cn/cslg/pas/common/model/cronModel/SqlObject.java

@@ -22,5 +22,6 @@ public class SqlObject {
     private String value;
     private String sqlClass;
     private String option;
+    private Boolean ifSearch;
 
 }

+ 2 - 8
src/main/java/cn/cslg/pas/common/vo/EntrustVO.java

@@ -18,17 +18,11 @@ public class EntrustVO {
      */
     private String entrustId;
 
-    /**
-     * Front:
-     * Back:数据权限名称
-     */
+
     private String name;
 
-    /**
-     * Front:
-     * Back:数据权限描述
-     */
     private Integer entrustType;
+    private Integer num;
 
 
 }

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

@@ -69,8 +69,24 @@ public class PatentDigProjectVO {
      */
     private Integer state;
 
+    /**
+     * 委托类型(1客户,2部门)
+     */
+    @Schema(description = "委托类型(1客户,2部门)")
+    private Integer entrustType;
 
     /**
+     * 委托方id
+     */
+    @Schema(description = "委托方id")
+    private String entrustId;
+
+    /**
+     * 委托方姓名
+     */
+    @Schema(description = "委托方姓名")
+    private String entrustName;
+    /**
      * 研发项目名称
      */
     private String rdName;

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

@@ -140,6 +140,9 @@ public class ReportProjectVO {
 
     @Schema(description = "报告类型")
     private Integer reportType;
+    @Schema(description = "报告类型")
+    private String reportTypeName;
+
     /**
      * 发明创造名称
      */
@@ -206,7 +209,9 @@ public class ReportProjectVO {
     @Schema(description = "产品/技术")
     private String productOrTech;
     @Schema(description = "核心结论")
-    private List<CronVO> crons;
+    private List<String> cronNames;
+    @Schema(description = "核心结论")
+    private List<Integer> cronIds;
     @Schema(description = "文件信息")
     private List<SystemFile> systemFileList;
 }

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

@@ -9,6 +9,7 @@ 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.common.vo.RdProjectVO;
 import cn.cslg.pas.domain.business.RdProject;
 import cn.cslg.pas.exception.ConditionException;
 import cn.cslg.pas.exception.UnLoginException;
@@ -95,17 +96,17 @@ public class PatentDigProjectController {
     @Operation(summary = "分组专利挖掘项目")
     @PostMapping("/groupPatentDigProject")
     public Response groupPatentDigProject(@RequestBody StringGroupRequest stringGroupRequest) throws Exception {
-        Business business = businessFactory.getClass("eventService");
-        Records records = (Records)business.getGroup(stringGroupRequest,"event");
+        Business business = businessFactory.getClass("patentDigProjectService");
+        Records records = (Records)business.getGroup(stringGroupRequest,"patentDigProject");
         return Response.success(records);
     }
 
-    @Operation(summary = "根据号码查询研发项目")
+    @Operation(summary = "查询研发项目")
     @PostMapping("/getRdProjectByNumber")
-    public Response getRdProjectByNumber(String number) throws Exception {
+    public Response getRdProjectByNumber( @RequestBody StringRequest stringRequest) throws Exception {
         Business business = businessFactory.getClass("patentDigProjectService");
         PatentDigProjectService projectService =(PatentDigProjectService)business;
-      List<RdProject>  rdProjects = projectService.getRdProjectByNumber(number);
-        return Response.success(rdProjects);
+     Records records= projectService.getRdProjectByNumber(stringRequest);
+        return Response.success(records);
     }
 }

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

@@ -107,8 +107,8 @@ public class PatentProjectController {
     @Operation(summary = "分组专利数据库")
     @PostMapping("/groupPatentProject")
     public Response groupPatentProject(@RequestBody StringGroupRequest stringGroupRequest) throws Exception {
-        Business business = businessFactory.getClass("eventService");
-        Records records = (Records)business.getGroup(stringGroupRequest,"event");
+        Business business = businessFactory.getClass("patentProjectService");
+        Records records = (Records)business.getGroup(stringGroupRequest,"patentProject");
         return Response.success(records);
     }
 

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

@@ -90,11 +90,11 @@ public class ReportProjectController {
         return Response.success();
     }
 
-    @Operation(summary = "分组专利数据库")
+    @Operation(summary = "分组报告")
     @PostMapping("/groupReportProject")
     public Response groupPatentProject(@RequestBody StringGroupRequest stringGroupRequest) throws Exception {
-        Business business = businessFactory.getClass("eventService");
-        Records records = (Records)business.getGroup(stringGroupRequest,"event");
+        Business business = businessFactory.getClass("reportProjectService");
+        Records records = (Records)business.getGroup(stringGroupRequest,"reportProject");
         return Response.success(records);
     }
 

+ 6 - 6
src/main/java/cn/cslg/pas/domain/business/CustomField.java

@@ -33,16 +33,16 @@ public class CustomField extends BaseEntity<CustomField> {
     private Integer type;
 
     /**
-     * 描述
+     * 值选择方式
      */
-    @TableField(value = "description")
-    private String description;
+    @TableField(value = "choose_type")
+    private Boolean choose_type;
 
     /**
-     * 状态
+     * 描述
      */
-    @TableField(value = "status")
-    private Boolean status;
+    @TableField(value = "description")
+    private String description;
 
     /**
      * 创建人

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

@@ -39,7 +39,7 @@ public class ReportProject extends BaseEntity<ReportProject> {
      *类型
      */
     @TableField(value = "report_type")
-    private Integer type;
+    private Integer reportType;
     /**
      * 状态
      */

+ 1 - 0
src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetComOrder.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.factorys.getOrderFactory;
 
 import cn.cslg.pas.common.model.cronModel.SqlObject;
+import cn.cslg.pas.common.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 

+ 2 - 1
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetDateTimeSql.java

@@ -15,7 +15,8 @@ public class GetDateTimeSql implements GetSqlObject{
         String re ="";
       String filed= sqlObject.getSqlField();
       String option =sqlObject.getOption();
-        re=filed+option+"'"+value+"'";
+        re="DATE_FORMAT("+filed+",'%Y-%m-%d')"+option+"'"+value+"'";
+
        return re;
     }
 

+ 58 - 0
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetDepartmentNameSql.java

@@ -0,0 +1,58 @@
+package cn.cslg.pas.factorys.getSqlFactorys;
+
+import cn.cslg.pas.common.model.cronModel.SqlObject;
+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 GetDepartmentNameSql implements GetSqlObject{
+    private SqlObject sqlObject ;
+  @Autowired
+  private PermissionService permissionService;
+    @Override
+    public String getSql( String value) {
+        Boolean ifEqual= false;
+        //根据名称查询人员id
+        List<String> ids = null;
+        if(sqlObject.getOption()=="contain")
+        {
+            sqlObject.setOption(" in ");
+
+        }
+            else if(sqlObject.getOption()=="=")
+        {
+            sqlObject.setOption(" in ");
+            ifEqual=true;
+        }
+
+       //根据名称查询
+        try {
+        String json =  permissionService.getDepartmentIdByName(value,ifEqual);
+           ids = JSON.parseArray(json,String.class);
+        }catch (Exception e){
+        }
+        if(ids==null||ids.size()==0){
+            ids =new ArrayList<>();
+            ids.add("0");
+        }
+        String idStr = StringUtils.join(ids,",");
+        String re = sqlObject.getSqlField()+sqlObject.getOption()+"("+idStr+")";
+        return re;
+    }
+    @Override
+    public void setSqlObject(SqlObject sqlObject){
+        this.sqlObject =sqlObject;
+    };
+    public SqlObject getSqlObject(){
+        return sqlObject;
+    }
+}

+ 61 - 0
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetEntrustTrueNameSql.java

@@ -0,0 +1,61 @@
+package cn.cslg.pas.factorys.getSqlFactorys;
+
+import cn.cslg.pas.common.model.cronModel.SqlObject;
+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 GetEntrustTrueNameSql implements GetSqlObject{
+    private SqlObject sqlObject ;
+  @Autowired
+  private PermissionService permissionService;
+    @Override
+    public String getSql( String value) {
+
+        List<String> entrustNames = new ArrayList<>();
+        Integer ifEqual= 0;
+        //根据名称查询人员id
+        List<EntrustVO> entrustVOS = null;
+        if(sqlObject.getField().equals("entrustNameTrue"))
+        {
+            ifEqual =0;
+
+        }
+          else{
+            ifEqual =1;
+        }
+       //根据名称查询
+        try {
+        String json =  permissionService.getEntrustsByName(value,ifEqual);
+            entrustVOS = JSON.parseArray(json,EntrustVO.class);
+        }catch (Exception e){
+        }
+        if(entrustVOS==null||entrustVOS.size()==0){
+           return " 1!=1 ";
+        }
+   entrustVOS.forEach(item->{
+String tmp ="(p.entrust_id=" +item.getEntrustId()+" and p.entrust_type="+item.getEntrustType()+")";
+entrustNames.add(tmp);
+   });
+        String names = StringUtils.join(entrustNames," or ");
+        String re = "("+names+")";
+        return re;
+    }
+    @Override
+    public void setSqlObject(SqlObject sqlObject){
+        this.sqlObject =sqlObject;
+    };
+    public SqlObject getSqlObject(){
+        return sqlObject;
+    }
+}

+ 61 - 0
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetEventNameSql.java

@@ -0,0 +1,61 @@
+package cn.cslg.pas.factorys.getSqlFactorys;
+
+import cn.cslg.pas.common.model.cronModel.SqlObject;
+import cn.cslg.pas.common.utils.StringUtils;
+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 GetEventNameSql implements GetSqlObject{
+    private SqlObject sqlObject ;
+  @Autowired
+  @Lazy
+  private EventService eventService;
+    @Override
+    public String getSql( String value) {
+        Boolean ifEqual= false;
+        //根据名称查询人员id
+        List<Integer> ids = null;
+        if(sqlObject.getOption()=="contain")
+        {
+            sqlObject.setOption(" in ");
+
+        }
+            else if(sqlObject.getOption()=="=")
+        {
+            sqlObject.setOption(" in ");
+            ifEqual=true;
+        }
+
+       //根据名称查询
+        try {
+            ids = eventService.getEventIdByName(value,ifEqual);
+
+        }catch (Exception e){
+        }
+        if(ids==null||ids.size()==0){
+            ids =new ArrayList<>();
+            ids.add(0);
+        }
+        String idStr = StringUtils.join(ids,",");
+        String re = sqlObject.getSqlField()+sqlObject.getOption()+"("+idStr+")";
+        return re;
+    }
+    @Override
+    public void setSqlObject(SqlObject sqlObject){
+        this.sqlObject =sqlObject;
+    };
+    public SqlObject getSqlObject(){
+        return sqlObject;
+    }
+}

+ 2 - 1
src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetComGroup.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.factorys.reGroupFactory;
 
 import cn.cslg.pas.common.model.cronModel.ReGroupDataVO;
+import cn.cslg.pas.common.vo.GroupReVO;
 import cn.cslg.pas.mapper.EventMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,7 +23,7 @@ private EventMapper eventMapper;
         ReGroupDataVO reGroupDataVO =new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
         String selectField ="";
-    List<String> reValues =eventMapper.getGroups(sqls,tableName,groupField,selectField);
+    List<GroupReVO> reValues =eventMapper.getGroups(sqls,tableName,groupField,selectField);
         return reGroupDataVO;
     };
 

+ 5 - 5
src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetScenarioGroup.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.factorys.reGroupFactory;
 
 import cn.cslg.pas.common.model.cronModel.ReGroupDataVO;
+import cn.cslg.pas.common.vo.GroupReVO;
 import cn.cslg.pas.domain.business.SystemDict;
 import cn.cslg.pas.mapper.EventMapper;
 import cn.cslg.pas.service.business.SystemDictService;
@@ -23,21 +24,20 @@ public class GetScenarioGroup implements QueryGroupImp {
     public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
         ReGroupDataVO reGroupDataVO =new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
-        List<String> reValues =new ArrayList<>();
         String selectField = groupField;
         List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList("ENTERPRISE_APPLICATION_SCENARIO"));
-
         //分组查询应用场景
-        List<String> scenarioIds = eventMapper.getGroups(sqls, tableName, groupField, selectField);
+        List<GroupReVO> scenarioIds = eventMapper.getGroups(sqls, tableName, groupField, selectField);
         Long total =eventMapper.getGroupsCount(sqls, tableName, groupField, selectField);
         //装载应用场景名称
         scenarioIds.forEach(item->{
-     SystemDict systemDict = systemDictList.stream().filter(tem->tem.getValue().equals(item)).findFirst().orElse(null);
+     SystemDict systemDict = systemDictList.stream().filter(tem->tem.getValue().equals(item.getValue())).findFirst().orElse(null);
             if(systemDict!=null)
-            {reValues.add(systemDict.getLabel());
+            {
                 Map<String,Object> map =new HashMap<>();
                 map.put("name",systemDict.getLabel());
                 map.put("value",systemDict.getValue());
+                map.put("count",item.getNum());
                 maps.add(map);
             }
         });

+ 5 - 3
src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetTimeGroup.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.factorys.reGroupFactory;
 
 import cn.cslg.pas.common.model.cronModel.ReGroupDataVO;
+import cn.cslg.pas.common.vo.GroupReVO;
 import cn.cslg.pas.mapper.EventMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,14 +26,15 @@ public class GetTimeGroup implements QueryGroupImp {
         List<Map<String, Object>> maps = new ArrayList<>();
         String selectField = "DATE_FORMAT(" + groupField + ",'%Y%m')";
         groupField = selectField;
-        List<String> reValues = eventMapper.getGroups(sqls, tableName, groupField, selectField);
+        List<GroupReVO> reValues = eventMapper.getGroups(sqls, tableName, groupField, selectField);
         Long total =eventMapper.getGroupsCount(sqls, tableName, groupField, selectField);
         reValues.forEach(
                 item->{
                     Map<String,Object> map =new HashMap<>();
                     if(item!=null) {
-                        map.put("name", item);
-                        map.put("value", item);
+                        map.put("name", item.getValue());
+                        map.put("value", item.getValue());
+                        map.put("count",item.getNum());
                         maps.add(map);
                     }
                 }

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

@@ -1,5 +1,8 @@
 package cn.cslg.pas.mapper;
 
+import cn.cslg.pas.common.model.cronModel.ReGroupDataVO;
+import cn.cslg.pas.common.vo.EntrustVO;
+import cn.cslg.pas.common.vo.GroupReVO;
 import cn.cslg.pas.common.vo.business.EventVO;
 import cn.cslg.pas.domain.business.Event;
 
@@ -18,8 +21,11 @@ import java.util.List;
 @Repository
 public interface EventMapper extends BaseMapper<Event> {
     public List<EventVO> getEvent(String sql1,String sql2,String sql3);
-    public List<String> getGroups(List<String> sqls,String tableName,String groupField,String selectField);
+    public List<GroupReVO> 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);
+    public List<EntrustVO> getEntrustGroup(List<String> sqls, String tableName, String groupField, String selectField);
+    public Long getEntrustGroupCount(List<String> sqls,String tableName,String groupField,String selectField);
+
 }

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

@@ -4,6 +4,7 @@ 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 cn.cslg.pas.domain.business.RdProject;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
@@ -19,5 +20,7 @@ import java.util.List;
 public interface PatentDigProjectMapper extends BaseMapper<PatentDigProject> {
     public List<PatentDigProjectVO> getPatentDigProject(String sql1, String sql2, String sql3);
     public Long getPatentDigCount(String sql1);
+    public List<RdProject> getRdProject(String sql1, String sql2, String sql3);
+    public Long getRdProjectCount(String sql1);
 
 }

+ 4 - 4
src/main/java/cn/cslg/pas/service/business/AssoScenarioMatterService.java

@@ -32,17 +32,17 @@ public class AssoScenarioMatterService extends ServiceImpl<AssoScenarioMatterMap
     public List<Matter> queryMatterIds(List<Integer> scenarioIds){
         List<Integer> matterIds = new ArrayList<>();
         List<Matter> matters = new ArrayList<>();
-        if(scenarioIds != null && scenarioIds.size() != 0){
+
             LambdaQueryWrapper<AssoScenarioMatter> queryWrapper = new LambdaQueryWrapper<>();
+        if(scenarioIds != null && scenarioIds.size() != 0) {
             queryWrapper.in(AssoScenarioMatter::getScenarioId, scenarioIds);
+        }
             List<AssoScenarioMatter> assoScenarioMatters = this.list(queryWrapper);
             matterIds = assoScenarioMatters.stream().map(AssoScenarioMatter::getMatterId).distinct().collect(Collectors.toList());
             LambdaQueryWrapper<Matter> matterLambdaQueryWrapper = new LambdaQueryWrapper<>();
             matterLambdaQueryWrapper.in(Matter::getId, matterIds);
             matters = matterService.list(matterLambdaQueryWrapper);
-        } else {
-            throw new XiaoShiException("scenarioIds不能为空");
-        }
+
         return matters;
     }
 }

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

@@ -431,6 +431,18 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
 
     }
 
+public List<Integer> getEventIdByName(String value,Boolean ifEqual){
+    LambdaQueryWrapper<Event> queryWrapper = new LambdaQueryWrapper<>();
+    queryWrapper.select(Event::getId);
+    if (ifEqual != null && ifEqual.equals(true)) {
+        queryWrapper.like(Event::getName, value);
+    } else {
+        queryWrapper.eq(Event::getName, value);
+    }
+    java.util.function.Function<Object, Integer> f = (o -> Integer.parseInt(o.toString()));
+    List<Integer> ids = this.listObjs(queryWrapper, f);
+    return ids;
 
+}
 
 }

+ 413 - 245
src/main/java/cn/cslg/pas/service/business/PatentDigProjectService.java

@@ -1,16 +1,18 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.ClientDTO;
 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.cronModel.*;
 import cn.cslg.pas.common.model.request.GroupRequest;
 import cn.cslg.pas.common.model.request.QueryRequest;
+import cn.cslg.pas.common.model.request.StringGroupRequest;
+import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.vo.DepartmentVO;
+import cn.cslg.pas.common.vo.RdProjectVO;
 import cn.cslg.pas.common.vo.business.PatentDigProjectVO;
 import cn.cslg.pas.common.vo.business.PatentProjectVO;
 import cn.cslg.pas.common.vo.business.SimplePersonVO;
@@ -19,10 +21,13 @@ import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
 
+import cn.cslg.pas.factorys.reGroupFactory.QueryGroupFactory;
+import cn.cslg.pas.factorys.reGroupFactory.QueryGroupImp;
 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.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -30,6 +35,7 @@ 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.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -73,6 +79,9 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
     @Autowired
     private ScenarioService scenarioService;
 
+    @Autowired
+    private QueryGroupFactory queryGroupFactory;
+
     @Override
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
         List<String> sqls = formatQueryService.reSqls(queryRequest, "patentDigProject");
@@ -123,7 +132,36 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
 
     @Override
     public Object getGroup(GroupRequest groupRequest, String tableName) throws Exception {
-        return null;
+        StringRequest stringRequest = new StringRequest();
+        BeanUtils.copyProperties(groupRequest, stringRequest);
+        List<String> sqls = formatQueryService.reSqls(stringRequest, tableName);
+        //格式化 分组
+        GroupConfig groupConfig = null;
+        if (groupRequest.getGroupBy() != null) {
+            String json = CommonService.readJsonFile(tableName + ".json");
+            List<GroupConfig> groupConfigs = JSON.parseArray(json, GroupConfig.class);
+            groupConfig = groupConfigs.stream().filter(item -> groupRequest.getGroupBy().equals(item.getField())).findFirst().orElse(null);
+            if (groupConfig == null) {
+                throw new XiaoShiException("未找到配置");
+            }
+        }
+
+        tableName = "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";
+        //返回分组数据
+        QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
+        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
+
+        //装载数据
+        GroupVO groupVO = new GroupVO();
+        groupVO.setField(groupRequest.getGroupBy());
+        groupVO.setValues(reGroupDataVO.getValues());
+
+        Records records = new Records();
+        records.setCurrent(groupRequest.getCurrent());
+        records.setSize(groupRequest.getSize());
+        records.setData(groupVO);
+        records.setTotal(reGroupDataVO.getTotal());
+        return records;
     }
 
     @Override
@@ -146,34 +184,89 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
         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());
+        //TODO 当委托方id或者委托方名称不为空时,
+        if (patentDigProjectDTO.getEntrustId() != null || patentDigProjectDTO.getEntrustName() != null) {
+            //根据创建人的租户类型设置project的委托类型
+            if (personnelVO.getTenantType().equals("1")) {
+                project.setEntrustType(1);
+
+                //当委托方id不为空时
+                if (patentDigProjectDTO.getEntrustId() != null) {
+                    project.setEntrustId(patentDigProjectDTO.getEntrustId());
+                }
+                //若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
+                else {
+                    if (patentDigProjectDTO.getEntrustName() != null && patentDigProjectDTO.getEntrustName().trim() != "") {
+                        ClientDTO clientDTO = new ClientDTO();
+                        clientDTO.setName(patentDigProjectDTO.getEntrustName());
+                        clientDTO.setTenantId(personnelVO.getTenantId());
+                        try {
+                            String res = permissionService.addClient(clientDTO);
+                            JSONObject jsonObject = JSONObject.parseObject(res);
+                            Integer clientId = Integer.parseInt(jsonObject.get("data").toString());
+                            project.setEntrustId(clientId.toString());
+                            project.setEntrustType(1);
+                        } catch (Exception e) {
+                            throw new XiaoShiException("网络异常");
+                        }
+                    }
+                }
+            } else {
+                if (patentDigProjectDTO.getEntrustId() != null) {
+                    project.setEntrustType(0);
+                    project.setEntrustId(patentDigProjectDTO.getEntrustId());
                 }
             }
+        }
+
+
+        project.insert();
+        patentDigProject.setProjectId(project.getId());
+
 
+        RdProject rdProject = new RdProject();
+        List<RdProject> rdProjects = new ArrayList<>();
+
+        if (patentDigProjectDTO.getRdnumber() != null) {
+            //根据研发项目编号查询研发项目
+            LambdaQueryWrapper<RdProject> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(RdProject::getNumber, patentDigProjectDTO.getRdnumber());
+            rdProjects = rdProjectService.list(queryWrapper);
         }
+        else if (patentDigProjectDTO.getRdName() != null && rdProjects.size() == 0) {
+            //根据研发项目编号查询研发项目
+            LambdaQueryWrapper<RdProject> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(RdProject::getName, patentDigProjectDTO.getRdName());
+            rdProjects = rdProjectService.list(queryWrapper);
+
+        }
+
+        if (rdProjects.size() != 0) {
+            rdProject = rdProjects.get(0);
+            rdProject.setProductPhase(patentDigProjectDTO.getProductPhase());
+            rdProject.setProduct(patentDigProjectDTO.getProduct());
+            rdProject.updateById();
+
+        } else {
+            if (patentDigProjectDTO.getRdName() != null || patentDigProjectDTO.getRdnumber() != null || patentDigProjectDTO.getProduct() != null || patentDigProjectDTO.getProductPhase() != null) {
+                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();
+            }
+        }
+if(rdProject.getId()!=null) {
+    patentDigProject.setRdProjectId(rdProject.getId());
+}
+
+
+
         patentDigProject.setState(1);
+        patentDigProject.setProcess("0");
         patentDigProject.setTenantId(personnelVO.getTenantId());
         patentDigProject.insert();
 
@@ -256,6 +349,25 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
         Project project = projectService.getById(projectUpdateDTO.getId());
         project.setHeadId(projectUpdateDTO.getHeadId());
         project.setDescription(projectUpdateDTO.getDescription());
+
+        //当委托方id不为空时
+        if (projectUpdateDTO.getEntrustId() != null) {
+            project.setEntrustId(projectUpdateDTO.getEntrustId());
+        } else {//若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
+            if (projectUpdateDTO.getEntrustName() != null && projectUpdateDTO.getEntrustName().trim() != "") {
+                ClientDTO clientDTO = new ClientDTO();
+                clientDTO.setName(projectUpdateDTO.getEntrustName());
+                clientDTO.setTenantId(personnelVO.getTenantId());
+                try {
+                    String res = permissionService.addClient(clientDTO);
+                    JSONObject jsonObject = JSONObject.parseObject(res);
+                    Integer clientId = Integer.parseInt(jsonObject.get("data").toString());
+                    project.setEntrustId(clientId.toString());
+                } catch (Exception e) {
+                    throw new XiaoShiException("网络异常");
+                }
+            }
+        }
         project.updateById();
 
 
@@ -274,91 +386,99 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
             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());
-                    }
-                }
+            if (projectUpdateDTO.getProcess() != null) {
+                patentDigProject.setProcess(projectUpdateDTO.getProcess());
 
             }
-
         }
 
-        //移除和附件关联
-        LambdaQueryWrapper<AssoProjectFile> assoQueryWrapper = new LambdaQueryWrapper<>();
-        assoQueryWrapper.eq(AssoProjectFile::getProjectId, projectUpdateDTO.getId());
-        assoProjectFileService.remove(assoQueryWrapper);
+            RdProject rdProject = new RdProject();
+            List<RdProject> rdProjects = new ArrayList<>();
+            if (projectUpdateDTO.getRdnumber() != null) {
+                //根据研发项目编号查询研发项目
+                LambdaQueryWrapper<RdProject> queryWrappera = new LambdaQueryWrapper<>();
+                queryWrappera.eq(RdProject::getNumber, projectUpdateDTO.getRdnumber());
+                rdProjects = rdProjectService.list(queryWrappera);
+            } else if (projectUpdateDTO.getRdName() != null && rdProjects.size() == 0) {
+                //根据研发项目编号查询研发项目
+                LambdaQueryWrapper<RdProject> queryWrappera = new LambdaQueryWrapper<>();
+                queryWrappera.eq(RdProject::getName, projectUpdateDTO.getRdName());
+                rdProjects = rdProjectService.list(queryWrappera);
 
-        /**
-         * 装载和附件关联
-         */
-        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);
+
+            if (rdProjects.size() != 0) {
+                rdProject = rdProjects.get(0);
+                rdProject.setProductPhase(projectUpdateDTO.getProductPhase());
+                rdProject.setProduct(projectUpdateDTO.getProduct());
+                rdProject.updateById();
+
+            } else {
+                if (projectUpdateDTO.getRdName() != null || projectUpdateDTO.getRdnumber() != null || projectUpdateDTO.getProduct() != null || projectUpdateDTO.getProductPhase() != null) {
+                    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();
+                }
+            }
+            if (rdProject.getId() != null) {
+                patentDigProject.setRdProjectId(rdProject.getId());
             }
-        }
 
-        //删除和事件关联
-        LambdaQueryWrapper<AssoProjectEvent> assoEventQueryWrapper = new LambdaQueryWrapper<>();
-        assoEventQueryWrapper.eq(AssoProjectEvent::getProjectId, projectUpdateDTO.getId());
-        assoProjectEventService.remove(assoEventQueryWrapper);
-        /**
-         * 装载事件与project关联
-         */
-        List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
+            //移除和附件关联
+            LambdaQueryWrapper<AssoProjectFile> assoQueryWrapper = new LambdaQueryWrapper<>();
+            assoQueryWrapper.eq(AssoProjectFile::getProjectId, projectUpdateDTO.getId());
+            assoProjectFileService.remove(assoQueryWrapper);
 
-        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);
+            /**
+             * 装载和附件关联
+             */
+            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);
+                }
             }
-            if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
-                assoProjectEventService.saveBatch(assoProjectEvents);
+
+            //删除和事件关联
+            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<>();
@@ -384,186 +504,234 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
         }
 
 
-        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 Records getRdProjectByNumber(@RequestBody StringRequest stringRequest ) {
 
-        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());
-                        }
+        List<String> sqls = formatQueryService.reSqls(stringRequest, "rdProject");
+        //根据sql查询专题库信息
+        List<RdProject> patentProjectVOS = patentDigProjectMapper.getRdProject(sqls.get(0), sqls.get(1), sqls.get(2));
+        Long total = patentDigProjectMapper.getRdProjectCount(sqls.get(0));
+        //装载专利数据库信息
+        Records records = new Records();
+        records.setCurrent(stringRequest.getCurrent());
+        records.setSize(stringRequest.getSize());
+        records.setData(patentProjectVOS);
+        records.setTotal(total);
+        return records;
+    }
 
-                        if (item.getHeadId() != null) {
-                            createIds.add(item.getHeadId());
-                        }
-                        if (item.getId() != null) {
-                            ids.add(item.getId());
-                        }
 
+    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<Client> clients = new ArrayList<>();
+        List<String> departmentIds = new ArrayList<>();
+        List<Integer> clientIds = new ArrayList<>();
+        List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
+        List<DepartmentVO> departmentVOS = 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 (item.getEntrustType() != null && item.getEntrustType().equals(2)) {
+                        departmentIds.add(item.getEntrustId());
+                    }
 
-            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 (item.getEntrustType() != null && item.getEntrustType().equals(1)) {
+                        clientIds.add(Integer.parseInt(item.getEntrustId()));
+                    }
+                }
+        );
 
 
-            //查询文件
-            if (guids.size() != 0) {
-                String res = fileManagerService.getSystemFileFromFMS(guids);
+        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());
+        }
 
-                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 (guids.size() != 0) {
+            String res = fileManagerService.getSystemFileFromFMS(guids);
 
-                //查询事件
-                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);
-                    }
+            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);
+
+            //查询部门名称
+            if (departmentIds.size() != 0) {
+                String json = permissionService.getDepartmentByIdsFromPCS(departmentIds);
+                departmentVOS = JSON.parseArray(json, DepartmentVO.class);
+
             }
 
+            //查询和参与人关联
+            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);
+        }
 
+        //查询客户名称
+        if (clientIds.size() != 0) {
+            String res = permissionService.getClientByIdsFromPCS(clientIds);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            clients = JSONObject.parseArray(jsonObject.getString("data"), Client.class);
+        }
 
 
+        //装载信息
+        for (PatentDigProjectVO patentDigProjectVO : patentDigProjectVOS) {
 
-            //装载信息
-            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());
+            }
 
-                //装载人员信息
-                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(headPersonnel.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());
 
-                //装载参与人
-                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);
-                        }
+            }
+            patentDigProjectVO.setScenarioIds(scenarioIds);
+            patentDigProjectVO.setMatterIds(matterIds);
+            patentDigProjectVO.setEventIds(eventIds);
+            patentDigProjectVO.setScenarioNames(scenarioTmpNames);
+            patentDigProjectVO.setMatterNames(matterTmpNames);
+            patentDigProjectVO.setEventNames(eventTmpNames);
+
+
+            //裝載委托方
+            if (patentDigProjectVO.getEntrustType() != null) {
+                //当委托方为客户时
+                if (patentDigProjectVO.getEntrustType().equals(1)) {
+                    Client client = clients.stream().filter(item -> item.getId().equals(Integer.parseInt(patentDigProjectVO.getEntrustId()))).findFirst().orElse(null);
+
+                    if (client != null) {
+                        patentDigProjectVO.setEntrustName(client.getName());
                     }
-                }
 
-                //装载事件 应用场景,处理事项
-                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());
+                } else if (patentDigProjectVO.getEntrustType().equals(2)) {
+                    DepartmentVO departmentVO = departmentVOS.stream().filter(item -> item.getDepartId().equals(patentDigProjectVO.getEntrustId())).findFirst().orElse(null);
 
+                    if (departmentVO != null) {
+                        patentDigProjectVO.setEntrustName(departmentVO.getDepartName());
                     }
                 }
-                patentDigProjectVO.setScenarioIds(scenarioIds);
-                patentDigProjectVO.setMatterIds(matterIds);
-                patentDigProjectVO.setEventIds(eventIds);
-                patentDigProjectVO.setScenarioNames(scenarioTmpNames);
-                patentDigProjectVO.setMatterNames(matterTmpNames);
-                patentDigProjectVO.setEventNames(eventTmpNames);
-            }
-
 
+            }
         }
 
+
     }
+
+}

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

@@ -170,10 +170,10 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
         //TODO 根据id删除导入任务信息(导入任务模块未完成,暂时不做)
 
         //删除专利数据库
-        LambdaQueryWrapper<PatentProject> patentProjectLambdaQueryWrapper =new LambdaQueryWrapper<>();
-        patentProjectLambdaQueryWrapper.in(PatentProject::getProjectId,ids);
+        LambdaQueryWrapper<PatentProject> patentProjectLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        patentProjectLambdaQueryWrapper.in(PatentProject::getProjectId, ids);
         this.remove(patentProjectLambdaQueryWrapper);
-projectService.removeBatchByIds(ids);
+        projectService.removeBatchByIds(ids);
 
         //
         return ids;
@@ -202,6 +202,7 @@ projectService.removeBatchByIds(ids);
             }
         }
 
+        tableName = "patent_project as pp left join project as p on pp.project_id = p.id ";
         //返回分组数据
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
         ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
@@ -819,11 +820,11 @@ projectService.removeBatchByIds(ids);
                     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());
+                    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());
+                    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());
+                    scenarioIds = scenarioTmps.stream().map(Scenario::getId).collect(Collectors.toList());
 
                 }
             }
@@ -840,15 +841,14 @@ projectService.removeBatchByIds(ids);
                 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)){
-               Product product =  products.stream().filter(item->item.getId().equals(assoProjectTreeNode.getFieldId())).findFirst().orElse(null);
-                        if(product!=null){
+                    if (assoProjectTreeNode.getTreeType().equals(2)) {
+                        Product product = products.stream().filter(item -> item.getId().equals(assoProjectTreeNode.getFieldId())).findFirst().orElse(null);
+                        if (product != null) {
                             patentProjectVO.setProductOrCategoryName(product.getName());
                         }
-                    }
-                    else if(assoProjectTreeNode.getTreeType().equals(3)){
-                        ProductCategory productCategory =  productCategories.stream().filter(item->item.getId().equals(assoProjectTreeNode.getFieldId())).findFirst().orElse(null);
-                        if(productCategory!=null){
+                    } else if (assoProjectTreeNode.getTreeType().equals(3)) {
+                        ProductCategory productCategory = productCategories.stream().filter(item -> item.getId().equals(assoProjectTreeNode.getFieldId())).findFirst().orElse(null);
+                        if (productCategory != null) {
                             patentProjectVO.setProductOrCategoryName(productCategory.getName());
                         }
                     }

+ 87 - 6
src/main/java/cn/cslg/pas/service/business/ReportProjectService.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.ClientDTO;
 import cn.cslg.pas.common.dto.business.PatentProjectDTO;
 import cn.cslg.pas.common.dto.business.ProjectEventDTO;
 import cn.cslg.pas.common.dto.business.ReportProjectDTO;
@@ -194,7 +195,7 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
                 throw new XiaoShiException("未找到配置");
             }
         }
-
+        tableName = "report as rp left join project as p on rp.project_id =p.id ";
         //返回分组数据
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
         ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
@@ -243,6 +244,40 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
         BeanUtils.copyProperties(reportProjectDTO, project);
         project.setCreateId(personnelVO.getId());
         project.setTenantId(personnelVO.getTenantId());
+        //TODO 当委托方id或者委托方名称不为空时,
+        if (reportProjectDTO.getEntrustId() != null || reportProjectDTO.getEntrustName() != null) {
+            //根据创建人的租户类型设置project的委托类型
+            if (personnelVO.getTenantType().equals("1")) {
+                project.setEntrustType(1);
+
+                //当委托方id不为空时
+                if (reportProjectDTO.getEntrustId() != null) {
+                    project.setEntrustId(reportProjectDTO.getEntrustId());
+                }
+                //若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
+                else {
+                    if (reportProjectDTO.getEntrustName() != null && reportProjectDTO.getEntrustName().trim() != "") {
+                        ClientDTO clientDTO = new ClientDTO();
+                        clientDTO.setName(reportProjectDTO.getEntrustName());
+                        clientDTO.setTenantId(personnelVO.getTenantId());
+                        try {
+                            String res = permissionService.addClient(clientDTO);
+                            JSONObject jsonObject = JSONObject.parseObject(res);
+                            Integer clientId = Integer.parseInt(jsonObject.get("data").toString());
+                            project.setEntrustId(clientId.toString());
+                            project.setEntrustType(1);
+                        } catch (Exception e) {
+                            throw new XiaoShiException("网络异常");
+                        }
+                    }
+                }
+            } else {
+                if (reportProjectDTO.getEntrustId() != null) {
+                    project.setEntrustType(0);
+                    project.setEntrustId(reportProjectDTO.getEntrustId());
+                }
+            }
+        }
         project.insert();
         /**
          * 装载和报告关联
@@ -367,6 +402,40 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
          */
         Project project = projectService.getById(updateReportProjectDTO.getId());
         BeanUtils.copyProperties(updateReportProjectDTO, project);
+        //TODO 当委托方id或者委托方名称不为空时,
+        if (updateReportProjectDTO.getEntrustId() != null || updateReportProjectDTO.getEntrustName() != null) {
+            //根据创建人的租户类型设置project的委托类型
+            if (personnelVO.getTenantType().equals("1")) {
+                project.setEntrustType(1);
+
+                //当委托方id不为空时
+                if (updateReportProjectDTO.getEntrustId() != null) {
+                    project.setEntrustId(updateReportProjectDTO.getEntrustId());
+                }
+                //若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
+                else {
+                    if (updateReportProjectDTO.getEntrustName() != null && updateReportProjectDTO.getEntrustName().trim() != "") {
+                        ClientDTO clientDTO = new ClientDTO();
+                        clientDTO.setName(updateReportProjectDTO.getEntrustName());
+                        clientDTO.setTenantId(personnelVO.getTenantId());
+                        try {
+                            String res = permissionService.addClient(clientDTO);
+                            JSONObject jsonObject = JSONObject.parseObject(res);
+                            Integer clientId = Integer.parseInt(jsonObject.get("data").toString());
+                            project.setEntrustId(clientId.toString());
+                            project.setEntrustType(1);
+                        } catch (Exception e) {
+                            throw new XiaoShiException("网络异常");
+                        }
+                    }
+                }
+            } else {
+                if (updateReportProjectDTO.getEntrustId() != null) {
+                    project.setEntrustType(0);
+                    project.setEntrustId(updateReportProjectDTO.getEntrustId());
+                }
+            }
+        }
         project.updateById();
         /**
          * 装载和报告关联
@@ -494,6 +563,7 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
         List<AssoReportCron> assoReportCrons =new ArrayList<>();
         List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
         List<SystemDict> systemDictList =new ArrayList<>();
+        List<SystemDict> reportTypeList =new ArrayList<>();
         List<Scenario> scenarios = new ArrayList<>();
         List<Matter> matters = new ArrayList<>();
         reportProjectVOs.forEach(
@@ -564,6 +634,9 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
                 systemDictList =systemDictService.list(systemDictLambdaQueryWrapper);
 
             }
+            LambdaQueryWrapper<SystemDict> systemDictLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            systemDictLambdaQueryWrapper.eq(SystemDict::getType,"REPORT_TYPE");
+            reportTypeList=systemDictService.list(systemDictLambdaQueryWrapper);
 
         }
 
@@ -701,7 +774,8 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
             reportProjectVO.setEventNames(eventTmpNames);
 
 
-            List<CronVO> cronVOS =new ArrayList<>();
+            List<Integer> reCronIds =new ArrayList<>();
+            List<String> reCronNames =new ArrayList<>();
             //装载核心结论
             if(assoReportCrons!=null&&assoReportCrons.size()!=0){
                 List<AssoReportCron> assoReportCronTmps =assoReportCrons.stream().filter(item->item.getProjectId().equals(reportProjectVO.getId())).collect(Collectors.toList());
@@ -711,14 +785,21 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
                   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);
+                      reCronIds.add(Integer.parseInt(item.getValue()));
+                      reCronNames.add(item.getLabel());
                   });
 
                 }
             }
-        reportProjectVO.setCrons(cronVOS);
+        reportProjectVO.setCronIds(reCronIds);
+            reportProjectVO.setCronNames(reCronNames);
+
+            //
+         SystemDict systemDict =   reportTypeList.stream().filter(item->reportProjectVO.getReportType().equals(Integer.parseInt(item.getValue()))).findFirst().orElse(null);
+         if(systemDict!=null){
+             reportProjectVO.setReportTypeName(systemDict.getLabel());
+         }
+
         }
     }
 

+ 25 - 1
src/main/java/cn/cslg/pas/service/business/SystemDictService.java

@@ -63,17 +63,41 @@ public class SystemDictService extends ServiceImpl<SystemDictMapper, SystemDict>
         return ids;
     }
 
+    public List<String> getCronsOrderIds(Integer orderType) {
+        LambdaQueryWrapper<SystemDict> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.select(SystemDict::getValue);
+        queryWrapper.eq(SystemDict::getGroupType, "ASSESS");
+        if(orderType.equals(0)){
+            queryWrapper.orderByAsc(SystemDict::getLabel);
+        }
+        else{
+            queryWrapper.orderByDesc(SystemDict::getLabel);
+        }
+        java.util.function.Function<Object, String> f = (o -> o.toString());
+        List<String> ids = this.listObjs(queryWrapper, f);
+        return ids;
+    }
 
 
     public List<SystemDict> getCrons(Integer reportType) {
         String type ="";
+        if(reportType==null){
+            type="";
+            reportType=-1;
+        }
+
         switch (reportType){
             case 0:
                 type="INVALID_ASSESS";
                 break;
         }
         LambdaQueryWrapper<SystemDict> queryWrapper = new LambdaQueryWrapper<>();
-      queryWrapper.eq(SystemDict::getType,type);
+        if(type.equals("")){
+            queryWrapper.eq(SystemDict::getGroupType, "ASSESS");
+        }
+        else {
+            queryWrapper.eq(SystemDict::getType, type);
+        }
         List<SystemDict> systemDictList = this.list(queryWrapper);
         return systemDictList;
     }

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

@@ -196,4 +196,60 @@ public class PermissionService {
                 .build();
         return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
     }
+
+    /**
+     * 根据名称获得委托方id和类型接口
+     * @param
+     * @return
+     * @throws IOException
+     */
+    public String getEntrustsByName(String name,Integer type) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getEntrustsByName?name=" + name+"&type="+type)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+
+    /**
+     * 根据部门ids查询部门列表
+     *
+     * @param ids 部门id
+     * @return 返回装载着客户列表数据的data的String
+     */
+    public String getEntrustsByIdAndType(List<String> ids) throws IOException {
+        String param = new Gson().toJson(ids);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getEntrustsByIdAndType")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
+
+
+
+    /**
+     * 根据名称模糊查询部门接口
+     * @param
+     * @return
+     * @throws IOException
+     */
+    public String getDepartmentIdByName(String departmentName, Boolean ifEqual) throws IOException {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(PCSUrl + "/permission/api/system/getDepartmentIdByName?departmentName=" + departmentName+"&ifEqual="+ifEqual)
+                .get()
+                .build();
+        return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
+    }
+
 }

+ 202 - 152
src/main/resources/jsons/patentDigProject.json

@@ -1,225 +1,275 @@
 [
-  {"name":"Id",
-    "type":"Integer",
-    "value":"id",
-    "field":"id",
+  {
+    "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",
+    "groupClass": "",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "false"
+  },
+  {
+    "name": "挖掘项目名称",
+    "type": "String",
+    "value": "name",
+    "field": "name",
+    "sqlField": "dp.name",
+    "sqlClass": "getLikeSql",
     "orderClass": "getComOrder",
-    "groupClass":"getComGroup",
-  "ifSearch":"true",
-  "ifGroup": "false",
-    "ifShow":"true"
-},
-  {"name":"创建人",
-    "type":"String",
-    "value":"createName",
+    "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",
+    "groupClass": "getComGroup",
+    "ifSearch": "true",
     "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow": "true"
   },
-  {"name":"创建时间",
-    "type":"DateTime",
-    "value":"createTime",
+  {
+    "name": "创建时间",
+    "type": "DateTime",
+    "value": "createTime",
     "field": "createTime",
     "sqlField": "p.create_time",
     "sqlClass": "getDateTimeSql",
     "orderClass": "getComOrder",
-    "groupClass":"getTimeGroup",
-    "ifSearch":"true",
+    "groupClass": "getTimeGroup",
+    "ifSearch": "true",
     "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow": "true"
   },
-  {"name":"描述",
-    "type":"String",
-    "value":"description",
+  {
+    "name": "描述",
+    "type": "String",
+    "value": "description",
     "field": "description",
     "sqlField": "p.description",
     "sqlClass": "getComSql",
     "orderClass": "getComOrder",
-    "ifSearch":"false",
+    "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow": "true"
   },
-  {"name":"负责人名称",
-    "type":"String",
-    "value":"headName",
+  {
+    "name": "负责人名称",
+    "type": "String",
+    "value": "headName",
     "field": "headName",
-    "sqlField": "scenario_id",
-    "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "sqlField": "p.head_id",
+    "sqlClass": "getCreateNameSql",
+    "orderClass": "getCreateNameOrder",
+    "groupClass": "getComGroup",
+    "ifSearch": "true",
     "ifGroup": "false",
-    "ifShow":"true"
-  }
-,
-  {"name":"产出",
-    "type":"String",
-    "value":"output",
+    "ifShow": "true",
+    "defaultHidden": "true"
+  },
+  {
+    "name": "产出",
+    "type": "String",
+    "value": "output",
     "field": "output",
-    "sqlField": "scenario_id",
-    "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"false",
+    "sqlField": "dp.output",
+    "sqlClass": "getLikeSql",
+    "orderClass": "getComOrder",
+    "groupClass": "getComGroup",
+    "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow":"true",
+    "ifShow": "true",
     "defaultHidden": "true"
-  }
-,
-  {"name":"技术方向",
-    "type":"String",
-    "value":"technicalDirection",
+  },
+  {
+    "name": "技术方向",
+    "type": "String",
+    "value": "technicalDirection",
     "field": "technicalDirection",
-    "sqlField": "scenario_id",
-    "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "sqlField": "dp.technical_direction",
+    "sqlClass": "getLikeSql",
+    "orderClass": "getComOrder",
+    "groupClass": "getComGroup",
+    "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow":"true",
+    "ifShow": "true",
     "defaultHidden": "true"
-  }
-,
-  {"name":"是否检索",
-    "type":"Integer",
-    "value":"ifSearch",
+  },
+  {
+    "name": "是否检索",
+    "type": "Integer",
+    "value": "ifSearch",
     "field": "ifSearch",
-    "sqlField": "scenario_id",
+    "sqlField": "dp.if_search",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "orderClass": "getComOrder",
+    "groupClass": "getComGroup",
+    "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow":"true",
+    "ifShow": "true",
     "defaultHidden": "true"
-  }
-,
-  {"name":"相关竞争对手",
-    "type":"String",
-    "value":"relatedCompetitors",
+  },
+  {
+    "name": "相关竞争对手",
+    "type": "String",
+    "value": "relatedCompetitors",
     "field": "relatedCompetitors",
-    "sqlField": "scenario_id",
+    "sqlField": "dp.related_competitors",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"false",
+    "orderClass": "getComOrder",
+    "groupClass": "getComGroup",
+    "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow":"true",
+    "ifShow": "true",
     "defaultHidden": "true"
-  }
-,
-  {"name":"技术关键词",
-    "type":"String",
-    "value":"technicalKeyword",
+  },
+  {
+    "name": "技术关键词",
+    "type": "String",
+    "value": "technicalKeyword",
     "field": "technicalKeyword",
-    "sqlField": "scenario_id",
+    "sqlField": "dp.technical_keyword",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"false",
+    "orderClass": "getComOrder",
+    "groupClass": "getComGroup",
+    "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow":"true",
+    "ifShow": "true",
     "defaultHidden": "true"
-  }
-,
-  {"name":"进度",
-    "type":"String",
-    "value":"process",
+  },
+  {
+    "name": "进度",
+    "type": "String",
+    "value": "process",
     "field": "process",
-    "sqlField": "scenario_id",
+    "sqlField": "dp.process",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"false",
+    "orderClass": "getComOrder",
+    "groupClass": "getComGroup",
+    "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow":"true",
+    "ifShow": "true",
     "defaultHidden": "true"
   },
-  {"name":"状态",
-    "type":"String",
-    "value":"state",
+  {
+    "name": "状态",
+    "type": "String",
+    "value": "state",
     "field": "state",
-    "sqlField": "scenario_id",
+    "sqlField": "dp.state",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "orderClass": "getComOrder",
+    "groupClass": "getComGroup",
+    "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow":"true",
+    "ifShow": "true",
     "defaultHidden": "true"
   },
-  {"name":"研发项目名称",
-    "type":"String",
-    "value":"rdName",
+  {
+    "name": "研发项目名称",
+    "type": "String",
+    "value": "rdName",
     "field": "rdName",
-    "sqlField": "scenario_id",
+    "sqlField": "rp.name",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "orderClass": "getComOrder",
+    "groupClass": "getComGroup",
+    "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow":"true",
+    "ifShow": "true",
     "defaultHidden": "true"
   },
-  {"name":"研发项目编号",
-    "type":"String",
-    "value":"rdnumber",
+  {
+    "name": "研发项目编号",
+    "type": "String",
+    "value": "rdnumber",
     "field": "rdnumber",
-    "sqlField": "scenario_id",
+    "sqlField": "rp.number",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "orderClass": "getComOrder",
+    "groupClass": "getComGroup",
+    "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow":"true",
+    "ifShow": "true",
     "defaultHidden": "true"
-  }
-,
-  {"name":"产品",
-    "type":"String",
-    "value":"product",
+  },
+  {
+    "name": "产品",
+    "type": "String",
+    "value": "product",
     "field": "product",
-    "sqlField": "scenario_id",
+    "sqlField": "rp.product",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "orderClass": "getComOrder",
+    "groupClass": "getComGroup",
+    "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow":"true",
+    "ifShow": "true",
     "defaultHidden": "true"
   },
-  {"name":"产品阶段",
-    "type":"String",
-    "value":"productPhase",
+  {
+    "name": "产品阶段",
+    "type": "String",
+    "value": "productPhase",
     "field": "productPhase",
-    "sqlField": "scenario_id",
+    "sqlField": "rp.product_phase",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"false",
+    "orderClass": "getComOrder",
+    "groupClass": "getComGroup",
+    "ifSearch": "false",
+    "ifGroup": "false",
+    "ifShow": "true",
+    "defaultHidden": "true"
+  },
+  {
+    "name": "创建月份",
+    "type": "DateTime",
+    "value": "createTimeMonth",
+    "field": "createTimeMonth",
+    "sqlField": "p.create_time",
+    "sqlClass": "getDateTimeMonthSql",
+    "orderClass": "getComOrder",
+    "groupClass": "getTimeGroup",
+    "ifSearch": "false",
+    "ifGroup": "true",
+    "ifShow": "false"
+  },
+  {
+    "name": "委托方",
+    "type": "String",
+    "value": "entrustName",
+    "field": "entrustName",
+    "sqlField": "entrust_id",
+    "sqlClass": "getEntrustTrueNameSql",
+    "orderClass": "getEntrustOrder",
+    "groupClass": "getEntrustGroup",
+    "ifSearch": "true",
     "ifGroup": "false",
-    "ifShow":"true",
+    "ifShow": "true",
     "defaultHidden": "true"
+  },
+  {
+    "name": "委托方",
+    "type": "String",
+    "value": "entrustNameTrue",
+    "field": "entrustNameTrue",
+    "sqlField": "entrust_id",
+    "sqlClass": "getEntrustTrueNameSql",
+    "orderClass": "getEntrustOrder",
+    "groupClass": "getEntrustGroup",
+    "ifSearch": "false",
+    "ifGroup": "true",
+    "ifShow": "false",
+    "defaultHidden": "false"
   }
-
 ]

+ 44 - 19
src/main/resources/jsons/patentProject.json

@@ -28,7 +28,7 @@
     "type":"String",
     "value":"headName",
     "field": "headName",
-    "sqlField": "head_id",
+    "sqlField": "p.head_id",
     "sqlClass": "getCreateNameSql",
     "orderClass": "getCreateNameOrder",
     "groupClass":"getComGroup",
@@ -49,7 +49,6 @@
     "ifGroup": "false",
     "ifShow":"true"
   },
-
   {"name":"创建时间",
     "type":"DateTime",
     "value":"createTime",
@@ -102,7 +101,7 @@
     "value":"departmentName",
     "field": "departmentName",
     "sqlField": "p.department_id",
-    "sqlClass": "getComSql",
+    "sqlClass": "getDepartmentNameSql",
     "orderClass": "getDepartmentNameOrder",
     "groupClass":"getScenarioGroup",
     "ifSearch":"true",
@@ -114,24 +113,38 @@
     "type":"String",
     "value":"entrustName",
     "field": "entrustName",
-    "sqlField": "scenario_id",
-    "sqlClass": "getComSql",
+    "sqlField": "entrust_id",
+    "sqlClass": "getEntrustTrueNameSql",
     "orderClass": "getEntrustOrder",
-    "groupClass":"getScenarioGroup",
+    "groupClass":"getEntrustGroup",
     "ifSearch":"true",
     "ifGroup": "false",
     "ifShow":"true",
     "defaultHidden": "true"
   },
+
+  {"name":"委托方",
+    "type":"String",
+    "value":"entrustNameTrue",
+    "field": "entrustNameTrue",
+    "sqlField": "entrust_id",
+    "sqlClass": "getEntrustTrueNameSql",
+    "orderClass": "getEntrustOrder",
+    "groupClass":"getEntrustGroup",
+    "ifSearch":"false",
+    "ifGroup": "true",
+    "ifShow":"false",
+    "defaultHidden": "false"
+  },
   {"name":"合同号",
     "type":"String",
     "value":"contractNo",
     "field": "contractNo",
     "sqlField": "scenario_id",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
+    "orderClass": "getComOrder",
     "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "ifSearch":"false",
     "ifGroup": "false",
     "ifShow":"true",
     "defaultHidden": "true"
@@ -142,9 +155,9 @@
     "field": "volumeNumber",
     "sqlField": "scenario_id",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
+    "orderClass": "getComOrder",
     "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "ifSearch":"false",
     "ifGroup": "false",
     "ifShow":"true",
     "defaultHidden": "true"
@@ -155,9 +168,9 @@
     "field": "commissionCaseDay",
     "sqlField": "scenario_id",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"false",
     "ifGroup": "false",
     "ifShow":"true",
     "defaultHidden": "true"
@@ -170,7 +183,7 @@
     "sqlClass": "getComSql",
     "orderClass": "getReportNumOrder",
     "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "ifSearch":"false",
     "ifGroup": "false",
     "ifShow":"true",
     "defaultHidden": "true"
@@ -182,9 +195,9 @@
     "sqlField": "aspe.matter_id",
     "sqlClass": "getComSql",
     "orderClass": "getMatterOrder",
-    "groupClass":"getScenarioGroup",
+    "groupClass":"getMatterGroup",
     "ifSearch":"true",
-    "ifGroup": "false",
+    "ifGroup": "true",
     "ifShow":"true",
     "defaultHidden": "true"
   },
@@ -196,10 +209,22 @@
     "sqlClass": "getComSql",
     "orderClass": "getEventOrder",
     "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "ifSearch":"false",
     "ifGroup": "false",
     "ifShow":"true"
   },
+  {"name":"相关事件",
+    "type":"String",
+    "value":"eventNames",
+    "field": "eventNames",
+    "sqlField": "aspe.event_id",
+    "sqlClass": "getEventNameSql",
+    "orderClass": "getEventOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"false"
+  },
   {"name":"产品或产品类别名称",
     "type":"String",
     "value":"productOrCategoryName",
@@ -208,7 +233,7 @@
     "sqlClass": "getComSql",
     "orderClass": "getProductOrCategoryOrder",
     "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "ifSearch":"false",
     "ifGroup": "false",
     "ifShow":"true"
   },
@@ -220,7 +245,7 @@
     "sqlClass": "getComSql",
     "orderClass": "getScenarioNameOrder",
     "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "ifSearch":"false",
     "ifGroup": "false",
     "ifShow":"true",
     "defaultHidden": "true"

+ 95 - 21
src/main/resources/jsons/reportProject.json

@@ -11,6 +11,18 @@
     "ifGroup": "false",
     "ifShow":"false"
   },
+  {"name":"创建月份",
+    "type":"DateTime",
+    "value":"createTimeMonth",
+    "field": "createTimeMonth",
+    "sqlField": "p.create_time",
+    "sqlClass": "getDateTimeMonthSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getTimeGroup",
+    "ifSearch":"false",
+    "ifGroup": "true",
+    "ifShow":"false"
+  },
   {"name":"报告名称",
   "type":"String",
   "value":"name",
@@ -54,9 +66,9 @@
     "type":"String",
     "value":"departmentName",
     "field": "departmentName",
-    "sqlField": "scenario_id",
-    "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
+    "sqlField": "p.department_id",
+    "sqlClass": "getDepartmentNameSql",
+    "orderClass": "getDepartmentNameOrder",
     "groupClass":"getScenarioGroup",
     "ifSearch":"true",
     "ifGroup": "false",
@@ -67,15 +79,29 @@
     "type":"String",
     "value":"entrustName",
     "field": "entrustName",
-    "sqlField": "scenario_id",
-    "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
-    "groupClass":"getScenarioGroup",
+    "sqlField": "entrust_id",
+    "sqlClass": "getEntrustTrueNameSql",
+    "orderClass": "getEntrustOrder",
+    "groupClass":"getEntrustGroup",
     "ifSearch":"true",
     "ifGroup": "false",
     "ifShow":"true",
     "defaultHidden": "true"
   },
+
+  {"name":"委托方",
+    "type":"String",
+    "value":"entrustNameTrue",
+    "field": "entrustNameTrue",
+    "sqlField": "entrust_id",
+    "sqlClass": "getEntrustTrueNameSql",
+    "orderClass": "getEntrustOrder",
+    "groupClass":"getEntrustGroup",
+    "ifSearch":"false",
+    "ifGroup": "true",
+    "ifShow":"false",
+    "defaultHidden": "false"
+  },
   {"name":"创建时间",
     "type":"DateTime",
     "value":"createTime",
@@ -101,17 +127,39 @@
   },
   {"name":"报告类型",
     "type":"Integer",
+    "value":"reportTypeName",
+    "field": "reportTypeName",
+    "sqlField": "rp.report_type",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getReportTypeGroup",
+    "ifSearch":"false",
+    "ifGroup": "true",
+    "ifShow":"true"
+  },
+  {"name":"报告类型",
+    "type":"Array",
     "value":"reportType",
     "field": "reportType",
+    "sqlField": "rp.report_type",
+    "sqlClass": "getComSql",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"false"
+  },
+  {"name":"报告状态",
+    "type":"Integer",
+    "value":"status",
+    "field": "status",
     "sqlField": "report_type",
     "sqlClass": "getComSql",
     "orderClass": "getComOrder",
-    "ifSearch":"true",
+    "ifSearch":"false",
     "ifGroup": "false",
     "ifShow":"true"
   },
   {"name":"报告状态",
-    "type":"Integer",
+    "type":"Array",
     "value":"status",
     "field": "status",
     "sqlField": "report_type",
@@ -119,7 +167,7 @@
     "orderClass": "getComOrder",
     "ifSearch":"true",
     "ifGroup": "false",
-    "ifShow":"true"
+    "ifShow":"false"
   },
   {
     "name": "结论论述",
@@ -129,7 +177,7 @@
     "sqlField": "report_type",
     "sqlClass": "getComSql",
     "orderClass": "getComOrder",
-    "ifSearch": "true",
+    "ifSearch": "false",
     "ifGroup": "false",
     "ifShow": "true"
   },
@@ -140,7 +188,7 @@
     "sqlField": "p.description",
     "sqlClass": "getComSql",
     "orderClass": "getComOrder",
-    "ifSearch":"true",
+    "ifSearch":"false",
     "ifGroup": "false",
     "ifShow":"true"
   },
@@ -148,23 +196,35 @@
     "type":"Array",
     "value":"eventNames",
     "field": "eventNames",
-    "sqlField": "scenario_id",
+    "sqlField": "aspe.event_id",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
+    "orderClass": "getEventOrder",
     "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "ifSearch":"false",
     "ifGroup": "false",
     "ifShow":"true"
   },
+  {"name":"相关事件",
+    "type":"String",
+    "value":"eventNames",
+    "field": "eventNames",
+    "sqlField": "aspe.event_id",
+    "sqlClass": "getEventNameSql",
+    "orderClass": "getEventOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"false"
+  },
   {"name":"内部卷号",
     "type":"String",
     "value":"volumeNumber",
     "field": "volumeNumber",
-    "sqlField": "scenario_id",
+    "sqlField": "p.volume_number",
     "sqlClass": "getComSql",
-    "orderClass": "getScenarioNameOrder",
+    "orderClass": "getComOrder",
     "groupClass":"getScenarioGroup",
-    "ifSearch":"true",
+    "ifSearch":"false",
     "ifGroup": "false",
     "ifShow":"true",
     "defaultHidden": "true"
@@ -176,8 +236,22 @@
   "sqlField": "rp.product_or_tech",
   "sqlClass": "getLikeSql",
   "orderClass": "getComOrder",
-  "ifSearch":"true",
+  "ifSearch":"false",
   "ifGroup": "false",
-  "ifShow":"true"
-}
+  "ifShow":"true",
+    "defaultHidden": "true"
+},
+  {"name":"核心结论",
+    "type":"Array",
+    "value":"cronNames",
+    "field": "cronNames",
+    "sqlField": "arc.cron_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getCronsNameOrder",
+    "groupClass":"getTimeGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true",
+    "defaultHidden": "true"
+  }
 ]

+ 11 - 3
src/test/java/cn/cslg/pas/service/PatentProjectTests.java

@@ -2,7 +2,9 @@ package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.dto.business.PatentProjectDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.model.request.GroupRequest;
 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.service.business.PatentProjectService;
 import cn.cslg.pas.service.business.es.EsService;
@@ -39,9 +41,9 @@ public class PatentProjectTests {
         queryRequest.setOrderDTOList(dtos);
         queryRequest.setCurrent(Long.parseLong("1"));
         queryRequest.setSize(Long.parseLong("10"));
-        Records records = (Records)patentProjectService.queryMessage(queryRequest);
+        Records records = (Records) patentProjectService.queryMessage(queryRequest);
 
-        Assert.assertEquals(Integer.parseInt(records.getTotal().toString()),1);
+        Assert.assertEquals(Integer.parseInt(records.getTotal().toString()), 1);
     }
 
     @Test
@@ -49,5 +51,11 @@ public class PatentProjectTests {
 
     }
 
-
+    @Test
+    void getGroup() throws Exception {
+        StringGroupRequest groupRequest = new StringGroupRequest();
+        groupRequest.setGroupBy("entrustName");
+        Records records=    (Records)patentProjectService.getGroup(groupRequest, "patentProject");
+      System.out.println(records);
+    }
 }