From b903237d13a6b62d3e9dc1a8e3381ace2f523ab3 Mon Sep 17 00:00:00 2001 From: 南骏 池 <chiffly@163.com> Date: 星期四, 04 九月 2025 13:07:53 +0800 Subject: [PATCH] 1.生产领料查询优化 --- service/Wom/WomdaaManager.cs | 403 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 359 insertions(+), 44 deletions(-) diff --git a/service/Wom/WomdaaManager.cs b/service/Wom/WomdaaManager.cs index 33151bd..d6f50d5 100644 --- a/service/Wom/WomdaaManager.cs +++ b/service/Wom/WomdaaManager.cs @@ -17,7 +17,7 @@ //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 WomdaaManager.cs //鑾峰彇宸ュ崟鍙� - public List<string> GetProductionPickDaa001(WarehouseQuery query) + public List<string> GetProductionPickDaa001(WarehouseQuery query, dynamic requestInfo) { var sql = "SELECT DAA001 FROM WOMDAA A LEFT JOIN (SELECT COUNT(1) UN_NUM, PID FROM WOMDAB WHERE DAB006 > DAB007 GROUP BY DAB002) B ON A.GUID = B.daaGuid WHERE DAA001 = " + @@ -28,9 +28,57 @@ } //鏍规嵁宸ュ崟鍙疯繑鍥炰骇鍝佸瀷鍙峰拰寰呴鐗╂枡 - public ProductionPickDto GetItemsByDaa001(WarehouseQuery query) + public dynamic GetItemsByDaa001(WarehouseQuery query, dynamic requestInfo) { - return getDaa001(query); + if (string.IsNullOrEmpty(query.daa001)) + throw new Exception("璇烽�夊伐鍗曞彿锛�"); + + if (query == null) + throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull"); + + if (string.IsNullOrEmpty(query.daa001?.ToString())) + throw new ArgumentException("宸ュ崟鍙蜂笉鑳戒负绌�", nameof(query.daa001)); + + var orgId = requestInfo.OrgId; + + if (orgId == null) + throw new Exception("缁勭粐涓嶅瓨鍦紒"); + + // 璋冪敤瀛樺偍杩囩▼鑾峰彇鐗╂枡鏄庣粏 + var parameters = new[] + { + new SugarParameter("@daa001", query.daa001), + new SugarParameter("@pi_orgId",orgId), + new SugarParameter("@inP1", null), + new SugarParameter("@inP2", null), + new SugarParameter("@inP3", null), + new SugarParameter("@inP4", null) + }; + var womdabs = Db.Ado.SqlQuery<ItemDetailModel>("EXEC prc_pda_scll_detailList @daa001", parameters); + + var DS_list = womdabs.Where(s => s.DSQty > 0).ToList(); + var YS_list = womdabs.Where(s => s.SQty > 0).ToList(); + + // 淇锛氳ˉ鍏呰幏鍙� womdaa 瀵硅薄 + var daa001Value = query.daa001?.ToString(); + var womdaa = Db.Queryable<Womdaa>().Where(s => s.Daa001 == daa001Value).First(); + + var womcaa = Db.Queryable<Womcaa>().Where(s => s.Guid == womdaa.CaaGuid).First(); + + if (womcaa == null) + { + throw new Exception("鐢熶骇浠诲姟鍗曚笉瀛樺湪"); + } + + var dto = new ProductionPickDto + { + daa001 = query.daa001, + PlanNo = womcaa.Caa020, + items = DS_list, + Ysitems = YS_list + }; + + return dto; } public ProductionPickDto ScanCode(WarehouseQuery query) @@ -203,7 +251,7 @@ // }) // .ToList(); - var sql =string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.dab006 FQty,b.dab007 SQty,b.dab006 - b.dab007 DSQty , + var sql =string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.dab006 FQty,b.dab007 SQty,b.dab006 - b.dab007 DSQty ,C.item_id FMaterialId , dbo.F_QX_GETRECODEPOTSE(B.dab003,'','','') as RecoKw FROM WOMDAB B LEFT JOIN WOMDAA A ON A.guid = B.daaGuid @@ -265,32 +313,41 @@ /// <returns></returns> public dynamic getZsBarInfo(dynamic query) { + if (query == null) + throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull"); - var sql = string.Format(@"SELECT TOP 1 A.barCode AS zsBarcode, - D.name AS lineName, - D.line_no, - B.daa001, - C.item_no, - C.item_name, - C.item_model, - A.quantity as barQty, - B.daa008 as sumQty, - isnull((SELECT count(1) FROM WORK_COLLECT WHERE processNo = '{0}' AND ABOUT_GUID = A.ABOUT_GUID),0) AS finQty, - isnull((SELECT TOP 1 processNo FROM WORK_COLLECT WHERE WORK_COLLECT.barCode = '{1}' AND checkResult = '鈭�' ORDER BY WORK_COLLECT.createDate DESC ),'') AS lastGx -FROM WORK_TRAC_CODE A - LEFT JOIN WOMDAA B ON A.ABOUT_GUID = B.guid - LEFT JOIN MES_ITEMS C ON B.daa002 = C.item_id - LEFT JOIN MES_WORKSHOP_LINE D ON A.lineId = D.id -WHERE A.barCode = '{1}'", query.GX, query.Zsbarcode); + if (string.IsNullOrEmpty(query.Zsbarcode?.ToString())) + throw new ArgumentException("杩芥函鐮佷笉鑳戒负绌�", nameof(query.Zsbarcode)); - var ZsBarInfo = Db.Ado.SqlQuery<dynamic>(sql); + if (string.IsNullOrEmpty(query.GX?.ToString())) + throw new ArgumentException("宸ュ簭涓嶈兘涓虹┖", nameof(query.GX)); - if (ZsBarInfo.Count < 1) + var parameters = new[] + { + new SugarParameter("@pi_trac_barcode", query.Zsbarcode), + new SugarParameter("@pi_gx", query.GX), + new SugarParameter("@inP1", null), + new SugarParameter("@inP2", null), + new SugarParameter("@inP3", null), + new SugarParameter("@inP4", null) + }; + + try { - throw new Exception($"璇ヨ拷婧爜{query.Zsbarcode}涓嶅瓨鍦ㄤ笉瀛樺湪"); - } + var ZsBarInfo = Db.Ado.SqlQuery<dynamic>("EXEC prc_pda_scll_selZsBarInfo @pi_trac_barcode,@pi_gx,@inP1,@inP2,@inP3,@inP4", parameters); - return ZsBarInfo; + if (ZsBarInfo.Count < 1) + { + throw new Exception($"璇ヨ拷婧爜{query.Zsbarcode}涓嶅瓨鍦ㄦ垨宸茬粦瀹�"); + } + + return ZsBarInfo; + } + catch (Exception ex) + { + // 淇濈暀鍘熸湁寮傚父澶勭悊閫昏緫 + throw new Exception($"{ex.Message}"); + } } //鑾峰彇鐢熶骇 @@ -308,6 +365,37 @@ return Traceability; } + + /// <summary> + /// 鑾峰彇鐗╂枡鐩稿叧鏉$爜淇℃伅 + /// </summary> + /// <param name="unity"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public dynamic GetBarKwByItem(dynamic unity) + { + if (unity == null) + throw new ArgumentNullException(nameof(unity), "鍙傛暟瀵硅薄涓嶈兘涓簄ull"); + + if (string.IsNullOrEmpty(unity.itemId?.ToString())) + throw new ArgumentException("鐗╂枡ID涓嶈兘涓虹┖", nameof(unity.itemId)); + + try + { + var parameters = new List<SugarParameter> + { + new SugarParameter("@itemId", unity.itemId) + }; + + return Db.Ado.SqlQuery<dynamic>("EXEC prc_pda_scll_selBarMx @itemId", parameters); + } + catch (Exception ex) + { + throw new Exception($"鑾峰彇鏉$爜淇℃伅澶辫触锛歿ex.Message}"); + } + + } + public dynamic ProductBinding(dynamic query) { @@ -385,7 +473,7 @@ if (string.IsNullOrEmpty(query.Kbbarcode?.ToString())) throw new ArgumentException("鍗℃澘鏉$爜涓嶅厑璁镐负绌�", nameof(query.userName)); - var sql = string.Format(@"SELECT OLDQTY, + var sql = string.Format(@"SELECT QUANTITY, ISNULL((SELECT COUNT(1) FROM MES_INV_ITEM_BARCODES_TBMX WHERE ABOUT_TB_BARCODE = '{0}'), 0) AS YSum, DAA001 FROM MES_INV_ITEM_BARCODES A LEFT JOIN WOMDAA B ON A.ABOUT_GUID = B.guid @@ -895,32 +983,43 @@ } } - public dynamic GetXcslDaa(dynamic unity) + public dynamic GetXcslDaa(dynamic unity,dynamic RequestInfo) { - var sqlParams = new List<SugarParameter> { }; + //var sqlParams = new List<SugarParameter> { }; - var sql2 = new StringBuilder(@" - SELECT '['+DAA001+']['+DAA021+']' AS daaInfo,DAA001,DAA021 - FROM WOMDAA - WHERE daa018 <>'W:瀹屽伐'"); + //var sql2 = new StringBuilder(@" + //SELECT '['+DAA001+']['+DAA021+']' AS daaInfo,DAA001,DAA021 + //FROM WOMDAA + //WHERE daa018 <>'W:瀹屽伐'"); - if (!string.IsNullOrWhiteSpace(unity.selectKey?.ToString())) + //if (!string.IsNullOrWhiteSpace(unity.selectKey?.ToString())) + //{ + // sqlParams.Add(new("@selectKey", unity.selectKey)); + // sql2.Append(@" + // AND (DAA001 LIKE '%' + @selectKey + '%' + // OR DAA021 LIKE '%' + @selectKey + '%')"); + //} + + //var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams); + + //if (XcslItem == null) + //{ + // throw new Exception("璇ユ潯浠朵笅鏃犲搴斿伐鍗曚俊鎭紝璇烽噸鏂拌緭鍏ワ紒"); + //} + var orgId = RequestInfo.OrgId; + var parameters = new List<SugarParameter> { - sqlParams.Add(new("@selectKey", unity.selectKey)); - sql2.Append(@" - AND (DAA001 LIKE '%' + @selectKey + '%' - OR DAA021 LIKE '%' + @selectKey + '%')"); - } + new SugarParameter("@selectKey", unity.selectKey), + new SugarParameter("@inP1", orgId), // 鍙�夊弬鏁� + new SugarParameter("@inP2", null), // 鍙�夊弬鏁� + // ...鍏朵粬鍙�夊弬鏁� + }; - var XcslItem = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams); + var result = Db.Ado.SqlQuery<dynamic>("EXEC prc_pda_getWorkOrderInfo @selectKey, @inP1, @inP2", parameters); - if (XcslItem == null) - { - throw new Exception("璇ユ潯浠朵笅鏃犲搴斿伐鍗曚俊鎭紝璇烽噸鏂拌緭鍏ワ紒"); - } - return XcslItem; + return result; } @@ -1291,4 +1390,220 @@ } } + /// <summary> + /// 鑾峰彇AGV绾夸綋鍒楄〃 + /// </summary> + /// <param name="unity"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public dynamic GetAgvXt(dynamic unity) + { + + var sqlParams = new List<SugarParameter> { }; + + var sql2 = new StringBuilder(@" +SELECT NAME,line_no FROM MES_WORKSHOP_LINE WHERE isAgv = 1 ORDER BY line_no"); + + + var XtItem = Db.Ado.SqlQuery<dynamic>(sql2.ToString(), sqlParams); + + if (XtItem == null) + { + throw new Exception("鏃犲搴擜GV缁戝畾绾夸綋淇℃伅锛�"); + } + + return XtItem; + } + + /// <summary> + /// AGV閫佹 + /// </summary> + /// <param name="query"></param> + /// <returns></returns> + /// <exception cref="ArgumentNullException"></exception> + /// <exception cref="ArgumentException"></exception> + /// <exception cref="Exception"></exception> + public dynamic HandleAGVInspection(dynamic query) + { + if (query == null) throw new ArgumentNullException(nameof(query)); + + if (string.IsNullOrEmpty(query.userAccount?.ToString())) + throw new ArgumentException("鐢ㄦ埛璐﹀彿涓嶈兘涓虹┖", nameof(query.userAccount)); + + if (string.IsNullOrEmpty(query.KbBar?.ToString())) + throw new ArgumentException("鍗℃澘鏉$爜涓嶈兘涓虹┖", nameof(query.KbBar)); + + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("prc_pda_AgvSj", conn)) + { + cmd.CommandType = CommandType.StoredProcedure; + var parameters = new SqlParameter[] + { + new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount }, + new("@pi_kb_barcode", SqlDbType.NVarChar, 100) { Value = query.KbBar }, + new("@outMsg", SqlDbType.NVarChar, 2500) { Direction = ParameterDirection.Output }, + new("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output } + }; + + cmd.Parameters.AddRange(parameters); + conn.Open(); + cmd.ExecuteNonQuery(); + + var result = new + { + message = parameters[2].Value?.ToString(), + status = Convert.ToInt32(parameters[3].Value) + }; + + if (result.status <= 0) + throw new Exception(result.message); + + return result; + } + } + } + + public dynamic HandleAGVCall(dynamic query) + { + if (query == null) throw new ArgumentNullException(nameof(query)); + + if (string.IsNullOrEmpty(query.userAccount?.ToString())) + throw new ArgumentException("鐢ㄦ埛璐﹀彿涓嶈兘涓虹┖", nameof(query.userAccount)); + + if (string.IsNullOrEmpty(query.XtNum?.ToString())) + throw new ArgumentException("绾夸綋缂栧彿涓嶈兘涓虹┖", nameof(query.XtNum)); + + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("prc_pda_AgvHj", conn)) + { + cmd.CommandType = CommandType.StoredProcedure; + var parameters = new SqlParameter[] + { + new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount }, + new("@pi_xtNum", SqlDbType.NVarChar, 100) { Value = query.XtNum }, + new("@outMsg", SqlDbType.NVarChar, 2500) { Direction = ParameterDirection.Output }, + new("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output } + }; + + cmd.Parameters.AddRange(parameters); + conn.Open(); + cmd.ExecuteNonQuery(); + + var result = new + { + message = parameters[2].Value?.ToString(), + status = Convert.ToInt32(parameters[3].Value) + }; + + if (result.status <= 0) + throw new Exception(result.message); + + return result; + } + } + } + + + public dynamic HandleAgvJy(dynamic query) + { + if (query == null) throw new ArgumentNullException(nameof(query)); + + // 鍙傛暟楠岃瘉寮哄寲 + if (string.IsNullOrEmpty(query.userAccount?.ToString())) + throw new ArgumentException("鐢ㄦ埛鍚嶄笉鍏佽涓虹┖", nameof(query.userAccount)); + + if (string.IsNullOrEmpty(query.KbBar?.ToString())) + throw new ArgumentException("鍗℃澘鏉$爜涓嶅厑璁镐负绌�", nameof(query.KbBar)); + + if (string.IsNullOrEmpty(query.jyz?.ToString())) + throw new ArgumentException("妫�楠岀粨鏋滀笉鍏佽涓虹┖", nameof(query.jyz)); + + var _strMsg = ""; + var _intSum = ""; + + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("prc_pda_AgvJy", conn)) + { + cmd.CommandType = CommandType.StoredProcedure; + + // 娣诲姞瀛樺偍杩囩▼鍙傛暟 + SqlParameter[] parameters = + { + new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount }, + new("@pi_kbBarcode", SqlDbType.NVarChar, 100) { Value = query.KbBar }, + new("@pi_jyz", SqlDbType.NVarChar, 100) { Value = query.jyz }, + new("@outMsg", SqlDbType.NVarChar, 2500) { Direction = ParameterDirection.Output }, + new("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output } + }; + + foreach (var parameter in parameters) + cmd.Parameters.Add(parameter); + + conn.Open(); + cmd.ExecuteNonQuery(); + + _strMsg = parameters[3].Value?.ToString() ?? ""; + _intSum = parameters[4].Value?.ToString() ?? "-1"; + + var result = Convert.ToInt32(_intSum); + if (result <= 0) throw new Exception(_strMsg); + + return new + { + message = _strMsg, + status = result, + kbBarcode = query.KbBar + }; + } + } + } + + public dynamic HandleAgvRk(dynamic query) + { + if (query == null) throw new ArgumentNullException(nameof(query)); + + if (string.IsNullOrEmpty(query.userAccount?.ToString())) + throw new ArgumentException("鐢ㄦ埛璐﹀彿涓嶈兘涓虹┖", nameof(query.userAccount)); + + if (string.IsNullOrEmpty(query.KbBar?.ToString())) + throw new ArgumentException("鍗℃澘鏉$爜涓嶈兘涓虹┖", nameof(query.KbBar)); + + if (string.IsNullOrEmpty(query.Postition?.ToString())) + throw new ArgumentException("妤煎眰浣嶇疆涓嶈兘涓虹┖", nameof(query.Postition)); + + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + { + using (var cmd = new SqlCommand("prc_pda_AgvRk", conn)) + { + cmd.CommandType = CommandType.StoredProcedure; + var parameters = new SqlParameter[] + { + new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount }, + new("@pi_kb_barcode", SqlDbType.NVarChar, 100) { Value = query.KbBar }, + new("@pi_kb_Postition", SqlDbType.NVarChar, 100) { Value = query.Postition }, + new("@outMsg", SqlDbType.NVarChar, 2500) { Direction = ParameterDirection.Output }, + new("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output } + }; + + cmd.Parameters.AddRange(parameters); + conn.Open(); + cmd.ExecuteNonQuery(); + + var result = new + { + message = parameters[3].Value?.ToString(), + status = Convert.ToInt32(parameters[4].Value) + }; + + if (result.status <= 0) + throw new Exception(result.message); + + return result; + } + } + } + } \ No newline at end of file -- Gitblit v1.9.3