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/TransferOutManager.cs        |  355 +++++--
 service/Warehouse/MesItemBlManager.cs          |  114 +-
 entity/Womdaahb.cs                             |  422 +++++++++
 Dto/service/ProductionPickDto.cs               |    1 
 service/Wom/WomdaahbManager.cs                 | 1090 ++++++++++++++++++++++++
 Controllers/Warehouse/TransferOutController.cs |   50 
 Controllers/Wom/WomdaahbController.cs          |  587 +++++++++++++
 7 files changed, 2,456 insertions(+), 163 deletions(-)

diff --git a/Controllers/Warehouse/TransferOutController.cs b/Controllers/Warehouse/TransferOutController.cs
index 314ce0f..e4a02de 100644
--- a/Controllers/Warehouse/TransferOutController.cs
+++ b/Controllers/Warehouse/TransferOutController.cs
@@ -1,6 +1,7 @@
 锘縰sing System.Dynamic;
 using Microsoft.AspNetCore.Mvc;
 using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.service.@base;
 using NewPdaSqlServer.service.Warehouse;
 using NewPdaSqlServer.util;
 
@@ -14,6 +15,8 @@
 public class TransferOutController : ControllerBase
 {
     private readonly TransferOutManager _manager = new();
+
+    private readonly MesPrintMangeer _mCf = new();
 
     #region 鍩虹CRUD
 
@@ -166,6 +169,30 @@
         }
     }
 
