From 4c99aa7fb369e0ad735b93f0603f58c1535b1b49 Mon Sep 17 00:00:00 2001
From: cdk <2441919651@qq.com>
Date: 星期五, 19 十二月 2025 21:33:42 +0800
Subject: [PATCH] 增加一键调拨功能

---
 service/Warehouse/TransferOutManager.cs        |  216 ++++++++++++++++++++++++++++++++++-
 Controllers/Warehouse/TransferOutController.cs |   97 +++++++++++++++-
 2 files changed, 300 insertions(+), 13 deletions(-)

diff --git a/Controllers/Warehouse/TransferOutController.cs b/Controllers/Warehouse/TransferOutController.cs
index fdd53dd..11b4a58 100644
--- a/Controllers/Warehouse/TransferOutController.cs
+++ b/Controllers/Warehouse/TransferOutController.cs
@@ -1,10 +1,9 @@
-锘縰sing Microsoft.AspNetCore.Mvc;
+锘縰sing System.Dynamic;
+using Microsoft.AspNetCore.Mvc;
 using NewPdaSqlServer.Dto.service;
 using NewPdaSqlServer.service.@base;
 using NewPdaSqlServer.service.Warehouse;
 using NewPdaSqlServer.util;
-using System.Dynamic;
-using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
 
 namespace NewPdaSqlServer.Controllers.Warehouse;
 
@@ -110,12 +109,12 @@
     /// <response code="200">鎴愬姛鑾峰彇璋冩嫧鍑哄簱鍗曞彿鍒楄〃</response>
     /// <response code="400">鑾峰彇澶辫触</response>
     [HttpPost("GetTransferOutNoList")]
