From 2118f0e3b7748b23341f4ca3b6f173505b478502 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=8E?= <125556714+Topfunplus@users.noreply.github.com> Date: Wed, 21 May 2025 16:51:37 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=94=80=E5=94=AE=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E3=80=81=E7=9B=98=E7=82=B9=E5=8D=95=E3=80=81=E9=94=80?= =?UTF-8?q?=E5=94=AE=E5=87=BA=E5=BA=93(=E5=90=AB=E6=9C=89=E5=89=8D?= =?UTF-8?q?=E7=BD=AE=E6=94=B6=E8=B4=A7=E5=8D=95)=E3=80=81=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E5=85=A5=E5=BA=93(=E5=90=AB=E6=9C=89=E5=89=8D?= =?UTF-8?q?=E7=BD=AE=E6=94=B6=E8=B4=A7=E5=8D=95)=E7=9A=84=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ic/src/private/nc/bs/ic/m45/sign/SignBP.java | 2 +- .../rule/AfterSigningSynchronizeRuleMES.java | 40 ++++++++------- .../m45/sign/rule/PurchaseReceiptRuleMES.java | 13 ++--- .../rule/AfterSigningSynchronizeRuleMES.java | 38 ++++++++++---- .../sign/rule/SalesDeliveryOrderRuleMES.java | 47 +++++++++++------ .../AfterApprovingSynchronizeRuleMES.java | 50 +++++++++++-------- .../AfterApprovingSynchronizeRuleMES.java | 47 +++++++---------- 7 files changed, 133 insertions(+), 104 deletions(-) diff --git a/ic/src/private/nc/bs/ic/m45/sign/SignBP.java b/ic/src/private/nc/bs/ic/m45/sign/SignBP.java index 3951916..3086481 100644 --- a/ic/src/private/nc/bs/ic/m45/sign/SignBP.java +++ b/ic/src/private/nc/bs/ic/m45/sign/SignBP.java @@ -50,7 +50,7 @@ public class SignBP implements ISignBP, ISignRuleProvider { if (purchaseInVOs == null || purchaseInVOs.length == 0) { return; } - + // 检查并筛选组织为电缆的采购入库单 + List filteredPurchaseInVOS = checkAndFilterBills(purchaseInVOs); + if (filteredPurchaseInVOS.isEmpty()) { + return; + } // 初始化HTTP请求工具类 IHttpPostOtherSys httpPostOtherSys = NCLocator.getInstance().lookup(IHttpPostOtherSys.class); - for (PurchaseInVO purchaseInVO : purchaseInVOs) { + for (PurchaseInVO purchaseInVO : filteredPurchaseInVOS) { PurchaseInHeadVO hvo = (PurchaseInHeadVO) purchaseInVO.getParentVO(); PurchaseInBodyVO[] bvos = (PurchaseInBodyVO[]) purchaseInVO.getChildrenVO(); // 构建请求参数 JSONObject syncData = buildSyncData(hvo, bvos); - if (syncData != null) { - httpPostOtherSys.sendToExternalSystem(ADD_URL, syncData); - } + httpPostOtherSys.sendToExternalSystem(ADD_URL, syncData); } } catch (Exception e) { obmlog.error("采购入库同步MES-处理异常:" + e.getMessage(), e); @@ -69,19 +69,12 @@ public class AfterSigningSynchronizeRuleMES implements IRule { */ private JSONObject buildSyncData(PurchaseInHeadVO hvo, PurchaseInBodyVO[] bvos) throws BusinessException { obmlog.debug("采购入库同步MES-开始构建数据: " + hvo.getVbillcode()); -// if (!hvo.getPk_org().equals("0001A110000000000677")) { -// obmlog.debug("AfterSigningSynchronizeRule-跳过处理销售出库单,因为此单据组织非电缆: " + hvo.getVbillcode()); -// return null; -// } JSONObject requestData = new JSONObject(); // 设置操作类型 requestData.put("operation_type", "I"); // 签字为新增操作 - // 构建data数组 List dataList = new ArrayList<>(); - JSONObject dataObj = new JSONObject(); - // 设置入库单基本信息 UFDate billDate = hvo.getDbilldate(); dataObj.put("orderDate", billDate != null ? billDate.toString().substring(0, 10) : ""); // 入库日期 - 格式yyyy-MM-dd @@ -89,7 +82,6 @@ public class AfterSigningSynchronizeRuleMES implements IRule { // 仓库编码 - 使用正确的仓库字段(cwarehouseid) dataObj.put("warehouseId", transferCodeByPk(StordocVO.getDefaultTableName(), StordocVO.CODE, StordocVO.PK_STORDOC, hvo.getCwarehouseid())); // 仓库编码 - // 部门ID - 采购部门最新版本(cdptid)而非cdptvid,cdptvid是部门版本信息 dataObj.put("departmentId", transferCodeByPk(DeptVersionVO.getDefaultTableName(), DeptVersionVO.CODE, DeptVersionVO.PK_VID, hvo.getCdptvid())); // 部门编码 @@ -141,14 +133,28 @@ public class AfterSigningSynchronizeRuleMES implements IRule { detailsList.add(detailMap); } } - dataObj.put("details", detailsList); dataList.add(dataObj); - requestData.put("data", dataList); return requestData; } + + /** + * 检查并筛选需要同步的单据 + */ + private List checkAndFilterBills(PurchaseInVO[] purchaseInVOS) throws BusinessException { + List result = new ArrayList<>(); + for (PurchaseInVO vo : purchaseInVOS) { + // 检查组织是否为电缆组织 + if (vo.getHead() != null && "0001A110000000000677".equals(vo.getHead().getPk_org())) { + result.add(vo); + } + } + return result; + } + + /** * 根据主键查询对应的编码 */ diff --git a/ic/src/private/nc/bs/ic/m45/sign/rule/PurchaseReceiptRuleMES.java b/ic/src/private/nc/bs/ic/m45/sign/rule/PurchaseReceiptRuleMES.java index b4d364b..959d938 100644 --- a/ic/src/private/nc/bs/ic/m45/sign/rule/PurchaseReceiptRuleMES.java +++ b/ic/src/private/nc/bs/ic/m45/sign/rule/PurchaseReceiptRuleMES.java @@ -42,24 +42,20 @@ public class PurchaseReceiptRuleMES implements IRule { @Override public void process(PurchaseInVO[] purchaseInVOS) { try { + // 初始化HTTP请求工具类 + IHttpPostOtherSys httpPostOtherSys = NCLocator.getInstance().lookup(IHttpPostOtherSys.class); if (purchaseInVOS == null || purchaseInVOS.length == 0) { return; } - - // 检查并筛选采购收货单 + // 检查并筛选组织为电缆的采购收货单 List filteredPurchaseInVOS = checkAndFilterBills(purchaseInVOS); if (filteredPurchaseInVOS.isEmpty()) { return; } - - // 初始化HTTP请求工具类 - IHttpPostOtherSys httpPostOtherSys = NCLocator.getInstance().lookup(IHttpPostOtherSys.class); - // 处理每个采购收货单 for (PurchaseInVO purchaseInVO : filteredPurchaseInVOS) { PurchaseInHeadVO head = purchaseInVO.getHead(); PurchaseInBodyVO[] bodys = purchaseInVO.getBodys(); - // 每次新增采购收货单前,先删除第三方系统中已有的数据,再进行新增 String orderNo = head.getVbillcode(); boolean deleteSuccess = deletePurchaseReceipt(orderNo); @@ -128,18 +124,15 @@ public class PurchaseReceiptRuleMES implements IRule { */ private List checkAndFilterBills(PurchaseInVO[] purchaseInVOS) throws BusinessException { List result = new ArrayList<>(); - for (PurchaseInVO vo : purchaseInVOS) { // 检查组织是否为电缆组织 if (vo.getHead() != null && "0001A110000000000677".equals(vo.getHead().getPk_org())) { result.add(vo); } } - return result; } - /** * 构建符合MES系统接口规范的请求数据 */ diff --git a/ic/src/private/nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRuleMES.java b/ic/src/private/nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRuleMES.java index 5aa473b..925d398 100644 --- a/ic/src/private/nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRuleMES.java +++ b/ic/src/private/nc/bs/ic/m4c/sign/rule/AfterSigningSynchronizeRuleMES.java @@ -15,6 +15,7 @@ import nc.vo.bd.material.measdoc.MeasdocVO; import nc.vo.bd.psn.PsndocVO; import nc.vo.bd.rack.RackVO; import nc.vo.bd.supplier.SupplierVO; +import nc.vo.ic.m45.entity.PurchaseInVO; import nc.vo.ic.m4c.entity.SaleOutBodyVO; import nc.vo.ic.m4c.entity.SaleOutHeadVO; import nc.vo.ic.m4c.entity.SaleOutVO; @@ -29,6 +30,8 @@ import net.sf.mpxj.primavera.schema.CurrencyType; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; /** @@ -46,21 +49,23 @@ public class AfterSigningSynchronizeRuleMES implements IRule { @Override public void process(SaleOutVO[] saleOutVOS) { try { + // 初始化HTTP请求工具类 + IHttpPostOtherSys httpPostOtherSys = NCLocator.getInstance().lookup(IHttpPostOtherSys.class); if (saleOutVOS == null || saleOutVOS.length == 0) { return; } - // 初始化HTTP请求工具类 - IHttpPostOtherSys httpPostOtherSys = NCLocator.getInstance().lookup(IHttpPostOtherSys.class); + // 检查并筛选组织为电缆的销售出库单 + List filteredSaleOutVOS = checkAndFilterBills(saleOutVOS); + if (filteredSaleOutVOS.isEmpty()) { + return; + } // 处理每个销售出库单 - for (SaleOutVO saleOutVO : saleOutVOS) { + for (SaleOutVO saleOutVO : filteredSaleOutVOS) { SaleOutHeadVO hvo = (SaleOutHeadVO) saleOutVO.getParentVO(); SaleOutBodyVO[] bvos = (SaleOutBodyVO[]) saleOutVO.getChildrenVO(); // 构建要发送的数据 JSONObject syncData = buildSyncData(hvo, bvos); - if (syncData != null) { - // 发送数据到金思维系统(使用HttpPostOtherSysImpl处理网络请求) - httpPostOtherSys.sendToExternalSystem(SALE_OUT_URL, syncData); - } + httpPostOtherSys.sendToExternalSystem(SALE_OUT_URL, syncData); } } catch (Exception e) { obmlog.error("AfterSigningSynchronizeRule-处理异常:" + e.getMessage(), e); @@ -74,10 +79,6 @@ public class AfterSigningSynchronizeRuleMES implements IRule { */ private JSONObject buildSyncData(SaleOutHeadVO hvo, SaleOutBodyVO[] bvos) throws BusinessException { obmlog.debug("AfterSigningSynchronizeRule-开始处理销售出库单: " + hvo.getVbillcode()); -// if (!hvo.getPk_org().equals("0001A110000000000677")) { -// obmlog.debug("AfterSigningSynchronizeRule-跳过处理销售出库单,因为此单据组织非电缆: " + hvo.getVbillcode()); -// return null; -// } JSONObject requestData = new JSONObject(); JSONObject dataObj = new JSONObject(); @@ -177,6 +178,21 @@ public class AfterSigningSynchronizeRuleMES implements IRule { return requestData; } + /** + * 检查并筛选需要同步的单据 + */ + private List checkAndFilterBills(SaleOutVO[] saleOutVOS) throws BusinessException { + List result = new ArrayList<>(); + for (SaleOutVO vo : saleOutVOS) { + // 检查组织是否为电缆组织 + if (vo.getHead() != null && "0001A110000000000677".equals(vo.getHead().getPk_org())) { + result.add(vo); + } + } + return result; + } + + private String transferCodeByPk(String tableName, String selectField, String pkField, String pk) throws BusinessException { if (nc.vo.cmp.util.StringUtils.isEmpty(pk)) { return null; diff --git a/ic/src/private/nc/bs/ic/m4c/sign/rule/SalesDeliveryOrderRuleMES.java b/ic/src/private/nc/bs/ic/m4c/sign/rule/SalesDeliveryOrderRuleMES.java index 03b0cce..2cd9e8a 100644 --- a/ic/src/private/nc/bs/ic/m4c/sign/rule/SalesDeliveryOrderRuleMES.java +++ b/ic/src/private/nc/bs/ic/m4c/sign/rule/SalesDeliveryOrderRuleMES.java @@ -13,6 +13,7 @@ import nc.vo.bd.material.MaterialVO; import nc.vo.bd.material.measdoc.MeasdocVO; import nc.vo.bd.psn.PsndocVO; import nc.vo.bd.stordoc.StordocVO; +import nc.vo.ic.m45.entity.PurchaseInVO; import nc.vo.ic.m4c.entity.SaleOutBodyVO; import nc.vo.ic.m4c.entity.SaleOutHeadVO; import nc.vo.ic.m4c.entity.SaleOutVO; @@ -24,6 +25,8 @@ import nccloud.pubift.commen.itf.utils.IHttpPostOtherSys; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.List; /** @@ -40,29 +43,29 @@ public class SalesDeliveryOrderRuleMES implements IRule { @Override public void process(SaleOutVO[] saleOutVOS) { try { + // 初始化HTTP请求工具类 + IHttpPostOtherSys httpPostOtherSys = NCLocator.getInstance().lookup(IHttpPostOtherSys.class); if (saleOutVOS == null || saleOutVOS.length == 0) { return; } - - // 初始化HTTP请求工具类 - IHttpPostOtherSys httpPostOtherSys = NCLocator.getInstance().lookup(IHttpPostOtherSys.class); - + // 检查并筛选组织为电缆的采购收货单 + List filteredSaleOutVOS = checkAndFilterBills(saleOutVOS); + if (filteredSaleOutVOS.isEmpty()) { + return; + } // 处理每个销售交货单 - for (SaleOutVO saleOutVO : saleOutVOS) { + for (SaleOutVO saleOutVO : filteredSaleOutVOS) { SaleOutHeadVO hvo = (SaleOutHeadVO) saleOutVO.getParentVO(); SaleOutBodyVO[] bvos = (SaleOutBodyVO[]) saleOutVO.getChildrenVO(); - // 构建要发送的数据 JSONObject syncData = buildSyncData(hvo, bvos); - if (syncData != null) { - // 每次新增销售交货单之前 先删除 然后再新增 - String orderNo = hvo.getVbillcode(); - boolean flag = deleteSalesDeliveryOrder(orderNo); - if (flag) { - // 发送数据到MES系统 - obmlog.debug("SalesDeliveryOrderRuleMES-准备发送销售交货单数据: " + hvo.getVbillcode()); - httpPostOtherSys.sendToExternalSystem(MES_API_URL, syncData); - } + // 每次新增销售交货单之前 先删除 然后再新增 + String orderNo = hvo.getVbillcode(); + boolean flag = deleteSalesDeliveryOrder(orderNo); + if (flag) { + // 发送数据到MES系统 + obmlog.debug("SalesDeliveryOrderRuleMES-准备发送销售交货单数据: " + hvo.getVbillcode()); + httpPostOtherSys.sendToExternalSystem(MES_API_URL, syncData); } } } catch (Exception e) { @@ -230,6 +233,20 @@ public class SalesDeliveryOrderRuleMES implements IRule { } } + /** + * 检查并筛选需要同步的单据 + */ + private List checkAndFilterBills(SaleOutVO[] saleOutVOS) throws BusinessException { + List result = new ArrayList<>(); + for (SaleOutVO vo : saleOutVOS) { + // 检查组织是否为电缆组织 + if (vo.getHead() != null && "0001A110000000000677".equals(vo.getHead().getPk_org())) { + result.add(vo); + } + } + return result; + } + private String transferSpecialField(String field) { if (field == null || field.trim().isEmpty()) { return null; diff --git a/ic/src/private/nc/bs/ic/m4r/approve/rule/AfterApprovingSynchronizeRuleMES.java b/ic/src/private/nc/bs/ic/m4r/approve/rule/AfterApprovingSynchronizeRuleMES.java index 8f40382..623ac96 100644 --- a/ic/src/private/nc/bs/ic/m4r/approve/rule/AfterApprovingSynchronizeRuleMES.java +++ b/ic/src/private/nc/bs/ic/m4r/approve/rule/AfterApprovingSynchronizeRuleMES.java @@ -13,6 +13,7 @@ import nc.vo.bd.material.MaterialVO; import nc.vo.bd.rack.RackVO; import nc.vo.bd.stordoc.StordocVO; import nc.vo.bd.supplier.SupplierVO; +import nc.vo.ic.m4c.entity.SaleOutVO; import nc.vo.ic.m4r.entity.InvCountBillVO; import nc.vo.ic.m4r.entity.InvCountBodyVO; import nc.vo.ic.m4r.entity.InvCountHeaderVO; @@ -25,6 +26,9 @@ import nc.vo.pubapp.pattern.pub.SqlBuilder; import nc.vo.vorg.DeptVersionVO; import nccloud.pubift.commen.itf.utils.IHttpPostOtherSys; +import java.util.ArrayList; +import java.util.List; + /** * 盘点(审批后传MES) @@ -41,25 +45,24 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { @Override public void process(InvCountBillVO[] invCountBillVOs) { try { + // 初始化HTTP请求工具类 + IHttpPostOtherSys httpPostOtherSys = NCLocator.getInstance().lookup(IHttpPostOtherSys.class); if (invCountBillVOs == null || invCountBillVOs.length == 0) { return; } - - // 初始化HTTP请求工具类 - IHttpPostOtherSys httpPostOtherSys = NCLocator.getInstance().lookup(IHttpPostOtherSys.class); + // 筛选需要处理的单据 + List filteredBillVOS = checkAndFilterBills(invCountBillVOs); + if (filteredBillVOS.isEmpty()) { + return; + } // 处理每个盘点单 - for (InvCountBillVO invCountBillVO : invCountBillVOs) { + for (InvCountBillVO invCountBillVO : filteredBillVOS) { InvCountHeaderVO hvo = invCountBillVO.getParentVO(); InvCountBodyVO[] bvos = invCountBillVO.getChildrenVO(); - // 构建要发送的数据 JSONObject syncData = buildSyncData(hvo, bvos); - - if (syncData != null) { - // 发送数据到金思维系统(使用HttpPostOtherSysImpl处理网络请求) - httpPostOtherSys.sendToExternalSystem(INV_COUNT_URL, syncData); - - } + // 发送数据到金思维系统(使用HttpPostOtherSysImpl处理网络请求) + httpPostOtherSys.sendToExternalSystem(INV_COUNT_URL, syncData); } } catch (Exception e) { obmlog.error("AfterApprovingSynchronizeRule-处理异常:" + e.getMessage(), e); @@ -67,34 +70,39 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { } } + /** + * 检查并筛选需要同步的单据 + */ + private List checkAndFilterBills(InvCountBillVO[] invCountBillVOS) throws BusinessException { + List result = new ArrayList<>(); + for (InvCountBillVO vo : invCountBillVOS) { + // 检查组织是否为电缆组织 + if (vo.getHead() != null && "0001A110000000000677".equals(vo.getHead().getPk_org())) { + result.add(vo); + } + } + return result; + } + /** * 构建符合金思维系统接口规范的请求数据 * 按照接口文档要求构建JSON结构 */ private JSONObject buildSyncData(InvCountHeaderVO hvo, InvCountBodyVO[] bvos) throws BusinessException { obmlog.debug("AfterApprovingSynchronizeRule-开始处理盘点单: " + hvo.getVbillcode()); - if (!hvo.getPk_org().equals("0001A110000000000677")) { - obmlog.debug("AfterApprovingSynchronizeRule-跳过处理销售出库单,因为此单据组织非电缆: " + hvo.getVbillcode()); - return null; - } - // 按照新规范构建请求数据 JSONObject requestBody = new JSONObject(); JSONObject requestData = new JSONObject(); - // 盘点主信息 盘点单号 为空时自动生成 requestData.put("PDDH", null); - // 获取仓库编码 String warehouseCode = transferCodeByPk(StordocVO.getDefaultTableName(), StordocVO.CODE, StordocVO.PK_STORDOC, hvo.getCwarehouseid()); requestData.put("CKID", warehouseCode); - // 盘点部门编码 String deptCode = transferCodeByPk(DeptVersionVO.getDefaultTableName(), DeptVersionVO.CODE, DeptVersionVO.PK_VID, hvo.getCdptvid()); requestData.put("BMID", deptCode); // 盘点人 requestData.put("PDR", getStringValue(hvo.getCountoperator())); - // 日期处理 - 盘点日期 UFDate dcountdate = hvo.getDcountdate(); if (dcountdate != null) { @@ -104,7 +112,6 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { } // 备注 requestData.put("BZ", getStringValue(hvo.getVnote())); - // 构建明细数组 JSONArray details = new JSONArray(); if (bvos != null) { @@ -154,7 +161,6 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { detail.put("KHID", transferCodeByPk(CustomerVO.getDefaultTableName(), CustomerVO.CODE, CustomerVO.PK_CUSTOMER, bvo.getCasscustid())); // 供应商编码 detail.put("GYSID", transferCodeByPk(SupplierVO.getDefaultTableName(), SupplierVO.CODE, SupplierVO.PK_SUPPLIER, bvo.getCvendorid())); - details.add(detail); } } diff --git a/so/src/private/nc/bs/so/m30/rule/approve/AfterApprovingSynchronizeRuleMES.java b/so/src/private/nc/bs/so/m30/rule/approve/AfterApprovingSynchronizeRuleMES.java index af41f7e..de469ed 100644 --- a/so/src/private/nc/bs/so/m30/rule/approve/AfterApprovingSynchronizeRuleMES.java +++ b/so/src/private/nc/bs/so/m30/rule/approve/AfterApprovingSynchronizeRuleMES.java @@ -14,6 +14,7 @@ import nc.vo.bd.material.MaterialVO; import nc.vo.bd.material.measdoc.MeasdocVO; import nc.vo.bd.psn.PsndocVO; import nc.vo.cmp.util.StringUtils; +import nc.vo.ic.m4c.entity.SaleOutVO; import nc.vo.org.DeptVO; import nc.vo.pub.BusinessException; import nc.vo.pub.billtype.BilltypeVO; @@ -30,7 +31,9 @@ import nccloud.pubift.commen.itf.utils.IHttpPostOtherSys; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.ArrayList; import java.util.Date; +import java.util.List; /** * 销售订单审批后推送MES金思维系统 @@ -47,23 +50,21 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { @Override public void process(SaleOrderVO[] saleOrderVOs) { try { + // 初始化HTTP请求工具类 + IHttpPostOtherSys httpPostOtherSys = NCLocator.getInstance().lookup(IHttpPostOtherSys.class); if (saleOrderVOs == null || saleOrderVOs.length == 0) { return; } - // 初始化HTTP请求工具类 - IHttpPostOtherSys httpPostOtherSys = NCLocator.getInstance().lookup(IHttpPostOtherSys.class); + // 筛选组织为电缆的销售订单 + List filteredSaleOrderVOS = checkAndFilterBills(saleOrderVOs); // 处理每个销售订单 - for (SaleOrderVO saleOrderVO : saleOrderVOs) { + for (SaleOrderVO saleOrderVO : filteredSaleOrderVOS) { SaleOrderHVO head = saleOrderVO.getParentVO(); SaleOrderBVO[] bodys = saleOrderVO.getChildrenVO(); - // 构建要发送的数据 JSONObject syncData = buildSyncData(head, bodys); - - if (syncData != null) { - // 发送数据到金思维系统 - httpPostOtherSys.sendToExternalSystem(SALE_ORDER_URL, syncData); - } + // 发送数据到金思维系统 + httpPostOtherSys.sendToExternalSystem(SALE_ORDER_URL, syncData); } } catch (Exception e) { obmlog.error("AfterApprovingSynchronizeRuleMES-处理异常:" + e.getMessage(), e); @@ -76,12 +77,6 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { */ private JSONObject buildSyncData(SaleOrderHVO head, SaleOrderBVO[] bodys) throws BusinessException { obmlog.debug("AfterApprovingSynchronizeRuleMES-开始处理销售订单: " + head.getVbillcode()); - // 检查组织、单据类型等限制条件 - if (!checkOrderValidForSync(head)) { - obmlog.debug("AfterApprovingSynchronizeRule-跳过处理销售订单,因为此单据组织非电缆: " + head.getVbillcode()); - return null; - } - // 创建请求数据 JSONObject requestData = new JSONObject(); JSONObject data = new JSONObject(); @@ -137,7 +132,6 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { data.put("contractType", null); data.put("deliveryRemarks", null); data.put("remarks", head.getVnote()); - // 构建明细数据 - 只填必填字段 JSONArray details = new JSONArray(); if (bodys != null) { @@ -153,8 +147,6 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { data.put("deliveryDate", dsenddate != null ? dsenddate.toString().substring(0, 10) : null); // 汇率 表体nexchangerate data.put("exchangeRate", body.getVchangerate() != null ? transferSpecialField(body.getVchangerate()) : null); - - // 以下表体所需字段 // 序号 detailItem.put("sequenceNum", body.getCrowno()); @@ -200,28 +192,29 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { detailItem.put("customNo", null); detailItem.put("customSN", null); detailItem.put("remarks", null); - details.add(detailItem); } } - data.put("DETAILS", details); requestData.put("Data", data); - return requestData; } /** * 检查订单是否符合同步条件 */ - private boolean checkOrderValidForSync(SaleOrderHVO head) { - if (!head.getPk_org().equals("0001A110000000000677")) { - obmlog.debug("AfterApprovingSynchronizeRule-跳过处理销售出库单,因为此单据组织非电缆: " + head.getVbillcode()); - return true; + private List checkAndFilterBills(SaleOrderVO[] saleOutVOS) { + List result = new ArrayList<>(); + for (SaleOrderVO vo : saleOutVOS) { + // 检查组织是否为电缆组织 + if (vo.getParentVO().getPk_org() != null && "0001A110000000000677".equals(vo.getParentVO().getPk_org())) { + result.add(vo); + } } - return false; + return result; } + /** * 转换特殊字段 如 1/1 转换为小数 1.0 */ @@ -234,11 +227,9 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { if (split.length == 2) { String numStr = split[0].trim(); String denStr = split[1].trim(); - if (denStr.equals("0")) { return "0.00"; // 分母不能为零 } - try { BigDecimal numerator = new BigDecimal(numStr); BigDecimal denominator = new BigDecimal(denStr);