diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java index 20b50c68..b7ef28eb 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java @@ -40,6 +40,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; @@ -425,8 +426,8 @@ public class BomNewPbomParentService extends ServiceImpl getAllBom(Long rowId, Integer countLevelNum) throws ExecutionException, InterruptedException { List bomDetail = this.getBaseMapper().getParentChild(rowId); - - PBomDetailTask detailTask = new PBomDetailTask(bomDetail,countLevelNum); + AtomicInteger levelNum = new AtomicInteger(1); + PBomDetailTask detailTask = new PBomDetailTask(bomDetail,countLevelNum,levelNum); ForkJoinTask> submit = bomDetailPool.submit(detailTask); List result = submit.join(); @@ -561,7 +562,7 @@ public class BomNewPbomParentService extends ServiceImpl 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)){ diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor31.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor31.java index 98f79693..271149db 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor31.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor31.java @@ -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; } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java index 4831ad2d..5b2e6a6a 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomToEBomConvert.java @@ -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); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomDetailTask.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomDetailTask.java index 97e02dc3..9aca0073 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomDetailTask.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomDetailTask.java @@ -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,17 +35,16 @@ public class PBomDetailTask extends RecursiveTask> { List result = new ArrayList<>(); - public static Integer levelNum=1; + public AtomicInteger levelNum = new AtomicInteger(1); //是否统计层级数 private Integer countLevelState; - - - public PBomDetailTask(List inBomDetail ,Integer inCountLevelState) { + public PBomDetailTask(List inBomDetail, Integer inCountLevelState, AtomicInteger inLevelNum) { bomDetail = inBomDetail; - countLevelState=inCountLevelState; + levelNum=inLevelNum; + countLevelState = inCountLevelState; } @@ -53,7 +53,7 @@ public class PBomDetailTask extends RecursiveTask> { * 处理BOM明细中未选择Bom版本的明细;使用最新版 */ public void handlerChildBomVersionDetail() { - List materialNos = bomDetail.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo()) ).map(BomNewPbomParentVO::getMaterialNo).collect(Collectors.toList()); + List materialNos = bomDetail.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(BomNewPbomParentVO::getMaterialNo).collect(Collectors.toList()); if (CollUtil.isNotEmpty(materialNos)) { @@ -82,15 +82,14 @@ public class PBomDetailTask extends RecursiveTask> { detailVO.setBomExist(ebomParentEntity.getBomExist()); detailVO.setShouldBomExist(ebomParentEntity.getShouldBomExist()); detailVO.setVirtualPackageIs(ebomParentEntity.getVirtualPackageIs()); - } - else { - BomNewPbomParentEntity parent= SpringUtil.getBean(BomNewPbomParentService.class).lambdaQuery().eq(BomNewPbomParentEntity::getRowId, detailVO.getParentRowId()).one(); + } else { + BomNewPbomParentEntity parent = SpringUtil.getBean(BomNewPbomParentService.class).lambdaQuery().eq(BomNewPbomParentEntity::getRowId, detailVO.getParentRowId()).one(); detailVO.setDeviseUserCode(parent.getDeviseUserCode()); detailVO.setDeviseName(parent.getDeviseName()); detailVO.setDeptName(parent.getDeptName()); detailVO.setStatus(parent.getStatus()); detailVO.setEditStatus(parent.getEditStatus()); - detailVO.setVirtualPackageIs(parent.getVirtualPackageIs()) ; + detailVO.setVirtualPackageIs(parent.getVirtualPackageIs()); } } @@ -113,19 +112,19 @@ public class PBomDetailTask extends RecursiveTask> { result.addAll(bomDetail); //标记层级 - if(countLevelState.equals(1)){ - - bomDetail.forEach(k->k.setLevelNum(levelNum)); - levelNumAdd(); + if (countLevelState.equals(1)) { +// Integer levelNumd=levelNum.getAndAdd(1); +// bomDetail.forEach(k->k.setLevelNum(levelNumd)); + levelNumSet(bomDetail); } if (CollUtil.isNotEmpty(bomDetail)) { - List childBowIds = bomDetail.stream().filter(u-> u.getBomRowId() > 0).map(u->u.getBomRowId()).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(childBowIds)) { + List childBowIds = bomDetail.stream().filter(u -> u.getBomRowId() > 0).map(u -> u.getBomRowId()).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(childBowIds)) { List children = SpringUtil.getBean(BomNewPbomChildService.class).lambdaQuery().in(BomNewPbomChildEntity::getParentRowId, childBowIds).list(); - List bom = Convert.toList(BomNewPbomParentVO.class,children); + List 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> { return result; } + private synchronized void levelNumSet(List dt) { + Integer levelNumd = levelNum.getAndIncrement(); + dt.forEach(k -> k.setLevelNum(levelNumd)); - public synchronized void levelNumAdd(){ - levelNum++; } +// public synchronized void levelNumAdd(){ +// levelNum.add; +// } + + }