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); } } }
public IEnumerable <MachineStatusLog> GetMachineDailyLogByDate(DateTime LogDate) { var objMongo = new MachineRunningStatus(); return(objMongo.GetMachineStatusLogByDate(LogDate)); }
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); }
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); }
public IEnumerable <MachineStatusLog> GetMachineStatusByIdAndDate(string MachineID, DateTime LogDate) { var objMongo = new MachineRunningStatus(); return(objMongo.GetMachineStatusByIdAndDate(MachineID, LogDate)); }
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); }