From 63b8880e08f489986edc9e24b09462ac916d7f72 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期四, 18 九月 2025 09:22:12 +0800
Subject: [PATCH] 受托退料:前端界面规范,列表与明细转为存储过程,添加组织隔离、拆分、库位列表、已扫待扫、完结功能

---
 service/Warehouse/MesSttlManager.cs |  185 ++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 154 insertions(+), 31 deletions(-)

diff --git a/service/Warehouse/MesSttlManager.cs b/service/Warehouse/MesSttlManager.cs
index 74f90d1..f19a1b9 100644
--- a/service/Warehouse/MesSttlManager.cs
+++ b/service/Warehouse/MesSttlManager.cs
@@ -8,6 +8,7 @@
 using OracleInternal.Sharding;
 using SqlSugar;
 using SqlSugar.Extensions;
+using System.Collections.Generic;
 using System.Data;
 using System.Data.SqlClient;
 using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
@@ -20,13 +21,33 @@
     ///     鑾峰彇鍙楁墭閫�鏂欑敵璇峰垪琛�
     /// </summary>
     /// <returns>鍙楁墭閫�鏂欑敵璇峰垪琛�</returns>
-    public List<string> GetSttlBillNo(WarehouseQuery query)
+    public List<string> GetSttlBillNo(WarehouseQuery query, dynamic RequestInfo)
     {
-        var list = Db.Queryable<MesShouTui>()
-            .Where(s => s.IsCheck == true && s.IsFinish == false)
-            .Select(s => s.BillNo).ToList();
+        var orgId = RequestInfo.OrgId;
 
-        return list;
+        if (orgId == null)
+            throw new Exception("缁勭粐涓嶅瓨鍦紒");
+
+        // 鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛�
+        var parameters = new[]
+        {
+        new SugarParameter("@pi_orgId", orgId),
+        new SugarParameter("@inP1", null),
+        new SugarParameter("@inP2", null),
+        new SugarParameter("@inP3", null),
+        new SugarParameter("@inP4", null)
+        };
+        try
+        {
+            // 杩斿洖鍗曞彿瀛楃涓插垪琛℅et_Qt_ck_List
+            var list = Db.Ado.SqlQuery<string>(
+                "EXEC prc_pda_sttl_list @pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
+            return list;
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"{ex.Message}");
+        }
     }
 
     /// <summary>
@@ -34,39 +55,65 @@
     /// </summary>
     /// <param name="query">浠撳簱鏌ヨ鍙傛暟</param>
     /// <returns>鐗╂枡鏄庣粏鍒楄〃</returns>
-    public List<ItemDetailModel> GetMesItemDetailByBillNo(
-        WarehouseQuery query)
+    public dynamic GetMesItemDetailByBillNo(WarehouseQuery query, dynamic RequestInfo)
     {
-        // 鍏宠仈鏌ヨ鐗╂枡琛ㄣ�佺墿鏂欐槑缁嗚〃鍜岀墿鏂欏熀纭�淇℃伅琛�
-        var mesItemTblDetails = Db
-            .Queryable<MesShouTui, MesShouTuiDetail, MesItems>(
-                (a, b, c) => new JoinQueryInfos(
-                    JoinType.Left,
-                    a.Guid == b.PGuid,
-                    JoinType.Left,
-                    b.FMaterialId == c.Id.ToString())
-            ).Where((a, b, c) => a.BillNo == query.billNo && a.IsCheck == true)
-            .Select<ItemDetailModel>((a, b, c) => new ItemDetailModel
+        if (string.IsNullOrEmpty(query.billNo))
+            throw new Exception("璇烽�夊崟鎹彿锛�");
+
+        if (query == null)
+            throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull");
+
+        if (string.IsNullOrEmpty(query.billNo?.ToString()))
+            throw new ArgumentException("鍗曟嵁鍙蜂笉鑳戒负绌�", nameof(query.billNo));
+
+        var orgId = RequestInfo.OrgId;
+
+        if (orgId == null)
+            throw new Exception("缁勭粐涓嶅瓨鍦紒");
+
+        // 鑾峰彇鏈畬鎴愮殑鍙戣揣閫氱煡鍗曟槑缁�
+        var parameters = new[]
+{
+        new SugarParameter("@billNo", query.billNo),
+        new SugarParameter("@pi_orgId",orgId),
+        new SugarParameter("@inP1", null),
+        new SugarParameter("@inP2", null),
+        new SugarParameter("@inP3", null),
+        new SugarParameter("@inP4", null)
+    };
+        try
+        {
+            List<dynamic>? blDetails = Db.Ado.SqlQuery<dynamic>(
+                "EXEC prc_pda_sttl_detailList @billNo,@pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
+            var items = blDetails.Where(x => x.DSQty > 0).ToList();    // 寰呮壂鐗╂枡
+            var ysitems = blDetails.Where(x => x.SQty > 0).ToList();   // 宸叉壂鐗╂枡
+
+            // 杩欓噷杩斿洖鎵�鏈夋槑缁嗗垪琛�
+            var result = blDetails.Select(b => new ItemDetailModel
             {
-                ItemNo = c.ItemNo,
-                ItemName = c.ItemName,
-                ItemModel = c.ItemModel,
-                FQty = b.FQty, // 鐢宠鏁伴噺
-                SQty = b.SQty, // 宸叉壂鏁伴噺
-                Pid = b.PGuid.ToString(),
+                ItemNo = b.ItemNo,
+                ItemName = b.ItemName,
+                ItemModel = b.ItemModel,
+                FQty = b.FQty,
+                SQty = b.SQty,
+                DSQty = b.DSQty,
+                Pid = b.Pid,
                 FMaterialId = b.FMaterialId,
-                Id = b.Guid.ToString()
+                Id = b.Id,
+                RecoKw=b.RecoKw,
+                ItemId = b.FMaterialId
             }).ToList();
-
-        // 绛涢�夊嚭寰呴��鏁伴噺澶т簬宸查��鏁伴噺鐨勮褰�
-        //var itemTblDetails = mesItemTblDetails
-        //    .Where(s => (s.Tld005 ?? 0) - (s.Tld006 ?? 0) > 0).ToList();
-
-        return mesItemTblDetails;
+            return result;
+        }
+        catch (Exception ex)
+        {
+            // 淇濈暀鍘熸湁寮傚父澶勭悊閫昏緫
+            throw new Exception($"{ex.Message}");
+        }
     }
 
     /// <summary>
-    /// 鍙楁墭閫�鏂欏叆搴�
+    /// 鍙楁墭閫�鏂�
     /// </summary>
     /// <param name="query"></param>
     /// <returns></returns>
@@ -136,4 +183,80 @@
             }
         }
     }
