EBOM修复

This commit is contained in:
大米 2024-01-08 18:43:14 +08:00
parent b98fe9b4b2
commit b158c48de9
4 changed files with 41 additions and 29 deletions

View File

@ -39,6 +39,7 @@ import java.util.*;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@ -424,8 +425,8 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
*/
public List<BomNewPbomParentVO> getAllBom(Long rowId, Integer countLevelNum) throws ExecutionException, InterruptedException {
List<BomNewPbomParentVO> bomDetail = this.getBaseMapper().getParentChild(rowId);
PBomDetailTask detailTask = new PBomDetailTask(bomDetail,countLevelNum);
AtomicInteger levelNum = new AtomicInteger(1);
PBomDetailTask detailTask = new PBomDetailTask(bomDetail,countLevelNum,levelNum);
ForkJoinTask<List<BomNewPbomParentVO>> submit = bomDetailPool.submit(detailTask);
List<BomNewPbomParentVO> result = submit.join();
@ -546,7 +547,7 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
}
//将PBOM改为已发布
List<Long> bomRowIds = allChild.stream().filter(u -> u.getBomRowId() > 0).map(u -> u.getBomRowId()).collect(Collectors.toList());
rootParent.setOrderNo("订单号");
rootParent.setStatus(PBomStatusEnum.PUBLISH.getValue());
this.updateById(rootParent);
if(CollUtil.isNotEmpty(bomRowIds)){

View File

@ -56,8 +56,6 @@ public class VirtualPackageFor31 extends VirtualPackageBase {
buildChild(makingPackage, deliveryPackage.getRowId(), "001", VirtualPackageTypeEnum.MAKING_PACKAGE);
buildChild(directDeliveryPackage, deliveryPackage.getRowId(), "002", VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
BomNewEbomChildEntity itemUp = new BomNewEbomChildEntity();
itemUp.setRowId(item.getRowId());
itemUp.setParentRowId(makingPackage.getRowId());
@ -72,16 +70,24 @@ public class VirtualPackageFor31 extends VirtualPackageBase {
}
buildChild(preAssemblyPackage, makingPackage.getRowId(), "001", VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
}
}
parent.setVirtrualPackageEnum(VirtualPackageTypeEnum.getAll());
parent.setVirtrualPackageEnum(getVPackageNum(parent));
this.parentResult.add(parent);
}catch (Exception ex) {
throw new NflgBusinessException(STATE.BusinessError, ex.getMessage());
}
}
private Integer getVPackageNum(BomNewEbomParentEntity parent){
Integer vNum= parent.getVirtrualPackageEnum();
for ( Integer i: virtualPackageValue) {
vNum=vNum|i;
}
return vNum;
}

View File

@ -401,7 +401,7 @@ public class OriginalBomToEBomConvert extends BaseConvert {
BigDecimal numResult = BigDecimal.ZERO;
BigDecimal totalWeightResult = BigDecimal.ZERO;
for (BomOriginalListVO item : list1) {
numResult = Objects.nonNull(item.getNum()) ? item.getNum() : BigDecimal.ZERO;
numResult = NumberUtil.add(numResult, Objects.nonNull(item.getNum()) ? item.getNum() : BigDecimal.ZERO);
totalWeightResult = NumberUtil.add(totalWeightResult, item.getTotalWeight());
}
one.setNum(numResult);

View File

@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.RecursiveTask;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/**
@ -34,16 +35,15 @@ public class PBomDetailTask extends RecursiveTask<List<BomNewPbomParentVO>> {
List<BomNewPbomParentVO> result = new ArrayList<>();
public static Integer levelNum=1;
public AtomicInteger levelNum = new AtomicInteger(1);
//是否统计层级数
private Integer countLevelState;
public PBomDetailTask(List<BomNewPbomParentVO> inBomDetail ,Integer inCountLevelState) {
public PBomDetailTask(List<BomNewPbomParentVO> inBomDetail, Integer inCountLevelState, AtomicInteger inLevelNum) {
bomDetail = inBomDetail;
levelNum=inLevelNum;
countLevelState = inCountLevelState;
@ -82,8 +82,7 @@ public class PBomDetailTask extends RecursiveTask<List<BomNewPbomParentVO>> {
detailVO.setBomExist(ebomParentEntity.getBomExist());
detailVO.setShouldBomExist(ebomParentEntity.getShouldBomExist());
detailVO.setVirtualPackageIs(ebomParentEntity.getVirtualPackageIs());
}
else {
} else {
BomNewPbomParentEntity parent = SpringUtil.getBean(BomNewPbomParentService.class).lambdaQuery().eq(BomNewPbomParentEntity::getRowId, detailVO.getParentRowId()).one();
detailVO.setDeviseUserCode(parent.getDeviseUserCode());
detailVO.setDeviseName(parent.getDeviseName());
@ -114,9 +113,9 @@ public class PBomDetailTask extends RecursiveTask<List<BomNewPbomParentVO>> {
result.addAll(bomDetail);
//标记层级
if (countLevelState.equals(1)) {
bomDetail.forEach(k->k.setLevelNum(levelNum));
levelNumAdd();
// Integer levelNumd=levelNum.getAndAdd(1);
// bomDetail.forEach(k->k.setLevelNum(levelNumd));
levelNumSet(bomDetail);
}
if (CollUtil.isNotEmpty(bomDetail)) {
@ -125,7 +124,7 @@ public class PBomDetailTask extends RecursiveTask<List<BomNewPbomParentVO>> {
List<BomNewPbomChildEntity> children = SpringUtil.getBean(BomNewPbomChildService.class).lambdaQuery().in(BomNewPbomChildEntity::getParentRowId, childBowIds).list();
List<BomNewPbomParentVO> bom = Convert.toList(BomNewPbomParentVO.class, children);
PBomDetailTask task = new PBomDetailTask(bom,countLevelState);
PBomDetailTask task = new PBomDetailTask(bom, countLevelState,levelNum);
task.fork();
bomDetail.addAll(task.join());
return bomDetail;
@ -135,10 +134,16 @@ public class PBomDetailTask extends RecursiveTask<List<BomNewPbomParentVO>> {
return result;
}
private synchronized void levelNumSet(List<BomNewPbomParentVO> dt) {
Integer levelNumd = levelNum.getAndIncrement();
dt.forEach(k -> k.setLevelNum(levelNumd));
public synchronized void levelNumAdd(){
levelNum++;
}
// public synchronized void levelNumAdd(){
// levelNum.add;
// }
}