using ExportMap.db;
|
using ExportMap.Models;
|
using System;
|
using System.Collections.Generic;
|
using System.Configuration;
|
using System.Data;
|
using System.IO;
|
using System.Linq;
|
using System.Web;
|
|
namespace ExportMap.cs
|
{
|
public class SGUtils
|
{
|
/// <summary>
|
/// Mpt目录
|
/// </summary>
|
public static string MptPath
|
{
|
get
|
{
|
return ConfigurationManager.AppSettings["mptFolder"];
|
}
|
}
|
|
/// <summary>
|
/// 3DML目录
|
/// </summary>
|
public static string D3mlFolder
|
{
|
get
|
{
|
return ConfigurationManager.AppSettings["3dmlFolder"];
|
}
|
}
|
|
/// <summary>
|
/// 廊坊数据目录
|
/// </summary>
|
public static string LFData
|
{
|
get
|
{
|
return ConfigurationManager.AppSettings["lfData"];
|
}
|
}
|
|
/// <summary>
|
/// SG的DB库
|
/// </summary>
|
public static string SGDB
|
{
|
get
|
{
|
return ConfigurationManager.AppSettings["sgDB"];
|
}
|
}
|
|
/// <summary>
|
/// 发布数据
|
/// </summary>
|
/// <param name="args">XYZ参数</param>
|
/// <returns>行数</returns>
|
public int Release(XYZArgs args)
|
{
|
List<SysMeta> list = XYZUtils.selectMetas(args.ids, "and type in ('mpt', '3dml')");
|
if (null == list || list.Count == 0) return 0;
|
|
int maxId = GetMaxId();
|
RomoveNoneFiles(list);
|
|
|
|
|
List<SpatialItem> items = SelectItems(maxId);
|
if (null == items || items.Count == 0) return 0;
|
|
return 0;
|
}
|
|
/// <summary>
|
/// 获取最大ID值
|
/// </summary>
|
public static int GetMaxId()
|
{
|
Object obj = SQLiteHelper.ExecuteScalar("select max(id) from SpatialItems");
|
|
return null == obj ? 0 : Convert.ToInt32(obj);
|
}
|
|
/// <summary>
|
/// 查询SG数据项
|
/// </summary>
|
/// <param name="maxId">最大ID值</param>
|
/// <returns>SG数据项</returns>
|
public static List<SpatialItem> SelectItems(int maxId)
|
{
|
string sql = string.Format("select id, Name, RelativePath, LayerName, DataSourceId, Description from SpatialItems where id > {0} order by id desc", maxId);
|
|
DataTable dt = SQLiteHelper.GetDataTable(sql);
|
List<SpatialItem> list = ModelHandler.FillModel<SpatialItem>(dt);
|
|
return list;
|
}
|
|
/// <summary>
|
/// 移除空文件
|
/// </summary>
|
private void RomoveNoneFiles(List<SysMeta> list)
|
{
|
string uploadFolder = Tool.GetSetting("uploadFolder");
|
|
int i = 0;
|
while (i < list.Count)
|
{
|
SysMeta meta = list[i];
|
string filePath = Path.Combine(uploadFolder, meta.path);
|
if (!File.Exists(filePath))
|
{
|
list.RemoveAt(i);
|
continue;
|
}
|
|
if ("mpt".Equals(meta.type))
|
{
|
string midx = Path.Combine(uploadFolder, meta.path.Replace(".mpt", ".midx"));
|
string strmi = Path.Combine(uploadFolder, meta.path.Replace(".mpt", ".strmi"));
|
if (!File.Exists(midx) || !File.Exists(strmi))
|
{
|
list.RemoveAt(i);
|
continue;
|
}
|
}
|
|
i++;
|
}
|
}
|
}
|
}
|