Selaa lähdekoodia

Merge remote-tracking branch 'origin/master' into prod_test

lwhhszx 1 vuosi sitten
vanhempi
commit
48252481da
49 muutettua tiedostoa jossa 64380 lisäystä ja 4832 poistoa
  1. 6615 60
      logs/pas/pas-debug.log
  2. 56815 1
      logs/pas/pas-error.log
  3. 287 4547
      logs/pas/pas-info.log
  4. 20 0
      src/main/java/cn/cslg/pas/common/config/ThreadPoolConfig.java
  5. 2 1
      src/main/java/cn/cslg/pas/common/dto/ImportTaskDTO.java
  6. 3 3
      src/main/java/cn/cslg/pas/common/dto/PatentColumnDTO.java
  7. 1 0
      src/main/java/cn/cslg/pas/common/vo/business/MergedNameVO.java
  8. 8 1
      src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/MatchPhaseQueryBuilder.java
  9. 57 0
      src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/NestedPersonQueryBuilder.java
  10. 12 4
      src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/NestedQueryBuilder.java
  11. 12 2
      src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/WildcardQueryBuilder.java
  12. 3 3
      src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetEventProjectNumOrder.java
  13. 3 3
      src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetEventReportNumOrder.java
  14. 2 2
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetComGroup.java
  15. 1 1
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetEntrustGroup.java
  16. 2 2
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetEventScenarioGroup.java
  17. 1 1
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetMarketDataMonthGroup.java
  18. 1 1
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetMarketDataSeasonGroup.java
  19. 1 1
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetMarketDataYearGroup.java
  20. 4 4
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetMatterGroup.java
  21. 2 2
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetReportTypeGroup.java
  22. 3 3
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetScenarioGroup.java
  23. 2 2
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetTimeGroup.java
  24. 1 1
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/QueryGroupImp.java
  25. 1 1
      src/main/java/cn/cslg/pas/mapper/EventMapper.java
  26. 1 0
      src/main/java/cn/cslg/pas/service/business/CustomAnalysisItemSettingService.java
  27. 55 23
      src/main/java/cn/cslg/pas/service/business/EventService.java
  28. 1 1
      src/main/java/cn/cslg/pas/service/business/ImportTaskService.java
  29. 186 45
      src/main/java/cn/cslg/pas/service/business/MergePersonService.java
  30. 5 1
      src/main/java/cn/cslg/pas/service/business/PatentDigProjectService.java
  31. 6 2
      src/main/java/cn/cslg/pas/service/business/PatentProjectService.java
  32. 2 2
      src/main/java/cn/cslg/pas/service/business/ProductMarketDataService.java
  33. 5 1
      src/main/java/cn/cslg/pas/service/business/ReportProjectService.java
  34. 97 12
      src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java
  35. 45 4
      src/main/java/cn/cslg/pas/service/business/es/EsService.java
  36. 1 1
      src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java
  37. 6 1
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentPDFFromWebThread.java
  38. 5 3
      src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java
  39. 11 1
      src/main/java/cn/cslg/pas/service/importPatent/ImportSinglePatentService.java
  40. 3 0
      src/main/java/cn/cslg/pas/service/importPatent/SavePatentToEsThread.java
  41. 18 11
      src/main/java/cn/cslg/pas/service/importPatent/SchedulingTaskService.java
  42. 15 0
      src/main/java/cn/cslg/pas/service/importPatent/TaskExecutor.java
  43. 8 1
      src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java
  44. 2 15
      src/main/resources/jsons/event.json
  45. 35 35
      src/main/resources/jsons/patent.json
  46. 2 2
      src/main/resources/mapper/AssoProjectEvent.xml
  47. 1 1
      src/main/resources/mapper/Event.xml
  48. 3 5
      src/test/java/cn/cslg/pas/service/CommonServiceTests.java
  49. 8 19
      src/test/java/cn/cslg/pas/service/EventServiceTests.java

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6615 - 60
logs/pas/pas-debug.log


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 56815 - 1
logs/pas/pas-error.log


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 287 - 4547
logs/pas/pas-info.log


+ 20 - 0
src/main/java/cn/cslg/pas/common/config/ThreadPoolConfig.java

@@ -0,0 +1,20 @@
+package cn.cslg.pas.common.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;  
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;  
+  
+@Configuration  
+public class ThreadPoolConfig {  
+  
+    @Bean  
+    public ThreadPoolTaskExecutor threadPoolTaskExecutor() {  
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();  
+        executor.setCorePoolSize(5); // 设置核心线程数  
+        executor.setMaxPoolSize(5); // 设置最大线程数
+        executor.setQueueCapacity(25); // 设置队列容量  
+        executor.setThreadNamePrefix("my-thread-pool-"); // 设置线程名称前缀  
+        executor.initialize(); // 初始化线程池  
+        return executor;  
+    }  
+}

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

