public ActionResult AddMapRegions(MapRegionsAddModel model) { if (model.Radius == 0.0 && model.LeftUpperLatitude == 0.0 && string.IsNullOrWhiteSpace(model.PolygonList[0])) { ModelState.AddModelError("RegionsType", DataAnnotations.NeedDrawError); } if (ModelState.IsValid) { var result = MapRegionsBLL.AddMapRegions(model, base.CurrentUserID, base.CurrentStrucID); base.DoLog(OperationTypeEnum.Add, result, "RegionsName:" + model.RegionsName); return(Json(result)); } else { List <SelectListItem> liRegionsType = new List <SelectListItem>(); liRegionsType.Add(new SelectListItem { Text = "圆", Value = "1", Selected = true }); liRegionsType.Add(new SelectListItem { Text = "矩形", Value = "2" }); liRegionsType.Add(new SelectListItem { Text = "多边形", Value = "3" }); model.RegionsTypeSelectList = liRegionsType; return(PartialView("_AddMapRegions", model)); } }
public ActionResult AddMapRegions() { MapRegionsAddModel model = new MapRegionsAddModel(); List <SelectListItem> liRegionsType = new List <SelectListItem>(); liRegionsType.Add(new SelectListItem { Text = "圆", Value = "1", Selected = true }); liRegionsType.Add(new SelectListItem { Text = "矩形", Value = "2" }); liRegionsType.Add(new SelectListItem { Text = "多边形", Value = "3" }); model.RegionsTypeSelectList = liRegionsType; return(PartialView("_AddMapRegions", model)); }
/// <summary> /// 根据区域类别 分圆形、矩形、多边形三种情况添加 /// </summary> /// <param name="model"></param> /// <param name="currentUserID"></param> /// <param name="currentStrucID"></param> /// <returns></returns> public static OperationResult AddMapRegions(MapRegionsAddModel model, int currentUserID, int currentStrucID) { #region 参数 //纠偏 double centerLng = double.Parse(model.CenterLongitude.ToString()); double centerLat = double.Parse(model.CenterLatitude.ToString()); Rectify.Gcj02_To_Wgs84(ref centerLat, ref centerLng); //NetDecry.Fix(ref centerLng, ref centerLat, false); double leftLng = double.Parse(model.LeftUpperLongitude.ToString()); double leftLat = double.Parse(model.LeftUpperLatitude.ToString()); double rightLng = double.Parse(model.RightLowerLongitude.ToString()); double rightLat = double.Parse(model.RightLowerLatitude.ToString()); Rectify.Gcj02_To_Wgs84(ref leftLat, ref leftLng); Rectify.Gcj02_To_Wgs84(ref rightLat, ref rightLng); //NetDecry.Fix(ref leftLng, ref leftLat, false); //NetDecry.Fix(ref rightLng, ref rightLat, false); List <SqlParameter> paras = new List <SqlParameter>() { new SqlParameter("@RegionsType", SqlDbType.Int), new SqlParameter("@RegionsName", SqlDbType.NVarChar, 100), new SqlParameter("@CenterLatitude", SqlDbType.Float), new SqlParameter("@CenterLongitude", SqlDbType.Float), new SqlParameter("@LeftUpperLatitude", SqlDbType.Float), new SqlParameter("@LeftUpperLongitude", SqlDbType.Float), new SqlParameter("@RightLowerLatitude", SqlDbType.Float), new SqlParameter("@RightLowerLongitude", SqlDbType.Float), new SqlParameter("@Radius", SqlDbType.Float), new SqlParameter("@StartDate", SqlDbType.Date), new SqlParameter("@StartTime", SqlDbType.Time), new SqlParameter("@EndDate", SqlDbType.Date), new SqlParameter("@EndTime", SqlDbType.Time), new SqlParameter("@Periodic", SqlDbType.Bit), new SqlParameter("@SpeedLimit", SqlDbType.Float), new SqlParameter("@OverSpeedDuration", SqlDbType.Int), new SqlParameter("@Remark", SqlDbType.NVarChar, 1000), new SqlParameter("@Status", SqlDbType.TinyInt), new SqlParameter("@CreateTime", SqlDbType.DateTime), new SqlParameter("@UpdateTime", SqlDbType.DateTime), new SqlParameter("@CreateUserID", SqlDbType.Int), new SqlParameter("@StrucID", SqlDbType.Int), }; paras[0].Value = model.RegionsType; paras[1].Value = model.RegionsName; paras[2].Value = centerLng; paras[3].Value = centerLat; paras[4].Value = model.LeftUpperLatitude; paras[5].Value = model.LeftUpperLongitude; paras[6].Value = model.RightLowerLatitude; paras[7].Value = model.RightLowerLongitude; paras[8].Value = model.Radius; if (string.IsNullOrEmpty(model.StartDate) || model.Periodic == true) { paras[9].Value = DBNull.Value; } else { paras[9].Value = model.StartDate; } if (string.IsNullOrEmpty(model.StartTime)) { paras[10].Value = DBNull.Value; } else { paras[10].Value = model.StartTime; } if (string.IsNullOrEmpty(model.EndDate) || model.Periodic == true) { paras[11].Value = DBNull.Value; } else { paras[11].Value = model.EndDate; } if (string.IsNullOrEmpty(model.EndTime)) { paras[12].Value = DBNull.Value; } else { paras[12].Value = model.EndTime; } paras[13].Value = model.Periodic; paras[14].Value = model.SpeedLimit; paras[15].Value = model.OverSpeedDuration; if (string.IsNullOrEmpty(model.Remark)) { paras[16].Value = DBNull.Value; } else { paras[16].Value = model.Remark; } paras[17].Value = 0; paras[18].Value = DateTime.Now; paras[19].Value = DateTime.Now; paras[20].Value = currentUserID; paras[21].Value = currentStrucID; #endregion string sql = string.Empty; bool result = false; #region SQL 圆形区域 中心点经纬度和半径 if (model.RegionsType == 1) { sql = @"INSERT INTO dbo.MapRegionsList ( RegionsType , RegionsName , StrucID, CenterLatitude , CenterLongitude , Radius , StartDate , StartTime , EndDate , EndTime , Periodic , SpeedLimit , OverSpeedDuration , Remark , Status , CreateTime , UpdateTime , CreateUserID ) VALUES ( @RegionsType , @RegionsName, @StrucID, @CenterLatitude , @CenterLongitude, @Radius , @StartDate, @StartTime , @EndDate, @EndTime , @Periodic, @SpeedLimit , @OverSpeedDuration, @Remark , @Status, @CreateTime , @UpdateTime, @CreateUserID )"; result = MSSQLHelper.ExecuteNonQuery(CommandType.Text, sql, paras.ToArray()) > 0; } #endregion #region SQL 矩形区域 左上点、右下点经纬度 if (model.RegionsType == 2) { sql = @"INSERT INTO dbo.MapRegionsList ( RegionsType , RegionsName , StrucID, LeftUpperLatitude , LeftUpperLongitude , RightLowerLatitude , RightLowerLongitude , StartDate , StartTime , EndDate , EndTime , Periodic , SpeedLimit , OverSpeedDuration , Remark , Status , CreateTime , UpdateTime , CreateUserID ) VALUES ( @RegionsType , @RegionsName, @StrucID, @LeftUpperLatitude , @LeftUpperLongitude, @RightLowerLatitude , @RightLowerLongitude , @StartDate, @StartTime , @EndDate, @EndTime , @Periodic, @SpeedLimit , @OverSpeedDuration, @Remark , @Status, @CreateTime , @UpdateTime, @CreateUserID )"; result = MSSQLHelper.ExecuteNonQuery(CommandType.Text, sql, paras.ToArray()) > 0; } #endregion #region SQL 多边形区域 关联地图区域明细表 对应多个定位点、经纬度 if (model.RegionsType == 3) { sql = @"INSERT INTO dbo.MapRegionsList ( RegionsType , RegionsName , StartDate , StartTime , EndDate , EndTime , Periodic , SpeedLimit , OverSpeedDuration , Remark , Status , CreateTime , UpdateTime , CreateUserID, StrucID ) VALUES ( @RegionsType , @RegionsName, @StartDate, @StartTime , @EndDate, @EndTime , @Periodic, @SpeedLimit , @OverSpeedDuration, @Remark , @Status, @CreateTime , @UpdateTime, @CreateUserID, @StrucID );SELECT SCOPE_IDENTITY();"; //插数据到地图区域明细表(多边形点位) //string[] polygons = ((string[])(model.PolygonList))[0].Split(','); string[] polygons = model.PolygonList[0].Split(','); int len = polygons.Length / 2; int sqlLen = len + 1; string[] sqls = new string[sqlLen]; SqlParameter[][] polygonsParas = new SqlParameter[sqlLen][]; int num = 1;//sqls长度 sqls[0] = sql; polygonsParas[0] = new SqlParameter[15]; polygonsParas[0][0] = new SqlParameter() { ParameterName = "@RegionsType", SqlDbType = SqlDbType.Int, Value = model.RegionsType }; polygonsParas[0][1] = new SqlParameter() { ParameterName = "@RegionsName", SqlDbType = SqlDbType.NVarChar, Size = 50, Value = model.RegionsName }; if (string.IsNullOrEmpty(model.StartDate) || model.Periodic == true) { polygonsParas[0][2] = new SqlParameter() { ParameterName = "@StartDate", SqlDbType = SqlDbType.Date, Value = DBNull.Value }; } else { polygonsParas[0][2] = new SqlParameter() { ParameterName = "@StartDate", SqlDbType = SqlDbType.Date, Value = model.StartDate }; } if (string.IsNullOrEmpty(model.StartTime)) { polygonsParas[0][3] = new SqlParameter() { ParameterName = "@StartTime", SqlDbType = SqlDbType.Time, Value = DBNull.Value }; } else { polygonsParas[0][3] = new SqlParameter() { ParameterName = "@StartTime", SqlDbType = SqlDbType.Time, Value = model.StartTime }; } if (string.IsNullOrEmpty(model.EndDate) || model.Periodic == true) { polygonsParas[0][4] = new SqlParameter() { ParameterName = "@EndDate", SqlDbType = SqlDbType.Date, Value = DBNull.Value }; } else { polygonsParas[0][4] = new SqlParameter() { ParameterName = "@EndDate", SqlDbType = SqlDbType.Date, Value = model.EndDate }; } if (string.IsNullOrEmpty(model.EndTime)) { polygonsParas[0][5] = new SqlParameter() { ParameterName = "@EndTime", SqlDbType = SqlDbType.Time, Value = DBNull.Value }; } else { polygonsParas[0][5] = new SqlParameter() { ParameterName = "@EndTime", SqlDbType = SqlDbType.Time, Value = model.EndTime }; } polygonsParas[0][6] = new SqlParameter() { ParameterName = "@Periodic", SqlDbType = SqlDbType.Bit, Value = model.Periodic }; polygonsParas[0][7] = new SqlParameter() { ParameterName = "@SpeedLimit", SqlDbType = SqlDbType.Float, Value = model.SpeedLimit }; polygonsParas[0][8] = new SqlParameter() { ParameterName = "@OverSpeedDuration", SqlDbType = SqlDbType.Int, Value = model.OverSpeedDuration }; if (string.IsNullOrEmpty(model.Remark)) { polygonsParas[0][9] = new SqlParameter() { ParameterName = "@Remark", SqlDbType = SqlDbType.NVarChar, Size = 500, Value = DBNull.Value }; } else { polygonsParas[0][9] = new SqlParameter() { ParameterName = "@Remark", SqlDbType = SqlDbType.NVarChar, Size = 500, Value = model.Remark }; } polygonsParas[0][10] = new SqlParameter() { ParameterName = "@Status", SqlDbType = SqlDbType.Int, Value = 0 }; polygonsParas[0][11] = new SqlParameter() { ParameterName = "@CreateTime", SqlDbType = SqlDbType.DateTime, Value = DateTime.Now }; polygonsParas[0][12] = new SqlParameter() { ParameterName = "@UpdateTime", SqlDbType = SqlDbType.DateTime, Value = DateTime.Now }; polygonsParas[0][13] = new SqlParameter() { ParameterName = "@CreateUserID", SqlDbType = SqlDbType.Int, Value = currentUserID }; polygonsParas[0][14] = new SqlParameter() { ParameterName = "@StrucID", SqlDbType = SqlDbType.Int, Value = currentStrucID }; int orderID = 0;//定位点序号 for (int i = 0; i < polygons.Length; i++) { string tempSql = string.Empty; tempSql = @"INSERT INTO dbo.MapRegionsDetails( RegionsID, OrderID, Longitude, Latitude ) VALUES ( @RegionsID,@OrderID,@Longitude,@Latitude)"; List <SqlParameter> tempParas = new List <SqlParameter>() { new SqlParameter("@RegionsID", SqlDbType.BigInt), new SqlParameter("@OrderID", SqlDbType.TinyInt), new SqlParameter("@Longitude", SqlDbType.Float), new SqlParameter("@Latitude", SqlDbType.Float), }; sqls[num] = tempSql; polygonsParas[num] = new SqlParameter[4]; polygonsParas[num][0] = new SqlParameter { ParameterName = "@RegionsID", SqlDbType = SqlDbType.BigInt }; //纠偏 double lng = double.Parse(polygons[i].ToString()); double lat = double.Parse(polygons[i + 1].ToString()); //NetDecry.Fix(ref lng, ref lat, false); Rectify.Gcj02_To_Wgs84(ref lat, ref lng); polygonsParas[num][1] = new SqlParameter() { ParameterName = "@OrderID", SqlDbType = SqlDbType.TinyInt, Value = orderID }; polygonsParas[num][2] = new SqlParameter() { ParameterName = "@Longitude", SqlDbType = SqlDbType.Float, Value = lng }; polygonsParas[num][3] = new SqlParameter() { ParameterName = "@Latitude", SqlDbType = SqlDbType.Float, Value = lat }; i++; num++; orderID++; } result = MSSQLHelper.ExecuteIdentityIncludeTransaction(CommandType.Text, sqls, polygonsParas) != 0; } #endregion //bool result = MSSQLHelper.ExecuteNonQuery(CommandType.Text, sql, paras.ToArray()) > 0; return(new OperationResult() { Success = result, Message = result ? PromptInformation.OperationSuccess : PromptInformation.DBError }); }