diff --git a/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfFlowEngineServiceImpl.java b/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfFlowEngineServiceImpl.java index 67f76dfd..b9bd2fde 100644 --- a/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfFlowEngineServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/erf/service/impl/ErfFlowEngineServiceImpl.java @@ -87,6 +87,8 @@ public class ErfFlowEngineServiceImpl implements ErfFlowEngineService { nodeInstance.setStatus("待审核"); nodeInstance.setReceiveTime(new Date()); nodeInstance.setAssigneeUserId(assigneeUserId); // 分配审批人 + // 根据审批人id查询审批人名称并设置到节点实例(冗余存储,方便查询和展示) + nodeInstance.setAssigneeName(sysUserDao.selectById(assigneeUserId).getUsername()); erfFlowNodeInstanceMapper.insert(nodeInstance); log.info("流程启动成功,当前节点:技术经理审批,审批人ID:{},尝试次数:{}", assigneeUserId, nextAttemptNo); @@ -132,6 +134,8 @@ public class ErfFlowEngineServiceImpl implements ErfFlowEngineService { nodeInstance.setStatus("待审核"); nodeInstance.setReceiveTime(new Date()); nodeInstance.setAssigneeUserId(techManagerId); // 使用传入的技术经理ID + // 根据审批人id查询审批人名称并设置到节点实例(冗余存储,方便查询和展示) + nodeInstance.setAssigneeName(sysUserDao.selectById(techManagerId).getUsername()); erfFlowNodeInstanceMapper.insert(nodeInstance); log.info("流程启动成功,当前节点:技术经理审批,审批人ID:{}", techManagerId); @@ -193,6 +197,8 @@ public class ErfFlowEngineServiceImpl implements ErfFlowEngineService { nodeInstance.setStatus("待审核"); nodeInstance.setReceiveTime(new Date()); nodeInstance.setAssigneeUserId(techManagerId); // 使用新的技术经理ID + // 根据审批人id查询审批人名称并设置到节点实例(冗余存储,方便查询和展示) + nodeInstance.setAssigneeName(sysUserDao.selectById(techManagerId).getUsername()); erfFlowNodeInstanceMapper.insert(nodeInstance); log.info("流程重新启动成功,当前节点:技术经理审批,尝试次数:{},审批人ID:{}", @@ -261,6 +267,8 @@ public class ErfFlowEngineServiceImpl implements ErfFlowEngineService { nodeInstance.setStatus("待审核"); nodeInstance.setReceiveTime(new Date()); nodeInstance.setAssigneeUserId(assigneeUserId); // 分配审批人 + // 根据审批人id查询审批人名称并设置到节点实例(冗余存储,方便查询和展示) + nodeInstance.setAssigneeName(sysUserDao.selectById(assigneeUserId).getUsername()); erfFlowNodeInstanceMapper.insert(nodeInstance); log.info("创建新节点实例成功,审批人ID:{},尝试次数:{}", assigneeUserId, nextAttemptNo); @@ -341,6 +349,8 @@ public class ErfFlowEngineServiceImpl implements ErfFlowEngineService { nodeInstance.setStatus("待审核"); nodeInstance.setReceiveTime(new Date()); nodeInstance.setAssigneeUserId(assigneeUserId); + // 根据审批人id查询审批人名称并设置到节点实例(冗余存储,方便查询和展示) + nodeInstance.setAssigneeName(sysUserDao.selectById(assigneeUserId).getUsername()); erfFlowNodeInstanceMapper.insert(nodeInstance); log.info("创建节点实例: nodeCode={}, assigneeUserId={}, attemptNo={}", @@ -637,7 +647,7 @@ public class ErfFlowEngineServiceImpl implements ErfFlowEngineService { throw new XJException("申请单不存在"); } String buNo = apply.getBuNo(); - + switch (nodeCode) { case "技术经理审批": // 技术经理:根据创建人角色动态分配(按BU过滤) diff --git a/src/main/resources/mapper/erf/ErfExpApplyMapper.xml b/src/main/resources/mapper/erf/ErfExpApplyMapper.xml index a692b3fe..7c782e2c 100644 --- a/src/main/resources/mapper/erf/ErfExpApplyMapper.xml +++ b/src/main/resources/mapper/erf/ErfExpApplyMapper.xml @@ -339,7 +339,6 @@ GROUP BY apply_no ) n1a ON n1.apply_no = n1a.apply_no AND n1.attempt_no = n1a.max_attempt WHERE n1.node_code = '技术经理审批' - AND n1.status = '已批准' ) tech ON a.apply_no = tech.apply_no -- 生产经理审批:取最新一次attempt中所有已批准的记录,合并姓名,取最晚完成时间 -- 使用 STUFF+FOR XML PATH 兼容 SQL Server 2017 以下版本 @@ -350,7 +349,6 @@ SELECT '、' + p2.assignee_name FROM erf_flow_node_instance p2 WHERE p2.node_code = '生产经理审批' - AND p2.status = '已批准' AND p2.apply_no = p.apply_no AND p2.attempt_no = ( SELECT MAX(p3.attempt_no) @@ -369,7 +367,6 @@ GROUP BY apply_no ) pa ON p.apply_no = pa.apply_no AND p.attempt_no = pa.max_attempt WHERE p.node_code = '生产经理审批' - AND p.status = '已批准' GROUP BY p.apply_no ) prod ON a.apply_no = prod.apply_no -- 质量经理审批:取最新一次attempt中所有已批准的记录,合并姓名,取最晚完成时间 @@ -380,7 +377,6 @@ SELECT '、' + q2.assignee_name FROM erf_flow_node_instance q2 WHERE q2.node_code = '质量经理审批' - AND q2.status = '已批准' AND q2.apply_no = q.apply_no AND q2.attempt_no = ( SELECT MAX(q3.attempt_no) @@ -399,7 +395,6 @@ GROUP BY apply_no ) qa ON q.apply_no = qa.apply_no AND q.attempt_no = qa.max_attempt WHERE q.node_code = '质量经理审批' - AND q.status = '已批准' GROUP BY q.apply_no ) qual ON a.apply_no = qual.apply_no