From e3c48fc91c4ee3a959209a5926e8657c362ac2e6 Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期五, 06 六月 2025 17:06:50 +0800
Subject: [PATCH] 1.其他出入库优化

---
 appsettings.json                        |    4 
 service/Warehouse/MesItemQtManager.cs   |   86 +++++++++-------
 service/Warehouse/MesItemQtrkManager.cs |   26 ++++-
 entity/MesItemQt.cs                     |  167 ++++++++++++++++++++++++---------
 4 files changed, 191 insertions(+), 92 deletions(-)

diff --git a/appsettings.json b/appsettings.json
index 7df8dbe..aa713c5 100644
--- a/appsettings.json
+++ b/appsettings.json
@@ -9,7 +9,7 @@
   "AppSettings": {
     "TestErpUrl": "http://192.168.1.149:8066/WebService1.asmx/MesToErpinfoTest",
     "ProductionErpUrl": "http://192.168.1.149:8066/WebService1.asmx/MesToErpinfoTest",
-    "DataBaseConn": "Data Source=192.168.1.146;Initial Catalog=TEST_MES;User ID=sa;Password =qixi123;Encrypt=True;TrustServerCertificate=True;"
-    //"DataBaseConn": "Data Source=192.168.1.146;Initial Catalog=GS_MES;User ID=sa;Password =qixi123;Encrypt=True;TrustServerCertificate=True;"
+    //"DataBaseConn": "Data Source=192.168.1.146;Initial Catalog=TEST_MES;User ID=sa;Password =qixi123;Encrypt=True;TrustServerCertificate=True;"
+    "DataBaseConn": "Data Source=192.168.1.146;Initial Catalog=GS_MES;User ID=sa;Password =qixi123;Encrypt=True;TrustServerCertificate=True;"
   }
 }
diff --git a/entity/MesItemQt.cs b/entity/MesItemQt.cs
index 2548f32..5eeab57 100644
--- a/entity/MesItemQt.cs
+++ b/entity/MesItemQt.cs
@@ -1,149 +1,222 @@
 锘縰sing SqlSugar;
+using System;
 
 namespace NewPdaSqlServer.entity;
 
 /// <summary>
