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 a7d90f47..930ee888 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 @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.spring.SpringUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -14,13 +15,11 @@ import com.mzt.logapi.context.LogRecordContext; import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.bomnew.constant.*; import com.nflg.product.bomnew.mapper.master.BomNewOriginalParentMapper; +import com.nflg.product.bomnew.pojo.dto.AddVirtrualMaterialDTO; import com.nflg.product.bomnew.pojo.dto.BaseImportExcelDTO; import com.nflg.product.bomnew.pojo.dto.BomNewOriginalExcelDTO; import com.nflg.product.bomnew.pojo.dto.OriginalSaveBomDTO; -import com.nflg.product.bomnew.pojo.entity.BomNewOriginalChildEntity; -import com.nflg.product.bomnew.pojo.entity.BomNewOriginalMaterialUseEntity; -import com.nflg.product.bomnew.pojo.entity.BomNewOriginalParentEntity; -import com.nflg.product.bomnew.pojo.entity.BomOriginalCadParentEntity; +import com.nflg.product.bomnew.pojo.entity.*; import com.nflg.product.bomnew.pojo.query.OriginalBomQuery; import com.nflg.product.bomnew.pojo.vo.BaseMaterialVO; import com.nflg.product.bomnew.pojo.vo.BomOriginalListVO; @@ -568,11 +567,10 @@ public class BomNewOriginalParentService extends ServiceImpl datas) { + BomNewEbomParentEntity root = datas.stream() + .filter(d -> d.getRowId().equals(ebomRowId)) + .findFirst() + .orElseThrow(() -> new RuntimeException("未找到根节点")); + root.setVirtrualPackageEnum(handleVirtualPackage(datas, VirtualPackageTypeEnum.DELIVERY_PACKAGE) + & handleVirtualPackage(datas, VirtualPackageTypeEnum.MAKING_PACKAGE) + & handleVirtualPackage(datas, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE) + & handleVirtualPackage(datas, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE)); + } + + private int handleVirtualPackage(List datas, VirtualPackageTypeEnum em) { + List list = datas.stream() + .filter(d -> d.getMaterialName().endsWith("(" + em.getConMaterialName() + ")")) + .collect(Collectors.toList()); + if (CollUtil.isEmpty(list)) return 0; + list.forEach(it -> { + it.setVirtualPackageIs(1); + handleMaterial(it, em); + }); + return em.getValue(); + } + + /** + * 处理主物料,如果主物料不存在则添加 + */ + private void handleMaterial(BomNewEbomParentEntity data, VirtualPackageTypeEnum em) { + if (StrUtil.isBlank(data.getDrawingNo())) return; + MaterialMainEntity material = materialMainService.lambdaQuery().eq(MaterialMainEntity::getDrawingNo, data.getDrawingNo()) + .orderByDesc(MaterialMainEntity::getRowId) + .last(" limit 1") + .one(); + if (material == null) { + AddVirtrualMaterialDTO ent = new AddVirtrualMaterialDTO(); + ent.setKey(StrUtil.join("", data.getRowId(), em.getConMaterialName())); + ent.setDrawingNo(data.getDrawingNo()); + ent.setMaterialName(data.getMaterialName()); + ent.setMaterialDesc(data.getMaterialDesc()); + ent.setMaterialCategoryCode(em.getMaterialCategoryCode()); + + SpringUtil.getBean(MaterialService.class).batchAddMaterial(CollUtil.toList(ent)); + } + } + /** * 同步到历史正式表(只保留最新版) */