bom是否启动bomVersion

dev-temp-xw-202501031219-44700
臧学普 5 months ago
parent 402a961a1f
commit 69a47d9a77

@ -23,6 +23,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -148,16 +149,23 @@ public class MesBomService extends BaseMesService<MesBom> implements IMesBomServ
public List<MesBom> findMesBomByPartNoAndBomVersion(String partNo, String organizeCode, String bomVersion) { public List<MesBom> findMesBomByPartNoAndBomVersion(String partNo, String organizeCode, String bomVersion) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean); DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean);
if (!StringUtils.isEmpty(bomVersion)) {
DdlPreparedPack.getStringEqualPack(bomVersion, "bomVersion", ddlPackBean); DdlPreparedPack.getStringEqualPack(bomVersion, "bomVersion", ddlPackBean);
}
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), "effStartTime", ddlPackBean); DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), "effStartTime", ddlPackBean);
DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean); DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean);
List<MesBom> mesBoms = baseRDao.findByHqlWhere(ddlPackBean); List<MesBom> mesBoms = baseRDao.findByHqlTopWhere(ddlPackBean,1);
if (CollectionUtils.isEmpty(mesBoms)) { if (CollectionUtils.isEmpty(mesBoms)) {
MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在", partNo, bomVersion); MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在", partNo, bomVersion);
} }
MesBom next = mesBoms.iterator().next(); MesBom mesBom = mesBoms.get(0);
//如果存在多个bomCode取最新的一个 String bomCode = mesBom.getBomCode();
return mesBoms.stream().collect(Collectors.groupingBy(t -> t.getBomCode() + t.getEffStartTime())).get(next.getBomCode() + next.getEffStartTime()); String effStartTime = mesBom.getEffStartTime();
DdlPackBean ddlPackBean1= DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean1);
DdlPreparedPack.getStringEqualPack(bomCode, "bomCode", ddlPackBean1);
DdlPreparedPack.getStringEqualPack(effStartTime, "effStartTime", ddlPackBean1);
return baseRDao.findByHqlWhere(ddlPackBean);
} }
@Override @Override

