Browse Source

根据审批人id查询审批人名称并设置到节点实例(冗余存储,方便查询和展示)

master
han\hanst 3 days ago
parent
commit
0842a90f76
  1. 12
      src/main/java/com/xujie/sys/modules/erf/service/impl/ErfFlowEngineServiceImpl.java
  2. 5
      src/main/resources/mapper/erf/ErfExpApplyMapper.xml

12
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过滤

5
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
<where>

Loading…
Cancel
Save