From 612b2285b823072809d811d456787432a3234fc3 Mon Sep 17 00:00:00 2001
From: zyf <1071160500@qq.com>
Date: 星期五, 21 十一月 2025 15:04:19 +0800
Subject: [PATCH] 首检巡检功能优化

---
 MES.Service/service/QC/SJService.cs |  286 +++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 176 insertions(+), 110 deletions(-)

diff --git a/MES.Service/service/QC/SJService.cs b/MES.Service/service/QC/SJService.cs
index 3708add..cfa9c93 100644
--- a/MES.Service/service/QC/SJService.cs
+++ b/MES.Service/service/QC/SJService.cs
@@ -13,6 +13,10 @@
 using Tea;
 using MES.Service.Modes.DingAPI;
 using static System.Runtime.InteropServices.JavaScript.JSType;
+using System;
+using System.Security.Cryptography;
+using SqlSugar.Extensions;
+using Masuit.Tools.Reflection;
 
 namespace MES.Service.service.QC;
 
@@ -112,7 +116,8 @@
                 Daa008 = a.Daa008,
                 LineName = a.LineName,
                 SaleOrder = ca.Caa015,
-                DepartName = d.Departmentname
+                DepartName = d.Departmentname,
+                PlanName = a.PlanName
             })
             .OrderBy(a => a.CreateTime, OrderByType.Desc);
         var items = data.ToPageList(queryObj.PageIndex, queryObj.Limit,ref totalCount);
@@ -149,18 +154,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 +199,7 @@
                 }).ToList();
     }
 
-    public List<SJBadReason>? GetReason(string billNo)
+    public List<SJBadReason>? GetReason(string billNo)//绾犳鎺柦鍗曡幏鍙栦笉鑹俊鎭�
     {
         var db = SqlSugarHelper.GetInstance();
 
@@ -308,17 +322,33 @@
             .Where(s => s.Gid == item.gid)
             .ExecuteCommand();
 
+
         var qsItemIpiItems = item.Items;
         SqlSugarHelper.UseTransactionWithOracle(
             db =>
             {
+                // 1. 璁剧疆鐖剁骇ID
                 qsItemIpiItems.ForEach(s => s.Pid = item.gid);
-                return db.Insertable(qsItemIpiItems).ExecuteCommand();
+
+                // 2. 鎻掑叆
+                db.Insertable(qsItemIpiItems).ExecuteCommand();
+
+                // 3. 閲嶆柊浠庢暟鎹簱鏌ヨ鎻掑叆鍚庣殑璁板綍锛堟寜 pid 鏌ヨ锛� 闃叉妫�楠岀粨鏋滄洿鏂板埌鏃ч」鐩笂
+                qsItemIpiItems = db.Queryable<QsItemIpiItem>()
+                                    .Where(x => x.Pid == item.gid)
+                                    .ToList();
+
+                // 鉁� 杩斿洖鍊间笉閲嶈锛屽彧瑕佷繚璇佷簨鍔℃彁浜ゅ嵆鍙�
+                return 1;
             });
-        item.Items = getQSItems(item.gid, null);
+
+
+
+
+        //item.Items = getQSItems(item.gid, null);
 
         //娌℃湁涓婁笅闄愮殑妫�楠岄」鐩嚜鍔ㄧ洏鐐逛负鍚堟牸
-        item.Items.ForEach(s =>
+        qsItemIpiItems.ForEach(s =>
         {
             if (s.MaxValue != null || s.StandardValue != null || s.MinValue != null)
             {
@@ -337,6 +367,57 @@
         item.Items = getQSItems(item.gid, null);
 
         return item;
+    }
+
+    public decimal SavePlan(decimal pid,string PlanName)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        var res = db.Updateable<QsItemIpiReq>()
+                          .SetColumns(a => a.QaPlan == PlanName)
+                          .Where(a => a.Id == pid)
+                          .ExecuteCommand();
+
+        return res;
+
+    }
+
+        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)
@@ -468,6 +549,24 @@
         detail.CreateBy = detail.UpdateBy;
 
         // withOracle += autoResult(detail);
+
+        var db = SqlSugarHelper.GetInstance();
+        // 鍒涘缓鍙傛暟
+        var FId= new SugarParameter("P_ID", detail.Gid);
+
+        // 杈撳嚭鍙傛暟
+        var FRes = new SugarParameter("c_result", null, true);
+        var FMsg = new SugarParameter("c_msg", null, true);
+
+        // 鎵ц瀛樺偍杩囩▼
+        db.Ado.UseStoredProcedure().GetDataTable("PRC_SJ_UPDATE_RESU", FId, FRes, FMsg);
+
+        // 鑾峰彇杈撳嚭缁撴灉
+        var Res = Convert.ToInt32(FRes.Value);
+        var Msg = FMsg.Value?.ToString();
+
+        Console.WriteLine($"缁撴灉: {Res}, 杩斿洖娑堟伅: {Msg}");
+
 
         return withOracle;
     }
@@ -604,6 +703,15 @@
     /// <returns>鏇存柊褰卞搷鐨勮鏁�</returns>
     public int UpdateQsItemIpiItemIsPass(decimal id, decimal isPass)
     {
+        SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemIpiItemDetail>()
+                .SetColumns(s => s.FcheckResu == isPass.ToString())
+                .SetColumns(s => s.Fstand == ((isPass == 1) ? "鈭�" : "0"))
+                .Where(s => s.Pid == id)
+                .ExecuteCommand();
+        });
+
         return SqlSugarHelper.UseTransactionWithOracle(db =>
         {
             return db.Updateable<QsItemIpiItem>()
@@ -611,6 +719,8 @@
                 .Where(s => s.Id == id)
                 .ExecuteCommand();
         });
+
+
     }
 
     /// <summary>
@@ -727,8 +837,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 +878,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 +896,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 +910,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 +928,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 +946,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 +995,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