From 263e0e39c18a4ade744b4d1111fe8dc9de7875e8 Mon Sep 17 00:00:00 2001
From: zyf <1071160500@qq.com>
Date: 星期一, 29 九月 2025 17:11:20 +0800
Subject: [PATCH] 平板纠正措施单(推送部分暂未完成)

---
 MES.Service/service/QC/SJService.cs |  372 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 372 insertions(+), 0 deletions(-)

diff --git a/MES.Service/service/QC/SJService.cs b/MES.Service/service/QC/SJService.cs
index 555ec39..3708add 100644
--- a/MES.Service/service/QC/SJService.cs
+++ b/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 "鎮ㄤ笉鏄叕鍙告垚鍛樻垨杩樻湭琚姞鍏ュ埌鏁版嵁搴撲腑鎴栧悕瀛楀~鍐欓敊璇紝鏈壘鍒板尮閰嶇殑鐢ㄦ埛淇℃伅";
+        }
+    }
+   
 }
\ No newline at end of file

--
Gitblit v1.9.3