From ad98086ca42359208740fc18b53e6ccfb8f56e38 Mon Sep 17 00:00:00 2001
From: cnf <3200815559@qq.com>
Date: 星期五, 01 八月 2025 16:46:40 +0800
Subject: [PATCH] 生产领料,报工

---
 Dto/service/ScanWorkRequest.cs           |    7 
 Controllers/Wom/MesWorkProdController.cs |   54 ++
 Dto/service/ScanWorkResult.cs            |    7 
 Controllers/Wom/WomdaaController.cs      |    2 
 entity/MesInvItemInRksqDetails.cs        |  400 ++++++++++++++++++++
 service/Wom/MesWorkProdManager.cs        |  729 ++++++++++++++++++++++-------------
 6 files changed, 925 insertions(+), 274 deletions(-)

diff --git a/Controllers/Wom/MesWorkProdController.cs b/Controllers/Wom/MesWorkProdController.cs
index 92b1a8e..15bc4ae 100644
--- a/Controllers/Wom/MesWorkProdController.cs
+++ b/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
 }
\ No newline at end of file
diff --git a/Controllers/Wom/WomdaaController.cs b/Controllers/Wom/WomdaaController.cs
index c761e97..779ca5a 100644
--- a/Controllers/Wom/WomdaaController.cs
+++ b/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
diff --git a/Dto/service/ScanWorkRequest.cs b/Dto/service/ScanWorkRequest.cs
index ff70aef..aea0007 100644
--- a/Dto/service/ScanWorkRequest.cs
+++ b/Dto/service/ScanWorkRequest.cs
@@ -1,10 +1,13 @@
-锘縩amespace NewPdaSqlServer.Dto.service;
+锘縰sing 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; }
+    
 }
\ No newline at end of file
diff --git a/Dto/service/ScanWorkResult.cs b/Dto/service/ScanWorkResult.cs
index ff8bb47..b50ff5b 100644
--- a/Dto/service/ScanWorkResult.cs
+++ b/Dto/service/ScanWorkResult.cs
@@ -1,4 +1,6 @@
-锘縩amespace NewPdaSqlServer.Dto.service;
+锘縰sing 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; }
 }
\ No newline at end of file
diff --git a/entity/MesInvItemInRksqDetails.cs b/entity/MesInvItemInRksqDetails.cs
new file mode 100644
index 0000000..350af80
--- /dev/null
+++ b/entity/MesInvItemInRksqDetails.cs
@@ -0,0 +1,400 @@
+锘縰sing 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>
+        ///     鍏ュ簱鍗昳d
+        /// </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; }
+    
+}
+}
diff --git a/service/Wom/MesWorkProdManager.cs b/service/Wom/MesWorkProdManager.cs
index 07d18e1..1f39ae2 100644
--- a/service/Wom/MesWorkProdManager.cs
+++ b/service/Wom/MesWorkProdManager.cs
@@ -1,8 +1,12 @@
 锘縰sing 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,
+        };
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.9.3