From e643b1b068ba481d35e0663182a62bf6369f7b14 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Wed, 14 Jan 2026 11:05:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=B7=BB=E5=8A=A0=E5=8F=91?= =?UTF-8?q?=E8=B4=A7=E4=BA=BA=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=98=B5=E7=A7=B0=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 WmsMaterialCoil 实体中新增 exportBy 字段用于记录发货人 - 在 WmsMaterialCoilBo 中同步添加 exportBy 字段 - 修改 SysUserServiceImpl 中的用户昵称查询逻辑,对不存在的用户名返回用户名本身 - 在 WmsMaterialCoilServiceImpl 中扩展用户昵称填充功能,支持发货人昵称显示 - 在钢卷发货流程中记录当前操作用户的用户名作为发货人 - 在 WmsMaterialCoilVo 中添加 exportBy 和 exportByName 字段用于前端展示 --- .../system/service/impl/SysUserServiceImpl.java | 16 +++++++++++++++- .../java/com/klp/domain/WmsMaterialCoil.java | 3 +++ .../com/klp/domain/bo/WmsMaterialCoilBo.java | 2 ++ .../com/klp/domain/vo/WmsMaterialCoilVo.java | 5 +++++ .../service/impl/WmsMaterialCoilServiceImpl.java | 12 +++++++++--- 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/klp-system/src/main/java/com/klp/system/service/impl/SysUserServiceImpl.java b/klp-system/src/main/java/com/klp/system/service/impl/SysUserServiceImpl.java index 921fdb1d..f3909cfe 100644 --- a/klp-system/src/main/java/com/klp/system/service/impl/SysUserServiceImpl.java +++ b/klp-system/src/main/java/com/klp/system/service/impl/SysUserServiceImpl.java @@ -147,11 +147,25 @@ public class SysUserServiceImpl implements ISysUserService, UserService { if (CollUtil.isEmpty(userNames)) { return new HashMap<>(); } + + // 先查询数据库中存在的用户 List users = baseMapper.selectList(new LambdaQueryWrapper() .select(SysUser::getUserName, SysUser::getNickName) .in(SysUser::getUserName, userNames) .eq(SysUser::getDelFlag, UserConstants.USER_NORMAL)); - return users.stream().collect(Collectors.toMap(SysUser::getUserName, SysUser::getNickName, (a, b) -> a)); + + // 创建一个映射,包含存在的用户昵称 + Map nickMap = users.stream() + .collect(Collectors.toMap(SysUser::getUserName, SysUser::getNickName, (a, b) -> a)); + + // 对于不存在的用户名,将其用户名作为昵称添加到映射中 + for (String userName : userNames) { + if (!nickMap.containsKey(userName)) { + nickMap.put(userName, userName); + } + } + + return nickMap; } /** diff --git a/klp-wms/src/main/java/com/klp/domain/WmsMaterialCoil.java b/klp-wms/src/main/java/com/klp/domain/WmsMaterialCoil.java index f05af81c..767a8606 100644 --- a/klp-wms/src/main/java/com/klp/domain/WmsMaterialCoil.java +++ b/klp-wms/src/main/java/com/klp/domain/WmsMaterialCoil.java @@ -135,5 +135,8 @@ public class WmsMaterialCoil extends BaseEntity { //新增长度字段 private BigDecimal length; + + //发货人 + private String exportBy; } diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java index db43ef66..3f0cb3d8 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java @@ -208,5 +208,7 @@ public class WmsMaterialCoilBo extends BaseEntity { // 仅查询废品(质量状态为 D+、D、D-) private Boolean onlyScrap; + + private String exportBy; } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java index c09fc5c1..2fcd9ab6 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java @@ -317,5 +317,10 @@ public class WmsMaterialCoilVo extends BaseEntity { //新增长度字段 private BigDecimal length; + + //发货人 + private String exportBy; + //发货人昵称 + private String exportByName; } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index 330ada6d..b9ee9134 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -305,7 +305,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } Set userNames = records.stream() - .flatMap(v -> java.util.stream.Stream.of(v.getCreateBy(), v.getUpdateBy())) + .flatMap(v -> java.util.stream.Stream.of(v.getCreateBy(), v.getUpdateBy(), v.getExportBy())) .filter(StringUtils::isNotBlank) .collect(Collectors.toSet()); @@ -314,7 +314,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { nickMap = userService.selectNickNameMapByUserNames(new ArrayList<>(userNames)); } - // 单次遍历:填充创建/更新人昵称,并构建物料/产品对象 + // 单次遍历:填充创建/更新/发货人昵称,并构建物料/产品对象 for (WmsMaterialCoilVo vo : records) { if (!nickMap.isEmpty()) { if (StringUtils.isNotBlank(vo.getCreateBy())) { @@ -323,6 +323,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { if (StringUtils.isNotBlank(vo.getUpdateBy())) { vo.setUpdateByName(nickMap.getOrDefault(vo.getUpdateBy(), vo.getUpdateBy())); } + if (StringUtils.isNotBlank(vo.getExportBy())) { + vo.setExportByName(nickMap.getOrDefault(vo.getExportBy(), vo.getExportBy())); + } } // 从联查结果中构建产品和原材料对象(避免单独查询) buildItemObjectFromJoin(vo); @@ -2099,6 +2102,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { // 1. 更新钢卷为已发货,并记录发货时间,同时清空实际库区占用(改用Wrapper实现) int rows = 0; + //获取当前调用接口的这个人的username + String username = LoginHelper.getUsername(); if (wmsMaterialCoilVo != null) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); // 设置更新条件:钢卷ID @@ -2106,7 +2111,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { // 设置要更新的字段 updateWrapper.set("export_time", new Date()) // 发货时间 .set("status", 1) // 已发货状态 - .set("actual_warehouse_id", null); // 清空实际库区ID(关键) + .set("actual_warehouse_id", null) // 清空实际库区ID(关键) + .set("export_by", username); // 发货人 // 执行更新操作 rows = baseMapper.update(null, updateWrapper);