Ver Fonte

Merge remote-tracking branch 'origin/master'

xiexiang há 1 ano atrás
pai
commit
7a26325f7f
27 ficheiros alterados com 285 adições e 210 exclusões
  1. 2 0
      src/main/java/cn/cslg/pas/Application.java
  2. 1 1
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/ChildNestedAnalyseBuilder.java
  3. 1 1
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/NestedCountAnalysisBuilder.java
  4. 13 7
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/PrioritiesCountAnalysisBuilder.java
  5. 1 1
      src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/TermsCountAnalysisBuilder.java
  6. 1 1
      src/main/java/cn/cslg/pas/factorys/PatentImportFactory/PatentImportImp.java
  7. 1 1
      src/main/java/cn/cslg/pas/mapper/AssoProjectEventMapper.java
  8. 3 0
      src/main/java/cn/cslg/pas/mapper/InvalidReport/AssoGroupFeatureMapper.java
  9. 71 0
      src/main/java/cn/cslg/pas/service/business/AssoProjectEventService.java
  10. 32 12
      src/main/java/cn/cslg/pas/service/business/EventService.java
  11. 34 21
      src/main/java/cn/cslg/pas/service/business/MergePersonService.java
  12. 8 37
      src/main/java/cn/cslg/pas/service/business/PatentDigProjectService.java
  13. 5 23
      src/main/java/cn/cslg/pas/service/business/PatentProjectService.java
  14. 3 57
      src/main/java/cn/cslg/pas/service/business/ReportProjectService.java
  15. 2 0
      src/main/java/cn/cslg/pas/service/business/es/EsCountService.java
  16. 4 1
      src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java
  17. 13 0
      src/main/java/cn/cslg/pas/service/business/invalidReport/EvidenceReasonService.java
  18. 11 11
      src/main/java/cn/cslg/pas/service/common/PatentStarApiService.java
  19. 5 1
      src/main/java/cn/cslg/pas/service/importPatent/GetCataloguingFromWebThread.java
  20. 4 2
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentPDFFromWebThread.java
  21. 5 1
      src/main/java/cn/cslg/pas/service/importPatent/GetPatentPictureFromWebThread.java
  22. 1 2
      src/main/java/cn/cslg/pas/service/importPatent/GetRightAndFullTextFromWebThread.java
  23. 3 1
      src/main/java/cn/cslg/pas/service/importPatent/ImportFromExcelToEsService.java
  24. 19 17
      src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java
  25. 18 7
      src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java
  26. 16 0
      src/main/resources/mapper/AssoGroupFeatureMapper.xml
  27. 8 5
      src/main/resources/mapper/AssoProjectEvent.xml

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

@@ -3,12 +3,14 @@ package cn.cslg.pas;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.scheduling.annotation.EnableAsync;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
 @EnableCaching
 @SpringBootApplication
+@EnableAsync
 public class Application {
 
     public static void main(String[] args) {

+ 1 - 1
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/ChildNestedAnalyseBuilder.java

@@ -35,7 +35,7 @@ public class ChildNestedAnalyseBuilder implements IEsCountAnalysisBuilder{
             Query query = QueryBuilders.wildcard(i -> i.field(field).value(s));
             Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.must(query,q1)));
             terms = new Aggregation.Builder().terms(new TermsAggregation.Builder()
-                    .field(field).size(topN).build())
+                    .field(field).size(100).build())
                     .aggregations(new HashMap() {{
                         put("filter_agg", filter);
                     }}).build();

+ 1 - 1
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/NestedCountAnalysisBuilder.java

@@ -38,7 +38,7 @@ public class NestedCountAnalysisBuilder implements IEsCountAnalysisBuilder {
             Query query = QueryBuilders.wildcard(i -> i.field(field).value(s));
             Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.must(query)));
             terms = new Aggregation.Builder().terms(new TermsAggregation.Builder()
-                    .field(field).size(topN).build())
+                    .field(field).size(100).build())
                     .aggregations(new HashMap() {{
                         put("filter_agg", filter);
                     }}).build();

+ 13 - 7
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/PrioritiesCountAnalysisBuilder.java

@@ -3,6 +3,7 @@ package cn.cslg.pas.factorys.EsCountAnalyseBuilderFactory;
 import co.elastic.clients.elasticsearch._types.aggregations.*;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.json.JsonData;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
@@ -32,12 +33,17 @@ public class PrioritiesCountAnalysisBuilder implements IEsCountAnalysisBuilder{
     public Aggregation createCountAnalyseAgg() throws Exception {
         Aggregation aggregation = null;
         if (StringUtils.isNotEmpty(valueOne) && StringUtils.isNotEmpty(valueTwo)) {
+            SimpleDateFormat format = new SimpleDateFormat("yyyy");
+            Date beginDate = format.parse(valueOne);
+            long beginTime = beginDate.getTime();
             String end = String.valueOf(Integer.parseInt(valueTwo) + 1);
-            Query query = QueryBuilders.range(j -> j.field(field).from(valueOne).to(end).format("yyyy"));
+            Date endDate = format.parse(end);
+            long endTime = endDate.getTime();
+            Query query = QueryBuilders.range(j -> j.field(field).gte(JsonData.of(beginTime)).lt(JsonData.of(endTime)));
             Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.must(query)));
             aggregation = new Aggregation.Builder().dateHistogram(new DateHistogramAggregation.Builder()
                     .field(field).format("yyyy")
-                    .calendarInterval(CalendarInterval.Year).build())
+                    .calendarInterval(CalendarInterval.Year).timeZone("+08:00").build())
                     .aggregations(new HashMap() {{
                         put("filter_agg", filter);
                     }}).build();
