diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomParentMapper.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomParentMapper.java index 5e7b030d..395736e3 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomParentMapper.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomParentMapper.java @@ -79,6 +79,9 @@ public interface BomNewEbomParentMapper extends BaseMapper getEBomParentByMaterialNos(@Param("job") Integer job, @Param("createdBy")String createdBy, @Param("materialNos") List materialNos); + Page workDetailsListByPageNew(Page objectPage, BomNewEbomParentQuery query, Integer userJob, String userCode); List getChildren(Long bomRowId, int type); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java index 91b705df..ec9b68d0 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java @@ -533,7 +533,9 @@ public class BomNewEbomParentService extends ServiceImpl getBomTree(Long rowId, Boolean generateLevelNumberFlag) throws ExecutionException, InterruptedException { List bomDetail = this.getBaseMapper().getParentChild(rowId); - EBomDetailTask detailTask = new EBomDetailTask(bomDetail); +// EBomDetailTask detailTask = new EBomDetailTask(bomDetail); + + EBomCheckErrorDetailTask detailTask = new EBomCheckErrorDetailTask(bomDetail, SessionUtil.getUserCode(), SpringUtil.getBean(UserRoleService.class).getUserJob()); ForkJoinTask> submit = bomDetailPool.submit(detailTask); List result = submit.join(); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java index 7177bf50..bb50a311 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/CheckEBomException.java @@ -7,7 +7,6 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import com.google.common.collect.ImmutableList; import com.google.common.collect.Sets; -import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.base.core.exception.NflgBusinessException; import com.nflg.product.bomnew.constant.*; import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; @@ -61,7 +60,7 @@ public class CheckEBomException { allBomDetail = SpringUtil.getBean(BomNewEbomParentService.class).getBomTree(bomRowId, true); //只检查待复核和自己的 - allBomDetail = allBomDetail.stream().filter(u -> Objects.equals(SessionUtil.getUserCode(), u.getCreatedBy()) && Objects.equals(1, u.getStatus())).collect(Collectors.toList()); + //allBomDetail=allBomDetail.stream().filter(u-> SessionUtil.getUserCode().equals(u.getCreatedBy()) && u.getStatus().equals(1) ).collect(Collectors.toList()); BomNewEbomParentEntity parent = SpringUtil.getBean(BomNewEbomParentService.class).getById(bomRowId); if (Objects.isNull(parent)){ return; diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomCheckErrorDetailTask.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomCheckErrorDetailTask.java new file mode 100644 index 00000000..4edf324b --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomCheckErrorDetailTask.java @@ -0,0 +1,114 @@ +package com.nflg.product.bomnew.service.domain.EBom; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.spring.SpringUtil; +import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; +import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; +import com.nflg.product.bomnew.service.BomNewEbomParentService; +import com.nflg.product.bomnew.util.ListCommonUtil; +import lombok.Getter; +import lombok.Setter; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.RecursiveTask; +import java.util.stream.Collectors; + +/** + * @author 大米(异常检查专用) + * @descreption + * @date 2023/7/8 9:18 + */ +public class EBomCheckErrorDetailTask extends RecursiveTask> { + + private List bomDetail; + + + + @Getter + @Setter + public static int levelNum=1; + + List result = new ArrayList<>(); + + private String jobCode; + + private Integer userJob; + + + public EBomCheckErrorDetailTask(List inBomDetail, String inJobCode, Integer inUserJob) { + bomDetail = inBomDetail; + jobCode=inJobCode; + userJob = inUserJob; + } + + /** + * 处理BOM明细中未选择Bom版本的明细;使用最新版 + */ + public void handlerChildBomVersionDetail() { + List materialNos = bomDetail.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo()) ).map(BomNewEbomParentVO::getMaterialNo).collect(Collectors.toList()); + + if (CollUtil.isNotEmpty(materialNos)) { + + // List childBomlist = SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().in(BomNewEbomParentEntity::getMaterialNo, materialNos).eq(BomNewEbomParentEntity::getLastVersionIs, 1).list(); + //Integer userJob = SpringUtil.getBean(UserRoleService.class).getUserJob(); + List childBomlist=SpringUtil.getBean(BomNewEbomParentService.class).getBaseMapper().getEBomParentByMaterialNos(userJob, jobCode,materialNos); + Map stringBomNewOriginalParentEntityMap = ListCommonUtil.listToMap(childBomlist, BomNewEbomParentEntity::getMaterialNo); + for (BomNewEbomParentVO detailVO : bomDetail) { + if (stringBomNewOriginalParentEntityMap.containsKey(detailVO.getMaterialNo())) { + BomNewEbomParentEntity ebomParentEntity = stringBomNewOriginalParentEntityMap.get(detailVO.getMaterialNo()); + detailVO.setChildBomRowId(ebomParentEntity.getRowId()); + detailVO.setBomRowId(ebomParentEntity.getRowId()); + detailVO.setSourceRowId(ebomParentEntity.getSourceRowId()); + detailVO.setCurrentVersion(ebomParentEntity.getCurrentVersion()); + detailVO.setDeviseUserCode(ebomParentEntity.getDeviseUserCode()); + detailVO.setDeptName(ebomParentEntity.getDeptName()); + detailVO.setDeviseName(ebomParentEntity.getDeviseName()); + detailVO.setBomExist(ebomParentEntity.getBomExist()); + detailVO.setStatus(ebomParentEntity.getStatus()); + } + } + + + } + + + } + + /** + * 递归调用零部件BOM + * + * @return + */ + @Override + protected List compute() { + + handlerChildBomVersionDetail(); + // 最新 BOM 版本 + + result.addAll(bomDetail); + + if (CollUtil.isNotEmpty(bomDetail)) { + levelNumAdd(); + List childBowIds = bomDetail.stream().filter(u-> u.getChildBomRowId()!=null && u.getChildBomRowId() > 0).map(u->u.getChildBomRowId()).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(childBowIds)) { + List bom = SpringUtil.getBean(BomNewEbomParentService.class).getBaseMapper().getParentChildBatch(childBowIds); + + EBomCheckErrorDetailTask task = new EBomCheckErrorDetailTask(bom, jobCode, userJob); + task.fork(); + bomDetail.addAll(task.join()); + return bomDetail; + } + + } + return result; + + + } + + public synchronized void levelNumAdd(){ + levelNum++; + } +} diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java index 4d475faa..4c8bea6d 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomEdit.java @@ -42,6 +42,8 @@ public class EBomEdit { private BomNewEbomParentEntity parentEntity; @Getter private boolean isRootForWaitReview=false; + @Getter + private boolean isNewBom=false; public List childEntities; @@ -91,6 +93,7 @@ public class EBomEdit { isRootForWaitReview=true; } + isNewBom=true; parent.setCreatedTime(LocalDateTime.now()); parent.setModifyTime(LocalDateTime.now()); @@ -335,6 +338,11 @@ public class EBomEdit { public void nextVersion(){ + + if(!isNewBom){ + return; + } + //缺bom,新建的bom 版本增加 //同一物料且存在一个 lastVersionIs=1 if(ObjectUtil.isNotNull(getParentEntity().getLastVersionIs()) && ObjectUtil.equal(getParentEntity().getLastVersionIs(),1)) { diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml index 1b6b6f68..042cb0f8 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml @@ -362,6 +362,22 @@ WHERE p.status < 4; + +