zyf
2025-09-29 263e0e39c18a4ade744b4d1111fe8dc9de7875e8
平板纠正措施单(推送部分暂未完成)
已修改27个文件
已添加6个文件
752 ■■■■■ 文件已修改
MES.Service/MES.Service.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/DingAPI/DingDept.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/DingAPI/DingStaff.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/DingAPI/JzcsdData.cs 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/SJ/SJBadReason.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Modes/XJ/XJBadReason.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/bin/Debug/net8.0/MES.Service.dll 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/bin/Debug/net8.0/MES.Service.pdb 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/bin/Release/net8.0/MES.Service.dll 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/bin/Release/net8.0/MES.Service.pdb 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/QC/SJService.cs 372 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/QC/XJService.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/Controllers/QC/SJController.cs 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/Controllers/QC/XJController.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/MESApplication.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/Properties/PublishProfiles/FolderProfile.pubxml.user 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Debug/net8.0/MES.Service.dll 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Debug/net8.0/MES.Service.pdb 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Debug/net8.0/MESApplication.dll 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Debug/net8.0/MESApplication.exe 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Debug/net8.0/MESApplication.pdb 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Debug/net8.0/MESApplication.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Release/net8.0/2508291420.zip 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Release/net8.0/MES.Service.dll 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Release/net8.0/MES.Service.pdb 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Release/net8.0/MESApplication.dll 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Release/net8.0/MESApplication.exe 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Release/net8.0/MESApplication.pdb 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Release/net8.0/publish/MES.Service.dll 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Release/net8.0/publish/MES.Service.pdb 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Release/net8.0/publish/MESApplication.dll 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Release/net8.0/publish/MESApplication.exe 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/bin/Release/net8.0/publish/MESApplication.pdb 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/MES.Service.csproj
@@ -34,6 +34,7 @@
    <ItemGroup>
      <Folder Include="Dto\webApi\TestReport\" />
      <Folder Include="service\DingService\" />
    </ItemGroup>
