diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java index d31271d7..af44951b 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java @@ -105,7 +105,7 @@ public class EbomApi extends BaseApi { public ResultVO generateVirtualPackage(@RequestBody VirtualPackageParamDto paramDto) { VUtils.isTure(CollUtil.isEmpty(paramDto.getVirtualPackageValue())).throwMessage("请选择要生成的虚拟包"); - VUtils.isTure(true).throwMessage("请选择30开头的或200401类型的物料"); + bomNewEbomParentService.generateVirtualPackage(paramDto); return ResultVO.success(true); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/OriginalBomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/OriginalBomApi.java index 603ade4d..33d4854a 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/OriginalBomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/OriginalBomApi.java @@ -124,6 +124,7 @@ public class OriginalBomApi extends BaseApi { */ @PostMapping("convertToEBom") @ApiOperation("原始BOM转Ebom") + @Transactional(rollbackFor = Exception.class) public ResultVO convertToEBom(@RequestBody List bomRowIds) throws ExecutionException, InterruptedException { VUtils.isTure(CollUtil.isEmpty(bomRowIds)).throwMessage("请选择要转换的BOM"); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java index 6370c8c7..05cf77b9 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomNewEbomParentVO.java @@ -276,6 +276,9 @@ public class BomNewEbomParentVO extends BaseMaterialVO implements Serializable { @ApiModelProperty("bom层级数") private BigDecimal levelNumber; + @ApiModelProperty("层级号如:1-1") + private String levelNo; + @ApiModelProperty("来源行-父项物料编码") private String sourceParentMaterialNo; 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 1f4e3eea..4a9a9f6a 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 @@ -282,7 +282,7 @@ public class BomNewEbomParentService extends ServiceImpl> submit = bomDetailPool.submit(detailTask); - List result = submit.get(); + List result = submit.join(); return result; } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentService.java index 55ad11c3..172dace1 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentService.java @@ -332,7 +332,7 @@ public class BomNewOriginalParentService extends ServiceImpl bomNewOriginalParentEntities = this.getBaseMapper().selectBatchIds(bomRowIds); List convertedBom = bomNewOriginalParentEntities.stream().filter(u -> OriginalStatusEnum.OVER_CONVERT.equalsValue(u.getStatus())).collect(Collectors.toList()); - VUtils.isTure(CollUtil.isNotEmpty(convertedBom)).throwMessage("所选BOM中存在已转换的BOM"); + // VUtils.isTure(CollUtil.isNotEmpty(convertedBom)).throwMessage("所选BOM中存在已转换的BOM"); //开始转换 for (BomNewOriginalParentEntity parent : bomNewOriginalParentEntities) { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialService.java index c5c2db09..2d9ece73 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/MaterialService.java @@ -46,7 +46,8 @@ public class MaterialService { */ public String addMaterial(String drawingNo, String materialName, String materialCategoryCode) throws IOException { - List oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery().eq(MaterialMainEntity::getMaterialName, materialName).list(); + List oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery() + .eq(MaterialMainEntity::getMaterialName, materialName).list(); if(CollUtil.isNotEmpty(oldMaterialList)){ return oldMaterialList.get(0).getMaterialNo(); } @@ -78,8 +79,8 @@ public class MaterialService { HttpUtils httpUtils = new HttpUtils(); - String token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySW5mbyI6IntcImRlcGFydE5hbWVcIjpcIuemj-W7uuWNl-aWuei3r-mdouacuuaisOaciemZkOWFrOWPuFwiLFwiZGVwYXJ0Um93SWRcIjoxNTg1MTk1Njk0ODcyNzg0ODk3LFwiZnVsbERlcHROYW1lXCI6XCJPVT3npo_lu7rljZfmlrnot6_pnaLmnLrmorDmnInpmZDlhazlj7gsREM9bmZsZ1wiLFwicXVlcnlEYXRhXCI6MixcInJlYWxOYW1lXCI6XCJhZG1pblwiLFwicm93SWRcIjoxNTQ3NTEyOTc4MDE2OTE5NTUzLFwidXNlckNvZGVcIjpcImFkbWluXCIsXCJ1c2VyTmFtZVwiOlwiYWRtaW5cIn0iLCJleHAiOjE3MDMwMTEyMzIsImp0aSI6IjQ5NTk3MGY0LTU3NTQtNDc1ZS05NmY0LTdkM2Y3ZTBkYmEwNyJ9.b01YDOG8FzXuWkJTrzI33tf9zwrqXZ2--BfvGN12YEA"; - // String token = SessionUtil.getSessionKey(); + // String token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySW5mbyI6IntcImRlcGFydE5hbWVcIjpcIuemj-W7uuWNl-aWuei3r-mdouacuuaisOaciemZkOWFrOWPuFwiLFwiZGVwYXJ0Um93SWRcIjoxNTg1MTk1Njk0ODcyNzg0ODk3LFwiZnVsbERlcHROYW1lXCI6XCJPVT3npo_lu7rljZfmlrnot6_pnaLmnLrmorDmnInpmZDlhazlj7gsREM9bmZsZ1wiLFwicXVlcnlEYXRhXCI6MixcInJlYWxOYW1lXCI6XCJhZG1pblwiLFwicm93SWRcIjoxNTQ3NTEyOTc4MDE2OTE5NTUzLFwidXNlckNvZGVcIjpcImFkbWluXCIsXCJ1c2VyTmFtZVwiOlwiYWRtaW5cIn0iLCJleHAiOjE3MDMwMTEyMzIsImp0aSI6IjQ5NTk3MGY0LTU3NTQtNDc1ZS05NmY0LTdkM2Y3ZTBkYmEwNyJ9.b01YDOG8FzXuWkJTrzI33tf9zwrqXZ2--BfvGN12YEA"; + String token = SessionUtil.getSessionKey(); String s = httpUtils.doPost(NacosConfig.getNacosConfig().getAddMaterialUrl(), JSON.toJSONString(materialMainDTO), token); AddMaterialResultDTO result = JSON.parseObject(s, AddMaterialResultDTO.class); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/UserRoleService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/UserRoleService.java index a4fb9ac2..0599ce49 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/UserRoleService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/UserRoleService.java @@ -48,7 +48,7 @@ public class UserRoleService { * @return */ public Integer getUserJob(){ - return 1; -// return technician()? UserJobEnum.ENGINEER.getValue():UserJobEnum.DESIGNER.getValue(); + // return 1; + return technician()? UserJobEnum.ENGINEER.getValue():UserJobEnum.DESIGNER.getValue(); } } 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 fcc39a73..162deed2 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 @@ -3,14 +3,20 @@ package com.nflg.product.bomnew.service.domain.EBom; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Pair; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.google.common.collect.ImmutableMap; +import com.nflg.product.bomnew.constant.EBomExceptionStatusEnum; +import com.nflg.product.bomnew.constant.EBomStatusEnum; import com.nflg.product.bomnew.constant.VirtualPackageTypeEnum; import com.nflg.product.bomnew.pojo.entity.BomNewPbomChildEntity; import com.nflg.product.bomnew.pojo.entity.BomNewPbomParentEntity; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; +import com.nflg.product.bomnew.service.BomNewPbomChildService; import com.nflg.product.bomnew.service.BomNewPbomParentService; +import com.nflg.product.bomnew.util.VUtils; import com.nflg.product.bomnew.util.VersionUtil; import lombok.Getter; @@ -38,22 +44,20 @@ public class EBomToPBom { private List pBomParentResult = new ArrayList<>(); @Getter - private List pBomChildResult = new ArrayList<>(); + private List pBomChildResult = new ArrayList<>(); private Map generateDrawingNoMap = new HashMap<>(); - public EBomToPBom(BomNewEbomParentVO inParent, List inAllBomDetail ,List inFacCodes) { + public EBomToPBom(BomNewEbomParentVO inParent, List inAllBomDetail, List inFacCodes) { this.parent = inParent; this.allBomDetail = inAllBomDetail; - this.facCodes=inFacCodes; + this.facCodes = inFacCodes; generateDrawingNo(allBomDetail, inParent.getRowId(), ""); } - - /** * 31項体层 */ @@ -66,11 +70,7 @@ public class EBomToPBom { for (String facCode : facCodes) { for (BomNewEbomParentVO vo : parentList) { - Pair parentPair = buildPBomParent(vo, facCode); - //旧版本,无需处理 - if(parentPair.getKey().equals(0)){ - continue; - } + BomNewPbomParentEntity parentEnt = buildPBomParent(vo, facCode); //子级 List child = result.stream().filter(u -> u.getParentRowId().equals(vo.getBomRowId())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(child)) { @@ -78,7 +78,7 @@ public class EBomToPBom { BomNewPbomChildEntity childEnt = new BomNewPbomChildEntity(); BeanUtil.copyProperties(eb, childEnt); childEnt.setRowId(IdWorker.getId()); - childEnt.setParentRowId(parentPair.getValue().getRowId()); + childEnt.setParentRowId(parentEnt.getRowId()); childEnt.setFacCode(facCode); this.pBomChildResult.add(childEnt); } @@ -90,56 +90,53 @@ public class EBomToPBom { /** * 数据效验 */ - private void check(){ - + private void check() { + List collect = allBomDetail.stream().filter(u -> !EBomExceptionStatusEnum.OK.getValue().equals(u.getExceptionStatus())).collect(Collectors.toList()); + VUtils.isTure(CollUtil.isNotEmpty(collect)).throwMessage("存在异常数据,请处理完再转换"); } - - /** * 构建父 + * * @param parentVo - * @return Pair key, 0-旧 1-新 value:pBomParent + * @return Pair key, 0-旧 1-新 value:pBomParent */ - private Pair buildPBomParent(BomNewEbomParentVO parentVo, String facCode){ + private BomNewPbomParentEntity buildPBomParent(BomNewEbomParentVO parentVo, String facCode) { BomNewPbomParentEntity oldParent = SpringUtil.getBean(BomNewPbomParentService.class).lambdaQuery() - .eq(BomNewPbomParentEntity::getMaterialNo,parentVo.getMaterialNo()) - .eq(BomNewPbomParentEntity::getFacCode,facCode).one(); + .eq(BomNewPbomParentEntity::getMaterialNo, parentVo.getMaterialNo()) + .eq(BomNewPbomParentEntity::getFacCode, facCode).one(); - if(Objects.nonNull(oldParent) && oldParent.getCurrentVersion().equals(parentVo.getCurrentVersion()) ){ - //删除原Pbom子级 - // SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id",oldParent.getRowId())); - return new Pair<>(0,oldParent); - } - else { - BomNewPbomParentEntity pBomParent=new BomNewPbomParentEntity(); - BeanUtil.copyProperties(pBomParent,parentVo); + if (Objects.nonNull(oldParent) && !EBomStatusEnum.PUBLISHED.equalsValue(oldParent.getStatus())) { + SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id", oldParent.getRowId())); + oldParent.setCurrentVersion(parentVo.getCurrentVersion()); + this.pBomParentResult.add(oldParent); + return oldParent; + } else { + BomNewPbomParentEntity pBomParent = new BomNewPbomParentEntity(); + BeanUtil.copyProperties(pBomParent, parentVo); pBomParent.setRowId(IdWorker.getId()); pBomParent.setLastVersionIs(1); - pBomParent.setCurrentVersion(VersionUtil.getNextVersion(Objects.nonNull(oldParent)? oldParent.getCurrentVersion():"")); pBomParent.setFacCode(facCode); - if(Objects.nonNull(oldParent)) { - oldParent.setLastVersionIs(0); - this.pBomParentResult.add(oldParent); - } this.pBomParentResult.add(pBomParent); - - return new Pair<>(1, pBomParent); + return pBomParent; } + } /** * 31提层 + * * @param * @param */ - private void liftingLayer(){ + private void liftingLayer() { for (BomNewEbomParentVO vo : allBomDetail) { if (vo.getProjectType().equals(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey())) { BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackage(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); if (Objects.nonNull(lastVirtualPackage)) { + liftingLayerSummary(lastVirtualPackage, vo); vo.setSourceRowId(vo.getParentRowId()); vo.setSourceParentMaterialNo(getParentMaterialNo(vo.getBomRowId())); vo.setParentRowId(lastVirtualPackage.getBomRowId()); @@ -150,6 +147,7 @@ public class EBomToPBom { if (vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) { BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackage(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); if (Objects.nonNull(lastVirtualPackage)) { + liftingLayerSummary(lastVirtualPackage, vo); vo.setSourceRowId(vo.getParentRowId()); vo.setSourceParentMaterialNo(getParentMaterialNo(vo.getBomRowId())); vo.setParentRowId(lastVirtualPackage.getBomRowId()); @@ -161,9 +159,27 @@ public class EBomToPBom { } } - private String getParentMaterialNo(Long parentRowId){ + /** + * 提层汇总数量 + * + * @param lastVirtualPackage 虚拟包 + * @param vo 提层项 + */ + private void liftingLayerSummary(BomNewEbomParentVO lastVirtualPackage, BomNewEbomParentVO vo) { + BigDecimal sum = vo.getNum(); + String parentLevelNo = vo.getLevelNo().substring(0, vo.getLevelNo().length() - 2); + while (parentLevelNo.length() >= lastVirtualPackage.getLevelNo().length()) { + List parentList = allBomDetail.stream().filter(u -> u.getLevelNo().equals(parentLevelNo)).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(parentList)) { + sum = NumberUtil.mul(sum, parentList.get(0).getNum()); + } + } + vo.setNum(sum); + } + + private String getParentMaterialNo(Long parentRowId) { List collect = allBomDetail.stream().filter(u -> u.getBomRowId().equals(parentRowId)).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(collect)){ + if (CollUtil.isNotEmpty(collect)) { return collect.get(0).getMaterialNo(); } return ""; @@ -178,10 +194,10 @@ public class EBomToPBom { } - private BomNewEbomParentVO getVirtualPackageByName( VirtualPackageTypeEnum virtualPackageTypeEnum) { + private BomNewEbomParentVO getVirtualPackageByName(VirtualPackageTypeEnum virtualPackageTypeEnum) { List list = allBomDetail.stream().filter(u -> u.getMaterialName().contains(virtualPackageTypeEnum.getConMaterialName())).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(list)){ - return list.get(0); + if (CollUtil.isNotEmpty(list)) { + return list.get(0); } return null; @@ -196,27 +212,24 @@ public class EBomToPBom { * @param parentDrawingNo */ private void generateDrawingNo(List saveBomDetailParamDTO, Long bomRowID, String parentDrawingNo) { - List firstLevelBoms = saveBomDetailParamDTO.stream().filter(u -> u.getBomRowId().equals(bomRowID)).collect(Collectors.toList()); + List firstLevelBoms = saveBomDetailParamDTO.stream().filter(u -> u.getParentRowId().equals(bomRowID)).collect(Collectors.toList()); parentDrawingNo = StrUtil.isNotBlank(parentDrawingNo) ? parentDrawingNo : ""; Integer gNo = 1; - String preAssemblyPackageLevelNo =StrUtil.isNotBlank(parentDrawingNo) ? StrUtil.join("-", parentDrawingNo, "1") : "1"; + String preAssemblyPackageLevelNo = StrUtil.isNotBlank(parentDrawingNo) ? StrUtil.join("-", parentDrawingNo, "1") : "1"; for (BomNewEbomParentVO firstLevelBom : firstLevelBoms) { - String key = StrUtil.join("-", bomRowID.toString(), firstLevelBom.getMaterialNo()); - if (generateDrawingNoMap.containsKey(key)) { - firstLevelBom.setLevelNumber(levelToNum(generateDrawingNoMap.get(key))); + + if (firstLevelBom.getMaterialName().contains(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getConMaterialName()) || firstLevelBom.getMaterialName().contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getConMaterialName())) { + firstLevelBom.setLevelNumber(levelToNum(preAssemblyPackageLevelNo)); + firstLevelBom.setLevelNo(preAssemblyPackageLevelNo); continue; } - if(firstLevelBom.getMaterialName().contains(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getConMaterialName()) || firstLevelBom.getMaterialName().contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getConMaterialName())){ - firstLevelBom.setLevelNumber(levelToNum(preAssemblyPackageLevelNo)); - } String levelKey = StrUtil.isNotBlank(parentDrawingNo) ? StrUtil.join("-", parentDrawingNo, gNo.toString()) : gNo.toString(); firstLevelBom.setLevelNumber(levelToNum(levelKey)); + firstLevelBom.setLevelNo(levelKey); gNo++; - generateDrawingNo(saveBomDetailParamDTO, firstLevelBom.getChildBomRowId(), firstLevelBom.getDrawingNo()); - - generateDrawingNoMap.put(key, firstLevelBom.getDrawingNo()); + generateDrawingNo(saveBomDetailParamDTO, firstLevelBom.getChildBomRowId(), firstLevelBom.getLevelNo()); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EbomInitProjectType.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EbomInitProjectType.java index 151a7b29..1413b2fc 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EbomInitProjectType.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/EbomInitProjectType.java @@ -105,7 +105,7 @@ public class EbomInitProjectType { //10 BomNewEbomParentVO parent = getParent(child.getParentRowId()); - if (Objects.nonNull(parent) && parent.getProjectType().equals("Q")) { + if (Objects.nonNull(parent) && Objects.nonNull(parent.getProjectType()) && parent.getProjectType().equals("Q")) { List subChild = getChilds(child.getBomRowId()); List collect = subChild.stream().filter(u -> u.getMaterialCategoryCode().startsWith("1004")).collect(Collectors.toList()); collect.forEach(u -> u.setProjectType("L")); @@ -155,7 +155,7 @@ public class EbomInitProjectType { resultNo1004 = resultNo1004 & projectTypeEquals(sResult1004, Sets.newHashSet("F", "Q")); } - sResultProjectL = sameLevelChild1004.stream().filter(u -> u.getProjectType().equals("L")).collect(Collectors.toList()); + sResultProjectL = sameLevelChild1004.stream().filter(u -> Objects.nonNull(u.getProjectType()) && u.getProjectType().equals("L")).collect(Collectors.toList()); int lResult = 1; for (BomNewEbomParentVO v : sResultProjectL) { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java index 0cd7ee86..9e2e0489 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageBase.java @@ -12,16 +12,20 @@ import com.nflg.product.bomnew.constant.ProjectTypeInputTypeEnum; import com.nflg.product.bomnew.constant.VirtualPackageTypeEnum; import com.nflg.product.bomnew.pojo.entity.BomNewEbomChildEntity; import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; +import com.nflg.product.bomnew.pojo.entity.MaterialMainEntity; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; import com.nflg.product.bomnew.service.BomNewEbomChildService; import com.nflg.product.bomnew.service.BomNewEbomParentService; +import com.nflg.product.bomnew.service.MaterialMainService; import com.nflg.product.bomnew.service.MaterialService; import com.nflg.product.bomnew.util.VersionUtil; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; +import org.apache.catalina.authenticator.jaspic.CallbackHandlerImpl; import sun.security.krb5.internal.PAData; import java.io.IOException; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -51,7 +55,12 @@ public abstract class VirtualPackageBase { String vDrawingNo = String.join("",drawingNo,"(",virtualPackageType.getConMaterialName(),")" ); String vMaterialName = StrUtil.join("",materialName,"(",virtualPackageType.getConMaterialName(),")"); String vMaterialDesc = StrUtil.join("", drawingNo ," ", materialName,"(",virtualPackageType.getConMaterialName(),")"); - BomNewEbomParentEntity oldParent= SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getDrawingNo, vDrawingNo).eq(BomNewEbomParentEntity::getLastVersionIs,1).one(); + BomNewEbomParentEntity oldParent=null; + List oldMaterialList = SpringUtil.getBean(MaterialMainService.class).lambdaQuery().eq(MaterialMainEntity::getMaterialName, vMaterialName) + .eq(MaterialMainEntity::getMaterialDesc, vMaterialDesc).list(); + if(CollUtil.isNotEmpty(oldMaterialList)){ + oldParent= SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getMaterialNo, oldMaterialList.get(0).getMaterialNo()).eq(BomNewEbomParentEntity::getLastVersionIs,1).one(); + } if(Objects.nonNull(oldParent)){ oldParent.setLastVersionIs(0); this.parentResult.add(oldParent); @@ -72,6 +81,7 @@ public abstract class VirtualPackageBase { parent.setBomExist(1); parent.setSourceRowId(0L); parent.setLastVersionIs(1); + parent.setNum(new BigDecimal(1)); parent.setDeviseName(SessionUtil.getUserCode()); parent.setDeviseName(SessionUtil.getRealName()); parent.setCreatedBy(SessionUtil.getUserCode()); @@ -93,6 +103,7 @@ public abstract class VirtualPackageBase { childEntity.setParentRowId(parentRowId); childEntity.setIdentityNo(parent.getRowId().toString()); childEntity.setOrderNumber(orderNo); + childEntity.setNum(new BigDecimal(1)); childEntity.setEditStatus(EbomEditStatusEnum.HANDLER_CREATED.getValue()); childEntity.setSource(EBomSourceEnum.FROM_MDM.getValue()); this.childResult.add(childEntity); @@ -109,7 +120,7 @@ public abstract class VirtualPackageBase { protected BomNewEbomParentEntity getParentZhiZuo(){ List list = SpringUtil.getBean(BomNewEbomChildService.class).lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, bomRowId).list(); - List zhiZuo = list.stream().filter(u -> u.getMaterialName().contains("制作")).collect(Collectors.toList()); + List zhiZuo = list.stream().filter(u -> u.getMaterialName().contains(VirtualPackageTypeEnum.MAKING_PACKAGE.getConMaterialName())).collect(Collectors.toList()); if(CollUtil.isNotEmpty(zhiZuo)){ String materialNo=zhiZuo.get(0).getMaterialNo(); return SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery().eq(BomNewEbomParentEntity::getMaterialNo,materialNo) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor21.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor21.java index ad43451e..5ac77bf5 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor21.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/EBom/VirtualPackageFor21.java @@ -53,8 +53,8 @@ public class VirtualPackageFor21 extends VirtualPackageBase { makingPackage=getParentZhiZuo(); } BomNewEbomParentEntity preAssemblyPackage = buildParentVirtualPackage(parent.getDrawingNo(), parent.getMaterialName(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); - buildChild(preAssemblyPackage, makingPackage.getRowId(), "001", VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); + } List child = getChild(); //将产品子级放制作包下 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 69c682fe..98f79693 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 @@ -10,6 +10,7 @@ import com.nflg.product.bomnew.util.VUtils; import nflg.product.common.constant.STATE; import java.util.List; +import java.util.Objects; /** * 31物料生成虚拟包 @@ -35,28 +36,43 @@ public class VirtualPackageFor31 extends VirtualPackageBase { List child = getChild(); BomNewEbomParentEntity parent = getParentByRowId(bomRowId); - VUtils.isTure(parent.getVirtrualPackageEnum()>0).throwMessage("已生成虚拟包无需重复生成"); + try { + for (BomNewEbomParentVO item : child) { - //构建发货包 - BomNewEbomParentEntity deliveryPackage = buildParentVirtualPackage(item.getDrawingNo(), item.getMaterialName(), VirtualPackageTypeEnum.DELIVERY_PACKAGE); - //构建构建发货包下制作包 - BomNewEbomParentEntity makingPackage = buildParentVirtualPackage(item.getDrawingNo(), item.getMaterialName(), VirtualPackageTypeEnum.MAKING_PACKAGE); - //构建构建发货包下直发 - BomNewEbomParentEntity directDeliveryPackage = buildParentVirtualPackage(item.getDrawingNo(), item.getMaterialName(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); + BomNewEbomParentEntity makingPackage=null; + if((VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue()&parent.getVirtrualPackageEnum())!=VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue()) { + //构建发货包 + BomNewEbomParentEntity deliveryPackage = buildParentVirtualPackage(item.getDrawingNo(), item.getMaterialName(), VirtualPackageTypeEnum.DELIVERY_PACKAGE); + //构建构建发货包下制作包 + makingPackage = buildParentVirtualPackage(item.getDrawingNo(), item.getMaterialName(), VirtualPackageTypeEnum.MAKING_PACKAGE); + //构建构建发货包下直发 + BomNewEbomParentEntity directDeliveryPackage = buildParentVirtualPackage(item.getDrawingNo(), item.getMaterialName(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); - //构建-产品下发货包-子级 - buildChild(deliveryPackage, bomRowId,"001",VirtualPackageTypeEnum.DELIVERY_PACKAGE); + //构建-产品下发货包-子级 + buildChild(deliveryPackage, bomRowId, "001", VirtualPackageTypeEnum.DELIVERY_PACKAGE); - //构建发货包-子级 - buildChild(makingPackage,deliveryPackage.getRowId(),"001",VirtualPackageTypeEnum.MAKING_PACKAGE); - buildChild(directDeliveryPackage,deliveryPackage.getRowId(),"002",VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); + //构建发货包-子级 + 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()); - this.childResult.add(itemUp); + + BomNewEbomChildEntity itemUp = new BomNewEbomChildEntity(); + itemUp.setRowId(item.getRowId()); + itemUp.setParentRowId(makingPackage.getRowId()); + this.childResult.add(itemUp); + } + // 包含发货前装配包 + if (virtualPackageValue.contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) && (VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue() & parent.getVirtrualPackageEnum()) != VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) { + BomNewEbomParentEntity preAssemblyPackage = buildParentVirtualPackage(item.getDrawingNo(), item.getMaterialName(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); + //构建构建发货前装配包 + if(Objects.isNull(makingPackage)){ + makingPackage=getParentZhiZuo(); + } + buildChild(preAssemblyPackage, makingPackage.getRowId(), "001", VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); + } + } parent.setVirtrualPackageEnum(VirtualPackageTypeEnum.getAll()); 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 beff7221..b06d6191 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 @@ -69,6 +69,8 @@ public class OriginalBomToEBomConvert extends BaseConvert { SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(ImmutableList.of(parent)); SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(bomDetail); + + SpringUtil.getBean(MaterialMainService.class).initShouldBomExist(bomDetail,BomOriginalListVO::getMaterialCategoryCode, BomOriginalListVO::setShouldBomExist,BomOriginalListVO::getMaterialGetType); //处理父级 hanlerDo(parent); 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 7f859b3f..096c374c 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 @@ -119,7 +119,7 @@ @@ -133,7 +133,7 @@