|
|
|
|
using Aspose.Cells;
|
|
|
|
|
using ESRI.ArcGIS.Geodatabase;
|
|
|
|
|
using ESRI.ArcGIS.Geometry;
|
|
|
|
|
using KGIS.Framework.AE;
|
|
|
|
|
using KGIS.Framework.DBOperator;
|
|
|
|
|
using KGIS.Framework.Maps;
|
|
|
|
|
using KGIS.Framework.Utils;
|
|
|
|
|
using KGIS.Framework.Utils.Helper;
|
|
|
|
|
using Kingo.PluginServiceInterface;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Data.OleDb;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
using System.Windows.Controls;
|
|
|
|
|
using System.Windows.Data;
|
|
|
|
|
using System.Windows.Documents;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
using System.Windows.Media;
|
|
|
|
|
using System.Windows.Media.Imaging;
|
|
|
|
|
using System.Windows.Navigation;
|
|
|
|
|
using System.Windows.Shapes;
|
|
|
|
|
|
|
|
|
|
namespace Kingo.Plugin.DataLoad.View
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// FrmLoadGJWTTB.xaml 的交互逻辑
|
|
|
|
|
/// </summary>
|
|
|
|
|
public partial class FrmLoadGJWTTB : BaseWindow
|
|
|
|
|
{
|
|
|
|
|
public FrmLoadGJWTTB()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnBrowse_Click_1(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
FolderBrowserDialog dialog = new FolderBrowserDialog();
|
|
|
|
|
dialog.Description = "请选择文件路径";
|
|
|
|
|
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
this.txtPath.Text = dialog.SelectedPath;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnImport_Click_1(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
OleDbConnection conn = null;
|
|
|
|
|
OleDbTransaction pTrans = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrWhiteSpace(txtPath.Text))
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.Show("未获取到文件路径:" + txtPath.Text);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
string path = txtPath.Text;
|
|
|
|
|
ProjectInfo info = (MapsManager.Instance.CurrProjectInfo as ProjectInfo);
|
|
|
|
|
|
|
|
|
|
string wttbPath = info.ProjDir + "\\gjwttb.mdb";
|
|
|
|
|
string mdbTempPath = AppDomain.CurrentDomain.BaseDirectory + "Plugins\\Kingo.Plugin.DataLoad\\Resources\\ProcessData.mdb";
|
|
|
|
|
File.Copy(mdbTempPath, wttbPath, true);
|
|
|
|
|
|
|
|
|
|
foreach (string file in Directory.GetFiles(path))
|
|
|
|
|
{
|
|
|
|
|
FileInfo fileInfo = new FileInfo(file);
|
|
|
|
|
switch (fileInfo.Extension.ToUpper())
|
|
|
|
|
{
|
|
|
|
|
case ".XLS":
|
|
|
|
|
case ".XLSX":
|
|
|
|
|
{
|
|
|
|
|
Workbook workbook = new Workbook(fileInfo.FullName);
|
|
|
|
|
Cells cells = workbook.Worksheets[0].Cells;
|
|
|
|
|
DataTable dtGJHCJG = cells.ExportDataTable(1, 0, cells.MaxDataRow, cells.MaxColumn + 1, false);
|
|
|
|
|
foreach (DataColumn c in dtGJHCJG.Columns)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
c.ColumnName = dtGJHCJG.Rows[0][c.ColumnName].ToString();
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
dtGJHCJG.Rows.RemoveAt(0);
|
|
|
|
|
|
|
|
|
|
if (dtGJHCJG != null && dtGJHCJG.Rows.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string connectionString = "provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + wttbPath;
|
|
|
|
|
conn = new OleDbConnection(connectionString);
|
|
|
|
|
conn.Open();
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + wttbPath;
|
|
|
|
|
conn = new OleDbConnection(connectionString);
|
|
|
|
|
conn.Open();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OleDbCommand cmd = new OleDbCommand("drop table DLTB_WTTB ", conn);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
cmd.CommandText = "drop table DLTB_WTTB ";
|
|
|
|
|
cmd.ExecuteNonQuery();
|
|
|
|
|
}
|
|
|
|
|
catch { }
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
cmd.CommandText = "Create TABLE DLTB_WTTB (BSM varchar(50),地类核查结果说明 Memo,属性核查结果说明 memo,其他核查结果说明 memo,备注 memo,照片地类 memo,情况说明 memo)";
|
|
|
|
|
cmd.ExecuteNonQuery();
|
|
|
|
|
}
|
|
|
|
|
catch { }
|
|
|
|
|
|
|
|
|
|
foreach (DataRow dr in dtGJHCJG.Rows)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string insertSQL = string.Format("insert into DLTB_WTTB (BSM,地类核查结果说明,属性核查结果说明,其他核查结果说明,备注,照片地类,情况说明) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}')", dr["标识码"], dr["地类核查结果说明"], dr["属性核查结果说明"], dr["其他核查结果说明"], dr["备注"], dr["照片地类"], dr["情况说明"]);
|
|
|
|
|
cmd.CommandText = insertSQL;
|
|
|
|
|
cmd.ExecuteNonQuery();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//空行数据插入异常,不抛出
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
dtGJHCJG.Clear();
|
|
|
|
|
if (conn != null)
|
|
|
|
|
{
|
|
|
|
|
conn.Close();
|
|
|
|
|
conn.Dispose();
|
|
|
|
|
}
|
|
|
|
|
GC.Collect();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case ".VCT":
|
|
|
|
|
KGIS.Framework.VCT.Helper.VCTConvertGeodatabaseHelper helper = new KGIS.Framework.VCT.Helper.VCTConvertGeodatabaseHelper();
|
|
|
|
|
helper.RootPath = System.IO.Path.GetDirectoryName(fileInfo.FullName);
|
|
|
|
|
helper.VCTConvertGeodatabse(fileInfo.FullName, 1, true, false);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach (string dir in Directory.GetDirectories(path))
|
|
|
|
|
{
|
|
|
|
|
if (dir.Contains("GXGC.gdb"))
|
|
|
|
|
{
|
|
|
|
|
WorkspaceAPI workspaceAPI = new WorkspaceAPI(dir, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
IFeatureClassAPI featureAPI = workspaceAPI.OpenFeatureClass("DLTB");
|
|
|
|
|
|
|
|
|
|
WorkspaceAPI workspaceAPI_MDB = new WorkspaceAPI(wttbPath, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.MDBFile);
|
|
|
|
|
ISpatialReference pSR = (featureAPI.FeatureClass as IGeoDataset).SpatialReference;
|
|
|
|
|
GeoDBAPI.CreateFields(featureAPI.FeatureClass.Fields, out IFields ifields);
|
|
|
|
|
IFeatureClassAPI CreateFeatureClass = workspaceAPI_MDB.CreateFeatureClass("DLTBGXGC", pSR, ifields);
|
|
|
|
|
IFeatureClass fcTargetTemp = CreateFeatureClass.FeatureClass;
|
|
|
|
|
featureAPI.FcToFc(fcTargetTemp, null, false);
|
|
|
|
|
|
|
|
|
|
//if (fcTargetTemp != null)
|
|
|
|
|
// Marshal.ReleaseComObject(fcTargetTemp);
|
|
|
|
|
//CreateFeatureClass.CloseFeatureClass();
|
|
|
|
|
//workspaceAPI_MDB.CloseWorkspace(false);
|
|
|
|
|
|
|
|
|
|
List<string> lstSql = new List<string>();
|
|
|
|
|
lstSql.Add("delete distinctrow a.* from (DLTBGXGC a left join DLTB_WTTB b on a.bsm=b.bsm) where b.bsm is null");
|
|
|
|
|
|
|
|
|
|
string[] toFieldsSet = "BSM,地类核查结果说明,属性核查结果说明,其他核查结果说明,备注,照片地类,情况说明".Split(',');
|
|
|
|
|
string[] fieldsLengthSet = "varchar(50),Memo,memo,memo,memo,memo,memo".Split(',');
|
|
|
|
|
|
|
|
|
|
string sql = string.Empty;
|
|
|
|
|
for (int i = 0; i < toFieldsSet.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(toFieldsSet[i]) && toFieldsSet[i] != "BSM")
|
|
|
|
|
{
|
|
|
|
|
//sql += "column " + toFieldsSet[i] + " " + fieldsLengthSet[i] + ",";
|
|
|
|
|
CreateFeatureClass.AddField(toFieldsSet[i], esriFieldType.esriFieldTypeString, toFieldsSet[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//sql = sql.Substring(0, sql.Length - 1);
|
|
|
|
|
|
|
|
|
|
//lstSql.Add("alter table DLTBGXGC add " + sql);
|
|
|
|
|
sql = string.Empty;
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < toFieldsSet.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(toFieldsSet[i]) && toFieldsSet[i] != "BSM")
|
|
|
|
|
{
|
|
|
|
|
sql += "a." + toFieldsSet[i] + "=b." + toFieldsSet[i] + ",";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
sql = sql.Substring(0, sql.Length - 1);
|
|
|
|
|
|
|
|
|
|
lstSql.Add("Update DLTBGXGC a,DLTB_WTTB b set " + sql + " where a.BSM=b.BSM");
|
|
|
|
|
ExcuteListSQL(lstSql, wttbPath);
|
|
|
|
|
|
|
|
|
|
workspaceAPI_MDB = new WorkspaceAPI(wttbPath, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.MDBFile);
|
|
|
|
|
|
|
|
|
|
//WorkspaceAPI workspaceAPI_Scheme = new WorkspaceAPI(info.GetSchemeDBPath(), KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
|
|
|
|
|
//workspaceAPI_Scheme.DeleteFeatureClass("SB_DLTBGXGC");
|
|
|
|
|
|
|
|
|
|
//GeoDBAPI.CreateFields(CreateFeatureClass.FeatureClass.Fields, out IFields ifields2);
|
|
|
|
|
//IFeatureClass fcTargetTemp_SB = workspaceAPI_Scheme.CreateFeatureClass("SB_DLTBGXGC", pSR, ifields2).FeatureClass;
|
|
|
|
|
|
|
|
|
|
//IFeatureClassAPI featureAPI_MDB = workspaceAPI_MDB.OpenFeatureClass("DLTBGXGC");
|
|
|
|
|
|
|
|
|
|
//CreateFeatureClass.FcToFc(fcTargetTemp_SB, null, false);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MessageHelper.Show("加载完成!");
|
|
|
|
|
this.Close();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.ShowError("加载国家问题图斑异常:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static IRDBHelper CreateDbHelper(string mdbPath)
|
|
|
|
|
{
|
|
|
|
|
IRDBHelper irdbhelper = null;
|
|
|
|
|
string strConn = "provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}";
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
strConn = string.Format(strConn, mdbPath);
|
|
|
|
|
irdbhelper = RDBFactory.CreateDbHelper(strConn, DatabaseType.MSAccess);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}";
|
|
|
|
|
strConn = string.Format(strConn, mdbPath);
|
|
|
|
|
irdbhelper = RDBFactory.CreateDbHelper(strConn, DatabaseType.MSAccess);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex1)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex1);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return irdbhelper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 执行多条操作数据库的sql语句
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="strSql"></param>
|
|
|
|
|
public static int ExcuteListSQL(List<string> lstSql, string mdbPath)
|
|
|
|
|
{
|
|
|
|
|
IRDBHelper irdbhelper = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
int i = -1;
|
|
|
|
|
irdbhelper = CreateDbHelper(mdbPath);
|
|
|
|
|
foreach (string str in lstSql)
|
|
|
|
|
{
|
|
|
|
|
i = irdbhelper.ExecuteSQL(str);
|
|
|
|
|
if (i < 0 && !str.ToUpper().Contains("DROP"))
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("分析sql失败" + str);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
irdbhelper.Rollback();
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (irdbhelper != null)
|
|
|
|
|
irdbhelper.DisConnect();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|