@@ -78,7 +78,8 @@ public class ImportTaskDTO {
     /**
      * 检索导入使用的数据库类型(中国or世界)
      */
-    private String dbType;
+    @JsonProperty(value = "DBType")
+    private String DBType;
 
     private String orderBy;
     private String orderByType;

+ 3 - 3
src/main/java/cn/cslg/pas/common/dto/PatentColumnDTO.java

@@ -237,7 +237,7 @@ public class PatentColumnDTO {
     /**
      * 合并申请人
      */
-    private List<PatentMergePerson> mergeApplicant;
+    private List<String> mergeApplicant;
 
     /**
      * 申请人数量
@@ -256,7 +256,7 @@ public class PatentColumnDTO {
     /**
      * 合并权利人
      */
-    private List<PatentMergePerson> mergeRightHolder;
+    private List<String> mergeRightHolder;
 
     /**
      * 权利人数量
@@ -270,7 +270,7 @@ public class PatentColumnDTO {
     /**
      * 合并发明人
      */
-    private List<PatentMergePerson> mergeInventor;
+    private List<String> mergeInventor;
 
 
     /**

+ 1 - 0
src/main/java/cn/cslg/pas/common/vo/business/MergedNameVO.java

@@ -6,6 +6,7 @@ import java.util.List;
 
 @Data
 public class MergedNameVO {
+
     private String name;
 
     private Integer projectId;

+ 8 - 1
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/MatchPhaseQueryBuilder.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.factorys.EsBuilderFactory;
 
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import org.springframework.stereotype.Component;
 
 import java.text.ParseException;
@@ -14,7 +15,13 @@ public class MatchPhaseQueryBuilder implements IQueryBuilder{
 
     @Override
     public Query creteQuery() throws ParseException {
-        return null;
+        Query query = null;
+        if (value.contains(" ")) {
+            query = QueryBuilders.matchPhrase(i -> i.field(field).query(value));
+        } else {
+            query = QueryBuilders.matchPhrase(i -> i.field(field).query(value).slop(2));
+        }
+        return query;
     }
 
     public String getField() {

+ 57 - 0
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/NestedPersonQueryBuilder.java

@@ -0,0 +1,57 @@
+package cn.cslg.pas.factorys.EsBuilderFactory;
+
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+
+@Component
+public class NestedPersonQueryBuilder implements IQueryBuilder{
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        String str = "*";
+        String s = str.concat(value).concat("*");
+        Query query =  QueryBuilders.wildcard(i -> i.field(field).value(s));
+        Query nestedQuery = QueryBuilders.nested(z -> z.path(path).query(query));
+        return nestedQuery;
+    }
+
+    public String getField() {
+        return field;
+    }
+
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+}

+ 12 - 4
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/NestedQueryBuilder.java

@@ -1,7 +1,7 @@
 package cn.cslg.pas.factorys.EsBuilderFactory;
 
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
-import org.springframework.data.elasticsearch.client.elc.QueryBuilders;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import org.springframework.stereotype.Component;
 
 @Component
@@ -13,9 +13,17 @@ public class NestedQueryBuilder implements IQueryBuilder {
 
     @Override
     public Query creteQuery() {
-        Query query = QueryBuilders.matchQueryAsQuery(field, value, null, null);
-        Query nestedQuery = co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders.nested(z -> z.path(path).query(query));
-        return nestedQuery;
+        String str = "*";
+        String s = str.concat(value).concat("*");
+        Query query =  QueryBuilders.wildcard(i -> i.field(field).value(s));
+        Query nestedQuery = QueryBuilders.nested(z -> z.path(path).query(query));
+        Query childQuery = null;
+        if (path.equals("merge_applicant")) {
+            childQuery = QueryBuilders.hasChild(i -> i.type("merge_applicat").query(nestedQuery));
+        } else {
+            childQuery = QueryBuilders.hasChild(i -> i.type(path).query(nestedQuery));
+        }
+        return childQuery;
     }
 
     @Override

+ 12 - 2
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/WildcardQueryBuilder.java

@@ -5,6 +5,9 @@ import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import org.springframework.stereotype.Component;
 
 import java.text.ParseException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
 
 @Component
 public class WildcardQueryBuilder implements IQueryBuilder{
@@ -15,9 +18,16 @@ public class WildcardQueryBuilder implements IQueryBuilder{
 
     @Override
     public Query creteQuery() throws ParseException {
+        List<String> list = Arrays.asList("patent_no.keyword", "app_no.keyword", "public_no.keyword", "grant_no.keyword");
         String str = "*";
-        String s = str.concat(value).concat("*");
-        return QueryBuilders.wildcard(i -> i.field(field).value(s));
+        String s = "";
+        if (list.contains(field)) {
+            s = str.concat(value.toUpperCase(Locale.ROOT)).concat("*");
+        } else {
+            s = str.concat(value).concat("*");
+        }
+        String result = s;
+        return QueryBuilders.wildcard(i -> i.field(field).value(result));
     }
 
     public String getField() {

+ 3 - 3
src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetEventProjectNumOrder.java

@@ -25,11 +25,11 @@ public class GetEventProjectNumOrder implements GetOrderObject {
         //根据名称查询人员id
         try {
             if (orderType.equals(0)) {
-                orderTypeStr="asc";
+                orderTypeStr=" asc";
             } else {
                 orderTypeStr= " desc";
             }
-          ids = assoProjectEventMapper.getEventProjectNumOrder(1,orderTypeStr);
+          ids = assoProjectEventMapper.getEventProjectNumOrder(0," asc");
 
         } catch (Exception e) {
         }
@@ -39,7 +39,7 @@ public class GetEventProjectNumOrder implements GetOrderObject {
         }
 
         String idStr = StringUtils.join(ids, ",");
-        String orderStr = " field(" + orderBy + "," + idStr + ")";
+        String orderStr = " field(" + orderBy + "," + idStr + ")"+orderTypeStr;
         String re = orderStr;
 
         return re;

+ 3 - 3
src/main/java/cn/cslg/pas/factorys/getOrderFactory/GetEventReportNumOrder.java

@@ -23,11 +23,11 @@ public class GetEventReportNumOrder implements GetOrderObject {
         //根据名称查询人员id
         try {
             if (orderType.equals(0)) {
-                orderTypeStr="asc";
+                orderTypeStr=" asc";
             } else {
                 orderTypeStr= " desc";
             }
-          ids = assoProjectEventMapper.getEventProjectNumOrder(2,orderTypeStr);
+        ids = assoProjectEventMapper.getEventProjectNumOrder(1," asc");
 
         } catch (Exception e) {
         }
@@ -35,7 +35,7 @@ public class GetEventReportNumOrder implements GetOrderObject {
             return "";
         }
         String idStr = StringUtils.join(ids, ",");
-        String orderStr = " field(" + orderBy + "," + idStr + ")";
+        String orderStr = " field(" + orderBy + "," + idStr + ") " +orderTypeStr;
         String re = orderStr;
 
         return re;

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

@@ -19,11 +19,11 @@ public class GetComGroup implements QueryGroupImp {
 private EventMapper eventMapper;
 
     @Override
-    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField){
+    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField,String countFiled){
         ReGroupDataVO reGroupDataVO =new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
         String selectField ="";
-    List<GroupReVO> reValues =eventMapper.getGroups(sqls,tableName,groupField,selectField);
+    List<GroupReVO> reValues =eventMapper.getGroups(sqls,tableName,groupField,selectField,selectField);
         return reGroupDataVO;
     };
 

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

@@ -24,7 +24,7 @@ public class GetEntrustGroup implements QueryGroupImp {
     private PermissionService permissionService;
 
     @Override
-    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
+    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField,String countFiled) {
         groupField = "p.entrust_type ,p.entrust_id ";
         ReGroupDataVO reGroupDataVO = new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();

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

@@ -21,13 +21,13 @@ public class GetEventScenarioGroup implements QueryGroupImp {
     private SystemDictService systemDictService;
 
     @Override
-    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
+    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField,String countFiled) {
         ReGroupDataVO reGroupDataVO = new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
         String selectField = groupField;
         List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList("ENTERPRISE_APPLICATION_SCENARIO"));
         //分组查询应用场景
-        List<GroupReVO> scenarioIds = eventMapper.getGroups(sqls, tableName, groupField, selectField);
+        List<GroupReVO> scenarioIds = eventMapper.getGroups(sqls, tableName, groupField, selectField,selectField);
         Long total = eventMapper.getGroupsCount(sqls, tableName, groupField, selectField);
         //装载应用场景名称
         scenarioIds.forEach(item -> {

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

@@ -32,7 +32,7 @@ public class GetMarketDataMonthGroup implements QueryGroupImp {
      * @return
      */
     @Override
-    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
+    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField,String countFiled) {
         ReGroupDataVO reGroupDataVO = new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
         //“select ${selectField} as marketDate,”

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

@@ -25,7 +25,7 @@ public class GetMarketDataSeasonGroup implements QueryGroupImp {
     private ProductService productService;
 
     @Override
-    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
+    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField,String countFiled) {
         ReGroupDataVO reGroupDataVO =new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
         groupField = "CONCAT(DATE_FORMAT("+ groupField+", '%Y'),'年第', CEIL(MONTH(" + groupField + ") / 3),'季度')";

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

@@ -24,7 +24,7 @@ public class GetMarketDataYearGroup implements QueryGroupImp {
     private ProductService productService;
 
     @Override
-    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
+    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField,String countFiled) {
         ReGroupDataVO reGroupDataVO = new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
         groupField = "CONCAT(DATE_FORMAT(" + groupField + ",'%Y'),'年')";

+ 4 - 4
src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetMatterGroup.java

@@ -23,14 +23,14 @@ public class GetMatterGroup implements QueryGroupImp {
     private MatterService matterService;
 
     @Override
-    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
+    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField,String countFiled) {
         ReGroupDataVO reGroupDataVO =new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
-        String selectField = "ifnull(aspm.matter_id,0)";;
+        String selectField = "ifnull(aspm.matter_id,0)";
+        String countField="distinct p.id";
         List<Matter> matters = matterService.list();
-        tableName =tableName+" left join (select * from pas_prod2.asso_project_event where matter_id is not null) as aspm on p.id = aspm.project_id";
         //分组查询应用场景
-        List<GroupReVO> matterIds = eventMapper.getGroups(sqls, tableName, groupField, selectField);
+        List<GroupReVO> matterIds = eventMapper.getGroups(sqls, tableName, groupField, selectField,countField);
         Long total =eventMapper.getGroupsCount(sqls, tableName, groupField, selectField);
         //装载调查类型名称
         matterIds.forEach(item->{

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

@@ -21,14 +21,14 @@ public class GetReportTypeGroup implements QueryGroupImp {
     private SystemDictService systemDictService;
 
     @Override
-    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
+    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField,String countFiled) {
         ReGroupDataVO reGroupDataVO =new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
         String selectField = groupField;
         List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList("REPORT_TYPE"));
 
         //分组查询报告类型
-        List<GroupReVO> typeIds = eventMapper.getGroups(sqls, tableName, groupField, selectField);
+        List<GroupReVO> typeIds = eventMapper.getGroups(sqls, tableName, groupField, selectField,selectField);
         Long total =eventMapper.getGroupsCount(sqls, tableName, groupField, selectField);
         //装载应用场景名称
         typeIds.forEach(item->{

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

@@ -21,14 +21,14 @@ public class GetScenarioGroup implements QueryGroupImp {
     private SystemDictService systemDictService;
 
     @Override
-    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
+    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField,String countField) {
         ReGroupDataVO reGroupDataVO = new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
         String selectField = "ifnull(asps.scenario_id,0)";
         List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList("ENTERPRISE_APPLICATION_SCENARIO"));
         //分组查询应用场景
-        tableName =tableName+" left join (select * from pas_prod2.asso_project_event where scenario_id is not null) as asps on p.id = asps.project_id";
-        List<GroupReVO> scenarioIds = eventMapper.getGroups(sqls, tableName, groupField, selectField);
+
+        List<GroupReVO> scenarioIds = eventMapper.getGroups(sqls, tableName, groupField, selectField,countField);
         Long total = eventMapper.getGroupsCount(sqls, tableName, groupField, selectField);
         //装载应用场景名称
         scenarioIds.forEach(item -> {

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

@@ -21,12 +21,12 @@ public class GetTimeGroup implements QueryGroupImp {
 
 
     @Override
-    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
+    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField,String countField) {
         ReGroupDataVO reGroupDataVO =new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
         String selectField = "ifnull(DATE_FORMAT(" + groupField + ",'%Y%m') ,'未知')";
         groupField = selectField;
-        List<GroupReVO> reValues = eventMapper.getGroups(sqls, tableName, groupField, selectField);
+        List<GroupReVO> reValues = eventMapper.getGroups(sqls, tableName, groupField, selectField,countField);
         Long total =eventMapper.getGroupsCount(sqls, tableName, groupField, selectField);
         reValues.forEach(
                 item->{

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

@@ -10,5 +10,5 @@ import java.util.Map;
  *
  */
 public interface QueryGroupImp {
-    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField);
+    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField,String countField);
 }

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

@@ -21,7 +21,7 @@ import java.util.List;
 @Repository
 public interface EventMapper extends BaseMapper<Event> {
     public List<EventVO> getEvent(String sql1,String sql2,String sql3);
-    public List<GroupReVO> getGroups(List<String> sqls, String tableName, String groupField, String selectField);
+    public List<GroupReVO> getGroups(List<String> sqls, String tableName, String groupField, String selectField,String countField);
     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);

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

@@ -45,6 +45,7 @@ public class CustomAnalysisItemSettingService extends ServiceImpl<CustomAnalysis
         configDTO.setLine(JsonUtils.jsonToPojo(temp.getLineConfig(), CustomSettingLineConfigDTO.class));
         configDTO.setTable(JsonUtils.jsonToList(temp.getTableConfig(), CustomSettingTableConfigDTO.class));
         temp.setConfig(configDTO);
+        temp.setShow(temp.getShow1());
         temp.setColorConfig(null);
         temp.setLineConfig(null);
         temp.setTableConfig(null);

+ 55 - 23
src/main/java/cn/cslg/pas/service/business/EventService.java

@@ -97,12 +97,6 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Integer addMessage(Object object, List<MultipartFile> files) {
-        EventDTO eventDTO = (EventDTO) object;
-        //检查事件格式
-        if (eventDTO.getScenarioId() == null) {
-            throw new XiaoShiException("参数错误");
-        }
-
         //获取登录人信息
         PersonnelVO personnelVO = new PersonnelVO();
         try {
@@ -110,16 +104,11 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
         } catch (Exception e) {
             throw new UnLoginException("未登录");
         }
+        this.checkParameter(object);
+        EventDTO eventDTO = (EventDTO) object;
 
         //根据名称查询是否重复
         eventDTO.setName(eventDTO.getName().trim());
-        String name = eventDTO.getName();
-        LambdaQueryWrapper<Event> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(Event::getName, name);
-        List<Event> events = this.list(queryWrapper);
-        if (events != null && events.size() != 0) {
-            throw new XiaoShiException("名称重复");
-        }
 
         //事件入库
         Event event = new Event();
@@ -184,16 +173,10 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
             throw new XiaoShiException("参数错误");
 
         }
+        this.checkParameter(object);
         Event event = this.getById(updateEventDTO.getId());
         //根据名称查询是否重复
         updateEventDTO.setName(updateEventDTO.getName().trim());
-        String name = updateEventDTO.getName();
-        LambdaQueryWrapper<Event> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(Event::getName, name);
-        List<Event> events = this.list(queryWrapper);
-        if (!updateEventDTO.getName().equals(event.getName()) && events.size() != 0) {
-            throw new XiaoShiException("名称重复");
-        }
         BeanUtils.copyProperties(updateEventDTO, event);
         event.updateById();
 
@@ -271,7 +254,8 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
 
         //返回分组数据
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
-        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
+        String countFiled = "id";
+        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField(), countFiled);
 
         //装载数据
         GroupVO groupVO = new GroupVO();
@@ -459,9 +443,9 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
             rootSql = "(tenant_id =" + tenant_id + ")";
         }
 
-        if (sqls.get(0) != null && !sqls.get(0).equals("")&&!rootSql.equals("")) {
+        if (sqls.get(0) != null && !sqls.get(0).equals("") && !rootSql.equals("")) {
             sqls.set(0, rootSql + " and" + "(" + sqls.get(0) + ")");
-        } else if((sqls.get(0) == null ||sqls.get(0).equals(""))&&!rootSql.equals("")){
+        } else if ((sqls.get(0) == null || sqls.get(0).equals("")) && !rootSql.equals("")) {
             sqls.set(0, rootSql);
         }
 
@@ -469,4 +453,52 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
 
     }
 
+    /**
+     * 参数检查
+     *
+     * @param object
+     */
+    public void checkParameter(Object object) {
+      PersonnelVO  personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+
+        String name = null;
+        Integer id = null;
+        Integer scenarioId = null;
+        if (object instanceof EventDTO) {
+            EventDTO eventDTO = (EventDTO) object;
+            eventDTO.getScenarioId();
+            name = eventDTO.getName();
+            scenarioId = eventDTO.getScenarioId();
+        } else if (object instanceof UpdateEventDTO) {
+            UpdateEventDTO eventDTO = (UpdateEventDTO) object;
+            eventDTO.getScenarioId();
+            name = eventDTO.getName();
+            scenarioId = eventDTO.getScenarioId();
+            id = eventDTO.getId();
+        }
+
+        //检验名称是否为空
+        if (name == null || name.trim().equals("")) {
+            throw new XiaoShiException("请输入名称");
+        }
+
+        //检验是否传入应用场景
+        if(scenarioId==null){
+            throw new XiaoShiException("请选择应用场景");
+        }
+
+        //检验名称是否重复
+        LambdaQueryWrapper<Event> queryWrapper =new LambdaQueryWrapper<>();
+        queryWrapper.eq(Event::getName,name)
+                .eq(Event::getTenantId,personnelVO.getTenantId());
+        if(id!=null){
+            queryWrapper.ne(Event::getId,id);
+        }
+        Event event =this.getOne(queryWrapper,false);
+        if(event!=null){
+            throw  new XiaoShiException("名称重复");
+        }
+
+
+    }
 }

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

@@ -159,7 +159,7 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         importTaskCondition.setType(importTaskDTO.getType());
         importTaskCondition.setFileGuid(importTaskDTO.getFileGuid());
         importTaskCondition.setSourceId(importTaskDTO.getSourceId());
-        importTaskCondition.setDbType(importTaskDTO.getDbType());
+        importTaskCondition.setDbType(importTaskDTO.getDBType());
         importTaskCondition.setOrderBy(importTaskDTO.getOrderBy());
         importTaskCondition.setOrderByType(importTaskDTO.getOrderByType());
         importTaskCondition.setCreateId(personnelVO.getId());

+ 186 - 45
src/main/java/cn/cslg/pas/service/business/MergePersonService.java

@@ -294,7 +294,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         for (Hit<Patent> hit : hits) {
             String id1 = hit.id();
             Patent patent = hit.source();
-            if (mergeType.equals("merge_applicat")) {
+            if (mergeType.equals("merge_applicant")) {
                 if (!CollectionUtils.isEmpty(patent.getMergeApplicant())) {
                     map.put(id1, patent.getMergeApplicant());
                 }
@@ -321,6 +321,8 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
     public Integer mergePersonAgain(MergePersonAgainVO vo) throws Exception {
         List<String> mergedNames = vo.getNeedMergedName();
         List<String> mergeName = vo.getMergedName();
+        Integer type = vo.getType();
+        Integer projectId = vo.getProjectId();
         List<String> nameList = new ArrayList<>();
         if (!CollectionUtils.isEmpty(mergedNames)) {
             for (String mergedName : mergedNames) {
@@ -331,10 +333,116 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                 List<String> getNames = JSONArray.parseArray(name, String.class);
                 nameList.addAll(getNames);
 
-                MergePersonIdVO personIdVO = new MergePersonIdVO();
-                personIdVO.setId(person.getId());
-                personIdVO.setType(person.getType());
-                this.delMergePerson(personIdVO);
+                Map<String, Patent> map = this.getDelPatent(type, projectId, mergedName);
+                if (!CollectionUtils.isEmpty(map)) {
+                    for (String id : map.keySet()) {
+                        Patent patent = map.get(id);
+                        List<PatentMergePerson> appPersonList = new ArrayList<>();
+                        List<PatentMergePerson> rightPersonList = new ArrayList<>();
+                        List<PatentMergePerson> inventorPersonList = new ArrayList<>();
+                        if (type == 0) {
+                            if (!CollectionUtils.isEmpty(patent.getApplicant())) {
+                                List<PatentPerson> applicant = patent.getApplicant();
+                                for (PatentPerson patentPerson : applicant) {
+                                    PatentMergePerson merge = new PatentMergePerson();
+                                    merge.setName(patentPerson.getName());
+                                    merge.setType(patentPerson.getType());
+                                    merge.setOrder(patentPerson.getOrder());
+                                    merge.setProjectId(String.valueOf(projectId));
+                                    appPersonList.add(merge);
+                                }
+                            }
+                            if (!CollectionUtils.isEmpty(patent.getRightHolder())) {
+                                List<PatentPerson> rightHolder = patent.getRightHolder();
+                                for (PatentPerson patentPerson : rightHolder) {
+                                    PatentMergePerson merge = new PatentMergePerson();
+                                    merge.setName(patentPerson.getName());
+                                    merge.setType(patentPerson.getType());
+                                    merge.setOrder(patentPerson.getOrder());
+                                    merge.setProjectId(String.valueOf(projectId));
+                                    rightPersonList.add(merge);
+                                }
+                            }
+                        } else {
+                            if (!CollectionUtils.isEmpty(patent.getInventor())) {
+                                List<PatentPerson> inventor = patent.getInventor();
+                                for (PatentPerson patentPerson : inventor) {
+                                    PatentMergePerson merge = new PatentMergePerson();
+                                    merge.setName(patentPerson.getName());
+                                    merge.setType(patentPerson.getType());
+                                    merge.setOrder(patentPerson.getOrder());
+                                    merge.setProjectId(String.valueOf(projectId));
+                                    inventorPersonList.add(merge);
+                                }
+                            }
+                        }
+
+                        if (type == 0) {
+                            //申请人
+                            Map<String, List<PatentMergePerson>> appMap = this.getChildMergePerson(id, projectId, "merge_applicant");
+                            if (!CollectionUtils.isEmpty(appMap)) {
+                                for (String appId : appMap.keySet()) {
+                                    //添加子文档
+                                    Patent newPatent = new Patent();
+                                    PatentJoin patentJoin = new PatentJoin();
+                                    patentJoin.setParent(id);
+                                    patentJoin.setName("merge_applicat");
+                                    newPatent.setPatentJoin(patentJoin);
+                                    newPatent.setMergeApplicant(appPersonList);
+                                    String child = this.addChild(newPatent, id);
+                                    if (StringUtils.isEmpty(child)) {
+                                        throw new XiaoShiException("删除失败");
+                                    } else {
+                                        //删除原子文档
+                                        this.delete(Arrays.asList(appId));
+                                    }
+                                }
+                            }
+                            //权利人
+                            Map<String, List<PatentMergePerson>> rightMap = this.getChildMergePerson(id, projectId, "merge_right_holder");
+                            if (!CollectionUtils.isEmpty(rightMap)) {
+                                for (String rightId : rightMap.keySet()) {
+                                    //添加子文档
+                                    Patent newPatent = new Patent();
+                                    PatentJoin patentJoin = new PatentJoin();
+                                    patentJoin.setParent(id);
+                                    patentJoin.setName("merge_right_holder");
+                                    newPatent.setPatentJoin(patentJoin);
+                                    newPatent.setMergeInventor(rightPersonList);
+                                    String child = this.addChild(newPatent, id);
+                                    if (StringUtils.isEmpty(child)) {
+                                        throw new XiaoShiException("删除失败");
+                                    } else {
+                                        //删除原子文档
+                                        this.delete(Arrays.asList(rightId));
+                                    }
+                                }
+                            }
+                        } else {
+                            //发明人
+                            Map<String, List<PatentMergePerson>> inventorMap = this.getChildMergePerson(id, projectId, "merge_inventor");
+                            if (!CollectionUtils.isEmpty(inventorMap)) {
+                                for (String inventorId : inventorMap.keySet()) {
+                                    //添加子文档
+                                    Patent newPatent = new Patent();
+                                    PatentJoin patentJoin = new PatentJoin();
+                                    patentJoin.setParent(id);
+                                    patentJoin.setName("merge_inventor");
+                                    newPatent.setPatentJoin(patentJoin);
+                                    newPatent.setMergeInventor(inventorPersonList);
+                                    String child = this.addChild(newPatent, id);
+                                    if (StringUtils.isEmpty(child)) {
+                                        throw new XiaoShiException("删除失败");
+                                    } else {
+                                        //删除原子文档
+                                        this.delete(Arrays.asList(inventorId));
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    mergePersonMapper.deleteById(person.getId());
+                }
             }
         }
 
@@ -343,8 +451,8 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         }
 
         MergePersonVO personVO = new MergePersonVO();
-        personVO.setProjectId(vo.getProjectId());
-        personVO.setType(vo.getType());
+        personVO.setProjectId(projectId);
+        personVO.setType(type);
         personVO.setName(vo.getName());
         personVO.setAbbreviation(vo.getAbbreviation());
         personVO.setCountry(vo.getCountry());
@@ -957,7 +1065,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                         if (!CollectionUtils.isEmpty(inventorMap)) {
                             for (String inventorId : inventorMap.keySet()) {
                                 if (CollectionUtils.isEmpty(nameDatas)) {
-                                    this.delSingleMerge(inventorId, type, mergedName);
+                                    this.delSingleMerge(inventorId, type, name);
                                 }
 
                                 ArrayList<PatentMergePerson> inventorMergeList = new ArrayList<>(mergePersonList);
@@ -1011,43 +1119,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
 
             List<String> list = JSONArray.parseArray(mergedName, String.class);
             if (!CollectionUtils.isEmpty(list)) {
-
-                SearchRequest.Builder builder = new SearchRequest.Builder();
-                //设置查询索引
-                builder.index("patent");
-                List<Query> queries = new ArrayList<>();
-                if (type == 0) {
-                    //合并申请人
-                    Query idQ1 = QueryBuilders.term(i -> i.field("merge_applicant.project_id").value(projectId));
-                    Query q1 = QueryBuilders.term(i -> i.field("merge_applicant.name.raw").value(name));
-                    Query bool = QueryBuilders.bool(i -> i.must(idQ1, q1));
-                    Query query1 = QueryBuilders.nested(i -> i.path("merge_applicant").query(bool));
-                    Query childQ1 = QueryBuilders.hasChild(i -> i.type("merge_applicat").query(query1));
-                    //合并权利人
-                    Query idQ2 = QueryBuilders.term(i -> i.field("merge_right_holder.project_id").value(projectId));
-                    Query q2 = QueryBuilders.term(i -> i.field("merge_right_holder.name.raw").value(name));
-                    Query bool1 = QueryBuilders.bool(i -> i.must(idQ2, q2));
-                    Query query2 = QueryBuilders.nested(i -> i.path("merge_right_holder").query(bool1));
-                    Query childQ2 = QueryBuilders.hasChild(i -> i.type("merge_right_holder").query(query2));
-                    queries.add(childQ1);
-                    queries.add(childQ2);
-                } else {
-                    Query idQ = QueryBuilders.term(i -> i.field("merge_inventor.project_id").value(projectId));
-                    Query q = QueryBuilders.term(i -> i.field("merge_inventor.name.raw").value(name));
-                    Query bool = QueryBuilders.bool(i -> i.must(idQ, q));
-                    Query query = QueryBuilders.nested(i -> i.path("merge_inventor").query(bool));
-                    Query childQ = QueryBuilders.hasChild(i -> i.type("merge_inventor").query(query));
-                    queries.add(childQ);
-                }
-                Query query = QueryBuilders.bool(i -> i.should(queries));
-                builder.query(query);
-                SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
-                List<Hit<Patent>> hits = response.hits().hits();
-                Map<String, Patent> map = new HashMap<>();
-                for (Hit<Patent> hit : hits) {
-                    String id = hit.id();
-                    map.put(id, hit.source());
-                }
+                Map<String, Patent> map = this.getDelPatent(type, projectId, name);
 
                 if (!CollectionUtils.isEmpty(map)) {
                     for (String id : map.keySet()) {
@@ -1102,6 +1174,10 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                             Map<String, List<PatentMergePerson>> appMap = this.getChildMergePerson(id, projectId, "merge_applicant");
                             if (!CollectionUtils.isEmpty(appMap)) {
                                 for (String appId : appMap.keySet()) {
+                                    if (StringUtils.isNotEmpty(name)) {
+                                        this.delSingleMerge(appId, type, name);
+                                    }
+
                                     List<PatentMergePerson> appMergeList = new ArrayList<>(mergePersonList);
                                     List<PatentMergePerson> appList = appMap.get(appId);
                                     appMergeList.addAll(appList);
@@ -1127,6 +1203,10 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                             Map<String, List<PatentMergePerson>> rightMap = this.getChildMergePerson(id, projectId, "merge_right_holder");
                             if (!CollectionUtils.isEmpty(rightMap)) {
                                 for (String rightId : rightMap.keySet()) {
+                                    if (StringUtils.isNotEmpty(name)) {
+                                        this.delSingleMerge(rightId, type, name);
+                                    }
+
                                     ArrayList<PatentMergePerson> rightMergeList = new ArrayList<>(mergePersonList);
                                     List<PatentMergePerson> rightList = rightMap.get(rightId);
                                     rightMergeList.addAll(rightList);
@@ -1150,6 +1230,10 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                             Map<String, List<PatentMergePerson>> inventorMap = this.getChildMergePerson(id, projectId, "merge_inventor");
                             if (!CollectionUtils.isEmpty(inventorMap)) {
                                 for (String inventorId : inventorMap.keySet()) {
+                                    if (StringUtils.isNotEmpty(name)) {
+                                        this.delSingleMerge(inventorId, type, name);
+                                    }
+
                                     ArrayList<PatentMergePerson> inventorMergeList = new ArrayList<>(mergePersonList);
                                     List<PatentMergePerson> inventorList = inventorMap.get(inventorId);
                                     inventorMergeList.addAll(inventorList);
@@ -1179,6 +1263,46 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         return vo.getId();
     }
 
+    public Map<String, Patent> getDelPatent(Integer type, Integer projectId, String name) throws IOException {
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        List<Query> queries = new ArrayList<>();
+        if (type == 0) {
+            //合并申请人
+            Query idQ1 = QueryBuilders.term(i -> i.field("merge_applicant.project_id").value(projectId));
+            Query q1 = QueryBuilders.term(i -> i.field("merge_applicant.name.raw").value(name));
+            Query bool = QueryBuilders.bool(i -> i.must(idQ1, q1));
+            Query query1 = QueryBuilders.nested(i -> i.path("merge_applicant").query(bool));
+            Query childQ1 = QueryBuilders.hasChild(i -> i.type("merge_applicat").query(query1));
+            //合并权利人
+            Query idQ2 = QueryBuilders.term(i -> i.field("merge_right_holder.project_id").value(projectId));
+            Query q2 = QueryBuilders.term(i -> i.field("merge_right_holder.name.raw").value(name));
+            Query bool1 = QueryBuilders.bool(i -> i.must(idQ2, q2));
+            Query query2 = QueryBuilders.nested(i -> i.path("merge_right_holder").query(bool1));
+            Query childQ2 = QueryBuilders.hasChild(i -> i.type("merge_right_holder").query(query2));
+            queries.add(childQ1);
+            queries.add(childQ2);
+        } else {
+            Query idQ = QueryBuilders.term(i -> i.field("merge_inventor.project_id").value(projectId));
+            Query q = QueryBuilders.term(i -> i.field("merge_inventor.name.raw").value(name));
+            Query bool = QueryBuilders.bool(i -> i.must(idQ, q));
+            Query query = QueryBuilders.nested(i -> i.path("merge_inventor").query(bool));
+            Query childQ = QueryBuilders.hasChild(i -> i.type("merge_inventor").query(query));
+            queries.add(childQ);
+        }
+        Query query = QueryBuilders.bool(i -> i.should(queries));
+        builder.query(query);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        Map<String, Patent> map = new HashMap<>();
+        for (Hit<Patent> hit : hits) {
+            String id = hit.id();
+            map.put(id, hit.source());
+        }
+        return map;
+    }
+
     /**
      * 获取所有国家列表查询
      * @return
@@ -1234,6 +1358,23 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         return indexResponse.id();
     }
 
+    //更新patent
+    public Integer updateChild(Patent patent, String id, String routing) {
+        UpdateRequest<Patent, Patent> req;
+        req = UpdateRequest.of(
+                b -> b.index("patent")
+                        .id(id)
+                        .routing(id)
+                        .doc(patent)
+        );
+        try {
+            client.update(req, Patent.class);
+            return 1;
+        } catch (IOException e) {
+            return -1;
+        }
+    }
+
     public Integer delete(List<String> ids) {
         Query query = QueryBuilders.ids(n -> n.values(ids));
         DeleteByQueryRequest request = DeleteByQueryRequest.of(i -> i.index("patent").query(query));

+ 5 - 1
src/main/java/cn/cslg/pas/service/business/PatentDigProjectService.java

@@ -159,9 +159,13 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
         }
 
         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 ";
+        tableName+=  "left join (select * from asso_project_event where scenario_id is not null ) as asps on p.id = asps.project_id " +
+                "left join (select * from asso_project_event where event_id is not null ) as aspe on p.id = aspe.project_id " +
+                "left join (select * from asso_project_event where matter_id is not null ) as aspm on p.id = aspm.project_id";
         //返回分组数据
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
-        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
+        String countFiled="distinct p.id";
+        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField(),countFiled);
 
         //装载数据
         GroupVO groupVO = new GroupVO();

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

@@ -207,9 +207,13 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
         }
 
         tableName = "patent_project as pp left join project as p on pp.project_id = p.id ";
+      tableName+=  "left join (select * from asso_project_event where scenario_id is not null ) as asps on p.id = asps.project_id " +
+                "left join (select * from asso_project_event where event_id is not null ) as aspe on p.id = aspe.project_id " +
+                "left join (select * from asso_project_event where matter_id is not null ) as aspm on p.id = aspm.project_id";
         //返回分组数据
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
-        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
+        String countFiled="distinct p.id";
+        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField(),countFiled);
 
         //装载数据
         GroupVO groupVO = new GroupVO();
@@ -319,7 +323,7 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
             for (ProjectEventDTO projectEventDTO : events) {
                 AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
                 //事件id和处理事项id
-                BeanUtils.copyProperties(projectEventDTO, assoProjectEvent);
+              assoProjectEvent.setEventId(projectEventDTO.getEventId());
                 //项目id
                 assoProjectEvent.setProjectId(project.getId());
                 //创建人

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

@@ -223,7 +223,7 @@ public class ProductMarketDataService extends ServiceImpl<ProductMarketDataMappe
         //返回分组数据
         tableName = "product_market_data as pmd left join product as p on pmd.product_id = p.id";
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
-        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
+        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField(),groupConfig.getSqlField());
         //装载数据
         GroupVO groupVO = new GroupVO();
         groupVO.setField(groupRequest.getGroupBy());
@@ -258,7 +258,7 @@ public class ProductMarketDataService extends ServiceImpl<ProductMarketDataMappe
         //返回分组数据
         tableName = "product_market_data as pmd left join product as p on pmd.product_id = p.id";
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
-        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
+        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField(),groupConfig.getSqlField());
         return reGroupDataVO;
     }
     /**

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

@@ -216,9 +216,13 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
             }
         }
         tableName = "report as rp left join project as p on rp.project_id =p.id ";
+        tableName+=  "left join (select * from asso_project_event where scenario_id is not null ) as asps on p.id = asps.project_id " +
+                "left join (select * from asso_project_event where event_id is not null ) as aspe on p.id = aspe.project_id " +
+                "left join (select * from asso_project_event where matter_id is not null ) as aspm on p.id = aspm.project_id";
         //返回分组数据
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
-        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
+        String countFiled="distinct p.id";
+        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField(),countFiled);
 
         //装载数据
         GroupVO groupVO = new GroupVO();

+ 97 - 12
src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java

@@ -126,31 +126,29 @@ public class EsPatentService {
             }
         }
         dto.setPictureGuid(FormatUtil.getPictureFormat(dto.getAppNo()));
-        List<LegalEvent> legalEvents = this.getLegalEvents(dto.getPublicNo(), dto.getAppNo(), dto.getGrantNo());
+        List<LegalEvent> legalEvents = this.getLegalEvents(dto.getPatentNo());
         dto.setLegalEvents(legalEvents);
         return dto;
     }
 
-    public List<LegalEvent> getLegalEvents(String publicNo, String appNo, String grantNo) throws IOException {
+    public List<LegalEvent> getLegalEvents(String patentNo) throws IOException {
         List<LegalEvent> events = new ArrayList<>();
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
         builder.index("legal_event");
         List<Query> queries = new ArrayList<>();
-        if (StringUtils.isNotEmpty(appNo)) {
-            Query q1 = QueryBuilders.term(i -> i.field("app_no").value(appNo));
+
+            Query q1 = QueryBuilders.term(i -> i.field("app_no").value(patentNo));
             queries.add(q1);
-        }
-        if (StringUtils.isNotEmpty(publicNo)) {
-            Query q2 = QueryBuilders.term(i -> i.field("public_no").value(publicNo));
+
+            Query q2 = QueryBuilders.term(i -> i.field("public_no").value(patentNo));
             queries.add(q2);
-        }
-        if (StringUtils.isNotEmpty(grantNo)) {
-            Query q3 = QueryBuilders.term(i -> i.field("grant_no").value(grantNo));
+
+            Query q3 = QueryBuilders.term(i -> i.field("grant_no").value(patentNo));
             queries.add(q3);
-        }
+
         if (!CollectionUtils.isEmpty(queries)) {
-            Query query = QueryBuilders.bool(i -> i.must(queries));
+            Query query = QueryBuilders.bool(i -> i.should(queries));
             builder.query(query);
             SearchResponse<LegalEvent> response = client.search(builder.build(), LegalEvent.class);
             List<Hit<LegalEvent>> hits = response.hits().hits();
@@ -189,6 +187,93 @@ public class EsPatentService {
         return collect;
     }
 
+    //获取合并申请人
+    public List<String> getMergeApp(Integer projectId, String id) throws IOException {
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        Query q1 = QueryBuilders.term(i -> i.field("merge_applicant.project_id").value(projectId));
+        Query exist1 = QueryBuilders.exists(i -> i.field("merge_applicant"));
+        Query bool = QueryBuilders.bool(i -> i.must(q1, exist1));
+        Query nested = QueryBuilders.nested(i -> i.path("merge_applicant").query(bool));
+        Query ids = QueryBuilders.ids(i -> i.values(Arrays.asList(id)));
+        Query query = QueryBuilders.hasParent(i -> i.parentType("patent").query(ids));
+        Query q = QueryBuilders.bool(i -> i.must(nested, query));
+        builder.query(q);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        List<PatentMergePerson> list = new ArrayList<>();
+        for (Hit<Patent> hit : hits) {
+            Patent patent = hit.source();
+            if (!CollectionUtils.isEmpty(patent.getMergeApplicant())) {
+                list.addAll(patent.getMergeApplicant());
+            }
+        }
+        List<String> data = new ArrayList<>();
+        if (!CollectionUtils.isEmpty(list)) {
+            data = this.loadMergeName(list);
+        }
+        return data;
+    }
+
+    //获取合并权利人
+    public List<String> getMergeRight(Integer projectId, String id) throws IOException {
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        Query q1 = QueryBuilders.term(i -> i.field("merge_right_holder.project_id").value(projectId));
+        Query exist1 = QueryBuilders.exists(i -> i.field("merge_right_holder"));
+        Query bool = QueryBuilders.bool(i -> i.must(q1, exist1));
+        Query nested = QueryBuilders.nested(i -> i.path("merge_right_holder").query(bool));
+        Query ids = QueryBuilders.ids(i -> i.values(Arrays.asList(id)));
+        Query query = QueryBuilders.hasParent(i -> i.parentType("patent").query(ids));
+        Query q = QueryBuilders.bool(i -> i.must(nested, query));
+        builder.query(q);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        List<PatentMergePerson> list = new ArrayList<>();
+        for (Hit<Patent> hit : hits) {
+            Patent patent = hit.source();
+            if (!CollectionUtils.isEmpty(patent.getMergeApplicant())) {
+                list.addAll(patent.getMergeApplicant());
+            }
+        }
+        List<String> data = new ArrayList<>();
+        if (!CollectionUtils.isEmpty(list)) {
+            data = this.loadMergeName(list);
+        }
+        return data;
+    }
+
+    //获取合并发明人
+    public List<String> getMergeInventor(Integer projectId, String id) throws IOException {
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        Query q1 = QueryBuilders.term(i -> i.field("merge_inventor.project_id").value(projectId));
+        Query exist1 = QueryBuilders.exists(i -> i.field("merge_inventor"));
+        Query bool = QueryBuilders.bool(i -> i.must(q1, exist1));
+        Query nested = QueryBuilders.nested(i -> i.path("merge_inventor").query(bool));
+        Query ids = QueryBuilders.ids(i -> i.values(Arrays.asList(id)));
+        Query query = QueryBuilders.hasParent(i -> i.parentType("patent").query(ids));
+        Query q = QueryBuilders.bool(i -> i.must(nested, query));
+        builder.query(q);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        List<PatentMergePerson> list = new ArrayList<>();
+        for (Hit<Patent> hit : hits) {
+            Patent patent = hit.source();
+            if (!CollectionUtils.isEmpty(patent.getMergeApplicant())) {
+                list.addAll(patent.getMergeApplicant());
+            }
+        }
+        List<String> data = new ArrayList<>();
+        if (!CollectionUtils.isEmpty(list)) {
+            data = this.loadMergeName(list);
+        }
+        return data;
+    }
+
     /**
      * 获得中国专利pdf全文
      *

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

@@ -19,6 +19,7 @@ import cn.cslg.pas.common.utils.parseQueryToTree.operateNode;
 import cn.cslg.pas.common.utils.parseQueryToTree.treeNode;
 import cn.cslg.pas.common.vo.*;
 import cn.cslg.pas.domain.es.*;
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.service.business.CommonService;
 import cn.cslg.pas.service.common.PatentStarApiService;
 import cn.cslg.pas.service.query.FormatQueryService;
@@ -241,10 +242,12 @@ public class EsService {
                     if (orderDTO.getOrderType().equals(IfConstant.NO)) {
                         builder.sort(sortOptionsBuilder -> sortOptionsBuilder
                                 .field(fieldSortBuilder -> fieldSortBuilder
+                                        .missing("_missing_").order(SortOrder.Desc)
                                         .field(configVO.getEsField()).order(SortOrder.Asc)));
                     } else {
                         builder.sort(sortOptionsBuilder -> sortOptionsBuilder
                                 .field(fieldSortBuilder -> fieldSortBuilder
+                                        .missing("_missing_").order(SortOrder.Desc)
                                         .field(configVO.getEsField()).order(SortOrder.Desc)));
                     }
                 }
@@ -252,7 +255,7 @@ public class EsService {
         } else {
             builder.sort(sortOptionsBuilder -> sortOptionsBuilder
                     .field(fieldSortBuilder -> fieldSortBuilder
-                            .field("patent_no.keyword").order(SortOrder.Desc)));
+                            .field("patent_no.keyword").order(SortOrder.Desc).missing(-1)));
         }
 
         //分页
@@ -274,10 +277,28 @@ public class EsService {
                     total = hitAgg.topHits().hits().total().value();
                     List<Hit<JsonData>> hits = hitAgg.topHits().hits().hits();
                     hits.forEach(hit -> {
+                        String id = hit.id();
                         JsonData data = hit.source();
                         Patent patent1 = JSONObject.parseObject(String.valueOf(data), Patent.class);
                         PatentColumnDTO columnDTO = new PatentColumnDTO();
                         BeanUtils.copyProperties(patent1, columnDTO);
+                        if (projectId != null) {
+                            try {
+                                columnDTO.setMergeApplicant(esPatentService.getMergeApp(projectId, id));
+                            } catch (IOException e) {
+                                columnDTO.setMergeApplicant(new ArrayList<>());
+                            }
+                            try {
+                                columnDTO.setMergeRightHolder(esPatentService.getMergeRight(projectId, id));
+                            } catch (IOException e) {
+                                columnDTO.setMergeRightHolder(new ArrayList<>());
+                            }
+                            try {
+                                columnDTO.setMergeInventor(esPatentService.getMergeInventor(projectId, id));
+                            } catch (IOException e) {
+                                columnDTO.setMergeInventor(new ArrayList<>());
+                            }
+                        }
                         columnDTO.setApplicant(esPatentService.loadName(patent1.getApplicant()));
                         columnDTO.setRightHolder(esPatentService.loadName(patent1.getRightHolder()));
                         columnDTO.setInventor(esPatentService.loadName(patent1.getInventor()));
@@ -289,10 +310,28 @@ public class EsService {
             List<Hit<Patent>> hits = response.hits().hits();
             total = response.hits().total().value();
             for (Hit<Patent> hit : hits) {
+                String id = hit.id();
                 Patent esMess = hit.source();
                 PatentColumnDTO columnDTO = new PatentColumnDTO();
 //            columnDTO.setPatentNo(esMess.getPatentNo());
                 BeanUtils.copyProperties(esMess, columnDTO);
+                if (projectId != null) {
+                    try {
+                        columnDTO.setMergeApplicant(esPatentService.getMergeApp(projectId, id));
+                    } catch (IOException e) {
+                        columnDTO.setMergeApplicant(new ArrayList<>());
+                    }
+                    try {
+                        columnDTO.setMergeRightHolder(esPatentService.getMergeRight(projectId, id));
+                    } catch (IOException e) {
+                        columnDTO.setMergeRightHolder(new ArrayList<>());
+                    }
+                    try {
+                        columnDTO.setMergeInventor(esPatentService.getMergeInventor(projectId, id));
+                    } catch (IOException e) {
+                        columnDTO.setMergeInventor(new ArrayList<>());
+                    }
+                }
                 columnDTO.setApplicant(esPatentService.loadName(esMess.getApplicant()));
                 columnDTO.setRightHolder(esPatentService.loadName(esMess.getRightHolder()));
                 columnDTO.setInventor(esPatentService.loadName(esMess.getInventor()));
@@ -454,6 +493,7 @@ public class EsService {
             return -1;
         }
     }
+
     //更新patent
     public Integer updatePatentById(Patent patent, String id) {
         UpdateRequest<Patent, Patent> req;
@@ -788,7 +828,7 @@ public class EsService {
         req = UpdateRequest.of(
                 b -> b.index("legal_event")
                         .id(id)
-                        .doc(legalEvent)
+                        .doc(legalEvent).refresh(Refresh.True).waitForActiveShards(WaitForActiveShards.of(i -> i.count(1)))
         );
         try {
             client.update(req, LegalEvent.class);
@@ -808,7 +848,7 @@ public class EsService {
     public String addLegalEvent(LegalEvent legalEvent) throws Exception {
         IndexResponse indexResponse = client.index(i -> i
                 .index("legal_event")
-                .document(legalEvent)
+                .document(legalEvent).refresh(Refresh.True).waitForActiveShards(WaitForActiveShards.of(t -> t.count(1)))
         );
         return indexResponse.id();
 
@@ -999,8 +1039,9 @@ public class EsService {
                     legalEvent1.setDescription(item.getLegalStatusInfo());
                     legalEvent1.setName(item.getLegalStatus());
                     try {
-                        this.addLegalEvent(legalEvent1);
+                        String reId = this.addLegalEvent(legalEvent1);
                     } catch (Exception e) {
+                        throw new XiaoShiException(e.getMessage());
                     }
                 }
 

+ 1 - 1
src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java

@@ -116,7 +116,7 @@ public class GetCataloguingFromWebThread extends Thread {
                 }
 
                 //添加法律事务
-              //  esService.addEsLegalEvent(uploadPatentWebDTO.getStarPatentVO().getPublicNo());
+                esService.addEsLegalEvent(uploadPatentWebDTO.getStarPatentVO().getApplicationNo());
 
                 //添加引用专利
                 String nos = starPatentVO.getQuoteNos();

+ 6 - 1
src/main/java/cn/cslg/pas/service/importPatent/GetPatentPDFFromWebThread.java

@@ -98,7 +98,12 @@ public class GetPatentPDFFromWebThread extends Thread {
                             fileManagerService.uploadFileWithGuid(file2, guid2);
                         }
                     } else {  //若只有一个
-                        pdfUrl1 = pdfUrlStr.substring(pdfUrlStr.indexOf("http"), pdfUrlStr.indexOf("?"));
+                        if(pdfUrlStr.contains("?")) {
+                            pdfUrl1 = pdfUrlStr.substring(pdfUrlStr.indexOf("http"), pdfUrlStr.indexOf("?"));
+                        }
+                        else {
+                            pdfUrl1 = pdfUrlStr.substring(pdfUrlStr.indexOf("http"));
+                        }
                         if (pdfUrl1.contains("0A_CN_0.pdf")) {
                             String guid1 = FormatUtil.getPDFFormat(starPatentVO.getApplicationNo(), 0);
                             File file1 = FileUtils.getFileByUrl(pdfUrl1);

+ 5 - 3
src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java

@@ -301,9 +301,11 @@ public class ImportFromWebToEsService implements PatentImportImp {
 
 
     public void setPatentToEsProductAll() {
-        importTaskAMVO.setMessageThreadDoneCounter(importTaskAMVO.getThreadDoneCounter() + 1);
-        if (importTaskAMVO.getMessageThreadCounter().equals(importTaskAMVO.getMessageThreadDoneCounter())) {
-            savePatentToEsThread.setIfProductAll(true);
+        synchronized ("装载专利信息") {
+            importTaskAMVO.setMessageThreadDoneCounter(importTaskAMVO.getMessageThreadDoneCounter() + 1);
+            if (importTaskAMVO.getMessageThreadCounter().equals(importTaskAMVO.getMessageThreadDoneCounter())) {
+                savePatentToEsThread.setIfProductAll(true);
+            }
         }
     }
 

+ 11 - 1
src/main/java/cn/cslg/pas/service/importPatent/ImportSinglePatentService.java

@@ -658,7 +658,12 @@ public class ImportSinglePatentService {
                         fileManagerService.uploadFileWithGuid(file2, guid2);
                     }
                 } else {  //若只有一个
-                    pdfUrl1 = pdfUrlStr.substring(pdfUrlStr.indexOf("http"), pdfUrlStr.indexOf("?"));
+                    if(pdfUrlStr.contains("?")) {
+                        pdfUrl1 = pdfUrlStr.substring(pdfUrlStr.indexOf("http"), pdfUrlStr.indexOf("?"));
+                    }
+                    else {
+                        pdfUrl1 = pdfUrlStr.substring(pdfUrlStr.indexOf("http"));
+                    }
                     if (pdfUrl1.contains("0A_CN_0.pdf")) {
                         String guid1 = FormatUtil.getPDFFormat(starPatentVO.getApplicationNo(), 0);
                         File file1 = FileUtils.getFileByUrl(pdfUrl1);
@@ -738,6 +743,10 @@ public class ImportSinglePatentService {
         if (contents.contains(5)) {
             this.getPDFFromWeb(starPatentVO);
         }
+        //添加法律事务
+        if(contents.contains(6)){
+            esService.addEsLegalEvent(patentNo);
+        }
 
         if (!ObjectUtils.isEmpty(patent)) {
             esService.updatePatentShouldWait(patent, patentWithIdVO.getId());
@@ -745,4 +754,5 @@ public class ImportSinglePatentService {
         }
         return true;
     }
+
 }

+ 3 - 0
src/main/java/cn/cslg/pas/service/importPatent/SavePatentToEsThread.java

@@ -129,6 +129,7 @@ public class SavePatentToEsThread extends Thread {
             }
         }
         taskThread.awakeTaskThread();
+        System.out.println("专利信息装载完毕");
     }
 
     public SavePatentToEsThread(TaskThread taskThread, ApplicationContext applicationContext) {
@@ -150,7 +151,9 @@ public class SavePatentToEsThread extends Thread {
     public void setIfProductAll(Boolean ifProductAll) {
 
         this.ifProductAll = ifProductAll;
+        System.out.println("专利导入全部结束"+ this.ifProductAll);
         if (taskLock.tryLock()) {
+            System.out.println("专利导入到es解锁");
             taskCondition.signalAll();
             taskLock.unlock();
         }

+ 18 - 11
src/main/java/cn/cslg/pas/service/importPatent/SchedulingTaskService.java

@@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -29,8 +30,8 @@ public class SchedulingTaskService {
 
     @Autowired
     private ApplicationContext applicationContext;
-    private ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(Constants.MAX_IMPORT_TASK_COUNT);
-
+    @Autowired
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
     @Autowired
     private ImportTaskConditionService importTaskConditionService;
 
@@ -39,8 +40,10 @@ public class SchedulingTaskService {
     private List<ImportTaskAMVO> importTaskAMVOS;
 
     public void startTask() {
-        Integer freeCount = Constants.MAX_IMPORT_TASK_COUNT - executor.getActiveCount();
-
+        Integer freeCount = Constants.MAX_IMPORT_TASK_COUNT - threadPoolTaskExecutor.getActiveCount();
+       if(importTaskAMVOS==null){
+           importTaskAMVOS=new ArrayList<>();
+       }
         // 当正在活跃的线程数小于最大线程数时
         if (freeCount > 0) {
             //查找任务
@@ -55,17 +58,19 @@ public class SchedulingTaskService {
 
             if (importTaskList.size() > 0) {
                 // 装载任务信息
-                importTaskAMVOS = this.loadTaskAMVOS(importTaskList);
+             List<ImportTaskAMVO>   importTaskAMVOFromDbs = this.loadTaskAMVOS(importTaskList);
 
-                for (int i = 0; i < importTaskAMVOS.size(); i++) {
+                for (int i = 0; i < importTaskAMVOFromDbs.size(); i++) {
                     importTaskList.get(i).setState(1);
                     importTaskList.get(i).updateById();
-                    importTaskAMVOS.get(i).setState(1);
-                    importTaskAMVOS.get(i).setThreadCounter(0);
-                    TaskThread taskThread = new TaskThread(importTaskAMVOS.get(i), applicationContext);
-                    executor.execute(taskThread);
+                    importTaskAMVOFromDbs.get(i).setState(1);
+                    importTaskAMVOFromDbs.get(i).setThreadCounter(0);
+                    TaskThread taskThread = new TaskThread(importTaskAMVOFromDbs.get(i), applicationContext);
+                    threadPoolTaskExecutor.execute(taskThread);
+                    importTaskAMVOS.add(importTaskAMVOFromDbs.get(i));
                 }
 
+
             }
 
         }
@@ -122,7 +127,9 @@ public class SchedulingTaskService {
     public void pauseTask(Integer taskId, Integer state) {
         //根据id获得
         ImportTaskAMVO importTaskAMVO = importTaskAMVOS.stream().filter(item -> item.getId().equals(taskId)).findFirst().orElse(null);
-        importTaskAMVO.setState(state);
+      if(importTaskAMVO!=null) {
+          importTaskAMVO.setState(state);
+      }
     }
 
     public List<ImportTaskAMVO> getImportTaskAMVOs() {

+ 15 - 0
src/main/java/cn/cslg/pas/service/importPatent/TaskExecutor.java

@@ -0,0 +1,15 @@
+package cn.cslg.pas.service.importPatent;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;  
+import org.springframework.stereotype.Component;  
+  
+@Component  
+public class TaskExecutor {  
+
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;  
+  
+    public void executeTask(Runnable task) {  
+        threadPoolTaskExecutor.execute(task);  
+    }  
+}

+ 8 - 1
src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java

@@ -65,9 +65,12 @@ public class TaskThread extends Thread {
         importTaskAMVO.setIfAddPicture(ifAddPicture);
         importTaskAMVO.setIfAddFullText(ifFullText);
         importTaskAMVO.setIfAddPDF(ifPdf);
+        //已完成的线程
         importTaskAMVO.setThreadDoneCounter(0);
         importTaskAMVO.setMessageThreadDoneCounter(0);
+        //总共需要完成的线程
         Integer threadCount = 0;
+        //专利信息需要完成的线程
         Integer messageThreadCount = 0;
 
         if (ifAddPicture == '1') {
@@ -95,7 +98,7 @@ public class TaskThread extends Thread {
         importTaskAMVO.setThreadCounter(threadCount);
         this.applicationContext = applicationContext;
         this.patentProcess.setPatentDoneNum(importTaskAMVO.getDoneNum());
-        this.patentProcess.setPatentDefaultNum(0);
+        this.patentProcess.setPatentDefaultNum(importTaskAMVO.getDefaultNum());
 
     }
 
@@ -141,7 +144,10 @@ public class TaskThread extends Thread {
     public void awakeTaskThread() {
         synchronized ("导入任务是否完成") {
             importTaskAMVO.setThreadDoneCounter(importTaskAMVO.getThreadDoneCounter() + 1);
+            System.out.println("任务已经完成第"+importTaskAMVO.getThreadDoneCounter());
             if (importTaskAMVO.getThreadCounter().equals(importTaskAMVO.getThreadDoneCounter())) {
+
+                System.out.println("任务已经完成");
                 if (taskThreadLock.tryLock()) {
                     //taskLock.lock();
                     taskThreadCondition.signalAll();
@@ -186,6 +192,7 @@ public class TaskThread extends Thread {
                     }
                     break;
             }
+            // 计算总进度
             List<Integer> nums = new ArrayList<>();
             nums.add(patentProcess.getPictureDoneNum());
             nums.add(patentProcess.getPdfDoneNum());

+ 2 - 15
src/main/resources/jsons/event.json

@@ -32,7 +32,7 @@
     "type": "Integer",
     "value": "reportProjectNum",
     "field": "reportProjectNum",
-    "sqlField": "event_id",
+    "sqlField": "id",
     "orderClass": "getEventReportNumOrder",
     "ifSearch": "false",
     "ifGroup": "false",
@@ -43,26 +43,13 @@
     "type": "Integer",
     "value": "patentProjectNum",
     "field": "patentProjectNum",
-    "sqlField": "event_id",
+    "sqlField": "id",
     "orderClass": "getEventProjectNumOrder",
     "ifSearch": "false",
     "ifGroup": "false",
     "ifShow": "true"
   },
   {
-    "name": "客户",
-    "type": "String",
-    "value": "clientName",
-    "field": "clientName",
-    "sqlField": "client_id",
-    "sqlClass": "getClientNameSql",
-    "orderClass": "getClientNameOrder",
-    "ifSearch": "true",
-    "ifGroup": "false",
-    "ifShow": "true",
-    "ifAsCondition": "true"
-  },
-  {
     "name": "发生时间",
     "type": "DateTime",
     "value": "eventDate",

+ 35 - 35
src/main/resources/jsons/patent.json

@@ -136,7 +136,7 @@
     "value": "abstractStr",
     "field": "AB",
     "esField": "abstract_str.text_content",
-    "esClass": "matchQueryBuilder",
+    "esClass": "matchPhaseQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -151,7 +151,7 @@
     "value": "title",
     "field": "TI",
     "esField": "title.text_content",
-    "esClass": "matchQueryBuilder",
+    "esClass": "matchPhaseQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -176,8 +176,8 @@
     "type": "Array",
     "value": "applicant",
     "field": "PA",
-    "esField": "applicant.name",
-    "esClass": "nestedQueryBuilder",
+    "esField": "applicant.name.key",
+    "esClass": "nestedPersonQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -203,10 +203,10 @@
   },
   {
     "name": "合并申请人",
-    "type": "String",
+    "type": "Array",
     "value": "mergeApplicant",
     "field": "MAT",
-    "esField": "merge_applicant.name",
+    "esField": "merge_applicant.name.raw",
     "esClass": "nestedQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
@@ -220,8 +220,8 @@
     "type": "Array",
     "value": "inventor",
     "field": "IN",
-    "esField": "inventor.name",
-    "esClass": "nestedQueryBuilder",
+    "esField": "inventor.name.key",
+    "esClass": "nestedPersonQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -234,7 +234,7 @@
     "type": "Array",
     "value": "mergeInventor",
     "field": "MIN",
-    "esField": "merge_inventor.name",
+    "esField": "merge_inventor.name.raw",
     "esClass": "nestedQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
@@ -248,8 +248,8 @@
     "type": "Array",
     "value": "rightHolder",
     "field": "PE",
-    "esField": "right_holder.name",
-    "esClass": "nestedQueryBuilder",
+    "esField": "right_holder.name.key",
+    "esClass": "nestedPersonQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -273,10 +273,10 @@
   },
   {
     "name": "合并权利人",
-    "type": "String",
+    "type": "Array",
     "value": "mergeRightHolder",
     "field": "MRH",
-    "esField": "merge_right_holder.name",
+    "esField": "merge_right_holder.name.raw",
     "esClass": "nestedQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
@@ -318,8 +318,8 @@
     "type": "String",
     "value": "agency",
     "field": "AGN",
-    "esField": "agency",
-    "esClass": "matchQueryBuilder",
+    "esField": "agency.key",
+    "esClass": "wildcardQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -333,7 +333,7 @@
     "value": "agent",
     "field": "AG",
     "esField": "agent.key",
-    "esClass": "keyWordQueryBuilder",
+    "esClass": "wildcardQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",
@@ -573,7 +573,7 @@
     "groupBy": "classify"
   },
   {
-    "name": "IPC分类号一级",
+    "name": "IPC分类号",
     "type": "String",
     "value": "ipcLevel1",
     "field": "IC",
@@ -586,7 +586,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "IPC分类号二级",
+    "name": "IPC分类号大类",
     "type": "String",
     "value": "ipcLevel2",
     "field": "IC2",
@@ -599,7 +599,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "IPC分类号三级",
+    "name": "IPC分类号小类",
     "type": "String",
     "value": "ipcLevel3",
     "field": "IC3",
@@ -612,7 +612,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "IPC分类号四级",
+    "name": "IPC分类号大组",
     "type": "String",
     "value": "ipcLevel4",
     "field": "IC4",
@@ -625,7 +625,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "IPC分类号五级",
+    "name": "IPC分类号小组",
     "type": "String",
     "value": "ipcLevel5",
     "field": "IC5",
@@ -652,7 +652,7 @@
     "groupBy": "classify"
   },
   {
-    "name": "CPC分类号一级",
+    "name": "CPC分类号",
     "type": "String",
     "value": "cpcLevel1",
     "field": "cpcLevel1",
@@ -665,7 +665,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "CPC分类号二级",
+    "name": "CPC分类号大类",
     "type": "String",
     "value": "cpcLevel2",
     "field": "cpcLevel2",
@@ -678,7 +678,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "CPC分类号三级",
+    "name": "CPC分类号小类",
     "type": "String",
     "value": "cpcLevel3",
     "field": "cpcLevel3",
@@ -691,7 +691,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "CPC分类号四级",
+    "name": "CPC分类号大组",
     "type": "String",
     "value": "cpcLevel4",
     "field": "cpcLevel4",
@@ -704,7 +704,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "CPC分类号五级",
+    "name": "CPC分类号小组",
     "type": "String",
     "value": "cpcLevel5",
     "field": "cpcLevel5",
@@ -731,7 +731,7 @@
     "groupBy": "classify"
   },
   {
-    "name": "UPC分类号一级",
+    "name": "UPC分类号",
     "type": "String",
     "value": "upcLevel1",
     "field": "upcLevel1",
@@ -744,7 +744,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "UPC分类号二级",
+    "name": "UPC分类号大类",
     "type": "String",
     "value": "upcLevel2",
     "field": "upcLevel2",
@@ -757,7 +757,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "UPC分类号三级",
+    "name": "UPC分类号小类",
     "type": "String",
     "value": "upcLevel3",
     "field": "upcLevel3",
@@ -784,7 +784,7 @@
     "groupBy": "classify"
   },
   {
-    "name": "LOC分类号一级",
+    "name": "LOC分类号",
     "type": "String",
     "value": "locLevel1",
     "field": "locLevel1",
@@ -797,7 +797,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "LOC分类号二级",
+    "name": "LOC分类号大类",
     "type": "String",
     "value": "locLevel2",
     "field": "locLevel2",
@@ -810,7 +810,7 @@
     "ifAsCondition": "true"
   },
   {
-    "name": "LOC分类号三级",
+    "name": "LOC分类号小类",
     "type": "String",
     "value": "locLevel3",
     "field": "locLevel3",
@@ -828,7 +828,7 @@
     "value": "claim",
     "field": "CL",
     "esField": "claim.text_content",
-    "esClass": "matchQueryBuilder",
+    "esClass": "matchPhaseQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "false",
@@ -1066,7 +1066,7 @@
     "esClass": "customChildQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "true",
+    "ifShow": "false",
     "ifAsCondition": "true"
   },
   {
@@ -1078,7 +1078,7 @@
     "esClass": "customChildQueryBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
-    "ifShow": "true",
+    "ifShow": "false",
     "ifAsCondition": "true"
   },
   {

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

@@ -14,13 +14,13 @@
     </select>
 
     <select id="getEventProjectNumOrder" resultType="java.lang.Integer">
-        select event_id from (select event_id, count(*) as c from
+        select  ifnull(event_id,0) from (select event_id, count(*) as c from
         asso_project_event
         <where>
             project_type =#{projectType}
             group by event_id,project_type
         </where>
-        ) as t order by c #{orderType}
+        ) as t order by c ${orderType}
     </select>
 
 </mapper>

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

@@ -21,7 +21,7 @@
         </if>
     </select>
     <select id="getGroups" resultType="cn.cslg.pas.common.vo.GroupReVO">
-        select ${selectField} as value ,count(${selectField}) as num from ${tableName}
+        select ${selectField} as value ,count(${countField}) as num from ${tableName}
         <if test="sqls.get(0)!=''">
             where ${sqls.get(0)}
         </if>

+ 3 - 5
src/test/java/cn/cslg/pas/service/CommonServiceTests.java

@@ -137,10 +137,8 @@ public class CommonServiceTests {
 //李仁杰<2232723707@qq.com>"
     @Test
     public void testEmail() throws Exception{
- Map<String,List<String>> map =new HashMap<>();
- map.put("a",new ArrayList<>());
- List<String> aa =map.get("a");
- aa.add("111");
- System.out.println(aa);
+        String te = "201100 上海市闵行区园美路58号1幢2层203、204室";
+        te+="aaaa";
+ System.out.println(te);
     }
     }

+ 8 - 19
src/test/java/cn/cslg/pas/service/EventServiceTests.java

@@ -18,6 +18,7 @@ import cn.cslg.pas.controller.PatentController;
 import cn.cslg.pas.domain.es.FamilyPatent;
 import cn.cslg.pas.domain.es.Patent;
 import cn.cslg.pas.domain.es.PatentFamilyMessage;
+import cn.cslg.pas.mapper.AssoProjectEventMapper;
 import cn.cslg.pas.service.business.MergePersonService;
 import cn.cslg.pas.service.business.ProductMarketDataService;
 import cn.cslg.pas.service.business.ReportTempleService;
@@ -68,6 +69,8 @@ public class EventServiceTests {
 
     @Autowired
     private ProductMarketDataService productMarketDataService;
+    @Autowired
+    private AssoProjectEventMapper assoProjectEventMapper;
 
     @Test
     void test() throws Exception {
@@ -381,9 +384,9 @@ public class EventServiceTests {
             for (int i = 0; i < list.size(); i++) {
                 String s = list.get(i);
                 if (i == list.size() - 1) {
-                    str = str + "\"" +s + "\""  ;
+                    str = str + "\"" + s + "\"";
                 } else {
-                    str = str + "\"" +s + "\"" + "," ;
+                    str = str + "\"" + s + "\"" + ",";
                 }
             }
         } else {
@@ -468,23 +471,9 @@ public class EventServiceTests {
 
     @Test
     public void test101() {
-//        Date date = new Date();
-//        Calendar calendar = Calendar.getInstance();
-//        calendar.setTime(date);
-//        calendar.add(Calendar.DAY_OF_MONTH, 1);
-//        Date date1 = calendar.getTime();
-//        System.out.println(date1);
-//
-//        List<Integer> list = Arrays.asList(1, 2, 3);
-//        String result = String.join(",", String.join(",", list.stream().map(Object::toString).collect(Collectors.toList())));
-//        System.out.println(result); // 输出: 1,2,3
-
-        String s = "((type='1') AND  (type_id='7') ) AND  (parent_id='0') ";
-        if (s.contains("type='1") || s.contains("type='2'")) {
-            System.out.println("Sdggdsgred");
-        } else {
-            System.out.println("end");
-        }
+        String a = " DESC";
+        List<Integer> ids = assoProjectEventMapper.getEventProjectNumOrder(0, a);
+        System.out.println(ids);
     }
 
 }