public static PlcEventDTO MapPlcEventOld(PlcEventOld plcEvent, Dictionary<int, PlcEventCode> eventCodeDict) { var plcEventDTO = new PlcEventDTO() { DateTime = plcEvent.DateTime.AddMilliseconds(plcEvent.Msec), Number = plcEvent.n, Message = plcEvent.Message, Value = plcEvent.Value, ShowValue = true, //FactoryNumber = plcEvent.PLC.Factory.Number.Value, //PlcName = plcEvent.PLC.Description, Group = null, }; //P2659 L OUT Pelletizer Die flange melt press //Z-1/2 OFF TWS valve to bypass (LCP switch) //Z-1/2 ON Horn reset (LCP switch) // OFF Cocт.прoдуктoвoгo клaпaнa 215/2D // AUTOMAT Pежим упрaвлeния клaпaном 215/1Д //H215A OPEN Рeгул.прoдуктoвoгo клaпaнa 215/1Д //Квитирование переключения рег-ра АВТ-РУЧ по ошибке канала var Message = plcEventDTO.Message; if (!string.IsNullOrEmpty(Message) && Message.Length >= 22) { var reason1 = Message.Substring(10, 12).Trim(); plcEventDTO.CodeString = removeSpacesRegex.Replace(reason1, " ").Trim(); var pos = Message.Substring(0, 10).Trim(); var mes = Message.Substring(22, Message.Length - 22).Trim(); plcEventDTO.Message = string.Format("{0} {1}", pos, mes); bool hasCode = CodeNumbers.ContainsKey(plcEventDTO.CodeString); if (hasCode) plcEventDTO.Code = CodeNumbers[plcEventDTO.CodeString]; if (hasCode && eventCodeDict.ContainsKey(plcEventDTO.Code)) { var eventCode = eventCodeDict[plcEventDTO.Code]; plcEventDTO.CodeString = eventCode.Text; plcEventDTO.SeverityNumber = eventCode.SeverityNumber; } } return plcEventDTO; }
public static PlcEventDTO MapPlcEvent(PlcEvent plcEvent) { var plcEventDTO = new PlcEventDTO() { DateTime = plcEvent.DateTime.AddMilliseconds(plcEvent.Msec), Number = plcEvent.MessageNumber, Message = plcEvent.PlcMessage.Text, Code = plcEvent.CodeId, CodeString = plcEvent.PlcEventCode.Text, SeverityNumber = plcEvent.PlcEventCode.SeverityNumber, //Severity = plcEvent.PlcEventCode.Severity.Name, ShowValue = plcEvent.PlcEventCode.ShowValue == true, Value = plcEvent.Value, Group = plcEvent.PlcMessage.Group, //FactoryNumber = plcEvent.PLC.Factory.Number.Value, //PlcName = plcEvent.PLC.Description, }; return plcEventDTO; }
public static IEnumerable <PlcEventDTO> GetPlcEventDTOList(this MPTEntities _db, PLC plc, DateTime fromDateTime, DateTime toDateTime, IEnumerable <int> numbers = null, string message = null, bool hideBreak = false, bool sortOrderDesc = false) { if (plc == null) { throw new ArgumentNullException("plc is null"); } if (plc.ProtocolType == 1) { var events = _db.PlcEvents.AsNoTracking() .Where(x => x.PlcId == plc.Id) //.Include(e => e.PLC) //.Include(e => e.PLC.Factory) .Include(e => e.PlcMessage) .Include(e => e.PlcEventCode) .Include(e => e.PlcEventCode.Severity); events = events.Where(x => x.DateTime >= fromDateTime && x.DateTime < toDateTime); if (numbers != null && numbers.Any()) { events = events.Where(x => numbers.Contains(x.MessageNumber)); } if (!string.IsNullOrEmpty(message)) { events = events.Where(e => e.PlcMessage.Text.ToUpper().Contains(message.ToUpper())); } if (hideBreak == true) { events = events.Where(x => x.CodeId != 16 && x.CodeId != 48); } events = sortOrderDesc == true? events.OrderByDescending(x => x.DateTime).ThenByDescending(x => x.Msec).ThenBy(x => x.Id) : events.OrderBy(x => x.DateTime).ThenBy(x => x.Msec).ThenByDescending(x => x.Id); return(events.ToList().Select(x => PlcEventDTO.MapPlcEvent(x))); } if (plc.ProtocolType == 2) { var events = _db.PlcEventsOld.AsNoTracking() .Where(x => x.PlcId == plc.Id) //.Include(e => e.PLC) //.Include(e => e.PLC.Factory) ; events = events.Where(x => x.DateTime >= fromDateTime && x.DateTime < toDateTime); if (numbers != null && numbers.Any()) { events = events.Where(x => numbers.Contains(x.n)); } events = sortOrderDesc == true? events.OrderByDescending(x => x.DateTime).ThenByDescending(x => x.Msec).ThenBy(x => x.Id) : events.OrderBy(x => x.DateTime).ThenBy(x => x.Msec).ThenByDescending(x => x.Id); var codes = _db.PlcEventCodes.Include(x => x.Severity).ToDictionary(x => x.Id, y => y); var plcEventDTOList = events.ToList().Select(x => PlcEventDTO.MapPlcEventOld(x, codes)); if (!string.IsNullOrEmpty(message)) { plcEventDTOList = plcEventDTOList.Where(e => e.Message.IndexOf(message, StringComparison.InvariantCultureIgnoreCase) >= 0); } if (hideBreak == true) { plcEventDTOList = plcEventDTOList.Where(x => x.Code != 16 && x.Code != 48); } return(plcEventDTOList); } return(null); }