Browse Source

bu过滤

master
han\hanst 2 weeks ago
parent
commit
0501aa327a
  1. 49
      src/main/java/com/xujie/sys/modules/erf/service/impl/ErfFlowEngineServiceImpl.java

49
src/main/java/com/xujie/sys/modules/erf/service/impl/ErfFlowEngineServiceImpl.java

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