diff --git a/src/main/java/com/gaotao/modules/other/service/impl/InventoryMoveServiceImpl.java b/src/main/java/com/gaotao/modules/other/service/impl/InventoryMoveServiceImpl.java index 1c8b0fea..704ec341 100644 --- a/src/main/java/com/gaotao/modules/other/service/impl/InventoryMoveServiceImpl.java +++ b/src/main/java/com/gaotao/modules/other/service/impl/InventoryMoveServiceImpl.java @@ -95,6 +95,18 @@ public class InventoryMoveServiceImpl implements InventoryMoveService { @Value("${custom.ifs-domainUserID}") private String domainUserID; + /** + * 老工厂自动移库无登录时的IFS账号,仅栈板移库队列MoveInventoryPartV2使用;有登录时仍用当前用户 - rqrq + */ + @Value("${custom.ifsMoveUser:CCL_AGV_USER}") + private String ifsMoveUser; + + /** + * 海安自动移库无登录且site以54开头时的IFS账号,仅栈板移库队列MoveInventoryPartV2使用;有登录时仍用当前用户 - rqrq + */ + @Value("${custom.ifsMoveUser54:CCL_AGV_USER_HA}") + private String ifsMoveUser54; + @Value("${ldap-control.control-flag:false}") private Boolean ldapFlag; @@ -115,6 +127,38 @@ public class InventoryMoveServiceImpl implements InventoryMoveService { return domainUserID; } + /** + * @author rqrq + * @Description 解析栈板移库IFS账号:有登录先用当前用户名;自动任务无登录且site以54开头用配置ifsMoveUser54;其它无登录用配置ifsMoveUser。不改其它移库接口取号。- rqrq + * @param group 移库分组,site来自队列分组工厂,用于判断是否海安54 - rqrq + * @return 写入IFS domainUserID的账号;对应配置缺失时抛错,避免误用默认账号移库 - rqrq + */ + private String resolvePalletMoveDomainUser(MoveGroup group) { + try { + // 先读登录主体:PDA/页面手工移库必须用当前登录用户名,不能被自动任务专用账号覆盖 - rqrq + SysUserEntity currentUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); + if (currentUser != null && StringUtils.isNotBlank(currentUser.getUsername())) { + return currentUser.getUsername().trim(); + } + } catch (Exception e) { + log.warn("栈板移库读取登录用户失败,按自动任务取号,site={} - rqrq", + group != null ? group.site : null, e); + } + String site = group != null ? group.site : null; + // 无登录且site以54开头:海安自动移库走独立IFS账号,避免误用老工厂CCL_AGV_USER - rqrq + if (StringUtils.isNotBlank(site) && site.trim().startsWith("54")) { + if (StringUtils.isBlank(ifsMoveUser54)) { + throw new XJException("海安自动移库缺少配置custom.ifsMoveUser54,无法调用MoveInventoryPartV2"); + } + return ifsMoveUser54.trim(); + } + // 无登录的老工厂/其它site:走原自动移库账号 - rqrq + if (StringUtils.isBlank(ifsMoveUser)) { + throw new XJException("自动移库缺少配置custom.ifsMoveUser,无法调用MoveInventoryPartV2"); + } + return ifsMoveUser.trim(); + } + //-----别改-------- @Override @Transactional @@ -978,15 +1022,8 @@ public class InventoryMoveServiceImpl implements InventoryMoveService { String ifsResponse = null; - String username="CCL_AGV_USER"; - try { - // PDA手工移库保留当前登录用户名作为IFS操作账号;取不到登录用户时按移库分组site兜底 - rqrq - username = ((SysUserEntity) SecurityUtils.getSubject().getPrincipal()).getUsername(); - } catch (Exception e) { - // 自动任务无登录用户:54及其子site使用海安账号,55及其他site保留原账号;不改变本地单据操作人 - rqrq - username = group != null && group.site != null && group.site.trim().startsWith("54") - ? "CCL_AGV_USER_HA" : "CCL_AGV_USER"; - } + // 栈板移库IFS账号:有登录用当前用户,无登录按site从配置读取ifsMoveUser/ifsMoveUser54 - rqrq + String username = resolvePalletMoveDomainUser(group); try { Map params = new HashMap<>(); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8513020b..a5413188 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -109,6 +109,8 @@ custom: ifs-ifsDBName: 'IFST' ifs-domainUserID: 'Mingo_zhang' ifsIssueUser54: 'shuai_xu' # 海安自动发料无登录且site以54开头时,ShopOrderManualIssue的IFS账号 - rqrq + ifsMoveUser: 'CCL_AGV_USER' # 老工厂自动移库无登录时,MoveInventoryPartV2的IFS账号 - rqrq + ifsMoveUser54: 'CCL_AGV_USER_HA' # 海安自动移库无登录且site以54开头时,MoveInventoryPartV2的IFS账号 - rqrq wcs-url: 'http://172.28.1.18:7002/api/wms/' haianWcsUrl: 'http://172.28.1.18:7002/api/wms/' # 海安专用WCS地址,默认与wcs-url一致,可独立维护 - rqrq haianWcsApi: 'http://172.28.1.18:7002/api/' # 海安专用WCS通用API地址,默认与wcs-api一致 - rqrq