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