示例#1
0
        public ThingService(tirotdbContext context)
        {
            _thing = new List <Thing> {
            };

            // Get Machine
            var objMachine = from x in context.TbMachine orderby x.MachineId select x;

            foreach (TbMachine mch in objMachine)
            {
                var objThing = new Thing();
                objThing.Id            = mch.MachineId;
                objThing.Name          = mch.MachineName;
                objThing.StartWorkTime = "00:00";
                objThing.EndWorkTime   = "00:00";

                // Get and Update Last Status from MongoDB
                var objMongo    = new MachineRunningStatus();
                var objTimeLine = objMongo.GetLastMachineStatus(objThing.Id);

                if (objTimeLine != null && objTimeLine.Count() > 0)
                {
                    objThing.OnlineStatus       = objTimeLine.ElementAt(0).MachineRunningStatus;
                    objThing.LastUpdateDateTime = objTimeLine.ElementAt(0).CDateTime.ToLocalTime();
                }
                else
                {
                    objThing.OnlineStatus       = "0";
                    objThing.LastUpdateDateTime = DateTime.Now;
                }


                //objThing.ThingWorkStatus = new PortStatus();
                objThing.ThingPortsStatus = new List <PortStatus> {
                };

                //var objPort = from y in context.TbIoTdevicePort select y;
                _thing.Add(objThing);
            }
            // Get Port
            var objPort = from x in context.TbIoTdevicePort select x;

            // Add Port
            foreach (TbIoTdevicePort dp in objPort)
            {
                var objPS = new PortStatus();
                objPS.IoTdevicePortID = dp.IoTdevicePort.ToString();
                objPS.IoTdevicePort   = dp.IoTdevicePort;
                objPS.SensorType      = dp.SensorType;
                objPS.MeasurementType = dp.MeasurementId;

                var tmpThing = _thing.First(x => x.Id.Contains(dp.MachineId));
                if (tmpThing != null)
                {
                    tmpThing.ThingPortsStatus.Add(objPS);
                }
            }
        }
示例#2
0
        public IEnumerable <MachineStatusLog> GetMachineDailyLogByDate(DateTime LogDate)
        {
            var objMongo = new MachineRunningStatus();

            return(objMongo.GetMachineStatusLogByDate(LogDate));
        }
