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)); }
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)); }
/// <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)); }
/// <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); }
/// <summary> /// 更新 /// </summary> /// <param name="order"></param> /// <returns></returns> public Response UpdateOrderDetail(OrderChargeDetail order) { return(orderDetailManager.Update(order)); }
/// <summary> /// 添加 /// </summary> /// <param name="order"></param> /// <returns></returns> public Response AddOrderDetail(OrderChargeDetail order) { return(orderDetailManager.Add(order)); }