|
|
|
@ -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());
|
|
|
|
|