diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/xml/ProcessInfoEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/xml/ProcessInfoEOMapper.xml index 78c88a657..72a3b386a 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/xml/ProcessInfoEOMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/xml/ProcessInfoEOMapper.xml @@ -76,8 +76,8 @@ pi.flow_type, createBy.username as "create_by", pi.end_time, - (select detail.task_id from process_info_detail detail where detail.process_info_id = pi.id and detail.user_id = #{params.currentUserId} limit 1) as task_id, - (select detail.task_definition_key from process_info_detail detail where detail.process_info_id = pi.id and detail.user_id = #{params.currentUserId} limit 1) as task_definition_key, + (select detail.task_id from process_info_detail detail where detail.process_info_id = pi.id and detail.user_id = #{params.currentUserId} order by submit_time desc limit 1) as task_id, + (select detail.task_definition_key from process_info_detail detail where detail.process_info_id = pi.id and detail.user_id = #{params.currentUserId} order by submit_time desc limit 1) as task_definition_key, pi.status, pi.prc_num, pi.prc_name, @@ -216,8 +216,32 @@ pi.STATUS, pi.prc_num, pi.prc_name, - (select detail.task_id from process_info_detail detail where detail.process_info_id = pi.id and detail.user_id = #{params.currentUserId} and detail.`status` = #{params.taskStatus} limit 1) as task_id, - (select detail.task_definition_key from process_info_detail detail where detail.process_info_id = pi.id and detail.user_id = #{params.currentUserId} and detail.`status` = #{params.taskStatus} limit 1) as task_definition_key, + ( + select + detail.task_id + from + process_info_detail detail + where detail.process_info_id = pi.id + and detail.user_id = #{params.currentUserId} + + and detail.`status` = #{params.taskStatus} + + order by detail.submit_time desc + limit 1 + ) as task_id, + ( + select + detail.task_definition_key + from + process_info_detail detail + where detail.process_info_id = pi.id + and detail.user_id = #{params.currentUserId} + + and detail.`status` = #{params.taskStatus} + + order by detail.submit_time desc + limit 1 + ) as task_definition_key, createBy.username AS "create_by", pi.acti_proc_inst_id, pi.create_time @@ -247,8 +271,10 @@ - and bdl.serial_number like CONCAT(CONCAT('%',#{params.serialNumber}),'%') - or bdl.title like CONCAT(CONCAT('%',#{params.serialNumber}),'%') + and ( + bdl.serial_number like CONCAT(CONCAT('%',#{params.serialNumber}),'%') + or bdl.title like CONCAT(CONCAT('%',#{params.serialNumber}),'%') + ) and pi.flow_type = #{params.flowType} 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 282560b60..0383bd391 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 @@ -7,6 +7,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.api.vo.Result; import com.jero.common.exception.JeroBootException; import com.jero.common.system.vo.LoginUser; +import com.jero.modules.lawsOpinionGather.entity.LawsOpinionGatherEO; +import com.jero.modules.lawsOpinionGather.service.ILawsOpinionGatherEOService; +import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO; +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; @@ -66,6 +72,12 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl projectLawsInventoryEOList = this.projectLawsInventoryEOService.list(); //查询出所有项目库信息 @@ -587,9 +598,40 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl taskInventoryEOList = this.projectTaskInventoryEOService.list(); + + QueryWrapper taskInventoryDetailQueryWrap = new QueryWrapper<>(); + taskInventoryDetailQueryWrap.lambda().eq(ProjectTaskInventoryDetailEO::getStatus,TaskStatusEnum.NOT_DONE.getValue()); + List taskInventoryDetailEOList = this.projectTaskInventoryDetailEOService.list(taskInventoryDetailQueryWrap); + + //3.设计符合性流程 + if(StringUtils.contains(disposeType,FlowTypeEnum.SJFHXSHLC.getValue())){ + this.initConformance(FlowTypeEnum.SJFHXSHLC.getValue(),projectLawsInventoryEOList,taskInventoryEOList,taskInventoryDetailEOList); + } + //4.prehomo流程 + if(StringUtils.contains(disposeType,FlowTypeEnum.PREHOMOQRLC.getValue())){ + this.initConformance(FlowTypeEnum.PREHOMOQRLC.getValue(),projectLawsInventoryEOList,taskInventoryEOList,taskInventoryDetailEOList); + } + //5.验证符合性流程 + if(StringUtils.contains(disposeType,FlowTypeEnum.YZFHXSCLC.getValue())){ + this.initConformance(FlowTypeEnum.YZFHXSCLC.getValue(),projectLawsInventoryEOList,taskInventoryEOList,taskInventoryDetailEOList); + } + //6.法规技术评估 + if(StringUtils.contains(disposeType,FlowTypeEnum.FGJSPG.getValue())){ + this.initFgjspg(); + } + //7.法规意见收集 + if(StringUtils.contains(disposeType,FlowTypeEnum.FGYJSJLC.getValue())){ + this.initFgyjsj(); + } + + //8.处理之前流程数据在发起的时候,在bus_process_new中没有任务数据 + if(StringUtils.contains(disposeType,"disposeBusProcessNew")){ + this.workFlowFeignClient.dispostHistoryBusProcessNewData(); + } return Result.OK("初始化数据成功",disposeType); } @@ -670,10 +712,10 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl projectLawsInventoryEOList,List projectLibraryBaseList){ - List> rwqrResult = this.workFlowFeignClient.queryProcessInfoByPrcType(FlowTypeEnum.RWQRLC.getValue()); + public void initRwqr(List projectLawsInventoryEOList){ + String flowType = FlowTypeEnum.RWQRLC.getValue(); + List> rwqrResult = this.workFlowFeignClient.queryProcessInfoByPrcType(flowType); if(CollectionUtils.isNotEmpty(rwqrResult)){ for (Map rwqrMap : rwqrResult) { List lawsInventoryList = projectLawsInventoryEOList.stream().filter(projectLawsInventory -> { @@ -690,16 +732,237 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl> taskMapList = (List>)rwqrMap.get("taskMapList"); if(CollectionUtils.isNotEmpty(taskMapList)){ - addProcessInfo(rwqrMap); + String status = TodoCenterStatusEnum.COMPLETED.getValue(); + for (Map taskMap : taskMapList) { + String deleteReason = (String) taskMap.get("deleteReason"); + if(StringUtils.isEmpty(deleteReason)){ + //如果是dre确认节点,将状态设置为询问,否则就是待确认。 + if(StringUtils.equals((String)taskMap.get("taskDefinitionKey"),"dreqr")){ + status = TodoCenterStatusEnum.INQUIRY.getValue(); + }else { + status = TodoCenterStatusEnum.LIST_TO_CONFIRM.getValue(); + } + break; + } + } + + rwqrMap.put("status",status); + this.addProcessInfo(rwqrMap); } } } } } + /** + * 初始化符合性流程 + * @param flowType + */ + public void initConformance(String flowType,List projectLawsInventoryEOList,List taskInventoryEOList,List taskInventoryDetailEOList){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + List> conformanceResult = this.workFlowFeignClient.queryProcessInfoByPrcType(flowType); + if(CollectionUtils.isNotEmpty(conformanceResult)){ + for (Map conformanceMap : conformanceResult) { + String actiProcInstId = (String) conformanceMap.get("actiProcInstId"); + List taskInventoryListTemp = taskInventoryEOList.stream().filter(taskInventoryEO -> { + boolean flag = false; + if(StringUtils.equals(flowType,FlowTypeEnum.SJFHXSHLC.getValue())){ + if (StringUtils.equals(taskInventoryEO.getDesignPId(), actiProcInstId)) { + flag = true; + } + }else if(StringUtils.equals(flowType,FlowTypeEnum.PREHOMOQRLC.getValue())){ + if (StringUtils.equals(taskInventoryEO.getPrehomoPId(), actiProcInstId)) { + flag = true; + } + }else if(StringUtils.equals(flowType,FlowTypeEnum.YZFHXSCLC.getValue())){ + if (StringUtils.equals(taskInventoryEO.getVerifyPId(), actiProcInstId)) { + flag = true; + } + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(taskInventoryListTemp)){ + List> taskMapList = (List>)conformanceMap.get("taskMapList"); + if(CollectionUtils.isNotEmpty(taskMapList)){ + for (Map taskMap : taskMapList) { + String taskId = (String) taskMap.get("taskId"); + String userId = ""; + for (ProjectTaskInventoryDetailEO projectTaskInventoryDetailEO : taskInventoryDetailEOList) { + if(StringUtils.equals(taskId,projectTaskInventoryDetailEO.getTaskId())){ + userId = projectTaskInventoryDetailEO.getUserId(); + } + } + taskMap.put("userId",userId); + } + String endTimeStr = ""; + if(StringUtils.equals(flowType,FlowTypeEnum.SJFHXSHLC.getValue()) && taskInventoryListTemp.get(0).getDesignDueDate() != null){ + endTimeStr = sdf.format(taskInventoryListTemp.get(0).getDesignDueDate()); + }else if(StringUtils.equals(flowType,FlowTypeEnum.PREHOMOQRLC.getValue()) && taskInventoryListTemp.get(0).getPrehomoDueDate() != null){ + endTimeStr = sdf.format(taskInventoryListTemp.get(0).getPrehomoDueDate()); + }else if(StringUtils.equals(flowType,FlowTypeEnum.YZFHXSCLC.getValue()) && taskInventoryListTemp.get(0).getVerifyDueDate() != null){ + endTimeStr = sdf.format(taskInventoryListTemp.get(0).getVerifyDueDate()); + } + + String projectLawsInventoryId = taskInventoryListTemp.get(0).getProjectLawsInventoryId(); + String projectLibraryId = ""; + String bussDocumentLibraryId = ""; + List projectLawsInventoryListTemp = projectLawsInventoryEOList.stream().filter(lawsInventory -> { + boolean flag = false; + if (StringUtils.equals(lawsInventory.getId(), projectLawsInventoryId)) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(projectLawsInventoryListTemp)){ + projectLibraryId = projectLawsInventoryListTemp.get(0).getProjectLibraryId(); + bussDocumentLibraryId = projectLawsInventoryListTemp.get(0).getStandId(); + } + conformanceMap.put("flowType",flowType); + conformanceMap.put("endTime",endTimeStr); + conformanceMap.put("projectLibraryId",projectLibraryId); + conformanceMap.put("projectLawsInventoryId",projectLawsInventoryId); + conformanceMap.put("bussDocumentLibraryId",bussDocumentLibraryId); + + String status = TodoCenterStatusEnum.COMPLETED.getValue(); + for (Map taskMap : taskMapList) { + String deleteReason = (String) taskMap.get("deleteReason"); + if(StringUtils.isEmpty(deleteReason)){ + //如果是发起人审查节点,状态应该为 待审核,否则就是待提交 + if(StringUtils.equals((String)taskMap.get("taskDefinitionKey"),"fqrsh")){ + status = TodoCenterStatusEnum.TO_AUDIT.getValue(); + }else { + status = TodoCenterStatusEnum.TO_SUBMIT.getValue(); + } + break; + } + } + conformanceMap.put("status",status); + + this.addProcessInfo(conformanceMap); + } + } + } + } + } + + /** + * 初始化法规技术评估 + */ + public void initFgjspg(){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String flowType = FlowTypeEnum.FGJSPG.getValue(); + List> fgjspgResult = this.workFlowFeignClient.queryProcessInfoByPrcType(flowType); + if(CollectionUtils.isNotEmpty(fgjspgResult)){ + List lawsTechnologyEvaluationEOList = this.lawsTechnologyEvaluationEOService.list(); + List flowDetailEOList = this.lawsTechnologyEvaluationFlowDetailEOService.list(); + + for (Map fgjspgMap : fgjspgResult) { + List> taskMapList = (List>)fgjspgMap.get("taskMapList"); + if(CollectionUtils.isNotEmpty(taskMapList)){ + String standId = ""; + String endTimeStr = ""; + String actiProcInstId = (String) fgjspgMap.get("actiProcInstId"); + + List flowDetailEOListTemp = flowDetailEOList.stream().filter(flowDetailEO -> { + boolean flag = false; + if (StringUtils.equals(actiProcInstId, flowDetailEO.getActiProcInstId())) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(flowDetailEOListTemp)){ + String lawsTechnologyEvaluationId = flowDetailEOListTemp.get(0).getLawsTechnologyEvaluationId(); + List technologyEvaluationEOListTemp = lawsTechnologyEvaluationEOList.stream().filter(lawsTechnologyEvaluation -> { + boolean flag = false; + if (StringUtils.equals(lawsTechnologyEvaluationId, lawsTechnologyEvaluation.getId())) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(technologyEvaluationEOListTemp)){ + standId = technologyEvaluationEOListTemp.get(0).getStandId(); + endTimeStr = sdf.format(technologyEvaluationEOListTemp.get(0).getEndTime()); + } + } + + fgjspgMap.put("standId",standId); + fgjspgMap.put("endTime",endTimeStr); + fgjspgMap.put("flowType",flowType); + + String status = TodoCenterStatusEnum.COMPLETED.getValue(); + for (Map taskMap : taskMapList) { + String deleteReason = (String) taskMap.get("deleteReason"); + if(StringUtils.isEmpty(deleteReason)){ + //如果是发起人审查节点,状态应该为 待审核,否则就是待提交 + if(StringUtils.equals((String)taskMap.get("taskDefinitionKey"),"fqrsc")){ + status = TodoCenterStatusEnum.TO_AUDIT.getValue(); + }else { + status = TodoCenterStatusEnum.TO_SUBMIT.getValue(); + } + break; + } + } + fgjspgMap.put("status",status); + this.addProcessInfo(fgjspgMap); + } + } + } + } + + /** + * 初始化法规意见收集 + */ + public void initFgyjsj(){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String flowType = FlowTypeEnum.FGYJSJLC.getValue(); + List> fgyjsjResult = this.workFlowFeignClient.queryProcessInfoByPrcType(flowType); + + if(CollectionUtils.isNotEmpty(fgyjsjResult)){ + List lawsOpinionGatherEOList = this.lawsOpinionGatherEOService.list(); + for (Map fgyjsjMap : fgyjsjResult) { + List> taskMapList = (List>)fgyjsjMap.get("taskMapList"); + if(CollectionUtils.isNotEmpty(taskMapList)){ + String standId = ""; + String endTimeStr = ""; + String actiProcInstId = (String) fgyjsjMap.get("actiProcInstId"); + List lawsOpinionGatherTempList = lawsOpinionGatherEOList.stream().filter(lawsOpinionGatherEO -> { + boolean flag = false; + if (StringUtils.equals(lawsOpinionGatherEO.getActiProcInstId(), actiProcInstId)) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(lawsOpinionGatherTempList)){ + standId = lawsOpinionGatherTempList.get(0).getStandId(); + endTimeStr = sdf.format(lawsOpinionGatherTempList.get(0).getEndTime()); + } + fgyjsjMap.put("standId",standId); + fgyjsjMap.put("endTime",endTimeStr); + fgyjsjMap.put("flowType",flowType); + + String status = TodoCenterStatusEnum.COMPLETED.getValue(); + for (Map taskMap : taskMapList) { + String deleteReason = (String) taskMap.get("deleteReason"); + if(StringUtils.isEmpty(deleteReason)){ + //如果还有没提交的任务 + status = TodoCenterStatusEnum.TO_SUBMIT.getValue(); + break; + } + } + fgyjsjMap.put("status",status); + this.addProcessInfo(fgyjsjMap); + } + } + } + } + public void addProcessInfo(Map params){ String prcNum = (String) params.get("prcNum"); String prcName = (String) params.get("prcName"); @@ -709,12 +972,21 @@ public class ProcessInfoEOServiceImpl extends ServiceImpl> queryProcessInfoByPrcType(@RequestParam("prcType") String prcType); + + /** + * 处理历史数据-之前的数据发起的时候在busProcessNew中没有待办信息 + */ + @RequestMapping(value = "/bat-wkflow/datas/bus-process-new/dispostHistoryBusProcessNewData",method = RequestMethod.GET) + Result dispostHistoryBusProcessNewData(); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/impl/WorkFlowFeignClientImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/impl/WorkFlowFeignClientImpl.java index 3dcbeb659..e0ab1dc66 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/impl/WorkFlowFeignClientImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/impl/WorkFlowFeignClientImpl.java @@ -205,4 +205,11 @@ public class WorkFlowFeignClientImpl{ public List> queryProcessInfoByPrcType(String prcType) { return workFlowFeignClient.queryProcessInfoByPrcType(prcType); } + + /** + * 处理历史数据-之前的数据发起的时候在busProcessNew中没有待办信息 + */ + public Result dispostHistoryBusProcessNewData() { + return workFlowFeignClient.dispostHistoryBusProcessNewData(); + } }