From 248b2e117695c428d386cc1ae9257cd5771c6f6b Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期三, 15 十月 2025 11:22:42 +0800
Subject: [PATCH] 增加首检日志定位

---
 Services/MesCutterLedgerManager.cs |  124 +++++++++++++++++++++++++++++++++++++++--
 1 files changed, 117 insertions(+), 7 deletions(-)

diff --git a/Services/MesCutterLedgerManager.cs b/Services/MesCutterLedgerManager.cs
index 4fb4a59..02b21ce 100644
--- a/Services/MesCutterLedgerManager.cs
+++ b/Services/MesCutterLedgerManager.cs
@@ -5,6 +5,10 @@
 using System.Text;
 using Newtonsoft.Json;
 using SqlSugar;
+using System.Data;
+using System.Dynamic;
+using SystemDataDbType = System.Data.DbType;
+using Oracle.ManagedDataAccess.Client; // 鏂板锛氱洿鎺ヤ娇鐢� Oracle 瀹㈡埛绔互鏄惧紡浼犻�� RefCursor
 
 namespace PadApplication.Services;
 
@@ -14,19 +18,125 @@
 /// </summary>
 public class MesCutterLedgerManager : Repository<MesCutterLedger>
 {
-    private readonly MesQaItemsDetect02Manager
-    mesQaItemsDetect02Manager = new();
+    //private readonly MesQaItemsDetect02Manager
+    //mesQaItemsDetect02Manager = new();
 
     /// <summary>
     /// 鍒�鍏锋煡璇紙鏀寔缂栧彿鎴栧悕绉版ā绯婃煡璇級
+    /// 涓婃満銆佹姤搴熴�佺淮淇嚭搴撲笉鏌ヨ
     /// </summary>
     /// <param name="searchKey">鏌ヨ鍏抽敭瀛�</param>
-    /// <returns>鍒�鍏峰垪琛�</returns>
-    public List<MesCutterLedger> QueryTools(string searchKey)
+    /// <param name="pageIndex">椤电爜</param>
+    /// <param name="pageSize">姣忛〉澶у皬</param>
+    /// <returns>鍒�鍏锋煡璇㈢粨鏋�</returns>
+    public MesCutterLedger QueryTools(string searchKey, int pageIndex, int pageSize)
     {
-        return Db.Queryable<MesCutterLedger>()
+        var excludeTypes = new[] { "涓婃満", "鎶ュ簾", "缁翠慨鍑哄簱" };
+        var query = Db.Queryable<MesCutterLedger>()
+            .Where(t => !excludeTypes.Contains(t.CutterType))
             .WhereIF(!string.IsNullOrEmpty(searchKey),
-                t => t.CutterId.Contains(searchKey) || t.CutterName.Contains(searchKey))
-            .ToList();
+                t => t.CutterId.Contains(searchKey) || t.CutterName.Contains(searchKey));
+
+        var total = query.Count();
+        var tbBillList = query
+            .OrderBy(t => t.CutterId)
+            .ToPageList(pageIndex, pageSize, ref total); // 浣跨敤ToPageList鍒嗛〉
+
+        return new MesCutterLedger
+        {
+            tbBillList = tbBillList,
+            total = total
+        };
+    }
+
+    /// <summary>
+    ///     涓婁笅鍒�鎿嶄綔锛堜笂鍒�type=0锛屼笅鍒�type=1锛�
+    ///     浠呰礋璐e弬鏁拌浆鍙戯紝鎵�鏈夋暟鎹啓鍏ョ敱瀛樺偍杩囩▼瀹屾垚銆�
+    /// </summary>
+    /// <param name="machineNo">鏈哄彴缂栧彿</param>
+    /// <param name="toolNo">鍒�鍏风紪鍙�</param>
+    /// <param name="type">鎿嶄綔绫诲瀷锛堜笂鍒�銆佷笅鍒�锛�</param>
+    /// <param name="useLimit">浣跨敤涓婇檺</param>
+    /// <returns>瀛樺偍杩囩▼鎵ц缁撴灉</returns>
+    public object SubmitToolAction(string workOrderNo, string machineNo, string toolNo, string type, int? useLimit, decimal? sdjs = null, decimal? xdjs = null)
+    {
+        var parameters = new[]
+        {
+            new SugarParameter("V_WORK_ORDER_NO", workOrderNo),
+            new SugarParameter("V_MACHINE_NO", machineNo),
+            new SugarParameter("V_TOOL_NO", toolNo),
+            new SugarParameter("V_TYPE", type),
+            new SugarParameter("V_USE_LIMIT", useLimit ?? (object)DBNull.Value),
+            new SugarParameter("V_SDJS", sdjs ?? (object)DBNull.Value),
+            new SugarParameter("V_XDJS", xdjs ?? (object)DBNull.Value),
+            new SugarParameter("PO_OUTMSG", null) { Direction = ParameterDirection.Output, DbType = System.Data.DbType.String, Size = 200 },
+            new SugarParameter("PO_OUTSUM", null) { Direction = ParameterDirection.Output, DbType = System.Data.DbType.Int32 }
+        };
+        try
+        {
+            Db.Ado.UseStoredProcedure().SqlQuery<object>(
+                "PROC_TOOL_ACTION", parameters);
+            var outMsg = parameters[7].Value?.ToString();
+            var outSum = parameters[8].Value;
+            // 杩欓噷 outMsg 宸茬粡鍖呭惈浜嗗瓨鍌ㄨ繃绋嬫瘡姝ML鐨勮缁嗛敊璇俊鎭�
+            return new { outMsg, outSum };
+        }
+        catch (Exception ex)
+        {
+            // 鍙湁瀛樺偍杩囩▼鏈韩鎵ц寮傚父鎵嶄細杩涘叆杩欓噷
+            throw new Exception($"{ex.Message}");
+        }
+    }
+
+    /// <summary>
+    /// 鑾峰彇宸ュ崟琛ㄥ崟鏁版嵁锛堥�氳繃宸ュ崟缂栧彿鍜屾満鍙扮紪鍙锋煡璇級銆�
+    /// 浣跨敤 Oracle.ManagedDataAccess.Client 璋冪敤瀛樺偍杩囩▼骞惰鍙� REF CURSOR锛岃繑鍥炲姩鎬佸璞″垪琛ㄣ��
+    /// </summary>
+    public List<dynamic> GetFormData(string workOrderNo, string machineNo)
+    {
+        var result = new List<dynamic>();
+
+        var connStr = Db.Ado.Connection?.ConnectionString;
+        if (string.IsNullOrEmpty(connStr)) throw new Exception("鏃犳硶鑾峰彇鏁版嵁搴撹繛鎺ュ瓧绗︿覆銆�");
+
+        try
+        {
+            using var oracleConn = new OracleConnection(connStr);
+            using var cmd = oracleConn.CreateCommand();
+            cmd.CommandText = "PROC_GET_FORM_DATA";
+            cmd.CommandType = CommandType.StoredProcedure;
+
+            cmd.Parameters.Add("V_WORK_ORDER_NO", OracleDbType.Varchar2).Value =
+                string.IsNullOrEmpty(workOrderNo) ? (object)DBNull.Value : workOrderNo;
+            cmd.Parameters.Add("V_MACHINE_NO", OracleDbType.Varchar2).Value =
+                string.IsNullOrEmpty(machineNo) ? (object)DBNull.Value : machineNo;
+            var pCursor = cmd.Parameters.Add("PO_CURSOR", OracleDbType.RefCursor);
+            pCursor.Direction = ParameterDirection.Output;
+
+            oracleConn.Open();
+            using var reader = cmd.ExecuteReader();
+
+            while (reader.Read())
+            {
+                IDictionary<string, object> row = new ExpandoObject();
+                for (int i = 0; i < reader.FieldCount; i++)
+                {
+                    var name = reader.GetName(i);
+                    var val = reader.IsDBNull(i) ? null : reader.GetValue(i);
+                    row[name] = val;
+                }
+                result.Add(row);
+            }
+
+            return result;
+        }
+        catch (OracleException oex)
+        {
+            throw new Exception($"璋冪敤瀛樺偍杩囩▼ PROC_GET_FORM_DATA 澶辫触锛圤racleException锛夛細{oex.Message}");
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"璋冪敤瀛樺偍杩囩▼ PROC_GET_FORM_DATA 澶辫触锛歿ex.Message}");
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3