private bool ImportDataToMQ(CardServiceModel model) { try { bool result = false; MonthCardModel sendmodel = new MonthCardModel() { CarOwnerName = model.CarOwnerName, CarNo = model.CarNo, Delete = model.Enable ? false : true, CarTypeGuid = model.CarTypeGuid, Locked = model.Locked, StartDate = model.StartDate.Date.AddHours(0).AddMinutes(0).AddSeconds(0).ToString("yyyy-MM-dd HH:mm:ss"), EndDate = model.EndDate.Date.AddDays(1).AddSeconds(-1).ToString("yyyy-MM-dd HH:mm:ss") //结束时间截止到23:59:59 }; CommandEntity <MonthCardModel> entity = new CommandEntity <MonthCardModel>() { command = BussineCommand.MonthCar, idMsg = Convert.ToBase64String(Guid.NewGuid().ToByteArray()), message = sendmodel }; result = m_rabbitMQ.SendMessageForRabbitMQ("发送月卡命令", m_serializer.Serialize(entity), entity.idMsg, model.ParkCode); return(result); } catch (Exception ex) { m_ilogger.LogFatal(LoggerLogicEnum.Tools, "", model.ParkCode, model.CarNo, "CameraUpdateTool.MainForm.ImportDataToMQ", "下发月卡时发生异常", ex.ToString()); return(false); } }
public static bool Execute(string parkingCode, string guid, string carNo, DateTime beginTime, DateTime lastTime) { if (string.IsNullOrEmpty(guid) || string.IsNullOrEmpty(carNo) || beginTime == null || lastTime == null) { return(false); } ILogger m_ilogger = new Logger.Logger(); ISerializer m_serializer = new JsonSerializer(m_ilogger); RabbitMQSender m_rabbitMQ = new RabbitMQSender(m_ilogger, m_serializer); IDatabase db; db = FollowRedisHelper.GetDatabase(0); RedisValue parklotredis = db.HashGet("ParkLotList", parkingCode); if (parklotredis != RedisValue.Null) { ParkLotModel parklotmodel = m_serializer.Deserialize <ParkLotModel>(parklotredis); if (parklotmodel != null) { List <string> drivewaylist = parklotmodel.DrivewayList; //所有车道 if (drivewaylist != null) { //要广播的缴费数据 TempCardModel tempCarModel = new TempCardModel(); tempCarModel.Guid = guid; tempCarModel.CarNo = carNo; tempCarModel.BeginTime = beginTime; tempCarModel.LatestTime = lastTime; tempCarModel.HavePaid = true; foreach (var drivewayguid in drivewaylist) { DrivewayModel drivewaymodel = m_serializer.Deserialize <DrivewayModel>(db.HashGet("DrivewayList", drivewayguid)); //广播到所有出口车道 if (drivewaymodel.Type == DrivewayType.Out) { CommandEntity <TempCardModel> sendCommand = new CommandEntity <TempCardModel>() { command = BussineCommand.TempCar, idMsg = Convert.ToBase64String(Guid.NewGuid().ToByteArray()), message = tempCarModel }; if (m_rabbitMQ.SendMessageForRabbitMQ("发送缴费数据广播命令", m_serializer.Serialize(sendCommand), drivewaymodel.DeviceMacAddress, parkingCode)) { //广播成功 } } } } } } return(true); }
/// <summary> /// 发送剩余车位数量给相机 /// </summary> /// <param name="remainingNumber">剩余车位数</param> /// <param name="parkingCode">停车场编号</param> /// <param name="m_ilogger"></param> /// <param name="m_serializer"></param> /// <returns></returns> private static bool SpaceNumberToCamera(int remainingNumber, string parkingCode, ILogger m_ilogger, ISerializer m_serializer) { CommandEntity <int> entity = new CommandEntity <int>() { command = BussineCommand.RemainingSpace, idMsg = Convert.ToBase64String(Guid.NewGuid().ToByteArray()), message = remainingNumber }; RabbitMQSender rabbitMq = new RabbitMQSender(m_ilogger, m_serializer); return(rabbitMq.SendMessageForRabbitMQ("发送剩余车位数", m_serializer.Serialize(entity), entity.idMsg, parkingCode)); }
public void Execute(IJobExecutionContext context) { Task.Factory.StartNew(() => { //从redis获取进场待广播数据进行广播 ILogger m_ilogger = new Logger.Logger(); ISerializer m_serializer = new JsonSerializer(m_ilogger); RabbitMQSender m_rabbitMQ = new RabbitMQSender(m_ilogger, m_serializer); IDatabase db = FollowRedisHelper.GetDatabase(2); IServer srv = FollowRedisHelper.GetCurrentServer(); IEnumerable <RedisKey> allParkingCode = srv.Keys(2); foreach (var parkingcode in allParkingCode) { HashEntry[] hashentryarray = db.HashGetAll(parkingcode); //所有实体 string[] allCarNo = db.HashKeys(parkingcode).ToStringArray(); //所有车牌 db = FollowRedisHelper.GetDatabase(0); RedisValue parklotredis = db.HashGet("ParkLotList", parkingcode.ToString()); if (parklotredis != RedisValue.Null) { ParkLotModel parklotmodel = m_serializer.Deserialize <ParkLotModel>(parklotredis); List <string> drivewaylist = parklotmodel.DrivewayList; //所有车道 if (drivewaylist != null) { foreach (var carno in allCarNo) { HashEntry hashenrty = hashentryarray.SingleOrDefault(o => o.Name == carno); string enterdata = hashenrty.Value; //要广播的入场数据 foreach (var drivewayguid in drivewaylist) { DrivewayModel drivewaymodel = m_serializer.Deserialize <DrivewayModel>(db.HashGet("DrivewayList", drivewayguid)); if (drivewaymodel.Type == DrivewayType.Out) { //广播到出口车道 string sendmsg = string.Format("{{\"command\":{0},\"idMsg\":\"{1}\",\"message\":{2}}}", 13, Convert.ToBase64String(Guid.NewGuid().ToByteArray()), enterdata); if (m_rabbitMQ.SendMessageForRabbitMQ("发送入场数据广播命令", sendmsg, drivewaymodel.DeviceMacAddress, parkingcode)) { //广播成功,移除缓存的数据 db = FollowRedisHelper.GetDatabase(2); db.HashDelete(parkingcode, carno); } } } } } } } }); }
public bool CarNumberRepushToCamera(CameraUpdateModel model, string parkingCode) { CommandEntity <CameraUpdateModel> entity = new CommandEntity <CameraUpdateModel>() { command = BussineCommand.CameraUpdate, idMsg = Convert.ToBase64String(Guid.NewGuid().ToByteArray()), message = model }; ILogger logger = new Logger(); ISerializer serializer = new JsonSerializer(logger); RabbitMQSender m_rabbitMQ = new RabbitMQSender(logger, serializer); return(m_rabbitMQ.SendMessageForRabbitMQ("发送相机升级命令", serializer.Serialize(entity), entity.idMsg, parkingCode)); }
/// <summary> /// 发送开闸命令 /// </summary> /// <param name="model">开闸模型实体参数</param> /// <returns></returns> public bool OpenGateToCamera(OpenGateModel model, string parkingCode) { CommandEntity <OpenGateModel> entity = new CommandEntity <OpenGateModel>() { command = BussineCommand.OpenGate, idMsg = Convert.ToBase64String(Guid.NewGuid().ToByteArray()), message = new OpenGateModel() { DeviceIdentify = model.DeviceIdentify, OpenType = model.OpenType, Operator = model.Operator, Remark = model.Remark } }; return(m_rabbitMQ.SendMessageForRabbitMQ(string.Format("发送{0}开闸命令", model.OpenType.GetDesc()), m_serializer.Serialize(entity), entity.idMsg, parkingCode)); }
/// <summary> /// 发送创建新车场的命令 /// </summary> /// <param name="parkingCode">停车场编码</param> /// <returns></returns> private bool SendNewParkLotToCameras(string parkingCode) { try { CommandEntity <bool> entity = new CommandEntity <bool>() { command = BussineCommand.NewParkLot, idMsg = Convert.ToBase64String(Guid.NewGuid().ToByteArray()), message = true }; return(m_rabbitMQ.SendMessageForRabbitMQ("发送新建车场命令", m_serializer.Serialize(entity), entity.idMsg, parkingCode)); } catch (Exception ex) { m_logger.LogFatal(LoggerLogicEnum.Bussiness, "", parkingCode, "", "Fujica.com.cn.Business.ParkLot.ParkLotManager.SendNewParkLotToCameras", "下发创建新车场发生异常", ex.ToString()); return(false); } }
/// <summary> /// 下发通行限制 /// </summary> /// <param name="model">通行限制模型</param> /// <param name="drivewayList">停车场车道集合</param> /// <returns></returns> public bool SendTrafficRestriction(TrafficRestrictionModel model, List <DrivewayModel> drivewayList) { bool result = false; LastErrorDescribe = BussinessErrorCodeEnum.BUSINESS_MQ_SEND_ERROR.GetDesc(); try { //根据车道集合一条一条发送给相机,减少相机计算 foreach (var drivewayModel in drivewayList) { TrafficRestrictionDetialModel sendmodel = new TrafficRestrictionDetialModel() { Guid = model.Guid, CarTypeGuid = model.CarTypeGuid, DeviceIdentify = drivewayModel.DeviceMacAddress, AssignDays = model.AssignDays, StartTime = model.StartTime, EndTime = model.EndTime, IsDelete = model.DrivewayGuid.Count(m => m == drivewayModel.Guid) > 0 ? false : true }; CommandEntity <TrafficRestrictionDetialModel> entity = new CommandEntity <TrafficRestrictionDetialModel>() { command = BussineCommand.Restrict, idMsg = Convert.ToBase64String(Guid.NewGuid().ToByteArray()), message = sendmodel }; result = m_rabbitMQ.SendMessageForRabbitMQ("发送通行限制指令", m_serializer.Serialize(entity), entity.idMsg, model.ParkCode); if (!result) { break; } } return(result); } catch (Exception ex) { m_logger.LogFatal(LoggerLogicEnum.Bussiness, model.Guid, model.ParkCode, "", "Fujica.com.cn.Business.ParkLot.TrafficRestrictionManager.SendTrafficRestriction", "下发通行限制时发生异常", ex.ToString()); LastErrorDescribe = BussinessErrorCodeEnum.BUSINESS_MQ_SEND_ERROR.GetDesc(); return(false); } }
/// <summary> /// 发送语音指令给相机 /// </summary> /// <param name="model"></param> /// <returns></returns> private bool SendVoiceToMq(VoiceCommandModel model) { try { //需要下发的数据 List <VoiceCommandDetialModel> sendList = new List <VoiceCommandDetialModel>(); foreach (var item in model.CommandList) { sendList.Add(new VoiceCommandDetialModel() { CommandType = item.CommandType.ToString(), ShowText = item.ShowText, ShowVoice = item.ShowVoice, DeviceIdentify = model.DeviceMacAddress }); } //每次只发送10条,分批发完(缓解相机的压力,担心相机缓冲区不够大) int itemCount = 10; for (int i = 0; i < Math.Ceiling((double)sendList.Count() / itemCount); i++) { CommandEntity <List <VoiceCommandDetialModel> > entity = new CommandEntity <List <VoiceCommandDetialModel> >() { command = BussineCommand.Remind, idMsg = Convert.ToBase64String(Guid.NewGuid().ToByteArray()), message = sendList.Skip(i * itemCount).Take(itemCount).ToList() }; m_rabbitMQ.SendMessageForRabbitMQ("发送语音指令命令", m_serializer.Serialize(entity), entity.idMsg, model.ParkCode); } return(true); } catch (Exception ex) { m_logger.LogFatal(LoggerLogicEnum.Bussiness, "", model.ParkCode, "", "Fujica.com.cn.Business.SystemSet.VoiceCommandManager.SendVoiceToMq", "下发语音指令数据时发生异常", ex.ToString()); return(false); } }
/// <summary> /// 发送储值卡数据到相机 /// </summary> /// <returns></returns> private static bool SendValueCarToCameras(CardServiceModel model, ILogger m_ilogger, ISerializer m_serializer) { ValueCardModel sendmodel = new ValueCardModel() { CarOwnerName = model.CarOwnerName, CarNo = model.CarNo, Delete = model.Enable ? false : true, CarTypeGuid = model.CarTypeGuid, Locked = false, Balance = model.Balance }; CommandEntity <ValueCardModel> entity = new CommandEntity <ValueCardModel>() { command = BussineCommand.ValueCar, idMsg = Convert.ToBase64String(Guid.NewGuid().ToByteArray()), message = sendmodel }; RabbitMQSender rabbitMq = new RabbitMQSender(m_ilogger, m_serializer); return(rabbitMq.SendMessageForRabbitMQ("发送储值卡命令", m_serializer.Serialize(entity), entity.idMsg, model.ParkCode)); }
/// <summary> /// 发送月卡数据到相机 /// </summary> /// <returns></returns> private static bool SendMonthCarToCameras(CardServiceModel model, ILogger m_ilogger, ISerializer m_serializer) { MonthCardModel sendmodel = new MonthCardModel() { CarOwnerName = model.CarOwnerName, CarNo = model.CarNo, Delete = model.Enable ? false : true, CarTypeGuid = model.CarTypeGuid, Locked = model.Locked, StartDate = model.StartDate.Date.AddHours(0).AddMinutes(0).AddSeconds(0).ToString("yyyy-MM-dd HH:mm:ss"), EndDate = model.EndDate.Date.AddDays(1).AddSeconds(-1).ToString("yyyy-MM-dd HH:mm:ss") //结束时间截止到23:59:59 }; CommandEntity <MonthCardModel> entity = new CommandEntity <MonthCardModel>() { command = BussineCommand.MonthCar, idMsg = Convert.ToBase64String(Guid.NewGuid().ToByteArray()), message = sendmodel }; RabbitMQSender rabbitMq = new RabbitMQSender(m_ilogger, m_serializer); return(rabbitMq.SendMessageForRabbitMQ("发送月卡命令", m_serializer.Serialize(entity), entity.idMsg, model.ParkCode)); }