コード例 #1
0
        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;
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        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);
        }