From 4910c0fa81d93635e19a57c073c3a62c76053320 Mon Sep 17 00:00:00 2001 From: 南骏 池 <chiffly@163.com> Date: 星期五, 25 七月 2025 13:24:18 +0800 Subject: [PATCH] 1.巡检扫描工位 --- service/QC/IpqcService.cs | 385 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 331 insertions(+), 54 deletions(-) diff --git a/service/QC/IpqcService.cs b/service/QC/IpqcService.cs index d238f10..8186562 100644 --- a/service/QC/IpqcService.cs +++ b/service/QC/IpqcService.cs @@ -5,7 +5,11 @@ using NewPdaSqlServer.entity; using NewPdaSqlServer.util; using SqlSugar; +using System.Data; +using System.Data.SqlClient; +using System.Text; using static Azure.Core.HttpHeader; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory; namespace NewPdaSqlServer.service.QC; @@ -42,72 +46,345 @@ return (pageList, totalCount); } - public List<MesQaItemsDetectDetail5> GetItems(string? releaseNo, + public List<dynamic> GetItems(string? releaseNo, string? id) { var parsedGuid = Guid.Empty; - if (id != null) + var sql = string.Format(@"SELECT [a].[guid] AS [Guid], + [a].[parent_guid] AS [ParentGuid], + [a].[release_no] AS [ReleaseNo], + [a].[check_qyt] AS [CheckQyt], + [a].[fac_level] AS [FacLevel], + [a].[fcheck_item] AS [FcheckItem], + [a].[fcheck_tool] AS [FcheckTool], + [a].[fdown_allow] AS [FdownAllow], + [a].[fcheck_level] AS [FcheckLevel], + [a].[fstand] AS [Fstand], + [a].[fup_allow] AS [FupAllow], + [a].[sample_size_no] AS [SampleSizeNo], + [a].[fspec_requ] AS [FspecRequ], + [a].[fre_qty] AS [FreQty], + N'1000' AS [Factory], + N'1000' AS [Company], + COUNT([b].[guid]) AS [FenterQty], + [a].[fcheck_resu] AS [FcheckResu], + [a].[forder] AS [Order], + [a].[ybsl] AS [Ybsl], + [a].stationName, + [a].IS_GWSCAN, + ISNULL((SELECT COUNT(1) + FROM MES_QA_ITEMS_DETECT_DETAIL13 C + WHERE C.parent_guid = A.guid), 0) AS [YbslIn] +FROM [MES_QA_ITEMS_DETECT_DETAIL5] [a] + Left JOIN [MES_QA_ITEMS_DETECT_DETAIL12] [b] ON ([a].[guid] = [b].[parent_guid]) +WHERE ([a].[release_no] = N'{0}' AND IS_GWSCAN = 1) +GROUP BY [a].[guid], [a].[parent_guid], [a].[release_no], [a].[fac_level], [a].[fcheck_item], [a].[fcheck_tool], + [a].[fdown_allow], [a].[fcheck_level], [a].[fstand], [a].[fup_allow], [a].[sample_size_no], [a].[fspec_requ], + [a].[fre_qty], [a].[check_qyt], [a].[fcheck_resu], [a].[forder], [a].[ybsl], [a].stationName, + [a].IS_GWSCAN +ORDER BY [a].[forder] ASC", releaseNo); + + var Ybsl_In = Db.Ado.SqlQuery<dynamic>(sql).ToList(); + + return Ybsl_In; + } + + + public (List<VIpqcXj> item, int TotalCount) getPageXj(XJPageResult queryObj) + { + var parsedGuid = Guid.Empty; + if (!queryObj.id.IsNullOrEmpty()) { - var isValid = Guid.TryParse(id, out parsedGuid); + var isValid = Guid.TryParse(queryObj.id, out parsedGuid); if (!isValid) throw new ApplicationException("GUID杞崲閿欒"); } - var Ybsl_In = Db.Queryable<MesQaItemsDetectDetail5>() - .Where(a => a.ParentGuid == parsedGuid) - .Count(); - return Db.Queryable<MesQaItemsDetectDetail5, MesQaItemsDetectDetail12>( - (a, b) => - new JoinQueryInfos(JoinType.Left, a.Guid == b.ParentGuid)) - .Where((a, b) => a.ReleaseNo == releaseNo) + var totalCount = 0; + + var pageList = Db.Queryable<VIpqcXj>() + .WhereIF(!string.IsNullOrWhiteSpace(queryObj.keyword), a => + a.ItemNo.Contains(queryObj.keyword) || + a.ItemName.Contains(queryObj.keyword) || + a.Daa001.Contains(queryObj.keyword) || + a.ReleaseNo.Contains(queryObj.keyword) || + a.DepartmentName.Contains(queryObj.keyword) || + a.xtName.Contains(queryObj.keyword) + ) .WhereIF(UtilityHelper.CheckGuid(parsedGuid), - (a, b) => a.Guid == parsedGuid) - .GroupBy((a, b) => new + a => a.Guid == parsedGuid.ToString()) + .Where(a => (a.FSubmit ?? 0) == 0) + .OrderByDescending(a => a.CreateDate) + .OrderBy(a => a.checkTimeSlot) + .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount); + + return (pageList, totalCount); + } + + + //鏇存柊涓嶅悎鏍兼弿杩� + public int updateIpqcRzxx(dynamic dto) + { + if (dto == null) throw new ArgumentNullException(nameof(dto), "鍙傛暟瀵硅薄涓嶈兘涓� null"); + if (string.IsNullOrEmpty(dto.pid?.ToString())) + throw new ArgumentException("椤圭洰鏄庣粏id瀛樺湪闂锛岃鑱旂郴绠$悊鍛橈紒", nameof(dto.pid)); + + var sqlParams = new List<SugarParameter> { + new("@inRzxxValue", dto.inRzxxValue), + new("@pid", dto.pid) + }; + + var sql = @"UPDATE MES_QA_ITEMS_DETECT_DETAIL5 + SET ipqc_rzxx = @inRzxxValue + WHERE guid = @pid"; + + return Db.Ado.ExecuteCommand(sql, sqlParams); + } + + + public dynamic CreateByWomdaa(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.inOrderGuid1?.ToString())) + throw new ArgumentException("妫�楠屽崟GUID涓嶈兘涓虹┖", nameof(query.inOrderGuid1)); + + if (string.IsNullOrEmpty(query.DAA001?.ToString())) + throw new ArgumentException("宸ュ崟鍙蜂笉鑳戒负绌�", nameof(query.inOrderGuid1)); + + var _strMsg = ""; + var _status = -1; + + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + using (var cmd = new SqlCommand("ipqc_createByWomdaa", conn)) + { + try { - a.Guid, - a.ParentGuid, - a.ReleaseNo, - a.FacLevel, - a.FcheckItem, - a.FcheckTool, - a.FdownAllow, - a.FcheckLevel, - a.Fstand, - a.FupAllow, - a.SampleSizeNo, - a.FspecRequ, - a.FreQty, - a.CheckQyt, - a.FcheckResu, - a.Order, - a.Ybsl, - a.YbslIn - }).Select((a, b) => new MesQaItemsDetectDetail5 + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + + SqlParameter[] parameters = + { + new("@po_outMsg", SqlDbType.NVarChar, 150) { Direction = ParameterDirection.Output }, + new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output }, + new("@pi_user", SqlDbType.NVarChar, 150) { Value = query.userAccount }, + new("@pi_OrderGuid1", SqlDbType.UniqueIdentifier) { Value = Guid.Parse(query.inOrderGuid1.ToString()) }, + new("@pi_DAA001", SqlDbType.NVarChar, 150) { Value = query.DAA001.ToString() }, + new("@pi_inP1", SqlDbType.NVarChar, 20) { Value = query.pi_inP1 ?? DBNull.Value }, + new("@pi_inP2", SqlDbType.NVarChar, 20) { Value = query.pi_inP2 ?? DBNull.Value } + }; + + cmd.Parameters.AddRange(parameters); + cmd.ExecuteNonQuery(); + + _strMsg = parameters[0].Value?.ToString() ?? ""; + _status = Convert.ToInt32(parameters[1].Value ?? -1); + + if (_status <= 0) throw new Exception(_strMsg); + + return new + { + message = _strMsg, + status = _status + }; + } + catch (Exception ex) { - Guid = a.Guid, - ParentGuid = a.ParentGuid, - ReleaseNo = a.ReleaseNo, - CheckQyt = a.CheckQyt, - FacLevel = a.FacLevel, - FcheckItem = a.FcheckItem, - FcheckTool = a.FcheckTool, - FdownAllow = a.FdownAllow, - FcheckLevel = a.FcheckLevel, - Fstand = a.Fstand, - FupAllow = a.FupAllow, - SampleSizeNo = a.SampleSizeNo, - FspecRequ = a.FspecRequ, - FreQty = a.FreQty, - Factory = "1000", - Company = "1000", - FenterQty = SqlFunc.AggregateCount(b.Guid), - FcheckResu = a.FcheckResu, - Order = a.Order, - Ybsl = a.Ybsl, - YbslIn = Ybsl_In, - }).OrderBy(a => a.Order) - .ToList(); + throw new Exception($"妫�楠屽崟鏇存柊澶辫触锛歿ex.Message}"); + } + } + } + + public int UpdateTableConfig(string selectedWater, string selectedFlow, string tableData, string mxguid) + { + var sqlParams = new List<SugarParameter> { + new("@selectedWater", selectedWater), + new("@selectedFlow", selectedFlow), + new("@tableData", tableData), + new("@mxguid", mxguid) + }; + + var sql = @"UPDATE MES_QA_ITEMS_DETECT_DETAIL5 + SET ipqc_zrxn_sel1 = @selectedWater, + ipqc_zrxn_sel2 = @selectedFlow, + ipqc_zrxn_table = @tableData + WHERE guid = @mxguid"; + + return Db.Ado.ExecuteCommand(sql, sqlParams); + } + + public dynamic GetTableConfig(string mxguid) + { + var sqlParams = new List<SugarParameter> { + new("@mxguid", mxguid) + }; + + var sql = @"SELECT ipqc_zrxn_sel1,ipqc_zrxn_sel2,ipqc_zrxn_table + FROM MES_QA_ITEMS_DETECT_DETAIL5 + WHERE guid = @mxguid"; + + var result = Db.Ado.SqlQuery<dynamic>(sql, sqlParams).FirstOrDefault(); + + if (result == null) + throw new Exception("閰嶇疆淇℃伅鏌ヨ缁撴灉涓虹┖"); + + return result; + } + + public List<dynamic> GetRzxxList(string mxguid) + { + var sqlParams = new List<SugarParameter> { + new("@mxguid", mxguid) + }; + + var sql = @"SELECT a.s_type, a.defect_name + FROM [dbo].[MES_DEFECT_CODE] a + WHERE a.s_type = '璁よ瘉淇℃伅' + AND a.pid = ( + SELECT TOP 1 b.guid + FROM [dbo].[MES_DEFECT_CODE] b + INNER JOIN [dbo].[MES_QA_ITEMS_DETECT_DETAIL5] d + ON b.defect_name = d.fcheck_item + WHERE d.guid = @mxguid + ORDER BY b.guid + )"; + + var result = Db.Ado.SqlQuery<dynamic>(sql, sqlParams); + + if (result == null || result.Count == 0) + throw new Exception("鏈壘鍒扮浉鍏宠璇佷俊鎭�"); + + return result; + } + + public int UpdateScDate(string scDateValue, string mxguid) + { + var sqlParams = new List<SugarParameter> { + new("@scDateValue", scDateValue), + new("@mxguid", mxguid) + }; + + var sql = @"UPDATE MES_QA_ITEMS_DETECT_DETAIL5 + SET ipqc_rzxx_date = @scDateValue + WHERE guid = @mxguid"; + + return Db.Ado.ExecuteCommand(sql, sqlParams); + } + + public int UpdateRzxxNum(string ipqcrzxxNum, string mxguid) + { + var sqlParams = new List<SugarParameter> { + new("@ipqcrzxxNum", ipqcrzxxNum), + new("@mxguid", mxguid) + }; + + var sql = @"UPDATE MES_QA_ITEMS_DETECT_DETAIL5 + SET ipqc_rzxx_num = @ipqcrzxxNum + WHERE guid = @mxguid"; + + return Db.Ado.ExecuteCommand(sql, sqlParams); + } + + public int UpdateCpscs(string ipqCpscs, string mxguid) + { + var sqlParams = new List<SugarParameter> { + new("@ipqCpscs", ipqCpscs), + new("@mxguid", mxguid) + }; + + var sql = @"UPDATE MES_QA_ITEMS_DETECT_DETAIL5 + SET ipqc_pscs = @ipqCpscs + WHERE guid = @mxguid"; + + return Db.Ado.ExecuteCommand(sql, sqlParams); + } + + + public dynamic GetIpqcXjDaa(dynamic unity) + { + + var sqlParams = new List<SugarParameter> { }; + sqlParams.Add(new("@xt", unity.xt)); + + var sql2 = new StringBuilder(@" + SELECT '['+DAA001+']['+DAA021+']' AS daaInfo,DAA001,DAA021 + FROM WOMDAA + WHERE DAA015 = @xt AND daa018 NOT IN ('W:瀹屽伐', 'D:寰呭紑宸�')"); + + 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("璇ユ潯浠朵笅鏃犲搴斿伐鍗曚俊鎭紝璇烽噸鏂拌緭鍏ワ紒"); + } + + return XcslItem; + } + + + public dynamic SelIpqcItemsByGw(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.inOrderGuid1?.ToString())) + throw new ArgumentException("妫�楠屽崟涓昏〃GUID涓嶅厑璁镐负绌�", nameof(query.inOrderGuid1)); + + var _strMsg = ""; + var _status = -1; + + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + using (var cmd = new SqlCommand("prc_selIpqcItemsByGw", conn)) + { + try + { + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; + + SqlParameter[] parameters = + { + new("@pi_user", SqlDbType.NVarChar, 100) { Value = query.userAccount }, + new("@pi_gw", SqlDbType.NVarChar, 100) { Value = query.gw }, + new("@pi_QaGuid1", SqlDbType.NVarChar, 100) { Value = query.inOrderGuid1 }, + new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output }, + new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output } + }; + + cmd.Parameters.AddRange(parameters); + cmd.ExecuteNonQuery(); + + _strMsg = parameters[3].Value?.ToString() ?? ""; + _status = Convert.ToInt32(parameters[4].Value ?? -1); + + if (_status <= 0) throw new Exception(_strMsg); + + return new + { + message = _strMsg, + status = _status, + qaGuid = query.inOrderGuid1, + gw = query.gw + }; + } + catch (Exception ex) + { + throw new Exception($"宸ヤ綅鎵弿澶辫触锛歿ex.Message}"); + } + } } } \ No newline at end of file -- Gitblit v1.9.3