kyy
2025-12-01 f0ac4ec65279aa31d568b933afeb8237bee73a72
WebApi/Gs.Toolbox/InterfaceUtil.cs
@@ -1,4 +1,4 @@
using Newtonsoft.Json;
using Newtonsoft.Json;
using System.Data.SqlClient;
using System.Dynamic;
using System.Net;
@@ -47,6 +47,10 @@
        {
            url = AppSettingsHelper.getValueByKey("TestErpUrl6");
        }
        else if (urlType == 101)
        {
            url = AppSettingsHelper.getValueByKey("TestErpUrl101");
        }
        HttpWebRequest request = null;
        StreamWriter requestStream = null;
        WebResponse response = null;
@@ -89,9 +93,36 @@
        //{"msg":"操作成功","code":200,"data":{"number":"CGSL168397","code":"200","id":"268781"}}
        if (_rtn != -1)
        {
            try
            {
            Result _result = JsonConvert.DeserializeObject<Result>(responseStr);
            if ("200".Equals(_result.code))
                // 【优先判断】data.code(ERP真正的处理结果)
                if (_result?.data != null && "200".Equals(_result.data.code))
                {
                _rtn = 1;
                    LogHelper.Debug(url, $"ERP处理成功,data.code=200, number={_result.data.number}, id={_result.data.id}");
                }
                // 【降级判断】如果data为空,则判断外层code(兼容旧接口)
               /* else if (_result != null && "200".Equals(_result.code))
                {
                    _rtn = 1;
                    LogHelper.Debug(url, $"ERP外层返回成功,code=200(无data层,可能是旧接口)");
                }*/
                else
                {
                    _rtn = -1;
                    string errorMsg = _result?.data?.code != null
                        ? $"ERP处理失败,data.code={_result.data.code}"
                        : $"ERP处理失败,外层code={_result?.code}";
                    LogHelper.Debug(url, errorMsg + $", msg={_result?.msg}, responseStr={responseStr}");
                }
            }
            catch (Exception ex)
            {
                _rtn = -1;
                LogHelper.Debug(url, $"ERP返回数据解析失败:{ex.Message}, responseStr={responseStr}");
            }
        }
        sbLog.Append("," + DateTime.Now.ToString() + "结束发送");
        if (_rtn > 0)
@@ -126,11 +157,34 @@
public class Result
{
    /// <summary>
    /// 200成功,否则失败
    /// 200成功,否则失败(外层code)
    /// </summary>
    ///
    public string? msg { get; set; }
    public string? code { get; set; }
   // public string? data { get; set; }
    /// <summary>
    /// data层,包含真正的ERP处理结果
    /// </summary>
    public ErpData? data { get; set; }
}
/// <summary>
/// ERP返回的data层数据结构
/// </summary>
public class ErpData
{
    /// <summary>
    /// ERP单据编号
    /// </summary>
    public string? number { get; set; }
    /// <summary>
    /// ERP处理结果代码("200"成功)
    /// </summary>
    public string? code { get; set; }
    /// <summary>
    /// ERP单据ID
    /// </summary>
    public string? id { get; set; }
}