From eeb4f20546f9837fedbeb288b1c6533a01755614 Mon Sep 17 00:00:00 2001 From: mzr Date: Mon, 29 Sep 2025 13:26:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(pmo):=20=E5=90=8C=E6=AD=A5IMS=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E5=90=8E=E5=A2=9E=E5=8A=A0=E5=AD=97=E6=AE=B5=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E5=8A=9F=E8=83=BD=20-=20=E5=A2=9E=E5=8A=A0=E8=A1=A8?= =?UTF-8?q?=E5=A4=B4=E5=92=8C=E8=A1=A8=E4=BD=93=E7=9A=84=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=AE=9A=E4=B9=89-=20=E5=9C=A8=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E5=8F=82=E6=95=B0=E6=97=B6=E5=A2=9E=E5=8A=A0=E5=AF=B9?= =?UTF-8?q?=E7=BF=BB=E8=AF=91=E5=AD=97=E6=AE=B5=E7=9A=84=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bp/rule/AfterApproveSyncImsRule.java | 75 ++++++++++++++++++- 1 file changed, 71 insertions(+), 4 deletions(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java index d0ca32bb..403a8ddd 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApproveSyncImsRule.java @@ -66,11 +66,19 @@ public class AfterApproveSyncImsRule implements IRule { "nnum", "nastnum", "nplanputastnum", "nplanputnum", "nmmastnum", "nmmnum", "ninastnum", "ninnum" )); + // 表头-翻译字段 + private Set headTransferFields = new HashSet<>(Arrays.asList( + "pk_org", "cplanfactoryid", "approver", "billmaker", "creator" + )); // 表体-定义数值类型字段列表 - Set bodyNumFields = new HashSet<>(Arrays.asList( + private Set bodyNumFields = new HashSet<>(Arrays.asList( "nnum", "nastnum", "nplanputastnum", "nplanputnum", "nmmastnum", "nmmnum", "ninastnum", "ninnum" )); + // 表体-翻译字段 + private Set bodyTransferFields = new HashSet<>(Arrays.asList( + "pk_org", "cmaterialvid", "cunitid", "castunitid", "cdeptid", "mocloser", "cinwarehouseid", "vbdef31" + )); @Override @@ -197,7 +205,7 @@ public class AfterApproveSyncImsRule implements IRule { } - private SQLParameter buildHeadParameters(PMOHeadVO pmoHeadVO, boolean isUpdate) { + private SQLParameter buildHeadParameters(PMOHeadVO pmoHeadVO, boolean isUpdate) throws BusinessException { SQLParameter headParams = new SQLParameter(); if (isUpdate) { @@ -210,6 +218,8 @@ public class AfterApproveSyncImsRule implements IRule { Object value = pmoHeadVO.getAttributeValue(column); if (headNumFields.contains(column)) { value = skipNullForNumber(value); + } else if (headTransferFields.contains(column)) { + value = transferHeadFields(column, value); } else { value = skipNull(value); } @@ -241,7 +251,7 @@ public class AfterApproveSyncImsRule implements IRule { return headParams; } - private SQLParameter buildBodyParameters(PMOItemVO item, PMOHeadVO pmoHeadVO, boolean isUpdate) { + private SQLParameter buildBodyParameters(PMOItemVO item, PMOHeadVO pmoHeadVO, boolean isUpdate) throws BusinessException { SQLParameter bodyParams = new SQLParameter(); if (isUpdate) { @@ -257,6 +267,8 @@ public class AfterApproveSyncImsRule implements IRule { // 数值字段需要特殊处理空值 if (bodyNumFields.contains(column)) { value = skipNullForNumber(value); + } else if (bodyTransferFields.contains(column)) { + value = transferBodyFields(column, value); } else { value = skipNull(value); } @@ -277,6 +289,8 @@ public class AfterApproveSyncImsRule implements IRule { // 数值字段需要特殊处理空值 if (bodyNumFields.contains(column)) { value = skipNullForNumber(value); + } else if (bodyTransferFields.contains(column)) { + value = transferBodyFields(column, value); } else { value = skipNull(value); } @@ -352,7 +366,60 @@ public class AfterApproveSyncImsRule implements IRule { NCCForUAPLogger.debug("gyIms-PMO-bodySql = " + bodySql); } } - // logger.error("gyIms-PMO-res = " + result); + } + + private String transferHeadFields(String column, Object value) throws BusinessException { + String result = ""; + if (value == null) { + return ""; + } + String userSql = " select user_code from sm_user where dr = 0 and cuserid = '[value]' "; + if ("approver".equals(column) || "billmaker".equals(column) || "creator".equals(column)) { + userSql = userSql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(userSql, new ColumnProcessor()); + } else if ("pk_org".equals(column)) { + String sql = " select code from org_factory where nvl(dr,0) = 0 and pk_factory = '[value]' "; + sql = sql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); + } else if ("cplanfactoryid".equals(column)) { + String sql = " select code from org_orgs where nvl(dr,0) = 0 and pk_org = '[value]' "; + sql = sql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); + } + return result; + } + + private String transferBodyFields(String column, Object value) throws BusinessException { + String result = ""; + if (value == null || "".equals(value) || "~".equals(value)) { + return ""; + } + String userSql = " select user_code from sm_user where dr = 0 and cuserid = '[value]' "; + if ("mocloser".equals(column)) { + userSql = userSql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(userSql, new ColumnProcessor()); + } else if ("pk_org".equals(column)) { + String sql = " select code from org_orgs where nvl(dr,0) = 0 and pk_org = '[value]' "; + sql = sql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); + } else if ("cmaterialvid".equals(column)) { + String sql = " select code from bd_material where nvl(dr,0) = 0 and pk_material = '[value]' "; + sql = sql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); + } else if ("cunitid".equals(column) || "castunitid".equals(column)) { + String sql = " select code from bd_measdoc where nvl(dr,0) = 0 and pk_measdoc = '[value]' "; + sql = sql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); + } else if ("cdeptid".equals(column)) { + String sql = " select code from org_dept where nvl(dr,0) = 0 and pk_dept = '[value]' "; + sql = sql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); + } else if ("cinwarehouseid".equals(column) || "vbdef31".equals(column)) { + String sql = " select code from bd_stordoc where nvl(dr,0) = 0 and pk_stordoc = '[value]' "; + sql = sql.replace("[value]", value.toString()); + result = (String) baseDAO.executeQuery(sql, new ColumnProcessor()); + } + return result; }