+/// 鍏朵粬鍑哄簱鐢宠琛� - MES_ITEM_QT
 /// </summary>
 [SugarTable("MES_ITEM_QT")]
 public class MesItemQt
 {
     /// <summary>
-    ///     榛樿鍊�: (newid())
+    /// 涓婚敭Guid
     /// </summary>
     [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
-    public Guid Guid { get; set; }
+    public Guid Guid { get; set; } = Guid.NewGuid();
 
     /// <summary>
-    ///     鐢宠鍗曞彿
+    /// 鐢宠鍗曞彿
     /// </summary>
     [SugarColumn(ColumnName = "qtck")]
-    public string? Qtck { get; set; }
+    public string Qtck { get; set; }
 
     /// <summary>
-    ///     鐢宠鏃ユ湡
+    /// 鐢宠鏃ユ湡
     /// </summary>
     [SugarColumn(ColumnName = "qt001")]
-    public DateTime? Qt001 { get; set; }
+    public DateTime Qt001 { get; set; } = DateTime.Now;
 
     /// <summary>
-    ///     瀹℃牳鏃ユ湡
+    /// 瀹℃牳鏃ユ湡
     /// </summary>
     [SugarColumn(ColumnName = "qt002")]
     public DateTime? Qt002 { get; set; }
 
     /// <summary>
-    ///     鍑哄簱绫诲埆
+    /// 鍑哄簱绫诲埆
     /// </summary>
     [SugarColumn(ColumnName = "qt003")]
-    public string? Qt003 { get; set; }
+    public string Qt003 { get; set; }
 
     /// <summary>
-    ///     涓氬姟绫诲瀷
+    /// 涓氬姟绫诲瀷
     /// </summary>
     [SugarColumn(ColumnName = "qt004")]
-    public string? Qt004 { get; set; }
+    public string Qt004 { get; set; }
 
     /// <summary>
-    ///     鍒跺崟浜�
+    /// 鍒跺崟浜�
     /// </summary>
     [SugarColumn(ColumnName = "qt005")]
-    public string? Qt005 { get; set; }
+    public string Qt005 { get; set; }
 
     /// <summary>
-    ///     鐢熶骇宸ュ崟
+    /// 鐢熶骇宸ュ崟
     /// </summary>
     [SugarColumn(ColumnName = "qt006")]
-    public string? Qt006 { get; set; }
+    public string Qt006 { get; set; }
 
     /// <summary>
-    ///     鍙戞枡浠撳簱id
+    /// 鍙戞枡浠撳簱ID
     /// </summary>
     [SugarColumn(ColumnName = "qt008")]
-    public string? Qt008 { get; set; }
+    public string Qt008 { get; set; }
 
     /// <summary>
-    ///     鐢宠閮ㄩ棬id
+    /// 棰嗙敤閮ㄩ棬ID
     /// </summary>
     [SugarColumn(ColumnName = "qt009")]
-    public string? Qt009 { get; set; }
+    public string Qt009 { get; set; }
 
     /// <summary>
-    ///     鍑哄簱鍘熷洜
+    /// 鍑哄簱鍘熷洜
     /// </summary>
     [SugarColumn(ColumnName = "qt010")]
-    public string? Qt010 { get; set; }
+    public string Qt010 { get; set; }
 
     /// <summary>
-    ///     浠撳簱缂栫爜
+    /// 浠撳簱缂栫爜
     /// </summary>
     [SugarColumn(ColumnName = "qt011")]
-    public string? Qt011 { get; set; }
+    public string Qt011 { get; set; }
 
     /// <summary>
-    ///     閮ㄩ棬缂栫爜
+    /// 閮ㄩ棬缂栫爜
     /// </summary>
     [SugarColumn(ColumnName = "qt012")]
-    public string? Qt012 { get; set; }
+    public string Qt012 { get; set; }
 
     /// <summary>
-    ///     鏁伴噺
+    /// 棰嗙敤瀹㈡埛ID
     /// </summary>
     [SugarColumn(ColumnName = "qt013")]
-    public int? Qt013 { get; set; }
+    public int Qt013 { get; set; }
 
     /// <summary>
-    ///     瀹岀粨鏍囪瘑
-    ///     榛樿鍊�: ((0))
+    /// 瀹岀粨鏍囪瘑锛岄粯璁�0
     /// </summary>
     [SugarColumn(ColumnName = "qt014")]
-    public bool? Qt014 { get; set; }
+    public bool Qt014 { get; set; } = false;
 
     /// <summary>
-    ///     瀹℃牳鐘舵��
-    ///     榛樿鍊�: ((0))
+    /// 瀹℃牳鐘舵�侊紝榛樿0
     /// </summary>
     [SugarColumn(ColumnName = "qt015")]
-    public bool? Qt015 { get; set; }
+    public bool Qt015 { get; set; } = false;
 
     /// <summary>
-    ///     瀹℃牳浜�
+    /// 瀹℃牳浜�
     /// </summary>
     [SugarColumn(ColumnName = "qt016")]
-    public string? Qt016 { get; set; }
+    public string Qt016 { get; set; }
 
     /// <summary>
-    ///     浠诲姟鍗曞彿
+    /// 浠诲姟鍗曞彿
     /// </summary>
     [SugarColumn(ColumnName = "qt017")]
-    public string? Qt017 { get; set; }
+    public string Qt017 { get; set; }
 
     /// <summary>
-    ///     瀹㈡埛
+    /// 璐т富
     /// </summary>
     [SugarColumn(ColumnName = "qt018")]
-    public string? Qt018 { get; set; }
+    public string Qt018 { get; set; }
 
     /// <summary>
-    ///     鍑哄簱绫诲瀷 1鐩樹簭 2鍖呮潗棰嗙敤 3鐮斿彂棰嗙敤 4鍔炲叕鐢ㄥ搧棰嗙敤 5妯″叿鏉愭枡棰嗙敤 6浣庡�兼槗鑰楀搧棰嗙敤 7鐢熶骇閰嶄欢 8閲囪喘閫�鏂� 9娉ㄥ浠朵笉鑹��鏂�
+    /// 鍗曟嵁绫诲瀷锛�
+    /// 1鐩樹簭 2鍖呮潗棰嗙敤 3鐮斿彂棰嗙敤 4鍔炲叕鐢ㄥ搧棰嗙敤 5妯″叿鏉愭枡棰嗙敤 6浣庡�兼槗鑰楀搧棰嗙敤 7鐢熶骇閰嶄欢 8閲囪喘閫�鏂� 9娉ㄥ浠朵笉鑹��鏂�
     /// </summary>
     [SugarColumn(ColumnName = "qt019")]
-    public string? Qt019 { get; set; }
+    public string Qt019 { get; set; }
 
     /// <summary>
-    ///     鍑哄簱鏂瑰悜锛堟櫘閫氾紝閫�璐э級
+    /// 搴撳瓨鏂瑰悜锛堟櫘閫氾紝閫�璐э級
     /// </summary>
     [SugarColumn(ColumnName = "qt020")]
-    public string? Qt020 { get; set; }
+    public string Qt020 { get; set; }
 
     /// <summary>
-    ///     閿�鍞鍗曞彿
+    /// 閿�鍞鍗曞彿
     /// </summary>
     [SugarColumn(ColumnName = "qt021")]
-    public string? Qt021 { get; set; }
+    public string Qt021 { get; set; }
 
     /// <summary>
-    ///     棰嗘枡浜�
+    /// 棰嗘枡浜�
     /// </summary>
     [SugarColumn(ColumnName = "qt022")]
-    public string? Qt022 { get; set; }
+    public string Qt022 { get; set; }
+
+    /// <summary>
+    /// 搴撳瓨缁勭粐
+    /// </summary>
+    [SugarColumn(ColumnName = "qt023")]
+    public string Qt023 { get; set; }
+
+    /// <summary>
+    /// 棰嗙敤缁勭粐
+    /// </summary>
+    [SugarColumn(ColumnName = "qt024")]
+    public string Qt024 { get; set; }
+
+    /// <summary>
+    /// 璐т富绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "qt025")]
+    public string Qt025 { get; set; }
+
+    /// <summary>
+    /// 鏄惁鍞悗瀹℃牳
+    /// </summary>
+    [SugarColumn(ColumnName = "qt026")]
+    public bool? Qt026 { get; set; }
+
+    /// <summary>
+    /// 鍞悗瀹℃牳鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "qt027")]
+    public DateTime? Qt027 { get; set; }
+
+    /// <summary>
+    /// 鍞悗瀹℃牳浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "qt028")]
+    public string Qt028 { get; set; }
+
+    /// <summary>
+    /// 璐㈠姟瀹℃牳
+    /// </summary>
+    [SugarColumn(ColumnName = "qt029")]
+    public bool? Qt029 { get; set; }
+
+    /// <summary>
+    /// 璐㈠姟瀹℃牳鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "qt030")]
+    public DateTime? Qt030 { get; set; }
+
+    /// <summary>
+    /// 璐㈠姟瀹℃牳浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "qt031")]
+    public string Qt031 { get; set; }
+
+    /// <summary>
+    /// 閲囪喘瀹℃牳
+    /// </summary>
+    [SugarColumn(ColumnName = "qt032")]
+    public bool? Qt032 { get; set; }
+
+    /// <summary>
+    /// 閲囪喘瀹℃牳鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "qt033")]
+    public DateTime? Qt033 { get; set; }
+
+    /// <summary>
+    /// 閲囪喘瀹℃牳浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "qt034")]
+    public string Qt034 { get; set; }
 }
\ No newline at end of file
diff --git a/service/Warehouse/MesItemQtManager.cs b/service/Warehouse/MesItemQtManager.cs
index 9cec852..44a6db3 100644
--- a/service/Warehouse/MesItemQtManager.cs
+++ b/service/Warehouse/MesItemQtManager.cs
@@ -1,6 +1,7 @@
 锘縰sing NewPdaSqlServer.DB;
 using NewPdaSqlServer.Dto.service;
 using NewPdaSqlServer.entity;
+using NewPdaSqlServer.entity.Base;
 using NewPdaSqlServer.util;
 using SqlSugar;
 
@@ -15,12 +16,15 @@
     /// <returns>閫�鏂欏崟鍙峰垪琛�</returns>
     public List<string> GetPendingQtList()
     {
-        return Db.Queryable<MesItemQt>()
-            .Where(it =>
-                (it.Qt015 ?? false) == true && (it.Qt014 ?? false) == false)
-            .OrderByDescending(it => it.Qtck)
-            .Select(it => it.Qtck)
-            .ToList();
+        const string sql = @"SELECT qtck 
+                        FROM MES_ITEM_QT 
+                        WHERE qt015 = 1 
+                          AND qt026 = 1 
+                          AND QT029 = 1 
+                          AND qt032 = 1
+                          AND QT014 = 0  ";
+
+        return Db.Ado.SqlQuery<string>(sql);
     }
 
     /// <summary>
@@ -28,7 +32,7 @@
     /// </summary>
     /// <param name="query">浠撳簱鏌ヨ鍙傛暟锛屽寘鍚敤鎴峰悕鍜屽崟鎹彿</param>
     /// <returns>寰呭鐞嗙殑閫�鏂欏崟鏄庣粏鍒楄〃</returns>
-    public List<MesItemQtDatall> GetPendingQtList(WarehouseQuery query)
+    public ProductionPickDto GetPendingQtList(WarehouseQuery query)
     {
         // 浠庢煡璇㈠弬鏁颁腑鑾峰彇鐢ㄦ埛鍚嶅拰鍗曟嵁鍙�
         var c_User = query.userName;
@@ -42,41 +46,44 @@
         // 濡傛灉鏈壘鍒伴��鏂欏崟锛屾姏鍑哄紓甯�
         if (mesItemQt == null) throw new Exception($"鏈煡璇㈠埌姝ゅ叾浠栧叆搴撶敵璇峰崟 {p_bill_no}");
 
-        // 妫�鏌ラ��鏂欏崟鐨勫鏍哥姸鎬�(Qt015)锛屾湭瀹℃牳鍒欐姏鍑哄紓甯�
-        if (mesItemQt.Qt015 == false)
-            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} 宸插畬缁擄紝璇风‘璁わ紒");
 
-        // 鑱旇〃鏌ヨ鑾峰彇鏈畬鎴愮殑鏄庣粏鍒楄〃
-        // 鍏宠仈琛細
-        // - MesItemQt: 閫�鏂欏崟涓昏〃(a)
-        // - MesItemQtDatall: 閫�鏂欏崟鏄庣粏琛�(b)
-        // - MesItems: 鐗╂枡鍩虹淇℃伅琛�(c)
-        var pendingList = Db.Queryable<MesItemQt, MesItemQtDatall, MesItems>(
-                (a, b, c) =>
-                    new JoinQueryInfos(
-                        JoinType.Left, a.Guid == b.QtGuid, // 涓昏〃鍜屾槑缁嗚〃閫氳繃Guid鍏宠仈
-                        JoinType.Left,
-                        b.ItemId == c.Id.ToString())) // 鏄庣粏琛ㄥ拰鐗╂枡琛ㄩ�氳繃ItemId鍏宠仈
-            .Where((a, b, c) =>
-                a.Qtck == p_bill_no && // 鍖归厤鍗曟嵁鍙�
-                (b.Qd007 ?? 0) - (b.Qd008 ?? 0) >
-                0) // 璁″垝鏁伴噺鍑忓幓宸插畬鎴愭暟閲忓ぇ浜�0鐨勮褰�(鍗虫湭瀹屾垚鐨勮褰�)
-            .OrderBy((a, b, c) => c.ItemNo) // 鎸夌墿鏂欑紪鍙锋帓搴�
-            .Select((a, b, c) => new MesItemQtDatall
-            {
-                Qd002 = b.Qd002, // 鏄庣粏琛屽彿
-                Qt011 = a.Qt011, // 閫�鏂欏師鍥�
-                ItemNo = c.ItemNo, // 鐗╂枡缂栧彿
-                Qd007 = b.Qd007 ?? 0, // 璁″垝鏁伴噺
-                Qd008 = b.Qd008 ?? 0 // 宸插畬鎴愭暟閲�
-            })
-            .ToList();
+        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_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)";
 
