コード例 #1
0
        public static bool AddOrUpdate(WX_OtherConfig model)
        {
            IWXOtherConfig factory  = WXOtherConfigFactory.GetFactory();
            WX_OtherConfig dbConfig = factory.QueryByConfigType(model.CompanyID, model.ConfigType);

            if (dbConfig != null)
            {
                bool result = factory.Update(model);
                if (result)
                {
                    OperateLogServices.AddOperateLog <WX_OtherConfig>(model, OperateType.Update);
                }
                return(result);
            }
            bool addResult = factory.Create(model);

            if (addResult)
            {
                OperateLogServices.AddOperateLog <WX_OtherConfig>(model, OperateType.Add);
            }
            return(addResult);
        }
コード例 #2
0
        public static bool Update(ParkDerateConfig model)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }
            IParkDerateConfig       factory = ParkDerateConfigFactory.GetFactory();
            List <ParkDerateConfig> configs = factory.QueryByParkingId(model.PKID);

            configs = configs.Where(p => p.RecordID != model.RecordID && ((p.ConsumeStartAmount <= model.ConsumeStartAmount && p.ConsumeEndAmount >= model.ConsumeStartAmount) ||
                                                                          (p.ConsumeStartAmount <= model.ConsumeEndAmount && p.ConsumeEndAmount >= model.ConsumeEndAmount))).ToList();
            if (configs.Count > 0)
            {
                throw new MyException("消费金额重复");
            }
            bool result = factory.Update(model);

            if (result)
            {
                OperateLogServices.AddOperateLog <ParkDerateConfig>(model, OperateType.Update);
            }
            return(result);
        }
コード例 #3
0
        public static bool Delete(string companyId, int menuId)
        {
            if (menuId < 1)
            {
                throw new ArgumentNullException("menuId");
            }

            IWXMenu        factory = WXMenuFactory.GetFactory();
            List <WX_Menu> models  = factory.GetMenus(companyId);
            WX_Menu        model   = models.FirstOrDefault(p => p.ID == menuId);

            if (model != null && models.Count(p => p.MasterID == menuId) > 0)
            {
                throw new MyException("请先删除该菜单下的二级菜单");
            }
            bool result = factory.Delete(menuId);

            if (result)
            {
                OperateLogServices.AddOperateLog(string.Format("删除菜单编号为:{0}菜单", menuId), OperateType.Update);
            }
            return(result);
        }
コード例 #4
0
        public static bool Add(ParkSeller model)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }

            IParkSeller factory = ParkSellerFactory.GetFactory();

            model.SellerID = GuidGenerator.GetGuid().ToString();
            ParkSeller dbModel = factory.QueryBySellerNo(model.SellerNo);

            if (dbModel != null)
            {
                throw new MyException("商家编号重复");
            }
            bool result = factory.Add(model);

            if (result)
            {
                OperateLogServices.AddOperateLog <ParkSeller>(model, OperateType.Add);
            }
            return(result);
        }
