Merge remote-tracking branch 'origin/feature/DM/nflg-bom' into feature/DM/nflg-bom

This commit is contained in:
luoliming 2024-02-02 15:47:30 +08:00
commit d5615be227
6 changed files with 148 additions and 72 deletions

View File

@ -3,6 +3,7 @@ package com.nflg.product.bomnew.pojo.dto;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.nflg.product.base.core.conmon.util.SessionUtil; import com.nflg.product.base.core.conmon.util.SessionUtil;
import com.nflg.product.bomnew.constant.VirtualPackageTypeEnum;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.ttzero.excel.annotation.ExcelColumn; import org.ttzero.excel.annotation.ExcelColumn;
@ -71,4 +72,26 @@ public class BomNewEBomImportExcelDTO {
@ApiModelProperty("物料状态") @ApiModelProperty("物料状态")
private Integer materialStatus; private Integer materialStatus;
@ApiModelProperty("0-非虚拟包 1-发货包 2-制作包 4-直发包 8-发货前装配包")
private Integer virtualPartType;
public Integer getVirtualPartType() {
if( drawingNo.contains(VirtualPackageTypeEnum.DELIVERY_PACKAGE.getConMaterialName())){
return VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue();
}
else if( drawingNo.contains(VirtualPackageTypeEnum.MAKING_PACKAGE.getConMaterialName())){
return VirtualPackageTypeEnum.MAKING_PACKAGE.getValue();
}
else if( drawingNo.contains(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getConMaterialName())){
return VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getValue();
}
else if( drawingNo.contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getConMaterialName())){
return VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue();
}
else {
return 0;
}
}
} }

View File

