diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesBomService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesBomService.java index 67600e1..5c834dc 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesBomService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesBomService.java @@ -63,6 +63,14 @@ public interface IMesBomService extends IBaseMesService { */ MesBom findBom(String organizeCode, String bomVersion,String partNo); + /** + * 只根据总成查询最新的bom + * @param organizeCode + * @param partNo + * @return + */ + MesBom findBom(String organizeCode,String partNo); + @ApiOperation(value = "bom反向查询") List queryMesBomReverse(MesBom mesBom); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBomService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBomService.java index af45a30..4bf4a79 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBomService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesBomService.java @@ -89,8 +89,8 @@ public class MesBomService extends BaseMesService implements IMesBomServ MesBomTreeModel organize = new MesBomTreeModel(); organize.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); - // organize.setName(AuthUtil.getOrganize().getName()); - organize.setName("zxw"); + organize.setName(AuthUtil.getOrganize().getName()); + //organize.setName("zxw"); DdlPackBean packBean = DdlPackBean.getDdlPackBean(bom.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(bom.getPartNo(), "partNo", packBean); DdlPreparedPack.getStringEqualPack(bom.getBomVersion(), "bomVersion", packBean); @@ -171,13 +171,18 @@ public class MesBomService extends BaseMesService implements IMesBomServ DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_START_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 mesBoms = baseRDao.findByHqlWhere(ddlPackBean); + List mesBoms = baseRDao.findByHqlTopWhere(ddlPackBean,1); if (CollectionUtils.isEmpty(mesBoms)) { MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在", partNo, bomVersion); } - MesBom next = mesBoms.iterator().next(); - //如果存在多个bomCode取最新的一个 - return mesBoms.stream().collect(Collectors.groupingBy(t -> t.getBomCode() + t.getEffStartTime())).get(next.getBomCode() + next.getEffStartTime()); + MesBom mesBom = mesBoms.get(0); + String bomCode = mesBom.getBomCode(); + 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 @@ -224,6 +229,18 @@ public class MesBomService extends BaseMesService implements IMesBomServ DdlPackBean bomPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(partNo, "partNo", bomPackBean); DdlPreparedPack.getStringEqualPack(bomVersion, "bomVersion", bomPackBean); + DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), bomPackBean); + List bomList = this.baseRDao.findByHqlTopWhere(bomPackBean,1); + return bomList.isEmpty() ? null : bomList.get(0); + } + + @Override + public MesBom findBom(String organizeCode, String partNo) { + DdlPackBean bomPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(partNo, "partNo", bomPackBean); + DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), "effStartTime", bomPackBean); + DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime(true), "effEndTime", bomPackBean); + DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), bomPackBean); List bomList = this.baseRDao.findByHqlTopWhere(bomPackBean,1); return bomList.isEmpty() ? null : bomList.get(0); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index cd015df..07298ad 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -186,6 +186,9 @@ public class MesWorkOrderService extends BaseMesService implements @Autowired private EntityManager entityManager; + @Autowired + private MesPartProdGroupRepository mesPartProdGroupRao; + @Override public MesWorkOrder insert(MesWorkOrder bean) { // 数据校验 @@ -519,7 +522,9 @@ public class MesWorkOrderService extends BaseMesService 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 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 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 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 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 mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList()); + List mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, bomVersion); //生成条码 String sn = getStringList(mesWorkOrderNew.getOrganizeCode(), AuthUtilExt.getUserName()); //保存数据 @@ -1183,6 +1211,9 @@ public class MesWorkOrderService extends BaseMesService implements if (StringUtil.isEmpty(model.getSn())) { //获取生产版本 MesProductVersion mesProductVersion = getMesProductVersion(model.getOrganizeCode(),model.getPartNo()); + if (Objects.isNull(mesProductVersion)) { + MesException.throwMesBusiException("物料【%s】生产版本信息不存在", model.getPartNo()); + } //获取bom List mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList()); //生成流水码 @@ -1608,7 +1639,7 @@ public class MesWorkOrderService extends BaseMesService 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 +1672,8 @@ public class MesWorkOrderService extends BaseMesService 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 +2227,7 @@ public class MesWorkOrderService extends BaseMesService implements // 递归展开 BOM expendBomChild(organizeCode, mesPart.getPartNo(), bomVersion, bomData); - if (bomData.size() == 0) { + if (bomData.isEmpty()) { MesException.throwMesBusiException("零件号 %s 没找找到 ERP 同步的原始 BOM 数据,请检查接口是否正常!", mesPart.getPartNo()); } @@ -2264,17 +2295,27 @@ public class MesWorkOrderService extends BaseMesService implements 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); DdlPreparedPack.getOrderBy(MesExtConstWords.EFF_START_TIME, CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean); - List mesBoms = mesBomRDao.findByHqlWhere(ddlPackBean); + List 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 +2764,18 @@ public class MesWorkOrderService extends BaseMesService 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; } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java index 7f89c7b..d415f45 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java @@ -200,19 +200,41 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { /** * 生产版本是根据 生产零检号查询,不是根据erp零件号查询 */ - MesProductVersion prodVersion = getProdVersion(organizeCode, mesPartProdGroupDetail.getProductPartNo()); - if (prodVersion == null) { - log.info("请配置工厂:{},partNo:{}的生产版本", mesPartProdGroupDetail.organizeCode, mesPartProdGroupDetail.getProductPartNo()); - } else { - String productVersion = prodVersion.getProductVersion(); - mesWorkOrder.setProductVersion(productVersion); + /** + * 2024-12-13 bug 44316 排序工单bom拆分 修改 by castle + * 目前排序工单EDI解析和手工插单,获取BOM的逻辑需要调整 + * + * -武汉排序线为移库,不做汇报;其他工厂排序存在汇报情况 + * 1)不使用生产版本获取BOM + * 2)使用生产版本获取BOM + * + * 暂定方案: + * 1)零件生产组增加配置:是否根据生产版本拆分BOM + * 2)根据配置确认获取BOM方式 + * 是:根据现有方式获取BOM + * + * 否:不根据生产版本获取BOM; + * 根据总成零件号取最近的生效时间limit 1,取ECN变更号一致且生效时间一致的一组数据 + * ***BOM失效时间 > 当天 && BOM生效时间 <= 当前时间(yyyy-mm-dd hh:MM:ss) + */ + MesBom bom; + if (partProdGroup.getEnableBomVersion() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){ + MesProductVersion prodVersion = getProdVersion(organizeCode, mesPartProdGroupDetail.getProductPartNo()); + if (prodVersion == null) { + log.info("请配置工厂:{},partNo:{}的生产版本", mesPartProdGroupDetail.organizeCode, mesPartProdGroupDetail.getProductPartNo()); + } else { + String productVersion = prodVersion.getProductVersion(); + mesWorkOrder.setProductVersion(productVersion); + } + bom = mesBomService.findBom(organizeCode, prodVersion == null ? null : prodVersion.getAlternativePartList(), mesPartProdGroupDetail.getProductPartNo()); + }else { + bom = mesBomService.findBom(organizeCode, mesPartProdGroupDetail.getProductPartNo()); } // bom prodVersion.alternativePartList bom版本 /** * bom也需要根据生产零件号拆分 */ - MesBom bom = mesBomService.findBom(organizeCode, prodVersion == null ? null : prodVersion.getAlternativePartList(), mesPartProdGroupDetail.getProductPartNo()); if (bom != null) { mesWorkOrder.setBomCode(bom.getBomCode()); } else { @@ -313,7 +335,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { List workOrderPartList = new ArrayList<>(); if (partProdGroup.getIsDisassembleBom() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) { //打散bom使用生产零件号 - workOrderPartList = dismantleBom(mesPartProdGroupDetail.getProductPartNo(), mesWorkOrder.getQty(), sortInfo.getMatchTime(), bom.getBomCode(), sortInfo.getOrganizeCode(), mesPartProdGroupDetail.getWorkCellCode(), mesWorkOrder.getWorkOrderNo()); + workOrderPartList = dismantleBom(bom, mesPartProdGroupDetail.getProductPartNo(), mesWorkOrder.getQty(), sortInfo.getMatchTime(), sortInfo.getOrganizeCode(), mesPartProdGroupDetail.getWorkCellCode(), mesWorkOrder.getWorkOrderNo()); } @@ -486,18 +508,18 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { * 原pisces逻辑 * add by aix 2017.4.11 增加根据PTR维护页面维护的目视单显示项来替换WORKORDERASSEMBLY中的partdesc */ - if (!Objects.isNull(orderAssemblyList)){ - if (orderAssemblyList.getDisplaySeq()!=null && orderAssemblyList.getDisplaySeq()!=0){ - orderAssemblyList.setDisplayValue(mesPartPtr.getVisualItem()); - } - orderAssemblyList.setAssemblyPartNo(mesPartSap.getPartNo()); - orderAssemblyList.setAssemblyPartName(mesPartSap.getPartName()); - orderAssemblyList.setMatchRule(mesPartPtr.getReplacePartSnRule()); - ptrInfos.append("INFO|").append(mesPartPtr.getId()); - if (mesPartPtrDetail != null) { - ptrInfos.append("PART|").append(mesPartPtrDetail.getId()); - } - } + if (!Objects.isNull(orderAssemblyList)){ + if (orderAssemblyList.getDisplaySeq()!=null && orderAssemblyList.getDisplaySeq()!=0){ + orderAssemblyList.setDisplayValue(mesPartPtr.getVisualItem()); + } + orderAssemblyList.setAssemblyPartNo(mesPartSap.getPartNo()); + orderAssemblyList.setAssemblyPartName(mesPartSap.getPartName()); + orderAssemblyList.setMatchRule(mesPartPtr.getReplacePartSnRule()); + ptrInfos.append("INFO|").append(mesPartPtr.getId()); + if (mesPartPtrDetail != null) { + ptrInfos.append("PART|").append(mesPartPtrDetail.getId()); + } + } } } @@ -784,11 +806,11 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { } return null; } - private List dismantleBom(String partNo, double qty, String productTime, String bomCode, String organizeCode, String workCellCode, String workOrderNo) { + private List dismantleBom(MesBom mesBom, String partNo, double qty, String productTime, String organizeCode, String workCellCode, String workOrderNo) { List orderPartList = new ArrayList<>(); //1.根据bomCode,partNo productTime organizeCode 查询bom清单 bomList - List bomList = getPlatBom(partNo, productTime, bomCode, organizeCode); + List bomList = getPlatBom(mesBom,partNo, productTime, organizeCode); //2.根据bomList中的subPartNo 查询零件清单 partList List partNoList = bomList.stream().map(MesBom::getItemPartNo).distinct().collect(Collectors.toList()); @@ -828,13 +850,13 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { return orderPartList; } - private List getPlatBom(String partNo, String effectiveTime, String bomCode, String organizeCode) { + private List getPlatBom(MesBom mesBom,String partNo, String effectiveTime,String organizeCode) { //MES汇报查询BOM是否携带结束查询条件 MesConfig config = mesConfigService.getCfgValueByCode(organizeCode, MesExtConstWords.MES_REPORT_FIND_BOM_WITH_EFFENDTIME); Boolean isWithEffEndTime = (null != config && !org.springframework.util.StringUtils.isEmpty(config.getCfgValue()) && config.getCfgValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr())) ? true : false; - if (bomCode == null) { + if (mesBom == null) { //首先根据虚结构的零件号查询出最新的一条bom信息作为bomCode DdlPackBean bomCodePackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, bomCodePackBean); @@ -845,12 +867,11 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { if (bomList == null || bomList.isEmpty()) { return new ArrayList<>(); } - bomCode = bomList.get(0).getBomCode(); + mesBom = bomList.get(0); } List bomResultList = new ArrayList<>(); DdlPackBean bomPackBean = DdlPackBean.getDdlPackBean(organizeCode); - - DdlPreparedPack.getStringEqualPack(bomCode, "bomCode", bomPackBean); + DdlPreparedPack.getStringEqualPack(mesBom.getBomCode(), "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); @@ -858,7 +879,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { for (MesBom bom : bomList) { if (bom.getPartType() != null && bom.getPartType().equalsIgnoreCase("X")) { - getPlatBom(bom.getItemPartNo(), effectiveTime, null, organizeCode); + getPlatBom(null,bom.getItemPartNo(), effectiveTime, organizeCode); } else { bom.setBomCode(bom.getBomCode().toLowerCase()); bomResultList.add(bom);