コード例 #5
0
        public static bool Payment(string ioRecordId, string parkingId, ResultAgs billResult, string operatorId)
        {
            if (billResult == null)
            {
                throw new MyException("获取缴费信息失败");
            }
            if (billResult.FeeRule == null)
            {
                throw new MyException("获取收费规则失败");
            }
            if (billResult.Rate == null)
            {
                throw new MyException("获取缴费金额失败");
            }
            using (DbOperator dbOperator = ConnectionManager.CreateConnection())
            {
                try
                {
                    dbOperator.BeginTransaction();
                    List <string> carderateIds           = new List <string>();
                    Dictionary <string, decimal> sellers = new Dictionary <string, decimal>();
                    if (billResult.Carderates != null && billResult.Carderates.Count > 0)
                    {
                        carderateIds = billResult.Carderates.Select(p => p.CarDerateID).ToList();
                        foreach (var item in billResult.Carderates)
                        {
                            if (sellers.ContainsKey(item.Derate.SellerID))
                            {
                                sellers[item.Derate.SellerID] = sellers[item.Derate.SellerID] + item.FreeMoney;
                                continue;
                            }
                            sellers.Add(item.Derate.SellerID, item.FreeMoney);
                        }
                    }
                    RateInfo  rate  = billResult.Rate;
                    ParkOrder order = ParkOrderServices.AddCentralFeeOrder(parkingId, ioRecordId, rate.Amount, rate.UnPayAmount, rate.DiscountAmount, carderateIds, billResult.FeeRule.FeeRuleID, rate.CashTime, rate.CashMoney, operatorId, dbOperator);
                    if (order == null)
                    {
                        throw new MyException("创建缴费订单失败");
                    }
                    if (carderateIds.Count > 0)
                    {
                        IParkSeller factory = ParkSellerFactory.GetFactory();
                        factory.UpdateParkCarDerateStatus(carderateIds, 2, dbOperator);

                        foreach (var item in sellers)
                        {
                            bool result = factory.SellerDebit(item.Key, item.Value, dbOperator);
                            if (!result)
                            {
                                throw new MyException("商家扣款失败");
                            }
                        }
                    }
                    dbOperator.CommitTransaction();

                    OperateLogServices.AddOperateLog(OperateType.Other, string.Format("中央收费,ioRecordId:{0},parkingId:{1},operatorId:{2},收费金额:{3},优惠金额:{4}", ioRecordId, parkingId, operatorId, rate.UnPayAmount, rate.DiscountAmount));
                }
                catch
                {
                    dbOperator.RollbackTransaction();
                    throw;
                }
            }
            return(true);
        }
コード例 #6
0
        /// <summary>
        /// 审核通过
        /// </summary>
        /// <param name="recordId"></param>
        /// <returns></returns>
        public static bool Passed(string RecordID, string AuditRemark, string CarTypeID, string CarModelID, string AreaIDS, string GateID, string OperatorId)
        {
            if (string.IsNullOrWhiteSpace(CarTypeID))
            {
                throw new MyException("获取车类失败");
            }
            if (string.IsNullOrWhiteSpace(CarModelID))
            {
                throw new MyException("获取车型失败");
            }

            ParkMonthlyCarApply monthlyCarApply = ParkMonthlyCarApplyServices.QueryByRecordID(RecordID);

            if (monthlyCarApply == null)
            {
                throw new MyException("该申请不存在");
            }
            if (monthlyCarApply.ApplyStatus != MonthlyCarApplyStatus.Applying)
            {
                throw new MyException("该申请是申请中状态");
            }
            monthlyCarApply.CarModelID  = CarModelID;
            monthlyCarApply.CarTypeID   = CarTypeID;
            monthlyCarApply.AuditRemark = AuditRemark;

            BaseParkinfo parking = ParkingServices.QueryParkingByParkingID(monthlyCarApply.PKID);

            if (parking == null)
            {
                throw new MyException("车场信息不存在");
            }

            BaseEmployee  employee  = GenerateBaseEmployeeModel(parking.VID, monthlyCarApply.ApplyName, monthlyCarApply.ApplyMoblie, monthlyCarApply.FamilyAddress);
            EmployeePlate plate     = GenerateEmployeePlateModel(employee, parking.VID, monthlyCarApply.PlateNo);
            BaseCard      card      = GenerateCardModel(parking, employee, plate, OperatorId);
            ParkGrant     parkGrant = GenerateParkGrantModel(parking, plate, card, monthlyCarApply.PKLot, monthlyCarApply.CarModelID, monthlyCarApply.CarTypeID, AreaIDS, GateID);

            using (DbOperator dbOperator = ConnectionManager.CreateConnection())
            {
                try
                {
                    dbOperator.BeginTransaction();
                    bool result = ParkGrantServices.Add(employee, plate, card, parkGrant, dbOperator);
                    if (!result)
                    {
                        throw new MyException("保存车辆信息失败");
                    }

                    IParkMonthlyCarApply factory = ParkMonthlyCarApplyFactory.GetFactory();
                    result = factory.Passed(monthlyCarApply, dbOperator);
                    if (!result)
                    {
                        throw new MyException("修改申请状态失败");
                    }

                    dbOperator.CommitTransaction();
                    monthlyCarApply = ParkMonthlyCarApplyServices.QueryByRecordID(monthlyCarApply.RecordID);
                    OperateLogServices.AddOperateLog <ParkMonthlyCarApply>(monthlyCarApply, OperateType.Update);
                    return(result);
                }
                catch
                {
                    dbOperator.RollbackTransaction();
                    throw;
                }
            }
        }