-    public ResponseResult GetTransferOutNoList(WarehouseQuery query)
+    public ResponseResult GetTransferOutNoList()
     {
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            resultInfos.tbBillList = _manager.GetTransferOutNoList(query,RequestInfo);
+            resultInfos.tbBillList = _manager.GetTransferOutNoList(RequestInfo);
             return new ResponseResult
             {
                 status = 0,
@@ -156,7 +155,7 @@
         {
             dynamic resultInfos = new ExpandoObject();
             resultInfos.tbBillList =
-                _manager.GetTransferOutDetailListByBillNo(query,RequestInfo);
+                _manager.GetTransferOutDetailListByBillNo(query, RequestInfo);
             return new ResponseResult
             {
                 status = 0,
@@ -295,4 +294,90 @@
     }
 
     #endregion
+
+    #region 涓�閿皟鎷ㄤ笟鍔�
+
+    /// <summary>
+    ///     涓�閿皟鎷ㄥ鐞�
+    /// </summary>
+    /// <param name="query">鏌ヨ鍙傛暟</param>
+    /// <returns>澶勭悊缁撴灉</returns>
+    /// <remarks>
+    ///     璇锋眰绀轰緥:
+    ///     POST /api/TransferOut/ScanYjdb
+    ///     {
+    ///     "billNo": "DB202401010001",  // 璋冩嫧鍗曞彿(蹇呭~)
+    ///     "userName": "admin",          // 鐢ㄦ埛鍚�(蹇呭~)
+    ///     "barcode": "BC001",          // 鏉$爜鍙�(蹇呭~)
+    ///     "sectionCode": "A1-01-01"     // 璋冨叆搴撲綅(蹇呭~)
+    ///     }
+    /// </remarks>
+    [HttpPost("ScanYjdb")]
+    public ResponseResult ScanYjdb([FromBody] WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = _manager.ScanYjdb(query);
+            if (resultInfos.tbBillList.result == "2")
+            {
+                return new ResponseResult
+                {
+                    status = Convert.ToInt32(resultInfos.tbBillList.result),
+                    message = resultInfos.tbBillList.strMsg,
+                    data = resultInfos
+                };
+            }
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     涓�閿皟鎷ㄥ鐞�
+    /// </summary>
+    /// <param name="query">鏌ヨ鍙傛暟</param>
+    /// <returns>澶勭悊缁撴灉</returns>
+    /// <remarks>
+    ///     璇锋眰绀轰緥:
+    ///     POST /api/TransferOut/ScanYjdb
+    ///     {
+    ///     "billNo": "DB202401010001",  // 璋冩嫧鍗曞彿(蹇呭~)
+    ///     "userName": "admin",          // 鐢ㄦ埛鍚�(蹇呭~)
+    ///     "barcode": "BC001",          // 鏉$爜鍙�(蹇呭~)
+    ///     "sectionCode": "A1-01-01"     // 璋冨叆搴撲綅(蹇呭~)
+    ///     }
+    /// </remarks>
+    [HttpPost("ScanYjdbCF")]
+    public ResponseResult ScanYjdbCF([FromBody] WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = new ExpandoObject();
+            resultInfos.tbBillList.printInfo = _mCf.getPrintInfo(query);
+            var scanResult = _manager.ScanYjdbCF(query);
+            resultInfos.tbBillList.cfBarInfo = _mCf.getCfInfo(scanResult);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    #endregion
 }
\ No newline at end of file
diff --git a/service/Warehouse/TransferOutManager.cs b/service/Warehouse/TransferOutManager.cs
index 5420cba..d142e59 100644
--- a/service/Warehouse/TransferOutManager.cs
+++ b/service/Warehouse/TransferOutManager.cs
@@ -1,11 +1,11 @@
-锘縰sing System.Data;
-using System.Data.SqlClient;
-using MES.Service.Modes;
+锘縰sing MES.Service.Modes;
 using NewPdaSqlServer.DB;
 using NewPdaSqlServer.Dto.service;
 using NewPdaSqlServer.entity;
 using NewPdaSqlServer.entity.Base;
 using SqlSugar;
+using System.Data;
+using System.Data.SqlClient;
 
 namespace NewPdaSqlServer.service.Warehouse;
 
@@ -19,7 +19,7 @@
     ///     鑾峰彇鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃
     /// </summary>
     /// <returns>鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃</returns>
-    public List<string> GetTransferOutNoList(WarehouseQuery query, dynamic RequestInfo)
+    public List<string> GetTransferOutNoList(dynamic RequestInfo)
     {
         var orgId = RequestInfo.OrgId;
 
@@ -47,6 +47,7 @@
             throw new Exception($"{ex.Message}");
         }
     }
+
 
     /// <summary>
     ///     鏍规嵁鍗曟嵁鍙疯幏鍙栧緟澶勭悊鐨勮皟鎷ㄥ嚭搴撴槑缁嗗垪琛�
@@ -88,7 +89,7 @@
 
             return new
             {
-                //tbBillList = result,
+                allList = blDetails,
                 blDetails = blDetails.Where(x => x.DSQty > 0).ToList(),
                 ysDetails = blDetails.Where(x => x.SQty > 0).ToList(),
                 Count = items.Count + ysitems.Count
@@ -274,7 +275,7 @@
 
                     var barcodeNum = parameters[2].Value.ToString();
                     var splitNum = parameters[3].Value.ToString();
-                    
+
                     var result = Convert.ToInt32(_intSum);
                     if (result <= 0) throw new Exception(_strMsg);
 
@@ -308,6 +309,112 @@
         }
     }
 
+
+    /// <summary>
+    ///     涓�閿皟鎷ㄥ鐞�
+    /// </summary>
+    /// <param name="query">鍖呭惈鍗曟嵁鍙枫�佺敤鎴峰悕銆佹潯鐮佸拰搴撲綅淇℃伅鐨勬煡璇㈠弬鏁�</param>
+    /// <returns>澶勭悊缁撴灉</returns>
+    public ProductionPickDto ScanYjdb(WarehouseQuery query)
+    {
+        // 瀹夊叏鑾峰彇dynamic灞炴�у�硷紝閬垮厤绌哄紩鐢ㄥ紓甯�
+        var p_bill_no = query.billNo?.ToString() ?? string.Empty;
+        var p_item_barcode = query.barcode?.ToString() ?? string.Empty;
+        var p_kw = query.sectionCode?.ToString() ?? string.Empty;
+        var c_user = query.userName?.ToString() ?? string.Empty;
+
+        // 楠岃瘉鍗曟嵁鍙�
+        if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
+        // 楠岃瘉鏉$爜
+        if (string.IsNullOrEmpty(p_item_barcode)) throw new Exception("璇锋壂鎻忔潯鐮侊紒");
+        // 楠岃瘉搴撲綅
+        if (string.IsNullOrEmpty(p_kw)) throw new Exception("璇烽�夋嫨搴撲綅锛�");
+        // 楠岃瘉鐢ㄦ埛鍚�
+        if (string.IsNullOrEmpty(c_user)) 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<MesInvItemStocks>()
+            .Where(x => x.ItemBarcode == p_item_barcode
+                        && x.Quantity > 0)
+            .First();
+        if (stock == null) throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{p_item_barcode}");
+
+        // 鏌ヨ鐗╂枡淇℃伅
+        var item = Db.Queryable<MesItems>()
+            .Where(x => x.Id == stock.ItemId)
+            .First();
+        if (item == null) throw new Exception("鏈壘鍒扮墿鏂�");
+
+        var _strMsg = "";
+        var _intSum = "";
+        var barcode_num = 0m;
+        var split_num = 0m;
+
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("[prc_pda_YJDB]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@outMsg", SqlDbType.NVarChar, 2000),
+                        new("@outSum", SqlDbType.Int),
+                        new("@barcode_num", SqlDbType.Decimal, 18) { Precision = 18, Scale = 10 },
+                        new("@split_num", SqlDbType.Decimal, 18) { Precision = 18, Scale = 10 },
+                        new("@c_user", c_user),
+                        new("@p_bill_no", p_bill_no),
+                        new("@p_item_barcode", p_item_barcode),
+                        new("@p_kw", p_kw)
+                    };
+                    parameters[0].Direction = ParameterDirection.Output;
+                    parameters[1].Direction = ParameterDirection.Output;
+                    parameters[2].Direction = ParameterDirection.Output;
+                    parameters[3].Direction = ParameterDirection.Output;
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    cmd.ExecuteNonQuery();
+
+                    _strMsg = parameters[0].Value?.ToString() ?? "";
+                    _intSum = parameters[1].Value?.ToString() ?? "";
+                    barcode_num = parameters[2].Value != DBNull.Value ? Convert.ToDecimal(parameters[2].Value) : 0;
+                    split_num = parameters[3].Value != DBNull.Value ? Convert.ToDecimal(parameters[3].Value) : 0;
+
+                    var result = Convert.ToInt32(_intSum);
+                    if (result <= 0 && result != 2) throw new Exception(_strMsg);
+
+                    // 杩斿洖澶勭悊缁撴灉
+                    var dto = new ProductionPickDto
+                    {
+                        itemNo = item.ItemNo,
+                        barcodeNum = barcode_num.ToString(),
+                        splitNum = split_num.ToString(),
+                        barcode = p_item_barcode,
+                        strMsg = _strMsg,
+                        result = _intSum
+                    };
+
+                    return dto;
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
     /// <summary>
     ///     鎵弿鏉$爜杩涜璋冩嫧鍏ュ簱澶勭悊
     /// </summary>
@@ -381,7 +488,7 @@
 
                     var barcodeNum = parameters[2].Value.ToString();
                     var outBillNo = parameters[3].Value.ToString();
-                    
+
                     var result = Convert.ToInt32(_intSum);
                     if (result <= 0) throw new Exception(_strMsg);
 
@@ -494,4 +601,99 @@
         }
     }
 