+
+    [HttpPost("GetTransferInDetailListByBillNo")]
+    public ResponseResult GetTransferInDetailListByBillNo(
+    [FromBody] WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList =
+                _manager.GetTransferInDetailListByBillNo(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
     /// <summary>
     ///     鎵弿鏉$爜杩涜璋冩嫧鍑哄簱澶勭悊
     /// </summary>
@@ -197,9 +224,16 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            var (form, items) = _manager.ScanMoveBarcode(query);
-            resultInfos.form = form;
-            resultInfos.items = items;
+            resultInfos.tbBillList = _manager.ScanMoveBarcode(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,
@@ -236,14 +270,16 @@
     /// </remarks>
     /// <response code="200">鍒嗗壊鎴愬姛</response>
     /// <response code="400">鍒嗗壊澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response>
-    [HttpPost("SplitBarcode")]
-    public ResponseResult SplitBarcode([FromBody] WarehouseQuery query)
+    [HttpPost("ScanCodeCF")]
+    public ResponseResult ScanCodeCF(WarehouseQuery query)
     {
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            var message = _manager.SplitBarcode(query);
-            resultInfos.tbBillList = message;
+            resultInfos.tbBillList = new ExpandoObject();
+            resultInfos.tbBillList.printInfo = _mCf.getPrintInfo(query);
+            var scanResult = _manager.ScanCodeCF(query);
+            resultInfos.tbBillList.cfBarInfo = _mCf.getCfInfo(scanResult);
             return new ResponseResult
             {
                 status = 0,
diff --git a/Controllers/Wom/WomdaahbController.cs b/Controllers/Wom/WomdaahbController.cs
new file mode 100644
index 0000000..779ca5a
--- /dev/null
+++ b/Controllers/Wom/WomdaahbController.cs
@@ -0,0 +1,587 @@
+锘縰sing System.Dynamic;
+using Microsoft.AspNetCore.Mvc;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.service.@base;
+using NewPdaSqlServer.service.Wom;
+using NewPdaSqlServer.util;
+
+namespace NewPdaSqlServer.Controllers.Wom;
+
+[ApiController]
+[Route("api/[controller]")]
+public class WomdaaController : ControllerBase
+{
+    private readonly WomdaaManager m = new();
+    private readonly MesPrintMangeer _mCf = new();
+
+    #region 鐢熶骇棰嗘枡
+
+    //GetProductionPickDaa001
+    /// <summary>
+    ///     妯$硦鏌ヨ宸ュ崟鍙峰苟杩斿洖
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetProductionPickDaa001")]
+    public ResponseResult GetProductionPickDaa001(WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetProductionPickDaa001(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //GetItemsByDaa001
+    /// <summary>
+    ///     鏍规嵁宸ュ崟鍙疯幏鍙栦唬棰嗙墿鏂欐槑缁�
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetItemsByDaa001")]
+    public ResponseResult GetItemsByDaa001(WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetItemsByDaa001(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //ScanCode
+    [HttpPost("ScanCode")]
+    public ResponseResult ScanCode(WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.ScanCode(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);
+        }
+    }
+
+    //ScanCodeCF
+    [HttpPost("ScanCodeCF")]
+    public ResponseResult ScanCodeCF(WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = new ExpandoObject();
+            //resultInfos.tbBillList.printInfo = _mCf.getPrintInfo(query);
+            var scanResult = m.ScanCodeCF(query);
+            resultInfos.tbBillList.cfBarInfo = _mCf.getCfInfo(scanResult);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鑾峰彇鎵�鏈�
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetList")]
+    public ResponseResult GetList()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetList();
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    /// <summary>
+    ///     鏍规嵁涓婚敭鑾峰彇
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetById")]
+    public ResponseResult GetById(int id)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetById(id);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鏍规嵁涓婚敭鍒犻櫎
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("DeleteByIds")]
+    public ResponseResult DeleteByIds([FromBody] object[] ids)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.DeleteByIds(ids);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     娣诲姞
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("Insert")]
+    public ResponseResult Add([FromBody] Womdaa data)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.Insert(data);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     娣诲姞杩斿洖鑷
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("InsertReturnIdentity")]
+    public ResponseResult InsertReturnIdentity([FromBody] Womdaa data)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.InsertReturnIdentity(data);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+    
+
+    /// <summary>
+    ///     淇敼
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("Update")]
+    public ResponseResult Update([FromBody] Womdaa data)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.Update(data);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+    #endregion
+
+    #region 鐜板満绠$悊
+
+
+    /// <summary>
+    ///     鎵弿娉ㄥ鐮侊紝鑾峰彇宸ュ崟鍜屾潯鐮佷俊鎭�
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("getZsBarInfo")]
+    public ResponseResult getZsBarInfo([FromBody] dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            // 鍏堝垵濮嬪寲tbBillList灞炴��
+            resultInfos.tbBillList = new ExpandoObject();
+            resultInfos.tbBillList.ZsBarInfo = m.getZsBarInfo(query);
+            resultInfos.tbBillList.Traceability = m.getTraceability(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    /// <summary>
+    ///     浜у搧缁戝畾锛岃拷婧爜鍜屾祦姘寸爜缁戝畾
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("ProductBinding")]
+    public ResponseResult ProductBinding([FromBody] dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            // 鍏堝垵濮嬪寲tbBillList灞炴��
+            resultInfos.tbBillList = new ExpandoObject();
+            resultInfos.tbBillList = m.ProductBinding(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鑾峰彇鍗℃澘淇℃伅
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("getKbBarInfo")]
+    public ResponseResult getKbBarInfo([FromBody] dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            // 鍏堝垵濮嬪寲tbBillList灞炴��
+            resultInfos.tbBillList = new ExpandoObject();
+            resultInfos.tbBillList.KbBarInfo = m.getKbBarInfo(query);
+            resultInfos.tbBillList.KbBarMxInfo = m.getKbBarMxInfo(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鑾峰彇绠辩爜淇℃伅
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("getXBarInfo")]
+    public ResponseResult getXBarInfo([FromBody] dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            // 鍏堝垵濮嬪寲tbBillList灞炴��
+            resultInfos.tbBillList = new ExpandoObject();
+            resultInfos.tbBillList.XBarInfo = m.getXBarInfo(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     缁戝畾绠辩爜涓庢墭鏉跨爜
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("submitAllChecked")]
+    public ResponseResult submitAllChecked([FromBody] dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            // 鍏堝垵濮嬪寲tbBillList灞炴��
+            resultInfos.tbBillList = new ExpandoObject();
+            resultInfos.tbBillList = m.submitAllChecked(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鏍稿閫佹
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("submitInspection")]
+    public ResponseResult submitInspection([FromBody] dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            // 鍏堝垵濮嬪寲tbBillList灞炴��
+            resultInfos.tbBillList = new ExpandoObject();
+            resultInfos.tbBillList = m.SubmitKbInspection(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //GetItemsXcsl
+    /// <summary>
+    ///     鏍规嵁宸ュ崟鍙疯幏鍙栧緟鏀舵枡鐗╂枡鏄庣粏
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetItemsXcsl")]
+    public ResponseResult GetItemsXcsl(WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetItemsXcsl(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    //GetItemsXcsl
+    /// <summary>
+    ///     鐗╂枡鏉$爜鏀舵枡
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("ScanXcsl")]
+    public ResponseResult ScanXcsl(dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.ScanXcsl(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //GetItemsXcsl
+    /// <summary>
+    ///     鏍规嵁绾夸綋鑾峰彇浠櫒閲嶉噺
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetWeightByXt")]
+    public ResponseResult GetWeightByXt(dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetWeightByXt(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    /// <summary>
+    /// 鐜板満鏀舵枡鑾峰彇鍙�夊伐鍗曚俊鎭�
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    [HttpPost("GetXcslDaa")]
+    public ResponseResult GetXcslDaa([FromBody] dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetXcslDaa(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    //GetItemsXctl
+    /// <summary>
+    ///     鏍规嵁宸ュ崟鍙疯幏鍙栧緟鎶曟枡鐗╂枡鏄庣粏
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetItemsXctl")]
+    public ResponseResult GetItemsXctl(WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetItemsXctl(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //GetItemsXcsl
+    /// <summary>
+    ///     鐗╂枡鏉$爜鎶曟枡
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("ScanXctl")]
+    public ResponseResult ScanXctl(dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.ScanXctl(query);
+            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/Dto/service/ProductionPickDto.cs b/Dto/service/ProductionPickDto.cs
index 935b3a2..518aaaf 100644
--- a/Dto/service/ProductionPickDto.cs
+++ b/Dto/service/ProductionPickDto.cs
@@ -6,6 +6,7 @@
 public class ProductionPickDto
 {
     public string? ItemModel { get; set; }
+    public string? itemNo { get; set; }
     public string? PlanNo { get; set; }
     public string? daa001 { get; set; }
 
diff --git a/entity/Womdaahb.cs b/entity/Womdaahb.cs
new file mode 100644
index 0000000..edf9b93
--- /dev/null
+++ b/entity/Womdaahb.cs
@@ -0,0 +1,422 @@
+锘縰sing SqlSugar;
+
+namespace NewPdaSqlServer.entity;
+
+/// <summary>
+/// </summary>
+[SugarTable("WOMDAAHB")]
+public class Womdaahb
+{
+    /// <summary>
+    ///     榛樿鍊�: (newid())
+    /// </summary>
+    [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
+    public Guid Guid { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [SugarColumn(ColumnName = "pbaGuid")]
+    public Guid? PbaGuid { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [SugarColumn(ColumnName = "caaGuid")]
+    public Guid? CaaGuid { get; set; }
+
+    ///// <summary>
+    /////     鑷鍒�
+    ///// </summary>
+    //[SugarColumn(ColumnName = "id")]
+    //public int? Id { get; set; }
+
+    ///// <summary>
+    /////     鎺掍骇ID
+    ///// </summary>
+    //[SugarColumn(ColumnName = "pid")]
+    //public int? Pid { get; set; }
+
+    /// <summary>
+    ///     鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "daa001")]
+    public string? Daa001 { get; set; }
+
+    /// <summary>
+    ///     浜у搧ID
+    /// </summary>
+    [SugarColumn(ColumnName = "daa002")]
+    public string? Daa002 { get; set; }
+
+    /// <summary>
+    ///     浜у搧鍚嶇О
+    /// </summary>
+    [SugarColumn(ColumnName = "daa003")]
+    public string? Daa003 { get; set; }
+
+    /// <summary>
+    ///     浜у搧瑙勬牸
+    /// </summary>
+    [SugarColumn(ColumnName = "daa004")]
+    public string? Daa004 { get; set; }
+
+    /// <summary>
+    ///     鍗曚綅
+    /// </summary>
+    [SugarColumn(ColumnName = "daa005")]
+    public string? Daa005 { get; set; }
+
+    /// <summary>
+    ///     ERP棰勮寮�宸ユ椂闂�
+    /// </summary>
+    [SugarColumn(ColumnName = "daa006")]
+    public DateTime? Daa006 { get; set; }
+
+    /// <summary>
+    ///     ERP棰勮瀹屽伐鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "daa007")]
+    public DateTime? Daa007 { get; set; }
+
+    /// <summary>
+    ///     宸ュ崟鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "daa008")]
+    public int? Daa008 { get; set; }
+
+    /// <summary>
+    ///     澶囨敞
+    /// </summary>
+    [SugarColumn(ColumnName = "daa009")]
+    public string? Daa009 { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "daa010")]
+    public int? Daa010 { get; set; }
+
+    /// <summary>
+    ///     宸茬敓浜ч噺
+    /// </summary>
+    [SugarColumn(ColumnName = "daa011")]
+    public int? Daa011 { get; set; }
+
+    /// <summary>
+    ///     鎶ュ簾鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "daa012")]
+    public int? Daa012 { get; set; }
+
+    /// <summary>
+    ///     宸ヤ綔杞﹂棿
+    /// </summary>
+    [SugarColumn(ColumnName = "daa013")]
+    public string? Daa013 { get; set; }
+
+    /// <summary>
+    ///     鎶曟枡鍗曞崟鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "daa014")]
+    public string? Daa014 { get; set; }
+
+    /// <summary>
+    ///     鐢熶骇绾垮埆
+    /// </summary>
+    [SugarColumn(ColumnName = "daa015")]
+    public string? Daa015 { get; set; }
+
+    /// <summary>
+    ///     瀹為檯寮�宸ユ棩
+    /// </summary>
+    [SugarColumn(ColumnName = "daa016")]
+    public DateTime? Daa016 { get; set; }
+
+    /// <summary>
+    ///     瀹為檯瀹屽伐鏃�
+    /// </summary>
+    [SugarColumn(ColumnName = "daa017")]
+    public DateTime? Daa017 { get; set; }
+
+    /// <summary>
+    ///     宸ュ崟鐘舵��
+    /// </summary>
+    [SugarColumn(ColumnName = "daa018")]
+    public string? Daa018 { get; set; }
+
+    /// <summary>
+    ///     榻愬鐘舵��
+    /// </summary>
+    [SugarColumn(ColumnName = "daa019")]
+    public string? Daa019 { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳鐮�
+    /// </summary>
+    [SugarColumn(ColumnName = "fstatus")]
+    public int? Fstatus { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnName = "check_date")]
+    public DateTime? CheckDate { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "check_user")]
+    public string? CheckUser { get; set; }
+
+    /// <summary>
+    ///     绾垮埆缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "daa020")]
+    public string? Daa020 { get; set; }
+
+    /// <summary>
+    ///     浠诲姟鍗曞崟鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "daa021")]
+    public string? Daa021 { get; set; }
+
+    /// <summary>
+    ///     閫氱煡澶囨枡锛�0-鏈�氱煡锛�1-閫氱煡
+    ///     榛樿鍊�: ((0))
+    /// </summary>
+    [SugarColumn(ColumnName = "daa022")]
+    public int? Daa022 { get; set; }
+
+    /// <summary>
+    ///     鐢熶骇搴忓彿
+    /// </summary>
+    [SugarColumn(ColumnName = "daa023")]
+    public int? Daa023 { get; set; }
+
+    /// <summary>
+    ///     鎺掍骇鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnName = "daa024")]
+    public string? Daa024 { get; set; }
+
+    /// <summary>
+    ///     棣栦欢鏄惁妫�楠�1-妫�楠岋紝0鏈楠�
+    /// </summary>
+    [SugarColumn(ColumnName = "daa025")]
+    public string? Daa025 { get; set; }
+
+    /// <summary>
+    ///     棣栦欢妫�楠岀粨鏋�
+    /// </summary>
+    [SugarColumn(ColumnName = "daa026")]
+    public string? Daa026 { get; set; }
+
+    /// <summary>
+    ///     宸叉姤妫�锛�0-鏈姤妫�锛�1-宸叉姤妫�
+    /// </summary>
+    [SugarColumn(ColumnName = "is_reportcheck")]
+    public int? IsReportcheck { get; set; }
+
+    /// <summary>
+    ///     鎶ユ浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "usname")]
+    public string? Usname { get; set; }
+
+    /// <summary>
+    ///     鎶ユ鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "reporttime")]
+    public DateTime? Reporttime { get; set; }
+
+    /// <summary>
+    ///     鏈哄彴缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "machine_no")]
+    public string? MachineNo { get; set; }
+
+    /// <summary>
+    ///     澶囨枡瀹屾垚1-瀹屾垚锛�0鏈畬鎴�
+    /// </summary>
+    [SugarColumn(ColumnName = "daa027")]
+    public int? Daa027 { get; set; }
+
+    /// <summary>
+    ///     澶囨枡瀹屾垚鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "daa028")]
+    public string? Daa028 { get; set; }
+
+    /// <summary>
+    ///     鏍囧噯宸ユ椂
+    /// </summary>
+    [SugarColumn(ColumnName = "prod_hour")]
+    public int? ProdHour { get; set; }
+
+    /// <summary>
+    ///     鍗曚汉灏忔椂浜ц兘
+    /// </summary>
+    [SugarColumn(ColumnName = "person_hour_capacity")]
+    public int? PersonHourCapacity { get; set; }
+
+    /// <summary>
+    ///     鐞嗚鏍囦骇
+    /// </summary>
+    [SugarColumn(ColumnName = "the_capacity")]
+    public int? TheCapacity { get; set; }
+
+    /// <summary>
+    ///     璁″垝鐢ㄤ汉鏁�
+    /// </summary>
+    [SugarColumn(ColumnName = "plan_personnel")]
+    public int? PlanPersonnel { get; set; }
+
+    /// <summary>
+    ///     璁″垝鏍囧噯浜ц兘
+    /// </summary>
+    [SugarColumn(ColumnName = "plan_capacity")]
+    public int? PlanCapacity { get; set; }
+
+    /// <summary>
+    ///     鐞嗚鐢ㄦ椂/M
+    /// </summary>
+    [SugarColumn(ColumnName = "the_min")]
+    public int? TheMin { get; set; }
+
+    /// <summary>
+    ///     鐞嗚鐢ㄦ椂/H
+    /// </summary>
+    [SugarColumn(ColumnName = "the_hour")]
+    public int? TheHour { get; set; }
+
+    /// <summary>
+    ///     绾夸綋绫诲埆
+    /// </summary>
+    [SugarColumn(ColumnName = "line_type")]
+    public string? LineType { get; set; }
+
+    /// <summary>
+    ///     鏍囧噯浜烘暟
+    /// </summary>
+    [SugarColumn(ColumnName = "personnel")]
+    public int? Personnel { get; set; }
+
+    /// <summary>
+    ///     鎹㈢嚎鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "change_line_time")]
+    public int? ChangeLineTime { get; set; }
+
+    /// <summary>
+    ///     浼戞伅鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "rest_time")]
+    public int? RestTime { get; set; }
+
+    /// <summary>
+    ///     鎺掍骇搴忓彿
+    /// </summary>
+    [SugarColumn(ColumnName = "schedule_order")]
+    public int? ScheduleOrder { get; set; }
+
+    /// <summary>
+    ///     MES棰勮寮�宸ユ椂闂�
+    /// </summary>
+    [SugarColumn(ColumnName = "mes_start_prod")]
+    public DateTime? MesStartProd { get; set; }
+
+    /// <summary>
+    ///     MES棰勮瀹屽伐鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "mes_end_prod")]
+    public DateTime? MesEndProd { get; set; }
+
+    /// <summary>
+    ///     鎺掍骇鎺ㄩ�佹爣璇�
+    /// </summary>
+    [SugarColumn(ColumnName = "prodts")]
+    public int? Prodts { get; set; }
+
+    /// <summary>
+    ///     棰勮澶囨枡鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "prepare_time")]
+    public DateTime? PrepareTime { get; set; }
+
+    /// <summary>
+    ///     鎻掍欢鎶曞叆浜烘暟
+    /// </summary>
+    [SugarColumn(ColumnName = "cj_worker")]
+    public int? CjWorker { get; set; }
+
+    /// <summary>
+    ///     鎻掍欢璁″垝鎶曞叆浜烘暟
+    /// </summary>
+    [SugarColumn(ColumnName = "p_cj_worker")]
+    public int? PCjWorker { get; set; }
+
+    /// <summary>
+    ///     鎻掍欢鏃ヤ骇閲�
+    /// </summary>
+    [SugarColumn(ColumnName = "cj_daily_out")]
+    public int? CjDailyOut { get; set; }
+
+    /// <summary>
+    ///     鎻掍欢鏍囧噯宸ユ椂
+    /// </summary>
+    [SugarColumn(ColumnName = "cj_std_hour")]
+    public int? CjStdHour { get; set; }
+
+    /// <summary>
+    ///     閿$剨鎶曞叆浜烘暟
+    /// </summary>
+    [SugarColumn(ColumnName = "hx_worker")]
+    public int? HxWorker { get; set; }
+
+    /// <summary>
+    ///     閿$剨璁″垝鎶曞叆浜烘暟
+    /// </summary>
+    [SugarColumn(ColumnName = "p_hx_worker")]
+    public int? PHxWorker { get; set; }
+
+    /// <summary>
+    ///     閿$剨鏃ヤ骇閲�
+    /// </summary>
+    [SugarColumn(ColumnName = "hx_daily_out")]
+    public int? HxDailyOut { get; set; }
+
+    /// <summary>
+    ///     閿$剨鏍囧噯宸ユ椂
+    /// </summary>
+    [SugarColumn(ColumnName = "hx_std_hour")]
+    public int? HxStdHour { get; set; }
+
+    /// <summary>
+    ///     鎻掍欢鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "cj_num")]
+    public int? CjNum { get; set; }
+
+    /// <summary>
+    ///     瀹㈡埛
+    /// </summary>
+    [SugarColumn(ColumnName = "cust")]
+    public string? Cust { get; set; }
+
+    /// <summary>
+    ///     鏄惁棣栨
+    /// </summary>
+    [SugarColumn(ColumnName = "IS_SJ")]
+    public int? IsSj { get; set; }
+
+    /// <summary>
+    ///     浜у搧缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "daa029")]
+    public string? Daa029 { get; set; }
+
+    /// <summary>
+    ///     瀹為檯绾夸綋缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "sj_xt")]
+    public string? SjXt { get; set; }
+}
\ No newline at end of file
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))
diff --git a/service/Warehouse/TransferOutManager.cs b/service/Warehouse/TransferOutManager.cs
index 06d5955..34119aa 100644
--- a/service/Warehouse/TransferOutManager.cs
+++ b/service/Warehouse/TransferOutManager.cs
@@ -42,6 +42,7 @@
         // 鏍规嵁pid鏌ヨ瀵瑰簲鐨勫嚭搴撳崟鍙�
         var billNos = Db.Queryable<MesDbck>()
             .Where(x => result.Contains(x.Id) && x.FApproveStatus == 1)
+            .OrderBy(x => x.FCreateDate)
             .Select(x => x.FBillNo)
             .ToList();
 
@@ -53,41 +54,144 @@
     /// </summary>
     /// <param name="query">鏌ヨ鍙傛暟,鍖呭惈鍗曟嵁鍙�</param>
     /// <returns>寰呭鐞嗙殑璋冩嫧鍑哄簱鏄庣粏鍒楄〃</returns>
-    public List<ItemDetailModel> GetTransferOutDetailListByBillNo(
+    public ProductionPickDto GetTransferOutDetailListByBillNo(
         WarehouseQuery query)
     {
-        var p_bill_no = query.billNo;
+        if (string.IsNullOrEmpty(query.billNo)) throw new Exception("璋冩嫧鍗曞彿涓虹┖");
 
-        // 鏍规嵁SQL鏌ヨ鏉′欢鑾峰彇寰呭鐞嗙殑鍑哄簱鏄庣粏
-        // 鍏宠仈鏌ヨTransferOutDetail銆乀ransferOut鍜孧esItems涓夊紶琛�
-        // 绛涢�夋潯浠�:鏈畬鎴愭暟閲忓ぇ浜�0涓斿崟鎹凡瀹℃牳
-        var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>(
-                (b, a, s) => new JoinQueryInfos(
-                    JoinType.Left, b.Pid == a.Id,
-                    JoinType.Left, b.FMaterialId == s.Id.ToString()))
-            .Where((b, a, s) =>
-                !((b.FQty ?? 0) == (b.SQty ?? 0) && (b.FQty ?? 0) == (b.RQty ?? 0))
-                && a.FBillNo == p_bill_no // 鍖归厤鍗曟嵁鍙�
-                && a.FApproveStatus == 1) // 鍗曟嵁宸插鏍�
-            .OrderBy((b, a, s) => s.ItemNo)
-            .Select((b, a, s) => new ItemDetailModel
-            {
-                ItemNo = s.ItemNo,
-                ItemName = s.ItemName,
-                ItemModel = s.ItemModel,
-                FQty = b.FQty, // 鐢宠鏁伴噺
-                SQty = b.SQty, // 宸叉壂鏁伴噺
-                RQty = b.RQty, // 宸叉壂鏁伴噺
-                // 淇濈暀鍏朵粬蹇呰瀛楁...
-                Pid = b.Pid.ToString(),
-                FMaterialId = b.FMaterialId,
-                Id = b.Id.ToString()
-            })
-            .ToList();
+        var sql1 = string.Format(@"SELECT * FROM MES_DBCK WHERE FDocumentStatus = 'C' AND FBillNo = '{0}'", query.billNo);
 
-        if(result.Count < 1) throw new Exception("璇ヨ皟鎷ㄥ崟涓嶅瓨鍦ㄦ垨宸叉壂瀹岋紝璇烽噸鏂版壂鎻�");
+        var dbck = Db.Ado.SqlQuery<ItemDetailModel>(sql1);
 
-        return result;
+        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 ,
+       dbo.F_QX_GETRECODEPOTSE(B.FMATERIALID,'','','') as RecoKw
+    FROM MES_DBCK_DETAIL B
+    LEFT JOIN MES_DBCK A ON A.ID = B.pid
+    LEFT JOIN MES_ITEMS C ON  B.FMATERIALID = C.item_id
+    LEFT JOIN WOMCAB D ON B.erpid = D.ERPID
+    WHERE A.FBillNo = '{0}'  ORDER BY FSEQ", query.billNo);
+
+        var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql2);
+
+
+        var DS_list = womdabs.Where(s => s.DSQty > 0).ToList();
+
+        var YS_list = womdabs.Where(s => s.SQty > 0).ToList();
+
+        //var p_bill_no = query.billNo;
+
+        //// 鏍规嵁SQL鏌ヨ鏉′欢鑾峰彇寰呭鐞嗙殑鍑哄簱鏄庣粏
+        //// 鍏宠仈鏌ヨTransferOutDetail銆乀ransferOut鍜孧esItems涓夊紶琛�
+        //// 绛涢�夋潯浠�:鏈畬鎴愭暟閲忓ぇ浜�0涓斿崟鎹凡瀹℃牳
+        //var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>(
+        //        (b, a, s) => new JoinQueryInfos(
+        //            JoinType.Left, b.Pid == a.Id,
+        //            JoinType.Left, b.FMaterialId == s.Id.ToString()))
+        //    .Where((b, a, s) =>
+        //        !((b.FQty ?? 0) == (b.SQty ?? 0) && (b.FQty ?? 0) == (b.RQty ?? 0))
+        //        && a.FBillNo == p_bill_no // 鍖归厤鍗曟嵁鍙�
+        //        && a.FApproveStatus == 1) // 鍗曟嵁宸插鏍�
+        //    .OrderBy((b, a, s) => s.ItemNo)
+        //    .Select((b, a, s) => new ItemDetailModel
+        //    {
+        //        ItemNo = s.ItemNo,
+        //        ItemName = s.ItemName,
+        //        ItemModel = s.ItemModel,
+        //        FQty = b.FQty, // 鐢宠鏁伴噺
+        //        SQty = b.SQty, // 宸叉壂鏁伴噺
+        //        RQty = b.RQty, // 宸叉壂鏁伴噺
+        //        // 淇濈暀鍏朵粬蹇呰瀛楁...
+        //        Pid = b.Pid.ToString(),
+        //        FMaterialId = b.FMaterialId,
+        //        Id = b.Id.ToString()
+        //    })
+        //    .ToList();
+
+        //if(result.Count < 1) throw new Exception("璇ヨ皟鎷ㄥ崟涓嶅瓨鍦ㄦ垨宸叉壂瀹岋紝璇烽噸鏂版壂鎻�");
+
+        var dto = new ProductionPickDto
+        {
+            items = DS_list,
+            Ysitems = YS_list
+            // yisao = mesInvItemOutCDetailsList
+        };
+
+        return dto;
+    }
+
+
+    /// <summary>
+    ///     鏍规嵁鍗曟嵁鍙疯幏鍙栧緟澶勭悊鐨勮皟鎷ㄥ嚭搴撴槑缁嗗垪琛�
+    /// </summary>
+    /// <param name="query">鏌ヨ鍙傛暟,鍖呭惈鍗曟嵁鍙�</param>
+    /// <returns>寰呭鐞嗙殑璋冩嫧鍑哄簱鏄庣粏鍒楄〃</returns>
+    public ProductionPickDto GetTransferInDetailListByBillNo(
+        WarehouseQuery query)
+    {
+        if (string.IsNullOrEmpty(query.billNo)) throw new Exception("璋冩嫧鍗曞彿涓虹┖");
+
+        var sql1 = string.Format(@"SELECT * FROM MES_DBCK WHERE FDocumentStatus = 'C' AND FBillNo = '{0}'", query.billNo);
+
+        var dbck = Db.Ado.SqlQuery<ItemDetailModel>(sql1);
+
+        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.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
+    LEFT JOIN MES_ITEMS C ON  B.FMATERIALID = C.item_id
+    LEFT JOIN WOMCAB D ON B.erpid = D.ERPID
+    WHERE A.FBillNo = '{0}'  ORDER BY FSEQ", query.billNo);
+
+        var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql2);
+
+
+        var DS_list = womdabs.Where(s => s.DSQty > 0).ToList();
+
+        var YS_list = womdabs.Where(s => s.RQty > 0).ToList();
+
+        //var p_bill_no = query.billNo;
+
+        //// 鏍规嵁SQL鏌ヨ鏉′欢鑾峰彇寰呭鐞嗙殑鍑哄簱鏄庣粏
+        //// 鍏宠仈鏌ヨTransferOutDetail銆乀ransferOut鍜孧esItems涓夊紶琛�
+        //// 绛涢�夋潯浠�:鏈畬鎴愭暟閲忓ぇ浜�0涓斿崟鎹凡瀹℃牳
+        //var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>(
+        //        (b, a, s) => new JoinQueryInfos(
+        //            JoinType.Left, b.Pid == a.Id,
+        //            JoinType.Left, b.FMaterialId == s.Id.ToString()))
+        //    .Where((b, a, s) =>
+        //        !((b.FQty ?? 0) == (b.SQty ?? 0) && (b.FQty ?? 0) == (b.RQty ?? 0))
+        //        && a.FBillNo == p_bill_no // 鍖归厤鍗曟嵁鍙�
+        //        && a.FApproveStatus == 1) // 鍗曟嵁宸插鏍�
+        //    .OrderBy((b, a, s) => s.ItemNo)
+        //    .Select((b, a, s) => new ItemDetailModel
+        //    {
+        //        ItemNo = s.ItemNo,
+        //        ItemName = s.ItemName,
+        //        ItemModel = s.ItemModel,
+        //        FQty = b.FQty, // 鐢宠鏁伴噺
+        //        SQty = b.SQty, // 宸叉壂鏁伴噺
+        //        RQty = b.RQty, // 宸叉壂鏁伴噺
+        //        // 淇濈暀鍏朵粬蹇呰瀛楁...
+        //        Pid = b.Pid.ToString(),
+        //        FMaterialId = b.FMaterialId,
+        //        Id = b.Id.ToString()
+        //    })
+        //    .ToList();
+
+        //if(result.Count < 1) throw new Exception("璇ヨ皟鎷ㄥ崟涓嶅瓨鍦ㄦ垨宸叉壂瀹岋紝璇烽噸鏂版壂鎻�");
+
+        var dto = new ProductionPickDto
+        {
+            items = DS_list,
+            Ysitems = YS_list
+            // yisao = mesInvItemOutCDetailsList
+        };
+
+        return dto;
     }
 
     public List<ItemDetailModel> GetDBCKDetal(
@@ -130,7 +234,7 @@
     /// </summary>
     /// <param name="query">鍖呭惈鍗曟嵁鍙枫�佺敤鎴峰悕鍜屾潯鐮佷俊鎭殑鏌ヨ鍙傛暟</param>
     /// <returns>澶勭悊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏鍒楄〃</returns>
-    public (WarehouseQuery form, List<ItemDetailModel> items)
+    public ProductionPickDto
         ScanMoveBarcode(WarehouseQuery query)
     {
         var p_bill_no = query.billNo;
@@ -148,8 +252,7 @@
         // 鏌ヨ鏉$爜搴撳瓨淇℃伅骞堕獙璇�
         var stock = Db.Queryable<MesInvItemStocks>()
             .Where(x => x.ItemBarcode == p_item_barcode
-                        && x.Quantity > 0
-                        && !string.IsNullOrEmpty(x.DepotsCode))
+                        && x.Quantity > 0)
             .First();
         if (stock == null) throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{p_item_barcode}");
 
@@ -200,7 +303,18 @@
                     query.Fum = Convert.ToDecimal(splitNum);
 
                     // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏
-                    return (query, GetDBCKDetal(query));
+                    //return (query, GetDBCKDetal(query));
+                    var dto = new ProductionPickDto
+                    {
+                        itemNo = item.ItemNo,
+                        barcodeNum = barcodeNum,
+                        splitNum = splitNum,
+                        barcode = query.barcode,
+                        strMsg = _strMsg,
+                        result = _intSum
+                    };
+
+                    return dto;
                 }
                 catch (Exception ex)
                 {
@@ -223,6 +337,97 @@
         ScanReceiveBarcode(WarehouseQuery query)
     {
         var p_bill_no = query.billNo;
+        var p_item_barcode = query.barcode;
+
+        var barinfo = Db.Queryable<MesInvItemStocks>()
+            .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("鏈壘鍒拌皟鎷ㄧ敵璇峰崟鎴栬�呰皟鎷ㄧ敵璇峰崟娌″鏍�");
+
+        // 鏌ヨ鏉$爜搴撳瓨淇℃伅骞堕獙璇�
+        var stock = Db.Queryable<MesDbckDetail>()
+            .Where(x => x.FMaterialId == barinfo.ItemId.ToString()
+                        && x.FQty > 0
+                        && !string.IsNullOrEmpty(x.FStockInId)
+                        && !string.IsNullOrEmpty(x.FOwnerInId))
+            .First();
+        if (stock == null) throw new Exception($"璋冩嫧鏄庣粏涓� 銆愮墿鏂欍�戞垨 銆愯皟鍏ヤ粨搴撱�戞垨銆愯皟鍏ヨ揣涓汇�戜俊鎭笉瀛樺湪锛岃鏍稿锛亄p_item_barcode}");
+
+        // 鏌ヨ鐗╂枡淇℃伅
+        var item = Db.Queryable<MesItems>()
+            .Where(x => x.Id.ToString() == stock.FMaterialId)
+            .First();
+        if (item == null) throw new Exception("鏈壘鍒扮墿鏂�");
+
+        var _strMsg = "";
+        var _intSum = "";
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("[prc_pda_DBRK]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.NVarChar, 300),
+                        new("@barcode_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),
+                        new("@p_depot_section_code", query.sectionCode),
+                    };
+                    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();
+
+                    var barcodeNum = parameters[2].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.billNo = outBillNo;
+
+                    // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏
+                    return (query, GetDBCKDetal(query));
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
+
+    public ProductionPickDto ScanCodeCF(WarehouseQuery query)
+    {
+        var p_bill_no = query.daa001;
         var p_item_barcode = query.barcode;
 
         var barinfo = Db.Queryable<MesInvItemStocks>()
@@ -255,9 +460,10 @@
 
         var _strMsg = "";
         var _intSum = "";
+        var _cfBar = "";
         using (var conn = new SqlConnection(DbHelperSQL.strConn))
         {
-            using (var cmd = new SqlCommand("[prc_pda_DBRK]", conn))
+            using (var cmd = new SqlCommand("[prc_pda_DBCK_CF]", conn))
             {
                 try
                 {
@@ -265,86 +471,36 @@
                     cmd.CommandType = CommandType.StoredProcedure;
                     SqlParameter[] parameters =
                     {
-                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outMsg", SqlDbType.NVarChar, 2000),
                         new("@outSum", SqlDbType.NVarChar, 300),
-                        new("@barcode_num", SqlDbType.NVarChar, 300),
-                        new("@split_num", SqlDbType.NVarChar, 300),
-                        new("@c_user", query.userName),
-                        new("@p_bill_no", p_bill_no),
-                        new("@p_item_barcode", p_item_barcode),
-                        new("@p_depot_section_code", query.sectionCode),
+                        new("@outCfBar", SqlDbType.NVarChar, 300),
+                        new("@c_User", query.userName),
+                        new("@p_biLL_no", query.daa001),
+                        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;
-                    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();
+                    _cfBar = parameters[2].Value.ToString();
 
-                    var barcodeNum = parameters[2].Value.ToString();
-                    var splitNum = 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);
-
-                    // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏
-                    return (query, GetDBCKDetal(query));
-                }
-                catch (Exception ex)
-                {
-                    throw new Exception(ex.Message);
-                }
-                finally
-                {
-                    conn.Close();
-                }
-            }
-        }
-    }
-
-    //璋冩嫧鍑哄簱鎷嗗垎 prc_pda_DBCK_CF
-    public string SplitBarcode(WarehouseQuery query)
-    {
-        var _strMsg = "";
-        var _intSum = "";
-        using (var conn = new SqlConnection(DbHelperSQL.strConn))
-        {
-            using (var cmd = new SqlCommand("[prc_pda_DBRK]", conn))
-            {
-                try
-                {
-                    conn.Open();
-                    cmd.CommandType = CommandType.StoredProcedure;
-                    SqlParameter[] parameters =
+                    var dto = new ProductionPickDto
                     {
-                        new("@outMsg", SqlDbType.NVarChar, 300),
-                        new("@outSum", SqlDbType.NVarChar, 300),
-                        new("@c_user", query.userName),
-                        new("@p_bill_no", query.billNo),
-                        new("@p_item_barcode", query.barcode),
-                        new("@NUM", query.Fum),
+                        daa001 = query.daa001,
+                        barcode = query.barcode,//鍘熸潯鐮�
+                        cfBarcode = _cfBar//鎷嗗垎鍚庢潯鐮�
                     };
-                    
-                    parameters[0].Direction = ParameterDirection.Output;
-                    parameters[1].Direction = ParameterDirection.Output;
-                    
-                    foreach (var parameter in parameters)
-                        cmd.Parameters.Add(parameter);
-                    cmd.ExecuteNonQuery();
-                    _strMsg = parameters[0].Value.ToString();
-                    _intSum = parameters[1].Value.ToString();
-                    
-                    var result = Convert.ToInt32(_intSum);
-                    if (result <= 0) throw new Exception(_strMsg);
-                    
-                    return _strMsg;
+
+                    return dto;
                 }
                 catch (Exception ex)
                 {
@@ -357,4 +513,5 @@
             }
         }
     }
+
 }
\ No newline at end of file
diff --git a/service/Wom/WomdaahbManager.cs b/service/Wom/WomdaahbManager.cs
new file mode 100644
index 0000000..1436d92
--- /dev/null
+++ b/service/Wom/WomdaahbManager.cs
@@ -0,0 +1,1090 @@
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using System.Text;
+using Masuit.Tools;
+using Microsoft.SqlServer.Server;
+using NewPdaSqlServer.DB;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.entity.Base;
+using SqlSugar;
+
+namespace NewPdaSqlServer.service.Wom;
+
+public class WomdaaManager : Repository<Womdaa>
+{
+    //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
+    //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 WomdaaManager.cs
+
+    //鑾峰彇宸ュ崟鍙�
+    public List<string> GetProductionPickDaa001(WarehouseQuery query)
+    {
+        var sql =
+            "SELECT DAA001 FROM WOMDAA A LEFT JOIN (SELECT COUNT(1) UN_NUM, PID FROM WOMDAB  WHERE DAB006 > DAB007 GROUP BY DAB002) B ON A.GUID = B.daaGuid WHERE DAA001 = " +
+            query.daa001 +
+            " and DAA018 != '瀹屽伐' AND DAA022 = 1 AND UN_NUM > 0 AND ROWNUM <= 10 order by a.id desc";
+
+        return Db.Ado.SqlQuery<string>(sql);
+    }
+
+    //鏍规嵁宸ュ崟鍙疯繑鍥炰骇鍝佸瀷鍙峰拰寰呴鐗╂枡
+    public ProductionPickDto GetItemsByDaa001(WarehouseQuery query)
+    {
+        return getDaa001(query);
+    }
+
+    public ProductionPickDto ScanCode(WarehouseQuery query)
+    {
+        var _strMsg = "";
+        var _intSum = "";
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            if (query.userName.IsNullOrEmpty()) throw new Exception("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖");
+            if (query.daa001.IsNullOrEmpty()) throw new Exception("棰嗘枡鍗曞彿涓嶅厑璁镐负绌�");
+            if (query.barcode.IsNullOrEmpty()) throw new Exception("鏉$爜涓嶅厑璁镐负绌�");
+
+            using (var cmd = new SqlCommand("[prc_pda_SCLL]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.NVarChar, 300),
+                        new("@barcode_num", SqlDbType.NVarChar, 300),
+                        new("@split_num", SqlDbType.NVarChar, 300),
+                        new("@c_User", query.userName),
+                        new("@p_biLL_no", query.daa001),
+                        new("@p_item_barcode", query.barcode)
+                    };
+                    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();
+
+                    var barcodeNum = parameters[2].Value.ToString();
+                    var splitNum = parameters[3].Value.ToString();
+
+                    var result = Convert.ToInt32(_intSum);
+                    if (result <= 0) throw new Exception(_strMsg);
+
+                    var dto = new ProductionPickDto
+                    {
+                        daa001 = query.daa001,
+                        barcodeNum = barcodeNum,
+                        splitNum = splitNum,
+                        barcode = query.barcode,
+                        strMsg = _strMsg,
+                        result = _intSum
+                    };
+
+                    return dto;
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
+
+    //prC_pda_SCLL_CF
+    public ProductionPickDto ScanCodeCF(WarehouseQuery query)
+    {
+        if (query.userName.IsNullOrEmpty()) throw new Exception("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖");
+        if (query.daa001.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_SCLL_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.daa001),
+                        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.daa001,
+                        barcode = query.barcode,//鍘熸潯鐮�
+                        cfBarcode = _cfBar//鎷嗗垎鍚庢潯鐮�
+                    };
+
+                    return dto;
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
+
+    private ProductionPickDto getDaa001(WarehouseQuery query)
+    {
+        if (string.IsNullOrEmpty(query.daa001)) throw new Exception("宸ュ崟鍙蜂负绌�");
+
+        var womdaa = Db.Queryable<Womdaa, MesItems>((a, i) =>
+                new JoinQueryInfos(JoinType.Left,
+                    a.Daa002 == i.ItemId.ToString()))
+            .Where((a, i) => a.Daa001 == query.daa001
+                    && a.Fstatus == 1)
+            .Select((a, i) => new
+            {
+                a.Daa001, a.CaaGuid
+            }).First();
+
+        if (womdaa?.Daa001 == null) throw new Exception("宸ュ崟鍙蜂笉瀛樺湪");
+
+        //var womdabs = Db.Queryable<Womdaa, Womdab, MesItems, Womcab>(
+        //        (a, b, c, d) =>
+        //            new JoinQueryInfos(
+        //                JoinType.Left,
+        //                a.Guid == b.DaaGuid,
+        //                JoinType.Inner,
+        //                c.Id.ToString() ==
+        //                b.Dab003,
+        //                JoinType.Inner, b.Erpid == d.Erpid
+        //            ))
+        //    .Where((a, b, c, d) =>
+        //        a.Daa001 == query.daa001 && d.Iss1ueType == "1")
+        //    .Select((a, b, c, d) => new ItemDetailModel
+        //    {
+        //        ItemNo = c.ItemNo,
+        //        ItemName = c.ItemName,
+        //        ItemModel = c.ItemModel,
+        //        FQty = b.Dab006, // 鐢宠鏁伴噺
+        //        SQty = b.Dab007, // 宸叉壂鏁伴噺
+        //        DSQty = b.Dab006 - b.Dab007, // 宸叉壂鏁伴噺
+        //    })
+        //    .ToList();
+
+        var sql =string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.dab006 FQty,b.dab007 SQty,b.dab006 - b.dab007 DSQty ,
+       dbo.F_QX_GETRECODEPOTSE(B.dab003,'','','') as RecoKw
+    FROM WOMDAB B
+    LEFT JOIN WOMDAA A ON A.guid = B.daaGuid
+    LEFT JOIN MES_ITEMS C ON  B.dab003 = C.item_id
+    LEFT JOIN WOMCAB D ON B.erpid = D.ERPID
+    WHERE daa001 = '{0}' AND ISSUE_TYPE = 1 ORDER BY DAB002", query.daa001);
+
+        var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql);
+
+
+        var DS_list = womdabs.Where(s => s.DSQty > 0).ToList();
+
+        var YS_list = womdabs.Where(s => s.SQty > 0).ToList();
+
+        var mesInvItemOutCDetailsList = Db
+            .Queryable<MesInvItemOutCDetails, MesItems, MesDepots>
+            ((a, b, c) =>
+                new JoinQueryInfos(
+                    JoinType.Inner, a.ItemId == b.Id,
+                    JoinType.Inner, c.DepotId == a.DepotId
+                ))
+            .Where((a, b, c) => a.WorkNo == query.daa001)
+            .Select((a, b, c) => new MesInvItemOutCDetails
+            {
+                ItemName = b.ItemName,
+                ItemNo = b.ItemNo,
+                ItemId = a.ItemId,
+                DepotId = a.DepotId,
+                WorkNo = a.WorkNo,
+                DepotName = c.DepotName,
+                Quantity = a.Quantity
+            })
+            .ToList();
+
+        var womcaa = Db.Queryable<Womcaa>().Where(s => s.Guid == womdaa.CaaGuid)
+            .First();
+
+        if (womcaa == null)
+        {
+            throw new Exception("鐢熶骇浠诲姟鍗曚笉瀛樺湪");
+        }
+
+        var dto = new ProductionPickDto
+        {
+            daa001 = womdaa.Daa001,
+            PlanNo = womcaa.Caa020,
+            items = DS_list,
+            Ysitems = YS_list
+            // yisao = mesInvItemOutCDetailsList
+        };
+
+        return dto;
+    }
+
+    /// <summary>
+    /// 鑾峰彇宸ュ崟鏉$爜淇℃伅
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    public dynamic getZsBarInfo(dynamic query)
+    {
+
+        var sql = string.Format(@"SELECT TOP 1 A.barCode AS zsBarcode,
+             D.name AS lineName,
+             D.line_no,
+             B.daa001,
+             C.item_no,
+             C.item_name,
+             C.item_model,
+             A.quantity as barQty,
+             B.daa008 as sumQty,
+             isnull((SELECT count(1) FROM WORK_COLLECT WHERE processNo = '{0}' AND ABOUT_GUID = A.ABOUT_GUID),0) AS finQty,
+             isnull((SELECT TOP 1 processNo FROM WORK_COLLECT WHERE  WORK_COLLECT.barCode = '{1}' AND checkResult = '鈭�' ORDER BY WORK_COLLECT.createDate DESC ),'') AS lastGx
+FROM WORK_TRAC_CODE A
+         LEFT JOIN WOMDAA B ON A.ABOUT_GUID = B.guid
+         LEFT JOIN MES_ITEMS C ON B.daa002 = C.item_id
+         LEFT JOIN MES_WORKSHOP_LINE D ON A.lineId = D.id
+WHERE A.barCode = '{1}'", query.GX, query.Zsbarcode);
+
+        var ZsBarInfo = Db.Ado.SqlQuery<dynamic>(sql);
+
+        if (ZsBarInfo.Count < 1)
+        {
+            throw new Exception($"璇ヨ拷婧爜{query.Zsbarcode}涓嶅瓨鍦ㄤ笉瀛樺湪");
+        }
+
+        return ZsBarInfo;
+    }
+
+    //鑾峰彇鐢熶骇
+    public dynamic getTraceability(dynamic query)
+    {
+        var sql = string.Format(@"SELECT processNo, A.barCode, B.lineId, line_no, name AS lineName, checkResult, C.USER_NAME
+FROM WORK_COLLECT A
+         LEFT JOIN WORK_TRAC_CODE B ON A.barCode = B.barCode
+         LEFT JOIN SYS_USER C ON C.ACCOUNT = A.createBy
+         LEFT JOIN MES_WORKSHOP_LINE D ON B.lineId = D.id
+WHERE A.barCode = '{0}'", query.Zsbarcode);
+
+        var Traceability = Db.Ado.SqlQuery<dynamic>(sql);
+
+        return Traceability;
+    }
+
+    public dynamic ProductBinding(dynamic query)
+    {
+        if (query == null) throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓� null");
+
+        // 2. 浣跨敤 string.IsNullOrEmpty 鐩存帴鍒ゆ柇瀛楃涓插睘鎬э紙閬垮厤 NullReferenceException锛�
+        if (string.IsNullOrEmpty(query.userName?.ToString()))
+            throw new ArgumentException("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖", nameof(query.userName));
+
+        if (string.IsNullOrEmpty(query.ZsBar?.ToString()))
+            throw new ArgumentException("杩芥函鐮佷笉鍏佽涓虹┖", nameof(query.ZsBar));
+
+        if (string.IsNullOrEmpty(query.LsBar?.ToString()))
+            throw new ArgumentException("鍚庣洊鐮佷笉鍏佽涓虹┖", nameof(query.LsBar));
+
+        var _strMsg = "";
+        var _intSum = "";
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("prc_pda_product_binding", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userName },
+                        new("@pi_trac_barcode", SqlDbType.NVarChar, 100) { Value = query.ZsBar },
+                        new("@pi_ls_barcode", SqlDbType.NVarChar, 100) { Value = query.LsBar },
+                        new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output },
+                        new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output }
+                    };
+                    
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    
+                    cmd.ExecuteNonQuery();
+                    
+                    _strMsg = parameters[3].Value?.ToString() ?? "";
+                    _intSum = parameters[4].Value?.ToString() ?? "-1";
+
+                    var result = Convert.ToInt32(_intSum);
+                    if (result <= 0) throw new Exception(_strMsg);
+
+                    var dto = new
+                    {
+                        message = _strMsg,
+                        status = result,
+                        tracBarcode = query.ZsBar
+                    };
+
+                    return dto;
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
+
+
+    /// <summary>
+    /// 鑾峰彇鍗℃澘淇℃伅
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    public dynamic getKbBarInfo(dynamic query)
+    {
+        if (string.IsNullOrEmpty(query.Kbbarcode?.ToString()))
+            throw new ArgumentException("鍗℃澘鏉$爜涓嶅厑璁镐负绌�", nameof(query.userName));
+
+        var sql = string.Format(@"SELECT OLDQTY,
+       ISNULL((SELECT COUNT(1) FROM MES_INV_ITEM_BARCODES_TBMX WHERE ABOUT_TB_BARCODE = '{0}'), 0) AS YSum,
+       DAA001
+FROM MES_INV_ITEM_BARCODES A LEFT JOIN WOMDAA B ON A.ABOUT_GUID = B.guid
+WHERE ITEM_BARCODE = '{0}' ",  query.Kbbarcode);
+
+        var ZsBarInfo = Db.Ado.SqlQuery<dynamic>(sql);
+
+        if (ZsBarInfo.Count < 1)
+        {
+            throw new Exception($"璇ュ崱鏉跨爜{query.Zsbarcode}涓嶅瓨鍦紒");
+        }
+
+        return ZsBarInfo;
+    }
+
+    /// <summary>
+    /// 鑾峰彇鍗℃澘鏄庣粏淇℃伅
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    public dynamic getKbBarMxInfo(dynamic query)
+    {
+
+        var sql = string.Format(@"SELECT ITEM_BARCODE, QUANTITY,item_no,item_name,item_model,weight
+FROM MES_INV_ITEM_BARCODES_TBMX A
+         LEFT JOIN WOMDAA B ON B.daa001 = A.DAA_001
+        LEFT JOIN MES_ITEMS C ON C.item_id = B.daa002
+WHERE ABOUT_TB_BARCODE = '{0}' ", query.Kbbarcode);
+
+        var ZsBarInfo = Db.Ado.SqlQuery<dynamic>(sql);
+
+
+        return ZsBarInfo;
+    }
+
+    /// <summary>
+    /// 鑾峰彇绠辨槑缁嗕俊鎭�
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    public dynamic getXBarInfo(dynamic query)
+    {
+        //var sql1 = string.Format(@"SELECT 1 FROM MES_INV_ITEM_BARCODES_TBMX WHERE  ITEM_BARCODE = '{0}' ", query.Xbarcode);
+
+        //var IS_CZ = Db.Ado.SqlQuery<dynamic>(sql1);
+
+        //if (IS_CZ.Count < 1)
+        //{
+        //    throw new Exception($"璇ョ鏉$爜[{query.Xbarcode}]涓嶅瓨鍦紒");
+        //}
+
+
+        // 鏍¢獙瀛樺偍杩囩▼
+        if (string.IsNullOrEmpty(query.KbBar?.ToString()))
+            throw new ArgumentException("鍗℃澘鏉$爜涓嶅厑璁镐负绌�", nameof(query.KbBar));
+        // 鏍¢獙瀛樺偍杩囩▼
+        if (string.IsNullOrEmpty(query.Xbarcode?.ToString()))
+            throw new ArgumentException("绠辨潯鐮佷笉鍏佽涓虹┖", nameof(query.Xbarcode));
+
+        var successRecords = new List<dynamic>();
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            conn.Open();
+            using (var transaction = conn.BeginTransaction()) // 寮�鍚簨鍔�
+            {
+                try
+                {
+
+                        using (var cmd = new SqlCommand("prc_pda_Xbar_binding_JY", conn, transaction))
+                        {
+                            cmd.CommandType = CommandType.StoredProcedure;
+                            SqlParameter[] parameters =
+                            {
+                                new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userName },
+                                new("@pi_kb_barcode", SqlDbType.NVarChar, 100) { Value = query.KbBar },
+                                new("@pi_ls_barcode", SqlDbType.NVarChar, 100) { Value = query.Xbarcode },
+                                new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output },
+                                new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output }
+                            };
+
+                            foreach (var parameter in parameters)
+                                cmd.Parameters.Add(parameter);
+
+                            cmd.ExecuteNonQuery();
+
+                            var _strMsg = parameters[3].Value?.ToString() ?? "";
+                            var _intSum = parameters[4].Value?.ToString() ?? "-1";
+
+                            var result = Convert.ToInt32(_intSum);
+                            if (result <= 0)
+                            {
+                                //transaction.Rollback();
+                                throw new Exception(_strMsg);
+                                //return new { 
+                                //    status = result, 
+                                //    message = $"鎿嶄綔鍥炴粴锛歿_strMsg}",
+                                //    failedBarcode = xBar.iteM_BARCODE,
+                                //    successCount = successRecords.Count
+                                //};
+                            }
+
+                        }
+                    
+                    transaction.Commit(); // 鍏ㄩ儴鎴愬姛鎻愪氦浜嬪姟
+                }
+                catch (Exception ex)
+                {
+                    transaction.Rollback();
+                    throw new Exception($"寮傚父淇℃伅  锛歿ex.Message}");
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+
+            var sql2 = string.Format(@"SELECT ITEM_BARCODE, QUANTITY,item_no,item_name,item_model,'0' as is_hedui
+FROM MES_INV_ITEM_BARCODES_TBMX A
+         LEFT JOIN WOMDAA B ON B.daa001 = A.DAA_001
+         LEFT JOIN MES_ITEMS C ON C.item_id = B.daa002
+WHERE DAA_001 = '{0}'
+  AND ITEM_BARCODE = '{1}'
+  AND ISNULL(ABOUT_TB_BARCODE, '') = '' ", query.DAA001, query.Xbarcode);
+
+        var ZsBarInfo = Db.Ado.SqlQuery<dynamic>(sql2);
+
+        if (ZsBarInfo.Count < 1)
+        {
+            throw new Exception($"璇ョ鏉$爜[{query.Xbarcode}]瀵瑰簲宸ュ崟涓庢墭鐮佸伐鍗昜{query.DAA001}]涓嶅尮閰嶆垨宸茬粦瀹氭墭鐮侊紒");
+        }
+
+        return ZsBarInfo;
+    }
+
+    public dynamic submitAllChecked(dynamic query)
+    {
+        if (query == null) throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓� null");
+
+        // 鍙傛暟鏍¢獙寮哄寲
+        if (string.IsNullOrEmpty(query.userName?.ToString()))
+            throw new ArgumentException("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖", nameof(query.userName));
+        
+        if (string.IsNullOrEmpty(query.KbBar?.ToString()))
+            throw new ArgumentException("鍗℃澘鏉$爜涓嶅厑璁镐负绌�", nameof(query.KbBar));
+        
+        if (query.XbarInfo == null || !((IEnumerable<dynamic>)query.XbarInfo).GetEnumerator().MoveNext())
+            throw new ArgumentException("绠辩爜鍒楄〃涓嶈兘涓虹┖", nameof(query.XbarInfo));
+
+        var successRecords = new List<dynamic>();
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            conn.Open();
+            using (var transaction = conn.BeginTransaction()) // 寮�鍚簨鍔�
+            {
+                try
+                {
+                    foreach (var xBar in query.XbarInfo) // 閬嶅巻绠辩爜闆嗗悎
+                    {
+                        using (var cmd = new SqlCommand("prc_pda_Xbar_binding", conn, transaction))
+                        {
+                            cmd.CommandType = CommandType.StoredProcedure;
+                            SqlParameter[] parameters = 
+                            {
+                                new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userName },
+                                new("@pi_kb_barcode", SqlDbType.NVarChar, 100) { Value = query.KbBar },
+                                new("@pi_ls_barcode", SqlDbType.NVarChar, 100) { Value = xBar.iteM_BARCODE },
+                                new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output },
+                                new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output }
+                            };
+                            
+                            foreach (var parameter in parameters)
+                                cmd.Parameters.Add(parameter);
+                            
+                            cmd.ExecuteNonQuery();
+                            
+                            var _strMsg = parameters[3].Value?.ToString() ?? "";
+                            var _intSum = parameters[4].Value?.ToString() ?? "-1";
+                            
+                            var result = Convert.ToInt32(_intSum);
+                            if (result <= 0)
+                            {
+                                //transaction.Rollback();
+                                throw new Exception(_strMsg);
+                                //return new { 
+                                //    status = result, 
+                                //    message = $"鎿嶄綔鍥炴粴锛歿_strMsg}",
+                                //    failedBarcode = xBar.iteM_BARCODE,
+                                //    successCount = successRecords.Count
+                                //};
+                            }
+                            
+                            successRecords.Add(new { 
+                                kbBarcode = query.KbBar,
+                                xBarcode = xBar.iteM_BARCODE,
+                                processTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+                            });
+                        }
+                    }
+                    transaction.Commit(); // 鍏ㄩ儴鎴愬姛鎻愪氦浜嬪姟
+                    return new { 
+                        status = 1, 
+                        message = "鎵归噺缁戝畾鎴愬姛",
+                        successCount = successRecords.Count,
+                        details = successRecords 
+                    };
+                }
+                catch (Exception ex)
+                {
+                    transaction.Rollback();
+                    throw new Exception($"寮傚父淇℃伅  锛歿ex.Message}");
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
+
+    public dynamic SubmitKbInspection(dynamic query)
+    {
+        if (query == null) throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓� null");
+
+        // 鍙傛暟鏍¢獙
+        if (string.IsNullOrEmpty(query.userAccount?.ToString()))
+            throw new ArgumentException("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖", nameof(query.userAccount));
+        
+        if (string.IsNullOrEmpty(query.KbBar?.ToString()))
+            throw new ArgumentException("鍗℃澘鏉$爜涓嶅厑璁镐负绌�", nameof(query.KbBar));
+    
+        var _strMsg = "";
+        var _status = -1;
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("prc_pda_KBbar_submitInspection", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters = 
+                    {
+                        new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount },
+                        new("@pi_kb_barcode", SqlDbType.NVarChar, 100) { Value = query.KbBar },
+                        new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output },
+                        new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output }
+                    };
+                    
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    
+                    cmd.ExecuteNonQuery();
+                    
+                    _strMsg = parameters[2].Value?.ToString() ?? "";
+                    _status = Convert.ToInt32(parameters[3].Value ?? -1);
+    
+                    if (_status <= 0) throw new Exception(_strMsg);
+    
+                    return new { 
+                        message = _strMsg,
+                        status = _status,
+                        kbBarcode = query.KbBar
+                    };
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception($"鍗℃澘閫佹澶辫触锛歿ex.Message}");
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
+
+
+
+    //鏍规嵁宸ュ崟鍙疯繑鍥炰骇鍝佸瀷鍙峰拰寰呴鐗╂枡
+    public XcslResultDto GetItemsXcsl(WarehouseQuery query)
+    {
+        if (string.IsNullOrEmpty(query.daa001)) throw new Exception("宸ュ崟鍙蜂负绌�");
+
+        var womdaa = Db.Queryable<Womdaa, MesItems>((a, i) =>
+                new JoinQueryInfos(JoinType.Left,
+                    a.Daa002 == i.ItemId.ToString()))
+            .Where((a, i) => a.Daa001 == query.daa001
+                    && a.Fstatus == 1)
+            .Select((a, i) => new
+            {
+                a.Daa001,
+                a.CaaGuid,
+                a.Daa008,
+                a.Daa021
+            }).First();
+
+        if (womdaa?.Daa001 == null) throw new Exception("宸ュ崟鍙蜂笉瀛樺湪");
+
+        // 浣跨敤鍙傛暟鍖栨煡璇㈤槻姝QL娉ㄥ叆
+        var sqlParams = new List<SugarParameter> { new("@daa001", query.daa001) };
+
+        var sql1 = @"SELECT A.item_out_no,
+       SUM(B.QUANTITY)         AS BL_Num,
+       ISNULL(Sub.JS_Sum, 0) AS JS_Num, -- 浣跨敤LEFT JOIN瀛愭煡璇㈢殑缁撴灉
+       C.item_no,
+       C.item_name,
+       C.item_model,
+       D.USER_NAME
+FROM MES_INV_ITEM_OUTS A
+         LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID
+         LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id
+         LEFT JOIN SYS_USER D ON A.create_by = D.ACCOUNT
+-- 鏂板LEFT JOIN鑱氬悎瀛愭煡璇�
+         LEFT JOIN (SELECT B1.ITEM_ID,
+                           SUM(B1.QUANTITY) AS JS_Sum
+                    FROM MES_INV_ITEM_OUTS A1
+                             LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B1 ON A1.GUID = B1.ITEM_OUT_ID
+                    WHERE A1.out_type = '鐢熶骇棰嗘枡'
+                      AND A1.task_no = @daa001
+                      AND ISNULL(B1.IS_XCSL, '0') = 1
+                    GROUP BY B1.ITEM_ID -- 鎸塈TEM_ID鎻愬墠鑱氬悎
+) AS Sub ON Sub.ITEM_ID = C.item_id
+WHERE A.out_type = '鐢熶骇棰嗘枡'
+  AND A.task_no = @daa001
+GROUP BY A.item_out_no,
+         C.item_no,
+         C.item_name,
+         C.item_model,
+         D.USER_NAME,
+         C.item_id,
+         ISNULL(Sub.JS_Sum, 0);";
+
+        var XcslItem = Db.Ado.SqlQuery<dynamic>(sql1, sqlParams);
+
+        var sql2 = @"SELECT B.ITEM_BARCODE ,B.QUANTITY,C.item_no,C.item_name,D.USER_NAME,A.create_date 
+FROM MES_INV_ITEM_OUTS A
+LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID
+LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id
+LEFT JOIN SYS_USER D ON A.create_by = D.ACCOUNT
+WHERE out_type = '鐢熶骇棰嗘枡' 
+AND A.task_no = @daa001 
+AND ISNULL(IS_XCSL,'0') = 0";
+
+        var XcslWjsBar = Db.Ado.SqlQuery<dynamic>(sql2, sqlParams);
+
+        var sql3 = @"SELECT B.ITEM_BARCODE ,B.QUANTITY,C.item_no,C.item_name,D.USER_NAME,B.XCSL_CREATE_DATE 
+FROM MES_INV_ITEM_OUTS A
+LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID
+LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id
+LEFT JOIN SYS_USER D ON B.XCSL_CREATE_BY = D.ACCOUNT
+WHERE out_type = '鐢熶骇棰嗘枡' 
+AND A.task_no = @daa001  
+AND ISNULL(IS_XCSL,'0') = 1";
+
+        var XcslYjsBar = Db.Ado.SqlQuery<dynamic>(sql3, sqlParams);
+
+
+        var dto = new XcslResultDto
+        {
+            GD_Num = womdaa.Daa008,
+            workNo = womdaa.Daa021,
+            XcslItemList = XcslItem,
+            XcslWjsBarList = XcslWjsBar,
+            XcslYjsBarList = XcslYjsBar
+
+        };
+
+        return dto;
+    }
+
+    // 鐜板満鏀舵枡灞曠ず鍒楄〃
+    public class XcslResultDto
+    {
+        public int? GD_Num { get; set; }
+        public string? workNo { get; set; }
+        public List<dynamic> XcslItemList { get; set; }
+        public List<dynamic> XcslWjsBarList { get; set; }
+        public List<dynamic> XcslYjsBarList { get; set; }
+    }
+
+
+    public dynamic ScanXcsl(dynamic query)
+    {
+        if (query == null) throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓� null");
+
+        // 鍙傛暟鏍¢獙锛堟牴鎹瓨鍌ㄨ繃绋嬫柊澧炲弬鏁帮級
+        if (string.IsNullOrEmpty(query.userAccount?.ToString()))
+            throw new ArgumentException("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖", nameof(query.userAccount));
+
+        if (string.IsNullOrEmpty(query.Bar?.ToString()))
+            throw new ArgumentException("鐗╂枡鏉$爜涓嶅厑璁镐负绌�", nameof(query.Bar));
+
+        if (string.IsNullOrEmpty(query.DAA001?.ToString()))
+            throw new ArgumentException("宸ュ崟鍗曞彿涓嶅厑璁镐负绌�", nameof(query.DAA001));
+
+        var _strMsg = "";
+        var _status = -1;
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("prc_pda_ScanXcsl", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    // 鏍规嵁瀛樺偍杩囩▼璋冩暣鍙傛暟椤哄簭鍜屽懡鍚�
+                    SqlParameter[] parameters =
+                    {
+                        new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount },
+                        new("@pi_barcode", SqlDbType.NVarChar, 100) { Value = query.Bar },
+                        new("@pi_daa001", SqlDbType.NVarChar, 100) { Value = query.DAA001 },
+                        new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output },
+                        new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output }
+                    };
+
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+
+                    cmd.ExecuteNonQuery();
+
+                    _strMsg = parameters[3].Value?.ToString() ?? "";
+                    _status = Convert.ToInt32(parameters[4].Value ?? -1);
+
+                    if (_status <= 0) throw new Exception(_strMsg);
+
+                    return new
+                    {
+                        message = _strMsg,
+                        status = _status,
+                        daa001 = query.DAA001,
+                        barCode = query.Bar
+                    };
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception($"浜х嚎鏀舵枡澶辫触锛歿ex.Message}");
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
+
+
+    public dynamic GetWeightByXt(dynamic query)
+    {
+        if (query == null) throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull");
+
+        // 鍙傛暟鏍¢獙
+        if (string.IsNullOrEmpty(query.userName?.ToString()))
+            throw new ArgumentException("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖", nameof(query.userName));
+
+        if (string.IsNullOrEmpty(query.LsBar?.ToString()))
+            throw new ArgumentException("鍗℃澘鏉$爜涓嶅厑璁镐负绌�", nameof(query.LsBar));
+
+        var _strMsg = "";
+        var _status = -1;
+        var _weight = "0";
+        
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("prc_pda_Xbar_chenzhong", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+
+                    SqlParameter[] parameters = 
+                    {
+                        new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userName },
+                        new("@pi_ls_barcode", SqlDbType.NVarChar, 100) { Value = query.LsBar },
+                        new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output },
+                        new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output },
+                        new("@po_outWeight", SqlDbType.NVarChar, 100) { Direction = ParameterDirection.Output }
+                    };
+
+                    cmd.Parameters.AddRange(parameters);
+                    cmd.ExecuteNonQuery();
+
+                    _strMsg = parameters[2].Value?.ToString() ?? "";
+                    _status = Convert.ToInt32(parameters[3].Value ?? -1);
+                    _weight = parameters[4].Value?.ToString() ?? "0";
+
+                    if (_status <= 0) throw new Exception(_strMsg);
+
+                    return new 
+                    {
+                        message = _strMsg,
+                        status = _status,
+                        weight = _weight,
+                        barCode = query.Bar
+                    };
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception($"浜у搧绉伴噸澶辫触锛歿ex.Message}");
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
+
+    public dynamic GetXcslDaa(dynamic unity)
+    {
+
+        var sqlParams = new List<SugarParameter> { };
+
+        var sql2 = new StringBuilder(@"
+        SELECT '['+DAA001+']['+DAA021+']' AS daaInfo,DAA001,DAA021
+        FROM WOMDAA
+        WHERE daa018 <>'W:瀹屽伐'");
+
+        if (!string.IsNullOrWhiteSpace(unity.selectKey?.ToString()))
+        {
+            sqlParams.Add(new("@selectKey", unity.selectKey));
+            sql2.Append(@"
+            AND (DAA001 LIKE '%' + @selectKey + '%' 
+            OR DAA021 LIKE '%' + @selectKey + '%')");
+        }
+
+        var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
+
+        if (XcslItem == null)
+        {
+            throw new Exception("璇ユ潯浠朵笅鏃犲搴斿伐鍗曚俊鎭紝璇烽噸鏂拌緭鍏ワ紒");
+        }
+
+        return XcslItem;
+    }
+
+
+    public XcslResultDto GetItemsXctl(WarehouseQuery query)
+    {
+        if (string.IsNullOrEmpty(query.daa001)) throw new Exception("宸ュ崟鍙蜂负绌�");
+
+        var womdaa = Db.Queryable<Womdaa, MesItems>((a, i) =>
+                new JoinQueryInfos(JoinType.Left,
+                    a.Daa002 == i.ItemId.ToString()))
+            .Where((a, i) => a.Daa001 == query.daa001
+                    && a.Fstatus == 1)
+            .Select((a, i) => new
+            {
+                a.Daa001,
+                a.CaaGuid,
+                a.Daa008,
+                a.Daa021
+            }).First();
+
+        if (womdaa?.Daa001 == null) throw new Exception("宸ュ崟鍙蜂笉瀛樺湪");
+
+        // 浣跨敤鍙傛暟鍖栨煡璇㈤槻姝QL娉ㄥ叆
+        var sqlParams = new List<SugarParameter> { new("@daa001", query.daa001) };
+
+        var sql1 = @"SELECT A.item_out_no,
+       SUM(B.QUANTITY)          AS BL_Num,
+       ISNULL(SL_SUM.JS_Sum, 0) AS JS_Num, 
+       ISNULL(TL_SUM.JS_Sum, 0) AS TR_Num, 
+       C.item_no,
+       C.item_name,
+       C.item_model
+FROM MES_INV_ITEM_OUTS A
+         LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID
+         LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id
+         LEFT JOIN SYS_USER D ON A.create_by = D.ACCOUNT
+         LEFT JOIN (SELECT B1.ITEM_ID,
+                           SUM(B1.QUANTITY) AS JS_Sum
+                    FROM MES_INV_ITEM_OUTS A1
+                             LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B1 ON A1.GUID = B1.ITEM_OUT_ID
+                    WHERE A1.out_type = '鐢熶骇棰嗘枡'
+                      AND A1.task_no = @daa001
+                      AND ISNULL(B1.IS_XCSL, '0') = 1
+                    GROUP BY B1.ITEM_ID 
+) AS SL_SUM ON SL_SUM.ITEM_ID = C.item_id
+         LEFT JOIN (SELECT B1.ITEM_ID,
+                           SUM(B1.QUANTITY) AS JS_Sum
+                    FROM MES_INV_ITEM_OUTS A1
+                             LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B1 ON A1.GUID = B1.ITEM_OUT_ID
+                    WHERE A1.out_type = '鐢熶骇棰嗘枡'
+                      AND A1.task_no = @daa001
+                      AND ISNULL(B1.IS_CXTR, '0') = 1
+                    GROUP BY B1.ITEM_ID 
+) AS TL_SUM ON TL_SUM.ITEM_ID = C.item_id
+WHERE A.out_type = '鐢熶骇棰嗘枡'
+  AND A.task_no = @daa001
+GROUP BY A.item_out_no,
+         C.item_no,
+         C.item_name,
+         C.item_model,
+         D.USER_NAME,
+         C.item_id,
+         ISNULL(SL_SUM.JS_Sum, 0), 
+         ISNULL(TL_SUM.JS_Sum, 0);";
+
+        var XcslItem = Db.Ado.SqlQuery<dynamic>(sql1, sqlParams);
+
+        var sql2 = @"SELECT B.ITEM_BARCODE ,B.QUANTITY,C.item_no,C.item_name,D.USER_NAME,A.create_date 
+FROM MES_INV_ITEM_OUTS A
+LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID
+LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id
+LEFT JOIN SYS_USER D ON A.create_by = D.ACCOUNT
+WHERE out_type = '鐢熶骇棰嗘枡' 
+AND A.task_no = @daa001 
+AND ISNULL(IS_CXTR,'0') = 0";
+
+        var XcslWjsBar = Db.Ado.SqlQuery<dynamic>(sql2, sqlParams);
+
+        var sql3 = @"SELECT B.ITEM_BARCODE ,B.QUANTITY,C.item_no,C.item_name,D.USER_NAME,B.CXTR_CREATE_DATE 
+FROM MES_INV_ITEM_OUTS A
+LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID
+LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id
+LEFT JOIN SYS_USER D ON B.CXTR_CREATE_BY = D.ACCOUNT
+WHERE out_type = '鐢熶骇棰嗘枡' 
+AND A.task_no = @daa001  
+AND ISNULL(IS_CXTR,'0') = 1";
+
+        var XcslYjsBar = Db.Ado.SqlQuery<dynamic>(sql3, sqlParams);
+
+
+        var dto = new XcslResultDto
+        {
+            GD_Num = womdaa.Daa008,
+            workNo = womdaa.Daa021,
+            XcslItemList = XcslItem,
+            XcslWjsBarList = XcslWjsBar,
+            XcslYjsBarList = XcslYjsBar
+
+        };
+
+        return dto;
+    }
+
+    public dynamic ScanXctl(dynamic query)
+    {
+        if (query == null) throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓� null");
+
+        // 鍙傛暟鏍¢獙锛堟牴鎹瓨鍌ㄨ繃绋嬫柊澧炲弬鏁帮級
+        if (string.IsNullOrEmpty(query.userAccount?.ToString()))
+            throw new ArgumentException("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖", nameof(query.userAccount));
+
+        if (string.IsNullOrEmpty(query.Bar?.ToString()))
+            throw new ArgumentException("鐗╂枡鏉$爜涓嶅厑璁镐负绌�", nameof(query.Bar));
+
+        if (string.IsNullOrEmpty(query.DAA001?.ToString()))
+            throw new ArgumentException("宸ュ崟鍗曞彿涓嶅厑璁镐负绌�", nameof(query.DAA001));
+
+        var _strMsg = "";
+        var _status = -1;
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("prc_pda_ScanXctl", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    // 鏍规嵁瀛樺偍杩囩▼璋冩暣鍙傛暟椤哄簭鍜屽懡鍚�
+                    SqlParameter[] parameters =
+                    {
+                        new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount },
+                        new("@pi_barcode", SqlDbType.NVarChar, 100) { Value = query.Bar },
+                        new("@pi_daa001", SqlDbType.NVarChar, 100) { Value = query.DAA001 },
+                        new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output },
+                        new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output }
+                    };
+
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+
+                    cmd.ExecuteNonQuery();
+
+                    _strMsg = parameters[3].Value?.ToString() ?? "";
+                    _status = Convert.ToInt32(parameters[4].Value ?? -1);
+
+                    if (_status <= 0) throw new Exception(_strMsg);
+
+                    return new
+                    {
+                        message = _strMsg,
+                        status = _status,
+                        daa001 = query.DAA001,
+                        barCode = query.Bar
+                    };
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception($"浜х嚎鏀舵枡澶辫触锛歿ex.Message}");
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
+
+}
\ No newline at end of file

--
Gitblit v1.9.3