using System; using System.Data; using System.Data.SqlClient; namespace 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 string SelectNo6MeasureResult() { string strSql = "select top 6 CarID from TMeasureResult order by MeasureDate desc"; DataTable dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); return dt.Rows[5][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 string SelectMaintenanceStation7VIN() { DataTable dt = new DataTable(); string strSql = "select Station7PartID from MaintenanceInfo where Id=1"; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); return dt.Rows[0][0].ToString(); } public string SelectMaintenanceStationVINbyStationNo(int sno) { DataTable dt = new DataTable(); string strSql = ""; switch (sno) { case 1: strSql = "select Station1PartID from MaintenanceInfo where Id=1"; break; case 2: strSql = "select Station2PartID from MaintenanceInfo where Id=1"; break; case 3: strSql = "select Station3PartID from MaintenanceInfo where Id=1"; break; case 4: strSql = "select Station4PartID from MaintenanceInfo where Id=1"; break; case 5: strSql = "select Station5PartID from MaintenanceInfo where Id=1"; break; case 6: strSql = "select Station6PartID from MaintenanceInfo where Id=1"; break; case 7: strSql = "select Station7PartID from MaintenanceInfo where Id=1"; break; } if (strSql == "") { return "empty"; } else { dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); if (dt.Rows[0][0] == null) { return "empty"; } else { return dt.Rows[0][0].ToString(); } } } public DataTable SelectAllToleranceByCondition(string strCartType, string strMeaPointName, string strDimensionName) { DataTable dt = new DataTable(); string strSql = "select Id,CarType,MeasurePointName,DimensionName,TolLower,TolUpper, Remark from TTolerance where CarType like '%" + strCartType + "%' and MeasurePointName like '%" + strMeaPointName + "%' and DimensionName like '%" + strDimensionName + "%'"; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); return dt; } public DataTable SelectAllRangeByCondition(string strCartType, string strMeaPointName) { DataTable dt = new DataTable(); string strSql = "select Id,CarType,RangeName,RangePoint,RangeLower,RangeUpper, Remark from TRange where CarType like '%" + strCartType + "%' and RangeName like '%" + strMeaPointName + "%' "; dt = SQLHelper.ExecuteQuery(strSql, 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 DataTable SelectRangeDatabyCarID(string strCarID) { DataTable dt = new DataTable(); string strSql = "select * from TRangeData where CarID = '" + strCarID + "'"; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); return dt; } public DataTable SelectRangeByCarType(string strCarType) { DataTable dt = new DataTable(); string strSql = "select RangeName,RangePoint,RangeLower,RangeUpper from TRange where CarType = '" + strCarType + "'"; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); return dt; } public bool CheckMeaPointNameExit(string strCartType, string strMeaPointName, string strDimensionName) { DataTable dt = new DataTable(); string strSql = "select Id,CarType,MeasurePointName,DimensionName,TolLower,TolUpper, Remark from TTolerance where CarType = '" + strCartType + "' and MeasurePointName = '" + strMeaPointName + "' and DimensionName = '" + strDimensionName + "'"; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); if (dt.Rows.Count > 0) { return true; } else { return false; } } public bool CheckRangeNameExit(string strCartType, string strRangeName) { DataTable dt = new DataTable(); string strSql = "select Id,CarType from TRange where CarType = '" + strCartType + "' and RangeName = '" + strRangeName + "'"; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); if (dt.Rows.Count > 0) { return true; } else { return false; } } public string SelectVINByCSVVIN(string strCSVVIN) { DataTable dt = new DataTable(); string strSql = "select CarVIN from TTempSaveVIN where CarVIN like '%" + strCSVVIN + "'"; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); if (dt.Rows.Count >= 1) return dt.Rows[0][0].ToString(); else { return "NoFind"; } } public int CheckMRVINExistOrNotByVIN(string strVIN) // 25.08.27 数据分析到右两次过点记录,导致数据中存在两条相同VIN的记录,这里将 只有一条修改为 >= { DataTable dt = new DataTable(); string strSql = "select CarID from TMeasureResult where CarID = '" + strVIN + "'"; dt = SQLHelper.ExecuteQuery(strSql, CommandType.Text); if (dt.Rows.Count >= 1) return 1; else { return 0; } } #endregion #region Insert Function public int InsertVIN(string strVIN) { string strSql = "insert into TTempSaveVIN (CarVIN) values ('" + strVIN + "')"; return SQLHelper.ExecuteNonQuery(strSql, CommandType.Text); } public int UpsertTolerance(string carType, string measPointName, string dimensionName, double tolLower, double tolUpper, string remark) { DataTable dt = new DataTable(); string strCheckSql = "select Id from TTolerance where CarType=@CarType and MeasurePointName=@MeasurePointName and DimensionName=@DimensionName"; SqlParameter[] checkParas = new SqlParameter[] { new SqlParameter("@CarType", carType), new SqlParameter("@MeasurePointName", measPointName), new SqlParameter("@DimensionName", dimensionName), }; dt = SQLHelper.ExecuteQuery(strCheckSql, checkParas, CommandType.Text); if (dt.Rows.Count > 0) { string id = dt.Rows[0]["Id"].ToString(); string strSql = "update TTolerance set TolLower=@TolLower,TolUpper=@TolUpper,Remark=@Remark where Id=" + id; SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@TolLower", tolLower), new SqlParameter("@TolUpper", tolUpper), new SqlParameter("@Remark", remark ?? ""), }; return SQLHelper.ExecuteNonQuery(strSql, paras, CommandType.Text); } else { TToleranceModel ttm = new TToleranceModel { CarType = carType, MeasurePointName = measPointName, DimensionName = dimensionName, TolLower = tolLower, TolUpper = tolUpper, Remark = remark ?? "", CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), }; return InsertTTolerance(ttm); } } public int InsertTTolerance(TToleranceModel ttm) { string strSql = "insert into TTolerance (CarType,MeasurePointName,DimensionName,TolLower,TolUpper,CreateTime,Remark) values " + "(@CarType,@MeasurePointName,@DimensionName,@TolLower,@TolUpper,@CreateTime,@Remark)"; SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@CarType",ttm.CarType), new SqlParameter("@MeasurePointName",ttm.MeasurePointName), new SqlParameter("@DimensionName",ttm.DimensionName), new SqlParameter("@TolLower",ttm.TolLower), new SqlParameter("@TolUpper",ttm.TolUpper), new SqlParameter("@CreateTime",ttm.CreateTime), new SqlParameter("@Remark",ttm.Remark), }; return SQLHelper.ExecuteNonQuery(strSql, paras, CommandType.Text); } public int InsertNewRange(TRangeModel ttm) { string strSql = "insert into TRange (CarType,RangeName,RangePoint,RangeLower,RangeUpper,CreateTime,Remark) values " + "(@CarType,@RangeName,@RangePoint,@RangeLower,@RangeUpper,@CreateTime,@Remark)"; SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@CarType",ttm.CarType), new SqlParameter("@RangeName",ttm.RangeName), new SqlParameter("@RangePoint",ttm.RangePoint), new SqlParameter("@RangeLower",ttm.RangeLower), new SqlParameter("@RangeUpper",ttm.RangeUpper), new SqlParameter("@CreateTime",ttm.CreateTime), new SqlParameter("@Remark",ttm.Remark), }; 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); } public int InsertTRangeDatabyDataTable(DataTable dt) { return SQLHelper.InsertRangeDataToDB(dt); } // 记录IOT上传情况 public int InsertIOTUploadLog(string carId, string content, bool isUploaded, string fpy) { string strSql = "INSERT INTO IOTUploadLog (CarID, Content, CreateTime, IsUploaded, FPY) VALUES (@CarID, @Content, @CreateTime, @IsUploaded, @FPY)"; SqlParameter[] paras = new[] { new SqlParameter("@CarID", carId), new SqlParameter("@Content", content), new SqlParameter("@CreateTime", DateTime.Now), new SqlParameter("@IsUploaded", isUploaded ? 1 : 0), new SqlParameter("@FPY", fpy) }; return SQLHelper.ExecuteNonQuery(strSql, paras, CommandType.Text); } //记录 客户CSV报告上传情况 public int InsertCsvReportUploadLog(string carId, string targetPath, string backupPath, bool isUploaded) { string strSql = "INSERT INTO CsvReportUploadLog (CarID, TargetPath, BackupPath, CreateTime, IsUploaded) VALUES (@CarID, @TargetPath, @BackupPath, @CreateTime, @IsUploaded)"; SqlParameter[] paras = new[] { new SqlParameter("@CarID", carId), new SqlParameter("@TargetPath", targetPath), new SqlParameter("@BackupPath", backupPath), new SqlParameter("@CreateTime", DateTime.Now), new SqlParameter("@IsUploaded", isUploaded ? 1 : 0) }; return SQLHelper.ExecuteNonQuery(strSql, paras, CommandType.Text); } public int ExistsArriveLog(string carId) { string sql = "SELECT COUNT(1) FROM PlcCarStationLog WHERE CarID = @CarID"; var parameters = new[] { new SqlParameter("@CarID", carId) }; DataTable dt = SQLHelper.ExecuteQuery(sql, parameters, CommandType.Text); return Convert.ToInt32(dt.Rows[0][0]); } // 插入车辆抵达记录 public int InsertArriveLog(string carId, DateTime arriveTime) { string sql = "INSERT INTO PlcCarStationLog (CarID, ArriveTime, MeasureStatus) VALUES (@CarID, @ArriveTime, @MeasureStatus)"; var parameters = new[] { new SqlParameter("@CarID", carId), new SqlParameter("@ArriveTime", arriveTime), new SqlParameter("@MeasureStatus", "未测量") }; return SQLHelper.ExecuteNonQuery(sql, parameters, CommandType.Text); } // 更新启动测量时间 public int UpdateStartMeasureTime(string carId, DateTime startTime) { string sql = "UPDATE PlcCarStationLog SET StartMeasureTime = @StartMeasureTime, MeasureStatus = @MeasureStatus WHERE CarID = @CarID "; var parameters = new[] { new SqlParameter("@StartMeasureTime", startTime), new SqlParameter("@MeasureStatus", "已启动"), new SqlParameter("@CarID", carId) }; return SQLHelper.ExecuteNonQuery(sql, parameters, CommandType.Text); } // 更新离开时间 public int UpdateLeaveTime(string carId, DateTime leaveTime) { string sql = "UPDATE PlcCarStationLog SET LeaveTime = @LeaveTime, MeasureStatus = @MeasureStatus WHERE CarID = @CarID"; var parameters = new[] { new SqlParameter("@LeaveTime", leaveTime), new SqlParameter("@MeasureStatus", "测量完成"), new SqlParameter("@CarID", carId) }; return SQLHelper.ExecuteNonQuery(sql, parameters, CommandType.Text); } // 更新测量状态 public int UpdateMeasureStatus(string carId, string measureStatus) { string sql = "UPDATE PlcCarStationLog SET MeasureStatus = @MeasureStatus WHERE CarID = @CarID"; var parameters = new[] { new SqlParameter("@MeasureStatus", measureStatus), new SqlParameter("@CarID", carId) }; return SQLHelper.ExecuteNonQuery(sql, parameters, CommandType.Text); } // 查询丢失数据 public DataTable SelectUnuploadedIOTLogs() { string sql = "SELECT * FROM IOTUploadLog WHERE IsUploaded = 0"; return SQLHelper.ExecuteQuery(sql, CommandType.Text); } // DAL层增加更新状态方法 public int UpdateIOTUploadStatus(int id, bool isUploaded) { string sql = "UPDATE IOTUploadLog SET IsUploaded = @IsUploaded WHERE Id = @Id"; var parameters = new[] { new SqlParameter("@IsUploaded", isUploaded ? 1 : 0), new SqlParameter("@Id", id) }; return SQLHelper.ExecuteNonQuery(sql, parameters, CommandType.Text); } #endregion #region Update Function public int UpdateTTolerance(TToleranceModel ttm) { string strSql = "update TTolerance set CarType=@CarType,MeasurePointName=@MeasurePointName,DimensionName=@DimensionName,TolLower=@TolLower,TolUpper=@TolUpper,CreateTime=@CreateTime,Remark=@Remark where Id=" + ttm.Id.ToString(); SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@Id",ttm.Id), new SqlParameter("@CarType",ttm.CarType), new SqlParameter("@MeasurePointName",ttm.MeasurePointName), new SqlParameter("@DimensionName",ttm.DimensionName), new SqlParameter("@TolLower",ttm.TolLower), new SqlParameter("@TolUpper",ttm.TolUpper), new SqlParameter("@CreateTime",ttm.CreateTime), new SqlParameter("@Remark",ttm.Remark), }; return SQLHelper.ExecuteNonQuery(strSql, paras, CommandType.Text); } public int UpdateTRange(TRangeModel ttm) { string strSql = "update TRange set CarType=@CarType,RangeName=@RangeName,RangePoint=@RangePoint,RangeLower=@RangeLower,RangeUpper=@RangeUpper,CreateTime=@CreateTime,Remark=@Remark where Id=" + ttm.Id.ToString(); SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@Id",ttm.Id), new SqlParameter("@CarType",ttm.CarType), new SqlParameter("@RangeName",ttm.RangeName), new SqlParameter("@RangePoint",ttm.RangePoint), new SqlParameter("@RangeLower",ttm.RangeLower), new SqlParameter("@RangeUpper",ttm.RangeUpper), new SqlParameter("@CreateTime",ttm.CreateTime), new SqlParameter("@Remark",ttm.Remark), }; return SQLHelper.ExecuteNonQuery(strSql, paras, CommandType.Text); } public int updateMaintenceInfoEmpty() { string strSql = ""; string strPartID = "empty"; strSql = "update MaintenanceInfo set Station1PartID = '" + strPartID + "', Station2PartID = '" + strPartID + "', Station3PartID = '" + strPartID + "', Station4PartID = '" + strPartID + "', Station5PartID = '" + strPartID + "', Station6PartID = '" + strPartID + "', Station7PartID = '" + strPartID + "' where Id=1"; return SQLHelper.ExecuteNonQuery(strSql, CommandType.Text); } public int updateMaintenceInfo(string strPartID, int iStationNo) { string strSql = ""; switch (iStationNo) { case 1: strSql = "update MaintenanceInfo set Station1PartID = '" + strPartID + "' where Id=1"; break; case 2: strSql = "update MaintenanceInfo set Station2PartID = '" + strPartID + "' where Id=1"; break; case 3: strSql = "update MaintenanceInfo set Station3PartID = '" + strPartID + "' where Id=1"; break; case 4: strSql = "update MaintenanceInfo set Station4PartID = '" + strPartID + "' where Id=1"; break; case 5: strSql = "update MaintenanceInfo set Station5PartID = '" + strPartID + "' where Id=1"; break; case 6: strSql = "update MaintenanceInfo set Station6PartID = '" + strPartID + "' where Id=1"; break; case 7: strSql = "update MaintenanceInfo set Station7PartID = '" + strPartID + "' where Id=1"; break; default: strSql = "update MaintenanceInfo set Station1PartID = '" + strPartID + "' where Id=1"; break; } return SQLHelper.ExecuteNonQuery(strSql, CommandType.Text); } #endregion #region Delete Function public int DeleteOneTolerance(string strObjIDPk) { string strOle = "delete from TTolerance where Id = " + strObjIDPk; return SQLHelper.ExecuteNonQuery(strOle, CommandType.Text); } public int DeleteOneRange(string strObjIDPk) { string strOle = "delete from TRange where Id = " + strObjIDPk; return SQLHelper.ExecuteNonQuery(strOle, CommandType.Text); } public int DeleteRangeData(string strCarID) { string strOle = "delete from TRangeData where CarID = '" + strCarID + "'"; return SQLHelper.ExecuteNonQuery(strOle, CommandType.Text); } public int DeleteOneTTempVIN(string strVIN) { string strOle = "delete from TTempSaveVIN where CarVIN = '" + strVIN + "'"; return SQLHelper.ExecuteNonQuery(strOle, CommandType.Text); } #endregion } }