fix:修复模具组相关问题

main
HuangHuiKang 1 week ago
parent 5f370f6c2f
commit b2a9857887

@ -23,7 +23,7 @@ public interface MoldBrandMapper extends BaseMapperX<MoldBrandDO> {
default LambdaQueryWrapperX<MoldBrandDO> buildQueryWrapper(MoldBrandPageReqVO reqVO) {
LambdaQueryWrapperX<MoldBrandDO> queryWrapper = new LambdaQueryWrapperX<MoldBrandDO>()
.eqIfPresent(MoldBrandDO::getCode, reqVO.getCode())
.likeIfPresent(MoldBrandDO::getCode, reqVO.getCode())
.likeIfPresent(MoldBrandDO::getName, reqVO.getName())
.eqIfPresent(MoldBrandDO::getMoldType, reqVO.getMoldType())
.eqIfPresent(MoldBrandDO::getProductId, reqVO.getProductId())

@ -203,7 +203,7 @@ public class MoldBrandServiceImpl implements MoldBrandService {
if (CollUtil.isEmpty(respVOList)) {
return;
}
Map<Long, MoldOperateSimpleDO> latestOperateMap = getLatestOperateMapByBrandIds(
Map<Long, MoldOperateSimpleDO> latestOperateMap = getLatestOperateMapByMoldIds(
convertSet(respVOList, MoldBrandRespVO::getId));
respVOList.forEach(item -> fillCurrentDeviceNameByLatestOperate(item, latestOperateMap.get(item.getId())));
}
@ -329,33 +329,35 @@ public class MoldBrandServiceImpl implements MoldBrandService {
.collect(Collectors.groupingBy(MoldDO::getBrandId, Collectors.counting()));
}
private Map<Long, MoldOperateSimpleDO> getLatestOperateMapByBrandIds(Collection<Long> brandIds) {
if (CollUtil.isEmpty(brandIds)) {
return Collections.emptyMap();
}
List<MoldDO> moldList = moldMapper.selectList(new LambdaQueryWrapperX<MoldDO>()
.in(MoldDO::getBrandId, brandIds)
.select(MoldDO::getId, MoldDO::getBrandId));
if (CollUtil.isEmpty(moldList)) {
private Map<Long, MoldOperateSimpleDO> getLatestOperateMapByMoldIds(
Collection<Long> moldIds) {
if (CollUtil.isEmpty(moldIds)) {
return Collections.emptyMap();
}
Map<Long, Long> moldBrandMap = moldList.stream().collect(Collectors.toMap(MoldDO::getId, MoldDO::getBrandId));
List<MoldOperateSimpleDO> operateList = moldOperateQueryMapper.selectByMoldIds(moldBrandMap.keySet());
// 1. 直接按 mold_id 查询操作记录SQL 层已按时间倒序)
List<MoldOperateSimpleDO> operateList =
moldOperateQueryMapper.selectByMoldIds(moldIds);
if (CollUtil.isEmpty(operateList)) {
return Collections.emptyMap();
}
// 2. 按 mold_id 取最新一条
Map<Long, MoldOperateSimpleDO> latestOperateMap = new HashMap<>();
for (MoldOperateSimpleDO operate : operateList) {
for (Long moldId : parseMoldIds(operate.getMoldId())) {
Long brandId = moldBrandMap.get(moldId);
if (brandId != null) {
latestOperateMap.putIfAbsent(brandId, operate);
if (moldIds.contains(moldId)) {
latestOperateMap.putIfAbsent(moldId, operate);
}
}
if (latestOperateMap.size() >= brandIds.size()) {
if (latestOperateMap.size() >= moldIds.size()) {
break;
}
}
return latestOperateMap;
}
@ -389,7 +391,7 @@ public class MoldBrandServiceImpl implements MoldBrandService {
if (CollUtil.isEmpty(moldBrandList)) {
return Collections.emptyList();
}
Map<Long, MoldOperateSimpleDO> latestOperateMap = getLatestOperateMapByBrandIds(convertSet(moldBrandList, MoldBrandDO::getId));
Map<Long, MoldOperateSimpleDO> latestOperateMap = getLatestOperateMapByMoldIds(convertSet(moldBrandList, MoldBrandDO::getId));
return moldBrandList.stream()
.filter(item -> matchDeviceName(latestOperateMap.get(item.getId()), reqVO.getDeviceName()))
.collect(Collectors.toList());

@ -1,5 +1,10 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldoperate.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -38,6 +43,9 @@ public class MoldOperateSaveReqVO {
private String lowerMoldId;
@Schema(description = "操作时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime operateTime;
@Schema(description = "操作人id", example = "1")

@ -70,7 +70,7 @@ public class MoldOperateServiceImpl implements MoldOperateService {
if (createReqVO.getOperateType() == 1){
moldDO.setStatus(MoldBrandStatusEnum.ON_MACHINE.getStatus());
}else {
moldDO.setStatus(MoldBrandStatusEnum.ON_MACHINE.getStatus());
moldDO.setStatus(MoldBrandStatusEnum.STANDBY.getStatus());
}
moldBrandMapper.updateById(moldDO);

@ -40,15 +40,15 @@ server:
springdoc:
api-docs:
enabled: true
enabled: false
path: /v3/api-docs
swagger-ui:
enabled: true
enabled: false
path: /swagger-ui
default-flat-param-object: true # 参见 https://doc.xiaominfo.com/docs/faq/v4/knife4j-parameterobject-flat-param 文档
knife4j:
enable: true
enable: false
setting:
language: zh_cn

Loading…
Cancel
Save