Commit bb29b34e2e22570430ce8e431c85571286cc6734

Authored by zhangmeiyang
1 parent 0f11c8e8

refactor(kingdee): 提取成功响应验证逻辑到公共方法

- 在 Sender 基类中新增 validSuccess 方法统一处理空成功实体情况
- 移除 ReceiptSender、ReceivableSender 和 RefundSender 中重复的空列表检查代码
- 引入 JsonUtils 和 MessageFormat 用于构建详细的错误消息
- 当远程调用返回空的成功实体列表时,抛出带有错误详情的异常
tax-proxy/src/main/java/com/diligrp/tax/proxy/demarcate/Sender.java
@@ -8,9 +8,13 @@ import com.diligrp.tax.central.type.TaxSystemType; @@ -8,9 +8,13 @@ import com.diligrp.tax.central.type.TaxSystemType;
8 import com.diligrp.tax.central.utils.JsonUtils; 8 import com.diligrp.tax.central.utils.JsonUtils;
9 import com.diligrp.tax.proxy.helper.KingDeeHelper; 9 import com.diligrp.tax.proxy.helper.KingDeeHelper;
10 import com.kingdee.bos.webapi.entity.IdentifyInfo; 10 import com.kingdee.bos.webapi.entity.IdentifyInfo;
  11 +import com.kingdee.bos.webapi.entity.RepoRet;
  12 +import com.kingdee.bos.webapi.entity.SuccessEntity;
11 import com.kingdee.bos.webapi.sdk.K3CloudApi; 13 import com.kingdee.bos.webapi.sdk.K3CloudApi;
12 import lombok.extern.slf4j.Slf4j; 14 import lombok.extern.slf4j.Slf4j;
13 15
  16 +import java.text.MessageFormat;
  17 +import java.util.ArrayList;
14 import java.util.List; 18 import java.util.List;
15 import java.util.Optional; 19 import java.util.Optional;
16 20
@@ -51,4 +55,12 @@ public abstract class Sender<T extends BaseProxy> { @@ -51,4 +55,12 @@ public abstract class Sender<T extends BaseProxy> {
51 }); 55 });
52 }); 56 });
53 } 57 }
  58 +
  59 + protected void validSuccess(ArrayList<SuccessEntity> successEntity, RepoRet<?> repoRet) {
  60 + if (successEntity.isEmpty()) {
  61 + var errorArrayJson = JsonUtils.toJsonString(repoRet.getResult().getResponseStatus().getErrors());
  62 + String format = MessageFormat.format("{0}, caused by: {1}", TaxSystemType.REMOTE_SERVICE_CALLS_ARE_EXCEPTIONAL.message, errorArrayJson);
  63 + throw new TaxAgentServiceException(TaxSystemType.REMOTE_SERVICE_CALLS_ARE_EXCEPTIONAL, format);
  64 + }
  65 + }
54 } 66 }
tax-proxy/src/main/java/com/diligrp/tax/proxy/demarcate/kingdee/ReceiptSender.java
@@ -6,6 +6,7 @@ import com.diligrp.tax.central.domain.proxy.kingdee.ReceiptProxy; @@ -6,6 +6,7 @@ import com.diligrp.tax.central.domain.proxy.kingdee.ReceiptProxy;
6 import com.diligrp.tax.central.exception.TaxAgentServiceException; 6 import com.diligrp.tax.central.exception.TaxAgentServiceException;
7 import com.diligrp.tax.central.type.DocumentType; 7 import com.diligrp.tax.central.type.DocumentType;
8 import com.diligrp.tax.central.type.TaxSystemType; 8 import com.diligrp.tax.central.type.TaxSystemType;
  9 +import com.diligrp.tax.central.utils.JsonUtils;
9 import com.diligrp.tax.proxy.demarcate.Sender; 10 import com.diligrp.tax.proxy.demarcate.Sender;
10 import com.diligrp.tax.proxy.helper.KingDeeHelper; 11 import com.diligrp.tax.proxy.helper.KingDeeHelper;
11 import com.kingdee.bos.webapi.entity.IdentifyInfo; 12 import com.kingdee.bos.webapi.entity.IdentifyInfo;
@@ -13,6 +14,7 @@ import com.kingdee.bos.webapi.entity.RepoRet; @@ -13,6 +14,7 @@ import com.kingdee.bos.webapi.entity.RepoRet;
13 import com.kingdee.bos.webapi.entity.SuccessEntity; 14 import com.kingdee.bos.webapi.entity.SuccessEntity;
14 import org.springframework.stereotype.Component; 15 import org.springframework.stereotype.Component;
15 16
  17 +import java.text.MessageFormat;
