111
啊鑫
2024-12-23 8685c8e96eeeaa262044f0fdc7827e645f5e22a0
111
已添加7个文件
已修改10个文件
3481 ■■■■ 文件已修改
Controllers/Warehouse/MesItemBlController.cs 374 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Warehouse/MesItemBlDetailController.cs 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Warehouse/MesItemTblController.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/service/PendingMaterialDto.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/service/WarehouseQuery.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesInvBusiness2.cs 167 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesInvItemBarcodes.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesInvItemOutItems.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesItemBl.cs 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesItemBlDetail.cs 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesItemTblDetail.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/Womdaa.cs 329 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/Womdab.cs 166 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesItemBlDetailManager.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesItemBlManager.cs 1733 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesItemTblManager.cs 169 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
util/BillNo.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Warehouse/MesItemBlController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,374 @@
using 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">查询参数,必须包含billNo</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">查询参数,必须包含billNo</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
}
Controllers/Warehouse/MesItemBlDetailController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,162 @@
using 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);
        }
    }
}
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>
Dto/service/PendingMaterialDto.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
namespace NewPdaSqlServer.Dto.service;
/// <summary>
///     å¾…处理物料信息DTO
/// </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; }
}
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; }
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>
    /// å•据行ID
    ///</summary>
    ///     å•据行ID
    /// </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>
    /// æºå­åº“CODE
    ///</summary>
    ///     æºå­åº“CODE
    /// </summary>
    [SugarColumn(ColumnName = "FROM_INV_DEPOTS_CODE")]
    public string? FromInvDepotsCode { get; set; }
    /// <summary>
    /// æºè´§ä½CODE
    ///</summary>
    ///     æºè´§ä½CODE
    /// </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>
    /// å…¬å¸ä»£ç 
    ///</summary>
    ///     å…¬å¸ä»£ç 
    /// </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>
    /// é‡‡è´­è®¢å•行id
    ///</summary>
    ///     é‡‡è´­è®¢å•行id
    /// </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>
    /// æºä»“库ID
    ///</summary>
    ///     æºä»“库ID
    /// </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单据明细行id
    ///</summary>
    ///     mes单据明细行id
    /// </summary>
    [SugarColumn(ColumnName = "MES_LINE")]
    public Guid? MesLine { get; set; }
}
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>
    ///     è¡Œå·
entity/MesInvItemOutItems.cs
@@ -223,6 +223,11 @@
    [SugarColumn(ColumnName = "item_dabid")]
    public int? ItemDabid { get; set; }
    /// <summary>
    ///     åº”该是到货明细表的guid
    /// </summary>
    [SugarColumn(ColumnName = "about_Guid")]
    public Guid? AboutGuid { get; set; }
    [SugarColumn(IsIgnore = true)] public string? ItemName { get; set; }
entity/MesItemBl.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,155 @@
using 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; }
}
entity/MesItemBlDetail.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,143 @@
using 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>
   ///     å…³è”çš„dab表主键
   /// </summary>
   [SugarColumn(ColumnName = "dabGuid")]
    public Guid? DabGuid { get; set; }
}
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; }
}
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; }
}
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; }
service/Warehouse/MesItemBlDetailManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
using NewPdaSqlServer.DB;
using NewPdaSqlServer.entity;
namespace NewPdaSqlServer.service.Warehouse;
public class MesItemBlDetailManager : Repository<MesItemBlDetail>
{
    //当前类已经继承了 Repository å¢žã€åˆ ã€æŸ¥ã€æ”¹çš„æ–¹æ³•
    //这里面写的代码不会给覆盖,如果要重新生成请删除 MesItemBlDetailManager.cs
}
service/Warehouse/MesItemBlManager.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1733 @@
using 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("单据号不正确!");
        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("单据号不正确!");
        // æ£€æŸ¥å·¥å•明细状态
        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
}
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}";
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