43316 修复bomVersion启用问题

dev-temp-xw-202501150000-44852
臧学普 4 months ago
parent bc76beab75
commit f5f2a4b31d

@ -186,6 +186,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
@Autowired
private EntityManager entityManager;
@Autowired
private MesPartProdGroupRepository mesPartProdGroupRao;
@Override
public MesWorkOrder insert(MesWorkOrder bean) {
// 数据校验
@ -519,7 +522,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())) {
//获取生产版本
mesProductVersion = getMesProductVersion(item.getOrganizeCode(),item.getPartNo());
item.setProductVersion(mesProductVersion.getProductVersion());
if (mesProductVersion != null) {
item.setProductVersion(mesProductVersion.getProductVersion());
}
}
//是否自动发布
return isAuto(item, mesProductVersion);
@ -548,10 +553,20 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
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
List<MesWorkOrderPart> workOrderPartList = new ArrayList<>();
if (mesPartProdGroup.getIsDisassembleBom() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() && !Objects.isNull(mesProductVersion)) {
workOrderPartList = dismantleBom(findBomList(item.getOrganizeCode(), iMesPartService.getPartByPartNo(item.getPartNo(), item.getOrganizeCode()),mesProductVersion.getAlternativePartList()), item.getQty(), item.getOrganizeCode(), item.getWorkCellCode(), item.getWorkOrderNo());
if (mesPartProdGroup.getIsDisassembleBom() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
workOrderPartList = dismantleBom(findBomList(item.getOrganizeCode(), iMesPartService.getPartByPartNo(item.getPartNo(), item.getOrganizeCode()),bomVersion), item.getQty(), item.getOrganizeCode(), item.getWorkCellCode(), item.getWorkOrderNo());
}
return workOrderPartList;
}
@ -1054,10 +1069,23 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesWorkOrder.getAdjustQty(), mesWorkOrder.getReportedQty());
}
}
//获取生产版本
MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrder.getOrganizeCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getProductVersion());
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 = getMesProductVersion(mesWorkOrder.getOrganizeCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getProductVersion());
bomVersion = mesProductVersion.getAlternativePartList();
}
}
//物料+生产版本获取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());
//保存数据
@ -1608,7 +1636,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode());
newMesProductOffLine.setReportType(mesWorkOrder.getReportType());
newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode());
newMesProductOffLine.setSapWorkCenter(mesWorkOrder.getWorkCenterCode());
newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode());
newMesProductOffLine.setDescription(nowTime);
newMesProductOffLine.setBomTotalSize(bomSize);
@ -1641,8 +1669,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
newMesProductOffLine.setWorkOrderType(mesWorkOrder.getWorkOrderType());
newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode());
newMesProductOffLine.setReportType(mesWorkOrder.getReportType());
newMesProductOffLine.setWorkCenterCode(mesProductVersion.getWorkCenterCode());
newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode());
newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
newMesProductOffLine.setSapWorkCenter(mesWorkOrder.getWorkCenterCode());
newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode());
newMesProductOffLine.setDescription(nowTime);
@ -2196,7 +2224,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
// 递归展开 BOM
expendBomChild(organizeCode, mesPart.getPartNo(), bomVersion, bomData);
if (bomData.size() == 0) {
if (bomData.isEmpty()) {
MesException.throwMesBusiException("零件号 %s 没找找到 ERP 同步的原始 BOM 数据,请检查接口是否正常!", mesPart.getPartNo());
}
@ -2260,21 +2288,31 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//MES汇报查询BOM是否携带结束查询条件
MesConfig config = mesConfigService.getCfgValueByCode(organizeCode, MesExtConstWords.MES_REPORT_FIND_BOM_WITH_EFFENDTIME);
Boolean isWithEffEndTime = (null != config && !StringUtils.isEmpty(config.getCfgValue()) && config.getCfgValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr())) ? true : false;
boolean isWithEffEndTime = null != config && !StringUtils.isEmpty(config.getCfgValue()) && config.getCfgValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr());
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, ddlPackBean);
DdlPreparedPack.getStringEqualPack(bomVersion, MesExtConstWords.BOM_VERSION, ddlPackBean);
if (!StringUtils.isEmpty(partNo)) {
DdlPreparedPack.getStringEqualPack(bomVersion, MesExtConstWords.BOM_VERSION, ddlPackBean);
}
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_START_TIME, ddlPackBean);
if (isWithEffEndTime) DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_END_TIME, ddlPackBean);
if(isWithEffEndTime)DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_END_TIME, 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)) {
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取最新的一个
return mesBoms.stream().collect(Collectors.groupingBy(t -> t.getBomCode() + t.getEffStartTime())).get(next.getBomCode() + next.getEffStartTime());
return mesBomRDao.findByHqlWhere(ddlPackBean1);
}
@ -2723,18 +2761,18 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
private MesProductVersion getMesProductVersion(String organizeCode, String partNo, String productVersion) {
MesProductVersion mesProductVersion = mesProductVersionService.getMesProductVersionByPartNoAndProductVersion(organizeCode, partNo, productVersion);
if (Objects.isNull(mesProductVersion)) {
MesException.throwMesBusiException("物料【%s】生产版本【%s】信息不存在", partNo, productVersion);
MesProductVersion mesProductVersion = new MesProductVersion();
if (!StringUtils.isEmpty(productVersion)){
mesProductVersion = mesProductVersionService.getMesProductVersionByPartNoAndProductVersion(organizeCode, partNo, productVersion);
if (Objects.isNull(mesProductVersion)) {
MesException.throwMesBusiException("物料【%s】生产版本【%s】信息不存在", partNo, productVersion);
}
}
return mesProductVersion;
}
private MesProductVersion getMesProductVersion(String organizeCode, String partNo) {
MesProductVersion mesProductVersion = mesProductVersionService.getMesProductVersionByPartNoAndProductVersion(organizeCode, partNo, null);
if (Objects.isNull(mesProductVersion)) {
MesException.throwMesBusiException("物料【%s】生产版本信息不存在", partNo);
}
return mesProductVersion;
}

@ -324,8 +324,7 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
DdlPackBean bomPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(bomCode, "bomCode", bomPackBean);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, bomPackBean);
DdlPreparedPack.getStringSmallerPack(effectiveTime, MesExtConstWords.EFF_START_TIME, bomPackBean);
if (isWithEffEndTime) DdlPreparedPack.getStringBiggerPack(effectiveTime, MesExtConstWords.EFF_END_TIME, bomPackBean);
DdlPreparedPack.getStringEqualPack(effectiveTime, MesExtConstWords.EFF_START_TIME, bomPackBean);
List<MesBom> bomList = bomRao.findByHqlWhere(bomPackBean);
for (MesBom bom : bomList) {

Loading…
Cancel
Save