diff --git a/src/main/java/com/xdap/self_development/service/impl/ActivitiProcessServiceImpl.java b/src/main/java/com/xdap/self_development/service/impl/ActivitiProcessServiceImpl.java index d14d391..9c5f9e3 100644 --- a/src/main/java/com/xdap/self_development/service/impl/ActivitiProcessServiceImpl.java +++ b/src/main/java/com/xdap/self_development/service/impl/ActivitiProcessServiceImpl.java @@ -178,7 +178,6 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { //分发待办 for (String assigneeId : firstNode.getAssignees()) { - TodoTaskPojo todoTaskPojo = new TodoTaskPojo(); todoTaskPojo.setDocumentNo(approvalId); todoTaskPojo.setProcessTitle(processTitle); @@ -194,8 +193,20 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { todoTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); todoTaskPojo.setIsDelete(0); sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(todoTaskPojo); - } + //创建发起 + InitiatedTaskPojo initiatedTaskPojo = new InitiatedTaskPojo(); + initiatedTaskPojo.setDocumentNo(approvalId); + initiatedTaskPojo.setProcessTitle(processTitle); + initiatedTaskPojo.setCurrentNode(ApprovalOrderEnum.PROOFREAD.getDesc()); + initiatedTaskPojo.setCurrentProcessor(JSON.toJSONString(firstNode.getAssignees())); + initiatedTaskPojo.setCreatedById(userId); + initiatedTaskPojo.setCreatedBy(createBy); + initiatedTaskPojo.setDataType(CurrentNodeEnum.DATAAPPROVAL.getDesc()); + initiatedTaskPojo.setModelName(modelPojoOld.getModelName()); + initiatedTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + initiatedTaskPojo.setIsDelete(0); + sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(initiatedTaskPojo); //将参数绑定到该机型审批流程中 for (EngineParamDetailPojo engineParamDetailPojo : paramList) { sw.buildFromDatasource("xdap_app_223770822127386625") @@ -317,12 +328,20 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { .update("approver_persons", "") .update("last_update_date", new Date()) .eq("id", approvalId).doUpdate(EngineReviewListPojo.class); - //审批流的待办全部is_delete=1 + //审批流的事项全部处理 sw.buildFromDatasource("xdap_app_223770822127386625") .update("is_delete", 1) -// .update("current_node", ParamValueVersionEnum.REFUSE.getDesc()) + .update("current_node", ParamValueVersionEnum.REFUSE.getDesc()) .update("last_update_date", new Date()) .eq("document_no", approvalId).doUpdate(TodoTaskPojo.class); + sw.buildFromDatasource("xdap_app_223770822127386625") + .update("current_node", ParamValueVersionEnum.REFUSE.getDesc()) + .update("last_update_date", new Date()) + .eq("document_no", approvalId).doUpdate(InitiatedTaskPojo.class); + sw.buildFromDatasource("xdap_app_223770822127386625") + .update("current_node", ParamValueVersionEnum.REFUSE.getDesc()) + .update("last_update_date", new Date()) + .eq("document_no", approvalId).doUpdate(CompletedTaskPojo.class); return "已拒绝"; } //通过处理 @@ -331,7 +350,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { sw.buildFromDatasource("xdap_app_223770822127386625") .eq("approval_id", approvalId) .eq("node_name", reviewListPojo.getNodeName()).doQuery(ParamApprovalRecordPojo.class); - + //获取已经处理过的人 Set operatedUsers = nodeRecords.stream() .map(ParamApprovalRecordPojo::getAssignee) .collect(Collectors.toSet()); @@ -341,79 +360,45 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { .eq("node_order", (nodeOrder + 1)) .doQuery(ApprovalConfigPojo.class); + //必须已经全部通过 不是会签的话例外 if (operatedUsers.containsAll(assigneeList) || notAll) { - //当前环节审批人 用来完成当前环节审批人的待办 - String assignees = approvalConfigPojo.getAssignees(); - for (String assID : Arrays.asList(assignees.split(","))) { - Integer isd; - if (assID.equals(approver)) { - isd = 1;//抢签者完成 - } else { - isd = 2;//被抢签完成 - } - if (ObjectUtils.isNotEmpty(approvalConfigPojos)) { - sw.buildFromDatasource("xdap_app_223770822127386625") - .update("is_delete", isd) - .update("current_node", approvalConfigPojos.get(0).getNodeName()) - .update("last_update_date", new Date()) - .update("current_processor", JSON.toJSONString(Arrays.asList(approvalConfigPojos.get(0).getAssignees().split(",")))) - .eq("document_no", approvalId) - .eq("owner_id", assID) - .doUpdate(TodoTaskPojo.class); - } else { - sw.buildFromDatasource("xdap_app_223770822127386625") - .update("is_delete", isd) - .update("last_update_date", new Date()) - .update("current_processor", "") - .eq("document_no", approvalId) - .eq("owner_id", assID) - .doUpdate(TodoTaskPojo.class); - } - } + String nodeName = ""; + String currentProcessor = ""; + // 更新待办 if (ObjectUtils.isNotEmpty(approvalConfigPojos)) { - ApprovalConfigPojo approvalConfigPojo1 = approvalConfigPojos.get(0); - for (String nextAssId : Arrays.asList(approvalConfigPojo1.getAssignees().split(","))) { - // 更新待办 - List todoTaskPojos = sw.buildFromDatasource("xdap_app_223770822127386625") - .eq("document_no", approvalId) - .eq("owner_id", nextAssId) - .update("is_delete", 0) - .doQuery(TodoTaskPojo.class); - sw.buildFromDatasource("xdap_app_223770822127386625") - .update("last_update_date", new Date()) - .update("current_node", approvalConfigPojo1.getNodeName()) - .update("current_processor", JSON.toJSONString(Arrays.asList(approvalConfigPojo1.getAssignees().split(",")))) - .eq("document_no", approvalId) -// .eq("is_delete", 0) -// .eq("owner_id", nextAssId) - .doUpdate(TodoTaskPojo.class); - if (ObjectUtils.isEmpty(todoTaskPojos)) { - TodoTaskPojo todoTaskPojo = new TodoTaskPojo(); - todoTaskPojo.setDocumentNo(approvalId); - todoTaskPojo.setProcessTitle(processTopic); - todoTaskPojo.setCurrentNode(approvalConfigPojo1.getNodeName()); - todoTaskPojo.setModelId(reviewListPojo.getModelId()); - todoTaskPojo.setVersionNumber(modelPojo.getVersionNumber()); - todoTaskPojo.setOwnerId(nextAssId); - todoTaskPojo.setDataType(CurrentNodeEnum.DATAAPPROVAL.getDesc()); - todoTaskPojo.setModelName(modelPojo.getModelName()); - todoTaskPojo.setCreatedById(approvalConfigPojo.getCreatedBy()); - todoTaskPojo.setCreatedBy(createBy); - todoTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); - todoTaskPojo.setIsDelete(0); - sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(todoTaskPojo); - } - } + ApprovalConfigPojo approvalConfigPojo1 = approvalConfigPojos.get(0); + nodeName = approvalConfigPojo1.getNodeName(); + currentProcessor = JSON.toJSONString(Arrays.asList(approvalConfigPojos.get(0).getAssignees().split(","))); + //更新审批流到下个审批节点 sw.buildFromDatasource("xdap_app_223770822127386625") .update("approver_persons", approvalConfigPojo1.getAssignees()) - .update("node_name", approvalConfigPojo1.getNodeName()) + .update("node_name", nodeName) .update("last_update_date", new Date()) .eq("id", approvalId).doUpdate(EngineReviewListPojo.class); + //为下个环节的人生成待办 + for (String nextAssId : Arrays.asList(approvalConfigPojo1.getAssignees().split(","))) { + TodoTaskPojo todoTaskPojo = new TodoTaskPojo(); + todoTaskPojo.setDocumentNo(approvalId); + todoTaskPojo.setProcessTitle(processTopic); + todoTaskPojo.setCurrentNode(nodeName); + todoTaskPojo.setCurrentProcessor(currentProcessor); + todoTaskPojo.setModelId(reviewListPojo.getModelId()); + todoTaskPojo.setVersionNumber(modelPojo.getVersionNumber()); + todoTaskPojo.setOwnerId(nextAssId); + todoTaskPojo.setDataType(CurrentNodeEnum.DATAAPPROVAL.getDesc()); + todoTaskPojo.setModelName(modelPojo.getModelName()); + todoTaskPojo.setCreatedById(approvalConfigPojo.getCreatedBy()); + todoTaskPojo.setCreatedBy(createBy); + todoTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); + todoTaskPojo.setIsDelete(0); + sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(todoTaskPojo); + } + } else { // 所有环节完成 DataEntryEngineModelPojo modelPojos = sw.buildFromDatasource("xdap_app_223770822127386625") @@ -463,56 +448,84 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { .update("last_update_date", new Date()) .eq("id", approvalId).doUpdate(EngineReviewListPojo.class); //待办环节修改 - sw.buildFromDatasource("xdap_app_223770822127386625") - .update("is_delete", 1) - .update("current_node", ParamValueVersionEnum.PASSED.getDesc()) - .update("last_update_date", new Date()) - .eq("document_no", approvalId).doUpdate(TodoTaskPojo.class); + nodeName = ParamValueVersionEnum.PASSED.getDesc(); + currentProcessor = ""; } + //当前环节审批人 用来完成当前环节审批人的待办 + String assignees = approvalConfigPojo.getAssignees(); + for (String assID : Arrays.asList(assignees.split(","))) { + //为当前人生成已办 + if (assID.equals(approver)) { + TodoTaskPojo todoTaskPojo = sw.buildFromDatasource("xdap_app_223770822127386625") + .eq("document_no", approvalId) + .eq("owner_id", assID) + .eq("current_node", reviewListPojo.getNodeName()) + .doQueryFirst(TodoTaskPojo.class); + CompletedTaskPojo completedTaskPojo = new CompletedTaskPojo(); + BeanUtils.copyProperties(todoTaskPojo, completedTaskPojo, "id"); + completedTaskPojo.setIsDelete(0); + completedTaskPojo.setCurrentNode(nodeName); + completedTaskPojo.setCurrentProcessor(currentProcessor); + sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(completedTaskPojo); + } + + } + //完成这个节点的所有待办 + sw.buildFromDatasource("xdap_app_223770822127386625") + .update("is_delete", 1) + .update("current_node", nodeName) + .update("last_update_date", new Date()) + .update("current_processor", currentProcessor) + .eq("document_no", approvalId) + .eq("current_node", reviewListPojo.getNodeName()) + .doUpdate(TodoTaskPojo.class); + //更新发起的事项状态 + sw.buildFromDatasource("xdap_app_223770822127386625") + .update("current_node", nodeName) + .update("last_update_date", new Date()) + .update("current_processor", currentProcessor) + .eq("document_no", approvalId) + .doUpdate(InitiatedTaskPojo.class); + } else { //如果还有未通过的 找到未通过的 List remainingAssignees = assigneeList.stream() .filter(assignee -> !operatedUsers.contains(assignee)) .collect(Collectors.toList()); + List complateAssignees = assigneeList.stream() + .filter(assignee -> operatedUsers.contains(assignee)) + .collect(Collectors.toList()); + String remainingAssigneesJson = JSON.toJSONString(remainingAssignees); //已完成人的待办is_delete=1 - - sw.buildFromDatasource("xdap_app_223770822127386625") - .update("is_delete", 1) - .update("last_update_date", new Date()) - .update("current_processor", remainingAssignees) - .eq("document_no", approvalId) - .eq("owner_id", approver) - .doUpdate(TodoTaskPojo.class); - - for (String remainingAssignee : remainingAssignees) { - List todoTaskPojos = sw.buildFromDatasource("xdap_app_223770822127386625") + for (String complateAssignee : complateAssignees) { + TodoTaskPojo todoTaskPojo1 = sw.buildFromDatasource("xdap_app_223770822127386625") .eq("document_no", approvalId) - .eq("owner_id", remainingAssignee) - .update("is_delete", 0) - .doQuery(TodoTaskPojo.class); - if (ObjectUtils.isEmpty(todoTaskPojos)) { - TodoTaskPojo todoTaskPojo = new TodoTaskPojo(); - todoTaskPojo.setDocumentNo(approvalId); - todoTaskPojo.setProcessTitle(processTopic); - todoTaskPojo.setCurrentNode(reviewListPojo.getNodeName()); - todoTaskPojo.setModelId(reviewListPojo.getModelId()); - todoTaskPojo.setVersionNumber(modelPojo.getVersionNumber()); - todoTaskPojo.setOwnerId(remainingAssignee); - todoTaskPojo.setDataType(CurrentNodeEnum.DATAAPPROVAL.getDesc()); - todoTaskPojo.setModelName(modelPojo.getModelName()); - todoTaskPojo.setCreatedById(approvalConfigPojo.getCreatedBy()); - todoTaskPojo.setCreatedBy(createBy); - todoTaskPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now())); - todoTaskPojo.setIsDelete(0); - sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(todoTaskPojo); - } + .eq("current_node", reviewListPojo.getNodeName()) + .eq("owner_id", complateAssignee) + .doQueryFirst(TodoTaskPojo.class); + + sw.buildFromDatasource("xdap_app_223770822127386625") + .update("is_delete", 1) + .update("last_update_date", new Date()) + .update("current_processor", remainingAssigneesJson) + .eq("id", todoTaskPojo1.getId()) + .doUpdate(TodoTaskPojo.class); + + //生成已完成人的已办 + CompletedTaskPojo completedTaskPojo = new CompletedTaskPojo(); + BeanUtils.copyProperties(todoTaskPojo1, completedTaskPojo, "id"); + completedTaskPojo.setIsDelete(0); + completedTaskPojo.setCurrentProcessor(remainingAssigneesJson); + sw.buildFromDatasource("xdap_app_223770822127386625").doInsert(completedTaskPojo); } + //更新机型审批数据的当前审批人去掉已经审批通过的那个人 sw.buildFromDatasource("xdap_app_223770822127386625") .update("approver_persons", String.join(",", remainingAssignees)) .eq("id", approvalId).doUpdate(EngineReviewListPojo.class); } + if (ObjectUtils.isNotEmpty(list)) { batchInsertParamDetail(list); } @@ -707,7 +720,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { // 设置审批人和未审批人 if (!approvedPersons.isEmpty()) { mergedDto.setApproverPersons(String.join(",", approvedPersons)); - }else{ + } else { mergedDto.setApproverPersons(""); }