From 80aa0cb51bc007f85c74c2cad0fb8e24a60cb371 Mon Sep 17 00:00:00 2001
From: cnf <3200815559@qq.com>
Date: 星期四, 11 九月 2025 17:30:19 +0800
Subject: [PATCH] 销售与其他出入库功能挪移

---
 service/Wom/WomdaaManager.cs                   |    4 
 entity/Base/RequestInfo.cs                     |   63 ++++
 service/Warehouse/MesXsckManager.cs            |   95 ++++--
 service/Wom/WomdaahbManager.cs                 |    5 
 service/Warehouse/MesXsthManager.cs            |   99 ++++--
 Controllers/Warehouse/MesItemQtrkController.cs |    8 
 Controllers/BaseController.cs                  |   21 +
 Controllers/Warehouse/MesXsthController.cs     |    6 
 service/Warehouse/MesItemQtManager.cs          |  290 +++++++++++++++----
 Controllers/Warehouse/MesXsckController.cs     |    6 
 entity/MesItemQtDatall.cs                      |    6 
 Controllers/Warehouse/MesItemQtController.cs   |   71 ++++
 service/Warehouse/MesItemQtrkManager.cs        |  182 +++++++----
 13 files changed, 630 insertions(+), 226 deletions(-)

diff --git a/Controllers/BaseController.cs b/Controllers/BaseController.cs
new file mode 100644
index 0000000..52ffce2
--- /dev/null
+++ b/Controllers/BaseController.cs
@@ -0,0 +1,21 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.DependencyInjection;
+
+public class BaseController : ControllerBase
+{
+    private RequestInfo _requestInfo;
+
+    protected RequestInfo RequestInfo
+    {
+        get
+        {
+            if (_requestInfo == null)
+            {
+                //蹇呭~椤�
+                //_requestInfo.ValidateRequired("OrgId");
+                _requestInfo = HttpContext.RequestServices.GetService<RequestInfo>();
+            }
+            return _requestInfo;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Controllers/Warehouse/MesItemQtController.cs b/Controllers/Warehouse/MesItemQtController.cs
index 7daac28..3a80f9e 100644
--- a/Controllers/Warehouse/MesItemQtController.cs
+++ b/Controllers/Warehouse/MesItemQtController.cs
@@ -1,6 +1,7 @@
 锘縰sing System.Dynamic;
 using Microsoft.AspNetCore.Mvc;
 using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.service.@base;
 using NewPdaSqlServer.service.Warehouse;
 using NewPdaSqlServer.util;
 
@@ -11,9 +12,11 @@
 /// </summary>
 [Route("api/[controller]")]
 [ApiController]
-public class MesItemQtController : ControllerBase
+public class MesItemQtController : BaseController
 {
     private readonly MesItemQtManager _manager = new();
+
+    private readonly MesPrintMangeer _mCf = new();
 
     #region 鍩虹CRUD
 
@@ -60,7 +63,7 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            resultInfos.tbBillList = _manager.GetPendingQtList();
+            resultInfos.tbBillList = _manager.GetPendingQtList(RequestInfo);
             return new ResponseResult
             {
                 status = 0,
@@ -81,7 +84,7 @@
     /// <returns>寰呭鐞嗙殑閫�鏂欏崟鏄庣粏鍒楄〃</returns>
     /// <remarks>
     ///     璇锋眰绀轰緥:
-    ///     POST /api/MesItemQt/GetPendingQtList
+    ///     POST /api/MesItemQt/GetPendingQtDetailList
     ///     {
     ///     "userName": "admin",      // 鐢ㄦ埛鍚�(蹇呭~)
     ///     "billNo": "QT20240101001" // 閫�鏂欏崟鍙�(蹇呭~)
@@ -91,13 +94,12 @@
     /// <response code="200">鎴愬姛鑾峰彇閫�鏂欏崟鏄庣粏</response>
     /// <response code="400">鑾峰彇澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response>
     [HttpPost("GetPendingQtDetailList")]
-    public ResponseResult GetPendingQtDetailList(
-        [FromBody] WarehouseQuery query)
+    public ResponseResult GetPendingQtDetailList([FromBody] WarehouseQuery query)
     {
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            resultInfos.tbBillList = _manager.GetPendingQtList(query);
+            resultInfos.tbBillList = _manager.GetPendingQtDetailList(query, RequestInfo);
             return new ResponseResult
             {
                 status = 0,
@@ -134,13 +136,38 @@
     [HttpPost("OutScanBarcode")]
     public ResponseResult OutScanBarcode([FromBody] WarehouseQuery query)
     {
+        //try
+        //{
+        //    dynamic resultInfos = new ExpandoObject();
+        //    var (form, items, message) = _manager.OutScanBarcode(query);
+        //    resultInfos.form = form;
+        //    resultInfos.items = items;
+        //    resultInfos.message = message;
+        //    return new ResponseResult
+        //    {
+        //        status = 0,
+        //        message = "OK",
+        //        data = resultInfos
+        //    };
+        //}
+        //catch (Exception ex)
+        //{
+        //    return ResponseResult.ResponseError(ex);
+        //}
+
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            var (form, items, message) = _manager.OutScanBarcode(query);
-            resultInfos.form = form;
-            resultInfos.items = items;
-            resultInfos.message = message;
+            resultInfos.tbBillList = _manager.ScanCode(query);
+            if (resultInfos.tbBillList.result == "2")
+            {
+                return new ResponseResult
+                {
+                    status = Convert.ToInt32(resultInfos.tbBillList.result),
+                    message = resultInfos.tbBillList.strMsg,
+                    data = resultInfos
+                };
+            }
             return new ResponseResult
             {
                 status = 0,
@@ -198,5 +225,29 @@
         }
     }
 
+
+    [HttpPost("ScanCodeCF")]
+    public ResponseResult ScanCodeCF(WarehouseQuery query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = new ExpandoObject();
+            resultInfos.tbBillList.printInfo = _mCf.getPrintInfo(query);
+            var scanResult = _manager.ScanCodeCF(query);
+            resultInfos.tbBillList.cfBarInfo = _mCf.getCfInfo(scanResult);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
     #endregion
 }
\ No newline at end of file
diff --git a/Controllers/Warehouse/MesItemQtrkController.cs b/Controllers/Warehouse/MesItemQtrkController.cs
index d881817..bef03d4 100644
--- a/Controllers/Warehouse/MesItemQtrkController.cs
+++ b/Controllers/Warehouse/MesItemQtrkController.cs
@@ -11,7 +11,7 @@
 /// </summary>
 [Route("api/[controller]")]
 [ApiController]
-public class MesItemQtrkController : ControllerBase
+public class MesItemQtrkController : BaseController
 {
     private readonly MesItemQtrkManager _manager = new();
 
@@ -84,7 +84,7 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            resultInfos.tbBillList = _manager.GetQtckList();
+            resultInfos.tbBillList = _manager.GetQtckList(RequestInfo);
             return new ResponseResult
             {
                 status = 0,
@@ -134,7 +134,7 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            resultInfos.tbBillList = _manager.GetQtckDetailList(query);
+            resultInfos.tbBillList = _manager.GetQtckDetailList(query, RequestInfo);
 
             //if(resultInfos.tbBillList.Count < 1)
             //{
@@ -181,7 +181,7 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            resultInfos.message = _manager.ScanInDepotsQT(query);
+            resultInfos = _manager.ScanInDepotsQT(query);
             return new ResponseResult
             {
                 status = 0,
diff --git a/Controllers/Warehouse/MesXsckController.cs b/Controllers/Warehouse/MesXsckController.cs
index bd252cf..8ea3e24 100644
--- a/Controllers/Warehouse/MesXsckController.cs
+++ b/Controllers/Warehouse/MesXsckController.cs
@@ -12,7 +12,7 @@
 /// </summary>
 [Route("api/[controller]")]
 [ApiController]
-public class MesXsckController : ControllerBase
+public class MesXsckController : BaseController
 {
     private readonly MesXsckManager _manager = new();
 
@@ -231,7 +231,7 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            resultInfos.tbBillList = _manager.GetFHTZBillNo(query);
+            resultInfos.tbBillList = _manager.GetFHTZBillNo(query, RequestInfo);
             return new ResponseResult
             {
                 status = 0,
@@ -266,7 +266,7 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            resultInfos.tbBillList = _manager.GetMesItemFHTZetailByBillNo(query);
+            resultInfos.tbBillList = _manager.GetMesItemFHTZetailByBillNo(query, RequestInfo);
             return new ResponseResult
             {
                 status = 0,
diff --git a/Controllers/Warehouse/MesXsthController.cs b/Controllers/Warehouse/MesXsthController.cs
index 3241ac0..6b6e66f 100644
--- a/Controllers/Warehouse/MesXsthController.cs
+++ b/Controllers/Warehouse/MesXsthController.cs
@@ -12,7 +12,7 @@
 /// </summary>
 [Route("api/[controller]")]
 [ApiController]
-public class MesXsthController : ControllerBase
+public class MesXsthController : BaseController
 {
     private readonly MesXsthManager _manager = new();
 
@@ -176,7 +176,7 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            resultInfos.tbBillList = _manager.GetXsthBillNo(query);
+            resultInfos.tbBillList = _manager.GetXsthBillNo(query, RequestInfo);
             return new ResponseResult
             {
                 status = 0,
@@ -202,7 +202,7 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            resultInfos.tbBillList = _manager.GetMesItemDetailByBillNo(query);
+            resultInfos.tbBillList = _manager.GetMesItemDetailByBillNo(query, RequestInfo);
 
             if (resultInfos.tbBillList.Count < 1)
             {
diff --git a/entity/Base/RequestInfo.cs b/entity/Base/RequestInfo.cs
new file mode 100644
index 0000000..08a12ba
--- /dev/null
+++ b/entity/Base/RequestInfo.cs
@@ -0,0 +1,63 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using System.Dynamic;
+
+public class RequestInfo : DynamicObject
+{
+    private readonly IHttpContextAccessor _httpContextAccessor;
+    private readonly ExpandoObject _data = new ExpandoObject();
+
+    public RequestInfo(IHttpContextAccessor httpContextAccessor)
+    {
+        _httpContextAccessor = httpContextAccessor;
+        InitializeData();
+    }
+
+    private void InitializeData()
+    {
+        // 鍒濆鍖栨墍鏈夐渶瑕佺殑璇锋眰澶村弬鏁�
+        SetValue("OrgId", GetHeaderValue("OrgId"));
+        //// 鍙互缁х画娣诲姞鍏朵粬鍙傛暟
+        //SetValue("UserId", GetHeaderValue("UserId"));
+        //SetValue("Language", GetHeaderValue("Language"));
+    }
+
+    public override bool TryGetMember(GetMemberBinder binder, out object result)
+    {
+        string name = binder.Name;
+        return ((IDictionary<string, object>)_data).TryGetValue(name, out result);
+    }
+
+    public override bool TrySetMember(SetMemberBinder binder, object value)
+    {
+        ((IDictionary<string, object>)_data)[binder.Name] = value;
+        return true;
+    }
+
+    public string GetHeaderValue(string key)
+    {
+        var httpContext = _httpContextAccessor.HttpContext;
+        if (httpContext?.Request.Headers.TryGetValue(key, out var value) == true)
+        {
+            return value.ToString();
+        }
+        return null;
+    }
+
+    private void SetValue(string key, object value)
+    {
+        ((IDictionary<string, object>)_data)[key] = value;
+    }
+
+    // 娣诲姞涓�涓柟娉曟潵妫�鏌ュ繀闇�鍙傛暟鏄惁瀛樺湪
+    public void ValidateRequired(params string[] requiredFields)
+    {
+        foreach (var field in requiredFields)
+        {
+            if (!((IDictionary<string, object>)_data).ContainsKey(field) ||
+                ((IDictionary<string, object>)_data)[field] == null)
+            {
+                throw new ArgumentException($"璇锋眰澶翠腑缂哄皯蹇呴渶鐨� {field} 鍙傛暟");
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/entity/MesItemQtDatall.cs b/entity/MesItemQtDatall.cs
index 57fe40f..174a795 100644
--- a/entity/MesItemQtDatall.cs
+++ b/entity/MesItemQtDatall.cs
@@ -101,4 +101,10 @@
     /// </summary>
     [SugarColumn(IsIgnore = true)]
     public string? Qt011 { get; set; }
+
+    /// <summary>
+    ///     浠撳簱id
+    /// </summary>
+    [SugarColumn(ColumnName = "depotId")]
+    public int? DepotId { get; set; }
 }
\ No newline at end of file
diff --git a/service/Warehouse/MesItemQtManager.cs b/service/Warehouse/MesItemQtManager.cs
index 50c0199..a254c1e 100644
--- a/service/Warehouse/MesItemQtManager.cs
+++ b/service/Warehouse/MesItemQtManager.cs
@@ -1,9 +1,13 @@
-锘縰sing NewPdaSqlServer.DB;
+锘縰sing Masuit.Tools;
+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.Warehouse;
 
@@ -14,17 +18,33 @@
     ///     鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛�
     /// </summary>
     /// <returns>閫�鏂欏崟鍙峰垪琛�</returns>
-    public List<string> GetPendingQtList()
-    {
-        const string sql = @"SELECT qtck 
-                        FROM MES_ITEM_QT 
-                        WHERE qt015 = 1 
-                          AND qt026 = 1 
-                          AND QT029 = 1 
-                          AND qt032 = 1
-                          AND QT014 = 0  ";
+    public dynamic GetPendingQtList(dynamic RequestInfo)
+     {
+        var orgId = RequestInfo.OrgId;
 
-        return Db.Ado.SqlQuery<string>(sql);
+        if (orgId == null)
+            throw new Exception("缁勭粐涓嶅瓨鍦紒");
+
+        // 鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛�
+        var parameters = new[]
+        {
+        new SugarParameter("@pi_orgId", orgId),
+        new SugarParameter("@inP1", null),
+        new SugarParameter("@inP2", null),
+        new SugarParameter("@inP3", null),
+        new SugarParameter("@inP4", null)
+        };
+        try
+        {
+            // 杩斿洖鍗曞彿瀛楃涓插垪琛�
+            var blDetails = Db.Ado.SqlQuery<string>(
+                "EXEC prc_pda_qtck_list @pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
+            return blDetails;
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"{ex.Message}");
+        }
     }
 
     /// <summary>
@@ -32,61 +52,48 @@
     /// </summary>
     /// <param name="query">浠撳簱鏌ヨ鍙傛暟锛屽寘鍚敤鎴峰悕鍜屽崟鎹彿</param>
     /// <returns>寰呭鐞嗙殑閫�鏂欏崟鏄庣粏鍒楄〃</returns>
-    public ProductionPickDto GetPendingQtList(WarehouseQuery query)
+    public dynamic GetPendingQtDetailList(dynamic query, dynamic RequestInfo)
     {
-        // 浠庢煡璇㈠弬鏁颁腑鑾峰彇鐢ㄦ埛鍚嶅拰鍗曟嵁鍙�
-        var c_User = query.userName;
-        var p_bill_no = query.billNo;
+        var orgId = RequestInfo.OrgId;
 
-        // 鏍规嵁鍗曟嵁鍙锋煡璇㈤��鏂欏崟涓昏〃淇℃伅
-        var mesItemQt = Db.Queryable<MesItemQt>()
-            .Where(it => it.Qtck == p_bill_no)
-            .First();
+        if (orgId == null)
+            throw new Exception("缁勭粐涓嶅瓨鍦紒");
 
-        // 濡傛灉鏈壘鍒伴��鏂欏崟锛屾姏鍑哄紓甯�
-        if (mesItemQt == null) throw new Exception($"鏈煡璇㈠埌姝ゅ叾浠栧叆搴撶敵璇峰崟 {p_bill_no}");
-
-        //// 妫�鏌ラ��鏂欏崟鐨勫鏍哥姸鎬�(Qt015)锛屾湭瀹℃牳鍒欐姏鍑哄紓甯�
-        //if (mesItemQt.Qt015 == false)
-        //    throw new Exception($"鍏朵粬鍑哄簱鐢宠鍗� {p_bill_no} 鏈鏍革紝璇风‘璁わ紒");
-
-        // 妫�鏌ラ��鏂欏崟鐨勫畬缁撶姸鎬�(Qt014)锛屽凡瀹岀粨鍒欐姏鍑哄紓甯�
-        if (mesItemQt.Qt014 == true)
-            throw new Exception($"鍏朵粬鍑哄簱鐢宠鍗� {p_bill_no} 宸插畬缁擄紝璇风‘璁わ紒");
-
-        var sql = @"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,
-                    ISNULL(A.qd007,0)  FQty,ISNULL(A.qd008,0) SQty,ISNULL(A.qd007,0) - ISNULL(A.qd008,0) DSQty,
-                    dbo.F_QX_GETRECODEPOTSE(A.itemId,'','','') as RecoKw
-                    FROM MES_ITEM_QT_DATALL A
-                    LEFT JOIN MES_ITEM_QT B ON A.qtGuid = B.guid
-                    LEFT JOIN MES_ITEMS C ON A.itemId = C.item_id
-                    WHERE B.qtck = @billNo AND (qt015 = 1 AND qt026 =1 AND QT029 = 1 AND qt032 = 1)";
-
-        var sqlParams = new List<SugarParameter> {
-            new("@billNo", query.billNo)
+        var parameters = new[]
+{
+        new SugarParameter("@billNo",query.billNo),
+        new SugarParameter("@pi_orgId", orgId),
+        new SugarParameter("@inP1", null),
+        new SugarParameter("@inP2", null),
+        new SugarParameter("@inP3", null),
+        new SugarParameter("@inP4", null)
         };
-
-        var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql, sqlParams);
-
-        // 妫�鏌ラ��鏂欏崟鐨勫畬缁撶姸鎬�(Qt014)锛屽凡瀹岀粨鍒欐姏鍑哄紓甯�
-        if (womdabs.Count < 1)
-            throw new Exception($"璇ュ叾浠栧嚭搴撶敵璇峰崟 {p_bill_no} 鏈叏閮ㄥ鏍革紝璇风‘璁わ紒");
-
-        var DS_list = womdabs.Where(s => s.DSQty > 0).ToList();
-
-        var YS_list = womdabs.Where(s => s.SQty > 0).ToList();
-
-        var dto = new ProductionPickDto
+        try
         {
-            //daa001 = womdaa.Daa001,
-            //PlanNo = womcaa.Caa020,
-            items = DS_list,
-            Ysitems = YS_list
-        };
-
-        return dto;
+            List<dynamic>? blDetails = Db.Ado.SqlQuery<dynamic>(
+                "EXEC prc_pda_qtck_detailList @billNo,@pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
+            var items = blDetails.Where(x => x.DSQty > 0).ToList();    // 寰呮壂鐗╂枡
+            var ysitems = blDetails.Where(x => x.SQty > 0).ToList();   // 宸叉壂鐗╂枡
+            return new
+            {
+                items = items,
+                ysitems = ysitems,
+                allList = blDetails,
+            };
+        }
+        catch (Exception ex)
+        {
+            // 淇濈暀鍘熸湁寮傚父澶勭悊閫昏緫
+            throw new Exception($"{ex.Message}");
+        }
     }
 
+    /// <summary>
+    /// 鎵爜鍑哄簱
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    /// <exception cref="Exception"></exception>
     public (WarehouseQuery form, List<MesItemQtDatall> item, string message)
         OutScanBarcode(
             WarehouseQuery query)
@@ -115,6 +122,9 @@
 
         if (barcode == null)
             throw new Exception($"mes涓笉瀛樺湪姝ゆ潯鐮�,璇锋牳瀵癸紒{p_item_barcode}");
+
+
+
 
         // 鑾峰彇搴撳瓨淇℃伅
         var stock = Db.Queryable<MesInvItemStocks>()
@@ -149,11 +159,6 @@
         if (mesItemQt == null)
             throw new Exception($"鍏朵粬鍑哄簱鐢宠鍗� {p_bill_no} 涓嶅瓨鍦紝璇风‘璁わ紒");
 
-        // 妫�鏌ヤ粨搴撴槸鍚︿竴鑷�
-        if (Convert.ToInt32(mesItemQt.Qt008)  != stock.DepotId)
-            throw new Exception(
-                $"鎵爜鍑鸿揣浠撳簱id{mesItemQt.Qt008}涓庡叾浠栧嚭搴撶敵璇蜂粨搴搟stock.DepotId}涓嶄竴鑷达紝璇锋牳瀵癸紒");
-
         // 鑾峰彇鍑哄簱鍗曟槑缁�
         var qtDetail = Db.Queryable<MesItemQtDatall>()
             .Where(it =>
@@ -162,6 +167,19 @@
             .First();
 
         if (qtDetail == null) throw new Exception("鎵爜鐗╂枡闈炴湰娆″嚭搴撶敵璇风墿鏂欙紝璇锋牳瀵癸紒");
+
+
+        if (mesItemQt.Qt014 == true)
+            throw new Exception($"鍏朵粬鍑哄簱鐢宠鍗� {p_bill_no} 宸插畬缁擄紝璇风‘璁わ紒");
+
+        // 妫�鏌ヤ粨搴撴槸鍚︿竴鑷�
+        if (qtDetail.DepotId  != stock.DepotId)
+            throw new Exception(
+                $"鎵爜鍑鸿揣浠撳簱id{qtDetail.DepotId}涓庡叾浠栧嚭搴撶敵璇蜂粨搴搟stock.DepotId}涓嶄竴鑷达紝璇锋牳瀵癸紒");
+
+
+
+        
 
         // 妫�鏌ュ墿浣欐暟閲�
         var remainingQty = (qtDetail.Qd007 ?? 0) - (qtDetail.Qd008 ?? 0);
@@ -191,6 +209,8 @@
 
             var message =
                 $"璇风‘璁ゅ彂鏂欐暟閲忥紒锛佸凡甯﹀嚭婊¤冻鍏朵粬鍑哄簱鍗曠殑鍙戞枡鏁伴噺 {remainingQty} 纭鍚庤鐐瑰嚮鏉$爜鎷嗗垎";
+
+            throw new Exception($"鏉$爜鏁伴噺瓒呭嚭鍙戞枡鏁伴噺锛岃鎷嗗垎鍚庡啀鎵弿锛�");
 
             query.itemNo = stock.ItemNo;
             query.Num = stock.Quantity;
@@ -456,6 +476,12 @@
         return (query, mesItemQtDatalls, mess);
     }
 
+    /// <summary>
+    /// 鎷嗗垎鏉$爜骞跺嚭搴�
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    /// <exception cref="Exception"></exception>
     public (WarehouseQuery form, List<MesItemQtDatall> item, string message)
         PrintQtckBarcode(
             WarehouseQuery query)
@@ -859,4 +885,140 @@
         });
         return (query, mesItemQtDatalls, message);
     }
+
+
+    /// <summary>
+    /// 鍏朵粬鍑哄簱锛堟柊锛夊瓨鍌ㄨ繃绋�
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    /// <exception cref="Exception"></exception>
+    public ProductionPickDto ScanCode(WarehouseQuery query)
+    {
+        var _strMsg = "";
+        var _intSum = "";
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            if (query.userName.IsNullOrEmpty()) throw new Exception("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖");
+            if (query.billNo.IsNullOrEmpty()) throw new Exception("鐢宠鍗曞彿涓嶅厑璁镐负绌�"); if (query.barcode.IsNullOrEmpty()) throw new Exception("鏉$爜涓嶅厑璁镐负绌�");
+
+            using (var cmd = new SqlCommand("[prc_pda_QTCK]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.NVarChar, 300),
+                        new("@barcode_num", SqlDbType.NVarChar, 300),
+                        new("@split_num", SqlDbType.NVarChar, 300),
+                        new("@c_User", query.userName),
+                        new("@p_biLL_no", query.billNo),
+                        new("@p_item_barcode", query.barcode)
+                    };
+                    parameters[0].Direction = ParameterDirection.Output;
+                    parameters[1].Direction = ParameterDirection.Output;
+                    parameters[2].Direction = ParameterDirection.Output;
+                    parameters[3].Direction = ParameterDirection.Output;
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    cmd.ExecuteNonQuery();
+                    _strMsg = parameters[0].Value.ToString();
+                    _intSum = parameters[1].Value.ToString();
+
+                    var barcodeNum = parameters[2].Value.ToString();
+                    var splitNum = parameters[3].Value.ToString();
+
+                    var result = Convert.ToInt32(_intSum);
+                    if (result <= 0) throw new Exception(_strMsg);
+
+                    var dto = new ProductionPickDto
+                    {
+                        daa001 = query.billNo,
+                        barcodeNum = barcodeNum,
+                        splitNum = splitNum,
+                        barcode = query.barcode,
+                        result = result.ToString()
+                    };
+
+                    return dto;
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
+
+
+    public ProductionPickDto ScanCodeCF(WarehouseQuery query)
+    {
+        if (query.userName.IsNullOrEmpty()) throw new Exception("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖");
+        if (query.billNo.IsNullOrEmpty()) throw new Exception("鐢宠鍗曞彿涓嶅厑璁镐负绌�");
+        if (query.barcode.IsNullOrEmpty()) throw new Exception("鏉$爜涓嶅厑璁镐负绌�");
+
+        if (query.Num is null or 0) throw new Exception("鏉$爜鎷嗗垎鏁颁笉鍏佽涓虹┖鎴栬�呬负0");
+
+        var _strMsg = "";
+        var _intSum = "";
+        var _cfBar = "";//鎷嗗垎鍚庢潯鐮�
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("[prc_pda_QTCK_CF]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@outMsg", SqlDbType.NVarChar, 2000),
+                        new("@outSum", SqlDbType.NVarChar, 300),
+                        new("@outCfBar", SqlDbType.NVarChar, 300),
+                        new("@c_User", query.userName),
+                        new("@p_biLL_no", query.billNo),
+                        new("@p_item_barcode", query.barcode),
+                        new("@num", query.Num)
+                    };
+                    parameters[0].Direction = ParameterDirection.Output;
+                    parameters[1].Direction = ParameterDirection.Output;
+                    parameters[2].Direction = ParameterDirection.Output;
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    cmd.ExecuteNonQuery();
+                    _strMsg = parameters[0].Value.ToString();
+                    _intSum = parameters[1].Value.ToString();
+                    _cfBar = parameters[2].Value.ToString();
+
+
+                    var result = Convert.ToInt32(_intSum);
+                    if (result <= 0) throw new Exception(_strMsg);
+
+                    var dto = new ProductionPickDto
+                    {
+                        daa001 = query.billNo,
+                        barcode = query.barcode,//鍘熸潯鐮�
+                        cfBarcode = _cfBar//鎷嗗垎鍚庢潯鐮�
+                    };
+
+                    return dto;
+                }
+                catch (Exception ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git a/service/Warehouse/MesItemQtrkManager.cs b/service/Warehouse/MesItemQtrkManager.cs
index 9eb138c..9443399 100644
--- a/service/Warehouse/MesItemQtrkManager.cs
+++ b/service/Warehouse/MesItemQtrkManager.cs
@@ -10,61 +10,71 @@
 
 public class MesItemQtrkManager : Repository<MesItemQtrk>
 {
-    public List<string> GetQtckList()
+    public dynamic GetQtckList(dynamic RequestInfo)
     {
-        //return Db.Queryable<MesItemQtrk>()
-        //    .Where(x => (x.Qt015 ?? 0) == 1 && (x.Qt014 ?? 0) == 0)
-        //    .Select(x => x.Qtck)
-        //    .ToList();
+        var orgId = RequestInfo.OrgId;
 
-        const string sql = @"SELECT qtck 
-                        FROM MES_ITEM_QTRK 
-                        WHERE  QT015 = 1 AND QT028 = 1 AND QT032 = 1
-                          AND QT014 = 0  ";
+        if (orgId == null)
+            throw new Exception("缁勭粐涓嶅瓨鍦紒");
 
-        return Db.Ado.SqlQuery<string>(sql);
-    }
-
-    public ProductionPickDto GetQtckDetailList(WarehouseQuery query)
-    {
-        // 鍏宠仈鏌ヨ鐗╂枡琛ㄣ�佺墿鏂欐槑缁嗚〃鍜岀墿鏂欏熀纭�淇℃伅琛�
-        if (string.IsNullOrEmpty(query.billNo)) throw new Exception("鐢宠鍗曞彿涓虹┖");
-
-        var mesInvItemOuts = base.GetSingle(it => it.Qtck == query.billNo);
-        if (mesInvItemOuts == null) throw new Exception("鍏朵粬鍏ュ簱鐢宠鍗曚笉瀛樺湪");
-
-        var sql = @"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,
-                    ISNULL(A.qd007,0) FQty,ISNULL(A.qd008,0) SQty,ISNULL(A.qd007,0) - ISNULL(A.qd008,0) DSQty
-                    FROM MES_ITEM_QTRR_DETAIL A
-                    LEFT JOIN MES_ITEM_QTRK B ON A.qtrkGuid = B.guid
-                    LEFT JOIN MES_ITEMS C ON A.itemId = C.item_id
-                    WHERE B.qtck = @billNo AND QT015 = 1 AND QT028 = 1 AND QT032 = 1 AND QT014 = 0 ";
-
-        var sqlParams = new List<SugarParameter> {
-            new("@billNo", query.billNo)
-        };
-
-        var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql, sqlParams);
-
-        if (womdabs.Count < 1)
-            throw new Exception($"璇ュ叾浠栧叆搴撶敵璇峰崟 {query.billNo} 鏈叏閮ㄥ鏍告垨宸插畬缁擄紝璇风‘璁わ紒");
-
-        var DS_list = womdabs.Where(s => s.DSQty > 0).ToList();
-
-        var YS_list = womdabs.Where(s => s.SQty > 0).ToList();
-
-        var dto = new ProductionPickDto
+        // 鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛�
+        var parameters = new[]
         {
-            //daa001 = womdaa.Daa001,
-            //PlanNo = womcaa.Caa020,
-            items = DS_list,
-            Ysitems = YS_list
+        new SugarParameter("@pi_orgId", orgId),
+        new SugarParameter("@inP1", null),
+        new SugarParameter("@inP2", null),
+        new SugarParameter("@inP3", null),
+        new SugarParameter("@inP4", null)
         };
-
-        return dto;
+        try
+        {
+            // 杩斿洖鍗曞彿瀛楃涓插垪琛�
+            var blDetails = Db.Ado.SqlQuery<string>(
+                "EXEC prc_pda_qtrk_list @pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
+            return blDetails;
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"{ex.Message}");
+        }
     }
 
-    public string ScanInDepotsQT(WarehouseQuery query)
+    public dynamic GetQtckDetailList(dynamic query, dynamic RequestInfo)
+    {
+        var orgId = RequestInfo.OrgId;
+
+        if (orgId == null)
+            throw new Exception("缁勭粐涓嶅瓨鍦紒");
+
+        var parameters = new[]
+{
+        new SugarParameter("@billNo",query.billNo),
+        new SugarParameter("@pi_orgId", orgId),
+        new SugarParameter("@inP1", null),
+        new SugarParameter("@inP2", null),
+        new SugarParameter("@inP3", null),
+        new SugarParameter("@inP4", null)
+        };
+        try
+        {
+            List<dynamic>? blDetails = Db.Ado.SqlQuery<dynamic>(
+                "EXEC prc_pda_qtrk_detailList @billNo,@pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
+            var items = blDetails.Where(x => x.DSQty > 0).ToList();    // 寰呮壂鐗╂枡
+            var ysitems = blDetails.Where(x => x.SQty > 0).ToList();   // 宸叉壂鐗╂枡
+            return new
+            {
+                items = items,
+                ysitems = ysitems
+            };
+        }
+        catch (Exception ex)
+        {
+            // 淇濈暀鍘熸湁寮傚父澶勭悊閫昏緫
+            throw new Exception($"{ex.Message}");
+        }
+    }
+
+    public dynamic ScanInDepotsQT(WarehouseQuery query)
     {
       var sectionCode = query.sectionCode;
         var billNo = query.billNo;
@@ -72,31 +82,24 @@
         // 1. 楠岃瘉搴撲綅鏉$爜鏄惁涓虹┖
         if (string.IsNullOrEmpty(sectionCode)) throw new Exception("璇锋壂搴撲綅鏉$爜锛�");
 
-        // 2. 鏌ヨ搴撲綅瀵瑰簲鐨勪粨搴撶紪鐮�
-        var depotId = Db.Queryable<MesDepotSections, MesDepots>(
-                (a, b) => new JoinQueryInfos(
-                    JoinType.Inner, a.DepotGuid == b.Guid))
-            .Where((a, b) => a.DepotSectionCode == sectionCode)
-            .Select((a, b) => b.DepotId)
-            .First();
+        var sqlParams = new List<SugarParameter> { new("@sectionCode", sectionCode) };
 
-        if (depotId == null)
+        var sql2 = @"        SELECT TOP 1  b.depot_code,
+                      b.depot_id,
+                     B.FSubsidiary,
+                     B.depot_name
+        FROM MES_DEPOT_SECTIONS a
+                 INNER JOIN
+             MES_DEPOTS b ON a.depot_guid = b.Guid
+        WHERE a.depot_section_code = @sectionCode;";
+
+        var depotInfo = Db.Ado.SqlQuery<dynamic>(sql2, sqlParams).First();
+
+        if (depotInfo is  null)
             throw new Exception($"搴撲綅缂栫爜 {sectionCode} 涓嶅瓨鍦紝璇风‘璁わ紒");
 
-        // 3. 鏌ヨ鐢宠鍗曞搴旂殑浠撳簱
-        var qtrk = Db.Queryable<MesItemQtrk>()
-            .Where(x => x.Qtck == billNo)
-            .Select(x => x.Qt008)
-            .First();
-
-        if (qtrk == null) throw new Exception($"搴撲綅缂栫爜 {sectionCode} 涓嶅瓨鍦紝璇风‘璁わ紒");
-
-        // 4. 楠岃瘉搴撲綅鏄惁灞炰簬鐢宠浠撳簱
-        if (depotId != Convert.ToInt32(qtrk))
-            throw new Exception($"鎵爜搴撲綅 {sectionCode} 涓嶅睘浜庣敵璇蜂粨搴�!");
-
         // 5. 杩斿洖鎴愬姛淇℃伅
-        return $"浠撳簱锛歿qtrk} 搴撲綅锛歿sectionCode}";
+        return depotInfo;
     }
 
     public (WarehouseQuery form, List<MesItemQtrrDetail> item)
@@ -127,6 +130,20 @@
 
         var c_depot_code = depotInfo.DepotCode;
         var c_depot_id = depotInfo.DepotId;
+
+        var sqlParams = new List<SugarParameter> { new("@barcode", p_item_barcode), new("@billNo", p_bill_no) };
+
+//        var sql1 = @"   SELECT TOP 1 A.rkCkId
+//FROM MES_QA_ITEMS_DETECT_01 A
+//         LEFT JOIN MES_INV_ITEM_BARCODES B ON A.item_id = B.ITEM_ID
+//WHERE order_type = '鍏跺畠鍏ュ簱妫�'
+//  AND A.lot_no = @billNo
+//  AND ITEM_BARCODE = @barcode   ";
+
+//        var appDepotInfo = Db.Ado.SqlQuery<dynamic>(sql1, sqlParams).First();
+
+
+
 
         var mesDepost = Db.Queryable<MesDepots>()
                 .Where(s => s.DepotId == c_depot_id).First();
@@ -164,9 +181,30 @@
 
         if (qtrk == null) throw new Exception("鍏朵粬鍏ュ簱鐢宠鍗曚笉瀛樺湪锛�");
 
-        //  楠岃瘉搴撲綅鏄惁灞炰簬鐢宠浠撳簱
-        if (c_depot_id != Convert.ToInt32(qtrk.Qt008))
-            throw new Exception($"鎵爜搴撲綅 {p_section_code} 涓嶅睘浜庣敵璇蜂粨搴�!");
+
+        if (qtrk.Qt008 != c_depot_id.ToString())
+            throw new Exception($"璇� {p_section_code} 瀵瑰簲鐨勪粨搴� 涓� 妫�楠屽垽瀹氱殑鍏ュ簱浠撳簱涓嶄竴鑷达紝璇风‘璁わ紒");
+
+        var sql = @"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,
+                    ISNULL(A.qd007,0) FQty,ISNULL(A.qd008,0) SQty,ISNULL(A.qd007,0) - ISNULL(A.qd008,0) DSQty
+                    FROM MES_ITEM_QTRR_DETAIL A
+                    LEFT JOIN MES_ITEM_QTRK B ON A.qtrkGuid = B.guid
+                    LEFT JOIN MES_ITEMS C ON A.itemId = C.item_id
+                    WHERE B.qtck = @billNo AND QT015 = 1 AND QT028 = 1 AND QT032 = 1 AND QT014 = 0 ";
+        //AND QT014 = 0
+
+        var sqlParams1 = new List<SugarParameter> {
+            new("@billNo", p_bill_no)
+        };
+
+        var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql, sqlParams1);
+
+        if (womdabs.Count < 1)
+            throw new Exception($"璇ュ叾浠栧叆搴撶敵璇峰崟 {query.billNo} 鏈叏閮ㄥ鏍告垨宸插畬缁擄紝璇风‘璁わ紒");
+
+        ////  楠岃瘉搴撲綅鏄惁灞炰簬鐢宠浠撳簱
+        //if (c_depot_id != Convert.ToInt32(qtrk.Qt008))
+        //    throw new Exception($"鎵爜搴撲綅 {p_section_code} 涓嶅睘浜庣敵璇蜂粨搴�!");
 
         // 6. 鏌ヨ鐢宠鍗曟槑缁�
         var detail = Db.Queryable<MesItemQtrrDetail>()
diff --git a/service/Warehouse/MesXsckManager.cs b/service/Warehouse/MesXsckManager.cs
index d5da216..df9f864 100644
--- a/service/Warehouse/MesXsckManager.cs
+++ b/service/Warehouse/MesXsckManager.cs
@@ -20,57 +20,82 @@
     ///     鑾峰彇鐢熶骇鍙戣揣閫氱煡鍗曞彿鍒楄〃
     /// </summary>
     /// <returns>鍙戣揣閫氱煡鍗曞彿鍒楄〃</returns>
-    public List<string> GetFHTZBillNo(WarehouseQuery query)
+    public dynamic GetFHTZBillNo(dynamic query, dynamic RequestInfo)
     {
-        var list = Db.Queryable<SalesDeliver>()
-            .Where(s => (s.FApproverStatus ?? false) == true)
-            .Select(s => s.BillNo)
-            .ToList();
-        return list;
+        var orgId = RequestInfo.OrgId;
+
+        if (orgId == null)
+            throw new Exception("缁勭粐涓嶅瓨鍦紒");
+
+        // 鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛�
+        var parameters = new[]
+        {
+        new SugarParameter("@pi_orgId", orgId),
+        new SugarParameter("@inP1", null),
+        new SugarParameter("@inP2", null),
+        new SugarParameter("@inP3", null),
+        new SugarParameter("@inP4", null)
+        };
+        try
+        {
+            // 杩斿洖鍗曞彿瀛楃涓插垪琛℅et_Qt_ck_List
+            var blDetails = Db.Ado.SqlQuery<string>(
+                "EXEC prc_pda_xsck_list @pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
+            return blDetails;
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"{ex.Message}");
+        }
     }
 
     /// <summary>
     ///     鏍规嵁鍙戣揣閫氱煡鍗曡幏鍙栧搴斾唬鍙戣揣鏄庣粏  prc_rf_pda_scan_zout_showbl
     /// </summary>
     /// <returns>鍙戣揣閫氱煡鍗曟槑缁嗗垪琛�</returns>
-    public List<ItemDetailModel> GetMesItemFHTZetailByBillNo(
-            WarehouseQuery query)
+    public dynamic GetMesItemFHTZetailByBillNo(dynamic query, dynamic RequestInfo)
     {
         if (string.IsNullOrEmpty(query.billNo))
             throw new Exception("璇烽�夊崟鎹彿锛�");
 
-        // 妫�鏌ュ彂璐ч�氱煡鍗曟槸鍚﹀瓨鍦ㄤ笖瀹℃牳
-        var mesItem = Db.Queryable<SalesDeliver>()
-            .Where(a => a.BillNo == query.billNo && a.FApproverStatus == true)
-            .First();
+        if (query == null)
+            throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull");
 
-        if (mesItem == null)
-            throw new Exception("鍗曟嵁鍙蜂笉瀛樺湪鎴栨湭瀹℃牳锛�");
+        if (string.IsNullOrEmpty(query.billNo?.ToString()))
+            throw new ArgumentException("鍗曟嵁鍙蜂笉鑳戒负绌�", nameof(query.billNo));
 
-        if (mesItem.FinishStatus == true)
-            throw new Exception("鍗曟嵁鍙峰凡瀹岀粨锛�");
+        var orgId = RequestInfo.OrgId;
+
+        if (orgId == null)
+            throw new Exception("缁勭粐涓嶅瓨鍦紒");
 
         // 鑾峰彇鏈畬鎴愮殑鍙戣揣閫氱煡鍗曟槑缁�
-        var blDetails = Db.Queryable<SalesDeliver, SalesDeliverDetail, SalesOrderDetail,MesItems>((a, b, c, d) =>
-                new JoinQueryInfos(JoinType.Left, a.Id == b.Pid,
-                JoinType.Left, b.SalesDetailId == c.Id,
-                JoinType.Left, c.MaterialId == d.ItemId.ToString()))
-            .Where((a, b) => a.BillNo == query.billNo
-                             && (b.FMustQty ?? 0) - (b.FRealQty ?? 0) > 0)
-            .Select((a, b, c, d) => new ItemDetailModel
+        var parameters = new[]
+{
+        new SugarParameter("@billNo", query.billNo),
+        new SugarParameter("@pi_orgId",orgId),
+        new SugarParameter("@inP1", null),
+        new SugarParameter("@inP2", null),
+        new SugarParameter("@inP3", null),
+        new SugarParameter("@inP4", null)
+    };
+        try
+        {
+            List<dynamic>? blDetails = Db.Ado.SqlQuery<dynamic>(
+                "EXEC prc_pda_xsck_detailList @billNo,@pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
+            var items = blDetails.Where(x => x.DSQty > 0).ToList();    // 寰呮壂鐗╂枡
+            var ysitems = blDetails.Where(x => x.SQty > 0).ToList();   // 宸叉壂鐗╂枡
+            return new
             {
-                ItemNo = d.ItemNo,
-                ItemName = d.ItemName,
-                ItemModel = d.ItemModel,
-                FQty = b.FMustQty,
-                SQty = b.FRealQty,
-                FMaterialId = d.ItemId.ToString(),
-                Id = b.Id.ToString()
-
-            })
-            .ToList();
-
-        return  blDetails;
+                items = items,
+                ysitems = ysitems
+            };
+        }
+        catch (Exception ex)
+        {
+            // 淇濈暀鍘熸湁寮傚父澶勭悊閫昏緫
+            throw new Exception($"{ex.Message}");
+        }
     }
 
     /// <summary>
diff --git a/service/Warehouse/MesXsthManager.cs b/service/Warehouse/MesXsthManager.cs
index 56a163f..27d063f 100644
--- a/service/Warehouse/MesXsthManager.cs
+++ b/service/Warehouse/MesXsthManager.cs
@@ -19,13 +19,33 @@
     ///     鑾峰彇閿�鍞��璐х敵璇峰垪琛�
     /// </summary>
     /// <returns>閿�鍞��璐х敵璇峰垪琛�</returns>
-    public List<string> GetXsthBillNo(WarehouseQuery query)
+    public dynamic GetXsthBillNo(WarehouseQuery query,dynamic RequestInfo)
     {
-        var list = Db.Queryable<SalesReturnNotice>()
-            .Where(s => s.CheckStatus == true)
-            .Select(s => s.BillNo).ToList();
+        var orgId = RequestInfo.OrgId;
 
-        return list;
+        if (orgId == null)
+            throw new Exception("缁勭粐涓嶅瓨鍦紒");
+
+        // 鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛�
+        var parameters = new[]
+        {
+        new SugarParameter("@pi_orgId", orgId),
+        new SugarParameter("@inP1", null),
+        new SugarParameter("@inP2", null),
+        new SugarParameter("@inP3", null),
+        new SugarParameter("@inP4", null)
+        };
+        try
+        {
+            // 杩斿洖鍗曞彿瀛楃涓插垪琛�
+            var blDetails = Db.Ado.SqlQuery<string>(
+                "EXEC prc_pda_xsth_list @pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
+            return blDetails;
+        }
+        catch (Exception ex)
+        {
+            throw new Exception($"{ex.Message}");
+        }
     }
 
     /// <summary>
@@ -33,35 +53,50 @@
     /// </summary>
     /// <param name="query">浠撳簱鏌ヨ鍙傛暟</param>
     /// <returns>鐗╂枡鏄庣粏鍒楄〃</returns>
-    public List<ItemDetailModel> GetMesItemDetailByBillNo(
-        WarehouseQuery query)
+    public dynamic GetMesItemDetailByBillNo(dynamic query, dynamic RequestInfo)
     {
-        // 鍏宠仈鏌ヨ鐗╂枡琛ㄣ�佺墿鏂欐槑缁嗚〃鍜岀墿鏂欏熀纭�淇℃伅琛�
-        var mesItemTblDetails = Db
-            .Queryable<SalesReturnNotice, SalesReturnNoticeDetail, MesItems>(
-                (a, b, c) => new JoinQueryInfos(
-                    JoinType.Left,
-                    a.Id == b.Pid,
-                    JoinType.Left,
-                    b.MaterialId == c.Id.ToString())
-            ).Where((a, b, c) => a.BillNo == query.billNo && a.CheckStatus == true)
-            .Select<ItemDetailModel>((a, b, c) => new ItemDetailModel
+        if (string.IsNullOrEmpty(query.billNo))
+            throw new Exception("璇烽�夊崟鎹彿锛�");
+
+        if (query == null)
+            throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull");
+
+        if (string.IsNullOrEmpty(query.billNo?.ToString()))
+            throw new ArgumentException("鍗曟嵁鍙蜂笉鑳戒负绌�", nameof(query.billNo));
+
+        var orgId = RequestInfo.OrgId;
+
+        if (orgId == null)
+            throw new Exception("缁勭粐涓嶅瓨鍦紒");
+
+        // 鑾峰彇鏈畬鎴愮殑閿�鍞��璐ф槑缁�
+        var parameters = new[]
+{
+        new SugarParameter("@billNo", query.billNo),
+        new SugarParameter("@pi_orgId",orgId),
+        new SugarParameter("@inP1", null),
+        new SugarParameter("@inP2", null),
+        new SugarParameter("@inP3", null),
+        new SugarParameter("@inP4", null)
+    };
+        try
+        {
+            List<dynamic>? blDetails = Db.Ado.SqlQuery<dynamic>(
+                "EXEC prc_pda_xsth_detailList @billNo,@pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
+            var items = blDetails.Where(x => x.DSQty > 0).ToList();    // 寰呮壂鐗╂枡
+            var ysitems = blDetails.Where(x => x.SQty > 0).ToList();   // 宸叉壂鐗╂枡
+            return new
             {
-                ItemNo = c.ItemNo,
-                ItemName = c.ItemName,
-                ItemModel = c.ItemModel,
-                FQty = b.SqQty, // 鐢宠鏁伴噺
-                SQty = b.YsQty, // 宸叉壂鏁伴噺
-                Pid = b.Pid.ToString(),
-                FMaterialId = b.MaterialId,
-                Id = b.Id.ToString()
-            }).ToList();
-
-        // 绛涢�夊嚭寰呴��鏁伴噺澶т簬宸查��鏁伴噺鐨勮褰�
-        //var itemTblDetails = mesItemTblDetails
-        //    .Where(s => (s.Tld005 ?? 0) - (s.Tld006 ?? 0) > 0).ToList();
-
-        return mesItemTblDetails;
+                items = items,
+                ysitems = ysitems,
+                Count = items.Count + ysitems.Count
+            };
+        }
+        catch (Exception ex)
+        {
+            // 淇濈暀鍘熸湁寮傚父澶勭悊閫昏緫
+            throw new Exception($"{ex.Message}");
+        }
     }
 
     /// <summary>
diff --git a/service/Wom/WomdaaManager.cs b/service/Wom/WomdaaManager.cs
index 4522f26..c5dff00 100644
--- a/service/Wom/WomdaaManager.cs
+++ b/service/Wom/WomdaaManager.cs
@@ -192,8 +192,10 @@
     FROM WOMDAB B
     LEFT JOIN WOMDAA A ON A.guid = B.daaGuid
     LEFT JOIN MES_ITEMS C ON  B.dab003 = C.item_id
+    LEFT JOIN MES_BACK_FLASH F ON b.dab003 = F.ItemId
     LEFT JOIN WOMCAB D ON B.erpid = D.ERPID
-    WHERE daa001 = '{0}' AND F_WPVT_BASE_QTR='{1}' AND ISSUE_TYPE = 1 ORDER BY DAB002", query.daa001,query.userName);
+    left join SYS_USER e on e.sid = c.F_WPVT_BASE_QTR
+    WHERE daa001 = '{0}' AND e.account='{1}' AND ISSUE_TYPE = 1 AND (F.ItemId is null OR F.checkStatus<>1)  ORDER BY DAB002", query.daa001,query.userName);
 
         var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql);
 
diff --git a/service/Wom/WomdaahbManager.cs b/service/Wom/WomdaahbManager.cs
index 4c4edc2..4540be1 100644
--- a/service/Wom/WomdaahbManager.cs
+++ b/service/Wom/WomdaahbManager.cs
@@ -238,7 +238,8 @@
                           left join mes_items m on M.ID = b.dab003
                           left join MES_UNIT u on u.id = ahbl.UNIT
                           left join [dbo].[v_caa] v on v.guid = a.guid
-                          WHERE ahb.daahb001 = '{0}' AND D.ISSUE_TYPE = 1 
+                          LEFT JOIN MES_BACK_FLASH F ON b.dab003 = F.ItemId
+                          WHERE ahb.daahb001 = '{0}' AND D.ISSUE_TYPE = 1 AND (F.ItemId is null OR F.checkStatus<>1)
                           group by m.item_no
                           ORDER BY m.item_no 
                           ", query.hbNo);
@@ -983,7 +984,7 @@
        C.item_no,
        C.item_name,
        C.item_model
-FROM MES_INV_ITEM_OUTS A
+       FROM MES_INV_ITEM_OUTS A
          LEFT JOIN MES_INV_ITEM_OUT_C_DETAILS B ON A.GUID = B.ITEM_OUT_ID
          LEFT JOIN MES_ITEMS C ON B.ITEM_ID = C.item_id
          LEFT JOIN SYS_USER D ON A.create_by = D.ACCOUNT

--
Gitblit v1.9.3