+    //涓�閿皟鎷ㄦ媶鍒�
+    public ProductionPickDto ScanYjdbCF(WarehouseQuery query)
+    {
+        // 瀹夊叏鑾峰彇dynamic灞炴�у�硷紝閬垮厤绌哄紩鐢ㄥ紓甯�
+        var p_bill_no = query.daa001?.ToString() ?? string.Empty;
+        var p_item_barcode = query.barcode?.ToString() ?? string.Empty;
+        var p_kw = query.sectionCode?.ToString() ?? string.Empty;
+        var c_user = query.userName?.ToString() ?? string.Empty;
+
+        // 楠岃瘉鍗曟嵁鍙�
+        if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
+        // 楠岃瘉鏉$爜
+        if (string.IsNullOrEmpty(p_item_barcode)) throw new Exception("璇锋壂鎻忔潯鐮侊紒");
+        // 楠岃瘉搴撲綅
+        if (string.IsNullOrEmpty(p_kw)) throw new Exception("璇烽�夋嫨搴撲綅锛�");
+        // 楠岃瘉鐢ㄦ埛鍚�
+        if (string.IsNullOrEmpty(c_user)) 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<MesInvItemStocks>()
+            .Where(x => x.ItemBarcode == p_item_barcode
+                        && x.Quantity > 0)
+            .First();
+        if (stock == null) throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{p_item_barcode}");
+
+        // 鏌ヨ鐗╂枡淇℃伅
+        var item = Db.Queryable<MesItems>()
+            .Where(x => x.Id == stock.ItemId)
+            .First();
+        if (item == null) throw new Exception("鏈壘鍒扮墿鏂�");
+
+        var _strMsg = "";
+        var _intSum = "";
+        var _cfBar = "";
+
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("[prc_pda_YJDB_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", c_user),
+                        new("@p_biLL_no", p_bill_no),
+                        new("@p_item_barcode", p_item_barcode),
+                        new("@num", query.Num),
+                        new("@p_kw", p_kw)
+                    };
+                    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.daa001,
+                        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