Exemplo n.º 1
0
        public static bool Update(ParkFeeRule model)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }

            ParkArea parkArea = ParkAreaServices.QueryByRecordId(model.AreaID);

            if (parkArea == null)
            {
                throw new MyException("获取区域信息失败");
            }

            IParkFeeRule factory = ParkFeeRuleFactory.GetFactory();

            if (model.IsOffline)
            {
                List <ParkFeeRule> models = factory.QueryParkFeeRuleByParkingId(parkArea.PKID);
                if (models.Exists(p => p.IsOffline == true && p.FeeRuleID != model.FeeRuleID))
                {
                    throw new MyException("该车场已存在脱机收费规则了");
                }
            }
            model.ParkFeeRuleDetails.ForEach(p => { p.RuleDetailID = GuidGenerator.GetGuid().ToString(); p.RuleID = model.FeeRuleID; });
            bool result = factory.Update(model);

            if (result)
            {
                OperateLogServices.AddOperateLog <ParkFeeRule>(model, OperateType.Update);
            }
            return(result);
        }
Exemplo n.º 2
0
 public bool Add(ParkFeeRule model)
 {
     using (DbOperator dbOperator = ConnectionManager.CreateConnection())
     {
         try
         {
             dbOperator.BeginTransaction();
             bool result = AddFeeRule(model, dbOperator);
             if (!result)
             {
                 throw new MyException("添加收费规则失败");
             }
             result = AddFeeRuleDetails(model.ParkFeeRuleDetails, dbOperator);
             if (!result)
             {
                 throw new MyException("添加收费规则明细失败");
             }
             dbOperator.CommitTransaction();
             return(true);
         }
         catch
         {
             dbOperator.RollbackTransaction();
             throw;
         }
     }
 }
Exemplo n.º 3
0
        public ParkFeeRuleView ToParkFeeRuleView(ParkFeeRule rule, List <ParkArea> areas, List <ParkCarType> carTyeps, List <ParkCarModel> carModels)
        {
            this.AreaID = rule.AreaID;
            ParkArea area = areas.FirstOrDefault(p => p.AreaID == rule.AreaID);

            if (area != null)
            {
                this.AreaName = area.AreaName;
            }
            this.CarTypeID = rule.CarTypeID;
            ParkCarType card = carTyeps.FirstOrDefault(p => p.CarTypeID == rule.CarTypeID);

            if (card != null)
            {
                this.CarTypeName = card.CarTypeName;
            }
            this.CarModelID = rule.CarModelID;
            ParkCarModel carModel = carModels.FirstOrDefault(p => p.CarModelID == rule.CarModelID);

            if (carModel != null)
            {
                this.CarModelName = carModel.CarModelName;
            }
            this.RuleName       = rule.RuleName;
            this.FeeRuleID      = rule.FeeRuleID;
            this.FeeType        = rule.FeeType;
            this.RuleText       = rule.RuleText;
            this.FeeTypeName    = ((FeeType)rule.FeeType).GetDescription();
            this.LastUpdateTime = rule.LastUpdateTime;
            this.IsOffline      = rule.IsOffline;
            FillParkFeeRuleDetail(rule.ParkFeeRuleDetails);
            return(this);
        }
Exemplo n.º 4
0
        public JsonResult SaveEdit(ParkFeeRuleView model)
        {
            try
            {
                ParkFeeRule ruleModel = model.ToParkFeeRule();
                bool        result    = false;
                if (string.IsNullOrWhiteSpace(model.FeeRuleID))
                {
                    var parkingFeeRules = ParkFeeRuleServices.QueryFeeRules(model.ParkingID, model.CarTypeID, model.CarModelID);
                    if (parkingFeeRules != null && parkingFeeRules.Count > 0 && parkingFeeRules.Exists(p => p.AreaID == model.AreaID))
                    {
                        throw new MyException("该区域已经存在相同的收费规则了");
                    }
                    result = ParkFeeRuleServices.Add(ruleModel);
                    if (!result)
                    {
                        throw new MyException("添加收费规则失败");
                    }
                }
                else
                {
                    var parkingFeeRules = ParkFeeRuleServices.QueryFeeRules(model.ParkingID, model.CarTypeID, model.CarModelID);
                    if (parkingFeeRules != null && parkingFeeRules.Count > 0 &&
                        parkingFeeRules.Exists(p => p.AreaID == model.AreaID && p.FeeRuleID != model.FeeRuleID))
                    {
                        throw new MyException("该区域已经存在相同的收费规则了!");
                    }

                    result = ParkFeeRuleServices.Update(ruleModel);
                    if (!result)
                    {
                        throw new MyException("修改收费规则失败");
                    }
                }
                return(Json(MyResult.Success()));
            }
            catch (MyException ex)
            {
                return(Json(MyResult.Error(ex.Message)));
            }
            catch (Exception ex)
            {
                ExceptionsServices.AddExceptions(ex, "收费规则管理设置收费规则失败");
                return(Json(MyResult.Error("设置收费规则失败")));
            }
        }
