|
@@ -36,6 +36,7 @@ import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.IntStream;
|
|
|
|
|
|
/**
|
|
|
* @Description: 垛位装车
|
|
@@ -212,13 +213,15 @@ public class StackingAndLoadingVehiclesController extends JeecgController<Stacki
|
|
|
}
|
|
|
|
|
|
// 按assemblyNumber分组,并过滤出数量为4的组
|
|
|
- Map<String, List<BilletBasicInfo>> groupByAssemblyNumber = billetBasicInfoList.stream()
|
|
|
- .collect(Collectors.groupingBy(BilletBasicInfo::getAssemblyNumber))
|
|
|
- .entrySet()
|
|
|
- .stream()
|
|
|
- .filter(entry -> entry.getValue().size() == 4)
|
|
|
- .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
|
|
+// Map<String, List<BilletBasicInfo>> groupByAssemblyNumber = billetBasicInfoList.stream()
|
|
|
+// .collect(Collectors.groupingBy(BilletBasicInfo::getAssemblyNumber))
|
|
|
+// .entrySet()
|
|
|
+// .stream()
|
|
|
+// .filter(entry -> entry.getValue().size() == 4)
|
|
|
+// .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
|
|
|
|
|
+ // 2025/5/26 按总数数量为4分组、并且每组是同一炉的钢坯
|
|
|
+ Map<String, List<BilletBasicInfo>> groupByAssemblyNumber = groupAndFilterByHeatNo(billetBasicInfoList, 4);
|
|
|
|
|
|
List<StackingAndLoadingVehicles> stackingAndLoadingVehiclesList = new ArrayList<>();
|
|
|
List<RollClubCommon> rollClubCommonList = new ArrayList<>();
|
|
@@ -347,4 +350,38 @@ public class StackingAndLoadingVehiclesController extends JeecgController<Stacki
|
|
|
|
|
|
return Result.OK(result);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将列表按固定大小分组,并过滤掉炉号不一致或数量不足的组
|
|
|
+ *
|
|
|
+ * @param billetList 待分组的钢坯信息列表
|
|
|
+ * @param groupSize 每组大小
|
|
|
+ * @return 分组结果Map,键为分组索引,值为符合条件的钢坯组
|
|
|
+ */
|
|
|
+ private Map<String, List<BilletBasicInfo>> groupAndFilterByHeatNo(List<BilletBasicInfo> billetList, int groupSize) {
|
|
|
+ // 按固定大小分组并检查炉号一致性
|
|
|
+ Map<String, List<BilletBasicInfo>> groupedMap = IntStream.range(0, billetList.size() / groupSize)
|
|
|
+ .boxed()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ i -> String.valueOf(i),
|
|
|
+ i -> {
|
|
|
+ List<BilletBasicInfo> group = billetList.subList(i * groupSize, (i + 1) * groupSize);
|
|
|
+ // 检查组内所有元素的heatNo是否相同
|
|
|
+ String firstHeatNo = group.get(0).getHeatNo();
|
|
|
+ boolean allSameHeatNo = group.stream()
|
|
|
+ .allMatch(item -> item.getHeatNo().equals(firstHeatNo));
|
|
|
+ return allSameHeatNo ? group : Collections.emptyList();
|
|
|
+ },
|
|
|
+ (existing, replacement) -> existing,
|
|
|
+ LinkedHashMap::new
|
|
|
+ ));
|
|
|
+ // 过滤掉空列表(炉号不一致的组)
|
|
|
+ Map<String, List<BilletBasicInfo>> filteredMap = new LinkedHashMap<>();
|
|
|
+ for (Map.Entry<String, List<BilletBasicInfo>> entry : groupedMap.entrySet()) {
|
|
|
+ if (!entry.getValue().isEmpty()) {
|
|
|
+ filteredMap.put(entry.getKey(), entry.getValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return filteredMap;
|
|
|
+ }
|
|
|
}
|