コード例 #1
0
 public void Insert(EHistoryDataStoreConfig entity)
 {
     using (IRepository repository = SessionManager.CreateRepository(typeof(EHistoryDataStoreConfig)))
     {
         repository.Save(entity);
     }            
 }
コード例 #2
0
ファイル: ReportService.cs プロジェクト: hhahh2011/CH.Gps
 /// <summary>
 /// 获得指定车辆,指定时间段内,最后一点的历史记录
 /// </summary>
 /// <param name="tableConfig"></param>
 /// <param name="StartTime"></param>
 /// <param name="EndTime"></param>
 /// <param name="isNormalData"></param>
 /// <returns></returns>
 public EGPSHistoryInfo GetLastRecord(EHistoryDataStoreConfig tableConfig, DateTime StartTime
     , DateTime EndTime, bool isNormalData)
 {
     string sqlText = string.Format("select * from {0} where VehicleCode = '{1}' and reporttime between '{2}' and '{3}' {4} order by reporttime desc limit 0,1 ",
         tableConfig.StoreTable.TableName, tableConfig.VehicleCode, StartTime, EndTime,
          isNormalData ? " and  IsGPSOverFlow=0 " : "");
     return Single(tableConfig.VehicleCode, tableConfig, sqlText);
 }
コード例 #3
0
ファイル: ReportService.cs プロジェクト: hhahh2011/CH.Gps
 /// <summary>
 /// 获取同一个历史数据配置,多个车辆,多个时间段内的历史数据
 /// </summary>
 /// <param name="tableConfig"></param>
 /// <param name="vehicleList"></param>
 /// <param name="queryTimes"></param>
 /// <param name="isNormalData"></param>
 /// <returns></returns>
 public List<EGPSHistoryInfo> GetFirstRecordList(EHistoryDataStoreConfig tableConfig, List<Guid> vehicleList, List<DateTime[]> queryTimes , bool isNormalData)
 {
     StringBuilder strVehicleCode = new StringBuilder();
     for (int i = 1, i_count = vehicleList.Count; i <= i_count; i++)
     {
         if (i == i_count)
             strVehicleCode.Append(string.Format("'{0}'", vehicleList[i - 1].ToString()));
         else
             strVehicleCode.Append(string.Format("'{0}',", vehicleList[i - 1].ToString()));
     }
     StringBuilder sqlBulder = new StringBuilder();
     for (int i = 0, i_Count = queryTimes.Count; i < i_Count; i++)
     {
         if (i > 0) sqlBulder.Append(" union ");
         sqlBulder.Append(string.Format(@"(SELECT a.* FROM {0} a JOIN 
         (SELECT VehicleCode,MIN(reporttime) times FROM {0} WHERE reporttime between '{1}' and '{2}' and VehicleCode IN ({3}) {4} GROUP BY VehicleCode ) b
          ON a.VehicleCode = b.VehicleCode AND a.ReportTime = b.times ) ",
             tableConfig.StoreTable.TableName, queryTimes[i][0], queryTimes[i][1],strVehicleCode.ToString(),
                 isNormalData ? " and  IsGPSOverFlow=0 " : ""));                    
     }
     return GetHistoryList(tableConfig, sqlBulder.ToString());
 }
コード例 #4
0
        public EHistoryDataStoreConfig GetVehicleStoreTableConfig(Guid vehicleCode)
        {
            if (string.IsNullOrEmpty(vehicleCode.ToString()))
            {
                return null;
            }
            EHistoryDataStoreConfig res = null;
            string cmdText = string.Format("SELECT RecordID, VehicleCode, StoreTable, ENABLE, CreateDate, remark FROM gps_historydatastoreconfig WHERE VehicleCode='{0}'", vehicleCode);
            using (MySqlDataReader sdr = MySqlDB.GetDataReader(CommandType.Text, cmdText))
            {
                if (sdr != null)
                {
                    Guid _StoreTableID = Guid.Empty;
                    if (sdr.Read())
                    {
                        res = new EHistoryDataStoreConfig();

                        res.RecordID = sdr.GetGuid(0);
                        res.VehicleCode = sdr.GetGuid(1);
                        _StoreTableID = sdr.GetGuid(2);
                        res.Enable = sdr.GetShort(3) == 1;
                        res.CreateDate = sdr.GetDateTimeExt(4);
                        res.Remark = sdr.GetStringExt(5);

                    }
                    sdr.Close();

                    res.StoreTable = GetHisotryDataStoreTable(_StoreTableID);
                }
            }
            return res;
        }
コード例 #5
0
ファイル: ReportService.cs プロジェクト: hhahh2011/CH.Gps
 private List<EGPSHistoryInfo> GetEGPSHistoryInfoList(EHistoryDataStoreConfig tableConfig, string sqlText)
 {
     DataSet ds = MySqlHelper.ExecuteDataSet(tableConfig.StoreTable.SelectConnStr, sqlText, null);
     if (ds == null || ds.Tables[0].Rows.Count == 0)
         return null;
     return ConvertInfoList(tableConfig.VehicleCode, ds.Tables[0].Rows);
 }
