Beispiel #1
0
        /// <summary>
        /// 保存卡片以及嵌套车场进出事件
        /// </summary>
        /// <param name="card"></param>
        /// <param name="report"></param>
        /// <returns></returns>
        public CommandResult SaveCardAndNestedEvent(CardInfo card, CardEventReport report)
        {
            //内嵌车场事件只改变卡片的停车状态

            IUnitWork unitWork = ProviderFactory.Create <IUnitWork>(_RepoUri);
            CardInfo  info     = card.Clone();

            //卡片状态保持用数据库中的状态
            info.ParkingStatus = report.ParkingStatus;
            if (!report.IsExitEvent)
            {
                info.LastNestParkDateTime = report.EventDateTime;                       //如果是入场事件,则更新卡片的最后进入内车场时间
            }
            _Provider.Update(info, card, unitWork);

            ICardEventProvider icp = ProviderFactory.Create <ICardEventProvider>(_RepoUri);

            if (report.IsExitEvent) //如果是入内车场,则不记录最后刷卡时间,如果是出内车场,则保存上次时间
            {
                report.LastDateTime = card.LastNestParkDateTime;
            }
            else
            {
                report.LastDateTime = null;
            }
            icp.Insert((new CardEventRecord(report)), unitWork);
            CommandResult ret = unitWork.Commit();

            if (ret.Result == ResultCode.Successful) //如果成功,则改变卡片状态
            {
                //卡片状态保持用数据库中的状态
                card.ParkingStatus = report.ParkingStatus;
            }
            return(ret);
        }
Beispiel #2
0
        /// <summary>
        /// 保存卡片与卡片事件信息(用于停车场产生事件时更新卡片状态并保存事件)
        /// </summary>
        /// <param name="card"></param>
        /// <param name="report"></param>
        /// <returns></returns>
        public CommandResult SaveCardAndEvent(CardInfo card, CardEventReport report)
        {
            IUnitWork unitWork = ProviderFactory.Create <IUnitWork>(_RepoUri);

            if (card.CardType == CardType.Ticket && report.IsExitEvent)  ////纸票出场后将其删除
            {
                _Provider.Delete(card, unitWork);
            }
            else
            {
                CardInfo info = card.Clone();
                //卡片状态保持用数据库中的状态
                info.ParkingStatus = report.ParkingStatus;
                info.LastDateTime  = report.EventDateTime;
                info.LastEntrance  = report.EntranceID;
                info.LastCarPlate  = report.CarPlate;
                if (report.LimitationRemain != info.LimitationRemain)
                {
                    info.LimitationRemain    = report.LimitationRemain;
                    info.LimitationTimestamp = report.EventDateTime;
                }
                //入口刷卡事件时,将缴费时间,停车费用,累计停车费用清空
                if (!report.IsExitEvent)
                {
                    info.ClearPaidData();
                }
                _Provider.Update(info, card, unitWork);
            }
            ICardEventProvider icp = ProviderFactory.Create <ICardEventProvider>(_RepoUri);

            icp.Insert((new CardEventRecord(report)), unitWork);

            if (report.IsExitEvent && report.Limitation > 0) //出场事件且有限时停车的记录才要记录到上传表中。
            {
                ECardRecord ecr = new ECardRecord()
                {
                    SheetID          = card.SheetID,
                    Carplate         = report.CarPlate,
                    CardID           = report.CardID,
                    EventDt          = report.EventDateTime,
                    EnterDt          = report.LastDateTime,
                    Limitation       = report.Limitation,
                    LimitationRemain = report.LimitationRemain
                };
                IECardRecordProvider iecr = ProviderFactory.Create <IECardRecordProvider>(_RepoUri);
                iecr.Insert(ecr, unitWork);
            }
            CommandResult ret = unitWork.Commit();

            if (ret.Result == ResultCode.Successful) //如果成功,则改变卡片状态
            {
                //卡片状态保持用数据库中的状态
                card.ParkingStatus    = report.ParkingStatus;
                card.LastDateTime     = report.EventDateTime;
                card.LastEntrance     = report.EntranceID;
                card.LastCarPlate     = report.CarPlate;
                card.LimitationRemain = report.LimitationRemain;
                //入口刷卡事件时,将缴费时间,停车费用,累计停车费用清空
                if (!report.IsExitEvent)
                {
                    card.ClearPaidData();
                }
            }
            return(ret);
        }
