管道基础大数据平台系统开发-【CS】-ExportMap
13693261870
2024-09-03 3cfb6aa02516135fb174ab1b30620f2007924663
ExportMap/cs/SGUtils.cs
@@ -45,9 +45,11 @@
            switch (meta.type)
            {
                case "mpt":
                    return "http://{host}/SG/Imagery;" + sgsID + ".mpt"; // Elevation
                    return "{host}/SG/Imagery;" + sgsID + ".mpt"; // Elevation
                case "3dml":
                    return "http://{host}/SG/b3dm/" + sgsID + "/tileset.json";
                    return "{host}/SG/b3dm/" + sgsID + "/tileset.json";
                case "cpt":
                    return "{host}/SG/pnts/" + sgsID + "/tileset.json";
                default:
                    return string.Empty;
            }
@@ -60,7 +62,7 @@
        /// <returns>行数</returns>
        public List<int> Release(XYZArgs args, ref string err)
        {
            List<SysMeta> list = XYZUtils.SelectMetas(args.ids, "and type in ('mpt', '3dml')");
            List<SysMeta> list = XYZUtils.SelectMetas(args.ids, "and type in ('mpt', '3dml', 'cpt')");
            if (null == list || list.Count == 0) return null;
            //int maxId = GetMaxId(); // maxId = 411576;
@@ -68,48 +70,95 @@
            if (list.Count == 0) return null;
            //err = LinkFiles(list);
            //if (!string.IsNullOrEmpty(err)) return 0;
            Tools.SetIsModel(args, list);
            MoveFiles(list);
            string names = GetNames(list);
            SysTask task = CreateTask(args, list);
            task.pid = 0;
            task.id = TaskDBHelper.Insert(task);
            //string names = GetNames(list);
            string sql = getSql(list);
            for (int i = 0; i < 61; i++)
            {
                Thread.Sleep(3000);
                List<SpatialItem> items = SelectItems(names);
                //List<SpatialItem> items = SelectItems(names);
                List<SpatialItem> items = SelectItemsBySql(sql);
                if (null == items || items.Count == 0) continue;
                task = TaskDBHelper.SelectById(task.id);
                if (null != task && task.status < 2)
                {
                    task.status = 2;
                    TaskDBHelper.Update(task);
                }
                return InsertInto(list, items, args);
            }
            task = TaskDBHelper.SelectById(task.id);
            if (null != task && task.status < 2)
            {
                task.status = 4;
                task.err = "没有数据要发布";
                TaskDBHelper.Update(task);
            }
            return null;
        }
        /// <summary>
        /// 查询SG数据项
        /// 创建任务
        /// </summary>
        public List<SpatialItem> SelectItems(string names)
        private SysTask CreateTask(XYZArgs args, List<SysMeta> list)
        {
            string sql = string.Format("select id, Name, RelativePath, LayerName, DataSourceId, Description from SpatialItems where Name in ({0}) order by id desc", names);
            args.name = list[0].name;
            for (int i = 1; i < list.Count; i++)
            {
                string name =args.name+ "," + list[i].name;
                if (name.Length > 150) break;
            DataTable dt = SQLiteHelper.GetDataTable(sql);
            List<SpatialItem> list = ModelHandler.FillModel<SpatialItem>(dt);
                args.name = name;
            }
            return list;
            switch (list[0].type)
            {
                case "3dml":
                    return TaskDBHelper.CreateTask(args, "3DML", "三维模型(3DML)");
                case "cpt":
                    return TaskDBHelper.CreateTask(args, "CPT", "点云数据(CPT)");
                default:
                    return TaskDBHelper.CreateTask(args, "MPT", "场景数据(MPT)");
            }
        }
        /// <summary>
        /// 获取名称字符串
        /// 获取查询SQL
        /// </summary>
        private string GetNames(List<SysMeta> metas)
        private string getSql(List<SysMeta> metas)
        {
            List<string> list = new List<string>();
            foreach (SysMeta meta in metas)
            {
                list.Add("'" + meta.id + "_" + meta.name + "'");
                list.Add("Name like '%_" + meta.name + "'");
            }
            return string.Join(",", list);
            string filters = string.Join(" or ", list);
            return string.Format("select id, Name, RelativePath, LayerName, DataSourceId, Description from SpatialItems where {0} order by id desc", filters);
        }
        /// <summary>
        /// 查询SG数据项
        /// </summary>
        private List<SpatialItem> SelectItemsBySql(string sql)
        {
            DataTable dt = SQLiteHelper.GetDataTable(sql);
            List<SpatialItem> list = ModelHandler.FillModel<SpatialItem>(dt);
            return list;
        }
        /// <summary>
@@ -153,8 +202,9 @@
            List<int> ids = new List<int>();
            foreach (SysMeta meta in list)
            {
                IEnumerable<SpatialItem> iterator = from item in items where item.Name.Equals(meta.id + "_" + meta.name) select item;
                if (null == iterator) return ids;
                //IEnumerable<SpatialItem> iterator = from item in items where item.Name.Equals(meta.id + "_" + meta.name) select item;
                IEnumerable<SpatialItem> iterator = from item in items where item.Name.Contains("_" + meta.name) select item;
                if (null == iterator || 0 == iterator.Count()) return ids;
                meta.verid = iterator.First().id;
                int pubid = InsertToDB(meta, args);
@@ -170,11 +220,17 @@
        /// </summary>
        private static int InsertToDB(SysMeta meta, XYZArgs args)
        {
            if (PubDBHelper.IsPublish(meta.id)) return 0;
            //if (PubDBHelper.IsPublish(meta.id)) return 1;
            int pubid = PubDBHelper.GetPushlishId(meta.id);
            if (pubid > 0)
            {
                PubDBHelper.UpdatePublish(pubid, meta.name, args.userId, null, GetReleaseUrl(meta, meta.verid));
                return pubid;
            }
            SysPublish sys = Tools.NewPublish(meta, args, GetReleaseUrl(meta, meta.verid), meta.id + "\\" + meta.name);
            int pubid = PubDBHelper.InsertPublish(sys);
            pubid = PubDBHelper.InsertPublish(sys);
            if (pubid > 0)
            {
                sys.id = pubid;
@@ -219,6 +275,35 @@
            }
        }
        #region 废弃 *
        /// <summary>
        /// 查询SG数据项
        /// </summary>
        public List<SpatialItem> SelectItems(string names)
        {
            string sql = string.Format("select id, Name, RelativePath, LayerName, DataSourceId, Description from SpatialItems where Name in ({0}) order by id desc", names);
            DataTable dt = SQLiteHelper.GetDataTable(sql);
            List<SpatialItem> list = ModelHandler.FillModel<SpatialItem>(dt);
            return list;
        }
        /// <summary>
        /// 获取名称字符串
        /// </summary>
        private string GetNames(List<SysMeta> metas)
        {
            List<string> list = new List<string>();
            foreach (SysMeta meta in metas)
            {
                list.Add("'" + meta.id + "_" + meta.name + "'");
            }
            return string.Join(",", list);
        }
        #endregion
        #region * 废弃 *
        /// <summary>
        /// 获取最大ID值