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) { default LambdaQueryWrapperX<MoldBrandDO> buildQueryWrapper(MoldBrandPageReqVO reqVO) {
LambdaQueryWrapperX<MoldBrandDO> queryWrapper = new LambdaQueryWrapperX<MoldBrandDO>() LambdaQueryWrapperX<MoldBrandDO> queryWrapper = new LambdaQueryWrapperX<MoldBrandDO>()
.eqIfPresent(MoldBrandDO::getCode, reqVO.getCode()) .likeIfPresent(MoldBrandDO::getCode, reqVO.getCode())
.likeIfPresent(MoldBrandDO::getName, reqVO.getName()) .likeIfPresent(MoldBrandDO::getName, reqVO.getName())
.eqIfPresent(MoldBrandDO::getMoldType, reqVO.getMoldType()) .eqIfPresent(MoldBrandDO::getMoldType, reqVO.getMoldType())
.eqIfPresent(MoldBrandDO::getProductId, reqVO.getProductId()) .eqIfPresent(MoldBrandDO::getProductId, reqVO.getProductId())

@ -203,7 +203,7 @@ public class MoldBrandServiceImpl implements MoldBrandService {
if (CollUtil.isEmpty(respVOList)) { if (CollUtil.isEmpty(respVOList)) {
return; return;
} }
Map<Long, MoldOperateSimpleDO> latestOperateMap = getLatestOperateMapByBrandIds( Map<Long, MoldOperateSimpleDO> latestOperateMap = getLatestOperateMapByMoldIds(
convertSet(respVOList, MoldBrandRespVO::getId)); convertSet(respVOList, MoldBrandRespVO::getId));
respVOList.forEach(item -> fillCurrentDeviceNameByLatestOperate(item, latestOperateMap.get(item.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())); .collect(Collectors.groupingBy(MoldDO::getBrandId, Collectors.counting()));
} }
private Map<Long, MoldOperateSimpleDO> getLatestOperateMapByBrandIds(Collection<Long> brandIds) { private Map<Long, MoldOperateSimpleDO> getLatestOperateMapByMoldIds(
if (CollUtil.isEmpty(brandIds)) { Collection<Long> moldIds) {
return Collections.emptyMap();
} if (CollUtil.isEmpty(moldIds)) {
List<MoldDO> moldList = moldMapper.selectList(new LambdaQueryWrapperX<MoldDO>()
.in(MoldDO::getBrandId, brandIds)
.select(MoldDO::getId, MoldDO::getBrandId));
if (CollUtil.isEmpty(moldList)) {
return Collections.emptyMap(); 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)) { if (CollUtil.isEmpty(operateList)) {
return Collections.emptyMap(); return Collections.emptyMap();
} }
// 2. 按 mold_id 取最新一条
Map<Long, MoldOperateSimpleDO> latestOperateMap = new HashMap<>(); Map<Long, MoldOperateSimpleDO> latestOperateMap = new HashMap<>();
for (MoldOperateSimpleDO operate : operateList) { for (MoldOperateSimpleDO operate : operateList) {
for (Long moldId : parseMoldIds(operate.getMoldId())) { for (Long moldId : parseMoldIds(operate.getMoldId())) {
Long brandId = moldBrandMap.get(moldId); if (moldIds.contains(moldId)) {
if (brandId != null) { latestOperateMap.putIfAbsent(moldId, operate);
latestOperateMap.putIfAbsent(brandId, operate);
} }
} }
if (latestOperateMap.size() >= brandIds.size()) { if (latestOperateMap.size() >= moldIds.size()) {
break; break;
} }
} }
return latestOperateMap; return latestOperateMap;
} }
@ -389,7 +391,7 @@ public class MoldBrandServiceImpl implements MoldBrandService {
if (CollUtil.isEmpty(moldBrandList)) { if (CollUtil.isEmpty(moldBrandList)) {
return Collections.emptyList(); return Collections.emptyList();
} }
Map<Long, MoldOperateSimpleDO> latestOperateMap = getLatestOperateMapByBrandIds(convertSet(moldBrandList, MoldBrandDO::getId)); Map<Long, MoldOperateSimpleDO> latestOperateMap = getLatestOperateMapByMoldIds(convertSet(moldBrandList, MoldBrandDO::getId));
return moldBrandList.stream() return moldBrandList.stream()
.filter(item -> matchDeviceName(latestOperateMap.get(item.getId()), reqVO.getDeviceName())) .filter(item -> matchDeviceName(latestOperateMap.get(item.getId()), reqVO.getDeviceName()))
.collect(Collectors.toList()); .collect(Collectors.toList());

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

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

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

Loading…
Cancel
Save