虚拟包按发货-直发-制作的顺序排序

This commit is contained in:
10002327 2024-09-03 09:17:01 +08:00
parent 2ab79e68bc
commit 6f14256fb5
1 changed files with 36 additions and 6 deletions

View File

@ -39,6 +39,7 @@ import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -193,7 +194,7 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
TransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def);
if(CollUtil.isNotEmpty(childrenForAdd)){
// "(发货)","(制作)","(直发)","(发货前装配)" 放在同一个组内排序 by 10002327 0830
// "(发货)","(直发)","(制作)","(发货前装配)" 放在同一个组内排序 by 10002327 0830
Map<String,List<BomNewEbomChildEntity>> chMap = childrenForAdd.stream().collect(Collectors.groupingBy(c -> {
return c.getDrawingNo().replaceAll("\\(发货\\)|\\(制作\\)|\\(直发\\)|\\(发货前装配\\)","");
}));
@ -201,8 +202,26 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
List<Map.Entry<String,List<BomNewEbomChildEntity>>> mpList = new ArrayList<>(chMap.entrySet());
mpList.sort(Map.Entry.comparingByValue((c1,c2) -> Optional.ofNullable(c1).map(l->l.get(0)).map(BomNewEbomChildEntity::getOrderNumber).orElse("")
.compareTo(Optional.of(c2).map(l->l.get(0)).map(BomNewEbomChildEntity::getOrderNumber).orElse(""))));
//对map值的集合按照 按发货-直发-制作的顺序排序
Function<BomNewEbomChildEntity,String> sortFn = (ent) -> {
String num = "1";
String desc = Optional.ofNullable(ent).map(BomNewEbomChildEntity::getMaterialDesc).orElse("");
if(desc.contains("(发货)")){
num = "1";
}
if(desc.contains("(直发)")){
num = "2";
}
if(desc.contains("(制作)")){
num = "3";
}
if(desc.contains("(发货前装配)")){
num = "4";
}
return num;
};
childrenForAdd.removeAll(childrenForAdd);
mpList.forEach(m -> childrenForAdd.addAll(m.getValue()));
mpList.forEach(m -> childrenForAdd.addAll(m.getValue().stream().sorted(Comparator.comparing(sortFn::apply)).collect(Collectors.toList())));
}
try {
@ -419,27 +438,38 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
}
}
/**
* 按发货-直发-制作的顺序 by 10002327 240903
* @param root
* @param child
*/
private void build1010VirtualPackage(BomNewEbomParentEntity root, BomNewEbomChildEntity child) {
//发货包
BomNewEbomChildEntity qc1 = buildVirtualPackage(false, root.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber());
BomNewEbomParentEntity qp1 = buildVirtualPackage(root, qc1);
//制作包
BomNewEbomChildEntity qc2 = buildVirtualPackage(false, qp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, "001");
BomNewEbomChildEntity qc2 = buildVirtualPackage(false, qp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, "002");
BomNewEbomParentEntity qp2 = buildVirtualPackage(qp1, qc2);
child.setParentRowId(qp2.getRowId());
child.setModifyTime(LocalDateTime.now());
childrenForUpdate.add(child);
//直发包
BomNewEbomChildEntity qc3 = buildVirtualPackage(false, qp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "002");
BomNewEbomChildEntity qc3 = buildVirtualPackage(false, qp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "001");
buildVirtualPackage(qp1, qc3);
}
/**
* 按发货-直发-制作的顺序 by 10002327 240903
* @param root
* @param mount
* @param child
*/
private void build1020VirtualPackage(BomNewEbomParentEntity root, boolean mount, BomNewEbomChildEntity child) {
//发货包
BomNewEbomChildEntity xc1 = buildVirtualPackage(true, root.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber());
BomNewEbomParentEntity xp1 = buildVirtualPackage(root, xc1);
//制作包
BomNewEbomChildEntity xc2 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, "001");
BomNewEbomChildEntity xc2 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.MAKING_PACKAGE, "002");
BomNewEbomParentEntity xp2 = buildVirtualPackage(xp1, xc2);
if (mount) {
child.setParentRowId(xp2.getRowId());
@ -447,7 +477,7 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
childrenForUpdate.add(child);
}
//直发包
BomNewEbomChildEntity xc3 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "002");
BomNewEbomChildEntity xc3 = buildVirtualPackage(true, xp1.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE, "001");
buildVirtualPackage(xp1, xc3);
}