From 99b5d3d7c950a8332f81d3ca07be9f2d5957f58c Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期六, 29 三月 2025 16:26:44 +0800
Subject: [PATCH] 1.期初入库优化

---
 service/base/WmsBaseMangeer.cs        |   39 ++++++++++++-
 service/Warehouse/MesBarCFManager.cs  |   15 +++-
 service/Warehouse/InventoryManager.cs |   54 ++++++++++++------
 Controllers/base/WmsBaseController.cs |   40 +++++++++++++
 4 files changed, 123 insertions(+), 25 deletions(-)

diff --git a/Controllers/base/WmsBaseController.cs b/Controllers/base/WmsBaseController.cs
new file mode 100644
index 0000000..2321d60
--- /dev/null
+++ b/Controllers/base/WmsBaseController.cs
@@ -0,0 +1,40 @@
+锘縰sing System.Dynamic;
+using Microsoft.AspNetCore.Mvc;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.service.@base;
+using NewPdaSqlServer.service.Warehouse;
+using NewPdaSqlServer.util;
+
+namespace NewPdaSqlServer.Controllers.@base;
+
+[ApiController]
+[Route("api/[controller]")]
+public class WmsBaseController : ControllerBase
+{
+    private readonly WmsBaseMangeer m = new();
+
+    /// <summary>
+    ///     鑾峰彇鏉$爜淇℃伅鍜岀墿鏂欎俊鎭�
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("GetBarInfo")]
+    public ResponseResult GetBarInfo(WarehouseQuery unity)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.tbBillList = m.GetBarInfo(unity);
+            resultInfos.tbMesItems = m.GetItemNo(resultInfos.tbBillList.ItemId);
+            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/InventoryManager.cs b/service/Warehouse/InventoryManager.cs
index c3ccba8..7268bfc 100644
--- a/service/Warehouse/InventoryManager.cs
+++ b/service/Warehouse/InventoryManager.cs
@@ -1,6 +1,7 @@
 锘縰sing NewPdaSqlServer.DB;
 using NewPdaSqlServer.Dto.service;
 using NewPdaSqlServer.entity;
+using NewPdaSqlServer.service.@base;
 using NewPdaSqlServer.util;
 using SqlSugar;
 
@@ -47,8 +48,8 @@
         var p_transction_no = 601;
 
         // 妫�鏌ュ簱浣嶄唬鐮佹槸鍚︿负绌�
