private bool VehicleControlOpr(string vehicleID, string controlType, bool isTrue) { VehicleManager vehicleManager = new VehicleManager(); Hashtable ht = vehicleManager.GetVehicleInfoByID(vehicleID); string gps_ID = string.Empty; if (ht != null) { gps_ID = ht["VEHICLEGPSNUM"].ToString(); } if (controlType == VehicleControlType.Lock.GetHashCode().ToString()) { bool result = false; if (isTrue) { result = vehicleManager.CloseVehicle(vehicleID); } else { result = vehicleManager.OpenVehicle(vehicleID); } return(result); } else { return(false); } }
public string Execute(Hashtable params_ht) { Hashtable res = params_ht; if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0 || res["VID"] == null || res["VID"].ToString().Trim().Length <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整")); } else { uid = res["UID"].ToString().Trim(); vid = res["VID"].ToString().Trim(); VehicleManager vm = new VehicleManager(); Hashtable vehicle_ht = vm.GetVehicleInfoByID(vid); if (vehicle_ht == null) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "未找到相关车辆信息")); } Hashtable ht = new Hashtable(); ht["VehicleID"] = vehicle_ht["ID"]; ht["ParkingID"] = null; bool isSuccess = vm.AddOrEditVehicleInfo(ht, vehicle_ht["ID"].ToString()); if (!isSuccess) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "解绑车辆与网点失败")); } else { return(SiteHelper.GetJsonFromHashTable(null, "success", "解绑车辆与网点成功")); } } }
private void InitPage() { Hashtable ht = new Hashtable(); string fieldName = EnumHelper.GetEnumShowName(typeof(BusinessFieldType), FieldType); if (Request["type"] == BusinessType.Vehicle.GetHashCode().ToString()) { // 车辆详细(介绍、价格体系、用户须知) VehicleManager vehicleManager = new VehicleManager(); ht = vehicleManager.GetVehicleInfoByID(Request["id"]); } else if (Request["type"] == BusinessType.ChargingPies.GetHashCode().ToString()) { // 充电桩/停车场 ServiceAreaManager chargingPiesManager = new ServiceAreaManager(); ht = chargingPiesManager.GetInfoByID(Request["id"]); } else if (Request["type"] == BusinessType.Pits.GetHashCode().ToString()) { // 维修站 PitsManager pitsManager = new PitsManager(); ht = pitsManager.GetPitsInfoByID(Request["id"]); } if (ht != null && ht.Count > 0) { this.divContent.InnerHtml = ht[fieldName].ToString(); } }
public string Execute(Hashtable params_ht) { Hashtable res = params_ht; if (res["UID"] == null || res["VID"] == null || res["UID"].ToString().Trim().Length <= 0 || res["VID"].ToString().Trim().Length <= 0) { Hashtable result = new Hashtable(); result["ErrCode"] = "00";//服务器异常 return(SiteHelper.GetJsonFromHashTable(result, "faild", "参数不完整")); } else { uid = res["UID"].ToString().Trim(); vid = res["VID"].ToString().Trim(); VehicleManager vm = new VehicleManager(); Hashtable ht = vm.GetVehicleInfoByID(vid); if (ht == null) { Hashtable result = new Hashtable(); result["ErrCode"] = "01";//车辆未找到 return(SiteHelper.GetJsonFromHashTable(result, "faild", "未找到相关车辆信息")); } else { //占用车辆禁止操作 /*if (ht["USESTATE"].ToString() != "1") * { * OrdersManager om = new OrdersManager(); * Hashtable user_ht = om.GetLatestUserByVehicleID(vid); * if (user_ht != null && user_ht.Keys.Count > 0) * { * string vehicle_uid = SiteHelper.GetHashTableValueByKey(user_ht, "UserID"); * if (uid.CompareTo(vehicle_uid) != 0) * { * Hashtable result = new Hashtable(); * result["ErrCode"] = "02";//车辆已被占用 * return SiteHelper.GetJsonFromHashTable(result, "faild", "指令发送失败,车辆已被占用"); * } * } * }*/ bool isSuccess = vm.CloseBatteryLock(vid); if (!isSuccess) { Hashtable result = new Hashtable(); result["ErrCode"] = "04";//指令发送失败 return(SiteHelper.GetJsonFromHashTable(result, "faild", "指令发送失败")); } else { return(SiteHelper.GetJsonFromHashTable(null, "success", "指令发送成功")); } } } }
/// <summary> /// 初始化 /// </summary> private void InitData() { Hashtable ht = vehicleManager.GetVehicleInfoByID(_key); if (ht.Count > 0 && ht != null) { this.tab4.Visible = true; this.tab5.Visible = true; ControlBindHelper.SetWebControls(this.Page, ht); this.drpVModel.Value = ht["MODEL"].ToString(); } }
protected void Page_Load(object sender, EventArgs e) { string mapKey = SiteHelper.GetAppsetString("AMapBrowserKey"); ViewState["MapKey"] = mapKey; ViewState["VehicleID"] = Request["VehicleID"]; VehicleManager vehicleManager = new VehicleManager(); Hashtable ht = vehicleManager.GetVehicleInfoByID(Request["VehicleID"]); ViewState["CityID"] = ht["CityID"].ToString(); if (!this.IsPostBack) { } }
public string Execute(Hashtable params_ht) { Hashtable res = params_ht; if (res["UID"] == null || res["VID"] == null || res["ReturnType"] == null || res["UID"].ToString().Trim().Length <= 0 || res["VID"].ToString().Trim().Length <= 0 || res["ReturnType"].ToString().Trim().Length <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整")); } else { uid = res["UID"].ToString().Trim(); vid = res["VID"].ToString().Trim(); //异常还车类型:1收费,2不收费 returntype = res["ReturnType"].ToString().Trim(); VehicleManager vm = new VehicleManager(); UserInfoManager uim = new UserInfoManager(); OrdersManager om = new OrdersManager(); Hashtable vehicle_ht = vm.GetVehicleInfoByID(vid); if (vehicle_ht == null) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "未找到相关车辆信息")); } Hashtable order_ht = om.GetLatestUserOrder(vehicle_ht["ID"].ToString()); if (order_ht == null || order_ht.Keys.Count <= 0 || order_ht["ORDERSTATE"].ToString() != OrderState.Valid.GetHashCode().ToString()) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "车辆当前未被任何用户占用")); } bool isSuccess = false; if (returntype == "1") { isSuccess = uim.AbnormalReturnVehicle(order_ht["USERID"].ToString(), true); } else if (returntype == "2") { isSuccess = uim.AbnormalReturnVehicle(order_ht["USERID"].ToString(), false); } if (!isSuccess) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "异常还车操作失败")); } else { return(SiteHelper.GetJsonFromHashTable(null, "success", "异常还车操作成功")); } } }
public string Execute(Hashtable params_ht) { Hashtable res = params_ht; if (res["UID"] == null || res["VID"] == null || res["UID"].ToString().Trim().Length <= 0 || res["VID"].ToString().Trim().Length <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整")); } else { uid = res["UID"].ToString().Trim(); vid = res["VID"].ToString().Trim(); VehicleManager vm = new VehicleManager(); Hashtable vehicle_ht = vm.GetVehicleInfoByID(vid); if (vehicle_ht == null) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "未找到相关车辆信息")); } Hashtable ht = new Hashtable(); ht["ID"] = vehicle_ht["ID"]; ht["Electricity"] = 100; bool isSuccess = vm.AddOrEditVehicleInfo(ht, vehicle_ht["ID"].ToString()); if (!isSuccess) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "车辆电池更换失败")); } else { OPUserManager hum = new OPUserManager(); Hashtable userOperateHT = new Hashtable(); userOperateHT["ID"] = CommonHelper.GetGuid; userOperateHT["VehicleID"] = vid; userOperateHT["UserID"] = uid; userOperateHT["OperateType"] = 8; userOperateHT["OperateTypeText"] = "更换电池"; userOperateHT["Remark"] = ""; userOperateHT["OperateTime"] = SiteHelper.GetWebServerCurrentTime(); hum.AddUserOperate(userOperateHT); return(SiteHelper.GetJsonFromHashTable(null, "success", "车辆电池更换成功")); } } }
public string Execute(Hashtable params_ht) { Hashtable res = params_ht; if (res["UID"] == null || res["VehicleID"] == null || res["UID"].ToString().Trim().Length <= 0 || res["VehicleID"].ToString().Trim().Length <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整")); } else { uid = res["UID"].ToString().Trim(); vehicleid = res["VehicleID"].ToString().Trim(); VehicleManager vm = new VehicleManager(); OrdersManager om = new OrdersManager(); UserInfoManager uim = new UserInfoManager(); SysSettingManager settingManager = new SysSettingManager(); Hashtable vehicle = vm.GetVehicleInfoByID(vehicleid); if (vehicle == null || vehicle.Keys.Count == 0) { //根据车牌号码查询车辆信息 vehicle = vm.GetVehicleInfoByLicenseNumber(vehicleid); } //判断车辆是否存在 if (vehicle == null || vehicle.Keys.Count == 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "车辆预约失败,未找到车辆相关信息")); } vehicleid = SiteHelper.GetHashTableValueByKey(vehicle, "ID"); //判断预约车辆是否离线 DateTime lastUpdateTime; if (string.IsNullOrEmpty(SiteHelper.GetHashTableValueByKey(vehicle, "LastUpdateTime"))) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "当前车辆已离线无法约车")); } else { lastUpdateTime = DateTime.Parse(SiteHelper.GetHashTableValueByKey(vehicle, "LastUpdateTime")); if (SiteHelper.ExecDateDiff(lastUpdateTime, DateTime.Now) > 10) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "当前车辆已离线无法约车")); } } //判断预约车辆电量值 double electricity = 0.00; double.TryParse(SiteHelper.GetHashTableValueByKey(vehicle, "Electricity"), out electricity); if (electricity < 30) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "当前车辆电量过低无法约车")); } #region 判断车辆是否在运营区域内 ServiceAreaManager areaManager = new ServiceAreaManager(); Hashtable area_ht = areaManager.GetServiceAreaByVehicleID(vehicleid); if (area_ht != null && area_ht.Keys.Count > 0) { List <LatLng> area_pts = new List <LatLng>(); string coordinates = SiteHelper.GetHashTableValueByKey(area_ht, "Coordinates"); foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries)) { string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); LatLng pt = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0])); area_pts.Add(pt); } string longitude = SiteHelper.GetHashTableValueByKey(vehicle, "longitude"); string latitude = SiteHelper.GetHashTableValueByKey(vehicle, "latitude"); LatLng vehicle_pt = new LatLng(double.Parse(latitude), double.Parse(longitude)); //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt); vehicle_pt = SiteHelper.GPSToGCJ02(longitude, latitude); vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6)); bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, area_pts); if (!isInPoly) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "车辆预约失败,车辆处于运营区域外")); } } #endregion #region 判断车辆是否在停车点内 /*string returnVehicleMode = settingManager.GetValueByKey("ReturnVehicleMode"); * Hashtable parking_ht = areaManager.GetNearestParking(SiteHelper.GetHashTableValueByKey(vehicle, "longitude"), SiteHelper.GetHashTableValueByKey(vehicle, "latitude"), vehicleid); * if (returnVehicleMode == "1" && parking_ht != null && parking_ht.Keys.Count > 0) * { * List<LatLng> parking_pts = new List<LatLng>(); * string coordinates = SiteHelper.GetHashTableValueByKey(parking_ht, "Coordinates"); * foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries)) * { * string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); * LatLng pt = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0])); * parking_pts.Add(pt); * } * string longitude = SiteHelper.GetHashTableValueByKey(vehicle, "longitude"); * string latitude = SiteHelper.GetHashTableValueByKey(vehicle, "latitude"); * LatLng vehicle_pt = new LatLng(double.Parse(latitude),double.Parse(longitude)); * //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt); * vehicle_pt = SiteHelper.GPSToGCJ02(longitude,latitude); * vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6),Math.Round(vehicle_pt.longitude, 6)); * bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, parking_pts); * if (!isInPoly) * { * return SiteHelper.GetJsonFromHashTable(null, "faild", "车辆预约失败,车辆处于停车网点外"); * } * }*/ #endregion //判断车辆是否可用 if (SiteHelper.GetHashTableValueByKey(vehicle, "UseState").Trim() == VehicleUseState.Free.GetHashCode().ToString() && SiteHelper.GetHashTableValueByKey(vehicle, "VehicleState").Trim() == VehicleState.Use.GetHashCode().ToString()) { //判断用户余额是否充足 Hashtable user = uim.GetUserInfoByUserID(uid); if (user == null || user.Keys.Count <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您不是有效会员")); } else { if ("2".CompareTo(user["REALNAMECERTIFICATION"].ToString()) == 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "当前认证正在审核中,请耐心等待")); } //验证用户是否经过身份认证 if ("4".CompareTo(user["REALNAMECERTIFICATION"].ToString()) != 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前未完成实名认证,请完成实名认证后重试")); } //验证用户状态是否有效 if ("0".CompareTo(user["USERSTATE"].ToString()) == 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前已被禁用无法预约车辆,如有问题请与客服联系")); } //判断用户是否缴纳押金 decimal deposit = 0.00m; decimal.TryParse(user["DEPOSIT"].ToString(), out deposit); if (user["USERTYPE"].ToString() != UserType.OffDepositUser.GetHashCode().ToString() && deposit <= 0.00m) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前未缴纳用车押金,请完成押金缴纳后重试")); } } //判断用户是否存在未支付订单 if (om.IsExistUnPayOrderByUser(uid)) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您当前有未支付订单,请完成支付后重试")); } //判断会员是否有条件预约 bool isExist = om.IsExistVehicleOrderByUser(uid); if (isExist) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "您已经预约过车辆了")); } else { //如果是扫码用车 if (res["isopen"] != null && res["isopen"].ToString() == "1") { string gpsnum = SiteHelper.GetHashTableValueByKey(vehicle, "VehicleGPSNum"); //开车 bool isOpen = vm.OpenVehicle(vehicleid); if (!isOpen)//开车失败 { return(SiteHelper.GetJsonFromHashTable(null, "faild", "非常抱歉,由于车辆启动失败本次扫码用车失败,请选择其他车辆或稍后重试")); } else//开车成功 { string orderID = string.Empty; string orderNum = string.Empty; //提交订单 bool isSuccess = OrderVehicle(res, vehicle, user, out orderID, out orderNum); if (!isSuccess) { isOpen = vm.CloseVehicle(vehicleid); return(SiteHelper.GetJsonFromHashTable(null, "faild", "车辆预约失败,请联系管理员")); } else { return(SiteHelper.GetJsonFromHashTable(null, "success", "车辆预约成功并已开启,欢迎驾驶电斑马")); } } } else //不是扫码用车 { string orderID = string.Empty; string orderNum = string.Empty; //提交订单 bool isSuccess = OrderVehicle(res, vehicle, user, out orderID, out orderNum); if (isSuccess) { return(SiteHelper.GetJsonFromHashTable(null, "success", "车辆预约成功")); } else { return(SiteHelper.GetJsonFromHashTable(null, "faild", "车辆预约失败,请联系管理员")); } } } } else { return(SiteHelper.GetJsonFromHashTable(null, "faild", "预约失败,车辆不允许预约")); } } }
public string Execute(Hashtable params_ht) { Hashtable res = params_ht; if (res["UID"] == null || res["VID"] == null || res["Opr"] == null || res["UID"].ToString().Trim().Length <= 0 || res["VID"].ToString().Trim().Length <= 0 || res["Opr"].ToString().Trim().Length <= 0) { Hashtable result = new Hashtable(); result["ErrCode"] = "00";//服务器异常 return(SiteHelper.GetJsonFromHashTable(result, "faild", "参数不完整")); } else { uid = res["UID"].ToString().Trim(); vid = res["VID"].ToString().Trim(); //opr,0:开1:关 opr = res["Opr"].ToString().Trim(); VehicleManager vm = new VehicleManager(); Hashtable ht = vm.GetVehicleInfoByID(vid); if (ht == null) { Hashtable result = new Hashtable(); result["ErrCode"] = "01";//车辆未找到 return(SiteHelper.GetJsonFromHashTable(result, "faild", "未找到相关车辆信息")); } else { //客户占用车辆时禁止操作 if (ht["USESTATE"].ToString() == VehicleUseState.Order.GetHashCode().ToString() || ht["USESTATE"].ToString() == VehicleUseState.Reservation.GetHashCode().ToString()) { Hashtable result = new Hashtable(); result["ErrCode"] = "02";//车辆已被占用 return(SiteHelper.GetJsonFromHashTable(result, "faild", "指令发送失败,车辆已被客户占用")); } string gpsnum = SiteHelper.GetHashTableValueByKey(ht, "VehicleGPSNum"); bool isSuccess = false; if (opr == "0") { isSuccess = vm.OpenVehicle(vid); } else { isSuccess = vm.CloseVehicle(vid); } if (!isSuccess) { Hashtable result = new Hashtable(); result["ErrCode"] = "04";//指令发送失败 return(SiteHelper.GetJsonFromHashTable(result, "faild", "指令发送失败")); } else { Hashtable vht = new Hashtable(); vht["ID"] = vid; vht["UseState"] = opr == "0" ? 4 : 1; vm.AddOrEditVehicleInfo(vht, vid); OPUserManager hum = new OPUserManager(); Hashtable userOperateHT = new Hashtable(); userOperateHT["ID"] = CommonHelper.GetGuid; userOperateHT["VehicleID"] = vid; userOperateHT["UserID"] = uid; userOperateHT["OperateType"] = opr == "0" ? 1 : 2; userOperateHT["OperateTypeText"] = opr == "0" ? "开车" : "锁车"; userOperateHT["Remark"] = ""; userOperateHT["OperateTime"] = SiteHelper.GetWebServerCurrentTime(); hum.AddUserOperate(userOperateHT); return(SiteHelper.GetJsonFromHashTable(null, "success", "指令发送成功")); } } } }
public string Execute(Hashtable params_ht) { Hashtable res = params_ht; if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整")); } else { uid = res["UID"].ToString().Trim(); if (res["Longitude"] != null && res["Longitude"].ToString().Trim().Length > 0) { userLng = res["Longitude"].ToString().Trim(); } if (res["Latitude"] != null && res["Latitude"].ToString().Trim().Length > 0) { userLat = res["Latitude"].ToString().Trim(); } cacheKey += uid; ICache cache = null; cache = CacheFactory.GetCache(); if (!string.IsNullOrEmpty(cache.Get <string>(cacheKey))) { if (cache != null) { cache.Dispose(); } Logger.Error("还车10秒内," + uid); return(SiteHelper.GetJsonFromHashTable(null, "faild", "还车处理中,请勿重复点击")); } else { DateTime dt = DateTime.Now.AddSeconds(10); cache.Set(cacheKey, uid, dt - DateTime.Now); //cache.Dispose(); } /*if (cache != null) * { * cache.Dispose(); * }*/ UserInfoManager uim = new UserInfoManager(); OrdersManager om = new OrdersManager(); VehicleManager vm = new VehicleManager(); ServiceAreaManager areaManager = new ServiceAreaManager(); SysSettingManager settingManager = new SysSettingManager(); Hashtable order = om.GetUserCurrentOrderVehicle(uid); //判断是否有车 if (order == null) { if (cache != null) { cache.Dispose(); } return(SiteHelper.GetJsonFromHashTable(null, "faild", "您没有车辆无法还车")); } else { //车辆坐标 string longitude = SiteHelper.GetHashTableValueByKey(order, "Longitude"); string latitude = SiteHelper.GetHashTableValueByKey(order, "Latitude"); string orderNum = SiteHelper.GetHashTableValueByKey(order, "OrderNum"); Hashtable userht = uim.GetUserInfoByUserID(uid); decimal balance = 0.00m, raiseBalance = 0.00m; decimal.TryParse(SiteHelper.GetHashTableValueByKey(userht, "Balance"), out balance); decimal.TryParse(SiteHelper.GetHashTableValueByKey(userht, "RaiseBalance"), out raiseBalance); //处理订单 if (order == null) { if (cache != null) { cache.Dispose(); } return(SiteHelper.GetJsonFromHashTable(null, "faild", "还车操作失败,请联系管理员")); } else { int renttime = 0; int.TryParse(SiteHelper.GetHashTableValueByKey(order, "RentDuration"), out renttime); decimal hours = 0.00m; decimal kmprice = 0.80m; decimal minuteprice = 0.40m; decimal mileage = 0; int minutes = 0; decimal userprivilegeratio = 1; decimal raisecommisssionratio = 0.10m; decimal TotalMoney = 0.00m; decimal SettlementMoney = 0.00m; decimal occupyMoney = 0.0m; decimal payMoney = 0.00m; decimal RaiseCommissionMoney = 0.00m; decimal outServiceAreaFee = 0.00m; DateTime createtime = DateTime.Now; DateTime startTime = DateTime.Now; String returnParkingID = null, returnLocType = null; decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "KMPrice"), out kmprice); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "MinutePrice"), out minuteprice); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "Mileage"), out mileage); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "UserPrivilegeRatio"), out userprivilegeratio); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "RaiseCommissionRatio"), out raisecommisssionratio); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "TotalMoney"), out TotalMoney); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "SettlementMoney"), out SettlementMoney); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "OccupyMoney"), out occupyMoney); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "RaiseCommissionMoney"), out RaiseCommissionMoney); DateTime.TryParse(SiteHelper.GetHashTableValueByKey(order, "CreateTime"), out createtime); DateTime.TryParse(SiteHelper.GetHashTableValueByKey(order, "StartTime"), out startTime); int startminutes = 0; int.TryParse(SiteHelper.GetHashTableValueByKey(order, "StartMinutes"), out startminutes); string strStartTime = SiteHelper.GetHashTableValueByKey(order, "StartTime"); LatLng vehicle_pt = new LatLng(double.Parse(latitude), double.Parse(longitude)); //车辆GPS坐标转高德坐标 vehicle_pt = SiteHelper.GPSToGCJ02(longitude, latitude); vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6)); string cityCacheKey = "Vehicle_City_" + SiteHelper.GetHashTableValueByKey(order, "VID"); string cityId = cache.Get <string>(cityCacheKey); if (string.IsNullOrEmpty(cityId)) { Hashtable vehicle_ht = vm.GetVehicleInfoByID(SiteHelper.GetHashTableValueByKey(order, "VID")); cityId = vehicle_ht["CITYID"].ToString(); DateTime timeSpan = DateTime.Now.AddHours(2); cache.Set(cityCacheKey, cityId, timeSpan - DateTime.Now); } string serviceAreaKey = "Service_Area_" + cityId; string coordinates = cache.Get <string>(serviceAreaKey); if (string.IsNullOrEmpty(coordinates)) { Hashtable area_ht = areaManager.GetServiceAreaByVehicleID(SiteHelper.GetHashTableValueByKey(order, "VID")); if (area_ht != null && area_ht.Keys.Count > 0) { coordinates = SiteHelper.GetHashTableValueByKey(area_ht, "Coordinates"); if (!string.IsNullOrEmpty(coordinates)) { DateTime timeSpan = DateTime.Now.AddDays(10); cache.Set(serviceAreaKey, coordinates, timeSpan - DateTime.Now); } } } List <LatLng> area_pts = new List <LatLng>(); bool isInPoly = true; string outServiceAreaReturn = settingManager.GetValueByKey("OutServiceAreaReturn"); if (!string.IsNullOrEmpty(coordinates)) { foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries)) { string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); LatLng pt = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0])); area_pts.Add(pt); } isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, area_pts); if (!isInPoly && "0".Equals(outServiceAreaReturn)) { if (cache != null) { cache.Dispose(); } Logger.Info("用户:" + uid + ",订单:" + orderNum + ",在运营区域外被禁止还车"); return(SiteHelper.GetJsonFromHashTable(null, "faild", "运营区域外禁止还车,请骑回运营区域再还车")); } } string gpsnum = SiteHelper.GetHashTableValueByKey(order, "VehicleGPSNum"); //锁车 bool isSuccess = vm.CloseVehicle(SiteHelper.GetHashTableValueByKey(order, "VID")); if (!isSuccess) { Logger.Error("用户:" + uid + ",订单:" + orderNum + ",还车锁车失败:" + gpsnum); } VehiclePriceManager priceManager = new VehiclePriceManager(); Hashtable billing_ht = priceManager.GetOrderSettlement(SiteHelper.GetHashTableValueByKey(order, "OrderID")); decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "MinutePrice"), out minuteprice); decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "KmPrice"), out kmprice); int.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "Minutes"), out minutes); decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "TotalMoney"), out TotalMoney); SettlementMoney = TotalMoney; #region 判断还车点是否在运营区域内,运营区域外加收费用 if (TotalMoney > 0 && !string.IsNullOrEmpty(coordinates)) { returnLocType = "03"; //bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, area_pts); string vehicleInArea = isInPoly ? "在运营区域内还车" : "在运营区域外还车"; Logger.Info("用户:" + uid + ",订单:" + SiteHelper.GetHashTableValueByKey(order, "OrderID") + "," + vehicleInArea + "车辆GPS坐标:" + longitude + "," + latitude + ",高德坐标:" + vehicle_pt.longitude + "," + vehicle_pt.latitude); bool isInPoly2 = false;//用户坐标是否在区域内 if (!string.IsNullOrEmpty(userLng) && !string.IsNullOrEmpty(userLat)) { LatLng user_pt = new LatLng(double.Parse(userLat), double.Parse(userLng)); isInPoly2 = SiteHelper.IsPtInPoly(user_pt, area_pts); } //string userInArea = isInPoly2 ? "用户在运营区域内" : "用户在运营区域外"; //车辆在运营区域外,不判断用户位置 if (!isInPoly && !isInPoly2) if (!isInPoly) { returnLocType = "04"; string serviceFee = settingManager.GetValueByKey("OutServiceAreaFee"); if (serviceFee.StartsWith("+")) { serviceFee = serviceFee.Substring(1, serviceFee.Length - 1); decimal.TryParse(serviceFee, out outServiceAreaFee); TotalMoney = TotalMoney + outServiceAreaFee; } else { serviceFee = serviceFee.Substring(1, serviceFee.Length - 1); decimal.TryParse(serviceFee, out outServiceAreaFee); TotalMoney = TotalMoney * outServiceAreaFee; } outServiceAreaFee = TotalMoney - SettlementMoney; Logger.Info("订单: " + orderNum + ",加收调度费值:" + serviceFee + ",加收调度费金额:" + outServiceAreaFee); } } #endregion #region 判断还车点是否在停车点内,否则加收费用 string returnVehicleMode = settingManager.GetValueByKey("ReturnVehicleMode"); if (TotalMoney > 0 && outServiceAreaFee == 0 && returnVehicleMode == "1") { returnLocType = "01"; DataTable parking_dt = areaManager.GetNearestParkingsByCity(vehicle_pt.longitude.ToString(), vehicle_pt.latitude.ToString(), cityId); if (parking_dt != null) { //bool isInPoly = false; bool isInPoly2 = false;//用户坐标是否在区域内 foreach (DataRow dr in parking_dt.Rows) { List <LatLng> parking_pts = new List <LatLng>(); returnParkingID = dr["ID"].ToString(); coordinates = dr["Coordinates"].ToString(); foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries)) { string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); LatLng pt = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0])); parking_pts.Add(pt); } isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, parking_pts); if (!string.IsNullOrEmpty(userLng) && !string.IsNullOrEmpty(userLat)) { LatLng user_pt = new LatLng(double.Parse(userLat), double.Parse(userLng)); isInPoly2 = SiteHelper.IsPtInPoly(user_pt, parking_pts); } string vehicleInArea = isInPoly ? "在停车点内还车" : "在停车点外还车"; string userInArea = isInPoly2 ? "用户在停车点内" : "用户在停车点外"; Logger.Info("用户:" + uid + ",订单:" + orderNum + "," + vehicleInArea + ",车辆GPS坐标:" + longitude + "," + latitude + ",高德坐标:" + vehicle_pt.longitude + "," + vehicle_pt.latitude + ",用户高德坐标:" + userLng + "," + userLat + "," + userInArea); if (isInPoly || isInPoly2) { break; } } if (!isInPoly && !isInPoly2) { returnLocType = "02"; returnParkingID = null; string serviceFee = settingManager.GetValueByKey("OutParkingAreaFee"); if (serviceFee.StartsWith("+")) { serviceFee = serviceFee.Substring(1, serviceFee.Length - 1); decimal.TryParse(serviceFee, out outServiceAreaFee); TotalMoney = TotalMoney + outServiceAreaFee; } else { serviceFee = serviceFee.Substring(1, serviceFee.Length - 1); decimal.TryParse(serviceFee, out outServiceAreaFee); TotalMoney = TotalMoney * outServiceAreaFee; } outServiceAreaFee = TotalMoney - SettlementMoney; Logger.Info("用户:" + uid + ",订单:" + orderNum + "加收调度费值:" + serviceFee + ",加收调度费金额:" + outServiceAreaFee); } } } #endregion payMoney = TotalMoney; Hashtable userParm = new Hashtable(); userParm["VID"] = SiteHelper.GetHashTableValueByKey(order, "VID"); userParm["OrderNum"] = SiteHelper.GetHashTableValueByKey(order, "OrderNum"); userParm["TotalMoney"] = TotalMoney; userParm["SettlementMoney"] = SettlementMoney; userParm["PayMoney"] = payMoney; userParm["PayTime"] = SiteHelper.GetWebServerCurrentTime().ToString(); userParm["EndTime"] = SiteHelper.GetWebServerCurrentTime().ToString(); userParm["FinishedTime"] = SiteHelper.GetWebServerCurrentTime().ToString(); userParm["OID"] = SiteHelper.GetHashTableValueByKey(order, "orderid"); userParm["ChangesAmount"] = -Math.Abs(TotalMoney); userParm["UserFinancialID"] = CommonHelper.GetGuid; userParm["UserID"] = uid; userParm["ChangesTime"] = SiteHelper.GetWebServerCurrentTime().ToString(); userParm["ChangesType"] = UserFinancialChangesType.Consumption.GetHashCode().ToString(); userParm["OrderID"] = SiteHelper.GetHashTableValueByKey(order, "orderid"); userParm["RentDuration"] = hours; userParm["Remark"] = "用户还车"; userParm["Minutes"] = minutes; userParm["DiffMoney"] = TotalMoney; userParm["Operator"] = ""; userParm["OperatorType"] = UserFinancialOperatorType.Admin.GetHashCode().ToString(); userParm["State"] = UserFinancialState.Effect.GetHashCode().ToString(); userParm["MessageID"] = CommonHelper.GetGuid; userParm["OutServiceAreaFee"] = (int)outServiceAreaFee; userParm["ReturnParkingID"] = returnParkingID; userParm["ReturnLocType"] = returnLocType; if (cache != null) { cache.Dispose(); } bool isSettlementSuccess = uim.ReturnVehicle(userParm); if (isSettlementSuccess) { om.UpdateOrderGPS(SiteHelper.GetHashTableValueByKey(order, "orderid"), false); Hashtable ht = om.GetOrderByNum(SiteHelper.GetHashTableValueByKey(order, "OrderNum")); return(SiteHelper.GetJsonFromHashTable(ht, "success", "还车成功", "OrderInfo")); } else { return(SiteHelper.GetJsonFromHashTable(null, "faild", "还车失败,请联系管理员")); } } } } }
/// <summary> /// 还车 /// </summary> /// <param name="order_no"></param> /// <param name="errmsg"></param> /// <returns></returns> private bool ReturnVehicle(string order_no, out string errmsg) { BaoJiaManager mgr = new BaoJiaManager(); VehicleManager vm = new VehicleManager(); ServiceAreaManager areaManager = new ServiceAreaManager(); SysSettingManager settingManager = new SysSettingManager(); Hashtable order = mgr.GetOrderInfo(order_no); //判断是否有车 if (order == null) { errmsg = "未找到相关订单"; return(false); } else { string vid = SiteHelper.GetHashTableValueByKey(order, "VehicleID"); Hashtable vehicle_ht = vm.GetVehicleInfoByID(vid); string longitude = SiteHelper.GetHashTableValueByKey(vehicle_ht, "Longitude"); string latitude = SiteHelper.GetHashTableValueByKey(vehicle_ht, "Latitude"); //处理订单 string order_state = SiteHelper.GetHashTableValueByKey(order, "OrderState"); if (order_state != "1") { errmsg = "订单当前所在状态无法还车"; return(false); } else { int renttime = 0; int.TryParse(SiteHelper.GetHashTableValueByKey(order, "RentDuration"), out renttime); decimal hours = 0.00m; decimal kmprice = 0.80m; decimal minuteprice = 0.40m; decimal mileage = 0; int minutes = 0; decimal userprivilegeratio = 1; decimal raisecommisssionratio = 0.10m; decimal TotalMoney = 0.00m; decimal SettlementMoney = 0.00m; decimal occupyMoney = 0.0m; decimal payMoney = 0.00m; decimal RaiseCommissionMoney = 0.00m; decimal outServiceAreaFee = 0.00m; DateTime createtime = DateTime.Now; DateTime startTime = DateTime.Now; String returnParkingID = null, returnLocType = null; decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "KMPrice"), out kmprice); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "MinutePrice"), out minuteprice); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "Mileage"), out mileage); //decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "Minutes"), out minutes); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "UserPrivilegeRatio"), out userprivilegeratio); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "RaiseCommissionRatio"), out raisecommisssionratio); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "TotalMoney"), out TotalMoney); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "SettlementMoney"), out SettlementMoney); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "OccupyMoney"), out occupyMoney); decimal.TryParse(SiteHelper.GetHashTableValueByKey(order, "RaiseCommissionMoney"), out RaiseCommissionMoney); DateTime.TryParse(SiteHelper.GetHashTableValueByKey(order, "CreateTime"), out createtime); DateTime.TryParse(SiteHelper.GetHashTableValueByKey(order, "StartTime"), out startTime); int startminutes = 0; int.TryParse(SiteHelper.GetHashTableValueByKey(order, "StartMinutes"), out startminutes); string strStartTime = SiteHelper.GetHashTableValueByKey(order, "StartTime"); string gpsnum = SiteHelper.GetHashTableValueByKey(order, "VehicleGPSNum"); //锁车 bool isSuccess = vm.CloseVehicle(SiteHelper.GetHashTableValueByKey(order, "VehicleID")); if (!isSuccess) { errmsg = "锁车失败,还车操作失败"; return(false); } VehiclePriceManager priceManager = new VehiclePriceManager(); Hashtable billing_ht = priceManager.GetOrderSettlement(SiteHelper.GetHashTableValueByKey(order, "ID")); decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "MinutePrice"), out minuteprice); decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "KmPrice"), out kmprice); int.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "Minutes"), out minutes); decimal.TryParse(SiteHelper.GetHashTableValueByKey(billing_ht, "TotalMoney"), out TotalMoney); SettlementMoney = TotalMoney; #region 判断还车点是否在运营区域内,运营区域外加收费用 Hashtable area_ht = areaManager.GetServiceAreaByVehicleID(SiteHelper.GetHashTableValueByKey(order, "VehicleID")); if (area_ht != null && area_ht.Keys.Count > 0) { returnLocType = "03"; List <LatLng> area_pts = new List <LatLng>(); string coordinates = SiteHelper.GetHashTableValueByKey(area_ht, "Coordinates"); foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries)) { string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); LatLng pt = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0])); area_pts.Add(pt); } LatLng vehicle_pt = new LatLng(double.Parse(latitude), double.Parse(longitude)); //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt); vehicle_pt = SiteHelper.GPSToGCJ02(longitude, latitude); vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6)); bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, area_pts); if (!isInPoly) { returnLocType = "04"; string serviceFee = settingManager.GetValueByKey("OutServiceAreaFee"); if (serviceFee.StartsWith("+")) { serviceFee = serviceFee.Substring(1, serviceFee.Length - 1); decimal.TryParse(serviceFee, out outServiceAreaFee); TotalMoney = TotalMoney + outServiceAreaFee; } else { serviceFee = serviceFee.Substring(1, serviceFee.Length - 1); decimal.TryParse(serviceFee, out outServiceAreaFee); TotalMoney = TotalMoney * outServiceAreaFee; } outServiceAreaFee = TotalMoney - SettlementMoney; } } #endregion #region 判断还车点是否在停车点内,否则加收费用 string returnVehicleMode = settingManager.GetValueByKey("ReturnVehicleMode"); if (outServiceAreaFee == 0 && returnVehicleMode == "1") { returnLocType = "01"; LatLng vehicle_pt = new LatLng(double.Parse(latitude), double.Parse(longitude)); //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt); vehicle_pt = SiteHelper.GPSToGCJ02(longitude, latitude); vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6)); Hashtable parking_ht = areaManager.GetNearestParking(vehicle_pt.longitude.ToString(), vehicle_pt.latitude.ToString(), SiteHelper.GetHashTableValueByKey(order, "VehicleID")); List <LatLng> parking_pts = new List <LatLng>(); if (parking_ht != null && parking_ht.Keys.Count > 0) { returnParkingID = SiteHelper.GetHashTableValueByKey(parking_ht, "ID"); string coordinates = SiteHelper.GetHashTableValueByKey(parking_ht, "Coordinates"); foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries)) { string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); LatLng pt = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0])); parking_pts.Add(pt); } } bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, parking_pts); if (!isInPoly) { returnLocType = "02"; returnParkingID = null; string serviceFee = settingManager.GetValueByKey("OutParkingAreaFee"); if (serviceFee.StartsWith("+")) { serviceFee = serviceFee.Substring(1, serviceFee.Length - 1); decimal.TryParse(serviceFee, out outServiceAreaFee); TotalMoney = TotalMoney + outServiceAreaFee; } else { serviceFee = serviceFee.Substring(1, serviceFee.Length - 1); decimal.TryParse(serviceFee, out outServiceAreaFee); TotalMoney = TotalMoney * outServiceAreaFee; } outServiceAreaFee = TotalMoney - SettlementMoney; } } #endregion payMoney = TotalMoney; Hashtable userParm = new Hashtable(); userParm["VID"] = SiteHelper.GetHashTableValueByKey(order, "VehicleID"); userParm["OrderNum"] = SiteHelper.GetHashTableValueByKey(order, "OrderNum"); userParm["TotalMoney"] = TotalMoney; userParm["SettlementMoney"] = SettlementMoney; userParm["PayMoney"] = payMoney; userParm["PayTime"] = SiteHelper.GetWebServerCurrentTime().ToString(); userParm["EndTime"] = SiteHelper.GetWebServerCurrentTime().ToString(); userParm["FinishedTime"] = SiteHelper.GetWebServerCurrentTime().ToString(); userParm["OID"] = SiteHelper.GetHashTableValueByKey(order, "id"); userParm["ChangesAmount"] = -Math.Abs(TotalMoney); userParm["UserFinancialID"] = CommonHelper.GetGuid; userParm["UserID"] = null; userParm["ChangesTime"] = SiteHelper.GetWebServerCurrentTime().ToString(); userParm["ChangesType"] = UserFinancialChangesType.Consumption.GetHashCode().ToString(); userParm["OrderID"] = SiteHelper.GetHashTableValueByKey(order, "id"); userParm["RentDuration"] = hours; userParm["Remark"] = "用户还车"; userParm["Minutes"] = minutes; userParm["DiffMoney"] = TotalMoney; userParm["Operator"] = ""; userParm["OperatorType"] = UserFinancialOperatorType.Admin.GetHashCode().ToString(); userParm["State"] = UserFinancialState.Effect.GetHashCode().ToString(); userParm["MessageID"] = CommonHelper.GetGuid; userParm["OutServiceAreaFee"] = (int)outServiceAreaFee; userParm["ReturnParkingID"] = returnParkingID; userParm["ReturnLocType"] = returnLocType; bool isSettlementSuccess = mgr.ReturnVehicle(userParm); if (isSettlementSuccess) { OrdersManager om = new OrdersManager(); om.UpdateOrderGPS(SiteHelper.GetHashTableValueByKey(order, "id"), false); errmsg = "还车成功"; return(true); } else { errmsg = "锁车操作失败"; return(false); } } } }
private bool OrderVehicle(string out_order_no, string username, string mobile, string cardno, string vehicleid, out string orderID, out string orderNum) { orderID = CommonHelper.GetGuid; orderNum = SiteHelper.GenerateOrderNum(); bool result = false; try { VehicleManager vm = new VehicleManager(); Hashtable vehicle = vm.GetVehicleInfoByID(vehicleid); string km_price = "", minute_price = ""; VehiclePriceManager vp = new VehiclePriceManager(); Hashtable price_ht = vp.GetVehiclePrice(vehicleid); if (price_ht != null && price_ht.Keys.Count > 0) { km_price = price_ht["KmPrice"].ToString(); minute_price = price_ht["MinutePrice"].ToString(); } int renttime = 0; decimal TotalMoney = 0; decimal SettlementMoney = TotalMoney; Hashtable param = new Hashtable(); param["VID"] = vehicleid; param["OID"] = orderID; param["OrderNum"] = orderNum; param["UserID"] = null; param["VehicleID"] = vehicleid; param["KMPrice"] = km_price; param["MinutePrice"] = minute_price; param["Mileage"] = 0; param["Minutes"] = 0; param["PayState"] = OrderPayState.NotPay.GetHashCode(); param["PayState"] = OrderPayState.NotPay.GetHashCode(); param["OrderState"] = OrderState.Valid.GetHashCode(); param["CreateTime"] = SiteHelper.GetWebServerCurrentTime(); param["OrderRemark"] = ""; param["RentDuration"] = renttime; param["TotalMoney"] = TotalMoney; param["SettlementMoney"] = SettlementMoney; param["PayMoney"] = SettlementMoney; param["PayTime"] = SiteHelper.GetWebServerCurrentTime().ToString(); param["FinishedTime"] = SiteHelper.GetWebServerCurrentTime().ToString(); param["ChangesAmount"] = -Math.Abs(SettlementMoney); param["UserFinancialID"] = CommonHelper.GetGuid; param["ChangesTime"] = SiteHelper.GetWebServerCurrentTime().ToString(); param["ChangesType"] = UserFinancialChangesType.Consumption.GetHashCode().ToString(); param["Remark"] = ""; param["Operator"] = ""; param["OperatorType"] = UserFinancialOperatorType.Admin.GetHashCode().ToString(); param["OperatorWay"] = UserFinancialOperatorWay.Plat.GetHashCode().ToString(); param["State"] = UserFinancialState.Effect.GetHashCode().ToString(); param["MessageID"] = CommonHelper.GetGuid; param["CityID"] = SiteHelper.GetHashTableValueByKey(vehicle, "CityID").ToString(); param["RealName"] = username; param["BindPhone"] = mobile; param["IDCardNum"] = cardno; param["OutOrderNo"] = out_order_no; param["OrderSource"] = "02"; param["FromParking"] = SiteHelper.GetHashTableValueByKey(vehicle, "ParkingID").ToString(); BaoJiaManager mgr = new BaoJiaManager(); result = mgr.OrderVehicle(param); return(result); } catch { return(result); } }
public string Execute(Hashtable params_ht) { Hashtable res = params_ht; if (res["VehicleID"] == null || res["Latitude"] == null || res["Longitude"] == null || res["VehicleID"].ToString().Trim().Length <= 0 || res["Latitude"].ToString().Trim().Length <= 0 || res["Longitude"].ToString().Trim().Length <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整")); } else { vehicleID = res["VehicleID"].ToString().Trim(); weidu = res["Latitude"].ToString().Trim(); jingdu = res["Longitude"].ToString().Trim(); VehicleManager vm = new VehicleManager(); SystemImagesManager sim = new SystemImagesManager(); //如何扫码内容为url地址则从地址中取出车辆id if (vehicleID != null && (vehicleID.StartsWith("http://") || vehicleID.StartsWith("https://"))) { //http://api.qingniaokeji.cn/download/app.aspx?no=xxxxxxxxxxxxx Uri uri = new Uri(vehicleID); System.Collections.Specialized.NameValueCollection coll = System.Web.HttpUtility.ParseQueryString(uri.Query); vehicleID = coll.Get("no"); } Hashtable vehicle = vm.GetVehicleInfoByID(vehicleID, weidu, jingdu); if (vehicle == null || vehicle.Keys.Count <= 0) { vehicle = vm.GetVehicleInfoByName(vehicleID, weidu, jingdu); } string thumbImg = string.Empty; string detailsImg = string.Empty; if (vehicle == null || vehicle.Keys.Count <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "车辆数据为空")); } else { DataTable dt = sim.GetImagesByVehicleID(vehicleID); if (dt != null) { foreach (DataRow dr in dt.Rows) { if (dr["Type"].ToString().Trim() == ((int)ImagesType.Thumbnail).ToString().Trim()) { thumbImg += SiteHelper.GetFileServer() + dr["ImageUrl"].ToString().Trim() + ";"; } if (dr["Type"].ToString().Trim() == ((int)ImagesType.Details).ToString().Trim()) { detailsImg += SiteHelper.GetFileServer() + dr["ImageUrl"].ToString().Trim() + ";"; } } } vehicle["THUMBIMG"] = thumbImg; vehicle["DETAILSIMG"] = detailsImg; string lng = vehicle["LONGITUDE"].ToString(); string lat = vehicle["LATITUDE"].ToString(); if (!string.IsNullOrEmpty(lng) && !string.IsNullOrEmpty(lat)) { LatLng latlng = new LatLng(double.Parse(lat), double.Parse(lng)); if (res["Client"] != null && "iOS" == res["Client"].ToString()) { latlng = new LatLng(double.Parse(lat), double.Parse(lng)); latlng = SiteHelper.TransformFromWGSToGCJ(latlng); vehicle["LONGITUDE"] = latlng.longitude; vehicle["LATITUDE"] = latlng.latitude; } else { /*latlng = SiteHelper.GetBaiduByGPS(lat, lng); * if (latlng != null) * { * vehicle["LATITUDE"] = latlng.latitude; * vehicle["LONGITUDE"] = latlng.longitude; * if (vehicle["ADDRESS"].ToString().Length <= 0) * { * vehicle["ADDRESS"] = SiteHelper.GetLocationByGPS(vehicle["LATITUDE"].ToString(), vehicle["LONGITUDE"].ToString()); * } * }*/ latlng = new LatLng(double.Parse(lat), double.Parse(lng)); latlng = SiteHelper.TransformFromWGSToGCJ(latlng); vehicle["LONGITUDE"] = latlng.longitude; vehicle["LATITUDE"] = latlng.latitude; string citycode = "", cityname = ""; vehicle["ADDRESS"] = SiteHelper.GetAddressInfoByGPS(latlng.longitude.ToString(), latlng.latitude.ToString(), out citycode, out cityname); } } decimal electricity = 0; decimal.TryParse(vehicle["ELECTRICITY"].ToString(), out electricity); int dianliang = Decimal.ToInt32(electricity); vehicle["ELECTRICITY"] = dianliang + "%"; vehicle["PRICESYSTEM"] = SiteHelper.GetFileServer() + "/AppPage/BusinessInfo.aspx?id=" + SiteHelper.GetHashTableValueByKey(vehicle, "ID") + "&type=" + BusinessType.Vehicle.GetHashCode() + "&field=" + BusinessFieldType.PRICESYSTEM.GetHashCode(); vehicle["VEHICLEREMARK"] = SiteHelper.GetFileServer() + "/AppPage/BusinessInfo.aspx?id=" + SiteHelper.GetHashTableValueByKey(vehicle, "ID") + "&type=" + BusinessType.Vehicle.GetHashCode() + "&field=" + BusinessFieldType.VEHICLEREMARK.GetHashCode(); vehicle["TRANSPORTINFORMATION"] = SiteHelper.GetFileServer() + "/AppPage/BusinessInfo.aspx?id=" + SiteHelper.GetHashTableValueByKey(vehicle, "ID") + "&type=" + BusinessType.Vehicle.GetHashCode() + "&field=" + BusinessFieldType.TRANSPORTINFORMATION.GetHashCode(); return(SiteHelper.GetJsonFromHashTable(vehicle, "success", "获取数据成功", "VehicleInfo")); } } }
/// <summary> /// 越界报警短信通知 /// </summary> /// <param name="context"></param> public void Execute(IJobExecutionContext context) { ICache cache = null; string type = "越界"; try { foreach (string saas in ConfigHelper.GetSaasList()) { try { MyWorkerRequest.CreateHttpContext(saas, "", ""); SmsInfoManager sim = new SmsInfoManager(); OPUserManager oum = new OPUserManager(); DataTable users = oum.GetReceiveSMSUsers(); VehicleAlarmManager vam = new VehicleAlarmManager(); VehicleManager vm = new VehicleManager(); DataTable dataTable = vam.GetOutAreaList(); if (dataTable != null && dataTable.Rows.Count > 0) { cache = CacheFactory.GetCache(); foreach (DataRow row in dataTable.Rows) { string vehicleID = row[0].ToString(); Hashtable vehicle = vm.GetVehicleInfoByID(vehicleID); string gpsNum = SiteHelper.GetHashTableValueByKey(vehicle, "VehicleGPSNum").ToUpper(); string name = SiteHelper.GetHashTableValueByKey(vehicle, "Name").ToUpper(); string alarmCount = row[1].ToString(); if (!string.IsNullOrEmpty(alarmCount)) { int count = 0; int.TryParse(alarmCount, out count); if (count >= 4) { if (users != null && users.Rows.Count > 0) { foreach (DataRow user in users.Rows) { string mobile = user[0].ToString(); string key = "out_area_alarm_" + mobile + "_" + vehicleID; string code_value = cache.Get <string>(key); if (string.IsNullOrEmpty(code_value)) { bool sendResult = sim.SendAlarm(mobile, gpsNum, name, type); if (sendResult) { Logger.Warn(string.Format("车辆{0},{1}发生{2}报警,发送给{3}成功。", name, gpsNum, type, mobile)); DateTime dt = DateTime.Now.AddMinutes(20); cache.Set(key, 1, dt - DateTime.Now); } else { Logger.Warn(string.Format("车辆{0},{1}发生{2}报警,发送给{3}失败。", name, gpsNum, type, mobile)); } } else { Logger.Warn(string.Format("车辆{0},{1}发生{2}报警,发送给{3}未超过1小时。", name, gpsNum, type, mobile)); } } } } } } if (cache != null) { cache.Dispose(); } } } catch { if (cache != null) { cache.Dispose(); } Logger.Info("车辆越界报警发送短信失败"); } } } catch { if (cache != null) { cache.Dispose(); } Logger.Info("车辆越界报警发送短信失败"); } }
/// <summary> /// 车辆下单 /// </summary> /// <param name="out_order_no"></param> /// <param name="plate_no"></param> /// <param name="username"></param> /// <param name="mobile"></param> /// <param name="cardno"></param> /// <param name="errmsg"></param> /// <returns></returns> private bool CreateOrder(string out_order_no, string plate_no, string username, string mobile, string cardno, out string errmsg) { VehicleManager vm = new VehicleManager(); BaoJiaManager mgr = new BaoJiaManager(); SysSettingManager settingManager = new SysSettingManager(); Hashtable vehicle = vm.GetVehicleInfoByID(plate_no); if (vehicle == null || vehicle.Keys.Count == 0) { //根据车牌号码查询车辆信息 vehicle = vm.GetVehicleInfoByLicenseNumber(plate_no); } //判断车辆是否存在 if (vehicle == null || vehicle.Keys.Count == 0) { errmsg = "车辆预约失败,未找到车辆相关信息"; return(false); } string vehicleid = SiteHelper.GetHashTableValueByKey(vehicle, "ID"); //判断预约车辆是否离线 DateTime lastUpdateTime; if (string.IsNullOrEmpty(SiteHelper.GetHashTableValueByKey(vehicle, "LastUpdateTime"))) { errmsg = "当前车辆已离线无法约车"; return(false); } else { lastUpdateTime = DateTime.Parse(SiteHelper.GetHashTableValueByKey(vehicle, "LastUpdateTime")); if (SiteHelper.ExecDateDiff(lastUpdateTime, DateTime.Now) > 10) { errmsg = "当前车辆已离线无法约车"; return(false); } } //判断预约车辆电量值 double electricity = 0.00; double.TryParse(SiteHelper.GetHashTableValueByKey(vehicle, "Electricity"), out electricity); if (electricity < 20) { errmsg = "当前车辆电量过低无法约车"; return(false); } #region 判断车辆是否在运营区域内 ServiceAreaManager areaManager = new ServiceAreaManager(); Hashtable area_ht = areaManager.GetServiceAreaByVehicleID(vehicleid); if (area_ht != null && area_ht.Keys.Count > 0) { List <LatLng> area_pts = new List <LatLng>(); string coordinates = SiteHelper.GetHashTableValueByKey(area_ht, "Coordinates"); foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries)) { string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); LatLng pt = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0])); area_pts.Add(pt); } string longitude = SiteHelper.GetHashTableValueByKey(vehicle, "longitude"); string latitude = SiteHelper.GetHashTableValueByKey(vehicle, "latitude"); LatLng vehicle_pt = new LatLng(double.Parse(latitude), double.Parse(longitude)); //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt); vehicle_pt = SiteHelper.GPSToGCJ02(longitude, latitude); vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6)); bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, area_pts); if (!isInPoly) { errmsg = "车辆预约失败,车辆处于运营区域外"; return(false); } } #endregion #region 判断车辆是否在停车点内 string returnVehicleMode = settingManager.GetValueByKey("ReturnVehicleMode"); Hashtable parking_ht = areaManager.GetNearestParking(SiteHelper.GetHashTableValueByKey(vehicle, "longitude"), SiteHelper.GetHashTableValueByKey(vehicle, "latitude"), vehicleid); if (returnVehicleMode == "1" && parking_ht != null && parking_ht.Keys.Count > 0) { List <LatLng> parking_pts = new List <LatLng>(); string coordinates = SiteHelper.GetHashTableValueByKey(parking_ht, "Coordinates"); foreach (string str in coordinates.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries)) { string[] pt_arr = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); LatLng pt = new LatLng(double.Parse(pt_arr[1]), double.Parse(pt_arr[0])); parking_pts.Add(pt); } string longitude = SiteHelper.GetHashTableValueByKey(vehicle, "longitude"); string latitude = SiteHelper.GetHashTableValueByKey(vehicle, "latitude"); LatLng vehicle_pt = new LatLng(double.Parse(latitude), double.Parse(longitude)); //vehicle_pt = SiteHelper.TransformFromWGSToGCJ(vehicle_pt); vehicle_pt = SiteHelper.GPSToGCJ02(longitude, latitude); vehicle_pt = new LatLng(Math.Round(vehicle_pt.latitude, 6), Math.Round(vehicle_pt.longitude, 6)); bool isInPoly = SiteHelper.IsPtInPoly(vehicle_pt, parking_pts); if (!isInPoly) { errmsg = "车辆预约失败,车辆处于停车网点外"; return(false); } } #endregion //判断车辆是否可用 if (SiteHelper.GetHashTableValueByKey(vehicle, "UseState").Trim() == VehicleUseState.Free.GetHashCode().ToString() && SiteHelper.GetHashTableValueByKey(vehicle, "VehicleState").Trim() == VehicleState.Use.GetHashCode().ToString()) { //判断用户是否存在未支付订单 if (mgr.IsExistUnPayOrderByUser(mobile)) { errmsg = "您当前有未支付订单,请完成支付后重试"; return(false); } //判断会员是否有条件预约 bool isExist = mgr.IsExistVehicleOrderByUser(mobile); if (isExist) { errmsg = "您已经预约过车辆了"; return(false); } else { string orderID = string.Empty; string orderNum = string.Empty; //提交订单 bool isSuccess = OrderVehicle(out_order_no, username, mobile, cardno, vehicleid, out orderID, out orderNum); if (isSuccess) { //vm.OpenVehicle(vehicleid); errmsg = ""; return(true); } else { errmsg = "车辆预约失败,请联系管理员"; return(false); } } } else { errmsg = "预约失败,车辆不允许预约"; return(false); } }
/// <summary> /// 获取附近车辆详细信息 /// </summary> /// <param name="context"></param> private void GetVehicleByID(HttpContext context) { string vehicleID = string.Empty; string weidu = string.Empty; string jingdu = string.Empty; if (context.Request["VehicleID"] == null || context.Request["Latitude"] == null || context.Request["Longitude"] == null || context.Request["VehicleID"].ToString().Trim().Length <= 0 || context.Request["Latitude"].ToString().Trim().Length <= 0 || context.Request["Longitude"].ToString().Trim().Length <= 0) { context.Response.Write(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整")); context.Response.End(); } else { vehicleID = context.Request["VehicleID"].ToString().Trim(); weidu = context.Request["Latitude"].ToString().Trim(); jingdu = context.Request["Longitude"].ToString().Trim(); VehicleManager vm = new VehicleManager(); SystemImagesManager sim = new SystemImagesManager(); Hashtable vehicle = vm.GetVehicleInfoByID(vehicleID, weidu, jingdu); string thumbImg = string.Empty; string detailsImg = string.Empty; if (vehicle == null || vehicle.Keys.Count <= 0) { context.Response.Write(SiteHelper.GetJsonFromHashTable(null, "faild", "车辆数据为空")); } else { DataTable dt = sim.GetImagesByVehicleID(vehicleID); if (dt != null) { foreach (DataRow dr in dt.Rows) { if (dr["Type"].ToString().Trim() == ((int)ImagesType.Thumbnail).ToString().Trim()) { thumbImg += SiteHelper.GetFileServer() + dr["ImageUrl"].ToString().Trim() + ";"; } if (dr["Type"].ToString().Trim() == ((int)ImagesType.Details).ToString().Trim()) { detailsImg += SiteHelper.GetFileServer() + dr["ImageUrl"].ToString().Trim() + ";"; } } } vehicle["THUMBIMG"] = thumbImg; vehicle["DETAILSIMG"] = detailsImg; string lng = vehicle["LONGITUDE"].ToString(); string lat = vehicle["LATITUDE"].ToString(); if (!string.IsNullOrEmpty(lng) && !string.IsNullOrEmpty(lat)) { /*LatLng latlng = SiteHelper.GetBaiduByGPS(lat, lng); * vehicle["LATITUDE"] = latlng.latitude; * vehicle["LONGITUDE"] = latlng.longitude; * if (vehicle["ADDRESS"].ToString().Length <= 0) * { * vehicle["ADDRESS"] = SiteHelper.GetLocationByGPS(vehicle["LONGITUDE"].ToString(), vehicle["LATITUDE"].ToString()); * }*/ LatLng latlng = new LatLng(double.Parse(lat), double.Parse(lng)); latlng = SiteHelper.TransformFromWGSToGCJ(latlng); vehicle["LATITUDE"] = latlng.latitude; vehicle["LONGITUDE"] = latlng.longitude; } decimal electricity = 0; decimal.TryParse(vehicle["ELECTRICITY"].ToString(), out electricity); int dianliang = Decimal.ToInt32(electricity); vehicle["ELECTRICITY"] = dianliang + "%"; vehicle["PRICESYSTEM"] = SiteHelper.GetFileServer() + "/AppPage/BusinessInfo.aspx?id=" + SiteHelper.GetHashTableValueByKey(vehicle, "ID") + "&type=" + BusinessType.Vehicle.GetHashCode() + "&field=" + BusinessFieldType.PRICESYSTEM.GetHashCode(); vehicle["VEHICLEREMARK"] = SiteHelper.GetFileServer() + "/AppPage/BusinessInfo.aspx?id=" + SiteHelper.GetHashTableValueByKey(vehicle, "ID") + "&type=" + BusinessType.Vehicle.GetHashCode() + "&field=" + BusinessFieldType.VEHICLEREMARK.GetHashCode(); vehicle["TRANSPORTINFORMATION"] = SiteHelper.GetFileServer() + "/AppPage/BusinessInfo.aspx?id=" + SiteHelper.GetHashTableValueByKey(vehicle, "ID") + "&type=" + BusinessType.Vehicle.GetHashCode() + "&field=" + BusinessFieldType.TRANSPORTINFORMATION.GetHashCode(); context.Response.Write(SiteHelper.GetJsonFromHashTable(vehicle, "success", "获取数据成功", "VehicleInfo")); } } }
public string Execute(Hashtable params_ht) { Hashtable res = params_ht; if (res["UID"] == null || res["UID"].ToString().Trim().Length <= 0 || res["VID"] == null || res["VID"].ToString().Trim().Length <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整")); } else { uid = res["UID"].ToString().Trim(); vid = res["VID"].ToString().Trim(); //contentType,修改类型:01车辆名称,02车牌号,03车型,04车辆平台,05车辆模块编码,06车辆状态,07车架号 if (res["ContentType"] != null && res["ContentType"].ToString().Trim().Length > 0) { contentType = res["ContentType"].ToString().Trim(); } if (res["Content"] != null && res["Content"].ToString().Trim().Length > 0) { content = res["Content"].ToString().Trim(); } VehicleManager vm = new VehicleManager(); Hashtable vehicle_ht = vm.GetVehicleInfoByID(vid); if (vehicle_ht == null) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "未找到相关车辆信息")); } Hashtable ht = new Hashtable(); if (!string.IsNullOrEmpty(contentType)) { switch (contentType) { case "01": ht["Name"] = content; break; case "02": ht["VehicleName"] = content; ht["LicenseNumber"] = content; break; case "03": ht["Model"] = content; break; case "04": ht["PlatformId"] = content; break; case "05": ht["VehicleGPSNum"] = content; break; case "06": ht["VehicleState"] = content; break; case "07": ht["VehicleNum"] = content; break; default: break; } } else { if (res["Name"] != null && res["Name"].ToString().Trim().Length > 0) { ht["Name"] = res["Name"].ToString().Trim(); } if (res["VehicleName"] != null && res["VehicleName"].ToString().Trim().Length > 0) { ht["VehicleName"] = res["VehicleName"].ToString().Trim(); ht["LicenseNumber"] = res["VehicleName"].ToString().Trim(); } if (res["Model"] != null && res["Model"].ToString().Trim().Length > 0) { ht["Model"] = res["Model"].ToString().Trim(); } if (res["PlatformId"] != null && res["PlatformId"].ToString().Trim().Length > 0) { ht["PlatformId"] = res["PlatformId"].ToString().Trim(); } if (res["VehicleGPSNum"] != null && res["VehicleGPSNum"].ToString().Trim().Length > 0) { ht["VehicleGPSNum"] = res["VehicleGPSNum"].ToString().Trim(); } if (res["VehicleState"] != null && res["VehicleState"].ToString().Trim().Length > 0) { ht["VehicleState"] = res["VehicleState"].ToString().Trim(); } if (res["VehicleNum"] != null && res["VehicleNum"].ToString().Trim().Length > 0) { ht["VehicleNum"] = res["VehicleNum"].ToString().Trim(); } } bool isSuccess = vm.AddOrEditVehicleInfo(ht, vehicle_ht["ID"].ToString()); if (!isSuccess) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "修改车辆信息失败")); } else { return(SiteHelper.GetJsonFromHashTable(null, "success", "修改车辆信息成功")); } } }
public string Execute(Hashtable params_ht) { Hashtable res = params_ht; if (res["UID"] == null || res["VehicleID"] == null || res["FaultType"] == null || res["UID"].ToString().Trim().Length <= 0 || res["VehicleID"].ToString().Trim().Length <= 0 || res["FaultType"].ToString().Trim().Length <= 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "参数不完整")); } else { try { uid = res["UID"].ToString().Trim(); vehicleid = res["VehicleID"].ToString().Trim(); faulttype = res["FaultType"].ToString().Trim(); if (res["Images"] != null) { images = res["Images"].ToString().Trim(); } } catch { return(SiteHelper.GetJsonFromHashTable(null, "faild", "数据格式不正确")); } VehicleManager vm = new VehicleManager(); OPUserManager userManager = new OPUserManager(); Hashtable vehicle_ht = vm.GetVehicleInfoByID(vehicleid); if (vehicle_ht == null || vehicle_ht.Keys.Count == 0) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "未找到车辆信息,故障报修提交失败")); } Hashtable user_ht = userManager.GetUserInfoByUserID(uid); string path = SiteHelper.GetAppsetString("OtherImage"); string FaultImages = ""; if (!string.IsNullOrEmpty(images)) { string[] datas = images.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); if (datas.Length > maxImageNum) { return(SiteHelper.GetJsonFromHashTable(null, "faild", "报修图片数量过多,最多可上传" + maxImageNum + "张图片")); } foreach (string data in datas) { string imgPath = BitmapHelper.toUpload(data); FaultImages += imgPath + ";"; } if (FaultImages.Length > 0) { FaultImages = FaultImages.Substring(0, FaultImages.Length - 1); } } Hashtable vehiclefault = new Hashtable(); vehiclefault["ID"] = CommonHelper.GetGuid; vehiclefault["VehicleName"] = SiteHelper.GetHashTableValueByKey(vehicle_ht, "LicenseNumber"); vehiclefault["SubmitUserID"] = uid; vehiclefault["SubmitUserName"] = SiteHelper.GetHashTableValueByKey(user_ht, "UserName");; vehiclefault["TriggerType"] = (int)VehicleFaultTriggerType.User; vehiclefault["FaultType"] = faulttype; vehiclefault["Remark"] = ""; vehiclefault["FaultDoState"] = (int)VehicleFaultDoState.Undisposed; vehiclefault["CreateTime"] = SiteHelper.GetWebServerCurrentTime().ToString(); if (FaultImages.Length > 0) { vehiclefault["FaultImages"] = FaultImages; } VehicleFaultManager vfm = new VehicleFaultManager(); bool isSuccess = vfm.AddOrEditVehicleFaultInfo(vehiclefault, null); if (isSuccess) { return(SiteHelper.GetJsonFromHashTable(null, "success", "故障报修提交成功")); } else { return(SiteHelper.GetJsonFromHashTable(null, "faild", "故障报修提交失败")); } } }