@@ -164,9 +170,9 @@ public class PrioritiesCountAnalysisBuilder implements IEsCountAnalysisBuilder{
             aggregation = AggregationBuilders.dateRange(i -> i.field(field).format("yyyy-MM").ranges(rangeExpressions));
         } else if (StringUtils.isNotEmpty(format) && CollectionUtils.isEmpty(values)) {
             if (format.equals("年")) {
-                aggregation = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy").calendarInterval(CalendarInterval.Year));
+                aggregation = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy").calendarInterval(CalendarInterval.Year).timeZone("+08:00"));
             } else if (format.equals("半年")) {
-                Aggregation halfYearAgg = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy-MM").calendarInterval(CalendarInterval.Month));
+                Aggregation halfYearAgg = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy-MM").calendarInterval(CalendarInterval.Month).timeZone("+08:00"));
                 aggregation = new Aggregation.Builder().dateHistogram(new DateHistogramAggregation.Builder()
                         .field(field).format("yyyy")
                         .calendarInterval(CalendarInterval.Year).build())
@@ -174,12 +180,12 @@ public class PrioritiesCountAnalysisBuilder implements IEsCountAnalysisBuilder{
                             put("halfYearAgg", halfYearAgg);
                         }}).build();
             } else if (format.equals("季")) {
-                aggregation = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy-MM").calendarInterval(CalendarInterval.Quarter));
+                aggregation = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy-MM").calendarInterval(CalendarInterval.Quarter).timeZone("+08:00"));
             } else if (format.equals("月")) {
-                aggregation = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy-MM").calendarInterval(CalendarInterval.Month));
+                aggregation = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy-MM").calendarInterval(CalendarInterval.Month).timeZone("+08:00"));
             }
         } else {
-            aggregation = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy").calendarInterval(CalendarInterval.Year));
+            aggregation = AggregationBuilders.dateHistogram(i -> i.field(field).format("yyyy").calendarInterval(CalendarInterval.Year).timeZone("+08:00"));
 
         }
 

+ 1 - 1
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/TermsCountAnalysisBuilder.java

@@ -37,7 +37,7 @@ public class TermsCountAnalysisBuilder implements IEsCountAnalysisBuilder {
             Query query = QueryBuilders.wildcard(i -> i.field(field).value(s));
             Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.must(query)));
             aggregation = new Aggregation.Builder().terms(new TermsAggregation.Builder()
-                    .field(field).size(topN).build())
+                    .field(field).size(100).build())
                     .aggregations(new HashMap() {{
                         put("filter_agg", filter);
                     }}).build();

+ 1 - 1
src/main/java/cn/cslg/pas/factorys/PatentImportFactory/PatentImportImp.java

@@ -9,6 +9,6 @@ import java.io.IOException;
 import java.util.List;
 
 public interface PatentImportImp {
-    public void startPatentThread();
+    public Boolean startPatentThread();
     public void setTaskThread(TaskThread taskThread);
 }

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

@@ -15,6 +15,6 @@ import java.util.List;
  */
 @Repository
 public interface AssoProjectEventMapper extends BaseMapper<AssoProjectEvent> {
-    public List<EventCountVO> getEventProjectCount(List<Integer> eventIds);
+    public List<EventCountVO> getEventProjectCount(List<Integer> eventIds,String rootSql);
     public List<Integer> getEventProjectNumOrder(Integer projectType,String orderType);
 }

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

@@ -17,4 +17,7 @@ import java.util.List;
 public interface AssoGroupFeatureMapper extends BaseMapper<AssoGroupFeature> {
     public List<AssoGroupFeature> selectLastGroupFeature(Integer groupId,Integer order,Integer gen);
     public Integer selectLastGroupFeatureOrder(Integer groupId,Integer gen);
+
+    public List<AssoGroupFeature> queryForEvidenceReason(Integer groupId,Integer order,Integer gen);
+
 }

+ 71 - 0
src/main/java/cn/cslg/pas/service/business/AssoProjectEventService.java

@@ -1,12 +1,83 @@
 package cn.cslg.pas.service.business;
 
 
