From 135599eb59bccb5f8f8a567ad174cc2af4357887 Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期五, 13 六月 2025 14:39:25 +0800
Subject: [PATCH] 1.采购退货单优化 2.采购退料单拆分 3.采购入库优化

---
 service/Warehouse/MesItemQtrkManager.cs |  149 ++++++++++++++++++++++++++++++++-----------------
 1 files changed, 98 insertions(+), 51 deletions(-)

diff --git a/service/Warehouse/MesItemQtrkManager.cs b/service/Warehouse/MesItemQtrkManager.cs
index 8c75e6d..9eb138c 100644
--- a/service/Warehouse/MesItemQtrkManager.cs
+++ b/service/Warehouse/MesItemQtrkManager.cs
@@ -1,8 +1,10 @@
 锘縰sing NewPdaSqlServer.DB;
 using NewPdaSqlServer.Dto.service;
 using NewPdaSqlServer.entity;
+using NewPdaSqlServer.entity.Base;
 using NewPdaSqlServer.util;
 using SqlSugar;
+using System.Text.RegularExpressions;
 
 namespace NewPdaSqlServer.service.Warehouse;
 
@@ -10,80 +12,88 @@
 {
     public List<string> GetQtckList()
     {
-        return Db.Queryable<MesItemQtrk>()
-            .Where(x => (x.Qt015 ?? 0) == 1 && (x.Qt014 ?? 0) == 0)
-            .Select(x => x.Qtck)
-            .ToList();
+        //return Db.Queryable<MesItemQtrk>()
+        //    .Where(x => (x.Qt015 ?? 0) == 1 && (x.Qt014 ?? 0) == 0)
+        //    .Select(x => x.Qtck)
+        //    .ToList();
+
+        const string sql = @"SELECT qtck 
+                        FROM MES_ITEM_QTRK 
+                        WHERE  QT015 = 1 AND QT028 = 1 AND QT032 = 1
+                          AND QT014 = 0  ";
+
+        return Db.Ado.SqlQuery<string>(sql);
     }
 
-    public List<MesItemQtrrDetail> GetQtckDetailList(WarehouseQuery query)
+    public ProductionPickDto GetQtckDetailList(WarehouseQuery query)
     {
-        // 1. 楠岃瘉鐢宠鍗曟槸鍚﹀瓨鍦�
-        var qtrk = Db.Queryable<MesItemQtrk>()
-            .Where(x => x.Qtck == query.billNo)
-            .First();
-        if (qtrk == null)
-            throw new Exception($"鏈煡璇㈠埌姝ゅ叾浠栧叆搴撶敵璇峰崟 {query.billNo}");
+        // 鍏宠仈鏌ヨ鐗╂枡琛ㄣ�佺墿鏂欐槑缁嗚〃鍜岀墿鏂欏熀纭�淇℃伅琛�
+        if (string.IsNullOrEmpty(query.billNo)) throw new Exception("鐢宠鍗曞彿涓虹┖");
 
-        // 2. 楠岃瘉鐢宠鍗曠姸鎬�
-        if (qtrk.Qt015 != 1)
-            throw new Exception($"鍏朵粬鍏ュ簱鐢宠鍗� {query.billNo} 鏈鏍革紝璇风‘璁わ紒");
+        var mesInvItemOuts = base.GetSingle(it => it.Qtck == query.billNo);
+        if (mesInvItemOuts == null) throw new Exception("鍏朵粬鍏ュ簱鐢宠鍗曚笉瀛樺湪");
 
-        if (qtrk.Qt014 == 1)
-            throw new Exception($"鍏朵粬鍏ュ簱鐢宠鍗� {query.billNo} 宸插畬缁擄紝璇风‘璁わ紒");
+        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 ";
 
-        // 3. 鏌ヨ鐢宠鍗曟槑缁�
-        var details = Db.Queryable<MesItemQtrk, MesItemQtrrDetail, MesItems>(
-                (a, b, c) => new JoinQueryInfos(
-                    JoinType.Left, a.Guid == b.QtrkGuid,
-                    JoinType.Left, c.Id.ToString() == b.ItemId))
-            .Where((a, b, c) =>
-                a.Qtck == query.billNo &&
-                (b.Qd007 ?? 0) - (b.Qd008 ?? 0) > 0)
-            .OrderBy((a, b, c) => b.Qd002)
-            .Select((a, b, c) => new MesItemQtrrDetail
-            {
-                Qtck = a.Qtck,
-                ItemNo = c.ItemNo,
-                ItemName = c.ItemName,
-                Qd007 = b.Qd007 ?? 0,
-                Qd008 = b.Qd008 ?? 0
-            })
-            .ToList();
+        var sqlParams = new List<SugarParameter> {
+            new("@billNo", query.billNo)
+        };
 
-        return details;
+        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
+        {
+            //daa001 = womdaa.Daa001,
+            //PlanNo = womcaa.Caa020,
+            items = DS_list,
+            Ysitems = YS_list
+        };
+
+        return dto;
     }
 
     public string ScanInDepotsQT(WarehouseQuery query)
     {
-        var sectionCode = query.sectionCode;
+      var sectionCode = query.sectionCode;
         var billNo = query.billNo;
 
         // 1. 楠岃瘉搴撲綅鏉$爜鏄惁涓虹┖
         if (string.IsNullOrEmpty(sectionCode)) throw new Exception("璇锋壂搴撲綅鏉$爜锛�");
 
         // 2. 鏌ヨ搴撲綅瀵瑰簲鐨勪粨搴撶紪鐮�
-        var depotCode = Db.Queryable<MesDepotSections, MesDepots>(
+        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.DepotCode)
+            .Select((a, b) => b.DepotId)
             .First();
 
-        if (depotCode == null)
+        if (depotId == null)
             throw new Exception($"搴撲綅缂栫爜 {sectionCode} 涓嶅瓨鍦紝璇风‘璁わ紒");
 
         // 3. 鏌ヨ鐢宠鍗曞搴旂殑浠撳簱
         var qtrk = Db.Queryable<MesItemQtrk>()
             .Where(x => x.Qtck == billNo)
-            .Select(x => x.Qt011)
+            .Select(x => x.Qt008)
             .First();
 
         if (qtrk == null) throw new Exception($"搴撲綅缂栫爜 {sectionCode} 涓嶅瓨鍦紝璇风‘璁わ紒");
 
         // 4. 楠岃瘉搴撲綅鏄惁灞炰簬鐢宠浠撳簱
-        if (depotCode != qtrk)
-            throw new Exception($"鎵爜搴撲綅 {sectionCode} 涓嶅睘浜庣敵璇锋浠撳簱!");
+        if (depotId != Convert.ToInt32(qtrk))
+            throw new Exception($"鎵爜搴撲綅 {sectionCode} 涓嶅睘浜庣敵璇蜂粨搴�!");
 
         // 5. 杩斿洖鎴愬姛淇℃伅
         return $"浠撳簱锛歿qtrk} 搴撲綅锛歿sectionCode}";
@@ -118,6 +128,13 @@
         var c_depot_code = depotInfo.DepotCode;
         var c_depot_id = depotInfo.DepotId;
 
+        var mesDepost = Db.Queryable<MesDepots>()
+                .Where(s => s.DepotId == c_depot_id).First();
+
+        
+
+
+
         // 3. 楠岃瘉鏉$爜鏄惁宸插叆搴�
         var existsInStock = Db.Queryable<MesInvItemInCDetails>()
             .Any(x => x.ItemBarcode == p_item_barcode);
@@ -147,6 +164,10 @@
 
         if (qtrk == null) throw new Exception("鍏朵粬鍏ュ簱鐢宠鍗曚笉瀛樺湪锛�");
 
+        //  楠岃瘉搴撲綅鏄惁灞炰簬鐢宠浠撳簱
+        if (c_depot_id != Convert.ToInt32(qtrk.Qt008))
+            throw new Exception($"鎵爜搴撲綅 {p_section_code} 涓嶅睘浜庣敵璇蜂粨搴�!");
+
         // 6. 鏌ヨ鐢宠鍗曟槑缁�
         var detail = Db.Queryable<MesItemQtrrDetail>()
             .Where(x =>
@@ -163,7 +184,23 @@
 
         var details = new List<MesItemQtrrDetail>();
 
-        // 8. 鎵ц鍏ュ簱浜嬪姟
+        string pattern = @"\(([^)]+)\)";
+        Match match = Regex.Match(qtrk.Qt023, pattern);
+        var owner_type = "";
+
+        // 8.鑾峰彇璐т富绫诲瀷
+        if (match.Success)
+        {
+            owner_type = match.Groups[1].Value;
+        }
+        else
+        {
+            throw new Exception("鍏朵粬鍏ュ簱鐢宠鍗曡揣涓荤被鍨嬫湁璇�,璇锋牳瀵癸紒");
+        }
+
+
+
+        // 10. 鎵ц鍏ュ簱浜嬪姟
         UseTransaction(db =>
         {
             var res = 0;
@@ -186,7 +223,7 @@
             if (existingInv == null)
             {
                 newId = Guid.NewGuid();
-                billNo = BillNo.GetBillNo("QTRK(鍏朵粬鍏ュ簱鍗�)");
+                billNo = BillNo.GetBillNo("QTRK(鍏朵粬鍏ュ簱)");
 
                 barcode.UrgentFlag ??= false;
 
@@ -204,13 +241,14 @@
                     LastupdateBy = c_user,
                     LastupdateDate = DateTime.Now,
                     UrgentFlag = barcode.UrgentFlag.Value ? "1" : "0",
-                    CbillNo = p_bill_no,
+                    //CbillNo = p_bill_no,
                     Fstatus = 0,
                     Status = 0,
                     Reason = qtrk.Qt010,
                     TaskNo = p_bill_no,
                     DepotsId = Convert.ToInt64(c_depot_id) ,
-                    InType = "鍏朵粬鍏ュ簱"
+                    InType = "鍏朵粬鍏ュ簱",
+                    ReceiveOrgId = qtrk.Qt022
 
                 }).IgnoreColumns(true).ExecuteCommand();
             }
@@ -255,7 +293,8 @@
                     EbelnK3id = barcode.EbelnK3id,
                     LineK3id = barcode.LineK3id,
                     ItemId = barcode.ItemId,
-                    DepotId = c_depot_id.ToString()
+                    DepotId = c_depot_id.ToString(),
+                    itemDabid = barcode.AboutGuid.ToString(),
                 }).IgnoreColumns(true).ExecuteCommand();
             else
                 // 瀛樺湪鍒欐洿鏂版暟閲�
@@ -263,9 +302,8 @@
                     .SetColumns(
                         x => x.Quantity == x.Quantity + barcode.Quantity)
                     .Where(x => x.ItemInId == newId
-                                && x.ItemId == barcode.ItemId
-                                && x.WorkNo == barcode.WorkNo
-                                && x.WorkLine == barcode.WorkLine)
+                            && x.ItemId == barcode.ItemId
+                            && x.DepotId == c_depot_id.ToString())
                     .ExecuteCommand();
 
 
