:fix: HCS履约计划推送履约类型等字典字段改传中文字典名
This commit is contained in:
+42
-8
@@ -51,6 +51,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.UnaryOperator;
|
||||
|
||||
/**
|
||||
* HCS 履约规则同步支撑组件(C103-9 新版行级同步,设计文档 §5.3,ADR-0002)
|
||||
@@ -129,20 +130,37 @@ public class HcsExeStageSyncSupport {
|
||||
}
|
||||
// 【必填】行级操作:add / update / delete
|
||||
stage.setFdEopExeplanOperateType(row.getRowOp());
|
||||
// 【必填】履约类型:payment=付款 / collection=收款
|
||||
stage.setFdPerformType(row.getPerformType());
|
||||
// 【必填】款项性质:prepayment/progress/acceptance/retention
|
||||
stage.setFdFundNature(row.getFundNature());
|
||||
// 【必填】履约类型:传中文字典名(2026-10-17 确认;此前传枚举键,合规侧字典不命中)
|
||||
stage.setFdPerformType(dictName("履约类型", row.getPerformType(), code -> switch (code) {
|
||||
case HcsSyncConstant.PERFORM_TYPE_PAYMENT -> "付款";
|
||||
case HcsSyncConstant.PERFORM_TYPE_COLLECTION -> "收款";
|
||||
default -> null;
|
||||
}));
|
||||
// 【必填】款项性质:传中文字典名
|
||||
stage.setFdFundNature(dictName("款项性质", row.getFundNature(), code -> switch (code) {
|
||||
case "prepayment" -> "预付款";
|
||||
case HcsSyncConstant.FUND_NATURE_PROGRESS -> "进度款";
|
||||
case "acceptance" -> "验收款";
|
||||
case "retention" -> "质保金";
|
||||
default -> null;
|
||||
}));
|
||||
// 【必填】计划金额(元)
|
||||
stage.setFdFundAmount(row.getFundAmount());
|
||||
// 【必填】资金日期(毫秒时间戳)
|
||||
stage.setFdFundDate(toMillis(row.getFundDate()));
|
||||
// 【必填】开票规则:payFirst=先款后票 / invoiceFirst=先票后款
|
||||
stage.setFdInvoiceRule(row.getInvoiceRule());
|
||||
// 【必填】开票规则:传中文字典名
|
||||
stage.setFdInvoiceRule(dictName("开票规则", row.getInvoiceRule(), code -> switch (code) {
|
||||
case "payFirst" -> "先款后票";
|
||||
case "invoiceFirst" -> "先票后款";
|
||||
default -> null;
|
||||
}));
|
||||
// 【必填】账期(天)
|
||||
stage.setFdInvoiceCycle(row.getInvoiceCycle());
|
||||
// 金额类型:行维护值,空取配置 thirdParty.hcs.exe-stage.fund-type(默认 byAmount)
|
||||
stage.setFdFundType(StringUtil.isBlank(row.getFundType()) ? hcsProperties.getExeStage().getFundType() : row.getFundType());
|
||||
// 金额类型:行维护值(空取配置 thirdParty.hcs.exe-stage.fund-type),传中文字典名
|
||||
stage.setFdFundType(dictName("金额类型", StringUtil.isBlank(row.getFundType()) ? hcsProperties.getExeStage().getFundType() : row.getFundType(), code -> switch (code) {
|
||||
case "byAmount" -> "按金额";
|
||||
default -> null;
|
||||
}));
|
||||
// 是否完成
|
||||
stage.setFdIsFinish(row.getIsFinish() != null && row.getIsFinish() > 0);
|
||||
// 扩展内容 JSON 字符串:固定 "{}"
|
||||
@@ -153,6 +171,22 @@ public class HcsExeStageSyncSupport {
|
||||
return param;
|
||||
}
|
||||
|
||||
/**
|
||||
* 字典编码 → 合规中文字典名(2026-10-17 确认合规侧按中文命中字典);空值原样传,
|
||||
* 未命中原值直传并告警(照 HcsProjectSyncSupport#mapSettlementType 惯例)
|
||||
*/
|
||||
private String dictName(String fieldLabel, String value, UnaryOperator<String> mapping) {
|
||||
if (StringUtil.isBlank(value)) {
|
||||
return value;
|
||||
}
|
||||
String name = mapping.apply(value);
|
||||
if (name == null) {
|
||||
log.warn("HCS履约规则{}编码[{}]未命中中文字典映射,原值直传", fieldLabel, value);
|
||||
return value;
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* 回填:fdExeplanId → 合同 hcs_exeplan_id;变更阶段 fdId 按行回填 hcs_stage_fd_id 并清除行级操作标记
|
||||
* <p>
|
||||
|
||||
Reference in New Issue
Block a user