From d1385afbe417ea27c57c2fa6f6ada29195499a49 Mon Sep 17 00:00:00 2001 From: lihao Date: Fri, 14 Nov 2025 09:14:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=90=E6=96=99=E5=87=BA=E5=BA=93=E7=AD=BE?= =?UTF-8?q?=E5=AD=97=E5=90=8E=E6=8E=A8=E9=80=81=E9=AB=98=E5=8E=8Bims?= =?UTF-8?q?=E4=B8=AD=E9=97=B4=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ic/src/private/nc/bs/ic/m4d/sign/SignBP.java | 4 + .../bs/ic/m4d/sign/rule/UpdateGyimsRule.java | 92 +++++++++++++++++++ .../task/ims/MaterialOutGyImsPlugin.java | 2 +- 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 ic/src/private/nc/bs/ic/m4d/sign/rule/UpdateGyimsRule.java diff --git a/ic/src/private/nc/bs/ic/m4d/sign/SignBP.java b/ic/src/private/nc/bs/ic/m4d/sign/SignBP.java index cdbab40f..5d715fde 100644 --- a/ic/src/private/nc/bs/ic/m4d/sign/SignBP.java +++ b/ic/src/private/nc/bs/ic/m4d/sign/SignBP.java @@ -13,6 +13,8 @@ import nc.bs.ic.m4d.base.BPPlugInPoint; import nc.bs.ic.m4d.base.UpdateSCOnhandRule; import nc.bs.ic.m4d.sign.rule.AfterSignRuleForLiabilityProcess; import nc.bs.ic.m4d.sign.rule.PullProcessEpicMesRule; + +import nc.bs.ic.m4d.sign.rule.UpdateGyimsRule; import nc.bs.ic.m4d.sign.rule.PushSaveIAandTOBill; import nc.bs.ic.pub.util.SagasUtils; import nc.bs.scmpub.rule.VOSagaFrozenValidateRule; @@ -37,6 +39,8 @@ public class SignBP implements ISignBP, ISignRuleProvider processor) { diff --git a/ic/src/private/nc/bs/ic/m4d/sign/rule/UpdateGyimsRule.java b/ic/src/private/nc/bs/ic/m4d/sign/rule/UpdateGyimsRule.java new file mode 100644 index 00000000..f88cd5a5 --- /dev/null +++ b/ic/src/private/nc/bs/ic/m4d/sign/rule/UpdateGyimsRule.java @@ -0,0 +1,92 @@ +package nc.bs.ic.m4d.sign.rule; + +import nc.bs.dao.BaseDAO; +import nc.bs.uapbd.util.ImsDaoUtil; +import nc.bs.uapbd.util.MyHelper; +import nc.vo.fi.pub.SqlUtils; +import nc.vo.ic.m4d.entity.MaterialOutVO; + +import nc.impl.pubapp.pattern.rule.IRule; +import nc.vo.org.OrgVO; +import nc.vo.pub.BusinessException; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * ϳǩֺ޸ĸѹims + * (2025-10-01) + * (2025-11-30) + */ +public class UpdateGyimsRule implements IRule { + // IMSԴ + public BaseDAO imsDao; + private Map configParams; + + public UpdateGyimsRule() { + } + + /** + * ȡIMSԴ + */ + public BaseDAO getImsDao() { + if (imsDao == null) { + imsDao = new BaseDAO("gyims"); + // ʱts + imsDao.setAddTimeStamp(false); + } + return imsDao; + } + + @Override + public void process(MaterialOutVO[] materialOutVOS) { + Set imsIdSet = new HashSet<>(); + try { + configParams = MyHelper.getConfigParams("gy-config", null); + if (configParams.isEmpty()) { + throw new BusinessException("ѹgyimsӿȱ"); + } + for (MaterialOutVO materialOutVO : materialOutVOS) { + + // жϵҵԪǷǸѹ˾ + String pkOrg = materialOutVO.getHead().getPk_org(); + String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); + if (checkIfOrg(orgCode, configParams)) { + continue; + } + imsIdSet.add(materialOutVO.getHead().getVbillcode()); + } + if (!imsIdSet.isEmpty()) { + // ޸״̬Ϊ ɣŻSQLƴӣ﷨SQLע + // 1. ɴŵIDַ 'id1','id2','id3' + String ids = imsIdSet.stream() + .map(id -> "'" + id.replace("'", "''") + "'") // ת壬ֹSQLע + .collect(Collectors.joining(",")); + + // 2. SQLvbillcodeֶַΣ + String updateSql = "update BIPOutMainTab set status = '2' where vbillcode in (" + ids + ")"; + + // 3. ִи£ע⣺ﲻҪٴݲSQLƴɣ + int rows = ImsDaoUtil.executeUpdate(updateSql,ids); + + } + } catch (BusinessException e) { + throw new RuntimeException(e); + } + } + private boolean checkIfOrg(String code, Map configParams) throws BusinessException { + String targetCode = configParams.get("imsOrg"); + if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) { + throw new BusinessException("δ֯"); + } + String[] orgItem = targetCode.split(","); + for (String orgCode : orgItem) { + if (!orgCode.isEmpty() && orgCode.equals(code)) { + return false; + } + } + return true; + } +} diff --git a/uapbd/src/private/nc/bs/uapbd/task/ims/MaterialOutGyImsPlugin.java b/uapbd/src/private/nc/bs/uapbd/task/ims/MaterialOutGyImsPlugin.java index 1170f7d8..cb3b2a6c 100644 --- a/uapbd/src/private/nc/bs/uapbd/task/ims/MaterialOutGyImsPlugin.java +++ b/uapbd/src/private/nc/bs/uapbd/task/ims/MaterialOutGyImsPlugin.java @@ -170,7 +170,7 @@ public class MaterialOutGyImsPlugin implements IBackgroundWorkPlugin { if (!imsIdSet.isEmpty()) { // ޸״̬Ϊ String inSql = SqlUtils.getInStr("cgeneralhid", imsIdSet.toArray(new String[0]), Boolean.TRUE); - String updateSql = "update BIPOutMainTab set status = '2',err_msg = null where " + inSql; + String updateSql = "update BIPOutMainTab set status = '1',err_msg = null where " + inSql; // NCCForUAPLogger.debug("updateSql-suc = " + updateSql); int rows = ImsDaoUtil.executeUpdate(updateSql, imsIdSet.toString()); }