From 7f4a704b36f253ccbc615c072cebcfcf9003aaa2 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, 4 Jun 2025 10:04:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=89=B9=E9=87=8F=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E8=AF=B7=E8=B4=AD=E5=8D=95=E5=88=B0=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加阈值设置,限制每次查询的数量 - 增加是否过滤失败的配置选项- 重构 SQL 构建逻辑,提高查询效率 - 移除不必要的参数和异常处理 --- .../plugin/BatchTransferToPurchaseOrder.java | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) 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 0a28980..6d6695c 100644 --- a/pu/src/private/nc/bs/pu/m21/plugin/BatchTransferToPurchaseOrder.java +++ b/pu/src/private/nc/bs/pu/m21/plugin/BatchTransferToPurchaseOrder.java @@ -37,18 +37,24 @@ public class BatchTransferToPurchaseOrder implements IBackgroundWorkPlugin { @Override public PreAlertObject executeTask(BgWorkingContext bgWorkingContext) throws BusinessException { logger.info("ʼִת빺ɹ", this.getClass(), "executeTask"); + // ȡֵ ԼǷʧ + // ÿβѯ + String limitNum = (String) bgWorkingContext.getKeyMap().get("limitNum"); + // Ƿʧ trueʱ Ϊ vdef31 != N falseʱ ѯȫ + String filterFailed = (String) bgWorkingContext.getKeyMap().get("filterFailed"); + String failed = filterFailed.equals("Y") ? "N" : ""; PreAlertObject retObj = new PreAlertObject(); retObj.setReturnType(PreAlertReturnType.RETURNNOTHING); try { // 1. ѯ빺ۺVO - PraybillVO[] purchaseRequestVOs = getQualifiedPurchaseRequests(bgWorkingContext); + PraybillVO[] purchaseRequestVOs = getQualifiedPurchaseRequests(failed, limitNum); logger.info("ѯ빺: " + purchaseRequestVOs.length, this.getClass(), "executeTask"); if (purchaseRequestVOs.length == 0) { logger.info("δҵ빺", this.getClass(), "executeTask"); return null; } // 2. ת - processBatchTransfer(purchaseRequestVOs, bgWorkingContext); + processBatchTransfer(purchaseRequestVOs); logger.info("ת빺ɹ", this.getClass(), "executeTask"); } catch (Exception e) { logger.error("ִת빺ɹʧ", e, this.getClass(), "executeTask"); @@ -61,10 +67,10 @@ public class BatchTransferToPurchaseOrder implements IBackgroundWorkPlugin { * ѯ빺 * 빺-ۼƶ>0ûйر */ - private PraybillVO[] getQualifiedPurchaseRequests(BgWorkingContext bgWorkingContext) throws BusinessException { + private PraybillVO[] getQualifiedPurchaseRequests(String isFilter, String limitNum) throws BusinessException { logger.info("ʼѯ빺", this.getClass(), "getQualifiedPurchaseRequests"); try { - String sql = getSql(bgWorkingContext); + String sql = getSql(isFilter, limitNum); if (sql == null) { logger.warn("ɵSQLΪգؿս", this.getClass(), "getQualifiedPurchaseRequests"); return new PraybillVO[0]; @@ -93,22 +99,16 @@ public class BatchTransferToPurchaseOrder implements IBackgroundWorkPlugin { /** * ѯSQL ѯͼ */ - private String getSql(BgWorkingContext bgwc) throws BusinessException { - logger.debug("ʼѯSQL", this.getClass(), "getSql"); - String[] pkorgs = bgwc.getPk_orgs(); - String pkGroup = AppBsContext.getInstance().getPkGroup(); - if (pkGroup == null) { - throw new BusinessException("빺תɹʱpkGroupΪ"); - } - if (MMArrayUtil.isNotEmpty(pkorgs)) { - throw new BusinessException("빺תɹʱ֯Ϊ"); - } + private String getSql(String isFilter, String limitNum) { MMSqlBuilder sb = new MMSqlBuilder(); sb.append(" SELECT PK_PRAYBILL_B"); sb.append(" FROM TRANS_PRAYBILL_PURCHASE"); - sb.append(" WHERE PK_GROUP ", pkGroup); - sb.append(" AND"); - sb.append(" PK_ORG", pkorgs); + if (!isFilter.isEmpty()) { + sb.appendNotEqual(" WHERE vdef31 ", isFilter); + } + if (!limitNum.equals("0")) { + sb.append(" AND ROWNUM ", "<", limitNum); + } String finalSql = sb.toString(); logger.debug("SQL", this.getClass(), "getSql"); return finalSql; @@ -171,7 +171,7 @@ public class BatchTransferToPurchaseOrder implements IBackgroundWorkPlugin { /** * ת빺ɹ */ - private void processBatchTransfer(PraybillVO[] vos, BgWorkingContext bgWorkingContext) { + private void processBatchTransfer(PraybillVO[] vos) { logger.info("ʼת빺ɹ빺: " + vos.length, this.getClass(), "processBatchTransfer"); // õתɲɹ20->21 OrderVO[] orderVOs = PfServiceScmUtil.exeVOChangeByBillItfDef("20", "21", vos);