diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/BomnewApplication.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/BomnewApplication.java index 3e82efe0..30ab5bc9 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/BomnewApplication.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/BomnewApplication.java @@ -3,6 +3,7 @@ package com.nflg; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.scheduling.annotation.EnableScheduling; @@ -18,6 +19,7 @@ import java.util.TimeZone; @EnableOpenApi @EnableDiscoveryClient @EnableScheduling +@EnableFeignClients public class BomnewApplication { public static void main(String[] args) { 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 f2ed6365..4eb91c57 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 @@ -19,6 +19,8 @@ import io.swagger.annotations.ApiOperation; import nflg.product.common.constant.STATE; import nflg.product.common.vo.ResultVO; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionSynchronizationAdapter; +import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.ttzero.excel.entity.ListMapSheet; @@ -135,8 +137,13 @@ public class OriginalBomApi extends BaseApi { return ResultVO.error("请上传Excel文件"); } originalParentService.importBom(file); + TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { + @Override + public void afterCommit() { + originalParentService.computeLevelNumAndRootState(); + } + }); - originalParentService.computeLevelNumAndRootState(); return ResultVO.success(true); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/client/MaterialMainClient.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/client/MaterialMainClient.java index 84781ca7..bdf6c72b 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/client/MaterialMainClient.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/client/MaterialMainClient.java @@ -8,7 +8,7 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; -@FeignClient(value = "service-material") +@FeignClient(value = "material") public interface MaterialMainClient { diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewOriginalChildMapper.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewOriginalChildMapper.java index 89feed2f..cbf02c7d 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewOriginalChildMapper.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewOriginalChildMapper.java @@ -2,6 +2,9 @@ package com.nflg.product.bomnew.mapper.master; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.nflg.product.bomnew.pojo.entity.BomNewOriginalChildEntity; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * t_bom_new_original_child 表数据库访问层 @@ -11,4 +14,7 @@ import com.nflg.product.bomnew.pojo.entity.BomNewOriginalChildEntity; * @since 2023-11-09 09:25:02 */ public interface BomNewOriginalChildMapper extends BaseMapper { + + + void delOriginalChildNotInRowIds(@Param("rowIds")List rowIds); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BaseMaterialVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BaseMaterialVO.java index 992cf403..6c6f3079 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BaseMaterialVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BaseMaterialVO.java @@ -49,4 +49,7 @@ public class BaseMaterialVO { */ @ApiModelProperty(value = "材料") private String material; + + @ApiModelProperty("材质") + private String materialTexture; } 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 4b3bd0a3..04ec6f47 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 @@ -85,11 +85,7 @@ public class BomNewEbomParentVO extends BaseMaterialVO implements Serializable { @ApiModelProperty(value = "是否最新版 0-否 1-是") private Integer lastVersionIs; - /** - * 材质 - */ - @ApiModelProperty(value = "材质") - private String materialTexture; + /** * 单重 diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomOriginalListVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomOriginalListVO.java index fe1f1839..dde4e3b4 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomOriginalListVO.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/BomOriginalListVO.java @@ -112,7 +112,7 @@ public class BomOriginalListVO extends BaseMaterialVO { /** * 状态 1=待转换、2=已转换、3=借用件 */ - @ApiModelProperty(value = "状态 1=待转换、2=已转换、3=借用件") + @ApiModelProperty(value = "状态 1=待转换、2=已转换、3=借用件,4=引用件") private Integer status; /** 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 620c0459..3b48f4ca 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 @@ -41,6 +41,7 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.ForkJoinTask; import java.util.stream.Collectors; +import java.util.stream.Stream; /** @@ -106,8 +107,8 @@ public class BomNewOriginalParentService extends ServiceImpl delRowIds = bom.getBomList().stream().filter(u -> u.getDelIs().equals(1)).map(u -> u.getRowId()).collect(Collectors.toList()); - originalChildService.getBaseMapper().deleteBatchIds(delRowIds); + List delRowIds = bom.getBomList().stream().map(u->u.getRowId()).collect(Collectors.toList()); + originalChildService.getBaseMapper().delOriginalChildNotInRowIds(delRowIds); originalChildService.saveOrUpdateBatch(childEntities); } return true; @@ -160,15 +161,15 @@ public class BomNewOriginalParentService extends ServiceImpl getBomTree(Long rowId) throws ExecutionException, InterruptedException { List bomDetail = this.getBaseMapper().getParentChild(rowId); + BomNewOriginalParentEntity parentEntity = this.getBaseMapper().selectById(rowId); OriginalBomDetailTask detailTask = new OriginalBomDetailTask(bomDetail); ForkJoinTask> submit = bomDetailPool.submit(detailTask); @@ -301,9 +303,12 @@ public class BomNewOriginalParentService extends ServiceImpl bomTree = getBomTree(bomRowId); - - - List delParentRowId = bomTree.stream().filter(u -> u.getCreatedBy().equals(SessionUtil.getUserCode()) && OriginalStatusEnum.UN_CONVERT.equalsValue(u.getStatus())).map(u -> u.getParentRowId()).collect(Collectors.toList()); + //需删除的BOM + List delBom = bomTree.stream().filter(u -> u.getBomRowId() > 0 && OriginalStatusEnum.UN_CONVERT.equalsValue(u.getStatus())).collect(Collectors.toList()); + List delParentRowId=new ArrayList<>(); + for ( BomOriginalListVO bom: delBom) { + delParentRowId.add(bom.getBomRowId()); + } delParentRowId.add(bomRowId); if (CollUtil.isNotEmpty(delParentRowId)) { this.getBaseMapper().delBatch(delParentRowId); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/BaseConvert.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/BaseConvert.java index 9fc02554..0f80d0a5 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/BaseConvert.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/BaseConvert.java @@ -122,7 +122,7 @@ public abstract class BaseConvert { parentEntity.setStatus(OriginalStatusEnum.UN_CONVERT.getValue()); parentEntity.setEditStatus(OriginalEditStatusEnum.HANDLER_CREATED.getValue()); parentEntity.setDeptRowId(SessionUtil.getPartRowId()); - parentEntity.setDeptName(SessionUtil.getSecondFullDeptName()); + parentEntity.setDeptName(SessionUtil.getDepartName()); parentEntity.setSource(originalSourceEnum.getValue()); parentEntity.setCreatedBy(material.getCreatedBy()); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomDetailTask.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomDetailTask.java index d54d62b6..6799a0f5 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomDetailTask.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/OriginalBomDetailTask.java @@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import com.google.common.collect.ImmutableList; +import com.nflg.product.base.core.conmon.util.SessionUtil; +import com.nflg.product.bomnew.constant.OriginalStatusEnum; import com.nflg.product.bomnew.pojo.entity.BomNewOriginalParentEntity; import com.nflg.product.bomnew.pojo.vo.BomOriginalListVO; import com.nflg.product.bomnew.service.BomNewOriginalParentService; @@ -59,6 +61,14 @@ public class OriginalBomDetailTask extends RecursiveTask detailVO.setChildBomRowId(bomNewOriginalParentEntity.getRowId()); detailVO.setBomRowId(bomNewOriginalParentEntity.getRowId()); + if(bomNewOriginalParentEntity.getStatus().equals(OriginalStatusEnum.OVER_CONVERT)){ + detailVO.setStatus(OriginalStatusEnum.BORROWED_PARTS.getValue()); + } + //非本人则为借用件 + if (!bomNewOriginalParentEntity.getCreatedBy().equals(detailVO.getCreatedBy()) && OriginalStatusEnum.UN_CONVERT.equalsValue(bomNewOriginalParentEntity.getStatus())) { + detailVO.setStatus(OriginalStatusEnum.REFERENCE.getValue()); + } + } } @@ -82,7 +92,8 @@ public class OriginalBomDetailTask extends RecursiveTask result.addAll(bomDetail); if (CollUtil.isNotEmpty(bomDetail)) { - levelNumAdd(); + List collect = bomDetail.stream().filter(u -> u.getStatus().equals(1)).collect(Collectors.toList()); + levelNumAdd(collect.size()); List childBowIds = bomDetail.stream().filter(u-> u.getChildBomRowId()!=null && u.getChildBomRowId() > 0).map(u->u.getChildBomRowId()).collect(Collectors.toList()); if(CollUtil.isNotEmpty(childBowIds)) { List bom = SpringUtil.getBean(BomNewOriginalParentService.class).getBaseMapper().getParentChildBatch(childBowIds); @@ -99,7 +110,7 @@ public class OriginalBomDetailTask extends RecursiveTask } - public synchronized void levelNumAdd(){ - levelNum++; + public synchronized void levelNumAdd(Integer num){ + levelNum=levelNum+num; } } 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 18f87c07..31573b0a 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 @@ -62,7 +62,7 @@ public class OriginalBomToEBomConvert extends BaseConvert { } public void convert() { - checkData(); + // checkData(); SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(ImmutableList.of(parent)); SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(bomDetail); diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/PlmBomToOriginalConvert.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/PlmBomToOriginalConvert.java index e297c302..1cf9d485 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/PlmBomToOriginalConvert.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/OriginalBom/PlmBomToOriginalConvert.java @@ -131,10 +131,20 @@ public class PlmBomToOriginalConvert extends BaseConvert { { BomNewOriginalParentEntity oBOM =getOriginalBomForMaterial(parent.getChartNo()); if(Objects.isNull(oBOM)){ - BomNewOriginalParentEntity parentEntity = buildParentEntity(parent,"",originalSourceEnum); - - if (StrUtil.isNotBlank(parent.getMaterialCategoryCode()) && parent.getMaterialCategoryCode().equals(OriginalConstant.COMMON_MATERIAL_CATEGORY_CODE) && CollUtil.isEmpty(childs)) { - handlerCommonMaterial(parentEntity); + // 一般零部件 + if(StrUtil.isNotBlank(parent.getMaterialCategoryCode()) && parent.getMaterialCategoryCode().equals(OriginalConstant.COMMON_MATERIAL_CATEGORY_CODE) && CollUtil.isEmpty(childs)) { + // 有物料编码,则通过规则匹配物料作为下级 + if (StrUtil.isNotBlank(parent.getMaterialNo())) { + BomNewOriginalParentEntity parentEntity = buildParentEntity(parent, "", originalSourceEnum); + handlerCommonMaterial(parentEntity); + } + else { //无物料编码,则通过规则找物料 ,找到则替换,未找到则直接进库。ebom 再处理 + handlerCommonMaterialForReplace(parent); + BomNewOriginalParentEntity parentEntity = buildParentEntity(parent, "", originalSourceEnum); + } + } + else { + BomNewOriginalParentEntity parentEntity = buildParentEntity(parent, "", originalSourceEnum); } } } @@ -149,10 +159,14 @@ public class PlmBomToOriginalConvert extends BaseConvert { //通过规则- 获取子级物料 BomNewOriginalParentEntity originalBomForMaterial = getOriginalBomForMaterial(childVo.getChartNo()); List parentResultOne = this.resultParent.stream().filter(u -> u.getDrawingNo().equals(childVo.getChartNo())).collect(Collectors.toList()); - if (Objects.isNull(originalBomForMaterial) && CollUtil.isEmpty(parentResultOne) ) { - childVo.setCreatedBy(parentEntity.getCreatedBy()); - BomNewOriginalParentEntity parentEntity1 = buildParentEntity(childVo, "",originalSourceEnum); - handlerCommonMaterial(parentEntity1); + if(StrUtil.isNotBlank(childVo.getMaterialNo())) { + if (Objects.isNull(originalBomForMaterial) && CollUtil.isEmpty(parentResultOne)) { + childVo.setCreatedBy(parentEntity.getCreatedBy()); + BomNewOriginalParentEntity parentEntity1 = buildParentEntity(childVo, "", originalSourceEnum); + handlerCommonMaterial(parentEntity1); + } + }else { + handlerCommonMaterialForReplace(childVo); } buildChildEntity(childVo,parentEntity); @@ -184,6 +198,27 @@ public class PlmBomToOriginalConvert extends BaseConvert { } + } + + private void handlerCommonMaterialForReplace(BomOriginalPlmBomVO parentEntity) { + //通过规则获取物料编码 + MaterialMateVO materialMate = getMaterialByRel(parentEntity); + //找到对应物料 + if (Objects.nonNull(materialMate)) { + List materialBaseInfo = SpringUtil.getBean(MaterialMainMapper.class).getMaterialBaseInfo(ImmutableList.of(materialMate.getMaterialNo())); + if (CollUtil.isNotEmpty(materialBaseInfo)) { + //根据物料编码- + BaseMaterialVO baseMaterialVO = materialBaseInfo.get(0); + parentEntity.setMaterialNo(baseMaterialVO.getMaterialNo()); + parentEntity.setMaterialName(baseMaterialVO.getMaterialName()); + parentEntity.setMaterialDesc(baseMaterialVO.getMaterialDesc()); + parentEntity.setMaterialTexture(baseMaterialVO.getMaterialTexture()); + } + + } + + + } diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewOriginalChildMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewOriginalChildMapper.xml index ee460c5d..11bc5722 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewOriginalChildMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewOriginalChildMapper.xml @@ -26,4 +26,11 @@ row_id, parent_row_id, order_number, drawing_no, material_no, material_name, material_desc, unit_weight, num, total_weight ,remark,created_by,created_time ,edit_status + + delete from t_bom_new_original_child where row_id not in + + #{rowId} + + + diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/MaterialMainMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/MaterialMainMapper.xml index 43636498..09325a1e 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/MaterialMainMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/MaterialMainMapper.xml @@ -71,6 +71,7 @@