示例#3
0
        public IEnumerable <MachineDailyStatus> GetMachineDailySummaryByDate(DateTime LogDate)
        {
            // ------------------- Set Start Time to 08:00:00 AM -------------------------
            LogDate = new DateTime(LogDate.Year, LogDate.Month, LogDate.Day, 8, 0, 0, DateTimeKind.Local);
            // ---------------------------------------------------------------------------

            List <MachineDailyStatus> retReport = new List <MachineDailyStatus>();

            foreach (var objThing in _thingService.GetCurrentActivity())
            {
                var objMc = new MachineDailyStatus();
                objMc.MachineID   = objThing.Id;
                objMc.MachineName = objThing.Name;

                var objMongo    = new MachineRunningStatus();
                var objTimeLine = objMongo.GetMachineStatusByIdAndDate(objThing.Id, LogDate);

                string lastStatus = "";

                for (int i = 0; i < objTimeLine.Count(); i++)
                {
                    if (i < objTimeLine.Count() - 1)
                    {
                        if (lastStatus != objTimeLine.ElementAt(i).MachineRunningStatus)
                        {
                            switch (objTimeLine.ElementAt(i).MachineRunningStatus)
                            {
                            case "0":
                                objMc.OffCnt++;
                                break;

                            case "1":
                                objMc.RunCnt++;
                                break;

                            case "2":
                                objMc.SetupCnt++;
                                break;

                            case "3":
                                objMc.StopCnt++;
                                break;

                            case "4":
                                objMc.QACnt++;
                                break;
                            }
                        }

                        switch (objTimeLine.ElementAt(i).MachineRunningStatus)
                        {
                        case "0":
                            objMc.OffTime += (objTimeLine.ElementAt(i + 1).CDateTime - objTimeLine.ElementAt(i).CDateTime);
                            break;

                        case "1":
                            objMc.RunTime += (objTimeLine.ElementAt(i + 1).CDateTime - objTimeLine.ElementAt(i).CDateTime);
                            break;

                        case "2":
                            objMc.SetupTime += (objTimeLine.ElementAt(i + 1).CDateTime - objTimeLine.ElementAt(i).CDateTime);
                            break;

                        case "3":
                            objMc.StopTime += (objTimeLine.ElementAt(i + 1).CDateTime - objTimeLine.ElementAt(i).CDateTime);
                            break;

                        case "4":
                            objMc.QATime += (objTimeLine.ElementAt(i + 1).CDateTime - objTimeLine.ElementAt(i).CDateTime);
                            break;
                        }
                    }
                    else
                    {
                        // Case Last Record
                        if (lastStatus != objTimeLine.ElementAt(i).MachineRunningStatus)
                        {
                            switch (objTimeLine.ElementAt(i).MachineRunningStatus)
                            {
                            case "0":
                                objMc.OffCnt++;
                                break;

                            case "1":
                                objMc.RunCnt++;
                                break;

                            case "2":
                                objMc.SetupCnt++;
                                break;

                            case "3":
                                objMc.StopCnt++;
                                break;

                            case "4":
                                objMc.QACnt++;
                                break;
                            }
                        }

                        DateTime endday;

                        if (objTimeLine.ElementAt(i).CDateTime.ToLocalTime().ToString("yyyyMMdd") != DateTime.Now.ToString("yyyMMdd"))
                        {
                            //endday = new DateTime(objTimeLine.ElementAt(i).CDateTime.Year, objTimeLine.ElementAt(i).CDateTime.Month, objTimeLine.ElementAt(i).CDateTime.Day,23, 59, 59);
                            endday = LogDate.AddDays(1);
                        }
                        else
                        {
                            endday = DateTime.Now.ToUniversalTime();
                        }

                        switch (objTimeLine.ElementAt(i).MachineRunningStatus)
                        {
                        case "0":
                            objMc.OffTime += (endday - objTimeLine.ElementAt(i).CDateTime);
                            break;

                        case "1":
                            objMc.RunTime += (endday - objTimeLine.ElementAt(i).CDateTime);
                            break;

                        case "2":
                            objMc.SetupTime += (endday - objTimeLine.ElementAt(i).CDateTime);
                            break;

                        case "3":
                            objMc.StopTime += (endday - objTimeLine.ElementAt(i).CDateTime);
                            break;

                        case "4":
                            objMc.QATime += (endday - objTimeLine.ElementAt(i).CDateTime);
                            break;
                        }
                    }

                    lastStatus = objTimeLine.ElementAt(i).MachineRunningStatus;
                }
                retReport.Add(objMc);
            }
            return(retReport);
        }
