public JsonResult DownloadQRCode(string gateId, int size) { try { List <int> dics = new List <int>(); dics.Add(258); dics.Add(344); dics.Add(430); dics.Add(860); dics.Add(1280); List <string> imgs = new List <string>(); ParkGate gate = ParkGateServices.QueryByRecordId(gateId); if (gate == null) { throw new MyException("获取通道信息失败"); } BaseCompany company = CompanyServices.QueryByBoxID(gate.BoxID); if (company == null) { throw new MyException("获取单位信息失败"); } ParkBox box = ParkBoxServices.QueryByRecordId(gate.BoxID); if (box == null) { throw new MyException("获取岗亭信息失败"); } ParkArea area = ParkAreaServices.QueryByRecordId(box.AreaID); if (area == null) { throw new MyException("获取区域信息失败"); } BaseParkinfo parking = ParkingServices.QueryParkingByParkingID(area.PKID); if (parking == null) { throw new MyException("获取车场信息失败"); } string content = string.Format("{0}/qrl/scio_ix_pid={1}^io={2}", SystemDefaultConfig.SystemDomain, parking.PKID, gate.GateID); foreach (var item in dics) { string parkingName = string.Format("{0}_{1}_{2}_{3}_{4}", parking.PKName, area.AreaName, box.BoxName, gate.GateName, item); string result = QRCodeServices.GenerateQRCode(company.CPID, content, item, parkingName); imgs.Add(item.ToString() + "|" + result); } return(Json(MyResult.Success("", imgs))); } catch (MyException ex) { return(Json(MyResult.Error(ex.Message))); } catch (Exception ex) { ExceptionsServices.AddExceptions(ex, "下载二维码失败"); return(Json(MyResult.Error("下载二维码失败"))); } }
//根据人员和车场信息 下载二维码 public JsonResult DownloadQRCode(string parkingId, string personId, int size) { try { List <int> dics = new List <int>(); dics.Add(258); dics.Add(344); dics.Add(430); dics.Add(860); dics.Add(1280); List <string> imgs = new List <string>(); //if (string.IsNullOrWhiteSpace(SystemDefaultConfig.SystemDomain)) //{ // throw new MyException("获取系统域名失败"); //} BaseParkinfo parking = ParkingServices.QueryParkingByParkingID(parkingId); if (parking == null) { throw new MyException("获取车场信息失败"); } BaseVillage village = VillageServices.QueryVillageByRecordId(parking.VID); if (village == null) { throw new MyException("获取小区信息失败"); } //string url = SystemDefaultConfig.SystemDomain; string url = "http://spscs.spsing.cn"; string content = string.Format("{0}/qrl/qrp_ix_pid={1}^personId={2}", url, parkingId.Trim(), personId); foreach (var item in dics) { try { string parkingName = string.Format("{0}_{1}", parking.PKName, item); string result = QRCodeServices.GenerateQRCode(village.CPID, content, item, parkingName); imgs.Add(item.ToString() + "|" + result); TxtLogServices.WriteTxtLogEx("DownloadQRCode", item.ToString() + "|" + result); } catch (Exception ex) { ExceptionsServices.AddExceptions(ex, "生存车场二维码失败"); imgs.Add(item.ToString() + "|"); } } return(Json(MyResult.Success("", imgs))); } catch (MyException ex) { return(Json(MyResult.Error(ex.Message))); } catch (Exception ex) { ExceptionsServices.AddExceptions(ex, "下载二维码失败"); return(Json(MyResult.Error("下载二维码失败"))); } }
/// <summary> /// 获得最小提现金额 /// </summary> /// <returns></returns> public JsonResult GetMinAmount() { string pkid = Request.Params["pkid"]; JsonResult json = new JsonResult(); try { json.Data = ParkingServices.QueryParkingByParkingID(pkid); } catch (Exception ex) { } return(json); }
/// <summary> /// 计算金额 /// </summary> /// <param name="PKID">车场编号</param> /// <param name="StartTime">开始时间</param> /// <param name="EndTime">结束时间</param> /// <returns></returns> public static CalSettleAmountModel CalSettleAmount(string PKID, DateTime StartTime, DateTime EndTime) { CalSettleAmountModel settleamount = new CalSettleAmountModel(); try { IParkSettlement factory = ParkSettlementFactory.GetFactory(); //获取结算金额 decimal totalamount = 0; decimal handlingfeeamount = 0; decimal receivableamount = 0; //List<ParkOrder> orderlist = factory.GetSettlementPayAmount(PKID, StartTime, EndTime); List <Statistics_Gather> orderlist = factory.GetSettlementPayAmount(PKID, StartTime, EndTime); if (orderlist != null && orderlist.Count > 0) { var park = ParkingServices.QueryParkingByParkingID(PKID); if (park == null || park.HandlingFee <= 0) { settleamount.Message = "未配置车场结算费率 不能生成结算单"; settleamount.IsSuccess = false; return(settleamount); } //费率在车场配置 decimal handlingfee = park.HandlingFee / 1000; //foreach (var order in orderlist) //{ // //totalamount += order.PayAmount; // //handlingfeeamount += Math.Round(order.PayAmount * handlingfee, 2); // //} //receivableamount = totalamount - handlingfeeamount; foreach (var order in orderlist) { totalamount += order.OnLine_Amount; } handlingfeeamount = Math.Round(totalamount * handlingfee, 2); receivableamount = totalamount - handlingfeeamount; } settleamount.IsSuccess = true; settleamount.RateFeeAmount = handlingfeeamount; settleamount.ReceiveAmount = receivableamount; settleamount.TotalAmount = totalamount; } catch (Exception ex) { settleamount.IsSuccess = false; settleamount.Message = "计算费用异常"; } return(settleamount); }
public ActionResult SaveBooking(string plateNo, string parkingId, string areaId, DateTime startTime, DateTime endTime) { try { WXReserveBitResult result = PkBitBookingServices.WXReservePKBit(WeiXinUser.AccountID, string.Empty, parkingId, areaId, plateNo, startTime, endTime); if (result.code == 0) { if (parkingId != result.Order.PKID) { throw new MyException("车场编号不一致"); } BaseParkinfo parking = ParkingServices.QueryParkingByParkingID(parkingId); if (parking == null) { throw new MyException("获取车场信息失败"); } ViewBag.ParkingName = parking.PKName; ParkArea area = ParkAreaServices.QueryByRecordId(areaId); if (area == null) { throw new MyException("获取区域信息失败"); } ViewBag.AreaName = area.AreaName; ViewBag.PlateNo = plateNo; ViewBag.StartTime = startTime.ToString("yyyy-MM-dd HH:mm:ss"); ViewBag.EndTime = endTime.ToString("yyyy-MM-dd HH:mm:ss"); ViewBag.AreaId = areaId; return(View(result)); } if (result.code == 1) { throw new MyException("您已经预约过了,请勿重复预约"); } throw new MyException("预约失败[" + result.message + "]"); } catch (MyException ex) { return(PageAlert("Index", "ParkBitBooking", new { RemindUserContent = ex.Message })); } catch (Exception ex) { ExceptionsServices.AddExceptionToDbAndTxt("WeiXinWeb", "预约失败", ex, LogFrom.WeiXin); return(PageAlert("Index", "ParkBitBooking", new { RemindUserContent = "预约失败!" })); } }
private string GetParkingName(string parkingId) { try { BaseParkinfo model = ParkingServices.QueryParkingByParkingID(parkingId); if (model != null) { return(model.PKName); } return(string.Empty); } catch (Exception ex) { ExceptionsServices.AddExceptionToDbAndTxt("AliPay_Error", "获取车场名称失败", ex); return(string.Empty); } }
/// <summary> /// 获得临停缴费记录 /// </summary> /// <param name="paras">输入参数</param> /// <returns></returns> public static List <Statistics_Gather> Search_MonthStatistics(InParams paras) { IStatistics factory = StatisticsFactory.GetFactory(); List <Statistics_Gather> gatherlist = factory.Search_MonthStatistics(paras); if (!string.IsNullOrEmpty(paras.ParkingID) && gatherlist != null && gatherlist.Count > 0) { BaseParkinfo parkinfo = ParkingServices.QueryParkingByParkingID(paras.ParkingID); if (parkinfo != null) { foreach (var v in gatherlist) { v.ParkingName = parkinfo.PKName; } } } return(gatherlist); }
/// <summary> /// 获得临停缴费记录 /// </summary> /// <param name="paras">输入参数</param> /// <param name="PageSize">每页显示数</param> /// <param name="PageIndex">当前页</param> /// <returns></returns> public static Pagination Search_MonthStatistics(InParams paras, int PageSize, int PageIndex) { Pagination _pagination = new Pagination(); IStatistics factory = StatisticsFactory.GetFactory(); _pagination.Total = factory.Search_MonthStatisticsCount(paras); _pagination.StatisticsGatherList = factory.Search_MonthStatistics(paras, PageSize, PageIndex); if (!string.IsNullOrEmpty(paras.ParkingID) && _pagination.StatisticsGatherList != null && _pagination.StatisticsGatherList.Count > 0) { BaseParkinfo parkinfo = ParkingServices.QueryParkingByParkingID(paras.ParkingID); if (parkinfo != null) { foreach (var v in _pagination.StatisticsGatherList) { v.ParkingName = parkinfo.PKName; } } } return(_pagination); }
public ActionResult DerateSuccess(string msg, string parkingId, string licensePlate) { try { TxtLogServices.WriteTxtLogEx("QRCodeDerate", string.Format("领取成功,parkingId:{0},licensePlate:{1}", parkingId, licensePlate)); ViewBag.Msg = msg; string hrefUrl = string.Empty; BaseParkinfo parking = ParkingServices.QueryParkingByParkingID(parkingId); if (parking == null) { throw new MyException("获取车场信息失败"); } if (parking.MobilePay == YesOrNo.Yes) { string companyId = CompanyServices.GetCompanyId(parkingId, string.Empty); if (string.IsNullOrWhiteSpace(companyId)) { throw new MyException("获取单位编号失败"); } WX_ApiConfig config = WXApiConfigServices.QueryWXApiConfig(companyId); if (config == null) { throw new MyException("获取微信配置失败"); } hrefUrl = string.Format("{0}/qrl/qrp_ix_pid={1}^pn={2}", SystemDefaultConfig.SystemDomain, parkingId, licensePlate); } ViewBag.HrefUrl = hrefUrl; ViewBag.LicensePlate = licensePlate; ViewBag.DerateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); return(View()); } catch (Exception ex) { TxtLogServices.WriteTxtLogEx("QRCodeDerate", "提示优免结果出错", ex); return(RedirectToAction("BrowseError", "QRCodeDerate", new { errorMsg = "领取优免券成功,但是处理其他业务异常了【不影响优免券的正常使用】" })); } }
public ActionResult Index(string plateNumber, string parkingId) { string plateCity = string.Empty; string plateArea = string.Empty; string number = string.Empty; if (!string.IsNullOrWhiteSpace(plateNumber) && plateNumber.Length >= 5) { plateCity = plateNumber.Substring(0, 1); plateArea = plateNumber.Substring(1, 1); number = plateNumber.Substring(2); } else { if (!string.IsNullOrWhiteSpace(parkingId)) { BaseParkinfo park = ParkingServices.QueryParkingByParkingID(parkingId); if (park != null && !string.IsNullOrWhiteSpace(park.DefaultPlate) && park.DefaultPlate.Length == 2) { plateCity = park.DefaultPlate.Substring(0, 1); plateArea = park.DefaultPlate.Substring(1, 1); } } if ((string.IsNullOrWhiteSpace(plateCity) || string.IsNullOrWhiteSpace(plateArea)) && !string.IsNullOrWhiteSpace(firstPlateNo) && firstPlateNo.Length == 2) { TxtLogServices.WriteTxtLogEx("LicensePlate", "firstPlateNo:" + firstPlateNo); plateCity = firstPlateNo.Substring(0, 1); plateArea = firstPlateNo.Substring(1, 1); } } TxtLogServices.WriteTxtLogEx("LicensePlate", string.Format("plateCity:{0},plateArea:{1},number:{2}", plateCity, plateArea, number)); ViewBag.city = string.IsNullOrWhiteSpace(plateCity) ? "粤" : plateCity; ViewBag.area = string.IsNullOrWhiteSpace(plateArea) ? "B" : plateArea; ViewBag.number = number.ToPlateNo(); return(PartialView()); }
/// <summary> /// 生成结算单 /// </summary> /// <param name="PKID">车场编号</param> /// <param name="StartTime">开始时间</param> /// <param name="EndTime">结束时间</param> /// <param name="UserID">用户编号</param> /// <returns></returns> public static MyResult BuildSettlement(string PKID, DateTime StartTime, DateTime EndTime, string Remark, string UserID) { MyResult result = new MyResult(); result.result = false; try { var companys = new Common.SqlRepository.CompanyDAL().QueryTopCompany(); List <Entities.SysUser> users = new List <Entities.SysUser>(); if (companys != null) { users = new Common.SqlRepository.SysUserDAL().QuerySysUserByCompanys(companys.Select(u => u.CPID).ToList()); } if (users != null && users.Count > 0) { if (users.Find(u => u.RecordID == UserID) != null) { result.msg = "平台帐号不能申请结算单"; return(result); } } string priod = "F00001"; IParkSettlement factory = ParkSettlementFactory.GetFactory(); ParkSettlementModel settlelist = factory.GetMaxPriodSettlement(PKID); if (settlelist != null) { if (settlelist.SettleStatus != 2 && settlelist.SettleStatus != -1) { //结算单还在审批中 不能建立新的结算单 result.msg = "帐期:" + settlelist.Priod + " 的结算单正在审批中 不能创建新的结算单"; return(result); } else { string maxpriod = settlelist.Priod; priod = maxpriod.Substring(0, 1) + (1 + int.Parse(maxpriod.Substring(1))).ToString().PadLeft(5, '0'); } if (StartTime < settlelist.EndTime) { result.msg = "当前结算单的开始时间不能小于前一个结算单结算时间"; return(result); } if (settlelist.EndTime.AddSeconds(1) != StartTime) { result.msg = "提现需要日期连续"; return(result); } } //获取结算金额 decimal totalamount = 0; decimal handlingfeeamount = 0; decimal receivableamount = 0; List <ParkOrder> orderlist = factory.GetSettlementPayAmount(PKID, StartTime, EndTime); if (orderlist != null && orderlist.Count > 0) { var park = ParkingServices.QueryParkingByParkingID(PKID); if (park == null || park.HandlingFee <= 0) { result.msg = "未配置车场结算费率 不能生成结算单"; return(result); } //费率在车场配置 decimal handlingfee = park.HandlingFee / 1000; foreach (var order in orderlist) { totalamount += order.PayAmount; handlingfeeamount += Math.Round(order.PayAmount * handlingfee, 2); } receivableamount = totalamount - handlingfeeamount; } ParkSettlementModel settlemodel = new ParkSettlementModel() { PKID = PKID, TotalAmount = totalamount, ReceivableAmount = receivableamount, HandlingFeeAmount = handlingfeeamount, EndTime = EndTime, StartTime = StartTime, Priod = priod, Remark = Remark, CreateUser = UserID }; result.result = factory.BuildSettlement(settlemodel); } catch { result.msg = "生成结算单异常"; } return(result); }
/// <summary> /// 生成结算单 /// </summary> /// <param name="PKID">车场编号</param> /// <param name="StartTime">开始时间</param> /// <param name="EndTime">结束时间</param> /// <param name="UserID">用户编号</param> /// <returns></returns> public static MyResult BuildSettlement(string PKID, DateTime StartTime, DateTime EndTime, string Remark, string UserID) { MyResult result = new MyResult(); result.result = false; try { string priod = "F00001"; IParkSettlement factory = ParkSettlementFactory.GetFactory(); ParkSettlementModel settlelist = factory.GetMaxPriodSettlement(PKID); if (settlelist != null) { if (settlelist.SettleStatus != 2 && settlelist.SettleStatus != -1) { //结算单还在审批中 不能建立新的结算单 result.msg = "帐期:" + settlelist.Priod + " 的结算单正在审批中 不能创建新的结算单"; return(result); } else { string maxpriod = settlelist.Priod; priod = maxpriod.Substring(0, 1) + int.Parse(maxpriod.Substring(1)).ToString().PadLeft(5, '0'); } if (StartTime < settlelist.EndTime) { result.msg = "当前结算单的开始时间不能小于前一个结算单结算时间"; return(result); } if (settlelist.EndTime.AddSeconds(1) != StartTime) { result.msg = "提现需要日期连续"; return(result); } } //获取结算金额 decimal totalamount = 0; decimal handlingfeeamount = 0; decimal receivableamount = 0; //List<ParkOrder> orderlist = factory.GetSettlementPayAmount(PKID, StartTime, EndTime); List <Statistics_Gather> orderlist = factory.GetSettlementPayAmount(PKID, StartTime, EndTime); if (orderlist != null && orderlist.Count > 0) { var park = ParkingServices.QueryParkingByParkingID(PKID); if (park == null || park.HandlingFee <= 0) { result.msg = "未配置车场结算费率 不能生成结算单"; return(result); } //费率在车场配置 decimal handlingfee = park.HandlingFee / 1000; //foreach (var order in orderlist) //{ // //totalamount += order.PayAmount; // //handlingfeeamount += Math.Round(order.PayAmount * handlingfee, 2); // //} //receivableamount = totalamount - handlingfeeamount; foreach (var order in orderlist) { totalamount += order.OnLine_Amount; } handlingfeeamount = Math.Round(totalamount * handlingfee, 2); receivableamount = totalamount - handlingfeeamount; } ParkSettlementModel settlemodel = new ParkSettlementModel() { PKID = PKID, TotalAmount = totalamount, ReceivableAmount = receivableamount, HandlingFeeAmount = handlingfeeamount, EndTime = EndTime, StartTime = StartTime, Priod = priod, Remark = Remark, CreateUser = UserID }; result.result = factory.BuildSettlement(settlemodel); } catch { result.msg = "生成结算单异常"; } return(result); }
/// <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; } } }
/// <summary> /// 白天黑夜最大收费参数设置 /// </summary> //public static DayAndNightMaxMoneyPara DayAndNightMaxMoneyPara { get; set; } //private static XDocument document; //public static XDocument _XDocument //{ // get // { // return document; // } // private set // { // document = value; // } //} //static RateProcesser() //{ // try // { // string xmlName = "TimeShareFeeRule.xml"; // var dirName = Path.Combine(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase, xmlName); // XDocument xdoc = XDocument.Load(dirName); // foreach (var item in xdoc.Root.Elements()) // { // if (item.Attribute("IsEnable").Value.ToBoolean()) // { // _XDocument = xdoc; // } // break; // } // } // catch(Exception ex) // { // LogerHelper.Loger.Error(ex); // } //} //public static void LoadCustomFeerule(string ruletext) //{ // try // { // using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(ruletext))) // { // XDocument xdoc = XDocument.Load(stream); // foreach (var item in xdoc.Root.Elements()) // { // if (item.Attribute("IsEnable").Value.ToBoolean()) // { // _XDocument = xdoc; // } // break; // } // } // } // catch (Exception ex) // { // LogerHelper.Loger.Error(ex); // } //} /// <summary> /// 根据入场记录算费 /// </summary> /// <param name="ioRecord"></param> /// <returns></returns> public static ResultAgs GetRateResult(ParkIORecord ioRecord, ParkGate outGate, DateTime exitTime, string carModeid = "") { if (outGate == null) { return(null); } string errorMsg = ""; InputAgs args = new InputAgs(); args.AreadInfo = ParkAreaServices.QueryByRecordId(ioRecord.AreaID); if (args.AreadInfo.IsNestArea && args.AreadInfo.Parent == null)//内部车场时 且上级区域为空时 { args.AreadInfo.Parent = ParkAreaServices.QueryByRecordId(args.AreadInfo.MasterID); if (args.AreadInfo.Parent == null)//还是找不到上级区域时 { LogerHelper.Loger.Error(string.Format("找不到车场[{0}]的上级车场,上级车场ID为[{1}].", args.AreadInfo.AreaName, args.AreadInfo.MasterID)); args.AreadInfo.MasterID = "";//找不到就至为空 } } args.AreadInfo.Parkinfo = ParkingServices.QueryParkingByParkingID(args.AreadInfo.PKID); if (args.AreadInfo.Parkinfo == null)//还是找不到上级区域时 { LogerHelper.Loger.Error(string.Format("找不到区域[{0}]对应的车场.", args.AreadInfo.AreaName)); return(null); } args.Plateinfo = new PlateInfo(); args.Plateinfo.LicenseNum = ioRecord.PlateNumber; args.Plateinfo.TriggerTime = exitTime; args.CarTypeInfo = ParkCarTypeServices.QueryParkCarTypeByRecordId(ioRecord.CarTypeID); string str = errorMsg; EmployeePlate platenumber = EmployeePlateServices.GetEmployeePlateNumberByPlateNumber(args.AreadInfo.Parkinfo.VID, args.Plateinfo.LicenseNum, out errorMsg); if (platenumber != null) { //根据车牌获取车辆用户信息 var pkcard = ParkGrantServices.GetParkGrantByPlateNumberID(args.AreadInfo.PKID, platenumber.PlateID, out errorMsg); if (pkcard.Count() > 0) { //判断是否有区域 通道限制 var cardinfo = pkcard.First(); args.CardInfo = cardinfo; args.CardInfo.OwnerPlateNumber = platenumber; var usercard = BaseCardServices.GetBaseCard(args.CardInfo.CardID, out errorMsg); if (usercard != null) { args.CardInfo.Usercard = usercard; } else { args.CardInfo = null; } if (!args.CardInfo.CarModelID.IsEmpty()) { carModeid = args.CardInfo.CarModelID; } } } if (args.CarTypeInfo == null) { return(null); } if (carModeid.IsEmpty()) { args.CarModel = ParkCarModelServices.GetDefaultCarModel(args.AreadInfo.PKID, out errorMsg); } else { args.CarModel = ParkCarModelServices.QueryByRecordId(carModeid); if (args.CarModel == null) { args.CarModel = ParkCarModelServices.GetDefaultCarModel(args.AreadInfo.PKID, out errorMsg); } } if (args.CarModel == null) { return(null); } //获取默认车类型 args.GateInfo = outGate; args.IORecord = ioRecord; ResultAgs rst = new ResultAgs(); rst.InOutBaseCardType = BaseCarType.TempCar; rst.ResCode = ResultCode.OutOK; var rateContext = new RateTemplate(); rateContext.Process(args, rst); return(rst); }
/// <summary> /// 模拟参数算费 /// </summary> /// <param name="platenumber"></param> /// <param name="areaid"></param> /// <param name="intime"></param> /// <param name="exitTime"></param> /// <param name="cartypeID"></param> /// <param name="carModeid"></param> /// <returns></returns> public static ResultAgs GetRateResult(string platenumber, string areaid, DateTime intime, DateTime exitTime, string cartypeID, string carModeid = "") { if (areaid.IsEmpty()) { return(null); } string errorMsg = ""; InputAgs args = new InputAgs(); args.AreadInfo = ParkAreaServices.QueryByRecordId(areaid); args.IORecord = new ParkIORecord(); args.IORecord.EntranceTime = intime; args.IORecord.ExitTime = exitTime; args.IORecord.PlateNumber = platenumber; args.IORecord.CarTypeID = cartypeID; args.IORecord.RecordID = ""; if (args.AreadInfo.IsNestArea && args.AreadInfo.Parent == null)//内部车场时 且上级区域为空时 { args.AreadInfo.Parent = ParkAreaServices.QueryByRecordId(args.AreadInfo.MasterID); if (args.AreadInfo.Parent == null)//还是找不到上级区域时 { LogerHelper.Loger.Error(string.Format("找不到车场[{0}]的上级车场,上级车场ID为[{1}].", args.AreadInfo.AreaName, args.AreadInfo.MasterID)); args.AreadInfo.MasterID = "";//找不到就至为空 } } args.AreadInfo.Parkinfo = ParkingServices.QueryParkingByParkingID(args.AreadInfo.PKID); if (args.AreadInfo.Parkinfo == null)//还是找不到上级区域时 { LogerHelper.Loger.Error(string.Format("找不到区域[{0}]对应的车场.", args.AreadInfo.AreaName)); return(null); } args.Plateinfo = new PlateInfo(); args.Plateinfo.LicenseNum = platenumber; args.Plateinfo.TriggerTime = exitTime; args.CarTypeInfo = ParkCarTypeServices.QueryParkCarTypeByRecordId(cartypeID); if (args.CarTypeInfo == null) { return(null); } if (carModeid.IsEmpty()) { args.CarModel = ParkCarModelServices.GetDefaultCarModel(args.AreadInfo.PKID, out errorMsg); } else { args.CarModel = ParkCarModelServices.QueryByRecordId(carModeid); } if (args.CarModel == null) { return(null); } //获取默认车类型 args.GateInfo = new ParkGate(); args.GateInfo.IoState = IoState.GoOut; ResultAgs rst = new ResultAgs(); rst.InOutBaseCardType = BaseCarType.TempCar; rst.ResCode = ResultCode.OutOK; var rateContext = new RateTemplate(); rateContext.Process(args, rst); return(rst); }
private static TempParkingFeeResult SFMTransforTempParkingFeeResult(TempParkingFeeResult model, OutCarInfoResult sfmResult) { if (!sfmResult.Success || sfmResult.Data == null) { return(model); } if (sfmResult.Code == "400") { model.Result = APPResult.AmountIsNot; return(model); } if (sfmResult.Code != "0000") { model.Result = APPResult.OtherException; return(model); } SMFOutCarInfo payInfo = sfmResult.Data; if (!payInfo.payAmount.HasValue || payInfo.payAmount <= 0) { model.Result = APPResult.NoNeedPay; return(model); } TempParkingFeeResult result = new TempParkingFeeResult(); result.OrderSource = PayOrderSource.SFM; result.PlateNumber = payInfo.carNo; result.CardNo = payInfo.carNo; result.ParkingID = SFMPKID; result.ExternalPKID = payInfo.Parking_Key; BaseParkinfo parking = ParkingServices.QueryParkingByParkingID(SystemDefaultConfig.SFMPKID); if (parking != null) { result.ParkName = parking.PKName; } result.EntranceDate = DateTime.Parse(payInfo.enterTime); result.OutTime = payInfo.freeTimeout.HasValue ? payInfo.freeTimeout.Value : 10; result.isAdd = true; result.PayDate = DateTime.Now; ParkOrder order = new ParkOrder(); order.RecordID = payInfo.ParkOrder_OrderNo; order.OrderNo = payInfo.ParkOrder_OrderNo; order.TagID = "1"; order.OrderType = OrderType.TempCardPayment; order.PayWay = OrderPayWay.WeiXin; order.DiscountAmount = payInfo.couponAmount.HasValue ? payInfo.couponAmount.Value : 0; order.Amount = payInfo.totalAmount.HasValue ? payInfo.totalAmount.Value : 0; order.UnPayAmount = 0; order.PayAmount = payInfo.payAmount.HasValue ? payInfo.payAmount.Value : 0; order.CarderateID = ""; order.Status = 0; order.OrderSource = OrderSource.WeiXin; order.OrderTime = DateTime.Now; order.PayTime = DateTime.Now; order.PKID = SFMPKID; order.UserID = ""; order.OnlineUserID = ""; order.OnlineOrderNo = ""; order.Remark = ""; result.Pkorder = order; result.OrderSource = PayOrderSource.SFM; return(result); }