45527 礼嘉福特发运单打印-assyCode排序优化

uat-temp-logic-20250307-45527
logic.fang 2 months ago
parent 2592f341fe
commit 5f0eb647af

@ -187,11 +187,24 @@ public class MesPartShippingGroupService implements IMesPartShippingGroupService
//assyCode 的个数 / 2 代表会生成实体发运单的份数(一个 assyCode 就是一个表格,一份实体表单上可以放两个表格)
Map<String, List<MesShippingOrderManagementDetail>> detailByAssyCodeMap =
details.stream().collect(Collectors.groupingBy(MesShippingOrderManagementDetail::getAssyCode));
//将assyCode按照logic_Seq进行排序选取每个assyCode对应的那组数据中的logic_seq最小值根据该值对assyCode进行排序
List<String> assyCodeList = new ArrayList<>(detailByAssyCodeMap.keySet());
Map<Long, String> logicSeqAndAssyCodeMap = new HashMap<>();
for (String assyCode : assyCodeList) {
List<MesShippingOrderManagementDetail> detailList = detailByAssyCodeMap.get(assyCode);
Optional<MesShippingOrderManagementDetail> min =
detailList.stream().min(Comparator.comparing(MesShippingOrderManagementDetail::getLogicSeq));
min.ifPresent(mesShippingOrderManagementDetail -> logicSeqAndAssyCodeMap.put(mesShippingOrderManagementDetail.getLogicSeq(), assyCode));
}
List<Long> collect = logicSeqAndAssyCodeMap.keySet().stream().sorted().collect(Collectors.toList());
List<String> newAssyCodeList = new ArrayList<>();
for (Long logicSeq : collect) {
newAssyCodeList.add(logicSeqAndAssyCodeMap.get(logicSeq));
}
//将 assyCode 两两分组
List<List<String>> physicalOrderList = IntStream.range(0, assyCodeList.size())
List<List<String>> physicalOrderList = IntStream.range(0, newAssyCodeList.size())
.filter(i -> i % 2 == 0)
.mapToObj(i -> assyCodeList.subList(i, Math.min(i + 2, assyCodeList.size())))
.mapToObj(i -> newAssyCodeList.subList(i, Math.min(i + 2, newAssyCodeList.size())))
.collect(Collectors.toList());
for (List<String> list : physicalOrderList) {
//生成一张实体发运单

Loading…
Cancel
Save