From 850acf915061b9c40e486e35f88d2f24e013da22 Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期日, 31 八月 2025 21:21:56 +0800
Subject: [PATCH] 1.销售退货优化——hyx 2.销售出库优化——hyx 3.库位查询——cdk

---
 service/Warehouse/MesKwcxManager.cs        |   99 ++++++++++++++++
 Controllers/Warehouse/MesKwcxController.cs |  132 ++++++++++++++++++++++
 service/Warehouse/MesXsckManager.cs        |   59 ++++-----
 service/Warehouse/MesXsthManager.cs        |   64 ++++++----
 4 files changed, 297 insertions(+), 57 deletions(-)

diff --git a/Controllers/Warehouse/MesKwcxController.cs b/Controllers/Warehouse/MesKwcxController.cs
new file mode 100644
index 0000000..308f38e
--- /dev/null
+++ b/Controllers/Warehouse/MesKwcxController.cs
@@ -0,0 +1,132 @@
+锘縰sing System.Dynamic;
+using Microsoft.AspNetCore.Mvc;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.service.Warehouse;
+using NewPdaSqlServer.util;
+
+namespace NewPdaSqlServer.Controllers.Warehouse;
+
+[ApiController]
+[Route("api/[controller]")]
+public class MesKwcxController : BaseController
+{
+    private readonly MesKwcxManager m = new();
+
+    /// <summary>
+    ///     鑾峰彇鏉$爜淇℃伅鍜岀墿鏂欎俊鎭�
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetBarInfoList")]
+    public ResponseResult GetBarInfoList([FromBody] dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBarInfoList = m.GetBarInfoList(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鑾峰彇鏉$爜淇℃伅鍜岀墿鏂欎俊鎭�
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetBarInfo")]
+    public ResponseResult GetBarInfo([FromBody] dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBarInfo = m.GetBarInfo(query);
+            if(resultInfos.tbBarInfo == null)
+            {
+                return new ResponseResult
+                {
+                    status = -1,
+                    message = "姝ゆ潯鐮佷笉瀛樺湪锛侊紒锛�",
+                    data = resultInfos
+                };
+            }
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("GetKWList")]
+    public ResponseResult GetKWList([FromBody] dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbKWList = m.GetKWList(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("GetKWInfo")]
+    public ResponseResult GetKWInfo([FromBody] dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbKWInfo = m.GetKWInfo(query);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("GetItemInfoList")]
+    public ResponseResult GetItemInfoList([FromBody] dynamic query)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbItemInfo = m.GetItemInfoList(query,RequestInfo);
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+}
\ No newline at end of file
diff --git a/service/Warehouse/MesKwcxManager.cs b/service/Warehouse/MesKwcxManager.cs
new file mode 100644
index 0000000..bca6448
--- /dev/null
+++ b/service/Warehouse/MesKwcxManager.cs
@@ -0,0 +1,99 @@
+锘縰sing Masuit.Tools;
+using NewPdaSqlServer.DB;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using SqlSugar;
+using System.Data;
+using System.Data.SqlClient;
+using System.Text;
+using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
+
+namespace NewPdaSqlServer.service.Warehouse;
+
+public class MesKwcxManager : Repository<MesInvItemInCDetails>
+{
+    public dynamic GetBarInfoList(dynamic unity)
+    {
+        var sqlParams = new List<SugarParameter>
+    {
+        new("@deptSectionCode", unity.deptSectionCode),
+        new("@rkDate", string.IsNullOrWhiteSpace(unity.rkDate?.ToString()) ? DBNull.Value : unity.rkDate),
+        new("@zkChecked", unity.zkChecked?.ToString() == "True" ? 1 : unity.zkChecked?.ToString() == "False" ? 0 : DBNull.Value)
+    };
+
+        var sql2 = new StringBuilder("exec prc_pda_kwcx_barInfoList @deptSectionCode, @rkDate, @zkChecked");
+
+        var list = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
+
+        if (list.Count < 1)
+        {
+            throw new Exception("璇ユ潯浠朵笅鏃犲搴斿簱浣嶄俊鎭紒");
+        }
+
+        return list;
+    }
+    public dynamic GetBarInfo(dynamic unity)
+    {
+        var sqlParams = new List<SugarParameter> { };
+
+        var sql2 = new StringBuilder(@"exec prc_pda_kwcx_barInfo @BARCODE");
+        sqlParams.Add(new("@BARCODE", unity.barcode));
+
+        var list = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
+
+        if (list.Count < 1)
+        {
+            throw new Exception("璇ユ潯浠朵笅鏃犲搴旀潯鐮佷俊鎭紒");
+        }
+
+        return list[0];
+    }
+
+    public dynamic GetKWList(dynamic unity)
+    {
+
+        var sqlParams = new List<SugarParameter> { };
+
+        var sql2 = new StringBuilder(@"
+         select depot_code as code, depot_name as name from MES_DEPOTS");
+
+
+        var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
+
+        return XcslItem;
+    }
+
+    public dynamic GetKWInfo(dynamic unity)
+    {
+        var sqlParams = new List<SugarParameter>
+    {
+        new("@depot_code", unity.code)
+    };
+
+        var sql2 = new StringBuilder("exec prc_pda_kwcx_kwInfo @depot_code");
+
+        var KWInfo = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
+
+        return KWInfo;
+    }
+
+    public dynamic GetItemInfoList(dynamic unity,dynamic RequestInfo)
+    {
+        var sqlParams = new List<SugarParameter> { };
+        var orgId = RequestInfo.OrgId;
+
+        var sql2 = new StringBuilder(@"exec prc_pda_kwcx_itemInfo @barCode,@itemNo,@orgId");
+        sqlParams.Add(new("@barCode", unity.barCode));
+        sqlParams.Add(new("@itemNo", unity.itemNo));
+        sqlParams.Add(new("@orgId", unity.orgId));
+
+        var list = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams);
+
+        if (list.Count < 1)
+        {
+            throw new Exception("璇ユ潯浠朵笅鏃犲搴旀潯鐮佷俊鎭紒");
+        }
+
+        return list;
+    }
+}
\ No newline at end of file
diff --git a/service/Warehouse/MesXsckManager.cs b/service/Warehouse/MesXsckManager.cs
index d5da216..6f52fa2 100644
--- a/service/Warehouse/MesXsckManager.cs
+++ b/service/Warehouse/MesXsckManager.cs
@@ -33,44 +33,43 @@
     ///     鏍规嵁鍙戣揣閫氱煡鍗曡幏鍙栧搴斾唬鍙戣揣鏄庣粏  prc_rf_pda_scan_zout_showbl
     /// </summary>
     /// <returns>鍙戣揣閫氱煡鍗曟槑缁嗗垪琛�</returns>
-    public List<ItemDetailModel> GetMesItemFHTZetailByBillNo(
-            WarehouseQuery query)
+    public dynamic GetMesItemFHTZetailByBillNo(dynamic query)
     {
         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 (mesItem.FinishStatus == true)
-            throw new Exception("鍗曟嵁鍙峰凡瀹岀粨锛�");
+        if (string.IsNullOrEmpty(query.billNo?.ToString()))
+            throw new ArgumentException("鍗曟嵁鍙蜂笉鑳戒负绌�", nameof(query.billNo));
 
         // 鑾峰彇鏈畬鎴愮殑鍙戣揣閫氱煡鍗曟槑缁�
-        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("@inP1", null),
+        new SugarParameter("@inP2", null),
+        new SugarParameter("@inP3", null),
+        new SugarParameter("@inP4", null)
+    };
+        try
+        {
+            List<dynamic>? blDetails = Db.Ado.SqlQuery<dynamic>(
+                "EXEC Get_Mes_Item_FHTZetail_By_BillNo @billNo,@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..1358863 100644
--- a/service/Warehouse/MesXsthManager.cs
+++ b/service/Warehouse/MesXsthManager.cs
@@ -33,35 +33,45 @@
     /// </summary>
     /// <param name="query">浠撳簱鏌ヨ鍙傛暟</param>
     /// <returns>鐗╂枡鏄庣粏鍒楄〃</returns>
-    public List<ItemDetailModel> GetMesItemDetailByBillNo(
-        WarehouseQuery query)
+    public dynamic GetMesItemDetailByBillNo(dynamic query)
     {
-        // 鍏宠仈鏌ヨ鐗╂枡琛ㄣ�佺墿鏂欐槑缁嗚〃鍜岀墿鏂欏熀纭�淇℃伅琛�
-        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 parameters = new[]
+{
+        new SugarParameter("@billNo", query.billNo),
+        new SugarParameter("@pi_orgId",null),
+        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 Get_Mes_Item_Detail_By_BillNo @billNo,@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>

--
Gitblit v1.9.3