示例#4
0
        public IEnumerable <MachineTimelineReport> GetMachineTimelineByDate(DateTime LogDate)
        {
            // ------------------- Set Start Time to 08:00:00 AM -------------------------
            LogDate = new DateTime(LogDate.Year, LogDate.Month, LogDate.Day, 8, 0, 0, DateTimeKind.Local);
            // ---------------------------------------------------------------------------

            List <MachineTimelineReport> retTimeline = new List <MachineTimelineReport>();

            foreach (var objThing in _thingService.GetCurrentActivity())
            {
                var objMc = new MachineTimelineReport();
                objMc.measure = objThing.Name;
                objMc.data    = new List <string>();
                var objMongo    = new MachineRunningStatus();
                var objTimeLine = objMongo.GetMachineStatusByIdAndDate(objThing.Id, LogDate);

                if (objTimeLine.Count() > 0)
                {
                    for (int i = 0; i < objTimeLine.Count(); i++)
                    {
                        string objData = "";

                        //objData.StartDateTime = objTimeLine.ElementAt(i).CDateTime.ToLocalTime();
                        //objData.Status = objTimeLine.ElementAt(i).MachineRunningStatus;

                        if (i >= objTimeLine.Count() - 1)
                        {
                            DateTime endday;

                            if (objTimeLine.ElementAt(i).CDateTime.ToLocalTime().ToString("yyyyMMdd") != DateTime.Now.ToString("yyyMMdd"))
                            {
                                //endday = new DateTime(objTimeLine.ElementAt(i).CDateTime.Year, objTimeLine.ElementAt(i).CDateTime.Month, objTimeLine.ElementAt(i).CDateTime.Day, 23, 59, 59);
                                endday = LogDate.AddDays(1);
                            }
                            else
                            {
                                endday = DateTime.Now;
                            }



                            objData = "[\"" + objTimeLine.ElementAt(i).CDateTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") +
                                      @"""," + objTimeLine.ElementAt(i).MachineRunningStatus + @",""" +
                                      endday.ToString("yyyy-MM-dd HH:mm:ss") + "\"]";
                            //objData.EndDateTime = objTimeLine.ElementAt(i).CDateTime.ToLocalTime();
                        }
                        else
                        {
                            objData = "[\"" + objTimeLine.ElementAt(i).CDateTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") +
                                      @"""," + objTimeLine.ElementAt(i).MachineRunningStatus + @",""" +
                                      objTimeLine.ElementAt(i + 1).CDateTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") + "\"]";
                            //objData.EndDateTime = objTimeLine.ElementAt(i + 1).CDateTime.ToLocalTime();
                        }

                        objMc.data.Add(objData);
                    }
                }
                else
                {
                    DateTime dayenddt = new DateTime(LogDate.Year, LogDate.Month, LogDate.Day, 12, 0, 0, DateTimeKind.Local);
                    string   objData  = "[\"" + dayenddt.ToString("yyyy-MM-dd HH:mm:ss") +
                                        @""",0,""" + dayenddt.ToString("yyyy-MM-dd HH:mm:ss") + "\"]";
                    objMc.data.Add(objData);
                }
                retTimeline.Add(objMc);
            }
            return(retTimeline);
        }
示例#5
0
        public IEnumerable <MachineStatusLog> GetMachineStatusByIdAndDate(string MachineID, DateTime LogDate)
        {
            var objMongo = new MachineRunningStatus();

            return(objMongo.GetMachineStatusByIdAndDate(MachineID, LogDate));
        }
