feat(wms): 添加用户昵称显示功能

- 在WmsCoilPendingActionMapper.xml中关联sys_user表获取创建人和操作人昵称
- 在WmsMaterialCoilMapper.xml中关联sys_user表获取创建人和更新人昵称
- 在WmsCoilPendingActionVo.java和WmsMaterialCoilVo.java中添加createByName和updateByName字段
- 在WmsDeliveryPlanServiceImpl.java中实现根据用户名获取用户昵称的逻辑
- 在WmsMaterialCoilServiceImpl.java中实现批量获取操作人昵称的功能
- 在pom.xml中添加klp-system依赖以支持用户服务调用
This commit is contained in:
2025-12-04 17:24:55 +08:00
parent 24b2381046
commit 2c5729e846
8 changed files with 126 additions and 2 deletions

View File

@@ -62,5 +62,9 @@
<version>1.2.89</version>
<classifier>RELEASE</classifier>
</dependency>
<dependency>
<groupId>com.klp</groupId>
<artifactId>klp-system</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -150,5 +150,15 @@ public class WmsCoilPendingActionVo extends BaseEntity implements Serializable {
private String supplierCoilNo;
private Long itemId;
private String itemType;
/**
* 创建人昵称
*/
private String createByName;
/**
* 更新人昵称
*/
private String updateByName;
}

View File

@@ -60,4 +60,15 @@ public class WmsDeliveryPlanVo extends BaseEntity {
*/
private List<WmsDeliveryWaybillVo> waybills;
/**
* 创建人昵称
*/
private String createByName;
/**
* 更新人昵称
*/
private String updateByName;
}

View File

@@ -306,5 +306,9 @@ public class WmsMaterialCoilVo extends BaseEntity {
*/
private Integer abnormalCount;
private String createByName;
private String updateByName;
}

View File

