From 0e1e3de3a35c50438cd8d4bc9e5f6aefbb9b758b Mon Sep 17 00:00:00 2001
From: zyf <1071160500@qq.com>
Date: 星期五, 24 十月 2025 19:17:40 +0800
Subject: [PATCH] 首巡检创建单据、以及完成纠正措施单

---
 MES.Service/service/QC/SJService.cs |  221 ++++++++++++++++++++++++++++--------------------------
 1 files changed, 114 insertions(+), 107 deletions(-)

diff --git a/MES.Service/service/QC/SJService.cs b/MES.Service/service/QC/SJService.cs
index 3708add..e10516d 100644
--- a/MES.Service/service/QC/SJService.cs
+++ b/MES.Service/service/QC/SJService.cs
@@ -13,6 +13,9 @@
 using Tea;
 using MES.Service.Modes.DingAPI;
 using static System.Runtime.InteropServices.JavaScript.JSType;
+using System;
+using System.Security.Cryptography;
+using SqlSugar.Extensions;
 
 namespace MES.Service.service.QC;
 
@@ -149,18 +152,27 @@
     //                 result = "鏈娴�"
     //             }).ToList();
     // }
-    public List<QsItemIpiItem> SetQSItems(string itemNo)
+    public List<QsItemIpiItem> SetQSItems(string itemNo,string planName)
     {
         var db = SqlSugarHelper.GetInstance();
 
         var count = db.Queryable<MesQa>().Where(s => s.QsType == "1"
-            && s.ItemNo == itemNo && s.Fsubmit == 1).Count();
+            && s.ItemNo == itemNo &&s.QaPlan == planName && s.Fsubmit == 1).Count();
 
         if (count <= 0) return [];
 
-        return db
-            .Queryable<MesQualityStandard>()
-            .Where(b => b.QsType == "1" && b.ItemNo == itemNo).Select(
+        //鏂板鏍规嵁璁″垝鍚嶇О鏌ヨID
+        decimal? QsId = db.Queryable<MesQa>()
+                            .Where(s => s.QsType == "1"
+                                && s.ItemNo == itemNo
+                                && s.QaPlan == planName
+                                && s.Fsubmit == 1)
+                            .Select(s => s.Id)
+                            .First();
+
+        return db //鏍规嵁涓昏〃ID鏌ヨ
+        .Queryable<MesQualityStandard>()
+            .Where(b => b.Pid == QsId).Select(
                 b => new QsItemIpiItem
                 {
                     ProjName = b.ProjName,
@@ -185,7 +197,7 @@
                 }).ToList();
     }
 
-    public List<SJBadReason>? GetReason(string billNo)
+    public List<SJBadReason>? GetReason(string billNo)//绾犳鎺柦鍗曡幏鍙栦笉鑹俊鎭�
     {
         var db = SqlSugarHelper.GetInstance();
 
@@ -315,7 +327,7 @@
                 qsItemIpiItems.ForEach(s => s.Pid = item.gid);
                 return db.Insertable(qsItemIpiItems).ExecuteCommand();
             });
-        item.Items = getQSItems(item.gid, null);
+        //item.Items = getQSItems(item.gid, null);
 
         //娌℃湁涓婁笅闄愮殑妫�楠岄」鐩嚜鍔ㄧ洏鐐逛负鍚堟牸
         item.Items.ForEach(s =>
@@ -337,6 +349,45 @@
         item.Items = getQSItems(item.gid, null);
 
         return item;
+    }
+
+    public List<string?> GetItemProj(string? itemNo)
+    { //鑾峰彇鐗╂枡鎵�鏈夌殑妫�楠岃鍒掑悕绉�
+
+        var db = SqlSugarHelper.GetInstance();
+
+        var plans = db.Queryable<MesQa>().Where(a => a.ItemNo == itemNo && a.QsType == "1")
+                                .Select(s => s.QaPlan)
+                                .Distinct()
+                                .ToList();
+
+        return plans;
+    }
+
+    public (decimal?,string?, string?) CreateNew(string? DaaNo,string? userNo,string? planName)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        // 鍒涘缓鍙傛暟
+        var FitemNo = new SugarParameter("PI_NO", DaaNo);
+        var FuserNo = new SugarParameter("PI_USER", userNo);
+        var FplanName = new SugarParameter("P_PLAN_NAME", planName);
+
+
+        var FRes = new SugarParameter("po_result", null, true);            // 杈撳嚭鍙傛暟
+        var FMsg = new SugarParameter("po_Message", null, true);
+        var FBillNo = new SugarParameter("po_BILL_NO", null, true);
+
+        // 鎵ц瀛樺偍杩囩▼
+        db.Ado.UseStoredProcedure().GetDataTable("PRC_PQC_ITEM_INSERT_JK", FitemNo, FuserNo, FplanName, FRes, FMsg, FBillNo);
+
+        // 鑾峰彇杈撳嚭缁撴灉
+        var Res = Convert.ToInt32(FRes.Value);
+        var Msg = FMsg.Value?.ToString();
+        var BillNo = FBillNo.Value?.ToString();
+
+        Console.WriteLine($"缁撴灉: {Res}, 杩斿洖娑堟伅: {Msg},鍗曟嵁鍙凤細{BillNo}");
+
+        return (Res,Msg, BillNo);
     }
 
     public int SetQSItemDetail(QsItemIpiItemDetail detail)
