package com.malk.model; import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.util.List; /** * 金蝶单据保存响应 */ public class KingdeeSaveResponse { /** 结果状态:1或100表示成功 */ private Integer ResultStatus; /** 错误代码,0表示成功 */ private String ErrorCode; /** 错误消息 */ private String Message; /** 保存成功的单据编号 */ private String BillNo; /** 需要重新提交的ID列表 */ private List NeedReturnData; /** 金蝶返回的ID(如物料ID、单据ID) */ private String Id; /** 状态(用于某些接口的status字段判断) */ private Boolean Status; /** data节点完整数据 */ private JSONObject Data; @JSONField(name = "ResultStatus") public Integer getResultStatus() { return ResultStatus; } public void setResultStatus(Integer resultStatus) { ResultStatus = resultStatus; } @JSONField(name = "ErrorCode") public String getErrorCode() { return ErrorCode; } public void setErrorCode(String errorCode) { ErrorCode = errorCode; } @JSONField(name = "Message") public String getMessage() { return Message; } public void setMessage(String message) { Message = message; } @JSONField(name = "BillNo") public String getBillNo() { return BillNo; } public void setBillNo(String billNo) { BillNo = billNo; } @JSONField(name = "NeedReturnData") public List getNeedReturnData() { return NeedReturnData; } public void setNeedReturnData(List needReturnData) { NeedReturnData = needReturnData; } @JSONField(name = "Id") public String getId() { return Id; } public void setId(String id) { Id = id; } @JSONField(name = "Status") public Boolean getStatus() { return Status; } public void setStatus(Boolean status) { Status = status; } @JSONField(name = "Data") public JSONObject getData() { return Data; } public void setData(JSONObject data) { Data = data; } /** * 判断是否成功(兼容多种响应格式) * 1. errorCode 为 "0" * 2. status 为 true * 3. ResultStatus 为 1 或 100 */ public boolean isSuccess() { // 判断 errorCode 为 "0" if ("0".equals(ErrorCode)) { return true; } // 判断 status 为 true if (Status != null && Status) { return true; } // 兼容旧逻辑 return ResultStatus != null && (ResultStatus == 1 || ResultStatus == 100); } /** * 获取错误信息 * 优先从 errors 数组中获取 */ public String getErrorInfo() { // 如果有 Message,优先使用 if (Message != null && !Message.isEmpty()) { return Message; } // 从 data.result[].errors 中获取 if (Data != null) { Object resultObj = Data.get("result"); if (resultObj instanceof JSONArray) { JSONArray resultArray = (JSONArray) resultObj; if (resultArray != null && !resultArray.isEmpty()) { for (int i = 0; i < resultArray.size(); i++) { Object item = resultArray.get(i); if (item instanceof JSONObject) { JSONObject resultItem = (JSONObject) item; JSONArray errors = resultItem.getJSONArray("errors"); if (errors != null && !errors.isEmpty()) { return errors.getString(0); } } } } } else if (resultObj instanceof JSONObject) { JSONObject dataObj = (JSONObject) resultObj; JSONArray errors = dataObj.getJSONArray("errors"); if (errors != null && !errors.isEmpty()) { return errors.getString(0); } } // 获取 failCount String failCount = Data.getString("failCount"); if (failCount != null && !"0".equals(failCount)) { return "处理失败,failCount: " + failCount; } } return "同步失败"; } /** * 获取第一个成功记录的ID */ public String getFirstSuccessId() { if (Data != null) { Object resultObj = Data.get("result"); if (resultObj instanceof JSONArray) { JSONArray resultArray = (JSONArray) resultObj; if (resultArray != null && !resultArray.isEmpty()) { for (int i = 0; i < resultArray.size(); i++) { Object item = resultArray.get(i); if (item instanceof JSONObject) { JSONObject resultItem = (JSONObject) item; Boolean billStatus = resultItem.getBoolean("billStatus"); if (billStatus != null && billStatus) { return resultItem.getString("id"); } } } // 如果没有 billStatus 为 true 的,取第一个 Object firstItem = resultArray.get(0); if (firstItem instanceof JSONObject) { return ((JSONObject) firstItem).getString("id"); } } } else if (resultObj instanceof JSONObject) { return ((JSONObject) resultObj).getString("id"); } } return Id; } }