diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomV2Api.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomV2Api.java index ff509b2c..bcd6c511 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomV2Api.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomV2Api.java @@ -1,5 +1,6 @@ package com.nflg.product.bomnew.api.user; +import cn.hutool.core.collection.CollUtil; import com.google.common.collect.ImmutableList; import com.mzt.logapi.context.LogRecordContext; import com.mzt.logapi.starter.annotation.LogRecord; @@ -7,12 +8,14 @@ import com.nflg.product.base.core.api.BaseApi; import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.bomnew.mapper.master.BomNewEbomChildMapper; import com.nflg.product.bomnew.pojo.dto.EbomExcelDTO; +import com.nflg.product.bomnew.pojo.entity.BomOriginalCadParentEntity; import com.nflg.product.bomnew.pojo.query.GenerateVirtualPackageQuery; import com.nflg.product.bomnew.pojo.vo.ImportOriginalBomVO; import com.nflg.product.bomnew.pojo.vo.ListForGenerateVirtualPackageVO; import com.nflg.product.bomnew.pojo.vo.OperationErrorMsgVO; import com.nflg.product.bomnew.service.*; import com.nflg.product.bomnew.util.EecExcelUtil; +import com.nflg.product.bomnew.util.VUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import nflg.product.common.vo.ResultVO; @@ -25,8 +28,10 @@ import org.ttzero.excel.entity.Workbook; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; +import java.util.stream.Collectors; /** @@ -44,8 +49,7 @@ public class EbomV2Api extends BaseApi { BomNewOriginalParentV2Service originalParentV2Service; @Resource BomNewEbomChildMapper bomNewEbomChildMapper; - @Resource - BomNewOriginalParentService originalParentService; + @Resource BomNewEbomParentService ebomParentService; @Resource @@ -53,22 +57,36 @@ public class EbomV2Api extends BaseApi { @Resource EBomImportService eBomImportService; + @Resource + BomOriginalCadParentService originalCadParentService; + @GetMapping("pullFromCadAndToEBom") @ApiOperation("从CAD获取BOM数据并转为EBom") - @Transactional(rollbackFor = Exception.class) public ResultVO> pullFromCadAndToEBom() throws ExecutionException, InterruptedException { + List parents = originalCadParentService.lambdaQuery().eq(BomOriginalCadParentEntity::getStatus, 1).eq(BomOriginalCadParentEntity::getCreatedBy, SessionUtil.getUserCode()).list(); + List result=new ArrayList<>(); + try { - List result = originalParentV2Service.pullFromCadAndToEBom(SessionUtil.getUserCode()); + result = originalParentV2Service.pullFromCadAndToEBom(parents); + //更新物料使用 + bomNewEbomChildMapper.updateEBomMaterialUse(); - //更新物料使用 - bomNewEbomChildMapper.updateEBomMaterialUse(); + //跟新EBom 根节点 + ebomParentService.getBaseMapper().updateRootState(); + ebomParentService.getBaseMapper().updateRootForWaitReview(); - //跟新EBom 根节点 - ebomParentService.getBaseMapper().updateRootState(); - ebomParentService.getBaseMapper().updateRootForWaitReview(); - - ebomParentService.resetAllBomExist(); + ebomParentService.resetAllBomExist(); + } + catch (Exception e){ + VUtils.isTure(true).throwMessage("转换失败:"+e.getMessage()); + } + finally { + List delRowIds = parents.stream().map(BomOriginalCadParentEntity::getRowId).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(delRowIds)) { + originalParentV2Service.delCadData(delRowIds); + } + } return ResultVO.success(result); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentV2Service.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentV2Service.java index 9381e6ea..721ff5e1 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentV2Service.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewOriginalParentV2Service.java @@ -8,14 +8,12 @@ import cn.hutool.extra.spring.SpringUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.google.common.collect.ImmutableList; import com.google.common.collect.Sets; import com.nflg.product.bomnew.constant.OriginalEditStatusEnum; import com.nflg.product.bomnew.constant.OriginalStatusEnum; import com.nflg.product.bomnew.mapper.master.BomNewOriginalParentMapper; import com.nflg.product.bomnew.pojo.dto.BaseImportExcelDTO; import com.nflg.product.bomnew.pojo.dto.BomNewOriginalExcelDTO; -import com.nflg.product.bomnew.pojo.entity.BomNewOriginalChildEntity; import com.nflg.product.bomnew.pojo.entity.BomNewOriginalParentEntity; import com.nflg.product.bomnew.pojo.entity.BomOriginalCadChildEntity; import com.nflg.product.bomnew.pojo.entity.BomOriginalCadParentEntity; @@ -23,7 +21,6 @@ import com.nflg.product.bomnew.pojo.vo.BaseMaterialVO; import com.nflg.product.bomnew.pojo.vo.BomOriginalListVO; import com.nflg.product.bomnew.pojo.vo.BomOriginalPlmBomVO; import com.nflg.product.bomnew.pojo.vo.ImportOriginalBomVO; -import com.nflg.product.bomnew.service.domain.OriginalBom.OriginalBomToEBomConvert; import com.nflg.product.bomnew.service.domain.OriginalBom.OriginalBomToEBomV2Convert; import com.nflg.product.bomnew.service.domain.OriginalBom.PlmBomToOriginalConvert; import com.nflg.product.bomnew.service.domain.OriginalBom.PlmBomToOriginalConvertV2; @@ -86,11 +83,12 @@ public class BomNewOriginalParentV2Service extends ServiceImpl */ @@ -105,63 +103,59 @@ public class BomNewOriginalParentV2Service extends ServiceImpl pullFromCadAndToEBom(String userCode) throws ExecutionException, InterruptedException { - List parents = originalCadParentService.lambdaQuery().eq(BomOriginalCadParentEntity::getStatus, 1).eq(BomOriginalCadParentEntity::getCreatedBy, userCode).list(); + public List pullFromCadAndToEBom(List parents) throws ExecutionException, InterruptedException { + List toEBomResult = new ArrayList(); - try { + VUtils.isTure(CollUtil.isEmpty(parents)).throwMessage("没有你的数据,你无需转换"); + //检查物料编码在主数据中是否存在 + List childs = originalCadChildService.lambdaQuery().in(BomOriginalCadChildEntity::getParentRowId, parents.stream().map(u -> u.getRowId()).collect(Collectors.toList())).list(); + checkMaterialHasExist(parents.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(BomOriginalCadParentEntity::getMaterialNo).collect(Collectors.toList())); + checkMaterialHasExist(childs.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(BomOriginalCadChildEntity::getMaterialNo).collect(Collectors.toList())); - VUtils.isTure(CollUtil.isEmpty(parents)).throwMessage("没有你的数据,你无需转换"); - //检查物料编码在主数据中是否存在 - List childs = originalCadChildService.lambdaQuery().in(BomOriginalCadChildEntity::getParentRowId, parents.stream().map(u -> u.getRowId()).collect(Collectors.toList())).list(); - checkMaterialHasExist(parents.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(BomOriginalCadParentEntity::getMaterialNo).collect(Collectors.toList())); - checkMaterialHasExist(childs.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(BomOriginalCadChildEntity::getMaterialNo).collect(Collectors.toList())); + //父级物料编码不能为空 + materialMainService.initMaterialForDrawdingNo(parents, BomOriginalCadParentEntity::getChartNo, BomOriginalCadParentEntity::setMaterialNo, BomOriginalCadParentEntity::setMaterialName); + Set noMaterialNoChartNos = parents.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).map(u -> u.getChartNo()).collect(Collectors.toSet()); + VUtils.isTure(CollUtil.isNotEmpty(noMaterialNoChartNos)).throwMessage(StrUtil.join(",", noMaterialNoChartNos) + "物料编码为空,请检查(父级物料编码不能为空)"); - //父级物料编码不能为空 - materialMainService.initMaterialForDrawdingNo(parents, BomOriginalCadParentEntity::getChartNo, BomOriginalCadParentEntity::setMaterialNo, BomOriginalCadParentEntity::setMaterialName); - List noMaterialNoChartNos = parents.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).map(u -> u.getChartNo()).collect(Collectors.toList()); - VUtils.isTure(CollUtil.isNotEmpty(noMaterialNoChartNos)).throwMessage(StrUtil.join(",", noMaterialNoChartNos) + "物料编码为空,请检查(父级物料编码不能为空)"); + PlmBomToOriginalConvertV2 convert = new PlmBomToOriginalConvertV2(); + for (BomOriginalCadParentEntity parent : parents) { + //转原始BOM + convert.convertOriginalBom(parent); - PlmBomToOriginalConvertV2 convert = new PlmBomToOriginalConvertV2(); - for (BomOriginalCadParentEntity parent : parents) { - //转原始BOM - convert.convertOriginalBom(parent); - - } - if (CollUtil.isNotEmpty(convert.getResultParent())) { - this.saveOrUpdateBatch(convert.getResultParent()); - } - if (CollUtil.isNotEmpty(convert.getResultChild())) { - originalChildService.saveOrUpdateBatch(convert.getResultChild()); - } - //转Ebom - - if (CollUtil.isNotEmpty(convert.getResultParent())) { - toEBomResult = convertToEBomV2(convert.getResultParent().stream().map(u -> u.getRowId()).collect(Collectors.toList())); - } } - catch (Exception ex){ - VUtils.isTure(true).throwMessage("转换失败:"+ex.getMessage()); + if (CollUtil.isNotEmpty(convert.getResultParent())) { + this.saveOrUpdateBatch(convert.getResultParent()); } - finally { - //删除cad临时表数据 - List delRowIds = parents.stream().map(BomOriginalCadParentEntity::getRowId).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(delRowIds)) { - originalCadParentService.getBaseMapper().deleteBatchIds(delRowIds); - originalCadParentService.getBaseMapper().delChildByParentRowIds(delRowIds); - } + if (CollUtil.isNotEmpty(convert.getResultChild())) { + originalChildService.saveOrUpdateBatch(convert.getResultChild()); + } + //转Ebom + + if (CollUtil.isNotEmpty(convert.getResultParent())) { + toEBomResult = convertToEBomV2(convert.getResultParent().stream().map(u -> u.getRowId()).collect(Collectors.toList())); } return toEBomResult; } + @Transactional() + public void delCadData(List rowIds) { + if (CollUtil.isNotEmpty(rowIds)) { + originalCadParentService.getBaseMapper().deleteBatchIds(rowIds); + originalCadParentService.getBaseMapper().delChildByParentRowIds(rowIds); + } + } + /** * 原始BOM-转EBOM-v2 + * * @param bomRowIds * @return * @throws ExecutionException