|
|
|
|
using ESRI.ArcGIS.Geodatabase;
|
|
|
|
|
using ExcelDataReader;
|
|
|
|
|
using KGIS.Framework.AE;
|
|
|
|
|
using KGIS.Framework.AE.Enum;
|
|
|
|
|
using KGIS.Framework.DBOperator;
|
|
|
|
|
using KGIS.Framework.Maps;
|
|
|
|
|
using KGIS.Framework.Platform;
|
|
|
|
|
using KGIS.Framework.Utils;
|
|
|
|
|
using KGIS.Framework.Utils.ExtensionMethod;
|
|
|
|
|
using KGIS.Framework.Utils.Helper;
|
|
|
|
|
using KGIS.Framework.Utils.Model;
|
|
|
|
|
using KGIS.Framework.VCT.Entity;
|
|
|
|
|
using KGIS.Framework.VCT.Enums;
|
|
|
|
|
using KGIS.Framework.VCT.Helper;
|
|
|
|
|
using kingo.Plugin.BGResultManager.Helper;
|
|
|
|
|
using kingo.Plugin.BGResultManager.Interface;
|
|
|
|
|
using kingo.Plugin.BGResultManager.Utility.GDB;
|
|
|
|
|
using kingo.Plugin.BGResultManager.Utility.MDB;
|
|
|
|
|
using kingo.Plugin.BGResultManager.Utility.Metadata;
|
|
|
|
|
using Kingo.Plugin.BGResultManager.Utility;
|
|
|
|
|
using Kingo.PluginServiceInterface;
|
|
|
|
|
using KUI.Windows;
|
|
|
|
|
using ReactiveUI;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
using System.Xml;
|
|
|
|
|
|
|
|
|
|
namespace Kingo.Plugin.BGResultManager.ViewModel
|
|
|
|
|
{
|
|
|
|
|
public class ExportBGViewModel : ReactiveObject, IScreen
|
|
|
|
|
{
|
|
|
|
|
private string _OutDir;
|
|
|
|
|
public string OutDir
|
|
|
|
|
{
|
|
|
|
|
get { return _OutDir; }
|
|
|
|
|
set { this.RaiseAndSetIfChanged(ref _OutDir, value); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string _NCDataDir;
|
|
|
|
|
public string NCDataDir
|
|
|
|
|
{
|
|
|
|
|
get { return _NCDataDir; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
this.RaiseAndSetIfChanged(ref _NCDataDir, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool _hasPdt;
|
|
|
|
|
public bool HasPDT
|
|
|
|
|
{
|
|
|
|
|
get { return _hasPdt; }
|
|
|
|
|
set { this.RaiseAndSetIfChanged(ref _hasPdt, value); }
|
|
|
|
|
}
|
|
|
|
|
private bool _IsBL;//是否补充0至19位
|
|
|
|
|
public bool IsBL
|
|
|
|
|
{
|
|
|
|
|
get { return _IsBL; }
|
|
|
|
|
set { this.RaiseAndSetIfChanged(ref _IsBL, value); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private System.Windows.Visibility _PDT_Visibility;
|
|
|
|
|
public System.Windows.Visibility PDT_Visibility
|
|
|
|
|
{
|
|
|
|
|
get { return _PDT_Visibility; }
|
|
|
|
|
set { this.RaiseAndSetIfChanged(ref _PDT_Visibility, value); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private System.Windows.Visibility _BL_Visibility;
|
|
|
|
|
public System.Windows.Visibility BL_Visibility
|
|
|
|
|
{
|
|
|
|
|
get { return _BL_Visibility; }
|
|
|
|
|
set { this.RaiseAndSetIfChanged(ref _BL_Visibility, value); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private System.Windows.Visibility _NCData_Visibility;
|
|
|
|
|
public System.Windows.Visibility NCData_Visibility
|
|
|
|
|
{
|
|
|
|
|
get { return _NCData_Visibility; }
|
|
|
|
|
set { this.RaiseAndSetIfChanged(ref _NCData_Visibility, value); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private decimal _BGYear = Convert.ToDecimal(DateTime.Now.Year - 1 < 2019 ? 2019 : DateTime.Now.Month >= 10 ? DateTime.Now.Year : DateTime.Now.Year - 1);
|
|
|
|
|
public decimal BGYear
|
|
|
|
|
{
|
|
|
|
|
get { return _BGYear; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
this.RaiseAndSetIfChanged(ref _BGYear, value);
|
|
|
|
|
//Items = GetResultsCatalog();
|
|
|
|
|
//Items = GetResultsCatalogtemp(true);
|
|
|
|
|
if (Items != null)
|
|
|
|
|
{
|
|
|
|
|
new Thread((ThreadStart)delegate () { Items = GetResultsCatalogtemp(true, Items); }).Start();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<ResultsCatalog> _Items;
|
|
|
|
|
public List<ResultsCatalog> Items
|
|
|
|
|
{
|
|
|
|
|
get { return _Items; }
|
|
|
|
|
set
|
|
|
|
|
{ this.RaiseAndSetIfChanged(ref _Items, value); }
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 输出成果根目录
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string OutDataRootDir { get; set; }
|
|
|
|
|
public RoutingState Router
|
|
|
|
|
{
|
|
|
|
|
get;
|
|
|
|
|
}
|
|
|
|
|
public ReactiveCommand<object> ExportClick { get; protected set; }
|
|
|
|
|
public ReactiveCommand<object> DeleteTemplateClick { get; protected set; }
|
|
|
|
|
public ReactiveCommand<object> CreateTemplateClick { get; protected set; }
|
|
|
|
|
public ReactiveCommand<object> SelectedTemplateClick { get; protected set; }
|
|
|
|
|
|
|
|
|
|
private List<string> _TemplateList;
|
|
|
|
|
public List<string> TemplateList
|
|
|
|
|
{
|
|
|
|
|
get { return _TemplateList; }
|
|
|
|
|
set { this.RaiseAndSetIfChanged(ref _TemplateList, value); }
|
|
|
|
|
}
|
|
|
|
|
private int _CurrentTemplateIndex;
|
|
|
|
|
public int CurrentTemplateIndex
|
|
|
|
|
{
|
|
|
|
|
get { return _CurrentTemplateIndex; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
this.RaiseAndSetIfChanged(ref _CurrentTemplateIndex, value);
|
|
|
|
|
ReadTemplateLayerInfo();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<BGVCTEntity> _LayerSource;
|
|
|
|
|
public List<BGVCTEntity> LayerSource
|
|
|
|
|
{
|
|
|
|
|
get { return _LayerSource; }
|
|
|
|
|
set { this.RaiseAndSetIfChanged(ref _LayerSource, value); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<BGVCTEntity> _IncrementalUpdatingSource;
|
|
|
|
|
public List<BGVCTEntity> IncrementalUpdatingSource
|
|
|
|
|
{
|
|
|
|
|
get { return _IncrementalUpdatingSource; }
|
|
|
|
|
set { this.RaiseAndSetIfChanged(ref _IncrementalUpdatingSource, value); }
|
|
|
|
|
}
|
|
|
|
|
//private Dictionary<string, string> dicFeatureCode = null;
|
|
|
|
|
private BGVCTEntity GXVCTEntity = null;
|
|
|
|
|
private BGVCTEntity GXGCVCTEntity = null;
|
|
|
|
|
private Visibility _SelectTemplate;
|
|
|
|
|
public Visibility SelectTemplate
|
|
|
|
|
{
|
|
|
|
|
get { return _SelectTemplate; }
|
|
|
|
|
set { this.RaiseAndSetIfChanged(ref _SelectTemplate, value); }
|
|
|
|
|
}
|
|
|
|
|
private Visibility _IsResultsExport;
|
|
|
|
|
public Visibility IsResultsExport
|
|
|
|
|
{
|
|
|
|
|
get { return _IsResultsExport; }
|
|
|
|
|
set { this.RaiseAndSetIfChanged(ref _IsResultsExport, value); }
|
|
|
|
|
}
|
|
|
|
|
private string sBGCGDir = string.Empty;
|
|
|
|
|
public ExportBGViewModel()
|
|
|
|
|
{
|
|
|
|
|
HasPDT = false;
|
|
|
|
|
IsBL = false;
|
|
|
|
|
PDT_Visibility = Visibility.Collapsed;
|
|
|
|
|
BL_Visibility = Visibility.Collapsed;
|
|
|
|
|
IsResultsExport = Visibility.Collapsed;
|
|
|
|
|
SelectTemplate = Visibility.Visible;
|
|
|
|
|
NCData_Visibility = Visibility.Visible;
|
|
|
|
|
OutDir = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).BGResultPath;
|
|
|
|
|
sBGCGDir = Path.Combine((MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ProjDir, "变更成果模板");
|
|
|
|
|
Items = GetResultsCatalogtemp(true);
|
|
|
|
|
Init();
|
|
|
|
|
#region 一键成果导出
|
|
|
|
|
ExportClick = ReactiveCommand.Create();
|
|
|
|
|
ExportClick.Subscribe(x =>
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (Items == null)
|
|
|
|
|
return;
|
|
|
|
|
#region 创建成果导出路径
|
|
|
|
|
if (!string.IsNullOrEmpty(OutDir))
|
|
|
|
|
{
|
|
|
|
|
string path = Path.Combine(OutDir, DateTime.Now.ToString("yyyyMMddHHmmssfff"));
|
|
|
|
|
if (!Directory.Exists(path))
|
|
|
|
|
Directory.CreateDirectory(path);
|
|
|
|
|
OutDir = path;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
if (string.IsNullOrWhiteSpace(OutDir))
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.ShowWarning("请选择输出目录!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (string.IsNullOrWhiteSpace(NCDataDir))
|
|
|
|
|
{
|
|
|
|
|
//MessageHelper.ShowWarning("未选择建库成果路径,将取消汇总报表导出");
|
|
|
|
|
if (MessageHelper.ShowYesNoAndTips("年初报表数据未选择,将不会生成报表数据,是否继续执行?") != System.Windows.Forms.DialogResult.Yes)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
this.ShowLoading("正在导出...", 0, 0);
|
|
|
|
|
ExcelToDataTable();
|
|
|
|
|
OutDataRootDir = Items[0].Name;
|
|
|
|
|
CreateCatalogDir(Items);
|
|
|
|
|
if (Items[0] != null && Items[0].SubCatalog != null)
|
|
|
|
|
{
|
|
|
|
|
ResultsCatalog resultsCatalog = Items[0].SubCatalog.FirstOrDefault(a => a.Name == "基础数据包");
|
|
|
|
|
if (resultsCatalog == null)
|
|
|
|
|
MessageHelper.ShowWarning("未找到基础数据包!");
|
|
|
|
|
else
|
|
|
|
|
CopyBasePackage(resultsCatalog.Path);
|
|
|
|
|
}
|
|
|
|
|
this.CloseLoading();
|
|
|
|
|
MessageHelper.ShowTips("导出完成!");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
this.CloseLoading();
|
|
|
|
|
MessageHelper.ShowError("导出失败:" + ex.Message);
|
|
|
|
|
LogAPI.Debug(ex);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
//#region 删除模板
|
|
|
|
|
//DeleteTemplateClick = ReactiveCommand.Create();
|
|
|
|
|
//DeleteTemplateClick.Subscribe(x =>
|
|
|
|
|
//{
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// if (CurrentTemplateIndex != -1)
|
|
|
|
|
// {
|
|
|
|
|
// string templatePath = Path.Combine(SysAppPath.GetCurrentAppPath(), "工作空间", "模板", "变更成果模板");
|
|
|
|
|
// string vctPath_GX = Path.Combine(templatePath, TemplateList[CurrentTemplateIndex]);
|
|
|
|
|
// if (MessageHelper.ShowYesNoAndTips("是否删除当前模板?") == System.Windows.Forms.DialogResult.Yes)
|
|
|
|
|
// {
|
|
|
|
|
// if (Directory.Exists(vctPath_GX))
|
|
|
|
|
// {
|
|
|
|
|
// Directory.Delete(vctPath_GX, true);
|
|
|
|
|
// List<string> Lists = TemplateList.Copy();
|
|
|
|
|
// Lists.RemoveAt(CurrentTemplateIndex);
|
|
|
|
|
// TemplateList = Lists;
|
|
|
|
|
// CurrentTemplateIndex = TemplateList.Count - 1;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// catch (Exception ex)
|
|
|
|
|
// {
|
|
|
|
|
// MessageHelper.ShowError("删除模板失败!");
|
|
|
|
|
// LogAPI.Debug("删除变更成果模板时发生异常!异常信息如下:");
|
|
|
|
|
// LogAPI.Debug(ex);
|
|
|
|
|
// LogAPI.Debug("异常信息结束。");
|
|
|
|
|
// }
|
|
|
|
|
//});
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
#region 新建模板(页面上已注销此功能)
|
|
|
|
|
CreateTemplateClick = ReactiveCommand.Create();
|
|
|
|
|
CreateTemplateClick.Subscribe(x =>
|
|
|
|
|
{
|
|
|
|
|
View.FrmCreateVCTTemplate main = new View.FrmCreateVCTTemplate();
|
|
|
|
|
main.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
|
|
|
|
|
main.Closed += Main_Closed;
|
|
|
|
|
main.Show();
|
|
|
|
|
});
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 选择变更成果数据模板
|
|
|
|
|
SelectedTemplateClick = ReactiveCommand.Create();
|
|
|
|
|
SelectedTemplateClick.Subscribe(x =>
|
|
|
|
|
{
|
|
|
|
|
//if (CurrentTemplateIndex == -1)
|
|
|
|
|
//{
|
|
|
|
|
// MessageHelper.ShowTips("请选择或创建成果数据模板!");
|
|
|
|
|
// return;
|
|
|
|
|
//}
|
|
|
|
|
Create_Click();
|
|
|
|
|
IsResultsExport = Visibility.Visible;
|
|
|
|
|
SelectTemplate = Visibility.Collapsed;
|
|
|
|
|
});
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
#region MyRegion
|
|
|
|
|
|
|
|
|
|
private void CopyBasePackage(string basePackagePath)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(NCDataDir) || string.IsNullOrEmpty(OutDir)) return;
|
|
|
|
|
//CopyFolder(NCDataDir, Path.Combine(OutDir, basePackagePath, "汇总表格"));
|
|
|
|
|
CopyFolder(NCDataDir, Path.Combine(OutDir, basePackagePath));
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//LogAPI.Debug("复制汇总表格 异常:" + ex);
|
|
|
|
|
LogAPI.Debug("复制基础数据包 异常:" + ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void CopyFolder(string sourceFolderPath, string destinationFolderPath)
|
|
|
|
|
{
|
|
|
|
|
if (!Directory.Exists(destinationFolderPath))
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(destinationFolderPath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
string[] files = Directory.GetFiles(sourceFolderPath);
|
|
|
|
|
foreach (string file in files)
|
|
|
|
|
{
|
|
|
|
|
string destinationFilePath = Path.Combine(destinationFolderPath, Path.GetFileName(file));
|
|
|
|
|
File.Copy(file, destinationFilePath, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
string[] subFolders = Directory.GetDirectories(sourceFolderPath);
|
|
|
|
|
foreach (string subFolder in subFolders)
|
|
|
|
|
{
|
|
|
|
|
string destinationSubFolderPath = Path.Combine(destinationFolderPath, Path.GetFileName(subFolder));
|
|
|
|
|
CopyFolder(subFolder, destinationSubFolderPath);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Create_Click()
|
|
|
|
|
{
|
|
|
|
|
IWorkspaceAPI s_WsAPI = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string currentGDBPath = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ZLDatabase;
|
|
|
|
|
s_WsAPI = new WorkspaceAPI(currentGDBPath, WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
List<BGVCTEntity> TableMappingList = new List<BGVCTEntity>();
|
|
|
|
|
string sDir = Path.Combine(sBGCGDir, "成果导出");
|
|
|
|
|
List<BGVCTEntity> list = GXVCTEntity.SubEntities.FindAll(x => x.IsChecked == true && (x.FeatureClassName.EndsWith("GX") || x.FeatureClassName == "GXZJ"));
|
|
|
|
|
list.AddRange((LayerSource as List<BGVCTEntity>)[0].SubEntities.FindAll(x => x.IsChecked == true));
|
|
|
|
|
if (list.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
string sPath = Path.Combine(sDir, "VCTTemplate3ForBG.VCT");
|
|
|
|
|
FileStream fs = new FileStream(sPath, FileMode.Create);
|
|
|
|
|
StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("GB18030"));
|
|
|
|
|
GenerateVCTHead(sw);
|
|
|
|
|
foreach (BGVCTEntity item in list)
|
|
|
|
|
{
|
|
|
|
|
TableMappingList.Add(item);
|
|
|
|
|
}
|
|
|
|
|
GenerateVCTFeatureCode(sw, list, s_WsAPI);
|
|
|
|
|
sw.WriteLine("TableStructureBegin");
|
|
|
|
|
foreach (BGVCTEntity entity in list)
|
|
|
|
|
{
|
|
|
|
|
IFeatureClassAPI fcSourceAPI = s_WsAPI.OpenFeatureClass(entity.FeatureClassName);
|
|
|
|
|
IFeatureClass fcSource = fcSourceAPI.FeatureClass;
|
|
|
|
|
IFields fields = fcSource.Fields;
|
|
|
|
|
int FieldCount = 0;
|
|
|
|
|
for (int i = 0; i < fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = fields.Field[i];
|
|
|
|
|
if (field.Name == "OBJECTID" || field.Name == "JCTBBSM" || field.Name == "Element" || field.Name == "SHAPE" || field.Name == "SHAPE_Length" || field.Name == "SHAPE_Area")
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (entity.FeatureClassName == "DLTBGX" && (field.Name == "XZQTZLX" || field.Name == "ONLYZLBG"))
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
FieldCount++;
|
|
|
|
|
}
|
|
|
|
|
sw.WriteLine(string.Format("{0},{1}", entity.FeatureClassName, FieldCount));
|
|
|
|
|
for (int i = 0; i < fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = fields.Field[i];
|
|
|
|
|
if (field.Name == "OBJECTID" || field.Name == "JCTBBSM" || field.Name == "Element" || field.Name == "SHAPE" || field.Name == "SHAPE_Length" || field.Name == "SHAPE_Area")
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (entity.FeatureClassName == "DLTBGX" && (field.Name == "XZQTZLX" || field.Name == "ONLYZLBG"))
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
string strFieldType = GetVCTFieldType(field);
|
|
|
|
|
if (strFieldType == "Float")
|
|
|
|
|
{
|
|
|
|
|
sw.WriteLine(string.Format("{0},{1},{2},2", field.Name, strFieldType, field.Length <= 255 ? field.Length : 255));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sw.WriteLine(string.Format("{0},{1},{2}", field.Name, strFieldType, field.Length <= 255 ? field.Length : 255));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
sw.WriteLine("0");
|
|
|
|
|
}
|
|
|
|
|
sw.Write("TableStructureEnd");
|
|
|
|
|
sw.Close();
|
|
|
|
|
sw.Dispose();
|
|
|
|
|
fs.Close();
|
|
|
|
|
fs.Dispose();
|
|
|
|
|
}
|
|
|
|
|
#region 一键成果导出的VCT中不包含PDTGX图层及其相关表结构信息 2020-7-29 沈超
|
|
|
|
|
|
|
|
|
|
list = GXVCTEntity.SubEntities.FindAll(x => x.IsChecked == true && x.FeatureClassName == "PDTGX");
|
|
|
|
|
if (list.Count > 0)//创建没有PDTGCX的VCT
|
|
|
|
|
{
|
|
|
|
|
list = GXVCTEntity.SubEntities.FindAll(x => x.IsChecked == true && (x.FeatureClassName.EndsWith("GX") || x.FeatureClassName == "GXZJ") && x.FeatureClassName != "PDTGX");
|
|
|
|
|
if (list.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
string sPath = System.IO.Path.Combine(sDir, "VCTTemplate3ForBG_WithOutPDXGX.VCT");
|
|
|
|
|
FileStream fs = new FileStream(sPath, FileMode.Create);
|
|
|
|
|
StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("GB18030"));
|
|
|
|
|
GenerateVCTHead(sw);
|
|
|
|
|
GenerateVCTFeatureCode(sw, list, s_WsAPI);
|
|
|
|
|
sw.WriteLine("TableStructureBegin");
|
|
|
|
|
foreach (BGVCTEntity entity in list)
|
|
|
|
|
{
|
|
|
|
|
IFeatureClassAPI fcSourceAPI = s_WsAPI.OpenFeatureClass(entity.FeatureClassName);
|
|
|
|
|
IFeatureClass fcSource = fcSourceAPI.FeatureClass;
|
|
|
|
|
IFields fields = fcSource.Fields;
|
|
|
|
|
int FieldCount = 0;
|
|
|
|
|
for (int i = 0; i < fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = fields.Field[i];
|
|
|
|
|
if (entity.FeatureClassName == "DLTBGX" && field.Name.ToUpper() == "XHMARK")
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (field.Name == "OBJECTID" || field.Name == "JCTBBSM" || field.Name == "Element" ||
|
|
|
|
|
field.Name.ToUpper() == "SHAPE" || field.Name.ToUpper() == "SHAPE_LENGTH" || field.Name.ToUpper() == "SHAPE_AREA" ||
|
|
|
|
|
field.Name == "BGTBOID")
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
FieldCount++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
sw.WriteLine(string.Format("{0},{1}", entity.FeatureClassName, FieldCount));
|
|
|
|
|
for (int i = 0; i < fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = fields.Field[i];
|
|
|
|
|
if (entity.FeatureClassName == "DLTBGX" && field.Name.ToUpper() == "XHMARK")
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (field.Name == "OBJECTID" || field.Name == "JCTBBSM" || field.Name == "Element" ||
|
|
|
|
|
field.Name.ToUpper() == "SHAPE" || field.Name.ToUpper() == "SHAPE_LENGTH" || field.Name.ToUpper() == "SHAPE_AREA" ||
|
|
|
|
|
field.Name == "BGTBOID")
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
string strFieldType = GetVCTFieldType(field);
|
|
|
|
|
if (strFieldType == "Float")
|
|
|
|
|
{
|
|
|
|
|
sw.WriteLine(string.Format("{0},{1},{2},2", field.Name, strFieldType, field.Length <= 255 ? field.Length : 255));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sw.WriteLine(string.Format("{0},{1},{2}", field.Name, strFieldType, field.Length <= 255 ? field.Length : 255));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
sw.WriteLine("0");
|
|
|
|
|
}
|
|
|
|
|
sw.Write("TableStructureEnd");
|
|
|
|
|
sw.Close();
|
|
|
|
|
sw.Dispose();
|
|
|
|
|
fs.Close();
|
|
|
|
|
fs.Dispose();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
list = GXVCTEntity.SubEntities.FindAll(x => x.IsChecked == true && x.FeatureClassName.EndsWith("GXGC"));
|
|
|
|
|
if (list.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
string sPath = Path.Combine(sDir, "VCTTemplate3ForBG2.VCT");
|
|
|
|
|
FileStream fs = new FileStream(sPath, FileMode.Create);
|
|
|
|
|
StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("GB18030"));
|
|
|
|
|
GenerateVCTHead(sw);
|
|
|
|
|
foreach (BGVCTEntity item in list)
|
|
|
|
|
{
|
|
|
|
|
TableMappingList.Add(item);
|
|
|
|
|
}
|
|
|
|
|
GenerateVCTFeatureCode(sw, list, s_WsAPI);
|
|
|
|
|
sw.WriteLine("TableStructureBegin");
|
|
|
|
|
foreach (BGVCTEntity entity in list)
|
|
|
|
|
{
|
|
|
|
|
IFeatureClassAPI fcSourceAPI = s_WsAPI.OpenFeatureClass(entity.FeatureClassName);
|
|
|
|
|
IFeatureClass fcSource = fcSourceAPI.FeatureClass;
|
|
|
|
|
IFields fields = fcSource.Fields;
|
|
|
|
|
int FieldCount = 0;
|
|
|
|
|
for (int i = 0; i < fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = fields.Field[i];
|
|
|
|
|
if (field.Name == "OBJECTID" || field.Name == "JCTBBSM" || field.Name == "SHAPE" || field.Name == "SHAPE_Length" || field.Name == "SHAPE_Area")
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (entity.FeatureClassName == "DLTBGXGC" && (field.Name == "JCZT" || field.Name == "JCJG" || field.Name == "ONLYZLBG" || field.Name == "XMMC" || field.Name == "XMBH" || field.Name == "DKMC"))
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
FieldCount++;
|
|
|
|
|
}
|
|
|
|
|
sw.WriteLine(string.Format("{0},{1}", entity.FeatureClassName, FieldCount));
|
|
|
|
|
for (int i = 0; i < fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = fields.Field[i];
|
|
|
|
|
if (field.Name == "OBJECTID" || field.Name == "JCTBBSM" || field.Name == "SHAPE" || field.Name == "SHAPE_Length" || field.Name == "SHAPE_Area")
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (entity.FeatureClassName == "DLTBGXGC" && (field.Name == "JCZT" || field.Name == "JCJG" || field.Name == "ONLYZLBG" || field.Name == "XMMC" || field.Name == "XMBH" || field.Name == "DKMC"))
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
string strFieldType = GetVCTFieldType(field);
|
|
|
|
|
if (strFieldType == "Float")
|
|
|
|
|
{
|
|
|
|
|
sw.WriteLine(string.Format("{0},{1},{2},2", field.Name, strFieldType, field.Length <= 255 ? field.Length : 255));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sw.WriteLine(string.Format("{0},{1},{2}", field.Name, strFieldType, field.Length <= 255 ? field.Length : 255));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
sw.WriteLine("0");
|
|
|
|
|
}
|
|
|
|
|
sw.Write("TableStructureEnd");
|
|
|
|
|
sw.Close();
|
|
|
|
|
sw.Dispose();
|
|
|
|
|
fs.Close();
|
|
|
|
|
fs.Dispose();
|
|
|
|
|
}
|
|
|
|
|
string TMConfigPath = System.IO.Path.Combine(SysAppPath.GetCurrentAppPath(), "Configs", "BGCheckTableMappingConfig.xml");
|
|
|
|
|
CreateBGCheckTableMappingConfig(TMConfigPath, TableMappingList);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex);
|
|
|
|
|
MessageHelper.ShowError(ex.Message);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (s_WsAPI != null)
|
|
|
|
|
{
|
|
|
|
|
s_WsAPI.CloseWorkspace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void GenerateVCTHead(StreamWriter sw)
|
|
|
|
|
{
|
|
|
|
|
sw.WriteLine("HeadBegin");
|
|
|
|
|
sw.WriteLine("DataMark: LANDUSE-VCT");
|
|
|
|
|
sw.WriteLine("Version: 3.0");
|
|
|
|
|
sw.WriteLine("CoordinateSystemType:P");
|
|
|
|
|
sw.WriteLine("Dim:2");
|
|
|
|
|
sw.WriteLine("XAxisDirection:E");
|
|
|
|
|
sw.WriteLine("YAxisDirection:N");
|
|
|
|
|
sw.WriteLine("XYUnit:M");
|
|
|
|
|
sw.WriteLine("ZUnit:M");
|
|
|
|
|
sw.WriteLine("Spheroid:CGCS2000,6378137.0,298.257222101");
|
|
|
|
|
sw.WriteLine("PrimeMeridian:Greenwich");
|
|
|
|
|
sw.WriteLine("Projection:高斯-克吕格投影");
|
|
|
|
|
sw.WriteLine("Parameters:0,0,0,0,0,0");
|
|
|
|
|
sw.WriteLine("VerticalDatum:1985国家高程基准");
|
|
|
|
|
sw.WriteLine("TemporalReferenceSystem:北京时间");
|
|
|
|
|
sw.WriteLine("ExtentMin:0,0");
|
|
|
|
|
sw.WriteLine("ExtentMax:0,0");
|
|
|
|
|
sw.WriteLine("MapScale:5000");
|
|
|
|
|
sw.WriteLine("Offset:0,0");
|
|
|
|
|
sw.WriteLine("Date:201801");
|
|
|
|
|
sw.WriteLine("Separator:,");
|
|
|
|
|
sw.WriteLine("HeadEnd");
|
|
|
|
|
sw.WriteLine();
|
|
|
|
|
}
|
|
|
|
|
private void GenerateVCTFeatureCode(StreamWriter sw, List<BGVCTEntity> list, IWorkspaceAPI s_WsAPI)
|
|
|
|
|
{
|
|
|
|
|
sw.WriteLine("FeatureCodeBegin");
|
|
|
|
|
foreach (BGVCTEntity item in list)
|
|
|
|
|
{
|
|
|
|
|
string FCode = "";
|
|
|
|
|
if (dicFeatureCode.ContainsKey(item.FeatureClassName))
|
|
|
|
|
{
|
|
|
|
|
FCode = dicFeatureCode[item.FeatureClassName];
|
|
|
|
|
}
|
|
|
|
|
string strGeoType = GetVCTGeometryType(s_WsAPI.OpenFeatureClass(item.FeatureClassName).FeatureClass);
|
|
|
|
|
sw.WriteLine(string.Format("{0},{1},{2},{3}", FCode, item.Name, strGeoType, item.FeatureClassName));
|
|
|
|
|
}
|
|
|
|
|
sw.WriteLine("FeatureCodeEnd");
|
|
|
|
|
sw.WriteLine();
|
|
|
|
|
}
|
|
|
|
|
private string GetVCTGeometryType(IFeatureClass featureClass)
|
|
|
|
|
{
|
|
|
|
|
string strGType = "";
|
|
|
|
|
switch (featureClass.ShapeType)
|
|
|
|
|
{
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryNull:
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint:
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryMultipoint:
|
|
|
|
|
strGType = "Point";
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline:
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryLine:
|
|
|
|
|
strGType = "Line";
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryCircularArc:
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryEllipticArc:
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryBezier3Curve:
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPath:
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryRing:
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon:
|
|
|
|
|
strGType = "Polygon";
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryEnvelope:
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryAny:
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryBag:
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryMultiPatch:
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryTriangleStrip:
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryTriangleFan:
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryRay:
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometrySphere:
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryTriangles:
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return strGType;
|
|
|
|
|
}
|
|
|
|
|
private void CreateBGCheckTableMappingConfig(string configFilePath, List<BGVCTEntity> list)
|
|
|
|
|
{
|
|
|
|
|
IWorkspaceAPI s_WsAPI = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//创建XmlDocument对象
|
|
|
|
|
XmlDocument xmlDoc = new XmlDocument();
|
|
|
|
|
//XML的声明<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
XmlDeclaration xmlSM = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
|
|
|
|
|
//追加xmldecl位置
|
|
|
|
|
xmlDoc.AppendChild(xmlSM);
|
|
|
|
|
//创建CheckTableMapping节点
|
|
|
|
|
XmlElement MainElement = xmlDoc.CreateElement("", "CheckTableMapping", "");
|
|
|
|
|
//追加CheckTableMapping的根节点位置
|
|
|
|
|
xmlDoc.AppendChild(MainElement);
|
|
|
|
|
|
|
|
|
|
string currentGDBPath = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ZLDatabase;
|
|
|
|
|
s_WsAPI = new WorkspaceAPI(currentGDBPath, WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
foreach (BGVCTEntity entity in list)
|
|
|
|
|
{
|
|
|
|
|
IFeatureClassAPI fcSourceAPI = s_WsAPI.OpenFeatureClass(entity.FeatureClassName);
|
|
|
|
|
IFeatureClass fcSource = fcSourceAPI.FeatureClass;
|
|
|
|
|
FeatureClass fc = fcSource as FeatureClass;
|
|
|
|
|
XmlElement TableElement = xmlDoc.CreateElement("", "Table", "");
|
|
|
|
|
TableElement.SetAttribute("TableName", fc.Name);
|
|
|
|
|
TableElement.SetAttribute("Name", fcSource.AliasName);
|
|
|
|
|
TableElement.SetAttribute("Type", GetShapeTypeName(fcSource));
|
|
|
|
|
TableElement.SetAttribute("IsNecessary", "True");
|
|
|
|
|
TableElement.SetAttribute("YSDM", GetYSDMByLayerName(fc.Name));
|
|
|
|
|
IFields fields = fcSource.Fields;
|
|
|
|
|
for (int i = 0; i < fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = fields.Field[i];
|
|
|
|
|
if (field.Name == "OBJECTID" || field.Name == "JCTBBSM" || field.Name == "SHAPE" || field.Name == "SHAPE_Length" || field.Name == "SHAPE_Area")
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
XmlElement FieldElement = xmlDoc.CreateElement("", "Column", "");
|
|
|
|
|
FieldElement.SetAttribute("Name", field.Name);
|
|
|
|
|
FieldElement.SetAttribute("AliasName", field.AliasName);
|
|
|
|
|
FieldElement.SetAttribute("AllowDBNull", field.IsNullable ? "True" : "False");
|
|
|
|
|
FieldElement.SetAttribute("DataType", GetFieldTypeName(field.Type));
|
|
|
|
|
if (field.Type == esriFieldType.esriFieldTypeString)
|
|
|
|
|
{
|
|
|
|
|
FieldElement.SetAttribute("MaxLength", field.Length.ToString());
|
|
|
|
|
}
|
|
|
|
|
if (field.Type == esriFieldType.esriFieldTypeSingle || field.Type == esriFieldType.esriFieldTypeDouble)
|
|
|
|
|
{
|
|
|
|
|
FieldElement.SetAttribute("Precision", field.Precision.ToString());
|
|
|
|
|
}
|
|
|
|
|
TableElement.AppendChild(FieldElement);
|
|
|
|
|
}
|
|
|
|
|
MainElement.AppendChild(TableElement);
|
|
|
|
|
}
|
|
|
|
|
xmlDoc.Save(configFilePath);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (s_WsAPI != null)
|
|
|
|
|
{
|
|
|
|
|
s_WsAPI.CloseWorkspace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public string GetShapeTypeName(IFeatureClass fc)
|
|
|
|
|
{
|
|
|
|
|
string strType = "";
|
|
|
|
|
switch (fc.ShapeType)
|
|
|
|
|
{
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint:
|
|
|
|
|
strType = "点";
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryLine:
|
|
|
|
|
strType = "线";
|
|
|
|
|
break;
|
|
|
|
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon:
|
|
|
|
|
strType = "面";
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
if (fc.FeatureType == esriFeatureType.esriFTAnnotation)
|
|
|
|
|
{
|
|
|
|
|
strType = "注记";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
strType = "其他";
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return strType;
|
|
|
|
|
}
|
|
|
|
|
private string GetYSDMByLayerName(string LayerName)
|
|
|
|
|
{
|
|
|
|
|
if (LayerName.EndsWith("GX"))
|
|
|
|
|
{
|
|
|
|
|
LayerName = LayerName.Replace("GX", "");
|
|
|
|
|
}
|
|
|
|
|
else if (LayerName.EndsWith("GXGC"))
|
|
|
|
|
{
|
|
|
|
|
LayerName = LayerName.Replace("GXGC", "");
|
|
|
|
|
}
|
|
|
|
|
KeyValuePair<string, string> kvp = YSDM.FirstOrDefault(x => x.Value == LayerName);
|
|
|
|
|
return kvp.Key;
|
|
|
|
|
}
|
|
|
|
|
private Dictionary<string, string> ysdm = null;
|
|
|
|
|
public Dictionary<string, string> YSDM
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
if (ysdm == null)
|
|
|
|
|
{
|
|
|
|
|
ysdm = new Dictionary<string, string>();
|
|
|
|
|
ysdm.Add("1000110000", "CLKZD");
|
|
|
|
|
ysdm.Add("1000110408", "JZKZD");
|
|
|
|
|
ysdm.Add("1000119000", "CLKZDZJ");
|
|
|
|
|
ysdm.Add("1000600100", "XZQ");
|
|
|
|
|
ysdm.Add("1000600200", "XZQJX");
|
|
|
|
|
ysdm.Add("1000609000", "XZQZJ");
|
|
|
|
|
ysdm.Add("1000600400", "CJDCQ");
|
|
|
|
|
ysdm.Add("1000600500", "CJDCQJX");
|
|
|
|
|
ysdm.Add("1000608000", "CJDCQZJ");
|
|
|
|
|
ysdm.Add("1000710000", "DGX");
|
|
|
|
|
ysdm.Add("1000720000", "GCZJD");
|
|
|
|
|
ysdm.Add("1000780000", "PDT");
|
|
|
|
|
ysdm.Add("2001010100", "DLTB");
|
|
|
|
|
ysdm.Add("2001010200", "DLTBZJ");
|
|
|
|
|
ysdm.Add("2006010100", "TDQSQ");
|
|
|
|
|
ysdm.Add("2006010200", "TDQSQZJ");
|
|
|
|
|
ysdm.Add("2006020100", "TDQSQJX");
|
|
|
|
|
ysdm.Add("2006020200", "TDQSQJXZJ");
|
|
|
|
|
ysdm.Add("2005010300", "YJJBNTTB");
|
|
|
|
|
ysdm.Add("2005010900", "YJJBNTTBZJ");
|
|
|
|
|
ysdm.Add("2099120100", "GCHZZGX");
|
|
|
|
|
ysdm.Add("2099010200", "LSYDZJ");
|
|
|
|
|
ysdm.Add("2099020100", "PZWJSTD");
|
|
|
|
|
ysdm.Add("2099020200", "PZWJSTBZJ");
|
|
|
|
|
ysdm.Add("2099030100", "CZCDYD");
|
|
|
|
|
ysdm.Add("2099030200", "CZCDYDZJ");
|
|
|
|
|
ysdm.Add("2099040100", "GDDB");
|
|
|
|
|
ysdm.Add("2099040200", "GDDBZJ");
|
|
|
|
|
ysdm.Add("2099050100", "ZYXMYD");
|
|
|
|
|
ysdm.Add("2099050200", "ZYXMYDZJ");
|
|
|
|
|
ysdm.Add("2099060100", "KFYQ");
|
|
|
|
|
ysdm.Add("2099060200", "KFYQZJ");
|
|
|
|
|
ysdm.Add("3001010000", "GJGY");
|
|
|
|
|
ysdm.Add("3001020000", "ZRBHQ");
|
|
|
|
|
ysdm.Add("3001030000", "SLGY");
|
|
|
|
|
ysdm.Add("3001040000", "FJMSQ");
|
|
|
|
|
ysdm.Add("3001050000", "DZGY");
|
|
|
|
|
ysdm.Add("3001060000", "ZRYCBHQ");
|
|
|
|
|
ysdm.Add("3001070000", "SDGY");
|
|
|
|
|
ysdm.Add("3001080000", "YYSSYD");
|
|
|
|
|
ysdm.Add("3001090000", "SCZZBHQ");
|
|
|
|
|
ysdm.Add("3001990000", "QTJZKFQ");
|
|
|
|
|
ysdm.Add("3001200000", "ZRBHQZJ");
|
|
|
|
|
ysdm.Add("3002010000", "CSKFBJ");
|
|
|
|
|
ysdm.Add("3002020000", "CSKFBJZJ");
|
|
|
|
|
ysdm.Add("2099110100", "WJMHD");
|
|
|
|
|
ysdm.Add("2099100100", "LMFW");
|
|
|
|
|
}
|
|
|
|
|
return ysdm;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private string GetFieldTypeName(esriFieldType fieldType)
|
|
|
|
|
{
|
|
|
|
|
string strTypeName = "";
|
|
|
|
|
switch (fieldType)
|
|
|
|
|
{
|
|
|
|
|
case esriFieldType.esriFieldTypeSmallInteger:
|
|
|
|
|
strTypeName = "Int";
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeInteger:
|
|
|
|
|
strTypeName = "Int";
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeSingle:
|
|
|
|
|
strTypeName = "Float";
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeDouble:
|
|
|
|
|
strTypeName = "Double";
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeString:
|
|
|
|
|
strTypeName = "String";
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeDate:
|
|
|
|
|
strTypeName = "Date";
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeOID:
|
|
|
|
|
strTypeName = "Int";
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeGeometry:
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeBlob:
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeRaster:
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeGUID:
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeGlobalID:
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeXML:
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return strTypeName;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static void CopyDirectInfo(string sourceDir, string toDir)
|
|
|
|
|
{
|
|
|
|
|
if (!Directory.Exists(sourceDir))
|
|
|
|
|
{
|
|
|
|
|
throw new ApplicationException("未找到文件:" + sourceDir);
|
|
|
|
|
}
|
|
|
|
|
if (!Directory.Exists(toDir))
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(toDir);
|
|
|
|
|
}
|
|
|
|
|
DirectoryInfo directInfo = new DirectoryInfo(sourceDir);
|
|
|
|
|
FileInfo[] filesInfos = directInfo.GetFiles();
|
|
|
|
|
foreach (FileInfo fileinfo in filesInfos)
|
|
|
|
|
{
|
|
|
|
|
string fileName = fileinfo.Name;
|
|
|
|
|
File.Copy(fileinfo.FullName, toDir + @"/" + fileName, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void Main_Closed(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
//string[] temps = System.IO.Directory.GetDirectories(Path.Combine(SysAppPath.GetCurrentAppPath(), "工作空间", "模板", "变更成果模板"));
|
|
|
|
|
string[] temps = System.IO.Directory.GetDirectories(Path.Combine(sBGCGDir));
|
|
|
|
|
List<string> tempList = TemplateList;
|
|
|
|
|
foreach (var item in temps)
|
|
|
|
|
{
|
|
|
|
|
DirectoryInfo f = new DirectoryInfo(item);
|
|
|
|
|
if (!tempList.Contains(f.Name))
|
|
|
|
|
tempList.Add(f.Name);
|
|
|
|
|
}
|
|
|
|
|
TemplateList = tempList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Init()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
InitFeatureCodeDic();
|
|
|
|
|
string templatePath = sBGCGDir;// Path.Combine(SysAppPath.GetCurrentAppPath(), "工作空间", "模板", "变更成果模板");
|
|
|
|
|
if (!Directory.Exists(templatePath))
|
|
|
|
|
Directory.CreateDirectory(templatePath);
|
|
|
|
|
string[] temps = Directory.GetDirectories(Path.Combine(sBGCGDir));
|
|
|
|
|
TemplateList = new List<string>();
|
|
|
|
|
foreach (var item in temps)
|
|
|
|
|
{
|
|
|
|
|
DirectoryInfo f = new DirectoryInfo(item);
|
|
|
|
|
TemplateList.Add(f.Name);
|
|
|
|
|
}
|
|
|
|
|
//if (TemplateList.Count > 0)
|
|
|
|
|
//{
|
|
|
|
|
// CurrentTemplateIndex = 1;
|
|
|
|
|
//}
|
|
|
|
|
ReadTemplateLayerInfo();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex);
|
|
|
|
|
MessageHelper.ShowError(ex.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void ReadTemplateLayerInfo()
|
|
|
|
|
{
|
|
|
|
|
IWorkspaceAPI s_WsAPI = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string templatePath = sBGCGDir;// Path.Combine(SysAppPath.GetCurrentAppPath(), "工作空间", "模板", "变更成果模板");
|
|
|
|
|
string vctPath_GX = Path.Combine(templatePath, "模板", "VCTTemplate3ForBG.VCT");//默认模板
|
|
|
|
|
string vctPath_GXGC = Path.Combine(templatePath, "模板", "VCTTemplate3ForBG2.VCT");//默认模板
|
|
|
|
|
string vctPath_GX0 = Path.Combine(templatePath, "成果导出", "VCTTemplate3ForBG.VCT");
|
|
|
|
|
string vctPath_GXGC0 = Path.Combine(templatePath, "成果导出", "VCTTemplate3ForBG2.VCT");
|
|
|
|
|
Dictionary<string, string> layers = GetLayersForVCT(vctPath_GX, vctPath_GXGC);//默认模板
|
|
|
|
|
Dictionary<string, string> layers0 = GetLayersForVCT(vctPath_GX0, vctPath_GXGC0);
|
|
|
|
|
|
|
|
|
|
GXVCTEntity = new BGVCTEntity() { Name = "增量更新" };
|
|
|
|
|
GXGCVCTEntity = new BGVCTEntity() { Name = "整层更新" };
|
|
|
|
|
string currentGDBPath = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ZLDatabase;
|
|
|
|
|
s_WsAPI = new WorkspaceAPI(currentGDBPath, WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
foreach (KeyValuePair<string, string> kvp in layers)
|
|
|
|
|
{
|
|
|
|
|
if ("DLTBGX,DLTBGXGC,XZQGX,XZQGXGC,CJDCQGX,CJDCQGXGC,XZQJXGX,CJDCQJXGX,CZCDYDGX,CZCDYDGXGC".Contains(kvp.Value))
|
|
|
|
|
{
|
|
|
|
|
IFeatureClassAPI fcAPI = s_WsAPI.OpenFeatureClass2(kvp.Value);
|
|
|
|
|
if (fcAPI != null)
|
|
|
|
|
{
|
|
|
|
|
IFeatureClass fc = fcAPI.FeatureClass;
|
|
|
|
|
GXVCTEntity.SubEntities.Add(new BGVCTEntity() { Name = fc.AliasName, FeatureClassName = kvp.Value, ParentEntity = GXVCTEntity, IsChecked = true });
|
|
|
|
|
}
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
IFeatureClassAPI fcAPI = s_WsAPI.OpenFeatureClass2(kvp.Value);
|
|
|
|
|
if (fcAPI != null)
|
|
|
|
|
{
|
|
|
|
|
IFeatureClass fc = fcAPI.FeatureClass;
|
|
|
|
|
if (layers0.ContainsValue(kvp.Value))
|
|
|
|
|
{
|
|
|
|
|
GXGCVCTEntity.SubEntities.Add(new BGVCTEntity() { Name = fc.AliasName, FeatureClassName = kvp.Value, ParentEntity = GXGCVCTEntity, IsChecked = true });
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
GXGCVCTEntity.SubEntities.Add(new BGVCTEntity() { Name = fc.AliasName, FeatureClassName = kvp.Value, ParentEntity = GXGCVCTEntity, IsChecked = false });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
IncrementalUpdatingSource = new List<BGVCTEntity>();
|
|
|
|
|
IncrementalUpdatingSource.Add(GXVCTEntity);
|
|
|
|
|
|
|
|
|
|
LayerSource = new List<BGVCTEntity>();
|
|
|
|
|
LayerSource.Add(GXGCVCTEntity);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("获取矢量数据模板异常:" + ex);
|
|
|
|
|
MessageHelper.ShowError(ex.Message);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (s_WsAPI != null)
|
|
|
|
|
{
|
|
|
|
|
s_WsAPI.CloseWorkspace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private Dictionary<string, string> dicFeatureCode = null;
|
|
|
|
|
private void InitFeatureCodeDic()
|
|
|
|
|
{
|
|
|
|
|
dicFeatureCode = new Dictionary<string, string>();
|
|
|
|
|
dicFeatureCode.Add("CCWJQGX", "2099090100");
|
|
|
|
|
dicFeatureCode.Add("GFBQGX", "2099070100");
|
|
|
|
|
//dicFeatureCode.Add("LSYDGX", "2099010100");
|
|
|
|
|
dicFeatureCode.Add("GCHZZGX", "2099120100");
|
|
|
|
|
dicFeatureCode.Add("TTQGX", "2099080100");
|
|
|
|
|
dicFeatureCode.Add("DLTBGX", "2001010100");
|
|
|
|
|
dicFeatureCode.Add("CLKZDGX", "1000110000");
|
|
|
|
|
dicFeatureCode.Add("CZKFBJGX", "3002010000");
|
|
|
|
|
dicFeatureCode.Add("CZCDYDGX", "2099030100");
|
|
|
|
|
dicFeatureCode.Add("CZCDYDGXGC", "2099030100");
|
|
|
|
|
dicFeatureCode.Add("DGXGX", "1000710000");
|
|
|
|
|
dicFeatureCode.Add("DZGYGX", "3001050100");
|
|
|
|
|
dicFeatureCode.Add("FJMSQGX", "3001040100");
|
|
|
|
|
dicFeatureCode.Add("GCZJDGX", "1000720000");
|
|
|
|
|
dicFeatureCode.Add("GDDBGX", "2099040100");
|
|
|
|
|
dicFeatureCode.Add("GJGYGX", "3001010100");
|
|
|
|
|
dicFeatureCode.Add("JZKZDGX", "1000110408");
|
|
|
|
|
dicFeatureCode.Add("KFYQGX", "2099060100");
|
|
|
|
|
dicFeatureCode.Add("LMFWGX", "2099100100");
|
|
|
|
|
//dicFeatureCode.Add("PDTGX", "1000780000");
|
|
|
|
|
dicFeatureCode.Add("PZWJSTDGX", "2099020100");
|
|
|
|
|
dicFeatureCode.Add("QTJZKFQGX", "3001990100");
|
|
|
|
|
dicFeatureCode.Add("SCZZBHQGX", "3001090100");
|
|
|
|
|
dicFeatureCode.Add("SDGYGX", "3001070100");
|
|
|
|
|
dicFeatureCode.Add("SLGYGX", "3001030100");
|
|
|
|
|
dicFeatureCode.Add("STBHHXGX", "3003010000");
|
|
|
|
|
dicFeatureCode.Add("WJMHDGX", "2099110100");
|
|
|
|
|
dicFeatureCode.Add("YYSSYDGX", "3001080100");
|
|
|
|
|
dicFeatureCode.Add("ZRBHQGX", "3001020100");
|
|
|
|
|
dicFeatureCode.Add("ZRYCBHQGX", "3001060100");
|
|
|
|
|
dicFeatureCode.Add("ZYXMYDGX", "2099050100");
|
|
|
|
|
dicFeatureCode.Add("XZQGX", "1000600100");
|
|
|
|
|
dicFeatureCode.Add("XZQJXGX", "1000600200");
|
|
|
|
|
dicFeatureCode.Add("CJDCQGX", "1000600400");
|
|
|
|
|
dicFeatureCode.Add("CJDCQJXGX", "1000600500");
|
|
|
|
|
dicFeatureCode.Add("YJJBNTTBGX", "2005010300");
|
|
|
|
|
dicFeatureCode.Add("DLTBGXGC", "2001010100");
|
|
|
|
|
dicFeatureCode.Add("XZQGXGC", "1000600100");
|
|
|
|
|
dicFeatureCode.Add("CJDCQGXGC", "1000600400");
|
|
|
|
|
}
|
|
|
|
|
private Dictionary<string, string> GetLayersForVCT(string pVCTPath, string pVCTPath2)
|
|
|
|
|
{
|
|
|
|
|
Dictionary<string, string> dic = new Dictionary<string, string>();
|
|
|
|
|
StreamReader sr = new StreamReader(pVCTPath, Encoding.GetEncoding("GB18030"));
|
|
|
|
|
string line = null;
|
|
|
|
|
bool BeginLoad = false;
|
|
|
|
|
while ((line = sr.ReadLine()) != null)
|
|
|
|
|
{
|
|
|
|
|
if (line == "FeatureCodeBegin")
|
|
|
|
|
{
|
|
|
|
|
BeginLoad = true;
|
|
|
|
|
}
|
|
|
|
|
if (BeginLoad && line != "FeatureCodeBegin")
|
|
|
|
|
{
|
|
|
|
|
string[] strs = line.Split(',');
|
|
|
|
|
if (strs.Length == 4 && !dic.Keys.Contains(strs[1]))
|
|
|
|
|
{
|
|
|
|
|
dic.Add(strs[1], strs[3]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (line == "FeatureCodeEnd")
|
|
|
|
|
{
|
|
|
|
|
BeginLoad = false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
sr.Close();
|
|
|
|
|
sr.Dispose();
|
|
|
|
|
StreamReader sr2 = new StreamReader(pVCTPath2, Encoding.GetEncoding("GB18030"));
|
|
|
|
|
line = null;
|
|
|
|
|
BeginLoad = false;
|
|
|
|
|
while ((line = sr2.ReadLine()) != null)
|
|
|
|
|
{
|
|
|
|
|
if (line == "FeatureCodeBegin")
|
|
|
|
|
{
|
|
|
|
|
BeginLoad = true;
|
|
|
|
|
}
|
|
|
|
|
if (BeginLoad && line != "FeatureCodeBegin")
|
|
|
|
|
{
|
|
|
|
|
string[] strs = line.Split(',');
|
|
|
|
|
if (strs.Length == 4 && !dic.Keys.Contains(strs[1]))
|
|
|
|
|
{
|
|
|
|
|
dic.Add(strs[1], strs[3]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (line == "FeatureCodeEnd")
|
|
|
|
|
{
|
|
|
|
|
BeginLoad = false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
sr2.Close();
|
|
|
|
|
sr2.Dispose();
|
|
|
|
|
return dic;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CreateCatalogDir(List<ResultsCatalog> pCatalog)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (pCatalog == null) return;
|
|
|
|
|
List<DataDicTionary> qsDic = Platform.Instance.DicHelper.GetNoGroupDic(DicTypeEnum.QSDM);
|
|
|
|
|
string templatePath = sBGCGDir;// Path.Combine(SysAppPath.GetCurrentAppPath(), "工作空间", "模板", "变更成果模板");
|
|
|
|
|
string gxVCTPath = Path.Combine(templatePath, "成果导出", "VCTTemplate3ForBG.VCT");
|
|
|
|
|
string gxgcVCTPath = Path.Combine(templatePath, "成果导出", "VCTTemplate3ForBG2.VCT");
|
|
|
|
|
foreach (ResultsCatalog item in pCatalog)
|
|
|
|
|
{
|
|
|
|
|
item.Path = item.Path.Replace("县行政区划代码6位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE).Replace("年代代码4位", BGYear.ToString()).Replace("比例尺代码1位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ScaleCode);
|
|
|
|
|
item.Name = item.Name.Replace("县行政区划代码6位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE).Replace("年代代码4位", BGYear.ToString()).Replace("比例尺代码1位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ScaleCode);
|
|
|
|
|
if (item.IsChecked == false) continue;
|
|
|
|
|
string sPath = string.Empty;
|
|
|
|
|
switch (item.Type)
|
|
|
|
|
{
|
|
|
|
|
case "Directory":
|
|
|
|
|
this.UpdateMsg(string.Format("正在创建目录:{0}", item.Name));
|
|
|
|
|
sPath = System.IO.Path.Combine(OutDir, item.Path);
|
|
|
|
|
if (!System.IO.Directory.Exists(sPath))
|
|
|
|
|
System.IO.Directory.CreateDirectory(sPath);
|
|
|
|
|
if (item.SubCatalog != null)
|
|
|
|
|
CreateCatalogDir(item.SubCatalog);
|
|
|
|
|
break;
|
|
|
|
|
case "MetadataFile":
|
|
|
|
|
sPath = System.IO.Path.Combine(OutDir, item.Path);
|
|
|
|
|
this.UpdateMsg(string.Format("正在生成元数据【{0}】", item.Name));
|
|
|
|
|
ExportMetadata exportMetadata = new ExportMetadata();
|
|
|
|
|
exportMetadata.IsBG = true;
|
|
|
|
|
exportMetadata.OutPath = System.IO.Path.GetDirectoryName(sPath);
|
|
|
|
|
exportMetadata.Scale = new ScaleCodeTable() { Scale = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).Scale, ScaleCode = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ScaleCode };
|
|
|
|
|
exportMetadata.Export(BGYear.ToString());
|
|
|
|
|
break;
|
|
|
|
|
case "ExtractMDBFile":
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
sPath = System.IO.Path.Combine(OutDir, item.Path);
|
|
|
|
|
this.UpdateMsg(string.Format("正在导出【{0}】", item.Name));
|
|
|
|
|
ExportBGMDB exportBGMDB = new ExportBGMDB(gxVCTPath, gxgcVCTPath);
|
|
|
|
|
exportBGMDB.Export(sPath);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "ExtractGDBFile":
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
sPath = System.IO.Path.Combine(OutDir, item.Path);
|
|
|
|
|
this.UpdateMsg(string.Format("正在导出【{0}】", item.Name));
|
|
|
|
|
ExportBGGDB exportBGGDB = new ExportBGGDB(gxVCTPath, gxgcVCTPath);
|
|
|
|
|
exportBGGDB.Export(sPath);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "ExtractGDB":
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
sPath = System.IO.Path.Combine(OutDir, item.Path);
|
|
|
|
|
this.UpdateMsg(string.Format("正在导出【{0}】", item.Name));
|
|
|
|
|
ExportBGMDB exportBGMDB = new ExportBGMDB(gxVCTPath, gxgcVCTPath);
|
|
|
|
|
exportBGMDB.ExportGDB(sPath);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "VCTFile":
|
|
|
|
|
this.UpdateMsg(string.Format("正在导出【{0}】", item.Name));
|
|
|
|
|
sPath = System.IO.Path.Combine(OutDir, item.Path);
|
|
|
|
|
string TempMDBPath = System.IO.Path.Combine(SysAppPath.GetTempPath(), string.Format("temp_vct_{0}.mdb", Guid.NewGuid().ToString().Replace("-", "")));
|
|
|
|
|
if (System.IO.File.Exists(TempMDBPath))
|
|
|
|
|
{
|
|
|
|
|
File.Delete(TempMDBPath);
|
|
|
|
|
}
|
|
|
|
|
ExportBGMDB exportBGMDB2 = new ExportBGMDB(gxVCTPath, gxgcVCTPath);
|
|
|
|
|
string vctpath = null;
|
|
|
|
|
if (System.IO.Path.GetFileNameWithoutExtension(sPath).EndsWith("GX"))
|
|
|
|
|
{
|
|
|
|
|
exportBGMDB2.LayerNameFilter = "GX";
|
|
|
|
|
vctpath = gxVCTPath;// Path.Combine(templatePath, TemplateList[CurrentTemplateIndex], "VCTTemplate3ForBG.VCT");
|
|
|
|
|
}
|
|
|
|
|
else if (System.IO.Path.GetFileNameWithoutExtension(sPath).EndsWith("GXGC"))
|
|
|
|
|
{
|
|
|
|
|
exportBGMDB2.LayerNameFilter = "GXGC";
|
|
|
|
|
vctpath = gxgcVCTPath;// Path.Combine(templatePath, TemplateList[CurrentTemplateIndex], "VCTTemplate3ForBG2.VCT");
|
|
|
|
|
}
|
|
|
|
|
exportBGMDB2.Export(TempMDBPath);
|
|
|
|
|
System.Threading.Thread.Sleep(2000);
|
|
|
|
|
var tmpname = item.Name.Substring(0, item.Name.Length - 4);
|
|
|
|
|
CreateVCT(tmpname,vctpath, TempMDBPath, (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE, float.Parse((MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).FDD), (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ScaleCode, System.IO.Path.GetDirectoryName(sPath).TrimEnd('\\'));
|
|
|
|
|
List<string> filenames = new List<string>();
|
|
|
|
|
string vctfolderpath = System.IO.Path.GetDirectoryName(sPath);
|
|
|
|
|
string[] files = System.IO.Directory.GetFiles(vctfolderpath.TrimEnd());//得到文件
|
|
|
|
|
foreach (string file in files)//循环文件
|
|
|
|
|
{
|
|
|
|
|
if (System.IO.Path.GetExtension(file).ToUpper() == ".VCT")
|
|
|
|
|
{
|
|
|
|
|
filenames.Add(System.IO.Path.GetFileNameWithoutExtension(file));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
foreach (var name in filenames)
|
|
|
|
|
{
|
|
|
|
|
tmpname = item.Name.Substring(0, item.Name.Length - 4);
|
|
|
|
|
if (name.EndsWith("000000"))
|
|
|
|
|
{
|
|
|
|
|
if (System.IO.Path.GetFileNameWithoutExtension(sPath).EndsWith("GX"))
|
|
|
|
|
{
|
|
|
|
|
System.IO.File.Move(vctfolderpath + @"\" + name + ".VCT", vctfolderpath + @"\" + tmpname + ".VCT");
|
|
|
|
|
}
|
|
|
|
|
else if (System.IO.Path.GetFileNameWithoutExtension(sPath).EndsWith("GXGC"))
|
|
|
|
|
{
|
|
|
|
|
System.IO.File.Move(vctfolderpath + @"\" + name + ".VCT", vctfolderpath + @"\" + tmpname + ".VCT");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//string[] dirs = System.IO.Directory.GetDirectories(vctfolderpath);//得到目录
|
|
|
|
|
//foreach (var name in dirs)
|
|
|
|
|
//{
|
|
|
|
|
// tmpname = item.Name.Substring(0, item.Name.Length - 4);
|
|
|
|
|
// if (name.EndsWith("000000_idx"))
|
|
|
|
|
// {
|
|
|
|
|
// if (System.IO.Path.GetFileNameWithoutExtension(sPath).EndsWith("GX"))
|
|
|
|
|
// {
|
|
|
|
|
// System.IO.Directory.Move(name, vctfolderpath + @"\" + tmpname + "_idx");
|
|
|
|
|
// }
|
|
|
|
|
// else if (System.IO.Path.GetFileNameWithoutExtension(sPath).EndsWith("GXGC"))
|
|
|
|
|
// {
|
|
|
|
|
// System.IO.Directory.Move(name, vctfolderpath + @"\" + tmpname + "_idx");
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
break;
|
|
|
|
|
case "ReportExcel":
|
|
|
|
|
if (string.IsNullOrWhiteSpace(NCDataDir))
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
this.UpdateMsg(string.Format("正在导出【{0}】", item.Name));
|
|
|
|
|
sPath = System.IO.Path.Combine(OutDir, item.Path);
|
|
|
|
|
//BGExportHelper exportReport = new BGExportHelper();
|
|
|
|
|
//exportReport.AreaUnit = ReportFileTypeEnum.DBGQ;
|
|
|
|
|
//exportReport.OutPath = sPath;
|
|
|
|
|
//exportReport.NCDataDir = NCDataDir;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//exportReport.Export((ReportTypeEnum)System.Enum.Parse(typeof(ReportTypeEnum), item.FileType));
|
|
|
|
|
string dbPath = System.IO.Path.GetDirectoryName((MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).GetProjFilePath()) + @"\BGTJ.sqlite";
|
|
|
|
|
IRDBHelper dbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite);
|
|
|
|
|
string saveCurrentPath = string.Format("{0}.xlsx", sPath);
|
|
|
|
|
ReportEntityClass reportEntityClass = new ReportEntityClass();
|
|
|
|
|
reportEntityClass.ReportType = (ReportTypeEnum)System.Enum.Parse(typeof(ReportTypeEnum), ((ReportTypeEnum)System.Enum.Parse(typeof(ReportTypeEnum), item.FileType)).ToString());
|
|
|
|
|
StatisticalReportClass reportClass = new StatisticalReportClass();
|
|
|
|
|
reportClass.NULLExport(saveCurrentPath, dbHelper, reportEntityClass, NCDataDir);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case "ReportWord":
|
|
|
|
|
this.UpdateMsg(string.Format("正在导出【{0}】", item.Name));
|
|
|
|
|
sPath = System.IO.Path.Combine(OutDir, item.Path);
|
|
|
|
|
IStatisticExport exprotReport2 = new BGExportHelper();
|
|
|
|
|
exprotReport2.AreaUnit = ReportFileTypeEnum.DBGQ;
|
|
|
|
|
exprotReport2.OutPath = sPath;
|
|
|
|
|
exprotReport2.ExportWordReport((ReportTypeEnum)System.Enum.Parse(typeof(ReportTypeEnum), item.FileType));
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private static string CreateVCT(string idxName, string vctpath, string mdbpath, string xzqdm, float dk, string blc, string rootpath, string ffh = null)
|
|
|
|
|
{
|
|
|
|
|
VCTFileConvertHelper h = new VCTFileConvertHelper();
|
|
|
|
|
VctVectorData vctdata = h.GetVctVectorData(vctpath, true);
|
|
|
|
|
vctdata.VctHead.XZQDM = xzqdm;// KGIS.Common.Utility.EnvironmentVariables.Instance.Project.;
|
|
|
|
|
vctdata.VctHead.DK = dk;
|
|
|
|
|
MapScaleEnum mapscale = (MapScaleEnum)System.Enum.Parse(typeof(MapScaleEnum), blc);
|
|
|
|
|
vctdata.VctHead.MapScale = ((int)mapscale).ToTrim();
|
|
|
|
|
MDBToVCTHelper mdbtovct = new MDBToVCTHelper();
|
|
|
|
|
mdbtovct.MaxBSM = 1;
|
|
|
|
|
mdbtovct.RootPath = rootpath + @"\";
|
|
|
|
|
string vctfilepath = mdbtovct.MDBToVCT(mdbpath, vctdata, ffh);
|
|
|
|
|
//CreateVCTIndex(vctfilepath, idxName);
|
|
|
|
|
return vctfilepath;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void CreateVCTIndex(string vctfilepath,string idxName)
|
|
|
|
|
{
|
|
|
|
|
//创建索引
|
|
|
|
|
VCTIndexHelper vctidxhelper = new VCTIndexHelper();
|
|
|
|
|
vctidxhelper.CreateIdxByVCTFile(vctfilepath, true);
|
|
|
|
|
}
|
|
|
|
|
string bglayer = "";
|
|
|
|
|
private void UpdateBGYear(List<ResultsCatalog> resultsCatalogs)
|
|
|
|
|
{
|
|
|
|
|
if (resultsCatalogs.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (var item in resultsCatalogs)
|
|
|
|
|
{
|
|
|
|
|
if (item.Name.Contains(bglayer))
|
|
|
|
|
{
|
|
|
|
|
item.Name = item.Name.Replace(bglayer, BGYear.ToString());
|
|
|
|
|
}
|
|
|
|
|
if (item.SubCatalog != null && item.SubCatalog.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
UpdateBGYear(item.SubCatalog);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (item.Name.Contains(bglayer))
|
|
|
|
|
{
|
|
|
|
|
item.Name = item.Name.Replace(bglayer, BGYear.ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 由于权属代码功能没有完善,现需要调用权属功能位置写死,龙城区为例
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public List<ResultsCatalog> GetResultsCatalogtemp(bool ischeck = false, List<ResultsCatalog> resultsCatalogs = null)
|
|
|
|
|
{
|
|
|
|
|
List<ResultsCatalog> result = new List<ResultsCatalog>();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//if (resultsCatalogs != null)
|
|
|
|
|
//{
|
|
|
|
|
// UpdateBGYear(resultsCatalogs);
|
|
|
|
|
// bglayer = BGYear.ToString();
|
|
|
|
|
// return resultsCatalogs;
|
|
|
|
|
//}
|
|
|
|
|
//bglayer = BGYear.ToString();
|
|
|
|
|
XmlDocument doc = new XmlDocument();
|
|
|
|
|
string strPath = SysAppPath.GetCurrentAppPath();
|
|
|
|
|
strPath += @"Configs\ResultsCatalogCfgForBG2.xml";
|
|
|
|
|
doc.Load(strPath);
|
|
|
|
|
XmlNode nodeDataCatalog = doc.SelectSingleNode("ResultsCatalog");
|
|
|
|
|
if (nodeDataCatalog == null)
|
|
|
|
|
return result;
|
|
|
|
|
List<DataDicTionary> qsDic = Platform.Instance.DicHelper.GetNoGroupDic(DicTypeEnum.QSDM);
|
|
|
|
|
foreach (XmlNode item in nodeDataCatalog.ChildNodes)
|
|
|
|
|
{
|
|
|
|
|
if (item.Name == "DataCatalog")
|
|
|
|
|
{
|
|
|
|
|
ResultsCatalog rootCatalog = new ResultsCatalog();
|
|
|
|
|
if (ischeck)
|
|
|
|
|
{
|
|
|
|
|
rootCatalog.IsChecked = true;
|
|
|
|
|
}
|
|
|
|
|
rootCatalog.Name = item.Attributes["Name"] == null ? "" : item.Attributes["Name"].Value;
|
|
|
|
|
rootCatalog.Path = rootCatalog.Name;
|
|
|
|
|
rootCatalog.Type = "Directory";
|
|
|
|
|
if (item.ChildNodes != null)
|
|
|
|
|
{
|
|
|
|
|
List<ResultsCatalog> tree = GetSubCatalog(item, rootCatalog, BGYear.ToString());
|
|
|
|
|
if (rootCatalog.SubCatalog == null)
|
|
|
|
|
rootCatalog.SubCatalog = new List<ResultsCatalog>();
|
|
|
|
|
if (ischeck)
|
|
|
|
|
{
|
|
|
|
|
foreach (var tr in tree)
|
|
|
|
|
{
|
|
|
|
|
tr.IsChecked = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
rootCatalog.SubCatalog.AddRange(tree);
|
|
|
|
|
}
|
|
|
|
|
if (qsDic != null && !string.IsNullOrWhiteSpace((MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE) && (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE != "000000")
|
|
|
|
|
{
|
|
|
|
|
DataDicTionary dic = qsDic.FirstOrDefault(f => f.CODE == (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE.Substring(0, 2));
|
|
|
|
|
if (dic != null)
|
|
|
|
|
{
|
|
|
|
|
rootCatalog.Path = rootCatalog.Path.Replace("*省", dic.NAME);
|
|
|
|
|
rootCatalog.Name = rootCatalog.Name.Replace("*省", dic.NAME);
|
|
|
|
|
}
|
|
|
|
|
dic = qsDic.FirstOrDefault(f => f.CODE == (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE.Substring(0, 4));
|
|
|
|
|
if (dic != null)
|
|
|
|
|
{
|
|
|
|
|
rootCatalog.Path = rootCatalog.Path.Replace("*市", dic.NAME);
|
|
|
|
|
rootCatalog.Name = rootCatalog.Name.Replace("*市", dic.NAME);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dic = qsDic.FirstOrDefault(f => f.CODE == (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE);
|
|
|
|
|
if (dic != null)
|
|
|
|
|
{
|
|
|
|
|
rootCatalog.Path = rootCatalog.Path.Replace("*县", dic.NAME);
|
|
|
|
|
rootCatalog.Name = rootCatalog.Name.Replace("*县", dic.NAME);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
rootCatalog.Path = rootCatalog.Path.Replace("县行政区划代码6位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE);
|
|
|
|
|
rootCatalog.Name = rootCatalog.Name.Replace("县行政区划代码6位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE).Replace("年代代码4位", BGYear.ToString()).Replace("比例尺代码1位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ScaleCode);
|
|
|
|
|
result.Add(rootCatalog);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("初始化成果导出异常:" + ex);
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public List<ResultsCatalog> GetResultsCatalog()
|
|
|
|
|
{
|
|
|
|
|
List<ResultsCatalog> result = new List<ResultsCatalog>();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
XmlDocument doc = new XmlDocument();
|
|
|
|
|
string strPath = SysAppPath.GetBGResultsCataCfgPath();
|
|
|
|
|
doc.Load(strPath);
|
|
|
|
|
XmlNode nodeDataCatalog = doc.SelectSingleNode("ResultsCatalog");
|
|
|
|
|
if (nodeDataCatalog == null)
|
|
|
|
|
return result;
|
|
|
|
|
List<DataDicTionary> qsDic = Platform.Instance.DicHelper.GetNoGroupDic(DicTypeEnum.QSDM);
|
|
|
|
|
if (qsDic == null)
|
|
|
|
|
{
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
foreach (XmlNode item in nodeDataCatalog.ChildNodes)
|
|
|
|
|
{
|
|
|
|
|
if (item.Name == "DataCatalog")
|
|
|
|
|
{
|
|
|
|
|
ResultsCatalog rootCatalog = new ResultsCatalog();
|
|
|
|
|
rootCatalog.Name = item.Attributes["Name"] == null ? "" : item.Attributes["Name"].Value;
|
|
|
|
|
rootCatalog.Path = rootCatalog.Name;
|
|
|
|
|
rootCatalog.Type = "Directory";
|
|
|
|
|
if (item.ChildNodes != null)
|
|
|
|
|
{
|
|
|
|
|
List<ResultsCatalog> tree = GetSubCatalog(item, rootCatalog, BGYear.ToString());
|
|
|
|
|
if (rootCatalog.SubCatalog == null)
|
|
|
|
|
rootCatalog.SubCatalog = new List<ResultsCatalog>();
|
|
|
|
|
rootCatalog.SubCatalog.AddRange(tree);
|
|
|
|
|
}
|
|
|
|
|
if (qsDic != null)
|
|
|
|
|
{
|
|
|
|
|
DataDicTionary dic = qsDic.FirstOrDefault(f => f.CODE.Length == 2);
|
|
|
|
|
if (dic != null)
|
|
|
|
|
{
|
|
|
|
|
rootCatalog.Path = rootCatalog.Path.Replace("*省", dic.NAME);
|
|
|
|
|
rootCatalog.Name = rootCatalog.Name.Replace("*省", dic.NAME);
|
|
|
|
|
}
|
|
|
|
|
dic = qsDic.FirstOrDefault(f => f.CODE.Length == 4);
|
|
|
|
|
if (dic != null)
|
|
|
|
|
{
|
|
|
|
|
rootCatalog.Path = rootCatalog.Path.Replace("*市", dic.NAME);
|
|
|
|
|
rootCatalog.Name = rootCatalog.Name.Replace("*市", dic.NAME);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dic = qsDic.FirstOrDefault(f => f.CODE == (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE);
|
|
|
|
|
//dic = qsDic.FindLast(f => == Env.Instance.Project.CODE);
|
|
|
|
|
if (dic != null)
|
|
|
|
|
{
|
|
|
|
|
rootCatalog.Path = rootCatalog.Path.Replace("*县", dic.NAME);
|
|
|
|
|
rootCatalog.Name = rootCatalog.Name.Replace("*县", dic.NAME);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
rootCatalog.Path = rootCatalog.Path.Replace("县行政区划代码6位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE);
|
|
|
|
|
rootCatalog.Name = rootCatalog.Name.Replace("县行政区划代码6位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE).Replace("年代代码4位", BGYear.ToString()).Replace("比例尺代码1位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ScaleCode);
|
|
|
|
|
result.Add(rootCatalog);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex);
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static List<ResultsCatalog> GetSubCatalog(XmlNode pNode, ResultsCatalog pCatalog, string year)
|
|
|
|
|
{
|
|
|
|
|
List<ResultsCatalog> result = new List<ResultsCatalog>();
|
|
|
|
|
if (pNode != null && pNode.ChildNodes != null)
|
|
|
|
|
{
|
|
|
|
|
string sPName = pNode.Attributes["Name"] == null ? "" : pNode.Attributes["Name"].Value.ToString();
|
|
|
|
|
//rootCatalog.Name = rootCatalog.Name.Replace("县行政区划代码6位", Env.Instance.Project.CODE).Replace("年代代码4位", DateTime.Now.Year.ToString()).Replace("比例尺代码1位", "I");
|
|
|
|
|
sPName = sPName.Replace("县行政区划代码6位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE).Replace("年代代码4位", year).Replace("比例尺代码1位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ScaleCode);
|
|
|
|
|
|
|
|
|
|
List<DataDicTionary> qsDic = Platform.Instance.DicHelper.GetNoGroupDic(DicTypeEnum.QSDM);
|
|
|
|
|
if (qsDic != null)
|
|
|
|
|
{
|
|
|
|
|
DataDicTionary dic = qsDic.FirstOrDefault(f => f.CODE.Length == 2);
|
|
|
|
|
if (dic != null)
|
|
|
|
|
{
|
|
|
|
|
sPName = sPName.Replace("*省", dic.NAME);
|
|
|
|
|
}
|
|
|
|
|
dic = qsDic.FirstOrDefault(f => f.CODE.Length == 4);
|
|
|
|
|
if (dic != null)
|
|
|
|
|
{
|
|
|
|
|
sPName = sPName.Replace("*市", dic.NAME);
|
|
|
|
|
}
|
|
|
|
|
dic = qsDic.FirstOrDefault(f => f.CODE == (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE);
|
|
|
|
|
if (dic != null)
|
|
|
|
|
{
|
|
|
|
|
sPName = sPName.Replace("*县", dic.NAME);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
foreach (XmlNode item in pNode.ChildNodes)
|
|
|
|
|
{
|
|
|
|
|
ResultsCatalog catalog = new ResultsCatalog();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (item.Attributes != null && item.Attributes["ShowFilter"] != null)
|
|
|
|
|
{
|
|
|
|
|
string[] showFilter = item.Attributes["ShowFilter"].Value.ToString().Split('_');
|
|
|
|
|
if (!(MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE.StartsWith(showFilter[0]) && !sPName.StartsWith(showFilter[1]))
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catalog.Name = item.Attributes["Name"] == null ? "" : item.Attributes["Name"].Value;
|
|
|
|
|
catalog.Path = System.IO.Path.Combine(pCatalog.Path, catalog.Name);
|
|
|
|
|
catalog.CopyFile = item.Attributes["CopyFile"] == null ? "" : item.Attributes["CopyFile"].Value;
|
|
|
|
|
catalog.Type = item.Name;
|
|
|
|
|
catalog.Parent = pCatalog;
|
|
|
|
|
if (qsDic != null)
|
|
|
|
|
{
|
|
|
|
|
DataDicTionary dic = qsDic.FirstOrDefault(f => f.CODE.Length == 2);
|
|
|
|
|
if (dic != null)
|
|
|
|
|
{
|
|
|
|
|
catalog.Path = catalog.Path.Replace("*省", dic.NAME);
|
|
|
|
|
catalog.Name = catalog.Name.Replace("*省", dic.NAME);
|
|
|
|
|
}
|
|
|
|
|
dic = qsDic.FirstOrDefault(f => f.CODE.Length == 4);
|
|
|
|
|
if (dic != null)
|
|
|
|
|
{
|
|
|
|
|
catalog.Path = catalog.Path.Replace("*市", dic.NAME);
|
|
|
|
|
catalog.Name = catalog.Name.Replace("*市", dic.NAME);
|
|
|
|
|
}
|
|
|
|
|
dic = qsDic.FirstOrDefault(f => f.CODE == (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE);
|
|
|
|
|
if (dic != null)
|
|
|
|
|
{
|
|
|
|
|
catalog.Path = catalog.Path.Replace("*县", dic.NAME);
|
|
|
|
|
catalog.Name = catalog.Name.Replace("*县", dic.NAME);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catalog.Path = catalog.Path.Replace("县行政区划代码6位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE);
|
|
|
|
|
catalog.Name = catalog.Name.Replace("县行政区划代码6位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE).Replace("年代代码4位", year).Replace("比例尺代码1位", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ScaleCode);
|
|
|
|
|
|
|
|
|
|
result.Add(catalog);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{ }
|
|
|
|
|
if (item.ChildNodes != null)
|
|
|
|
|
{
|
|
|
|
|
if ("ReportExcel,ReportWord".Contains(item.Name))
|
|
|
|
|
{
|
|
|
|
|
ReadAttribute(item, catalog);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
catalog.SubCatalog = GetSubCatalog(item, catalog, year);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
private static void ReadAttribute(XmlNode pNode, ResultsCatalog pCatalog)
|
|
|
|
|
{
|
|
|
|
|
if (pNode != null && pNode.ChildNodes != null)
|
|
|
|
|
{
|
|
|
|
|
foreach (XmlNode item in pNode.ChildNodes)
|
|
|
|
|
{
|
|
|
|
|
switch (item.Name)
|
|
|
|
|
{
|
|
|
|
|
case "ReportType":
|
|
|
|
|
pCatalog.FileType = item.InnerText;
|
|
|
|
|
break;
|
|
|
|
|
case "TempalateFileName":
|
|
|
|
|
pCatalog.FileTempalate = item.InnerText;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CreateVCTContent()
|
|
|
|
|
{
|
|
|
|
|
IWorkspaceAPI s_WsAPI = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
List<string> fcNameList = new List<string>() { "XZQGX", "XZQJXGX", "CJDCQGX", "CJDCQJXGX", "GXZJ", "XZQGXGC", "CJDCQGXGC" };
|
|
|
|
|
string currentGDBPath = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).GetProjFilePath();
|
|
|
|
|
s_WsAPI = new WorkspaceAPI(currentGDBPath, WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
Dictionary<string, string> s_FcList = s_WsAPI.GetFeatureClassName(esriDatasetType.esriDTFeatureDataset);
|
|
|
|
|
string sPath = System.IO.Path.Combine(SysAppPath.GetCurrentAppPath(), "Z_VCTContent.txt");
|
|
|
|
|
FileStream fs = new FileStream(sPath, FileMode.Create);
|
|
|
|
|
StreamWriter sw = new StreamWriter(fs);
|
|
|
|
|
if (s_FcList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (KeyValuePair<string, string> kvp in s_FcList)
|
|
|
|
|
{
|
|
|
|
|
if (fcNameList.Contains(kvp.Value))
|
|
|
|
|
{
|
|
|
|
|
IFeatureClassAPI fcSourceAPI = s_WsAPI.OpenFeatureClass(kvp.Value);
|
|
|
|
|
IFeatureClass fcSource = fcSourceAPI.FeatureClass;
|
|
|
|
|
FeatureClass fc = fcSource as FeatureClass;
|
|
|
|
|
IFields fields = fcSource.Fields;
|
|
|
|
|
int FieldCount = 0;
|
|
|
|
|
for (int i = 0; i < fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = fields.Field[i];
|
|
|
|
|
if (field.Name == "OBJECTID" || field.Name == "SHAPE" || field.Name == "SHAPE_Length" || field.Name == "SHAPE_Area")
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
FieldCount++;
|
|
|
|
|
}
|
|
|
|
|
sw.WriteLine(string.Format("{0},{1}", fc.Name, FieldCount));
|
|
|
|
|
for (int i = 0; i < fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = fields.Field[i];
|
|
|
|
|
if (field.Name == "OBJECTID" || field.Name == "SHAPE" || field.Name == "SHAPE_Length" || field.Name == "SHAPE_Area")
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
sw.WriteLine(string.Format("{0},{1},{2}", field.Name, GetVCTFieldType(field), field.Length <= 254 ? field.Length : 254));
|
|
|
|
|
}
|
|
|
|
|
sw.WriteLine("0");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
sw.Close();
|
|
|
|
|
sw.Dispose();
|
|
|
|
|
fs.Close();
|
|
|
|
|
fs.Dispose();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (s_WsAPI != null)
|
|
|
|
|
{
|
|
|
|
|
s_WsAPI.CloseWorkspace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private string GetVCTFieldType(IField field)
|
|
|
|
|
{
|
|
|
|
|
string strType = null;
|
|
|
|
|
switch (field.Type)
|
|
|
|
|
{
|
|
|
|
|
case esriFieldType.esriFieldTypeSmallInteger:
|
|
|
|
|
strType = "Int";
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeInteger:
|
|
|
|
|
strType = "Int";
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeSingle:
|
|
|
|
|
strType = "Float";
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeDouble:
|
|
|
|
|
strType = "Float";
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeString:
|
|
|
|
|
if (field.Name.EndsWith("BZ"))
|
|
|
|
|
{
|
|
|
|
|
strType = "VarChar";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
strType = "Char";
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeDate:
|
|
|
|
|
strType = "Date";
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeOID:
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeGeometry:
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeBlob:
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeRaster:
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeGUID:
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeGlobalID:
|
|
|
|
|
break;
|
|
|
|
|
case esriFieldType.esriFieldTypeXML:
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return strType;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 导入表格数据
|
|
|
|
|
public void ExcelToDataTable()
|
|
|
|
|
{
|
|
|
|
|
DataTable dataTable = null;
|
|
|
|
|
IRDBHelper rdbHelper = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
ProjectInfo prjInfo = MapsManager.Instance.CurrProjectInfo as ProjectInfo;
|
|
|
|
|
string filter = "*.xlsx";
|
|
|
|
|
if (string.IsNullOrWhiteSpace(NCDataDir)) return;
|
|
|
|
|
var files = System.IO.Directory.GetFiles(NCDataDir, filter, SearchOption.AllDirectories);
|
|
|
|
|
string dbPath = System.IO.Path.GetDirectoryName((MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).GetProjFilePath()) + @"\BGTJ.sqlite";
|
|
|
|
|
rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite);
|
|
|
|
|
DirectoryInfo dir = new DirectoryInfo(NCDataDir);
|
|
|
|
|
FileInfo[] fileSet = dir.GetFiles("(" + (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE + ")*.xlsx", SearchOption.AllDirectories);
|
|
|
|
|
foreach (var item in fileSet)
|
|
|
|
|
{
|
|
|
|
|
var tableName = item.Name.Replace("(", "").Replace(")", "").Replace((MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE, "").Replace(item.Extension, "").ToTrim();
|
|
|
|
|
using (var streamData = File.Open(item.FullName, FileMode.Open, FileAccess.Read))
|
|
|
|
|
{
|
|
|
|
|
using (var readerData = ExcelReaderFactory.CreateReader(streamData))
|
|
|
|
|
{
|
|
|
|
|
var result = readerData.AsDataSet();
|
|
|
|
|
dataTable = result.Tables[0];
|
|
|
|
|
Dictionary<string, string> dics = Get_Colunms(dataTable);
|
|
|
|
|
CreateTableSql(rdbHelper, tableName, dics);
|
|
|
|
|
if (dataTable != null && dataTable.Rows.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
dataTable = DtSelectTop(10, dataTable);
|
|
|
|
|
Insert_sql(dataTable, dics, rdbHelper, tableName);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
string tbName = "土地利用现状分类面积汇总表";
|
|
|
|
|
//调整后年初报表平差(涉及行政区调入、调出的情况)
|
|
|
|
|
DataTable table = rdbHelper.ExecuteDatatable("tab", string.Format(@"select case WHEN column1='{0}' THEN'column1' ELSE 'column2' END ColumnName from {1} WHERE column1='{0}' or column2='{0}' ", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE, tbName), true);
|
|
|
|
|
if (table == null || table.Rows.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
string ColumnName = table.Rows[0][0].ToTrim();
|
|
|
|
|
string strViewSQL = string.Empty;
|
|
|
|
|
if (ColumnName == "column1")
|
|
|
|
|
{
|
|
|
|
|
strViewSQL = string.Format(@" create view V_PC_NCMJ as
|
|
|
|
|
select '4' Cells_X, '2' Cells_Y, round(column11,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '3' Cells_Y, round(column12,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '4' Cells_Y, round(column13,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '5' Cells_Y, round(column14,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '6' Cells_Y, round(column15,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '7' Cells_Y, round(column16,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '8' Cells_Y, round(column17,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '9' Cells_Y, round(column18,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '10' Cells_Y, round(column19,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '11' Cells_Y, round(column20,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '12' Cells_Y, round(column21,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '13' Cells_Y, round(column22,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '14' Cells_Y, round(column23,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '15' Cells_Y, round(column24,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '16' Cells_Y, round(column25,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '17' Cells_Y, round(column26,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '18' Cells_Y, round(column27,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '19' Cells_Y, round(column28,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
SELECT '4' Cells_X, '20' Cells_Y, round(column3,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
SELECT '4' Cells_X, '21' Cells_Y, round(column4,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
SELECT '4' Cells_X, '22' Cells_Y, round(column5,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
SELECT '4' Cells_X, '23' Cells_Y, round(column6,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
SELECT '4' Cells_X, '24' Cells_Y, round(column7,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '25' Cells_Y, round(column8,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '26' Cells_Y, round(column9,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '27' Cells_Y, round(column10,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '28' Cells_Y, round(column43,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '29' Cells_Y, round(column44,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '30' Cells_Y, round(column45,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '31' Cells_Y, round(column46,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '32' Cells_Y, round(column47,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '33' Cells_Y, round(column48,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '34' Cells_Y, round(column49,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '36' Cells_Y, round(column29,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '37' Cells_Y, round(column30,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '38' Cells_Y, round(column31,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '39' Cells_Y, round(column32,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '40' Cells_Y, round(column33,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '41' Cells_Y, round(column34,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '42' Cells_Y, round(column35,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '43' Cells_Y, round(column36,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '44' Cells_Y, round(column37,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '45' Cells_Y, round(column38,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '46' Cells_Y, round(column39,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '47' Cells_Y, round(column40,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '48' Cells_Y, round(column41,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '49' Cells_Y, round(column42,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '50' Cells_Y, round(column50,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '51' Cells_Y, round(column51,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '52' Cells_Y, round(column52,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '53' Cells_Y, round(column53,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '54' Cells_Y, round(column54,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '55' Cells_Y, round(column55,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '56' Cells_Y, round(column56,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '57' Cells_Y, round(column57,4) BGMJ FROM {2} WHERE {1}='{0}' ", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE, ColumnName, tbName);
|
|
|
|
|
}
|
|
|
|
|
else if (ColumnName == "column2")
|
|
|
|
|
{
|
|
|
|
|
strViewSQL = string.Format(@" create view V_PC_NCMJ as
|
|
|
|
|
select '4' Cells_X, '2' Cells_Y, round(column12,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '3' Cells_Y, round(column13,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '4' Cells_Y, round(column14,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '5' Cells_Y, round(column15,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '6' Cells_Y, round(column16,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '7' Cells_Y, round(column17,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '8' Cells_Y, round(column18,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '9' Cells_Y, round(column19,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '10' Cells_Y, round(column20,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '11' Cells_Y, round(column21,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '12' Cells_Y, round(column22,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '13' Cells_Y, round(column23,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '14' Cells_Y, round(column24,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '15' Cells_Y, round(column25,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '16' Cells_Y, round(column26,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '17' Cells_Y, round(column27,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '18' Cells_Y, round(column28,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '19' Cells_Y, round(column29,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
SELECT '4' Cells_X, '20' Cells_Y, round(column4,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
SELECT '4' Cells_X, '21' Cells_Y, round(column5,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
SELECT '4' Cells_X, '22' Cells_Y, round(column6,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
SELECT '4' Cells_X, '23' Cells_Y, round(column7,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
SELECT '4' Cells_X, '24' Cells_Y, round(column8,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '25' Cells_Y, round(column9,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '26' Cells_Y, round(column10,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '27' Cells_Y, round(column11,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '28' Cells_Y, round(column44,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '29' Cells_Y, round(column45,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '30' Cells_Y, round(column46,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '31' Cells_Y, round(column47,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '32' Cells_Y, round(column48,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '33' Cells_Y, round(column49,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '34' Cells_Y, round(column50,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '36' Cells_Y, round(column30,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '37' Cells_Y, round(column31,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '38' Cells_Y, round(column32,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '39' Cells_Y, round(column33,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '40' Cells_Y, round(column34,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '41' Cells_Y, round(column35,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '42' Cells_Y, round(column36,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '43' Cells_Y, round(column37,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '44' Cells_Y, round(column38,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '45' Cells_Y, round(column39,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '46' Cells_Y, round(column40,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '47' Cells_Y, round(column41,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '48' Cells_Y, round(column42,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '49' Cells_Y, round(column43,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '50' Cells_Y, round(column51,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '51' Cells_Y, round(column52,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '52' Cells_Y, round(column53,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '53' Cells_Y, round(column54,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '54' Cells_Y, round(column55,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '55' Cells_Y, round(column56,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '56' Cells_Y, round(column57,4) BGMJ FROM {2} WHERE {1}='{0}' UNION ALL
|
|
|
|
|
select '4' Cells_X, '57' Cells_Y, round(column58,4) BGMJ FROM {2} WHERE {1}='{0}' ", (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE, ColumnName, tbName);
|
|
|
|
|
}
|
|
|
|
|
//年初面积
|
|
|
|
|
rdbHelper.ExecuteSQL(@"DROP VIEW V_PC_NCMJ");
|
|
|
|
|
rdbHelper.ExecuteSQL(strViewSQL);
|
|
|
|
|
|
|
|
|
|
//调入面积
|
|
|
|
|
rdbHelper.ExecuteSQL(@"DROP VIEW V_PC_TRMJ");
|
|
|
|
|
strViewSQL = @"CREATE VIEW V_PC_TRMJ as
|
|
|
|
|
select Cells_Y,dlbm,BGMJ from
|
|
|
|
|
(
|
|
|
|
|
select case when XZQTZLX='1' then bgq ELSE bgh end dlbm, SUM(BGMJ) BGMJ from
|
|
|
|
|
(
|
|
|
|
|
select case when BGQCZCSXM='空' then BGQDLBM else BGQCZCSXM end bgq,case when BGHCZCSXM = '空' then BGHDLBM else BGHCZCSXM end bgh,BGMJ,XZQTZLX
|
|
|
|
|
from
|
|
|
|
|
(
|
|
|
|
|
select substr(BGQDLBM, 1, 4) BGQDLBM, substr(BGQCZCSXM, 1, 3) BGQCZCSXM, substr(BGHDLBM, 1, 4) BGHDLBM,substr(BGHCZCSXM, 1, 3) BGHCZCSXM,BGMJ, XZQTZLX from JCTJB_GQ
|
|
|
|
|
)A WHERE XZQTZLX in ('1','3')
|
|
|
|
|
)A GROUP BY dlbm
|
|
|
|
|
)a left join TDLYXZBGB B on a.DLBM= B.bgh where b.Cells_X='12'";
|
|
|
|
|
rdbHelper.ExecuteSQL(strViewSQL);
|
|
|
|
|
|
|
|
|
|
//调出面积
|
|
|
|
|
rdbHelper.ExecuteSQL(@"DROP VIEW V_PC_TCMJ");
|
|
|
|
|
strViewSQL = @"CREATE VIEW V_PC_TCMJ as
|
|
|
|
|
select Cells_Y,dlbm,BGMJ from
|
|
|
|
|
(
|
|
|
|
|
select bgq dlbm, SUM(BGMJ) BGMJ from
|
|
|
|
|
(
|
|
|
|
|
select case when BGQCZCSXM='空' then BGQDLBM else BGQCZCSXM end bgq,case when BGHCZCSXM = '空' then BGHDLBM else BGHCZCSXM end bgh,BGMJ,XZQTZLX
|
|
|
|
|
from
|
|
|
|
|
(
|
|
|
|
|
select substr(BGQDLBM, 1, 4) BGQDLBM, substr(BGQCZCSXM, 1, 3) BGQCZCSXM, substr(BGHDLBM, 1, 4) BGHDLBM,substr(BGHCZCSXM, 1, 3) BGHCZCSXM,BGMJ, XZQTZLX from JCTJB_GQ
|
|
|
|
|
)A WHERE XZQTZLX in ('2','4')
|
|
|
|
|
)A GROUP BY dlbm order by bgmj desc
|
|
|
|
|
)a left join TDLYXZBGB B on a.DLBM= B.bgh where b.Cells_X='12'";
|
|
|
|
|
rdbHelper.ExecuteSQL(strViewSQL);
|
|
|
|
|
|
|
|
|
|
//计算平差数
|
|
|
|
|
rdbHelper.ExecuteSQL(@"DROP VIEW V_PC_PCS");
|
|
|
|
|
strViewSQL = @" create view V_PC_PCS as
|
|
|
|
|
SELECT round(ifnull(trmj,0)-ifnull(tcmj,0),2) mjc from
|
|
|
|
|
(
|
|
|
|
|
(select sum(bgmj) trmj from JCTJB_GQ where XZQTZLX='1' or XZQTZLX='3'),
|
|
|
|
|
(select sum(bgmj) tcmj from JCTJB_GQ where XZQTZLX='2' or XZQTZLX='4')
|
|
|
|
|
)";
|
|
|
|
|
rdbHelper.ExecuteSQL(strViewSQL);
|
|
|
|
|
|
|
|
|
|
dataTable = rdbHelper.ExecuteDatatable("dtPCS", "select * from V_PC_PCS", true);
|
|
|
|
|
double pcs = 0;
|
|
|
|
|
if (dataTable != null && dataTable.Rows.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
pcs = dataTable.Rows[0][0].ToDouble();
|
|
|
|
|
if (pcs == 0) return;
|
|
|
|
|
}
|
|
|
|
|
if (prjInfo == null) return;
|
|
|
|
|
if (prjInfo.KZMJ == null) return;
|
|
|
|
|
double LLMJBHValue = Math.Round(prjInfo.KZMJ.TZH_LDMJ_GQ + prjInfo.KZMJ.TZH_HDMJ_GQ - (prjInfo.KZMJ.TZQ_LDMJ_GQ + prjInfo.KZMJ.TZQ_HDMJ_GQ), 2);
|
|
|
|
|
double PCKZS = Math.Round(LLMJBHValue - pcs, 2);
|
|
|
|
|
|
|
|
|
|
//获取待平差条目
|
|
|
|
|
rdbHelper.ExecuteSQL(@"DROP VIEW V_PC_DPCTM");
|
|
|
|
|
|
|
|
|
|
dataTable = rdbHelper.ExecuteDatatable("dtPCS", "select * from V_PC_TRMJ", true);
|
|
|
|
|
double trmj = 0;
|
|
|
|
|
if (dataTable != null && dataTable.Rows.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
trmj = dataTable.Rows[0][0].ToInt();
|
|
|
|
|
strViewSQL = $@"CREATE VIEW V_PC_DPCTM as
|
|
|
|
|
select * from JCTJB_GQ where XZQTZLX='1' or XZQTZLX='3' ORDER by BGMJ desc,BGHDLBM desc,BGHQSXZ,BGHZLDWDM,BGHGDLX,BGHGDPDJB,BGHTBXHDM,BGHZZSXDM,BGHCZCSXM,BGHMSSM LIMIT {Math.Abs(PCKZS) * 100}";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
strViewSQL = $@"CREATE VIEW V_PC_DPCTM as
|
|
|
|
|
select * from JCTJB_GQ where BGQDLBM=(
|
|
|
|
|
select dlbm from (
|
|
|
|
|
select dlbm,(ncmj+trmj-tcmj) TZHNCMJ from (
|
|
|
|
|
select a.Cells_Y,case when a.dlbm is null then b.dlbm else a.dlbm end dlbm,ifnull(a.NCMJ,0) NCMJ,ifnull(a.TRMJ,0) TRMJ,ifnull(b.BGMJ,0) as TCMJ from
|
|
|
|
|
(
|
|
|
|
|
select a.Cells_Y,b.dlbm,a.BGMJ as NCMJ,ifnull(b.BGMJ,0) as TRMJ from V_PC_NCMJ a left join V_PC_TRMJ b on a.Cells_Y=b.Cells_Y
|
|
|
|
|
)a left join V_PC_TCMJ b on a.Cells_Y=b.Cells_Y
|
|
|
|
|
) where dlbm is not null order by tzhncmj desc LIMIT 1
|
|
|
|
|
)
|
|
|
|
|
) and (XZQTZLX='2' or XZQTZLX='4') and BGQCZCSXM='空' order by bgmj desc,BGQQSXZ,BGQZLDWDM,BGQGDLX,BGQGDPDJB,BGQTBXHDM,BGQZZSXDM,BGQCZCSXM,BGQMSSM LIMIT {Math.Abs(PCKZS) * 100}";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rdbHelper.ExecuteSQL(strViewSQL);
|
|
|
|
|
if (PCKZS > 0)
|
|
|
|
|
{
|
|
|
|
|
if (trmj > 0)
|
|
|
|
|
{
|
|
|
|
|
rdbHelper.ExecuteSQL(@"update JCTJB_GQ set bgmj=bgmj+0.01 where id in
|
|
|
|
|
(
|
|
|
|
|
select id from V_PC_DPCTM
|
|
|
|
|
)");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
rdbHelper.ExecuteSQL(@"update JCTJB_GQ set bgmj=bgmj-0.01 where id in
|
|
|
|
|
(
|
|
|
|
|
select id from V_PC_DPCTM
|
|
|
|
|
)");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (trmj > 0)
|
|
|
|
|
{
|
|
|
|
|
rdbHelper.ExecuteSQL(@"update JCTJB_GQ set bgmj=bgmj-0.01 where id in
|
|
|
|
|
(
|
|
|
|
|
select id from V_PC_DPCTM
|
|
|
|
|
)");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
rdbHelper.ExecuteSQL(@"update JCTJB_GQ set bgmj=bgmj+0.01 where id in
|
|
|
|
|
(
|
|
|
|
|
select id from V_PC_DPCTM
|
|
|
|
|
)");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("读取Excel数据错误(成果输出):" + ex);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (dataTable != null)
|
|
|
|
|
{
|
|
|
|
|
dataTable.Clear();
|
|
|
|
|
dataTable = null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static DataTable DtSelectTop(int TopItem, DataTable oDT)
|
|
|
|
|
{
|
|
|
|
|
if (oDT.Rows.Count < TopItem) return oDT;
|
|
|
|
|
|
|
|
|
|
DataTable NewTable = oDT.Clone();
|
|
|
|
|
DataRow[] rows = oDT.Select("1=1");
|
|
|
|
|
for (int i = 0; i < TopItem; i++)
|
|
|
|
|
{
|
|
|
|
|
NewTable.ImportRow((DataRow)rows[i]);
|
|
|
|
|
}
|
|
|
|
|
return NewTable;
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取列
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="dic"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static Dictionary<string, string> Get_Colunms(DataTable dic)
|
|
|
|
|
{
|
|
|
|
|
Dictionary<string, string> dics = new Dictionary<string, string>();
|
|
|
|
|
foreach (DataColumn item in dic.Columns)
|
|
|
|
|
{
|
|
|
|
|
dics.Add(item.ColumnName, "Varchar");
|
|
|
|
|
}
|
|
|
|
|
return dics;
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 创建表
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="rdbHelper"></param>
|
|
|
|
|
/// <param name="tableName"></param>
|
|
|
|
|
/// <param name="table"></param>
|
|
|
|
|
protected void CreateTableSql(IRDBHelper rdbHelper, string tableName, Dictionary<string, string> table)
|
|
|
|
|
{
|
|
|
|
|
string result = string.Empty;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string temp1 = "CREATE TABLE if not exists " + tableName + "(";
|
|
|
|
|
foreach (var item in table)
|
|
|
|
|
{
|
|
|
|
|
temp1 = temp1 + item.Key.Trim().ToLower() + " " + item.Value + ",";
|
|
|
|
|
}
|
|
|
|
|
result = temp1.TrimEnd(',') + ");";
|
|
|
|
|
rdbHelper.ExecuteNonQueryWithException($" DROP TABLE if exists {tableName}");
|
|
|
|
|
rdbHelper.ExecuteNonQueryWithException(result);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Insert_sql(DataTable dic, Dictionary<string, string> dics, IRDBHelper SqlHelper, string Table)
|
|
|
|
|
{
|
|
|
|
|
#region 获取所有字段
|
|
|
|
|
StringBuilder columns = new StringBuilder();
|
|
|
|
|
foreach (var item in dics)
|
|
|
|
|
{
|
|
|
|
|
columns.Append("," + item.Key);
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 数据入库
|
|
|
|
|
int CycleIndex = 0;
|
|
|
|
|
StringBuilder insertsql = new StringBuilder();
|
|
|
|
|
StringBuilder strsql = new StringBuilder();
|
|
|
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
|
|
|
var count = dic.Rows.Count;
|
|
|
|
|
foreach (DataRow item0 in dic.Rows)
|
|
|
|
|
{
|
|
|
|
|
CycleIndex++;
|
|
|
|
|
StringBuilder data = new StringBuilder();//insert语句插入字段
|
|
|
|
|
foreach (var item1 in dics)
|
|
|
|
|
{
|
|
|
|
|
if (item0[item1.Key].ToString().Trim() == "")
|
|
|
|
|
{
|
|
|
|
|
data.Append(",null");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
data.Append((",'" + item0[item1.Key].ToString().Trim().Replace("'", "''").Replace("\n", "").Replace(" ", "").Replace("\t", "").Replace("\r", "") + "'"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
insertsql.Append(string.Format("insert into " + Table + "({0})values({1});", columns.ToString().Substring(1), data.ToString().Substring(1)));
|
|
|
|
|
#region 提交数据
|
|
|
|
|
if (count < 10000)
|
|
|
|
|
{
|
|
|
|
|
if (CycleIndex < count)
|
|
|
|
|
{
|
|
|
|
|
stringBuilder.Append(insertsql.ToString());
|
|
|
|
|
insertsql.Clear();
|
|
|
|
|
}
|
|
|
|
|
else if (CycleIndex == count)
|
|
|
|
|
{
|
|
|
|
|
stringBuilder.Append(insertsql.ToString());
|
|
|
|
|
var num = SqlHelper.ExecuteNonQuery(stringBuilder.ToString(), CommandType.Text);
|
|
|
|
|
if (num < 0 && stringBuilder.ToString() != "")
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
strsql.Append(insertsql.ToString());
|
|
|
|
|
insertsql.Clear();
|
|
|
|
|
}
|
|
|
|
|
if (CycleIndex == 10000)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var num = SqlHelper.ExecuteNonQuery(strsql.ToString(), CommandType.Text);
|
|
|
|
|
if (num < 0 && strsql.ToString() != "")
|
|
|
|
|
return;
|
|
|
|
|
insertsql.Clear();
|
|
|
|
|
strsql.Clear();
|
|
|
|
|
count = count - CycleIndex;
|
|
|
|
|
CycleIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception exc)
|
|
|
|
|
{
|
|
|
|
|
throw new Exception(exc.Message);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
GC.Collect();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
}
|