物料,工厂规则匹配接口迁移

This commit is contained in:
luoliming 2024-01-28 22:36:40 +08:00
parent c156fc5ca8
commit f73e7bbeb9
4 changed files with 91 additions and 19 deletions

View File

@ -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<Boolean> pullFromPlm() {
public ResultVO<List<ImportOriginalBomVO>> pullFromPlm() {
originalParentService.pullFromPlm(SessionUtil.getUserCode());
List<ImportOriginalBomVO> 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<Boolean> computeTreeHeight() throws ExecutionException, InterruptedException {
return ResultVO.success(originalParentService.compucteLevelNum());
}
// @GetMapping("computeTreeHeight")
// @ApiOperation("计算树的高度(测试用)")
// public ResultVO<Boolean> 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<Boolean> importBom(@RequestParam(value = "file") MultipartFile file) throws IOException {
public ResultVO<List<ImportOriginalBomVO>> 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<ImportOriginalBomVO> 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<Boolean> computeLevelNum(@RequestBody List<Long> bomRowIds){
try {
originalParentService.compucteLevelNum(bomRowIds);
} catch (Exception e) {
return ResultVO.error(STATE.Error,"计算失败:"+e.getMessage());
}
return ResultVO.success();
}
}

View File

@ -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;
}

View File

@ -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<BomNewOriginalParen
*
* @param
*/
@Deprecated
public boolean compucteLevelNum() throws ExecutionException, InterruptedException {
List<BomNewOriginalParentEntity> list = this.lambdaQuery().le(BomNewOriginalParentEntity::getLevelNum, 0).list();
@ -351,13 +353,37 @@ public class BomNewOriginalParentService extends ServiceImpl<BomNewOriginalParen
}
/**
* 计算BOM树高度
*
* @param
*/
public boolean compucteLevelNum(List<Long> bomRowIds) throws ExecutionException, InterruptedException {
List<BomNewOriginalParentEntity> list = this.getBaseMapper().selectBatchIds(bomRowIds);
if (CollUtil.isNotEmpty(list)) {
for (BomNewOriginalParentEntity bom : list) {
// bom.setRootIs(1);
List<BomOriginalListVO> bomDetail = this.getBaseMapper().getParentChild(bom.getRowId());
OriginalBomDetailTask detailTask = new OriginalBomDetailTask(bomDetail);
detailTask.setLevelNum(1);
ForkJoinTask<List<BomOriginalListVO>> 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<ImportOriginalBomVO> pullFromPlm(String userCode) {
List<BomOriginalCadParentEntity> 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<BomNewOriginalParen
originalCadParentService.getBaseMapper().delChildByParentRowIds(delRowIds);
}
return convert.getImportErrorResult();
}
/**
@ -393,7 +421,7 @@ public class BomNewOriginalParentService extends ServiceImpl<BomNewOriginalParen
this.getBaseMapper().updateRootState_1();
this.getBaseMapper().updateRootState_2();
this.getBaseMapper().updateRootState_3();
this.compucteLevelNum();
// this.compucteLevelNum();
} catch (Exception e) {
@ -496,7 +524,7 @@ public class BomNewOriginalParentService extends ServiceImpl<BomNewOriginalParen
/**
* 原始BOM导入
*/
public void importBom(MultipartFile file) throws IOException {
public List<ImportOriginalBomVO> 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<BomNewOriginalParen
List<BomNewOriginalExcelDTO> noMaterialNoList = excelContext.stream().filter(u -> StrUtil.isBlank(u.getMaterialNo())).collect(Collectors.toList());
materialMainService.initMaterialForDrawdingNo(noMaterialNoList, BomNewOriginalExcelDTO::getChartNo, BomNewOriginalExcelDTO::setMaterialNo, BomNewOriginalExcelDTO::setMaterialName);
List<ImportOriginalBomVO> errResult=new ArrayList<>();
//转换
for (BomNewOriginalExcelDTO data : excelContext) {
PlmBomToOriginalConvert convert = new PlmBomToOriginalConvert();
@ -537,8 +566,12 @@ public class BomNewOriginalParentService extends ServiceImpl<BomNewOriginalParen
originalChildService.saveOrUpdateBatch(convert.getResultChild());
}
}
errResult.addAll(convert.getImportErrorResult());
}
excelContextTL.remove();
return errResult;
}
public static void handlerExcelRow(BomNewOriginalExcelDTO data) {

View File

@ -13,10 +13,12 @@ import com.nflg.product.bomnew.mapper.master.MaterialMainMapper;
import com.nflg.product.bomnew.pojo.entity.*;
import com.nflg.product.bomnew.pojo.vo.BaseMaterialVO;
import com.nflg.product.bomnew.pojo.vo.BomOriginalPlmBomVO;
import com.nflg.product.bomnew.pojo.vo.ImportOriginalBomVO;
import com.nflg.product.bomnew.pojo.vo.MaterialMateVO;
import com.nflg.product.bomnew.service.BomOriginalCadChildService;
import com.nflg.product.bomnew.service.MaterialMainService;
import com.nflg.product.bomnew.util.VUtils;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
@ -34,6 +36,10 @@ public class PlmBomToOriginalConvert extends BaseConvert {
List<BomOriginalPlmBomVO> data = new ArrayList<>();
@Getter
//有异常-bom 的图号
List<ImportOriginalBomVO> 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()<EBomStatusEnum.PUBLISHED.getValue()) {
//相同用户
if (ebom.getCreatedBy() == parent.getCreatedBy()) {
VUtils.isTure(true).throwMessage("图号:"+parent.getChartNo()+"此数据已创建BOM请删除BOM重新导入");
importErrorResult.add(new ImportOriginalBomVO(parent.getChartNo(),"此数据已创建BOM请删除BOM重新导入") );
// VUtils.isTure(true).throwMessage("图号:"+parent.getChartNo()+"此数据已创建BOM请删除BOM重新导入");
} else {
VUtils.isTure(true).throwMessage("图号:"+parent.getChartNo()+"此数据已被其他用户创建,请联系其他人处理");
importErrorResult.add(new ImportOriginalBomVO( parent.getChartNo(),"此数据已被其他用户创建,请联系其他人处理"));
// VUtils.isTure(true).throwMessage("图号:"+parent.getChartNo()+"此数据已被其他用户创建,请联系其他人处理");
}
} else { //ebom为正式状态
// BOM结构不相同