diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/BomNewEBomRevertDTO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/BomNewEBomRevertDTO.java index 9a415165..0440c307 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/BomNewEBomRevertDTO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/dto/BomNewEBomRevertDTO.java @@ -23,4 +23,7 @@ public class BomNewEBomRevertDTO { @ApiModelProperty("必填,行id列表") private List rowIdList; + @ApiModelProperty("退回描述") + private String revertDesc; + } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java index 27d56f3e..6c2fab3e 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/entity/BomNewEbomParentEntity.java @@ -296,6 +296,11 @@ public class BomNewEbomParentEntity implements Serializable { @ApiModelProperty(value = "退回人") private String revertUserName; + @TableField(value = "revert_desc") + @ApiModelProperty(value = "退回原因") + private String revertDesc; + + /** * 版本过期时间=下个版本的创建时间 */ 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 90d6b28a..3b1802c9 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 @@ -1130,43 +1130,44 @@ public class BomNewEbomParentService extends ServiceImpl u.getBomRowId() > 0 && !Objects.equals(UserJobEnum.ENGINEER.getValue(),u.getCreatedJob())) .map(BomNewEbomParentVO::getBomRowId).collect(Collectors.toList())); - } - if (CollectionUtil.isNotEmpty(revertList)) { - //parent表状态 - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.lambda() - .set(BomNewEbomParentEntity::getRevertTime, LocalDateTime.now()) - .set(BomNewEbomParentEntity::getRevertUserName, SessionUtil.getUserName()) - .set(BomNewEbomParentEntity::getStatus, EBomStatusEnum.RETURNED.getValue()) - .set(BomNewEbomParentEntity::getEditStatus, EbomEditStatusEnum.HANDLER_CREATED.getValue()) - .in(BomNewEbomParentEntity::getRowId, revertList); - //child 表状态 - UpdateWrapper childWrapper = new UpdateWrapper<>(); - childWrapper.lambda() - .set(BomNewEbomChildEntity::getModifyTime, LocalDateTime.now()) - .set(BomNewEbomChildEntity::getEditStatus, EbomEditStatusEnum.HANDLER_CREATED.getValue()) - .in(BomNewEbomChildEntity::getParentRowId, revertList); + if (CollectionUtil.isNotEmpty(revertList)) { + //parent表状态 + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.lambda() + .set(BomNewEbomParentEntity::getRevertTime, LocalDateTime.now()) + .set(BomNewEbomParentEntity::getRevertUserName, SessionUtil.getUserName()) + .set(BomNewEbomParentEntity::getRevertDesc,dto.getRevertDesc()) + .set(BomNewEbomParentEntity::getStatus, EBomStatusEnum.RETURNED.getValue()) + .set(BomNewEbomParentEntity::getEditStatus, EbomEditStatusEnum.HANDLER_CREATED.getValue()) + .in(BomNewEbomParentEntity::getRowId, revertList); + + //child 表状态 + UpdateWrapper childWrapper = new UpdateWrapper<>(); + childWrapper.lambda() + .set(BomNewEbomChildEntity::getModifyTime, LocalDateTime.now()) + .set(BomNewEbomChildEntity::getEditStatus, EbomEditStatusEnum.HANDLER_CREATED.getValue()) + .in(BomNewEbomChildEntity::getParentRowId, revertList); + + this.update(updateWrapper ); + ebomChildService.update(childWrapper) ; - this.update(updateWrapper ); - if (!ebomChildService.update(childWrapper)) { - throw new NflgBusinessException(STATE.Error, "退回设计失败"); } - } else { - VUtils.isTure(true).throwMessage("没有需要退回设计的物料"); + } + } /** @@ -1185,7 +1186,7 @@ public class BomNewEbomParentService extends ServiceImpl rowIds = dto.getRowIdList(); - List bomNewEbomParentEntityList = this.lambdaQuery().in(BomNewEbomParentEntity::getUserRootIs, rowIds).eq(BomNewEbomParentEntity::getUserRootIs, 1).list(); + List bomNewEbomParentEntityList = this.lambdaQuery().in(BomNewEbomParentEntity::getRowId, rowIds).eq(BomNewEbomParentEntity::getUserRootIs, 1).list(); if (CollUtil.isEmpty(bomNewEbomParentEntityList)) { // return ResultVO.error("下级BOM无法进行复核"); @@ -1471,13 +1472,13 @@ public class BomNewEbomParentService extends ServiceImpl queryWrapper=new QueryWrapper<>(); queryWrapper.lambda() .eq(BomNewEbomParentEntity::getRowId, bomRowId) - .eq(BomNewEbomParentEntity::getRootIs, 1); + .eq(BomNewEbomParentEntity::getUserRootIs, 1); BomNewEbomParentEntity parentEntity = this.getBaseMapper().selectOne(queryWrapper); LogRecordContext.putVariable("bom", parentEntity); - VUtils.isTure(Objects.isNull(parentEntity)).throwMessage("该节点不存在,请检查参数是否正确"); + VUtils.isTure(Objects.isNull(parentEntity)).throwMessage("选择节点不是顶层"); //设计人员只能删自己 checkUserRoleAuth(parentEntity.getCreatedBy()); @@ -1486,9 +1487,10 @@ public class BomNewEbomParentService extends ServiceImpl u.getBomRowId() > 0 @@ -62,7 +62,7 @@ public class EBomDel { //借用件不能删除,原始bom转换只能删自己 - if(roleList.contains(EBomConstant.DESIGNER)){ + // if(roleList.contains(EBomConstant.DESIGNER)){ revertOBom = bomTreeAll.stream().filter(u -> u.getBomRowId() > 0 && (u.getSource().equals(EBomSourceEnum.FROM_BOM.getValue()) && u.getCreatedBy().equals(SessionUtil.getUserCode()) @@ -72,7 +72,7 @@ public class EBomDel { if (CollectionUtil.isNotEmpty(revertOBom)) { delEBom.addAll(revertOBom); } - } + // } 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 d98822b6..a783e12f 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 @@ -81,11 +81,16 @@ public class EBomEdit { parent.setStatus(SpringUtil.getBean(UserRoleService.class).technician() ? EBomStatusEnum.CHECKED.getValue() : EBomStatusEnum.WAIT_CHECK.getValue()); parent.setCreatedJob(SpringUtil.getBean(UserRoleService.class).technician() ? UserJobEnum.ENGINEER.getValue() : UserJobEnum.DESIGNER.getValue()); - + parent.setCreatedTime(LocalDateTime.now()); parent.setModifyTime(LocalDateTime.now()); parent.setExpireEndTime( LocalDateTime.parse("9999-12-31 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") )); + + Integer rootIs =SpringUtil.getBean(BomNewEbomParentService.class).getBaseMapper().checkIsRoot(parent.getMaterialNo()); + Integer userRootIs = SpringUtil.getBean(BomNewEbomParentService.class).getBaseMapper().checkIsUserRoot(parent.getMaterialNo(), parent.getCreatedBy()); + parent.setRootIs(rootIs); + parent.setUserRootIs(userRootIs); return parent; } @@ -102,13 +107,11 @@ public class EBomEdit { void createRootBom(BomNewEBomParentEditDTO createDTO) { - checkHadBom(createDTO.getParent().getMaterialNo()); + // checkHadBom(createDTO.getParent().getMaterialNo()); parentEntity = createParentBomInfo(createDTO.getParent()); parentEntity.setEditStatus(createDTO.getOpType()); - parentEntity.setRootIs(1); - parentEntity.setUserRootIs(1); createDTO.getDatas().forEach(k -> { k.setParentRowId(parentEntity.getRowId()); }); @@ -288,7 +291,7 @@ public class EBomEdit { //缺bom if (dto.getParent().getBomRowId() == null || dto.getParent().getBomRowId().longValue() == 0) { - checkHadBom(dto.getParent().getMaterialNo()); + // checkHadBom(dto.getParent().getMaterialNo()); dto.getParent().setBomRowId(dto.getParent().getRowId()); parentEntity = createParentBomInfo(dto.getParent()); 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 2e56294e..1560d911 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 @@ -123,7 +123,7 @@ public abstract class VirtualPackageBase { return ent; } - protected BomNewEbomParentEntity buildParentVirtualPackage(Long rowId,VirtualPackageTypeEnum virtualPackageTypeEnum) throws IOException { + protected BomNewEbomParentEntity buildParentVirtualPackage(Long rowId,VirtualPackageTypeEnum virtualPackageTypeEnum ,String orderNum) throws IOException { AddVirtrualMaterialDTO addM = vMNos.get(StrUtil.join("",rowId,virtualPackageTypeEnum.getConMaterialName())); BomNewEbomParentEntity oldParent= SpringUtil.getBean(BomNewEbomParentService.class).lambdaQuery() @@ -141,7 +141,7 @@ public abstract class VirtualPackageBase { // String materialNo = SpringUtil.getBean(MaterialService.class).addMaterial(drawingNo, vMaterialName,materialDesc, virtualPackageType.getMaterialCategoryCode()); BomNewEbomParentEntity parent =new BomNewEbomParentEntity(); parent.setRowId(IdWorker.getId()); - parent.setOrderNumber("001"); + parent.setOrderNumber(StrUtil.isNotBlank(orderNum) ? StrUtil.padPre(orderNum,3,"0"):"001"); parent.setDrawingNo(addM.getDrawingNo() ); parent.setMaterialNo(addM.getMaterialNo()); parent.setMaterialName(addM.getMaterialName()); 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 6b15d062..c7c61668 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 @@ -50,9 +50,9 @@ public class VirtualPackageFor21 extends VirtualPackageBase { BomNewEbomParentEntity makingPackage=null; if((parent.getVirtrualPackageEnum()| VirtualPackageTypeEnum.MAKING_PACKAGE.getValue())!=VirtualPackageTypeEnum.MAKING_PACKAGE.getValue()) { //构建构建发货包下制作包 - makingPackage = buildParentVirtualPackage( parent.getRowId(), VirtualPackageTypeEnum.MAKING_PACKAGE); + makingPackage = buildParentVirtualPackage( parent.getRowId(), VirtualPackageTypeEnum.MAKING_PACKAGE,parent.getOrderNumber()); //构建构建发货包下直发 - BomNewEbomParentEntity directDeliveryPackage = buildParentVirtualPackage(parent.getRowId(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); + BomNewEbomParentEntity directDeliveryPackage = buildParentVirtualPackage(parent.getRowId(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE,parent.getOrderNumber()); //构建产品-子级为制作包合直发包 buildChild(makingPackage, bomRowId, "001", VirtualPackageTypeEnum.MAKING_PACKAGE,parent.getMaterialNo()); buildChild(directDeliveryPackage, bomRowId, "002", VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE,parent.getMaterialNo()); @@ -63,7 +63,7 @@ public class VirtualPackageFor21 extends VirtualPackageBase { if(Objects.isNull(makingPackage)){ makingPackage=getParentZhiZuo(); } - BomNewEbomParentEntity preAssemblyPackage = buildParentVirtualPackage(parent.getRowId(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); + BomNewEbomParentEntity preAssemblyPackage = buildParentVirtualPackage(parent.getRowId(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE,parent.getOrderNumber()); buildChild(preAssemblyPackage, makingPackage.getRowId(), "001", VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE,parent.getMaterialNo()); } 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 93ff7380..31669e9e 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 @@ -62,11 +62,11 @@ public class VirtualPackageFor31 extends VirtualPackageBase { BomNewEbomParentEntity makingPackage=null; if((VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue()&parent.getVirtrualPackageEnum())!=VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue()) { //构建发货包 - BomNewEbomParentEntity deliveryPackage = buildParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.DELIVERY_PACKAGE); + BomNewEbomParentEntity deliveryPackage = buildParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.DELIVERY_PACKAGE,item.getOrderNumber()); //构建构建发货包下制作包 - makingPackage = buildParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.MAKING_PACKAGE); + makingPackage = buildParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.MAKING_PACKAGE,item.getOrderNumber()); //构建构建发货包下直发 - BomNewEbomParentEntity directDeliveryPackage = buildParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE); + BomNewEbomParentEntity directDeliveryPackage = buildParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE,item.getOrderNumber()); //构建-产品下发货包-子级 buildChild(deliveryPackage, bomRowId, "001", VirtualPackageTypeEnum.DELIVERY_PACKAGE,parent.getMaterialNo()); @@ -82,7 +82,7 @@ public class VirtualPackageFor31 extends VirtualPackageBase { } // 包含发货前装配包 if (virtualPackageValue.contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) && (VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue() & parent.getVirtrualPackageEnum()) != VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()) { - BomNewEbomParentEntity preAssemblyPackage = buildParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE); + BomNewEbomParentEntity preAssemblyPackage = buildParentVirtualPackage(item.getRowId(), VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE,item.getOrderNumber()); //构建构建发货前装配包 if(Objects.isNull(makingPackage)){ makingPackage=getParentZhiZuo(); 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 b8004c7a..86c0b796 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 @@ -3,6 +3,7 @@ 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; import com.nflg.product.bomnew.constant.ProductionFactoryCodeInputTypeEnum; import com.nflg.product.bomnew.constant.VirtualPackageTypeEnum; @@ -121,12 +122,12 @@ public class ConvertToMBom1020 extends ConvertToMBomBase{ private void initFac1020Info(List childBomTree) { for (ConvertToMBomDTO item : childBomTree) { - item.setMaterialName(item.getMaterialName() + EBomConstant.XIAN_TAO_FACTORY_Name_1020); + item.setMaterialName(handlerMaterialNameFor1020(item.getMaterialName(), EBomConstant.XIAN_TAO_FACTORY_Name_1020) ); item.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); item.setProductionFactoryCodeInputType(ProductionFactoryCodeInputTypeEnum.DEFAULT.getValue()); for (ConvertToMBomDTO itemChild : item.getChildNodes()) { - itemChild.setMaterialName(itemChild.getMaterialName() + EBomConstant.XIAN_TAO_FACTORY_Name_1020); + itemChild.setMaterialName(handlerMaterialNameFor1020(itemChild.getMaterialName(), EBomConstant.XIAN_TAO_FACTORY_Name_1020) ); itemChild.setProductionFactoryCode(EBomConstant.XIAN_TAO_FACTORY_CODE_1020); itemChild.setProductionFactoryCodeInputType(ProductionFactoryCodeInputTypeEnum.DEFAULT.getValue()); @@ -134,6 +135,17 @@ 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), ")" ); + } + return materialName+facName; + + } + + + /** * 处理一般材料(提层) * diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VUtils.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VUtils.java index b6e9c6bd..62f168f6 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VUtils.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VUtils.java @@ -7,7 +7,10 @@ import com.nflg.product.bomnew.inteface.ThrowExceptionFunction; import com.nflg.product.bomnew.inteface.TrueHandleFunction; import nflg.product.common.constant.STATE; +import java.util.ArrayList; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * @author 大米 @@ -69,4 +72,21 @@ public class VUtils { } + + /** + * 使用正则表达式提取圆括号中的内容 + * @param msg 输入的包含括号内容的字符串 + * @return 包含所有括号内内容的列表 + */ + public static List extractMessageByRegular(String msg) { + List list = new ArrayList<>(); + // 使用正则表达式匹配任意非括号字符组成的括号内的内容 + Pattern pattern = Pattern.compile("\\(([^()]*)\\)"); + Matcher matcher = pattern.matcher(msg); + + while (matcher.find()) { + list.add(matcher.group(1)); // group(1) 是第一个括号表达式匹配的内容 + } + return list; + } } 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 294ec9fe..9916bd46 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 @@ -39,6 +39,8 @@ + + @@ -59,7 +61,7 @@ status, user_root_is, exception_status,virtual_package_is, source_row_id, devise_user_code, devise_name, created_by, created_time, created_job, audit_time, audit_user_name, release_time, release_user_name, revert_time, revert_user_name, expire_end_time, convert_to_ebom_time, remark, dept_name, level_num, change_desc, - notice_nums, modify_time + notice_nums, modify_time,revert_desc