Merge branch 'feature/DM/nflg-bom' of http://112.74.186.154:3000/nflj/nflg_project into feature/DM/nflg-bom

This commit is contained in:
jing's 2023-12-18 21:15:08 +08:00
commit 8c2b28999a
4 changed files with 152 additions and 12 deletions

View File

@ -17,6 +17,7 @@ import com.nflg.product.bomnew.pojo.vo.BomOriginalListVO;
import com.nflg.product.bomnew.service.BomNewEbomParentService; import com.nflg.product.bomnew.service.BomNewEbomParentService;
import com.nflg.product.bomnew.service.BomNewOriginalParentService; import com.nflg.product.bomnew.service.BomNewOriginalParentService;
import com.nflg.product.bomnew.service.MaterialMainService; import com.nflg.product.bomnew.service.MaterialMainService;
import com.nflg.product.bomnew.service.UserRoleService;
import com.nflg.product.bomnew.service.domain.EBom.VirtualPackageBase; import com.nflg.product.bomnew.service.domain.EBom.VirtualPackageBase;
import com.nflg.product.bomnew.service.domain.EBom.VirtualPackageFor31; import com.nflg.product.bomnew.service.domain.EBom.VirtualPackageFor31;
import com.nflg.product.bomnew.util.EecExcelUtil; import com.nflg.product.bomnew.util.EecExcelUtil;
@ -61,6 +62,9 @@ public class EbomApi extends BaseApi {
@Resource @Resource
private MaterialMainService materialMainService; private MaterialMainService materialMainService;
@Resource
private UserRoleService userRoleService;
@PostMapping("workDetailsListByPage") @PostMapping("workDetailsListByPage")
@ApiOperation("Ebom-工作明细列表") @ApiOperation("Ebom-工作明细列表")
@ -102,8 +106,12 @@ public class EbomApi extends BaseApi {
bomNewEbomParentService.generateVirtualPackage(paramDto); bomNewEbomParentService.generateVirtualPackage(paramDto);
VUtils.isTure(true).throwMessage("请选择30开头的或200401类型的物料"); VUtils.isTure(true).throwMessage("请选择30开头的或200401类型的物料");
return ResultVO.success(true); return ResultVO.success(true);
}
@PostMapping("generateRolePost")
@ApiOperation("获取用户角色岗位")
public ResultVO<List<String>> generateRolePost() {
return ResultVO.success(userRoleService.getUserPost());
} }
@PostMapping("convertToPBom") @PostMapping("convertToPBom")

View File

