fix: 修复HCS特批状态为null时List.of.contains抛NPE导致合同推送失败

This commit is contained in:
刘泉佳
2026-10-14 11:15:56 +08:00
parent 30028b9e27
commit 433015fde0
4 changed files with 9 additions and 4 deletions
@@ -45,6 +45,7 @@ import org.springblade.transport.pojo.entity.HcsContractCheckLog;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
/**
@@ -149,7 +150,7 @@ public class HcsContractSpecSyncSupport {
if (contractManage == null) {
throw new ServiceException("合同单不存在:" + id);
}
if (!List.of(HcsSyncConstant.SPEC_STATUS_APPROVED, HcsSyncConstant.SPEC_STATUS_REJECTED).contains(result)) {
if (!Arrays.asList(HcsSyncConstant.SPEC_STATUS_APPROVED, HcsSyncConstant.SPEC_STATUS_REJECTED).contains(result)) {
throw new ServiceException("特批结果仅支持 approved/rejected");
}
if (!HcsSyncConstant.SPEC_STATUS_PROCESSING.equals(contractManage.getHcsSpecStatus())) {
@@ -62,6 +62,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -189,7 +190,8 @@ public class HcsContractSyncSupport {
*/
private void hangSpecReview(ContractManage contractManage) {
// 终态守卫:合规回调(秒批/秒驳)先于挂起执行时,不得覆盖已落地的结果
if (List.of(HcsSyncConstant.SPEC_STATUS_APPROVED, HcsSyncConstant.SPEC_STATUS_REJECTED).contains(contractManage.getHcsSpecStatus())) {
// Arrays.asList 允许 null 元素:List.of 的不可变列表 contains(null) 会抛 NPE,而首次推送时 hcsSpecStatus 为 null
if (Arrays.asList(HcsSyncConstant.SPEC_STATUS_APPROVED, HcsSyncConstant.SPEC_STATUS_REJECTED).contains(contractManage.getHcsSpecStatus())) {
log.info("HCS合同高风险/黑名单但特批已有终态(单次有效),跳过挂起:contractNo={},hcsSpecStatus={}",
contractManage.getContractNo(), contractManage.getHcsSpecStatus());
return;
@@ -40,6 +40,7 @@ import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import java.time.Duration;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
@@ -182,7 +183,7 @@ public class HcsImmediatePushSupport {
|| HcsSyncConstant.HCS_STATUS_SYNCED.equals(contractManage.getHcsSyncStatus())) {
return;
}
if (List.of(HcsSyncConstant.SPEC_STATUS_NEED, HcsSyncConstant.SPEC_STATUS_PROCESSING).contains(contractManage.getHcsSpecStatus())) {
if (Arrays.asList(HcsSyncConstant.SPEC_STATUS_NEED, HcsSyncConstant.SPEC_STATUS_PROCESSING).contains(contractManage.getHcsSpecStatus())) {
log.info("HCS合同即时推送跳过(特批挂起中):id={},hcsSpecStatus={}", id, contractManage.getHcsSpecStatus());
return;
}
@@ -39,6 +39,7 @@ import org.springblade.transport.pojo.entity.PaymentApplication;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
/**
@@ -129,7 +130,7 @@ public class HcsPaymentSyncSupport {
if (payment == null) {
throw new ServiceException("付款申请单不存在:" + id);
}
if (!List.of(HcsSyncConstant.SPEC_STATUS_APPROVED, HcsSyncConstant.SPEC_STATUS_REJECTED).contains(result)) {
if (!Arrays.asList(HcsSyncConstant.SPEC_STATUS_APPROVED, HcsSyncConstant.SPEC_STATUS_REJECTED).contains(result)) {
throw new ServiceException("特批结果仅支持 approved/rejected");
}
if (!HcsSyncConstant.SPEC_STATUS_PROCESSING.equals(payment.getHcsSpecStatus())) {