コード例 #7
0
        /// <summary>
        /// 月租车暂停使用
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <param name="grantId"></param>
        /// <returns></returns>
        public static bool CarSuspendUse(DateTime start, DateTime end, string grantId)
        {
            IParkGrant factory = ParkGrantFactory.GetFactory();
            ParkGrant  grant   = factory.QueryByGrantId(grantId);

            if (grant == null)
            {
                throw new MyException("获取授权信息失败");
            }

            if (grant.State == ParkGrantState.Stop)
            {
                throw new MyException("停止状态不能设置,如需设置请先启用");
            }
            if (grant.State == ParkGrantState.Pause)
            {
                throw new MyException("暂停状态不能设置,请先恢复使用后重新设置");
            }

            ParkCarType carType = ParkCarTypeServices.QueryParkCarTypeByRecordId(grant.CarTypeID);

            if (carType == null)
            {
                throw new MyException("获取车型类型失败");
            }
            //if (carType.BaseTypeID != BaseCarType.MonthlyRent && carType.BaseTypeID != BaseCarType.WorkCar
            //   && carType.BaseTypeID != BaseCarType.VIPCar) throw new MyException("该车辆不能使用此功能");

            IParkCardSuspendPlan planFactory = ParkCardSuspendPlanFactory.GetFactory();

            ParkCardSuspendPlan plan = planFactory.QueryByGrantId(grantId);

            using (DbOperator dbOperator = ConnectionManager.CreateConnection())
            {
                try
                {
                    dbOperator.BeginTransaction();
                    if (plan != null)
                    {
                        if (start.Date < DateTime.Now.Date)
                        {
                            throw new MyException("开始时间不能小于系统当前时间");
                        }

                        bool result = planFactory.Update(start, end, grantId, dbOperator);
                        if (!result)
                        {
                            throw new MyException("保存暂停计划失败");
                        }

                        if (start.Date == DateTime.Now.Date)
                        {
                            result = factory.Update(grantId, ParkGrantState.Pause, dbOperator);
                            if (!result)
                            {
                                throw new MyException("修改使用状态失败");
                            }
                        }
                    }
                    else
                    {
                        if (start.Date < DateTime.Now.Date)
                        {
                            throw new MyException("开始时间不能小于系统当前时间");
                        }

                        ParkCardSuspendPlan model = new ParkCardSuspendPlan();
                        model.RecordId  = GuidGenerator.GetGuidString();
                        model.StartDate = start;
                        model.EndDate   = end;
                        model.GrantID   = grantId;
                        bool result = planFactory.Add(model, dbOperator);
                        if (!result)
                        {
                            throw new MyException("保存暂停计划失败");
                        }
                        if (start.Date == DateTime.Now.Date)
                        {
                            result = factory.Update(grantId, ParkGrantState.Pause, dbOperator);
                            if (!result)
                            {
                                throw new MyException("修改使用状态失败");
                            }
                        }
                    }
                    dbOperator.CommitTransaction();
                    string endDate = end == DateTime.MinValue ? end.ToString("yyyy-MM-dd") : string.Empty;
                    OperateLogServices.AddOperateLog(OperateType.Update, string.Format("grantId:{0},startDate:{1},endDate:{2}", grantId, start.ToString("yyyy-MM-dd"), endDate));
                    return(true);
                }
                catch (Exception ex)
                {
                    dbOperator.RollbackTransaction();
                    throw ex;
                }
            }
        }
