From 02b26bfaca24386f7b4f4a5e9f336812370ed49b Mon Sep 17 00:00:00 2001
From: cdk <2441919651@qq.com>
Date: 星期一, 22 十二月 2025 09:45:46 +0800
Subject: [PATCH] 获取BOM参数调整

---
 service/Warehouse/TransferOutManager.cs |  131 +++++++++++++++++++++++++++++++------------
 1 files changed, 93 insertions(+), 38 deletions(-)

diff --git a/service/Warehouse/TransferOutManager.cs b/service/Warehouse/TransferOutManager.cs
index 473982e..5420cba 100644
--- a/service/Warehouse/TransferOutManager.cs
+++ b/service/Warehouse/TransferOutManager.cs
@@ -19,34 +19,33 @@
     ///     鑾峰彇鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃
     /// </summary>
     /// <returns>鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃</returns>
-    public List<string> GetTransferOutNoList()
+    public List<string> GetTransferOutNoList(WarehouseQuery query, dynamic RequestInfo)
     {
-        // 鍏堜粠鏁版嵁搴撹幏鍙朤ransfer_Out_ETAIL琛ㄧ殑鏁版嵁
-        var transferOutDetails = Db.Queryable<MesDbckDetail>().ToList();
+        var orgId = RequestInfo.OrgId;
 
-        // 浣跨敤LINQ瀵硅幏鍙栫殑鏁版嵁杩涜鍒嗙粍鍜岀瓫閫�
-        // 绛涢�夋潯浠�:鐢宠鏁伴噺(sq)涓嶇瓑浜庡凡鎵暟閲�(ys)鐨勮褰�
-        var result = transferOutDetails
-            .GroupBy(x => x.Pid)
-            .Select(g => new
-            {
-                pid = g.Key,
-                sq = g.Sum(x => x.FQty), // 鐢宠鏁伴噺鍚堣
-                ys = g.Sum(x => x.SQty), // 璋冨嚭宸叉壂鏁伴噺鍚堣
-                rs = g.Sum(x => x.RQty), // 璋冨叆宸叉壂鏁伴噺鍚堣
-            })
-            .Where(x => !((x.sq ?? 0) == (x.ys ?? 0) && (x.sq ?? 0) == (x.rs ?? 0)))
-            .Select(x => x.pid)
-            .ToList();
+        if (orgId == null)
+            throw new Exception("缁勭粐涓嶅瓨鍦紒");
 
-        // 鏍规嵁pid鏌ヨ瀵瑰簲鐨勫嚭搴撳崟鍙�
-        var billNos = Db.Queryable<MesDbck>()
-            .Where(x => result.Contains(x.Id) && x.FApproveStatus == 1)
-            .OrderBy(x => x.FCreateDate)
-            .Select(x => x.FBillNo)
-            .ToList();
-
-        return billNos;
+        // 鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛�
+        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_dbck_list @pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
+            return list;
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"{ex.Message}");
+        }
     }
 
     /// <summary>
@@ -54,7 +53,61 @@
     /// </summary>
     /// <param name="query">鏌ヨ鍙傛暟,鍖呭惈鍗曟嵁鍙�</param>
     /// <returns>寰呭鐞嗙殑璋冩嫧鍑哄簱鏄庣粏鍒楄〃</returns>
