重构销售订单、盘点单、销售出库(含有前置收货单)、采购入库(含有前置收货单)的逻辑

This commit is contained in:
张明 2025-05-21 16:51:37 +08:00
parent 994b14b211
commit 2118f0e3b7
7 changed files with 133 additions and 104 deletions

View File

@ -50,7 +50,7 @@ public class SignBP implements ISignBP<PurchaseInVO>, ISignRuleProvider<Purchase
processor.addAfterRule(new MobAfterPurchaseInSign());
processor.addAfterRule(new SignM45AndRewriteCTPayPlan());
processor.addAfterRule(new SignInsertFeeDetailRule());
// 签字后推送至MES系统
// 签字后推送至MES系统 推送销售出库单之前 先推送前置通知单
processor.addAfterRule(new PurchaseReceiptRuleMES());
processor.addAfterRule(new AfterSigningSynchronizeRuleMES());
}

View File

@ -7,7 +7,6 @@ import nc.bs.logging.Log;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.vo.bd.material.MaterialVO;
import nc.vo.bd.material.measdoc.MeasdocVO;
import nc.vo.bd.psn.PsndocVO;
import nc.vo.bd.rack.RackVO;
import nc.vo.bd.stordoc.StordocVO;
@ -15,7 +14,6 @@ import nc.vo.bd.supplier.SupplierVO;
import nc.vo.ic.m45.entity.PurchaseInBodyVO;
import nc.vo.ic.m45.entity.PurchaseInHeadVO;
import nc.vo.ic.m45.entity.PurchaseInVO;
import nc.vo.org.DeptVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFDate;
import nc.vo.pub.lang.UFDouble;
@ -46,17 +44,19 @@ public class AfterSigningSynchronizeRuleMES implements IRule<PurchaseInVO> {
if (purchaseInVOs == null || purchaseInVOs.length == 0) {
return;
}
// 检查并筛选组织为电缆的采购入库单
List<PurchaseInVO> 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<PurchaseInVO> {
*/
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<JSONObject> 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<PurchaseInVO> {
// 仓库编码 - 使用正确的仓库字段(cwarehouseid)
dataObj.put("warehouseId", transferCodeByPk(StordocVO.getDefaultTableName(),
StordocVO.CODE, StordocVO.PK_STORDOC, hvo.getCwarehouseid())); // 仓库编码
// 部门ID - 采购部门最新版本(cdptid)而非cdptvidcdptvid是部门版本信息
dataObj.put("departmentId", transferCodeByPk(DeptVersionVO.getDefaultTableName(),
DeptVersionVO.CODE, DeptVersionVO.PK_VID, hvo.getCdptvid())); // 部门编码
@ -141,14 +133,28 @@ public class AfterSigningSynchronizeRuleMES implements IRule<PurchaseInVO> {
detailsList.add(detailMap);
}
}
dataObj.put("details", detailsList);
dataList.add(dataObj);
requestData.put("data", dataList);
return requestData;
}
/**
* 检查并筛选需要同步的单据
*/
private List<PurchaseInVO> checkAndFilterBills(PurchaseInVO[] purchaseInVOS) throws BusinessException {
List<PurchaseInVO> result = new ArrayList<>();
for (PurchaseInVO vo : purchaseInVOS) {
// 检查组织是否为电缆组织
if (vo.getHead() != null && "0001A110000000000677".equals(vo.getHead().getPk_org())) {
result.add(vo);
}
}
return result;
}
/**
* 根据主键查询对应的编码
*/

View File

@ -42,24 +42,20 @@ public class PurchaseReceiptRuleMES implements IRule<PurchaseInVO> {
@Override
public void process(PurchaseInVO[] purchaseInVOS) {
try {
// 初始化HTTP请求工具类
IHttpPostOtherSys httpPostOtherSys = NCLocator.getInstance().lookup(IHttpPostOtherSys.class);
if (purchaseInVOS == null || purchaseInVOS.length == 0) {
return;
}
// 쇱꿴깻<EFBFBD>朞꽃뭔澗새데
// 检查并筛选组织为电缆的采购收货单
List<PurchaseInVO> 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<PurchaseInVO> {
*/
private List<PurchaseInVO> checkAndFilterBills(PurchaseInVO[] purchaseInVOS) throws BusinessException {
List<PurchaseInVO> result = new ArrayList<>();
for (PurchaseInVO vo : purchaseInVOS) {
// 检查组织是否为电缆组织
if (vo.getHead() != null && "0001A110000000000677".equals(vo.getHead().getPk_org())) {
result.add(vo);
}
}
return result;
}
/**
* 构建符合MES系统接口规范的请求数据
*/

View File

@ -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<SaleOutVO> {
@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<SaleOutVO> 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<SaleOutVO> {
*/
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<SaleOutVO> {
return requestData;
}
/**
* 检查并筛选需要同步的单据
*/
private List<SaleOutVO> checkAndFilterBills(SaleOutVO[] saleOutVOS) throws BusinessException {
List<SaleOutVO> 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;

View File

@ -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<SaleOutVO> {
@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<SaleOutVO> 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<SaleOutVO> {
}
}
/**
* 检查并筛选需要同步的单据
*/
private List<SaleOutVO> checkAndFilterBills(SaleOutVO[] saleOutVOS) throws BusinessException {
List<SaleOutVO> 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;

View File

@ -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<InvCountBillVO> {
@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<InvCountBillVO> 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<InvCountBillVO> {
}
}
/**
* 检查并筛选需要同步的单据
*/
private List<InvCountBillVO> checkAndFilterBills(InvCountBillVO[] invCountBillVOS) throws BusinessException {
List<InvCountBillVO> 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<InvCountBillVO> {
}
// 备注
requestData.put("BZ", getStringValue(hvo.getVnote()));
// 构建明细数组
JSONArray details = new JSONArray();
if (bvos != null) {
@ -154,7 +161,6 @@ public class AfterApprovingSynchronizeRuleMES implements IRule<InvCountBillVO> {
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);
}
}

View File

@ -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<SaleOrderVO> {
@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<SaleOrderVO> 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<SaleOrderVO> {
*/
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<SaleOrderVO> {
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<SaleOrderVO> {
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<SaleOrderVO> {
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<SaleOrderVO> checkAndFilterBills(SaleOrderVO[] saleOutVOS) {
List<SaleOrderVO> 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<SaleOrderVO> {
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);