:refactor: 合同特批改为随起草报文 fdSepcailContract 发起,删除 C103-8 链路并修正结果回调报文

- C103-8 独立特批发起接口合规未提供(联调 404):删除 IHcsClient#addSpecContract、SPEC_CONTRACT_ADD_URL、HcsSpecContractSaveDTO、applySpec 及辅助方法、人工端点 POST /hcs/contract/spec-apply
- 高风险/黑名单客商合同推送时 C103-1/C103-11 报文携带 fdSepcailContract=true,合规侧随起草自动走特批流程;推送门禁与手动重推仅拦截 processing,need 存量卡单重推自愈
- 推送成功后 hangSpecReview 挂起"特批审核"(processing),含 approved/rejected 终态守卫防合规秒批回调竞态覆盖
- 特批附件随 C103-1 附件面板 eopCdraftSpecial 挂载(原全部走 eopCdraftOther)
- contractLegal/result 回调报文按合规方最新字段表修正(HcsContractLegalResultDTO:contractCode/success/kingdeeId/sourceSystem=WCCK),按合同编号定位合同,success=true 联动放行、false 联动审批驳回
This commit is contained in:
刘泉佳
2026-10-13 18:36:24 +08:00
parent ef09bfa9cd
commit 68885ab31e
7 changed files with 171 additions and 308 deletions
@@ -33,45 +33,45 @@ import java.io.Serial;
import java.io.Serializable;
/**
* 合同合规系统(HCS)C103-8 合同发起特批流程入参
* 合同特批完成后合规系统回传 TMS 的结果报文(POST /hcs/contractLegal/result,iPaaS 网关 /gwzh/HTHG/contractLegal/result)
* <p>
* TODO 待联调确认(前端接入设计 §6-U1):C103-8 报文 v4 未提供,本 DTO 按 C106-3 结算付款特批的
* formData/mechanisms 模式预估,字段名以合规方最新接口说明为准。
* 报文为"合同同步结果"结构:合规特批完成后同步金蝶,回调携带金蝶同步结果;
* 定位合同用 contractCode(ERP 合同编号),requestId 仅是 X-ERP-Request-Id 请求头原样回传、不能用于定位。
*
* @author Chill
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class HcsSpecContractSaveDTO implements Serializable {
public class HcsContractLegalResultDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 特批流程ID(更新必填,发起不传)
* 合同类型:deliverer=投送人;gc=钢厂;sett_center=结算中心
*/
private String fdId;
private String contractType;
/**
* 【必填】操作人登录名(§9-U2)
* ERP 本次同步使用的合同编号(TMS blade_contract_manage.contract_no,定位合同用)
*/
private String fdLoginName;
private String contractCode;
/**
* 【必填】合规合同ID(blade_contract_manage.hcs_fd_id,非名称)
* 本次合同同步请求头 X-ERP-Request-Id,原样回传(不用于定位)
*/
private String fdContractId;
private String requestId;
/**
* 【必填】合同编号
* 金蝶同步成功传 true,失败传 false
*/
private String fdContractNo;
private Boolean success;
/**
* 【必填】单据主题:"合同特批-" + 合同编号
* 金蝶同步失败原因;失败时建议填写
*/
private String fdDocSubject;
private String reason;
/**
* 特批事由(合同名称/特批原因,非必传)
* 金蝶实际返回的合同 ID;成功时用于保存留痕
*/
private String fdReason;
private String kingdeeId;
/**
* 特批附件(C103-2 转传返回的合规附件ID 引用)
* 来源系统标识,约定传 WCCK(最长 64 字符)
*/
private HcsMechanismsDTO mechanisms;
private String sourceSystem;
}
@@ -55,7 +55,6 @@ import org.springblade.hcs.dto.HcsReceiptBillSaveDTO;
import org.springblade.hcs.dto.HcsResult;
import org.springblade.hcs.dto.HcsRiskQueryDTO;
import org.springblade.hcs.dto.HcsRiskVO;
import org.springblade.hcs.dto.HcsSpecContractSaveDTO;
import org.springblade.hcs.dto.HcsSpecPaySaveDTO;
import org.springblade.hcs.dto.HcsTemplateVO;
import org.springframework.cloud.openfeign.FeignClient;
@@ -79,7 +78,7 @@ import org.springframework.web.multipart.MultipartFile;
*
* @author Chill
*/
@FeignClient(name = "HCS", url = "${thirdParty.hcs.baseUrl}", configuration = HcsFeignClientConfig.class, fallbackFactory = HcsClientFallbackFactory.class)
@FeignClient(name = "HCS", url = "${thirdParty.hcs.baseUrl}", configuration = HcsFeignClientConfig.class, fallbackFactory = HcsClientFallbackFactory.class, primary = false)
public interface IHcsClient {
String PROJECT_ADD_URL = "${thirdParty.hcs.projectAddUrl:/openapi/sys-modeling/apis/data/km-project1/V1/projectApproval/add}";
@@ -99,7 +98,6 @@ public interface IHcsClient {
String CREDIT_CHECK_URL = "${thirdParty.hcs.creditCheckUrl:/openapi/eop-cdraft/lcode/ext-cdraft/extEopCdraftMainOpen/contractCreditCheck}";
String SPEC_PAY_ADD_URL = "${thirdParty.hcs.specPayAddUrl:/openapi/sys-modeling/lcode/ext-pay-receive/extPayReceiveOpenService/addSpecApplyPay}";
String SPEC_PAY_UPDATE_URL = "${thirdParty.hcs.specPayUpdateUrl:/openapi/sys-modeling/lcode/ext-pay-receive/extPayReceiveOpenService/updateSpecApplyPay}";
String SPEC_CONTRACT_ADD_URL = "${thirdParty.hcs.specContractAddUrl:/openapi/sys-modeling/lcode/ext-cdraft/extEopCdraftMainOpen/addSpecApplyContract}";
String PERF_RECORD_ADD_URL = "${thirdParty.hcs.perfRecordAddUrl:/openapi/sys-modeling/apis/data/km-pay-receive/V1/dataSync/add}";
String PERF_RECORD_UPDATE_URL = "${thirdParty.hcs.perfRecordUpdateUrl:/openapi/sys-modeling/apis/data/km-pay-receive/V1/dataSync/update}";
String RECEIPT_BILL_ADD_URL = "${thirdParty.hcs.receiptBillAddUrl:/openapi/sys-modeling/lcode/ext-invoice-receive/extInvoiceReceiveOpenService/addReceiveBill}";
@@ -267,19 +265,6 @@ public interface IHcsClient {
@PostMapping(SPEC_PAY_UPDATE_URL)
HcsResult<HcsResult<Void>> updateSpecApplyPay(@RequestBody HcsSpecPaySaveDTO param);
/**
* C103-8 合同发起特批流程(高风险客商签约特批)
* <p>
* TODO 待联调确认(前端接入设计 §6-U1):C103-8 报文与路径均未在 v4 接口说明中定义,
* 本端点按 C106-3 结算付款特批的报文结构预估(双层嵌套 data.data 承接返回),
* 路径可经 thirdParty.hcs.specContractAddUrl 覆盖,字段以合规方最新接口说明为准。
*
* @param param 请求参数
* @return data.data.{fdId, fdXFormId, docViewUrl}(fdId 为特批流程ID)
*/
@PostMapping(SPEC_CONTRACT_ADD_URL)
HcsResult<HcsResult<HcsFormSaveVO>> addSpecContract(@RequestBody HcsSpecContractSaveDTO param);
/**
* C108-1 履约记录新建
*