Compare commits

...

2 Commits

Author SHA1 Message Date
mzr fa5be651bc Merge remote-tracking branch 'origin/main' 2025-09-29 13:27:02 +08:00
mzr eeb4f20546 feat(pmo): 同步IMS审批后增加字段翻译功能
- 增加表头和表体的翻译字段定义- 在构建参数时增加对翻译字段的处理逻辑
2025-09-29 13:26:52 +08:00
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",
"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",
"ninastnum", "ninnum"
));
// ±íÌå-·­Òë×ÖÎ
private Set<String> bodyTransferFields = new HashSet<>(Arrays.asList(
"pk_org", "cmaterialvid", "cunitid", "castunitid", "cdeptid", "mocloser", "cinwarehouseid", "vbdef31"
));
@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();
if (isUpdate) {
@ -210,6 +218,8 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
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<PMOAggVO> {
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<PMOAggVO> {
// 数值字段需要特殊处理空值
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<PMOAggVO> {
// 数值字段需要特殊处理空值
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<PMOAggVO> {
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;
}