Exemple #1
0
        /// <summary>
        /// 当班统计
        /// </summary>
        public void Statistics_OnDuty(string ParkingID)
        {
            try
            {
                IParking                iparking               = ParkingFactory.GetFactory();
                IParkIORecord           iorecordfactory        = ParkIORecordFactory.GetFactory();
                IStatistics_Gather      gatherfactory          = Statistics_GatherFactory.GetFactory();
                IParkChangeshiftrecord  ichangeshift           = ParkChangeshiftrecordFactory.GetFactory();
                IParkOrder              iorder                 = ParkOrderFactory.GetFactory();
                IParkBox                iparkbox               = ParkBoxFactory.GetFactory();
                IStatistics_ChangeShift istatisticschangeshift = Statistics_ChangeShiftFactory.GetFactory();
                BaseParkinfo            parking                = iparking.QueryParkingByParkingID(ParkingID);
                List <ParkBox>          boxlist                = iparkbox.QueryByParkingID(parking.PKID);
                if (boxlist != null && boxlist.Count > 0)
                {
                    foreach (ParkBox box in boxlist)
                    {
                        List <ParkChangeshiftrecord> ondutys = ichangeshift.GetChangeShiftRecord(box.BoxID);
                        if (ondutys == null || ondutys.Count == 0)
                        {
                            continue;
                        }
                        foreach (ParkChangeshiftrecord onduty in ondutys)
                        {
                            Statistics_ChangeShift changeshift = new Statistics_ChangeShift
                            {
                                BoxID         = onduty.BoxID,
                                ParkingName   = parking.PKName,
                                StartWorkTime = onduty.StartWorkTime,
                                EndWorkTime   = onduty.EndWorkTime,
                                ParkingID     = parking.PKID,
                                AdminID       = onduty.UserID,
                                ChangeShiftID = onduty.RecordID
                            };
                            DateTime starttime = onduty.StartWorkTime;
                            DateTime endtime   = DateTime.Now;
                            if (onduty.EndWorkTime > DateTime.MinValue)
                            {
                                endtime = onduty.EndWorkTime;
                            }
                            //统计相关信息
                            //查询进场数
                            changeshift.Entrance_Count = iorecordfactory.EntranceCountByBox(box.BoxID, starttime, endtime);
                            //查询出场数
                            changeshift.Exit_Count = iorecordfactory.ExitCountByBox(box.BoxID, starttime, endtime);
                            #region 进场卡片类型
                            List <KeyValue> _InCardType = iorecordfactory.GetInCardTypeByBoxID(box.BoxID, starttime, endtime);
                            if (_InCardType != null && _InCardType.Count > 0)
                            {
                                foreach (var k in _InCardType)
                                {
                                    switch (k.KeyName)
                                    {
                                    case "0":
                                        changeshift.VIPCard = k.Key_Value;
                                        break;

                                    case "1":
                                        changeshift.StordCard = k.Key_Value;
                                        break;

                                    case "2":
                                        changeshift.MonthCard = k.Key_Value;
                                        break;

                                    case "3":
                                        changeshift.TempCard = k.Key_Value;
                                        break;

                                    case "4":
                                        changeshift.JobCard = k.Key_Value;
                                        break;

                                    default:
                                        break;
                                    }
                                }
                            }
                            #endregion

                            #region 统计放行类型
                            List <KeyValue> _ReleaseType = iorecordfactory.GetReleaseTypeByBox(box.BoxID, starttime, endtime);
                            if (_ReleaseType != null && _ReleaseType.Count > 0)
                            {
                                foreach (KeyValue k in _ReleaseType)
                                {
                                    switch (k.KeyName)
                                    {
                                    case "0":
                                        changeshift.ReleaseType_Normal = k.Key_Value;
                                        break;

                                    case "1":
                                        changeshift.ReleaseType_Charge = k.Key_Value;
                                        break;

                                    case "2":
                                        changeshift.ReleaseType_Free = k.Key_Value;
                                        break;

                                    case "3":
                                        changeshift.ReleaseType_Catch = k.Key_Value;
                                        break;
                                    }
                                }
                            }
                            #endregion

                            #region 统计费用相关
                            List <ParkOrder> _orderfee = iorder.GetOrdersByBoxID(parking.PKID, onduty.BoxID, starttime, endtime);
                            if (_orderfee != null && _orderfee.Count > 0)
                            {
                                foreach (ParkOrder o in _orderfee)
                                {
                                    changeshift.Receivable_Amount += o.Amount;
                                    changeshift.Diff_Amount       += o.UnPayAmount;
                                    changeshift.Real_Amount        = (changeshift.Receivable_Amount - changeshift.Diff_Amount);
                                    //支付方式(1.现金、2.微信、3.支付宝、4.网银、5.电子钱包、6.优免卷7.余额
                                    switch (o.PayWay)
                                    {
                                    case OrderPayWay.Cash:
                                        changeshift.Cash_Amount += o.PayAmount;
                                        changeshift.Cash_Count++;

                                        if (o.DiscountAmount > 0)
                                        {
                                            changeshift.CashDiscount_Amount += o.DiscountAmount;
                                            changeshift.CashDiscount_Count++;

                                            changeshift.Discount_Amount += o.DiscountAmount;
                                            changeshift.Discount_Count++;
                                        }
                                        break;

                                    case OrderPayWay.WeiXin:
                                    case OrderPayWay.Alipay:
                                    case OrderPayWay.OnlineBanking:
                                    case OrderPayWay.Wallet:
                                        changeshift.OnLine_Amount += o.PayAmount;
                                        changeshift.OnLine_Count++;

                                        if (o.DiscountAmount > 0)
                                        {
                                            changeshift.OnLineDiscount_Amount += o.DiscountAmount;
                                            changeshift.OnLineDiscount_Count++;

                                            changeshift.Discount_Amount += o.DiscountAmount;
                                            changeshift.Discount_Count++;
                                        }
                                        break;

                                    case OrderPayWay.PreferentialTicket:
                                        changeshift.Discount_Amount += o.DiscountAmount;
                                        changeshift.Discount_Count++;
                                        break;

                                    case OrderPayWay.ValueCard:
                                        changeshift.StordCard_Amount += o.PayAmount;
                                        changeshift.StordCard_Count++;
                                        break;
                                    }
                                    switch (o.OrderType)
                                    {
                                    //临时卡缴费
                                    case OrderType.TempCardPayment:
                                    case OrderType.AreaTempCardPayment:
                                        switch (o.PayWay)
                                        {
                                        case OrderPayWay.WeiXin:
                                        case OrderPayWay.Alipay:
                                        case OrderPayWay.OnlineBanking:
                                        case OrderPayWay.Wallet:
                                            changeshift.OnLineTemp_Amount += o.PayAmount;
                                            changeshift.OnLineTemp_Count++;
                                            break;

                                        default:
                                            changeshift.Temp_Amount += o.PayAmount;
                                            changeshift.Temp_Count++;
                                            break;
                                        }
                                        break;

                                    //月卡续期
                                    case OrderType.MonthCardPayment:
                                        switch (o.PayWay)
                                        {
                                        case OrderPayWay.WeiXin:
                                        case OrderPayWay.Alipay:
                                        case OrderPayWay.OnlineBanking:
                                        case OrderPayWay.Wallet:
                                            changeshift.OnLineMonthCardExtend_Amount += o.PayAmount;
                                            changeshift.OnLineMonthCardExtend_Count++;
                                            break;

                                        default:
                                            changeshift.MonthCardExtend_Amount += o.PayAmount;
                                            changeshift.MonthCardExtend_Count++;
                                            break;
                                        }
                                        break;

                                    //VIP卡续期
                                    case OrderType.VIPCardRenewal:
                                        changeshift.VIPExtend_Count++;
                                        break;

                                    //储值卡充值
                                    case OrderType.ValueCardRecharge:
                                        switch (o.PayWay)
                                        {
                                        case OrderPayWay.WeiXin:
                                        case OrderPayWay.Alipay:
                                        case OrderPayWay.OnlineBanking:
                                        case OrderPayWay.Wallet:
                                            changeshift.OnLineStordCard_Amount += o.PayAmount;
                                            changeshift.OnLineStordCard_Count++;
                                            break;

                                        default:
                                            changeshift.StordCardRecharge_Amount += o.PayAmount;
                                            changeshift.StordCardRecharge_Count++;
                                            break;
                                        }
                                        break;
                                    }
                                }
                            }
                            #endregion
                            using (DbOperator dboperator = ConnectionManager.CreateReadConnection())
                            {
                                try
                                {
                                    dboperator.BeginTransaction();
                                    istatisticschangeshift.Delete(onduty.RecordID, dboperator);
                                    istatisticschangeshift.Insert(changeshift, dboperator);
                                    dboperator.CommitTransaction();
                                }
                                catch (Exception ex)
                                {
                                    TxtLogServices.WriteTxtLog("添加当班信息异常 异常信息:{0}", ex.Message);
                                    dboperator.RollbackTransaction();
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                TxtLogServices.WriteTxtLog("当班统计异常 异常信息:{0}", ex.Message);
            }
        }
Exemple #2
0
        /// <summary>
        /// 添加当班统计记录
        /// </summary>
        /// <param name="changeshift">当班统计对象模型</param>
        /// <param name="db"></param>
        /// <returns></returns>
        public bool Insert(Statistics_ChangeShift changeshift, DbOperator db)
        {
            string strSql = string.Format(@"insert into Statistics_ChangeShift(ParkingID,ParkingName,BoxID,ChangeShiftID,AdminID,StartWorkTime,EndWorkTime,Receivable_Amount,
                                                        Real_Amount,Diff_Amount,Cash_Amount,Cash_Count,Temp_Amount,Temp_Count,OnLineTemp_Amount,OnLineTemp_Count,StordCard_Amount,
                                                        StordCard_Count,OnLine_Amount,OnLine_Count,Discount_Amount,Discount_Count,ReleaseType_Normal,ReleaseType_Charge,ReleaseType_Free,
                                                        ReleaseType_Catch,VIPExtend_Count,
                                                        Entrance_Count,Exit_Count,VIPCard,StordCard,MonthCard,JobCard,TempCard,OnLineMonthCardExtend_Count,OnLineMonthCardExtend_Amount,
                                                        MonthCardExtend_Count,MonthCardExtend_Amount,OnLineStordCard_Count,OnLineStordCard_Amount,StordCardRecharge_Count,
                                                        StordCardRecharge_Amount,CashDiscount_Count,CashDiscount_Amount,OnLineDiscount_Count,OnLineDiscount_Amount,HaveUpdate,LastUpdateTime)
                                                  values(@ParkingID,@ParkingName,@BoxID,@ChangeShiftID,@AdminID,@StartWorkTime,@EndWorkTime,@Receivable_Amount,
                                                        @Real_Amount,@Diff_Amount,@Cash_Amount,@Cash_Count,@Temp_Amount,@Temp_Count,@OnLineTemp_Amount,@OnLineTemp_Count,@StordCard_Amount,
                                                        @StordCard_Count,@OnLine_Amount,@OnLine_Count,@Discount_Amount,@Discount_Count,@ReleaseType_Normal,@ReleaseType_Charge,@ReleaseType_Free,
                                                        @ReleaseType_Catch,@VIPExtend_Count,
                                                        @Entrance_Count,@Exit_Count,@VIPCard,@StordCard,@MonthCard,@JobCard,@TempCard,@OnLineMonthCardExtend_Count,@OnLineMonthCardExtend_Amount,
                                                        @MonthCardExtend_Count,@MonthCardExtend_Amount,@OnLineStordCard_Count,@OnLineStordCard_Amount,@StordCardRecharge_Count,
                                                        @StordCardRecharge_Amount,@CashDiscount_Count,@CashDiscount_Amount,@OnLineDiscount_Count,@OnLineDiscount_Amount,1,getdate())");

            db.ClearParameters();
            db.AddParameter("@ParkingID", changeshift.ParkingID);
            db.AddParameter("@ParkingName", changeshift.ParkingName);
            db.AddParameter("@BoxID", changeshift.BoxID);
            db.AddParameter("@ChangeShiftID", changeshift.ChangeShiftID);
            db.AddParameter("@AdminID", changeshift.AdminID);
            db.AddParameter("@StartWorkTime", changeshift.StartWorkTime);
            db.AddParameter("@EndWorkTime", changeshift.EndWorkTime < new DateTime(2013, 1, 1) ? DateTime.MinValue : changeshift.EndWorkTime);
            db.AddParameter("@Receivable_Amount", changeshift.Receivable_Amount);
            db.AddParameter("@Real_Amount", changeshift.Real_Amount);
            db.AddParameter("@Diff_Amount", changeshift.Diff_Amount);
            db.AddParameter("@Cash_Amount", changeshift.Cash_Amount);
            db.AddParameter("@Cash_Count", changeshift.Cash_Count);
            db.AddParameter("@Temp_Amount", changeshift.Temp_Amount);
            db.AddParameter("@Temp_Count", changeshift.Temp_Count);
            db.AddParameter("@OnLineTemp_Amount", changeshift.OnLineTemp_Amount);
            db.AddParameter("@OnLineTemp_Count", changeshift.OnLineTemp_Count);
            db.AddParameter("@StordCard_Amount", changeshift.StordCard_Amount);
            db.AddParameter("@StordCard_Count", changeshift.StordCard_Count);
            db.AddParameter("@OnLine_Amount", changeshift.OnLine_Amount);
            db.AddParameter("@OnLine_Count", changeshift.OnLine_Count);
            db.AddParameter("@Discount_Amount", changeshift.Discount_Amount);
            db.AddParameter("@Discount_Count", changeshift.Discount_Count);
            db.AddParameter("@ReleaseType_Normal", changeshift.ReleaseType_Normal);
            db.AddParameter("@ReleaseType_Charge", changeshift.ReleaseType_Charge);
            db.AddParameter("@ReleaseType_Free", changeshift.ReleaseType_Free);
            db.AddParameter("@ReleaseType_Catch", changeshift.ReleaseType_Catch);
            db.AddParameter("@VIPExtend_Count", changeshift.VIPExtend_Count);
            db.AddParameter("@Entrance_Count", changeshift.Entrance_Count);
            db.AddParameter("@Exit_Count", changeshift.Exit_Count);
            db.AddParameter("@VIPCard", changeshift.VIPCard);
            db.AddParameter("@StordCard", changeshift.StordCard);
            db.AddParameter("@MonthCard", changeshift.MonthCard);
            db.AddParameter("@JobCard", changeshift.JobCard);
            db.AddParameter("@TempCard", changeshift.TempCard);
            db.AddParameter("@OnLineMonthCardExtend_Count", changeshift.OnLineMonthCardExtend_Count);
            db.AddParameter("@OnLineMonthCardExtend_Amount", changeshift.OnLineMonthCardExtend_Amount);
            db.AddParameter("@MonthCardExtend_Count", changeshift.MonthCardExtend_Count);
            db.AddParameter("@MonthCardExtend_Amount", changeshift.MonthCardExtend_Amount);
            db.AddParameter("@OnLineStordCard_Count", changeshift.OnLineStordCard_Count);
            db.AddParameter("@OnLineStordCard_Amount", changeshift.OnLineStordCard_Amount);
            db.AddParameter("@StordCardRecharge_Count", changeshift.StordCardRecharge_Count);
            db.AddParameter("@StordCardRecharge_Amount", changeshift.StordCardRecharge_Amount);
            db.AddParameter("@CashDiscount_Count", changeshift.CashDiscount_Count);
            db.AddParameter("@CashDiscount_Amount", changeshift.CashDiscount_Amount);
            db.AddParameter("@OnLineDiscount_Count", changeshift.OnLineDiscount_Count);
            db.AddParameter("@OnLineDiscount_Amount", changeshift.OnLineDiscount_Amount);
            return(db.ExecuteNonQuery(strSql) == 1 ? true : false);
        }