@ -186,6 +186,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
@Autowired @Autowired
private EntityManager entityManager; private EntityManager entityManager;
@Autowired
private MesPartProdGroupRepository mesPartProdGroupRao;
@Override @Override
public MesWorkOrder insert(MesWorkOrder bean) { public MesWorkOrder insert(MesWorkOrder bean) {
// 数据校验 // 数据校验
@ -535,10 +538,20 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue()); item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
} }
Integer enableBomVersion = mesPartProdGroup.getEnableBomVersion();
String bomVersion ="";
/**
* 2024-12-20 bomVersion
*/
if (enableBomVersion == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){
if(!Objects.isNull(mesProductVersion)){
bomVersion = mesProductVersion.getAlternativePartList();
}
}
// 打散bom // 打散bom
List<MesWorkOrderPart> workOrderPartList = new ArrayList<>(); List<MesWorkOrderPart> workOrderPartList = new ArrayList<>();
if (mesPartProdGroup.getIsDisassembleBom() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() && !Objects.isNull(mesProductVersion)) { if (mesPartProdGroup.getIsDisassembleBom() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
workOrderPartList = dismantleBom(findBomList(item.getOrganizeCode(), iMesPartService.getPartByPartNo(item.getPartNo(), item.getOrganizeCode()),mesProductVersion.getAlternativePartList()), item.getQty(), item.getOrganizeCode(), item.getWorkCellCode(), item.getWorkOrderNo()); workOrderPartList = dismantleBom(findBomList(item.getOrganizeCode(), iMesPartService.getPartByPartNo(item.getPartNo(), item.getOrganizeCode()),bomVersion), item.getQty(), item.getOrganizeCode(), item.getWorkCellCode(), item.getWorkOrderNo());
} }
return workOrderPartList; return workOrderPartList;
} }
@ -1041,10 +1054,23 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesWorkOrder.getAdjustQty(), mesWorkOrder.getReportedQty()); mesWorkOrder.getAdjustQty(), mesWorkOrder.getReportedQty());
} }
} }
String partProdGroupCode = mesWorkOrder.getPartProdGroupCode();
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(partProdGroupCode,"partProdGroupCode",ddlPackBean);
List<MesPartProdGroup> mesPartProdGroupList = mesPartProdGroupRao.findByHqlTopWhere(ddlPackBean, 1);
String bomVersion = "";
MesProductVersion mesProductVersion = new MesProductVersion();
if (!mesPartProdGroupList.isEmpty()){
MesPartProdGroup mesPartProdGroup = mesPartProdGroupList.get(0);
if (mesPartProdGroup.getEnableBomVersion() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){
//获取生产版本 //获取生产版本
MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrder.getOrganizeCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getProductVersion()); mesProductVersion = getMesProductVersion(mesWorkOrder.getOrganizeCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getProductVersion());
bomVersion = mesProductVersion.getAlternativePartList();
}
}
//物料+生产版本获取bom信息 //物料+生产版本获取bom信息
List<MesBom> mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList()); List<MesBom> mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, bomVersion);
//生成条码 //生成条码
String sn = getStringList(mesWorkOrderNew.getOrganizeCode(), AuthUtilExt.getUserName()); String sn = getStringList(mesWorkOrderNew.getOrganizeCode(), AuthUtilExt.getUserName());
//保存数据 //保存数据
@ -1595,7 +1621,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode()); newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode()); newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode());
newMesProductOffLine.setReportType(mesWorkOrder.getReportType()); newMesProductOffLine.setReportType(mesWorkOrder.getReportType());
newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode()); newMesProductOffLine.setSapWorkCenter(mesWorkOrder.getWorkCenterCode());
newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode()); newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode());
newMesProductOffLine.setDescription(nowTime); newMesProductOffLine.setDescription(nowTime);
newMesProductOffLine.setBomTotalSize(bomSize); newMesProductOffLine.setBomTotalSize(bomSize);
@ -1628,8 +1654,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
newMesProductOffLine.setWorkOrderType(mesWorkOrder.getWorkOrderType()); newMesProductOffLine.setWorkOrderType(mesWorkOrder.getWorkOrderType());
newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode()); newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode());
newMesProductOffLine.setReportType(mesWorkOrder.getReportType()); newMesProductOffLine.setReportType(mesWorkOrder.getReportType());
newMesProductOffLine.setWorkCenterCode(mesProductVersion.getWorkCenterCode()); newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode()); newMesProductOffLine.setSapWorkCenter(mesWorkOrder.getWorkCenterCode());
newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode()); newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode());
newMesProductOffLine.setDescription(nowTime); newMesProductOffLine.setDescription(nowTime);
@ -2183,7 +2209,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
// 递归展开 BOM // 递归展开 BOM
expendBomChild(organizeCode, mesPart.getPartNo(), bomVersion, bomData); expendBomChild(organizeCode, mesPart.getPartNo(), bomVersion, bomData);
if (bomData.size() == 0) { if (bomData.isEmpty()) {
MesException.throwMesBusiException("零件号 %s 没找找到 ERP 同步的原始 BOM 数据,请检查接口是否正常!", mesPart.getPartNo()); MesException.throwMesBusiException("零件号 %s 没找找到 ERP 同步的原始 BOM 数据,请检查接口是否正常!", mesPart.getPartNo());
} }
@ -2245,17 +2271,27 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
public List<MesBom> findMesBomByPartNoAndBomVersion(String partNo, String organizeCode, String bomVersion) { public List<MesBom> findMesBomByPartNoAndBomVersion(String partNo, String organizeCode, String bomVersion) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, ddlPackBean); DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, ddlPackBean);
if (!StringUtils.isEmpty(partNo)) {
DdlPreparedPack.getStringEqualPack(bomVersion, MesExtConstWords.BOM_VERSION, ddlPackBean); DdlPreparedPack.getStringEqualPack(bomVersion, MesExtConstWords.BOM_VERSION, ddlPackBean);
}
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_START_TIME, ddlPackBean); DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_START_TIME, ddlPackBean);
DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_END_TIME, ddlPackBean); DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_END_TIME, ddlPackBean);
DdlPreparedPack.getOrderBy(MesExtConstWords.EFF_START_TIME, CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean); DdlPreparedPack.getOrderBy(MesExtConstWords.EFF_START_TIME, CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean);
List<MesBom> mesBoms = mesBomRDao.findByHqlWhere(ddlPackBean); List<MesBom> mesBoms = mesBomRDao.findByHqlTopWhere(ddlPackBean,1);
if (org.springframework.util.CollectionUtils.isEmpty(mesBoms)) { if (org.springframework.util.CollectionUtils.isEmpty(mesBoms)) {
MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在", partNo, bomVersion); MesException.throwMesBusiException("物料【%s】对应bom信息不存在", partNo);
} }
MesBom next = mesBoms.iterator().next(); MesBom mesBom = mesBoms.get(0);
String effEndTime = mesBom.getEffEndTime();
String bomCode = mesBom.getBomCode();
DdlPackBean ddlPackBean1 = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, ddlPackBean1);
DdlPreparedPack.getStringEqualPack(effEndTime, MesExtConstWords.EFF_START_TIME, ddlPackBean);
DdlPreparedPack.getStringEqualPack(bomCode, "bomCode", ddlPackBean);
//如果存在多个bomCode取最新的一个 //如果存在多个bomCode取最新的一个
return mesBoms.stream().collect(Collectors.groupingBy(t -> t.getBomCode() + t.getEffStartTime())).get(next.getBomCode() + next.getEffStartTime()); return mesBomRDao.findByHqlWhere(ddlPackBean1);
} }
@ -2704,10 +2740,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
private MesProductVersion getMesProductVersion(String organizeCode, String partNo, String productVersion) { private MesProductVersion getMesProductVersion(String organizeCode, String partNo, String productVersion) {
MesProductVersion mesProductVersion = mesProductVersionService.getMesProductVersionByPartNoAndProductVersion(organizeCode, partNo, productVersion); MesProductVersion mesProductVersion = new MesProductVersion();
if (!StringUtils.isEmpty(productVersion)){
mesProductVersion = mesProductVersionService.getMesProductVersionByPartNoAndProductVersion(organizeCode, partNo, productVersion);
if (Objects.isNull(mesProductVersion)) { if (Objects.isNull(mesProductVersion)) {
MesException.throwMesBusiException("物料【%s】生产版本【%s】信息不存在", partNo, productVersion); MesException.throwMesBusiException("物料【%s】生产版本【%s】信息不存在", partNo, productVersion);
} }
}
return mesProductVersion; return mesProductVersion;
} }

Loading…
Cancel
Save