</Project>
MES.Service/Modes/DingAPI/DingDept.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
using SqlSugar;
namespace MES.Service.Modes;
/// <summary>
///     å‘˜å·¥ä¿¡æ¯è¡¨
/// </summary>
[SugarTable("V_DING_DEPARTMENT")]
public class DingDept
{
    /// <summary>
    ///     ID
    /// </summary>
    [SugarColumn(ColumnName = "ID")]
    public decimal Id { get; set; }
    /// <summary>
    ///     éƒ¨é—¨å
    /// </summary>
    [SugarColumn(ColumnName = "NAME")]
    public string? Name { get; set; }
    /// <summary>
    ///     çˆ¶éƒ¨é—¨ç¼–码
    /// </summary>
    [SugarColumn(ColumnName = "PID")]
    public decimal Pid { get; set; }
    /// <summary>
    ///     æ²¡æœ‰å­éƒ¨é—¨æ ‡è¯†
    /// </summary>
    [SugarColumn(ColumnName = "NO_CHILD")]
    public decimal NoChild { get; set; }
}
public class DeptNode
{
    public decimal Id { get; set; }
    public string? Label { get; set; }   // å‰ç«¯æ˜¾ç¤ºç”¨
    public decimal Value { get; set; }      // å‰ç«¯ç»‘定值
    public List<DeptNode> Children { get; set; } = new();
}
MES.Service/Modes/DingAPI/DingStaff.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
using SqlSugar;
namespace MES.Service.Modes;
/// <summary>
///     å‘˜å·¥ä¿¡æ¯è¡¨
/// </summary>
[SugarTable("DING_STAFF")]
public class DingStaff
{
    /// <summary>
    ///     ID
    /// </summary>
    [SugarColumn(ColumnName = "ID")]
    public decimal Id { get; set; }
    /// <summary>
    ///     å‘˜å·¥å§“名
    /// </summary>
    [SugarColumn(ColumnName = "NAME")]
    public string? StaffName { get; set; }
    /// <summary>
    ///     éƒ¨é—¨ç¼–码
    /// </summary>
    [SugarColumn(ColumnName = "DEPT_ID")]
    public decimal DeptID { get; set; }
}
MES.Service/Modes/DingAPI/JzcsdData.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MES.Service.Modes.DingAPI;
public class JzcsdData
/*
产品型号    TextField-K2AD4O5B
提出人员    InnerContactField_WY9BZDYT7W00
提出日期    DDDateField_JD4ISXXCNLS0
接收部门    DepartmentField_SLLT1GL6RC00
负责人        InnerContactField_1I3FYOICN4N40
回复日期    DDDateField_1NPTPIPNEI1S0
纠正事项来源    DDMultiSelectField_19MZJHE2ZWM80
问题描述    TextareaField_1FUN513WLK4G0
审批选择    DDSelectField_WE67NWABXM80
*/
{
    //产品型号
    public string? Imodel { get; set; }
    //提出人员
    public string? Fname { get; set; }
    //提出日期
    //public string? Fdate { get; set; }
    //接收部门
    public string? selectedDept { get; set; }
    //接收部门ID
    public string? selectedDeptID { get; set; }
    //负责人
    public string? selectedUser { get; set; }
    //负责人ID
    public string? selectedUserID { get; set; }
    //回复日期
    public string? ReplyDate { get; set; }
    //纠正事项来源
    public string? Source { get; set; }
    //问题描述
    public string? Reason { get; set; }
    //审批选择
    public string? selectedADept { get; set; }
    //审批选择
    public string? selectedADeptID { get; set; }
}
MES.Service/Modes/SJ/SJBadReason.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
using SqlSugar;
namespace MES.Service.Modes;
/// <summary>
///     é¦–检不良信息
/// </summary>
[SugarTable("V_SJ_BAD_REASON")]
public class SJBadReason
{
    /// <summary>
    ///     ç‰©æ–™ID
    /// </summary>
    [SugarColumn(ColumnName = "BILL_NO")]
    public string? BillNo { get; set; }
    /// <summary>
    ///     ä¸è‰¯åŽŸå› 
    /// </summary>
    [SugarColumn(ColumnName = "REASON")]
    public string? Reason { get; set; }
}
MES.Service/Modes/XJ/XJBadReason.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
using SqlSugar;
namespace MES.Service.Modes;
/// <summary>
///     é¦–检不良信息
/// </summary>
[SugarTable("V_XJ_BAD_REASON")]
public class XJBadReason
{
    /// <summary>
    ///     ç‰©æ–™ID
    /// </summary>
    [SugarColumn(ColumnName = "BILL_NO")]
    public string? BillNo { get; set; }
    /// <summary>
    ///     ä¸è‰¯åŽŸå› 
    /// </summary>
    [SugarColumn(ColumnName = "REASON")]
    public string? Reason { get; set; }
}
MES.Service/bin/Debug/net8.0/MES.Service.dll
Binary files differ
MES.Service/bin/Debug/net8.0/MES.Service.pdb
Binary files differ
MES.Service/bin/Release/net8.0/MES.Service.dll
Binary files differ
MES.Service/bin/Release/net8.0/MES.Service.pdb
Binary files differ
MES.Service/service/QC/SJService.cs
@@ -6,6 +6,13 @@
using DbType = System.Data.DbType;
using System.Data;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
using AlibabaCloud.TeaUtil.Models;
using MES.Service.Modes.QcIssueResult;
using Newtonsoft.Json;
using System.Diagnostics;
using Tea;
using MES.Service.Modes.DingAPI;
using static System.Runtime.InteropServices.JavaScript.JSType;
namespace MES.Service.service.QC;
@@ -176,6 +183,25 @@
                    result = "未检测",
                    isCheck = 0
                }).ToList();
    }
    public List<SJBadReason>? GetReason(string billNo)
    {
        var db = SqlSugarHelper.GetInstance();
        var count = db.Queryable<SJBadReason>().Where(s => s.BillNo == billNo).Count();
        if (count <= 0) return null;
        var reason = db
            .Queryable<SJBadReason>()
            .Where(s => s.BillNo == billNo).Select(
                b => new SJBadReason
                {
                     Reason =b.Reason
                }).ToList();
        return reason;
    }
    public List<QsItemIpiItem> getQSItems(decimal? pid, decimal? id)
