|
|
|
@ -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) {
|
|
|
|
|
//生成一张实体发运单
|
|
|
|
|