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

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.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -193,7 +194,7 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
TransactionDefinition def = new DefaultTransactionDefinition(); TransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def); TransactionStatus status = transactionManager.getTransaction(def);
if(CollUtil.isNotEmpty(childrenForAdd)){ if(CollUtil.isNotEmpty(childrenForAdd)){
// "(发货)","(制作)","(直发)","(发货前装配)" 放在同一个组内排序 by 10002327 0830 // "(发货)","(直发)","(制作)","(发货前装配)" 放在同一个组内排序 by 10002327 0830
Map<String,List<BomNewEbomChildEntity>> chMap = childrenForAdd.stream().collect(Collectors.groupingBy(c -> { Map<String,List<BomNewEbomChildEntity>> chMap = childrenForAdd.stream().collect(Collectors.groupingBy(c -> {
return c.getDrawingNo().replaceAll("\\(发货\\)|\\(制作\\)|\\(直发\\)|\\(发货前装配\\)",""); return c.getDrawingNo().replaceAll("\\(发货\\)|\\(制作\\)|\\(直发\\)|\\(发货前装配\\)","");
})); }));
@ -201,8 +202,26 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
List<Map.Entry<String,List<BomNewEbomChildEntity>>> mpList = new ArrayList<>(chMap.entrySet()); 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("") 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("")))); .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); 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 { try {
@ -419,27 +438,38 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
} }
} }
/**
* 按发货-直发-制作的顺序 by 10002327 240903
* @param root
* @param child
*/
private void build1010VirtualPackage(BomNewEbomParentEntity root, BomNewEbomChildEntity child) { private void build1010VirtualPackage(BomNewEbomParentEntity root, BomNewEbomChildEntity child) {
//发货包 //发货包
BomNewEbomChildEntity qc1 = buildVirtualPackage(false, root.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber()); BomNewEbomChildEntity qc1 = buildVirtualPackage(false, root.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber());
BomNewEbomParentEntity qp1 = buildVirtualPackage(root, qc1); 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); BomNewEbomParentEntity qp2 = buildVirtualPackage(qp1, qc2);
child.setParentRowId(qp2.getRowId()); child.setParentRowId(qp2.getRowId());
child.setModifyTime(LocalDateTime.now()); child.setModifyTime(LocalDateTime.now());
childrenForUpdate.add(child); 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); buildVirtualPackage(qp1, qc3);
} }
/**
* 按发货-直发-制作的顺序 by 10002327 240903
* @param root
* @param mount
* @param child
*/
private void build1020VirtualPackage(BomNewEbomParentEntity root, boolean mount, BomNewEbomChildEntity 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()); BomNewEbomChildEntity xc1 = buildVirtualPackage(true, root.getRowId(), root, child.getMaterialName(), child.getDrawingNo(), VirtualPackageTypeEnum.DELIVERY_PACKAGE, child.getOrderNumber());
BomNewEbomParentEntity xp1 = buildVirtualPackage(root, xc1); 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); BomNewEbomParentEntity xp2 = buildVirtualPackage(xp1, xc2);
if (mount) { if (mount) {
child.setParentRowId(xp2.getRowId()); child.setParentRowId(xp2.getRowId());
@ -447,7 +477,7 @@ public class BomNewEbomGenerateVirtualPackageServiceFor31Impl implements IBomNew
childrenForUpdate.add(child); 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); buildVirtualPackage(xp1, xc3);
} }