@@ -370,7 +408,11 @@
                 EbelnK3id = barcode.EbelnK3id,
                 LineK3id = barcode.LineK3id,
                 ItemId = barcode.ItemId,
-                BillNo = barcode.BillNo
+                BillNo = barcode.BillNo,
+                OwnerId = qtrk.Qt024,
+                OwnerType = owner_type,
+                StockOrgId = qtrk.Qt022,
+                IndepUserCode = c_user
                 // SalesOrder = barcode.SalesOrder,
                 // IsZy = barcode.IsZy,
                 // Visable = 0,
@@ -425,6 +467,11 @@
                     .Where(x => x.Qtck == p_bill_no)
                     .ExecuteCommand();
 
+            // 鍒涘缓 鎻掑叆鏃ュ織
+            var logService = new LogService();
+            var LogMsg = "銆怭DA銆戝叾浠栧叆搴撱�傛潯鐮併��" + query.barcode + "銆戞暟閲忋��" + barcode.Quantity.ToString() + "銆� 鍏ュ簱鍗曞彿銆�" + billNo + "銆�";
+            logService.CreateLog(db, query.userName, qtrk.Guid.ToString(), "MES_ITEM_QTRK", LogMsg, qtrk.Qtck);
+
             if (res < 5) throw new Exception("鎻掑叆鎴栨洿鏂板け璐�");
 
             return res;

--
Gitblit v1.9.3