From 7f21c52c4b834869fdedd948580a5ac8e5d28301 Mon Sep 17 00:00:00 2001
From: cnf <3200815559@qq.com>
Date: 星期四, 14 八月 2025 17:34:58 +0800
Subject: [PATCH] 领料模块

---
 service/Warehouse/MesItemBlManager.cs |  112 +++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 94 insertions(+), 18 deletions(-)

diff --git a/service/Warehouse/MesItemBlManager.cs b/service/Warehouse/MesItemBlManager.cs
index bf74ff4..93e4d24 100644
--- a/service/Warehouse/MesItemBlManager.cs
+++ b/service/Warehouse/MesItemBlManager.cs
@@ -132,29 +132,36 @@
         try
         {
             // 璋冪敤瀛樺偍杩囩▼
-            var parameters = new List<SqlParameter>
-    {
-        new SqlParameter("@c_user", query.userName),
-        new SqlParameter("@p_bill_no", query.billNo ?? string.Empty),
-        new SqlParameter("@p_item_barcode", query.barcode),
-        new SqlParameter("@p_bl_no", query.blNo),
-        new SqlParameter("@p_type", query.Type),
-        new SqlParameter("@outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output },
-        new SqlParameter("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output },
-        new SqlParameter("@barcode_num", SqlDbType.Decimal) { Direction = ParameterDirection.Output },
-        new SqlParameter("@split_num", SqlDbType.Decimal) { Direction = ParameterDirection.Output }
-    };
+            var parameters = new SqlParameter[]
+            {
+    new SqlParameter("@C_USER", SqlDbType.NVarChar, 100) { Value = query.userName ?? string.Empty },
+    new SqlParameter("@P_BILL_NO", SqlDbType.NVarChar, 50) { Value = query.billNo ?? string.Empty },
+    new SqlParameter("@P_ITEM_BARCODE", SqlDbType.NVarChar, 100) { Value = query.barcode ?? string.Empty },
+    new SqlParameter("@P_BL_NO", SqlDbType.NVarChar, 100) { Value = query.blNo ?? string.Empty },
+    new SqlParameter("@P_TYPE", SqlDbType.NVarChar, 20) { Value = query.Type ?? string.Empty },
+    new SqlParameter("@OUT_MSG", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output },
+    new SqlParameter("@OUT_SUM", SqlDbType.Int) { Direction = ParameterDirection.Output },
+    new SqlParameter("@BARCODE_NUM", SqlDbType.Decimal) {
+        Direction = ParameterDirection.Output,
+        Precision = 18,
+        Scale = 10
+    },
+    new SqlParameter("@SPLIT_NUM", SqlDbType.Decimal) {
+        Direction = ParameterDirection.Output,
+        Precision = 18,
+        Scale = 10
+    }
+            };
 
             // 鎵ц瀛樺偍杩囩▼
-            Db.Ado.ExecuteCommand(
-                "EXEC PRC_PDA_SCBLCL @c_user, @p_bill_no, @p_item_barcode, @p_bl_no, @p_type, @outMsg OUTPUT, @outSum OUTPUT, @barcode_num OUTPUT, @split_num OUTPUT",
-                parameters.ToArray());
+            string procedureName = "PRC_PDA_SCBLCL";
+            int res = DbHelperSQL.RunProcedure_NonQuery(procedureName, parameters);
 
             // 鑾峰彇杈撳嚭鍙傛暟
             outMsg = parameters[5].Value?.ToString() ?? "";
-            outSum = Convert.ToInt32(parameters[6].Value);
-            barcodeNum = Convert.ToDecimal(parameters[7].Value);
-            splitNum = Convert.ToDecimal(parameters[8].Value);
+            outSum = parameters[6].Value as int? ?? 0;  // 榛樿鍊兼牴鎹渶姹傝皟鏁�
+            barcodeNum = parameters[7].Value as decimal? ?? 0m;
+            splitNum = parameters[8].Value as decimal? ?? 0m;
 
             // 澶勭悊瀛樺偍杩囩▼杩斿洖鐨勭粨鏋�
             if (outSum == 2) // 闇�瑕佹媶鍒�
@@ -597,6 +604,75 @@
     public (bool success, List<MesItemBlDetail> pendingList) SplitBarcode(
         WarehouseQuery query)
     {
+
+        // Validate input parameters
+        if (string.IsNullOrEmpty(query.userName))
+            throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒");
+
+        if (string.IsNullOrEmpty(query.billNo))
+            throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
+
+        if (string.IsNullOrEmpty(query.barcode))
+            throw new Exception("璇锋壂鎻忔潯鐮侊紒");
+
+        if ((query.Num ?? 0) <= 0)
+            throw new Exception("璇疯緭鍏ユ纭殑鍙戞枡鏁伴噺锛�");
+
+        if (string.IsNullOrEmpty(query.blNo))
+            throw new Exception("琛ユ枡鍗曞彿涓嶈兘涓虹┖锛�");
+
+        // Prepare parameters for the stored procedure
+        var parameters = new List<SugarParameter>
+{
+    new SugarParameter("@C_USER", query.userName),
+    new SugarParameter("@P_BILL_NO", query.billNo),
+    new SugarParameter("@P_ITEM_BARCODE", query.barcode),
+    new SugarParameter("@P_BL_NO", query.blNo),
+    new SugarParameter("@P_TYPE", query.Type),
+    new SugarParameter("@NUM", query.Num),
+    new SugarParameter("@OUT_MSG", "", System.Data.DbType.String, ParameterDirection.Output),
+    new SugarParameter("@OUT_SUM", 0, System.Data.DbType.Int32, ParameterDirection.Output),
+    new SugarParameter("@OUT_CF_BAR", "", System.Data.DbType.String, ParameterDirection.Output)
+};
+
+        // Execute the stored procedure
+        Db.Ado.UseStoredProcedure().ExecuteCommand("PRC_PDA_SCBLCL_CF", parameters);
+
+        // Get output parameters
+        var outMsg = parameters.FirstOrDefault(p => p.ParameterName == "@OUT_MSG")?.Value?.ToString();
+        var outSum = Convert.ToInt32(parameters.FirstOrDefault(p => p.ParameterName == "@OUT_SUM")?.Value ?? -1);
+        var outCfBar = parameters.FirstOrDefault(p => p.ParameterName == "@OUT_CF_BAR")?.Value?.ToString();
+
+        // Handle the result
+        if (outSum == -1)
+        {
+            throw new Exception(outMsg ?? "鎿嶄綔澶辫触");
+        }
+
+        if (outSum == 2)
+        {
+            // Handle case where barcode needs to be split
+            // You might want to return the new barcode to the client
+        }
+
+        // Get pending list for the supplement order
+        var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) =>
+                new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
+            .Where((a, b) => a.BlNo == query.blNo
+                             && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
+            .Select((a, b) => new MesItemBlDetail
+            {
+                Bld012 = b.Bld012,
+                Bld002 = b.Bld002,
+                Bld003 = b.Bld003,
+                Bld004 = b.Bld004,
+                Bld007 = b.Bld007,
+                Bld008 = b.Bld008
+            })
+            .ToList();
+
+        return (outSum == 1, pendingList);
+
         //if (string.IsNullOrEmpty(query.userName))
         //    throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒");
 

--
Gitblit v1.9.3