cnf
2025-08-01 ad98086ca42359208740fc18b53e6ccfb8f56e38
生产领料,报工
已修改5个文件
已添加1个文件
1199 ■■■■ 文件已修改
Controllers/Wom/MesWorkProdController.cs 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Wom/WomdaaController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/service/ScanWorkRequest.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/service/ScanWorkResult.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
entity/MesInvItemInRksqDetails.cs 400 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Wom/MesWorkProdManager.cs 729 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Controllers/Wom/MesWorkProdController.cs
@@ -214,5 +214,59 @@
        }
    }
    /// <summary>
    ///     PDA扫描生产报工
    /// </summary>
    /// <param name="request">报工请求参数</param>
    /// <returns>报工结果</returns>
    /// <remarks>
    ///     è¯·æ±‚示例:
    ///     POST /api/MesWorkProd/GetRksqList
    ///     {
    ///     "sjBillNO": "rksq001",
    ///     }
    /// </remarks>
    /// <response code="200">扫描成功</response>
    /// <response code="400">扫描失败,返回具体错误信息</response>
    [HttpPost("GetRksqList")]
    public ResponseResult GetRksqList([FromBody] ScanWorkRequest request)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.result = _manager.GetRksqList(request);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    [HttpPost("GetRksqSelect")]
    public ResponseResult GetRksqSelect([FromBody] ScanWorkRequest request)
    {
        try
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.result = _manager.GetRksqSelect(request);
            return new ResponseResult
            {
                status = 0,
                message = "OK",
                data = resultInfos
            };
        }
        catch (Exception ex)
        {
            return ResponseResult.ResponseError(ex);
        }
    }
    #endregion
}
Controllers/Wom/WomdaaController.cs
@@ -105,7 +105,7 @@
        {
            dynamic resultInfos = new ExpandoObject();
            resultInfos.tbBillList = new ExpandoObject();
            resultInfos.tbBillList.printInfo = _mCf.getPrintInfo(query);
            //resultInfos.tbBillList.printInfo = _mCf.getPrintInfo(query);
            var scanResult = m.ScanCodeCF(query);
            resultInfos.tbBillList.cfBarInfo = _mCf.getCfInfo(scanResult);
            return new ResponseResult
Dto/service/ScanWorkRequest.cs
@@ -1,10 +1,13 @@
namespace NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
namespace NewPdaSqlServer.Dto.service;
public class ScanWorkRequest
{
    public string? UserNo { get; set; }
    public string? ItemBarcode { get; set; }
    public string? StaffNo { get; set; }
    public string? sjBillNo { get; set; }
    public decimal? Quantity { get; set; }
}
Dto/service/ScanWorkResult.cs
@@ -1,4 +1,6 @@
namespace NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
namespace NewPdaSqlServer.Dto.service;
/// <summary>
///     ç”Ÿäº§æŠ¥å·¥æ‰«æç»“æžœ
@@ -14,4 +16,7 @@
    public string ItemName { get; set; }
    public string ItemModel { get; set; }
    public string Message { get; set; }
    public string sjBillNo { get; set; }
    public List<MesInvItemInRksqDetails> BarcodesDetail { get; set; }
    public List<MesInvItemIns> rksqOrderList { get; set; }
}
entity/MesInvItemInRksqDetails.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,400 @@
using SqlSugar;
namespace NewPdaSqlServer.entity
{
    /// <summary>
    ///     ç‰©æ–™å…¥åº“条码明细
    /// </summary>
    [SugarTable("MES_INV_ITEM_IN_RKSQ_DETAILS")]
    public class MesInvItemInRksqDetails
    {
        /// <summary>
        ///     é»˜è®¤å€¼: (newid())
        /// </summary>
        [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
        public Guid Guid { get; set; }
        /// <summary>
        ///     å…¥åº“单id
        /// </summary>
        [SugarColumn(ColumnName = "ITEM_IN_ID")]
        public Guid? ItemInId { get; set; }
        /// <summary>
        ///     ç‰©æ–™æ¡ç PSN
        /// </summary>
        [SugarColumn(ColumnName = "ITEM_BARCODE")]
        public string? ItemBarcode { get; set; }
        /// <summary>
        ///     å®¢æˆ·ç‰©æ–™ç¼–码(无条码手工录入,有条码为冗余字段)
        /// </summary>
        [SugarColumn(ColumnName = "C_ITEM_CODE")]
        public string? CItemCode { get; set; }
        /// <summary>
        ///     å®¢æˆ·ç‰©æ–™æ¡ç 
        /// </summary>
        [SugarColumn(ColumnName = "C_ITEM_BARCODE")]
        public string? CItemBarcode { get; set; }
        /// <summary>
        ///     éªŒæ”¶æ•°é‡
        /// </summary>
        [SugarColumn(ColumnName = "QUANTITY")]
        public decimal? Quantity { get; set; }
        /// <summary>
        ///     å…¥åº“方式(1:有条码,0:无条码)
        ///     é»˜è®¤å€¼: ((1))
        /// </summary>
        [SugarColumn(ColumnName = "BARCODE_FLAG")]
        public bool? BarcodeFlag { get; set; }
        /// <summary>
        ///     çŽ¯ä¿æ ‡å¿—ï¼ˆ0-非环保,1-环保.无条码手工录入,有条码为冗余字段)
        ///     é»˜è®¤å€¼: ((1))
        /// </summary>
        [SugarColumn(ColumnName = "EP_FLAG")]
        public bool? EpFlag { get; set; }
        /// <summary>
        ///     åˆ›å»ºäºº
        /// </summary>
        [SugarColumn(ColumnName = "CREATE_BY")]
        public string? CreateBy { get; set; }
        /// <summary>
        ///     åˆ›å»ºæ—¶é—´
        /// </summary>
        [SugarColumn(ColumnName = "CREATE_DATE")]
        public DateTime? CreateDate { get; set; }
        /// <summary>
        ///     æœ€åŽæ›´æ–°äºº
        /// </summary>
        [SugarColumn(ColumnName = "LASTUPDATE_BY")]
        public string? LastupdateBy { get; set; }
        /// <summary>
        ///     æœ€åŽæ›´æ–°æ—¶é—´
        /// </summary>
        [SugarColumn(ColumnName = "LASTUPDATE_DATE")]
        public DateTime? LastupdateDate { get; set; }
        /// <summary>
        ///     ä½œä¸šæ–¹å¼0-有线条码枪1-无线条码枪
        /// </summary>
        [SugarColumn(ColumnName = "WORK_TYPE")]
        public long? WorkType { get; set; }
        /// <summary>
        ///     æœ¬å¸ç‰©æ–™ç¼–码(无条码手工录入,有条码为冗余字段)
        /// </summary>
        [SugarColumn(ColumnName = "ITEM_NO")]
        public string? ItemNo { get; set; }
        /// <summary>
        ///     åŽ‚å®¶æ‰¹æ¬¡
        /// </summary>
        [SugarColumn(ColumnName = "LOT_NO")]
        public string? LotNo { get; set; }
        /// <summary>
        ///     æ˜¯å¦å…±ç®¡ç‰©æ–™(0:否,1:是)
        ///     é»˜è®¤å€¼: ((0))
        /// </summary>
        [SugarColumn(ColumnName = "COMANAGEMENT_FLAG")]
        public bool? ComanagementFlag { get; set; }
        /// <summary>
        ///     å®¢æˆ·ç¼–码
        /// </summary>
        [SugarColumn(ColumnName = "CUST_NO")]
        public string? CustNo { get; set; }
        /// <summary>
        ///     æ£€éªŒç»“æžœ
        /// </summary>
        [SugarColumn(ColumnName = "CHECK_RES")]
        public string? CheckRes { get; set; }
        /// <summary>
        ///     è¿›è´§æ•°é‡
        /// </summary>
        [SugarColumn(ColumnName = "CHECK_QTY")]
        public decimal? CheckQty { get; set; }
        /// <summary>
        ///     æ£€éªŒçŠ¶æ€
        /// </summary>
        [SugarColumn(ColumnName = "CHECK_STATES")]
        public string? CheckStates { get; set; }
        /// <summary>
        ///     å¼ºåˆ¶å…¥åº“标记0无,1-强制入库  é€€æ–™å•使用
        ///     é»˜è®¤å€¼: ((0))
        /// </summary>
        [SugarColumn(ColumnName = "FORCE_IN_FLAG")]
        public bool? ForceInFlag { get; set; }
        /// <summary>
        ///     ä»“库编码
        /// </summary>
        [SugarColumn(ColumnName = "DEPOT_CODE")]
        public string? DepotCode { get; set; }
        /// <summary>
        ///     è´§ä½ç¼–码
        /// </summary>
        [SugarColumn(ColumnName = "DEPOT_SECTION_CODE")]
        public string? DepotSectionCode { get; set; }
        /// <summary>
        ///     ç‰¹è®°äº‹é¡¹
        /// </summary>
        [SugarColumn(ColumnName = "REMARK")]
        public string? Remark { get; set; }
        /// <summary>
        ///     ç‰©æ–™æ¡ç 
        /// </summary>
        [SugarColumn(ColumnName = "ITEM_BARCODE2")]
        public string? ItemBarcode2 { get; set; }
        /// <summary>
        ///     æ–°æ¡ç 
        /// </summary>
        [SugarColumn(ColumnName = "ITEM_BARCODE3")]
        public string? ItemBarcode3 { get; set; }
        /// <summary>
        ///     å·²ä½¿ç”¨æ•°é‡
        /// </summary>
        [SugarColumn(ColumnName = "USE_QTY")]
        public decimal? UseQty { get; set; }
        /// <summary>
        ///     å‡ºåº“数量
        /// </summary>
        [SugarColumn(ColumnName = "OUT_QTY")]
        public decimal? OutQty { get; set; }
        /// <summary>
        ///     ç‰©æ–™åç§°
        /// </summary>
        [SugarColumn(ColumnName = "ITEM_SNAME")]
        public string? ItemSname { get; set; }
        /// <summary>
        ///     èµ·å§‹ä½ç½®
        /// </summary>
        [SugarColumn(ColumnName = "SPOSTION")]
        public int? Spostion { get; set; }
        /// <summary>
        ///     ç»“束位置
        /// </summary>
        [SugarColumn(ColumnName = "EPOSTION")]
        public int? Epostion { get; set; }
        /// <summary>
        ///     æ£€éªŒæ—¥æœŸ
        /// </summary>
        [SugarColumn(ColumnName = "CHECK_DATE")]
        public DateTime? CheckDate { get; set; }
        /// <summary>
        ///     å•位
        /// </summary>
        [SugarColumn(ColumnName = "UNIT")]
        public string? Unit { get; set; }
        /// <summary>
        ///     æ˜¯å¦æ£€éªŒ
        ///     é»˜è®¤å€¼: ((0))
        /// </summary>
        [SugarColumn(ColumnName = "ISCHECK")]
        public bool? Ischeck { get; set; }
        /// <summary>
        ///     é‡‡è´­å•号
        /// </summary>
        [SugarColumn(ColumnName = "EBELN")]
        public string? Ebeln { get; set; }
        /// <summary>
        ///     æ‰¹æ¬¡æ—¥æœŸ
        /// </summary>
        [SugarColumn(ColumnName = "LOT_DATE")]
        public string? LotDate { get; set; }
        /// <summary>
        ///     å‘票号
        /// </summary>
        [SugarColumn(ColumnName = "BILL_NO")]
        public string? BillNo { get; set; }
        /// <summary>
        ///     æ˜¯å¦å…¥åº“成功
        ///     é»˜è®¤å€¼: ((0))
        /// </summary>
        [SugarColumn(ColumnName = "STOCK_OK")]
        public bool? StockOk { get; set; }
        /// <summary>
        ///     å·¥åŽ‚
        /// </summary>
        [SugarColumn(ColumnName = "FACTORY")]
        public string? Factory { get; set; }
        /// <summary>
        ///     å…¬å¸
        /// </summary>
        [SugarColumn(ColumnName = "COMPANY")]
        public string? Company { get; set; }
        /// <summary>
        ///     CB单号
        /// </summary>
        [SugarColumn(ColumnName = "CB_NO")]
        public string? CbNo { get; set; }
        /// <summary>
        ///     ç®±å·
        /// </summary>
        [SugarColumn(ColumnName = "BOX_NO")]
        public string? BoxNo { get; set; }
        /// <summary>
        ///     ä»“库ID
        /// </summary>
        [SugarColumn(ColumnName = "DEPOT_ID")]
        public long? DepotId { get; set; }
        /// <summary>
        ///     è´§ä½ID
        /// </summary>
        [SugarColumn(ColumnName = "DEPOT_SECTION_ID")]
        public long? DepotSectionId { get; set; }
        /// <summary>
        ///     è¡Œå·
        /// </summary>
        [SugarColumn(ColumnName = "LINE_NUM")]
        public string? LineNum { get; set; }
        /// <summary>
        ///     æ‰«ææ•°é‡
        /// </summary>
        [SugarColumn(ColumnName = "SM_QTY")]
        public decimal? SmQty { get; set; }
        /// <summary>
        ///     å‘货单号
        /// </summary>
        [SugarColumn(ColumnName = "VGBEL")]
        public string? Vgbel { get; set; }
        /// <summary>
        ///     è¡Œå·
        /// </summary>
        [SugarColumn(ColumnName = "KDPOS")]
        public long? Kdpos { get; set; }
        /// <summary>
        ///     ä½œä¸šå•号
        /// </summary>
        [SugarColumn(ColumnName = "WORK_NO")]
        public string? WorkNo { get; set; }
        /// <summary>
        ///     è¡Œå·
        /// </summary>
        [SugarColumn(ColumnName = "EBELN_LINE_NO")]
        public long? EbelnLineNo { get; set; }
        /// <summary>
        ///     CB单号
        /// </summary>
        [SugarColumn(ColumnName = "CBILL_NO")]
        public string? CbillNo { get; set; }
        /// <summary>
        ///     ç´§æ€¥æ ‡è®°
        /// </summary>
        [SugarColumn(ColumnName = "URGENT_FLAG")]
        public bool? UrgentFlag { get; set; }
        /// <summary>
        ///     æ¿åž‹
        /// </summary>
        [SugarColumn(ColumnName = "BOARD_STYLE")]
        public string? BoardStyle { get; set; }
        /// <summary>
        ///     å·¥ä½œè¡Œå·
        /// </summary>
        [SugarColumn(ColumnName = "WORK_LINE")]
        public int? WorkLine { get; set; }
        /// <summary>
        ///     ä»»åŠ¡å·
        /// </summary>
        [SugarColumn(ColumnName = "TASK_NO")]
        public string? TaskNo { get; set; }
        /// <summary>
        ///     ä¾›åº”商编码
        /// </summary>
        [SugarColumn(ColumnName = "SUPP_NO")]
        public string? SuppNo { get; set; }
        /// <summary>
        ///     æ”¶è´§å•号
        /// </summary>
        [SugarColumn(ColumnName = "RBILL_NO")]
        public string? RbillNo { get; set; }
        /// <summary>
        ///     K3 é‡‡è´­å•号
        /// </summary>
        [SugarColumn(ColumnName = "EBELN_K3ID")]
        public long? EbelnK3id { get; set; }
        /// <summary>
        ///     K3 è¡Œå·
        /// </summary>
        [SugarColumn(ColumnName = "LINE_K3ID")]
        public long? LineK3id { get; set; }
        /// <summary>
        ///     ç‰©æ–™ID
        /// </summary>
        [SugarColumn(ColumnName = "ITEM_ID")]
        public long? ItemId { get; set; }
        /// <summary>
        /// </summary>
        [SugarColumn(ColumnName = "SUPP_ID")]
        public string? SuppId { get; set; }
        /// <summary>
        ///     æ”¶æ–™ç»„织
        /// </summary>
        [SugarColumn(ColumnName = "ReceiveOrgId")]
        public string? ReceiveOrgId { get; set; }
        // æ·»åŠ çš„å­—æ®µï¼Œå¹¶ä¸”å®ƒä»¬ä¸å±žäºŽæ•°æ®åº“è¡¨
        [SugarColumn(IsIgnore = true)] public string? ItemName { get; set; }
        [SugarColumn(IsIgnore = true)] public string? ItemModel { get; set; }
        [SugarColumn(IsIgnore = true)] public string? ItemUnit { get; set; }
        [SugarColumn(IsIgnore = true)] public decimal? BgQuantity { get; set; }
}
}
service/Wom/MesWorkProdManager.cs
@@ -1,8 +1,12 @@
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.entity.Base;
using NewPdaSqlServer.util;
using SqlSugar;
using System.Data;
using System.Data.SqlClient;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace NewPdaSqlServer.service.Wom;
@@ -42,10 +46,212 @@
    /// </exception>
    public ScanWorkResult ScanWorkAsync(ScanWorkRequest request)
    {
        // 1. éªŒè¯å‘˜å·¥ä¿¡æ¯
        var staff = Db.Queryable<MesStaff>()
            .Where(x => x.StaffNo == request.StaffNo)
            .First();
        // // 1. éªŒè¯å‘˜å·¥ä¿¡æ¯
        // var staff = Db.Queryable<MesStaff>()
        //     .Where(x => x.StaffNo == request.StaffNo)
        //     .First();
        // if (staff == null)
        //     throw new Exception("请先选择人员");
        // // 2. éªŒè¯æ¡ç ä¿¡æ¯
        // var barcode = Db.Queryable<MesInvItemBarcodes>()
        //     .Where(x => x.ItemBarcode == request.ItemBarcode)
        //     .First();
        // if (barcode == null)
        //     throw new Exception($"无此条码,请核对!{request.ItemBarcode}");
        // // 3. éªŒè¯ç‰©æ–™ä¿¡æ¯
        // var item = Db.Queryable<MesItems>()
        //     .Where(x => x.Id == barcode.ItemId)
        //     .First();
        // if (item == null)
        //     throw new Exception($"无此物料,请核对!{request.ItemBarcode}");
        // // 4. æ ¹æ®æ¡ç å¤‡æ³¨ç¡®å®šå•据类型和交易号
        // var billTypeId = 900; // é»˜è®¤å•据类型
        // var transactionNo = 902; // é»˜è®¤äº¤æ˜“号
        // switch (barcode.Memo?.Trim() ?? "0")
        // {
        //     case "丝印":
        //         transactionNo = 901; // ä¸å°å·¥åº
        //         break;
        //     case "半成品":
        //         transactionNo = 902; // åŠæˆå“å·¥åº
        //         break;
        //     case "包装":
        //     case "成品":
        //         transactionNo = 903; // æˆå“/包装工序
        //         break;
        // }
        // // 5. æ£€æŸ¥æ¡ç æ˜¯å¦é‡å¤æ‰«æ
        // var exists = Db.Queryable<MesWorkProd, MesWorkProdCDetails>(
        //         (a, b) =>
        //             new JoinQueryInfos(JoinType.Inner,
        //                 a.Id == b.MesWorkProdId))
        //     .Where((a, b) => b.ItemBarcode == request.ItemBarcode
        //                      && a.BillTypeId == billTypeId
        //                      && a.TransactionNo == transactionNo)
        //     .Any();
        // if (exists)
        //     throw new Exception("条码重复扫描,请核对!");
        // // 6. èŽ·å–å·²æŠ¥å·¥æ•°é‡
        // var reportedQty = Db.Queryable<MesWorkProd, MesWorkProdCDetails>(
        //         (a, b) =>
        //             new JoinQueryInfos(JoinType.Inner,
        //                 a.BillNo == b.BillNo))
        //     .Where((a, b) => a.BillTypeId == billTypeId
        //                      && a.TransactionNo == transactionNo
        //                      && a.TaskNo == barcode.BillNo)
        //     .Sum((a, b) => b.Quantity);
        // // 7. èŽ·å–å·¥å•è®¡åˆ’æ•°é‡å’Œåž‹å·
        // var workOrder = Db.Queryable<Womdaa>()
        //     .Where(x => x.Daa001 == barcode.BillNo)
        //     .First();
        // if (workOrder == null)
        //     throw new Exception($"无工单明细,请核对!{request.ItemBarcode}");
        // var planQty = workOrder.Daa008;
        // var itemModel = workOrder.Daa004;
        // // 8. ä½¿ç”¨äº‹åŠ¡å¤„ç†æŠ¥å·¥æ•°æ®
        // UseTransaction(db =>
        // {
        //     // 9. å¤„理有数量条码的自动报工
        //     if (barcode.Quantity > 0)
        //     {
        //         var reportQty = barcode.Quantity;
        //         if (reportQty <= 0)
        //             throw new Exception(
        //                 $"报工数量不能小于等于0,请核对!{request.ItemBarcode}");
        //         var totalQty = (reportedQty ?? 0) + reportQty;
        //         if (totalQty > workOrder.Daa008)
        //             throw new Exception(
        //                 $"本次报工数量:{reportQty} å¤§äºŽå‰©ä½™æŠ¥å·¥æ•°é‡ï¼š{workOrder.Daa008 - reportedQty ?? 0},请核对!");
        //         // 10. æ›´æ–°æ¡ç çŠ¶æ€
        //         db.Updateable<MesInvItemBarcodes>()
        //             .SetColumns(x => new MesInvItemBarcodes
        //             {
        //                 WorkFlg = true
        //                 //Quantity = reportQty
        //             })
        //             .Where(x => x.Guid == barcode.Guid)
        //             .ExecuteCommand();
        //         // 11. èŽ·å–æˆ–åˆ›å»ºæŠ¥å·¥å•
        //         var workProd = db.Queryable<MesWorkProd>()
        //             .Where(x => x.TaskNo == barcode.BillNo
        //                         && x.CreateDate.Value.Date.ToString(
        //                             "yyyy-MM-dd") ==
        //                         DateTime.Now.Date.ToString("yyyy-MM-dd")
        //                         && x.BillTypeId == billTypeId
        //                         && x.TransactionNo == transactionNo
        //                         && x.ReportBy == request.StaffNo)
        //             .First();
        //         var id = Guid.Empty;
        //         var billNo = "";
        //         if (workProd == null)
        //         {
        //             id = Guid.NewGuid();
        //             billNo = BillNo.GetBillNo("BG(报工)");
        //             workProd = new MesWorkProd
        //             {
        //                 Id = id,
        //                 BillNo = billNo,
        //                 LineNo = barcode.LineNo,
        //                 Company = barcode.Company,
        //                 Factory = barcode.Factory,
        //                 CreateBy = request.UserNo,
        //                 CreateDate = DateTime.Now,
        //                 LastupdateBy = request.UserNo,
        //                 LastupdateDate = DateTime.Now,
        //                 BillTypeId = billTypeId,
        //                 TransactionNo = transactionNo,
        //                 TaskNo = barcode.BillNo,
        //                 ReportBy = request.StaffNo,
        //                 ReportDate = DateTime.Now
        //             };
        //             db.Insertable(workProd).IgnoreColumns(true)
        //                 .ExecuteCommand();
        //         }
        //         else
        //         {
        //             id = workProd.Id;
        //             billNo = workProd.BillNo;
        //         }
        //         // 12. æ’入报工明细
        //         var detailId = Guid.NewGuid();
        //         db.Insertable(new MesWorkProdCDetails
        //         {
        //             Id = detailId,
        //             MesWorkProdId = id,
        //             BillNo = billNo,
        //             ItemBarcode = request.ItemBarcode,
        //             Quantity = (int)reportQty,
        //             Company = barcode.Company,
        //             Factory = barcode.Factory,
        //             CreateBy = request.UserNo,
        //             CreateDate = DateTime.Now,
        //             LastupdateBy = request.UserNo,
        //             LastupdateDate = DateTime.Now,
        //             ItemNo = item.ItemNo,
        //             WorkLast = barcode.WorkLast,
        //             SilkPqty = barcode.SilkPqty,
        //             SilkId = barcode.SilkId,
        //             Silk = barcode.Silk,
        //             BgYg = request.StaffNo
        //         }).IgnoreColumns(true).ExecuteCommand();
        //         // 13. æ›´æ–°å·¥å•已报工数量
        //         db.Updateable<Womdaa>()
        //                 .SetColumns(x => new Womdaa
        //                 {
        //                     Daa011 = (x.Daa011 ?? 0) + (int)barcode.Quantity
        //                 })
        //                 .Where(x => x.Daa001 == barcode.BillNo)
        //                 .ExecuteCommand();
        //         // 14. é‡æ–°èŽ·å–æœ€æ–°å·²æŠ¥å·¥æ•°é‡
        //         reportedQty = db.Queryable<MesWorkProd, MesWorkProdCDetails>(
        //                 (a, b) =>
        //                     new JoinQueryInfos(JoinType.Inner,
        //                         a.BillNo == b.BillNo))
        //             .Where((a, b) => a.BillTypeId == billTypeId
        //                              && a.TransactionNo == transactionNo
        //                              && a.TaskNo == barcode.BillNo)
        //             .Sum((a, b) => b.Quantity);
        //     }
        //     return 1;
        // });
        // // 15. è¿”回处理结果
        // return new ScanWorkResult
        // {
        //     TaskNo = barcode.BillNo,
        //     ItemNo = item.ItemNo,
        //     PlanQty = planQty ?? 0,
        //     ReportedQty = reportedQty ?? 0,
        //     CurrentQty = barcode.Quantity.Value,
        //     BarcodeQty = barcode.Quantity.Value,
        //     ItemName = item.ItemName,
        //     ItemModel = itemModel,
        //     Message = "扫码成功!"
        // };
        //1.验证员工信息
         var staff = Db.Queryable<MesStaff>()
             .Where(x => x.StaffNo == request.StaffNo)
             .First();
        if (staff == null)
            throw new Exception("请先选择人员");
@@ -63,46 +269,6 @@
        if (item == null)
            throw new Exception($"无此物料,请核对!{request.ItemBarcode}");
        // 4. æ ¹æ®æ¡ç å¤‡æ³¨ç¡®å®šå•据类型和交易号
        var billTypeId = 900; // é»˜è®¤å•据类型
        var transactionNo = 902; // é»˜è®¤äº¤æ˜“号
        switch (barcode.Memo?.Trim() ?? "0")
        {
            case "丝印":
                transactionNo = 901; // ä¸å°å·¥åº
                break;
            case "半成品":
                transactionNo = 902; // åŠæˆå“å·¥åº
                break;
            case "包装":
            case "成品":
                transactionNo = 903; // æˆå“/包装工序
                break;
        }
        // 5. æ£€æŸ¥æ¡ç æ˜¯å¦é‡å¤æ‰«æ
        var exists = Db.Queryable<MesWorkProd, MesWorkProdCDetails>(
                (a, b) =>
                    new JoinQueryInfos(JoinType.Inner,
                        a.Id == b.MesWorkProdId))
            .Where((a, b) => b.ItemBarcode == request.ItemBarcode
                             && a.BillTypeId == billTypeId
                             && a.TransactionNo == transactionNo)
            .Any();
        if (exists)
            throw new Exception("条码重复扫描,请核对!");
        // 6. èŽ·å–å·²æŠ¥å·¥æ•°é‡
        var reportedQty = Db.Queryable<MesWorkProd, MesWorkProdCDetails>(
                (a, b) =>
                    new JoinQueryInfos(JoinType.Inner,
                        a.BillNo == b.BillNo))
            .Where((a, b) => a.BillTypeId == billTypeId
                             && a.TransactionNo == transactionNo
                             && a.TaskNo == barcode.BillNo)
            .Sum((a, b) => b.Quantity);
        // 7. èŽ·å–å·¥å•è®¡åˆ’æ•°é‡å’Œåž‹å·
        var workOrder = Db.Queryable<Womdaa>()
            .Where(x => x.Daa001 == barcode.BillNo)
@@ -110,139 +276,66 @@
        if (workOrder == null)
            throw new Exception($"无工单明细,请核对!{request.ItemBarcode}");
        var planQty = workOrder.Daa008;
        var itemModel = workOrder.Daa004;
        // 8. ä½¿ç”¨äº‹åŠ¡å¤„ç†æŠ¥å·¥æ•°æ®
        UseTransaction(db =>
        // ä½¿ç”¨å­˜å‚¨è¿‡ç¨‹å¤„理生产报工
        var parameters = new SqlParameter[]
        {
            // 9. å¤„理有数量条码的自动报工
            if (barcode.Quantity > 0)
            {
                var reportQty = barcode.Quantity;
                if (reportQty <= 0)
                    throw new Exception(
                        $"报工数量不能小于等于0,请核对!{request.ItemBarcode}");
            new SqlParameter("@pi_user", request.StaffNo),
            new SqlParameter("@pi_barcode", request.ItemBarcode),
            new SqlParameter("@po_outMsg", SqlDbType.NVarChar, 200) { Direction = ParameterDirection.Output },
            new SqlParameter("@po_outSum", SqlDbType.Int) { Direction = ParameterDirection.Output },
            new SqlParameter("@po_womInBarSum", SqlDbType.Decimal) { Direction = ParameterDirection.Output }
        };
                var totalQty = (reportedQty ?? 0) + reportQty;
                if (totalQty > workOrder.Daa008)
                    throw new Exception(
                        $"本次报工数量:{reportQty} å¤§äºŽå‰©ä½™æŠ¥å·¥æ•°é‡ï¼š{workOrder.Daa008 - reportedQty ?? 0},请核对!");
        string procedureName = "prc_pda_scbg";
        int res = DbHelperSQL.RunProcedure_NonQuery(procedureName, parameters);
                // 10. æ›´æ–°æ¡ç çŠ¶æ€
                db.Updateable<MesInvItemBarcodes>()
                    .SetColumns(x => new MesInvItemBarcodes
                    {
                        WorkFlg = true
                        //Quantity = reportQty
                    })
                    .Where(x => x.Guid == barcode.Guid)
                    .ExecuteCommand();
        // Retrieve output parameters with proper type conversion
        var po_outMsg = parameters[2].Value?.ToString() ?? string.Empty;
        var po_outSum = parameters[3].Value != DBNull.Value ? Convert.ToInt32(parameters[3].Value) : -1;
        var po_womInBarSum = parameters[4].Value != DBNull.Value ? Convert.ToDecimal(parameters[4].Value) : 0m;
                // 11. èŽ·å–æˆ–åˆ›å»ºæŠ¥å·¥å•
                var workProd = db.Queryable<MesWorkProd>()
                    .Where(x => x.TaskNo == barcode.BillNo
                                && x.CreateDate.Value.Date.ToString(
                                    "yyyy-MM-dd") ==
                                DateTime.Now.Date.ToString("yyyy-MM-dd")
                                && x.BillTypeId == billTypeId
                                && x.TransactionNo == transactionNo
                                && x.ReportBy == request.StaffNo)
                    .First();
        var rksqOrder = Db.Queryable<MesInvItemIns>()
            .Where(x => x.RbillNo == barcode.BillNo && x.TransctionNo=="181" && x.CreateBy==request.StaffNo)
            .First();
                var id = Guid.Empty;
                var billNo = "";
                if (workProd == null)
                {
                    id = Guid.NewGuid();
                    billNo = BillNo.GetBillNo("BG(报工)");
        var sql = string.Format(@"SELECT A.item_barcode ItemBarcode,B.QUANTITY BgQuantity,c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel
    FROM MES_INV_ITEM_IN_RKSQ_DETAILS A
    LEFT JOIN MES_INV_ITEM_BARCODES B ON A.item_barcode = B.ITEM_BARCODE
    LEFT JOIN MES_ITEMS C ON  B.ITEM_ID = C.item_id
    WHERE A.bill_no= '{0}' ORDER BY A.create_date DESC", rksqOrder.BillNo);
                    workProd = new MesWorkProd
                    {
                        Id = id,
                        BillNo = billNo,
                        LineNo = barcode.LineNo,
                        Company = barcode.Company,
                        Factory = barcode.Factory,
                        CreateBy = request.UserNo,
                        CreateDate = DateTime.Now,
                        LastupdateBy = request.UserNo,
                        LastupdateDate = DateTime.Now,
                        BillTypeId = billTypeId,
                        TransactionNo = transactionNo,
                        TaskNo = barcode.BillNo,
                        ReportBy = request.StaffNo,
                        ReportDate = DateTime.Now
                    };
        var RKSQ = Db.Ado.SqlQuery<MesInvItemInRksqDetails>(sql);
                    db.Insertable(workProd).IgnoreColumns(true)
                        .ExecuteCommand();
                }
                else
                {
                    id = workProd.Id;
                    billNo = workProd.BillNo;
                }
                // 12. æ’入报工明细
                var detailId = Guid.NewGuid();
                db.Insertable(new MesWorkProdCDetails
                {
                    Id = detailId,
                    MesWorkProdId = id,
                    BillNo = billNo,
                    ItemBarcode = request.ItemBarcode,
                    Quantity = (int)reportQty,
                    Company = barcode.Company,
                    Factory = barcode.Factory,
                    CreateBy = request.UserNo,
                    CreateDate = DateTime.Now,
                    LastupdateBy = request.UserNo,
                    LastupdateDate = DateTime.Now,
                    ItemNo = item.ItemNo,
                    WorkLast = barcode.WorkLast,
                    SilkPqty = barcode.SilkPqty,
                    SilkId = barcode.SilkId,
                    Silk = barcode.Silk,
                    BgYg = request.StaffNo
                }).IgnoreColumns(true).ExecuteCommand();
        var rksqDetails = RKSQ.ToList();
                // 13. æ›´æ–°å·¥å•已报工数量
                db.Updateable<Womdaa>()
                        .SetColumns(x => new Womdaa
                        {
                            Daa011 = (x.Daa011 ?? 0) + (int)barcode.Quantity
                        })
                        .Where(x => x.Daa001 == barcode.BillNo)
                        .ExecuteCommand();
                // 14. é‡æ–°èŽ·å–æœ€æ–°å·²æŠ¥å·¥æ•°é‡
                reportedQty = db.Queryable<MesWorkProd, MesWorkProdCDetails>(
                        (a, b) =>
                            new JoinQueryInfos(JoinType.Inner,
                                a.BillNo == b.BillNo))
                    .Where((a, b) => a.BillTypeId == billTypeId
                                     && a.TransactionNo == transactionNo
                                     && a.TaskNo == barcode.BillNo)
                    .Sum((a, b) => b.Quantity);
            }
        //var rksqDetails = Db.Queryable<MesInvItemInRksqDetails>()
        //    .Where(x => x.BillNo == )
        //    .ToList();
            return 1;
        });
        // Check if the procedure failed
        if (po_outSum == -1)
        {
            throw new Exception(po_outMsg);
        }
        // 15. è¿”回处理结果
        // 15. Return processing result
        return new ScanWorkResult
        {
            TaskNo = barcode.BillNo,
            ItemNo = item.ItemNo,
            PlanQty = planQty ?? 0,
            ReportedQty = reportedQty ?? 0,
            PlanQty = workOrder.Daa008 ?? 0,
            ReportedQty = po_womInBarSum,
            CurrentQty = barcode.Quantity.Value,
            BarcodeQty = barcode.Quantity.Value,
            ItemName = item.ItemName,
            ItemModel = itemModel,
            Message = "扫码成功!"
            ItemModel = workOrder.Daa004,
            Message = po_outMsg,
            sjBillNo  = rksqOrder.BillNo,
            BarcodesDetail = rksqDetails,
        };
    }
@@ -264,124 +357,220 @@
    /// </exception>
    public bool ScanWorkProdAsync(ScanWorkRequest request)
    {
        // 1. éªŒè¯æŠ¥å·¥æ•°é‡æ˜¯å¦å¤§äºŽ0
        if (request.Quantity <= 0)
            throw new Exception("报工数量不能小于等于 0,请核对!");
        //// 1. éªŒè¯æŠ¥å·¥æ•°é‡æ˜¯å¦å¤§äºŽ0
        //if (request.Quantity <= 0)
        //    throw new Exception("报工数量不能小于等于 0,请核对!");
        // 2. æŸ¥è¯¢æ¡ç ä¿¡æ¯ï¼ŒéªŒè¯æ¡ç æ˜¯å¦å­˜åœ¨
        var barcode = Db.Queryable<MesInvItemBarcodes>()
            .Where(x => x.ItemBarcode == request.ItemBarcode)
            .First();
        if (barcode == null)
            throw new Exception($"库存中无此条码,请核对!{request.ItemBarcode}");
        //// 2. æŸ¥è¯¢æ¡ç ä¿¡æ¯ï¼ŒéªŒè¯æ¡ç æ˜¯å¦å­˜åœ¨
        //var barcode = Db.Queryable<MesInvItemBarcodes>()
        //    .Where(x => x.ItemBarcode == request.ItemBarcode)
        //    .First();
        //if (barcode == null)
        //    throw new Exception($"库存中无此条码,请核对!{request.ItemBarcode}");
        // 3. æŸ¥è¯¢å·¥å•信息,验证工单是否存在
        var womdaa = Db.Queryable<Womdaa>()
            .Where(x => x.Daa001 == barcode.BillNo)
            .First();
        if (womdaa == null)
            throw new Exception($"条码不是报工条码/无对应工单,请核对!{request.ItemBarcode}");
        //// 3. æŸ¥è¯¢å·¥å•信息,验证工单是否存在
        //var womdaa = Db.Queryable<Womdaa>()
        //    .Where(x => x.Daa001 == barcode.BillNo)
        //    .First();
        //if (womdaa == null)
        //    throw new Exception($"条码不是报工条码/无对应工单,请核对!{request.ItemBarcode}");
        // 4. æ ¹æ®æ¡ç å¤‡æ³¨ç¡®å®šå•据类型和交易号
        var billTypeId = 900; // é»˜è®¤å•据类型
        var transactionNo = 902; // é»˜è®¤äº¤æ˜“号(半成品工序)
        switch (barcode.Memo?.Trim() ?? "0")
        //// 4. æ ¹æ®æ¡ç å¤‡æ³¨ç¡®å®šå•据类型和交易号
        //var billTypeId = 900; // é»˜è®¤å•据类型
        //var transactionNo = 902; // é»˜è®¤äº¤æ˜“号(半成品工序)
        //switch (barcode.Memo?.Trim() ?? "0")
        //{
        //    case "丝印":
        //        transactionNo = 901; // ä¸å°å·¥åº
        //        break;
        //    case "半成品":
        //        transactionNo = 902; // åŠæˆå“å·¥åº
        //        break;
        //    case "成品":
        //    case "包装":
        //        transactionNo = 903; // æˆå“/包装工序
        //        break;
        //}
        //// 5. æ±‡æ€»å·²æ‰«æ¡ç æ•°é‡ï¼ŒéªŒè¯æ˜¯å¦è¶…出计划数量
        //var sumQty = Db.Queryable<MesWorkProd, MesWorkProdCDetails>((a, b) =>
        //        new JoinQueryInfos(JoinType.Inner, a.BillNo == b.BillNo))
        //    .Where((a, b) => a.BillTypeId == billTypeId
        //                     && a.TransactionNo == transactionNo
        //                     && b.SilkId == barcode.SilkId
        //                     && a.TaskNo == barcode.BillNo)
        //    .Sum((a, b) => b.Quantity);
        //sumQty = (sumQty ?? 0) + (int)request.Quantity;
        //if (sumQty > womdaa.Daa008)
        //    throw new Exception(
        //        $"本次报工数量:{request.Quantity} å¤§äºŽå‰©ä½™æŠ¥å·¥æ•°é‡ï¼š{womdaa.Daa008 - (sumQty - request.Quantity)},请核对!");
        //// 6. å¼€å¯äº‹åŠ¡å¤„ç†æŠ¥å·¥æ•°æ®
        //return UseTransaction(db =>
        //{
        //    // 6.1 æ›´æ–°æ¡ç ä¿¡æ¯ï¼Œè®¾ç½®å·²æŠ¥å·¥æ ‡è®°å’Œæ•°é‡
        //    db.Updateable<MesInvItemBarcodes>()
        //        .SetColumns(x => x.WorkFlg == true)
        //        .SetColumns(x => x.Quantity == request.Quantity)
        //        .Where(x => x.Guid == barcode.Guid)
        //        .ExecuteCommand();
        //    // 6.2 èŽ·å–æˆ–åˆ›å»ºæŠ¥å·¥å•
        //    var workProd = db.Queryable<MesWorkProd>()
        //        .Where(x => x.TaskNo == barcode.BillNo
        //                    && x.CreateDate.Value.Date.ToString("yyyy-MM-dd") ==
        //                    DateTime.Now.Date.ToString("yyyy-MM-dd")
        //                    && x.BillTypeId == billTypeId
        //                    && x.TransactionNo == transactionNo
        //                    && x.Status == 0)
        //        .First();
        //    // 6.3 å¦‚果报工单不存在则创建新的报工单
        //    if (workProd == null)
        //    {
        //        var billNo = BillNo.GetBillNo("BG(报工编号)");
        //        workProd = new MesWorkProd
        //        {
        //            Id = Guid.NewGuid(),
        //            BillNo = billNo,
        //            LineNo = barcode.LineNo,
        //            Company = barcode.Company,
        //            Factory = barcode.Factory,
        //            CreateBy = request.UserNo,
        //            CreateDate = DateTime.Now,
        //            LastupdateBy = request.UserNo,
        //            LastupdateDate = DateTime.Now,
        //            PbillNo = barcode.BillNo,
        //            BillTypeId = billTypeId,
        //            TransactionNo = transactionNo,
        //            TaskNo = barcode.BillNo
        //        };
        //        db.Insertable(workProd).IgnoreColumns(true).ExecuteCommand();
        //    }
        //    // 6.4 æ’入报工明细记录
        //    var detail = new MesWorkProdCDetails
        //    {
        //        Id = Guid.NewGuid(),
        //        BillNo = workProd.BillNo,
        //        ItemBarcode = request.ItemBarcode,
        //        Quantity = (int)request.Quantity,
        //        Company = barcode.Company,
        //        Factory = barcode.Factory,
        //        CreateBy = request.UserNo,
        //        CreateDate = DateTime.Now,
        //        LastupdateBy = request.UserNo,
        //        LastupdateDate = DateTime.Now,
        //        ItemNo = barcode.ItemNo,
        //        PbillNo = barcode.BillNo,
        //        WorkLast = barcode.WorkLast,
        //        SilkPqty = barcode.SilkPqty,
        //        SilkId = barcode.SilkId,
        //        Silk = barcode.Silk
        //    };
        //    db.Insertable(detail).IgnoreColumns(true).ExecuteCommand();
        //    return 1;
        //}) > 0;
        // è°ƒç”¨å­˜å‚¨è¿‡ç¨‹å¤„理生产报工审核
        var parameters = new SqlParameter[]
        {
            case "丝印":
                transactionNo = 901; // ä¸å°å·¥åº
                break;
            case "半成品":
                transactionNo = 902; // åŠæˆå“å·¥åº
                break;
            case "成品":
            case "包装":
                transactionNo = 903; // æˆå“/包装工序
                break;
             // è¾“出参数:返回消息(最大长度2500字符)
             new SqlParameter("@outMsg", SqlDbType.NVarChar, 2500) { Direction = ParameterDirection.Output },
             // è¾“出参数:返回影响行数
             new SqlParameter("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output },
             // è¾“入参数:操作人工号
            new SqlParameter("@userno", request.UserNo),
            // è¾“入参数:单据编号(这里传入了条码值)
             new SqlParameter("@inorder", request.sjBillNo),
             // è¾“入参数:操作类型(1为审核,0为反审核)
             new SqlParameter("@inFieldValue", 1)
            // æ³¨ï¼šä»¥ä¸‹å‚数在存储过程中有默认值,可根据需要添加
            // @inFieldName nvarchar(20)=null,  // æ‰©å±•字段名
            // @in1 nvarchar(20)=null,         // æ‰©å±•字段1
            // @in2 nvarchar(20)=null          // æ‰©å±•字段2
        };
        // å­˜å‚¨è¿‡ç¨‹åç§°
        string procedureName = "prc_pda_scbg_submit";
        // æ‰§è¡Œå­˜å‚¨è¿‡ç¨‹
        int res = DbHelperSQL.RunProcedure_NonQuery(procedureName, parameters);
        // èŽ·å–è¾“å‡ºå‚æ•°å€¼ï¼ˆå¸¦ç±»åž‹è½¬æ¢ï¼‰
        var outMsg = parameters[0].Value?.ToString() ?? string.Empty;  // è¿”回消息
        var outSum = parameters[1].Value != DBNull.Value ? Convert.ToInt32(parameters[1].Value) : -1;  // å½±å“è¡Œæ•°
        if (outSum == -1)
        {
            throw new Exception(outMsg);
        }
        // 5. æ±‡æ€»å·²æ‰«æ¡ç æ•°é‡ï¼ŒéªŒè¯æ˜¯å¦è¶…出计划数量
        var sumQty = Db.Queryable<MesWorkProd, MesWorkProdCDetails>((a, b) =>
                new JoinQueryInfos(JoinType.Inner, a.BillNo == b.BillNo))
            .Where((a, b) => a.BillTypeId == billTypeId
                             && a.TransactionNo == transactionNo
                             && b.SilkId == barcode.SilkId
                             && a.TaskNo == barcode.BillNo)
            .Sum((a, b) => b.Quantity);
        sumQty = (sumQty ?? 0) + (int)request.Quantity;
        if (sumQty > womdaa.Daa008)
            throw new Exception(
                $"本次报工数量:{request.Quantity} å¤§äºŽå‰©ä½™æŠ¥å·¥æ•°é‡ï¼š{womdaa.Daa008 - (sumQty - request.Quantity)},请核对!");
        // 6. å¼€å¯äº‹åŠ¡å¤„ç†æŠ¥å·¥æ•°æ®
        return UseTransaction(db =>
        else
        {
            // 6.1 æ›´æ–°æ¡ç ä¿¡æ¯ï¼Œè®¾ç½®å·²æŠ¥å·¥æ ‡è®°å’Œæ•°é‡
            db.Updateable<MesInvItemBarcodes>()
                .SetColumns(x => x.WorkFlg == true)
                .SetColumns(x => x.Quantity == request.Quantity)
                .Where(x => x.Guid == barcode.Guid)
                .ExecuteCommand();
            // 6.2 èŽ·å–æˆ–åˆ›å»ºæŠ¥å·¥å•
            var workProd = db.Queryable<MesWorkProd>()
                .Where(x => x.TaskNo == barcode.BillNo
                            && x.CreateDate.Value.Date.ToString("yyyy-MM-dd") ==
                            DateTime.Now.Date.ToString("yyyy-MM-dd")
                            && x.BillTypeId == billTypeId
                            && x.TransactionNo == transactionNo
                            && x.Status == 0)
                .First();
            // 6.3 å¦‚果报工单不存在则创建新的报工单
            if (workProd == null)
            {
                var billNo = BillNo.GetBillNo("BG(报工编号)");
                workProd = new MesWorkProd
                {
                    Id = Guid.NewGuid(),
                    BillNo = billNo,
                    LineNo = barcode.LineNo,
                    Company = barcode.Company,
                    Factory = barcode.Factory,
                    CreateBy = request.UserNo,
                    CreateDate = DateTime.Now,
                    LastupdateBy = request.UserNo,
                    LastupdateDate = DateTime.Now,
                    PbillNo = barcode.BillNo,
                    BillTypeId = billTypeId,
                    TransactionNo = transactionNo,
                    TaskNo = barcode.BillNo
                };
                db.Insertable(workProd).IgnoreColumns(true).ExecuteCommand();
            }
            // 6.4 æ’入报工明细记录
            var detail = new MesWorkProdCDetails
            {
                Id = Guid.NewGuid(),
                BillNo = workProd.BillNo,
                ItemBarcode = request.ItemBarcode,
                Quantity = (int)request.Quantity,
                Company = barcode.Company,
                Factory = barcode.Factory,
                CreateBy = request.UserNo,
                CreateDate = DateTime.Now,
                LastupdateBy = request.UserNo,
                LastupdateDate = DateTime.Now,
                ItemNo = barcode.ItemNo,
                PbillNo = barcode.BillNo,
                WorkLast = barcode.WorkLast,
                SilkPqty = barcode.SilkPqty,
                SilkId = barcode.SilkId,
                Silk = barcode.Silk
            };
            db.Insertable(detail).IgnoreColumns(true).ExecuteCommand();
            return 1;
        }) > 0;
            return true;
        }
    }
    public ScanWorkResult GetRksqList(ScanWorkRequest request)
    {
        //1.验证员工信息
        var staff = Db.Queryable<MesStaff>()
            .Where(x => x.StaffNo == request.StaffNo)
            .First();
        if (staff == null)
            throw new Exception("请先选择人员");
        var rksqOrder = Db.Queryable<MesInvItemIns>()
            .Where(x => x.BillNo == request.sjBillNo && x.Status == 0)
            .First();
        if (rksqOrder == null)
            throw new Exception("该检验单已提交送检");
        var sql = string.Format(@"SELECT A.item_barcode ItemBarcode,B.QUANTITY BgQuantity,c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel
    FROM MES_INV_ITEM_IN_RKSQ_DETAILS A
    LEFT JOIN MES_INV_ITEM_BARCODES B ON A.item_barcode = B.ITEM_BARCODE
    LEFT JOIN MES_ITEMS C ON  B.ITEM_ID = C.item_id
    WHERE A.bill_no= '{0}'ORDER BY A.create_date DESC", rksqOrder.BillNo);
        var RKSQ = Db.Ado.SqlQuery<MesInvItemInRksqDetails>(sql);
        var rksqDetails = RKSQ.ToList();
        //var rksqDetails = Db.Queryable<MesInvItemInRksqDetails>()
        //    .Where(x => x.BillNo == )
        //    .ToList();
        // 15. Return processing result
        return new ScanWorkResult
        {
            BarcodesDetail = rksqDetails,
        };
    }
    public ScanWorkResult GetRksqSelect(ScanWorkRequest request)
    {
        //1.验证员工信息
        var staff = Db.Queryable<MesStaff>()
            .Where(x => x.StaffNo == request.StaffNo)
            .First();
        if (staff == null)
            throw new Exception("请先选择人员");
        var rksqOrder = Db.Queryable<MesInvItemIns>()
            .Where(x => x.TransctionNo=="181"&& x.Status == 0 && x.CreateBy== request.StaffNo)
            .ToList();
        return new ScanWorkResult
        {
            rksqOrderList = rksqOrder,
        };
    }
}