Beispiel #3
0
        /// <summary>
        /// 获取车牌号码所在停车场
        /// </summary>
        /// <param name="carPlate"></param>
        /// <returns></returns>
        public QueryResult <ParkInfo> GetParkInfoCarPlate(string carPlate)
        {
            QueryResult <ParkInfo> result = new QueryResult <ParkInfo>(ResultCode.Fail, null);

            //先根据车牌查找卡片
            ICardProvider       cardProvider  = ProviderFactory.Create <ICardProvider>(this._repoUri);
            CardSearchCondition cardCondition = new CardSearchCondition();

            cardCondition.CarPlateOrLast = carPlate;

            QueryResultList <CardInfo> cardResult = cardProvider.GetItems(cardCondition);

            if (cardResult.Result == ResultCode.Successful)
            {
                CardInfo card = null;

                if (cardResult.QueryObjects != null && cardResult.QueryObjects.Count > 0)
                {
                    //查找第一个符合条件的已入场卡片
                    card = cardResult.QueryObjects.FirstOrDefault(c => c.IsInPark);
                }

                if (card == null)
                {
                    result = new QueryResult <ParkInfo>(ResultCode.NoRecord, null);
                }
                else
                {
                    //根据卡号和入场时间查找入场事件
                    ICardEventProvider       eventProvider  = ProviderFactory.Create <ICardEventProvider>(this._repoUri);
                    CardEventSearchCondition eventCondition = new CardEventSearchCondition();
                    eventCondition.RecordDateTimeRange = new DateTimeRange(card.LastDateTime, card.LastDateTime);
                    eventCondition.CardID         = card.CardID;
                    eventCondition.OnlyEnterEvent = true;

                    QueryResultList <CardEventRecord> eventResult = eventProvider.GetItems(eventCondition);
                    if (eventResult.Result == ResultCode.Successful)
                    {
                        CardEventRecord eventRecord = null;
                        if (eventResult.QueryObjects != null && eventResult.QueryObjects.Count > 0)
                        {
                            //查找到多条记录时,取第一条记录
                            eventRecord = eventResult.QueryObjects[0];
                        }
                        if (eventRecord == null)
                        {
                            result = new QueryResult <ParkInfo>(ResultCode.NoRecord, null);
                        }
                        else
                        {
                            ParkInfo park = provider.GetByID(eventRecord.ParkID).QueryObject;
                            if (park == null)
                            {
                                result = new QueryResult <ParkInfo>(ResultCode.NoRecord, null);
                            }
                            else
                            {
                                result = new QueryResult <ParkInfo>(ResultCode.Successful, park);
                            }
                        }
                    }
                }
            }
            return(result);
        }