+    /// <summary>
+    ///     鍙楁墭閫�鏂欐潯鐮佹媶鍒� prc_rf_pda_prnt_zout_barcode2
+    /// </summary>
+    /// <param name="query">鏌ヨ鍙傛暟</param>
+    /// <returns>(鎴愬姛鏍囧織, 寰呭鐞嗗垪琛�)</returns>
+    /// <remarks>
+    ///     鍓嶅彴闇�瑕佷紶鍏ョ殑鍙傛暟:
+    ///     - userName: 鐢ㄦ埛鍚�(蹇呭~)
+    ///     - billNo: 宸ュ崟鍙�(蹇呭~)
+    ///     - barcode: 鐗╂枡鏉$爜(蹇呭~)
+    ///     - Num: 鍙戞枡鏁伴噺(蹇呭~,蹇呴』澶т簬0)
+    ///     - blNo: 鍙戣揣閫氱煡鍗曞彿(蹇呭~)
+    /// </remarks>
+    public ProductionPickDto SplitBarcode(WarehouseQuery query)
+    {
+        if (query.userName.IsNullOrEmpty()) throw new Exception("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖");
+        if (query.billNo.IsNullOrEmpty()) throw new Exception("鐢宠鍗曞彿涓嶅厑璁镐负绌�");
+        if (query.barcode.IsNullOrEmpty()) throw new Exception("鏉$爜涓嶅厑璁镐负绌�");
+
+        if (query.Num is null or 0) throw new Exception("鏉$爜鎷嗗垎鏁颁笉鍏佽涓虹┖鎴栬�呬负0");
+
+        var _strMsg = "";
+        var _intSum = "";
+        var _cfBar = "";//鎷嗗垎鍚庢潯鐮�
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("[prc_pda_STTL_CF]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@outMsg", SqlDbType.NVarChar, 2000),
+                        new("@outSum", SqlDbType.NVarChar, 300),
+                        new("@outCfBar", SqlDbType.NVarChar, 300),
+                        new("@c_user", query.userName),
+                        new("@p_biLL_no", query.billNo),
+                        new("@p_item_barcode", query.barcode),
+                        new("@NUM", query.Num)
+                    };
+                    parameters[0].Direction = ParameterDirection.Output;
+                    parameters[1].Direction = ParameterDirection.Output;
+                    parameters[2].Direction = ParameterDirection.Output;
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    cmd.ExecuteNonQuery();
+                    _strMsg = parameters[0].Value.ToString();
+                    _intSum = parameters[1].Value.ToString();
+                    _cfBar = parameters[2].Value.ToString();
+
+
+                    var result = Convert.ToInt32(_intSum);
+                    if (result <= 0) throw new Exception(_strMsg);
+
+                    var dto = new ProductionPickDto
+                    {
+                        daa001 = query.billNo,
+                        barcode = query.barcode,//鍘熸潯鐮�
+                        cfBarcode = _cfBar//鎷嗗垎鍚庢潯鐮�
+                    };
+
+                    return dto;
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3