虚拟包按发货-直发-制作的顺序排序
This commit is contained in:
parent
2ab79e68bc
commit
6f14256fb5
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue