xiexiang 1 rok temu
rodzic
commit
fe1dda25d0

+ 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 = "删除报告文档")

+ 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){