Exemplo n.º 5
0
        private bool UpdateFeeRule(ParkFeeRule model, DbOperator dbOperator)
        {
            model.LastUpdateTime = DateTime.Now;
            model.HaveUpdate     = SystemDefaultConfig.DataUpdateFlag;

            StringBuilder strSql = new StringBuilder();

            strSql.Append("update ParkFeeRule set RuleName=@RuleName,FeeType=@FeeType,CarTypeID=@CarTypeID,CarModelID=@CarModelID,AreaID=@AreaID");
            strSql.Append(" ,RuleText=@RuleText,LastUpdateTime=@LastUpdateTime,HaveUpdate=@HaveUpdate,IsOffline=@IsOffline where FeeRuleID=@FeeRuleID");
            dbOperator.ClearParameters();
            dbOperator.AddParameter("FeeRuleID", model.FeeRuleID);
            dbOperator.AddParameter("RuleName", model.RuleName);
            dbOperator.AddParameter("FeeType", (int)model.FeeType);
            dbOperator.AddParameter("CarTypeID", model.CarTypeID);
            dbOperator.AddParameter("CarModelID", model.CarModelID);
            dbOperator.AddParameter("AreaID", model.AreaID);
            dbOperator.AddParameter("RuleText", model.RuleText);
            dbOperator.AddParameter("LastUpdateTime", model.LastUpdateTime);
            dbOperator.AddParameter("HaveUpdate", model.HaveUpdate);
            dbOperator.AddParameter("IsOffline", model.IsOffline);
            return(dbOperator.ExecuteNonQuery(strSql.ToString()) > 0);
        }
Exemplo n.º 6
0
        public ParkFeeRule ToParkFeeRule()
        {
            ParkFeeRule rule = new ParkFeeRule();

            rule.FeeRuleID  = this.FeeRuleID;
            rule.AreaID     = this.AreaID;
            rule.RuleName   = this.RuleName;
            rule.FeeType    = this.FeeType;
            rule.CarTypeID  = this.CarTypeID;
            rule.CarModelID = this.CarModelID;
            rule.RuleText   = this.RuleText;
            rule.IsOffline  = this.IsOffline;
            List <ParkFeeRuleDetail> details = new List <ParkFeeRuleDetail>();

            details.Add(GetFirstFeeRuleDetail());
            if (this.FeeType == FeeType.DayAndNight)
            {
                details.Add(GetLastFeeRuleDetail());
            }
            rule.ParkFeeRuleDetails = details;
            return(rule);
        }
Exemplo n.º 7
0
        private bool AddFeeRule(ParkFeeRule model, DbOperator dbOperator)
        {
            model.DataStatus     = DataStatus.Normal;
            model.LastUpdateTime = DateTime.Now;
            model.HaveUpdate     = SystemDefaultConfig.DataUpdateFlag;

            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into ParkFeeRule(FeeRuleID,RuleName,FeeType,CarTypeID,CarModelID,AreaID,LastUpdateTime,HaveUpdate,DataStatus,RuleText,IsOffline)");
            strSql.Append(" values(@FeeRuleID,@RuleName,@FeeType,@CarTypeID,@CarModelID,@AreaID,@LastUpdateTime,@HaveUpdate,@DataStatus,@RuleText,@IsOffline)");
            dbOperator.ClearParameters();
            dbOperator.AddParameter("FeeRuleID", model.FeeRuleID);
            dbOperator.AddParameter("RuleName", model.RuleName);
            dbOperator.AddParameter("FeeType", (int)model.FeeType);
            dbOperator.AddParameter("CarTypeID", model.CarTypeID);
            dbOperator.AddParameter("CarModelID", model.CarModelID);
            dbOperator.AddParameter("AreaID", model.AreaID);
            dbOperator.AddParameter("RuleText", model.RuleText);
            dbOperator.AddParameter("LastUpdateTime", model.LastUpdateTime);
            dbOperator.AddParameter("HaveUpdate", model.HaveUpdate);
            dbOperator.AddParameter("DataStatus", (int)model.DataStatus);
            dbOperator.AddParameter("IsOffline", model.IsOffline);
            return(dbOperator.ExecuteNonQuery(strSql.ToString()) > 0);
        }
Exemplo n.º 8
0
        public static decimal TestCalculateFee(DateTime startTime, DateTime endTime, string feeRuleId)
        {
            IParkFeeRule factory = ParkFeeRuleFactory.GetFactory();
            ParkFeeRule  rule    = factory.QueryParkFeeRuleByFeeRuleId(feeRuleId);

            if (rule == null)
            {
                throw new MyException("获取规则失败");
            }

            switch (rule.FeeType)
            {
            case FeeType.DayAndNight: {
                IFeeRule IFee = new DayNight();
                IFee.ParkingBeginTime = startTime;
                IFee.ParkingEndTime   = endTime;
                IFee.FeeRule          = rule;
                IFee.listRuleDetail   = rule.ParkFeeRuleDetails;
                return(IFee.CalcFee());
            }

            case FeeType.Hour12:
            {
                IFeeRule IFee = new Hours12();
                IFee.ParkingBeginTime = startTime;
                IFee.ParkingEndTime   = endTime;
                IFee.FeeRule          = rule;
                IFee.listRuleDetail   = rule.ParkFeeRuleDetails;
                return(IFee.CalcFee());
            }

            case FeeType.Hour24:
            {
                IFeeRule IFee = new Hours24();
                IFee.ParkingBeginTime = startTime;
                IFee.ParkingEndTime   = endTime;
                IFee.FeeRule          = rule;
                IFee.listRuleDetail   = rule.ParkFeeRuleDetails;
                return(IFee.CalcFee());
            }

            case FeeType.NaturalDay:
            {
                IFeeRule IFee = new NaturalDay();
                IFee.ParkingBeginTime = startTime;
                IFee.ParkingEndTime   = endTime;
                IFee.FeeRule          = rule;
                IFee.listRuleDetail   = rule.ParkFeeRuleDetails;
                return(IFee.CalcFee());
            }

            case FeeType.Custom:
            {
                IFeeRule IFee = new Userdefined2();
                IFee.ParkingBeginTime = startTime;
                IFee.ParkingEndTime   = endTime;
                IFee.FeeRule          = rule;
                IFee.FeeText          = rule.RuleText;
                return(IFee.CalcFee());
            }

            default: throw new MyException("算费规则不存在");
            }
        }