From 8685c8e96eeeaa262044f0fdc7827e645f5e22a0 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期一, 23 十二月 2024 21:50:07 +0800
Subject: [PATCH] 111

---
 service/Warehouse/MesItemTblManager.cs             |  169 +-
 entity/MesInvItemBarcodes.cs                       |    4 
 Dto/service/WarehouseQuery.cs                      |    1 
 entity/MesItemTblDetail.cs                         |    9 
 Controllers/Warehouse/MesItemBlController.cs       |  374 ++++++
 Controllers/Warehouse/MesItemTblController.cs      |   14 
 entity/MesItemBl.cs                                |  155 ++
 Dto/service/PendingMaterialDto.cs                  |   32 
 service/Warehouse/MesItemBlDetailManager.cs        |   11 
 entity/MesInvItemOutItems.cs                       |    5 
 util/BillNo.cs                                     |    7 
 service/Warehouse/MesItemBlManager.cs              | 1733 +++++++++++++++++++++++++++++
 Controllers/Warehouse/MesItemBlDetailController.cs |  162 ++
 entity/Womdab.cs                                   |  166 +-
 entity/Womdaa.cs                                   |  329 ++--
 entity/MesInvBusiness2.cs                          |  167 +-
 entity/MesItemBlDetail.cs                          |  143 ++
 17 files changed, 3,051 insertions(+), 430 deletions(-)

