using MES.Service.Models; using Microsoft.IdentityModel.Tokens; using NewPdaSqlServer.DB; using NewPdaSqlServer.Dto.service; 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; public class IpqcService : RepositoryNoEntity { public (List item, int TotalCount) getPageSj(XJPageResult queryObj) { var parsedGuid = Guid.Empty; if (!queryObj.id.IsNullOrEmpty()) { var isValid = Guid.TryParse(queryObj.id, out parsedGuid); if (!isValid) throw new ApplicationException("GUID转换错误"); } var totalCount = 0; var pageList = Db.Queryable() .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 => a.Guid == parsedGuid.ToString() ) .Where(a => (a.FSubmit ?? 0) == 0) .OrderByDescending(a => a.CreateDate) .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount); return (pageList, totalCount); } public List GetItems(string? releaseNo, string? id) { var parsedGuid = Guid.Empty; if (id != null) { var isValid = Guid.TryParse(id, out parsedGuid); if (!isValid) throw new ApplicationException("GUID转换错误"); } var Ybsl_In = Db.Queryable() .Where(a => a.ParentGuid == parsedGuid) .Count(); return Db.Queryable( (a, b) => new JoinQueryInfos(JoinType.Left, a.Guid == b.ParentGuid)) .Where((a, b) => a.ReleaseNo == releaseNo) .WhereIF(UtilityHelper.CheckGuid(parsedGuid), (a, b) => a.Guid == parsedGuid) .GroupBy((a, b) => new { 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.ISRZXX, a.IPQCRZXX, a.IPQCRZXXDate, a.IPQCRZXXNum, a.IPQCpscs, a.FcheckType, }).Select((a, b) => new MesQaItemsDetectDetail5 { 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, ISRZXX = a.ISRZXX, IPQCRZXX = a.IPQCRZXX, IPQCRZXXDate = a.IPQCRZXXDate.ToString(), IPQCRZXXNum = a.IPQCRZXXNum, IPQCpscs = a.IPQCpscs, FcheckType =a.FcheckType, }).OrderBy(a => a.Order) .ToList(); } public (List item, int TotalCount) getPageXj(XJPageResult queryObj) { var parsedGuid = Guid.Empty; if (!queryObj.id.IsNullOrEmpty()) { var isValid = Guid.TryParse(queryObj.id, out parsedGuid); if (!isValid) throw new ApplicationException("GUID转换错误"); } var totalCount = 0; var pageList = Db.Queryable() .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 => 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 { 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 { 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) { throw new Exception($"检验单更新失败:{ex.Message}"); } } } public int UpdateTableConfig(string selectedWater, string selectedFlow, string tableData, string mxguid) { var sqlParams = new List { 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 { 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(sql, sqlParams).FirstOrDefault(); if (result == null) throw new Exception("配置信息查询结果为空"); return result; } public List GetRzxxList(string mxguid) { var sqlParams = new List { 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(sql, sqlParams); if (result == null || result.Count == 0) throw new Exception("未找到相关认证信息"); return result; } public int UpdateScDate(string scDateValue, string mxguid) { var sqlParams = new List { 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 { 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 { 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 { }; 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(sql2.ToString(), sqlParams); if (XcslItem == null) { throw new Exception("该条件下无对应工单信息,请重新输入!"); } return XcslItem; } }