@@ -587,4 +613,350 @@
        });
    }
    /// <summary>
    /// èŽ·å–é’‰é’‰éƒ¨é—¨
    /// </summary>
    /// <returns></returns>
    public List<DingDept> getDingDept()
    {
        var db = SqlSugarHelper.GetInstance();
        return db.Queryable<DingDept>()
                .Where(b => b.NoChild== 1)
                .Select(b => new DingDept
                {
                    Id=b.Id,
                    Name=b.Name
                })
                .ToList();
    }
    public List<DeptNode> BuildDeptTree()
    {
        var db = SqlSugarHelper.GetInstance();
        var flatList = db.Queryable<DingDept>()
            .ToList();
        var lookup = flatList.ToDictionary(
            d => d.Id,
            d => new DeptNode
            {
                Id = d.Id,
                Label = d.Name,
                Value = d.Id
            });
        List<DeptNode> roots = new();
        foreach (var dept in flatList)
        {
            if ((dept.Pid > 0 && lookup.ContainsKey(dept.Pid)))
            {
                lookup[dept.Pid].Children.Add(lookup[dept.Id]);
            }
            else
            {
                // parentId ä¸º null çš„就是根节点
                roots.Add(lookup[dept.Id]);
            }
        }
        return roots;
    }
    /// <summary>
    /// èŽ·å–é’‰é’‰å‘˜å·¥
    /// </summary>
    /// <returns></returns>
    public List<DingStaff> getDingUser()
    {
        var db = SqlSugarHelper.GetInstance();
        return db.Queryable<DingStaff>()
                .Select(b => new DingStaff
                {
                        StaffName=b.StaffName,
                        Id=b .Id
                })
                .ToList();
    }
    /// <summary>
    /// å¼‚常处置单推送钉钉
    /// </summary>
    /// <returns></returns>
    public static AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client CreateClient()
    {
        AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config();
        config.Protocol = "https";
        config.RegionId = "central";
        return new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client(config);
    }
    public static AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client CreateClient1()
    {
        AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config();
        config.Protocol = "https";
        config.RegionId = "central";
        return new AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client(config);
    }
    public string GetToken()
    {
        AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client client = CreateClient1();
        AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models.GetAccessTokenRequest getAccessTokenRequest = new AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models.GetAccessTokenRequest
        {
            AppKey = "dingyzos0r1bizj7g6lr",
            AppSecret = "-HP4RvK2OUbqhG3iBUpd_TPe5MZRj8cfLc0b8Skt8rhC3I38kVLY9SS8P3kLWFcH",
        };
        try
        {
            var response = client.GetAccessToken(getAccessTokenRequest);
            return response.Body.AccessToken; // è¿”回获取到的 Access Token
        }
        catch (TeaException err)
        {
            Console.WriteLine($"TeaException: Code={err.Code}, Message={err.Message}");
            return null;
        }
        catch (Exception _err)
        {
            Console.WriteLine($"Exception: {_err.Message}");
            return null;
        }
    }
    public string DingJZCSD(JzcsdData InData)
    {
        var db = SqlSugarHelper.GetInstance();
        decimal numUserId = db.Queryable<DingStaff>()
            .Where(t => t.StaffName == InData.Fname)
            .Select(t => t.Id)
            .First();
        if (numUserId > 0)
        {
            string UserId = Convert.ToString(numUserId);
            // ä½¿ç”¨ JSON åºåˆ—化输出对象的详细内容
            string InDataJson = JsonConvert.SerializeObject(InData, Formatting.Indented);
            Debug.WriteLine("InDataDetail: " + InDataJson);
            // èŽ·å– Access Token
            string accessToken = GetToken();
            if (string.IsNullOrEmpty(accessToken))
            {
                return "获取 Access Token å¤±è´¥";
            }
            AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client client = CreateClient();
            AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceHeaders startProcessInstanceHeaders = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceHeaders();
            Debug.WriteLine(accessToken);
            startProcessInstanceHeaders.XAcsDingtalkAccessToken = accessToken; // ä½¿ç”¨èŽ·å–åˆ°çš„ Access Token
            /*
            äº§å“åž‹å·    TextField-K2AD4O5B
            çº æ­£äº‹é¡¹æ¥æº    DDMultiSelectField_19MZJHE2ZWM80
            æå‡ºäººå‘˜    InnerContactField_WY9BZDYT7W00
            æå‡ºæ—¥æœŸ    DDDateField_JD4ISXXCNLS0
            æŽ¥æ”¶éƒ¨é—¨    DepartmentField_SLLT1GL6RC00
            è´Ÿè´£äºº        InnerContactField_1I3FYOICN4N40
            å›žå¤æ—¥æœŸ    DDDateField_1NPTPIPNEI1S0
            é—®é¢˜æè¿°    TextareaField_1FUN513WLK4G0
            å®¡æ‰¹é€‰æ‹©    DDSelectField_WE67NWABXM80
            */
            AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues0 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            {
                //产品型号
                Name = "TextField-K2AD4O5B",
                Value = InData.Imodel
            };
            AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues1 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            {
                //纠正事项来源
                Name = "DDMultiSelectField_19MZJHE2ZWM80",
                Value = InData.Source
                /* Value = JsonConvert.SerializeObject(new[] {
                         new { value = InData.Source, label = "内部审核" }
                     })*/
            };
            AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues2 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            {
                //提出人员
                Name = "InnerContactField_WY9BZDYT7W00",
                Value = UserId,
            };
            AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues3 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            {
                //提出日期
                Name = "DDDateField_JD4ISXXCNLS0",
                Value = DateTime.Now.ToString("yyyy-MM-dd"),
            };
            AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues4 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            {
                //接收部门
                Name = "DepartmentField_SLLT1GL6RC00",
                Value = InData.selectedDeptID,
            };
            AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues5 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            {
                //负责人
                Name = "InnerContactField_1I3FYOICN4N40",
                Value = InData.selectedUserID
            };
            AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues6 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            {
                //回复日期
                Name = "DDDateField_1NPTPIPNEI1S0",
                Value = InData.ReplyDate,
            };
            AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues7 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            {
                //问题描述
                Name = "TextareaField_1FUN513WLK4G0",
                Value = InData.Reason,
            };
            AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues8 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            {
                //审批选择
                Name = "DDSelectField_WE67NWABXM80",
                Value = InData.selectedADeptID,
            };
            //AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues8 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            //{
            //    //DDSelectField_WE67NWABXM80
            //    Name = "InnerContactField_1I3FYOICN4N40",
            //    Value = InData.se,
            //};
            //AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues9 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            //{
            //    //回复日期
            //    Name = "DDDateField_1NPTPIPNEI1S0",
            //    Value = Convert.ToString(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()),
            //};
            //AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues10 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            //{
            //    //提出部门
            //    Name = "DepartmentField_184EOWTFMJUK0",
            //    Value = "挑选内容",
            //};
            //AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues11 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            //{
            //    //纠正措施
            //    Name = "TextareaField_1PZP4OZ8GSKG0",
            //    Value = InData.Action,
            //};
            //AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues12 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            //{
            //    //纠正措施负责人
            //    Name = "InnerContactField_9PR03WUFX7O0",
            //    Value = ActionUserId,
            //};
            //AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues13 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            //{
            //    //实例ID
            //    Name = "api_instanceId",
            //    Value = accessToken,
            //};
            //AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues14 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            //{
            //    //计划完成时间
            //    Name = "DDDateField_1G5HG8KPCY2O0",
            //    Value = "否",
            //};
            //AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues15 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            //{
            //    //提出日期
            //    Name = "DDDateField_JD4ISXXCNLS0",
            //    Value = Convert.ToString(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()),
            //};
            //AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues16 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            //{
            //    //原因分析
            //    Name = "TextareaField_N3W50F154DS0",
            //    Value = InData.,
            //};
            //AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues17 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
            //{
            //    //产品型号
            //    Name = "TextField-K2AD4O5B",
            //    Value = "附件",
            //};
            //AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestTargetSelectActioners targetSelectActioners0 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestTargetSelectActioners
            //{
            //    //
            //    ActionerKey = "null",
            //    ActionerUserIds = new List<string>
            //{
            //   UserId
            //},
            //};
            //AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestApprovers approvers0 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestApprovers
            //{
            //    ActionType = "OR",
            //    UserIds = new List<string>
            //{
            //    UserId
            //},
            //};
            AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest startProcessInstanceRequest = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest
            {
                OriginatorUserId = UserId,
                ProcessCode = "PROC-BBA5632D-DC7C-4267-A3E2-757E2B7023BC",
                DeptId = 1,
                FormComponentValues = new List<AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues>
            {
                 formComponentValues1,formComponentValues2,formComponentValues3, formComponentValues4, formComponentValues5, formComponentValues6, formComponentValues7, formComponentValues8
                 //formComponentValues9,formComponentValues10, formComponentValues11, formComponentValues12, formComponentValues13, formComponentValues14
            },
            //    TargetSelectActioners = new List<AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestTargetSelectActioners>
            //{
            //    targetSelectActioners0
            //},
            //    Approvers = new List<AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestApprovers>
            //{
            //    approvers0
            //},
                CcList = new List<string>
            {
               UserId
            },
                CcPosition = "START",
            };
            // åºåˆ—化 FormComponentValues åˆ—表为 JSON æ ¼å¼
            string formComponentValuesJson = JsonConvert.SerializeObject(startProcessInstanceRequest.FormComponentValues, Formatting.Indented);
            Debug.WriteLine("FormComponentValues: " + formComponentValuesJson);
            try
            {
                string requestContent = Newtonsoft.Json.JsonConvert.SerializeObject(startProcessInstanceRequest);
                Debug.WriteLine("startProcessInstanceRequest内容:");
                Debug.WriteLine(requestContent);
                var response = client.StartProcessInstanceWithOptions(startProcessInstanceRequest, startProcessInstanceHeaders, new RuntimeOptions());
                return $"钉钉工作流实例启动成功: {Newtonsoft.Json.JsonConvert.SerializeObject(response.Body)}";
            }
            catch (TeaException err)
            {
                string requestContent = Newtonsoft.Json.JsonConvert.SerializeObject(startProcessInstanceRequest);
                Debug.WriteLine("startProcessInstanceRequest内容:");
                Debug.WriteLine(startProcessInstanceRequest);
                return $"TeaException: Code={err.Code}, Message={err.Message}";
            }
            catch (Exception _err)
            {
                return $"Exception: {_err.Message}";
            }
        }
        else
        {
            return "您不是公司成员或还未被加入到数据库中或名字填写错误,未找到匹配的用户信息";
        }
    }
}
MES.Service/service/QC/XJService.cs
@@ -737,4 +737,23 @@
                .ExecuteCommand();
        });
    }
    public List<XJBadReason>? GetReason(string billNo)
    {
        var db = SqlSugarHelper.GetInstance();
        var count = db.Queryable<XJBadReason>().Where(s => s.BillNo == billNo).Count();
        if (count <= 0) return null;
        var reason = db
            .Queryable<XJBadReason>()
            .Where(s => s.BillNo == billNo).Select(
                b => new XJBadReason
                {
                    Reason = b.Reason
                }).ToList();
        return reason;
    }
}
MESApplication/Controllers/QC/SJController.cs
@@ -1,6 +1,9 @@
using System.Dynamic;
using Masuit.Tools.Models;
using MES.Service.DB;
using MES.Service.Dto.service;
using MES.Service.Modes;
using MES.Service.Modes.DingAPI;
using MES.Service.service.QC;
using MES.Service.util;
using Microsoft.AspNetCore.Mvc;
@@ -154,6 +157,127 @@
        }
    }
    /// <summary>
    /// èŽ·å–è¡Œä¸è‰¯åŽŸå› 
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    [HttpPost("GetReason")]
    public ResponseResult GetReason([FromBody] JObject data)
    {
        string billNo = data["billNo"].ToString();
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList = new SJService();
            var reasons = tbBillList.GetReason(billNo);
            resultInfos.tbBillList = reasons;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = reasons
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("GetDingDept")]
    public ResponseResult GetDingDept()
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList = new SJService();
            var depts = tbBillList.getDingDept();
            resultInfos.tbBillList = depts;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = depts
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("GetDeptTree")]
    public ResponseResult GetDeptTree()
    {
        try
        {
            var db = SqlSugarHelper.GetInstance();
            var flatList = db.Queryable<DingDept>().ToList();
            var tbBillList = new SJService();
            // è½¬æ¢ä¸ºæ ‘
            var tree = tbBillList.BuildDeptTree();
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = tree
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("GetDingUser")]
    public ResponseResult GetDingUser()
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList = new SJService();
            var users = tbBillList.getDingUser();
            resultInfos.tbBillList = users;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = users
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("DingJZCSD")]
    public ResponseResult DingJZCSD(JzcsdData Indata)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList = new SJService();
            var depts = tbBillList.DingJZCSD(Indata);
            resultInfos.tbBillList = depts;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = depts
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("SetQSItemDetail")]
    public ResponseResult SetQSItemDetail([FromBody] QsItemIpiItemDetail detail)
    {
MESApplication/Controllers/QC/XJController.cs
@@ -487,4 +487,32 @@
            return ResponseResult.ResponseError(ex);
        }
    }
    /// <summary>
    /// èŽ·å–è¡Œä¸è‰¯åŽŸå› 
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    [HttpPost("GetReason")]
    public ResponseResult GetReason([FromBody] JObject data)
    {
        string billNo = data["billNo"].ToString();
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList = new XJService();
            var reasons = tbBillList.GetReason(billNo);
            resultInfos.tbBillList = reasons;
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = reasons
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
}
MESApplication/MESApplication.csproj
@@ -41,4 +41,8 @@
        <ProjectReference Include="..\MES.Service\MES.Service.csproj" />
    </ItemGroup>
    <ItemGroup>
      <Folder Include="Controllers\DingController\" />
    </ItemGroup>
