Merge remote-tracking branch 'origin/master'

liweidong
maxiangong 2 days ago
commit 71f99b1b04
  1. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/constant/DispatchConfigApprovalConst.java
  2. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java
  3. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/DispatchConfigApprovalRecordMapper.java
  4. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/DispatchConfigApprovalRecordMapper.xml
  5. 45
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/DispatchConfigApprovalServiceImpl.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;
}

@ -204,7 +204,7 @@ public class FmProjectMilestoneServiceImpl extends BaseServiceImpl<FmProjectMile
}
fmProjectMilestone.setOkTime(new Date());
fmProjectMilestone.setEvaluate(fmProjectMilestone.getEvolve());
fmProjectMilestone.setEvaluate(fmProjectMilestone.getEvaluate());
if(score < 75){
//审批驳回

@ -33,4 +33,10 @@ public interface DispatchConfigApprovalRecordMapper extends BaseMapper<DispatchC
* 根据审批ID和审批节点查询审批记录
*/
List<DispatchConfigApprovalRecord> selectByApprovalIdAndNode(Long approvalId, Integer approvalNode);
/**
* 查询分派配置维护员节点的所有审批人
* @return
*/
List<DispatchConfigApprovalRecord> selectLevel3Auditors();
}

@ -70,5 +70,18 @@
AND IS_DELETED = 0
ORDER BY SORT_ORDER
</select>
<select id="selectLevel3Auditors"
resultType="org.springblade.desk.quality.pojo.entity.DispatchConfigApprovalRecord">
SELECT DISTINCT
u.ID AS auditorId,
u.REAL_NAME AS auditorName,
1 AS sortOrder
FROM BLADE_USER u
INNER JOIN BLADE_ROLE r ON INSTR(',' || u.ROLE_ID || ',', ',' || r.ID || ',') > 0
WHERE r.ROLE_ALIAS IN ('in_assigner')
AND u.IS_DELETED = 0
AND r.IS_DELETED = 0
ORDER BY sortOrder
</select>
</mapper>

@ -195,9 +195,10 @@ public class DispatchConfigApprovalServiceImpl extends EnBaseServiceImpl<Dispatc
return R.fail("记录不存在");
}
// 只有审批中状态才能审批(一级或二级)
// 只有审批中状态才能审批(一级、二级或三级)
if (!DispatchConfigApprovalConst.STATUS_LEVEL1_APPROVING.equals(entity.getStatus())
&& !DispatchConfigApprovalConst.STATUS_LEVEL2_APPROVING.equals(entity.getStatus())
&& !DispatchConfigApprovalConst.STATUS_LEVEL3_APPROVING.equals(entity.getStatus())
&& !DispatchConfigApprovalConst.STATUS_REJECTED.equals(entity.getStatus())) {
return R.fail("只有审批中的记录才能进行审批");
}
@ -228,11 +229,20 @@ public class DispatchConfigApprovalServiceImpl extends EnBaseServiceImpl<Dispatc
} else if (DispatchConfigApprovalConst.STATUS_LEVEL2_APPROVING.equals(entity.getStatus())) {
currentNode = 2;
currentNodeName = "领导审批";
} else if (DispatchConfigApprovalConst.STATUS_LEVEL3_APPROVING.equals(entity.getStatus())) {
currentNode = 3;
currentNodeName = "分派配置维护员审批";
}
// 动态查询当前节点的所有审批人
List<DispatchConfigApprovalRecord> currentLevelAuditors =
currentNode == 1 ? approvalRecordMapper.selectLevel1Auditors() : approvalRecordMapper.selectLevel2Auditors();
List<DispatchConfigApprovalRecord> 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<Dispatc
}
}
// 如果当前用户不是当前节点的审批人
if (!isAuditor) {
return R.fail("您不是当前审批节点的审批人");
}
@ -280,17 +289,19 @@ public class DispatchConfigApprovalServiceImpl extends EnBaseServiceImpl<Dispatc
newRecord.setUpdateUser(currentUserId);
approvalRecordMapper.insert(newRecord);
// 如果审批驳回,直接驳回到发起人,并删除审批记录
// 如果审批驳回,直接驳回到发起人
if (DispatchConfigApprovalConst.AUDIT_RESULT_REJECT.equals(result)) {
entity.setStatus(DispatchConfigApprovalConst.STATUS_REJECTED);
entity.setUpdateUser(currentUserId);
entity.setUpdateTime(now);
updateById(entity);
return R.success("审批已驳回");
}
// 审批通过,检查当前节点是否全部通过
// ========== 审批通过逻辑 ==========
if (currentNode == 1 || currentNode == 2) {
// 一级和二级:所有审批人都通过才能进入下一节点(会签)
// 查询当前节点已通过的审批人数
QueryWrapper<DispatchConfigApprovalRecord> passedQuery = new QueryWrapper<>();
passedQuery.eq("APPROVAL_ID", id)
@ -298,31 +309,37 @@ public class DispatchConfigApprovalServiceImpl extends EnBaseServiceImpl<Dispatc
.eq("AUDIT_RESULT", DispatchConfigApprovalConst.AUDIT_RESULT_PASS)
.eq("IS_DELETED", 0);
List<DispatchConfigApprovalRecord> passedList = approvalRecordMapper.selectList(passedQuery);
Set<Long> passedAuditorIds
= passedList.stream().map(DispatchConfigApprovalRecord::getAuditorId).collect(Collectors.toSet());
Set<Long> passedAuditorIds = passedList.stream()
.map(DispatchConfigApprovalRecord::getAuditorId)
.collect(Collectors.toSet());
Set<Long> auditorIds = currentLevelAuditors.stream().map(DispatchConfigApprovalRecord::getAuditorId).collect(Collectors.toSet());
Set<Long> 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 == 2) {
// 二级审批全部通过,审批完成
} else if (currentNode == 3) {
// 三级:任意一人审批通过即可完成(或签)
entity.setStatus(DispatchConfigApprovalConst.STATUS_APPROVED);
entity.setUpdateUser(currentUserId);
entity.setUpdateTime(now);
updateById(entity);
}
}
return R.success("审批成功");
}

Loading…
Cancel
Save