KingdeeSaveResponse.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. package com.malk.model;
  2. import com.alibaba.fastjson.annotation.JSONField;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import java.util.List;
  6. /**
  7. * 金蝶单据保存响应
  8. */
  9. public class KingdeeSaveResponse {
  10. /** 结果状态:1或100表示成功 */
  11. private Integer ResultStatus;
  12. /** 错误代码,0表示成功 */
  13. private String ErrorCode;
  14. /** 错误消息 */
  15. private String Message;
  16. /** 保存成功的单据编号 */
  17. private String BillNo;
  18. /** 需要重新提交的ID列表 */
  19. private List<String> NeedReturnData;
  20. /** 金蝶返回的ID(如物料ID、单据ID) */
  21. private String Id;
  22. /** 状态(用于某些接口的status字段判断) */
  23. private Boolean Status;
  24. /** data节点完整数据 */
  25. private JSONObject Data;
  26. @JSONField(name = "ResultStatus")
  27. public Integer getResultStatus() {
  28. return ResultStatus;
  29. }
  30. public void setResultStatus(Integer resultStatus) {
  31. ResultStatus = resultStatus;
  32. }
  33. @JSONField(name = "ErrorCode")
  34. public String getErrorCode() {
  35. return ErrorCode;
  36. }
  37. public void setErrorCode(String errorCode) {
  38. ErrorCode = errorCode;
  39. }
  40. @JSONField(name = "Message")
  41. public String getMessage() {
  42. return Message;
  43. }
  44. public void setMessage(String message) {
  45. Message = message;
  46. }
  47. @JSONField(name = "BillNo")
  48. public String getBillNo() {
  49. return BillNo;
  50. }
  51. public void setBillNo(String billNo) {
  52. BillNo = billNo;
  53. }
  54. @JSONField(name = "NeedReturnData")
  55. public List<String> getNeedReturnData() {
  56. return NeedReturnData;
  57. }
  58. public void setNeedReturnData(List<String> needReturnData) {
  59. NeedReturnData = needReturnData;
  60. }
  61. @JSONField(name = "Id")
  62. public String getId() {
  63. return Id;
  64. }
  65. public void setId(String id) {
  66. Id = id;
  67. }
  68. @JSONField(name = "Status")
  69. public Boolean getStatus() {
  70. return Status;
  71. }
  72. public void setStatus(Boolean status) {
  73. Status = status;
  74. }
  75. @JSONField(name = "Data")
  76. public JSONObject getData() {
  77. return Data;
  78. }
  79. public void setData(JSONObject data) {
  80. Data = data;
  81. }
  82. /**
  83. * 判断是否成功(兼容多种响应格式)
  84. * 1. errorCode 为 "0"
  85. * 2. status 为 true
  86. * 3. ResultStatus 为 1 或 100
  87. */
  88. public boolean isSuccess() {
  89. // 判断 errorCode 为 "0"
  90. if ("0".equals(ErrorCode)) {
  91. return true;
  92. }
  93. // 判断 status 为 true
  94. if (Status != null && Status) {
  95. return true;
  96. }
  97. // 兼容旧逻辑
  98. return ResultStatus != null && (ResultStatus == 1 || ResultStatus == 100);
  99. }
  100. /**
  101. * 获取错误信息
  102. * 优先从 errors 数组中获取
  103. */
  104. public String getErrorInfo() {
  105. // 如果有 Message,优先使用
  106. if (Message != null && !Message.isEmpty()) {
  107. return Message;
  108. }
  109. // 从 data.result[].errors 中获取
  110. if (Data != null) {
  111. Object resultObj = Data.get("result");
  112. if (resultObj instanceof JSONArray) {
  113. JSONArray resultArray = (JSONArray) resultObj;
  114. if (resultArray != null && !resultArray.isEmpty()) {
  115. for (int i = 0; i < resultArray.size(); i++) {
  116. Object item = resultArray.get(i);
  117. if (item instanceof JSONObject) {
  118. JSONObject resultItem = (JSONObject) item;
  119. JSONArray errors = resultItem.getJSONArray("errors");
  120. if (errors != null && !errors.isEmpty()) {
  121. return errors.getString(0);
  122. }
  123. }
  124. }
  125. }
  126. } else if (resultObj instanceof JSONObject) {
  127. JSONObject dataObj = (JSONObject) resultObj;
  128. JSONArray errors = dataObj.getJSONArray("errors");
  129. if (errors != null && !errors.isEmpty()) {
  130. return errors.getString(0);
  131. }
  132. }
  133. // 获取 failCount
  134. String failCount = Data.getString("failCount");
  135. if (failCount != null && !"0".equals(failCount)) {
  136. return "处理失败,failCount: " + failCount;
  137. }
  138. }
  139. return "同步失败";
  140. }
  141. /**
  142. * 获取第一个成功记录的ID
  143. */
  144. public String getFirstSuccessId() {
  145. if (Data != null) {
  146. Object resultObj = Data.get("result");
  147. if (resultObj instanceof JSONArray) {
  148. JSONArray resultArray = (JSONArray) resultObj;
  149. if (resultArray != null && !resultArray.isEmpty()) {
  150. for (int i = 0; i < resultArray.size(); i++) {
  151. Object item = resultArray.get(i);
  152. if (item instanceof JSONObject) {
  153. JSONObject resultItem = (JSONObject) item;
  154. Boolean billStatus = resultItem.getBoolean("billStatus");
  155. if (billStatus != null && billStatus) {
  156. return resultItem.getString("id");
  157. }
  158. }
  159. }
  160. // 如果没有 billStatus 为 true 的,取第一个
  161. Object firstItem = resultArray.get(0);
  162. if (firstItem instanceof JSONObject) {
  163. return ((JSONObject) firstItem).getString("id");
  164. }
  165. }
  166. } else if (resultObj instanceof JSONObject) {
  167. return ((JSONObject) resultObj).getString("id");
  168. }
  169. }
  170. return Id;
  171. }
  172. }