@@ -1,6 +1,7 @@
package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.klp.common.core.domain.entity.SysUser;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -11,6 +12,7 @@ import com.klp.domain.vo.WmsDeliveryPlanStatisticsVo;
import com.klp.domain.vo.WmsDeliveryReportByTypeVo;
import com.klp.domain.vo.WmsDeliveryReportResultVo;
import com.klp.domain.vo.WmsDeliveryReportSummaryVo;
import com.klp.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsDeliveryPlanBo;
@@ -33,6 +35,8 @@ public class WmsDeliveryPlanServiceImpl implements IWmsDeliveryPlanService {
private final WmsDeliveryPlanMapper baseMapper;
private final ISysUserService userService;
/**
* 查询发货计划
*/
@@ -48,9 +52,37 @@ public class WmsDeliveryPlanServiceImpl implements IWmsDeliveryPlanService {
public TableDataInfo<WmsDeliveryPlanVo> queryPageList(WmsDeliveryPlanBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WmsDeliveryPlan> lqw = buildQueryWrapper(bo);
Page<WmsDeliveryPlanVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(item -> {
if (item.getCreateBy() != null) {
item.setCreateByName(getUserNickname(item.getCreateBy()));
}
if (item.getUpdateBy() != null) {
item.setUpdateByName(getUserNickname(item.getUpdateBy()));
}
});
return TableDataInfo.build(result);
}
/**
* 根据用户名获取用户昵称
* @param username 用户名
* @return 用户昵称
*/
private String getUserNickname(String username) {
try {
// 通过用户名查找用户
SysUser user = userService.selectUserByUserName(username);
if (user != null) {
return user.getNickName();
}
} catch (Exception e) {
// 出现异常时返回原用户名
return username;
}
// 找不到用户时返回原用户名
return username;
}
/**
* 查询发货计划列表
*/

View File

@@ -2,6 +2,7 @@ package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.klp.common.core.domain.entity.SysUser;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -10,8 +11,10 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.helper.LoginHelper;
import com.klp.common.utils.StringUtils;
import com.klp.common.utils.spring.SpringUtils;
import com.klp.domain.bo.*;
import com.klp.domain.vo.*;
import com.klp.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -52,6 +55,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
private final IWmsRawMaterialService rawMaterialService;
private final IWmsBomItemService bomItemService;
private final IWmsProductService productService;
private final ISysUserService userService;
/**
* 查询钢卷物料表
@@ -1283,6 +1287,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
Map<String, Map<String, Object>> uniqueSteps = new HashMap<>(); // 用于去重
Set<String> allCoilNos = new HashSet<>();
// 收集所有操作人用户名
Set<String> operatorUsernames = new HashSet<>();
for (WmsGenerateRecordVo qrRecord : allQrRecords) {
@SuppressWarnings("unchecked")
Map<String, Object> contentMap = (Map<String, Object>) objectMapper.readValue(qrRecord.getContent(), Map.class);
@@ -1301,6 +1308,12 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
uniqueStep.put("qrcode_serial", qrRecord.getSerialNumber());
uniqueStep.put("qrcode_id", qrRecord.getRecordId());
uniqueSteps.put(stepKey, uniqueStep);
// 收集操作人用户名
Object operator = step.get("operator");
if (operator != null) {
operatorUsernames.add(operator.toString());
}
}
// 提取钢卷号
@@ -1317,6 +1330,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
}
}
// 获取操作人昵称映射
Map<String, String> operatorNicknameMap = getOperatorNicknames(operatorUsernames);
// 转换为列表并按原始步骤号排序(保持时间顺序)
List<Map<String, Object>> allSteps = new ArrayList<>(uniqueSteps.values());
@@ -1334,6 +1350,14 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
allSteps.get(i).put("display_step", i + 1);
// 保留原始步骤号用于调试
allSteps.get(i).put("original_step", allSteps.get(i).get("step"));
// 替换操作人为昵称
Object operator = allSteps.get(i).get("operator");
if (operator != null) {
String username = operator.toString();
String nickname = operatorNicknameMap.get(username);
allSteps.get(i).put("operator_nickname", nickname != null ? nickname : username);
}
}
// 3. 如果指定了当前钢卷号,过滤出相关的钢卷号
@@ -1409,6 +1433,35 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
}
}
/**
* 根据用户名获取用户昵称映射
* @param usernames 用户名集合
* @return 用户名到昵称的映射
*/
private Map<String, String> getOperatorNicknames(Set<String> usernames) {
Map<String, String> nicknameMap = new HashMap<>();
if (usernames.isEmpty()) {
return nicknameMap;
}
for (String username : usernames) {
try {
// 通过用户名查找用户
SysUser user = userService.selectUserByUserName(username);
if (user != null) {
nicknameMap.put(username, user.getNickName());
} else {
nicknameMap.put(username, username); // 找不到则使用原用户名
}
} catch (Exception e) {
// 出现异常时使用原用户名
nicknameMap.put(username, username);
}
}
return nicknameMap;
}
/**
* 创建步骤唯一标识
*/

View File

@@ -50,9 +50,13 @@
wmc.enter_coil_no as enterCoilNo,
wmc.supplier_coil_no as supplierCoilNo,
wmc.item_id as itemId,
wmc.item_type as itemType
wmc.item_type as itemType,
su_create.nick_name as createByName,
su_operator.nick_name as operatorByName
from wms_coil_pending_action wcpa
inner join wms_material_coil wmc ON wcpa.coil_id = wmc.coil_id AND wmc.del_flag = 0
left join sys_user su_create ON wcpa.create_by = su_create.user_name AND su_create.del_flag = '0'
left join sys_user su_operator ON wcpa.operator_name = su_operator.user_name AND su_operator.del_flag = '0'
${ew.customSqlSegment}
</select>

View File

@@ -123,7 +123,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
ELSE NULL
END as itemCode,
-- 异常数量统计
COALESCE(ca.abnormal_count, 0) AS abnormalCount
COALESCE(ca.abnormal_count, 0) AS abnormalCount,
-- 创建人和更新人昵称
su_create.nick_name AS createByName,
su_update.nick_name AS updateByName
FROM wms_material_coil mc
LEFT JOIN wms_warehouse w ON mc.warehouse_id = w.warehouse_id
LEFT JOIN wms_actual_warehouse aw ON mc.actual_warehouse_id = aw.actual_warehouse_id
@@ -135,6 +138,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE del_flag = 0
GROUP BY coil_id
) ca ON mc.coil_id = ca.coil_id
-- 关联用户表获取创建人和更新人昵称
LEFT JOIN sys_user su_create ON mc.create_by = su_create.user_name AND su_create.del_flag = '0'
LEFT JOIN sys_user su_update ON mc.update_by = su_update.user_name AND su_update.del_flag = '0'
${ew.customSqlSegment}
</select>
<!-- 查询不同类型的钢卷在不同库区的分布情况 -->