fix: 优化日计划日志展示
This commit is contained in:
@@ -16,5 +16,6 @@ public class DailyPlanOperationLogRespVO {
|
||||
private Integer changeQty;
|
||||
private String operationReason;
|
||||
private String operator;
|
||||
private String operatorName;
|
||||
private LocalDateTime operationTime;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,8 @@ import cn.code.nl.module.lms.enums.DailyPlanSourceTypeEnum;
|
||||
import cn.code.nl.module.lms.enums.DailyPlanStrategyModeEnum;
|
||||
import cn.code.nl.module.lms.enums.DailyPlanStrategyTypeEnum;
|
||||
import cn.code.nl.module.lms.enums.DailyPlanWorkStatusEnum;
|
||||
import cn.code.nl.module.system.api.user.AdminUserApi;
|
||||
import cn.code.nl.module.system.api.user.dto.AdminUserRespDTO;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import jakarta.annotation.Resource;
|
||||
@@ -46,7 +48,10 @@ import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.code.nl.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.code.nl.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||
@@ -90,6 +95,8 @@ public class DailyPlanServiceImpl implements DailyPlanService {
|
||||
@Resource
|
||||
private CodeGenApi codeGenApi;
|
||||
@Resource
|
||||
private AdminUserApi adminUserApi;
|
||||
@Resource
|
||||
private PlatformTransactionManager transactionManager;
|
||||
|
||||
/** ERP 幂等推送日计划,并在首次推送并发冲突时进行一次独立事务重试。 */
|
||||
@@ -234,8 +241,16 @@ public class DailyPlanServiceImpl implements DailyPlanService {
|
||||
if (dailyPlanMapper.selectDailyPlanById(dailyPlanId) == null) {
|
||||
throw exception(DAILY_PLAN_NOT_EXISTS);
|
||||
}
|
||||
List<DailyPlanOperationLogRespVO> result = new ArrayList<>();
|
||||
for (DailyPlanOperationLogDO log : dailyPlanOperationLogMapper.selectListByDailyPlanId(dailyPlanId)) {
|
||||
List<DailyPlanOperationLogDO> logs = dailyPlanOperationLogMapper.selectListByDailyPlanId(dailyPlanId);
|
||||
Set<Long> operatorIds = logs.stream()
|
||||
.map(DailyPlanOperationLogDO::getOperator)
|
||||
.map(DailyPlanServiceImpl::parseOperatorId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
Map<Long, AdminUserRespDTO> userMap = operatorIds.isEmpty()
|
||||
? Map.of() : adminUserApi.getUserMap(operatorIds);
|
||||
List<DailyPlanOperationLogRespVO> result = new ArrayList<>(logs.size());
|
||||
for (DailyPlanOperationLogDO log : logs) {
|
||||
DailyPlanOperationLogRespVO response = new DailyPlanOperationLogRespVO();
|
||||
response.setOperationLogId(log.getOperationLogId());
|
||||
response.setDailyPlanId(log.getDailyPlanId());
|
||||
@@ -246,12 +261,37 @@ public class DailyPlanServiceImpl implements DailyPlanService {
|
||||
response.setChangeQty(log.getChangeQty());
|
||||
response.setOperationReason(log.getOperationReason());
|
||||
response.setOperator(log.getOperator());
|
||||
response.setOperatorName(resolveOperatorName(log.getOperator(), userMap));
|
||||
response.setOperationTime(log.getOperationTime());
|
||||
result.add(response);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/** 批量翻译操作人;ERP 和系统操作不交给用户翻译,避免把非数字标识当用户 ID。 */
|
||||
private static String resolveOperatorName(String operator, Map<Long, AdminUserRespDTO> userMap) {
|
||||
if (ERP_OPERATOR.equalsIgnoreCase(operator)) {
|
||||
return "ERP";
|
||||
}
|
||||
Long operatorId = parseOperatorId(operator);
|
||||
if (operatorId == null) {
|
||||
return "系统";
|
||||
}
|
||||
AdminUserRespDTO user = userMap.get(operatorId);
|
||||
return user == null ? "未知用户" : user.getNickname();
|
||||
}
|
||||
|
||||
private static Long parseOperatorId(String operator) {
|
||||
if (StrUtil.isBlank(operator) || !operator.chars().allMatch(Character::isDigit)) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return Long.valueOf(operator);
|
||||
} catch (NumberFormatException ignored) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/** 查询全部日计划策略。 */
|
||||
@Override
|
||||
public List<DailyPlanStrategyRespVO> getStrategies() {
|
||||
|
||||
Reference in New Issue
Block a user