@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableList;
import com.nflg.product.base.core.api.BaseApi; import com.nflg.product.base.core.api.BaseApi;
import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.base.core.conmon.util.SessionUtil;
import com.nflg.product.base.core.exception.NflgBusinessException; import com.nflg.product.base.core.exception.NflgBusinessException;
import com.nflg.product.bomnew.mapper.master.BomNewEbomChildMapper;
import com.nflg.product.bomnew.pojo.dto.BomNewOriginalExcelDTO; import com.nflg.product.bomnew.pojo.dto.BomNewOriginalExcelDTO;
import com.nflg.product.bomnew.pojo.dto.OriginalSaveBomDTO; import com.nflg.product.bomnew.pojo.dto.OriginalSaveBomDTO;
import com.nflg.product.bomnew.pojo.query.OriginalBomQuery; import com.nflg.product.bomnew.pojo.query.OriginalBomQuery;
@ -52,6 +53,9 @@ public class OriginalBomApi extends BaseApi {
@Resource @Resource
MaterialService materialService; MaterialService materialService;
@Resource
BomNewEbomChildMapper bomNewEbomChildMapper;
@PostMapping("bomPage") @PostMapping("bomPage")
@ApiOperation("原始BOM-列表") @ApiOperation("原始BOM-列表")
public ResultVO<Page<BomOriginalListVO>> bomPage(@RequestBody OriginalBomQuery query) { public ResultVO<Page<BomOriginalListVO>> bomPage(@RequestBody OriginalBomQuery query) {
@ -120,7 +124,10 @@ public class OriginalBomApi extends BaseApi {
VUtils.isTure(CollUtil.isEmpty(bomRowIds)).throwMessage("请选择要转换的BOM"); VUtils.isTure(CollUtil.isEmpty(bomRowIds)).throwMessage("请选择要转换的BOM");
VUtils.isTure(bomRowIds.size()>20).throwMessage("你选择的BOM数据大于20"); VUtils.isTure(bomRowIds.size()>20).throwMessage("你选择的BOM数据大于20");
return ResultVO.success(originalParentService.convertToEBom(bomRowIds)); originalParentService.convertToEBom(bomRowIds);
//更新物料使用
bomNewEbomChildMapper.updateEBomMaterialUse();
return ResultVO.success(true);
} }

View File

@ -8,15 +8,16 @@ import lombok.Getter;
@Getter @Getter
public enum VirtualPackageTypeEnum implements ValueEnum<Integer>{ public enum VirtualPackageTypeEnum implements ValueEnum<Integer>{
//1-发货包 2-制作包 4-直发包 8-发货前装配包 //1-发货包 2-制作包 4-直发包 8-发货前装配包
DELIVERY_PACKAGE(1,"发货包","发货" ,"201101"), DELIVERY_PACKAGE(1,"发货包","发货" ,"201101", ""),
MAKING_PACKAGE(2,"制作包","制作","201101"), MAKING_PACKAGE(2,"制作包","制作","201101",""),
DIRECT_DELIVERY_PACKAGE(4,"直发包","直发","201101"), DIRECT_DELIVERY_PACKAGE(4,"直发包","直发","201101","F"),
PRE_ASSEMBLY_PACKAGE(8,"发货前装配包","发货前装配","201201"); PRE_ASSEMBLY_PACKAGE(8,"发货前装配包","发货前装配","201201","Z");
private final Integer value; private final Integer value;
private final String description; private final String description;
private final String conMaterialName; private final String conMaterialName;
private final String materialCategoryCode; private final String materialCategoryCode;
private final String productTypeKey;
public static Integer getAll(){ public static Integer getAll(){

View File

@ -1,12 +1,14 @@
package com.nflg.product.bomnew.service.domain.EBom; package com.nflg.product.bomnew.service.domain.EBom;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.nflg.product.bomnew.constant.VirtualPackageTypeEnum;
import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity; import com.nflg.product.bomnew.pojo.entity.BomNewEbomParentEntity;
import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO; import com.nflg.product.bomnew.pojo.vo.BomNewEbomParentVO;
import lombok.Getter;
import java.util.HashMap; import java.math.BigDecimal;
import java.util.List; import java.util.*;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -19,12 +21,108 @@ public class EBomToPBom {
private List<BomNewEbomParentVO> allBomDetail; private List<BomNewEbomParentVO> allBomDetail;
private List<BomNewEbomParentVO> result = new ArrayList<>();
@Getter
private List<BomNewEbomParentVO> parentResult = new ArrayList<>();
@Getter
private List<BomNewEbomParentVO> childResult = new ArrayList<>();
private Map<String, String> generateDrawingNoMap = new HashMap<>(); private Map<String, String> generateDrawingNoMap = new HashMap<>();
public EBomToPBom(BomNewEbomParentVO inParent, List<BomNewEbomParentVO> inAllBomDetail) { public EBomToPBom(BomNewEbomParentVO inParent, List<BomNewEbomParentVO> inAllBomDetail) {
this.parent = inParent; this.parent = inParent;
this.allBomDetail = inAllBomDetail; this.allBomDetail = inAllBomDetail;
generateDrawingNo(allBomDetail, inParent.getRowId(), "");
}
public void buildResult(){
parentResult=result.stream().filter(u->u.getBomRowId()>0).collect(Collectors.toList());
parentResult.add(parent);
childResult=result;
}
/**
* 31項体层
*/
private void handlerProjectFor31() {
for (BomNewEbomParentVO vo : allBomDetail) {
if (vo.getProjectType().equals(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey())) {
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackage(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
if (Objects.nonNull(lastVirtualPackage)) {
vo.setParentRowId(lastVirtualPackage.getBomRowId());
result.add(vo);
}
continue;
}
if (vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) {
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackage(vo, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
if (Objects.nonNull(lastVirtualPackage)) {
vo.setParentRowId(lastVirtualPackage.getBomRowId());
result.add(vo);
}
continue;
}
result.add(vo);
}
}
/**
* 21项体层
*/
private void handlerProjectFor21() {
for (BomNewEbomParentVO vo : allBomDetail) {
if (vo.getProjectType().equals(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey())) {
BomNewEbomParentVO lastVirtualPackage = getLastVirtualPackage(vo, VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE);
if (Objects.nonNull(lastVirtualPackage)) {
vo.setParentRowId(lastVirtualPackage.getBomRowId());
result.add(vo);
}
continue;
}
if (vo.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) {
BomNewEbomParentVO lastVirtualPackage = getVirtualPackageByName(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE);
if (Objects.nonNull(lastVirtualPackage)) {
vo.setParentRowId(lastVirtualPackage.getBomRowId());
result.add(vo);
}
continue;
}
result.add(vo);
}
}
private BomNewEbomParentVO getLastVirtualPackage(BomNewEbomParentVO vo, VirtualPackageTypeEnum virtualPackageTypeEnum) {
List<BomNewEbomParentVO> zhiFaList = allBomDetail.stream().filter(u -> vo.getLevelNumber().compareTo(u.getLevelNumber()) > 0 && u.getMaterialName().contains(virtualPackageTypeEnum.getConMaterialName())).collect(Collectors.toList());
return Collections.max(zhiFaList, Comparator.comparing(BomNewEbomParentVO::getLevelNumber));
}
private BomNewEbomParentVO getVirtualPackageByName( VirtualPackageTypeEnum virtualPackageTypeEnum) {
List<BomNewEbomParentVO> list = allBomDetail.stream().filter(u -> u.getMaterialName().contains(virtualPackageTypeEnum.getConMaterialName())).collect(Collectors.toList());
if(CollUtil.isNotEmpty(list)){
return list.get(0);
}
return null;
} }
@ -42,11 +140,11 @@ public class EBomToPBom {
for (BomNewEbomParentVO firstLevelBom : firstLevelBoms) { for (BomNewEbomParentVO firstLevelBom : firstLevelBoms) {
String key = StrUtil.join("-", bomRowID.toString(), firstLevelBom.getMaterialNo()); String key = StrUtil.join("-", bomRowID.toString(), firstLevelBom.getMaterialNo());
if (generateDrawingNoMap.containsKey(key)) { if (generateDrawingNoMap.containsKey(key)) {
// firstLevelBom.setLevelNumber(generateDrawingNoMap.get(key)); firstLevelBom.setLevelNumber(levelToNum(generateDrawingNoMap.get(key)));
continue; continue;
} }
String levelKey = StrUtil.isNotBlank(parentDrawingNo) ? StrUtil.join("-", parentDrawingNo, gNo.toString()) : gNo.toString();
firstLevelBom.setDrawingNo(StrUtil.isNotBlank(parentDrawingNo) ? StrUtil.join("-", parentDrawingNo, gNo.toString()) : gNo.toString()); firstLevelBom.setLevelNumber(levelToNum(levelKey));
gNo++; gNo++;
generateDrawingNo(saveBomDetailParamDTO, firstLevelBom.getChildBomRowId(), firstLevelBom.getDrawingNo()); generateDrawingNo(saveBomDetailParamDTO, firstLevelBom.getChildBomRowId(), firstLevelBom.getDrawingNo());
@ -57,5 +155,31 @@ public class EBomToPBom {
} }
/**
* 转换层级号为数字
*
* @param strLevel
* @return
*/
private BigDecimal levelToNum(String strLevel) {
if (StrUtil.isEmpty(strLevel)) {
return null;
}
if (strLevel.indexOf('-') == -1) {
return new BigDecimal(strLevel);
}
String[] fromArray = strLevel.split("-");
String reuslt = "";
for (int i = 0; i < fromArray.length; i++) {
if (i == 0) {
reuslt = fromArray[i] + '.';
} else {
reuslt += StrUtil.padPre(fromArray[i], 2, '0');
}
}
return new BigDecimal(reuslt);
}
} }