+import cn.cslg.pas.common.dto.business.ProjectEventDTO;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.domain.business.AssoProjectEvent;
+import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.mapper.AssoProjectEventMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 @Service
 public class AssoProjectEventService extends ServiceImpl<AssoProjectEventMapper, AssoProjectEvent> {
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private LoginUtils loginUtils;
+
+
+
+    public void addAssoEventProject(List<ProjectEventDTO> events, Integer projectId, Integer type) {
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
+        //遍历传入的事件集合
+        for (ProjectEventDTO projectEventDTO : events) {
+            AssoProjectEvent assoProjectEvent = assoProjectEvents.stream().filter(item -> item.getEventId()!=null&&item.getEventId().equals(projectEventDTO.getEventId())).findFirst().orElse(null);
+            AssoProjectEvent assoProjectEvent1 = assoProjectEvents.stream().filter(item -> item.getScenarioId()!=null&&item.getScenarioId().equals(projectEventDTO.getScenarioId())).findFirst().orElse(null);
+            AssoProjectEvent assoProjectEvent2 = assoProjectEvents.stream().filter(item -> item.getMatterId()!=null&&item.getMatterId().equals(projectEventDTO.getMatterId())).findFirst().orElse(null);
 
+            if (assoProjectEvent == null) {
+                assoProjectEvent = new AssoProjectEvent();
+                //事件id和处理事项id
+                assoProjectEvent.setEventId(projectEventDTO.getEventId());
+                //项目id
+                assoProjectEvent.setProjectId(projectId);
+                //创建人
+                assoProjectEvent.setCreateId(personnelVO.getId());
+                //类型为专题库
+                assoProjectEvent.setProjectType(type);
+                assoProjectEvents.add(assoProjectEvent);
+            }
+            if (assoProjectEvent1 == null) {
+                assoProjectEvent1 = new AssoProjectEvent();
+                //事件id和处理事项id
+                assoProjectEvent1.setScenarioId(projectEventDTO.getScenarioId());
+                //项目id
+                assoProjectEvent1.setProjectId(projectId);
+                //创建人
+                assoProjectEvent1.setCreateId(personnelVO.getId());
+                //类型为专题库
+                assoProjectEvent1.setProjectType(type);
+                assoProjectEvents.add(assoProjectEvent1);
+            }
+            if (assoProjectEvent2 == null) {
+                assoProjectEvent2 = new AssoProjectEvent();
+                //事件id和处理事项id
+                assoProjectEvent2.setMatterId(projectEventDTO.getMatterId());
+                //项目id
+                assoProjectEvent2.setProjectId(projectId);
+                //创建人
+                assoProjectEvent2.setCreateId(personnelVO.getId());
+                //类型为专题库
+                assoProjectEvent2.setProjectType(type);
+                assoProjectEvents.add(assoProjectEvent2);
+            }
+        }
+        if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
+            this.saveBatch(assoProjectEvents);
+        }
+    }
 }

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

@@ -1,6 +1,7 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.EventDTO;
+import cn.cslg.pas.common.dto.business.ProjectEventDTO;
 import cn.cslg.pas.common.dto.business.UpdateEventDTO;
 import cn.cslg.pas.common.model.cronModel.*;
 import cn.cslg.pas.common.model.request.*;
@@ -10,6 +11,7 @@ import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.business.EventCountVO;
 import cn.cslg.pas.common.vo.business.EventVO;
 import cn.cslg.pas.domain.business.AssoEventFile;
+import cn.cslg.pas.domain.business.AssoProjectEvent;
 import cn.cslg.pas.domain.business.Event;
 import cn.cslg.pas.domain.business.SystemDict;
 import cn.cslg.pas.exception.UnLoginException;
@@ -317,9 +319,10 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
             queryWrapper.in(AssoEventFile::getEventId, ids);
             assoEventFiles = assoEventFileService.list(queryWrapper);
             guids = assoEventFiles.stream().map(AssoEventFile::getFileGuid).collect(Collectors.toList());
-
+            String rootSql = this.loadProjectRootSql();
+//            String rootSql =null;
             //根据事件id分组查询事件关联专题库或报告数量
-            eventCountVOS = assoProjectEventMapper.getEventProjectCount(ids);
+            eventCountVOS = assoProjectEventMapper.getEventProjectCount(ids, rootSql);
         }
 
         //查询创建人名称
@@ -459,7 +462,7 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
      * @param object
      */
     public void checkParameter(Object object) {
-      PersonnelVO  personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
 
         String name = null;
         Integer id = null;
@@ -483,21 +486,38 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
         }
 
         //检验是否传入应用场景
-        if(scenarioId==null){
+        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);
+        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("名称重复");
+        Event event = this.getOne(queryWrapper, false);
+        if (event != null) {
+            throw new XiaoShiException("名称重复");
         }
+    }
+
+    private String loadProjectRootSql() {
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        String id = personnelVO.getId();
+        Integer tenantId = personnelVO.getTenantId();
+        Integer roleType = personnelVO.getRoleType();
+        String rootSql = null;
+        if (roleType == null || roleType.equals(0)) {
+            rootSql = "(p.create_id =" + id + " or p.head_id=" + id + " or p.id in (select project_id from asso_project_person where person_id =" + id + ")) ";
+
+        } else if (roleType.equals(2)) {
+            rootSql = "(p.tenant_id=" + tenantId + " or p.id in (select project_id from asso_project_person where person_id =" + id + ")) ";
+        }
+
+        return rootSql;
+
 
 
     }

+ 34 - 21
src/main/java/cn/cslg/pas/service/business/MergePersonService.java

@@ -289,6 +289,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         Query bool = QueryBuilders.bool(i -> i.must(q, query));
         builder.query(bool);
 
+        builder.trackTotalHits(i -> i.enabled(true));
         SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
         List<Hit<Patent>> hits = response.hits().hits();
         Map<String, List<PatentMergePerson>> map = new HashMap<>();
@@ -668,7 +669,7 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
         SearchRequest.Builder builder = new SearchRequest.Builder();
         //设置查询索引
         builder.index("patent");
