Beispiel #1
0
        public ActionResult ModifyTempRuleOfOrder()
        {
            Response resp = new Response();

            #region
            CWTariff cwtarff = new CWTariff();
            int      mainID  = 0;
            string   mID     = Request.Form["MID"];
            if (!string.IsNullOrEmpty(mID))
            {
                TempChargingRule rule = cwtarff.FindTempChgRule(Convert.ToInt32(mID));
                if (rule != null)
                {
                    string preID = Request.Form["PreID"];
                    string tType = Request.Form["TType"];

                    rule.TempChgType = (EnmTempChargeType)Convert.ToInt16(tType);
                    rule.PreChgID    = Convert.ToInt32(preID);

                    cwtarff.UpdateTempChgRule(rule);

                    mainID = rule.ID;
                }
            }

            string orderID = Request.Form["OrderID"];
            if (!string.IsNullOrEmpty(orderID))
            {
                string freetime = Request.Form["FreeTime"];
                string fee      = Request.Form["OrderFee"];

                if (orderID == "0")
                {
                    //添加新的
                    if (mainID != 0)
                    {
                        OrderChargeDetail odetail = new OrderChargeDetail()
                        {
                            TempChgID     = mainID,
                            OrderFreeTime = freetime,
                            Fee           = Convert.ToSingle(fee)
                        };
                        resp = cwtarff.AddOrderDetail(odetail);
                    }
                }
                else
                {
                    OrderChargeDetail order = cwtarff.FindOrderDetail(Convert.ToInt32(orderID));
                    if (order != null)
                    {
                        order.OrderFreeTime = freetime;
                        order.Fee           = Convert.ToSingle(fee);
                        cwtarff.UpdateOrderDetail(order);
                    }
                }
            }
            resp.Message = "修改数据成功";
            #endregion
            return(Json(resp));
        }
Beispiel #2
0
        public ActionResult AddTempRuleByOrder()
        {
            Response resp   = new Response();
            CWTariff cwtrff = new CWTariff();
            List <TempChargingRule> ruleList = cwtrff.GetTempChgRuleList();

            if (ruleList.Count > 0)
            {
                resp.Code    = 0;
                resp.Message = "系统故障,存在临时类记录,无法完成新增工作!";
                return(Json(resp));
            }
            string preID    = Request.Form["PreID"];
            string tType    = Request.Form["TType"]; //计费类型
            string freetime = Request.Form["FreeTime"];
            string fee      = Request.Form["OrderFee"];

            TempChargingRule rule = new TempChargingRule()
            {
                ICType      = EnmICCardType.Temp,
                TempChgType = (EnmTempChargeType)Convert.ToInt16(tType),
                PreChgID    = Convert.ToInt32(preID)
            };

            resp = cwtrff.AddTempChgRule(rule);
            if (resp.Code == 1)
            {
                //先删除原来的记录
                List <OrderChargeDetail> orderdetailLst = cwtrff.GetOrderDetailList();
                foreach (OrderChargeDetail order in orderdetailLst)
                {
                    cwtrff.DeleteOrderDetail(order.ID);
                }
                //添加新的
                OrderChargeDetail odetail = new OrderChargeDetail()
                {
                    TempChgID     = rule.ID,
                    OrderFreeTime = freetime,
                    Fee           = Convert.ToSingle(fee)
                };
                resp = cwtrff.AddOrderDetail(odetail);

                resp.Data = null;
                if (resp.Code == 1)
                {
                    var da = new
                    {
                        mainID  = rule.ID,
                        orderID = odetail.ID
                    };
                    resp.Data = da;
                }
            }
            return(Json(resp));
        }
Beispiel #3
0
        /// <summary>
        /// 获取按次计费策略表
        /// </summary>
        public JsonResult FindOrderDetail(int tempID)
        {
            CWTariff          cwtariff    = new CWTariff();
            OrderChargeDetail orderDetail = cwtariff.FindOrderDetail(od => od.TempChgID == tempID);

            if (orderDetail == null)
            {
                orderDetail = new OrderChargeDetail
                {
                    TempChgID     = tempID,
                    OrderFreeTime = "00:00",
                    Fee           = 0
                };
                cwtariff.AddOrderDetail(orderDetail);
            }
            return(Json(orderDetail, JsonRequestBehavior.AllowGet));
        }
