public ActionResult EditMapRegions(MapRegionsEditModel model) { if (ModelState.IsValid) { var result = MapRegionsBLL.EditMapRegions(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("_EditMapRegions", model)); } }
public static OperationResult EditMapRegions(MapRegionsEditModel model, int currentUserID, int currentStrucID) { #region 参数 //纠偏 double centerLng = double.Parse(model.CenterLongitude.ToString()); double centerLat = double.Parse(model.CenterLatitude.ToString()); //NetDecry.Fix(ref centerLng, ref centerLat, false); Rectify.Gcj02_To_Wgs84(ref centerLat, ref centerLng); 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()); //NetDecry.Fix(ref leftLng, ref leftLat, false); //NetDecry.Fix(ref rightLng, ref rightLat, false); Rectify.Gcj02_To_Wgs84(ref leftLat, ref leftLng); Rectify.Gcj02_To_Wgs84(ref rightLat, ref rightLng); List <SqlParameter> paras = new List <SqlParameter>() { 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("@UpdateUserID", SqlDbType.Int), new SqlParameter("@ID", SqlDbType.BigInt), }; paras[0].Value = model.RegionsName; paras[1].Value = centerLat; paras[2].Value = centerLng; paras[3].Value = leftLat; paras[4].Value = leftLng; paras[5].Value = rightLat; paras[6].Value = rightLng; paras[7].Value = model.Radius; if (string.IsNullOrEmpty(model.StartDate) || model.Periodic == true) { paras[8].Value = DBNull.Value; } else { paras[8].Value = model.StartDate; } if (string.IsNullOrEmpty(model.StartTime)) { paras[9].Value = DBNull.Value; } else { paras[9].Value = model.StartTime; } if (string.IsNullOrEmpty(model.EndDate) || model.Periodic == true) { paras[10].Value = DBNull.Value; } else { paras[10].Value = model.EndDate; } if (string.IsNullOrEmpty(model.EndTime)) { paras[11].Value = DBNull.Value; } else { paras[11].Value = model.EndTime; } paras[12].Value = model.Periodic; paras[13].Value = model.SpeedLimit; paras[14].Value = model.OverSpeedDuration; if (string.IsNullOrEmpty(model.Remark)) { paras[15].Value = DBNull.Value; } else { paras[15].Value = model.Remark; } paras[16].Value = currentUserID; paras[17].Value = model.ID; #endregion string sql = string.Empty; int result = 0; #region SQL 圆形区域 中心点经纬度和半径 if (model.RegionsType == 1) { sql = @"UPDATE dbo.MapRegionsList SET RegionsName = @RegionsName , CenterLatitude = @CenterLatitude , CenterLongitude = @CenterLongitude , Radius = @Radius , StartDate = @StartDate , StartTime = @StartTime , EndDate = @EndDate , EndTime = @EndTime , Periodic = @Periodic , SpeedLimit = @SpeedLimit , OverSpeedDuration = @OverSpeedDuration , Remark = @Remark , UpdateTime = GetDate() , UpdateUserID = @UpdateUserID WHERE ID = @ID "; result = MSSQLHelper.ExecuteNonQuery(CommandType.Text, sql, paras.ToArray()); } #endregion #region SQL 矩形区域 左上点、右下点经纬度 if (model.RegionsType == 2) { sql = @"UPDATE dbo.MapRegionsList SET RegionsName = @RegionsName , LeftUpperLatitude = @LeftUpperLatitude , LeftUpperLongitude = @LeftUpperLongitude , RightLowerLatitude = @RightLowerLatitude , RightLowerLongitude = @RightLowerLongitude , StartDate = @StartDate , StartTime = @StartTime , EndDate = @EndDate , EndTime = @EndTime , Periodic = @Periodic , SpeedLimit = @SpeedLimit , OverSpeedDuration = @OverSpeedDuration , Remark = @Remark , UpdateTime = GetDate() , UpdateUserID = @UpdateUserID WHERE ID = @ID "; result = MSSQLHelper.ExecuteNonQuery(CommandType.Text, sql, paras.ToArray()); } #endregion #region SQL 多边形区域 关联地图区域明细表 对应多个定位点、经纬度 if (model.RegionsType == 3) { #region 更新主表 sql = @"UPDATE dbo.MapRegionsList SET RegionsName = @RegionsName , StartDate = @StartDate , StartTime = @StartTime , EndDate = @EndDate , EndTime = @EndTime , Periodic = @Periodic , SpeedLimit = @SpeedLimit , OverSpeedDuration = @OverSpeedDuration , Remark = @Remark , UpdateTime = GetDate() , UpdateUserID = @UpdateUserID WHERE ID = @ID "; var updateSqls = sql; SqlParameter[] updatePolygonsParas = new SqlParameter[11]; updatePolygonsParas[0] = new SqlParameter() { ParameterName = "@RegionsName", SqlDbType = SqlDbType.NVarChar, Size = 50, Value = model.RegionsName }; if (string.IsNullOrEmpty(model.StartDate) || model.Periodic == true) { updatePolygonsParas[1] = new SqlParameter() { ParameterName = "@StartDate", SqlDbType = SqlDbType.Date, Value = DBNull.Value }; } else { updatePolygonsParas[1] = new SqlParameter() { ParameterName = "@StartDate", SqlDbType = SqlDbType.Date, Value = model.StartDate }; } if (string.IsNullOrEmpty(model.StartTime)) { updatePolygonsParas[2] = new SqlParameter() { ParameterName = "@StartTime", SqlDbType = SqlDbType.Time, Value = DBNull.Value }; } else { updatePolygonsParas[2] = new SqlParameter() { ParameterName = "@StartTime", SqlDbType = SqlDbType.Time, Value = model.StartTime }; } if (string.IsNullOrEmpty(model.EndDate) || model.Periodic == true) { updatePolygonsParas[3] = new SqlParameter() { ParameterName = "@EndDate", SqlDbType = SqlDbType.Date, Value = DBNull.Value }; } else { updatePolygonsParas[3] = new SqlParameter() { ParameterName = "@EndDate", SqlDbType = SqlDbType.Date, Value = model.EndDate }; } if (string.IsNullOrEmpty(model.EndTime)) { updatePolygonsParas[4] = new SqlParameter() { ParameterName = "@EndTime", SqlDbType = SqlDbType.Time, Value = DBNull.Value }; } else { updatePolygonsParas[4] = new SqlParameter() { ParameterName = "@EndTime", SqlDbType = SqlDbType.Time, Value = model.EndTime }; } updatePolygonsParas[5] = new SqlParameter() { ParameterName = "@Periodic", SqlDbType = SqlDbType.Bit, Value = model.Periodic }; updatePolygonsParas[6] = new SqlParameter() { ParameterName = "@SpeedLimit", SqlDbType = SqlDbType.Float, Value = model.SpeedLimit }; updatePolygonsParas[7] = new SqlParameter() { ParameterName = "@OverSpeedDuration", SqlDbType = SqlDbType.Int, Value = model.OverSpeedDuration }; if (string.IsNullOrEmpty(model.Remark)) { updatePolygonsParas[8] = new SqlParameter() { ParameterName = "@Remark", SqlDbType = SqlDbType.NVarChar, Size = 500, Value = DBNull.Value }; } else { updatePolygonsParas[8] = new SqlParameter() { ParameterName = "@Remark", SqlDbType = SqlDbType.NVarChar, Size = 500, Value = model.Remark }; } updatePolygonsParas[9] = new SqlParameter() { ParameterName = "@UpdateUserID", SqlDbType = SqlDbType.Int, Value = currentUserID }; updatePolygonsParas[10] = new SqlParameter() { ParameterName = "@ID", SqlDbType = SqlDbType.BigInt, Value = model.ID }; int updateResult = MSSQLHelper.ExecuteNonQuery(CommandType.Text, updateSqls, updatePolygonsParas); #endregion #region 除 var delSql = @"DELETE FROM dbo.MapRegionsDetails WHERE RegionsID=@RegionsID"; SqlParameter[] delPolygonsParas = new SqlParameter[1]; delPolygonsParas[0] = new SqlParameter() { ParameterName = "@RegionsID", SqlDbType = SqlDbType.BigInt, Value = model.ID }; int delResult = MSSQLHelper.ExecuteNonQuery(CommandType.Text, delSql, delPolygonsParas); #endregion #region 添加 //插数据到地图区域明细表(多边形点位) string[] polygons = model.PolygonList[0].Split(','); int len = polygons.Length / 2; string[] insertSqls = new string[len]; SqlParameter[][] insertPolygonsParas = new SqlParameter[len][]; int num = 0; //sqls长度 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)"; insertSqls[num] = tempSql; insertPolygonsParas[num] = new SqlParameter[4]; insertPolygonsParas[num][0] = new SqlParameter() { ParameterName = "@RegionsID", SqlDbType = SqlDbType.BigInt, Value = model.ID }; //纠偏 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); insertPolygonsParas[num][1] = new SqlParameter() { ParameterName = "@OrderID", SqlDbType = SqlDbType.TinyInt, Value = orderID }; insertPolygonsParas[num][2] = new SqlParameter() { ParameterName = "@Longitude", SqlDbType = SqlDbType.Float, Value = lng }; insertPolygonsParas[num][3] = new SqlParameter() { ParameterName = "@Latitude", SqlDbType = SqlDbType.Float, Value = lat }; i++; num++; orderID++; } #endregion bool insertResult = MSSQLHelper.ExecuteTransaction(CommandType.Text, insertSqls, insertPolygonsParas); if (updateResult == 1 && delResult != 0 && insertResult == true) { result = 1; } } #endregion //int result = MSSQLHelper.ExecuteNonQuery(CommandType.Text, sql, paras.ToArray()); string msg = string.Empty; switch (result) { case 1: msg = PromptInformation.OperationSuccess; break; case 0: msg = PromptInformation.NotExists; break; case -1: msg = PromptInformation.DBError; break; } return(new OperationResult() { Success = result > 0, Message = msg }); }
public static SelectResult <MapRegionsEditModel> GetMapRegionsByID(int id, int regionsType) { List <SqlParameter> paras = new List <SqlParameter>() { new SqlParameter() { ParameterName = "@ID", SqlDbType = SqlDbType.BigInt, }, }; paras[0].Value = id; string sql = string.Empty; if (regionsType == 1) { sql = @"SELECT ID,RegionsType, RegionsName,CenterLatitude,CenterLongitude,Radius, CAST(StartDate AS CHAR(10)) AS StartDate, CAST(StartTime AS CHAR(8)) AS StartTime, CAST(EndDate AS CHAR(10)) AS EndDate, CAST(EndTime AS CHAR(8)) AS EndTime, Periodic, SpeedLimit, OverSpeedDuration FROM dbo.MapRegionsList WHERE Status=0 AND ID=@ID"; } if (regionsType == 2) { sql = @"SELECT ID,RegionsType, RegionsName,LeftUpperLatitude,LeftUpperLongitude,RightLowerLatitude,RightLowerLongitude, CAST(StartDate AS CHAR(10)) AS StartDate, CAST(StartTime AS CHAR(8)) AS StartTime, CAST(EndDate AS CHAR(10)) AS EndDate, CAST(EndTime AS CHAR(8)) AS EndTime, Periodic, SpeedLimit, OverSpeedDuration FROM dbo.MapRegionsList WHERE Status=0 AND ID=@ID"; } if (regionsType == 3) { sql = @"SELECT MPL.ID,MPL.RegionsType, MPL.RegionsName, CAST(MPL.StartDate AS CHAR(10)) AS StartDate, CAST(MPL.StartTime AS CHAR(8)) AS StartTime, CAST(MPL.EndDate AS CHAR(10)) AS EndDate, CAST(MPL.EndTime AS CHAR(8)) AS EndTime, MPL.Periodic, MPL.SpeedLimit, MPL.OverSpeedDuration,MPD.Latitude,MPD.Longitude,MPD.OrderID FROM dbo.MapRegionsList MPL LEFT JOIN dbo.MapRegionsDetails MPD ON MPL.ID=MPD.RegionsID WHERE MPL.Status=0 AND MPL.ID=@ID"; } List <MapRegionsEditModel> list = ConvertToList <MapRegionsEditModel> .Convert(MSSQLHelper.ExecuteDataTable(CommandType.Text, sql, paras.ToArray())); MapRegionsEditModel data = null; string msg = string.Empty; if (list == null) { msg = PromptInformation.DBError; } else if (list.Count == 0) { msg = PromptInformation.NotExists; } else { if (regionsType == 1 || regionsType == 2) { //纠偏 double centerLng = double.Parse(list[0].CenterLongitude.ToString()); double centerLat = double.Parse(list[0].CenterLatitude.ToString()); //NetDecry.Fix(ref centerLng, ref centerLat, true); Rectify.Wgs84_To_Gcj02(ref centerLat, ref centerLng); double leftLng = double.Parse(list[0].LeftUpperLongitude.ToString()); double leftLat = double.Parse(list[0].LeftUpperLatitude.ToString()); double rightLng = double.Parse(list[0].RightLowerLongitude.ToString()); double rightLat = double.Parse(list[0].RightLowerLatitude.ToString()); Rectify.Wgs84_To_Gcj02(ref leftLat, ref leftLng); Rectify.Wgs84_To_Gcj02(ref rightLat, ref rightLng); //NetDecry.Fix(ref leftLng, ref leftLat, true); //NetDecry.Fix(ref rightLng, ref rightLat, true); list[0].CenterLongitude = (float)centerLng; list[0].CenterLatitude = (float)centerLat; list[0].LeftUpperLongitude = (float)leftLng; list[0].LeftUpperLatitude = (float)leftLat; list[0].RightLowerLongitude = (float)rightLng; list[0].RightLowerLatitude = (float)rightLat; data = list[0]; } else { int len = list.Count; //List<string> points = new List<string>(); string points = string.Empty; for (int i = 0; i < len; i++) { //纠偏 double lng = double.Parse(list[i].Longitude.ToString()); double lat = double.Parse(list[i].Latitude.ToString()); //NetDecry.Fix(ref lng, ref lat, true); Rectify.Wgs84_To_Gcj02(ref lat, ref lng); points = points + lng.ToString() + ","; points = points + lat.ToString() + ","; //points.Add(list[i].Longitude.ToString()); //points.Add(list[i].Latitude.ToString()); } list[0].RePolygonList = points; data = list[0]; } } return(new SelectResult <MapRegionsEditModel>() { DataResult = data, Message = msg }); }