feat(crm): 添加订单操作追溯功能的用户昵称显示和排序

- 引入 ISysUserService 用于获取用户昵称映射
- 在查询结果中添加创建人和更新人的昵称信息
- 实现用户名称到昵称的批量转换功能
- 按创建时间正序排列订单操作追溯记录
- 扩展 CrmOrderOperationTraceVo 类继承 BaseEntity
- 添加 createByName 和 updateByName 字段用于显示用户昵称
This commit is contained in:
2025-12-26 14:00:41 +08:00
parent a546575145
commit 2033d39243
2 changed files with 39 additions and 4 deletions

View File

@@ -6,6 +6,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat; import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert; import com.klp.common.convert.ExcelDictConvert;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data; import lombok.Data;
@@ -17,7 +18,7 @@ import lombok.Data;
*/ */
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
public class CrmOrderOperationTraceVo { public class CrmOrderOperationTraceVo extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@@ -79,5 +80,8 @@ public class CrmOrderOperationTraceVo {
@ExcelProperty(value = "备注") @ExcelProperty(value = "备注")
private String remark; private String remark;
private String createByName;
private String updateByName;
} }

View File

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils; import com.klp.common.utils.StringUtils;
import com.klp.domain.vo.WmsMaterialCoilVo;
import com.klp.system.service.ISysUserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.klp.crm.domain.bo.CrmOrderOperationTraceBo; import com.klp.crm.domain.bo.CrmOrderOperationTraceBo;
@@ -15,9 +17,8 @@ import com.klp.crm.domain.CrmOrderOperationTrace;
import com.klp.crm.mapper.CrmOrderOperationTraceMapper; import com.klp.crm.mapper.CrmOrderOperationTraceMapper;
import com.klp.crm.service.ICrmOrderOperationTraceService; import com.klp.crm.service.ICrmOrderOperationTraceService;
import java.util.List; import java.util.*;
import java.util.Map; import java.util.stream.Collectors;
import java.util.Collection;
/** /**
* 订单操作追溯Service业务层处理 * 订单操作追溯Service业务层处理
@@ -31,6 +32,8 @@ public class CrmOrderOperationTraceServiceImpl implements ICrmOrderOperationTrac
private final CrmOrderOperationTraceMapper baseMapper; private final CrmOrderOperationTraceMapper baseMapper;
private final ISysUserService userService;
/** /**
* 查询订单操作追溯 * 查询订单操作追溯
*/ */
@@ -46,6 +49,32 @@ public class CrmOrderOperationTraceServiceImpl implements ICrmOrderOperationTrac
public TableDataInfo<CrmOrderOperationTraceVo> queryPageList(CrmOrderOperationTraceBo bo, PageQuery pageQuery) { public TableDataInfo<CrmOrderOperationTraceVo> queryPageList(CrmOrderOperationTraceBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<CrmOrderOperationTrace> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<CrmOrderOperationTrace> lqw = buildQueryWrapper(bo);
Page<CrmOrderOperationTraceVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<CrmOrderOperationTraceVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
List<CrmOrderOperationTraceVo> records = result.getRecords();
if (records == null || records.isEmpty()) {
return TableDataInfo.build(result);
}
Set<String> userNames = records.stream()
.flatMap(v -> java.util.stream.Stream.of(v.getCreateBy(), v.getUpdateBy()))
.filter(StringUtils::isNotBlank)
.collect(Collectors.toSet());
Map<String, String> nickMap = Collections.emptyMap();
if (!userNames.isEmpty()) {
nickMap = userService.selectNickNameMapByUserNames(new ArrayList<>(userNames));
}
// 单次遍历:填充创建/更新人昵称,并构建物料/产品对象
for (CrmOrderOperationTraceVo vo : records) {
if (!nickMap.isEmpty()) {
if (StringUtils.isNotBlank(vo.getCreateBy())) {
vo.setCreateByName(nickMap.getOrDefault(vo.getCreateBy(), vo.getCreateBy()));
}
if (StringUtils.isNotBlank(vo.getUpdateBy())) {
vo.setUpdateByName(nickMap.getOrDefault(vo.getUpdateBy(), vo.getUpdateBy()));
}
}
}
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@@ -68,6 +97,8 @@ public class CrmOrderOperationTraceServiceImpl implements ICrmOrderOperationTrac
lqw.eq(StringUtils.isNotBlank(bo.getOperationContent()), CrmOrderOperationTrace::getOperationContent, bo.getOperationContent()); lqw.eq(StringUtils.isNotBlank(bo.getOperationContent()), CrmOrderOperationTrace::getOperationContent, bo.getOperationContent());
lqw.eq(StringUtils.isNotBlank(bo.getOperator()), CrmOrderOperationTrace::getOperator, bo.getOperator()); lqw.eq(StringUtils.isNotBlank(bo.getOperator()), CrmOrderOperationTrace::getOperator, bo.getOperator());
lqw.eq(bo.getOperationTime() != null, CrmOrderOperationTrace::getOperationTime, bo.getOperationTime()); lqw.eq(bo.getOperationTime() != null, CrmOrderOperationTrace::getOperationTime, bo.getOperationTime());
//根据创建时间正序排序
lqw.orderByAsc(CrmOrderOperationTrace::getCreateTime);
return lqw; return lqw;
} }