zyf
2025-11-08 4c2d9a4dbef1e5dae234b78ec980e521bf89fb0d
MESApplication/Controllers/QcIssueResult/QcIssueResultController.cs
@@ -1,4 +1,5 @@
using MES.Service.Dto.webApi;
using AngleSharp.Dom;
using MES.Service.Dto.webApi;
using MES.Service.Dto.webApi.QcIssueResult;
using MES.Service.Modes;
using MES.Service.Modes.QcIssueResult;
@@ -11,7 +12,10 @@
using Newtonsoft.Json.Linq;
using System.Diagnostics;
using System.Dynamic;
using System.Net;
using System.Text;
using System.Text.Json.Nodes;
using System.Web;
namespace MESApplication.Controllers.QcIssueResult;
@@ -32,9 +36,19 @@
    [HttpPost("GetProcessNo")]
    public IActionResult StartDingtalkProcess([FromBody] GetQcIssueResultDetail getQcIssueResultDetail)
    {
        var entity = new MessageCenter();
        entity.TableName = TableName;
        entity.Url = URL + "Save";
        entity.Method = METHOD;
        entity.Data = JsonConvert.SerializeObject(getQcIssueResultDetail);
        entity.Status = 1;
        entity.CreateBy = "PL017";
        try
        {
            // 新增URL解码处理逻辑
            DecodeUrlEncodedProperties(getQcIssueResultDetail);
            // 调用 QcIssueResultManager 中的 GetProcessNo 方法来启动钉钉工作流实例
            string result = m.GetProcessNo(getQcIssueResultDetail);
@@ -52,15 +66,52 @@
            var save = m.SaveProcessNo(getQcIssueResultDetail.ReleaseNo, instanceId);
            resultInfos.tbBillList = save;
            if (save) entity.Result = 1;
            entity.DealWith = 1;
            _manager.save(entity);
            return Ok(result);
        }
        catch (Exception ex)
        {
            // 捕获异常并返回错误信息
            entity.Result = 0;
            entity.DealWith = 0;
            entity.ResultData = ex.Message;
            _manager.save(entity);
            //return ResponseResult.ResponseError(ex);
            return StatusCode(500, $"启动钉钉工作流实例失败: {ex.Message}");
        }
    }
    // 新增解码方法
    private void DecodeUrlEncodedProperties(object obj)
    {
        if (obj == null) return;
        var properties = obj.GetType().GetProperties();
        foreach (var prop in properties)
        {
            // 只处理字符串类型的属性
            if (prop.PropertyType == typeof(string) && prop.CanWrite)
            {
                var value = prop.GetValue(obj) as string;
                if (!string.IsNullOrEmpty(value))
                {
                    // 使用UTF8编码进行解码
                    var decodedValue = HttpUtility.UrlDecode(value, Encoding.UTF8);
                    prop.SetValue(obj, decodedValue);
                }
            }
        }
    }
    [HttpPost("Save")]
    public ResponseResult Save(ErpQcIssueResult erpQcIssueResult)