</Project>
MESApplication/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -5,7 +5,7 @@
<Project>
  <PropertyGroup>
    <_PublishTargetUrl>E:\MES\YC\JK\YC\MESApplication\bin\Release\net8.0\publish\</_PublishTargetUrl>
    <History>True|2025-08-28T10:15:38.3971489Z||;True|2025-08-28T18:15:06.7333272+08:00||;True|2025-08-27T18:35:09.5980695+08:00||;True|2025-08-26T19:16:55.3617645+08:00||;True|2025-08-21T10:27:13.8176169+08:00||;True|2025-06-26T08:55:26.5542141+08:00||;True|2025-06-25T09:11:45.3214896+08:00||;True|2025-05-23T13:03:55.7681923+08:00||;True|2025-05-23T12:30:20.3979750+08:00||;True|2025-05-06T18:44:59.6980994+08:00||;True|2025-05-06T18:39:53.5994195+08:00||;True|2025-05-06T15:31:35.4635552+08:00||;True|2025-05-06T14:42:04.8934173+08:00||;True|2025-04-28T20:38:10.9382378+08:00||;True|2025-04-28T19:02:47.1742326+08:00||;True|2025-04-28T18:34:57.6622084+08:00||;True|2025-04-28T13:05:23.6608249+08:00||;True|2025-04-28T09:37:26.7461458+08:00||;True|2025-04-28T09:35:49.4586494+08:00||;True|2025-04-23T09:20:16.5810299+08:00||;True|2025-04-22T14:55:52.6602616+08:00||;True|2025-04-22T14:52:09.2986761+08:00||;True|2025-04-22T14:35:55.6073919+08:00||;True|2025-04-21T17:25:11.3783000+08:00||;True|2025-04-15T02:22:50.8483367+08:00||;True|2025-04-14T17:01:19.3567029+08:00||;True|2025-04-10T16:29:29.4614826+08:00||;True|2025-04-03T12:04:01.6354165+08:00||;True|2025-03-28T14:28:57.3291596+08:00||;True|2025-03-25T17:51:51.1941007+08:00||;True|2025-03-25T17:28:17.3219786+08:00||;True|2025-03-25T15:25:43.0061330+08:00||;True|2025-03-24T17:58:37.6820871+08:00||;True|2024-10-28T11:56:24.2694762+08:00||;True|2024-10-28T11:40:56.4512491+08:00||;True|2024-10-28T11:28:42.4509497+08:00||;True|2024-10-28T11:11:11.1286907+08:00||;True|2024-10-28T10:09:42.4378313+08:00||;True|2024-10-28T09:57:51.0792947+08:00||;True|2024-10-23T17:07:23.7741858+08:00||;True|2024-10-22T14:34:55.4526970+08:00||;True|2024-10-17T16:37:53.4763504+08:00||;True|2024-10-13T14:04:45.3666662+08:00||;True|2024-10-13T12:30:16.7294894+08:00||;True|2024-10-13T12:22:13.5740642+08:00||;True|2024-09-26T17:43:56.9592414+08:00||;True|2024-09-25T09:56:59.0722612+08:00||;True|2024-09-20T16:35:40.9416105+08:00||;True|2024-09-13T15:42:08.2824743+08:00||;True|2024-08-20T17:12:00.2924570+08:00||;True|2024-08-17T10:57:05.6670396+08:00||;True|2024-08-17T10:56:46.8068041+08:00||;True|2024-08-16T14:09:17.0526491+08:00||;True|2024-08-15T08:40:32.8134665+08:00||;True|2024-08-14T10:00:27.7017207+08:00||;True|2024-08-14T08:54:44.8284031+08:00||;True|2024-08-07T10:32:10.3689256+08:00||;True|2024-08-05T15:45:03.0864530+08:00||;True|2024-08-03T09:59:13.7916520+08:00||;True|2024-07-31T17:27:28.1965929+08:00||;True|2024-07-31T15:27:34.7943845+08:00||;True|2024-07-30T15:04:50.5849235+08:00||;True|2024-07-30T14:09:06.2877325+08:00||;True|2024-07-29T16:11:30.4493940+08:00||;True|2024-07-23T14:30:34.4591002+08:00||;True|2024-07-22T14:17:39.8186158+08:00||;True|2024-04-10T12:55:31.3963752+08:00||;True|2024-04-08T13:59:25.5487203+08:00||;True|2024-04-06T09:30:09.5350539+08:00||;True|2024-04-06T08:46:05.8814658+08:00||;True|2024-04-05T14:06:52.0448024+08:00||;True|2024-04-05T12:47:46.0561601+08:00||;True|2024-02-26T08:46:22.0988887+08:00||;True|2024-02-24T19:17:13.6770376+08:00||;True|2024-02-24T14:32:37.4450337+08:00||;True|2024-02-23T10:22:06.5150173+08:00||;True|2024-02-22T13:19:56.6997993+08:00||;True|2024-02-22T10:53:17.7929585+08:00||;True|2024-02-21T17:08:06.5553444+08:00||;True|2024-02-19T16:24:37.4912012+08:00||;True|2024-02-02T10:07:23.2726075+08:00||;True|2024-02-02T08:36:49.2904460+08:00||;True|2024-01-29T17:44:43.6800769+08:00||;True|2024-01-23T09:47:26.7811926+08:00||;True|2024-01-18T16:23:30.3373836+08:00||;True|2024-01-17T14:22:04.2552286+08:00||;True|2024-01-16T16:54:42.2316892+08:00||;True|2024-01-16T16:37:23.8028858+08:00||;True|2024-01-16T09:25:24.4007775+08:00||;True|2024-01-15T10:18:57.3362616+08:00||;True|2024-01-15T10:07:14.2044763+08:00||;True|2024-01-10T14:03:36.4451130+08:00||;True|2024-01-09T16:45:32.9601815+08:00||;True|2024-01-06T14:16:34.2732220+08:00||;True|2024-01-06T14:11:45.2134717+08:00||;True|2024-01-06T11:30:58.9198887+08:00||;</History>
    <History>True|2025-08-29T06:18:40.5594388Z||;True|2025-08-28T18:15:38.3971489+08:00||;True|2025-08-28T18:15:06.7333272+08:00||;True|2025-08-27T18:35:09.5980695+08:00||;True|2025-08-26T19:16:55.3617645+08:00||;True|2025-08-21T10:27:13.8176169+08:00||;True|2025-06-26T08:55:26.5542141+08:00||;True|2025-06-25T09:11:45.3214896+08:00||;True|2025-05-23T13:03:55.7681923+08:00||;True|2025-05-23T12:30:20.3979750+08:00||;True|2025-05-06T18:44:59.6980994+08:00||;True|2025-05-06T18:39:53.5994195+08:00||;True|2025-05-06T15:31:35.4635552+08:00||;True|2025-05-06T14:42:04.8934173+08:00||;True|2025-04-28T20:38:10.9382378+08:00||;True|2025-04-28T19:02:47.1742326+08:00||;True|2025-04-28T18:34:57.6622084+08:00||;True|2025-04-28T13:05:23.6608249+08:00||;True|2025-04-28T09:37:26.7461458+08:00||;True|2025-04-28T09:35:49.4586494+08:00||;True|2025-04-23T09:20:16.5810299+08:00||;True|2025-04-22T14:55:52.6602616+08:00||;True|2025-04-22T14:52:09.2986761+08:00||;True|2025-04-22T14:35:55.6073919+08:00||;True|2025-04-21T17:25:11.3783000+08:00||;True|2025-04-15T02:22:50.8483367+08:00||;True|2025-04-14T17:01:19.3567029+08:00||;True|2025-04-10T16:29:29.4614826+08:00||;True|2025-04-03T12:04:01.6354165+08:00||;True|2025-03-28T14:28:57.3291596+08:00||;True|2025-03-25T17:51:51.1941007+08:00||;True|2025-03-25T17:28:17.3219786+08:00||;True|2025-03-25T15:25:43.0061330+08:00||;True|2025-03-24T17:58:37.6820871+08:00||;True|2024-10-28T11:56:24.2694762+08:00||;True|2024-10-28T11:40:56.4512491+08:00||;True|2024-10-28T11:28:42.4509497+08:00||;True|2024-10-28T11:11:11.1286907+08:00||;True|2024-10-28T10:09:42.4378313+08:00||;True|2024-10-28T09:57:51.0792947+08:00||;True|2024-10-23T17:07:23.7741858+08:00||;True|2024-10-22T14:34:55.4526970+08:00||;True|2024-10-17T16:37:53.4763504+08:00||;True|2024-10-13T14:04:45.3666662+08:00||;True|2024-10-13T12:30:16.7294894+08:00||;True|2024-10-13T12:22:13.5740642+08:00||;True|2024-09-26T17:43:56.9592414+08:00||;True|2024-09-25T09:56:59.0722612+08:00||;True|2024-09-20T16:35:40.9416105+08:00||;True|2024-09-13T15:42:08.2824743+08:00||;True|2024-08-20T17:12:00.2924570+08:00||;True|2024-08-17T10:57:05.6670396+08:00||;True|2024-08-17T10:56:46.8068041+08:00||;True|2024-08-16T14:09:17.0526491+08:00||;True|2024-08-15T08:40:32.8134665+08:00||;True|2024-08-14T10:00:27.7017207+08:00||;True|2024-08-14T08:54:44.8284031+08:00||;True|2024-08-07T10:32:10.3689256+08:00||;True|2024-08-05T15:45:03.0864530+08:00||;True|2024-08-03T09:59:13.7916520+08:00||;True|2024-07-31T17:27:28.1965929+08:00||;True|2024-07-31T15:27:34.7943845+08:00||;True|2024-07-30T15:04:50.5849235+08:00||;True|2024-07-30T14:09:06.2877325+08:00||;True|2024-07-29T16:11:30.4493940+08:00||;True|2024-07-23T14:30:34.4591002+08:00||;True|2024-07-22T14:17:39.8186158+08:00||;True|2024-04-10T12:55:31.3963752+08:00||;True|2024-04-08T13:59:25.5487203+08:00||;True|2024-04-06T09:30:09.5350539+08:00||;True|2024-04-06T08:46:05.8814658+08:00||;True|2024-04-05T14:06:52.0448024+08:00||;True|2024-04-05T12:47:46.0561601+08:00||;True|2024-02-26T08:46:22.0988887+08:00||;True|2024-02-24T19:17:13.6770376+08:00||;True|2024-02-24T14:32:37.4450337+08:00||;True|2024-02-23T10:22:06.5150173+08:00||;True|2024-02-22T13:19:56.6997993+08:00||;True|2024-02-22T10:53:17.7929585+08:00||;True|2024-02-21T17:08:06.5553444+08:00||;True|2024-02-19T16:24:37.4912012+08:00||;True|2024-02-02T10:07:23.2726075+08:00||;True|2024-02-02T08:36:49.2904460+08:00||;True|2024-01-29T17:44:43.6800769+08:00||;True|2024-01-23T09:47:26.7811926+08:00||;True|2024-01-18T16:23:30.3373836+08:00||;True|2024-01-17T14:22:04.2552286+08:00||;True|2024-01-16T16:54:42.2316892+08:00||;True|2024-01-16T16:37:23.8028858+08:00||;True|2024-01-16T09:25:24.4007775+08:00||;True|2024-01-15T10:18:57.3362616+08:00||;True|2024-01-15T10:07:14.2044763+08:00||;True|2024-01-10T14:03:36.4451130+08:00||;True|2024-01-09T16:45:32.9601815+08:00||;True|2024-01-06T14:16:34.2732220+08:00||;True|2024-01-06T14:11:45.2134717+08:00||;True|2024-01-06T11:30:58.9198887+08:00||;</History>
    <LastFailureDetails />
  </PropertyGroup>