16 import java.util.ArrayList; 18 import java.util.ArrayList;
17 19
18 /** 20 /**
@@ -34,9 +36,7 @@ public class ReceiptSender extends Sender&lt;ReceiptProxy&gt; { @@ -34,9 +36,7 @@ public class ReceiptSender extends Sender&lt;ReceiptProxy&gt; {
34 validMapping(identifyInfo, mapping); 36 validMapping(identifyInfo, mapping);
35 RepoRet<?> repoRet = KingDeeHelper.auditSend(mapping, identifyInfo, markDocument().value); 37 RepoRet<?> repoRet = KingDeeHelper.auditSend(mapping, identifyInfo, markDocument().value);
36 ArrayList<SuccessEntity> successEntity = repoRet.getResult().getResponseStatus().getSuccessEntitys(); 38 ArrayList<SuccessEntity> successEntity = repoRet.getResult().getResponseStatus().getSuccessEntitys();
37 - if (successEntity.isEmpty()) {  
38 - throw new TaxAgentServiceException(TaxSystemType.REMOTE_SERVICE_CALLS_ARE_EXCEPTIONAL);  
39 - } 39 + validSuccess(successEntity, repoRet);
40 SuccessEntity first = successEntity.getFirst(); 40 SuccessEntity first = successEntity.getFirst();
41 var proxy = new ReceiptProxy(); 41 var proxy = new ReceiptProxy();
42 proxy.setThirdPartyId(first.getId()); 42 proxy.setThirdPartyId(first.getId());
tax-proxy/src/main/java/com/diligrp/tax/proxy/demarcate/kingdee/ReceivableSender.java
@@ -6,6 +6,7 @@ import com.diligrp.tax.central.domain.proxy.kingdee.ReceivableProxy; @@ -6,6 +6,7 @@ import com.diligrp.tax.central.domain.proxy.kingdee.ReceivableProxy;
6 import com.diligrp.tax.central.exception.TaxAgentServiceException; 6 import com.diligrp.tax.central.exception.TaxAgentServiceException;
7 import com.diligrp.tax.central.type.DocumentType; 7 import com.diligrp.tax.central.type.DocumentType;
8 import com.diligrp.tax.central.type.TaxSystemType; 8 import com.diligrp.tax.central.type.TaxSystemType;
  9 +import com.diligrp.tax.central.utils.JsonUtils;
9 import com.diligrp.tax.proxy.demarcate.Sender; 10 import com.diligrp.tax.proxy.demarcate.Sender;
10 import com.diligrp.tax.proxy.helper.KingDeeHelper; 11 import com.diligrp.tax.proxy.helper.KingDeeHelper;
11 import com.kingdee.bos.webapi.entity.IdentifyInfo; 12 import com.kingdee.bos.webapi.entity.IdentifyInfo;
@@ -13,6 +14,7 @@ import com.kingdee.bos.webapi.entity.RepoRet; @@ -13,6 +14,7 @@ import com.kingdee.bos.webapi.entity.RepoRet;
13 import com.kingdee.bos.webapi.entity.SuccessEntity; 14 import com.kingdee.bos.webapi.entity.SuccessEntity;
14 import org.springframework.stereotype.Component; 15 import org.springframework.stereotype.Component;
15 16
  17 +import java.text.MessageFormat;
16 import java.util.ArrayList; 18 import java.util.ArrayList;
17 19
18 /** 20 /**
@@ -34,9 +36,7 @@ public class ReceivableSender extends Sender&lt;ReceivableProxy&gt; { @@ -34,9 +36,7 @@ public class ReceivableSender extends Sender&lt;ReceivableProxy&gt; {
34 validMapping(identifyInfo, mapping); 36 validMapping(identifyInfo, mapping);
35 RepoRet<?> repoRet = KingDeeHelper.auditSend(mapping, identifyInfo, markDocument().value); 37 RepoRet<?> repoRet = KingDeeHelper.auditSend(mapping, identifyInfo, markDocument().value);
36 ArrayList<SuccessEntity> successEntity = repoRet.getResult().getResponseStatus().getSuccessEntitys(); 38 ArrayList<SuccessEntity> successEntity = repoRet.getResult().getResponseStatus().getSuccessEntitys();
37 - if (successEntity.isEmpty()) {  
38 - throw new TaxAgentServiceException(TaxSystemType.REMOTE_SERVICE_CALLS_ARE_EXCEPTIONAL);  
39 - } 39 + validSuccess(successEntity, repoRet);
40 SuccessEntity first = successEntity.getFirst(); 40 SuccessEntity first = successEntity.getFirst();
41 var proxy = new ReceivableProxy(); 41 var proxy = new ReceivableProxy();
42 proxy.setThirdPartyId(first.getId()); 42 proxy.setThirdPartyId(first.getId());
tax-proxy/src/main/java/com/diligrp/tax/proxy/demarcate/kingdee/RefundSender.java
@@ -6,6 +6,7 @@ import com.diligrp.tax.central.domain.proxy.kingdee.RefundProxy; @@ -6,6 +6,7 @@ import com.diligrp.tax.central.domain.proxy.kingdee.RefundProxy;
6 import com.diligrp.tax.central.exception.TaxAgentServiceException; 6 import com.diligrp.tax.central.exception.TaxAgentServiceException;
7 import com.diligrp.tax.central.type.DocumentType; 7 import com.diligrp.tax.central.type.DocumentType;
8 import com.diligrp.tax.central.type.TaxSystemType; 8 import com.diligrp.tax.central.type.TaxSystemType;
  9 +import com.diligrp.tax.central.utils.JsonUtils;
9 import com.diligrp.tax.proxy.demarcate.Sender; 10 import com.diligrp.tax.proxy.demarcate.Sender;
10 import com.diligrp.tax.proxy.helper.KingDeeHelper; 11 import com.diligrp.tax.proxy.helper.KingDeeHelper;
11 import com.kingdee.bos.webapi.entity.IdentifyInfo; 12 import com.kingdee.bos.webapi.entity.IdentifyInfo;
@@ -13,6 +14,7 @@ import com.kingdee.bos.webapi.entity.RepoRet; @@ -13,6 +14,7 @@ import com.kingdee.bos.webapi.entity.RepoRet;
13 import com.kingdee.bos.webapi.entity.SuccessEntity; 14 import com.kingdee.bos.webapi.entity.SuccessEntity;
14 import org.springframework.stereotype.Component; 15 import org.springframework.stereotype.Component;
15 16
  17 +import java.text.MessageFormat;
16 import java.util.ArrayList; 18 import java.util.ArrayList;
17 19
18 /** 20 /**
@@ -34,9 +36,7 @@ public class RefundSender extends Sender&lt;RefundProxy&gt; { @@ -34,9 +36,7 @@ public class RefundSender extends Sender&lt;RefundProxy&gt; {
34 validMapping(identifyInfo, mapping); 36 validMapping(identifyInfo, mapping);
35 RepoRet<?> repoRet = KingDeeHelper.auditSend(mapping, identifyInfo, markDocument().value); 37 RepoRet<?> repoRet = KingDeeHelper.auditSend(mapping, identifyInfo, markDocument().value);
36 ArrayList<SuccessEntity> successEntity = repoRet.getResult().getResponseStatus().getSuccessEntitys(); 38 ArrayList<SuccessEntity> successEntity = repoRet.getResult().getResponseStatus().getSuccessEntitys();
37 - if (successEntity.isEmpty()) {  
38 - throw new TaxAgentServiceException(TaxSystemType.REMOTE_SERVICE_CALLS_ARE_EXCEPTIONAL);  
39 - } 39 + validSuccess(successEntity, repoRet);
40 SuccessEntity first = successEntity.getFirst(); 40 SuccessEntity first = successEntity.getFirst();
41 var proxy = new RefundProxy(); 41 var proxy = new RefundProxy();
42 proxy.setThirdPartyId(first.getId()); 42 proxy.setThirdPartyId(first.getId());