@ -43,7 +43,7 @@ public class BaseMaterialVO {
private Integer materialState; private Integer materialState;
@ApiModelProperty("图号") @ApiModelProperty("图号")
private String drawingNo; protected String drawingNo;
/** /**
* 材料 * 材料

View File

@ -2,6 +2,7 @@ package com.nflg.product.bomnew.pojo.vo;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.nflg.product.bomnew.constant.VirtualPackageTypeEnum;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@ -181,6 +182,27 @@ public class BomOriginalListVO extends BaseMaterialVO {
@ApiModelProperty("转换后Ebom行ID") @ApiModelProperty("转换后Ebom行ID")
private Long eBomRowId=0L; private Long eBomRowId=0L;
@ApiModelProperty("0-非虚拟包 1-发货包 2-制作包 4-直发包 8-发货前装配包")
private Integer virtualPartType;
public Integer getVirtualPartType() {
if( drawingNo.contains(VirtualPackageTypeEnum.DELIVERY_PACKAGE.getConMaterialName())){
return VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue();
}
else if( drawingNo.contains(VirtualPackageTypeEnum.MAKING_PACKAGE.getConMaterialName())){
return VirtualPackageTypeEnum.MAKING_PACKAGE.getValue();
}
else if( drawingNo.contains(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getConMaterialName())){
return VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getValue();
}
else if( drawingNo.contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getConMaterialName())){
return VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue();
}
else {
return 0;
}
}
private List<BomOriginalListVO> childNodes = Collections.emptyList(); private List<BomOriginalListVO> childNodes = Collections.emptyList();

View File

@ -18,6 +18,7 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
@ -280,7 +281,7 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
//排除项目类别的赋值 //排除项目类别的赋值
materialMainService.intiMaterialInfoInPattern(parentChild, "^21 | ^31", EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT); materialMainService.intiMaterialInfoInPattern(parentChild, "^21 | ^31", EBomConstant.EBOM_IGNORED_FIELDS_INIT_MATERIAL_DEFAULT);
if (CollUtil.isNotEmpty(parentChild)) { if (CollUtil.isNotEmpty(parentChild)) {
List<String> materialNos = parentChild.stream().filter(u->StrUtil.isNotBlank(u.getMaterialNo())).map(u -> u.getMaterialNo()).collect(Collectors.toList()); List<String> materialNos = parentChild.stream().filter(u -> StrUtil.isNotBlank(u.getMaterialNo())).map(u -> u.getMaterialNo()).collect(Collectors.toList());
if (CollUtil.isNotEmpty(materialNos)) { if (CollUtil.isNotEmpty(materialNos)) {
List<BomNewEbomParentEntity> list = this.lambdaQuery().in(BomNewEbomParentEntity::getMaterialNo, materialNos) List<BomNewEbomParentEntity> list = this.lambdaQuery().in(BomNewEbomParentEntity::getMaterialNo, materialNos)
.eq(BomNewEbomParentEntity::getLastVersionIs, 1) .eq(BomNewEbomParentEntity::getLastVersionIs, 1)
@ -309,11 +310,11 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
child.setNoticeNums(parentEntity.getNoticeNums()); child.setNoticeNums(parentEntity.getNoticeNums());
if (parentEntity.getStatus().equals(EBomStatusEnum.PUBLISHED.getValue()) && EBomStatusEnum.PUBLISHED.getValue()>parentEntity.getStatus()) { if (parentEntity.getStatus().equals(EBomStatusEnum.PUBLISHED.getValue()) && EBomStatusEnum.PUBLISHED.getValue() > parentEntity.getStatus()) {
child.setStatus(EBomStatusEnum.BORROWED_PARTS.getValue()); child.setStatus(EBomStatusEnum.BORROWED_PARTS.getValue());
} }
//非本人则为借用件 //非本人则为借用件
if (!parentEntity.getCreatedBy().equals(child.getCreatedBy()) && EBomStatusEnum.PUBLISHED.getValue()>parentEntity.getStatus()) { if (!parentEntity.getCreatedBy().equals(child.getCreatedBy()) && EBomStatusEnum.PUBLISHED.getValue() > parentEntity.getStatus()) {
child.setStatus(EBomStatusEnum.REFERENCE.getValue()); child.setStatus(EBomStatusEnum.REFERENCE.getValue());
} }
@ -441,7 +442,7 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
childEntity.setRowId(u.getRowId()); childEntity.setRowId(u.getRowId());
childEntity.setProjectType(u.getProjectType()); childEntity.setProjectType(u.getProjectType());
childEntity.setProjectTypeInputType(u.getProjectTypeInputType()); childEntity.setProjectTypeInputType(u.getProjectTypeInputType());
if(Objects.isNull(u.getExceptionStatus())) { if (Objects.isNull(u.getExceptionStatus())) {
childEntity.setExceptionStatus(u.getExceptionStatus()); childEntity.setExceptionStatus(u.getExceptionStatus());
} }
child.add(childEntity); child.add(childEntity);
@ -580,6 +581,45 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
} }
public void checkAndInitVirtualPackageEnum(VirtualPackageParamDto paramDto, BomNewEbomParentEntity root) {
if (root.getVirtrualPackageEnum() <= 0) {
if (root.getMaterialNo().startsWith("31")) {
List<BomNewEbomParentVO> list = getChild(root.getRowId());
List<BomNewEbomParentVO> deliveryList = list.stream().filter(u -> VirtualPackageTypeEnum.DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(deliveryList)) {
Integer virtualPartTypeEnum = VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue() | VirtualPackageTypeEnum.MAKING_PACKAGE.getValue() | VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getValue();
List<BomNewEbomChildEntity> preList = ebomChildService.lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, deliveryList.get(0).getBomRowId())
.eq(BomNewEbomChildEntity::getVirtualPartType, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()).list();
if (CollUtil.isNotEmpty(preList)) {
virtualPartTypeEnum = virtualPartTypeEnum | VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue();
}
root.setVirtrualPackageEnum(virtualPartTypeEnum);
this.updateById(root);
}
}
if (root.getMaterialNo().startsWith("21")) {
List<BomNewEbomParentVO> list = getChild(root.getRowId());
List<BomNewEbomParentVO> makeList = list.stream().filter(u -> VirtualPackageTypeEnum.MAKING_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(makeList)) {
Integer virtualPartTypeEnum = VirtualPackageTypeEnum.MAKING_PACKAGE.getValue() | VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getValue();
List<BomNewEbomChildEntity> preList = ebomChildService.lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, makeList.get(0).getBomRowId())
.eq(BomNewEbomChildEntity::getVirtualPartType, VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()).list();
if (CollUtil.isNotEmpty(preList)) {
virtualPartTypeEnum = virtualPartTypeEnum | VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue();
}
root.setVirtrualPackageEnum(virtualPartTypeEnum);
this.updateById(root);
}
}
}
}
/** /**
* 生成虚拟包 * 生成虚拟包
@ -588,7 +628,11 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
*/ */
public void generateVirtualPackage(VirtualPackageParamDto paramDto) { public void generateVirtualPackage(VirtualPackageParamDto paramDto) {
try { try {
BomNewEbomParentEntity root = this.getById(paramDto.getBomRowId()); BomNewEbomParentEntity root = this.getById(paramDto.getBomRowId());
//初始化虚拟包-判断枚举不是手工生成虚拟包的情况
checkAndInitVirtualPackageEnum(paramDto,root);
Boolean flag = true; Boolean flag = true;
for (Integer f : paramDto.getVirtualPackageValue()) { for (Integer f : paramDto.getVirtualPackageValue()) {
flag = flag & ((root.getVirtrualPackageEnum() & f) == f); flag = flag & ((root.getVirtrualPackageEnum() & f) == f);
@ -648,21 +692,20 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
if (CollUtil.isNotEmpty(eBomToPBom.getPBomChildResult())) { if (CollUtil.isNotEmpty(eBomToPBom.getPBomChildResult())) {
pBomChildService.saveOrUpdateBatch(eBomToPBom.getPBomChildResult()); pBomChildService.saveOrUpdateBatch(eBomToPBom.getPBomChildResult());
} }
if (CollUtil.isNotEmpty(eBomToPBom.getVirtualPackageCompositionResult())) { if (CollUtil.isNotEmpty(eBomToPBom.getVirtualPackageCompositionResult())) {
//先删除 //先删除
Set<String> delSet = eBomToPBom.getVirtualPackageCompositionResult().stream().map(u -> StrUtil.join("-", u.getVirtualPackageMaterialNo(), u.getParentMaterialNo())).collect(Collectors.toSet()); Set<String> delSet = eBomToPBom.getVirtualPackageCompositionResult().stream().map(u -> StrUtil.join("-", u.getVirtualPackageMaterialNo(), u.getParentMaterialNo())).collect(Collectors.toSet());
for (String s : delSet) { for (String s : delSet) {
String[] split = StrUtil.split(s, "-"); String[] split = StrUtil.split(s, "-");
virtualPackageCompositionService.getBaseMapper().delByVnoAndParentNo(split[0],split[1]); virtualPackageCompositionService.getBaseMapper().delByVnoAndParentNo(split[0], split[1]);
} }
virtualPackageCompositionService.saveOrUpdateBatch(eBomToPBom.getVirtualPackageCompositionResult()); virtualPackageCompositionService.saveOrUpdateBatch(eBomToPBom.getVirtualPackageCompositionResult());
} } else {
else {
//记录变更影响 //记录变更影响
if (CollUtil.isNotEmpty(eBomToPBom.getUpgradeChangeResult())) { if (CollUtil.isNotEmpty(eBomToPBom.getUpgradeChangeResult())) {
List<String> vNos = eBomToPBom.getUpgradeChangeResult().stream().map(u -> StrUtil.join( u.getMaterialNo(),u.getRelMaterialNo())).collect(Collectors.toList()); List<String> vNos = eBomToPBom.getUpgradeChangeResult().stream().map(u -> StrUtil.join(u.getMaterialNo(), u.getRelMaterialNo())).collect(Collectors.toList());
if(CollUtil.isNotEmpty(vNos)){ if (CollUtil.isNotEmpty(vNos)) {
upgradeChangeService.getBaseMapper().delByVNo(vNos); upgradeChangeService.getBaseMapper().delByVNo(vNos);
} }
upgradeChangeService.saveOrUpdateBatch(eBomToPBom.getUpgradeChangeResult()); upgradeChangeService.saveOrUpdateBatch(eBomToPBom.getUpgradeChangeResult());
@ -673,7 +716,7 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
Set<String> delSet = eBomToPBom.getUpgradeChangeDetailResult().stream().map(u -> StrUtil.join("-", u.getVirtualPackageMaterialNo(), u.getParentMaterialNo())).collect(Collectors.toSet()); Set<String> delSet = eBomToPBom.getUpgradeChangeDetailResult().stream().map(u -> StrUtil.join("-", u.getVirtualPackageMaterialNo(), u.getParentMaterialNo())).collect(Collectors.toSet());
for (String s : delSet) { for (String s : delSet) {
String[] split = StrUtil.split(s, "-"); String[] split = StrUtil.split(s, "-");
updateDetailService.getBaseMapper().delByVnoAndParentNo(split[0],split[1]); updateDetailService.getBaseMapper().delByVnoAndParentNo(split[0], split[1]);
} }
updateDetailService.saveOrUpdateBatch(eBomToPBom.getUpgradeChangeDetailResult()); updateDetailService.saveOrUpdateBatch(eBomToPBom.getUpgradeChangeDetailResult());
} }
@ -704,7 +747,7 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
BomNewEbomParentEntity parent = this.getById(bomRowId); BomNewEbomParentEntity parent = this.getById(bomRowId);
List<BomNewEbomParentEntity> existEnt = this.lambdaQuery().eq(BomNewEbomParentEntity::getMaterialNo, parent.getMaterialNo()).lt(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue()).list(); List<BomNewEbomParentEntity> existEnt = this.lambdaQuery().eq(BomNewEbomParentEntity::getMaterialNo, parent.getMaterialNo()).lt(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue()).list();
//含发布前版本则无需升级 //含发布前版本则无需升级
if(CollUtil.isEmpty(existEnt)) { if (CollUtil.isEmpty(existEnt)) {
List<BomNewEbomChildEntity> child = ebomChildService.lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, bomRowId).list(); List<BomNewEbomChildEntity> child = ebomChildService.lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId, bomRowId).list();
BomNewEbomParentEntity newParent = new BomNewEbomParentEntity(); BomNewEbomParentEntity newParent = new BomNewEbomParentEntity();
BeanUtil.copyProperties(parent, newParent); BeanUtil.copyProperties(parent, newParent);
@ -866,21 +909,17 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
for (BomNewEbomChildEntity childEntities : eBomEdit.childEntities) { for (BomNewEbomChildEntity childEntities : eBomEdit.childEntities) {
childEntities.setOrderNumber(OrderNoUtil.orderNo2Str(orderNo)); childEntities.setOrderNumber(OrderNoUtil.orderNo2Str(orderNo));
if(childEntities.getMaterialName().contains(VirtualPackageTypeEnum.MAKING_PACKAGE.getConMaterialName())) if (childEntities.getMaterialName().contains(VirtualPackageTypeEnum.MAKING_PACKAGE.getConMaterialName())) {
{
childEntities.setVirtualPartType(VirtualPackageTypeEnum.MAKING_PACKAGE.getValue()); childEntities.setVirtualPartType(VirtualPackageTypeEnum.MAKING_PACKAGE.getValue());
childEntities.setVirtualPartIs(1); childEntities.setVirtualPartIs(1);
} } else if (childEntities.getMaterialName().contains(VirtualPackageTypeEnum.DELIVERY_PACKAGE.getConMaterialName())) {
else if(childEntities.getMaterialName().contains(VirtualPackageTypeEnum.DELIVERY_PACKAGE.getConMaterialName())){
childEntities.setVirtualPartType(VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue()); childEntities.setVirtualPartType(VirtualPackageTypeEnum.DELIVERY_PACKAGE.getValue());
childEntities.setVirtualPartIs(1); childEntities.setVirtualPartIs(1);
} } else if (childEntities.getMaterialName().contains(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getConMaterialName())) {
else if(childEntities.getMaterialName().contains(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getConMaterialName())){
childEntities.setVirtualPartType(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getValue()); childEntities.setVirtualPartType(VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getValue());
childEntities.setVirtualPartIs(1); childEntities.setVirtualPartIs(1);
} } else if (childEntities.getMaterialName().contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getConMaterialName())) {
else if(childEntities.getMaterialName().contains(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getConMaterialName())){
childEntities.setVirtualPartType(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue()); childEntities.setVirtualPartType(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getValue());
childEntities.setVirtualPartIs(1); childEntities.setVirtualPartIs(1);
} }
@ -1247,25 +1286,24 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
} }
BomNewEbomParentEntity bomParent=null; BomNewEbomParentEntity bomParent = null;
BomNewEbomChildEntity childEntity=null; BomNewEbomChildEntity childEntity = null;
if(query.getBomRowId()!=null && query.getBomRowId().longValue()!=0){ if (query.getBomRowId() != null && query.getBomRowId().longValue() != 0) {
bomParent= getById(query.getBomRowId()); bomParent = getById(query.getBomRowId());
} }
if(query.getRowId()!=null && query.getRowId().longValue()!=0){ if (query.getRowId() != null && query.getRowId().longValue() != 0) {
childEntity= SpringUtil.getBean(BomNewEbomChildService.class).getById(query.getRowId()); childEntity = SpringUtil.getBean(BomNewEbomChildService.class).getById(query.getRowId());
} }
if (CollUtil.isNotEmpty(materialMainList)) { if (CollUtil.isNotEmpty(materialMainList)) {
MaterialMainEntity materialMainEntity = materialMainList.get(0); MaterialMainEntity materialMainEntity = materialMainList.get(0);
BomNewEbomParentVO baseMaterialVO = new BomNewEbomParentVO(); BomNewEbomParentVO baseMaterialVO = new BomNewEbomParentVO();
if(childEntity!=null){ if (childEntity != null) {
BeanUtil.copyProperties(childEntity, baseMaterialVO); BeanUtil.copyProperties(childEntity, baseMaterialVO);
if(childEntity.getMaterialNo().equals(materialMainEntity.getMaterialNo())){ if (childEntity.getMaterialNo().equals(materialMainEntity.getMaterialNo())) {
return baseMaterialVO; return baseMaterialVO;
} }
} }
@ -1273,7 +1311,7 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
BeanUtil.copyProperties(materialMainEntity, baseMaterialVO); BeanUtil.copyProperties(materialMainEntity, baseMaterialVO);
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(ImmutableList.of(baseMaterialVO)); SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(ImmutableList.of(baseMaterialVO));
// baseMaterialVO.setCreatedBy(SessionUtil.getUserCode()); // baseMaterialVO.setCreatedBy(SessionUtil.getUserCode());
baseMaterialVO.setRowId(query.getRowId()); baseMaterialVO.setRowId(query.getRowId());
baseMaterialVO.setParentRowId(query.getBomRowId()); baseMaterialVO.setParentRowId(query.getBomRowId());
baseMaterialVO.setProjectType(null); baseMaterialVO.setProjectType(null);
@ -1286,10 +1324,10 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
baseMaterialVO.setSource(EBomSourceEnum.FROM_MDM.getValue()); baseMaterialVO.setSource(EBomSourceEnum.FROM_MDM.getValue());
if(StrUtil.isNotBlank(materialMainEntity.getMaterialWeight())) { if (StrUtil.isNotBlank(materialMainEntity.getMaterialWeight())) {
baseMaterialVO.setUnitWeight(new BigDecimal(materialMainEntity.getMaterialWeight())); baseMaterialVO.setUnitWeight(new BigDecimal(materialMainEntity.getMaterialWeight()));
} }
if(bomParent!=null){ if (bomParent != null) {
baseMaterialVO.setEditStatus(bomParent.getEditStatus()); baseMaterialVO.setEditStatus(bomParent.getEditStatus());
baseMaterialVO.setStatus(bomParent.getStatus()); baseMaterialVO.setStatus(bomParent.getStatus());
} }
@ -1299,12 +1337,9 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
&& (MaterialGetEnum.MaterialStateEnum.STATE_NO_4.equalsValue(baseMaterialVO.getMaterialState()) && (MaterialGetEnum.MaterialStateEnum.STATE_NO_4.equalsValue(baseMaterialVO.getMaterialState())
|| MaterialGetEnum.MaterialStateEnum.STATE_NO_5.equalsValue(baseMaterialVO.getMaterialState()))) { || MaterialGetEnum.MaterialStateEnum.STATE_NO_5.equalsValue(baseMaterialVO.getMaterialState()))) {
baseMaterialVO.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_2.getValue()); baseMaterialVO.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_2.getValue());
} } else if (StrUtil.isBlank(baseMaterialVO.getMaterialNo()) || Objects.isNull(baseMaterialVO.getNum()) || BigDecimal.ZERO.compareTo(baseMaterialVO.getNum()) >= 0) {
else if (StrUtil.isBlank(baseMaterialVO.getMaterialNo()) || Objects.isNull(baseMaterialVO.getNum()) || BigDecimal.ZERO.compareTo(baseMaterialVO.getNum()) >= 0) {
baseMaterialVO.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_4.getValue()); baseMaterialVO.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_4.getValue());
} } else if (StrUtil.isNotBlank(baseMaterialVO.getMaterialNo()) && Objects.isNull(baseMaterialVO.getMaterialState())) {
else if (StrUtil.isNotBlank(baseMaterialVO.getMaterialNo()) && Objects.isNull(baseMaterialVO.getMaterialState())) {
baseMaterialVO.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_7.getValue()); baseMaterialVO.setExceptionStatus(EBomExceptionStatusEnum.EXCEPT_NO_7.getValue());
} }
@ -1400,7 +1435,7 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
if (dto.getParent().getRootIs() == null || dto.getParent().getRootIs() == 0) { if (dto.getParent().getRootIs() == null || dto.getParent().getRootIs() == 0) {
childList.add(dto.getParent()); childList.add(dto.getParent());
} }
// checkAndSaveEBomException(childList); // checkAndSaveEBomException(childList);
//不要异步 //不要异步
ebomChildService.getBaseMapper().updateEBomMaterialUse(); ebomChildService.getBaseMapper().updateEBomMaterialUse();
// ThreadUtil.execAsync(() -> computeLevelNumAndRootState()); // ThreadUtil.execAsync(() -> computeLevelNumAndRootState());
@ -1473,7 +1508,7 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
} }
// checkAndSaveEBomException(childList); // checkAndSaveEBomException(childList);
// ebomChildService.getBaseMapper().updateEBomMaterialUse(); // ebomChildService.getBaseMapper().updateEBomMaterialUse();
// ThreadUtil.execAsync(() -> computeLevelNumAndRootState()); // ThreadUtil.execAsync(() -> computeLevelNumAndRootState());
return true; return true;
@ -1530,34 +1565,31 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
CheckEBomException.checkMaterialNoInMain(dto.getDatas()); CheckEBomException.checkMaterialNoInMain(dto.getDatas());
List<BomNewEbomParentVO> childList = getChild(dto.getParent().getBomRowId());
List<BomNewEbomParentVO> childList=getChild(dto.getParent().getBomRowId());
List<BomNewEbomParentVO> tmp1 = dto.getDatas().stream().filter(item -> (Objects.nonNull(item.getRowId()) && item.getRowId() > 0)).collect(Collectors.toList()); List<BomNewEbomParentVO> tmp1 = dto.getDatas().stream().filter(item -> (Objects.nonNull(item.getRowId()) && item.getRowId() > 0)).collect(Collectors.toList());
//相同rowid 不同物料号 //相同rowid 不同物料号
List<BomNewEbomParentVO> unionEdit = tmp1.stream().filter(u->{ List<BomNewEbomParentVO> unionEdit = tmp1.stream().filter(u -> {
return childList.stream().filter(e-> return childList.stream().filter(e ->
Objects.equals(u.getRowId(),e.getRowId() ) Objects.equals(u.getRowId(), e.getRowId())
&& !Objects.equals(u.getMaterialNo(),e.getMaterialNo()) && !Objects.equals(u.getMaterialNo(), e.getMaterialNo())
).count()>0; ).count() > 0;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
//相同rowid 相同物料号 //相同rowid 相同物料号
List<BomNewEbomParentVO> union2 = tmp1.stream().filter(u->{ List<BomNewEbomParentVO> union2 = tmp1.stream().filter(u -> {
return childList.stream().filter(e-> return childList.stream().filter(e ->
Objects.equals(u.getRowId(),e.getRowId() ) Objects.equals(u.getRowId(), e.getRowId())
&& Objects.equals(u.getMaterialNo(),e.getMaterialNo()) && Objects.equals(u.getMaterialNo(), e.getMaterialNo())
).count()>0; ).count() > 0;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
Map<Long,List<BomNewEbomParentVO>> groupList=childList.stream().collect(Collectors.groupingBy(BomNewEbomParentVO::getRowId)); Map<Long, List<BomNewEbomParentVO>> groupList = childList.stream().collect(Collectors.groupingBy(BomNewEbomParentVO::getRowId));
// Map<Long,List<BomNewEbomParentVO>> groupUnionEdit=unionEdit.stream().collect(Collectors.groupingBy(BomNewEbomParentVO::getRowId)); // Map<Long,List<BomNewEbomParentVO>> groupUnionEdit=unionEdit.stream().collect(Collectors.groupingBy(BomNewEbomParentVO::getRowId));
List<BomNewEbomParentVO> tmp2 = dto.getDatas().stream().filter(item -> Objects.isNull(item.getRowId()) || item.getRowId() == 0).collect(Collectors.toList()); List<BomNewEbomParentVO> tmp2 = dto.getDatas().stream().filter(item -> Objects.isNull(item.getRowId()) || item.getRowId() == 0).collect(Collectors.toList());
@ -1566,7 +1598,6 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(unionEdit, "projectType"); SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(unionEdit, "projectType");
String[] ignore = new String[]{ String[] ignore = new String[]{
"projectType", "projectType",
"procureType", "procureType",
@ -1578,11 +1609,11 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(union2, ignore); SpringUtil.getBean(MaterialMainService.class).intiMaterialInfo(union2, ignore);
List<BomNewEbomParentVO> returnList=new ArrayList<>(); List<BomNewEbomParentVO> returnList = new ArrayList<>();
if(CollectionUtil.isNotEmpty(unionEdit)){ if (CollectionUtil.isNotEmpty(unionEdit)) {
unionEdit.forEach(item->{ unionEdit.forEach(item -> {
// if(item.getMaterialUnit().contains("KG")){ // if(item.getMaterialUnit().contains("KG")){
// item.setUnitWeight(null); // item.setUnitWeight(null);
// }else{ // }else{
@ -1592,25 +1623,24 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
// } // }
item.setTotalWeight(NumberUtil.mul(item.getUnitWeight(), item.getNum())); item.setTotalWeight(NumberUtil.mul(item.getUnitWeight(), item.getNum()));
if(StrUtil.isBlank(item.getMaterialNo())) { if (StrUtil.isBlank(item.getMaterialNo())) {
BeanUtil.copyProperties(groupList.get(item.getRowId()).get(0),item); BeanUtil.copyProperties(groupList.get(item.getRowId()).get(0), item);
} }
}); });
returnList.addAll(unionEdit); returnList.addAll(unionEdit);
} }
if(CollectionUtil.isNotEmpty(union2)){ if (CollectionUtil.isNotEmpty(union2)) {
union2.forEach(item->{ union2.forEach(item -> {
if(Objects.isNull(item.getMaterialNo())) { if (Objects.isNull(item.getMaterialNo())) {
BeanUtil.copyProperties(item,groupList.get(item.getRowId()).get(0)); BeanUtil.copyProperties(item, groupList.get(item.getRowId()).get(0));
} }
}); });
returnList.addAll(union2); returnList.addAll(union2);
} }
if (CollectionUtil.isNotEmpty(tmp2)) { if (CollectionUtil.isNotEmpty(tmp2)) {
for (BomNewEbomParentVO vo : for (BomNewEbomParentVO vo :
tmp2) { tmp2) {

View File

@ -86,7 +86,7 @@
order by created_time desc order by created_time desc
</if> </if>
<if test="job==1"> <if test="job==1">
select * ,row_id as bomRowId from t_bom_new_ebom_parent where ( user_root_is= 1 or root_is=1) and status=2 select * ,row_id as bomRowId from t_bom_new_ebom_parent where ( (user_root_is= 1 and created_by=#{createdBy} ) or root_is=1) and status=2
<include refid="whr"/> <include refid="whr"/>
order by created_time desc order by created_time desc
</if> </if>

View File

@ -207,6 +207,7 @@
<foreach collection="drawingNos" item="item" open="(" separator="," close=")"> <foreach collection="drawingNos" item="item" open="(" separator="," close=")">
#{item} #{item}
</foreach> </foreach>
order by created_time desc
</select> </select>
<!--物料编码搜索-子级--> <!--物料编码搜索-子级-->
<select id="getChildForDrawingNoSeach" resultType="com.nflg.product.bomnew.pojo.vo.BomOriginalListVO"> <select id="getChildForDrawingNoSeach" resultType="com.nflg.product.bomnew.pojo.vo.BomOriginalListVO">