@@ -727,8 +778,27 @@
         }
     }
 
-    public string DingJZCSD(JzcsdData InData)
+    public bool DingJZCSD(JzcsdData InData)
     {
+        if (string.IsNullOrWhiteSpace(InData.Imodel))
+            throw new Exception( "浜у搧鍨嬪彿涓嶈兘涓虹┖");
+
+        if (string.IsNullOrWhiteSpace(InData.selectedDeptID))
+            throw new Exception("璇烽�夋嫨鎺ユ敹閮ㄩ棬");
+
+        if (string.IsNullOrWhiteSpace(InData.selectedUserID))
+            throw new Exception("璇烽�夋嫨璐熻矗浜�");
+
+        if (string.IsNullOrWhiteSpace(InData.ReplyDate))
+            throw new Exception("鍥炲鏃ユ湡涓嶈兘涓虹┖");
+
+        if (string.IsNullOrWhiteSpace(InData.Reason))
+            throw new Exception("闂鎻忚堪涓嶈兘涓虹┖");
+
+        if (string.IsNullOrWhiteSpace(InData.selectedADept))
+            throw new Exception("瀹℃壒閮ㄩ棬涓嶈兘涓虹┖");
+
+
 
         var db = SqlSugarHelper.GetInstance();
 
@@ -749,7 +819,7 @@
             string accessToken = GetToken();
             if (string.IsNullOrEmpty(accessToken))
             {
-                return "鑾峰彇 Access Token 澶辫触";
+                throw new Exception("鑾峰彇 Access Token 澶辫触");
             }
 
             AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client client = CreateClient();
@@ -767,12 +837,6 @@
             闂鎻忚堪	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
             {
@@ -787,7 +851,7 @@
             {
                 //鎻愬嚭浜哄憳
                 Name = "InnerContactField_WY9BZDYT7W00",
-                Value = UserId,
+                Value = "[\"" + string.Join("\",\"", UserId) + "\"]",
             };
             AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues3 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
             {
@@ -805,7 +869,7 @@
             {
                 //璐熻矗浜�
                 Name = "InnerContactField_1I3FYOICN4N40",
-                Value = InData.selectedUserID
+                Value = "[\"" + string.Join("\",\"", InData.selectedUserID) + "\"]"
             };
             AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues6 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
             {
@@ -823,97 +887,31 @@
             {
                 //瀹℃壒閫夋嫨
                 Name = "DDSelectField_WE67NWABXM80",
-                Value = InData.selectedADeptID,
+                Value = InData.selectedADept,
             };
-            //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.StartProcessInstanceRequestFormComponentValues formComponentValues9 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
+            {
+                //鎻愬嚭閮ㄩ棬
+                Name = "DepartmentField_184EOWTFMJUK0",
+                Value = "975745197",//鍥哄畾涓篗ES閮ㄩ棬
+            };
+            AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues10 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
+            {
+                //浜у搧鍨嬪彿
+                Name = "TextField-K2AD4O5B",
+                Value = InData.Imodel,
+            };
+            
 
             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,
+                ProcessCode = "PROC-2752201A-3896-4CA7-82A1-ADBBE9F1B36A",
+                DeptId = 987012076,
                 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
+                 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>
             //{
@@ -938,24 +936,33 @@
                 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)}";
+                //var response = client.StartProcessInstanceWithOptions(startProcessInstanceRequest, startProcessInstanceHeaders, new RuntimeOptions());
+                //return $"閽夐拤宸ヤ綔娴佸疄渚嬪惎鍔ㄦ垚鍔�: {Newtonsoft.Json.JsonConvert.SerializeObject(response.Body)}";
+                return true;
             }
             catch (TeaException err)
             {
                 string requestContent = Newtonsoft.Json.JsonConvert.SerializeObject(startProcessInstanceRequest);
                 Debug.WriteLine("startProcessInstanceRequest鍐呭锛�");
                 Debug.WriteLine(startProcessInstanceRequest);
-                return $"TeaException: Code={err.Code}, Message={err.Message}";
+
+                throw new Exception(err.Message);
+                //return $"TeaException: Code={err.Code}, Message={err.Message}";
             }
-            catch (Exception _err)
+            //catch (Exception _err)
+            //{
+            //    return $"Exception: {_err.Message}";
+            //}
+
+            catch (Exception ex)
             {
-                return $"Exception: {_err.Message}";
+                throw new Exception(ex.Message);
             }
         }
         else
         {
-            return "鎮ㄤ笉鏄叕鍙告垚鍛樻垨杩樻湭琚姞鍏ュ埌鏁版嵁搴撲腑鎴栧悕瀛楀~鍐欓敊璇紝鏈壘鍒板尮閰嶇殑鐢ㄦ埛淇℃伅";
+            throw new Exception("鎮ㄤ笉鏄叕鍙告垚鍛樻垨杩樻湭琚姞鍏ュ埌鏁版嵁搴撲腑鎴栧悕瀛楀~鍐欓敊璇紝鏈壘鍒板尮閰嶇殑鐢ㄦ埛淇℃伅");
+            //return "鎮ㄤ笉鏄叕鍙告垚鍛樻垨杩樻湭琚姞鍏ュ埌鏁版嵁搴撲腑鎴栧悕瀛楀~鍐欓敊璇紝鏈壘鍒板尮閰嶇殑鐢ㄦ埛淇℃伅";
         }
     }
    

--
Gitblit v1.9.3