|
|
|
@ -631,26 +631,33 @@ public class ErfFlowEngineServiceImpl implements ErfFlowEngineService { |
|
|
|
* @return 审批人用户ID,如果是并行节点则返回null |
|
|
|
*/ |
|
|
|
private Long getAssigneeUserId(String nodeCode, String applyNo) { |
|
|
|
// 获取申请单的BU编码 |
|
|
|
ErfExpApply apply = erfExpApplyMapper.selectById(applyNo); |
|
|
|
if (apply == null) { |
|
|
|
throw new XJException("申请单不存在"); |
|
|
|
} |
|
|
|
String buNo = apply.getBuNo(); |
|
|
|
|
|
|
|
switch (nodeCode) { |
|
|
|
case "技术经理审批": |
|
|
|
// 技术经理:根据创建人角色动态分配 |
|
|
|
return getTechManagerByCreator(applyNo); |
|
|
|
// 技术经理:根据创建人角色动态分配(按BU过滤) |
|
|
|
return getTechManagerByCreator(applyNo, buNo); |
|
|
|
|
|
|
|
case "生产和质量经理审批": |
|
|
|
// 并发审批节点:不分配单一审批人,由moveToNextNode方法创建多个并发节点 |
|
|
|
return null; |
|
|
|
|
|
|
|
case "生产经理审批": |
|
|
|
// 生产经理:查询具有"生产经理"角色的用户(驳回重审时使用) |
|
|
|
return getUserIdByRoleName("生产经理"); |
|
|
|
// 生产经理:查询具有"生产经理"角色的用户(驳回重审时使用,按BU过滤) |
|
|
|
return getUserIdByRoleName("生产经理", buNo); |
|
|
|
|
|
|
|
case "质量经理审批": |
|
|
|
// 质量经理:查询具有"质量经理"角色的用户(驳回重审时使用) |
|
|
|
return getUserIdByRoleName("质量经理"); |
|
|
|
// 质量经理:查询具有"质量经理"角色的用户(驳回重审时使用,按BU过滤) |
|
|
|
return getUserIdByRoleName("质量经理", buNo); |
|
|
|
|
|
|
|
case "计划员排产": |
|
|
|
// 计划员:查询具有"计划员"角色的用户 |
|
|
|
return getUserIdByRoleName("计划员"); |
|
|
|
// 计划员:查询具有"计划员"角色的用户(按BU过滤) |
|
|
|
return getUserIdByRoleName("计划员", buNo); |
|
|
|
|
|
|
|
case "三方确认": |
|
|
|
// 三方确认:不分配单一审批人,由三方独立确认 |
|
|
|
@ -663,7 +670,7 @@ public class ErfFlowEngineServiceImpl implements ErfFlowEngineService { |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 根据创建人角色获取对应的技术经理 |
|
|
|
* 根据创建人角色获取对应的技术经理(已按BU过滤) |
|
|
|
* |
|
|
|
* <p><b>角色映射规则:</b></p> |
|
|
|
* <ul> |
|
|
|
@ -672,10 +679,11 @@ public class ErfFlowEngineServiceImpl implements ErfFlowEngineService { |
|
|
|
* </ul> |
|
|
|
* |
|
|
|
* @param applyNo 申请单号 |
|
|
|
* @param buNo 事业部编码 |
|
|
|
* @return 技术经理用户ID |
|
|
|
* @throws XJException 如果找不到对应的技术经理 |
|
|
|
*/ |
|
|
|
private Long getTechManagerByCreator(String applyNo) { |
|
|
|
private Long getTechManagerByCreator(String applyNo, String buNo) { |
|
|
|
// 1. 查询申请单创建人ID |
|
|
|
ErfExpApply apply = erfExpApplyMapper.selectById(applyNo); |
|
|
|
if (apply == null) { |
|
|
|
@ -709,34 +717,37 @@ public class ErfFlowEngineServiceImpl implements ErfFlowEngineService { |
|
|
|
throw new XJException("未知的工程师角色: " + creatorRoleName); |
|
|
|
} |
|
|
|
|
|
|
|
// 4. 查询对应的技术经理用户ID |
|
|
|
ManagerInfoDto manager = sysUserDao.getFirstManagerByRoleName(managerRoleName); |
|
|
|
// 4. 查询对应的技术经理用户ID(根据BU过滤) |
|
|
|
ManagerInfoDto manager = sysUserDao.getFirstManagerByRoleNameAndBu(managerRoleName, buNo); |
|
|
|
|
|
|
|
if (manager == null) { |
|
|
|
throw new XJException(String.format("找不到【%s】角色的用户(应由%s审批),请联系管理员配置", |
|
|
|
managerRoleName, managerName)); |
|
|
|
throw new XJException(String.format("BU %s 中找不到【%s】角色的用户(应由%s审批),请联系管理员配置", |
|
|
|
buNo, managerRoleName, managerName)); |
|
|
|
} |
|
|
|
|
|
|
|
Long managerId = manager.getUserId(); |
|
|
|
log.info("分配技术经理: 角色={}, 用户ID={}", managerRoleName, managerId); |
|
|
|
log.info("分配技术经理: BU={}, 角色={}, 用户ID={}", buNo, managerRoleName, managerId); |
|
|
|
|
|
|
|
return managerId; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 根据角色名称查询用户ID |
|
|
|
* 根据角色名称查询用户ID(已按BU过滤) |
|
|
|
* |
|
|
|
* @param roleName 角色名称 |
|
|
|
* @param buNo 事业部编码 |
|
|
|
* @return 用户ID |
|
|
|
* @throws XJException 如果找不到对应角色的用户 |
|
|
|
*/ |
|
|
|
private Long getUserIdByRoleName(String roleName) { |
|
|
|
ManagerInfoDto manager = sysUserDao.getFirstManagerByRoleName(roleName); |
|
|
|
private Long getUserIdByRoleName(String roleName, String buNo) { |
|
|
|
ManagerInfoDto manager = sysUserDao.getFirstManagerByRoleNameAndBu(roleName, buNo); |
|
|
|
|
|
|
|
if (manager == null) { |
|
|
|
throw new XJException(String.format("找不到【%s】角色的用户,请联系管理员配置", roleName)); |
|
|
|
throw new XJException(String.format("BU %s 中找不到【%s】角色的用户,请联系管理员配置", buNo, roleName)); |
|
|
|
} |
|
|
|
|
|
|
|
log.info("分配审批人: BU={}, 角色={}, 用户ID={}", buNo, roleName, manager.getUserId()); |
|
|
|
|
|
|
|
return manager.getUserId(); |
|
|
|
} |
|
|
|
} |