fix: 项目立项HCS推送结算类型由字典文本映射为HCS编码(1/2/3)

This commit is contained in:
刘泉佳
2026-10-13 15:19:29 +08:00
parent b7005ea547
commit 17cc04b7ef
@@ -190,10 +190,10 @@ public class HcsProjectSyncSupport {
// 可用单位列表:与创建单位一致(同走 creator-unit 配置)(废弃)
// props.setFdAvailUnits(List.of(creatorUnit));
// 结算类型:TMS settlementMode 原值(字典映射待联调,§9-U3)
props.setFdSettlementType(projectApply.getSettlementMode());
// 计划保证金:TMS fundDemand(万元)× 10000 转 HCS 元(变更映射曾名"履约保证金",语义联调确认)
props.setFdProPlanDeposit(toYuan(projectApply.getFundDemand()));
// 结算类型:TMS settle_method 字典文本映射 HCS 编码(1=先款后票,2=先票后款,3=先款后票+先票后款(同时存在))
props.setFdSettlementType(mapSettlementType(projectApply.getSettlementMode()));
// 计划保证金:TMS fundDemand 与 HCS fd_pro_plan_deposit 单位同为万元,直传不换算(接口说明 §5.1)
props.setFdProPlanDeposit(projectApply.getFundDemand());
// 是否自营项目:一期固定 "2"。是|1, 否|2
props.setFdIsSelfPro("2");
// TODO 待确认:项目收入目标 fd_pro_income_goal,TMS 无直接对应字段,一期不传(§5.1)
@@ -211,6 +211,26 @@ public class HcsProjectSyncSupport {
return formData;
}
/**
* 结算方式字典文本映射 HCS 编码:先款后票=1、先票后款=2、先款后票+先票后款(同时存在)=3;未匹配时原值直传并告警
*/
private String mapSettlementType(String settlementMode) {
if (StringUtil.isBlank(settlementMode)) {
return null;
}
String code = switch (settlementMode.trim()) {
case "先款后票" -> "1";
case "先票后款" -> "2";
case "先款后票+先票后款(同时存在)" -> "3";
default -> null;
};
if (code == null) {
log.warn("HCS项目立项结算类型未匹配编码,原值直传:settlementMode=[{}]", settlementMode);
return settlementMode;
}
return code;
}
/**
* C102-3 项目立项查询判重(conditions={"fd_num": projectCode},§9-U4 查询能力联调确认)
*/