Beispiel #4
0
        /// <summary>
        /// 操作员结算
        /// </summary>
        /// <param name="opt"></param>
        /// <returns></returns>
        public CommandResult Settle(OperatorSettleLog opt)
        {
            IUnitWork            unitWork = ProviderFactory.Create <IUnitWork>(_RepoUri);
            IOperatorLogProvider ip       = ProviderFactory.Create <IOperatorLogProvider>(_RepoUri);

            ip.Insert(opt, unitWork);

            if (opt.PaymentRecords != null && opt.PaymentRecords.Count > 0)
            {
                ICardPaymentRecordProvider provider = ProviderFactory.Create <ICardPaymentRecordProvider>(_RepoUri);
                foreach (CardPaymentInfo record in opt.PaymentRecords)
                {
                    CardPaymentInfo original = record.Clone();
                    record.SettleDateTime = opt.SettleDateTime;
                    provider.Update(record, original, unitWork);
                }
            }
            if (opt.ReleaseRecords != null && opt.ReleaseRecords.Count > 0)
            {
                ICardReleaseRecordProvider provider = ProviderFactory.Create <ICardReleaseRecordProvider>(_RepoUri);
                foreach (CardReleaseRecord record in opt.ReleaseRecords)
                {
                    CardReleaseRecord original = record.Clone();
                    record.SettleDateTime = opt.SettleDateTime;
                    provider.Update(record, original, unitWork);
                }
            }
            if (opt.ChargeRecords != null && opt.ChargeRecords.Count > 0)
            {
                ICardChargeRecordProvider provider = ProviderFactory.Create <ICardChargeRecordProvider>(_RepoUri);
                foreach (CardChargeRecord record in opt.ChargeRecords)
                {
                    CardChargeRecord original = record.Clone();
                    record.SettleDateTime = opt.SettleDateTime;
                    provider.Update(record, original, unitWork);
                }
            }
            if (opt.DeferRecords != null && opt.DeferRecords.Count > 0)
            {
                ICardDeferRecordProvider provider = ProviderFactory.Create <ICardDeferRecordProvider>(_RepoUri);
                foreach (CardDeferRecord record in opt.DeferRecords)
                {
                    CardDeferRecord original = record.Clone();
                    record.SettleDateTime = opt.SettleDateTime;
                    provider.Update(record, original, unitWork);
                }
            }
            if (opt.CardLostRecords != null && opt.CardLostRecords.Count > 0)
            {
                ICardLostRestoreRecordProvider provider = ProviderFactory.Create <ICardLostRestoreRecordProvider>(_RepoUri);
                foreach (CardLostRestoreRecord record in opt.CardLostRecords)
                {
                    CardLostRestoreRecord original = record.Clone();
                    record.SettleDateTime = opt.SettleDateTime;
                    provider.Update(record, original, unitWork);
                }
            }
            if (opt.RecycleRecords != null && opt.RecycleRecords.Count > 0)
            {
                ICardRecycleRecordProvider provider = ProviderFactory.Create <ICardRecycleRecordProvider>(_RepoUri);
                foreach (CardRecycleRecord record in opt.RecycleRecords)
                {
                    CardRecycleRecord original = record.Clone();
                    record.SettleDateTime = opt.SettleDateTime;
                    provider.Update(record, original, unitWork);
                }
            }
            if (opt.EventRecords != null && opt.EventRecords.Count > 0)
            {
                ICardEventProvider provider = ProviderFactory.Create <ICardEventProvider>(_RepoUri);
                foreach (CardEventRecord record in opt.EventRecords)
                {
                    CardEventRecord original = record.Clone();
                    record.SettleDateTime = opt.SettleDateTime;
                    provider.Update(record, original, unitWork);
                }
            }
            if (opt.AlarmRecords != null && opt.AlarmRecords.Count > 0)
            {
                IAlarmProvider provider = ProviderFactory.Create <IAlarmProvider>(_RepoUri);
                foreach (AlarmInfo record in opt.AlarmRecords)
                {
                    AlarmInfo original = record.Clone();
                    record.SettleDateTime = opt.SettleDateTime;
                    provider.Update(record, original, unitWork);
                }
            }
            return(unitWork.Commit());
        }
        public void CreateProvider()
        {
            IAlarmProvider p1 = ProviderFactory.Create <IAlarmProvider>(connStr);

            Assert.IsTrue(p1 != null);

            ICardChargeRecordProvider p2 = ProviderFactory.Create <ICardChargeRecordProvider>(connStr);

            Assert.IsTrue(p2 != null);

            ICardDeferRecordProvider p3 = ProviderFactory.Create <ICardDeferRecordProvider>(connStr);

            Assert.IsTrue(p3 != null);

            ICardDisableEnableRecordProvider p4 = ProviderFactory.Create <ICardDisableEnableRecordProvider>(connStr);

            Assert.IsTrue(p4 != null);

            ICardEventProvider p5 = ProviderFactory.Create <ICardEventProvider>(connStr);

            Assert.IsTrue(p5 != null);

            ICardLostRestoreRecordProvider p6 = ProviderFactory.Create <ICardLostRestoreRecordProvider>(connStr);

            Assert.IsTrue(p6 != null);

            ICardProvider p9 = ProviderFactory.Create <ICardProvider>(connStr);

            Assert.IsTrue(p9 != null);

            ICardRecycleRecordProvider p10 = ProviderFactory.Create <ICardRecycleRecordProvider>(connStr);

            Assert.IsTrue(p10 != null);

            ICardReleaseRecordProvider p11 = ProviderFactory.Create <ICardReleaseRecordProvider>(connStr);

            Assert.IsTrue(p11 != null);

            IEntranceProvider p12 = ProviderFactory.Create <IEntranceProvider>(connStr);

            Assert.IsTrue(p12 != null);

            IOperatorLogProvider p13 = ProviderFactory.Create <IOperatorLogProvider>(connStr);

            Assert.IsTrue(p13 != null);

            IOperatorProvider p14 = ProviderFactory.Create <IOperatorProvider>(connStr);

            Assert.IsTrue(p14 != null);

            IParkProvider p16 = ProviderFactory.Create <IParkProvider>(connStr);

            Assert.IsTrue(p16 != null);

            IRoleProvider p17 = ProviderFactory.Create <IRoleProvider>(connStr);

            Assert.IsTrue(p17 != null);

            ISnapShotProvider p18 = ProviderFactory.Create <ISnapShotProvider>(connStr);

            Assert.IsTrue(p18 != null);

            ISysParameterProvider p19 = ProviderFactory.Create <ISysParameterProvider>(connStr);

            Assert.IsTrue(p19 != null);

            IVideoSourceProvider p21 = ProviderFactory.Create <IVideoSourceProvider>(connStr);

            Assert.IsTrue(p21 != null);

            IWaitingCommandProvider p24 = ProviderFactory.Create <IWaitingCommandProvider>(connStr);

            Assert.IsTrue(p24 != null);

            IWorkstationProvider p25 = ProviderFactory.Create <IWorkstationProvider>(connStr);

            Assert.IsTrue(p25 != null);
        }