feat(pmo): 同步IMS审批后增加字段翻译功能

- 增加表头和表体的翻译字段定义- 在构建参数时增加对翻译字段的处理逻辑
This commit is contained in:
mzr 2025-09-29 13:26:52 +08:00
parent 9401a7b4be
commit eeb4f20546
1 changed files with 71 additions and 4 deletions

View File

@ -66,11 +66,19 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
"nnum", "nastnum", "nplanputastnum", "nplanputnum", "nmmastnum", "nmmnum", "nnum", "nastnum", "nplanputastnum", "nplanputnum", "nmmastnum", "nmmnum",
"ninastnum", "ninnum" "ninastnum", "ninnum"
)); ));
// ±íÍ·-·­Òë×ÖÎ
private Set<String> headTransferFields = new HashSet<>(Arrays.asList(
"pk_org", "cplanfactoryid", "approver", "billmaker", "creator"
));
// 表体-定义数值类型字段列表 // 表体-定义数值类型字段列表
Set<String> bodyNumFields = new HashSet<>(Arrays.asList( private Set<String> bodyNumFields = new HashSet<>(Arrays.asList(
"nnum", "nastnum", "nplanputastnum", "nplanputnum", "nmmastnum", "nmmnum", "nnum", "nastnum", "nplanputastnum", "nplanputnum", "nmmastnum", "nmmnum",
"ninastnum", "ninnum" "ninastnum", "ninnum"
)); ));
// ±íÌå-·­Òë×ÖÎ
private Set<String> bodyTransferFields = new HashSet<>(Arrays.asList(
"pk_org", "cmaterialvid", "cunitid", "castunitid", "cdeptid", "mocloser", "cinwarehouseid", "vbdef31"
));
@Override @Override
@ -197,7 +205,7 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
} }
private SQLParameter buildHeadParameters(PMOHeadVO pmoHeadVO, boolean isUpdate) { private SQLParameter buildHeadParameters(PMOHeadVO pmoHeadVO, boolean isUpdate) throws BusinessException {
SQLParameter headParams = new SQLParameter(); SQLParameter headParams = new SQLParameter();
if (isUpdate) { if (isUpdate) {
@ -210,6 +218,8 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
Object value = pmoHeadVO.getAttributeValue(column); Object value = pmoHeadVO.getAttributeValue(column);
if (headNumFields.contains(column)) { if (headNumFields.contains(column)) {
value = skipNullForNumber(value); value = skipNullForNumber(value);
} else if (headTransferFields.contains(column)) {
value = transferHeadFields(column, value);
} else { } else {
value = skipNull(value); value = skipNull(value);
} }
@ -241,7 +251,7 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
return headParams; 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(); SQLParameter bodyParams = new SQLParameter();
if (isUpdate) { if (isUpdate) {
@ -257,6 +267,8 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
// 数值字段需要特殊处理空值 // 数值字段需要特殊处理空值
if (bodyNumFields.contains(column)) { if (bodyNumFields.contains(column)) {
value = skipNullForNumber(value); value = skipNullForNumber(value);
} else if (bodyTransferFields.contains(column)) {
value = transferBodyFields(column, value);
} else { } else {
value = skipNull(value); value = skipNull(value);
} }
@ -277,6 +289,8 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
// 数值字段需要特殊处理空值 // 数值字段需要特殊处理空值
if (bodyNumFields.contains(column)) { if (bodyNumFields.contains(column)) {
value = skipNullForNumber(value); value = skipNullForNumber(value);
} else if (bodyTransferFields.contains(column)) {
value = transferBodyFields(column, value);
} else { } else {
value = skipNull(value); value = skipNull(value);
} }
@ -352,7 +366,60 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
NCCForUAPLogger.debug("gyIms-PMO-bodySql = " + bodySql); 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;
} }