fix: 合同特批结果回传来源系统标识

This commit is contained in:
刘泉佳
2026-10-20 17:49:59 +08:00
parent f579a7eb20
commit c2b1e27077
@@ -25,16 +25,17 @@
*/
package org.springblade.transport.support.hcs;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.hcs.config.HcsProperties;
import org.springblade.hcs.dto.HcsContractDetailQueryDTO;
import org.springblade.hcs.dto.HcsContractDetailVO;
import org.springblade.hcs.dto.HcsContractLegalResultDTO;
import org.springblade.hcs.dto.HcsLegalResultDTO;
import org.springblade.hcs.dto.HcsResult;
import org.springblade.hcs.feign.IHcsClient;
import org.springblade.transport.constant.HcsSyncConstant;
@@ -44,8 +45,8 @@ import org.springblade.transport.pojo.entity.ContractManage;
import org.springblade.transport.pojo.entity.HcsContractCheckLog;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
@@ -60,7 +61,7 @@ import java.util.Map;
* 集团审批结果经合规 contractLegal/result 接口推送 TMS(替代未建设的 B103),或定时 C103-4 查询兜底联动 →
* approved 恢复流程,rejected 联动合同审批驳回。
* <p>
* 结果推送报文 {contractType, contractCode, requestId, success, reason, kingdeeId, sourceSystem=WCCK},原文留痕 blade_hcs_check_log。
* 结果推送报文 {contractType, contractCode, requestId, success, reason, kingdeeId, sourceSystem=},原文留痕 blade_hcs_check_log。
*
* @author Chill
*/
@@ -79,11 +80,6 @@ public class HcsContractSpecSyncSupport {
*/
private static final String LEGAL_STATUS_INVALID = "approvalinvalid";
/**
* 合同特批结果回传来源系统标识(合规方接口文档约定固定传 WCCK)
*/
private static final String LEGAL_CALLBACK_SRC_SYSTEM = "WCCK";
/**
* 结果推送原文留痕最大长度(blade_hcs_check_log.msg 为 varchar(512))
*/
@@ -92,6 +88,7 @@ public class HcsContractSpecSyncSupport {
private final IHcsClient hcsClient;
private final ContractManageMapper contractManageMapper;
private final HcsContractCheckLogMapper hcsContractCheckLogMapper;
private final HcsProperties hcsProperties;
/**
* 特批结果定时查询兜底(合规推送 contractLegal/result 未达/未配置时的补偿,2026-10-13):
@@ -171,16 +168,16 @@ public class HcsContractSpecSyncSupport {
/**
* 合同特批结果接收处理(合规 contractLegal/result 推送,2026-10-13 按合规方最新字段表修正报文结构):
* 特批完成后合规侧同步金蝶并回调,报文 {contractType, contractCode, requestId, success, reason, kingdeeId, sourceSystem=WCCK};
* sourceSystem 须为 WCCK(不符抛"来源系统标识错误"异常);contractCode=TMS 合同编号定位(requestId 仅请求头回显不可定位);
* 特批完成后合规侧同步金蝶并回调,报文 {contractType, contractCode, requestId, success, reason, kingdeeId, sourceSystem=};
* sourceSystem 须为 (不符抛"来源系统标识错误"异常);contractCode=TMS 合同编号定位(requestId 仅请求头回显不可定位);
* success=true 联动恢复"审批通过"(金蝶合同ID回填 kingdee_id);success=false 联动合同审批驳回走重新提交闭环(reason 随原文留痕)
*
* @param param 合规推送报文
* @return 处理结果描述
*/
public String handleLegalResult(HcsContractLegalResultDTO param) {
// 来源系统校验:仅接受合规方约定的 WCCK,防伪造回传
if (!LEGAL_CALLBACK_SRC_SYSTEM.equalsIgnoreCase(param == null ? null : param.getSourceSystem())) {
// 来源系统校验:仅接受合规方约定的 ,防伪造回传
if (!StrUtil.equalsIgnoreCase(param == null ? null : param.getSourceSystem(), hcsProperties.getSrcSystem())) {
log.warn("合同特批结果推送来源系统标识错误:sourceSystem={}", param == null ? null : param.getSourceSystem());
throw new ServiceException("来源系统标识错误");
}