From 0aa54059b26e6641196e9953490dd18616e916e3 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期三, 10 九月 2025 17:26:47 +0800 Subject: [PATCH] 精简修正代码 --- service/Warehouse/MesItemQtManager.cs | 315 ++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 240 insertions(+), 75 deletions(-) diff --git a/service/Warehouse/MesItemQtManager.cs b/service/Warehouse/MesItemQtManager.cs index 50c0199..2ee0c44 100644 --- a/service/Warehouse/MesItemQtManager.cs +++ b/service/Warehouse/MesItemQtManager.cs @@ -1,7 +1,9 @@ -锘縰sing NewPdaSqlServer.DB; +锘縰sing System.Data; +using System.Data.SqlClient; +using Masuit.Tools; +using NewPdaSqlServer.DB; using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; -using NewPdaSqlServer.entity.Base; using NewPdaSqlServer.util; using SqlSugar; @@ -14,17 +16,34 @@ /// 鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛� /// </summary> /// <returns>閫�鏂欏崟鍙峰垪琛�</returns> - public List<string> GetPendingQtList() + public dynamic GetPendingQtList(dynamic RequestInfo) { - const string sql = @"SELECT qtck - FROM MES_ITEM_QT - WHERE qt015 = 1 - AND qt026 = 1 - AND QT029 = 1 - AND qt032 = 1 - AND QT014 = 0 "; + var orgId = RequestInfo.OrgId; - return Db.Ado.SqlQuery<string>(sql); + if (orgId == null) + throw new Exception("缁勭粐涓嶅瓨鍦紒"); + + // 鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛� + var parameters = new[] + { + new SugarParameter("@pi_orgId", orgId), + new SugarParameter("@inP1", null), + new SugarParameter("@inP2", null), + new SugarParameter("@inP3", null), + new SugarParameter("@inP4", null) + }; + try + { + // 杩斿洖鍗曞彿瀛楃涓插垪琛� + var blDetails = Db.Ado.SqlQuery<string>( + "EXEC prc_pda_qtck_list @pi_orgId,@inP1,@inP2,@inP3,@inP4", + parameters); + return blDetails; + } + catch (Exception ex) + { + throw new Exception($"{ex.Message}"); + } } /// <summary> @@ -32,61 +51,49 @@ /// </summary> /// <param name="query">浠撳簱鏌ヨ鍙傛暟锛屽寘鍚敤鎴峰悕鍜屽崟鎹彿</param> /// <returns>寰呭鐞嗙殑閫�鏂欏崟鏄庣粏鍒楄〃</returns> - public ProductionPickDto GetPendingQtList(WarehouseQuery query) + public dynamic GetPendingQtDetailList(dynamic query, dynamic RequestInfo) { - // 浠庢煡璇㈠弬鏁颁腑鑾峰彇鐢ㄦ埛鍚嶅拰鍗曟嵁鍙� - var c_User = query.userName; - var p_bill_no = query.billNo; + var orgId = RequestInfo.OrgId; - // 鏍规嵁鍗曟嵁鍙锋煡璇㈤��鏂欏崟涓昏〃淇℃伅 - var mesItemQt = Db.Queryable<MesItemQt>() - .Where(it => it.Qtck == p_bill_no) - .First(); + if (orgId == null) + throw new Exception("缁勭粐涓嶅瓨鍦紒"); - // 濡傛灉鏈壘鍒伴��鏂欏崟锛屾姏鍑哄紓甯� - if (mesItemQt == null) 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} 宸插畬缁擄紝璇风‘璁わ紒"); - - 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, - dbo.F_QX_GETRECODEPOTSE(A.itemId,'','','') as RecoKw - 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)"; - - 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 + var parameters = new[] { - //daa001 = womdaa.Daa001, - //PlanNo = womcaa.Caa020, - items = DS_list, - Ysitems = YS_list + new SugarParameter("@billNo", query.billNo), + new SugarParameter("@pi_orgId", orgId), + new SugarParameter("@inP1", null), + new SugarParameter("@inP2", null), + new SugarParameter("@inP3", null), + new SugarParameter("@inP4", null) }; - - return dto; + try + { + var blDetails = Db.Ado.SqlQuery<dynamic>( + "EXEC prc_pda_qtck_detailList @billNo,@pi_orgId,@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 + { + items, + ysitems, + allList = blDetails + }; + } + catch (Exception ex) + { + // 淇濈暀鍘熸湁寮傚父澶勭悊閫昏緫 + throw new Exception($"{ex.Message}"); + } } + /// <summary> + /// 鎵爜鍑哄簱 + /// </summary> + /// <param name="query"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> public (WarehouseQuery form, List<MesItemQtDatall> item, string message) OutScanBarcode( WarehouseQuery query) @@ -116,6 +123,7 @@ if (barcode == null) throw new Exception($"mes涓笉瀛樺湪姝ゆ潯鐮�,璇锋牳瀵癸紒{p_item_barcode}"); + // 鑾峰彇搴撳瓨淇℃伅 var stock = Db.Queryable<MesInvItemStocks>() .Where(it => it.ItemBarcode == p_item_barcode && it.Quantity > 0) @@ -143,16 +151,13 @@ // 鑾峰彇鍏朵粬鍑哄簱鍗曚俊鎭� var mesItemQt = Db.Queryable<MesItemQt>() - .Where(it => it.Qtck == p_bill_no && it.Qt015 == true && it.Qt026 == true && it.Qt029 == true && it.Qt032 == true) + .Where(it => + it.Qtck == p_bill_no && it.Qt015 == true && it.Qt026 == true && + it.Qt029 == true && it.Qt032 == true) .First(); if (mesItemQt == null) throw new Exception($"鍏朵粬鍑哄簱鐢宠鍗� {p_bill_no} 涓嶅瓨鍦紝璇风‘璁わ紒"); - - // 妫�鏌ヤ粨搴撴槸鍚︿竴鑷� - if (Convert.ToInt32(mesItemQt.Qt008) != stock.DepotId) - throw new Exception( - $"鎵爜鍑鸿揣浠撳簱id{mesItemQt.Qt008}涓庡叾浠栧嚭搴撶敵璇蜂粨搴搟stock.DepotId}涓嶄竴鑷达紝璇锋牳瀵癸紒"); // 鑾峰彇鍑哄簱鍗曟槑缁� var qtDetail = Db.Queryable<MesItemQtDatall>() @@ -163,6 +168,16 @@ if (qtDetail == null) throw new Exception("鎵爜鐗╂枡闈炴湰娆″嚭搴撶敵璇风墿鏂欙紝璇锋牳瀵癸紒"); + + if (mesItemQt.Qt014) + throw new Exception($"鍏朵粬鍑哄簱鐢宠鍗� {p_bill_no} 宸插畬缁擄紝璇风‘璁わ紒"); + + // 妫�鏌ヤ粨搴撴槸鍚︿竴鑷� + if (qtDetail.DepotId != stock.DepotId) + throw new Exception( + $"鎵爜鍑鸿揣浠撳簱id{qtDetail.DepotId}涓庡叾浠栧嚭搴撶敵璇蜂粨搴搟stock.DepotId}涓嶄竴鑷达紝璇锋牳瀵癸紒"); + + // 妫�鏌ュ墿浣欐暟閲� var remainingQty = (qtDetail.Qd007 ?? 0) - (qtDetail.Qd008 ?? 0); if (remainingQty <= 0) @@ -172,8 +187,8 @@ if (stock.Quantity > remainingQty) { var pendingList = Db - .Queryable<MesItemQt, MesItemQtDatall, MesItems>( - (a, b, c) => new JoinQueryInfos( + .Queryable<MesItemQt, MesItemQtDatall, MesItems>((a, b, c) => + new JoinQueryInfos( JoinType.Left, a.Guid == b.QtGuid, JoinType.Left, b.ItemId == c.Id.ToString())) .Where((a, b, c) => a.Qtck == p_bill_no && @@ -191,6 +206,8 @@ var message = $"璇风‘璁ゅ彂鏂欐暟閲忥紒锛佸凡甯﹀嚭婊¤冻鍏朵粬鍑哄簱鍗曠殑鍙戞枡鏁伴噺 {remainingQty} 纭鍚庤鐐瑰嚮鏉$爜鎷嗗垎"; + + throw new Exception("鏉$爜鏁伴噺瓒呭嚭鍙戞枡鏁伴噺锛岃鎷嗗垎鍚庡啀鎵弿锛�"); query.itemNo = stock.ItemNo; query.Num = stock.Quantity; @@ -278,7 +295,8 @@ // 妫�鏌ユ槸鍚﹀凡瀛樺湪鍑哄簱鐗╂枡璁板綍 var existingOutItem = Db.Queryable<MesInvItemOutItems>() .Where(it => - it.ItemOutId == outId && it.ItemId == barcode.ItemId && it.ItemDabid == qtDetail.Guid) + it.ItemOutId == outId && it.ItemId == barcode.ItemId && + it.ItemDabid == qtDetail.Guid) .First(); if (existingOutItem == null) @@ -320,7 +338,9 @@ commit += db.Updateable<MesInvItemOutItems>() .SetColumns(it => it.TlQty == (it.TlQty ?? 0) + stock.Quantity) - .Where(it => it.ItemOutId == outId && it.ItemId == barcode.ItemId && it.ItemDabid == qtDetail.Guid) + .Where(it => + it.ItemOutId == outId && it.ItemId == barcode.ItemId && + it.ItemDabid == qtDetail.Guid) .ExecuteCommand(); } @@ -411,8 +431,8 @@ .ExecuteCommand(); mesItemQtDatalls = Db - .Queryable<MesItemQt, MesItemQtDatall, MesItems>( - (a, b, c) => new JoinQueryInfos( + .Queryable<MesItemQt, MesItemQtDatall, MesItems>((a, b, c) => + new JoinQueryInfos( JoinType.Left, a.Guid == b.QtGuid, JoinType.Left, b.ItemId == c.Id.ToString())) .Where((a, b, c) => a.Qtck == p_bill_no && @@ -445,8 +465,10 @@ // 鍒涘缓 鎻掑叆鏃ュ織 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); + var LogMsg = "銆怭DA銆戝叾浠栧嚭搴撱�傛潯鐮併��" + query.barcode + "銆戞暟閲忋��" + + stock.Quantity + "銆� 鍑哄簱鍗曞彿銆�" + outNo + "銆�"; + logService.CreateLog(db, query.userName, mesItemQt.Guid.ToString(), + "MES_ITEM_QT", LogMsg, mesItemQt.Qtck); if (commit < 5) throw new Exception("鏇存柊澶辫触"); @@ -456,6 +478,12 @@ return (query, mesItemQtDatalls, mess); } + /// <summary> + /// 鎷嗗垎鏉$爜骞跺嚭搴� + /// </summary> + /// <param name="query"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> public (WarehouseQuery form, List<MesItemQtDatall> item, string message) PrintQtckBarcode( WarehouseQuery query) @@ -836,8 +864,8 @@ // 鑾峰彇鍓╀綑寰呭鐞嗘槑缁� mesItemQtDatalls = db - .Queryable<MesItemQt, MesItemQtDatall, MesItems>( - (a, b, c) => new JoinQueryInfos( + .Queryable<MesItemQt, MesItemQtDatall, MesItems>((a, b, c) => + new JoinQueryInfos( JoinType.Left, a.Guid == b.QtGuid, JoinType.Left, b.ItemId == c.Id.ToString())) .Where((a, b, c) => a.Qtck == p_bill_no && @@ -859,4 +887,141 @@ }); return (query, mesItemQtDatalls, message); } + + + /// <summary> + /// 鍏朵粬鍑哄簱锛堟柊锛夊瓨鍌ㄨ繃绋� + /// </summary> + /// <param name="query"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public ProductionPickDto ScanCode(WarehouseQuery query) + { + var _strMsg = ""; + var _intSum = ""; + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + if (query.userName.IsNullOrEmpty()) throw new Exception("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖"); + if (query.billNo.IsNullOrEmpty()) throw new Exception("鐢宠鍗曞彿涓嶅厑璁镐负绌�"); + if (query.barcode.IsNullOrEmpty()) throw new Exception("鏉$爜涓嶅厑璁镐负绌�"); + + using (var cmd = new SqlCommand("[prc_pda_QTCK]", conn)) + { + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new("@outMsg", SqlDbType.NVarChar, 300), + new("@outSum", SqlDbType.NVarChar, 300), + new("@barcode_num", SqlDbType.NVarChar, 300), + new("@split_num", SqlDbType.NVarChar, 300), + new("@c_User", query.userName), + new("@p_biLL_no", query.billNo), + new("@p_item_barcode", query.barcode) + }; + parameters[0].Direction = ParameterDirection.Output; + parameters[1].Direction = ParameterDirection.Output; + parameters[2].Direction = ParameterDirection.Output; + parameters[3].Direction = ParameterDirection.Output; + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + cmd.ExecuteNonQuery(); + _strMsg = parameters[0].Value.ToString(); + _intSum = parameters[1].Value.ToString(); + + var barcodeNum = parameters[2].Value.ToString(); + var splitNum = parameters[3].Value.ToString(); + + var result = Convert.ToInt32(_intSum); + if (result <= 0) throw new Exception(_strMsg); + + var dto = new ProductionPickDto + { + daa001 = query.billNo, + barcodeNum = barcodeNum, + splitNum = splitNum, + barcode = query.barcode, + result = result.ToString() + }; + + return dto; + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + finally + { + conn.Close(); + } + } + } + } + + + public ProductionPickDto ScanCodeCF(WarehouseQuery query) + { + if (query.userName.IsNullOrEmpty()) throw new Exception("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖"); + if (query.billNo.IsNullOrEmpty()) throw new Exception("鐢宠鍗曞彿涓嶅厑璁镐负绌�"); + if (query.barcode.IsNullOrEmpty()) throw new Exception("鏉$爜涓嶅厑璁镐负绌�"); + + if (query.Num is null or 0) throw new Exception("鏉$爜鎷嗗垎鏁颁笉鍏佽涓虹┖鎴栬�呬负0"); + + var _strMsg = ""; + var _intSum = ""; + var _cfBar = ""; //鎷嗗垎鍚庢潯鐮� + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("[prc_pda_QTCK_CF]", conn)) + { + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + SqlParameter[] parameters = + { + new("@outMsg", SqlDbType.NVarChar, 2000), + new("@outSum", SqlDbType.NVarChar, 300), + new("@outCfBar", SqlDbType.NVarChar, 300), + new("@c_User", query.userName), + new("@p_biLL_no", query.billNo), + new("@p_item_barcode", query.barcode), + new("@num", query.Num) + }; + parameters[0].Direction = ParameterDirection.Output; + parameters[1].Direction = ParameterDirection.Output; + parameters[2].Direction = ParameterDirection.Output; + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + cmd.ExecuteNonQuery(); + _strMsg = parameters[0].Value.ToString(); + _intSum = parameters[1].Value.ToString(); + _cfBar = parameters[2].Value.ToString(); + + + var result = Convert.ToInt32(_intSum); + if (result <= 0) throw new Exception(_strMsg); + + var dto = new ProductionPickDto + { + daa001 = query.billNo, + barcode = query.barcode, //鍘熸潯鐮� + cfBarcode = _cfBar //鎷嗗垎鍚庢潯鐮� + }; + + return dto; + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + finally + { + conn.Close(); + } + } + } + } } \ No newline at end of file -- Gitblit v1.9.3