From f73e7bbeb92139cb113d3eca7e425736bfa5d586 Mon Sep 17 00:00:00 2001 From: luoliming Date: Sun, 28 Jan 2024 22:36:40 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E6=96=99=EF=BC=8C=E5=B7=A5=E5=8E=82?= =?UTF-8?q?=E8=A7=84=E5=88=99=E5=8C=B9=E9=85=8D=E6=8E=A5=E5=8F=A3=E8=BF=81?= =?UTF-8?q?=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bomnew/api/user/OriginalBomApi.java | 36 +++++++++++------ .../bomnew/pojo/vo/ImportOriginalBomVO.java | 17 ++++++++ .../service/BomNewOriginalParentService.java | 39 +++++++++++++++++-- .../OriginalBom/PlmBomToOriginalConvert.java | 18 +++++++-- 4 files changed, 91 insertions(+), 19 deletions(-) create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ImportOriginalBomVO.java 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 0af6eff8..13e06db6 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 @@ -11,6 +11,7 @@ import com.nflg.product.bomnew.pojo.dto.BomNewOriginalExcelDTO; import com.nflg.product.bomnew.pojo.dto.OriginalSaveBomDTO; import com.nflg.product.bomnew.pojo.query.OriginalBomQuery; import com.nflg.product.bomnew.pojo.vo.BomOriginalListVO; +import com.nflg.product.bomnew.pojo.vo.ImportOriginalBomVO; import com.nflg.product.bomnew.pojo.vo.MaterialMateVO; import com.nflg.product.bomnew.service.BomNewEbomParentService; import com.nflg.product.bomnew.service.BomNewOriginalParentService; @@ -96,16 +97,16 @@ public class OriginalBomApi extends BaseApi { @PostMapping("pullFromCad") @ApiOperation("从CAD获取BOM数据") //去除参数 @RequestBody OriginalBomFromPlmQuery dto @Transactional(rollbackFor = Exception.class) - public ResultVO pullFromPlm() { + public ResultVO> pullFromPlm() { - originalParentService.pullFromPlm(SessionUtil.getUserCode()); + List result = originalParentService.pullFromPlm(SessionUtil.getUserCode()); originalParentService.computeLevelNumAndRootState(); //更新物料使用 originalParentService.getBaseMapper().upOriginalMaterialUse(); - return ResultVO.success(true); + return ResultVO.success(result); } @GetMapping("del") @@ -120,12 +121,12 @@ public class OriginalBomApi extends BaseApi { } - @GetMapping("computeTreeHeight") - @ApiOperation("计算树的高度(测试用)") - public ResultVO computeTreeHeight() throws ExecutionException, InterruptedException { - return ResultVO.success(originalParentService.compucteLevelNum()); - - } +// @GetMapping("computeTreeHeight") +// @ApiOperation("计算树的高度(测试用)") +// public ResultVO computeTreeHeight() throws ExecutionException, InterruptedException { +// return ResultVO.success(originalParentService.compucteLevelNum()); +// +// } /** * 原始BOM转EBom @@ -162,18 +163,18 @@ public class OriginalBomApi extends BaseApi { @ApiOperation("导入") @PostMapping("importBom") @Transactional(rollbackFor = Exception.class) - public ResultVO importBom(@RequestParam(value = "file") MultipartFile file) throws IOException { + public ResultVO> importBom(@RequestParam(value = "file") MultipartFile file) throws IOException { if (file != null && !file.getOriginalFilename().endsWith("xls") && !file.getOriginalFilename().endsWith("xlsx")) { return ResultVO.error("请上传Excel文件"); } - originalParentService.importBom(file); + List result = originalParentService.importBom(file); //计算层级 originalParentService.computeLevelNumAndRootState(); //更新物料使用 originalParentService.getBaseMapper().upOriginalMaterialUse(); - return ResultVO.success(true); + return ResultVO.success(result); } @@ -230,5 +231,16 @@ public class OriginalBomApi extends BaseApi { } + @ApiOperation("计算BOM物料数量") + @PostMapping("computeBomMaterialNum") + public ResultVO computeLevelNum(@RequestBody List bomRowIds){ + try { + originalParentService.compucteLevelNum(bomRowIds); + } catch (Exception e) { + return ResultVO.error(STATE.Error,"计算失败:"+e.getMessage()); + } + return ResultVO.success(); + } + } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ImportOriginalBomVO.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ImportOriginalBomVO.java new file mode 100644 index 00000000..9d04fe44 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/vo/ImportOriginalBomVO.java @@ -0,0 +1,17 @@ +package com.nflg.product.bomnew.pojo.vo; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class ImportOriginalBomVO { + + @ApiModelProperty("图号") + private String drawingNo; + + @ApiModelProperty("导入时的异常信息") + private String msg; +} 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 995dc2c5..6c7408eb 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 @@ -21,6 +21,7 @@ import com.nflg.product.bomnew.pojo.query.OriginalBomQuery; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; 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.EBom.CheckEBomException; import com.nflg.product.bomnew.service.domain.OriginalBom.OriginalBomDetailTask; import com.nflg.product.bomnew.service.domain.OriginalBom.OriginalBomToEBomConvert; @@ -332,6 +333,7 @@ public class BomNewOriginalParentService extends ServiceImpl list = this.lambdaQuery().le(BomNewOriginalParentEntity::getLevelNum, 0).list(); @@ -351,13 +353,37 @@ public class BomNewOriginalParentService extends ServiceImpl bomRowIds) throws ExecutionException, InterruptedException { + List list = this.getBaseMapper().selectBatchIds(bomRowIds); + + if (CollUtil.isNotEmpty(list)) { + for (BomNewOriginalParentEntity bom : list) { + // bom.setRootIs(1); + List bomDetail = this.getBaseMapper().getParentChild(bom.getRowId()); + OriginalBomDetailTask detailTask = new OriginalBomDetailTask(bomDetail); + detailTask.setLevelNum(1); + ForkJoinTask> submit = bomDetailPool.submit(detailTask); + submit.get(); + bom.setLevelNum(detailTask.getLevelNum()); + } + this.saveOrUpdateBatch(list); + } + return true; + + } + /** * 从plm 转原始BOM * * @param */ @Transactional(rollbackFor = Exception.class) - public void pullFromPlm(String userCode) { + public List pullFromPlm(String userCode) { List parents = originalCadParentService.lambdaQuery().eq(BomOriginalCadParentEntity::getStatus, 1).eq(BomOriginalCadParentEntity::getCreatedBy, userCode).list(); VUtils.isTure(CollUtil.isEmpty(parents)).throwMessage("没有你的数据,你无需转换"); @@ -382,6 +408,8 @@ public class BomNewOriginalParentService extends ServiceImpl importBom(MultipartFile file) throws IOException { rowNum.set(1); excelContextTL.set(new ArrayList<>()); String uuid = IdUtil.simpleUUID(); @@ -518,6 +546,7 @@ public class BomNewOriginalParentService extends ServiceImpl noMaterialNoList = excelContext.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList()); materialMainService.initMaterialForDrawdingNo(noMaterialNoList, BomNewOriginalExcelDTO::getChartNo, BomNewOriginalExcelDTO::setMaterialNo, BomNewOriginalExcelDTO::setMaterialName); + List errResult=new ArrayList<>(); //转换 for (BomNewOriginalExcelDTO data : excelContext) { PlmBomToOriginalConvert convert = new PlmBomToOriginalConvert(); @@ -537,8 +566,12 @@ public class BomNewOriginalParentService extends ServiceImpl data = new ArrayList<>(); + @Getter + //有异常-bom 的图号 + List importErrorResult=new ArrayList<>(); + /** @@ -112,9 +118,11 @@ public class PlmBomToOriginalConvert extends BaseConvert { handlerChild(originalBom,originalSourceEnum); } else { //用户不一致 if (isSame(getBomChild(originalBom.getRowId()), Convert.toList(BomNewOriginalChildEntity.class, childs))) { - VUtils.isTure(true).throwMessage("图号:"+parent.getChartNo()+"的BOM数据和" + originalBom.getCreatedBy() + "导入的数据不一致,请沟通处理"); + importErrorResult.add(new ImportOriginalBomVO(parent.getChartNo(),"BOM数据和" + originalBom.getCreatedBy() + "导入的数据不一致,请沟通处理")); + // VUtils.isTure(true).throwMessage("图号:"+parent.getChartNo()+"的BOM数据和" + originalBom.getCreatedBy() + "导入的数据不一致,请沟通处理"); } else { - VUtils.isTure(true).throwMessage("图号:"+parent.getChartNo()+" "+originalBom.getCreatedBy() + "已导入了相同的BOM,直接引用"); + importErrorResult.add(new ImportOriginalBomVO( parent.getChartNo(),originalBom.getCreatedBy() + "已导入了相同的BOM,直接引用")); + // VUtils.isTure(true).throwMessage("图号:"+parent.getChartNo()+" "+originalBom.getCreatedBy() + "已导入了相同的BOM,直接引用"); } } } @@ -124,10 +132,12 @@ public class PlmBomToOriginalConvert extends BaseConvert { if (ebom.getStatus()