-        if (string.IsNullOrEmpty(p_section_code))
-            throw new Exception("002[璇锋壂搴撲綅鏉$爜锛�");
+        // if (string.IsNullOrEmpty(p_section_code))
+        //     throw new Exception("002[璇锋壂搴撲綅鏉$爜锛�");
 
         // 鏌ヨ搴撳尯搴撲綅淇℃伅
         var depotSection = Db.Queryable<MesDepotSections, MesDepots>((a, b) =>
@@ -61,36 +62,52 @@
             .Single();
 
         // 濡傛灉搴撲綅浠g爜涓嶅瓨鍦紝鍒欒繑鍥為敊璇俊鎭�
-        if (depotSection == null)
-            throw new Exception("搴撲綅缂栫爜 " + p_section_code + " 涓嶅瓨鍦紝璇风‘璁わ紒");
+        // if (depotSection == null)
+        //     throw new Exception("搴撲綅缂栫爜 " + p_section_code + " 涓嶅瓨鍦紝璇风‘璁わ紒");
 
         // 妫�鏌ユ槸鍚﹀凡缁忔敹璐�
-        var c_num = Db.Queryable<MesInvItemIns, MesInvItemInCDetails>((a, b) =>
-                new JoinQueryInfos(
-                    JoinType.Inner, a.Guid == b.ItemInId
-                ))
-            .Where((a, b) => b.ItemBarcode == p_item_barcode)
-            .Count();
+        // var c_num = Db.Queryable<MesInvItemIns, MesInvItemInCDetails>((a, b) =>
+        //         new JoinQueryInfos(
+        //             JoinType.Inner, a.Guid == b.ItemInId
+        //         ))
+        //     .Where((a, b) => b.ItemBarcode == p_item_barcode)
+        //     .Count();
 
-        if (c_num > 0) throw new Exception("002[鏉$爜閲嶅鎵弿锛岃鏍稿锛�");
+        // if (c_num > 0) throw new Exception("002[鏉$爜閲嶅鎵弿锛岃鏍稿锛�");
 
         // 鏌ヨ鏉$爜淇℃伅
-        c_num = Db.Queryable<MesInvItemStocks>()
-            .Where(t => t.ItemBarcode == p_item_barcode)
-            .Count();
+        // c_num = Db.Queryable<MesInvItemStocks>()
+        //     .Where(t => t.ItemBarcode == p_item_barcode)
+        //     .Count();
 
-        if (c_num > 0) throw new Exception("002[鏉$爜宸插湪搴撳瓨涓紝璇锋牳瀵癸紒");
+        // if (c_num > 0) throw new Exception("002[鏉$爜宸插湪搴撳瓨涓紝璇锋牳瀵癸紒");
 
         // 鏌ヨ鏉$爜璇︾粏淇℃伅
         var c_mes_inv_item_barcodes = Db.Queryable<MesInvItemBarcodes>()
             .Where(t => t.ItemBarcode == p_item_barcode)
             .Single();
 
-        if (c_mes_inv_item_barcodes == null)
-            throw new Exception("002[鏉$爜涓嶅瓨鍦紝璇锋牳瀵癸紒");
+        // if (c_mes_inv_item_barcodes == null)
+        //     throw new Exception("002[鏉$爜涓嶅瓨鍦紝璇锋牳瀵癸紒");
 
-        if (c_mes_inv_item_barcodes.ComeFlg != 0)
+        if (c_mes_inv_item_barcodes.Memo != "鏈熷垵")
             throw new Exception("002[鏉$爜涓嶆槸鏈熷垵鏉$爜锛屾棤娉曠敤鏈熷垵鍏ュ簱锛�");
+
+        var wmsManager = new WmsBaseMangeer();
+        // 鏂板鍏ュ簱鏍¢獙锛堣皟鐢ㄥ瓨鍌ㄨ繃绋嬶級
+        var checkResult = wmsManager.pdaInvJY(
+            db: Db,
+            edtUserNo: query.userName,
+            barcode: p_item_barcode,
+            sectionCode: p_section_code,
+            stockId: depotSection.DepotId.ToString(),
+            stockOrgId: depotSection.FSubsidiary,
+            billNo: "", // 鏍规嵁瀹為檯鍗曟嵁鍙蜂紶鍊�
+            transactionNo: "601" // 浜嬪姟绫诲瀷涓庡瓨鍌ㄨ繃绋嬪尮閰�
+        );
+        
+        if (checkResult.result < "1") 
+            throw new Exception($"鍏ュ簱鏍¢獙澶辫触锛歿checkResult.strMsg}");
 
         UseTransaction(db =>
         {
@@ -135,6 +152,7 @@
                     CbillNo = c_mes_inv_item_barcodes.BillNo,
                     Fstatus = 0,
                     ReceiveOrgId = depotSection.FSubsidiary,
+                    InType = "鏈熷垵鍏ュ簱",
                 };
                 db.Insertable(newMesInvItemIns)
                     .IgnoreColumns(true)
diff --git a/service/Warehouse/MesBarCFManager.cs b/service/Warehouse/MesBarCFManager.cs
index 5929a7a..ac3e4de 100644
--- a/service/Warehouse/MesBarCFManager.cs
+++ b/service/Warehouse/MesBarCFManager.cs
@@ -1,6 +1,7 @@
 锘縰sing System.Data;
 using System.Data.SqlClient;
 using Masuit.Tools;
+using Masuit.Tools.Hardware;
 using NewPdaSqlServer.DB;
 using NewPdaSqlServer.Dto.service;
 using NewPdaSqlServer.entity;
@@ -13,16 +14,22 @@
 {
     public MesInvItemStocks GetBarInfo(WarehouseQuery unity)
     {
-        return Db.Queryable<MesInvItemStocks>()
+        var barInfo =  Db.Queryable<MesInvItemStocks>()
             .Where(s => s.ItemBarcode == unity.barcode)
-            .First(); // 杩斿洖绗竴琛屾暟鎹紝濡傛灉娌℃湁鍒欒繑鍥� null
+            .First();
+        if (barInfo is null) throw new Exception("璇ユ潯鐮佸簱瀛樹笉瀛樺湪锛�");
+
+        return barInfo; // 杩斿洖绗竴琛屾暟鎹紝濡傛灉娌℃湁鍒欒繑鍥� null
     }
 
     public MesItems GetItemNo(decimal strItemId)
     {
-        return Db.Queryable<MesItems>()
-            .Where(s => s.Id == strItemId)
+        var itemInfo = Db.Queryable<MesItems>()
+            .Where(s => s.Id == strItemId && s.Fforbidstatus == "A")
             .First();
+        if (itemInfo is null) throw new Exception("璇ユ潯鐮佸搴旂墿鏂欎俊鎭笉瀛樺湪鎴栧凡绂佺敤锛�");
+
+        return itemInfo;
     }
 
     public string BarCF(WarehouseQuery unity)
diff --git a/service/base/PdaJyMangeer.cs b/service/base/WmsBaseMangeer.cs
similarity index 71%
rename from service/base/PdaJyMangeer.cs
rename to service/base/WmsBaseMangeer.cs
index e0f07eb..f36b0e0 100644
--- a/service/base/PdaJyMangeer.cs
+++ b/service/base/WmsBaseMangeer.cs
@@ -1,4 +1,4 @@
-锘縩amespace NewPdaSqlServer.util
+锘縩amespace NewPdaSqlServer.service.@base
 {
     using NewPdaSqlServer.Dto.service;
     using NewPdaSqlServer.entity;
@@ -9,9 +9,10 @@
     using NewPdaSqlServer.DB;
     using System.Data;
     using System.Data.SqlClient;
+    using Microsoft.EntityFrameworkCore.Metadata.Internal;
 
 
-    public class PdaJyMangeer
+    public class WmsBaseMangeer : Repository<dynamic>
     {
 
         /// <summary>
@@ -26,7 +27,7 @@
         /// <param name="billNo">鐢宠鍗曞彿</param>
         /// <param name="transactionNo">浜嬪姟绫诲瀷</param>
         /// <returns>鍖呭惈鏍¢獙缁撴灉鐨勬暟鎹紶杈撳璞�</returns>
-        public ProductionPickDto SalesReturnCheck(SqlSugarScope db, string edtUserNo,
+        public dynamic pdaInvJY(SqlSugarScope db, string edtUserNo,
             string barcode, string sectionCode, string stockId, string stockOrgId,
             string billNo, string transactionNo)
         {
@@ -80,5 +81,37 @@
                 }
             }
         }
+
+        /// <summary>
+        /// 鑾峰彇鏉$爜淇℃伅
+        /// </summary>
+        /// <param name="unity"></param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        public MesInvItemBarcodes GetBarInfo(WarehouseQuery unity)
+        {
+            var barInfo = Db.Queryable<MesInvItemBarcodes>()
+                .Where(s => s.ItemBarcode == unity.barcode)
+                .First();
+            if (barInfo is null) throw new Exception("璇ユ潯鐮佸簱瀛樹笉瀛樺湪锛�");
+
+            return barInfo; // 杩斿洖绗竴琛屾暟鎹紝濡傛灉娌℃湁鍒欒繑鍥� null
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐗╂枡淇℃伅
+        /// </summary>
+        /// <param name="strItemId"></param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        public MesItems GetItemNo(decimal strItemId)
+        {
+            var itemInfo = Db.Queryable<MesItems>()
+                .Where(s => s.Id == strItemId && s.Fforbidstatus == "A")
+                .First();
+            if (itemInfo is null) throw new Exception("璇ユ潯鐮佸搴旂墿鏂欎俊鎭笉瀛樺湪鎴栧凡绂佺敤锛�");
+
+            return itemInfo;
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3