diff --git a/ic/src/private/nc/bs/ic/m45/sign/rule/AfterSigningSynchronizeRuleMES.java b/ic/src/private/nc/bs/ic/m45/sign/rule/AfterSigningSynchronizeRuleMES.java index b9a2609..916c364 100644 --- a/ic/src/private/nc/bs/ic/m45/sign/rule/AfterSigningSynchronizeRuleMES.java +++ b/ic/src/private/nc/bs/ic/m45/sign/rule/AfterSigningSynchronizeRuleMES.java @@ -5,6 +5,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.itf.arap.goldentax.SysParaInitQuery; import nc.jdbc.framework.processor.ColumnProcessor; import nc.vo.bd.material.MaterialVO; import nc.vo.bd.psn.PsndocVO; @@ -26,6 +27,8 @@ import nccloud.pubift.commen.itf.utils.IHttpPostOtherSys; import java.util.ArrayList; import java.util.List; +import static nccloud.pubift.commen.impl.utils.HttpPostOtherSysImpl.checkIfIncludeOrg; + /** * 采购入库签字后同步到MES */ @@ -135,15 +138,9 @@ public class AfterSigningSynchronizeRuleMES implements IRule { private List checkAndFilterBills(PurchaseInVO[] purchaseInVOS) { List result = new ArrayList<>(); for (PurchaseInVO vo : purchaseInVOS) { - // 检查组织是否为电缆组织 -// if (vo.getHead() != null && "0001A110000000000677".equals(vo.getHead().getPk_org())) { -// result.add(vo); -// } - try { - String targetCode = "C034"; String code = transferCodeByPk(StockOrgVO.getDefaultTableName(), StockOrgVO.CODE, StockOrgVO.PK_STOCKORG, vo.getParentVO().getPk_org()); - if (code != null && code.equals(targetCode)) { + if (checkIfIncludeOrg(code)) { result.add(vo); } } catch (BusinessException e) { 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 2928af6..cb16d1c 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 @@ -6,6 +6,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.itf.arap.goldentax.SysParaInitQuery; import nc.jdbc.framework.processor.ColumnProcessor; import nc.vo.bd.material.MaterialVO; import nc.vo.bd.material.measdoc.MeasdocVO; @@ -30,6 +31,8 @@ import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; +import static nccloud.pubift.commen.impl.utils.HttpPostOtherSysImpl.checkIfIncludeOrg; + /** * (前置)采购收货单推送MES系统,后续调用采购入库 */ @@ -128,15 +131,9 @@ public class PurchaseReceiptRuleMES implements IRule { private List checkAndFilterBills(PurchaseInVO[] purchaseInVOS) { List result = new ArrayList<>(); for (PurchaseInVO vo : purchaseInVOS) { - // 检查组织是否为电缆组织 -// if (vo.getHead() != null && "0001A110000000000677".equals(vo.getHead().getPk_org())) { -// result.add(vo); -// } - try { - String targetCode = "C034"; String code = transferCodeByPk(StockOrgVO.getDefaultTableName(), StockOrgVO.CODE, StockOrgVO.PK_STOCKORG, vo.getParentVO().getPk_org()); - if (code != null && code.equals(targetCode)) { + if (checkIfIncludeOrg(code)) { result.add(vo); } } catch (BusinessException e) { 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 aa86500..3165323 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 @@ -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.itf.arap.goldentax.SysParaInitQuery; import nc.jdbc.framework.processor.ColumnProcessor; import nc.vo.bd.currtype.CurrtypeVO; import nc.vo.bd.cust.CustomerVO; @@ -37,6 +38,8 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; +import static nccloud.pubift.commen.impl.utils.HttpPostOtherSysImpl.checkIfIncludeOrg; + /** * 销售出库(签字后传MES金思维系统) @@ -191,14 +194,9 @@ public class AfterSigningSynchronizeRuleMES implements IRule { private List checkAndFilterBills(SaleOutVO[] saleOutVOS) { List result = new ArrayList<>(); for (SaleOutVO vo : saleOutVOS) { - // 检查组织是否为电缆组织 -// if (vo.getHead() != null && "0001A110000000000677".equals(vo.getHead().getPk_org())) { -// result.add(vo); -// } try { - String targetCode = "C034"; String code = transferCodeByPk(StockOrgVO.getDefaultTableName(), StockOrgVO.CODE, StockOrgVO.PK_STOCKORG, vo.getParentVO().getPk_org()); - if (code != null && code.equals(targetCode)) { + if (checkIfIncludeOrg(code)) { result.add(vo); } } catch (BusinessException e) { 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 55d19c7..d840361 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 @@ -6,6 +6,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.itf.arap.goldentax.SysParaInitQuery; import nc.jdbc.framework.processor.ColumnProcessor; import nc.vo.bd.currtype.CurrtypeVO; import nc.vo.bd.cust.CustomerVO; @@ -29,6 +30,8 @@ import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; +import static nccloud.pubift.commen.impl.utils.HttpPostOtherSysImpl.checkIfIncludeOrg; + /** * (前置)销售交货单(BIP无) 推送至MES @@ -235,14 +238,9 @@ public class SalesDeliveryOrderRuleMES implements IRule { private List checkAndFilterBills(SaleOutVO[] saleOutVOS) { List result = new ArrayList<>(); for (SaleOutVO vo : saleOutVOS) { - // 检查组织是否为电缆组织 -// if (vo.getHead() != null && "0001A110000000000677".equals(vo.getHead().getPk_org())) { -// result.add(vo); -// } try { - String targetCode = "C034"; String code = transferCodeByPk(StockOrgVO.getDefaultTableName(), StockOrgVO.CODE, StockOrgVO.PK_STOCKORG, vo.getParentVO().getPk_org()); - if (code != null && code.equals(targetCode)) { + if (checkIfIncludeOrg(code)) { result.add(vo); } } catch (BusinessException e) { 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 3fa1511..aa8554a 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 @@ -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.itf.arap.goldentax.SysParaInitQuery; import nc.jdbc.framework.processor.ColumnProcessor; import nc.vo.bd.cust.CustomerVO; import nc.vo.bd.material.MaterialVO; @@ -28,6 +29,8 @@ import nccloud.pubift.commen.itf.utils.IHttpPostOtherSys; import java.util.ArrayList; import java.util.List; +import static nccloud.pubift.commen.impl.utils.HttpPostOtherSysImpl.checkIfIncludeOrg; + /** * 盘点(审批后传MES) @@ -77,14 +80,9 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { private List checkAndFilterBills(InvCountBillVO[] invCountBillVOS) { List result = new ArrayList<>(); for (InvCountBillVO vo : invCountBillVOS) { - // 检查组织是否为电缆组织 -// if (vo.getHead() != null && "0001A110000000000677".equals(vo.getHead().getPk_org())) { -// result.add(vo); -// } try { - String targetCode = "C034"; String code = transferCodeByPk(StockOrgVO.getDefaultTableName(), StockOrgVO.CODE, StockOrgVO.PK_STOCKORG, vo.getParentVO().getPk_org()); - if (code != null && code.equals(targetCode)) { + if (checkIfIncludeOrg(code)) { result.add(vo); } } catch (BusinessException e) { diff --git a/ic/src/private/nccloud/pubift/commen/impl/utils/HttpPostOtherSysImpl.java b/ic/src/private/nccloud/pubift/commen/impl/utils/HttpPostOtherSysImpl.java index 6b64de0..b4dcc67 100644 --- a/ic/src/private/nccloud/pubift/commen/impl/utils/HttpPostOtherSysImpl.java +++ b/ic/src/private/nccloud/pubift/commen/impl/utils/HttpPostOtherSysImpl.java @@ -128,6 +128,25 @@ public class HttpPostOtherSysImpl implements IHttpPostOtherSys { return false; } + /** + * 检查当前组织是否为电缆 + */ + public static boolean checkIfIncludeOrg(String code) throws BusinessException { + //当当前操作人员是BIP的时候 直接return 不走同步MES的业务逻辑 + String targetCode = SysParaInitQuery.getParaString("GLOBLE00000000000000", "INCLUDEORG"); + if (targetCode == null || StringUtils.isEmpty(targetCode)) { + throw new BusinessException("未配置组织参数,请前往 [业务参数设置-全局] 配置INCLUDEORG参数"); + } + String[] orgItem = targetCode.split(";"); + for (String orgCode : orgItem) { + if (!orgCode.isEmpty() && orgCode.equals(code)) { + obmlog.debug("当前处理组织校验为电缆:" + code); + return true; + } + } + return false; + } + /** * 业务请求post方法 */ diff --git a/pu/src/private/nc/bs/pu/m21/plugin/BatchTransferToPurchaseOrder.java b/pu/src/private/nc/bs/pu/m21/plugin/BatchTransferToPurchaseOrder.java index 9f59ebe..8642b25 100644 --- a/pu/src/private/nc/bs/pu/m21/plugin/BatchTransferToPurchaseOrder.java +++ b/pu/src/private/nc/bs/pu/m21/plugin/BatchTransferToPurchaseOrder.java @@ -22,6 +22,8 @@ import nc.vo.pu.m21.entity.OrderHeaderVO; import nc.vo.pu.m21.entity.OrderItemVO; import nc.vo.pu.m21.entity.OrderVO; import nc.vo.pub.BusinessException; +import nc.vo.pub.CircularlyAccessibleValueObject; +import nc.vo.pub.ISuperVO; import nc.vo.pub.VOStatus; import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.pubapp.pattern.model.entity.bill.AbstractBill; @@ -173,49 +175,48 @@ public class BatchTransferToPurchaseOrder implements IBackgroundWorkPlugin { /** * 批量转换请购单到采购订单 */ - private void processBatchTransfer(PraybillVO[] vos, BgWorkingContext bgWorkingContext) throws BusinessException { + private void processBatchTransfer(PraybillVO[] vos, BgWorkingContext bgWorkingContext) { logger.info("开始批量转换请购单到采购订单,请购单数量: " + vos.length, this.getClass(), "processBatchTransfer"); - - try { - // 调用单据转换规则生成采购订单(20->21) - OrderVO[] orderVOs = PfServiceScmUtil.exeVOChangeByBillItfDef("20", "21", vos); - if (orderVOs == null || orderVOs.length == 0) { - logger.warn("单据转换未生成任何采购订单", this.getClass(), "processBatchTransfer"); - return; - } - for (OrderVO orderVO : orderVOs) { - // 对采购订单赋值行号 - OrderHeaderVO hvo = orderVO.getHVO(); - hvo.setStatus(2); - OrderItemVO[] bvo = orderVO.getBVO(); - for (int j = 0; j < bvo.length; j++) { - int rowNum = (j + 1) * 10; - bvo[j].setStatus(2); - bvo[j].setCrowno(String.valueOf(rowNum)); - } - } - // 批量处理 - processBatch(vos, orderVOs); - } catch (Exception e) { - logger.error("批量转换请购单到采购订单失败", e, this.getClass(), "processBatchTransfer"); + // 调用单据转换规则生成采购订单(20->21) + OrderVO[] orderVOs = PfServiceScmUtil.exeVOChangeByBillItfDef("20", "21", vos); + if (orderVOs == null || orderVOs.length == 0) { + logger.warn("单据转换未生成任何采购订单", this.getClass(), "processBatchTransfer"); + return; } + for (OrderVO orderVO : orderVOs) { + // 对采购订单赋值行号 + OrderHeaderVO hvo = orderVO.getHVO(); + hvo.setStatus(2); + OrderItemVO[] bvo = orderVO.getBVO(); + for (int j = 0; j < bvo.length; j++) { + int rowNum = (j + 1) * 10; + bvo[j].setStatus(2); + bvo[j].setCrowno(String.valueOf(rowNum)); + } + } + // 批量处理 + processBatch(vos, orderVOs); } private void processBatch(PraybillVO[] vos, OrderVO[] orderVOs) { CloudPFlowContext cloudContext = this.getCloudPFlowContext(orderVOs); + // 每次检查之前全部设置为成功 + Arrays.stream(vos).forEach(currentVO -> { + PraybillHeaderVO hvo = currentVO.getHVO(); + hvo.setVdef30("success"); + hvo.setVdef31("N"); + hvo.setStatus(VOStatus.UPDATED); + }); if (orderVOs.length == 1) { PraybillVO singleVO = vos[0]; PraybillHeaderVO singleHVO = singleVO.getHVO(); SCMScriptResultDTO scriptResult = null; try { - scriptResult = ((IBatchRunScriptService) NCLocator.getInstance().lookup(IBatchRunScriptService.class)).runBacth(cloudContext, OrderVO.class); - if (scriptResult.getErrorMessageMap().isEmpty() && scriptResult.getSucessNum() > 0) { - singleHVO.setStatus(VOStatus.UPDATED); - } + (NCLocator.getInstance().lookup(IBatchRunScriptService.class)).runBacth(cloudContext, OrderVO.class); } catch (Exception e) { - // TODO 后面需要确定的字段 - singleHVO.setVdef30(e.getMessage().substring(0, 300)); + singleHVO.setVdef30(e.getMessage().substring(0, !e.getMessage().isEmpty() && e.getMessage().length() < 300 ? e.getMessage().length() : 300)); singleHVO.setVdef31("N"); + singleHVO.setStatus(VOStatus.UPDATED); logger.error("单个处理时失败", e, this.getClass(), "processBatch"); } updatePrayBillVOs(List.of(singleVO)); @@ -224,25 +225,24 @@ public class BatchTransferToPurchaseOrder implements IBackgroundWorkPlugin { SCMScriptResultDTO scriptResult = ((IBatchRunScriptService) NCLocator.getInstance().lookup(IBatchRunScriptService.class)).runBacth(cloudContext, OrderVO.class); AbstractBill[] sucessVOs = scriptResult.getSucessVOs(); // 要进行批量更新的数组 - List hvoList = new ArrayList<>(vos.length - sucessVOs.length); + List failedHVOList = new ArrayList<>(vos.length - sucessVOs.length); Map errorMessageMap = scriptResult.getErrorMessageMap(); + // 记录失败信息 if (!errorMessageMap.isEmpty()) { errorMessageMap.keySet().forEach(key -> { - String errMsg = errorMessageMap.get(key); - if (errMsg.isEmpty()) { - return; - } + String errMsg = errorMessageMap.get(key) == null ? "" : errorMessageMap.get(key); PraybillVO vo = vos[key]; PraybillHeaderVO hvo = vo.getHVO(); - // TODO 后面需要确定的字段 - hvo.setVdef30(errMsg.substring(0, 300)); + hvo.setVdef30(errMsg.substring(0, Math.min(errMsg.length(), 300))); hvo.setVdef31("N"); - hvoList.add(vo); + hvo.setStatus(VOStatus.UPDATED); + failedHVOList.add(vo); logger.warn("单据转换生成采购订单时发生错误: " + scriptResult.getErrorMessage(), this.getClass(), "processBatchTransfer"); }); } - // 进行批量更新 目的是为了记录信息 - updatePrayBillVOs(hvoList); + if (!failedHVOList.isEmpty()) { + updatePrayBillVOs(failedHVOList); + } } private void updatePrayBillVOs(List hvoList) { @@ -259,7 +259,7 @@ public class BatchTransferToPurchaseOrder implements IBackgroundWorkPlugin { logger.warn("批量更新请购单表头失败,需要更新的数组为0", this.getClass(), "processBatchTransfer"); return; } - String[] headupname = new String[]{"fbillstatus"}; + String[] headupname = new String[]{"vdef30", "vdef31"}; VOUpdate headupsrv = new VOUpdate<>(); headupsrv.update(hvoBatchUpdatedList, headupname); } 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 7fc9532..bba4a01 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 @@ -36,6 +36,8 @@ import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; +import static nccloud.pubift.commen.impl.utils.HttpPostOtherSysImpl.checkIfIncludeOrg; + /** * 销售订单审批后推送MES金思维系统 */ @@ -99,13 +101,11 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { // 生成方式 data.put("generation", "Z"); // 客户编码(必填,最大长度8) - String customerCode = transferCodeByPk(CustomerVO.getDefaultTableName(), CustomerVO.CODE, - CustomerVO.PK_CUSTOMER, head.getCcustomerid()); + String customerCode = transferCodeByPk(CustomerVO.getDefaultTableName(), CustomerVO.CODE, CustomerVO.PK_CUSTOMER, head.getCcustomerid()); data.put("customId", customerCode); data.put("seller", transferCodeByPk(PsndocVO.getDefaultTableName(), PsndocVO.NAME, PsndocVO.PK_PSNDOC, head.getCemployeeid())); // 销售部门编码(必填,最大长度8) - String deptCode = transferCodeByPk(DeptVersionVO.getDefaultTableName(), DeptVersionVO.CODE, - DeptVersionVO.PK_VID, head.getCdeptvid()); + String deptCode = transferCodeByPk(DeptVersionVO.getDefaultTableName(), DeptVersionVO.CODE, DeptVersionVO.PK_VID, head.getCdeptvid()); data.put("departmentId", deptCode); // 联系人(非必填) data.put("contacts", null); @@ -160,8 +160,7 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { // 合同序号 detailItem.put("contractNum", null); // 物料编码 - String materialCode = transferCodeByPk(MaterialVO.getDefaultTableName(), MaterialVO.CODE, - MaterialVO.PK_MATERIAL, body.getCmaterialvid()); + String materialCode = transferCodeByPk(MaterialVO.getDefaultTableName(), MaterialVO.CODE, MaterialVO.PK_MATERIAL, body.getCmaterialvid()); detailItem.put("materialId", materialCode); // 计量单位 detailItem.put("unit", transferCodeByPk(MeasdocVO.getDefaultTableName(), MeasdocVO.CODE, MeasdocVO.PK_MEASDOC, body.getCunitid())); @@ -237,14 +236,9 @@ public class AfterApprovingSynchronizeRuleMES implements IRule { 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); -// } try { - String targetCode = "C034"; String code = transferCodeByPk(SalesOrgVO.getDefaultTableName(), SalesOrgVO.CODE, SalesOrgVO.PK_SALESORG, vo.getParentVO().getPk_org()); - if (code != null && code.equals(targetCode)) { + if (checkIfIncludeOrg(code)) { result.add(vo); } } catch (BusinessException e) {