南骏 池
2025-04-09 ccbbd0500eb763517329d6cf9197e928bfeda148
1.产品绑定
已修改3个文件
203 ■■■■ 文件已修改
Controllers/Wom/WomdaaController.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/QC/OAJyService.cs 110 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Wom/WomdaaManager.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Wom/WomdaaController.cs
@@ -292,5 +292,33 @@
            return ResponseResult.ResponseError(ex);
        }
    }
    //GetItemsByDaa001
    /// <summary>
    ///     扫描注塑码,获取工单和条码信息
    /// </summary>
    /// <returns></returns>
    [HttpPost("ProductBinding")]
    public ResponseResult ProductBinding([FromBody] dynamic query)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            // 先初始化tbBillList属性
            resultInfos.tbBillList = new ExpandoObject();
            resultInfos.tbBillList = m.ProductBinding(query);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    #endregion
}
service/QC/OAJyService.cs
@@ -173,66 +173,66 @@
    }
    public dynamic SumbitIQCToOA(dynamic queryObj)
    {
        try
        {
            ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    //public dynamic SumbitIQCToOA(dynamic queryObj)
    //{
    //    try
    //    {
    //        ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
    //        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            var request = WebRequest.Create(url) as HttpWebRequest;
            request.Method = "POST";
            request.Timeout = 20000;  // 20秒超时
            request.ContentType = "application/x-www-form-urlencoded; charset=utf-8";  // 明确指定编码
    //        var request = WebRequest.Create(url) as HttpWebRequest;
    //        request.Method = "POST";
    //        request.Timeout = 20000;  // 20秒超时
    //        request.ContentType = "application/x-www-form-urlencoded; charset=utf-8";  // 明确指定编码
            // 添加调试头信息
            request.Headers.Add("appid", APPID);
            request.Headers.Add("token", token);
            request.Headers.Add("userId", userId);
    //        // 添加调试头信息
    //        request.Headers.Add("appid", APPID);
    //        request.Headers.Add("token", token);
    //        request.Headers.Add("userId", userId);
            // 构建带时区的日期参数
            var postData = new StringBuilder();
            var dateParam = DateTime.Now.AddDays(-1).ToString("yyyy-MM-ddTHH:mm:sszzz");
            postData.AppendFormat("KQSDATE={0}&KQEDATE={1}",
                Uri.EscapeDataString(dateParam),
                Uri.EscapeDataString(dateParam));
    //        // 构建带时区的日期参数
    //        var postData = new StringBuilder();
    //        var dateParam = DateTime.Now.AddDays(-1).ToString("yyyy-MM-ddTHH:mm:sszzz");
    //        postData.AppendFormat("KQSDATE={0}&KQEDATE={1}",
    //            Uri.EscapeDataString(dateParam),
    //            Uri.EscapeDataString(dateParam));
            byte[] byteData = Encoding.UTF8.GetBytes(postData.ToString());  // 改用UTF8编码
    //        byte[] byteData = Encoding.UTF8.GetBytes(postData.ToString());  // 改用UTF8编码
            // 更完善的请求写入
            using (var stream = request.GetRequestStream())
            {
                stream.Write(byteData, 0, byteData.Length);
            }
    //        // 更完善的请求写入
    //        using (var stream = request.GetRequestStream())
    //        {
    //            stream.Write(byteData, 0, byteData.Length);
    //        }
            // 处理HTTP错误状态码
            using (var response = request.GetResponse() as HttpWebResponse)
            {
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    throw new WebException($"服务器返回错误状态码: {(int)response.StatusCode} {response.StatusDescription}");
                }
    //        // 处理HTTP错误状态码
    //        using (var response = request.GetResponse() as HttpWebResponse)
    //        {
    //            if (response.StatusCode != HttpStatusCode.OK)
    //            {
    //                throw new WebException($"服务器返回错误状态码: {(int)response.StatusCode} {response.StatusDescription}");
    //            }
                using (var stream = response.GetResponseStream())
                using (var reader = new StreamReader(stream, Encoding.UTF8))
                {
                    return reader.ReadToEnd();
                }
            }
        }
        catch (WebException ex) when (ex.Response is HttpWebResponse response)
        {
            // 记录详细错误信息
            var errorStream = response.GetResponseStream();
            using (var reader = new StreamReader(errorStream))
            {
                string errorDetails = reader.ReadToEnd();
                throw new Exception($"请求失败 [Status: {response.StatusCode}]: {errorDetails}", ex);
            }
        }
        catch (Exception ex)
        {
            throw new Exception($"请求异常: {ex.Message}", ex);
        }
    }
    //            using (var stream = response.GetResponseStream())
    //            using (var reader = new StreamReader(stream, Encoding.UTF8))
    //            {
    //                return reader.ReadToEnd();
    //            }
    //        }
    //    }
    //    catch (WebException ex) when (ex.Response is HttpWebResponse response)
    //    {
    //        // 记录详细错误信息
    //        var errorStream = response.GetResponseStream();
    //        using (var reader = new StreamReader(errorStream))
    //        {
    //            string errorDetails = reader.ReadToEnd();
    //            throw new Exception($"请求失败 [Status: {response.StatusCode}]: {errorDetails}", ex);
    //        }
    //    }
    //    catch (Exception ex)
    //    {
    //        throw new Exception($"请求异常: {ex.Message}", ex);
    //    }
    //}
}
service/Wom/WomdaaManager.cs
@@ -301,4 +301,69 @@
        return Traceability;
    }
    public dynamic ProductBinding(dynamic query)
    {
        if (query == null) throw new ArgumentNullException(nameof(query), "参数对象不能为 null");
        // 2. 使用 string.IsNullOrEmpty 直接判断字符串属性(避免 NullReferenceException)
        if (string.IsNullOrEmpty(query.userName?.ToString()))
            throw new ArgumentException("用户名不允许为空", nameof(query.userName));
        if (string.IsNullOrEmpty(query.ZsBar?.ToString()))
            throw new ArgumentException("追溯码不允许为空", nameof(query.ZsBar));
        if (string.IsNullOrEmpty(query.LsBar?.ToString()))
            throw new ArgumentException("后盖码不允许为空", nameof(query.LsBar));
        var _strMsg = "";
        var _intSum = "";
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        {
            using (var cmd = new SqlCommand("prc_pda_product_binding", conn))
            {
                try
                {
                    conn.Open();
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlParameter[] parameters =
                    {
                        new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userName },
                        new("@pi_trac_barcode", SqlDbType.NVarChar, 100) { Value = query.ZsBar },
                        new("@pi_ls_barcode", SqlDbType.NVarChar, 100) { Value = query.LsBar },
                        new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output },
                        new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output }
                    };
                    foreach (var parameter in parameters)
                        cmd.Parameters.Add(parameter);
                    cmd.ExecuteNonQuery();
                    _strMsg = parameters[3].Value?.ToString() ?? "";
                    _intSum = parameters[4].Value?.ToString() ?? "-1";
                    var result = Convert.ToInt32(_intSum);
                    if (result <= 0) throw new Exception(_strMsg);
                    var dto = new
                    {
                        message = _strMsg,
                        status = result,
                        tracBarcode = query.ZsBar
                    };
                    return dto;
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    conn.Close();
                }
            }
        }
    }
}