コード例 #6
0
ファイル: VehicleDAL.cs プロジェクト: hhahh2011/CH.Gps
        /// <summary>
        /// 采用事物添加车辆(movo_vehicle,gps_historydatastoreconfig,movo_vehiclelog)
        /// </summary>
        /// <param name="ve"></param>
        /// <param name="conf"></param>
        /// <param name="vlog"></param>
        /// <returns></returns>
        public ResultEntity AddVehicleOperTrans(EMVehicle ve, EHistoryDataStoreConfig conf, EMVehicleLog vlog)
        {
            ResultEntity res = new ResultEntity();

            MySqlConnection con = new MySqlConnection(MySqlDB.ConnString);
            con.Open();
            MySqlTransaction trans = con.BeginTransaction();
            MySqlCommand cmd = con.CreateCommand();
            cmd.Transaction = trans;
            try
            {
                cmd.CommandText = string.Format(@" insert into movo_vehicle(VehicleCode,LicenceNumber,GroupID,GPSTypeID,DeviceNo,SIMNo,GPSCode,TenantCode,InitMileage,ExpireTime,InstallTime,IsStop,CreateTime,IconType,GPSTypeName)
 values(@VehicleCode,@LicenceNumber,@GroupID,@GPSTypeID,@DeviceNo,@SIMNo,@GPSCode,@TenantCode,@InitMileage,@ExpireTime,@InstallTime,@IsStop,@CreateTime,@IconType,@GPSTypeName)");
                cmd.Parameters.AddRange(new MySqlParameter[] {
                    new MySqlParameter("VehicleCode", ve.VehicleCode ),
                    new MySqlParameter("LicenceNumber", ve.LicenceNumber),
                    new MySqlParameter("GroupID", ve.GroupID),
                    new MySqlParameter("GPSTypeID", ve.GPSTypeID),
                    new MySqlParameter("DeviceNo", ve.DeviceNo),
                    new MySqlParameter("SIMNo", ve.SIMNo),
                    new MySqlParameter("GPSCode", ve.GPSCode),
                    new MySqlParameter("TenantCode", ve.TenantCode),
                    new MySqlParameter("InitMileage",ve.InitMileage ),
                    new MySqlParameter("ExpireTime", ve.ExpireTime),
                    new MySqlParameter("InstallTime", ve.InstallTime),
                    new MySqlParameter("IsStop", ve.IsStop),
                    new MySqlParameter("CreateTime", ve.CreateTime),
                    new MySqlParameter("IconType", ve.IconType),
                    new MySqlParameter("GPSTypeName", ve.GPSTypeName)
                });
                int veCount = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                if (veCount < 1)
                {
                    trans.Rollback();
                    res.State = false;
                    res.Msg = "车辆表【movo_vehicle】新增失败";
                    return res;
                }

                cmd.CommandText = string.Format(@"insert into gps_historydatastoreconfig(RecordID,VehicleCode,StoreTable,Enable,CreateDate,remark)
 values(@RecordIDconf,@VehicleCodeconf,@StoreTableconf,@Enableconf,@CreateDateconf,@remarkconf)");
                cmd.Parameters.AddRange(new MySqlParameter[] {
                    new MySqlParameter("RecordIDconf", conf.RecordID),
                    new MySqlParameter("VehicleCodeconf", conf.VehicleCode),
                    new MySqlParameter("StoreTableconf", conf.StoreTable.RecordID),
                    new MySqlParameter("Enableconf", conf.Enable),
                    new MySqlParameter("CreateDateconf", conf.CreateDate),
                    new MySqlParameter("remarkconf", conf.Remark)
                   
                });
                int confCount = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                if (confCount < 1)
                {
                    trans.Rollback();
                    res.State = false;
                    res.Msg = "车辆历史数据配置表【gps_historydatastoreconfig】新增失败";
                    return res;
                }

                cmd.CommandText = string.Format(@"insert into movo_vehiclelog(LogID,VehicleCode,LicenceNumber,GroupID,GPSTypeID,DeviceNo,SIMNo,GPSCode,TenantCode,BeginDate,EndDate,Operator,InitMileage)
 values(@LogID,@VehicleCodelog,@LicenceNumberlog,@GroupIDlog,@GPSTypeIDlog,@DeviceNolog,@SIMNolog,@GPSCodelog,@TenantCodelog,@BeginDatelog,@EndDatelog,@Operatorlog,@InitMileagelog)");
                cmd.Parameters.AddRange(new MySqlParameter[] {
                    new MySqlParameter("LogID", vlog.LogID),
                    new MySqlParameter("VehicleCodelog", vlog.VehicleCode),
                    new MySqlParameter("LicenceNumberlog", vlog.LicenceNumber),
                    new MySqlParameter("GroupIDlog", vlog.GroupID),
                    new MySqlParameter("GPSTypeIDlog", vlog.GPSTypeID),
                    new MySqlParameter("DeviceNolog", vlog.DeviceNo),
                    new MySqlParameter("SIMNolog", vlog.SIMNo),
                    new MySqlParameter("GPSCodelog", vlog.GPSCode),
                    new MySqlParameter("TenantCodelog", vlog.TenantCode),
                    new MySqlParameter("BeginDatelog", vlog.BeginDate),
                    new MySqlParameter("EndDatelog", vlog.EndDate),
                    new MySqlParameter("Operatorlog", vlog.Operator),
                    new MySqlParameter("InitMileagelog", vlog.InitMileage)
                  
                });
                int logCount = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();

                if (logCount < 1)
                {
                    trans.Rollback();
                    res.State = false;
                    res.Msg = "车辆操作日志表【movo_vehiclelog】新增失败";
                    return res;
                }
                trans.Commit();
                res.State = true;
                res.Msg = "新增车辆成功";
            }
            catch (Exception ex)
            {
                trans.Rollback();
                res.State = false;
                res.Msg = "新增车辆失败," + ex.Message;
            }
            finally
            {
                con.Close();
            }
            return res;
        }
コード例 #7
0
ファイル: ReportWCFService.cs プロジェクト: hhahh2011/CH.Gps
        /// <summary>
        /// 获取同一个历史数据配置,多台车辆,指定时间段内,里程汇总数据
        /// </summary>
        /// <param name="config">历史数据配置</param>
        /// <param name="vehicleList">车辆序列</param>
        /// <param name="beginTime">起始时间</param>
        /// <param name="endTime">结束时间</param>
        /// <returns></returns>
        private List<EMileage> GetReportTimeSpanMileage(EHistoryDataStoreConfig config, List<Guid> vehicleList, DateTime beginTime, DateTime endTime, bool getPostition)
        {
            IMapService mapService = new PES.GPS.MapService.MapSearchService.MapService();
            List<EMileage> ModelList = new List<EMileage>();
            List<EGPSHistoryInfo> firstList = objReportServer.GetFirstRecordList(config, vehicleList, beginTime, endTime, true);
            List<EGPSHistoryInfo> lastList = objReportServer.GetLastRecordList(config, vehicleList, beginTime, endTime, true);

            if (firstList != null && lastList != null)
            {
                foreach (Guid vehicle in vehicleList)
                {
                    EMileage Model = new EMileage();
                    Model.VehicleCode = vehicle;
                    Model.QueryBeginTime = beginTime;
                    Model.QueryEndTime = endTime;

                    EGPSHistoryInfo first = firstList.Where(f => f.VehicleCode == vehicle).FirstOrDefault();
                    EGPSHistoryInfo last = lastList.Where(f => f.VehicleCode == vehicle).FirstOrDefault();

                    if (first == null || last == null)
                        continue;

                    Model.BeginTime = first.ReportTime;
                    Model.EndTime = last.ReportTime;
                    if (getPostition)
                    {
                        Model.BeginLocation = InverseGeocoding(mapService, first.Latitude, first.Longitude);
                        Model.EndLocation = InverseGeocoding(mapService, last.Latitude, last.Longitude);
                    }

                    Model.BeginMileage = decimal.Round((first.StarkMileage / 1000), 2);
                    Model.EndMileage = decimal.Round((last.StarkMileage / 1000), 2);
                    Model.TotalMileage += decimal.Round((last.StarkMileage / 1000 - first.StarkMileage / 1000), 2);

                    ModelList.Add(Model);
                }
            }

            return ModelList;
        }
コード例 #8
0
        public DBProcessResult AddVehicle(EMVehicleViewModel view)
        {

            DBProcessResult result = new DBProcessResult();
            try
            {
                EMVehicleService service = new EMVehicleService();
                EHistoryDataStoreConfigService configService = new EHistoryDataStoreConfigService();
                EMGpsTypeService gpsTypeService = new EMGpsTypeService();
                EMVehicleLogService logService = new EMVehicleLogService();
                IdentityNoService noService = new IdentityNoService();

                bool licenceNumberIsExist = service.IsExist(view.TenantCode, view.LicenceNumber);
                if (licenceNumberIsExist)
                {
                    result.IsSuccess = false;
                    result.Message = "已经有相同车牌号的车辆";
                    return result;
                }

                EMVehicle entity = ConvertHelper.ConvertObj<EMVehicleViewModel, EMVehicle>(view);
                EMGpsType gpsTypeEntity = gpsTypeService.Get(entity.GPSTypeID);
                Logger.Info("code line 290: gpsTypeService.Get(entity.GPSTypeID)");
                entity.GPSTypeName = gpsTypeEntity.TypeName;

                bool bo = service.IsExist(view.DeviceNo);
                if (bo != true)
                {
                    //新增车辆历史数据配置
                    string tableName = GetTableNameByCondition(gpsTypeEntity.PrefixCode);
                    EHisotryDataStoreTables table = configService.GetHistoryTable(tableName);
                    Logger.Info("code line 299: configService.GetHistoryTable(tableName)");
                    if (table == null)
                    {
                        result.IsSuccess = false;
                        result.Message = string.Format("找不到对应的历史数据表[{0}],请联系DBA!", tableName);
                        return result;
                    }

                    //新增车辆
                    EnumGPSCodeRule codeType = (EnumGPSCodeRule)gpsTypeEntity.GPSCodeRule;
                    entity.GPSCode = GetGPSCodeHelper.GetGPSCode(gpsTypeEntity.PrefixCode, codeType, entity.SIMNo, entity.DeviceNo);

                    if (entity.DeviceNo.Length == gpsTypeEntity.MachineCodeLength)
                    {
                        entity.CreateTime = DateTime.Now;
                        entity.InstallTime = DateTime.Now;
                        GetVehicleGroupID(entity);    //客户管理中新增车辆时,没有车辆组,默认增加到顶级车辆组
                        service.Insert(entity);

                        EHistoryDataStoreConfig configEntity = new EHistoryDataStoreConfig();
                        configEntity.CreateDate = DateTime.Now;
                        configEntity.Enable = true;
                        configEntity.StoreTable = table;
                        configEntity.VehicleCode = entity.VehicleCode;
                        configService.Insert(configEntity);

                        //新增车辆Log
                        EMVehicleLog vehicleLog = new EMVehicleLog()
                        {
                            BeginDate = DateTime.Now,
                            LogID = noService.GetVehicleLogID(),
                            DeviceNo = entity.DeviceNo,
                            EndDate = null,
                            GPSCode = entity.GPSCode,
                            GPSTypeID = entity.GPSTypeID,
                            InitMileage = entity.InitMileage,
                            LicenceNumber = entity.LicenceNumber,
                            Operator = view.UserName,
                            SIMNo = entity.SIMNo,
                            TenantCode = entity.TenantCode,
                            VehicleCode = entity.VehicleCode,
                            GroupID = entity.GroupID,
                        };
                        logService.Insert(vehicleLog);
                        view.VehicleCode = entity.VehicleCode;
                        result.IsSuccess = true;
                    }
                    else
                    {
                        result.IsSuccess = false;
                        result.Message = "GPS设备号长度,不在指定范围内,请重新填写!";
                    }
                }
                else
                {
                    result.IsSuccess = false;
                    result.Message = "设备号已存在,请重新填写!";
                }
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.Message = ex.Message;
                Logger.Info(ex.StackTrace + "【" + ex.Message + "】");
            }
            return result;
        }
コード例 #9
0
ファイル: ReportService.cs プロジェクト: hhahh2011/CH.Gps
 /// <summary>
 /// 获得指定车辆,指定时间段内,第一点有速度且ACC开的历史记录
 /// </summary>
 /// <param name="tableConfig"></param>
 /// <param name="beginTime"></param>
 /// <param name="endTime"></param>
 /// <param name="isNormalData"></param>
 /// <returns></returns>
 public EGPSHistoryInfo GetFirstSpeedRecord(EHistoryDataStoreConfig tableConfig, DateTime beginTime, DateTime endTime, bool isNormalData)
 {
     string sqlText = string.Format("select * from {0} where VehicleCode = '{1}' and speed>0 and Accstate=1 and reporttime between '{2}' and '{3}' {4} order by reporttime asc limit 0,1 ",
         tableConfig.StoreTable.TableName, tableConfig.VehicleCode, beginTime, endTime, isNormalData ? " and  IsGPSOverFlow=0 " : "");
     return Single(tableConfig.VehicleCode, tableConfig, sqlText);
 }
コード例 #10
0
ファイル: ReportService.cs プロジェクト: hhahh2011/CH.Gps
 /// <summary>
 /// 获取同一个历史数据配置,多个车辆,指定时间段内,最后一点的历史记录
 /// </summary>
 /// <param name="tableConfig">历史数据配置</param>
 /// <param name="vehicleList">车辆序列</param>
 /// <param name="beginTime">起始时间</param>
 /// <param name="endTime">结束时间</param>
 /// <returns></returns>
 public List<EGPSHistoryInfo> GetLastRecordList(EHistoryDataStoreConfig tableConfig, List<Guid> vehicleList, DateTime beginTime, DateTime endTime, bool isNormalData)
 {
     StringBuilder strVehicleCode = new StringBuilder();
     for (int i = 1, i_count = vehicleList.Count; i <= i_count; i++)
     {
         if (i == i_count)
             strVehicleCode.Append(string.Format("'{0}'", vehicleList[i - 1].ToString()));
         else
             strVehicleCode.Append(string.Format("'{0}',", vehicleList[i - 1].ToString()));
     }
     string sqlText = string.Format(@"SELECT a.* FROM {0} a JOIN 
         (SELECT VehicleCode,MAX(reporttime) times FROM {0} WHERE reporttime between '{1}' and '{2}' and VehicleCode IN ({3}) {4} GROUP BY VehicleCode ) b
          ON a.VehicleCode = b.VehicleCode AND a.ReportTime = b.times "
         , tableConfig.StoreTable.TableName, beginTime, endTime, strVehicleCode.ToString(), isNormalData ? " and IsGPSOverFlow=0 " : "");
     strVehicleCode.Append("");
     return GetHistoryList(tableConfig, sqlText);
 }
コード例 #11
0
 private List<EGPSHistoryInfo> GetGPSHistoryInfoList(EHistoryDataStoreConfig tableConfig, DateTime beginTime, DateTime endTime)
 {
     if (tableConfig == null)
         return null;
     string sqlText = string.Format("select * from {0} where VehicleCode = '{1}' and reporttime between '{2}' and '{3}' order by ReportTime asc ",
         tableConfig.StoreTable.TableName, tableConfig.VehicleCode, beginTime, endTime);
     return List(tableConfig.VehicleCode, tableConfig, sqlText);
 }
コード例 #12
0
 private List<EGPSHistoryInfo> List(Guid vehicleCode, EHistoryDataStoreConfig tableConfig, string sqlText)
 {
     List<EGPSHistoryInfo> list = new List<EGPSHistoryInfo>();
     DataSet ds = MySqlHelper.ExecuteDataSet(tableConfig.StoreTable.SelectConnStr, sqlText);
     if (ds == null || ds.Tables[0].Rows.Count == 0)
         return list;
     return ConvertInfo(ds);
 }
コード例 #13
0
        private List<EGPSHistoryInfo> GetGPSHistoryInfoList(EHistoryDataStoreConfig tableConfig, DateTime StartTime, DateTime EndTime, int size)
        {
            if (tableConfig == null || tableConfig.StoreTable == null)
                return new List<EGPSHistoryInfo>();

            //ado.net 获取历史记录
            return DataStoreConfigDal.GetGPSHistoryInfoList(tableConfig.StoreTable.SelectConnStr, tableConfig.StoreTable.TableName, tableConfig.VehicleCode.ToString(), StartTime, EndTime, size);
        }
コード例 #14
0
ファイル: VehicleDAL.cs プロジェクト: hhahh2011/CH.Gps
        /// <summary>
        /// 添加gps_historydatastoreconfig
        /// </summary>
        /// <param name="conf"></param>
        /// <returns></returns>
        public bool AddHistoryDataStoreConfig(EHistoryDataStoreConfig conf)
        {
            string sCmdText = string.Format(@"insert into gps_historydatastoreconfig(RecordID,VehicleCode,StoreTable,Enable,CreateDate,remark)
values(@RecordID,@VehicleCode,@StoreTable,@Enable,@CreateDate,@remark)");
            MySqlParameter[] cmdParams = new MySqlParameter[] {
                    new MySqlParameter("RecordID",conf.RecordID),
                    new MySqlParameter("VehicleCode",conf.VehicleCode),
                    new MySqlParameter("StoreTable",conf.StoreTable),
                    new MySqlParameter("Enable",conf.Enable),
                    new MySqlParameter("CreateDate",conf.CreateDate),
                    new MySqlParameter("remark",conf.Remark)
                   
                };
            int ri = MySqlDB.ExecuteNonQuery(CommandType.Text, sCmdText, cmdParams);
            if (ri > 0)
            {
                return true;
            }
            return false;
        }
コード例 #15
0
        public DBProcessResult AddVehicleOperate(EMVehicle entity, string sUserName)
        {
            DBProcessResult result = new DBProcessResult();
            try
            {
                VehicleDAL ve = new VehicleDAL();
                IdentityNoService noService = new IdentityNoService();
                bool isLiceNum = ve.IsLicenceNumber(entity.TenantCode, entity.LicenceNumber);
                if (isLiceNum)
                {
                    result.IsSuccess = false;
                    result.Message = "已经有相同车牌号的车辆";
                    return result;
                }

                //EMVehicle entity = ConvertHelper.ConvertObj<EMVehicleViewModel, EMVehicle>(view);
                EMGpsType gpsTypeEntity = ve.GetGpsTypeByGpsTypeId(entity.GPSTypeID);
                entity.GPSTypeName = gpsTypeEntity.TypeName;
                bool isDev = ve.IsDeviceNo(entity.DeviceNo);
                if (isDev != true)
                {
                    //新增车辆历史数据配置
                    string tableName = GetTableNameByCondition(gpsTypeEntity.PrefixCode);
                    EHisotryDataStoreTables table = ve.GetHistoryTable(tableName);
                    
                    if (table == null)
                    {
                        result.IsSuccess = false;
                        result.Message = string.Format("找不到对应的历史数据表[{0}],请联系DBA!", tableName);
                        return result;
                    }
                    //新增车辆
                    EnumGPSCodeRule codeType = (EnumGPSCodeRule)gpsTypeEntity.GPSCodeRule;
                    entity.GPSCode = GetGPSCodeHelper.GetGPSCode(gpsTypeEntity.PrefixCode, codeType, entity.SIMNo, entity.DeviceNo);

                    if (entity.DeviceNo.Length == gpsTypeEntity.MachineCodeLength)
                    {
                        GetVehicleGroupID(entity);    //客户管理中新增车辆时,没有车辆组,默认增加到顶级车辆组
                        Logger.Info("新增车辆: " + entity.LicenceNumber + "开始");
                        ve.AddVehicle(entity);
                        Logger.Info("新增车辆: " + entity.LicenceNumber + "结束");

                        EHistoryDataStoreConfig configEntity = new EHistoryDataStoreConfig();
                        configEntity.RecordID = Guid.NewGuid();
                        configEntity.CreateDate = DateTime.Now;
                        configEntity.Enable = true;
                        configEntity.StoreTable = table;
                        configEntity.VehicleCode = entity.VehicleCode;
                        Logger.Info("新增车辆 gps_historydatastoreconfig: " + configEntity.StoreTable.TableName + "开始");
                        ve.AddHistoryDataStoreConfig(configEntity);
                        Logger.Info("新增车辆 gps_historydatastoreconfig: " + configEntity.StoreTable.TableName + "结束");

                        //新增车辆Log
                        EMVehicleLog vehicleLog = new EMVehicleLog()
                        {
                            BeginDate = DateTime.Now,
                            LogID = noService.GetVehicleLogID(),
                            DeviceNo = entity.DeviceNo,
                            EndDate = null,
                            GPSCode = entity.GPSCode,
                            GPSTypeID = entity.GPSTypeID,
                            InitMileage = entity.InitMileage,
                            LicenceNumber = entity.LicenceNumber,
                            Operator = sUserName,
                            SIMNo = entity.SIMNo,
                            TenantCode = entity.TenantCode,
                            VehicleCode = entity.VehicleCode,
                            GroupID = entity.GroupID,
                        };
                        Logger.Info("新增车辆 movo_vehiclelog: " + configEntity.StoreTable.TableName + "开始");
                        ve.AddVehicleLog(vehicleLog);
                        Logger.Info("新增车辆 movo_vehiclelog: " + configEntity.StoreTable.TableName + "结束");

                        result.IsSuccess = true;
                    }
                    else
                    {
                        result.IsSuccess = false;
                        result.Message = string.Format(@"GPS设备号长度为{0},请重新填写!", gpsTypeEntity.MachineCodeLength);
                    }
                }
                else
                {
                    result.IsSuccess = false;
                    result.Message = "设备号已存在,请重新填写!";
                }
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.Message = ex.Message;
                Logger.Info("新增车辆:" + ex.StackTrace + "【" + ex.Message + "】");
            }
            return result;
            
          
        }
コード例 #16
0
        public DBProcessResult<int> AddVehicleOperateTran(EMVehicle entity, string sUserName)
        {
            DBProcessResult<int> result = new DBProcessResult<int>();
            try
            {
                VehicleDAL ve = new VehicleDAL();
                IdentityNoService noService = new IdentityNoService();
                bool isLiceNum = ve.IsLicenceNumber(entity.TenantCode, entity.LicenceNumber);
                if (isLiceNum)
                {
                    result.IsSuccess = false;
                    result.Message = "已经有相同车牌号的车辆";
                    result.ReturnValue = -1;
                    return result;
                }
                EMGpsType gpsTypeEntity = ve.GetGpsTypeByGpsTypeId(entity.GPSTypeID);
                entity.GPSTypeName = gpsTypeEntity.TypeName;
                bool isDev = ve.IsDeviceNo(entity.DeviceNo);
                if (isDev != true)
                {
                    //新增车辆历史数据配置
                    string tableName = GetTableNameByCondition(gpsTypeEntity.PrefixCode);
                    EHisotryDataStoreTables table = ve.GetHistoryTable(tableName);

                    if (table == null)
                    {
                        result.IsSuccess = false;
                        result.Message = string.Format("找不到对应的历史数据表[{0}],请联系DBA!", tableName);
                        result.ReturnValue = -1;
                        return result;
                    }
                    //新增车辆
                    EnumGPSCodeRule codeType = (EnumGPSCodeRule)gpsTypeEntity.GPSCodeRule;
                    entity.GPSCode = GetGPSCodeHelper.GetGPSCode(gpsTypeEntity.PrefixCode, codeType, entity.SIMNo, entity.DeviceNo);

                    if (entity.DeviceNo.Length == gpsTypeEntity.MachineCodeLength)
                    {
                        GetVehicleGroupID(entity);    //客户管理中新增车辆时,没有车辆组,默认增加到顶级车辆组
                        
                        EHistoryDataStoreConfig configEntity = new EHistoryDataStoreConfig();
                        configEntity.RecordID = Guid.NewGuid();
                        configEntity.CreateDate = DateTime.Now;
                        configEntity.Enable = true;
                        configEntity.StoreTable = table;
                        configEntity.VehicleCode = entity.VehicleCode;
                       
                        //新增车辆Log
                        EMVehicleLog vehicleLog = new EMVehicleLog()
                        {
                            BeginDate = DateTime.Now,
                            LogID = noService.GetVehicleLogID(),
                            DeviceNo = entity.DeviceNo,
                            EndDate = null,
                            GPSCode = entity.GPSCode,
                            GPSTypeID = entity.GPSTypeID,
                            InitMileage = entity.InitMileage,
                            LicenceNumber = entity.LicenceNumber,
                            Operator = sUserName,
                            SIMNo = entity.SIMNo,
                            TenantCode = entity.TenantCode,
                            VehicleCode = entity.VehicleCode,
                            GroupID = entity.GroupID
                        };
                        var res = ve.AddVehicleOperTrans(entity, configEntity, vehicleLog);

                        result.IsSuccess = res.State;
                        result.Message = res.Msg;
                        result.ReturnValue = new VehicleDAL().SelectCount(entity.TenantCode.ToString());
                    }
                    else
                    {
                        result.IsSuccess = false;
                        result.Message = string.Format(@"GPS设备号长度为{0},请重新填写!", gpsTypeEntity.MachineCodeLength);
                        result.ReturnValue = -1;
                    }
                }
                else
                {
                    result.IsSuccess = false;
                    result.Message = "设备号已存在,请重新填写!";
                    result.ReturnValue = -1;
                }
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.Message = ex.Message;
                result.ReturnValue = -1;
                Logger.Error("VehicleManagerWCFService.AddVehicleOperateTran(EMVehicle entity, string sUserName);" + ex.Message, ex);
            }
            return result;
            
        }
コード例 #17
0
ファイル: ReportService.cs プロジェクト: hhahh2011/CH.Gps
 /// <summary>
 /// 获得指定车辆,指定时间区间列表内的,第一点和最后一点有速度且ACC开的历史记录
 /// </summary>
 /// <param name="tableConfig"></param>
 /// <param name="beginTime"></param>
 /// <param name="endTime"></param>
 /// <param name="isNormalData"></param>
 /// <returns></returns>
 public List<EGPSHistoryInfo> GetTimeSpansSpeedRecord(EHistoryDataStoreConfig tableConfig, List<DateTime> beginTime, List<DateTime> endTime, bool isNormalData)
 {
     StringBuilder sbSql = new StringBuilder();
     for (int i = 0, i_Count = beginTime.Count(); i < i_Count; i++)
     {
         sbSql.Append(string.Format("(select * from {0} where VehicleCode = '{1}' and speed>0 and Accstate=1 and reporttime between '{2}' and '{3}' {4} order by reporttime asc limit 0,1 )",
             tableConfig.StoreTable.TableName, tableConfig.VehicleCode, beginTime[i], endTime[i], isNormalData ? " and  IsGPSOverFlow=0 " : ""));
         sbSql.Append("union");
         sbSql.Append(string.Format("(select * from {0} where VehicleCode = '{1}' and speed>0 and Accstate=1 and reporttime between '{2}' and '{3}' {4} order by reporttime desc limit 0,1 )",
             tableConfig.StoreTable.TableName, tableConfig.VehicleCode, beginTime[i], endTime[i], isNormalData ? " and  IsGPSOverFlow=0 " : ""));
     }
     return GetEGPSHistoryInfoList(tableConfig, sbSql.ToString());
 }
コード例 #18
0
ファイル: ReportWCFService.cs プロジェクト: hhahh2011/CH.Gps
        private List<EMileage> GetReportTimeSpanListMileage(EHistoryDataStoreConfig config, List<Guid> vehicleCodeList, List<DateTime[]> timeSpanList, string TenantCode, bool getPostition)
        {
            IMapService mapService = new PES.GPS.MapService.MapSearchService.MapService();
            List<EMileage> list = new List<EMileage>();
            List<EGPSHistoryInfo> firstList = objReportServer.GetFirstRecordList(config, vehicleCodeList, timeSpanList, true);
            List<EGPSHistoryInfo> lastList = objReportServer.GetLastRecordList(config, vehicleCodeList, timeSpanList, true);
            if (firstList == null || firstList.Count == 0
                || lastList == null || lastList.Count == 0)
                return list;
            foreach (Guid vehicleCode in vehicleCodeList)
            {
                foreach (DateTime[] timeSpan in timeSpanList)
                {
                    EMileage Model = new EMileage();
                    Model.VehicleCode = vehicleCode;
                    Model.QueryBeginTime = timeSpan[0];
                    Model.QueryEndTime = timeSpan[1];
                    var first = firstList.Where(o => o.ReportTime >= timeSpan[0] && o.ReportTime <= timeSpan[1] && o.VehicleCode == vehicleCode).FirstOrDefault();
                    var last = lastList.Where(o => o.ReportTime >= timeSpan[0] && o.ReportTime <= timeSpan[1] && o.VehicleCode == vehicleCode).FirstOrDefault();

                    if (first == null || last == null)
                        continue;
                    Model.BeginTime = first.ReportTime;
                    if (getPostition)
                    {
                        Model.BeginLocation = InverseGeocoding(mapService, first.Latitude, first.Longitude);
                    }
                    Model.EndTime = last.ReportTime;
                    if (getPostition)
                    {
                        Model.EndLocation = InverseGeocoding(mapService, last.Latitude, last.Longitude);
                    }
                    Model.BeginMileage = decimal.Round((first.StarkMileage / 1000), 2);
                    Model.EndMileage = decimal.Round((last.StarkMileage / 1000), 2);
                    Model.TotalMileage += decimal.Round((last.StarkMileage / 1000 - first.StarkMileage / 1000), 2);
                    list.Add(Model);
                }
            }
            return list;
        }
コード例 #19
0
ファイル: ReportService.cs プロジェクト: hhahh2011/CH.Gps
 private EGPSHistoryInfo Single(Guid vehicleCode, EHistoryDataStoreConfig tableConfig, string sqlText)
 {
     DataSet ds = MySqlHelper.ExecuteDataSet(tableConfig.StoreTable.SelectConnStr, sqlText, null);
     if (ds == null || ds.Tables[0].Rows.Count == 0)
         return null;
     return EGPSHistoryInfo.ConvertInfo(ds.Tables[0].Rows[0]);
 }
コード例 #20
0
ファイル: ReportWCFService.cs プロジェクト: hhahh2011/CH.Gps
        /// <summary>
        /// 获取同一个历史数据配置,多台车辆,指定时间段内,里程汇总数据
        /// </summary>
        /// <param name="config">历史数据配置</param>
        /// <param name="vehicleList">车辆序列</param>
        /// <param name="beginTime">起始时间</param>
        /// <param name="endTime">结束时间</param>
        /// <returns></returns>
        public List<EMileage> GetReportTimeSpanMileage(EHistoryDataStoreConfig config, List<Guid> vehicleList, DateTime beginTime, DateTime endTime)
        {
            List<EMileage> ModelList = new List<EMileage>();
            List<EGPSHistoryInfo> firstList = objReportServer.GetFirstRecordList(config, vehicleList, beginTime, endTime, true);
            List<EGPSHistoryInfo> lastList = objReportServer.GetLastRecordList(config, vehicleList, beginTime, endTime, true);

            if (firstList != null && lastList != null)
            {
                foreach (Guid vehicle in vehicleList)
                {
                    EMileage Model = new EMileage();
                    Model.VehicleCode = vehicle;
                    Model.QueryBeginTime = beginTime;
                    Model.QueryEndTime = endTime;

                    EGPSHistoryInfo first = firstList.Where(f => f.VehicleCode == vehicle).FirstOrDefault();
                    EGPSHistoryInfo last = lastList.Where(f => f.VehicleCode == vehicle).FirstOrDefault();

                    if (first == null || last == null)
                        continue;

                    Model.BeginTime = first.ReportTime;
                    Model.EndTime = last.ReportTime;
                    Model.BeginMileage = decimal.Round((first.StarkMileage / 1000), 2);
                    Model.EndMileage = decimal.Round((last.StarkMileage / 1000), 2);
                    Model.TotalMileage += decimal.Round((last.StarkMileage / 1000 - first.StarkMileage / 1000), 2);

                    ModelList.Add(Model);
                }
            }

            return ModelList;
        }
コード例 #21
0
ファイル: ReportService.cs プロジェクト: hhahh2011/CH.Gps
 private List<EGPSHistoryInfo> GetHistoryList(EHistoryDataStoreConfig tableConfig, string sqlText)
 {
     List<EGPSHistoryInfo> list = new List<EGPSHistoryInfo>();
     DataSet ds = MySqlHelper.ExecuteDataSet(tableConfig.StoreTable.SelectConnStr, sqlText, null);
     if (ds == null || ds.Tables[0].Rows.Count == 0)
         return null;
     for (int i = 0, i_Count = ds.Tables[0].Rows.Count; i < i_Count; i++)
     {
         list.Add(EGPSHistoryInfo.ConvertInfo(ds.Tables[0].Rows[i]));
     }
     return list;
 }