南骏 池
2025-05-13 7eb6cc3c9be43076802b290645f82e0de74df35f
1.MES->OA优化
2.MES->OA新增日志
已修改2个文件
70 ■■■■ 文件已修改
Controllers/QC/OAJyController.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/QC/OaApi.cs 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/QC/OAJyController.cs
@@ -15,17 +15,18 @@
    OaApiService m = new OaApiService();
    [HttpPost("SumbitIQCToOA")]
    public ResponseResult SumbitIQCToOA(dynamic queryObj)
    public async Task<ResponseResult> SumbitIQCToOA(dynamic queryObj)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos = m.SubmitIQCToOA(queryObj);
            var tbBillList = resultInfos;
            dynamic resultInfos = await m.SubmitIQCToOA(queryObj);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                status = (resultInfos.code?.ToString().ToUpper() == "SUCCESS") ? 0 : 1,
                message = (resultInfos.code?.ToString().ToUpper() == "SUCCESS")
                    ? "OK"
                    : resultInfos.errMsg?.ToString() ?? "未知错误",
                data = resultInfos
            };
        }
service/QC/OaApi.cs
@@ -2,6 +2,8 @@
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Data.SqlClient;
using System.Data;
using System.IO;
using System.Net.Http;
using System.Security.Cryptography;
@@ -63,13 +65,56 @@
            // 5. 发送请求
            var response = await PostFormAsync(WorkflowUrl, requestData);
            return JObject.Parse(response);
            // 新增日志记录(在返回响应前)
            using (var conn = new SqlConnection(DbHelperSQL.strConn))
            {
                using (var cmd = new SqlCommand("prc_log_create", conn))
                {
                    try
                    {
                        conn.Open();
                        cmd.CommandType = CommandType.StoredProcedure;
                        SqlParameter[] logParams =
                        {
                            new("@edtUserGuid", SqlDbType.UniqueIdentifier) { Value = Guid.Parse(queryObj.userId.ToString()) },
                            new("@abtGuid", SqlDbType.UniqueIdentifier) { Value = Guid.Parse(queryObj.qcczdGuid.ToString()) },
                            new("@abtTable", SqlDbType.NVarChar, 40) { Value = "Mes_QC_Exceptional" },
                            new("@detail", SqlDbType.NVarChar, 2500) { Value = "提交IQC到OA系统" },
                            new("@hNo", SqlDbType.NVarChar, 100) { Value = "" },
                            new("@SendJson", SqlDbType.NVarChar) { Value = JObject.FromObject(requestData).ToString() },
                            new("@RtnJson", SqlDbType.NVarChar) { Value = response.Content.ToString() }
                        };
                        foreach (var param in logParams)
                            cmd.Parameters.Add(param);
                        cmd.ExecuteNonQuery();
                    }
                    catch (Exception logEx)
                    {
                        // 日志记录失败不中断主流程
                        Console.WriteLine($"日志记录失败: {logEx.Message}");
                    }
                    finally
                    {
                        conn.Close();
                    }
                }
            }
            return JObject.Parse(response.Content.ToString());  // 直接解析为JObject
        }
        catch (Exception ex)
        {
            dynamic error = new ExpandoObject();
            error.Error = true;
            error.Message = ex.Message;
            error.code = "SYSTEM_INNER_ERROR";  // 新增标准错误码
            error.errMsg = ex.Message;         // 修正字段名匹配规范
            error.data = new JObject();
            error.reqFailMsg = new JObject();
            return error;
        }
    }
@@ -159,7 +204,7 @@
    'http://192.168.1.145:81/upload/'+url_Path as url
FROM [Mes_QC_Exceptional_Detail] A
LEFT JOIN MES_QA_ITEMS_DETECT_01 B ON A.releaseNo = B.release_no
LEFT JOIN MES_FILE C ON C.parent_Guid = B.guid
RIGHT JOIN MES_FILE C ON C.parent_Guid = B.guid
WHERE pGuid = @guid";
        var fileData = Db.Ado.SqlQuery<dynamic>(fileSql, new { guid = queryObj.qcczdGuid });
@@ -396,7 +441,7 @@
        return encryptedContent;
    }
    private async Task<string> PostFormAsync(string url, Dictionary<string, object> data)
    private async Task<dynamic> PostFormAsync(string url, Dictionary<string, object> data)
    {
        // 改用FormUrlEncodedContent并正确设置Content-Type
        var formData = new List<KeyValuePair<string, string>>();
@@ -423,7 +468,7 @@
        // 调试输出完整响应信息
        Console.WriteLine($"完整响应:\n{responseInfo.ToString(Formatting.Indented)}");
        return responseInfo.ToString();
        return responseInfo;
    }
    public void Dispose()