コード例 #8
0
        /// <summary>
        /// 续期或续费
        /// </summary>
        /// <param name="grantId"></param>
        /// <param name="renewalMonth"></param>
        /// <param name="payTotalMoney"></param>
        /// <param name="operatorId"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <returns></returns>
        public static bool RenewalsOrRecharge(string grantId, int renewalMonth, decimal payTotalMoney, string operatorId, DateTime startDate, DateTime endDate)
        {
            lock (parkGrant_lock)
            {
                ParkGrant grant = ParkGrantServices.QueryByGrantId(grantId);
                if (grant == null)
                {
                    throw new MyException("获取授权信息失败");
                }

                if (endDate != null && endDate != DateTime.MinValue)
                {
                    endDate = endDate.Date.AddDays(1).AddSeconds(-1);
                }
                string   errorMsg = string.Empty;
                BaseCard card     = BaseCardServices.GetBaseCard(grant.CardID, out errorMsg);
                if (card == null || !string.IsNullOrWhiteSpace(errorMsg))
                {
                    throw new MyException("获取卡失败");
                }

                ParkCarType carType = ParkCarTypeServices.QueryParkCarTypeByRecordId(grant.CarTypeID);
                if (carType == null)
                {
                    throw new MyException("获取卡类失败");
                }

                List <ParkGrant> operateTargets = new List <ParkGrant>();
                List <string>    ioRecords      = new List <string>();

                using (DbOperator dbOperator = ConnectionManager.CreateConnection())
                {
                    try
                    {
                        bool renewalsResult = false;
                        dbOperator.BeginTransaction();
                        switch (carType.BaseTypeID)
                        {
                        case BaseCarType.StoredValueCar:
                        {
                            IBaseCard factory = BaseCardFactory.GetFactory();
                            if (payTotalMoney > 0)
                            {
                                ParkOrder order = ParkOrderServices.AddStoredValueCarOrder(grant.PKID, payTotalMoney, card, operatorId, dbOperator);
                                if (order == null)
                                {
                                    throw new MyException("创建充值订单失败");
                                }

                                decimal cardtotalmoney = card.Balance + payTotalMoney;
                                if (order.NewMoney != cardtotalmoney)
                                {
                                    throw new MyException("充值金额计算错误");
                                }
                                renewalsResult = factory.Recharge(card.CardID, payTotalMoney, dbOperator);
                                if (!renewalsResult)
                                {
                                    throw new MyException("卡充值失败【更改卡余额失败】");
                                }
                            }
                            renewalsResult = factory.SetEndDate(card.CardID, endDate, dbOperator);
                            if (!renewalsResult)
                            {
                                throw new MyException("卡充值失败【更改有效期失败】");
                            }
                            break;
                        }

                        case BaseCarType.VIPCar:
                        {
                            ParkOrder order = ParkOrderServices.AddVipCardOrder(grant.PKID, grantId, grant.BeginDate, grant.EndDate, startDate, endDate, renewalMonth, operatorId, dbOperator);
                            if (order == null)
                            {
                                throw new MyException("充值失败【创建充值订单失败】");
                            }

                            IParkGrant factory = ParkGrantFactory.GetFactory();
                            renewalsResult = factory.Renewals(grant.GID, startDate, endDate, dbOperator);
                            if (!renewalsResult)
                            {
                                throw new MyException("修改车辆有效期失败");
                            }
                            break;
                        }

                        case BaseCarType.MonthlyRent:
                        {
                            int pkLotQuantity = 1;
                            if (!string.IsNullOrWhiteSpace(grant.PKLot))
                            {
                                pkLotQuantity = grant.PKLot.TrimEnd(',').Split(',').Length;
                            }
                            decimal amount = ParkOrderServices.CalculateMonthlyRentExpiredWaitPayAmount(startDate, grantId);

                            //if (payTotalMoney != ((carType.Amount * renewalMonth * pkLotQuantity) + amount))
                            //    throw new MyException("凭证续期金额计算有误");



                            List <ParkGrant> shareCardGrants = new List <ParkGrant>();
                            if (!string.IsNullOrWhiteSpace(grant.PKLot))
                            {
                                shareCardGrants = ParkGrantServices.QueryByParkingAndLotAndCarType(grant.PKID, grant.PKLot, BaseCarType.MonthlyRent, grant.GID);
                            }
                            IParkGrant factory = ParkGrantFactory.GetFactory();
                            renewalsResult = factory.Renewals(grant.GID, startDate, endDate, dbOperator);
                            if (!renewalsResult)
                            {
                                throw new MyException("修改车辆有效期失败");
                            }


                            //修改多车多位的有效期
                            foreach (var item in shareCardGrants)
                            {
                                if (string.IsNullOrWhiteSpace(item.PKLot))
                                {
                                    continue;
                                }

                                int len1 = item.PKLot.TrimEnd(',').Split(',').Length;
                                int len2 = grant.PKLot.TrimEnd(',').Split(',').Length;
                                if (len1 != len2)
                                {
                                    continue;
                                }

                                item.BeginDate = startDate;
                                item.EndDate   = endDate;
                                factory.Update(item, dbOperator);
                                operateTargets.Add(item);
                            }
                            //过期转临停订单处理
                            if (grant.EndDate.Date < DateTime.Now.Date)
                            {
                                List <string> plateNos = new List <string>();
                                EmployeePlate plate    = EmployeePlateServices.Query(grant.PlateID);
                                if (plate == null)
                                {
                                    throw new MyException("授权车牌信息不存在");
                                }

                                plateNos.Add(plate.PlateNo);

                                foreach (var item in shareCardGrants)
                                {
                                    if (string.IsNullOrWhiteSpace(item.PKLot))
                                    {
                                        continue;
                                    }

                                    int len1 = item.PKLot.TrimEnd(',').Split(',').Length;
                                    int len2 = grant.PKLot.TrimEnd(',').Split(',').Length;
                                    if (len1 != len2)
                                    {
                                        continue;
                                    }

                                    EmployeePlate otherplate = EmployeePlateServices.Query(item.PlateID);
                                    if (otherplate == null)
                                    {
                                        throw new MyException("多车多位存在无效的车牌");
                                    }
                                    plateNos.Add(otherplate.PlateNo);
                                }

                                if (plateNos.Count > 0 && grant.EndDate != DateTime.MinValue)
                                {
                                    IParkIORecord ioRecord = ParkIORecordFactory.GetFactory();
                                    ioRecords = ioRecord.QueryMonthExpiredNotPayAmountIORecordIds(grant.EndDate.AddDays(1).Date, startDate, grant.PKID, plateNos);
                                    if (ioRecords.Count > 0)
                                    {
                                        bool result = ioRecord.UpdateIORecordEnterType(ioRecords, 0, dbOperator);
                                        if (!result)
                                        {
                                            throw new MyException("修改进出记录类型失败");
                                        }
                                        result = ParkOrderServices.AddExpiredToProStopOrder(ioRecords, operatorId, dbOperator);
                                        if (!result)
                                        {
                                            throw new MyException("创建月卡转临停订单失败");
                                        }
                                    }
                                }
                            }
                            ParkOrder order = ParkOrderServices.AddMonthlyRentOrderCS(grant.PKID, carType.CarTypeID, grant.GID, grant.BeginDate, grant.EndDate, startDate, endDate, renewalMonth, pkLotQuantity, operatorId, payTotalMoney, dbOperator);
                            if (order == null)
                            {
                                throw new MyException("续期失败【创建续期订单失败】");
                            }
                            break;
                        }

                        //case BaseCarType.WorkCar:
                        //    {
                        //        IParkGrant factory = ParkGrantFactory.GetFactory();
                        //        renewalsResult = factory.Renewals(grant.GID, startDate, endDate, dbOperator);
                        //        if (!renewalsResult) throw new MyException("修改卡结束时间错误");
                        //        break;
                        //    }
                        default: throw new MyException("选择的车辆不能续期和充值");
                        }
                        dbOperator.CommitTransaction();

                        string remark = string.Format("grantId:{0};renewalMonth:{1};payTotalMoney:{2};operatorId:{3};startDate:{4};endDate:{5}", grantId, renewalMonth, payTotalMoney, operatorId, startDate.ToString("yyyy-MM-dd"), endDate.ToString("yyyy-MM-dd"));
                        OperateLogServices.AddOperateLog(OperateType.Update, remark);
                        if (ioRecords.Count > 0)
                        {
                            string updateIORecord = string.Format("修改IORecord表,RecordIDs:{0},EnterType:0", string.Join(",", ioRecords));
                            OperateLogServices.AddOperateLog(OperateType.Update, updateIORecord);
                        }
                        return(renewalsResult);
                    }
                    catch (Exception ex)
                    {
                        dbOperator.RollbackTransaction();
                        throw ex;
                    }
                }
            }
        }