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);
            }
        }
Beispiel #2
0
        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", "解绑车辆与网点成功"));
                }
            }
        }
Beispiel #3
0
        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();
            }
        }
Beispiel #4
0
        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", "指令发送成功"));
                    }
                }
            }
        }
Beispiel #5
0
        /// <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();
            }
        }
Beispiel #6
0
        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)
            {
            }
        }
Beispiel #7
0
        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", "异常还车操作成功"));
                }
            }
        }
Beispiel #8
0
        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", "车辆电池更换成功"));
                }
            }
        }
Beispiel #9
0
        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", "预约失败,车辆不允许预约"));
                }
            }
        }
Beispiel #10
0
        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", "指令发送成功"));
                    }
                }
            }
        }
Beispiel #11
0
        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", "还车失败,请联系管理员"));
                        }
                    }
                }
            }
        }
Beispiel #12
0
        /// <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);
                    }
                }
            }
        }
Beispiel #13
0
        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);
            }
        }
Beispiel #14
0
        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"));
                }
            }
        }
Beispiel #15
0
        /// <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("车辆越界报警发送短信失败");
            }
        }
Beispiel #16
0
        /// <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"));
                }
            }
        }
Beispiel #18
0
        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", "修改车辆信息成功"));
                }
            }
        }
Beispiel #19
0
        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", "故障报修提交失败"));
                }
            }
        }