diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/constant/DispatchConfigApprovalConst.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/constant/DispatchConfigApprovalConst.java index 0f46e1026..386dee2ce 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/constant/DispatchConfigApprovalConst.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/constant/DispatchConfigApprovalConst.java @@ -33,6 +33,11 @@ public interface DispatchConfigApprovalConst { */ Integer STATUS_LEVEL2_APPROVING = 4; + /** + * 状态-三级审批中(分派配置维护员) + */ + Integer STATUS_LEVEL3_APPROVING = 6; + /** * 状态-已撤销 */ @@ -47,4 +52,5 @@ public interface DispatchConfigApprovalConst { * 审批结果-驳回 */ Integer AUDIT_RESULT_REJECT = 2; + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java index 779bbe189..5d37609a6 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java @@ -204,7 +204,7 @@ public class FmProjectMilestoneServiceImpl extends BaseServiceImpl selectByApprovalIdAndNode(Long approvalId, Integer approvalNode); + + /** + * 查询分派配置维护员节点的所有审批人 + * @return + */ + List selectLevel3Auditors(); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/DispatchConfigApprovalRecordMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/DispatchConfigApprovalRecordMapper.xml index 17c6bbd51..d763acca2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/DispatchConfigApprovalRecordMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/DispatchConfigApprovalRecordMapper.xml @@ -70,5 +70,18 @@ AND IS_DELETED = 0 ORDER BY SORT_ORDER + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/DispatchConfigApprovalServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/DispatchConfigApprovalServiceImpl.java index b5edd644e..e4b8c26e6 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/DispatchConfigApprovalServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/DispatchConfigApprovalServiceImpl.java @@ -195,9 +195,10 @@ public class DispatchConfigApprovalServiceImpl extends EnBaseServiceImpl currentLevelAuditors = - currentNode == 1 ? approvalRecordMapper.selectLevel1Auditors() : approvalRecordMapper.selectLevel2Auditors(); + List currentLevelAuditors = null; + if (currentNode == 1) { + currentLevelAuditors = approvalRecordMapper.selectLevel1Auditors(); + } else if (currentNode == 2) { + currentLevelAuditors = approvalRecordMapper.selectLevel2Auditors(); + } else if (currentNode == 3) { + currentLevelAuditors = approvalRecordMapper.selectLevel3Auditors(); + } if (CollUtil.isEmpty(currentLevelAuditors)) { return R.fail("当前节点没有审批人"); @@ -247,7 +257,6 @@ public class DispatchConfigApprovalServiceImpl extends EnBaseServiceImpl recordQuery = new QueryWrapper<>(); recordQuery.eq("APPROVAL_ID", id) - .eq("AUDITOR_ID", currentUserId) - .eq("APPROVAL_NODE", currentNode) - .eq("IS_DELETED", 0); + .eq("AUDITOR_ID", currentUserId) + .eq("APPROVAL_NODE", currentNode) + .eq("IS_DELETED", 0); DispatchConfigApprovalRecord existingRecord = approvalRecordMapper.selectOne(recordQuery); if (existingRecord != null) { @@ -280,48 +289,56 @@ public class DispatchConfigApprovalServiceImpl extends EnBaseServiceImpl passedQuery = new QueryWrapper<>(); - passedQuery.eq("APPROVAL_ID", id) - .eq("APPROVAL_NODE", currentNode) - .eq("AUDIT_RESULT", DispatchConfigApprovalConst.AUDIT_RESULT_PASS) - .eq("IS_DELETED", 0); - List passedList = approvalRecordMapper.selectList(passedQuery); - Set passedAuditorIds - = passedList.stream().map(DispatchConfigApprovalRecord::getAuditorId).collect(Collectors.toSet()); - - Set auditorIds = currentLevelAuditors.stream().map(DispatchConfigApprovalRecord::getAuditorId).collect(Collectors.toSet()); - - // 检查当前节点的所有审批人是否都已通过 - boolean allPassed = passedAuditorIds.containsAll(auditorIds); - - if (allPassed) { - // 当前节点所有人都通过了 - if (currentNode == 1) { - // 一级审批全部通过,进入二级审批 - entity.setStatus(DispatchConfigApprovalConst.STATUS_LEVEL2_APPROVING); - entity.setUpdateUser(currentUserId); - entity.setUpdateTime(now); - updateById(entity); - - } else if (currentNode == 2) { - // 二级审批全部通过,审批完成 - entity.setStatus(DispatchConfigApprovalConst.STATUS_APPROVED); + // ========== 审批通过逻辑 ========== + + if (currentNode == 1 || currentNode == 2) { + // 一级和二级:所有审批人都通过才能进入下一节点(会签) + // 查询当前节点已通过的审批人数 + QueryWrapper passedQuery = new QueryWrapper<>(); + passedQuery.eq("APPROVAL_ID", id) + .eq("APPROVAL_NODE", currentNode) + .eq("AUDIT_RESULT", DispatchConfigApprovalConst.AUDIT_RESULT_PASS) + .eq("IS_DELETED", 0); + List passedList = approvalRecordMapper.selectList(passedQuery); + Set passedAuditorIds = passedList.stream() + .map(DispatchConfigApprovalRecord::getAuditorId) + .collect(Collectors.toSet()); + + Set auditorIds = currentLevelAuditors.stream() + .map(DispatchConfigApprovalRecord::getAuditorId) + .collect(Collectors.toSet()); + + // 检查当前节点的所有审批人是否都已通过 + boolean allPassed = passedAuditorIds.containsAll(auditorIds); + + if (allPassed) { + if (currentNode == 1) { + // 一级审批全部通过,进入二级审批 + entity.setStatus(DispatchConfigApprovalConst.STATUS_LEVEL2_APPROVING); + } else if (currentNode == 2) { + // 二级审批全部通过,进入三级审批 + entity.setStatus(DispatchConfigApprovalConst.STATUS_LEVEL3_APPROVING); + } entity.setUpdateUser(currentUserId); entity.setUpdateTime(now); updateById(entity); } + + } else if (currentNode == 3) { + // 三级:任意一人审批通过即可完成(或签) + entity.setStatus(DispatchConfigApprovalConst.STATUS_APPROVED); + entity.setUpdateUser(currentUserId); + entity.setUpdateTime(now); + updateById(entity); } return R.success("审批成功");