diff --git a/jero-boot/db/蔚来标准sql/dev_2nd_period.sql b/jero-boot/db/蔚来标准sql/dev_2nd_period.sql index 8b0606ad8..596ec4a59 100644 --- a/jero-boot/db/蔚来标准sql/dev_2nd_period.sql +++ b/jero-boot/db/蔚来标准sql/dev_2nd_period.sql @@ -506,3 +506,88 @@ WHERE `id` IN (SELECT temp.id FROM (SELECT id FROM project_laws_inventory WHERE verify_flow_status IS NULL ) temp); +-- *********************************************** 法规相关历史数据处理sql ********************************************************* +-- 以下sql需要按照顺序执行,否则会出问题。 2023-04-11 未同步生产环境 +-- 处理 法规清单确认 待确认状态的数据sql +UPDATE `project_laws_inventory` SET + `design_flow_status` = 'List to be checked', + `verify_flow_status` = 'List to be checked' +where id in ( + SELECT temp.id FROM ( + SELECT + id + FROM + project_laws_inventory + WHERE inventory_affirm_status = 'List to confirm' + ) temp +); + + +-- 处理待办中心-流程历史,之前的符合性流程数据sql。 +-- 1.将之前符合性流程的 发起人审核节点, 处理结果为 符合、不涉及的数据,更新为通过(现在法规工程师审核的时候 处理结果是通过) +update process_history set + operator_result = 'Adopt' +where id in ( + SELECT temp.id FROM ( + select + id + from + process_history + where task_definition_key = 'fqrsh' and operator_result in ('Compliance','NA') + ) temp +); + +-- 2.将之前符合性流程的 发起人审核节点,修改为 法规工程师审核节点 +update process_history set + task_definition_key = 'fggcssh' +where id in ( + SELECT temp.id FROM ( + select + id + from + process_history + where task_definition_key = 'fqrsh' + ) temp +); + +-- 3.将之前符合性流程的 责任人处理任务 节点,修改为 符合性确认节点 +update process_history set + task_definition_key = 'zrrtjjfw' +where id in ( + SELECT temp.id FROM ( + select + id + from + process_history + where task_definition_key = 'zrrclrw' + ) temp +); + +-- 处理待办中心-流程节点明细,之前的符合性流程节点任务节点keysql +-- 1.将之前符合性流程的 发起人审核节点,修改为 法规工程师审核节点 +update process_info_detail set + task_definition_key = 'fggcssh' +where id in ( + SELECT temp.id FROM ( + select + id + from + process_info_detail + where task_definition_key = 'fqrsh' and `status` = 'haveDone' + ) temp +); +-- 2.将之前符合性流程的 责任人处理任务 节点,修改为 符合性确认节点 +update process_info_detail set + task_definition_key = 'zrrtjjfw' +where id in ( + SELECT temp.id FROM ( + select + id + from + process_info_detail + where task_definition_key = 'zrrclrw' and `status` = 'haveDone' + ) temp +); + + + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ProjectProcessTodoCenterController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ProjectProcessTodoCenterController.java index 06a5f5d59..2471cc59e 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ProjectProcessTodoCenterController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ProjectProcessTodoCenterController.java @@ -54,4 +54,11 @@ public class ProjectProcessTodoCenterController { public Result initHistoryData(@RequestParam Map params) { return this.processInfoEOService.initHistoryData(params); } + + @AutoLog(value = "待办中心-符合性流程数据迁移") + @ApiOperation(value="待办中心-符合性流程数据迁移", notes="待办中心-符合性流程数据迁移") + @GetMapping(value = "/complianceDataMigration") + public Result complianceDataMigration(@RequestParam Map params) { + return this.processInfoEOService.complianceDataMigration(params); + } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IProcessInfoEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IProcessInfoEOService.java index 65fa57838..b0bcd234b 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IProcessInfoEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IProcessInfoEOService.java @@ -119,4 +119,11 @@ public interface IProcessInfoEOService extends IService { IPage lawsAssessIssuedProcess(Map params); Result initHistoryData(Map params); + + /** + * 符合性流程数据迁移 + * @param params + * @return + */ + Result complianceDataMigration(Map params); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ProcessInfoEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ProcessInfoEOServiceImpl.java index 699bf2da2..4d26de291 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ProcessInfoEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ProcessInfoEOServiceImpl.java @@ -15,15 +15,9 @@ import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluation import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationFlowDetailEO; import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationEOService; import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationFlowDetailEOService; -import com.jero.modules.project.entity.ProjectLawsInventoryEO; -import com.jero.modules.project.entity.ProjectLibraryBase; -import com.jero.modules.project.entity.ProjectTaskInventoryDetailEO; -import com.jero.modules.project.entity.ProjectTaskInventoryEO; +import com.jero.modules.project.entity.*; import com.jero.modules.project.enums.*; -import com.jero.modules.project.service.IProjectLawsInventoryEOService; -import com.jero.modules.project.service.IProjectLibraryBaseService; -import com.jero.modules.project.service.IProjectTaskInventoryDetailEOService; -import com.jero.modules.project.service.IProjectTaskInventoryEOService; +import com.jero.modules.project.service.*; import com.jero.modules.system.entity.SysCategory; import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.entity.SysUser; @@ -41,9 +35,11 @@ import com.jero.modules.todoCenter.mapper.ProcessInfoEOMapper; import com.jero.modules.todoCenter.service.IProcessInfoDetailEOService; import com.jero.modules.todoCenter.service.IProcessInfoEOService; import com.jero.modules.todoCenter.vo.ProcessInfoVO; +import com.jero.modules.wkflow.entity.ProcessHistoryEO; import com.jero.modules.wkflow.enums.DesignComplianceNodeEnum; import com.jero.modules.wkflow.enums.FlowTypeEnum; import com.jero.modules.wkflow.feginClient.impl.WorkFlowFeignClientImpl; +import com.jero.modules.wkflow.service.IProcessHistoryEOService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -96,6 +92,10 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl complianceDataMigration(Map params) { + List addProcessHistoryEOList = new ArrayList<>(); + + // 查询所有的工程交付信息 + List projectTaskInventoryFeedbackEOList = this.projectTaskInventoryFeedbackEOService.list(); + // 查询所有的任务确认流程信息 + QueryWrapper rwqrPiQueryWrap = new QueryWrapper<>(); + rwqrPiQueryWrap.lambda().eq(ProcessInfoEO::getFlowType,FlowTypeEnum.RWQRLC.getValue()); + rwqrPiQueryWrap.orderByDesc("create_time"); + List rwqrProcessInfoEOList = this.list(rwqrPiQueryWrap); + // 查询所有的项目信息 + List projectLibraryBaseList = this.projectLibraryBaseService.list(); + // 查询所有的法规清单信息 + List projectLawsInventoryEOList = this.projectLawsInventoryEOService.list(); + List projectLawsInventoryIdList = projectLawsInventoryEOList.stream().map(ProjectLawsInventoryEO::getId).distinct().collect(Collectors.toList()); + + // 查询所有的流程历史信息 + List processHistoryEOList = this.processHistoryEOService.list(); + // 查询所有的流程明细信息 + List processInfoDetailEOList = this.processInfoDetailEOService.list(); + + // 1.处理已经完成的设计符合性流程历史 + QueryWrapper designTaskInventoryQueryWrap = new QueryWrapper<>(); + designTaskInventoryQueryWrap.isNotNull("design_p_id"); + designTaskInventoryQueryWrap.lambda().eq(ProjectTaskInventoryEO::getDesignStatus,DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue()); + designTaskInventoryQueryWrap.lambda().in(ProjectTaskInventoryEO::getProjectLawsInventoryId,projectLawsInventoryIdList); + List designTaskInventoryList = this.projectTaskInventoryEOService.list(designTaskInventoryQueryWrap); + params.put("designTaskInventoryListSize",designTaskInventoryList.size()); + if(CollectionUtils.isNotEmpty(designTaskInventoryList)){ + // 将数据在任务清单中的状态,同步更新到法规清单中 + List updateLawsInventoryDesignStatusList = new ArrayList<>(); + for (ProjectLawsInventoryEO projectLawsInventoryEO : projectLawsInventoryEOList) { + for (ProjectTaskInventoryEO projectTaskInventoryEO : designTaskInventoryList) { + if(StringUtils.equals(projectLawsInventoryEO.getId(),projectTaskInventoryEO.getProjectLawsInventoryId())){ + projectLawsInventoryEO.setDesignFlowStatus(projectTaskInventoryEO.getDesignFlowTaskStatus()); + updateLawsInventoryDesignStatusList.add(projectLawsInventoryEO); + break; + } + } + } + if (CollectionUtils.isNotEmpty(updateLawsInventoryDesignStatusList)) { + params.put("更新法规清单设计符合性流程状态条数",updateLawsInventoryDesignStatusList.size()); + this.projectLawsInventoryEOService.updateBatchById(updateLawsInventoryDesignStatusList); + } + + + List designPIdList = designTaskInventoryList.stream().map(ProjectTaskInventoryEO::getDesignPId).distinct().collect(Collectors.toList()); + + QueryWrapper piQueryWrap = new QueryWrapper<>(); + piQueryWrap.lambda().in(ProcessHistoryEO::getActiProcInstId,designPIdList); + List designProcessHistoryEOList = processHistoryEOList.stream().filter(processHistoryEO -> { + boolean flag = false; + for (String designPId : designPIdList) { + if (StringUtils.equals(designPId,processHistoryEO.getActiProcInstId())) { + flag = true; + break; + } + } + return flag; + }).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(designProcessHistoryEOList)){ + // 将之前的 任务创建节点的历史记录逻辑删除掉。 + List deleteProcessHistoryEOList = designProcessHistoryEOList.stream().filter(processHistoryEO -> { + boolean flag = false; + if (StringUtils.equals(processHistoryEO.getTaskDefinitionKey(), DesignComplianceNodeEnum.TASK_CREATION.getKey())) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(deleteProcessHistoryEOList)){ + deleteProcessHistoryEOList.forEach(processHistoryEO -> { + if(!StringUtils.contains(processHistoryEO.getActiProcInstId(),"(删除)")){ + processHistoryEO.setActiProcInstId(processHistoryEO.getActiProcInstId() + "(删除)"); + } + }); + this.processHistoryEOService.updateBatchById(deleteProcessHistoryEOList); + } + } + + // 删除发起流程节点的历史信息。 + QueryWrapper removePHWarp = new QueryWrapper<>(); + List taskDefinitionKeyList = new ArrayList<>(); + taskDefinitionKeyList.add(VerifyComplianceFlowNodeKeyEnum.FQLC.getValue()); + taskDefinitionKeyList.add(VerifyComplianceFlowNodeKeyEnum.ZRRQR.getValue()); + removePHWarp.lambda().in(ProcessHistoryEO::getTaskDefinitionKey,taskDefinitionKeyList); + removePHWarp.lambda().in(ProcessHistoryEO::getActiProcInstId,designPIdList); + List remvovePhList = this.processHistoryEOService.list(removePHWarp); + params.put("设计符合性发起流程、责任人确认节点删除条数",remvovePhList.size()); + if (CollectionUtils.isNotEmpty(remvovePhList)) { + List idList = remvovePhList.stream().map(ProcessHistoryEO::getId).distinct().collect(Collectors.toList()); + this.processHistoryEOService.deleteByIds(idList); + } + + List updateProcessHistoryEOInfoList = new ArrayList<>(); + + // 设置设计符合性流程,发起流程节点历史信息。 + for (ProjectTaskInventoryEO designTaskInventory : designTaskInventoryList) { + String projectLawsInventoryId = designTaskInventory.getProjectLawsInventoryId(); + String designPId = designTaskInventory.getDesignPId(); + + List projectLawsInventoryEOListTemp = projectLawsInventoryEOList.stream().filter(lawsInventoryEO -> { + boolean flag = false; + if (StringUtils.equals(lawsInventoryEO.getId(), projectLawsInventoryId)) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(projectLawsInventoryEOListTemp)){ + ProjectLawsInventoryEO projectLawsInventoryEO = projectLawsInventoryEOListTemp.get(0); + List processInfoEOList = rwqrProcessInfoEOList.stream().filter(rwqrProcessInfo -> { + boolean flag = false; + if (StringUtils.equals(rwqrProcessInfo.getProjectLawsInventoryId(), projectLawsInventoryId)) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(processInfoEOList)){ + ProcessInfoEO rwqrProcessInfoEO = processInfoEOList.get(0); + + String projectLibraryId = projectLawsInventoryEO.getProjectLibraryId(); + List projectLibraryBaseEOListTemp = projectLibraryBaseList.stream().filter(projectLibraryBase -> { + boolean flag = false; + if (StringUtils.equals(projectLibraryBase.getId(), projectLibraryId)) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(projectLibraryBaseEOListTemp)){ + ProjectLibraryBase projectLibraryBaseEO = projectLibraryBaseEOListTemp.get(0); + String studioEngineer = projectLibraryBaseEO.getStudioEngineer(); + + ProcessHistoryEO addProcessHistoryEO = new ProcessHistoryEO(); + addProcessHistoryEO.setActiProcInstId(designPId); + addProcessHistoryEO.setTaskDefinitionKey(DesignComplianceFlowNodeKeyEnum.FQLC.getValue()); + addProcessHistoryEO.setProjectLawsInventoryId(projectLawsInventoryId); + + // 获取当前法规清单数据 在走任务确认流程的时候信息。 + addProcessHistoryEO.setAssignee(studioEngineer); + addProcessHistoryEO.setOperatorPersonId(studioEngineer); + + // 获取任务确认第一步发起时的信息 + String rwqrActiProcInstId = rwqrProcessInfoEO.getActiProcInstId(); + List rwqrProcessInfoDetailEOList = processInfoDetailEOList.stream().filter(processInfoDetailEO -> { + boolean flag = false; + if (StringUtils.equals(processInfoDetailEO.getActiProcInstId(), rwqrActiProcInstId) && processInfoDetailEO.getSubmitTime() != null) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(rwqrProcessInfoDetailEOList)){ + Collections.sort(rwqrProcessInfoDetailEOList, new Comparator() { + @Override + public int compare(ProcessInfoDetailEO p1, ProcessInfoDetailEO p2) { + if(p1.getSubmitTime() != null && p2.getSubmitTime() != null){ + return p1.getSubmitTime().compareTo(p2.getSubmitTime()); + } + return 1; + } + }); + + addProcessHistoryEO.setCreateTime(rwqrProcessInfoDetailEOList.get(0).getSubmitTime()); + addProcessHistoryEOList.add(addProcessHistoryEO); + } + } + + // 获取任务确认最后一步提交的时候的信息,设置为"任务责任确认"节点信息。 + String rwqrActiProcInstId = rwqrProcessInfoEO.getActiProcInstId(); + List rwqrProcessInfoDetailEOList = processInfoDetailEOList.stream().filter(processInfoDetailEO -> { + boolean flag = false; + if (StringUtils.equals(processInfoDetailEO.getActiProcInstId(), rwqrActiProcInstId) && processInfoDetailEO.getSubmitTime() != null) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(rwqrProcessInfoDetailEOList)){ + Collections.sort(rwqrProcessInfoDetailEOList, new Comparator() { + @Override + public int compare(ProcessInfoDetailEO p1, ProcessInfoDetailEO p2) { + if(p1.getSubmitTime() != null && p2.getSubmitTime() != null){ + return p2.getSubmitTime().compareTo(p1.getSubmitTime()); + } + return 1; + } + }); + + ProcessInfoDetailEO processInfoDetailEO = rwqrProcessInfoDetailEOList.get(0); + + ProcessHistoryEO addProcessHistoryEO = new ProcessHistoryEO(); + addProcessHistoryEO.setActiProcInstId(designPId); + addProcessHistoryEO.setTaskDefinitionKey(DesignComplianceFlowNodeKeyEnum.ZRRQR.getValue()); + addProcessHistoryEO.setProjectLawsInventoryId(projectLawsInventoryId); + + // 获取当前法规清单数据 在走任务确认流程的时候信息。 + addProcessHistoryEO.setAssignee(processInfoDetailEO.getUserId()); + addProcessHistoryEO.setOperatorPersonId(processInfoDetailEO.getUserId()); + addProcessHistoryEO.setCreateTime(processInfoDetailEO.getSubmitTime()); + + String approvalFiles = projectTaskInventoryFeedbackEOList.stream().filter(ptifEO -> { + boolean flag = false; + if (StringUtils.equals(ptifEO.getActiProcInstId(), designPId) && StringUtils.isNotEmpty(ptifEO.getFileId())) { + flag = true; + } + return flag; + }).map(ProjectTaskInventoryFeedbackEO::getFileId).collect(Collectors.joining(",")); + if(StringUtils.isNotEmpty(approvalFiles)){ + addProcessHistoryEO.setApprovalFile(approvalFiles); + } + addProcessHistoryEOList.add(addProcessHistoryEO); + } + } + } + + List processHistoryEOListTemp = processHistoryEOList.stream().filter(processHistoryEO -> { + boolean flag = false; + if (StringUtils.equals(processHistoryEO.getTaskDefinitionKey(), VerifyComplianceFlowNodeKeyEnum.ZRRTJJFW.getValue()) + && StringUtils.equals(processHistoryEO.getActiProcInstId(), designPId)) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(processHistoryEOListTemp)){ + ProcessHistoryEO updateApprovalFileEo = processHistoryEOListTemp.get(0); + String approvalFiles = projectTaskInventoryFeedbackEOList.stream().filter(ptifEO -> { + boolean flag = false; + if (StringUtils.equals(ptifEO.getActiProcInstId(), designPId) && StringUtils.isNotEmpty(ptifEO.getFileId())) { + flag = true; + } + return flag; + }).map(ProjectTaskInventoryFeedbackEO::getFileId).collect(Collectors.joining(",")); + if(StringUtils.isNotEmpty(approvalFiles)){ + // 获取这个流程的 符合性确认节点信息,将之前工程交付的附件设置进去 zrrtjjfw + updateApprovalFileEo.setApprovalFile(approvalFiles); + updateProcessHistoryEOInfoList.add(updateApprovalFileEo); + } + } + } + + if(CollectionUtils.isNotEmpty(updateProcessHistoryEOInfoList)){ + log.debug("验证符合性需要更新的附件 " + updateProcessHistoryEOInfoList.size() + " 条"); + this.processHistoryEOService.updateBatchById(updateProcessHistoryEOInfoList); + } + } + + // 2.处理已经完成的验证符合性流程历史 + QueryWrapper verifyTaskInventoryQueryWrap = new QueryWrapper<>(); + verifyTaskInventoryQueryWrap.isNotNull("verify_p_id"); + verifyTaskInventoryQueryWrap.lambda().eq(ProjectTaskInventoryEO::getVerifyStatus,DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue()); + verifyTaskInventoryQueryWrap.lambda().in(ProjectTaskInventoryEO::getProjectLawsInventoryId,projectLawsInventoryIdList); + List verifyTaskInventoryList = this.projectTaskInventoryEOService.list(verifyTaskInventoryQueryWrap); + params.put("verifyTaskInventoryListSize",verifyTaskInventoryList.size()); + if(CollectionUtils.isNotEmpty(verifyTaskInventoryList)){ + // 将数据在任务清单中的状态,同步更新到法规清单中 + List updateLawsInventoryVerifyStatusList = new ArrayList<>(); + for (ProjectLawsInventoryEO projectLawsInventoryEO : projectLawsInventoryEOList) { + for (ProjectTaskInventoryEO projectTaskInventoryEO : verifyTaskInventoryList) { + if(StringUtils.equals(projectLawsInventoryEO.getId(),projectTaskInventoryEO.getProjectLawsInventoryId())){ + projectLawsInventoryEO.setVerifyFlowStatus(projectTaskInventoryEO.getVerifyFlowTaskStatus()); + updateLawsInventoryVerifyStatusList.add(projectLawsInventoryEO); + break; + } + } + } + if (CollectionUtils.isNotEmpty(updateLawsInventoryVerifyStatusList)) { + params.put("更新法规清单验证符合性流程状态条数",updateLawsInventoryVerifyStatusList.size()); + this.projectLawsInventoryEOService.updateBatchById(updateLawsInventoryVerifyStatusList); + } + + List verifyPIdList = verifyTaskInventoryList.stream().map(ProjectTaskInventoryEO::getVerifyPId).distinct().collect(Collectors.toList()); + + QueryWrapper piQueryWrap = new QueryWrapper<>(); + piQueryWrap.lambda().in(ProcessHistoryEO::getActiProcInstId,verifyPIdList); + List verifyProcessHistoryEOList = processHistoryEOList.stream().filter(processHistoryEO -> { + boolean flag = false; + for (String verifyPId : verifyPIdList) { + if (StringUtils.equals(verifyPId,processHistoryEO.getActiProcInstId())) { + flag = true; + break; + } + } + return flag; + }).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(verifyProcessHistoryEOList)){ + // 将之前的 任务创建节点的历史记录逻辑删除掉。 + List deleteProcessHistoryEOList = verifyProcessHistoryEOList.stream().filter(processHistoryEO -> { + boolean flag = false; + if (StringUtils.equals(processHistoryEO.getTaskDefinitionKey(), DesignComplianceNodeEnum.TASK_CREATION.getKey())) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(deleteProcessHistoryEOList)){ + deleteProcessHistoryEOList.forEach(processHistoryEO -> { + if(!StringUtils.contains(processHistoryEO.getActiProcInstId(),"(删除)")){ + processHistoryEO.setActiProcInstId(processHistoryEO.getActiProcInstId() + "(删除)"); + } + }); + this.processHistoryEOService.updateBatchById(deleteProcessHistoryEOList); + } + } + + // 删除发起流程节点的历史信息。 + QueryWrapper removePHWarp = new QueryWrapper<>(); + List taskDefinitionKeyList = new ArrayList<>(); + taskDefinitionKeyList.add(VerifyComplianceFlowNodeKeyEnum.FQLC.getValue()); + taskDefinitionKeyList.add(VerifyComplianceFlowNodeKeyEnum.ZRRQR.getValue()); + removePHWarp.lambda().in(ProcessHistoryEO::getTaskDefinitionKey,taskDefinitionKeyList); + removePHWarp.lambda().in(ProcessHistoryEO::getActiProcInstId,verifyPIdList); + List remvovePhList = this.processHistoryEOService.list(removePHWarp); + params.put("验证符合性发起流程、责任人确认节点删除条数",remvovePhList.size()); + if (CollectionUtils.isNotEmpty(remvovePhList)) { + List idList = remvovePhList.stream().map(ProcessHistoryEO::getId).distinct().collect(Collectors.toList()); + this.processHistoryEOService.deleteByIds(idList); + } + List updateProcessHistoryEOInfoList = new ArrayList<>(); + + // 设置验证符合性流程,发起流程节点历史信息。 + for (ProjectTaskInventoryEO verifyTaskInventory : verifyTaskInventoryList) { + String projectLawsInventoryId = verifyTaskInventory.getProjectLawsInventoryId(); + String verifyPId = verifyTaskInventory.getVerifyPId(); + + List projectLawsInventoryEOListTemp = projectLawsInventoryEOList.stream().filter(lawsInventoryEO -> { + boolean flag = false; + if (StringUtils.equals(lawsInventoryEO.getId(), projectLawsInventoryId)) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(projectLawsInventoryEOListTemp)){ + ProjectLawsInventoryEO projectLawsInventoryEO = projectLawsInventoryEOListTemp.get(0); + List processInfoEOList = rwqrProcessInfoEOList.stream().filter(rwqrProcessInfo -> { + boolean flag = false; + if (StringUtils.equals(rwqrProcessInfo.getProjectLawsInventoryId(), projectLawsInventoryId)) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(processInfoEOList)){ + ProcessInfoEO rwqrProcessInfoEO = processInfoEOList.get(0); + String projectLibraryId = projectLawsInventoryEO.getProjectLibraryId(); + List projectLibraryBaseEOListTemp = projectLibraryBaseList.stream().filter(projectLibraryBase -> { + boolean flag = false; + if (StringUtils.equals(projectLibraryBase.getId(), projectLibraryId)) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(projectLibraryBaseEOListTemp)){ + ProjectLibraryBase projectLibraryBaseEO = projectLibraryBaseEOListTemp.get(0); + String studioEngineer = projectLibraryBaseEO.getStudioEngineer(); + + ProcessHistoryEO addProcessHistoryEO = new ProcessHistoryEO(); + addProcessHistoryEO.setActiProcInstId(verifyPId); + addProcessHistoryEO.setTaskDefinitionKey(VerifyComplianceFlowNodeKeyEnum.FQLC.getValue()); + addProcessHistoryEO.setProjectLawsInventoryId(projectLawsInventoryId); + + // 获取当前法规清单数据 在走任务确认流程的时候信息。 + addProcessHistoryEO.setAssignee(studioEngineer); + addProcessHistoryEO.setOperatorPersonId(studioEngineer); + + // 获取任务确认第一步发起时的信息 + String rwqrActiProcInstId = rwqrProcessInfoEO.getActiProcInstId(); + List rwqrProcessInfoDetailEOList = processInfoDetailEOList.stream().filter(processInfoDetailEO -> { + boolean flag = false; + if (StringUtils.equals(processInfoDetailEO.getActiProcInstId(), rwqrActiProcInstId) && processInfoDetailEO.getSubmitTime() != null) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(rwqrProcessInfoDetailEOList)){ + Collections.sort(rwqrProcessInfoDetailEOList, new Comparator() { + @Override + public int compare(ProcessInfoDetailEO p1, ProcessInfoDetailEO p2) { + if(p1.getSubmitTime() != null && p2.getSubmitTime() != null){ + return p1.getSubmitTime().compareTo(p2.getSubmitTime()); + } + return 1; + } + }); + + addProcessHistoryEO.setCreateTime(rwqrProcessInfoDetailEOList.get(0).getSubmitTime()); + addProcessHistoryEOList.add(addProcessHistoryEO); + } + } + + // 获取任务确认最后一步提交的时候的信息,设置为"任务责任确认"节点信息。 + String rwqrActiProcInstId = rwqrProcessInfoEO.getActiProcInstId(); + List rwqrProcessInfoDetailEOList = processInfoDetailEOList.stream().filter(processInfoDetailEO -> { + boolean flag = false; + if (StringUtils.equals(processInfoDetailEO.getActiProcInstId(), rwqrActiProcInstId) && processInfoDetailEO.getSubmitTime() != null) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(rwqrProcessInfoDetailEOList)){ + Collections.sort(rwqrProcessInfoDetailEOList, new Comparator() { + @Override + public int compare(ProcessInfoDetailEO p1, ProcessInfoDetailEO p2) { + if(p1.getSubmitTime() != null && p2.getSubmitTime() != null){ + return p2.getSubmitTime().compareTo(p1.getSubmitTime()); + } + return 1; + } + }); + + ProcessInfoDetailEO processInfoDetailEO = rwqrProcessInfoDetailEOList.get(0); + + ProcessHistoryEO addProcessHistoryEO = new ProcessHistoryEO(); + addProcessHistoryEO.setActiProcInstId(verifyPId); + addProcessHistoryEO.setTaskDefinitionKey(VerifyComplianceFlowNodeKeyEnum.ZRRQR.getValue()); + addProcessHistoryEO.setProjectLawsInventoryId(projectLawsInventoryId); + + // 获取当前法规清单数据 在走任务确认流程的时候信息。 + addProcessHistoryEO.setAssignee(processInfoDetailEO.getUserId()); + addProcessHistoryEO.setOperatorPersonId(processInfoDetailEO.getUserId()); + addProcessHistoryEO.setCreateTime(processInfoDetailEO.getSubmitTime()); + addProcessHistoryEOList.add(addProcessHistoryEO); + } + } + } + + List processHistoryEOListTemp = processHistoryEOList.stream().filter(processHistoryEO -> { + boolean flag = false; + if (StringUtils.equals(processHistoryEO.getTaskDefinitionKey(), VerifyComplianceFlowNodeKeyEnum.ZRRTJJFW.getValue()) + && StringUtils.equals(processHistoryEO.getActiProcInstId(), verifyPId)) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(processHistoryEOListTemp)){ + ProcessHistoryEO updateApprovalFileEo = processHistoryEOListTemp.get(0); + String approvalFiles = projectTaskInventoryFeedbackEOList.stream().filter(ptifEO -> { + boolean flag = false; + if (StringUtils.equals(ptifEO.getActiProcInstId(), verifyPId) && StringUtils.isNotEmpty(ptifEO.getFileId())) { + flag = true; + } + return flag; + }).map(ProjectTaskInventoryFeedbackEO::getFileId).collect(Collectors.joining(",")); + if(StringUtils.isNotEmpty(approvalFiles)){ + // 获取这个流程的 符合性确认节点信息,将之前工程交付的附件设置进去 zrrtjjfw + updateApprovalFileEo.setApprovalFile(approvalFiles); + updateProcessHistoryEOInfoList.add(updateApprovalFileEo); + } + } + } + + if(CollectionUtils.isNotEmpty(updateProcessHistoryEOInfoList)){ + log.debug("验证符合性需要更新的附件 " + updateProcessHistoryEOInfoList.size() + " 条"); + this.processHistoryEOService.updateBatchById(updateProcessHistoryEOInfoList); + } + } + + if(CollectionUtils.isNotEmpty(addProcessHistoryEOList)){ + long countFqlc = addProcessHistoryEOList.stream().filter(history -> { + boolean flag = StringUtils.equals(history.getTaskDefinitionKey(), VerifyComplianceFlowNodeKeyEnum.FQLC.getValue()); + return flag; + }).collect(Collectors.toList()).stream().count(); + log.debug("发起流程节点总共添加 " + countFqlc + " 条"); + + params.put("发起流程条数",countFqlc); + + long countZrrqr = addProcessHistoryEOList.stream().filter(history -> { + boolean flag = StringUtils.equals(history.getTaskDefinitionKey(), VerifyComplianceFlowNodeKeyEnum.ZRRQR.getValue()); + return flag; + }).collect(Collectors.toList()).stream().count(); + log.debug("责任人确认节点总共添加 " + countZrrqr + " 条"); + params.put("责任人确认节点条数",countZrrqr); + + this.processHistoryEOService.saveBatch(addProcessHistoryEOList); + } + + return Result.OK("处理数据成功",params); + } }