|
@@ -269,6 +269,7 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
|
|
|
return "该炉钢坯实绩不存在,补录失败!";
|
|
|
}
|
|
|
BilletBasicInfo heatnoIndexNewBilletBasicInfo = billetBasicInfoList.stream().findFirst().orElse(null);
|
|
|
+ List<BilletBasicInfo> finalBilletBasicInfoList = new ArrayList<>();
|
|
|
// 1流补录钢坯
|
|
|
if (oConvertUtils.isNotEmpty(billetBasicInfoAdd.getOneStrandNo()) && billetBasicInfoAdd.getOneStrandNoSum() > 0){
|
|
|
// 根据strand_no过滤出最新一条
|
|
@@ -288,7 +289,8 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
|
|
|
int strandNo = billetBasicInfoAdd.getOneStrandNo();
|
|
|
// 定尺
|
|
|
int length = billetBasicInfoAdd.getOneLength();
|
|
|
- allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ List<BilletBasicInfo> billetBasicInfoOneList = allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ finalBilletBasicInfoList.addAll(billetBasicInfoOneList);
|
|
|
}
|
|
|
|
|
|
// 2流补录钢坯
|
|
@@ -310,7 +312,8 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
|
|
|
int strandNo = billetBasicInfoAdd.getTwoStrandNo();
|
|
|
// 定尺
|
|
|
int length = billetBasicInfoAdd.getTwoLength();
|
|
|
- allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ List<BilletBasicInfo> billetBasicInfoTwoList = allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ finalBilletBasicInfoList.addAll(billetBasicInfoTwoList);
|
|
|
}
|
|
|
|
|
|
// 3流补录钢坯
|
|
@@ -332,7 +335,8 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
|
|
|
int strandNo = billetBasicInfoAdd.getThreeStrandNo();
|
|
|
// 定尺
|
|
|
int length = billetBasicInfoAdd.getThreeLength();
|
|
|
- allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ List<BilletBasicInfo> billetBasicInfoThreeList = allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ finalBilletBasicInfoList.addAll(billetBasicInfoThreeList);
|
|
|
}
|
|
|
|
|
|
// 4流补录钢坯
|
|
@@ -354,7 +358,8 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
|
|
|
int strandNo = billetBasicInfoAdd.getFourStrandNo();
|
|
|
// 定尺
|
|
|
int length = billetBasicInfoAdd.getFourLength();
|
|
|
- allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ List<BilletBasicInfo> billetBasicInfoFourList = allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ finalBilletBasicInfoList.addAll(billetBasicInfoFourList);
|
|
|
}
|
|
|
|
|
|
// 5流补录钢坯
|
|
@@ -376,7 +381,8 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
|
|
|
int strandNo = billetBasicInfoAdd.getFiveStrandNo();
|
|
|
// 定尺
|
|
|
int length = billetBasicInfoAdd.getFiveLength();
|
|
|
- allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ List<BilletBasicInfo> billetBasicInfoFiveList = allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ finalBilletBasicInfoList.addAll(billetBasicInfoFiveList);
|
|
|
}
|
|
|
|
|
|
// 6流补录钢坯
|
|
@@ -398,7 +404,8 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
|
|
|
int strandNo = billetBasicInfoAdd.getSixStrandNo();
|
|
|
// 定尺
|
|
|
int length = billetBasicInfoAdd.getSixLength();
|
|
|
- allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ List<BilletBasicInfo> billetBasicInfoSixList = allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ finalBilletBasicInfoList.addAll(billetBasicInfoSixList);
|
|
|
}
|
|
|
|
|
|
// 7流补录钢坯
|
|
@@ -420,7 +427,8 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
|
|
|
int strandNo = billetBasicInfoAdd.getSevenStrandNo();
|
|
|
// 定尺
|
|
|
int length = billetBasicInfoAdd.getSevenLength();
|
|
|
- allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ List<BilletBasicInfo> billetBasicInfoSevenList = allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ finalBilletBasicInfoList.addAll(billetBasicInfoSevenList);
|
|
|
}
|
|
|
|
|
|
// 8流补录钢坯
|
|
@@ -442,11 +450,81 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
|
|
|
int strandNo = billetBasicInfoAdd.getEightStrandNo();
|
|
|
// 定尺
|
|
|
int length = billetBasicInfoAdd.getEightLength();
|
|
|
- allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ List<BilletBasicInfo> billetBasicInfoEightList = allBilletBasicInfo(strandnoIndex, heatnoIndexNewBilletBasicInfo, billetBasicInfoAdd, number, brandNumStr, billetHotsend, heatsActuals, strandNo, length);
|
|
|
+ finalBilletBasicInfoList.addAll(billetBasicInfoEightList);
|
|
|
}
|
|
|
+ // 列表补坯对8流所有数据进行组批统一处理
|
|
|
+ allBilletBasicInfoAssembly(finalBilletBasicInfoList, billetBasicInfoAdd);
|
|
|
+
|
|
|
return "补录成功!";
|
|
|
}
|
|
|
|
|
|
+ private void allBilletBasicInfoAssembly(List<BilletBasicInfo> billetBasicInfoList, BilletBasicInfoAdd billetBasicInfoAdd) {
|
|
|
+
|
|
|
+ //组批逻辑处理 查询钢坯实绩,组批号不为空,belongtable为空
|
|
|
+ List<BilletBasicInfo> availableBilletBasicInfoList = billetBasicInfoMapper.selectList(
|
|
|
+ new QueryWrapper<BilletBasicInfo>()
|
|
|
+ .eq("ccm_no", billetBasicInfoAdd.getCcmNo())
|
|
|
+ .eq("heat_no", billetBasicInfoAdd.getHeatNo())
|
|
|
+ .eq("shift", billetBasicInfoAdd.getShift())
|
|
|
+ .eq("shift_group", billetBasicInfoAdd.getShiftGroup())
|
|
|
+ .isNull("belong_table") // 使用 isNull 代替 eq(null)
|
|
|
+ .isNotNull("assembly_number") // 使用 isNotNull 代替 ne(null)
|
|
|
+ .orderByDesc("create_time"));
|
|
|
+ if (oConvertUtils.listIsNotEmpty(availableBilletBasicInfoList)){
|
|
|
+ // 按assembly_number分组并过滤出数量不等于4的组
|
|
|
+ Map<String, List<BilletBasicInfo>> filteredGroups = availableBilletBasicInfoList.stream()
|
|
|
+ .collect(Collectors.groupingBy(BilletBasicInfo::getAssemblyNumber))
|
|
|
+ .entrySet().stream()
|
|
|
+ .filter(entry -> entry.getValue().size() != 4)
|
|
|
+ .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
|
|
+
|
|
|
+ // 将过滤后的结果,转换为单个列表并设置 assemblyNumber 为 null
|
|
|
+ List<BilletBasicInfo> resultList = filteredGroups.values().stream()
|
|
|
+ .flatMap(Collection::stream)
|
|
|
+ .peek(billet -> billet.setAssemblyNumber(null))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ resultList.addAll(billetBasicInfoList);
|
|
|
+
|
|
|
+ if (oConvertUtils.listIsNotEmpty(resultList) && resultList.size() >= 4) {
|
|
|
+ int size = resultList.size();
|
|
|
+ int maxProcessed = (size / 4) * 4; // 计算可处理的最大4的倍数
|
|
|
+ List<BilletBasicInfo> remainingBillets = new ArrayList<>(); // 存储剩余的坯子
|
|
|
+ for (int i = 0; i < maxProcessed; i += 4) {
|
|
|
+ int start = i;
|
|
|
+ int end = Math.min(i + 4, maxProcessed);
|
|
|
+ // 处理当前分组数据
|
|
|
+ updateBilletBasicInfoAsendAssemblyHandle(resultList.subList(start, end), billetBasicInfoAdd);
|
|
|
+ }
|
|
|
+ // 提取剩余不足4个的坯子, 并更新组批号到数据库中
|
|
|
+ if (size > maxProcessed) {
|
|
|
+ remainingBillets = billetBasicInfoList.subList(maxProcessed, size);
|
|
|
+ // 处理当前分组数据
|
|
|
+ updateBilletBasicInfoAsendAssemblyHandle(remainingBillets, billetBasicInfoAdd);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if (oConvertUtils.listIsNotEmpty(billetBasicInfoList) && billetBasicInfoList.size() >= 4) {
|
|
|
+ int size = billetBasicInfoList.size();
|
|
|
+ int maxProcessed = (size / 4) * 4; // 计算可处理的最大4的倍数
|
|
|
+ List<BilletBasicInfo> remainingBillets = new ArrayList<>(); // 存储剩余的坯子
|
|
|
+ for (int i = 0; i < maxProcessed; i += 4) {
|
|
|
+ int start = i;
|
|
|
+ int end = Math.min(i + 4, maxProcessed);
|
|
|
+ // 处理当前分组数据
|
|
|
+ updateBilletBasicInfoAsendAssemblyHandle(billetBasicInfoList.subList(start, end), billetBasicInfoAdd);
|
|
|
+ }
|
|
|
+ // 提取剩余不足4个的坯子, 并更新组批号到数据库中
|
|
|
+ if (size > maxProcessed) {
|
|
|
+ remainingBillets = billetBasicInfoList.subList(maxProcessed, size);
|
|
|
+ // 处理当前分组数据
|
|
|
+ updateBilletBasicInfoAsendAssemblyHandle(remainingBillets, billetBasicInfoAdd);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 批量生成
|
|
@@ -458,7 +536,7 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
|
|
|
* @param billetHotsend
|
|
|
* @param heatsActuals
|
|
|
*/
|
|
|
- private void allBilletBasicInfo(int strandnoIndex, BilletBasicInfo billetBasicInfoLast, BilletBasicInfoAdd billetBasicInfoAdd,
|
|
|
+ private List<BilletBasicInfo> allBilletBasicInfo(int strandnoIndex, BilletBasicInfo billetBasicInfoLast, BilletBasicInfoAdd billetBasicInfoAdd,
|
|
|
int number, String brandNumStr, BilletHotsend billetHotsend, HeatsActuals heatsActuals, int strandNo, int length) {
|
|
|
List<BilletBasicInfo> billetBasicInfoList = new ArrayList<>();
|
|
|
|
|
@@ -536,70 +614,8 @@ public class BilletBasicInfoServiceImpl extends ServiceImpl<BilletBasicInfoMappe
|
|
|
billetHotsendBaseMapper.updateById(billetHotsend);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ return billetBasicInfoList;
|
|
|
//
|
|
|
- //组批逻辑处理 查询钢坯实绩,组批号不为空,belongtable为空
|
|
|
- List<BilletBasicInfo> availableBilletBasicInfoList = billetBasicInfoMapper.selectList(
|
|
|
- new QueryWrapper<BilletBasicInfo>()
|
|
|
- .eq("ccm_no", billetBasicInfoAdd.getCcmNo())
|
|
|
- .eq("heat_no", billetBasicInfoAdd.getHeatNo())
|
|
|
- .eq("shift", billetBasicInfoAdd.getShift())
|
|
|
- .eq("shift_group", billetBasicInfoAdd.getShiftGroup())
|
|
|
- .isNull("belong_table") // 使用 isNull 代替 eq(null)
|
|
|
- .isNotNull("assembly_number") // 使用 isNotNull 代替 ne(null)
|
|
|
- .orderByDesc("create_time"));
|
|
|
- if (oConvertUtils.listIsNotEmpty(availableBilletBasicInfoList)){
|
|
|
- // 按assembly_number分组并过滤出数量不等于4的组
|
|
|
- Map<String, List<BilletBasicInfo>> filteredGroups = availableBilletBasicInfoList.stream()
|
|
|
- .collect(Collectors.groupingBy(BilletBasicInfo::getAssemblyNumber))
|
|
|
- .entrySet().stream()
|
|
|
- .filter(entry -> entry.getValue().size() != 4)
|
|
|
- .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
|
|
-
|
|
|
- // 将过滤后的结果,转换为单个列表并设置 assemblyNumber 为 null
|
|
|
- List<BilletBasicInfo> resultList = filteredGroups.values().stream()
|
|
|
- .flatMap(Collection::stream)
|
|
|
- .peek(billet -> billet.setAssemblyNumber(null))
|
|
|
- .collect(Collectors.toList());
|
|
|
-
|
|
|
- resultList.addAll(billetBasicInfoList);
|
|
|
-
|
|
|
- if (oConvertUtils.listIsNotEmpty(resultList) && resultList.size() >= 4) {
|
|
|
- int size = resultList.size();
|
|
|
- int maxProcessed = (size / 4) * 4; // 计算可处理的最大4的倍数
|
|
|
- List<BilletBasicInfo> remainingBillets = new ArrayList<>(); // 存储剩余的坯子
|
|
|
- for (int i = 0; i < maxProcessed; i += 4) {
|
|
|
- int start = i;
|
|
|
- int end = Math.min(i + 4, maxProcessed);
|
|
|
- // 处理当前分组数据
|
|
|
- updateBilletBasicInfoAsendAssemblyHandle(resultList.subList(start, end), billetBasicInfoAdd);
|
|
|
- }
|
|
|
- // 提取剩余不足4个的坯子, 并更新组批号到数据库中
|
|
|
- if (size > maxProcessed) {
|
|
|
- remainingBillets = billetBasicInfoList.subList(maxProcessed, size);
|
|
|
- // 处理当前分组数据
|
|
|
- updateBilletBasicInfoAsendAssemblyHandle(remainingBillets, billetBasicInfoAdd);
|
|
|
- }
|
|
|
- }
|
|
|
- }else{
|
|
|
- if (oConvertUtils.listIsNotEmpty(billetBasicInfoList) && billetBasicInfoList.size() >= 4) {
|
|
|
- int size = billetBasicInfoList.size();
|
|
|
- int maxProcessed = (size / 4) * 4; // 计算可处理的最大4的倍数
|
|
|
- List<BilletBasicInfo> remainingBillets = new ArrayList<>(); // 存储剩余的坯子
|
|
|
- for (int i = 0; i < maxProcessed; i += 4) {
|
|
|
- int start = i;
|
|
|
- int end = Math.min(i + 4, maxProcessed);
|
|
|
- // 处理当前分组数据
|
|
|
- updateBilletBasicInfoAsendAssemblyHandle(billetBasicInfoList.subList(start, end), billetBasicInfoAdd);
|
|
|
- }
|
|
|
- // 提取剩余不足4个的坯子, 并更新组批号到数据库中
|
|
|
- if (size > maxProcessed) {
|
|
|
- remainingBillets = billetBasicInfoList.subList(maxProcessed, size);
|
|
|
- // 处理当前分组数据
|
|
|
- updateBilletBasicInfoAsendAssemblyHandle(remainingBillets, billetBasicInfoAdd);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
/**
|