コード例 #1
1
        public IPageList<EMileageReportDay> SearchMileageReportDays(int deviceId, DateTime st, DateTime et, string orderName, string orderType, int pageIndex, int pageSize)
        {

            if (et > DateTime.Now)
            {
                et = DateTime.Now;
            }

            //生成查询时间段
            var day = (et - st).TotalDays;
            var dts = new List<DateTime>();
            for (var i = 0; i <= day; i++)
            {
                dts.Add(st.AddDays(i).GetDayStartTime());
            }

            var sp = new Spec<EMileageReportDay>();
            sp.And(p => p.DeviceId == deviceId && p.ReportDay >= st.GetDayStartTime() && p.ReportDay <= et.GetDayStartTime());

            //获取已经生成的数据
            var haveddks =
                _rep.GetList<EMileageReportDay>(0, sp,
                    p => new Columns(p.ReportDay)).Select(p => p.ReportDay.GetDayStartTime()).ToList();

            foreach (var ddk in dts)
            {
                if (!haveddks.Contains(ddk))
                {
                    //发现当前日期的数据没有生成 那么开始生成
                    CreateMileageReportDayByReportDay(deviceId, ddk);
                }
            }

            var cp = new CSpec<EMileageReportDay>();

            if (orderType.HasValue())
            {
                cp.And(orderName, orderType);
            }
            return _rep.GetPageList<EMileageReportDay>(pageIndex, pageSize, sp, cp);
        }
コード例 #2
0
        /// <summary>
        /// 获取历史轨迹
        /// </summary>
        /// <returns></returns>
        public List<EDeviceHistoryData> GetDeviceHistoryDatas(int deviceId, DateTime dt)
        {

            var device = _rep.Get<EDevice>(p => p.Id == deviceId);
            if (device == null)
            {
                throw new NullReferenceException("不存在设备!");
            }

            var node = _nodeService.GetNodeByIdFromCache(device.NodeId);

            if (node == null)
            {
                throw new NullReferenceException("不存在节点!");
            }

            return
                _rep.GetTSqlCommand(
                    "SELECT * FROM {0} WHERE A=?A AND I>=?ST AND I<=?ET ORDER BY I ASC".GetFormat(node.NodeDeviceHistoryTableName))
                    .AddParameter("A", deviceId)
                    .AddParameter("ST", dt.GetDayStartTime())
                    .AddParameter("ET", dt.GetDayEndTime())
                    .SetConnectionString(node.NodeDeviceHistoryConnectionString)
                    .ToList<EDeviceHistoryData>();
        }
コード例 #3
0
ファイル: WeChatModel.cs プロジェクト: hhahh2011/CH.Gps
        /// <summary>
        /// 获取设备(目前只有车辆)里程数据 指定日期
        /// </summary>
        /// <param name="vehicleCode">车辆编码</param>
        /// <returns></returns>
        public VReportMileage GetDeviceMileageByDate(string vehicleCode, DateTime dt)
        {

            var rep = DMRepository.Get<EVehicle>();
            var vehicle = rep.Get(p => p.VehicleCode.ToString() == vehicleCode);
            if (vehicle == null) throw new NullReferenceException("没有找到车辆" + vehicleCode);

            var result = ModelFacade.Report.ReportSummaryModel.GetMileageReportList(vehicle.TenantCode, vehicle.VehicleCode.ToString(), vehicle.LicenceNumber, dt.GetDayStartTime(), dt.GetDayEndTime()).FirstOrDefault();
            result.ReportDate = dt.ToShortDateString();
            return result;
        }
コード例 #4
0
 public void ReCalcMileageReportDays(int deviceId, DateTime reportDay)
 {
     var mrd = _rep.Get<EMileageReportDay>(p => p.DeviceId == deviceId && p.ReportDay == reportDay.GetDayStartTime());
     if (mrd == null)
     {
         CreateMileageReportDayByReportDay(deviceId, reportDay);
     }
     else
     {
         mrd.UpdateTime = DateTime.Now;
         var list = _positionService.GetDeviceHistoryDatas(deviceId, reportDay);
         if (list.Count > 1)
         {
             mrd.DayMileage = _mileageService.CalcMileage(list);
             var spt = new EMapPoint(list[0].E, list[0].F);
             mrd.StartTime = list[0].I;
             mrd.StartLatLng = spt.ToString();
             mrd.StartAddress = _mapService.GetLocation(spt).Address;
             var ept = new EMapPoint(list[list.Count - 1].E, list[list.Count - 1].F);
             mrd.EndTime = list[list.Count - 1].I;
             mrd.EndLatLng = ept.ToString();
             mrd.EndAddress = _mapService.GetLocation(ept).Address;
         }
         _rep.Save(mrd, p => p.DeviceId == deviceId && p.ReportDay == reportDay.GetDayStartTime());
     }
 }