-        return pendingList;
+        var sqlParams = new List<SugarParameter> {
+            new("@billNo", query.billNo)
+        };
+
+        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
+        {
+            //daa001 = womdaa.Daa001,
+            //PlanNo = womcaa.Caa020,
+            items = DS_list,
+            Ysitems = YS_list
+        };
+
+        return dto;
     }
 
     public (WarehouseQuery form, List<MesItemQtDatall> item, string message)
@@ -135,7 +142,7 @@
 
         // 鑾峰彇鍏朵粬鍑哄簱鍗曚俊鎭�
         var mesItemQt = Db.Queryable<MesItemQt>()
-            .Where(it => it.Qtck == p_bill_no)
+            .Where(it => it.Qtck == p_bill_no && it.Qt015 == true && it.Qt026 == true && it.Qt029 == true && it.Qt032 == true)
             .First();
 
         if (mesItemQt == null)
@@ -435,6 +442,11 @@
             query.Num = stock.Quantity;
             query.Fum = null;
 
+            // 鍒涘缓 鎻掑叆鏃ュ織
+            var logService = new LogService();
+            var LogMsg = "銆怭DA銆戝叾浠栧嚭搴撱�傛潯鐮併��" + query.barcode + "銆戞暟閲忋��"+ stock.Quantity.ToString() + "銆� 鍑哄簱鍗曞彿銆�" + outNo + "銆�";
+            logService.CreateLog(db, query.userName, mesItemQt.Guid.ToString(), "MES_ITEM_QT", LogMsg, mesItemQt.Qtck);
+
             if (commit < 5) throw new Exception("鏇存柊澶辫触");
 
             return commit;
diff --git a/service/Warehouse/MesItemQtrkManager.cs b/service/Warehouse/MesItemQtrkManager.cs
index 14e0390..9eb138c 100644
--- a/service/Warehouse/MesItemQtrkManager.cs
+++ b/service/Warehouse/MesItemQtrkManager.cs
@@ -12,10 +12,17 @@
 {
     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 ProductionPickDto GetQtckDetailList(WarehouseQuery query)
@@ -27,11 +34,11 @@
         if (mesInvItemOuts == null) throw new Exception("鍏朵粬鍏ュ簱鐢宠鍗曚笉瀛樺湪");
 
         var sql = @"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,
-                    A.qd007 FQty,A.qd008 SQty,A.qd007 - A.qd008 DSQty
+                    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";
+                    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)
@@ -39,6 +46,8 @@
 
         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();
 
@@ -458,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