diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewPbomParentMapper.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewPbomParentMapper.java index 9f44e4c8..ed6c917c 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewPbomParentMapper.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewPbomParentMapper.java @@ -9,7 +9,10 @@ import com.nflg.product.bomnew.pojo.vo.BomNewPbomParentVO; import com.nflg.product.bomnew.pojo.vo.BomNewPbomWorkExcelVO; import org.apache.ibatis.annotations.Param; +import java.util.Collection; +import java.util.Collections; import java.util.List; +import java.util.Set; /** * t_bom_new_pbom_parent 表数据库访问层 @@ -53,4 +56,8 @@ public interface BomNewPbomParentMapper extends BaseMapper exportExcel(List bomRowIds); void resetBomExist(Long rowId); + + void updateWaitPublicRootState(@Param("materialNoList") Collection materialNoList); + + } 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 cd5e81ef..94dde9c3 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 @@ -23,10 +23,7 @@ import com.nflg.product.base.core.exception.NflgBusinessException; import com.nflg.product.bomnew.constant.*; import com.nflg.product.bomnew.mapper.master.BomNewEbomParentMapper; import com.nflg.product.bomnew.pojo.dto.*; -import com.nflg.product.bomnew.pojo.entity.BomNewEbomChildEntity; -import com.nflg.product.bomnew.pojo.entity.BomNewEbomMaterialUseEntity; -import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; -import com.nflg.product.bomnew.pojo.entity.MaterialMainEntity; +import com.nflg.product.bomnew.pojo.entity.*; import com.nflg.product.bomnew.pojo.query.BomNewEbomMaterialQuery; import com.nflg.product.bomnew.pojo.query.BomNewEbomParentQuery; import com.nflg.product.bomnew.pojo.vo.*; @@ -47,6 +44,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.math.BigDecimal; +import java.sql.Struct; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.ExecutionException; @@ -836,6 +834,16 @@ public class BomNewEbomParentService extends ServiceImpl u.getMaterialNo().startsWith("31") && u.getVirtrualPackageEnum() <= 0)) .throwMessage("31码须有虚拟包"); + //检查该版本是否已转换过该工厂的Pbom + for (BomNewEbomParentEntity parent : parents){ + List list = pBomParentService.lambdaQuery().eq(BomNewPbomParentEntity::getMaterialNo, parent.getMaterialNo()).eq(BomNewPbomParentEntity::getCurrentVersion, parent.getCurrentVersion()) + .select(BomNewPbomParentEntity::getFacCode).list(); + if(CollUtil.isNotEmpty(list)){ + Set dbExistsFac = list.stream().map(u -> u.getFacCode()).collect(Collectors.toSet()); + Set checkResultFac = Sets.intersection(dbExistsFac, new HashSet<>(paramDto.getFacCodes())); + VUtils.isTure(CollUtil.isNotEmpty(checkResultFac)).throwMessage("物料:"+parent.getMaterialNo()+"已经转换过"+ StrUtil.join(",", checkResultFac)+"工厂"); + } + } for (Long bomRowId : paramDto.getBomRowIds()) { BomNewEbomParentVO parent = Convert.convert(BomNewEbomParentVO.class, this.getById(bomRowId)); @@ -857,6 +865,11 @@ public class BomNewEbomParentService extends ServiceImpl materialNos = bomTree.stream().map(u -> u.getMaterialNo()).collect(Collectors.toSet()); + if(CollUtil.isNotEmpty(materialNos)){ + pBomParentService.getBaseMapper().updateWaitPublicRootState(materialNos); + } //标记跟节点 upRootMark(parent); if (CollUtil.isNotEmpty(eBomToPBom.getVirtualPackageCompositionResult())) { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomDetailTask.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomDetailTask.java index ad82a013..eb7e7b0b 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomDetailTask.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomDetailTask.java @@ -67,6 +67,7 @@ public class EBomDetailTask extends RecursiveTask> { detailVO.setDeviseName(ebomParentEntity.getDeviseName()); detailVO.setBomExist(ebomParentEntity.getBomExist()); detailVO.setStatus(ebomParentEntity.getStatus()); + detailVO.setBatchNo(ebomParentEntity.getBatchNo()); } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java index af7c633b..9af8e09b 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EBomToPBom.java @@ -86,7 +86,7 @@ public class EBomToPBom { //buildPBomParent(parent, facCode); for (BomNewEbomParentVO vo : parentList) { String hasConvertKey=StrUtil.join("-",facCode,vo.getBomRowId()); - if(hasConvert.contains(hasConvertKey)){ + if(hasConvert.contains(hasConvertKey) || PBomStatusEnum.PUBLISH.equalsValue(vo.getStatus()) ){ continue; } hasConvert.add(hasConvertKey); @@ -164,6 +164,7 @@ public class EBomToPBom { } else { BomNewPbomParentEntity pBomParent = new BomNewPbomParentEntity(); BeanUtil.copyProperties(parentVo, pBomParent); + pBomParent.setSourceRowId(parentVo.getBomRowId()); pBomParent.setRowId(IdWorker.getId()); pBomParent.setStatus(PBomStatusEnum.WAIT_PUBLISH.getValue()); pBomParent.setLastVersionIs(1); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomUpgrade.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomUpgrade.java index 207a7002..21b6646f 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomUpgrade.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/PBomUpgrade.java @@ -74,6 +74,12 @@ public class PBomUpgrade { } private void buildParent(BomNewPbomParentVO parentVO, boolean rootIs) { + //判断有无未发布版本-有则直接跳过 + List waitPublishBomList = SpringUtil.getBean(BomNewPbomParentService.class).lambdaQuery().eq(BomNewPbomParentEntity::getMaterialNo, parentVO.getMaterialNo()) + .eq(BomNewPbomParentEntity::getStatus, PBomStatusEnum.WAIT_PUBLISH.getValue()).list(); + if(CollUtil.isNotEmpty(waitPublishBomList)){ + return; + } BomNewPbomParentEntity pbomParent = new BomNewPbomParentEntity(); BeanUtil.copyProperties(parentVO, pbomParent); pbomParent.setRowId(IdWorker.getId()); 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 c947858f..c24b46e7 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 @@ -309,13 +309,13 @@ diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewPbomParentMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewPbomParentMapper.xml index 0aa28317..8b82b6bb 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewPbomParentMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewPbomParentMapper.xml @@ -78,7 +78,7 @@ select * , row_id as bomRowId - from t_bom_new_pbom_parent where status >= 4 and last_version_is=1 + from t_bom_new_pbom_parent a join + (select material_no, max(current_version) current_version from t_bom_new_pbom_parent where status >= 4 + + and material_no = #{query.materialNo} + + + and drawing_no = #{query.drawingNo} + + group by material_no + ) b + on a.material_no=b.material_no and a.current_version=b.current_version + where status >= 4 and root_is=1 @@ -231,4 +242,23 @@ SET p.bom_exist = (IF(EXISTS (SELECT 1 FROM t_bom_new_pbom_child WHERE parent_row_id = p.row_id), 1, 0)) WHERE p.row_id = #{rowId}; + + + + #{item} + + + + + update t_bom_new_pbom_parent a left join ( + select b.material_no , a.fac_code from t_bom_new_pbom_parent a join t_bom_new_pbom_child b on a.row_id=b.parent_row_id and a.`status` < 4 and a.last_version_is=1 + and b.material_no in + ) b on a.material_no=b.material_no and a.fac_code =b.fac_code + set a.root_state=1 + where a.`status` < 4 and last_version_is=1 and b.material_no is null + and a.material_no in + + + +