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; }