发布Mbom
This commit is contained in:
parent
9f20578fef
commit
94cfdfb291
|
|
@ -125,7 +125,7 @@ public class PBomApi extends BaseApi {
|
|||
|
||||
@PostMapping("createTechnologyPackage")
|
||||
@ApiOperation("编辑-创建虚拟包")
|
||||
public ResultVO<BaseMaterialVO> createTechnologyPackage(TechnologyPackageParam packageParam) throws IOException {
|
||||
public ResultVO<BaseMaterialVO> createTechnologyPackage(@Valid @RequestBody TechnologyPackageParam packageParam) throws IOException {
|
||||
|
||||
return ResultVO.success( bomNewPbomParentService.createTechnologyPackage(packageParam));
|
||||
|
||||
|
|
@ -178,9 +178,6 @@ public class PBomApi extends BaseApi {
|
|||
VUtils.isTure(!PBomStatusEnum.PUBLISH.equalsValue(parent.getStatus())).throwMessage("只有已发布的BOM才能生成MBom");
|
||||
//
|
||||
VUtils.isTure(!parent.getFacCode().equals(EBomConstant.MAIN_FACTORY_CODE_1010)).throwMessage("只有1010工厂BOM才能进行分工厂");
|
||||
|
||||
|
||||
|
||||
return ResultVO.success(bomNewPbomParentService.convertToMBom(bomRowId));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -446,4 +446,13 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取CRM 订单号
|
||||
* @param materialNo
|
||||
* @return
|
||||
*/
|
||||
public String getCrmOrderNo(String materialNo){
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import com.nflg.product.bomnew.util.VUtils;
|
|||
import com.nflg.product.bomnew.util.VersionUtil;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import org.checkerframework.checker.units.qual.A;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -44,6 +45,10 @@ public class ConvertToMBom {
|
|||
|
||||
private List<ConvertToMBomDTO> allChild_1010;
|
||||
|
||||
private List<ConvertToMBomDTO> allChildTreeList_1020 = new ArrayList<>();
|
||||
|
||||
private List<ConvertToMBomDTO> allChildTreeList_1010 = new ArrayList();
|
||||
|
||||
@Getter
|
||||
List<BomNewMbomParentEntity> mBomParentResult = new ArrayList<>();
|
||||
|
||||
|
|
@ -54,7 +59,9 @@ public class ConvertToMBom {
|
|||
public ConvertToMBom(BomNewPbomParentEntity inRootParent, List<BomNewPbomParentVO> inAllChild) {
|
||||
this.parent = inRootParent;
|
||||
this.allChild_1010 = Convert.toList(ConvertToMBomDTO.class, inAllChild);
|
||||
Collections.copy(allChild_1010, allChild_1020);
|
||||
|
||||
allChild_1020 = (List<ConvertToMBomDTO>) ((ArrayList<ConvertToMBomDTO>) allChild_1010).clone();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -77,7 +84,7 @@ public class ConvertToMBom {
|
|||
BomNewMbomParentEntity mBomParent = new BomNewMbomParentEntity();
|
||||
BeanUtil.copyProperties(parent, mBomParent);
|
||||
BomNewMbomParentEntity oldParent = SpringUtil.getBean(BomNewMbomParentService.class).lambdaQuery().eq(BomNewMbomParentEntity::getMaterialNo, parent.getMaterialNo())
|
||||
.eq(BomNewMbomParentEntity::getLastVersionIs, 1).eq(BomNewMbomParentEntity::getFacCode,facCode).one();
|
||||
.eq(BomNewMbomParentEntity::getLastVersionIs, 1).eq(BomNewMbomParentEntity::getFacCode, facCode).one();
|
||||
if (Objects.nonNull(oldParent)) {
|
||||
mBomParent.setCurrentVersion(VersionUtil.getNextVersion(oldParent.getCurrentVersion()));
|
||||
oldParent.setLastVersionIs(0);
|
||||
|
|
@ -92,37 +99,35 @@ public class ConvertToMBom {
|
|||
mBomParent.setModifyTime(LocalDateTime.now());
|
||||
this.mBomParentResult.add(mBomParent);
|
||||
|
||||
buildChild(EBomConstant.MAIN_FACTORY_CODE_1010.equals(facCode)? allChild_1010:allChild_1020,mBomParent.getRowId());
|
||||
buildChild(EBomConstant.MAIN_FACTORY_CODE_1010.equals(facCode) ? allChildTreeList_1010 : allChildTreeList_1020, mBomParent.getRowId());
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 构建子级
|
||||
*
|
||||
* @param allChild
|
||||
*/
|
||||
private void buildChild(List<ConvertToMBomDTO> allChild, Long bomRowId) {
|
||||
List<ConvertToMBomDTO> childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChild_1010, ConvertToMBomDTO::getRelParentRowId, ConvertToMBomDTO::getBomRowId);
|
||||
|
||||
List<ConvertToMBomDTO> parentChildren;
|
||||
Long parentRowId = 0L;
|
||||
for (ConvertToMBomDTO item : childBomTree) {
|
||||
List<ConvertToMBomDTO> childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChild, ConvertToMBomDTO::getRelParentRowId, ConvertToMBomDTO::getBomRowId);
|
||||
; for (ConvertToMBomDTO item : childBomTree) {
|
||||
//构建子级
|
||||
if (item.getDelIs().equals(0)) {
|
||||
parentRowId = buildChildDo(item, bomRowId, 0L);
|
||||
}
|
||||
parentChildren = item.getChildNodes();
|
||||
while (CollUtil.isNotEmpty(parentChildren)) {
|
||||
for (ConvertToMBomDTO itemChild : parentChildren) {
|
||||
if (item.getDelIs().equals(0)) {
|
||||
parentRowId = buildChildDo(itemChild, bomRowId, parentRowId);
|
||||
}
|
||||
parentChildren = itemChild.getChildNodes();
|
||||
}
|
||||
buildMBomChildDo(item, 0L,bomRowId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void buildMBomChildDo(ConvertToMBomDTO item , Long parentRowId ,Long bomRowId){
|
||||
if (item.getDelIs().equals(0)) {
|
||||
parentRowId = buildChildDo(item, bomRowId, parentRowId);
|
||||
}
|
||||
for (ConvertToMBomDTO itemChild : item.getChildNodes()) {
|
||||
buildMBomChildDo(itemChild, parentRowId,bomRowId);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -130,16 +135,17 @@ public class ConvertToMBom {
|
|||
/**
|
||||
* 处理制作下为空的虚拟包
|
||||
* 当制作下子级为空时--删除该发货,制作,和直发
|
||||
* @param allChildTree
|
||||
*
|
||||
* @param
|
||||
*/
|
||||
private void handEmptyMakePackage(List<ConvertToMBomDTO> allChildTree){
|
||||
private void handEmptyMakePackage() {
|
||||
|
||||
List<ConvertToMBomDTO> childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChild_1020, ConvertToMBomDTO::getRelParentRowId, ConvertToMBomDTO::getBomRowId);
|
||||
for (ConvertToMBomDTO item : allChildTree) {
|
||||
if(VirtualPackageTypeEnum.DELIVERY_PACKAGE.equalsValue(item.getVirtualPartType()) ){
|
||||
List<ConvertToMBomDTO> childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChildTreeList_1020, ConvertToMBomDTO::getRelParentRowId, ConvertToMBomDTO::getBomRowId);
|
||||
for (ConvertToMBomDTO item : childBomTree) {
|
||||
if (VirtualPackageTypeEnum.DELIVERY_PACKAGE.equalsValue(item.getVirtualPartType())) {
|
||||
List<ConvertToMBomDTO> makeChild = item.getChildNodes().stream().filter(u -> VirtualPackageTypeEnum.MAKING_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList());
|
||||
|
||||
if(CollUtil.isEmpty(makeChild) || CollUtil.isEmpty(makeChild.get(0).getChildNodes().stream().filter(u->u.getDelIs().equals(0)).collect(Collectors.toList()))){
|
||||
if (CollUtil.isEmpty(makeChild) || CollUtil.isEmpty(makeChild.get(0).getChildNodes().stream().filter(u -> u.getDelIs().equals(0)).collect(Collectors.toList()))) {
|
||||
item.setRelParentRowId(0L);
|
||||
}
|
||||
}
|
||||
|
|
@ -162,100 +168,101 @@ public class ConvertToMBom {
|
|||
|
||||
}
|
||||
|
||||
|
||||
private void handler1010() {
|
||||
|
||||
List<ConvertToMBomDTO> childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChild_1010, ConvertToMBomDTO::getParentRowId, ConvertToMBomDTO::getBomRowId);
|
||||
|
||||
List<ConvertToMBomDTO> parentChildren;
|
||||
|
||||
for (ConvertToMBomDTO item : childBomTree) {
|
||||
//默认
|
||||
item.setRelParentRowId(item.getParentRowId());
|
||||
setDel(item, EBomConstant.MAIN_FACTORY_CODE_1010);
|
||||
parentChildren = item.getChildNodes();
|
||||
|
||||
while (CollUtil.isNotEmpty(parentChildren)) {
|
||||
for (ConvertToMBomDTO childItem : parentChildren) {
|
||||
//默认
|
||||
childItem.setRelParentRowId(childItem.getParentRowId());
|
||||
setDel(childItem, EBomConstant.MAIN_FACTORY_CODE_1010);
|
||||
|
||||
handlerMaterial(childItem, EBomConstant.MAIN_FACTORY_CODE_1010);
|
||||
parentChildren = childItem.getChildNodes();
|
||||
}
|
||||
}
|
||||
recursionHandlerChild1010(item);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理1020
|
||||
*/
|
||||
private void recursionHandlerChild1010(ConvertToMBomDTO item) {
|
||||
|
||||
item.setRelParentRowId(item.getParentRowId());
|
||||
setDel(item, EBomConstant.MAIN_FACTORY_CODE_1010);
|
||||
handlerMaterial(item, EBomConstant.MAIN_FACTORY_CODE_1010);
|
||||
|
||||
this.allChildTreeList_1010.add(item);
|
||||
for (ConvertToMBomDTO itemChild : item.getChildNodes()) {
|
||||
recursionHandlerChild1010(itemChild);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void handler1020() {
|
||||
List<ConvertToMBomDTO> childBomTree = ConvertToMbomUtil.toTree(parent.getRowId(), allChild_1020, ConvertToMBomDTO::getParentRowId, ConvertToMBomDTO::getBomRowId);
|
||||
//虚拟包名称加仙桃
|
||||
initFac1020Info(childBomTree);
|
||||
|
||||
List<ConvertToMBomDTO> parentChildren;
|
||||
|
||||
//31下直发包
|
||||
ConvertToMBomDTO directDeliveryPackage;
|
||||
|
||||
ConvertToMBomDTO parentNode = Convert.convert(ConvertToMBomDTO.class, parent);
|
||||
for (ConvertToMBomDTO item : childBomTree) {
|
||||
//默认
|
||||
item.setRelParentRowId(item.getParentRowId());
|
||||
setDel(item, EBomConstant.XIAN_TAO_FACTORY_CODE_1020);
|
||||
parentChildren = item.getChildNodes();
|
||||
directDeliveryPackage = item.getChildNodes().stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList()).get(0);
|
||||
VUtils.isTure(Objects.isNull(directDeliveryPackage)).throwMessage("发货包下,没有直发包");
|
||||
while (CollUtil.isNotEmpty(parentChildren)) {
|
||||
parentNode = item;
|
||||
for (ConvertToMBomDTO childItem : parentChildren) {
|
||||
|
||||
//默认
|
||||
childItem.setRelParentRowId(childItem.getParentRowId());
|
||||
setDel(childItem, EBomConstant.XIAN_TAO_FACTORY_CODE_1020);
|
||||
//非31下的直发包
|
||||
if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(parentNode.getVirtualPartType()) && parentNode.getRowId() != directDeliveryPackage.getRowId()) {
|
||||
handlerDirectDeliveryPackage(childItem, EBomConstant.XIAN_TAO_FACTORY_CODE_1020, directDeliveryPackage);
|
||||
} else {
|
||||
handlerMaterial(childItem, EBomConstant.XIAN_TAO_FACTORY_CODE_1020);
|
||||
}
|
||||
parentChildren = childItem.getChildNodes();
|
||||
parentNode = childItem;
|
||||
}
|
||||
}
|
||||
ConvertToMBomDTO directDeliveryPackage = item.getChildNodes().stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList()).get(0);
|
||||
VUtils.isTure(Objects.isNull(directDeliveryPackage)).throwMessage("发货包下,没有直发包");
|
||||
|
||||
recursionHandlerChild1020(item, directDeliveryPackage);
|
||||
}
|
||||
//处理制作包无下级的情况
|
||||
handEmptyMakePackage(childBomTree);
|
||||
handEmptyMakePackage();
|
||||
|
||||
}
|
||||
|
||||
private void recursionHandlerChild1020(ConvertToMBomDTO item, ConvertToMBomDTO directDeliveryPackage) {
|
||||
|
||||
|
||||
item.setRelParentRowId(item.getParentRowId());
|
||||
setDel(item, EBomConstant.XIAN_TAO_FACTORY_CODE_1020);
|
||||
//非31下的直发包
|
||||
if(!item.getParentRowId().equals(parent.getRowId())) {
|
||||
ConvertToMBomDTO parentNode = getParent(item.getParentRowId(), EBomConstant.XIAN_TAO_FACTORY_CODE_1020);
|
||||
if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(parentNode.getVirtualPartType()) && parentNode.getRowId() != directDeliveryPackage.getRowId()) {
|
||||
handlerDirectDeliveryPackage(item, EBomConstant.XIAN_TAO_FACTORY_CODE_1020, directDeliveryPackage);
|
||||
} else {
|
||||
handlerMaterial(item, EBomConstant.XIAN_TAO_FACTORY_CODE_1020);
|
||||
}
|
||||
}
|
||||
this.allChildTreeList_1020.add(item);
|
||||
for (ConvertToMBomDTO itemChild : item.getChildNodes()) {
|
||||
recursionHandlerChild1020(itemChild, directDeliveryPackage);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 处理直发包下的物料
|
||||
* 所有直发包,归到31下的直发包
|
||||
*/
|
||||
private void handlerDirectDeliveryPackage(ConvertToMBomDTO childItem, String facCode, ConvertToMBomDTO directDeliveryPackage) {
|
||||
ConvertToMBomDTO relParent = getParent(childItem.getParentRowId(), facCode);
|
||||
while (Objects.nonNull(relParent) && !VirtualPackageTypeEnum.MAKING_PACKAGE.equalsValue(relParent.getVirtualPartType())) {
|
||||
childItem.setNum(NumberUtil.mul(childItem.getNum(), relParent.getNum()));
|
||||
relParent = getParent(relParent.getParentRowId(), facCode);
|
||||
if (!childItem.getParentRowId().equals(parent.getRowId())) {
|
||||
ConvertToMBomDTO relParent = getParent(childItem.getParentRowId(), facCode);
|
||||
while (Objects.nonNull(relParent) && !VirtualPackageTypeEnum.MAKING_PACKAGE.equalsValue(relParent.getVirtualPartType())) {
|
||||
childItem.setNum(NumberUtil.mul(childItem.getNum(), relParent.getNum()));
|
||||
relParent = getParent(relParent.getParentRowId(), facCode);
|
||||
}
|
||||
childItem.setRelParentRowId(directDeliveryPackage.getBomRowId());
|
||||
}
|
||||
childItem.setRelParentRowId(directDeliveryPackage.getBomRowId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理一般材料
|
||||
* 处理一般材料(提层)
|
||||
*
|
||||
* @param childItem
|
||||
* @param facCode
|
||||
*/
|
||||
private void handlerMaterial(ConvertToMBomDTO childItem, String facCode) {
|
||||
ConvertToMBomDTO relParent = getParent(childItem.getParentRowId(), facCode);
|
||||
while (Objects.nonNull(relParent) && relParent.getDelIs().equals(1)) {
|
||||
childItem.setNum(NumberUtil.mul(childItem.getNum(), relParent.getNum()));
|
||||
relParent = getParent(relParent.getParentRowId(), facCode);
|
||||
if (!childItem.getParentRowId().equals(parent.getRowId())) {
|
||||
ConvertToMBomDTO relParent = getParent(childItem.getParentRowId(), facCode);
|
||||
while (Objects.nonNull(relParent) && relParent.getDelIs().equals(1)) {
|
||||
childItem.setNum(NumberUtil.mul(childItem.getNum(), relParent.getNum()));
|
||||
relParent = getParent(relParent.getParentRowId(), facCode);
|
||||
}
|
||||
childItem.setRelParentRowId(relParent.getBomRowId());
|
||||
}
|
||||
childItem.setRelParentRowId(relParent.getBomRowId());
|
||||
|
||||
}
|
||||
|
||||
private void setDel(ConvertToMBomDTO item, String facCode) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue