예제 #1
0
 public VehicleFlow(IRepository <CarInRecord, long> carInRecordRepository,
                    IUnitOfWorkManager unitOfWorkManager,
                    IRepository <CarOutRecord, long> carOutRecordRepository,
                    IRepository <CarPort, long> carPortrepository,
                    IRepository <CarTypes, long> repositoryCarType,
                    IRepository <CarPort, long> repositoryCarPort,
                    IRepository <FareRule> repositoryFareRule,
                    ICarNumberPermission carNumberPermission,
                    IParkBoxOptions parkBoxOption,
                    LedManager ledManager,
                    IRepository <CarDiscount, long> carDiscountrepository,
                    IRepository <CarErrorRecord, long> carErrorRecordRepository,
                    IEventBus eventBus)
 {
     _carInRecordRepository  = carInRecordRepository;
     _unitOfWorkManager      = unitOfWorkManager;
     _carPortrepository      = carPortrepository;
     _carOutRecordRepository = carOutRecordRepository;
     Logger                    = NullLogger.Instance;
     _repositoryCarType        = repositoryCarType;
     _repositoryFareRule       = repositoryFareRule;
     _carNumberPermission      = carNumberPermission;
     _parkBoxOptions           = parkBoxOption;
     _ledManager               = ledManager;
     _repositoryCarPort        = repositoryCarPort;
     _iocManager               = IocManager.Instance;
     _carDiscountrepository    = carDiscountrepository;
     _carErrorRecordRepository = carErrorRecordRepository;
     _eventBus                 = eventBus;
 }
예제 #2
0
 public CoverLayer(DeviceInfoDto deviceInfoDto, IParkBoxOptions parkBoxOptions, ILogger logger, Action openRod, Action inOutAction)
 {
     InitializeComponent();
     _parkBoxOptions        = parkBoxOptions;
     _logger                = logger;
     deviceInfo             = deviceInfoDto;
     synchronizationContext = SynchronizationContext.Current;
     if (deviceInfo.EntranceDto.EntranceType == Enum.EntranceType.In)
     {
         TimeClock.Foreground    = new SolidColorBrush(Colors.Orange);
         EntranceName.Foreground = new SolidColorBrush(Colors.Orange);
     }
     else
     {
         TimeClock.Foreground    = new SolidColorBrush(Colors.Green);
         EntranceName.Foreground = new SolidColorBrush(Colors.Green);
     }
     if (deviceInfo.EntranceDto.EntranceType == Enum.EntranceType.Out)
     {
         this.btn_InOut.Content = "手工出场";
     }
     timer = new Timer(x =>
     {
         synchronizationContext.Post(z => this.TimeClock.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), null);
     }, null, 1000, 1000);
     OpenRod     = openRod;
     InOutAction = inOutAction;
 }
예제 #3
0
        public BoxMessage(IParkBoxOptions parkBoxOptions,
                          IVehicleFlow vehicleFlow,
                          ICarNumberPermission carNumberPermission,
                          LedManager ledManager,
                          IRepository <CarTypes, long> repositoryCarType,
                          IRepository <FareRule> repositoryFareRule,
                          IRepository <RangeTime> repositoryRangeTime,
                          IRepository <BlackList, int> repositoryBlackList,
                          IRepository <CarPort, long> repositoryCarPort,
                          IUnitOfWorkManager unitOfWork
                          )
        {
            this.parkBoxOptions  = parkBoxOptions;
            _vehicleFlow         = vehicleFlow;
            _carNumberPermission = carNumberPermission;
            _ledManager          = ledManager;

            _repositoryCarType   = repositoryCarType;
            _repositoryFareRule  = repositoryFareRule;
            _repositoryRangeTime = repositoryRangeTime;
            _repositoryBlackList = repositoryBlackList;
            _repositoryCarPort   = repositoryCarPort;
            Logger      = NullLogger.Instance;
            _unitOfWork = unitOfWork;
        }
예제 #4
0
        public ChargerWindow(LedManager ledManager, string carNumber, FareRule fareRule, InOutTypeEnum inOutType,
                             IRepository <CarTypes, long> repositoryCarTypes,
                             IParkBoxOptions parkBoxOptions,
                             IRepository <CarPort, long> repositoryCarPort,
                             IVehicleFlow vehicleFlow,
                             IDeviceable deviceable,
                             IRepository <FareRule> repositoryFareRule,
                             IRepository <RangeTime> repositoryRangeTime,
                             ManualResetEvent manualResetEvent) : this(ledManager, fareRule, repositoryCarTypes, parkBoxOptions, repositoryCarPort, vehicleFlow, deviceable, repositoryFareRule, repositoryRangeTime, manualResetEvent)
        {
            var inTime = DateTime.Now;
            var list   = _vehicleFlow.LevenshteinDistance(parkBoxOptions.ParkId, carNumber);

            chargerViewModel.InTime    = chargerViewModel.OutTime = inTime;
            chargerViewModel.CarNumber = carNumber;
            CarOutModel = new CarOutModel()
            {
                CarInRecord = new CarInRecord()
                {
                    CarNumber = carNumber, InTime = inTime, ParkId = deviceable.EntranceDto.ParkLevel.Park.Id
                }, OutTime = inTime, ParkId = deviceable.EntranceDto.ParkLevel.Park.Id
            };
            AddMenu(list);
            txt_CarType.Text = "无在场记录,请匹配场内车辆";
        }
예제 #5
0
 private ChargerWindow(LedManager ledManager, FareRule fareRule,
                       IRepository <CarTypes, long> repositoryCarTypes,
                       IParkBoxOptions parkBoxOptions,
                       IRepository <CarPort, long> repositoryCarPort,
                       IVehicleFlow vehicleFlow,
                       IDeviceable device,
                       IRepository <FareRule> repositoryFareRule,
                       IRepository <RangeTime> repositoryRangeTime,
                       ManualResetEvent manualResetEvent)
 {
     InitializeComponent();
     _ledManager             = ledManager;
     OutOfferType            = OutOfferTypeEnum.NormalPass;
     FareRule                = fareRule;
     _repositoryCarTypes     = repositoryCarTypes;
     _parkBoxOptions         = parkBoxOptions;
     _repositoryCarPort      = repositoryCarPort;
     _vehicleFlow            = vehicleFlow;
     _repositoryFareRule     = repositoryFareRule;
     _repositoryRangeTime    = repositoryRangeTime;
     delayAction             = new DelayAction();
     chargerViewModel        = new ChargerViewModel();
     this.DataContext        = chargerViewModel;
     chargerViewModel.Remark = "正常缴费";
     _manualResetEvent       = manualResetEvent;
 }
예제 #6
0
 public CreatePnel(IParkBoxOptions parkBoxOptions)
 {
     _parkBoxOptions = parkBoxOptions;
     deviceInfoDtos  = _parkBoxOptions.DeciceInfos?.GroupBy(x => x.EntranceDto.Id).ToList();
     countEntrances  = deviceInfoDtos?.Count() ?? 0;
     Logger          = NullLogger.Instance;
 }
예제 #7
0
 public LoginWindow(LogInManager logInManager, UserManager userManager, IParkBoxOptions parkBoxOptions)
 {
     _userManager    = userManager;
     _logInManager   = logInManager;
     _parkBoxOptions = parkBoxOptions;
     DataContext     = this;
     InitializeComponent();
 }
예제 #8
0
        public CoverLayerWinform(DeviceInfoDto deviceInfoDto, IParkBoxOptions parkBoxOptions, ILogger logger, Action openRod, Action inOutAction)
        {
            InitializeComponent();
            _coverLayer            = new CoverLayer(deviceInfoDto, parkBoxOptions, logger, openRod, inOutAction);
            _coverLayer.Background = System.Windows.Media.Brushes.Transparent;

            elementHost.Dock  = DockStyle.Fill;
            elementHost.Child = _coverLayer;
            panel1.Controls.Add(elementHost);
            pictureBox1.BackgroundImageLayout = ImageLayout.Stretch;
            pictureBox1.SendToBack();
            //elementHost.Refresh();
        }
예제 #9
0
 public ChargerWindow(LedManager ledManager, CarOutModel carOutModel, FareRule fareRule, decimal receivable,
                      IRepository <CarTypes, long> repositoryCarTypes,
                      IParkBoxOptions parkBoxOptions,
                      IRepository <CarPort, long> repositoryCarPort,
                      IVehicleFlow vehicleFlow,
                      IDeviceable deviceable,
                      IRepository <FareRule> repositoryFareRule,
                      IRepository <RangeTime> repositoryRangeTime,
                      ManualResetEvent manualResetEvent) : this(ledManager, fareRule, repositoryCarTypes, parkBoxOptions, repositoryCarPort, vehicleFlow, deviceable, repositoryFareRule, repositoryRangeTime, manualResetEvent)
 {
     CarOutModel = carOutModel;
     SetUIModel(carOutModel, receivable);
 }
예제 #10
0
 public UserCard(IParkBoxOptions parkBoxOptions)
 {
     InitializeComponent();
     SynchronizationContext = DispatcherSynchronizationContext.Current;
     this.parkBoxOptions    = parkBoxOptions;
     loginTime  = DateTime.Now;
     onlineTime = new Timer(x =>
     {
         SynchronizationContext.Post(z =>
         {
             var time = DateTime.Now - loginTime;
             this.txt_OnlineTime.Text = time.Hours + "小时" + time.Minutes + "分";
         }, null);
     }, null, 1000, 60000);
     InitUserImge();
     SetUserInfo();
     this.txt_FeeMoney.Text = "0.00 元";
 }
예제 #11
0
        private async Task <ChargerWindow> GetChargerWindow(LedManager ledManager, CarOutModel carOutModel, FareRule fareRule, decimal receivable,
                                                            IRepository <CarTypes, long> repositoryCarTypes,
                                                            IParkBoxOptions parkBoxOptions,
                                                            IRepository <CarPort, long> repositoryCarPort,
                                                            IVehicleFlow vehicleFlow,
                                                            IDeviceable deviceable,
                                                            IRepository <FareRule> repositoryFareRule,
                                                            IRepository <RangeTime> repositoryRangeTime,
                                                            ManualResetEvent manualResetEvent)
        {
            ChargerWindow chargerWindow = null;
            await Application.Current.Dispatcher.BeginInvoke((Action)(() =>
            {
                chargerWindow = new ChargerWindow(ledManager, carOutModel, fareRule, receivable, repositoryCarTypes, parkBoxOptions, repositoryCarPort, vehicleFlow, deviceable, repositoryFareRule, repositoryRangeTime, manualResetEvent);
            }));

            return(chargerWindow);
        }
예제 #12
0
        public MainWindow(IParkBoxOptions parkBoxOptions, ICreatePnel createPnel,
                          IVehicleFlow vehicleFlow,
                          ICarNumberPermission carNumberPermission,
                          LedManager ledManager,
                          IRepository <CarTypes, long> repositoryCarType,
                          IRepository <FareRule> repositoryFareRule,
                          IRepository <RangeTime> repositoryRangeTime,
                          IRepository <BlackList, int> repositoryBlackList,
                          IRepository <CarPort, long> repositoryCarPort,
                          ParkMainControl parkMainControl)
        {
            InitializeComponent();
            DataContext          = this;
            this.parkBoxOptions  = parkBoxOptions;
            _createPnel          = createPnel;
            _vehicleFlow         = vehicleFlow;
            _carNumberPermission = carNumberPermission;
            _ledManager          = ledManager;
            var userCard = IocManager.Instance.Resolve <UserCard>();

            UserCard.Background = new SolidColorBrush(Colors.White);
            UserCard.Child      = userCard;

            _repositoryCarType   = repositoryCarType;
            _repositoryFareRule  = repositoryFareRule;
            _repositoryRangeTime = repositoryRangeTime;
            _repositoryBlackList = repositoryBlackList;
            _repositoryCarPort   = repositoryCarPort;
            _parkMainControl     = parkMainControl;

            IocManager.Instance.IocContainer.Register(
                Component.For <IManualEntryAndExit>().UsingFactoryMethod(() => this));
            //IocManager.Instance.IocContainer.Register(Component.For<TaskScheduler>().Instance(TaskScheduler.FromCurrentSynchronizationContext()).LifestyleSingleton());
            IocManager.Instance.IocContainer.Register(Component.For <SynchronizationContext>().Instance(base.SynchronizationContext).LifestyleSingleton());


            Title         = parkBoxOptions.ParkName;
            parkEntrances = _createPnel.CreatePnels(this.ContentCamera);
            parkBoxOptions.SetInfosDic = parkEntrances;
#if Release
            this.TopMost = true;
#endif
        }
예제 #13
0
        public ParkMainControl(IParkBoxOptions parkBoxOptions, IBoxMessage boxMessageable)
        {
            if (parkBoxOptions.DeciceInfos.Count == 0)
            {
                throw new UserFriendlyException("岗亭未绑定设备");
            }
            parkOptions         = parkBoxOptions;
            GetDeviceByDeviceId = (x) =>
            {
                return(parkBoxOptions.DeciceInfos.FirstOrDefault(y => y.Port == Convert.ToInt64(x)));
            };

            SDKCallBackAction = (x) =>
            {
                this.messageQueue.Enqueue(x);
            };
            this.boxMessageable = boxMessageable;
            InitAllQueue();
            StartReleasingMemory();
            StartThreads();
        }
예제 #14
0
 public ParkEntranceInfo(DeviceInfoDto deviceInfoDto, IParkBoxOptions parkBoxOptions, ILogger logger)
 {
     InitializeComponent();
     deviceInfo             = deviceInfoDto;
     _parkBoxOptions        = parkBoxOptions;
     _logger                = logger;
     _manualEntryAndExit    = IocManager.Instance.Resolve <IManualEntryAndExit>();
     synchronizationContext = SynchronizationContext.Current;
     if (_parkBoxOptions.IsListView)
     {
         //CoverLayerWinform coverLayer = new CoverLayerWinform(deviceInfo, parkBoxOptions, logger, async () => await OpenRod(), InOutAction);
         //coverLayer.Dock = System.Windows.Forms.DockStyle.Fill;
         //coverLayer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
         Grd_Left.Children.Remove(Cav_CoverLayer);
         //coverLayer.SetImage(_parkBoxOptions.DefultCarmeraImg);
         //host.Child = coverLayer;
     }
     else
     {
         // Grd_Left.Children.Remove(Cav_Winform);
         if (deviceInfo.EntranceDto.EntranceType == Enum.EntranceType.In)
         {
             TimeClock.Foreground    = new SolidColorBrush(Colors.Orange);
             EntranceName.Foreground = new SolidColorBrush(Colors.Orange);
         }
         else
         {
             TimeClock.Foreground    = new SolidColorBrush(Colors.Green);
             EntranceName.Foreground = new SolidColorBrush(Colors.Green);
         }
         if (deviceInfo.EntranceDto.EntranceType == Enum.EntranceType.Out)
         {
             this.btn_InOut.Content = "手工出场";
         }
         timer = new System.Threading.Timer(x =>
         {
             synchronizationContext.Post(z => this.TimeClock.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), null);
         }, null, 1000, 1000);
     }
 }
예제 #15
0
 public LedManager(IParkBoxOptions parkBoxOptions)
 {
     this.parkBoxOptions = parkBoxOptions;
     entranceLedCache    = new Dictionary <long, List <ILedable> >();
 }
