From d08a4b955fc574b0bd6017522cadd4885f127d05 Mon Sep 17 00:00:00 2001 From: maolei Date: Tue, 17 Jun 2025 09:59:44 +0800 Subject: [PATCH] =?UTF-8?q?mmpac=E6=B5=81=E7=A8=8B=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E8=AE=A2=E5=8D=95:=20=E5=A2=9E=E5=8A=A0=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=90=8C=E6=AD=A5=E5=88=B0MES=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E7=9A=84=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 shouldSyncToMes 方法判断是否需要同步到MES系统 - 根据源头单据类型判断是否为销售订单 - 如果是销售订单,联查销售订单子实体 - 判断销售订单是否有定制标识 - 如果有定制标识,检查工艺配置完成时间是否有值 - 如果无定制标识,允许同步到MES - 如果有定制标识且工艺配置完成时间有值,允许同步到MES- 如果有定制标识且工艺配置完成时间为空,不允许同步到MES --- .../bp/rule/AfterApproveRuleSyncMes.java | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java index 84aa02e..a465c8f 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveRuleSyncMes.java @@ -7,6 +7,7 @@ import nc.bs.dao.BaseDAO; import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; import nc.impl.pubapp.pattern.rule.IRule; +import nc.jdbc.framework.SQLParameter; import nc.jdbc.framework.processor.ColumnProcessor; import nc.vo.bc.pmpub.project.ProjectHeadVO; import nc.vo.bd.bom.bom0202.entity.BomVO; @@ -21,6 +22,7 @@ import nc.vo.pub.BusinessException; import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.pubapp.pattern.pub.SqlBuilder; import nc.vo.scmpub.util.ArrayUtil; +import nc.vo.so.m30.entity.SaleOrderBVO; import nc.vo.vorg.DeptVersionVO; import nccloud.pubift.commen.itf.utils.IHttpPostOtherSys; @@ -202,6 +204,12 @@ public class AfterApproveRuleSyncMes implements IRule { String vbillcode = head.getVbillcode(); // ݺ String itemRow = item.getVrowno(); // к obmlog.info("ʼΪ " + vbillcode + " " + itemRow + " ͬMESݡ"); + // ǷҪͬMESϵͳ + if (!shouldSyncToMes(item)) { + obmlog.info(" " + vbillcode + " " + itemRow + " ͬͬMESϵͳ"); + return; + } + // orderNo String +к vbillcode+itemRow String orderNoWithRow = vbillcode + itemRow; if (orderNoWithRow.length() > 18) { @@ -425,4 +433,80 @@ public class AfterApproveRuleSyncMes implements IRule { return field; } + /** + * жǷҪͬMESϵͳ + * ҵ߼ + * 1. ͨԴͷжǷΪ۶ԴͷΪ30 + * 2. ۶Ҫ۶ʵ + * 3. ж۶ǷжƱʶ(vbdef18) + * 4. жƱʶҪ鹤ʱ(vbdef17)Ƿֵ + * - ֵݸMES + * - ֵݸMES + * 5. ޶ƱʶݸMES + * + * @param item ϸ + * @return true-Ҫͬfalse-Ҫͬ + * @throws BusinessException + */ + private boolean shouldSyncToMes(PMOItemVO item) throws BusinessException { + // ԴͷǷΪ۶30 + if (!"30".equals(item.getVfirsttype())) { + // ۶Դֱͬ + obmlog.debug("ϸԴ۶Դͷͣ" + item.getVfirsttype() + "ͬ"); + return true; + } + + // ۶ԴҪһ + String vfirstbid = item.getVfirstbid(); // ԴͷӱID + if (StringUtils.isEmpty(vfirstbid)) { + obmlog.warn("ϸԴΪ۶ԴͷӱIDΪգĬͬ"); + return true; + } + + try { + // ѯ۶ʵĶƱʶ͹ʱ + SqlBuilder sqlBuilder = new SqlBuilder(); + sqlBuilder.append(" SELECT vbdef18, vbdef17 "); + sqlBuilder.append(" FROM so_saleorder_b "); sqlBuilder.append(" WHERE csaleorderbid = ? "); + sqlBuilder.append(" AND dr = 0 "); + SQLParameter sqlParam = new SQLParameter(); + sqlParam.addParam(vfirstbid); + SaleOrderBVO saleOrderBVO = (SaleOrderBVO) dao.retrieveByPK(SaleOrderBVO.class, vfirstbid); + if (Objects.isNull(saleOrderBVO)) { + obmlog.warn("δѯ۶ʵϢID" + vfirstbid + "Ĭͬ"); + return true; + } + + String vbdef18 = saleOrderBVO.getVbdef18(); + String vbdef17 = saleOrderBVO.getVbdef17(); + + obmlog.debug("۶Ʊʶ" + vbdef18 + "ʱ䣺" + vbdef17); + + // ޶Ʊʶͬ + if (StringUtils.isEmpty(vbdef18)) { + obmlog.debug("۶޶Ʊʶͬ"); + return true; + } + + if ("N".equals(vbdef18)) { + obmlog.debug("۶ƱʶΪNͬ"); + return true; + } + + // жƱʶ鹤ʱ + if (StringUtils.isEmpty(vbdef17)) { + obmlog.info("۶жƱʶʱΪգͬ"); + return false; + } else { + obmlog.debug("۶жƱʶҹʱֵͬ"); + return true; + } + + } catch (Exception e) { + obmlog.error("ѯ۶Ϣʧܣ" + e.getMessage(), e); + // ѯʧʱΪ˱ӰҵĬͬ + throw new BusinessException("ѯ۶Ϣʧܣ" + e.getMessage()); + } + } + }