-    public ProductionPickDto GetTransferOutDetailListByBillNo(
+    public dynamic GetTransferOutDetailListByBillNo(WarehouseQuery query, dynamic RequestInfo)
+    {
+        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_dbck_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();   // 宸叉壂鐗╂枡
+
+            return new
+            {
+                //tbBillList = result,
+                blDetails = blDetails.Where(x => x.DSQty > 0).ToList(),
+                ysDetails = blDetails.Where(x => x.SQty > 0).ToList(),
+                Count = items.Count + ysitems.Count
+            };
+        }
+        catch (Exception ex)
+        {
+            // 淇濈暀鍘熸湁寮傚父澶勭悊閫昏緫
+            throw new Exception($"{ex.Message}");
+        }
+    }
+
+
+    /// <summary>
+    ///     鏍规嵁鍗曟嵁鍙疯幏鍙栧緟澶勭悊鐨勮皟鎷ㄥ嚭搴撴槑缁嗗垪琛�
+    /// </summary>
+    /// <param name="query">鏌ヨ鍙傛暟,鍖呭惈鍗曟嵁鍙�</param>
+    /// <returns>寰呭鐞嗙殑璋冩嫧鍑哄簱鏄庣粏鍒楄〃</returns>
+    public ProductionPickDto GetTransferInDetailListByBillNo(
         WarehouseQuery query)
     {
         if (string.IsNullOrEmpty(query.billNo)) throw new Exception("璋冩嫧鍗曞彿涓虹┖");
@@ -65,7 +118,7 @@
 
         if (dbck.Count < 1) throw new Exception("璋冩嫧鍗曞彿涓嶅瓨鍦ㄦ垨鏈鏍革紒");
 
-        var sql2 = string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.FQty FQty,b.SQty SQty,b.FQty - b.SQty DSQty ,
+        var sql2 = string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.FQty FQty,b.SQty SQty,b.RQty RQty,b.SQty - b.RQty DSQty ,
        dbo.F_QX_GETRECODEPOTSE(B.FMATERIALID,'','','') as RecoKw
     FROM MES_DBCK_DETAIL B
     LEFT JOIN MES_DBCK A ON A.ID = B.pid
@@ -78,7 +131,7 @@
 
         var DS_list = womdabs.Where(s => s.DSQty > 0).ToList();
 
-        var YS_list = womdabs.Where(s => s.SQty > 0).ToList();
+        var YS_list = womdabs.Where(s => s.RQty > 0).ToList();
 
         //var p_bill_no = query.billNo;
 
@@ -270,14 +323,15 @@
             .Where(x => x.ItemBarcode == p_item_barcode)
             .First();
 
-        // 楠岃瘉鍗曟嵁鍙�
-        if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
 
-        // 鏌ヨ鍑哄簱鍗曞苟楠岃瘉鐘舵��
-        var transferOut = Db.Queryable<MesDbck>()
-            .Where(x => x.FBillNo == p_bill_no && x.FApproveStatus == 1)
-            .First();
-        if (transferOut == null) throw new Exception("鏈壘鍒拌皟鎷ㄧ敵璇峰崟鎴栬�呰皟鎷ㄧ敵璇峰崟娌″鏍�");
+        //// 楠岃瘉鍗曟嵁鍙�
+        //if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
+
+        //// 鏌ヨ鍑哄簱鍗曞苟楠岃瘉鐘舵��
+        //var transferOut = Db.Queryable<MesDbck>()
+        //    .Where(x => x.FBillNo == p_bill_no && x.FApproveStatus == 1)
+        //    .First();
+        //if (transferOut == null) throw new Exception("鏈壘鍒拌皟鎷ㄧ敵璇峰崟鎴栬�呰皟鎷ㄧ敵璇峰崟娌″鏍�");
 
         // 鏌ヨ鏉$爜搴撳瓨淇℃伅骞堕獙璇�
         var stock = Db.Queryable<MesDbckDetail>()
@@ -309,7 +363,7 @@
                         new("@outMsg", SqlDbType.NVarChar, 300),
                         new("@outSum", SqlDbType.NVarChar, 300),
                         new("@barcode_num", SqlDbType.NVarChar, 300),
-                        new("@split_num", SqlDbType.NVarChar, 300),
+                        new("@outBillNo", SqlDbType.NVarChar, 300),
                         new("@c_user", query.userName),
                         new("@p_bill_no", p_bill_no),
                         new("@p_item_barcode", p_item_barcode),
@@ -326,14 +380,15 @@
                     _intSum = parameters[1].Value.ToString();
 
                     var barcodeNum = parameters[2].Value.ToString();
-                    var splitNum = parameters[3].Value.ToString();
+                    var outBillNo = parameters[3].Value.ToString();
                     
                     var result = Convert.ToInt32(_intSum);
                     if (result <= 0) throw new Exception(_strMsg);
 
                     query.itemNo = item.ItemNo;
                     query.Num = Convert.ToDecimal(barcodeNum);
-                    query.Fum = Convert.ToDecimal(splitNum);
+                    //query.Fum = Convert.ToDecimal(splitNum);
+                    query.billNo = outBillNo;
 
                     // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏
                     return (query, GetDBCKDetal(query));

--
Gitblit v1.9.3