-        Query mustQ = QueryBuilders.hasChild(i -> i.type("project").query(j -> j.term(n -> n.field("project_id").value(projectId))));
+//        Query mustQ = QueryBuilders.hasChild(i -> i.type("project").query(j -> j.term(n -> n.field("project_id").value(projectId))));
         if (!CollectionUtils.isEmpty(conditionList)) {
             for (String name : conditionList) {
                 List<Query> queries = new ArrayList<>();
@@ -695,15 +696,15 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                     Query childQ = QueryBuilders.hasChild(i -> i.type("merge_inventor").query(query));
                     queries.add(childQ);
                 }
-                Query bool = QueryBuilders.bool(i -> i.must(mustQ).should(queries));
-//                builder.size(99);
+                Query bool = QueryBuilders.bool(i -> i.should(queries));
                 builder.query(bool);
                 //分页
                 if (pageNum > 0 && pageSize > 0) {
                     builder.from((pageNum.intValue() - 1) * pageSize.intValue()).size(pageSize.intValue());
                 }
-                builder.trackTotalHits(i -> i.enabled(true));
+//                builder.trackTotalHits(i -> i.enabled(true));
                 SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+                total = response.hits().total().value();
                 List<Hit<Patent>> hits = response.hits().hits();
                 Map<String, Patent> map = new HashMap<>();
                 for (Hit<Patent> hit : hits) {
@@ -894,8 +895,10 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
                 }
             }
 
-            List<GetAllPersonDTO> collect = personList.stream().sorted(Comparator.comparing(GetAllPersonDTO::getName)).collect(Collectors.toList());
-            personDTOList.addAll(collect);
+            List<GetAllPersonDTO> collect = personList.stream().filter(i -> !StringUtils.isEmpty(i.getName())).collect(Collectors.toList());
+            List<GetAllPersonDTO> list = collect.stream().sorted(Comparator.comparing(GetAllPersonDTO::getName)).collect(Collectors.toList());
+
+            personDTOList.addAll(list);
         }
 
 //        List<GetAllPersonDTO> collect = personDTOList.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
@@ -1070,13 +1073,18 @@ 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 (CollectionUtils.isEmpty(nameDatas)) {
-                                    this.delSingleMerge(rightId, type, name);
-                                }
+//                                if (CollectionUtils.isEmpty(nameDatas)) {
+//                                    this.delSingleMerge(rightId, type, name);
+//                                }
 
                                 ArrayList<PatentMergePerson> rightMergeList = new ArrayList<>(mergePersonList);
                                 List<PatentMergePerson> rightList = rightMap.get(rightId);
                                 rightMergeList.addAll(rightList);
+                                if (CollectionUtils.isEmpty(nameDatas)) {
+                                    if (!CollectionUtils.isEmpty(rightMergeList)) {
+                                        rightMergeList.removeIf(right -> right.getName().equals(name));
+                                    }
+                                }
                                 //添加子文档
                                 Patent newPatent = new Patent();
                                 PatentJoin patentJoin = new PatentJoin();
@@ -1097,13 +1105,18 @@ 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 (CollectionUtils.isEmpty(nameDatas)) {
-                                    this.delSingleMerge(inventorId, type, name);
-                                }
+//                                if (CollectionUtils.isEmpty(nameDatas)) {
+//                                    this.delSingleMerge(inventorId, type, name);
+//                                }
 
                                 ArrayList<PatentMergePerson> inventorMergeList = new ArrayList<>(mergePersonList);
                                 List<PatentMergePerson> inventorList = inventorMap.get(inventorId);
                                 inventorMergeList.addAll(inventorList);
+                                if (CollectionUtils.isEmpty(nameDatas)) {
+                                    if (!CollectionUtils.isEmpty(inventorMergeList)) {
+                                        inventorMergeList.removeIf(inventor -> inventor.getName().equals(name));
+                                    }
+                                }
                                 //添加子文档
                                 Patent newPatent = new Patent();
                                 PatentJoin patentJoin = new PatentJoin();
@@ -1208,13 +1221,13 @@ 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);
+                                    if (!CollectionUtils.isEmpty(appMergeList)) {
+                                        appMergeList.removeIf(app -> app.getName().equals(name));
+                                    }
                                     //添加子文档
                                     Patent newPatent = new Patent();
                                     PatentJoin patentJoin = new PatentJoin();
@@ -1237,13 +1250,13 @@ 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);
+                                    if (!CollectionUtils.isEmpty(rightMergeList)) {
+                                        rightMergeList.removeIf(right -> right.getName().equals(name));
+                                    }
                                     //添加子文档
                                     Patent newPatent = new Patent();
                                     PatentJoin patentJoin = new PatentJoin();
@@ -1264,13 +1277,13 @@ 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);
+                                    if (!CollectionUtils.isEmpty(inventorMergeList)) {
+                                        inventorMergeList.removeIf(inventor -> inventor.getName().equals(name));
+                                    }
                                     //添加子文档
                                     Patent newPatent = new Patent();
                                     PatentJoin patentJoin = new PatentJoin();

+ 8 - 37
src/main/java/cn/cslg/pas/service/business/PatentDigProjectService.java

@@ -304,28 +304,15 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
         /**
          * 装载事件与project关联
          */
-        List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
-
         List<ProjectEventDTO> events = patentDigProjectDTO.getEvents();
         if (events != null && events.size() != 0) {
             //遍历传入的事件集合
-            for (ProjectEventDTO projectEventDTO : events) {
-                AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
-                //事件id和处理事项id
-                BeanUtils.copyProperties(projectEventDTO, assoProjectEvent);
-                //项目id
-                assoProjectEvent.setProjectId(project.getId());
-                //创建人
-                assoProjectEvent.setCreateId(personnelVO.getId());
-                //类型为专题库
-                assoProjectEvent.setProjectType(0);
-                assoProjectEvents.add(assoProjectEvent);
+            if (events != null && events.size() != 0) {
+                assoProjectEventService.addAssoEventProject(events,project.getId(),2);
             }
         }
 
-        if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
-            assoProjectEventService.saveBatch(assoProjectEvents);
-        }
+
         /**
          *装载参与人
          */
