コード例 #1
0
 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));
     }
 }
コード例 #2
0
        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
            });
        }
コード例 #3
0
        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
            });
        }