diff --git a/Controllers/Warehouse/MesItemBlController.cs b/Controllers/Warehouse/MesItemBlController.cs
new file mode 100644
index 0000000..026fdca
--- /dev/null
+++ b/Controllers/Warehouse/MesItemBlController.cs
@@ -0,0 +1,374 @@
+锘縰sing System.Dynamic;
+using Microsoft.AspNetCore.Mvc;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.service.Warehouse;
+using NewPdaSqlServer.util;
+
+namespace NewPdaSqlServer.Controllers.Warehouse;
+
+/// <summary>
+///     鐢熶骇琛ユ枡鐩稿叧鎺ュ彛
+/// </summary>
+[Route("api/[controller]")]
+[ApiController]
+public class MesItemBlController : ControllerBase
+{
+    private readonly MesItemBlManager _manager = new();
+
+    /***杩涘叆妯$増绠$悊鍙互淇敼妯$増***/
+
+    /// <summary>
+    ///     鑾峰彇鎵�鏈�
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetList")]
+    public ResponseResult GetList()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = _manager.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 = _manager.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 = _manager.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] MesItemBl data)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = _manager.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] MesItemBl data)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = _manager.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] MesItemBl data)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = _manager.Update(data);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    #region 鐢熶骇琛ユ枡
+
+    /// <summary>
+    ///     鑾峰彇鐢熶骇琛ユ枡鍗曞彿鍒楄〃
+    /// </summary>
+    /// <returns>琛ユ枡鍗曞彿鍒楄〃</returns>
+    /// <response code="200">鎴愬姛鑾峰彇琛ユ枡鍗曞彿鍒楄〃</response>
+    /// <response code="400">鑾峰彇澶辫触</response>
+    [HttpPost("GetSCBLBillNo")]
+    public ResponseResult GetSCBLBillNo()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = _manager.GetSCBLBillNo();
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鏍规嵁鍗曞彿鑾峰彇鐢熶骇琛ユ枡鍗曟槑缁�
+    /// </summary>
+    /// <param name="query">鏌ヨ鍙傛暟锛屽繀椤诲寘鍚玝illNo</param>
+    /// <returns>琛ユ枡鍗曟槑缁嗗垪琛�</returns>
+    /// <remarks>
+    /// 璇锋眰绀轰緥:
+    /// 
+    ///     POST /api/MesItemBl/GetMesItemBlDetailByBillNo
+    ///     {
+    ///        "billNo": "BL202401010001"
+    ///     }
+    /// </remarks>
+    /// <response code="200">鎴愬姛鑾峰彇琛ユ枡鍗曟槑缁�</response>
+    /// <response code="400">鑾峰彇澶辫触锛屽彲鑳芥槸鍗曟嵁鍙蜂笉瀛樺湪鎴栧凡瀹屾垚</response>
+    [HttpPost("GetMesItemBlDetailByBillNo")]
+    public ResponseResult GetMesItemBlDetailByBillNo([FromBody] WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = _manager.GetMesItemBlDetailByBillNo(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>
+    /// <remarks>
+    /// 璇锋眰绀轰緥:
+    /// 
+    ///     POST /api/MesItemBl/SctlScanBarcode
+    ///     {
+    ///        "billNo": "WO202401010001",
+    ///        "barcode": "1234567890",
+    ///        "userName": "admin",
+    ///        "blNo": "BL202401010001"
+    ///     }
+    /// </remarks>
+    /// <response code="200">鎵弿鎴愬姛</response>
+    /// <response code="400">鎵弿澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response>
+    [HttpPost("SctlScanBarcode")]
+    public ResponseResult SctlScanBarcode([FromBody] WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var (success, pendingList) = _manager.SctlScanBarcode(query);
+            resultInfos.success = success;
+            resultInfos.pendingList = pendingList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    #endregion
+
+    #region 鐢熶骇瓒呴
+
+    /// <summary>
+    ///     鑾峰彇鐢熶骇瓒呴鍗曞彿鍒楄〃
+    /// </summary>
+    /// <returns>瓒呴鍗曞彿鍒楄〃</returns>
+    /// <response code="200">鎴愬姛鑾峰彇瓒呴鍗曞彿鍒楄〃</response>
+    /// <response code="400">鑾峰彇澶辫触</response>
+    [HttpPost("GetSccList")]
+    public ResponseResult GetSccList()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = _manager.GetSccList();
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鑾峰彇鐢熶骇瓒呴鍗曟槑缁�
+    /// </summary>
+    /// <param name="query">鏌ヨ鍙傛暟锛屽繀椤诲寘鍚玝illNo</param>
+    /// <returns>瓒呴鍗曟槑缁嗗垪琛�</returns>
+    /// <remarks>
+    /// 璇锋眰绀轰緥:
+    /// 
+    ///     POST /api/MesItemBl/GetMesItemBlDetailBySccBillNo
+    ///     {
+    ///        "billNo": "SC202401010001"
+    ///     }
+    /// </remarks>
+    /// <response code="200">鎴愬姛鑾峰彇瓒呴鍗曟槑缁�</response>
+    /// <response code="400">鑾峰彇澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response>
+    [HttpPost("GetMesItemBlDetailBySccBillNo")]
+    public ResponseResult GetMesItemBlDetailBySccBillNo([FromBody] WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = _manager.GetMesItemBlDetailBySccBillNo(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>
+    /// <remarks>
+    /// 璇锋眰绀轰緥:
+    /// 
+    ///     POST /api/MesItemBl/ScanBarcodeForOverPicking
+    ///     {
+    ///        "billNo": "WO202401010001",
+    ///        "barcode": "1234567890",
+    ///        "userName": "admin",
+    ///        "blNo": "SC202401010001"
+    ///     }
+    /// </remarks>
+    /// <response code="200">鎵弿鎴愬姛</response>
+    /// <response code="400">鎵弿澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response>
+    [HttpPost("ScanBarcodeForOverPicking")]
+    public ResponseResult ScanBarcodeForOverPicking([FromBody] WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var (success, pendingList) = _manager.ScanBarcodeForOverPicking(query);
+            resultInfos.success = success;
+            resultInfos.pendingList = pendingList;
+            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/Controllers/Warehouse/MesItemBlDetailController.cs b/Controllers/Warehouse/MesItemBlDetailController.cs
new file mode 100644
index 0000000..f198257
--- /dev/null
+++ b/Controllers/Warehouse/MesItemBlDetailController.cs
@@ -0,0 +1,162 @@
+锘縰sing System.Dynamic;
+using Microsoft.AspNetCore.Mvc;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.service.Warehouse;
+using NewPdaSqlServer.util;
+
+namespace NewPdaSqlServer.Controllers.Warehouse;
+
+[ApiController]
+[Route("api/[controller]")]
+public class MesItemBlDetailController : ControllerBase
+{
+    private readonly MesItemBlDetailManager m = new();
+
+
+    /***杩涘叆妯$増绠$悊鍙互淇敼妯$増***/
+
+    /// <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] MesItemBlDetail 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] MesItemBlDetail 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] MesItemBlDetail 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);
+        }
+    }
+}
\ No newline at end of file
diff --git a/Controllers/Warehouse/MesItemTblController.cs b/Controllers/Warehouse/MesItemTblController.cs
index 6a06111..347c52b 100644
--- a/Controllers/Warehouse/MesItemTblController.cs
+++ b/Controllers/Warehouse/MesItemTblController.cs
@@ -8,9 +8,8 @@
 namespace NewPdaSqlServer.Controllers.Warehouse;
 
 /// <summary>
-/// 鐢熶骇閫�鏂欑浉鍏虫帴鍙�
+///     鐢熶骇閫�鏂欑浉鍏虫帴鍙�
 /// </summary>
-
 [Route("api/[controller]")]
 [ApiController]
 public class MesItemTblController : ControllerBase
@@ -166,7 +165,7 @@
     // 鏂板鐨勬柟娉�
 
     /// <summary>
-    /// 鑾峰彇鐢熶骇閫�鏂欏崟鍙峰垪琛�
+    ///     鑾峰彇鐢熶骇閫�鏂欏崟鍙峰垪琛�
     /// </summary>
     /// <returns>閫�鏂欏崟鍙峰垪琛�</returns>
     [HttpPost("GetSCTLBillNo")]
@@ -190,12 +189,13 @@
     }
 
     /// <summary>
-    /// 鏍规嵁鍗曞彿鑾峰彇鐢熶骇閫�鏂欏崟鏄庣粏
+    ///     鏍规嵁鍗曞彿鑾峰彇鐢熶骇閫�鏂欏崟鏄庣粏
     /// </summary>
     /// <param name="query">鏌ヨ鍙傛暟</param>
     /// <returns>閫�鏂欏崟鏄庣粏鍒楄〃</returns>
     [HttpPost("GetMesItemTblDetailByBillNo")]
-    public ResponseResult GetMesItemTblDetailByBillNo([FromBody] WarehouseQuery query)
+    public ResponseResult GetMesItemTblDetailByBillNo(
+        [FromBody] WarehouseQuery query)
     {
         try
         {
@@ -215,7 +215,7 @@
     }
 
     /// <summary>
-    /// 鎵弿搴撲綅
+    ///     鎵弿搴撲綅
     /// </summary>
     /// <param name="query">鏌ヨ鍙傛暟</param>
     /// <returns>搴撲綅淇℃伅</returns>
@@ -240,7 +240,7 @@
     }
 
     /// <summary>
-    /// 鎵弿鏉$爜
+    ///     鎵弿鏉$爜
     /// </summary>
     /// <param name="query">鏌ヨ鍙傛暟</param>
     /// <returns>鎵弿缁撴灉</returns>
diff --git a/Dto/service/PendingMaterialDto.cs b/Dto/service/PendingMaterialDto.cs
new file mode 100644
index 0000000..d9363da
--- /dev/null
+++ b/Dto/service/PendingMaterialDto.cs
@@ -0,0 +1,32 @@
+namespace NewPdaSqlServer.Dto.service;
+
+/// <summary>
+///     寰呭鐞嗙墿鏂欎俊鎭疍TO
+/// </summary>
+public class PendingMaterialDto
+{
+    /// <summary>
+    ///     搴撲綅缂栫爜
+    /// </summary>
+    public string SectionCode { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡缂栧彿
+    /// </summary>
+    public string ItemNo { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡鍚嶇О
+    /// </summary>
+    public string ItemName { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡瑙勬牸
+    /// </summary>
+    public string ItemSpec { get; set; }
+
+    /// <summary>
+    ///     寰呭鐞嗘暟閲�
+    /// </summary>
+    public decimal PendingQty { get; set; }
+}
\ No newline at end of file
diff --git a/Dto/service/WarehouseQuery.cs b/Dto/service/WarehouseQuery.cs
index 6e543bd..103d606 100644
--- a/Dto/service/WarehouseQuery.cs
+++ b/Dto/service/WarehouseQuery.cs
@@ -4,6 +4,7 @@
 
 public class WarehouseQuery : Page
 {
+    public string? blNo { get; set; } //琛ユ枡鍗曞彿
     public string? id { get; set; }
     public string? sectionCode { get; set; }
     public string? barcode { get; set; }
diff --git a/entity/MesInvBusiness2.cs b/entity/MesInvBusiness2.cs
index 234b1dd..04db7d7 100644
--- a/entity/MesInvBusiness2.cs
+++ b/entity/MesInvBusiness2.cs
@@ -9,250 +9,249 @@
 public class MesInvBusiness2
 {
     /// <summary>
-    /// ID(seq_inv_id) 
-    /// 榛樿鍊�: (newid())
-    ///</summary>
+    ///     ID(seq_inv_id)
+    ///     榛樿鍊�: (newid())
+    /// </summary>
     [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
     public Guid Guid { get; set; }
 
     /// <summary>
-    /// 鐘舵�亅0-鏈氦鏄�1-宸蹭氦鏄� 
-    ///</summary>
+    ///     鐘舵�亅0-鏈氦鏄�1-宸蹭氦鏄�
+    /// </summary>
     [SugarColumn(ColumnName = "STATUS")]
     public long? Status { get; set; }
 
     /// <summary>
-    /// 鍗曟嵁绫诲瀷ID 
-    ///</summary>
+    ///     鍗曟嵁绫诲瀷ID
+    /// </summary>
     [SugarColumn(ColumnName = "BILL_TYPE_ID")]
     public long? BillTypeId { get; set; }
 
     /// <summary>
-    /// 浜嬪姟绫诲瀷缂栫爜 
-    ///</summary>
+    ///     浜嬪姟绫诲瀷缂栫爜
+    /// </summary>
     [SugarColumn(ColumnName = "TRANSACTION_CODE")]
     public string? TransactionCode { get; set; }
 
     /// <summary>
-    /// 浜ゆ槗绫诲瀷|1-鍏ュ簱0-杞簱-1鍑哄簱 
-    ///</summary>
+    ///     浜ゆ槗绫诲瀷|1-鍏ュ簱0-杞簱-1鍑哄簱
+    /// </summary>
     [SugarColumn(ColumnName = "BUSINESS_TYPE")]
     public long? BusinessType { get; set; }
 
     /// <summary>
-    /// 鍗曟嵁ID 
-    ///</summary>
+    ///     鍗曟嵁ID
+    /// </summary>
     [SugarColumn(ColumnName = "BILL_ID")]
     public long? BillId { get; set; }
 
     /// <summary>
-    /// 鍗曟嵁缂栫爜 
-    ///</summary>
+    ///     鍗曟嵁缂栫爜
+    /// </summary>
     [SugarColumn(ColumnName = "BILL_NO")]
     public string? BillNo { get; set; }
 
     /// <summary>
-    /// 鐢熶骇璁㈠崟鍙� 
-    ///</summary>
+    ///     鐢熶骇璁㈠崟鍙�
+    /// </summary>
     [SugarColumn(ColumnName = "TASK_NO")]
     public string? TaskNo { get; set; }
 
     /// <summary>
-    /// 瀹㈡埛缂栧彿 
-    ///</summary>
+    ///     瀹㈡埛缂栧彿
+    /// </summary>
     [SugarColumn(ColumnName = "CUSTOMER_NO")]
     public string? CustomerNo { get; set; }
 
     /// <summary>
-    /// 鍗曟嵁琛孖D 
-    ///</summary>
+    ///     鍗曟嵁琛孖D
+    /// </summary>
     [SugarColumn(ColumnName = "BILL_LINE_ID")]
     public long? BillLineId { get; set; }
 
     /// <summary>
-    /// 鐗╂枡鏉$爜 
-    ///</summary>
+    ///     鐗╂枡鏉$爜
+    /// </summary>
     [SugarColumn(ColumnName = "ITEM_BARCODE")]
     public string? ItemBarcode { get; set; }
 
     /// <summary>
-    /// 鏈徃鐗╂枡缂栫爜 
-    ///</summary>
+    ///     鏈徃鐗╂枡缂栫爜
+    /// </summary>
     [SugarColumn(ColumnName = "ITEM_NO")]
     public string? ItemNo { get; set; }
 
     /// <summary>
-    /// 瀹㈡埛鐗╂枡缂栫爜 
-    ///</summary>
+    ///     瀹㈡埛鐗╂枡缂栫爜
+    /// </summary>
     [SugarColumn(ColumnName = "C_ITEM_CODE")]
     public string? CItemCode { get; set; }
 
     /// <summary>
-    /// 鍘傚鎵规 
-    ///</summary>
+    ///     鍘傚鎵规
+    /// </summary>
     [SugarColumn(ColumnName = "LOT_NO")]
     public string? LotNo { get; set; }
 
     /// <summary>
-    /// 鏄惁鐜繚(0:鍚�,1:鏄�) 
-    ///</summary>
+    ///     鏄惁鐜繚(0:鍚�,1:鏄�)
+    /// </summary>
     [SugarColumn(ColumnName = "EP_FLAG")]
     public bool? EpFlag { get; set; }
 
     /// <summary>
-    /// 鏁伴噺 
-    ///</summary>
+    ///     鏁伴噺
+    /// </summary>
     [SugarColumn(ColumnName = "QUANTITY")]
     public decimal? Quantity { get; set; }
 
     /// <summary>
-    /// 婧愬瓙搴揅ODE 
-    ///</summary>
+    ///     婧愬瓙搴揅ODE
+    /// </summary>
     [SugarColumn(ColumnName = "FROM_INV_DEPOTS_CODE")]
     public string? FromInvDepotsCode { get; set; }
 
     /// <summary>
-    /// 婧愯揣浣岰ODE 
-    ///</summary>
+    ///     婧愯揣浣岰ODE
+    /// </summary>
     [SugarColumn(ColumnName = "FROM_INV_DEPOT_SECTIONS_CODE")]
     public string? FromInvDepotSectionsCode { get; set; }
 
     /// <summary>
-    /// 鐩殑瀛愬簱CODE 
-    ///</summary>
+    ///     鐩殑瀛愬簱CODE
+    /// </summary>
     [SugarColumn(ColumnName = "TO_INV_DEPOTS_CODE")]
     public string? ToInvDepotsCode { get; set; }
 
     /// <summary>
-    /// 鐩殑璐т綅CODE 
-    ///</summary>
+    ///     鐩殑璐т綅CODE
+    /// </summary>
     [SugarColumn(ColumnName = "TO_INV_DEPOT_SECTIONS_CODE")]
     public string? ToInvDepotSectionsCode { get; set; }
 
     /// <summary>
-    /// 浜ゆ槗寮傚父淇℃伅 
-    ///</summary>
+    ///     浜ゆ槗寮傚父淇℃伅
+    /// </summary>
     [SugarColumn(ColumnName = "DESCRIPTION")]
     public string? Description { get; set; }
 
     /// <summary>
-    /// 鍒涘缓浜� 
-    ///</summary>
+    ///     鍒涘缓浜�
+    /// </summary>
     [SugarColumn(ColumnName = "CREATE_BY")]
     public string? CreateBy { get; set; }
 
     /// <summary>
-    /// 鍒涘缓鏃堕棿 
-    ///</summary>
+    ///     鍒涘缓鏃堕棿
+    /// </summary>
     [SugarColumn(ColumnName = "CREATE_DATE")]
     public DateTime? CreateDate { get; set; }
 
     /// <summary>
-    /// 鏈�鍚庢洿鏂颁汉 
-    ///</summary>
+    ///     鏈�鍚庢洿鏂颁汉
+    /// </summary>
     [SugarColumn(ColumnName = "LASTUPDATE_BY")]
     public string? LastupdateBy { get; set; }
 
     /// <summary>
-    /// 鏈�鍚庢洿鏂版椂闂� 
-    ///</summary>
+    ///     鏈�鍚庢洿鏂版椂闂�
+    /// </summary>
     [SugarColumn(ColumnName = "LASTUPDATE_DATE")]
     public DateTime? LastupdateDate { get; set; }
 
     /// <summary>
-    /// 瓒呮崯缁熻鏍囪瘑 
-    /// 榛樿鍊�: ((0))
-    ///</summary>
+    ///     瓒呮崯缁熻鏍囪瘑
+    ///     榛樿鍊�: ((0))
+    /// </summary>
     [SugarColumn(ColumnName = "ULLAGE_STAT_FLAG")]
     public bool? UllageStatFlag { get; set; }
 
     /// <summary>
-    /// 鍒嗗巶缂栫爜 
-    ///</summary>
+    ///     鍒嗗巶缂栫爜
+    /// </summary>
     [SugarColumn(ColumnName = "FACTORY")]
     public string? Factory { get; set; }
 
     /// <summary>
-    /// 鍏徃浠g爜 
-    ///</summary>
+    ///     鍏徃浠g爜
+    /// </summary>
     [SugarColumn(ColumnName = "COMPANY")]
     public string? Company { get; set; }
 
     /// <summary>
-    /// 绠卞彿鏉$爜 
-    ///</summary>
+    ///     绠卞彿鏉$爜
+    /// </summary>
     [SugarColumn(ColumnName = "ITEM_BARCODE2")]
     public string? ItemBarcode2 { get; set; }
 
     /// <summary>
-    /// 鍗℃澘鏉$爜 
-    ///</summary>
+    ///     鍗℃澘鏉$爜
+    /// </summary>
     [SugarColumn(ColumnName = "ITEM_BARCODE3")]
     public string? ItemBarcode3 { get; set; }
 
     /// <summary>
-    /// 浠诲姟鍗曞彿 
-    ///</summary>
+    ///     浠诲姟鍗曞彿
+    /// </summary>
     [SugarColumn(ColumnName = "WORK_NO")]
     public string? WorkNo { get; set; }
 
     /// <summary>
-    /// 浠诲姟鍗曡鍙� 
-    ///</summary>
+    ///     浠诲姟鍗曡鍙�
+    /// </summary>
     [SugarColumn(ColumnName = "WORK_LINE")]
     public int? WorkLine { get; set; }
 
     /// <summary>
-    /// 渚涘簲鍟� 
-    ///</summary>
+    ///     渚涘簲鍟�
+    /// </summary>
     [SugarColumn(ColumnName = "SUPP_NO")]
     public string? SuppNo { get; set; }
 
     /// <summary>
-    /// 鐢熶骇绾� 
-    ///</summary>
+    ///     鐢熶骇绾�
+    /// </summary>
     [SugarColumn(ColumnName = "LINE_NO")]
     public string? LineNo { get; set; }
 
     /// <summary>
-    /// 閲囪喘璁㈠崟id 
-    ///</summary>
+    ///     閲囪喘璁㈠崟id
+    /// </summary>
     [SugarColumn(ColumnName = "EBELN_K3ID")]
     public long? EbelnK3id { get; set; }
 
     /// <summary>
-    /// 閲囪喘璁㈠崟琛宨d 
-    ///</summary>
+    ///     閲囪喘璁㈠崟琛宨d
+    /// </summary>
     [SugarColumn(ColumnName = "LINE_K3ID")]
     public long? LineK3id { get; set; }
 
     /// <summary>
-    /// 鐗╂枡ID 
-    ///</summary>
+    ///     鐗╂枡ID
+    /// </summary>
     [SugarColumn(ColumnName = "ITEM_ID")]
     public long? ItemId { get; set; }
 
     /// <summary>
-    ///  
-    ///</summary>
+    /// </summary>
     [SugarColumn(ColumnName = "SUPP_ID")]
     public string? SuppId { get; set; }
 
     /// <summary>
-    /// 婧愪粨搴揑D 
-    ///</summary>
+    ///     婧愪粨搴揑D
+    /// </summary>
     [SugarColumn(ColumnName = "FROM_DEPOT_ID")]
     public int? FromDepotId { get; set; }
 
     /// <summary>
-    /// 鐩殑浠撳簱ID 
-    ///</summary>
+    ///     鐩殑浠撳簱ID
+    /// </summary>
     [SugarColumn(ColumnName = "INV_DEPOT_ID")]
     public int? InvDepotId { get; set; }
 
     /// <summary>
-    /// mes鍗曟嵁鏄庣粏琛宨d 
-    ///</summary>
+    ///     mes鍗曟嵁鏄庣粏琛宨d
+    /// </summary>
     [SugarColumn(ColumnName = "MES_LINE")]
     public Guid? MesLine { get; set; }
 }
\ No newline at end of file
diff --git a/entity/MesInvItemBarcodes.cs b/entity/MesInvItemBarcodes.cs
index 142865a..3fb8c2d 100644
--- a/entity/MesInvItemBarcodes.cs
+++ b/entity/MesInvItemBarcodes.cs
@@ -192,7 +192,7 @@
     ///     鎵规鏃ユ湡
     /// </summary>
     [SugarColumn(ColumnName = "LOT_DATE")]
-    public string? LotDate { get; set; }
+    public DateTime? LotDate { get; set; }
 
     /// <summary>
     ///     鎴愬搧鏉$爜
@@ -411,7 +411,7 @@
     ///     榛樿鍊�: ((0))
     /// </summary>
     [SugarColumn(ColumnName = "COME_FLG")]
-    public bool? ComeFlg { get; set; }
+    public short? ComeFlg { get; set; }
 
     /// <summary>
     ///     琛屽彿
diff --git a/entity/MesInvItemOutItems.cs b/entity/MesInvItemOutItems.cs
index 6d4a2b3..0756b27 100644
--- a/entity/MesInvItemOutItems.cs
+++ b/entity/MesInvItemOutItems.cs
@@ -223,6 +223,11 @@
     [SugarColumn(ColumnName = "item_dabid")]
     public int? ItemDabid { get; set; }
 
+    /// <summary>
+    ///     搴旇鏄埌璐ф槑缁嗚〃鐨刧uid
+    /// </summary>
+    [SugarColumn(ColumnName = "about_Guid")]
+    public Guid? AboutGuid { get; set; }
 
     [SugarColumn(IsIgnore = true)] public string? ItemName { get; set; }
 
diff --git a/entity/MesItemBl.cs b/entity/MesItemBl.cs
new file mode 100644
index 0000000..111e394
--- /dev/null
+++ b/entity/MesItemBl.cs
@@ -0,0 +1,155 @@
+锘縰sing SqlSugar;
+
+namespace NewPdaSqlServer.entity;
+
+/// <summary>
+/// </summary>
+[SugarTable("MES_ITEM_BL")]
+public class MesItemBl
+{
+ /// <summary>
+   ///     ID
+   /// </summary>
+   [SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
+    public Guid Id { get; set; }
+
+ /// <summary>
+   ///     琛ユ枡鍗曞彿
+   /// </summary>
+   [SugarColumn(ColumnName = "bl_no")]
+    public string BlNo { get; set; }
+
+ /// <summary>
+   ///     鐢熶骇宸ュ崟
+   /// </summary>
+   [SugarColumn(ColumnName = "bl001")]
+    public string Bl001 { get; set; }
+
+ /// <summary>
+   ///     浜у搧缂栧彿
+   /// </summary>
+   [SugarColumn(ColumnName = "bl002")]
+    public string Bl002 { get; set; }
+
+ /// <summary>
+   ///     浜ч噺
+   /// </summary>
+   [SugarColumn(ColumnName = "bl003")]
+    public int? Bl003 { get; set; }
+
+ /// <summary>
+   ///     鐢宠浜�
+   /// </summary>
+   [SugarColumn(ColumnName = "bl004")]
+    public string Bl004 { get; set; }
+
+ /// <summary>
+   ///     棰嗘枡鏃ユ湡
+   /// </summary>
+   [SugarColumn(ColumnName = "bl005")]
+    public DateTime? Bl005 { get; set; }
+
+ /// <summary>
+   ///     瀹℃牳鏃ユ湡
+   /// </summary>
+   [SugarColumn(ColumnName = "bl006")]
+    public DateTime? Bl006 { get; set; }
+
+ /// <summary>
+   ///     琛ユ枡鍘熷洜
+   /// </summary>
+   [SugarColumn(ColumnName = "bl007")]
+    public string Bl007 { get; set; }
+
+ /// <summary>
+   ///     鍑哄簱绫诲埆锛堣ˉ鏂�,瓒呴锛�
+   /// </summary>
+   [SugarColumn(ColumnName = "bl008")]
+    public string Bl008 { get; set; }
+
+ /// <summary>
+   ///     涓氬姟绫诲瀷
+   /// </summary>
+   [SugarColumn(ColumnName = "bl009")]
+    public string Bl009 { get; set; }
+
+ /// <summary>
+   ///     鍙戞枡浠�
+   /// </summary>
+   [SugarColumn(ColumnName = "bl010")]
+    public string Bl010 { get; set; }
+
+ /// <summary>
+   ///     琛ユ枡閮ㄩ棬
+   /// </summary>
+   [SugarColumn(ColumnName = "bl011")]
+    public string Bl011 { get; set; }
+
+ /// <summary>
+   ///     琛ユ枡浜х嚎
+   /// </summary>
+   [SugarColumn(ColumnName = "bl012")]
+    public string Bl012 { get; set; }
+
+ /// <summary>
+   ///     浠诲姟鍗曞彿
+   /// </summary>
+   [SugarColumn(ColumnName = "bl013")]
+    public string Bl013 { get; set; }
+
+ /// <summary>
+   ///     浜у搧鍚嶇О
+   /// </summary>
+   [SugarColumn(ColumnName = "bl014")]
+    public string Bl014 { get; set; }
+
+ /// <summary>
+   ///     浜у搧鍨嬪彿
+   /// </summary>
+   [SugarColumn(ColumnName = "bl015")]
+    public string Bl015 { get; set; }
+
+ /// <summary>
+   ///     瀹℃牳浜�
+   /// </summary>
+   [SugarColumn(ColumnName = "bl016")]
+    public string Bl016 { get; set; }
+
+ /// <summary>
+   ///     涓氬姟绫诲瀷缂栫爜
+   /// </summary>
+   [SugarColumn(ColumnName = "bl017")]
+    public string Bl017 { get; set; }
+
+ /// <summary>
+   ///     瀹℃牳鐘舵��
+   ///     榛樿鍊�: ((0))
+   /// </summary>
+   [SugarColumn(ColumnName = "bl018")]
+    public bool? Bl018 { get; set; }
+
+ /// <summary>
+   ///     瀹岀粨鏍囪瘑
+   ///     榛樿鍊�: ((0))
+   /// </summary>
+   [SugarColumn(ColumnName = "bl019")]
+    public bool? Bl019 { get; set; }
+
+ /// <summary>
+   ///     浜у搧id
+   /// </summary>
+   [SugarColumn(ColumnName = "item_id")]
+    public int? ItemId { get; set; }
+
+ /// <summary>
+   ///     瀹屾垚浜�
+   /// </summary>
+   [SugarColumn(ColumnName = "wc_user")]
+    public string WcUser { get; set; }
+
+ /// <summary>
+   ///     瀹屾垚鏃堕棿
+   /// </summary>
+   [SugarColumn(ColumnName = "wc_time")]
+    public string WcTime { get; set; }
+}
\ No newline at end of file
diff --git a/entity/MesItemBlDetail.cs b/entity/MesItemBlDetail.cs
new file mode 100644
index 0000000..7a61806
--- /dev/null
+++ b/entity/MesItemBlDetail.cs
@@ -0,0 +1,143 @@
+锘縰sing SqlSugar;
+
+namespace NewPdaSqlServer.entity;
+
+/// <summary>
+/// </summary>
+[SugarTable("MES_ITEM_BL_DETAIL")]
+public class MesItemBlDetail
+{
+ /// <summary>
+   ///     ID
+   /// </summary>
+   [SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
+    public Guid Id { get; set; }
+
+ /// <summary>
+   ///     MID
+   /// </summary>
+   [SugarColumn(ColumnName = "mid")]
+    public Guid? Mid { get; set; }
+
+ /// <summary>
+   ///     宸ュ崟鍙�
+   /// </summary>
+   [SugarColumn(ColumnName = "bld001")]
+    public string Bld001 { get; set; }
+
+ /// <summary>
+   ///     鐗╂枡缂栧彿
+   /// </summary>
+   [SugarColumn(ColumnName = "bld002")]
+    public string Bld002 { get; set; }
+
+ /// <summary>
+   ///     鐗╂枡鍚嶇О
+   /// </summary>
+   [SugarColumn(ColumnName = "bld003")]
+    public string Bld003 { get; set; }
+
+ /// <summary>
+   ///     瑙勬牸鍨嬪彿
+   /// </summary>
+   [SugarColumn(ColumnName = "bld004")]
+    public string Bld004 { get; set; }
+
+ /// <summary>
+   ///     棰滆壊
+   /// </summary>
+   [SugarColumn(ColumnName = "bld005")]
+    public string Bld005 { get; set; }
+
+ /// <summary>
+   ///     璁″垝鏁伴噺
+   /// </summary>
+   [SugarColumn(ColumnName = "bld006")]
+    public int? Bld006 { get; set; }
+
+ /// <summary>
+   ///     鐢宠鏁伴噺
+   /// </summary>
+   [SugarColumn(ColumnName = "bld007")]
+    public int? Bld007 { get; set; }
+
+ /// <summary>
+   ///     宸查鏁伴噺
+   ///     榛樿鍊�: ((0))
+   /// </summary>
+   [SugarColumn(ColumnName = "bld008")]
+    public int? Bld008 { get; set; }
+
+ /// <summary>
+   ///     鍗曚綅
+   /// </summary>
+   [SugarColumn(ColumnName = "bld009")]
+    public string Bld009 { get; set; }
+
+ /// <summary>
+   ///     澶囨敞
+   /// </summary>
+   [SugarColumn(ColumnName = "bld010")]
+    public string Bld010 { get; set; }
+
+ /// <summary>
+   ///     瀹岀粨鏍囪瘑
+   ///     榛樿鍊�: ((0))
+   /// </summary>
+   [SugarColumn(ColumnName = "bld011")]
+    public int? Bld011 { get; set; }
+
+ /// <summary>
+   ///     鐗╂枡id
+   /// </summary>
+   [SugarColumn(ColumnName = "bld012")]
+    public int? Bld012 { get; set; }
+
+ /// <summary>
+   ///     椤规
+   /// </summary>
+   [SugarColumn(ColumnName = "bld013")]
+    public int? Bld013 { get; set; }
+
+ /// <summary>
+   ///     ERP鎶曟枡鍗曡id
+   /// </summary>
+   [SugarColumn(ColumnName = "bld014")]
+    public int? Bld014 { get; set; }
+
+ /// <summary>
+   /// </summary>
+   [SugarColumn(ColumnName = "bld015")]
+    public string Bld015 { get; set; }
+
+ /// <summary>
+   /// </summary>
+   [SugarColumn(ColumnName = "bld016")]
+    public string Bld016 { get; set; }
+
+ /// <summary>
+   /// </summary>
+   [SugarColumn(ColumnName = "bld017")]
+    public string Bld017 { get; set; }
+
+ /// <summary>
+   /// </summary>
+   [SugarColumn(ColumnName = "bld018")]
+    public string Bld018 { get; set; }
+
+ /// <summary>
+   /// </summary>
+   [SugarColumn(ColumnName = "bld019")]
+    public string Bld019 { get; set; }
+
+ /// <summary>
+   /// </summary>
+   [SugarColumn(ColumnName = "bld020")]
+    public string Bld020 { get; set; }
+
+ /// <summary>
+   ///     鍏宠仈鐨刣ab琛ㄤ富閿�
+   /// </summary>
+   [SugarColumn(ColumnName = "dabGuid")]
+    public Guid? DabGuid { get; set; }
+}
\ No newline at end of file
diff --git a/entity/MesItemTblDetail.cs b/entity/MesItemTblDetail.cs
index 7ed7db8..5a32b40 100644
--- a/entity/MesItemTblDetail.cs
+++ b/entity/MesItemTblDetail.cs
@@ -95,11 +95,9 @@
     [SugarColumn(ColumnName = "tld012")]
     public int? Tld012 { get; set; }
 
-    [SugarColumn(IsIgnore = true)]
-    public string? BillNo { get; set; }
+    [SugarColumn(IsIgnore = true)] public string? BillNo { get; set; }
 
-    [SugarColumn(IsIgnore = true)]
-    public string? ItemNo { get; set; }
+    [SugarColumn(IsIgnore = true)] public string? ItemNo { get; set; }
 
     /// <summary>
     ///     鐗╂枡鍚嶇О
@@ -107,6 +105,5 @@
     [SugarColumn(IsIgnore = true)]
     public string? ItemName { get; set; }
 
-    [SugarColumn(IsIgnore = true)]
-    public string ItemModel { get; set; }
+    [SugarColumn(IsIgnore = true)] public string ItemModel { get; set; }
 }
\ No newline at end of file
diff --git a/entity/Womdaa.cs b/entity/Womdaa.cs
index f748c76..3d8aff8 100644
--- a/entity/Womdaa.cs
+++ b/entity/Womdaa.cs
@@ -8,403 +8,418 @@
 public class Womdaa
 {
     /// <summary>
-    ///     榛樿鍊�: (newid())
-    /// </summary>
-    [SugarColumn(ColumnName = "guid")]
-    public Guid? Guid { get; set; }
+    ///  
+    /// 榛樿鍊�: (newid())
+    ///</summary>
+    [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
+    public Guid Guid { get; set; }
 
     /// <summary>
-    /// </summary>
+    ///  
+    ///</summary>
     [SugarColumn(ColumnName = "pbaGuid")]
     public Guid? PbaGuid { get; set; }
 
     /// <summary>
-    /// </summary>
+    ///  
+    ///</summary>
     [SugarColumn(ColumnName = "caaGuid")]
     public Guid? CaaGuid { get; set; }
 
     /// <summary>
-    ///     鑷鍒�
-    /// </summary>
+    /// 鑷鍒� 
+    ///</summary>
     [SugarColumn(ColumnName = "id")]
     public int? Id { get; set; }
 
     /// <summary>
-    ///     鎺掍骇ID
-    /// </summary>
+    /// 鎺掍骇ID 
+    ///</summary>
     [SugarColumn(ColumnName = "pid")]
     public int? Pid { get; set; }
 
     /// <summary>
-    ///     鍗曞彿
-    /// </summary>
+    /// 鍗曞彿 
+    ///</summary>
     [SugarColumn(ColumnName = "daa001")]
-    public string Daa001 { get; set; }
+    public string? Daa001 { get; set; }
 
     /// <summary>
-    ///     浜у搧ID
-    /// </summary>
+    /// 浜у搧ID 
+    ///</summary>
     [SugarColumn(ColumnName = "daa002")]
-    public string Daa002 { get; set; }
+    public string? Daa002 { get; set; }
 
     /// <summary>
-    ///     浜у搧鍚嶇О
-    /// </summary>
+    /// 浜у搧鍚嶇О 
+    ///</summary>
     [SugarColumn(ColumnName = "daa003")]
-    public string Daa003 { get; set; }
+    public string? Daa003 { get; set; }
 
     /// <summary>
-    ///     浜у搧瑙勬牸
-    /// </summary>
+    /// 浜у搧瑙勬牸 
+    ///</summary>
     [SugarColumn(ColumnName = "daa004")]
-    public string Daa004 { get; set; }
+    public string? Daa004 { get; set; }
 
     /// <summary>
-    ///     鍗曚綅
-    /// </summary>
+    /// 鍗曚綅 
+    ///</summary>
     [SugarColumn(ColumnName = "daa005")]
-    public string Daa005 { get; set; }
+    public string? Daa005 { get; set; }
 
     /// <summary>
-    ///     ERP棰勮寮�宸ユ椂闂�
-    /// </summary>
+    /// ERP棰勮寮�宸ユ椂闂� 
+    ///</summary>
     [SugarColumn(ColumnName = "daa006")]
     public DateTime? Daa006 { get; set; }
 
     /// <summary>
-    ///     ERP棰勮瀹屽伐鏃堕棿
-    /// </summary>
+    /// ERP棰勮瀹屽伐鏃堕棿 
+    ///</summary>
     [SugarColumn(ColumnName = "daa007")]
     public DateTime? Daa007 { get; set; }
 
     /// <summary>
-    ///     宸ュ崟鏁伴噺
-    /// </summary>
+    /// 宸ュ崟鏁伴噺 
+    ///</summary>
     [SugarColumn(ColumnName = "daa008")]
     public int? Daa008 { get; set; }
 
     /// <summary>
-    ///     澶囨敞
-    /// </summary>
+    /// 澶囨敞 
+    ///</summary>
     [SugarColumn(ColumnName = "daa009")]
-    public string Daa009 { get; set; }
+    public string? Daa009 { get; set; }
 
     /// <summary>
-    ///     鍏ュ簱鏁伴噺
-    /// </summary>
+    /// 鍏ュ簱鏁伴噺 
+    ///</summary>
     [SugarColumn(ColumnName = "daa010")]
     public int? Daa010 { get; set; }
 
     /// <summary>
-    ///     宸茬敓浜ч噺
-    /// </summary>
+    /// 宸茬敓浜ч噺 
+    ///</summary>
     [SugarColumn(ColumnName = "daa011")]
     public int? Daa011 { get; set; }
 
     /// <summary>
-    ///     鎶ュ簾鏁伴噺
-    /// </summary>
+    /// 鎶ュ簾鏁伴噺 
+    ///</summary>
     [SugarColumn(ColumnName = "daa012")]
     public int? Daa012 { get; set; }
 
     /// <summary>
-    ///     宸ヤ綔杞﹂棿
-    /// </summary>
+    /// 宸ヤ綔杞﹂棿 
+    ///</summary>
     [SugarColumn(ColumnName = "daa013")]
-    public string Daa013 { get; set; }
+    public string? Daa013 { get; set; }
 
     /// <summary>
-    ///     鎶曟枡鍗曞崟鍙�
-    /// </summary>
+    /// 鎶曟枡鍗曞崟鍙� 
+    ///</summary>
     [SugarColumn(ColumnName = "daa014")]
-    public string Daa014 { get; set; }
+    public string? Daa014 { get; set; }
 
     /// <summary>
-    ///     鐢熶骇绾垮埆
-    /// </summary>
+    /// 鐢熶骇绾垮埆 
+    ///</summary>
     [SugarColumn(ColumnName = "daa015")]
-    public string Daa015 { get; set; }
+    public string? Daa015 { get; set; }
 
     /// <summary>
-    ///     瀹為檯寮�宸ユ棩
-    /// </summary>
+    /// 瀹為檯寮�宸ユ棩 
+    ///</summary>
     [SugarColumn(ColumnName = "daa016")]
     public DateTime? Daa016 { get; set; }
 
     /// <summary>
-    ///     瀹為檯瀹屽伐鏃�
-    /// </summary>
+    /// 瀹為檯瀹屽伐鏃� 
+    ///</summary>
     [SugarColumn(ColumnName = "daa017")]
     public DateTime? Daa017 { get; set; }
 
     /// <summary>
-    ///     宸ュ崟鐘舵��
-    /// </summary>
+    /// 宸ュ崟鐘舵�� 
+    ///</summary>
     [SugarColumn(ColumnName = "daa018")]
-    public string Daa018 { get; set; }
+    public string? Daa018 { get; set; }
 
     /// <summary>
-    ///     榻愬鐘舵��
-    /// </summary>
+    /// 榻愬鐘舵�� 
+    ///</summary>
     [SugarColumn(ColumnName = "daa019")]
-    public string Daa019 { get; set; }
+    public string? Daa019 { get; set; }
 
     /// <summary>
-    ///     瀹℃牳鐮�
-    /// </summary>
+    /// 瀹℃牳鐮� 
+    ///</summary>
     [SugarColumn(ColumnName = "fstatus")]
     public int? Fstatus { get; set; }
 
     /// <summary>
-    ///     瀹℃牳鏃ユ湡
-    /// </summary>
+    /// 瀹℃牳鏃ユ湡 
+    ///</summary>
     [SugarColumn(ColumnName = "check_date")]
     public DateTime? CheckDate { get; set; }
 
     /// <summary>
-    ///     瀹℃牳浜�
-    /// </summary>
+    /// 瀹℃牳浜� 
+    ///</summary>
     [SugarColumn(ColumnName = "check_user")]
-    public string CheckUser { get; set; }
+    public string? CheckUser { get; set; }
 
     /// <summary>
-    ///     绾垮埆缂栫爜
-    /// </summary>
+    /// 绾垮埆缂栫爜 
+    ///</summary>
     [SugarColumn(ColumnName = "daa020")]
-    public string Daa020 { get; set; }
+    public string? Daa020 { get; set; }
 
     /// <summary>
-    ///     浠诲姟鍗曞崟鍙�
-    /// </summary>
+    /// 浠诲姟鍗曞崟鍙� 
+    ///</summary>
     [SugarColumn(ColumnName = "daa021")]
-    public string Daa021 { get; set; }
+    public string? Daa021 { get; set; }
 
     /// <summary>
-    ///     閫氱煡澶囨枡锛�0-鏈�氱煡锛�1-閫氱煡
-    ///     榛樿鍊�: ((0))
-    /// </summary>
+    /// 閫氱煡澶囨枡锛�0-鏈�氱煡锛�1-閫氱煡 
+    /// 榛樿鍊�: ((0))
+    ///</summary>
     [SugarColumn(ColumnName = "daa022")]
     public int? Daa022 { get; set; }
 
     /// <summary>
-    ///     鐢熶骇搴忓彿
-    /// </summary>
+    /// 鐢熶骇搴忓彿 
+    ///</summary>
     [SugarColumn(ColumnName = "daa023")]
     public int? Daa023 { get; set; }
 
     /// <summary>
-    ///     鎺掍骇鏃ユ湡
-    /// </summary>
+    /// 鎺掍骇鏃ユ湡 
+    ///</summary>
     [SugarColumn(ColumnName = "daa024")]
-    public string Daa024 { get; set; }
+    public string? Daa024 { get; set; }
 
     /// <summary>
-    ///     棣栦欢鏄惁妫�楠�1-妫�楠岋紝0鏈楠�
-    /// </summary>
+    /// 棣栦欢鏄惁妫�楠�1-妫�楠岋紝0鏈楠� 
+    ///</summary>
     [SugarColumn(ColumnName = "daa025")]
-    public string Daa025 { get; set; }
+    public string? Daa025 { get; set; }
 
     /// <summary>
-    ///     棣栦欢妫�楠岀粨鏋�
-    /// </summary>
+    /// 棣栦欢妫�楠岀粨鏋� 
+    ///</summary>
     [SugarColumn(ColumnName = "daa026")]
-    public string Daa026 { get; set; }
+    public string? Daa026 { get; set; }
 
     /// <summary>
-    ///     宸叉姤妫�锛�0-鏈姤妫�锛�1-宸叉姤妫�
-    /// </summary>
+    /// 宸叉姤妫�锛�0-鏈姤妫�锛�1-宸叉姤妫� 
+    ///</summary>
     [SugarColumn(ColumnName = "is_reportcheck")]
     public int? IsReportcheck { get; set; }
 
     /// <summary>
-    ///     鎶ユ浜�
-    /// </summary>
+    /// 鎶ユ浜� 
+    ///</summary>
     [SugarColumn(ColumnName = "usname")]
-    public string Usname { get; set; }
+    public string? Usname { get; set; }
 
     /// <summary>
-    ///     鎶ユ鏃堕棿
-    /// </summary>
+    /// 鎶ユ鏃堕棿 
+    ///</summary>
     [SugarColumn(ColumnName = "reporttime")]
     public DateTime? Reporttime { get; set; }
 
     /// <summary>
-    ///     鏈哄彴缂栧彿
-    /// </summary>
+    /// 鏈哄彴缂栧彿 
+    ///</summary>
     [SugarColumn(ColumnName = "machine_no")]
-    public string MachineNo { get; set; }
+    public string? MachineNo { get; set; }
 
     /// <summary>
-    ///     澶囨枡瀹屾垚1-瀹屾垚锛�0鏈畬鎴�
-    /// </summary>
+    /// 澶囨枡瀹屾垚1-瀹屾垚锛�0鏈畬鎴� 
+    ///</summary>
     [SugarColumn(ColumnName = "daa027")]
     public int? Daa027 { get; set; }
 
     /// <summary>
-    ///     澶囨枡瀹屾垚鏃堕棿
-    /// </summary>
+    /// 澶囨枡瀹屾垚鏃堕棿 
+    ///</summary>
     [SugarColumn(ColumnName = "daa028")]
-    public string Daa028 { get; set; }
+    public string? Daa028 { get; set; }
 
     /// <summary>
-    ///     鏍囧噯宸ユ椂
-    /// </summary>
+    /// 鏍囧噯宸ユ椂 
+    ///</summary>
     [SugarColumn(ColumnName = "prod_hour")]
     public int? ProdHour { get; set; }
 
     /// <summary>
-    ///     鍗曚汉灏忔椂浜ц兘
-    /// </summary>
+    /// 鍗曚汉灏忔椂浜ц兘 
+    ///</summary>
     [SugarColumn(ColumnName = "person_hour_capacity")]
     public int? PersonHourCapacity { get; set; }
 
     /// <summary>
-    ///     鐞嗚鏍囦骇
-    /// </summary>
+    /// 鐞嗚鏍囦骇 
+    ///</summary>
     [SugarColumn(ColumnName = "the_capacity")]
     public int? TheCapacity { get; set; }
 
     /// <summary>
-    ///     璁″垝鐢ㄤ汉鏁�
-    /// </summary>
+    /// 璁″垝鐢ㄤ汉鏁� 
+    ///</summary>
     [SugarColumn(ColumnName = "plan_personnel")]
     public int? PlanPersonnel { get; set; }
 
     /// <summary>
-    ///     璁″垝鏍囧噯浜ц兘
-    /// </summary>
+    /// 璁″垝鏍囧噯浜ц兘 
+    ///</summary>
     [SugarColumn(ColumnName = "plan_capacity")]
     public int? PlanCapacity { get; set; }
 
     /// <summary>
-    ///     鐞嗚鐢ㄦ椂/M
-    /// </summary>
+    /// 鐞嗚鐢ㄦ椂/M 
+    ///</summary>
     [SugarColumn(ColumnName = "the_min")]
     public int? TheMin { get; set; }
 
     /// <summary>
-    ///     鐞嗚鐢ㄦ椂/H
-    /// </summary>
+    /// 鐞嗚鐢ㄦ椂/H 
+    ///</summary>
     [SugarColumn(ColumnName = "the_hour")]
     public int? TheHour { get; set; }
 
     /// <summary>
-    ///     绾夸綋绫诲埆
-    /// </summary>
+    /// 绾夸綋绫诲埆 
+    ///</summary>
     [SugarColumn(ColumnName = "line_type")]
-    public string LineType { get; set; }
+    public string? LineType { get; set; }
 
     /// <summary>
-    ///     鏍囧噯浜烘暟
-    /// </summary>
+    /// 鏍囧噯浜烘暟 
+    ///</summary>
     [SugarColumn(ColumnName = "personnel")]
     public int? Personnel { get; set; }
 
     /// <summary>
-    ///     鎹㈢嚎鏃堕棿
-    /// </summary>
+    /// 鎹㈢嚎鏃堕棿 
+    ///</summary>
     [SugarColumn(ColumnName = "change_line_time")]
     public int? ChangeLineTime { get; set; }
 
     /// <summary>
-    ///     浼戞伅鏃堕棿
-    /// </summary>
+    /// 浼戞伅鏃堕棿 
+    ///</summary>
     [SugarColumn(ColumnName = "rest_time")]
     public int? RestTime { get; set; }
 
     /// <summary>
-    ///     鎺掍骇搴忓彿
-    /// </summary>
+    /// 鎺掍骇搴忓彿 
+    ///</summary>
     [SugarColumn(ColumnName = "schedule_order")]
     public int? ScheduleOrder { get; set; }
 
     /// <summary>
-    ///     MES棰勮寮�宸ユ椂闂�
-    /// </summary>
+    /// MES棰勮寮�宸ユ椂闂� 
+    ///</summary>
     [SugarColumn(ColumnName = "mes_start_prod")]
     public DateTime? MesStartProd { get; set; }
 
     /// <summary>
-    ///     MES棰勮瀹屽伐鏃堕棿
-    /// </summary>
+    /// MES棰勮瀹屽伐鏃堕棿 
+    ///</summary>
     [SugarColumn(ColumnName = "mes_end_prod")]
     public DateTime? MesEndProd { get; set; }
 
     /// <summary>
-    ///     鎺掍骇鎺ㄩ�佹爣璇�
-    /// </summary>
+    /// 鎺掍骇鎺ㄩ�佹爣璇� 
+    ///</summary>
     [SugarColumn(ColumnName = "prodts")]
     public int? Prodts { get; set; }
 
     /// <summary>
-    ///     棰勮澶囨枡鏃堕棿
-    /// </summary>
+    /// 棰勮澶囨枡鏃堕棿 
+    ///</summary>
     [SugarColumn(ColumnName = "prepare_time")]
     public DateTime? PrepareTime { get; set; }
 
     /// <summary>
-    ///     鎻掍欢鎶曞叆浜烘暟
-    /// </summary>
+    /// 鎻掍欢鎶曞叆浜烘暟 
+    ///</summary>
     [SugarColumn(ColumnName = "cj_worker")]
     public int? CjWorker { get; set; }
 
     /// <summary>
-    ///     鎻掍欢璁″垝鎶曞叆浜烘暟
-    /// </summary>
+    /// 鎻掍欢璁″垝鎶曞叆浜烘暟 
+    ///</summary>
     [SugarColumn(ColumnName = "p_cj_worker")]
     public int? PCjWorker { get; set; }
 
     /// <summary>
-    ///     鎻掍欢鏃ヤ骇閲�
-    /// </summary>
+    /// 鎻掍欢鏃ヤ骇閲� 
+    ///</summary>
     [SugarColumn(ColumnName = "cj_daily_out")]
     public int? CjDailyOut { get; set; }
 
     /// <summary>
-    ///     鎻掍欢鏍囧噯宸ユ椂
-    /// </summary>
+    /// 鎻掍欢鏍囧噯宸ユ椂 
+    ///</summary>
     [SugarColumn(ColumnName = "cj_std_hour")]
     public int? CjStdHour { get; set; }
 
     /// <summary>
-    ///     閿$剨鎶曞叆浜烘暟
-    /// </summary>
+    /// 閿$剨鎶曞叆浜烘暟 
+    ///</summary>
     [SugarColumn(ColumnName = "hx_worker")]
     public int? HxWorker { get; set; }
 
     /// <summary>
-    ///     閿$剨璁″垝鎶曞叆浜烘暟
-    /// </summary>
+    /// 閿$剨璁″垝鎶曞叆浜烘暟 
+    ///</summary>
     [SugarColumn(ColumnName = "p_hx_worker")]
     public int? PHxWorker { get; set; }
 
     /// <summary>
-    ///     閿$剨鏃ヤ骇閲�
-    /// </summary>
+    /// 閿$剨鏃ヤ骇閲� 
+    ///</summary>
     [SugarColumn(ColumnName = "hx_daily_out")]
     public int? HxDailyOut { get; set; }
 
     /// <summary>
-    ///     閿$剨鏍囧噯宸ユ椂
-    /// </summary>
+    /// 閿$剨鏍囧噯宸ユ椂 
+    ///</summary>
     [SugarColumn(ColumnName = "hx_std_hour")]
     public int? HxStdHour { get; set; }
 
     /// <summary>
-    ///     鎻掍欢鏁伴噺
-    /// </summary>
+    /// 鎻掍欢鏁伴噺 
+    ///</summary>
     [SugarColumn(ColumnName = "cj_num")]
     public int? CjNum { get; set; }
 
     /// <summary>
-    ///     瀹㈡埛
-    /// </summary>
+    /// 瀹㈡埛 
+    ///</summary>
     [SugarColumn(ColumnName = "cust")]
-    public string Cust { get; set; }
+    public string? Cust { get; set; }
 
     /// <summary>
-    ///     鏄惁棣栨
-    /// </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/entity/Womdab.cs b/entity/Womdab.cs
index 4521451..c3f1fc6 100644
--- a/entity/Womdab.cs
+++ b/entity/Womdab.cs
@@ -8,228 +8,236 @@
 public class Womdab
 {
     /// <summary>
-    ///     榛樿鍊�: (newid())
-    /// </summary>
+    ///  
+    /// 榛樿鍊�: (newid())
+    ///</summary>
     [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
     public Guid Guid { get; set; }
 
     /// <summary>
-    /// </summary>
+    ///  
+    ///</summary>
     [SugarColumn(ColumnName = "daaGuid")]
     public Guid? DaaGuid { get; set; }
 
     /// <summary>
-    ///     鑷鍒�
-    /// </summary>
+    /// 鑷鍒� 
+    ///</summary>
     [SugarColumn(ColumnName = "id")]
     public int? Id { get; set; }
 
     /// <summary>
-    ///     PID
-    /// </summary>
+    /// PID 
+    ///</summary>
     [SugarColumn(ColumnName = "pid")]
     public int? Pid { get; set; }
 
     /// <summary>
-    ///     宸ュ崟鍗曞彿
-    /// </summary>
+    /// 宸ュ崟鍗曞彿 
+    ///</summary>
     [SugarColumn(ColumnName = "dab001")]
     public string? Dab001 { get; set; }
 
     /// <summary>
-    ///     搴忓彿
-    /// </summary>
+    /// 搴忓彿 
+    ///</summary>
     [SugarColumn(ColumnName = "dab002")]
     public int? Dab002 { get; set; }
 
     /// <summary>
-    ///     鏉愭枡缂栫爜
-    /// </summary>
+    /// 鏉愭枡id 
+    ///</summary>
     [SugarColumn(ColumnName = "dab003")]
     public string? Dab003 { get; set; }
 
     /// <summary>
-    ///     鏉愭枡鍚嶇О
-    /// </summary>
+    /// 鏉愭枡鍚嶇О 
+    ///</summary>
     [SugarColumn(ColumnName = "dab004")]
     public string? Dab004 { get; set; }
 
     /// <summary>
-    ///     鏉愭枡瑙勬牸
-    /// </summary>
+    /// 鏉愭枡瑙勬牸 
+    ///</summary>
     [SugarColumn(ColumnName = "dab005")]
     public string? Dab005 { get; set; }
 
     /// <summary>
-    ///     闇�棰嗙敤閲�
-    /// </summary>
+    /// 闇�棰嗙敤閲� 
+    ///</summary>
     [SugarColumn(ColumnName = "dab006")]
     public decimal? Dab006 { get; set; }
 
     /// <summary>
-    ///     宸查鐢ㄩ噺
-    /// </summary>
+    /// 宸查鐢ㄩ噺 
+    ///</summary>
     [SugarColumn(ColumnName = "dab007")]
     public decimal? Dab007 { get; set; }
 
     /// <summary>
-    ///     宸ヨ壓
-    /// </summary>
+    /// 宸ヨ壓 
+    ///</summary>
     [SugarColumn(ColumnName = "dab008")]
     public string? Dab008 { get; set; }
 
     /// <summary>
-    ///     鍗曚綅
-    /// </summary>
+    /// 鍗曚綅 
+    ///</summary>
     [SugarColumn(ColumnName = "dab009")]
     public string? Dab009 { get; set; }
 
     /// <summary>
-    ///     鏉愭枡绫诲瀷
-    /// </summary>
+    /// 鏉愭枡绫诲瀷 
+    ///</summary>
     [SugarColumn(ColumnName = "dab010")]
     public string? Dab010 { get; set; }
 
     /// <summary>
-    ///     涓绘枡
-    /// </summary>
+    /// 涓绘枡 
+    ///</summary>
     [SugarColumn(ColumnName = "dab011")]
     public string? Dab011 { get; set; }
 
     /// <summary>
-    ///     缁勬垚鐢ㄩ噺
-    /// </summary>
+    /// 缁勬垚鐢ㄩ噺 
+    ///</summary>
     [SugarColumn(ColumnName = "dab012")]
     public int? Dab012 { get; set; }
 
     /// <summary>
-    ///     搴曟暟
-    /// </summary>
+    /// 搴曟暟 
+    ///</summary>
     [SugarColumn(ColumnName = "dab013")]
     public int? Dab013 { get; set; }
 
     /// <summary>
-    ///     鏄惁鏇挎枡
-    /// </summary>
+    /// 鏄惁鏇挎枡 
+    ///</summary>
     [SugarColumn(ColumnName = "dab014")]
     public string? Dab014 { get; set; }
 
     /// <summary>
-    ///     鐐逛綅
-    /// </summary>
+    /// 鐐逛綅 
+    ///</summary>
     [SugarColumn(ColumnName = "dab015")]
     public string? Dab015 { get; set; }
 
     /// <summary>
-    ///     鎶曟枡鍗曞彿
-    /// </summary>
+    /// 鎶曟枡鍗曞彿 
+    ///</summary>
     [SugarColumn(ColumnName = "dab016")]
     public string? Dab016 { get; set; }
 
     /// <summary>
-    ///     浠撳簱缂栫爜
-    /// </summary>
+    /// 浠撳簱缂栫爜 
+    ///</summary>
     [SugarColumn(ColumnName = "dab017")]
     public string? Dab017 { get; set; }
 
     /// <summary>
-    ///     浠撳簱鍚嶇О
-    /// </summary>
+    /// 浠撳簱鍚嶇О 
+    ///</summary>
     [SugarColumn(ColumnName = "dab018")]
     public string? Dab018 { get; set; }
 
     /// <summary>
-    ///     棰嗘枡鏂瑰紡
-    /// </summary>
+    /// 棰嗘枡鏂瑰紡 
+    ///</summary>
     [SugarColumn(ColumnName = "dab019")]
     public string? Dab019 { get; set; }
 
     /// <summary>
-    ///     鍥哄畾鎹熻��
-    /// </summary>
+    /// 鍥哄畾鎹熻�� 
+    ///</summary>
     [SugarColumn(ColumnName = "scrapqty")]
     public int? Scrapqty { get; set; }
 
     /// <summary>
-    ///     鍙樺姩鎹熻�楃巼
-    /// </summary>
+    /// 鍙樺姩鎹熻�楃巼 
+    ///</summary>
     [SugarColumn(ColumnName = "scraprate")]
     public int? Scraprate { get; set; }
 
     /// <summary>
-    ///     鎶曟枡鍗曡id
-    /// </summary>
+    /// 鎶曟枡鍗曡id 
+    ///</summary>
     [SugarColumn(ColumnName = "erpid")]
     public int? Erpid { get; set; }
 
     /// <summary>
-    ///     鎶曟枡鍗曞ごid
-    /// </summary>
+    /// 鎶曟枡鍗曞ごid 
+    ///</summary>
     [SugarColumn(ColumnName = "eid")]
     public int? Eid { get; set; }
 
     /// <summary>
-    ///     瀹為鐢ㄩ噺
-    ///     榛樿鍊�: ((0))
-    /// </summary>
+    /// 瀹為鐢ㄩ噺 
+    /// 榛樿鍊�: ((0))
+    ///</summary>
     [SugarColumn(ColumnName = "dab020")]
     public decimal? Dab020 { get; set; }
 
     /// <summary>
-    ///     琛ラ鏁伴噺
-    ///     榛樿鍊�: ((0))
-    /// </summary>
+    /// 琛ラ鏁伴噺 
+    /// 榛樿鍊�: ((0))
+    ///</summary>
     [SugarColumn(ColumnName = "dab021")]
     public decimal? Dab021 { get; set; }
 
     /// <summary>
-    ///     閫�鏂欐暟閲�
-    ///     榛樿鍊�: ((0))
-    /// </summary>
+    /// 閫�鏂欐暟閲� 
+    /// 榛樿鍊�: ((0))
+    ///</summary>
     [SugarColumn(ColumnName = "dab022")]
     public decimal? Dab022 { get; set; }
 
     /// <summary>
-    ///     瓒呴鏁伴噺
-    ///     榛樿鍊�: ((0))
-    /// </summary>
+    /// 瓒呴鏁伴噺 
+    /// 榛樿鍊�: ((0))
+    ///</summary>
     [SugarColumn(ColumnName = "dab023")]
     public decimal? Dab023 { get; set; }
 
     /// <summary>
-    ///     鑹搧閫�鏂�
-    ///     榛樿鍊�: ((0))
-    /// </summary>
+    /// 鑹搧閫�鏂� 
+    /// 榛樿鍊�: ((0))
+    ///</summary>
     [SugarColumn(ColumnName = "lp_tl")]
     public int? LpTl { get; set; }
 
     /// <summary>
-    ///     鏉ユ枡涓嶈壇
-    ///     榛樿鍊�: ((0))
-    /// </summary>
+    /// 鏉ユ枡涓嶈壇 
+    /// 榛樿鍊�: ((0))
+    ///</summary>
     [SugarColumn(ColumnName = "ll_bl")]
     public int? LlBl { get; set; }
 
     /// <summary>
-    ///     浣滀笟涓嶈壇
-    ///     榛樿鍊�: ((0))
-    /// </summary>
+    /// 浣滀笟涓嶈壇 
+    /// 榛樿鍊�: ((0))
+    ///</summary>
     [SugarColumn(ColumnName = "zy_bl")]
     public int? ZyBl { get; set; }
 
     /// <summary>
-    ///     鍚堝苟鏍囪瘑
-    ///     榛樿鍊�: ((0))
-    /// </summary>
+    /// 鍚堝苟鏍囪瘑 
+    /// 榛樿鍊�: ((0))
+    ///</summary>
     [SugarColumn(ColumnName = "hb_flag")]
     public int? HbFlag { get; set; }
 
     /// <summary>
-    ///     鍚堝苟鍗曞彿
-    /// </summary>
+    /// 鍚堝苟鍗曞彿 
+    ///</summary>
     [SugarColumn(ColumnName = "hb_no")]
     public string? HbNo { get; set; }
 
+    /// <summary>
+    /// 鐗╂枡缂栫爜 
+    ///</summary>
+    [SugarColumn(ColumnName = "dab024")]
+    public string? Dab024 { get; set; }
+
 
     // 鍔ㄦ�佹坊鍔犵殑灞炴��
     [SugarColumn(IsIgnore = true)] public decimal? wNum { get; set; }
diff --git a/service/Warehouse/MesItemBlDetailManager.cs b/service/Warehouse/MesItemBlDetailManager.cs
new file mode 100644
index 0000000..3d70b99
--- /dev/null
+++ b/service/Warehouse/MesItemBlDetailManager.cs
@@ -0,0 +1,11 @@
+锘縰sing NewPdaSqlServer.DB;
+using NewPdaSqlServer.entity;
+
+namespace NewPdaSqlServer.service.Warehouse;
+
+public class MesItemBlDetailManager : Repository<MesItemBlDetail>
+{
+    //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
+
+    //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 MesItemBlDetailManager.cs
+}
\ No newline at end of file
diff --git a/service/Warehouse/MesItemBlManager.cs b/service/Warehouse/MesItemBlManager.cs
new file mode 100644
index 0000000..a89cb7e
--- /dev/null
+++ b/service/Warehouse/MesItemBlManager.cs
@@ -0,0 +1,1733 @@
+锘縰sing NewPdaSqlServer.DB;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.util;
+using SqlSugar;
+
+namespace NewPdaSqlServer.service.Warehouse;
+
+public class MesItemBlManager : Repository<MesItemBl>
+{
+    #region 鐢熶骇琛ユ枡
+
+    /// <summary>
+    ///     鑾峰彇鐢熶骇琛ユ枡鍗曞彿鍒楄〃
+    /// </summary>
+    /// <returns>琛ユ枡鍗曞彿鍒楄〃</returns>
+    public List<string> GetSCBLBillNo()
+    {
+        var list = Db.Queryable<MesItemBl>()
+            .Where(s => (s.Bl018 ?? false) == true
+                        && (s.Bl019 ?? false) == false
+                        && s.Bl008 == "鐢熶骇琛ユ枡")
+            .Select(s => s.BlNo)
+            .ToList();
+        return list;
+    }
+
+    /// <summary>
+    ///     鏍规嵁鍗曞彿鑾峰彇鐢熶骇琛ユ枡鍗曟槑缁�  prc_rf_pda_scan_zout_showbl
+    /// </summary>
+    /// <param name="billNo">琛ユ枡鍗曞彿</param>
+    /// <returns>琛ユ枡鍗曟槑缁嗗垪琛�</returns>
+    public List<MesItemBlDetail> GetMesItemBlDetailByBillNo(
+        WarehouseQuery query)
+    {
+        if (string.IsNullOrEmpty(query.billNo))
+            throw new Exception("璇烽�夊崟鎹彿锛�");
+
+        // 妫�鏌ヨˉ鏂欏崟鏄惁瀛樺湪涓斾负鐢熶骇琛ユ枡绫诲瀷
+        var mesItemBl = Db.Queryable<MesItemBl>()
+            .Where(a => a.BlNo == query.billNo && a.Bl008 == "鐢熶骇琛ユ枡")
+            .First();
+
+        if (mesItemBl == null)
+            throw new Exception("鍗曟嵁鍙蜂笉姝g‘锛�");
+
+        if (mesItemBl.Bl019 == true)
+            throw new Exception("鍗曟嵁鍙峰凡瀹屾垚锛�");
+
+        // 鑾峰彇鏈畬鎴愮殑琛ユ枡鍗曟槑缁�
+        var blDetails = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) =>
+                new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
+            .Where((a, b) => a.BlNo == query.billNo
+                             && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
+            .Select((a, b) => new MesItemBlDetail
+            {
+                Bld012 = b.Bld012,
+                Bld002 = b.Bld002,
+                Bld003 = b.Bld003,
+                Bld004 = b.Bld004,
+                Bld007 = b.Bld007,
+                Bld008 = b.Bld008
+            })
+            .ToList();
+
+        return blDetails;
+    }
+
+    /// <summary>
+    ///     鎵弿鏉$爜  prc_rf_pda_scan_zout_barcode3
+    /// </summary>
+    /// <param name="query">鏌ヨ鍙傛暟</param>
+    /// <returns>鎵弿缁撴灉</returns>
+    /// <remarks>
+    ///     鍙傛暟璇存槑:
+    ///     - billNo: 鍗曟嵁鍙�(蹇呭~)
+    ///     - barcode: 鏉$爜(蹇呭~)
+    ///     - userName: 鐢ㄦ埛鍚�
+    ///     - blNo: 琛ユ枡鍗曞彿(蹇呭~)
+    /// </remarks>
+    public (bool success, List<PendingMaterialDto> pendingList) SctlScanBarcode(
+        WarehouseQuery query)
+    {
+        #region 鍙傛暟鏍¢獙
+
+        if (string.IsNullOrEmpty(query.billNo))
+            throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
+
+        if (string.IsNullOrEmpty(query.barcode))
+            throw new Exception("璇锋壂鎻忔潯鐮侊紒");
+
+        if (string.IsNullOrEmpty(query.userName))
+            throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒");
+
+        if (string.IsNullOrEmpty(query.blNo))
+            throw new Exception("琛ユ枡鍗曞彿涓嶈兘涓虹┖锛�");
+
+        #endregion
+
+        // 妫�楠屾槸鍚﹂噸澶嶆壂鎻�
+        var exists = Db.Queryable<MesInvItemOutCDetails>()
+            .Where(b => b.ItemBarcode == query.barcode)
+            .Any();
+
+        if (exists)
+            throw new Exception("姝ゆ潯鐮佸凡鎵弿,鍕块噸澶嶆壂鐮侊紒");
+
+        // 鏌ヨ鏉$爜搴撳瓨淇℃伅
+        var stockBarcode = Db.Queryable<MesInvItemStocks>()
+            .Where(t => t.ItemBarcode == query.barcode && t.Quantity > 0)
+            .First();
+
+        if (stockBarcode == null)
+            throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮�,璇锋牳瀵癸紒{query.barcode}");
+
+        // 妫�鏌ヨˉ鏂欏崟鐘舵��
+        var mesItemBl = Db.Queryable<MesItemBl>()
+            .Where(a => a.BlNo == query.blNo && (a.Bl018 ?? false) == false)
+            .First();
+
+        if (mesItemBl == null)
+            throw new Exception($"鐢宠鍗� {query.blNo} 宸叉挙鍥烇紒");
+
+        if (mesItemBl.Bl018 != true)
+            throw new Exception($"鐢宠鍗� {query.blNo} 鏈鏍革紒");
+
+        if (mesItemBl.Bl019 == true)
+            throw new Exception($"鐢宠鍗� {query.blNo} 宸插畬缁擄紒");
+
+        // 鑾峰彇琛ユ枡鍗曟槑缁嗗苟鏍¢獙
+        var blDetail = Db.Queryable<MesItemBlDetail>()
+            .Where(b =>
+                b.Mid == mesItemBl.Id && b.Bld012 == stockBarcode.ItemId)
+            .First();
+
+        if (blDetail == null)
+            throw new Exception($"鐢宠鍗曚笉瀛樺湪姝ょ墿鏂� {stockBarcode.ItemNo} 璇风‘璁わ紒");
+
+        // 妫�鏌ュ緟琛ユ暟閲�
+        var quantity = (blDetail.Bld007 ?? 0) - (blDetail.Bld008 ?? 0);
+        if (quantity == 0)
+            throw new Exception("鐗╂枡宸叉壂鐮佸畬鎴愶紝璇锋牳瀵癸紒");
+
+        // 妫�鏌ュ伐鍗曚俊鎭�
+        var womdaa = Db.Queryable<Womdaa>()
+            .Where(a => a.Daa001 == query.billNo)
+            .First();
+
+        if (womdaa == null)
+            throw new Exception($"宸ュ崟 {query.billNo} 涓嶅瓨鍦紝璇风‘璁わ紒");
+
+        // 妫�鏌ュ鏂欐槑缁�
+        var womdab = Db.Queryable<Womdab>()
+            .Where(b => b.Dab001 == query.billNo && b.Erpid == blDetail.Bld014)
+            .First();
+
+        if (womdab == null)
+            throw new Exception($"澶囨枡鏄庣粏涓嶅瓨鍦ㄦ鐗╂枡 {stockBarcode.ItemNo} 璇风‘璁わ紒");
+
+        if (stockBarcode.Quantity > quantity)
+        {
+            // 鑾峰彇寰呭彂鏂欐槑缁嗗垪琛�
+            var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) =>
+                    new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
+                .Where((a, b) => a.BlNo == query.blNo
+                                 && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
+                .Select((a, b) => new PendingMaterialDto
+                {
+                    SectionCode = b.Bld012.ToString(),
+                    ItemNo = b.Bld002,
+                    ItemName = b.Bld003,
+                    ItemSpec = b.Bld004,
+                    PendingQty = (b.Bld007 ?? 0) - (b.Bld008 ?? 0)
+                })
+                .ToList();
+
+            return (false, pendingList);
+        }
+
+        // 寮�鍚簨鍔″鐞�
+        var success = UseTransaction(db =>
+        {
+            // 鑾峰彇鎴栧垱寤哄嚭搴撳崟
+            var outId = Guid.NewGuid();
+            var outNo = BillNo.GetBillNo("SCBL");
+
+            var existingOut = db.Queryable<MesInvItemOuts>()
+                .Where(a => a.BbillNo == query.blNo
+                            && a.DepotCode == womdab.Dab017
+                            && a.OutDate.Value.Date.ToString("yyyy-MM-dd") ==
+                            DateTime.Now.Date.ToString("yyyy-MM-dd")
+                            && a.BillTypeId == 200
+                            && a.TransactionNo == 209
+                            && a.Status == 0)
+                .First();
+
+            if (existingOut != null)
+            {
+                outId = existingOut.Guid;
+                outNo = existingOut.ItemOutNo;
+            }
+            else
+            {
+                // 鎻掑叆鍑哄簱鍗曚富琛�
+                db.Insertable(new MesInvItemOuts
+                {
+                    Guid = outId,
+                    ItemOutNo = outNo,
+                    TaskNo = query.blNo,
+                    CreateBy = query.userName,
+                    CreateDate = DateTime.Now,
+                    LastupdateBy = query.userName,
+                    LastupdateDate = DateTime.Now,
+                    BillTypeId = 200,
+                    TransactionNo = 209,
+                    Remark = mesItemBl.Bl007,
+                    DepotCode = womdab.Dab017,
+                    OutPart = womdaa.Daa013,
+                    FType = 0,
+                    Factory = stockBarcode.Factory,
+                    Company = stockBarcode.Company,
+                    WorkNo = womdaa.Daa021,
+                    BoardItem = womdaa.Daa002,
+                    PbillNo = womdaa.Daa001,
+                    OutDate = DateTime.Now,
+                    Status = 0,
+                    BbillNo = query.blNo
+                }).IgnoreColumns(true).ExecuteCommand();
+            }
+
+            // 妫�鏌ュ苟鏇存柊鍑哄簱鍗曠墿鏂欐槑缁�
+            var itemCount = db.Queryable<MesInvItemOutItems>()
+                .Where(i =>
+                    i.ItemOutId == outId && i.ItemId == stockBarcode.ItemId)
+                .Count();
+
+            if (itemCount > 0)
+            {
+                // 鏇存柊宸插瓨鍦ㄧ殑鐗╂枡鏄庣粏鏁伴噺
+                db.Updateable<MesInvItemOutItems>()
+                    .SetColumns(i =>
+                        i.Quantity == i.Quantity + stockBarcode.Quantity)
+                    .Where(i =>
+                        i.ItemOutId == outId && i.ItemId == stockBarcode.ItemId)
+                    .ExecuteCommand();
+            }
+            else
+            {
+                // 鎻掑叆鏂扮殑鐗╂枡鏄庣粏璁板綍
+                db.Insertable(new MesInvItemOutItems
+                {
+                    Guid = Guid.NewGuid(),
+                    ItemOutId = outId,
+                    ItemNo = blDetail.Bld002,
+                    Quantity = stockBarcode.Quantity,
+                    CreateBy = query.userName,
+                    CreateDate = DateTime.Now,
+                    LastupdateBy = query.userName,
+                    LastupdateDate = DateTime.Now,
+                    Factory = stockBarcode.Factory,
+                    Company = stockBarcode.Company,
+                    DepotCode = womdab.Dab017,
+                    TaskNo = query.blNo,
+                    WorkNo = womdaa.Daa021,
+                    WorkLine = blDetail.Bld013,
+                    ErpItemNo = womdab.Dab003,
+                    ErpId = womdab.Eid,
+                    ErpAutoid = womdab.Erpid,
+                    PbillNo = query.billNo,
+                    ItemId = blDetail.Bld012,
+                    // Unit = blDetail.Bld009,
+                    // DepotId = (int)stockBarcode.DepotsId
+                }).IgnoreColumns(true).ExecuteCommand();
+            }
+
+            // 鎻掑叆鍑哄簱鍗曟潯鐮佹槑缁�
+            db.Insertable(new MesInvItemOutCDetails
+            {
+                Guid = Guid.NewGuid(),
+                ItemOutId = outId,
+                ItemBarcode = stockBarcode.ItemBarcode,
+                ItemNo = stockBarcode.ItemNo,
+                LotNo = stockBarcode.LotNo,
+                Quantity = stockBarcode.Quantity,
+                ForceOutFlag = 0,
+                CreateBy = query.userName,
+                CreateDate = DateTime.Now,
+                LastupdateBy = query.userName,
+                LastupdateDate = DateTime.Now,
+                DepotCode = stockBarcode.DepotsCode,
+                DepotSectionCode = stockBarcode.DepotSectionsCode,
+                Remark = blDetail.Bld010,
+                Factory = stockBarcode.Factory,
+                Company = stockBarcode.Company,
+                TaskNoy = mesItemBl.Bl013,
+                BoardStyle = mesItemBl.Bl002,
+                TaskNo = query.blNo,
+                WorkNo = blDetail.Bld001,
+                WorkLine = blDetail.Bld013,
+                SuppNo = stockBarcode.SuppNo,
+                PbillNo = query.billNo,
+                ItemId = blDetail.Bld012,
+                Unit = blDetail.Bld009,
+                DepotId = (int)stockBarcode.DepotsId,
+                EbelnK3id = womdab.Eid,
+                LineK3id = womdab.Erpid
+            }).IgnoreColumns(true).ExecuteCommand();
+
+            // 鎻掑叆涓氬姟浜ゆ槗璁板綍
+            db.Insertable(new MesInvBusiness2
+            {
+                Guid = Guid.NewGuid(),
+                Status = 1,
+                BillTypeId = 200, // p_bill_type_id
+                TransactionCode = "210", // p_transaction_no
+                BusinessType = -1,
+                ItemBarcode = stockBarcode.ItemBarcode,
+                ItemNo = stockBarcode.ItemNo,
+                LotNo = stockBarcode.LotNo,
+                EpFlag = true,
+                Quantity = stockBarcode.Quantity,
+                FromInvDepotsCode = stockBarcode.DepotsCode,
+                FromInvDepotSectionsCode = stockBarcode.DepotSectionsCode,
+                CreateBy = query.userName,
+                CreateDate = DateTime.Now,
+                LastupdateBy = query.userName,
+                LastupdateDate = DateTime.Now,
+                Factory = stockBarcode.Factory,
+                Company = stockBarcode.Company,
+                TaskNo = mesItemBl.Bl012, // Matches C_QTCK.Bl012
+                BillNo = query.blNo,
+                WorkNo = blDetail.Bld001, // Matches C_QTCK_D.Bld001
+                WorkLine = blDetail.Bld013, // Matches C_QTCK_D.Bld013
+                SuppNo = stockBarcode.SuppNo,
+                ItemId = stockBarcode.ItemId,
+                // CkDepot = stockBarcode.DepotsId
+            }).IgnoreColumns(true).ExecuteCommand();
+
+
+            // 鏇存柊宸ュ崟琛ㄦ暟閲�
+            db.Updateable<Womdab>()
+                .SetColumns(it => new Womdab
+                {
+                    Dab007 = (it.Dab007 ?? 0) + stockBarcode.Quantity,
+                    Dab020 = (it.Dab020 ?? 0) + stockBarcode.Quantity,
+                    Dab021 = (it.Dab021 ?? 0) + stockBarcode.Quantity
+                })
+                .Where(it => it.Id == womdab.Id && it.Dab003 == womdab.Dab003)
+                .ExecuteCommand();
+
+            // 鏇存柊琛ユ枡鍗曟槑缁嗗凡琛ユ暟閲�
+            db.Updateable<MesItemBlDetail>()
+                .SetColumns(it => new MesItemBlDetail
+                {
+                    Bld008 = (it.Bld008 ?? 0) + (int)stockBarcode.Quantity
+                })
+                .Where(it => it.Id == blDetail.Id)
+                .ExecuteCommand();
+
+            // 妫�鏌ヨˉ鏂欏崟鏄庣粏鏄惁瀹屾垚
+            var blDetail1 = db.Queryable<MesItemBlDetail>()
+                .Where(it => it.Id == blDetail.Id)
+                .First();
+
+            if ((blDetail1.Bld007 ?? 0) <= (blDetail1.Bld008 ?? 0))
+            {
+                // 鏇存柊鏄庣粏瀹屾垚鐘舵��
+                db.Updateable<MesItemBlDetail>()
+                    .SetColumns(it => it.Bld011 == 1)
+                    .Where(it => it.Id == blDetail1.Id)
+                    .ExecuteCommand();
+            }
+
+            // 鏇存柊搴撳瓨鏁伴噺涓�0
+            db.Updateable<MesInvItemStocks>()
+                .SetColumns(it => it.Quantity == 0)
+                .Where(it => it.Guid == stockBarcode.Guid)
+                .ExecuteCommand();
+
+
+            // 妫�鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴�
+            var unfinishedDetail = db.Queryable<MesItemBlDetail>()
+                .LeftJoin<MesItemBl>((b, a) => a.Id == b.Mid)
+                .Where((b, a) => a.BlNo == query.blNo && (b.Bld011 ?? 0) == 0)
+                .Select((b, a) => b)
+                .First();
+
+            if (unfinishedDetail == null)
+            {
+                // 濡傛灉娌℃湁鏈畬鎴愮殑鏄庣粏锛屾洿鏂拌ˉ鏂欏崟鐘舵�佷负宸插畬鎴�
+                db.Updateable<MesItemBl>()
+                    .SetColumns(it => new MesItemBl
+                    {
+                        Bl019 = true,
+                        WcUser = query.userName,
+                        WcTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+                    })
+                    .Where(it => it.Id == mesItemBl.Id)
+                    .ExecuteCommand();
+            }
+
+            return 1;
+        });
+
+        // 鑾峰彇鏈�缁堢殑寰呭彂鏂欐槑缁嗗垪琛�
+        var finalPendingList = Db.Queryable<MesItemBl, MesItemBlDetail>(
+                (a, b) =>
+                    new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
+            .Where((a, b) => a.BlNo == query.blNo
+                             && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
+            .Select((a, b) => new PendingMaterialDto
+            {
+                SectionCode = b.Bld012.ToString(),
+                ItemNo = b.Bld002,
+                ItemName = b.Bld003,
+                ItemSpec = b.Bld004,
+                PendingQty = (b.Bld007 ?? 0) - (b.Bld008 ?? 0)
+            })
+            .ToList();
+
+        return (true, finalPendingList);
+    }
+
+    /// <summary>
+    ///     鐢熶骇琛ユ枡鍗曟潯鐮佹媶鍒� prc_rf_pda_prnt_zout_barcode2
+    /// </summary>
+    /// <param name="query">鏌ヨ鍙傛暟</param>
+    /// <returns>(鎴愬姛鏍囧織, 寰呭鐞嗗垪琛�)</returns>
+    /// <remarks>
+    ///     鍓嶅彴闇�瑕佷紶鍏ョ殑鍙傛暟:
+    ///     - userName: 鐢ㄦ埛鍚�(蹇呭~)
+    ///     - billNo: 宸ュ崟鍙�(蹇呭~)
+    ///     - barcode: 鐗╂枡鏉$爜(蹇呭~)
+    ///     - Num: 鍙戞枡鏁伴噺(蹇呭~,蹇呴』澶т簬0)
+    ///     - blNo: 琛ユ枡鍗曞彿(蹇呭~)
+    /// </remarks>
+    public (bool success, List<PendingMaterialDto> pendingList) SplitBarcode(
+        WarehouseQuery query)
+    {
+        #region 鍙傛暟鏍¢獙
+
+        if (string.IsNullOrEmpty(query.userName))
+            throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒");
+
+        if (string.IsNullOrEmpty(query.billNo))
+            throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
+
+        if (string.IsNullOrEmpty(query.barcode))
+            throw new Exception("璇锋壂鎻忔潯鐮侊紒");
+
+        if (query.Num <= 0)
+            throw new Exception("璇疯緭鍏ユ纭殑鍙戞枡鏁伴噺锛�");
+
+        if (string.IsNullOrEmpty(query.blNo))
+            throw new Exception("琛ユ枡鍗曞彿涓嶈兘涓虹┖锛�");
+
+        #endregion
+
+        // 妫�楠屾槸鍚﹂噸澶嶆壂鎻�
+        var exists = Db.Queryable<MesInvItemOutCDetails>()
+            .Where(b => b.ItemBarcode == query.barcode)
+            .Any();
+
+        if (exists)
+            throw new Exception("姝ゆ潯鐮佸凡鎵弿,鍕块噸澶嶆壂鐮侊紒");
+
+        // 鏌ヨ鏉$爜搴撳瓨淇℃伅
+        var stockBarcode = Db.Queryable<MesInvItemStocks>()
+            .Where(t => t.ItemBarcode == query.barcode && t.Quantity > 0)
+            .First();
+
+        if (stockBarcode == null)
+            throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮�,璇锋牳瀵癸紒{query.barcode}");
+        
+        var totalQty = stockBarcode.Quantity;
+        string newBarcode = null;
+
+        // 寮�鍚簨鍔″鐞�
+        var success = UseTransaction(db =>
+        {
+            var executeCommand = 0;
+
+            // 鎷嗗垎鏉$爜
+            if (totalQty > query.Num)
+            {
+                var mesItems = db.Queryable<MesItems>()
+                    .Where(s => s.Id == stockBarcode.ItemId).First();
+
+                // 鐢熸垚鏂版潯鐮佸彿
+                newBarcode = BillNo.GetBillNo("TMBH(鏉$爜缂栧彿)", mesItems.ItemNo);
+
+                // 鍐欏叆鏂版潯鐮�
+                executeCommand += db.Insertable(new MesInvItemBarcodes
+                {
+                    Guid = Guid.NewGuid(),
+                    ItemBarcode = newBarcode,
+                    CustNo = stockBarcode.CustomerNo,
+                    // ProductCode = stockBarcode.ProductCode, 
+                    // ItemBarcode2 = stockBarcode.ItemBarcode2,
+                    // ItemCode = stockBarcode.ItemCode,
+                    ItemNo = stockBarcode.ItemNo,
+                    LotNo = stockBarcode.LotNo,
+                    Quantity = query.Num,
+                    EpFlag = true,
+                    TaskNo = stockBarcode.TaskNo,
+                    CreateBy = query.userName,
+                    CreateDate = DateTime.Now,
+                    LastupdateBy = query.userName,
+                    LastupdateDate = DateTime.Now,
+                    OldItemBarcode = query.barcode,
+                    // Mblnr = stockBarcode.Mblnr,
+                    // Zeile = stockBarcode.Zeile,
+                    // RohInId = stockBarcode.RohInId,
+                    // BarcodeStatus = 0,
+                    // OldQty = query.Num,
+                    // Unit = stockBarcode.Unit,
+                    // WeightUnit = stockBarcode.WeightUnit,
+                    Factory = stockBarcode.Factory,
+                    Company = stockBarcode.Company,
+                    BillNo = stockBarcode.BillNo,
+                    BoardStyle = stockBarcode.BoardStyle,
+                    // ColorName = stockBarcode.ColorName,
+                    WorkNo = stockBarcode.WorkNo,
+                    WorkLine = stockBarcode.WorkLine,
+                    // MemoBad = stockBarcode.MemoBad,
+                    ComeFlg = 5,
+                    // Memo = stockBarcode.Memo,
+                    SuppNo = stockBarcode.SuppNo,
+                    // InsDate = stockBarcode.InsDate, // Added InsDate
+                    ItemId = stockBarcode.ItemId,
+                    // ItemUnit = stockBarcode.ItemUnit // Added ItemUnit
+                }).IgnoreColumns(true).ExecuteCommand();
+
+                // 鏇存柊鍘熸潯鐮佹暟閲�
+                executeCommand += db.Updateable<MesInvItemBarcodes>()
+                    .SetColumns(it => it.Quantity == totalQty - query.Num)
+                    .Where(it => it.ItemBarcode == query.barcode)
+                    .ExecuteCommand();
+
+                // 鍒犻櫎鍘熸潯鐮佸簱瀛樿褰�
+                executeCommand += db.Deleteable<MesInvItemStocks>()
+                    .Where(it => it.ItemBarcode == query.barcode)
+                    .ExecuteCommand();
+
+                // 鎻掑叆鍓╀綑鏉$爜鏁伴噺鐨勬柊搴撳瓨璁板綍
+                executeCommand += db.Insertable(new MesInvItemStocks
+                {
+                    Guid = Guid.NewGuid(),
+                    TaskNo = stockBarcode.TaskNo,
+                    ItemBarcode = stockBarcode.ItemBarcode,
+                    ItemNo = stockBarcode.ItemNo,
+                    LotNo = stockBarcode.LotNo,
+                    Quantity = totalQty - query.Num,
+                    EpFlag = stockBarcode.EpFlag,
+                    CustomerNo = stockBarcode.CustomerNo,
+                    ItemWt = stockBarcode.ItemWt,
+                    DepotsCode = stockBarcode.DepotsCode,
+                    DepotsId = stockBarcode.DepotsId,
+                    DepotSectionsCode = stockBarcode.DepotSectionsCode,
+                    CheckDate = stockBarcode.CheckDate,
+                    ItemType = stockBarcode.ItemType,
+                    IndepDate = stockBarcode.IndepDate,
+                    Factory = stockBarcode.Factory,
+                    Company = stockBarcode.Company,
+                    IqcStatus = stockBarcode.IqcStatus,
+                    BoardStyle = stockBarcode.BoardStyle,
+                    WorkNo = stockBarcode.WorkNo,
+                    WorkLine = stockBarcode.WorkLine,
+                    SuppNo = stockBarcode.SuppNo,
+                    ItemId = stockBarcode.ItemId,
+                    // UnitId = stockBarcode.ItemUnit
+                }).IgnoreColumns(true).ExecuteCommand();
+
+                // 鍐欏叆鏂版潯鐮佺殑浜ゆ槗璁板綍
+                executeCommand += db.Insertable(new MesInvBusiness2
+                {
+                    Guid = Guid.NewGuid(),
+                    Status = 1,
+                    BillTypeId = 200, // p_bill_type_id
+                    TransactionCode = "209", // p_transaction_no
+                    BusinessType = -1,
+                    ItemBarcode = newBarcode,
+                    ItemNo = stockBarcode.ItemNo,
+                    LotNo = stockBarcode.LotNo,
+                    EpFlag = true,
+                    Quantity = query.Num,
+                    FromInvDepotsCode = null,
+                    FromInvDepotSectionsCode = null,
+                    ToInvDepotsCode = stockBarcode.DepotsCode,
+                    ToInvDepotSectionsCode = stockBarcode.DepotSectionsCode,
+                    Description = null,
+                    CreateBy = query.userName,
+                    CreateDate = DateTime.Now,
+                    LastupdateBy = query.userName,
+                    LastupdateDate = DateTime.Now,
+                    Factory = stockBarcode.Factory,
+                    Company = stockBarcode.Company,
+                    TaskNo = stockBarcode.TaskNo,
+                    BillNo = stockBarcode.BillNo,
+                    WorkNo = stockBarcode.WorkNo,
+                    WorkLine = stockBarcode.WorkLine,
+                    SuppNo = stockBarcode.SuppNo,
+                    SuppId = stockBarcode.SuppId,
+                    ItemId = stockBarcode.ItemId,
+                    // CkDepot = stockBarcode.DepotsId
+                }).IgnoreColumns(true).ExecuteCommand();
+            }
+            else if (totalQty < query.Num)
+            {
+                throw new Exception("鍙戞枡鏁伴噺澶т簬鏉$爜鏁�,璇锋牳瀵癸紒");
+            }
+
+            if (string.IsNullOrEmpty(newBarcode)) newBarcode = query.barcode;
+            
+            // 妫�鏌ヨˉ鏂欏崟鐘舵��
+            var mesItemBl = Db.Queryable<MesItemBl>()
+                .Where(a => a.BlNo == query.blNo && (a.Bl018 ?? false) == false)
+                .First();
+
+            if (mesItemBl == null)
+                throw new Exception($"鐢宠鍗� {query.blNo} 宸叉挙鍥烇紒");
+
+            if (mesItemBl.Bl018 != true)
+                throw new Exception($"鐢宠鍗� {query.blNo} 鏈鏍革紒");
+
+            if (mesItemBl.Bl019 == true)
+                throw new Exception($"鐢宠鍗� {query.blNo} 宸插畬缁擄紒");
+
+            // 鑾峰彇琛ユ枡鍗曟槑缁嗗苟鏍¢獙
+            var blDetail = Db.Queryable<MesItemBlDetail>()
+                .Where(b =>
+                    b.Mid == mesItemBl.Id && b.Bld012 == stockBarcode.ItemId)
+                .First();
+
+            if (blDetail == null)
+                throw new Exception($"鐢宠鍗曚笉瀛樺湪姝ょ墿鏂� {stockBarcode.ItemNo} 璇风‘璁わ紒");
+
+            var remainingQty = (blDetail.Bld007 ?? 0) - (blDetail.Bld008 ?? 0);
+            if (remainingQty == 0)
+                throw new Exception("鐗╂枡宸叉壂鐮佸畬鎴愶紝璇锋牳瀵癸紒");
+
+            if (query.Num > remainingQty)
+                throw new Exception(
+                    $"鎷嗗垎鏁伴噺锛歿query.Num} 澶т簬寰呭彂鏂欐暟閲忥細{remainingQty}锛岃鏍稿锛�");
+
+            // 妫�鏌ュ伐鍗曚俊鎭�
+            var womdaa = Db.Queryable<Womdaa>()
+                .Where(a => a.Daa001 == query.billNo)
+                .First();
+
+            if (womdaa == null)
+                throw new Exception($"宸ュ崟 {query.billNo} 涓嶅瓨鍦紝璇风‘璁わ紒");
+
+            var womdab = Db.Queryable<Womdab>()
+                .Where(b => b.Dab001 == query.billNo && b.Erpid == blDetail.Bld014)
+                .First();
+
+            if (womdab == null)
+                throw new Exception($"澶囨枡鏄庣粏涓嶅瓨鍦ㄦ鐗╂枡 {stockBarcode.ItemNo} 璇风‘璁わ紒");
+
+            // 妫�鏌ュ凡鍙戞枡鏁伴噺鏄惁瓒呰繃寰呭彂鏂欐暟閲�
+            var sumQty = db.Queryable<MesInvItemOutCDetails>()
+                .Where(it => it.TaskNo == query.blNo && it.ItemId == stockBarcode.ItemId)
+                .Sum(it => it.Quantity);
+
+            if (sumQty > remainingQty)
+            {
+                throw new Exception($"鎷嗗垎鏁伴噺锛歿sumQty} 澶т簬寰呭彂鏂欐暟閲忥細{remainingQty}锛岃鏍稿锛�");
+            }
+
+            // 鑾峰彇鎴栧垱寤哄嚭搴撳崟
+            var itemOut = db.Queryable<MesInvItemOuts>()
+                .Where(a => a.BbillNo == query.blNo
+                            && a.DepotCode == womdab.Dab017
+                            && a.OutDate.Value.Date.ToString("yyyy-MM-dd") ==
+                            DateTime.Now.Date.ToString("yyyy-MM-dd")
+                            && a.BillTypeId == 200
+                            && a.TransactionNo == 209
+                            && a.Status == 0)
+                .First();
+
+            if (itemOut == null)
+            {
+                // 鍒涘缓鏂扮殑鍑哄簱鍗�
+                var outId = Guid.NewGuid();
+                var outNo = BillNo.GetBillNo("SCBL");
+
+                // 鎻掑叆鍑哄簱鍗曚富琛�
+                executeCommand += db.Insertable(new MesInvItemOuts
+                {
+                    Guid = outId,
+                    ItemOutNo = outNo,
+                    TaskNo = query.blNo,
+                    CreateBy = query.userName,
+                    CreateDate = DateTime.Now,
+                    LastupdateBy = query.userName,
+                    LastupdateDate = DateTime.Now,
+                    BillTypeId = 200,
+                    TransactionNo = 209,
+                    Remark = mesItemBl.Bl007,
+                    DepotCode = womdab.Dab017,
+                    OutPart = womdaa.Daa013,
+                    FType = 0,
+                    Factory = stockBarcode.Factory,
+                    Company = stockBarcode.Company,
+                    WorkNo = womdaa.Daa021,
+                    BoardItem = womdaa.Daa002,
+                    PbillNo = womdaa.Daa001,
+                    OutDate = DateTime.Now,
+                    Status = 0,
+                    BbillNo = query.blNo
+                }).IgnoreColumns(true).ExecuteCommand();
+            }
+
+            // 妫�鏌ユ槸鍚﹀凡瀛樺湪鍑哄簱鍗曟槑缁�
+            var itemOutItemCount = db.Queryable<MesInvItemOutItems>()
+                .Where(it =>
+                    it.ItemOutId == itemOut.Guid &&
+                    it.ItemId == stockBarcode.ItemId)
+                .Count();
+
+            if (itemOutItemCount == 0)
+            {
+                // 鎻掑叆鏂扮殑鍑哄簱鍗曟槑缁�
+                executeCommand += db.Insertable(new MesInvItemOutItems
+                {
+                    Guid = Guid.NewGuid(),
+                    ItemOutId = itemOut.Guid,
+                    ItemNo = blDetail.Bld002,
+                    Quantity = query.Num,
+                    CreateBy = query.userName,
+                    CreateDate = DateTime.Now,
+                    LastupdateBy = query.userName,
+                    LastupdateDate = DateTime.Now,
+                    Factory = stockBarcode.Factory,
+                    Company = stockBarcode.Company,
+                    DepotCode = womdab.Dab017,
+                    TaskNo = query.blNo,
+                    WorkNo = womdaa.Daa021,
+                    WorkLine = blDetail.Bld013,
+                    ErpItemNo = womdab.Dab003,
+                    ErpId = womdab.Eid,
+                    ErpAutoid = womdab.Erpid,
+                    PbillNo = query.billNo,
+                    ItemId = blDetail.Bld012,
+                    // Unit = blDetail.Bld009,
+                    // DepotId = (int)stockBarcode.DepotsId
+                }).IgnoreColumns(true).ExecuteCommand();
+            }
+            else
+            {
+                // 鏇存柊宸叉湁鍑哄簱鍗曟槑缁嗘暟閲�
+                executeCommand += db.Updateable<MesInvItemOutItems>()
+                    .SetColumns(it => it.Quantity == it.Quantity + query.Num)
+                    .Where(it =>
+                        it.ItemOutId == itemOut.Guid &&
+                        it.ItemId == stockBarcode.ItemId)
+                    .ExecuteCommand();
+            }
+
+            // 鎻掑叆鍑哄簱鏉$爜鏄庣粏
+            executeCommand += db.Insertable(new MesInvItemOutCDetails
+            {
+                Guid = Guid.NewGuid(),
+                ItemOutId = itemOut.Guid,
+                ItemBarcode = newBarcode ?? query.barcode,
+                ItemNo = stockBarcode.ItemNo,
+                LotNo = stockBarcode.LotNo,
+                Quantity = query.Num,
+                ForceOutFlag = 0,
+                CreateBy = query.userName,
+                CreateDate = DateTime.Now,
+                LastupdateBy = query.userName,
+                LastupdateDate = DateTime.Now,
+                DepotCode = stockBarcode.DepotsCode,
+                DepotSectionCode = stockBarcode.DepotSectionsCode,
+                Remark = blDetail.Bld010,
+                Factory = stockBarcode.Factory,
+                Company = stockBarcode.Company,
+                TaskNoy = mesItemBl.Bl013,
+                BoardStyle = mesItemBl.Bl002,
+                TaskNo = query.blNo,
+                WorkNo = blDetail.Bld001,
+                WorkLine = blDetail.Bld013,
+                SuppNo = stockBarcode.SuppNo,
+                PbillNo = query.billNo,
+                ItemId = blDetail.Bld012,
+                Unit = blDetail.Bld009,
+                DepotId = (int)stockBarcode.DepotsId
+            }).IgnoreColumns(true).ExecuteCommand();
+
+            // 鎻掑叆涓氬姟娴佹按
+            executeCommand += db.Insertable(new MesInvBusiness2
+            {
+                Guid = Guid.NewGuid(),
+                Status = 1,
+                BillTypeId = 200, // p_bill_type_id
+                TransactionCode = "210", // p_transaction_no 
+                BusinessType = 1,
+                ItemBarcode = newBarcode ?? query.barcode,
+                ItemNo = stockBarcode.ItemNo,
+                LotNo = stockBarcode.LotNo,
+                EpFlag = true,
+                Quantity = query.Num,
+                FromInvDepotsCode = stockBarcode.DepotsCode,
+                FromInvDepotSectionsCode = stockBarcode.DepotSectionsCode,
+                Description = null,
+                CreateBy = query.userName,
+                CreateDate = DateTime.Now,
+                LastupdateBy = query.userName,
+                LastupdateDate = DateTime.Now,
+                Factory = stockBarcode.Factory,
+                Company = stockBarcode.Company,
+                TaskNo = mesItemBl.Bl012,
+                BillNo = query.blNo,
+                WorkNo = blDetail.Bld001,
+                WorkLine = blDetail.Bld013,
+                SuppNo = stockBarcode.SuppNo,
+                ItemId = stockBarcode.ItemId,
+                // CkDepot = stockBarcode.DepotsId
+            }).IgnoreColumns(true).ExecuteCommand();
+
+            // 鏇存柊宸ュ崟琛ㄦ暟閲�
+            executeCommand += db.Updateable<Womdab>()
+                .SetColumns(it => new Womdab
+                {
+                    Dab007 = (it.Dab007 ?? 0) + query.Num, // 宸ュ崟鏁伴噺
+                    Dab020 = (it.Dab020 ?? 0) + query.Num, // 宸插彂鏂欐暟閲�
+                    Dab021 = (it.Dab021 ?? 0) + query.Num // 宸插彂鏂欐暟閲�
+                })
+                .Where(it => it.Id == womdab.Id && it.Dab003 == womdab.Dab003)
+                .IgnoreColumns(true)
+                .ExecuteCommand();
+
+            // 鏇存柊琛ユ枡鍗曟槑缁嗗凡琛ユ暟閲�
+            executeCommand += db.Updateable<MesItemBlDetail>()
+                .SetColumns(it => new MesItemBlDetail
+                {
+                    Bld008 = (it.Bld008 ?? 0) + (int)query.Num
+                })
+                .Where(it => it.Id == blDetail.Id)
+                .ExecuteCommand();
+
+            // 鑾峰彇鏇存柊鍚庣殑琛ユ枡鍗曟槑缁嗘暟閲�
+            var updatedDetail = db.Queryable<MesItemBlDetail>()
+                .Where(it => it.Id == blDetail.Id)
+                .Select(it => new { it.Bld007, it.Bld008 })
+                .First();
+
+            if ((updatedDetail.Bld007 ?? 0) <= (updatedDetail.Bld008 ?? 0))
+            {
+                // 鏇存柊鏄庣粏瀹屾垚鐘舵��
+                executeCommand += db.Updateable<MesItemBlDetail>()
+                    .SetColumns(it => new MesItemBlDetail { Bld011 = 1 })
+                    .Where(it => it.Id == blDetail.Id)
+                    .ExecuteCommand();
+            }
+
+            // 妫�鏌ユ槸鍚﹁繕鏈夋湭瀹屾垚鐨勬槑缁�
+
+            var unfinishedDetail = db.Queryable<MesItemBlDetail>()
+                .Where(it => it.Mid == mesItemBl.Id && (it.Bld011 ?? 0) == 0)
+                .First();
+
+            if (unfinishedDetail == null)
+            {
+                // 濡傛灉娌℃湁鎵惧埌鏈畬鎴愭槑缁嗭紝鍒欐洿鏂拌ˉ鏂欏崟鐘舵�佷负宸插畬鎴�
+                executeCommand += db.Updateable<MesItemBl>()
+                    .SetColumns(it => new MesItemBl
+                    {
+                        Bl019 = true,
+                        WcUser = query.userName,
+                        WcTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+                    })
+                    .Where(it => it.Id == mesItemBl.Id)
+                    .ExecuteCommand();
+            }
+            
+            if (executeCommand <= 1) throw new Exception("鏇存柊澶辫触");
+
+            return executeCommand;
+        }) > 0;
+
+        // 鑾峰彇鏈�缁堢殑寰呭彂鏂欐槑缁嗗垪琛�
+        var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) =>
+                new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
+            .Where((a, b) => a.BlNo == query.blNo
+                             && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
+            .Select((a, b) => new PendingMaterialDto
+            {
+                SectionCode = b.Bld012.ToString(),
+                ItemNo = b.Bld002,
+                ItemName = b.Bld003,
+                ItemSpec = b.Bld004,
+                PendingQty = (b.Bld007 ?? 0) - (b.Bld008 ?? 0)
+            })
+            .ToList();
+
+        return (success, pendingList);
+    }
+
+    #endregion
+
+    #region 鐢熶骇瓒呴
+
+    public List<string> GetSccList()
+    {
+        var list = Db.Queryable<MesItemBl>()
+            .Where(s => (s.Bl018 ?? false) == true
+                        && (s.Bl019 ?? false) == false
+                        && s.Bl008 == "鐢熶骇瓒呴")
+            .Select(s => s.BlNo)
+            .ToList();
+        return list;
+    }
+
+    /// <summary>
+    ///     鑾峰彇鐢熶骇瓒呴鍗曟槑缁�
+    /// </summary>
+    /// <param name="query">鏌ヨ鍙傛暟</param>
+    /// <returns>鐢熶骇瓒呴鍗曟槑缁嗗垪琛�</returns>
+    public List<MesItemBlDetail> GetMesItemBlDetailBySccBillNo(
+        WarehouseQuery query)
+    {
+        if (string.IsNullOrEmpty(query.billNo))
+            throw new Exception("璇烽�夊崟鎹彿锛�");
+
+        // 妫�鏌ヨ秴棰嗗崟鏄惁瀛樺湪涓斾负鐢熶骇瓒呴绫诲瀷
+        var mesItemBl = Db.Queryable<MesItemBl>()
+            .Where(a => a.BlNo == query.billNo && a.Bl008 == "鐢熶骇瓒呴")
+            .First();
+
+        if (mesItemBl == null)
+            throw new Exception("鍗曟嵁鍙蜂笉姝g‘锛�");
+
+        // 妫�鏌ュ伐鍗曟槑缁嗙姸鎬�
+        var blDetails = Db.Queryable<MesItemBlDetail>()
+            .Where(it => it.Mid == mesItemBl.Id)
+            .ToList();
+
+        foreach (var womdab in blDetails.Select(detail => Db.Queryable<Womdab>()
+                     .Where(it => it.Erpid == detail.Bld014)
+                     .First()))
+        {
+            if (womdab == null)
+                throw new Exception("鏈壘鍒板伐鍗曟槑缁嗭紒");
+
+            if ((womdab.Dab006 ?? 0) != (womdab.Dab007 ?? 0) ||
+                (womdab.Dab021 ?? 0) != (womdab.Dab022 ?? 0))
+                throw new Exception("鐗╂枡鏈瀹屾枡鎴栧瓨鍦ㄥ緟琛ョ墿鏂欙紒");
+        }
+
+        // 鑾峰彇鏈畬鎴愮殑瓒呴鍗曟槑缁�
+        var pendingDetails = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) =>
+                new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
+            .Where((a, b) => a.BlNo == query.billNo
+                             && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
+            .OrderBy((a, b) => b.Bld002)
+            .Select((a, b) => new MesItemBlDetail
+            {
+                Bld012 = b.Bld012,
+                Bld002 = b.Bld002,
+                Bld003 = b.Bld003,
+                Bld004 = b.Bld004,
+                Bld007 = b.Bld007,
+                Bld008 = b.Bld008
+            })
+            .ToList();
+
+        return pendingDetails;
+    }
+
+    /// <summary>
+    ///     鐢熶骇瓒呴鎵弿鏉$爜 prc_rf_pda_scan_zout_barcodeCL
+    /// </summary>
+    /// <param name="query">鏌ヨ鍙傛暟</param>
+    /// <returns>鎵弿缁撴灉</returns>
+    /// <remarks>
+    ///     鍙傛暟璇存槑:
+    ///     - billNo: 宸ュ崟鍙�(蹇呭~)
+    ///     - barcode: 鏉$爜(蹇呭~)
+    ///     - userName: 鐢ㄦ埛鍚�(蹇呭~)
+    ///     - blNo: 瓒呴鍗曞彿(蹇呭~)
+    /// </remarks>
+    public (bool success, List<PendingMaterialDto> pendingList)
+        ScanBarcodeForOverPicking(
+            WarehouseQuery query)
+    {
+        #region 鍙傛暟鏍¢獙
+
+        if (string.IsNullOrEmpty(query.billNo))
+            throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
+
+        if (string.IsNullOrEmpty(query.barcode))
+            throw new Exception("璇锋壂鎻忔潯鐮侊紒");
+
+        if (string.IsNullOrEmpty(query.userName))
+            throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒");
+
+        if (string.IsNullOrEmpty(query.blNo))
+            throw new Exception("瓒呴鍗曞彿涓嶈兘涓虹┖锛�");
+
+        #endregion
+
+        // 妫�楠屾槸鍚﹂噸澶嶆壂鎻�
+        var exists = Db.Queryable<MesInvItemOutCDetails>()
+            .Where(b => b.ItemBarcode == query.barcode)
+            .Any();
+
+        if (exists)
+            throw new Exception("姝ゆ潯鐮佸凡鎵弿,鍕块噸澶嶆壂鐮侊紒");
+
+        // 鏌ヨ鏉$爜搴撳瓨淇℃伅
+        var stockBarcode = Db.Queryable<MesInvItemStocks>()
+            .Where(t => t.ItemBarcode == query.barcode && t.Quantity > 0)
+            .First();
+
+        if (stockBarcode == null)
+            throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮�,璇锋牳瀵癸紒{query.barcode}");
+
+        // 妫�鏌ヨ秴棰嗗崟鐘舵��
+        var mesItemBl = Db.Queryable<MesItemBl>()
+            .Where(a => a.BlNo == query.blNo && a.Bl008 == "鐢熶骇瓒呴")
+            .First();
+
+        if (mesItemBl == null)
+            throw new Exception($"鐢宠鍗� {query.blNo} 宸叉挙鍥烇紒");
+
+        if (mesItemBl.Bl018 != true)
+            throw new Exception($"鐢宠鍗� {query.blNo} 鏈鏍革紒");
+
+        if (mesItemBl.Bl019 == true)
+            throw new Exception($"鐢宠鍗� {query.blNo} 宸插畬缁擄紒");
+
+        // 妫�鏌ュ伐鍗曟槑缁嗙姸鎬�
+        var blDetails = Db.Queryable<MesItemBlDetail>()
+            .Where(it => it.Mid == mesItemBl.Id)
+            .ToList();
+
+        foreach (var womdab1 in blDetails.Select(detail => Db
+                     .Queryable<Womdab>()
+                     .Where(it => it.Erpid == detail.Bld014)
+                     .First()))
+        {
+            if (womdab1 == null)
+                throw new Exception("鏈壘鍒板伐鍗曟槑缁嗭紒");
+
+            if ((womdab1.Dab006 ?? 0) != (womdab1.Dab007 ?? 0) ||
+                (womdab1.Dab021 ?? 0) != (womdab1.Dab022 ?? 0))
+                throw new Exception("鐗╂枡鏈瀹屾枡鎴栧瓨鍦ㄥ緟琛ョ墿鏂欙紒");
+        }
+
+        // 鑾峰彇瓒呴鍗曟槑缁嗗苟鏍¢獙
+        var blDetail = Db.Queryable<MesItemBlDetail>()
+            .Where(b =>
+                b.Mid == mesItemBl.Id && b.Bld012 == stockBarcode.ItemId)
+            .First();
+
+        if (blDetail == null)
+            throw new Exception($"鐢宠鍗曚笉瀛樺湪姝ょ墿鏂� {stockBarcode.ItemNo} 璇风‘璁わ紒");
+
+        // 妫�鏌ュ緟瓒呴鏁伴噺
+        var quantity = (blDetail.Bld007 ?? 0) - (blDetail.Bld008 ?? 0);
+        if (quantity == 0)
+            throw new Exception("鐗╂枡宸叉壂鐮佸畬鎴愶紝璇锋牳瀵癸紒");
+
+        // 妫�鏌ュ伐鍗曚俊鎭�
+        var womdaa = Db.Queryable<Womdaa>()
+            .Where(a => a.Daa001 == query.billNo)
+            .First();
+
+        if (womdaa == null)
+            throw new Exception($"宸ュ崟 {query.billNo} 涓嶅瓨鍦紝璇风‘璁わ紒");
+
+        var womdab = Db.Queryable<Womdab>()
+            .Where(b => b.Dab001 == query.billNo && b.Erpid == blDetail.Bld014)
+            .First();
+
+        if (womdab == null)
+            throw new Exception($"澶囨枡鏄庣粏涓嶅瓨鍦ㄦ鐗╂枡 {stockBarcode.ItemNo} 璇风‘璁わ紒");
+
+        // 濡傛灉鏉$爜鏁伴噺澶т簬寰呰秴棰嗘暟閲�,杩斿洖寰呭鐞嗗垪琛ㄤ緵纭
+        if (stockBarcode.Quantity > quantity)
+        {
+            var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) =>
+                    new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
+                .Where((a, b) => a.BlNo == query.blNo
+                                 && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
+                .Select((a, b) => new PendingMaterialDto
+                {
+                    SectionCode = b.Bld012.ToString(),
+                    ItemNo = b.Bld002,
+                    ItemName = b.Bld003,
+                    ItemSpec = b.Bld004,
+                    PendingQty = (b.Bld007 ?? 0) - (b.Bld008 ?? 0)
+                })
+                .ToList();
+
+            return (false, pendingList);
+        }
+
+        // 鎵ц鏁版嵁搴撲簨鍔�
+        UseTransaction(db =>
+        {
+            // 鐢熸垚鎴栬幏鍙栧嚭搴撳崟
+            Guid outId = Guid.Empty;
+            var outNo = "";
+            var outRecord = db.Queryable<MesInvItemOuts>()
+                .Where(a => a.BbillNo == query.blNo
+                            && a.DepotCode == womdab.Dab017
+                            && a.OutDate.Value.Date == DateTime.Now.Date
+                            && a.BillTypeId == 200
+                            && a.TransactionNo == 210
+                            && a.Status == 0)
+                .First();
+
+            if (outRecord == null)
+            {
+                outId = Guid.NewGuid();
+                outNo = BillNo.GetBillNo("SCBL"); // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶
+
+                // 鎻掑叆鍑哄簱鍗曚富琛�
+                db.Insertable(new MesInvItemOuts
+                {
+                    Guid = outId,
+                    ItemOutNo = outNo,
+                    TaskNo = query.blNo,
+                    CreateBy = query.userName,
+                    CreateDate = DateTime.Now,
+                    LastupdateBy = query.userName,
+                    LastupdateDate = DateTime.Now,
+                    BillTypeId = 200,
+                    TransactionNo = 210,
+                    Remark = mesItemBl.Bl007,
+                    DepotCode = womdab.Dab017,
+                    OutPart = womdaa.Daa013,
+                    FType = 0,
+                    WorkNo = womdaa.Daa021,
+                    OutType = "鐢熶骇瓒呴鍗�",
+                    BoardItem = womdaa.Daa002,
+                    PbillNo = womdaa.Daa001,
+                    OutDate = DateTime.Now,
+                    Status = 0,
+                    BbillNo = query.blNo
+                }).IgnoreColumns(true).ExecuteCommand();
+            }
+            else
+            {
+                outId = outRecord.Guid;
+                outNo = outRecord.ItemOutNo;
+            }
+
+            // 鏇存柊鎴栨彃鍏ュ嚭搴撳崟鏄庣粏
+            var outItem = db.Queryable<MesInvItemOutItems>()
+                .Where(it =>
+                    it.ItemOutId == outId && it.ItemId == stockBarcode.ItemId)
+                .First();
+
+            if (outItem == null)
+            {
+                // 鎻掑叆鍑哄簱鍗曟槑缁�
+                db.Insertable(new MesInvItemOutItems
+                {
+                    Guid = Guid.NewGuid(),
+                    ItemOutId = outId,
+                    ItemNo = blDetail.Bld002,
+                    Quantity = stockBarcode.Quantity,
+                    CreateBy = query.userName,
+                    CreateDate = DateTime.Now,
+                    LastupdateBy = query.userName,
+                    LastupdateDate = DateTime.Now,
+                    DepotCode = womdab.Dab017,
+                    TaskNo = query.blNo,
+                    WorkNo = womdaa.Daa021,
+                    WorkLine = blDetail.Bld013,
+                    ErpItemNo = womdab.Dab003,
+                    ErpId = womdab.Eid,
+                    ErpAutoid = womdab.Erpid,
+                    PbillNo = query.billNo,
+                    ItemId = blDetail.Bld012,
+                    // Unit = blDetail.Bld009,
+                    // DepotId = stockBarcode.DepotsId
+                }).IgnoreColumns(true).ExecuteCommand();
+            }
+            else
+            {
+                // 鏇存柊鍑哄簱鍗曟槑缁嗘暟閲�
+                db.Updateable<MesInvItemOutItems>()
+                    .SetColumns(it => new MesInvItemOutItems
+                    {
+                        Quantity = it.Quantity + stockBarcode.Quantity
+                    })
+                    .Where(it =>
+                        it.ItemOutId == outId &&
+                        it.ItemId == stockBarcode.ItemId)
+                    .ExecuteCommand();
+            }
+
+            // 鎻掑叆鍑哄簱鏉$爜鏄庣粏
+            db.Insertable(new MesInvItemOutCDetails
+            {
+                Guid = Guid.NewGuid(),
+                ItemOutId = outId,
+                ItemBarcode = stockBarcode.ItemBarcode,
+                ItemNo = stockBarcode.ItemNo,
+                LotNo = stockBarcode.LotNo,
+                Quantity = stockBarcode.Quantity,
+                CreateBy = query.userName,
+                CreateDate = DateTime.Now,
+                LastupdateBy = query.userName,
+                LastupdateDate = DateTime.Now,
+                DepotCode = stockBarcode.DepotsCode,
+                DepotSectionCode = stockBarcode.DepotSectionsCode,
+                Remark = blDetail.Bld010,
+                TaskNo = query.blNo,
+                WorkNo = blDetail.Bld001,
+                WorkLine = blDetail.Bld013,
+                SuppNo = stockBarcode.SuppNo,
+                PbillNo = query.billNo,
+                ItemId = blDetail.Bld012,
+                Unit = blDetail.Bld009,
+                DepotId = (int)stockBarcode.DepotsId
+            }).IgnoreColumns(true).ExecuteCommand();
+
+            // 鎻掑叆涓氬姟娴佹按
+            db.Insertable(new MesInvBusiness2
+            {
+                Guid = Guid.NewGuid(),
+                Status = 1,
+                BillTypeId = 200,
+                TransactionCode = "210",
+                BusinessType = -1,
+                ItemBarcode = query.barcode,
+                ItemNo = stockBarcode.ItemNo,
+                LotNo = stockBarcode.LotNo,
+                EpFlag = true,
+                Quantity = stockBarcode.Quantity,
+                FromInvDepotsCode = stockBarcode.DepotsCode,
+                FromInvDepotSectionsCode = stockBarcode.DepotSectionsCode,
+                CreateBy = query.userName,
+                CreateDate = DateTime.Now,
+                LastupdateBy = query.userName,
+                LastupdateDate = DateTime.Now,
+                TaskNo = mesItemBl.Bl012,
+                BillNo = query.blNo,
+                WorkNo = blDetail.Bld001,
+                WorkLine = blDetail.Bld013,
+                SuppNo = stockBarcode.SuppNo,
+                SuppId = stockBarcode.SuppId,
+                ItemId = stockBarcode.ItemId,
+                // CkDepot = stockBarcode.DepotsId
+            }).IgnoreColumns(true).ExecuteCommand();
+
+            // 鏇存柊宸ュ崟澶囨枡鏄庣粏
+            db.Updateable<Womdab>()
+                .SetColumns(it => new Womdab
+                {
+                    Dab020 = (it.Dab020 ?? 0) + stockBarcode.Quantity,
+                    Dab023 = (it.Dab023 ?? 0) + stockBarcode.Quantity
+                })
+                .Where(it => it.Id == womdab.Id)
+                .ExecuteCommand();
+
+            // 鏇存柊瓒呴鍗曟槑缁�
+            db.Updateable<MesItemBlDetail>()
+                .SetColumns(it => new MesItemBlDetail
+                {
+                    Bld008 = (it.Bld008 ?? 0) + (int)stockBarcode.Quantity,
+                    Bld011 = (it.Bld007 ?? 0) <=
+                             (it.Bld008 ?? 0) + stockBarcode.Quantity
+                        ? 1
+                        : 0
+                })
+                .Where(it => it.Id == blDetail.Id)
+                .ExecuteCommand();
+
+            // 鏇存柊搴撳瓨鏁伴噺涓�0
+            db.Updateable<MesInvItemStocks>()
+                .SetColumns(it => it.Quantity == 0)
+                .Where(it => it.Guid == stockBarcode.Guid)
+                .ExecuteCommand();
+
+            // 妫�鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴�
+            var hasUnfinished = db.Queryable<MesItemBlDetail>()
+                .Where(it => it.Mid == mesItemBl.Id && (it.Bld011 ?? 0) == 0)
+                .Any();
+
+            // 濡傛灉鎵�鏈夋槑缁嗗畬鎴�,鏇存柊瓒呴鍗曠姸鎬佷负宸插畬鎴�
+            if (!hasUnfinished)
+            {
+                db.Updateable<MesItemBl>()
+                    .SetColumns(it => it.Bl019 == true)
+                    .Where(it => it.Id == mesItemBl.Id)
+                    .ExecuteCommand();
+            }
+
+            return 1;
+        });
+
+        // 鑾峰彇鏈�缁堢殑寰呭鐞嗗垪琛�
+        var finalPendingList = Db.Queryable<MesItemBl, MesItemBlDetail>(
+                (a, b) =>
+                    new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
+            .Where((a, b) => a.BlNo == query.blNo
+                             && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
+            .Select((a, b) => new PendingMaterialDto
+            {
+                SectionCode = b.Bld012.ToString(),
+                ItemNo = b.Bld002,
+                ItemName = b.Bld003,
+                ItemSpec = b.Bld004,
+                PendingQty = (b.Bld007 ?? 0) - (b.Bld008 ?? 0)
+            })
+            .ToList();
+
+        return (true, finalPendingList);
+    }
+
+    /// <summary>
+    /// 鐢熶骇瓒呴鎵撳嵃鏉$爜
+    /// </summary>
+    /// <param name="query">鏌ヨ鍙傛暟</param>
+    /// <returns>澶勭悊缁撴灉</returns>
+    public (bool success, List<PendingMaterialDto> pendingList)
+        PrintBarcodeForOverPicking(WarehouseQuery query)
+    {
+        UseTransaction(db =>
+        {
+            #region 鍙傛暟鏍¢獙
+
+            if (string.IsNullOrEmpty(query.billNo))
+                throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
+
+            if (string.IsNullOrEmpty(query.barcode))
+                throw new Exception("璇锋壂鎻忔潯鐮侊紒");
+
+            if (string.IsNullOrEmpty(query.userName))
+                throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒");
+
+            if (string.IsNullOrEmpty(query.blNo))
+                throw new Exception("瓒呴鍗曞彿涓嶈兘涓虹┖锛�");
+
+            if (query.Num <= 0)
+                throw new Exception("璇疯緭鍏ユ纭殑鍙戞枡鏁伴噺锛�");
+
+            #endregion
+
+            // 鏌ヨ搴撳瓨鏉$爜淇℃伅
+            var stockBarcode = db.Queryable<MesInvItemStocks>()
+                .Where(t => t.ItemBarcode == query.barcode && t.Quantity > 0)
+                .First();
+
+            if (stockBarcode == null)
+                throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{query.barcode}");
+
+            var totalQty = stockBarcode.Quantity;
+            string newBarcode = null;
+
+            // 鎷嗗垎鏉$爜
+            if (totalQty > query.Num)
+            {
+                var mesItems = db.Queryable<MesItems>()
+                    .Where(s => s.Id == stockBarcode.ItemId).First();
+                // 鐢熸垚鏂版潯鐮佸彿
+                newBarcode = BillNo.GetBillNo("TMBH(鏉$爜缂栧彿)", mesItems.ItemNo);
+
+                // 鍐欏叆鏂版潯鐮佽褰�
+                db.Insertable(new MesInvItemBarcodes
+                {
+                    Guid = Guid.NewGuid(),
+                    ItemBarcode = newBarcode,
+                    ItemNo = stockBarcode.ItemNo,
+                    LotNo = stockBarcode.LotNo,
+                    Quantity = query.Num,
+                    EpFlag = true,
+                    CreateBy = query.userName,
+                    CreateDate = DateTime.Now,
+                    LastupdateBy = query.userName,
+                    LastupdateDate = DateTime.Now,
+                    OldItemBarcode = query.barcode,
+                    Factory = stockBarcode.Factory,
+                    Company = stockBarcode.Company,
+                    WorkNo = stockBarcode.WorkNo,
+                    WorkLine = stockBarcode.WorkLine,
+                    SuppId = stockBarcode.SuppId,
+                    SuppNo = stockBarcode.SuppNo,
+                    ItemId = stockBarcode.ItemId
+                }).IgnoreColumns(true).ExecuteCommand();
+
+                // 鏇存柊鍘熸潯鐮佹暟閲�
+                db.Updateable<MesInvItemBarcodes>()
+                    .SetColumns(it => new MesInvItemBarcodes
+                        { Quantity = totalQty - query.Num })
+                    .Where(it => it.ItemBarcode == query.barcode)
+                    .ExecuteCommand();
+
+                // 鍒犻櫎鍘熸潯鐮佸簱瀛樿褰�
+                db.Deleteable<MesInvItemStocks>()
+                    .Where(it => it.ItemBarcode == query.barcode)
+                    .ExecuteCommand();
+
+                // 鎻掑叆鍓╀綑鏉$爜鏁伴噺鐨勬柊搴撳瓨璁板綍
+                db.Insertable(new MesInvItemStocks
+                {
+                    Guid = Guid.NewGuid(),
+                    ItemBarcode = stockBarcode.ItemBarcode,
+                    ItemNo = stockBarcode.ItemNo,
+                    LotNo = stockBarcode.LotNo,
+                    Quantity = totalQty - query.Num,
+                    EpFlag = stockBarcode.EpFlag,
+                    CustomerNo = stockBarcode.CustomerNo,
+                    DepotsCode = stockBarcode.DepotsCode,
+                    DepotsId = stockBarcode.DepotsId,
+                    DepotSectionsCode = stockBarcode.DepotSectionsCode,
+                    CheckDate = stockBarcode.CheckDate,
+                    ItemType = stockBarcode.ItemType,
+                    IndepDate = stockBarcode.IndepDate,
+                    Factory = stockBarcode.Factory,
+                    Company = stockBarcode.Company,
+                    IqcStatus = stockBarcode.IqcStatus,
+                    BoardStyle = stockBarcode.BoardStyle,
+                    WorkNo = stockBarcode.WorkNo,
+                    WorkLine = stockBarcode.WorkLine,
+                    SuppNo = stockBarcode.SuppNo,
+                    SuppId = stockBarcode.SuppId,
+                    ItemId = stockBarcode.ItemId
+                }).IgnoreColumns(true).ExecuteCommand();
+
+                // 鍐欐柊鏉$爜鐨勪氦鏄撹〃锛屾柊鏉$爜涓嶅叆搴撶洿鎺ュ嚭
+                db.Insertable(new MesInvBusiness2
+                {
+                    Guid = Guid.NewGuid(),
+                    Status = 1,
+                    BillTypeId = 200,
+                    TransactionCode = "210",
+                    BusinessType = -1,
+                    ItemBarcode = newBarcode,
+                    ItemNo = stockBarcode.ItemNo,
+                    LotNo = stockBarcode.LotNo,
+                    EpFlag = true,
+                    Quantity = query.Num,
+                    ToInvDepotsCode = stockBarcode.DepotsCode,
+                    ToInvDepotSectionsCode = stockBarcode.DepotSectionsCode,
+                    Description = "鐢熶骇瓒呴",
+                    CreateBy = query.userName,
+                    CreateDate = DateTime.Now,
+                    LastupdateBy = query.userName,
+                    LastupdateDate = DateTime.Now,
+                    TaskNo = stockBarcode.TaskNo,
+                    WorkNo = stockBarcode.WorkNo,
+                    WorkLine = stockBarcode.WorkLine,
+                    SuppNo = stockBarcode.SuppNo,
+                    SuppId = stockBarcode.SuppId,
+                    ItemId = stockBarcode.ItemId
+                }).IgnoreColumns(true).ExecuteCommand();
+            }
+            else if (totalQty < query.Num)
+            {
+                throw new Exception("鍙戞枡鏁伴噺澶т簬鏉$爜鏁�,璇锋牳瀵癸紒");
+            }
+
+            if (string.IsNullOrEmpty(newBarcode))
+                newBarcode = query.barcode;
+
+            // 妫�鏌ヨ秴棰嗗崟鐘舵��
+            var mesItemBl = db.Queryable<MesItemBl>()
+                .Where(a => a.BlNo == query.blNo && a.Bl008 == "鐢熶骇瓒呴")
+                .First();
+
+            if (mesItemBl == null)
+                throw new Exception("鐢宠鍗曚笉瀛樺湪锛�");
+
+            if (!(mesItemBl.Bl018 ?? false))
+                throw new Exception($"鐢宠鍗� {query.blNo} 鏈鏍革紒");
+
+            if (mesItemBl.Bl019 ?? false)
+                throw new Exception($"鐢宠鍗� {query.blNo} 宸插畬缁擄紒");
+
+            // 妫�鏌ヨ秴棰嗗崟鏄庣粏
+            var blDetail = db.Queryable<MesItemBlDetail>()
+                .Where(b =>
+                    b.Mid == mesItemBl.Id && b.Bld012 == stockBarcode.ItemId)
+                .First();
+
+            if (blDetail == null)
+                throw new Exception($"鐢宠鍗曚笉瀛樺湪姝ょ墿鏂� {stockBarcode.ItemNo} 璇风‘璁わ紒");
+
+            var pendingQty = (blDetail.Bld007 ?? 0) - (blDetail.Bld008 ?? 0);
+            if (pendingQty == 0)
+                throw new Exception("鐗╂枡宸叉壂鐮佸畬鎴愶紝璇锋牳瀵癸紒");
+
+            // 妫�鏌ュ伐鍗�
+            var workOrder = db.Queryable<Womdaa>()
+                .Where(a => a.Daa001 == query.billNo)
+                .First();
+
+            if (workOrder == null)
+                throw new Exception($"宸ュ崟 {query.billNo} 涓嶅瓨鍦紝璇风‘璁わ紒");
+
+            var workOrderDetail = db.Queryable<Womdab>()
+                .Where(b =>
+                    b.Dab001 == query.billNo && b.Erpid == blDetail.Bld014)
+                .First();
+
+            if (workOrderDetail == null)
+                throw new Exception($"澶囨枡鏄庣粏涓嶅瓨鍦ㄦ鐗╂枡 {stockBarcode.ItemNo} 璇风‘璁わ紒");
+
+            if (query.Num > pendingQty)
+                throw new Exception(
+                    $"鎷嗗垎鏁伴噺锛歿query.Num} 澶т簬寰呭彂鏂欐暟閲忥細{pendingQty}锛岃鏍稿锛�");
+
+            // 鑾峰彇鎴栧垱寤哄嚭搴撳崟
+            var itemOut = db.Queryable<MesInvItemOuts>()
+                .Where(a => a.BbillNo == query.blNo
+                            && a.DepotCode == workOrderDetail.Dab017
+                            && a.OutDate.Value.Date.ToString("yyyy-MM-dd") ==
+                            DateTime.Now.Date.ToString("yyyy-MM-dd")
+                            && a.BillTypeId == 200
+                            && a.TransactionNo == 210
+                            && a.Status == 0)
+                .First();
+
+            if (itemOut == null)
+            {
+                // 鍒涘缓鏂扮殑鍑哄簱鍗�
+                itemOut = new MesInvItemOuts
+                {
+                    Guid = Guid.NewGuid(),
+                    ItemOutNo = BillNo.GetBillNo("SCBL"), // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶
+                    TaskNo = query.blNo,
+                    CreateBy = query.userName,
+                    CreateDate = DateTime.Now,
+                    LastupdateBy = query.userName,
+                    LastupdateDate = DateTime.Now,
+                    BillTypeId = 200,
+                    TransactionNo = 210,
+                    Remark = mesItemBl.Bl007,
+                    DepotCode = workOrderDetail.Dab017,
+                    OutPart = workOrder.Daa013,
+                    FType = 0,
+                    Factory = stockBarcode.Factory,
+                    Company = stockBarcode.Company,
+                    WorkNo = workOrder.Daa021,
+                    OutType = "鐢熶骇瓒呴鍗�",
+                    BoardItem = workOrder.Daa002,
+                    PbillNo = workOrder.Daa001,
+                    OutDate = DateTime.Now,
+                    Status = 0,
+                    BbillNo = query.blNo
+                };
+
+                db.Insertable(itemOut).IgnoreColumns(true).ExecuteCommand();
+            }
+
+            // 妫�鏌ユ槸鍚﹀凡瀛樺湪鍑哄簱鍗曟槑缁�
+            var itemOutItemCount = db.Queryable<MesInvItemOutItems>()
+                .Where(it =>
+                    it.ItemOutId == itemOut.Guid &&
+                    it.ItemId == stockBarcode.ItemId)
+                .Count();
+
+            if (itemOutItemCount == 0)
+            {
+                // 鎻掑叆鏂扮殑鍑哄簱鍗曟槑缁�
+                db.Insertable(new MesInvItemOutItems
+                {
+                    Guid = Guid.NewGuid(),
+                    ItemOutId = itemOut.Guid,
+                    ItemNo = blDetail.Bld002,
+                    Quantity = query.Num,
+                    CreateBy = query.userName,
+                    CreateDate = DateTime.Now,
+                    LastupdateBy = query.userName,
+                    LastupdateDate = DateTime.Now,
+                    Factory = stockBarcode.Factory,
+                    Company = stockBarcode.Company,
+                    DepotCode = workOrderDetail.Dab017,
+                    TaskNo = query.blNo,
+                    WorkNo = workOrder.Daa021,
+                    WorkLine = blDetail.Bld013,
+                    ErpItemNo = workOrderDetail.Dab003,
+                    ErpId = workOrderDetail.Eid,
+                    ErpAutoid = workOrderDetail.Erpid,
+                    PbillNo = query.billNo,
+                    ItemId = blDetail.Bld012,
+                    // Unit = blDetail.Bld009,
+                    // DepotId = stockBarcode.DepotsId
+                }).IgnoreColumns(true).ExecuteCommand();
+            }
+            else
+            {
+                // 鏇存柊宸叉湁鍑哄簱鍗曟槑缁嗘暟閲�
+                db.Updateable<MesInvItemOutItems>()
+                    .SetColumns(it => it.Quantity == it.Quantity + query.Num)
+                    .Where(it =>
+                        it.ItemOutId == itemOut.Guid &&
+                        it.ItemId == stockBarcode.ItemId)
+                    .ExecuteCommand();
+            }
+
+            // 鎻掑叆鍑哄簱鏄庣粏璁板綍
+            db.Insertable(new MesInvItemOutCDetails
+            {
+                Guid = Guid.NewGuid(),
+                ItemOutId = itemOut.Guid,
+                ItemBarcode = newBarcode,
+                ItemNo = stockBarcode.ItemNo,
+                LotNo = stockBarcode.LotNo,
+                Quantity = query.Num,
+                ForceOutFlag = 0,
+                CreateBy = query.userName,
+                CreateDate = DateTime.Now,
+                LastupdateBy = query.userName,
+                LastupdateDate = DateTime.Now,
+                DepotCode = stockBarcode.DepotsCode,
+                DepotSectionCode = stockBarcode.DepotSectionsCode,
+                Remark = blDetail.Bld010,
+                Factory = stockBarcode.Factory,
+                Company = stockBarcode.Company,
+                TaskNoy = mesItemBl.Bl013,
+                BoardStyle = mesItemBl.Bl002,
+                TaskNo = query.blNo,
+                WorkNo = blDetail.Bld001,
+                WorkLine = blDetail.Bld013,
+                SuppNo = stockBarcode.SuppNo,
+                PbillNo = query.billNo,
+                ItemId = blDetail.Bld012,
+                Unit = blDetail.Bld009,
+                DepotId = (int)stockBarcode.DepotsId,
+                LineK3id = workOrderDetail.Erpid,
+                EbelnK3id = workOrderDetail.Eid
+            }).IgnoreColumns(true).ExecuteCommand();
+
+            // 鎻掑叆涓氬姟浜ゆ槗璁板綍
+            db.Insertable(new MesInvBusiness2
+            {
+                Guid = Guid.NewGuid(),
+                Status = 1,
+                BillTypeId = 200, // p_bill_type_id
+                TransactionCode = "210", // p_transaction_no 
+                BusinessType = 1,
+                ItemBarcode = newBarcode,
+                ItemNo = stockBarcode.ItemNo,
+                LotNo = stockBarcode.LotNo,
+                EpFlag = true,
+                Quantity = query.Num,
+                FromInvDepotsCode = stockBarcode.DepotsCode,
+                FromInvDepotSectionsCode = stockBarcode.DepotSectionsCode,
+                CreateBy = query.userName,
+                CreateDate = DateTime.Now,
+                LastupdateBy = query.userName,
+                LastupdateDate = DateTime.Now,
+                Factory = stockBarcode.Factory,
+                Company = stockBarcode.Company,
+                TaskNo = mesItemBl.Bl012, // Matches C_QTCK.Bl012
+                BillNo = query.blNo,
+                WorkNo = blDetail.Bld001, // Matches C_QTCK_D.Bld001
+                WorkLine = blDetail.Bld013, // Matches C_QTCK_D.Bld013
+                SuppNo = stockBarcode.SuppNo,
+                ItemId = stockBarcode.ItemId
+            }).IgnoreColumns(true).ExecuteCommand();
+
+            // 鏇存柊宸ュ崟琛ㄦ暟閲�
+            db.Updateable<Womdab>()
+                .SetColumns(it => new Womdab
+                {
+                    Dab020 = (it.Dab020 ?? 0) + stockBarcode.Quantity,
+                    Dab023 = (it.Dab023 ?? 0) + stockBarcode.Quantity
+                })
+                .Where(it => it.Id == workOrderDetail.Id)
+                .ExecuteCommand();
+
+            // 鏇存柊琛ユ枡鍗曟槑缁嗗凡琛ユ暟閲�
+            db.Updateable<MesItemBlDetail>()
+                .SetColumns(it => new MesItemBlDetail
+                {
+                    Bld008 = (it.Bld008 ?? 0) + (int)stockBarcode.Quantity
+                })
+                .Where(it => it.Id == blDetail.Id)
+                .ExecuteCommand();
+
+            // 妫�鏌ヨˉ鏂欏崟鏄庣粏鏄惁瀹屾垚
+            var blDetail1 = db.Queryable<MesItemBlDetail>()
+                .Where(it => it.Id == blDetail.Id)
+                .First();
+
+            if ((blDetail1.Bld007 ?? 0) <= (blDetail1.Bld008 ?? 0))
+            {
+                // 鏇存柊鏄庣粏瀹屾垚鐘舵��
+                db.Updateable<MesItemBlDetail>()
+                    .SetColumns(it => it.Bld011 == 1)
+                    .Where(it => it.Id == blDetail1.Id)
+                    .ExecuteCommand();
+            }
+
+            // 妫�鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴�
+            var hasUnfinished = db.Queryable<MesItemBlDetail>()
+                .Where(it => it.Mid == mesItemBl.Id && (it.Bld011 ?? 0) == 0)
+                .Any();
+
+            // 濡傛灉鎵�鏈夋槑缁嗗畬鎴�,鏇存柊琛ユ枡鍗曠姸鎬佷负宸插畬鎴�
+            if (!hasUnfinished)
+            {
+                db.Updateable<MesItemBl>()
+                    .SetColumns(it => it.Bl019 == true)
+                    .Where(it => it.Id == mesItemBl.Id)
+                    .ExecuteCommand();
+            }
+
+            return 1;
+        });
+
+
+        // 鑾峰彇鏈�缁堢殑寰呭鐞嗗垪琛�
+        var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) =>
+                new JoinQueryInfos(JoinType.Left, a.Id == b.Mid))
+            .Where((a, b) => a.BlNo == query.blNo
+                             && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0)
+            .Select((a, b) => new PendingMaterialDto
+            {
+                SectionCode = b.Bld012.ToString(),
+                ItemNo = b.Bld002,
+                ItemName = b.Bld003,
+                ItemSpec = b.Bld004,
+                PendingQty = (b.Bld007 ?? 0) - (b.Bld008 ?? 0)
+            })
+            .ToList();
+
+        return (true, pendingList);
+    }
+
+    #endregion
+}
\ No newline at end of file
diff --git a/service/Warehouse/MesItemTblManager.cs b/service/Warehouse/MesItemTblManager.cs
index f5c63c2..9560243 100644
--- a/service/Warehouse/MesItemTblManager.cs
+++ b/service/Warehouse/MesItemTblManager.cs
@@ -52,9 +52,7 @@
     public WarehouseQuery SctlScanDepots(WarehouseQuery query)
     {
         if (query.DepotCode.IsNullOrEmpty())
-        {
             throw new NullReferenceException("璇锋壂搴撲綅鏉$爜");
-        }
 
         var warehouseQuery = Db.Queryable<MesDepotSections, MesDepots>((a, b) =>
                 new JoinQueryInfos(JoinType.Inner, a.DepotGuid == b.Guid))
@@ -63,13 +61,11 @@
             {
                 DepotSectionName = a.DepotSectionName,
                 DepotName = b.DepotName,
-                DepotCode = b.DepotCode,
+                DepotCode = b.DepotCode
             }).First();
 
         if (warehouseQuery == null)
-        {
             throw new Exception("搴撲綅缂栫爜" + query.DepotCode + " 涓嶅瓨鍦紝璇风‘璁わ紒");
-        }
 
         return warehouseQuery;
     }
@@ -84,10 +80,7 @@
         var p_bill_type_id = 100;
         var p_transction_no = 104;
 
-        if (p_section_code.IsNullOrEmpty())
-        {
-            throw new Exception("璇锋壂搴撲綅鏉$爜锛�");
-        }
+        if (p_section_code.IsNullOrEmpty()) throw new Exception("璇锋壂搴撲綅鏉$爜锛�");
 
         var c_depot_code = Db.Queryable<MesDepotSections, MesDepots>((a, b) =>
                 new JoinQueryInfos(JoinType.Inner, a.DepotGuid == b.Guid))
@@ -95,25 +88,19 @@
             .Select((a, b) => b.DepotId).First();
 
         if (!c_depot_code.HasValue)
-        {
             throw new Exception("搴撲綅缂栫爜" + p_section_code + " 涓嶅瓨鍦紝璇风‘璁わ紒");
-        }
 
         var mesDepotSections = Db.Queryable<MesDepotSections>()
             .Where(a => a.DepotSectionCode == p_section_code).First();
 
         if (mesDepotSections == null)
-        {
             throw new Exception("搴撲綅缂栫爜" + p_section_code + " 涓嶅瓨鍦紝璇风‘璁わ紒");
-        }
 
         var c_mes_depots = Db.Queryable<MesDepots>()
             .Where(b => b.Guid == mesDepotSections.DepotGuid).First();
 
         if (c_mes_depots == null)
-        {
             throw new Exception("搴撲綅缂栫爜" + p_section_code + " 涓嶅瓨鍦紝璇风‘璁わ紒");
-        }
 
         var c_num = Db.Queryable<MesInvItemIns, MesInvItemInCDetails>((a, b) =>
                 new JoinQueryInfos(JoinType.Inner, a.Guid == b.ItemInId))
@@ -122,45 +109,29 @@
                              a.TransctionNo == p_transction_no.ToString())
             .Count();
 
-        if (c_num > 0)
-        {
-            throw new Exception("姝ゆ潯鐮佸凡鎵叆搴擄紝鍕块噸澶嶆壂鎻忥紒");
-        }
+        if (c_num > 0) throw new Exception("姝ゆ潯鐮佸凡鎵叆搴擄紝鍕块噸澶嶆壂鎻忥紒");
 
         c_num = Db.Queryable<MesInvItemStocks>()
             .Where(t => t.ItemBarcode == p_item_barcode).Count();
 
-        if (c_num > 0)
-        {
-            throw new Exception("姝ゆ潯鐮佸凡鎵叆搴擄紝鍕块噸澶嶆壂鎻忥紒");
-        }
+        if (c_num > 0) throw new Exception("姝ゆ潯鐮佸凡鎵叆搴擄紝鍕块噸澶嶆壂鎻忥紒");
 
         var c_mes_inv_item_barcodes = Db.Queryable<MesInvItemBarcodes>()
             .Where(t => t.ItemBarcode == p_item_barcode).First();
 
         if (c_mes_inv_item_barcodes == null)
-        {
             throw new Exception("姝ゆ潯鐮佷笉灞炰簬璇ラ��鏂欏崟锛岃鏍稿锛�");
-        }
 
         if (c_mes_inv_item_barcodes.Memo != "鐢熶骇閫�鏂�")
-        {
             throw new Exception("姝ゆ潯鐮佷笉鏄敓浜ч��鏂欐潯鐮侊紝涓嶅彲浣跨敤鐢熶骇閫�鏂欐ā鍧楋紒");
-        }
 
         var C_MES_ITEM_TBL = Db.Queryable<MesItemTbl>()
             .Where(a => a.BillNo == c_mes_inv_item_barcodes.BillNo
                         && (a.Tbl013 ?? 0) == 1).First();
 
-        if (C_MES_ITEM_TBL == null)
-        {
-            throw new Exception("鐢宠鍗曞凡鎾ゅ洖,鏃犳硶鎵爜!");
-        }
+        if (C_MES_ITEM_TBL == null) throw new Exception("鐢宠鍗曞凡鎾ゅ洖,鏃犳硶鎵爜!");
 
-        if (C_MES_ITEM_TBL.Tbl020 == 1)
-        {
-            throw new Exception("鎵爜瀹屾垚,鐢宠鍗曞凡瀹岀粨!");
-        }
+        if (C_MES_ITEM_TBL.Tbl020 == 1) throw new Exception("鎵爜瀹屾垚,鐢宠鍗曞凡瀹岀粨!");
 
         var C_MES_ITEM_TBL_DETAIL = Db.Queryable<MesItemTblDetail>()
             .Where(a => a.Tlmid == C_MES_ITEM_TBL.Id
@@ -168,9 +139,7 @@
             .First();
 
         if (C_MES_ITEM_TBL_DETAIL == null)
-        {
             throw new Exception("鏉$爜涓嶅睘浜庤鐢宠鍗曟槑缁�,鏃犳硶鎵爜!");
-        }
 
         var c_quantity = c_mes_inv_item_barcodes.Quantity;
 
@@ -223,10 +192,7 @@
             }
 
             var hbdy = c_mes_inv_item_barcodes.Hbdy ?? 0;
-            if (hbdy == 1)
-            {
-                throw new Exception("涓嶆敮鎸佸悎骞舵墦鍗扮殑鏉$爜:" + p_item_barcode);
-            }
+            if (hbdy == 1) throw new Exception("涓嶆敮鎸佸悎骞舵墦鍗扮殑鏉$爜:" + p_item_barcode);
 
             totalResult += db.Insertable(new MesInvItemInCDetails
             {
@@ -321,46 +287,58 @@
             {
                 // 鑹搧閫�鏂� - 鏇存柊宸ュ崟琛�(WOMDAB)鐩稿叧鏁伴噺
                 if (C_MES_ITEM_TBL.Tbl005 == "鑹搧閫�鏂�")
-                {
-                    totalResult += Db.Updateable<Womdab>()
-                        .SetColumns(it => new Womdab 
-                        { 
-                            Dab007 = it.Dab007 - c_mes_inv_item_barcodes.Quantity,  // 鍑忓皯宸ュ崟鏁伴噺
-                            Dab022 = (it.Dab022 ?? 0) + c_mes_inv_item_barcodes.Quantity,  // 澧炲姞閫�鏂欐暟閲�
-                            LpTl = (it.LpTl ?? 0) + (int)c_mes_inv_item_barcodes.Quantity,  // 澧炲姞鑹搧閫�鏂欐暟閲�
-                            Dab020 = (it.Dab020 ?? 0) - c_mes_inv_item_barcodes.Quantity  // 鍑忓皯宸插彂鏂欐暟閲�
-                        })
-                        .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo 
-                            && it.Dab002 == c_mes_inv_item_barcodes.WorkLine
-                            && it.Dab003 == c_mes_inv_item_barcodes.ItemId.ToString())
-                        .ExecuteCommand();
-                }
-                // 鏉ユ枡涓嶈壇閫�鏂� - 鏇存柊宸ュ崟琛�(WOMDAB)鐩稿叧鏁伴噺
-                else if (C_MES_ITEM_TBL.Tbl005 == "鏉ユ枡涓嶈壇閫�鏂�") 
-                {
                     totalResult += Db.Updateable<Womdab>()
                         .SetColumns(it => new Womdab
                         {
-                            Dab007 = it.Dab007 - c_mes_inv_item_barcodes.Quantity,  // 鍑忓皯宸ュ崟鏁伴噺
-                            Dab022 = (it.Dab022 ?? 0) + c_mes_inv_item_barcodes.Quantity,  // 澧炲姞閫�鏂欐暟閲�
-                            LlBl = (it.LlBl ?? 0) + (int)c_mes_inv_item_barcodes.Quantity,  // 澧炲姞鏉ユ枡涓嶈壇鏁伴噺
-                            Dab020 = (it.Dab020 ?? 0) - c_mes_inv_item_barcodes.Quantity  // 鍑忓皯宸插彂鏂欐暟閲�
+                            Dab007 = it.Dab007 -
+                                     c_mes_inv_item_barcodes.Quantity, // 鍑忓皯宸ュ崟鏁伴噺
+                            Dab022 = (it.Dab022 ?? 0) +
+                                     c_mes_inv_item_barcodes.Quantity, // 澧炲姞閫�鏂欐暟閲�
+                            LpTl = (it.LpTl ?? 0) +
+                                   (int)c_mes_inv_item_barcodes
+                                       .Quantity, // 澧炲姞鑹搧閫�鏂欐暟閲�
+                            Dab020 = (it.Dab020 ?? 0) -
+                                     c_mes_inv_item_barcodes.Quantity // 鍑忓皯宸插彂鏂欐暟閲�
                         })
                         .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo
-                            && it.Dab002 == c_mes_inv_item_barcodes.WorkLine
-                            && it.Dab003 == c_mes_inv_item_barcodes.ItemId.ToString())
+                                     && it.Dab002 == c_mes_inv_item_barcodes
+                                         .WorkLine
+                                     && it.Dab003 == c_mes_inv_item_barcodes
+                                         .ItemId.ToString())
                         .ExecuteCommand();
-                }
+                // 鏉ユ枡涓嶈壇閫�鏂� - 鏇存柊宸ュ崟琛�(WOMDAB)鐩稿叧鏁伴噺
+                else if (C_MES_ITEM_TBL.Tbl005 == "鏉ユ枡涓嶈壇閫�鏂�")
+                    totalResult += Db.Updateable<Womdab>()
+                        .SetColumns(it => new Womdab
+                        {
+                            Dab007 = it.Dab007 -
+                                     c_mes_inv_item_barcodes.Quantity, // 鍑忓皯宸ュ崟鏁伴噺
+                            Dab022 = (it.Dab022 ?? 0) +
+                                     c_mes_inv_item_barcodes.Quantity, // 澧炲姞閫�鏂欐暟閲�
+                            LlBl = (it.LlBl ?? 0) +
+                                   (int)c_mes_inv_item_barcodes
+                                       .Quantity, // 澧炲姞鏉ユ枡涓嶈壇鏁伴噺
+                            Dab020 = (it.Dab020 ?? 0) -
+                                     c_mes_inv_item_barcodes.Quantity // 鍑忓皯宸插彂鏂欐暟閲�
+                        })
+                        .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo
+                                     && it.Dab002 == c_mes_inv_item_barcodes
+                                         .WorkLine
+                                     && it.Dab003 == c_mes_inv_item_barcodes
+                                         .ItemId.ToString())
+                        .ExecuteCommand();
 
                 // 鏇存柊閫�鏂欏崟鏄庣粏琛ㄥ凡閫�鏁伴噺
                 totalResult += Db.Updateable<MesItemTblDetail>()
                     .SetColumns(it => new MesItemTblDetail
                     {
-                        Tld006 = (it.Tld006 ?? 0) + (int)c_mes_inv_item_barcodes.Quantity  // 澧炲姞宸查��鏁伴噺
+                        Tld006 = (it.Tld006 ?? 0) +
+                                 (int)c_mes_inv_item_barcodes.Quantity // 澧炲姞宸查��鏁伴噺
                     })
                     .Where(it => it.Tlmid == C_MES_ITEM_TBL.Id
-                        && it.Tld009 == c_mes_inv_item_barcodes.ItemId 
-                        && it.Tld010 == c_mes_inv_item_barcodes.WorkLine)
+                                 && it.Tld009 == c_mes_inv_item_barcodes.ItemId
+                                 && it.Tld010 ==
+                                 c_mes_inv_item_barcodes.WorkLine)
                     .ExecuteCommand();
             }
             // 浣滀笟涓嶈壇閫�鏂� - 鏇存柊宸ュ崟琛ㄥ拰閫�鏂欏崟鏄庣粏琛�
@@ -369,59 +347,66 @@
                 totalResult += Db.Updateable<Womdab>()
                     .SetColumns(it => new Womdab
                     {
-                        Dab022 = (it.Dab022 ?? 0) + c_mes_inv_item_barcodes.Quantity,  // 澧炲姞閫�鏂欐暟閲�
-                        ZyBl = (it.ZyBl ?? 0) + (int)c_mes_inv_item_barcodes.Quantity,  // 澧炲姞浣滀笟涓嶈壇鏁伴噺
-                        Dab020 = (it.Dab020 ?? 0) - c_mes_inv_item_barcodes.Quantity  // 鍑忓皯宸插彂鏂欐暟閲�
+                        Dab022 = (it.Dab022 ?? 0) +
+                                 c_mes_inv_item_barcodes.Quantity, // 澧炲姞閫�鏂欐暟閲�
+                        ZyBl = (it.ZyBl ?? 0) +
+                               (int)c_mes_inv_item_barcodes
+                                   .Quantity, // 澧炲姞浣滀笟涓嶈壇鏁伴噺
+                        Dab020 = (it.Dab020 ?? 0) -
+                                 c_mes_inv_item_barcodes.Quantity // 鍑忓皯宸插彂鏂欐暟閲�
                     })
                     .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo
-                        && it.Dab002 == c_mes_inv_item_barcodes.WorkLine
-                        && it.Dab003 == c_mes_inv_item_barcodes.ItemId.ToString())
+                                 && it.Dab002 ==
+                                 c_mes_inv_item_barcodes.WorkLine
+                                 && it.Dab003 == c_mes_inv_item_barcodes.ItemId
+                                     .ToString())
                     .ExecuteCommand();
 
                 // 鏇存柊閫�鏂欏崟鏄庣粏琛ㄥ凡閫�鏁伴噺
                 totalResult += Db.Updateable<MesItemTblDetail>()
                     .SetColumns(it => new MesItemTblDetail
                     {
-                        Tld006 = (it.Tld006 ?? 0) + (int)c_mes_inv_item_barcodes.Quantity  // 澧炲姞宸查��鏁伴噺
+                        Tld006 = (it.Tld006 ?? 0) +
+                                 (int)c_mes_inv_item_barcodes.Quantity // 澧炲姞宸查��鏁伴噺
                     })
                     .Where(it => it.Tlmid == C_MES_ITEM_TBL.Id
-                        && it.Tld009 == c_mes_inv_item_barcodes.ItemId
-                        && it.Tld010 == c_mes_inv_item_barcodes.WorkLine)
+                                 && it.Tld009 == c_mes_inv_item_barcodes.ItemId
+                                 && it.Tld010 ==
+                                 c_mes_inv_item_barcodes.WorkLine)
                     .ExecuteCommand();
             }
 
             // 濡傛灉寰呴��鏁伴噺绛変簬鏈閫�鏂欐暟閲忥紝鍒欐洿鏂版槑缁嗗畬鎴愮姸鎬�
-            if ((C_MES_ITEM_TBL_DETAIL.Tld005 ?? 0) - (C_MES_ITEM_TBL_DETAIL.Tld006 ?? 0) == c_mes_inv_item_barcodes.Quantity)
-            {
+            if ((C_MES_ITEM_TBL_DETAIL.Tld005 ?? 0) -
+                (C_MES_ITEM_TBL_DETAIL.Tld006 ?? 0) ==
+                c_mes_inv_item_barcodes.Quantity)
                 totalResult += Db.Updateable<MesItemTblDetail>()
-                    .SetColumns(it => new MesItemTblDetail { Tld008 = 1 })  // 璁剧疆瀹屾垚鏍囧織
+                    .SetColumns(it => new MesItemTblDetail
+                        { Tld008 = 1 }) // 璁剧疆瀹屾垚鏍囧織
                     .Where(it => it.Tlid == C_MES_ITEM_TBL_DETAIL.Tlid)
                     .ExecuteCommand();
-            }
 
             // 妫�鏌ラ��鏂欏崟鏄惁鎵�鏈夋槑缁嗛兘宸插畬鎴�
-            var remainingCount = Db.Queryable<MesItemTbl, MesItemTblDetail>((a, b) => 
-                new JoinQueryInfos(JoinType.Left, a.Id == b.Tlmid))
-                .Where((a, b) => a.BillNo == p_bill_no && (b.Tld005 ?? 0) - (b.Tld006 ?? 0) > 0)
+            var remainingCount = Db.Queryable<MesItemTbl, MesItemTblDetail>(
+                    (a, b) =>
+                        new JoinQueryInfos(JoinType.Left, a.Id == b.Tlmid))
+                .Where((a, b) =>
+                    a.BillNo == p_bill_no &&
+                    (b.Tld005 ?? 0) - (b.Tld006 ?? 0) > 0)
                 .Count();
 
             // 濡傛灉鎵�鏈夋槑缁嗛兘宸插畬鎴愶紝鍒欐洿鏂伴��鏂欏崟鐘舵�佷负宸插畬鎴�
             if (remainingCount < 1)
-            {
                 totalResult += Db.Updateable<MesItemTbl>()
-                    .SetColumns(it => it.Tbl020 == 1 )  // 璁剧疆瀹屾垚鏍囧織
+                    .SetColumns(it => it.Tbl020 == 1) // 璁剧疆瀹屾垚鏍囧織
                     .Where(it => it.BillNo == p_bill_no)
                     .ExecuteCommand();
-            }
-            
-            if (totalResult < 3)
-            {
-                throw new Exception("鎻掑叆澶辫触");
-            }
+
+            if (totalResult < 3) throw new Exception("鎻掑叆澶辫触");
 
             return totalResult;
         });
-        
+
         // 璁剧疆杩斿洖缁撴灉
         // c_result = $"001[,{c_mes_inv_item_barcodes.ItemNo},{c_quantity},鎵爜鎴愬姛锛�,鍙傝�冨簱浣岪鐗╂枡@寰呴��鏁伴噺{c_in_field_valT}";
 
diff --git a/util/BillNo.cs b/util/BillNo.cs
index 3065ded..aa7c5ef 100644
--- a/util/BillNo.cs
+++ b/util/BillNo.cs
@@ -6,15 +6,16 @@
 public static class BillNo
 {
     /// <summary>
-    ///     TL(閲囪喘閫�鏂欏崟),DH(鍒拌揣鍗�),JY(妫�楠屽崟),IN(鍏ュ簱鍗�)
+    ///     TL(閲囪喘閫�鏂欏崟),DH(鍒拌揣鍗�),JY(妫�楠屽崟),IN(鍏ュ簱鍗�),TMBH(鏉$爜缂栧彿)
     /// </summary>
     /// <param name="billType"></param>
     /// <returns></returns>
-    public static string GetBillNo(string billType)
+    public static string GetBillNo(string billType, string itemNo = "")
     {
         var sbSql = new StringBuilder();
         sbSql.Append(" DECLARE @hNo nvarchar(50) ");
-        sbSql.Append("  EXEC [getOrderNo] '" + billType + "',@hNo output");
+        sbSql.Append("  EXEC [getOrderNo] '" + billType + "',@hNo output,'" +
+                     itemNo + "'");
         sbSql.Append("  select @hNo as t1");
         var str = "";
         try

--
Gitblit v1.9.3