@@ -366,7 +353,8 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
         //当委托方id不为空时
         if (projectUpdateDTO.getEntrustId() != null) {
             project.setEntrustId(projectUpdateDTO.getEntrustId());
-        } else {//若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
+        }
+        else {//若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
             if (projectUpdateDTO.getEntrustName() != null && projectUpdateDTO.getEntrustName().trim() != "") {
                 ClientDTO clientDTO = new ClientDTO();
                 clientDTO.setName(projectUpdateDTO.getEntrustName());
@@ -389,7 +377,6 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
         queryWrapper.eq(PatentDigProject::getProjectId, project.getId());
         List<PatentDigProject> patentDigProjects = this.list(queryWrapper);
 
-
         if (patentDigProjects.size() != 0) {
             //装载专利挖掘项目基本信息
             patentDigProject = patentDigProjects.get(0);
@@ -471,27 +458,11 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
             /**
              * 装载事件与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 (events != null && events.size() != 0) {
+                    assoProjectEventService.addAssoEventProject(events,project.getId(),2);
                 }
-                if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
-                    assoProjectEventService.saveBatch(assoProjectEvents);
-                }
-            }
+
 
 
             LambdaQueryWrapper<AssoProjectPerson> assoProjectPersonLambdaQueryWrapper = new LambdaQueryWrapper<>();

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

@@ -318,19 +318,11 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
         List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
 
         List<ProjectEventDTO> events = patentProjectDTO.getEvents();
+
         if (events != null && events.size() != 0) {
             //遍历传入的事件集合
-            for (ProjectEventDTO projectEventDTO : events) {
-                AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
-                //事件id和处理事项id
-              assoProjectEvent.setEventId(projectEventDTO.getEventId());
-                //项目id
-                assoProjectEvent.setProjectId(project.getId());
-                //创建人
-                assoProjectEvent.setCreateId(personnelVO.getId());
-                //类型为专题库
-                assoProjectEvent.setProjectType(0);
-                assoProjectEvents.add(assoProjectEvent);
+            if (events != null && events.size() != 0) {
+                assoProjectEventService.addAssoEventProject(events,project.getId(),0);
             }
         }
 
@@ -504,18 +496,8 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
         assoProjectEventService.remove(updateEventWrapper);
         List<ProjectEventDTO> events = updatePatentProjectDTO.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 (events != null && events.size() != 0) {
+                assoProjectEventService.addAssoEventProject(events,project.getId(),0);
             }
         }
 

+ 3 - 57
src/main/java/cn/cslg/pas/service/business/ReportProjectService.java

@@ -371,48 +371,7 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
         List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
         List<ProjectEventDTO> events = reportProjectDTO.getEvents();
         if (events != null && events.size() != 0) {
-            //遍历传入的事件集合
-            for (ProjectEventDTO projectEventDTO : events) {
-                if (projectEventDTO.getEventId() != null) {
-                    AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
-                    //事件id和处理事项id
-                    assoProjectEvent.setEventId(projectEventDTO.getEventId());
-                    //项目id
-                    assoProjectEvent.setProjectId(project.getId());
-                    //创建人
-                    assoProjectEvent.setCreateId(personnelVO.getId());
-                    //类型为报告
-                    assoProjectEvent.setProjectType(1);
-                    assoProjectEvents.add(assoProjectEvent);
-                }
-                if (projectEventDTO.getMatterId() != null) {
-                    AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
-                    //事件id和处理事项id
-                    assoProjectEvent.setMatterId(projectEventDTO.getMatterId());
-                    //项目id
-                    assoProjectEvent.setProjectId(project.getId());
-                    //创建人
-                    assoProjectEvent.setCreateId(personnelVO.getId());
-                    //类型为报告
-                    assoProjectEvent.setProjectType(1);
-                    assoProjectEvents.add(assoProjectEvent);
-                }
-                if (projectEventDTO.getScenarioId() != null) {
-                    AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
-                    //事件id和处理事项id
-                    assoProjectEvent.setScenarioId(projectEventDTO.getScenarioId());
-                    //项目id
-                    assoProjectEvent.setProjectId(project.getId());
-                    //创建人
-                    assoProjectEvent.setCreateId(personnelVO.getId());
-                    //类型为报告
-                    assoProjectEvent.setProjectType(1);
-                    assoProjectEvents.add(assoProjectEvent);
-                }
-            }
-            if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
-                assoProjectEventService.saveBatch(assoProjectEvents);
-            }
+            assoProjectEventService.addAssoEventProject(events,project.getId(),1);
         }
         /**
          * 装载和附件关联
@@ -588,21 +547,8 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
 
         List<ProjectEventDTO> events = updateReportProjectDTO.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(1);
-                assoProjectEvents.add(assoProjectEvent);
-            }
-            if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
-                assoProjectEventService.saveBatch(assoProjectEvents);
+            if (events != null && events.size() != 0) {
+                assoProjectEventService.addAssoEventProject(events,project.getId(),1);
             }
         }
         /**

+ 2 - 0
src/main/java/cn/cslg/pas/service/business/es/EsCountService.java

@@ -204,6 +204,8 @@ public class EsCountService {
             } else {
                 builder.aggregations("Agg", aggregation);
             }
+            //解除最大条数限制
+            builder.trackTotalHits(i -> i.enabled(true));
             SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
             Aggregate agg = response.aggregations().get("Agg");
             if (query != null) {

+ 4 - 1
src/main/java/cn/cslg/pas/service/business/es/EsPatentService.java

@@ -334,7 +334,10 @@ public class EsPatentService {
         String guids = fileManagerService.getPatentPictureGuids(appNo);
         if (StringUtils.isNotEmpty(guids)) {
             JSONObject jsonObject = JSONObject.parseObject(guids);
-            list = JSONArray.parseArray(jsonObject.get("data").toString(), String.class);
+            String data = jsonObject.get("data").toString();
+            if (StringUtils.isNotEmpty(data)) {
+                list = JSONArray.parseArray(data, String.class);
+            }
         }
         return list;
     }

+ 13 - 0
src/main/java/cn/cslg/pas/service/business/invalidReport/EvidenceReasonService.java

@@ -86,6 +86,12 @@ public class EvidenceReasonService extends ServiceImpl<EvidenceReasonMapper, Evi
         queryWrapper.eq(AssoGroupFeature::getGroupId, groupId)
                 .eq(AssoGroupFeature::getFeatureGen, gen);
         List<AssoGroupFeature> assoGroupFeatures = assoGroupFeatureService.list(queryWrapper);
+         if(assoGroupFeatures.size()==0&&gen.equals(1)){
+             queryWrapper =new LambdaQueryWrapper<>();
+             queryWrapper.eq(AssoGroupFeature::getGroupId, groupId)
+                     .eq(AssoGroupFeature::getFeatureGen, 0);
+             assoGroupFeatures = assoGroupFeatureService.list(queryWrapper);
+         }
         assoIds = assoGroupFeatures.stream().map(AssoGroupFeature::getId).collect(Collectors.toList());
 
         //根据特征证据组合关联id 删除和无效理由关联
@@ -199,11 +205,18 @@ public class EvidenceReasonService extends ServiceImpl<EvidenceReasonMapper, Evi
         Integer groupId = queryEvidenceReasonDTO.getGroupId();
         Integer gen = queryEvidenceReasonDTO.getGen();
         //根据证据组合id 查询特征
+
         LambdaQueryWrapper<AssoGroupFeature> assFWrapper = new LambdaQueryWrapper<>();
         assFWrapper.eq(AssoGroupFeature::getGroupId, groupId)
                 .and(wrapper -> wrapper.eq(AssoGroupFeature::getFeatureGen, gen).or().eq(AssoGroupFeature::getOperateMode, 2));
 
         List<AssoGroupFeature> assoGroupFeatures = assoGroupFeatureService.list(assFWrapper);
+        if(assoGroupFeatures.size()==0&&gen.equals(1)){
+            assFWrapper = new LambdaQueryWrapper<>();
+            assFWrapper.eq(AssoGroupFeature::getGroupId, groupId)
+                    .and(wrapper -> wrapper.eq(AssoGroupFeature::getFeatureGen, 0).or().eq(AssoGroupFeature::getOperateMode, 2));
+        }
+        assoGroupFeatures = assoGroupFeatureService.list(assFWrapper);
         List<QueryEvidenceReasonVO> queryEvidenceReasonVOS = new ArrayList<>();
         if (assoGroupFeatures != null && assoGroupFeatures.size() != 0) {
             assoGroupFeatures.forEach(assoGroupFeature -> {

+ 11 - 11
src/main/java/cn/cslg/pas/service/common/PatentStarApiService.java

@@ -98,17 +98,17 @@ public class PatentStarApiService {
         retrieveRecord.setRetrieveTime(new Date());
         retrieveRecord.setTotalNum(Integer.parseInt(map.get("total").toString()));
         retrieveRecord.setDbType(patentStarListDTO.getDBType());
-//        if (patentStarListDTO.getRetrieveRecordId() == null) {
-//            //获取创建人信息
-//            PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-//            retrieveRecord.setCreateTime(new Date());
-//            retrieveRecord.setCreateId(personnelVO.getId());
-//            retrieveRecord.setTenantId(personnelVO.getTenantId());
-//            retrieveRecord.insert();
-//        }
-//        else {
-//            retrieveRecord.updateById();
-//        }
+        if (patentStarListDTO.getRetrieveRecordId() == null) {
+            //获取创建人信息
+            PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+            retrieveRecord.setCreateTime(new Date());
+            retrieveRecord.setCreateId(personnelVO.getId());
+            retrieveRecord.setTenantId(personnelVO.getTenantId());
+            retrieveRecord.insert();
+        }
+        else {
+            retrieveRecord.updateById();
+        }
         List<StarPatentVO> starPatentVOS = (List<StarPatentVO>) map.get("records");
 
         //装载starPatentVOS到 PatentColumnDTO

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

@@ -161,7 +161,11 @@ public class GetCataloguingFromWebThread extends Thread {
     public void setIfProductAll(Boolean ifProductAll) {
 
         this.ifProductAll = ifProductAll;
-
+        if (taskLock.tryLock()) {
+            System.out.println("专利导入到es解锁" + importTaskAMVO.getId());
+            taskCondition.signalAll();
+            taskLock.unlock();
+        }
     }
 
     //装载专利信息

+ 4 - 2
src/main/java/cn/cslg/pas/service/importPatent/GetPatentPDFFromWebThread.java

@@ -158,8 +158,10 @@ public class GetPatentPDFFromWebThread extends Thread {
     }
 
     public void setIfProductAll(Boolean ifProductAll) {
-
         this.ifProductAll = ifProductAll;
-
+        if (taskLock.tryLock()) {
+            taskCondition.signalAll();
+            taskLock.unlock();
+        }
     }
 }

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

@@ -98,6 +98,10 @@ public class GetPatentPictureFromWebThread extends Thread {
     public void setIfProductAll(Boolean ifProductAll) {
 
         this.ifProductAll = ifProductAll;
-
+        if (taskLock.tryLock()) {
+            System.out.println("专利导入到es解锁" + importTaskAMVO.getId());
+            taskCondition.signalAll();
+            taskLock.unlock();
+        }
     }
 }

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

@@ -193,11 +193,10 @@ public class GetRightAndFullTextFromWebThread extends Thread {
     }
 
     public void setIfProductAll(Boolean ifProductAll) {
+        this.ifProductAll = ifProductAll;
         if (taskLock.tryLock()) {
             taskCondition.signalAll();
             taskLock.unlock();
         }
-        this.ifProductAll = ifProductAll;
-
     }
 }

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

@@ -2,6 +2,7 @@ package cn.cslg.pas.service.importPatent;
 
 import cn.cslg.pas.factorys.PatentImportFactory.PatentImportImp;
 import org.springframework.context.annotation.Scope;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
@@ -11,7 +12,7 @@ public class ImportFromExcelToEsService implements PatentImportImp {
 private TaskThread taskThread;
 
     @Override
-    public void startPatentThread() {
+    public Boolean startPatentThread() {
 
         taskThread.getImportTaskAMVO().setThreadCounter(2);
         taskThread.getImportTaskAMVO().setThreadDoneCounter(0);
@@ -24,6 +25,7 @@ private TaskThread taskThread;
         savePatentToEsThread.start();
         getPatentFromExcelThread.start();
         getPatentPictureFromExcelThread.start();
+        return true;
     }
 
     @Override

+ 19 - 17
src/main/java/cn/cslg/pas/service/importPatent/ImportFromWebToEsService.java

@@ -22,6 +22,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Scope;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.io.ByteArrayInputStream;
@@ -55,7 +56,7 @@ public class ImportFromWebToEsService implements PatentImportImp {
     private List<UploadPatentWebDTO> uploadPatentWebDTOS = new ArrayList<>();
 
     @Override
-    public void startPatentThread() {
+    public Boolean startPatentThread() {
         //装载专利信息的计数器
         Integer addPatentCounter = 0;
         //十进制转二进制
@@ -83,13 +84,12 @@ public class ImportFromWebToEsService implements PatentImportImp {
             getCataloguingFromWebThread = new GetCataloguingFromWebThread(taskThread, this);
             getCataloguingFromWebThread.start();
         }
-        excuteLessThan10000(importTaskAMVO, addPatentCounter);
-
-
+       return excuteLessThan10000(importTaskAMVO, addPatentCounter);
     }
 
 
-    private void excuteLessThan10000(ImportTaskAMVO importTaskAMVO, Integer addPatentCounter) {
+    private Boolean excuteLessThan10000(ImportTaskAMVO importTaskAMVO, Integer addPatentCounter) {
+        Boolean ifHaveGet = false;
         try {
             String orderBy = importTaskAMVO.getOrderBy();  //排序字段
             String orderByType = importTaskAMVO.getOrderByType();  //排序类型
@@ -202,10 +202,10 @@ public class ImportFromWebToEsService implements PatentImportImp {
                 Integer startPage = calculate.getStartPage();
                 Integer endPage = calculate.getEndPage();
 
-                for (int i = startPage; i <endPage; i++) {
+                for (int i = startPage; i < endPage; i++) {
                     PatentStarListDTO patentStarListDTOTemp = new PatentStarListDTO();
                     BeanUtils.copyProperties(patentStarListDto, patentStarListDTOTemp);
-                    patentStarListDTOTemp.setPageNum(i+1);
+                    patentStarListDTOTemp.setPageNum(i + 1);
                     patentStarListDTOTemp.setRowCount(50);
                     //调用一般接口返回一批专利著录相关数据
 
@@ -221,9 +221,9 @@ public class ImportFromWebToEsService implements PatentImportImp {
                     Integer pageEndNum = starPatents.size();
                     //遍历这一页的专利
                     for (int j = pageStartNum; j < pageEndNum; j++) {
-                        StarPatentVO starPatentVO =starPatents.get(j);
+                        StarPatentVO starPatentVO = starPatents.get(j);
 
-                        if(nos!=null) {
+                        if (nos != null) {
                             nos.removeIf(item -> item.equals(starPatentVO.getApplicationNo())
                                     || item.equals(starPatentVO.getPublicNo())
                                     || item.equals(starPatentVO.getPublicAccreditNo())
@@ -238,7 +238,7 @@ public class ImportFromWebToEsService implements PatentImportImp {
                         uploadPatentWebDTO.setIndex(index);
                         uploadPatentWebDTO.setTotalCounter(addPatentCounter);
                         uploadPatentWebDTO.setHaveSaveCounter(0);
-
+                        ifHaveGet = true;
                         if (ifCataloguing == '1') {
                             getCataloguingFromWebThread.awakeTask(uploadPatentWebDTO);
                         }
@@ -258,19 +258,19 @@ public class ImportFromWebToEsService implements PatentImportImp {
                     }
 
                 }
-           List<PatentImportErrorLog> patentImportErrorLogs =new ArrayList<>();
-                if(nos!=null&&nos.size()>0){
-                    nos.forEach(item->{
-                        PatentImportErrorLog patentImportErrorLog =new PatentImportErrorLog();
+                List<PatentImportErrorLog> patentImportErrorLogs = new ArrayList<>();
+                if (nos != null && nos.size() > 0) {
+                    nos.forEach(item -> {
+                        PatentImportErrorLog patentImportErrorLog = new PatentImportErrorLog();
                         patentImportErrorLog.setPatentNo(item);
                         patentImportErrorLog.setErrorType(-1);
                         patentImportErrorLog.setTaskId(importTaskAMVO.getId());
                         patentImportErrorLogs.add(patentImportErrorLog);
                     });
                 }
-                if(patentImportErrorLogs.size()>0){
+                if (patentImportErrorLogs.size() > 0) {
                     PatentImportErrorLogService patentImportErrorLogService = applicationContext.getBean(PatentImportErrorLogService.class);
-                        patentImportErrorLogService.saveBatch(patentImportErrorLogs);
+                    patentImportErrorLogService.saveBatch(patentImportErrorLogs);
                 }
             }
 
@@ -287,10 +287,12 @@ public class ImportFromWebToEsService implements PatentImportImp {
             if (ifPdf == '1') {
                 getPatentPDFFromWebThread.setIfProductAll(true);
             }
+
+        return ifHaveGet;
         } catch (Exception e) {
             e.printStackTrace();
             //生产消费到一半时,发生错误异常,将任务状态置为完成
-
+           return  ifHaveGet;
         }
     }
 

+ 18 - 7
src/main/java/cn/cslg/pas/service/importPatent/TaskThread.java

@@ -113,14 +113,15 @@ public class TaskThread extends Thread {
         ImportTaskConfig config = configs.stream().filter(item -> item.getTaskType().equals(importTaskAMVO.getType()) && item.getImportTo().equals(Constants.IMPORT_PATENT_TO)).findFirst().orElse(null);
         PatentImportImp patentImportImp = patentImportFactory.getClass(config.getImportClass());
         patentImportImp.setTaskThread(this);
-        patentImportImp.startPatentThread();
-        taskThreadLock.lock();
-        try {
-            taskThreadCondition.await();
-        } catch (InterruptedException e) {
-            e.printStackTrace();
+      Boolean flag=  patentImportImp.startPatentThread();
+        if(flag) {
+            taskThreadLock.lock();
+            try {
+                taskThreadCondition.await();
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
         }
-
         ImportTaskService importTaskService = applicationContext.getBean(ImportTaskService.class);
         ImportTask task = importTaskService.getById(importTaskAMVO.getId());
         if (importTaskAMVO.getState().equals(1)) {
@@ -137,6 +138,7 @@ public class TaskThread extends Thread {
         messageService.sendAllDoneMessage(importTaskAMVO);
         SchedulingTaskService schedulingTaskService =applicationContext.getBean(SchedulingTaskService.class);
    schedulingTaskService.removeTaskAMVO(importTaskAMVO.getId());
+   schedulingTaskService.startTask();
     }
 
 
@@ -161,6 +163,15 @@ public class TaskThread extends Thread {
         }
     }
 
+    public  void doneTask(){
+        if (taskThreadLock.tryLock()) {
+            //taskLock.lock();
+            taskThreadCondition.signalAll();
+            taskThreadLock.unlock();
+        }
+        MessageService messageService = applicationContext.getBean(MessageService.class);
+        messageService.sendWebsocketMessage(importTaskAMVO, -1, patentProcess);
+    }
 
     public ImportTaskAMVO getImportTaskAMVO() {
         return this.importTaskAMVO;

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

@@ -31,4 +31,20 @@
         order by feature_gen desc limit 9999) a
         group by a.group_id, a.feature_order order by a.feature_order desc limit 1;
     </select>
+
+    <select id="queryForEvidenceReason" resultType="cn.cslg.pas.domain.business.AssoGroupFeature">
+        select *
+        from (select *
+        from asso_group_feature f
+        <where>
+            f.group_id = #{groupId} and
+            (operate_mode!=1 or  isnull(operate_mode))
+
+
+            and feature_gen &lt;= #{gen}
+        </where>
+
+        order by feature_gen desc limit 9999) a
+        group by a.group_id, a.feature_order
+    </select>
 </mapper>

+ 8 - 5
src/main/resources/mapper/AssoProjectEvent.xml

@@ -2,14 +2,17 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="cn.cslg.pas.mapper.AssoProjectEventMapper">
     <select id="getEventProjectCount" resultType="cn.cslg.pas.common.vo.business.EventCountVO">
-        select event_id as eventId,project_type as projectType,count(*) as projectCount
-        from pas_prod2.asso_project_event
+        select t.event_id as eventId,t.project_type as projectType,count(*) as projectCount
+        from asso_project_event as t left join project as p on p.id =t.project_id
         <where>
-            event_id in
-            <foreach collection="eventIds" index="index" item="item" open="(" separator="," close=")">
+        t.event_id in
+            <foreach collection="eventIds" index="index" item="item" open="(" separator="," close=") ">
                 #{item}
             </foreach>
-            group by event_id,project_type
+            <if test="rootSql!=null">
+                 and ${rootSql}
+            </if>
+            group by t.event_id,t.project_type
         </where>
     </select>