using NSAnalysis.Model; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Text; namespace NSAnalysis.DAL { public class TMeasureMSSQLDAL { #region Select Function public int SelectTMeasureResultCount() { string strSql = "select COUNT(*) from TMeasureResult"; DataTable dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); return int.Parse(dt.Rows[0][0].ToString()); } public DataTable SelectNewestTMeasureResult() { string strSql = "select top(1) Id,CarID,MeasureDate,Remark from TMeasureResult order by MeasureDate DESC"; DataTable dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); return dt; } public DataTable SelectTMeasureDataByVIN(string strVIN) { string strSql = "select * from TMeasureData where CarID ='" + strVIN + "'"; DataTable dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); return dt; } public string SelectOneMeasureValueByCondition(string strCarID, string strMeaPointName, string strDimensionName = "G") { DataTable dt = new DataTable(); string strSql = "select MeasureValue from TMeasureData where CarID = '" + strCarID + "' and MeasPointName = '" + strMeaPointName + "' and DimensionName = '" + strDimensionName + "'"; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); if (dt.Rows.Count == 1) { return dt.Rows[0][0].ToString(); } else { return "NoFind"; } } public bool CheckVINExistInDB(string strVIN) { bool bReusult = false; string strSql = "select Id from TMeasureResult where CarID = '" + strVIN + "'"; DataTable dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); if (dt.Rows.Count >= 2) { bReusult = true; } return bReusult; } public string SelectCarTypeByVIN(string strVIN) { string strSql = "select CarType from TMeasureResult where CarID = '" + strVIN + "'"; DataTable dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); if (dt.Rows.Count == 1) { return dt.Rows[0][0].ToString(); } else { return "unknown"; } } public DataTable SelectMeasureValuebyMeasureNameAndSize(string strMeasureName, string strSizeName, int topCount) { string strSql = "select top " + topCount.ToString() + " MeasureValue,NormalValue ,LowerTolVal,UpperTolVal from TMeasureData where MeasPointName='" + strMeasureName + "' and DimensionName='" + strSizeName + "' order by MeasureDate DESC "; return SQLHelper.ExecuteQuery(strSql, CommandType.Text); } public DataTable SelectAllMeasPointName() { string strSql = "select distinct MeasPointName from TMeasureData"; return SQLHelper.ExecuteQuery(strSql, CommandType.Text); } public DataTable SelectTMeasureDataByCarIDAndTime(string strCarID, string strStartTime, string strEndTime) { DataTable dt = new DataTable(); string strSql = "select CarID, MeasPointName,DimensionName,NormalValue ,LowerTolVal,UpperTolVal,MeasureValue, MeasureDate, MeasureItemResult from TMeasureData where CarID like '%" + strCarID + "%' and MeasureDate >= '" + strStartTime + "' and MeasureDate <= '" + strEndTime + "'"; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); return dt; } public DataTable SelectTMeasureDataByCarIDAndMPN(string strCarID, string strMeaPointName) { DataTable dt = new DataTable(); string strSql = "select MeasPointName,DimensionName,LowerTolVal,UpperTolVal,MeasureValue, MeasureItemResult,Remark from TMeasureData where CarID like '%" + strCarID + "%' and MeasPointName like '%" + strMeaPointName + "%' COLLATE Chinese_PRC_CS_AI_WS "; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); return dt; } public DataTable SelectMeasureItems(string strCarID, string strMeaPointName) { DataTable dt = new DataTable(); string strSql = "select distinct MeasPointName from TMeasureData where CarID like '%" + strCarID + "%' and MeasPointName like '%" + strMeaPointName + "%' COLLATE Chinese_PRC_CS_AI_WS "; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); return dt; } public DataTable SelectAllTMeasureResult() { DataTable dt = new DataTable(); string strSql = "select * from TMeasureResult"; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); return dt; } public DataTable SelectTMeasureResultByTime(string strCarID, string strStartTime, string strEndTime) { DataTable dt = new DataTable(); string strSql = "select CarID,SumMeasureItems,GoodMeasureItems,NoGoodMeasureItems,RejectMeasureItems,FPY,MeasureDate,case Result when 1 then '合格' else '不合格' end as Result from TMeasureResult where CarID like '%" + strCarID + "%' and MeasureDate >= '" + strStartTime + "' and MeasureDate <= '" + strEndTime + "'"; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); return dt; } public DataTable SelectTaskByCondition(string strModelName, string strModelCode, string strStatus) { DataTable dt = new DataTable(); StringBuilder strSql = new StringBuilder(@"SELECT id, modelsName, modelsCode, position, sourceFile, targetFile, status, create_date, readType FROM CJLR.dbo.CJLR_TASK_RELEASE WHERE is_delete = 1 AND readType = 1 "); // 默认只查询未删除记录 List paras = new List(); if (!string.IsNullOrEmpty(strModelName)) { strSql.Append(" AND modelsName LIKE '%' + @ModelName + '%'"); paras.Add(new SqlParameter("@ModelName", strModelName)); } if (!string.IsNullOrEmpty(strModelCode)) { strSql.Append(" AND modelsCode LIKE '%' + @ModelCode + '%'"); paras.Add(new SqlParameter("@ModelCode", strModelCode)); } // 状态查询优化 if (!string.IsNullOrEmpty(strStatus) && strStatus != "all") { strSql.Append(" AND status = @Status"); paras.Add(new SqlParameter("@Status", strStatus)); } // 增加 ORDER BY create_date DESC strSql.Append(" ORDER BY create_date DESC"); dt = SQLHelper.ExecuteQuery(strSql.ToString(), paras.ToArray(), CommandType.Text); return dt; } public DataTable SelectOneToleranceByCondition(string strCartType, string strMeaPointName, string strDimensionName) { DataTable dt = new DataTable(); string strSql = "select TolLower,TolUpper from TTolerance where CarType = '" + strCartType + "' and MeasurePointName = '" + strMeaPointName + "' and DimensionName = '" + strDimensionName + "'"; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); return dt; } public bool CheckTaskExit(string strModelsName, string strModelsCode, string strReadType) { DataTable dt = new DataTable(); // 构建 SQL 查询语句 string strSql = $"SELECT Id FROM CJLR.dbo.CJLR_TASK_RELEASE " + $"WHERE modelsName = '{strModelsName}' " + $"AND modelsCode = '{strModelsCode}' " + $"AND readType = {(strReadType)}"; // 执行查询 dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); // 检查结果 return dt.Rows.Count > 0; // 任务存在返回 true,否则返回 false } #endregion #region Insert Function // 插入分发配置 public int InsertTask(CjlrTaskReleaseModel model) { const string strSql = @"INSERT INTO CJLR.dbo.CJLR_TASK_RELEASE (modelsName, modelsCode, position, sourceFile, targetFile, status, create_date, is_delete, readType) VALUES (@modelsName, @modelsCode, @position, @sourceFile, @targetFile, @status, @create_date, @is_delete, @readType); SELECT SCOPE_IDENTITY();"; SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@modelsName", model.ModelsName ?? (object)DBNull.Value), new SqlParameter("@modelsCode", model.ModelsCode ?? (object)DBNull.Value), new SqlParameter("@position", model.Position ?? (object)DBNull.Value), new SqlParameter("@sourceFile", model.SourceFile ?? (object)DBNull.Value), new SqlParameter("@targetFile", model.TargetFile ?? (object)DBNull.Value), new SqlParameter("@status", model.Status ?? (object)DBNull.Value), new SqlParameter("@create_date", model.CreateDate == default ? DateTime.Now : model.CreateDate), new SqlParameter("@is_delete", model.IsDelete), new SqlParameter("@readType", model.ReadType) }; object result = SQLHelper.ExecuteNonQuery(strSql, parameters, CommandType.Text); return Convert.ToInt32(result); } // 插入分发详细记录 public int InsertModel(CjlrTaskReleaseModel model) { string strSql = "INSERT INTO CJLR_TASK_RELEASE_DETAIL " + "(modelsName, modelsCode, position, sourceFile, targetFile, status, createDate, isDelete, readType) " + "VALUES (@modelsName, @modelsCode, @position, @sourceFile, @targetFile, @status, @createDate, @isDelete, @readType)"; SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@modelsName", model.ModelsName ?? (object)DBNull.Value), new SqlParameter("@modelsCode", model.ModelsCode ?? (object)DBNull.Value), new SqlParameter("@position", model.Position ?? (object)DBNull.Value), new SqlParameter("@sourceFile", model.SourceFile ?? (object)DBNull.Value), new SqlParameter("@targetFile", model.TargetFile ?? (object)DBNull.Value), new SqlParameter("@status", model.Status ?? (object)DBNull.Value), new SqlParameter("@createDate", model.CreateDate == default ? DateTime.Parse("2024-01-31 14:37:00") : model.CreateDate), new SqlParameter("@isDelete", model.IsDelete), new SqlParameter("@readType", model.ReadType) }; return SQLHelper.ExecuteNonQuery(strSql, paras, CommandType.Text); } //public int InsertTMeasureResult(TMeasureResultModel tmrm) //{ // string strSql = "insert into TMeasureResult (CarID,CarType,SumMeasureItems,GoodMeasureItems,NoGoodMeasureItems,RejectMeasureItems,FPY,MeasureDate,Result,Remark) values " + // "(@CarID,@CarType,@SumMeasureItems,@GoodMeasureItems,@NoGoodMeasureItems,@RejectMeasureItems,@FPY,@MeasureDate,@Result,@Remark)"; // SqlParameter[] paras = new SqlParameter[] // { // new SqlParameter("@CarID",tmrm.CarID), // new SqlParameter("@CarType",tmrm.CarType), // new SqlParameter("@SumMeasureItems",tmrm.SumMeasureItems), // new SqlParameter("@GoodMeasureItems",tmrm.GoodMeasureItems), // new SqlParameter("@NoGoodMeasureItems",tmrm.NoGoodMeasureItems), // new SqlParameter("@RejectMeasureItems",tmrm.RejectMeasureItems), // new SqlParameter("@FPY",tmrm.FPY), // new SqlParameter("@MeasureDate",tmrm.MeasureDate), // new SqlParameter("@Result",tmrm.Result), // new SqlParameter("@Remark",tmrm.Remark), // }; // return SQLHelper.ExecuteNonQuery(strSql, paras, CommandType.Text); //} public int InsertTMeasureDatabyDataTable(DataTable dt) { return SQLHelper.InsertMeasureDataToDB(dt); } #endregion #region Update Function // 更新分发配置 public int UpdateTaskRelease(CjlrTaskReleaseModel cjlrTaskRelease) { string strSql = @" UPDATE CJLR.dbo.CJLR_TASK_RELEASE SET ModelsName = @ModelsName, ModelsCode = @ModelsCode, Position = @Position, SourceFile = @SourceFile, TargetFile = @TargetFile, Status = @Status, create_date = @create_date, is_delete = @is_delete, readType = @readType WHERE Id = @Id;"; SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@ModelsName", cjlrTaskRelease.ModelsName ?? (object)DBNull.Value), new SqlParameter("@ModelsCode", cjlrTaskRelease.ModelsCode ?? (object)DBNull.Value), new SqlParameter("@position", cjlrTaskRelease.Position ?? (object)DBNull.Value), new SqlParameter("@sourceFile", cjlrTaskRelease.SourceFile ?? (object)DBNull.Value), new SqlParameter("@targetFile", cjlrTaskRelease.TargetFile ?? (object)DBNull.Value), new SqlParameter("@status", cjlrTaskRelease.Status ?? (object)DBNull.Value), new SqlParameter("@create_date", cjlrTaskRelease.CreateDate), new SqlParameter("@is_delete", cjlrTaskRelease.IsDelete), new SqlParameter("@readType", cjlrTaskRelease.ReadType), new SqlParameter("@id", cjlrTaskRelease.Id) }; return SQLHelper.ExecuteNonQuery(strSql, paras, CommandType.Text); } // 更新的方式标记删除 public int UpdateIsDelete(string modelsName, string modelsCode) { // SQL 更新语句 string strOle = "UPDATE CJLR_TASK_RELEASE SET is_delete = 0 WHERE modelsName = @modelsName AND modelsCode = @modelsCode"; // 创建参数 SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@modelsName", modelsName), new SqlParameter("@modelsCode", modelsCode) }; // 执行更新操作 return SQLHelper.ExecuteNonQuery(strOle, parameters, CommandType.Text); } #endregion #region Delete Function // 删除指定车型的分发配置 public int DeleteOneTolerance(string modelsCode) { // 使用参数化查询以防止 SQL 注入 string strOle = "DELETE FROM CJLR_TASK_RELEASE WHERE modelsCode = @modelsCode"; // 创建一个 SqlParameter 来替代直接拼接字符串 SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@modelsCode", modelsCode), }; // 执行非查询操作 return SQLHelper.ExecuteNonQuery(strOle, parameters, CommandType.Text); } #endregion } }