Bläddra i källkod

Merge remote-tracking branch 'origin/master'

lwhhszx 1 år sedan
förälder
incheckning
3588c760dd

+ 4 - 0
src/main/java/cn/cslg/pas/common/dto/business/GetReferencesDTO.java

@@ -1,7 +1,10 @@
 package cn.cslg.pas.common.dto.business;
 
+import cn.cslg.pas.common.model.request.OrderDTO;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * @Author xiexiang
  * @Date 2023/12/20
@@ -12,4 +15,5 @@ public class GetReferencesDTO {
     private String fileName;
     private Integer current;
     private Integer size;
+    private List<OrderDTO> orderDTOList;
 }

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

@@ -47,8 +47,8 @@ public class ReferencesController {
     @Operation(summary = "查报告文档")
     @PostMapping("/getReferences")
     public Response getReferences(@RequestBody GetReferencesDTO getReferencesDTO) {
-        List<ReferencesVO> referencesVOS = referencesService.query(getReferencesDTO);
-        return Response.success(referencesVOS);
+        Records records = referencesService.query(getReferencesDTO);
+        return Response.success(records);
     }
 
     @Operation(summary = "删除报告文档")

+ 17 - 0
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/ChildCountAnalysisBuilder.java

@@ -26,12 +26,21 @@ public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
     private String format;
     public List<String> values = new ArrayList<>();
     public Integer projectId = null;
+    public Integer taskId = null;
 
     @Override
     public Aggregation createCountAnalyseAgg() throws Exception {
         Aggregation aggregation = null;
         List<Query> queryList = new ArrayList<>();
         Query q1 = QueryBuilders.term(i -> i.field("custom_field.field").value(fieldId));
+        if (projectId != null) {
+            Query q2 = QueryBuilders.term(i -> i.field("custom_field.project_id").value(projectId));
+            queryList.add(q2);
+        }
+        if (taskId != null) {
+            Query q3 = QueryBuilders.term(i -> i.field("custom_field.task_id").value(taskId));
+            queryList.add(q3);
+        }
         queryList.add(q1);
         Aggregation termAgg = null;
         if (ifHaveChild) {
@@ -203,4 +212,12 @@ public class ChildCountAnalysisBuilder implements IEsCountAnalysisBuilder {
     public void setProjectId(Integer projectId) {
         this.projectId = projectId;
     }
+
+    public Integer getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(Integer taskId) {
+        this.taskId = taskId;
+    }
 }

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

@@ -24,6 +24,7 @@ public class ChildNestedAnalyseBuilder implements IEsCountAnalysisBuilder{
     private String format;
     public List<String> values = new ArrayList<>();
     public Integer projectId = null;
+    public Integer taskId = null;
 
     public Aggregation createCountAnalyseAgg() throws Exception {
         Aggregation terms = null;
@@ -186,4 +187,14 @@ public class ChildNestedAnalyseBuilder implements IEsCountAnalysisBuilder{
     public void setProjectId(Integer projectId) {
         this.projectId = projectId;
     }
+
+    @Override
+    public Integer getTaskId() {
+        return taskId;
+    }
+
+    @Override
+    public void setTaskId(Integer taskId) {
+        this.taskId = taskId;
+    }
 }

+ 11 - 0
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/DateCountAnalyssBuilder.java

@@ -25,6 +25,7 @@ public class DateCountAnalyssBuilder implements IEsCountAnalysisBuilder {
     private String format;
     public List<String> values = new ArrayList<>();
     public Integer projectId = null;
+    public Integer taskId = null;
     public static final int YEAR = 4;
     public static final int MONTH = 7;
     public static final int DAY = 10;
@@ -296,4 +297,14 @@ public class DateCountAnalyssBuilder implements IEsCountAnalysisBuilder {
     public void setProjectId(Integer projectId) {
         this.projectId = projectId;
     }
+
+    @Override
+    public Integer getTaskId() {
+        return taskId;
+    }
+
+    @Override
+    public void setTaskId(Integer taskId) {
+        this.taskId = taskId;
+    }
 }

+ 5 - 0
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/IEsCountAnalysisBuilder.java

@@ -17,6 +17,7 @@ public interface IEsCountAnalysisBuilder {
     public List<String> values = new ArrayList<>();
     public String format = null;
     public Integer projectId = null;
+    public Integer taskId = null;
 
     public Aggregation createCountAnalyseAgg() throws Exception;
 
@@ -62,4 +63,8 @@ public interface IEsCountAnalysisBuilder {
     public Integer getProjectId();
 
     public void setProjectId(Integer projectId);
+
+    public Integer getTaskId();
+
+    public void setTaskId(Integer taskId);
 }

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

@@ -27,6 +27,7 @@ public class NestedCountAnalysisBuilder implements IEsCountAnalysisBuilder {
     private String format;
     public List<String> values = new ArrayList<>();
     public Integer projectId = null;
+    public Integer taskId = null;
 
     @Override
     public Aggregation createCountAnalyseAgg() throws Exception {
@@ -144,4 +145,14 @@ public class NestedCountAnalysisBuilder implements IEsCountAnalysisBuilder {
     public void setProjectId(Integer projectId) {
         this.projectId = projectId;
     }
+
+    @Override
+    public Integer getTaskId() {
+        return taskId;
+    }
+
+    @Override
+    public void setTaskId(Integer taskId) {
+        this.taskId = taskId;
+    }
 }

+ 11 - 0
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/PrioritiesCountAnalysisBuilder.java

@@ -23,6 +23,7 @@ public class PrioritiesCountAnalysisBuilder implements IEsCountAnalysisBuilder{
     private String format;
     public List<String> values = new ArrayList<>();
     public Integer projectId = null;
+    public Integer taskId = null;
     public static final int YEAR = 4;
     public static final int MONTH = 7;
     public static final int DAY = 10;
@@ -280,4 +281,14 @@ public class PrioritiesCountAnalysisBuilder implements IEsCountAnalysisBuilder{
     public void setProjectId(Integer projectId) {
         this.projectId = projectId;
     }
+
+    @Override
+    public Integer getTaskId() {
+        return taskId;
+    }
+
+    @Override
+    public void setTaskId(Integer taskId) {
+        this.taskId = taskId;
+    }
 }

+ 11 - 0
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/RangeCountAnalysisBuilder.java

@@ -22,6 +22,7 @@ public class RangeCountAnalysisBuilder implements IEsCountAnalysisBuilder{
     private String format;
     public List<String> values = new ArrayList<>();
     public Integer projectId = null;
+    public Integer taskId = null;
 
     @Override
     public Aggregation createCountAnalyseAgg() throws Exception {
@@ -160,4 +161,14 @@ public class RangeCountAnalysisBuilder implements IEsCountAnalysisBuilder{
     public void setProjectId(Integer projectId) {
         this.projectId = projectId;
     }
+
+    @Override
+    public Integer getTaskId() {
+        return taskId;
+    }
+
+    @Override
+    public void setTaskId(Integer taskId) {
+        this.taskId = taskId;
+    }
 }

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

@@ -26,6 +26,7 @@ public class TermsCountAnalysisBuilder implements IEsCountAnalysisBuilder {
     public List<String> values = new ArrayList<>();
     private String format;
     public Integer projectId = null;
+    public Integer taskId = null;
 
     @Override
     public Aggregation createCountAnalyseAgg() throws Exception {
@@ -139,4 +140,14 @@ public class TermsCountAnalysisBuilder implements IEsCountAnalysisBuilder {
     public void setProjectId(Integer projectId) {
         this.projectId = projectId;
     }
+
+    @Override
+    public Integer getTaskId() {
+        return taskId;
+    }
+
+    @Override
+    public void setTaskId(Integer taskId) {
+        this.taskId = taskId;
+    }
 }

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

@@ -120,6 +120,9 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
     @Autowired
     private MailSendService mailSendService;
 
+    @Autowired
+    private AssoProjectPersonService assoProjectPersonService;
+
     /**
      * 挖掘项目开卷审核任务
      *
@@ -225,6 +228,11 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                 projectTask1.updateById();
             }
         }
+        //项目可见人检验
+        //如果是内部人员
+        if (projectTask.getHandlerType().equals(0)) {
+            this.checkProjectPerson(1, projectTask.getHandler(), projectTask.getProjectId(), projectTask.getId());
+        }
         return projectTask.getId();
     }
 
@@ -616,9 +624,9 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         if (projectTask != null) {
             //查询出当前任务的类型
             //如果是分配任务/或者协同任务
-            if (projectTask.getType() == 6) {
+            if (projectTask.getType().equals(6)) {
                 //类型为0,需要完成任务
-                if (type == 0) {
+                if (type.equals(0)) {
                     //完成需要判断不为审核中
                     if (projectTask.getStatus() != 1) {
                         projectTask.setStatus(3);
@@ -626,7 +634,7 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                     } else {
                         throw new XiaoShiException("任务状态为审核中,不可以完成");
                     }
-                } else if (type == 1) {
+                } else if (type.equals(1)) {
                     //类型为1,取消任务
                     projectTask.setStatus(5);
                     projectTask.updateById();
@@ -644,9 +652,10 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                             this.updateBatchById(projectTasks1);
                         }
                     }
+                    this.checkProjectPerson(2, projectTask.getHandler(), projectTask.getProjectId(), projectTask.getId());
                 }
                 //开卷审核项目(判断是报告还是挖掘项目)
-            } else if (projectTask.getType() == 1) {
+            } else if (projectTask.getType().equals(1)) {
                 Integer projectId = projectTask.getProjectId();
                 //根据projectId查询类型
                 LambdaQueryWrapper<Project> getType = new LambdaQueryWrapper<>();
@@ -659,19 +668,20 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                     queryWrapper1.eq(PatentDigProject::getProjectId, projectId);
                     PatentDigProject patentDigProject = patentDigProjectService.getOne(queryWrapper1, false);
                     if (patentDigProject != null) {
-                        if (type == 0) {
+                        if (type.equals(0)) {
                             //直接同意
                             projectTask.setStatus(3);
                             projectTask.updateById();
                             patentDigProject.setState(2);
                             patentDigProject.updateById();
-                        } else if (type == 1) {
+                        } else if (type.equals(1)) {
                             //取消
                             projectTask.setStatus(5);
                             projectTask.updateById();
                             patentDigProject.setState(4);
                             patentDigProject.updateById();
-                        } else if (type == 2) {
+                            this.checkProjectPerson(2, projectTask.getHandler(), projectTask.getProjectId(), projectTask.getId());
+                        } else if (type.equals(2)) {
                             //缺少资料
                             projectTask.setStatus(4);
                             projectTask.updateById();
@@ -686,19 +696,20 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                     queryWrapper1.eq(ReportProject::getProjectId, projectId);
                     ReportProject reportProject = reportProjectService.getOne(queryWrapper1, false);
                     if (reportProject != null) {
-                        if (type == 0) {
+                        if (type.equals(0)) {
                             //直接同意
                             projectTask.setStatus(3);
                             projectTask.updateById();
                             reportProject.setStatus(2);
                             reportProject.updateById();
-                        } else if (type == 1) {
+                        } else if (type.equals(1)) {
                             //取消
                             projectTask.setStatus(5);
                             projectTask.updateById();
                             reportProject.setStatus(4);
                             reportProject.updateById();
-                        } else if (type == 2) {
+                            this.checkProjectPerson(2, projectTask.getHandler(), projectTask.getProjectId(), projectTask.getId());
+                        } else if (type.equals(2)) {
                             //缺少资料
                             projectTask.setStatus(4);
                             projectTask.updateById();
@@ -711,10 +722,10 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                 }
             }
             //处理协同任务完成
-            else if (projectTask.getType() == 4) {
+            else if (projectTask.getType().equals(4)) {
                 //获得请求人
                 PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-                if (type == 0) {
+                if (type.equals(0)) {
                     //判断请求人是否为创建人
                     if (personnelVO.getId() != null && personnelVO.getId().equals(projectTask.getCreateId())) {
                         projectTask.setStatus(3);
@@ -723,15 +734,20 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                         projectTask.setStatus(6);
                         projectTask.updateById();
                     }
-                } else if (type == 1) {
+                } else if (type.equals(1)) {
                     projectTask.setStatus(5);
                     projectTask.updateById();
+                    this.checkProjectPerson(2, projectTask.getHandler(), projectTask.getProjectId(), projectTask.getId());
                 }
 
             } else {
                 if (type.equals(1)) {
                     projectTask.setStatus(5);
                     projectTask.updateById();
+                    this.checkProjectPerson(2, projectTask.getHandler(), projectTask.getProjectId(), projectTask.getId());
+                } else if (type.equals(0)) {
+                    projectTask.setStatus(3);
+                    projectTask.updateById();
                 }
             }
         } else {
@@ -739,6 +755,8 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         }
     }
 
+
+
     @Override
     public Object addMessage(Object object, List<MultipartFile> files) {
         return null;
@@ -1241,4 +1259,56 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
         return sqls;
 
     }
+
+    /**
+     * 处理任务参与人员与项目可见人员
+     * @param type 1为新增 2为取消
+     * @param handler
+     */
+    public void checkProjectPerson(Integer type, String handler, Integer projectId, Integer taskId) {
+        //获取登录人信息
+        PersonnelVO personnelVO = new PersonnelVO();
+        try {
+            personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        } catch (Exception e) {
+            throw new UnLoginException("未登录");
+        }
+        LambdaQueryWrapper<AssoProjectPerson> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AssoProjectPerson::getProjectId, projectId);
+        List<AssoProjectPerson> assoProjectPeople = assoProjectPersonService.list(queryWrapper);
+        //新增任务的时候 需要将任务处理人添加到项目可见人中 先校验是否已经存在
+        if (type.equals(1)) {
+            AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
+            assoProjectPerson.setProjectId(projectId);
+            assoProjectPerson.setPersonId(handler);
+            assoProjectPerson.setCreateId(personnelVO.getId());
+            assoProjectPerson.setRole(1);
+            if (!assoProjectPeople.isEmpty()) {
+                List<String> people = assoProjectPeople.stream().map(AssoProjectPerson::getPersonId).collect(Collectors.toList());
+                if (!people.contains(handler)) {
+                    assoProjectPerson.insert();
+                }
+            } else {
+                assoProjectPerson.insert();
+            }
+        }
+        //取消任务的时候 需要将任务处理人从项目可见人中去除 但是先校验是否还有别的任务导致他在项目可见人中
+        else if (type.equals(2)) {
+            if (!assoProjectPeople.isEmpty()) {
+                LambdaQueryWrapper<ProjectTask> queryWrapper1 = new LambdaQueryWrapper<>();
+                queryWrapper1.eq(ProjectTask::getProjectId, projectId)
+                        .eq(ProjectTask::getHandlerType, 0)
+                        .eq(ProjectTask::getHandler, handler)
+                        .ne(ProjectTask::getStatus, 5);
+                List<ProjectTask> projectTasks = this.list(queryWrapper1);
+                if (projectTasks.isEmpty()) {
+                    LambdaQueryWrapper<AssoProjectPerson> deleteWrapper = new LambdaQueryWrapper<>();
+                    deleteWrapper.eq(AssoProjectPerson::getProjectId, projectId)
+                            .eq(AssoProjectPerson::getPersonId, handler);
+                    assoProjectPersonService.remove(deleteWrapper);
+                }
+            }
+        }
+    }
+
 }

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

@@ -5,7 +5,9 @@ import cn.cslg.pas.common.dto.business.ReferencesDTO;
 import cn.cslg.pas.common.dto.business.ReferencesUpdateDTO;
 import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.model.request.OrderDTO;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.business.ReferencesVO;
@@ -108,21 +110,42 @@ public class ReferencesService extends ServiceImpl<ReferencesMapper, References>
      * @param getReferencesDTO
      * @return
      */
-    public List<ReferencesVO> query(GetReferencesDTO getReferencesDTO) {
+    public Records query(GetReferencesDTO getReferencesDTO) {
         Integer projectId = getReferencesDTO.getProjectId();
         String fileName = getReferencesDTO.getFileName();
         Integer pageNum = getReferencesDTO.getCurrent();
         Integer pageSize = getReferencesDTO.getSize();
+        List<OrderDTO> orderDTOList = getReferencesDTO.getOrderDTOList();
         Page<References> page = new Page<>(pageNum, pageSize);
         LambdaQueryWrapper<References> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(References::getProjectId, projectId);
+        queryWrapper.orderByDesc(References::getCreateTime);
         if (fileName != null && !fileName.equals("")) {
             queryWrapper.like(References::getReferencesName, fileName);
         }
+        // 添加排序逻辑
+//        if (!orderDTOList.isEmpty() && orderDTOList.size() == 1) {
+//            OrderDTO orderDTO = orderDTOList.get(0);
+//            String orderByField = orderDTO.getOrderBy();
+//            Integer type = orderDTO.getOrderType();
+//            if (orderByField != null && !orderByField.equals("")) {
+//                if (type.equals(0)) {
+//                    queryWrapper.orderByAsc();
+//                } else {
+//                    queryWrapper.orderByDesc(orderByField);
+//                }
+//            }
+//        }
+
         IPage<References> referencesPage = this.page(page, queryWrapper);
         List<References> references = referencesPage.getRecords();
         List<ReferencesVO> referencesVOS = this.loadReferencesVO(references);
-        return referencesVOS;
+        Records records = new Records();
+        records.setData(referencesVOS);
+        records.setCurrent((long)pageNum);
+        records.setSize((long)pageSize);
+        records.setTotal(referencesPage.getTotal());
+        return records;
     }
 
     public List<ReferencesVO> loadReferencesVO(List<References> references){

+ 40 - 9
src/main/java/cn/cslg/pas/service/business/es/EsCountService.java

@@ -21,6 +21,7 @@ import co.elastic.clients.elasticsearch._types.aggregations.*;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch.core.SearchRequest;
 import co.elastic.clients.elasticsearch.core.SearchResponse;
+import co.elastic.clients.elasticsearch.core.search.Hit;
 import com.alibaba.fastjson.JSON;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
@@ -184,7 +185,7 @@ public class EsCountService {
             }
             String format = countVO.getFormat();
             List<String> values = countVO.getValues();
-            Aggregation aggregation = this.getAggregation(countVO,projectId);
+            Aggregation aggregation = this.getAggregation(countVO, projectId, taskId);
             if (query != null) {
                 Query finalQuery = query;
                 Aggregation finalAggregation = aggregation;
@@ -415,7 +416,7 @@ public class EsCountService {
      * @return
      * @throws Exception
      */
-    public Aggregation getAggregation(EsCountVO countVO,Integer projectId) throws Exception {
+    public Aggregation getAggregation(EsCountVO countVO, Integer projectId, Integer taskId) throws Exception {
         String field = countVO.getField();
         Integer topN = countVO.getTopN();
         Boolean ifHaveChild = countVO.getIfHaveChild();
@@ -448,6 +449,7 @@ public class EsCountService {
             iEsCountAnalysisBuilder.setTopN(topN);
             iEsCountAnalysisBuilder.setFormat(format);
             iEsCountAnalysisBuilder.setProjectId(projectId);
+            iEsCountAnalysisBuilder.setTaskId(taskId);
             iEsCountAnalysisBuilder.setIfHaveChild(ifHaveChild);
             if (iEsCountAnalysisBuilder.getField().contains(".")) {
                 String path = iEsCountAnalysisBuilder.getField()
@@ -620,6 +622,32 @@ public class EsCountService {
         });
     }
 
+    public Integer getUnselectedCustomNum(Integer projectId,Integer taskId) throws Exception {
+        String condition = "";
+        if (taskId != null) {
+            condition = "taskId = " + taskId;
+        } else {
+            condition = "projectId = " + projectId;
+        }
+        SearchRequest.Builder builder = new SearchRequest.Builder();
+        //设置查询索引
+        builder.index("patent");
+        treeNode tree = expressManager.getInstance().Parse(condition, false);
+        //格式化检索式
+        //3. 从es中检索数据
+        Query q = formatQueryService.EsQueryToQuery((operateNode) tree, "patent");
+        builder.query(q);
+        SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
+        List<Hit<Patent>> hits = response.hits().hits();
+        Long total = response.hits().total().value();
+        List<String> list = new ArrayList<>();
+        for (Hit<Patent> hit : hits) {
+            String id = hit.id();
+            list.add(id);
+        }
+        return null;
+    }
+
     /**
      * 获取children分析后数据
      *
@@ -987,14 +1015,17 @@ public class EsCountService {
             EsCountDetailDTO dto = new EsCountDetailDTO();
             dto.setField(field);
             Aggregate aggregate = bucket.aggregations().get("filter_agg");
-            dto.setName(bucket.key().stringValue());
-            dto.setNumber(bucket.docCount());
-            dto.setTopN(topN);
-            dto.setFirstName(firstName);
-            if (aggregate != null) {
-                dto.setNumber(aggregate.filter().docCount());
+            String value = bucket.key().stringValue();
+            if (StringUtils.isNotEmpty(value)) {
+                dto.setName(value);
+                dto.setNumber(bucket.docCount());
+                dto.setTopN(topN);
+                dto.setFirstName(firstName);
+                if (aggregate != null) {
+                    dto.setNumber(aggregate.filter().docCount());
+                }
+                countDetailDTOS.add(dto);
             }
-            countDetailDTOS.add(dto);
 //            if (dto.getNumber() > 0) {
 //                detailDTOS.add(dto);
 //            }