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 071dcd8d..4d243fac 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 @@ -176,6 +176,8 @@ public class OriginalBomApi extends BaseApi { ebomParentService.getBaseMapper().updateRootState(); ebomParentService.getBaseMapper().updateRootForWaitReview(); + ebomParentService.resetAllBomExist(); + return ResultVO.success(result); } 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 b176b22d..7042abf3 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 @@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; import com.nflg.product.bomnew.pojo.query.BomNewEbomParentQuery; -import com.nflg.product.bomnew.pojo.query.OriginalBomQuery; -import com.nflg.product.bomnew.pojo.vo.*; +import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; +import com.nflg.product.bomnew.pojo.vo.BomNewEbomUpgradeChangeVO; +import com.nflg.product.bomnew.pojo.vo.MaterialHistoryProjectTypeVO; +import com.nflg.product.bomnew.pojo.vo.ReverseReportVO; import org.apache.ibatis.annotations.Param; import java.util.Collection; @@ -71,5 +73,9 @@ public interface BomNewEbomParentMapper extends BaseMapper getMaterialParent(@Param("materialNos") Collection materialNos ,@Param("createdBy") String createdBy); + + void resetAllBomExist(); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewOriginalParentMapper.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewOriginalParentMapper.java index 29526f23..ec3666ea 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewOriginalParentMapper.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewOriginalParentMapper.java @@ -71,5 +71,5 @@ public interface BomNewOriginalParentMapper extends BaseMapper getMaterialParent(@Param("drawingNos") Collection drawingNos); - + void resetBomExist(Long rowId); } 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 dbf42682..9f44e4c8 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 @@ -51,4 +51,6 @@ public interface BomNewPbomParentMapper extends BaseMapper exportExcel(List bomRowIds); + + void resetBomExist(Long rowId); } 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 0e1a030e..1260cb62 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 @@ -351,14 +351,19 @@ public class BomNewEbomParentService extends ServiceImpl parents = this.getBaseMapper().selectBatchIds(paramDto.getBomRowIds()); - List noVirPackage = parents.stream().filter(u -> u.getMaterialNo().startsWith("31") && u.getVirtrualPackageEnum() <= 0).map(BomNewEbomParentEntity::getMaterialNo).collect(Collectors.toList()); - VUtils.isTure(CollUtil.isNotEmpty(noVirPackage)).throwMessage("31码须有虚拟包"); - for (Long bomRowId : paramDto.getBomRowIds()) { + VUtils.isTure(paramDto.getFacCodes().contains("1020") && parents.stream().anyMatch(u -> u.getMaterialNo().startsWith("31"))) + .throwMessage("31码不能生成仙桃(1020)的pbom"); + + VUtils.isTure(parents.stream().anyMatch(u -> u.getMaterialNo().startsWith("31") && u.getVirtrualPackageEnum() <= 0)) + .throwMessage("31码须有虚拟包"); + + for (Long bomRowId : paramDto.getBomRowIds()) { BomNewEbomParentVO parent = Convert.convert(BomNewEbomParentVO.class, this.getById(bomRowId)); VUtils.isTure(Objects.isNull(parent)).throwMessage("Bom版本不存在:" + bomRowId.toString()); LogRecordContext.putVariable("CToPbom", parent); @@ -1824,7 +1831,7 @@ public class BomNewEbomParentService extends ServiceImpl childs=new ArrayList<>(); List parents = this.getBaseMapper().getParentForDrawingNoSeach(parentDrawingNos, query.getStatus()); - materialMainService.intiMaterialInfo(parents, EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT); - if(CollUtil.isNotEmpty(parents)) { - childs = this.getBaseMapper().getChildForDrawingNoSeach(parentDrawingNos, parents.stream().map(u -> u.getRowId()).collect(Collectors.toSet())); - materialMainService.intiMaterialInfo(childs, EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT); + materialMainService.intiMaterialInfo(parents, EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT2); + if (CollUtil.isNotEmpty(parents)) { + childs = this.getBaseMapper().getChildForDrawingNoSeach(parentDrawingNos, parents.stream().map(BomOriginalListVO::getRowId).collect(Collectors.toSet())); + materialMainService.intiMaterialInfo(childs, EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT2); childs.stream().filter(f -> StrUtil.isBlank(f.getCurrentVersion())).forEach(f -> { if (MaterialshouldBomExistUtil.checkShouldBomExist(f.getMaterialCategoryCode(), f.getMaterialGetType())) { f.setCurrentVersion(OriginalConstant.NO_BOM_VERSION); @@ -203,10 +203,6 @@ public class BomNewOriginalParentService extends ServiceImpl data = new ArrayList<>(); -// data.addAll(parents); -// data.addAll(childs); -// materialMainService.intiMaterialInfo(data, EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT); result = handSeachToTree(parents, childs); } } @@ -221,7 +217,6 @@ public class BomNewOriginalParentService extends ServiceImpl saveEnts = bom.getBomList().stream().filter(u -> u.getDelIs().equals(0)).collect(Collectors.toList()); List childEntities = Convert.toList(BomNewOriginalChildEntity.class, saveEnts); // originalChildService.getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id",bom.getParentRowId())); - childEntities.forEach(u -> { - u.setParentRowId(bom.getParentRowId()); - if (submitIs) { - u.setEditStatus(OriginalEditStatusEnum.HANDLER_FINISHED.getValue()); - } - }); if (CollUtil.isNotEmpty(childEntities)) { + childEntities.forEach(u -> { + u.setParentRowId(bom.getParentRowId()); + if (submitIs) { + u.setEditStatus(OriginalEditStatusEnum.HANDLER_FINISHED.getValue()); + } + }); //删除行 List delRowIds = bom.getBomList().stream().map(BomOriginalListVO::getRowId).filter(rowId -> rowId > 0).collect(Collectors.toList()); originalChildService.getBaseMapper().delOriginalChildNotInRowIds(delRowIds, bom.getParentRowId()); originalChildService.saveOrUpdateBatch(childEntities); + resetBomExist(bom.getParentRowId()); } return true; @@ -295,17 +291,23 @@ public class BomNewOriginalParentService extends ServiceImpl> submit = bomDetailPool.submit(detailTask); - - List result = submit.get(); - - return result; - + return submit.get(); } /** @@ -526,7 +518,6 @@ public class BomNewOriginalParentService extends ServiceImpl convertToEBom(List bomRowIds) throws ExecutionException, InterruptedException { List bomNewOriginalParentEntities = this.getBaseMapper().selectBatchIds(bomRowIds); @@ -550,13 +541,13 @@ public class BomNewOriginalParentService extends ServiceImpl getChild(Long rowId) { - - List parentChild = this.getBaseMapper().getParentChild(rowId); - BomNewPbomParentEntity parent = this.getById(rowId); + VUtils.isTure(rowId == 0).throwMessage("参数不正确"); + return getChild(this.getById(rowId)); + } + public List getChild(BomNewPbomParentEntity parent) { + //List parentChild = this.getBaseMapper().getParentChild(rowId); + //BomNewPbomParentEntity parent = this.getById(rowId); + List parentChild = this.getBaseMapper().getParentChild(parent.getRowId()); if (CollUtil.isNotEmpty(parentChild)) { materialMainService.intiMaterialInfo(parentChild, EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT); - List materialNos = parentChild.stream().map(u -> u.getMaterialNo()).collect(Collectors.toList()); + List materialNos = parentChild.stream().map(BaseMaterialVO::getMaterialNo).collect(Collectors.toList()); if (CollUtil.isNotEmpty(materialNos)) { List list = this.lambdaQuery().in(BomNewPbomParentEntity::getMaterialNo, materialNos) .eq(!PBomStatusEnum.PUBLISH.equalsValue(parent.getStatus()), BomNewPbomParentEntity::getLastVersionIs, 1) @@ -266,14 +270,20 @@ public class BomNewPbomParentService extends ServiceImpl childList = Convert.toList(BomNewPbomChildEntity.class, paramDTO.getChildList()); - childList.forEach(u -> { - u.setParentRowId(paramDTO.getBomRowId()); - }); - pbomChildService.saveOrUpdateBatch(childList); + + if (CollUtil.isNotEmpty(paramDTO.getChildList())) { + List childList = Convert.toList(BomNewPbomChildEntity.class, paramDTO.getChildList()); + childList.forEach(u -> u.setParentRowId(paramDTO.getBomRowId())); + pbomChildService.saveOrUpdateBatch(childList); + parent.setBomExist(1); + } else { + parent.setBomExist(0); + } + parent.setEditStatus(editStatus.getValue()); + parent.setModifyTime(LocalDateTime.now()); this.updateById(parent); + if (editStatus == PBomEditStatusEnum.HANDLER_TEMP) { - return getChild(paramDTO.getBomRowId()); + return getChild(parent); } else { return null; } @@ -400,16 +413,17 @@ public class BomNewPbomParentService extends ServiceImpl noDelList = childListVO.stream() .filter(u -> !u.getMaterialCategoryCode().startsWith("1003") && !u.getMaterialCategoryCode().startsWith("1020") && !u.getMaterialCategoryCode().startsWith("1021")) .collect(Collectors.toList()); - noDelList.removeAll(technologypackages); VUtils.isTure(CollUtil.isNotEmpty(noDelList)).throwMessage("非机加工件的子级只能删除辅助物料"); pbomChildService.getBaseMapper().delByRowId(paramDTO.getRowIdList()); + resetBomExist(parent.getRowId()); return hasTechnologypackage; } @@ -431,7 +445,8 @@ public class BomNewPbomParentService extends ServiceImpl child = this.getChild(bomRowId); + BomNewPbomParentEntity parent = this.getById(bomRowId); + List child = this.getChild(parent); List result = Convert.toList(BomNewPbomEditExcelVO.class, child); new Workbook().addSheet(new ListSheet<>(result)).writeTo(response.getOutputStream()); @@ -440,7 +455,8 @@ public class BomNewPbomParentService extends ServiceImpl child = this.getChild(param.getBomRowId()); + BomNewPbomParentEntity parent = this.getById(param.getBomRowId()); + List child = this.getChild(parent); if (CollUtil.isNotEmpty(param.getRowIds())) { child = child.stream().filter(u -> param.getRowIds().contains(u.getRowId())).collect(Collectors.toList()); } @@ -1028,4 +1044,7 @@ public class BomNewPbomParentService extends ServiceImpl 0 ? 1 : 0); eBomParent.setDeviseName(SessionUtil.getRealName()); eBomParent.setDeptName(SessionUtil.getDepartName()); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom1020.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom1020.java index 86c0b796..16661f15 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom1020.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/PBom/ConvertToMBom1020.java @@ -1,7 +1,6 @@ package com.nflg.product.bomnew.service.domain.PBom; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import com.nflg.product.bomnew.constant.EBomConstant; @@ -9,7 +8,7 @@ import com.nflg.product.bomnew.constant.ProductionFactoryCodeInputTypeEnum; import com.nflg.product.bomnew.constant.VirtualPackageTypeEnum; import com.nflg.product.bomnew.pojo.entity.BomNewMbomParentEntity; import com.nflg.product.bomnew.pojo.entity.BomNewPbomParentEntity; -import com.nflg.product.bomnew.pojo.vo.BomNewPbomParentVO; +import com.nflg.product.bomnew.util.StringUtil; import com.nflg.product.bomnew.util.VUtils; import java.util.ArrayList; @@ -136,12 +135,18 @@ public class ConvertToMBom1020 extends ConvertToMBomBase{ } private String handlerMaterialNameFor1020(String materialName , String facName){ - List nameComp = VUtils.extractMessageByRegular(materialName); - if(CollUtil.isNotEmpty(nameComp) && nameComp.size()>=3){ - return StrUtil.join("","(", nameComp.get(0) ,")", "(", nameComp.get(1), facName,")", "(",nameComp.get(2), ")" ); + // List nameComp = VUtils.extractMessageByRegular(materialName); + // if(CollUtil.isNotEmpty(nameComp) && nameComp.size()>=3){ + // return StrUtil.join("","(", nameComp.get(0) ,")", "(", nameComp.get(1), facName,")", "(",nameComp.get(2), ")" ); + // } + // return materialName+facName; + if (StringUtil.countOfChar(materialName, '(') >= 3) { + int start = materialName.indexOf(")"); + int end = materialName.lastIndexOf("("); + String name = materialName.substring(start + 2, end - 1); + return StrUtil.format("{}({}{}){}", materialName.substring(0, start + 1), name, facName, materialName.substring(end)); } - return materialName+facName; - + return materialName + facName; } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/StringUtil.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/StringUtil.java index e477ef0f..660c759a 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/StringUtil.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/StringUtil.java @@ -1,5 +1,7 @@ package com.nflg.product.bomnew.util; +import org.apache.commons.lang3.StringUtils; + /** * @author 曹鹏飞 * @date 2024-03-29 16:52:05 @@ -104,4 +106,15 @@ public class StringUtil { || block == Character.UnicodeBlock.GENERAL_PUNCTUATION || block == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS; } + + public static int countOfChar(String str, char ch) { + if (StringUtils.isBlank(str)) return 0; + int count = 0; + for (int i = 0; i < str.length(); i++) { + if (str.charAt(i) == ch) { + count++; + } + } + return count; + } } 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 ee440314..fd9aa2d6 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 @@ -190,7 +190,6 @@ where status=4 group by material_no) b on a.material_no=b.material_no and a.current_version=b.current_version where a.status=4 - @@ -348,4 +347,16 @@ #{item} + + + + diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewOriginalParentMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewOriginalParentMapper.xml index 28fa86df..5105bb5a 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewOriginalParentMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewOriginalParentMapper.xml @@ -182,7 +182,7 @@ #{materialNo} - union all + union select drawing_no from t_bom_new_original_parent where material_no in #{materialNo} @@ -220,7 +220,6 @@ #{item} - @@ -248,4 +247,10 @@ #{item} + + 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 274f9130..0edcee8f 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 @@ -222,4 +222,10 @@ order by created_time desc + + diff --git a/nflg_project_dev/nflg-bom-new/src/test/java/com/nflg/product/bomnew/service/test/MaterialServiceTest.java b/nflg_project_dev/nflg-bom-new/src/test/java/com/nflg/product/bomnew/service/test/MaterialServiceTest.java index 329d1da6..30362388 100644 --- a/nflg_project_dev/nflg-bom-new/src/test/java/com/nflg/product/bomnew/service/test/MaterialServiceTest.java +++ b/nflg_project_dev/nflg-bom-new/src/test/java/com/nflg/product/bomnew/service/test/MaterialServiceTest.java @@ -1,20 +1,12 @@ package com.nflg.product.bomnew.service.test; -import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; -import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; -import com.google.common.base.Objects; import com.google.common.collect.ImmutableList; -import com.nflg.product.base.core.exception.NflgBusinessException; -import com.nflg.product.bomnew.pojo.query.OptionalEbomImportChildQuery; import com.nflg.product.bomnew.pojo.vo.BaseMaterialVO; -import com.nflg.product.bomnew.pojo.vo.OptionalEbomConfigAggregVO; import com.nflg.product.bomnew.service.MaterialMainService; import com.nflg.product.bomnew.service.MaterialService; -import jdk.nashorn.internal.ir.annotations.Immutable; -import nflg.product.common.constant.STATE; import nflg.product.common.vo.ResultVO; import org.junit.Test; import org.junit.runner.RunWith; @@ -22,7 +14,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; -import java.io.IOException; import java.util.List; @RunWith(SpringRunner.class) diff --git a/nflg_project_dev/nflg-bom-new/src/test/java/com/nflg/product/bomnew/service/test/OtherTest.java b/nflg_project_dev/nflg-bom-new/src/test/java/com/nflg/product/bomnew/service/test/OtherTest.java index 32fa9578..82f03187 100644 --- a/nflg_project_dev/nflg-bom-new/src/test/java/com/nflg/product/bomnew/service/test/OtherTest.java +++ b/nflg_project_dev/nflg-bom-new/src/test/java/com/nflg/product/bomnew/service/test/OtherTest.java @@ -1,5 +1,6 @@ package com.nflg.product.bomnew.service.test; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.nflg.product.bomnew.constant.EBomStatusEnum; @@ -75,4 +76,30 @@ public class OtherTest { String data2=""; Assert.assertEquals(data2,StringUtil.trimText(data1,0)); } + + @Test + public void test10() { + String data1 = "(2FBJ9000A2.0)(FJD4500MT搅拌系统(普通))(发货)"; + String str1 = data1.substring(data1.indexOf(")") + 2, data1.lastIndexOf("(") - 1); + String data2 = "FJD4500MT搅拌系统(普通)"; + Assert.assertEquals(data2, str1); + } + + @Test + public void test11() { + String data1 = "(2FBJ9000A2.0)(FJD4500MT搅拌系统普通)(发货)"; + String str1 = data1.substring(data1.indexOf(")") + 2, data1.lastIndexOf("(") - 1); + String data2 = "FJD4500MT搅拌系统普通"; + Assert.assertEquals(data2, str1); + } + + @Test + public void test12() { + String data1 = "(2FBJ9000A2.0)(FJD4500MT系统(普通))(发货)"; + int start = data1.indexOf(")"); + int end = data1.lastIndexOf("("); + String str1 = data1.substring(start + 2, end - 1); + String data2 = "(2FBJ9000A2.0)(FJD4500MT系统(普通)仙桃)(发货)"; + Assert.assertEquals(data2, StrUtil.format("{}({}{}){}", data1.substring(0, start + 1), str1, "仙桃", data1.substring(end))); + } }