示例#1
0
        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));
            }
        }
示例#2
0
        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));
        }
示例#3
0
        /// <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
            });
        }