示例#6
0
        public void Post()
        {
            byte[] m_Bytes = BinaryData.ReadToEnd(Request.Body);
            var    invalue = System.Text.Encoding.UTF8.GetString(m_Bytes);

            Console.WriteLine("Value in : [" + invalue + "]");

            try
            {
                WISE4012ViewModel objWISE  = JsonConvert.DeserializeObject <WISE4012ViewModel>(invalue);
                string            strMAC12 = StringConverts.MAC17ToMAC12Digit(objWISE.MAC);
                // Get Device/Port/Machine by MAC Address

                var objMN = _context.TbIoTdevice.First(x => x.IoTdeviceMacAddress.Equals(strMAC12));

                var objMachine = _thingService.GetCurrentActivityByMachine(objMN.MachineId);

                if (objMachine == null)
                {
                    return;                     // Machine Not Found -- not keep log data to system
                }
                var objMongo  = new IotLoggerMongo();
                var objMCLog  = new MachineRunningStatus();
                var objMCStat = new MachineStatusLog();

                //if (objMachine != null)
                //{
                //    //objMachine.LastUpdateDateTime = DateTime.Now;

                //    objMCStat.MachineID = objMachine.Id;
                //    objMCStat.CDateTime = objWISE.TIM;
                //    objMCStat.SDateTime = DateTime.Now;
                //    objMCStat.MachineRunningStatus = "0"; //Set values to Default 0 Machine Turn off
                //}

                bool changeStatus = false;

                foreach (PortStatus pd in objMachine.ThingPortsStatus)
                {
                    // Check match port and value
                    for (int i = 0; i <= objWISE.Record.GetUpperBound(0); i++)
                    {
                        if (objWISE.Record[i, 0] == 0 && objWISE.Record[i, 1] == pd.IoTdevicePort &&
                            new[] { "1", "2", "3", "7", "10", "12", "19", "20" }.Contains(objWISE.Record[i, 2].ToString()))
                        {
                            var objMGLogger = new MGLogger();
                            objMGLogger.MachineID   = objMachine.Id;
                            objMGLogger.CDateTime   = objWISE.TIM;
                            objMGLogger.Port        = pd.IoTdevicePort.ToString();
                            objMGLogger.SensorValue = objWISE.Record[i, 3].ToString();
                            objMGLogger.MAC         = strMAC12;
                            objMGLogger.UID         = objWISE.UID;
                            objMGLogger.SDateTime   = DateTime.Now; //objMCStat.SDateTime;
                                                                    //var atvlog = new TbIoTactivityLog();
                                                                    //atvlog.MachineId = objMachine.Id;
                                                                    //atvlog.ClientDateTime = objWISE.TIM;
                                                                    //atvlog.SensorId = pd.IoTdevicePort;
                                                                    //atvlog.SensorValue = objWISE.Record[i, 3];
                                                                    //atvlog.ServerDateTime = DateTime.Now;

                            //_context.TbIoTactivityLog.Add(atvlog);
                            //if (objMGLogger.SensorValue == "1")
                            //{
                            // var statusVal = i + 1;
                            // objMCStat.MachineRunningStatus = statusVal.ToString(); // Set Port Number to Machine Status
                            // }

                            pd.LastUpdateDateTime = objWISE.TIM;

                            // i < 3 mean check change status only port 0 to 2
                            if (i < 3 && (pd.Value != objWISE.Record[i, 3]))
                            {
                                pd.Value = objWISE.Record[i, 3];

                                changeStatus = true;
                            }

                            objMongo.Create(objMGLogger);



                            // ------ Comment for run production
                            //if (objMachine != null)
                            //{
                            //    this.UpdateMonitorSensor(objMachine.Id.Trim() + pd.IoTdevicePortID.Trim(), pd.Value.ToString());
                            //}



                            //Thread.Sleep(5000);

                            /*
                             * var tmpLog = new DeviceActivityLogModel();
                             * tmpLog.MachineID = pd.MachineId;
                             * tmpLog.ClientDateTime = objWISE.TIM;
                             * tmpLog.DevicePort = pd.IoTdevicePort;
                             * tmpLog.SensorValue = objWISE.Record[i, 3];
                             * _thingService.SetCurrentActivity(tmpLog);
                             */
                        }
                    }
                }

                if (changeStatus && objMachine != null)
                {
                    if (objMachine.ThingPortsStatus[0].Value == 1)
                    {
                        objMachine.OnlineStatus = "1"; // Green
                    }
                    else
                    if (objMachine.ThingPortsStatus[1].Value == 1)
                    {
                        objMachine.OnlineStatus = "2"; // Red
                    }
                    else
                    if (objMachine.ThingPortsStatus[2].Value == 1)
                    {
                        objMachine.OnlineStatus = "3"; // Yellow
                    }
                    else
                    {
                        objMachine.OnlineStatus = "0"; // Black
                    }
                    objMachine.LastUpdateDateTime = DateTime.Now;

                    objMCStat.MachineID            = objMachine.Id;
                    objMCStat.MachineName          = objMachine.Name;
                    objMCStat.CDateTime            = objWISE.TIM;
                    objMCStat.SDateTime            = DateTime.Now;
                    objMCStat.MachineRunningStatus = objMachine.OnlineStatus;

                    objMCLog.Create(objMCStat);

                    this.UpdateMachineChangeStatus(objMachine);

                    //objMachine.OnlineStatus = objMCStat.MachineRunningStatus;
                }

                //Console.WriteLine(strMAC12);
            }
            catch (Exception ex)
            {
                var errdata = new TbUdlog();
                errdata.Indata         = "Error Value : " + ex.Message + " : " + ex.StackTrace + " || " + invalue;
                errdata.ServerDateTime = DateTime.Now;
                errdata.Id             = Guid.NewGuid().ToString();
                _context.TbUdlog.Add(errdata);
                _context.SaveChanges();
            }

            //Console.WriteLine(" ------------- Application Content-type : [" + Request.Headers["Content-Type"] + "]");
            //_context.SaveChanges();
            //Console.WriteLine(value.MAC + " : " + value.PE);
        }