</Project>
MESApplication/bin/Debug/net8.0/MES.Service.dll
Binary files differ
MESApplication/bin/Debug/net8.0/MES.Service.pdb
Binary files differ
MESApplication/bin/Debug/net8.0/MESApplication.dll
Binary files differ
MESApplication/bin/Debug/net8.0/MESApplication.exe
Binary files differ
MESApplication/bin/Debug/net8.0/MESApplication.pdb
Binary files differ
MESApplication/bin/Debug/net8.0/MESApplication.xml
@@ -774,6 +774,13 @@
            </summary>
            <returns></returns>
        </member>
        <member name="M:MESApplication.Controllers.QC.SJController.GetReason(Newtonsoft.Json.Linq.JObject)">
            <summary>
            èŽ·å–è¡Œä¸è‰¯åŽŸå› 
            </summary>
            <param name="data"></param>
            <returns></returns>
        </member>
        <member name="M:MESApplication.Controllers.QC.SJController.UpdateQsItemIpiItemIsPass(Newtonsoft.Json.Linq.JObject)">
            <summary>
            æ›´æ–°QsItemIpiItem的IsPass值
@@ -792,6 +799,13 @@
            </summary>
            <returns></returns>
        </member>
        <member name="M:MESApplication.Controllers.QC.XJController.GetReason(Newtonsoft.Json.Linq.JObject)">
            <summary>
            èŽ·å–è¡Œä¸è‰¯åŽŸå› 
            </summary>
            <param name="data"></param>
            <returns></returns>
        </member>
        <member name="M:MESApplication.Controllers.SalesDeliveryNoticeController.GetList">
            <summary>
            èŽ·å–æ‰€æœ‰
MESApplication/bin/Release/net8.0/2508291420.zip
Binary files differ
MESApplication/bin/Release/net8.0/MES.Service.dll
Binary files differ
MESApplication/bin/Release/net8.0/MES.Service.pdb
Binary files differ
MESApplication/bin/Release/net8.0/MESApplication.dll
Binary files differ
MESApplication/bin/Release/net8.0/MESApplication.exe
Binary files differ
MESApplication/bin/Release/net8.0/MESApplication.pdb
Binary files differ
MESApplication/bin/Release/net8.0/publish/MES.Service.dll
Binary files differ
MESApplication/bin/Release/net8.0/publish/MES.Service.pdb
Binary files differ
MESApplication/bin/Release/net8.0/publish/MESApplication.dll
Binary files differ
MESApplication/bin/Release/net8.0/publish/MESApplication.exe
Binary files differ
MESApplication/bin/Release/net8.0/publish/MESApplication.pdb
Binary files differ