예제 #16
0
        public static void MockDevices(this IParkBoxOptions parkBoxOptions)
        {
            List <DeviceInfoDto> deviceInfos = new List <DeviceInfoDto>()
            {
                new DeviceInfoDto()
                {
                    Ip = "1.1.1.1", DeviceType = Enum.DeviceType.Camera, Password = "******", UserName = "******", Port = 00001,
                    EquipmentManufacturers = Enum.EquipmentManufacturers.LanKa, EntranceDto = new Parks.Entrance.EntranceDto()
                    {
                        EntranceName = "入口", EntranceType = Enum.EntranceType.In, Id = 1, ParkLevel = new Level.Dto.ParkLevelDto()
                        {
                            Id   = 1, LevelName = "1", LevelNumber = 1,
                            Park = new ParkDto()
                            {
                                Id = 4, Name = "测试", Address = "测试", CarportCount = 100
                            }
                        }
                    }
                },
                new DeviceInfoDto()
                {
                    Ip = "1.1.1.2", DeviceType = Enum.DeviceType.Camera, Port = 00002, Password = "******", UserName = "******",
                    EquipmentManufacturers = Enum.EquipmentManufacturers.LanKa, EntranceDto = new Parks.Entrance.EntranceDto()
                    {
                        EntranceName = "出口", EntranceType = Enum.EntranceType.Out, Id = 2,
                        ParkLevel    = new Level.Dto.ParkLevelDto()
                        {
                            Id   = 1, LevelName = "1", LevelNumber = 1,
                            Park = new ParkDto()
                            {
                                Id = 4, Name = "测试", Address = "测试", CarportCount = 100
                            }
                        }
                    }
                },

                new DeviceInfoDto()
                {
                    Ip = "1.1.1.3", DeviceType = Enum.DeviceType.Camera, Port = 00003, Password = "******", UserName = "******",
                    EquipmentManufacturers = Enum.EquipmentManufacturers.LanKa, EntranceDto = new Parks.Entrance.EntranceDto()
                    {
                        EntranceName = "入口", EntranceType = Enum.EntranceType.In, Id = 3, ParkLevel = new Level.Dto.ParkLevelDto()
                        {
                            Id   = 1, LevelName = "1", LevelNumber = 1,
                            Park = new ParkDto()
                            {
                                Id = 4, Name = "测试", Address = "测试", CarportCount = 100
                            }
                        }
                    }
                },
                new DeviceInfoDto()
                {
                    Ip = "1.1.1.4", DeviceType = Enum.DeviceType.Camera, Port = 00004, Password = "******", UserName = "******",
                    EquipmentManufacturers = Enum.EquipmentManufacturers.LanKa, EntranceDto = new Parks.Entrance.EntranceDto()
                    {
                        EntranceName = "出口", EntranceType = Enum.EntranceType.Out, Id = 4,
                        ParkLevel    = new Level.Dto.ParkLevelDto()
                        {
                            Id   = 1, LevelName = "1", LevelNumber = 1,
                            Park = new ParkDto()
                            {
                                Id = 4, Name = "测试", Address = "测试", CarportCount = 100
                            }
                        }
                    }
                },


                new DeviceInfoDto()
                {
                    Ip = "1.1.1.4", DeviceType = Enum.DeviceType.Camera, Port = 00005, Password = "******", UserName = "******",
                    EquipmentManufacturers = Enum.EquipmentManufacturers.LanKa, EntranceDto = new Parks.Entrance.EntranceDto()
                    {
                        EntranceName = "出口", EntranceType = Enum.EntranceType.Out, Id = 5,
                        ParkLevel    = new Level.Dto.ParkLevelDto()
                        {
                            Id   = 1, LevelName = "1", LevelNumber = 1,
                            Park = new ParkDto()
                            {
                                Id = 4, Name = "测试", Address = "测试", CarportCount = 100
                            }
                        }
                    }
                }
            };

            parkBoxOptions.DeciceInfos = deviceInfos;

            parkBoxOptions.IsListView = false;

            parkBoxOptions.ParkName = "测试停车场";

            parkBoxOptions.ParkId = 4;

            parkBoxOptions.IsZeroMoneyOut = true;
            parkBoxOptions.TempCarTypeId  = 4;
        }