Beispiel #4
0
        /// <summary>
        /// 计算临时用户费用
        /// </summary>
        /// <param name="indate"></param>
        /// <param name="outdate"></param>
        /// <returns></returns>
        public Response CalculateTempFee(DateTime indate, DateTime outdate, out float fee)
        {
            fee = 0;
            Response resp = new Response();
            List <TempChargingRule> tempChgRuleLst = tempManager.FindList().ToList();

            if (tempChgRuleLst.Count == 0)
            {
                resp.Message = "未定义临时类计费规则";
                return(resp);
            }
            TempChargingRule globalRule = tempChgRuleLst[0];

            if (globalRule.TempChgType == EnmTempChargeType.Order)
            {
                #region  次
                OrderChargeDetail orderdetail = orderDetailManager.Find(globalRule.ID);
                if (orderdetail == null)
                {
                    resp.Message = "按次计费类型,但是没有找到按次计费规则表!";
                    return(resp);
                }
                TimeSpan ts           = outdate - indate;
                double   totalMinutes = Math.Ceiling(ts.TotalMinutes);
                TimeSpan span         = TimeSpan.Parse(orderdetail.OrderFreeTime.Trim());
                if (span.TotalMinutes > totalMinutes)
                {
                    fee = orderdetail.Fee;
                }
                resp.Code    = 1;
                resp.Message = "按次费用,查询成功";
                #endregion
            }
            else if (globalRule.TempChgType == EnmTempChargeType.Hour)
            {
                #region  时
                HourChargeDetail hourdetail = hourDetailManager.Find(hc => hc.TempChgID == globalRule.ID);
                if (hourdetail == null)
                {
                    resp.Message = "没有找到 按时计费 规则记录!";
                    return(resp);
                }
                List <HourSectionInfo> sectionInfoLst = hourSectionManager.FindList(hs => hs.HourChgID == hourdetail.ID);
                if (sectionInfoLst.Count == 0)
                {
                    resp.Message = "没有找到 时段 规则记录";
                    return(resp);
                }
                //这里都是24小时制,延续计费的方式进行,后面的,再增加
                //排序
                List <HourSectionInfo> timeslotLst = sectionInfoLst.OrderBy(sc => sc.StartTime).ToList();

                if (hourdetail.CycleTopFee > 0)
                {
                    #region 设置了周期最高计费
                    TimeSpan ts        = outdate - indate;
                    int      days      = ts.Days;
                    bool     isInit    = true;
                    DateTime newIndate = indate;
                    //计算超过天数的停车费用
                    float daysFee = 0;
                    if (days > 0)
                    {
                        daysFee = days * hourdetail.CycleTopFee;
                        isInit  = false;

                        newIndate = indate.AddDays(days);
                    }
                    float otherHoursFee = calcuteHoursFeeHasLimit(newIndate, outdate, timeslotLst, isInit);
                    if (otherHoursFee > 10000)
                    {
                        resp.Message = "系统异常,Fee - " + otherHoursFee;
                        return(resp);
                    }
                    if (otherHoursFee > hourdetail.CycleTopFee)
                    {
                        otherHoursFee = hourdetail.CycleTopFee;
                    }
                    fee = daysFee + otherHoursFee;
                    #endregion
                }
                else
                {
                    //没有周期最高限额限制
                    fee = calcuteHoursFeeNoLimit(indate, outdate, timeslotLst);
                }
                resp.Code    = 1;
                resp.Message = "查询费用成功";
                #endregion
            }
            else
            {
                resp.Message = "未定义计费类型,请核查!";
            }

            return(resp);
        }
Beispiel #5
0
 /// <summary>
 /// 更新
 /// </summary>
 /// <param name="order"></param>
 /// <returns></returns>
 public Response UpdateOrderDetail(OrderChargeDetail order)
 {
     return(orderDetailManager.Update(order));
 }
Beispiel #6
0
 /// <summary>
 /// 添加
 /// </summary>
 /// <param name="order"></param>
 /// <returns></returns>
 public Response AddOrderDetail(OrderChargeDetail order)
 {
     return(orderDetailManager.Add(order));
 }