private string GetFactoryDistance(LastestGpsInfo gps, Company factory) { if (gps == null || !gps.Latitude.HasValue || !gps.Longtidue.HasValue || factory == null || !factory.Latitude.HasValue || !factory.Longtide.HasValue) { return(null); } return(LatLonUtils.GetDistance( gps.Latitude.Value, gps.Longtidue.Value, factory.Latitude.Value, factory.Longtide.Value).ToString("#0.00")); }
public string FactoryDistance(ShippingDocument ship, LastestGpsInfo gps) { if (ship == null || gps == null) { return(null); } distanceByShip ds = this.service.GetGenericService <distanceByShip>().Query().Where(m => m.shipdocid == ship.ID).FirstOrDefault(); distance dt = this.service.GetGenericService <distance>().Query().Where(m => m.projectid == ship.ProjectID && m.CastMode.TreeCode == ship.CastMode).FirstOrDefault(); var factory = this.service.Company.GetCurrentCompany(); if (ds == null || dt == null || ds.outbuilding == 0m) { string str = GetFactoryDistance(gps, factory); return(str); } decimal d = dt.distance - (gps.Distance.Value - ds.outbuilding); return(d < 0 ? (0.01m).ToString() : d.ToString()); }
///// <summary> ///// GPS获取所有车辆和状态信息 ///// </summary> ///// <returns></returns> //public ActionResult GetAllCarAndStatus(string id) //{ // try // { // IList<Car> carlist = new List<Car>(); // if (string.IsNullOrEmpty(id)) // { // carlist = this.service.Car.Query().Where(p => p.IsUsed).ToList(); // } // else // { // carlist = this.service.Car.Query().Where(p => p.IsUsed && p.ID == id).ToList(); // } // IList<LastestGpsInfo> lsiList = this.service.GetGenericService<LastestGpsInfo>().Query().ToList(); // IList<ShippingDocument> shippingList = this.service.ShippingDocument.getShippingTask(null); // if (carlist != null && lsiList != null && shippingList != null) // { // var cars = from car in carlist // join gpss in lsiList on car.TerminalID equals gpss.TerminalID into gpsinfo // from gps in gpsinfo.DefaultIfEmpty() // join cartask in shippingList // on car.ID equals cartask.CarID into cartasks // from task in cartasks.DefaultIfEmpty() // where car.CarTypeID == Model.Enums.CarType.Mixer // orderby car.OrderNum ascending // select new // { // car = car, // gps = gps, // task = task // }; // var factory = this.service.Company.GetCurrentCompany(); // var result = cars.ToList().Select( // s => new // { // Id = s.car.ID, // CustomNo = s.car.ID, // CarNum = s.car.CarNo, // TerminalID = s.car.TerminalID, // SIM = s.car.SIM, // Owner = s.car.Owner, // CarTypeName = s.car.CarTypeID == null ? "" : GetDicName(s.car.CarTypeID), // CarWeight = s.car.CarWeight, // CarCapacity = s.task == null ? 0 : s.task.ParCube, // ProvidedTimes = s.task == null ? 0 : s.task.ProvidedTimes, // StatusID = s.car.GPSStatus == null ? Model.Enums.GpsCarStatus.UnKnown : s.car.GPSStatus, // //默认未知 // StatusCode = s.car.GPSStatus == null ? Model.Enums.GpsCarStatus.UnKnown : s.car.GPSStatus, // StatusName = s.car.GPSStatus == null ? "未知" : GetDicName(s.car.GPSStatus), // DriverID = s.task == null ? string.Empty : s.task.Driver, // DriverName = s.task == null ? string.Empty : s.task.Driver, // ProduceLineID = s.task == null ? string.Empty : s.task.ProductLineID, // ProduceLineName = s.task == null ? string.Empty : s.task.ProductLineName, // //gpsinfo // Latitude = s.gps == null || s.gps.Latitude == null ? null : s.gps.Latitude.Value.ToString("#0.0000"), // Longtidue = s.gps == null || s.gps.Longtidue == null ? null : s.gps.Longtidue.Value.ToString("#0.0000"), // Speed = s.gps == null ? null : s.gps.Speed, // Height = s.gps == null ? null : s.gps.Height, // Direction = s.gps == null ? null : s.gps.Direction, // Oil = s.gps == null ? null : s.gps.Oil, // ProjectDistance = GetProjectDistance(s.gps, s.task), // FactoryDistance = GetFactoryDistance(s.gps, factory), // UnLoad = s.gps == null ? null : s.gps.UnLoad, // UnLoadTme = s.gps == null ? null : s.gps.UnLoadTme, // Place = s.gps == null ? null : s.gps.Place, // AccFlag = s.gps == null ? null : s.gps.AccFlag, // BeaterStatus = s.gps == null ? null : s.gps.BeaterStatus, // ErrorCode = s.gps == null ? null : s.gps.ErrorCode, // //经纬度无效 // IsGpsError = s.gps == null || s.gps.Latitude == null || s.gps.Longtidue == null, // //gps数据传递延时5分钟 // IsGprsError = s.gps == null ? true : s.gps.Receivetime.Value.AddHours(2) < DateTime.Now, // //taskInfo // TaskID = s.task == null ? null : s.task.TaskID, // ProjectID = s.task == null ? null : (s.task == null ? null : s.task.ProjectID) // } // ).ToList(); // return new ContentResult // { // Content = new JavaScriptSerializer { MaxJsonLength = Int32.MaxValue }.Serialize(result), // ContentType = "application/json" // }; // //return Json(result); // } // return null; // } // catch (Exception ex) // { // return null; // } //} private string GetProjectDistance(LastestGpsInfo gps, ShippingDocument task) { if (gps == null || !gps.Latitude.HasValue || !gps.Longtidue.HasValue || task == null) { return(null); } else { Project p = this.service.Project.Query().Where(pj => pj.ID == task.ProjectID).ToList().FirstOrDefault(); if (p == null || !p.Latitude.HasValue || !p.Longitude.HasValue) { return(null); } return(LatLonUtils.GetDistance( gps.Latitude.Value, gps.Longtidue.Value, p.Latitude.Value, p.Longitude.Value).ToString("#0.00")); } }
/// <summary> /// 获得报警信息 /// </summary> /// <param name="tid"></param> /// <param name="allcars"></param> /// <param name="gpsinfos"></param> /// <param name="allog"></param> /// <returns></returns> public List <GPS_CarAlarmInfo> GetAlarams(string tid, IEnumerable <Car> allcars, IEnumerable <LastestGpsInfo> gpsinfos, IEnumerable <AlarmLog> allog) { List <GPS_CarAlarmInfo> list = new List <GPS_CarAlarmInfo>(); LastestGpsInfo gpsinfo = null; var gpsInfos = gpsinfos.Where(exp => exp.TerminalID == tid); if (gpsInfos != null && gpsInfos.Count() > 0) { gpsinfo = gpsInfos.First(); } PublicService ps = new PublicService(); if (gpsinfo == null) { SysConfig Gpsconfig = ps.SysConfig.GetSysConfig("Gps"); if (bool.Parse(Gpsconfig.ConfigValue)) { GPS_CarAlarmInfo caralarm = new GPS_CarAlarmInfo(); caralarm.alarmInfo = "尚未收到GPS数据!"; caralarm.alarmTypeID = "002006"; caralarm.alarmTime = DateTime.Now; list.Add(caralarm); } } else { SysConfig Gprsconfig = ps.SysConfig.GetSysConfig("Gprs"); if (bool.Parse(Gprsconfig.ConfigValue) && gpsinfo.Receivetime != null && (DateTime.Compare(gpsinfo.Receivetime.Value.AddHours(2), DateTime.Now) <= 0)) { GPS_CarAlarmInfo caralarm = new GPS_CarAlarmInfo(); caralarm.alarmInfo = "超过2小时无GPS数据上传!"; caralarm.alarmTypeID = "002006"; caralarm.alarmTime = DateTime.Now; list.Add(caralarm); } else { var Tid = gpsinfo.TerminalID; var time = gpsinfo.Sendtime; var cars = allcars.Where(e => e.TerminalID == tid); var car = cars != null?cars.First() : null; if (car == null) { GPS_CarAlarmInfo caralarm = new GPS_CarAlarmInfo(); caralarm.alarmInfo = "根据终端号未查询到车辆历史gps信息"; caralarm.alarmTypeID = "002006"; caralarm.alarmTime = DateTime.Now; list.Add(caralarm); } else { var allogs = allog.Where(e => e.AlarmTime == time && e.CarID.ToString() == car.ID); foreach (var log in allogs) { GPS_CarAlarmInfo caralarm = new GPS_CarAlarmInfo(); caralarm.alarmInfo = log.AlarmData; caralarm.alarmTypeID = log.AlarmTypeID.ToString(); caralarm.alarmTime = log.AlarmTime; list.Add(caralarm); } } } } return(list); }