using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using EntityDataSet; using IntelligentControlForsx.Service.ControlLog.Domain; using IntelligentControlForsx.Service.WindturbineControl.Domain.Cmd; namespace IntelligentControlForsx.Service.ControlLog { public class ControlLogInfoSvc { public static DataTable GetControlInfo(SearchCondition condition) { IList list = new List(); using (wisdom_cs_entity ctx = new wisdom_cs_entity()) { if (condition.StartTime.HasValue && condition.EndTime.HasValue) list = ctx.control_log.Where( s => s.send_control_time > condition.StartTime.Value && s.send_control_time < condition.EndTime.Value).ToList(); if (condition.ByUserId) list = list.Where(s => s.control_user_id == condition.UserId).ToList(); if (condition.ByControlType) { int type = Convert.ToInt32(condition.ControlType); list = list.Where(s => s.control_type == type).ToList(); } if (condition.ByWindturbineId) list = list.Where(s => s.windturbine_id == condition.WindturbineId).ToList(); if (condition.ByStation) { string windturbineIdString = ""; if (condition.Station == "SBQ_FDC") windturbineIdString = "SG01_"; if (condition.Station == "MHS_FDC") windturbineIdString = "MG01_"; if (condition.Station == "NSS_FDC") windturbineIdString = "NG01_"; if (condition.Station == "QS_FDC") windturbineIdString = "QG01_"; if (condition.Station == "XS_FDC") windturbineIdString = "XG01_"; list = list.Where(s => s.windturbine_id.Contains(windturbineIdString)).ToList(); } } return GetDataTable(list); } public static DataTable GetDataTable(IList infoList) { IList userList = new List(); IList stationList = new List(); using (wisdom_cs_entity ctx = new wisdom_cs_entity()) { userList = ctx.user.Select(s => s).ToList(); stationList = ctx.windpowerstation.Select(s => s).ToList(); } DataTable dataTable = new DataTable(); dataTable.Columns.Add("操作时间"); dataTable.Columns.Add("风机名称"); dataTable.Columns.Add("风场"); dataTable.Columns.Add("操作类型"); dataTable.Columns.Add("操作人"); dataTable.Columns.Add("是否成功"); for (int i = 0; i < infoList.Count; i++) { DataRow row = dataTable.NewRow(); row["风机名称"] = infoList[i].windturbine_id; windpowerstation station = stationList.Where(s => s.ID == infoList[i].station_id).FirstOrDefault(); row["风场"] = station != null ? station.NAME : ""; CmdType controlType = (CmdType)Enum.Parse(typeof(CmdType), infoList[i].control_type.ToString()); switch (controlType) { case CmdType.Start: row["操作类型"] = "启动"; break; case CmdType.Stop: row["操作类型"] = "停止"; break; case CmdType.Reset: row["操作类型"] = "复位"; break; case CmdType.Maintain: row["操作类型"] = "维护"; break; case CmdType.UnMaintain: row["操作类型"] = "取消维护"; break; case CmdType.HangLock: row["操作类型"] = "挂牌"; break; case CmdType.UnHangLock: row["操作类型"] = "取消挂牌"; break; } user u = userList.Where(s => s.id == infoList[i].control_user_id).FirstOrDefault(); if (u != null) row["操作人"] = u.name; row["操作时间"] = infoList[i].send_control_time.HasValue ? infoList[i].send_control_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""; if (infoList[i].is_send_control_success.HasValue) { if (infoList[i].is_send_control_success.Value) row["是否成功"] = "是"; else row["是否成功"] = "否"; } else { row["是否成功"] = "否"; } dataTable.Rows.Add(row); } return dataTable; } } }