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

---
 service/Warehouse/MesItemBlManager.cs |  114 ++++++++++++++++++++++++++++----------------------------
 1 files changed, 57 insertions(+), 57 deletions(-)

diff --git a/service/Warehouse/MesItemBlManager.cs b/service/Warehouse/MesItemBlManager.cs
index c9b5ff5..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) // 闇�瑕佹媶鍒�
@@ -598,7 +605,7 @@
         WarehouseQuery query)
     {
 
-        // 杈撳叆鍙傛暟楠岃瘉锛堜繚鎸佷笉鍙橈級
+        // Validate input parameters
         if (string.IsNullOrEmpty(query.userName))
             throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒");
 
@@ -614,47 +621,41 @@
         if (string.IsNullOrEmpty(query.blNo))
             throw new Exception("琛ユ枡鍗曞彿涓嶈兘涓虹┖锛�");
 
-        // 鍑嗗瀛樺偍杩囩▼鍙傛暟
-        var outMsg = "";
-        var outSum = -1;
-        var outCfBar = "";
+        // 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)
+};
 
-        try
+        // 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)
         {
-            // 璋冪敤瀛樺偍杩囩▼
-            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", null, true),                // 杈撳嚭娑堟伅
-        new SugarParameter("@OUT_SUM", null, true),                // 鎵ц缁撴灉(1鎴愬姛,-1澶辫触)
-        new SugarParameter("@OUT_CF_BAR", null, true)              // 杈撳嚭鏂版潯鐮佺紪鍙�
-    };
-
-            // 鎵ц瀛樺偍杩囩▼
-            Db.Ado.UseStoredProcedure().ExecuteCommand("PRC_PDA_SCBLCL_CF", parameters);
-
-            // 鑾峰彇杈撳嚭鍙傛暟
-            outMsg = parameters.First(p => p.ParameterName == "@OUT_MSG").Value?.ToString();
-            outSum = Convert.ToInt32(parameters.First(p => p.ParameterName == "@OUT_SUM").Value);
-            outCfBar = parameters.First(p => p.ParameterName == "@OUT_CF_BAR").Value?.ToString();
-
-            // 澶勭悊瀛樺偍杩囩▼杩斿洖缁撴灉
-            if (outSum != 1)
-            {
-                throw new Exception(outMsg ?? "鎿嶄綔澶辫触");
-            }
-        }
-        catch (Exception ex)
-        {
-            throw new Exception(outMsg ?? ex.Message);
+            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
@@ -670,7 +671,6 @@
             })
             .ToList();
 
-        // 杩斿洖缁撴灉锛堟垚鍔熺姸鎬佸拰寰呭彂鏂欏垪琛級
         return (outSum == 1, pendingList);
 
         //if (string.IsNullOrEmpty(query.userName))

--
Gitblit v1.9.3