using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Geodatabase; using KGIS.Framework.DBOperator; using KGIS.Framework.Maps; using KGIS.Framework.Utils; using KGIS.Framework.Utils.ExtensionMethod; using KGIS.Framework.Utils.Helper; using Kingo.PluginServiceInterface; using System; using System.Data; namespace Kingo.Plugin.DataCheck.Helper { public class BGTBTopoCheck : DataCheckRule { private string _RuleName; public override string RuleName { get => _RuleName; set => _RuleName = value; } private string _RuleDesc; public override string RuleDesc { get => _RuleDesc; set => _RuleDesc = value; } public BGTBTopoCheck() : base() { _RuleName = "变更图斑图形"; _RuleDesc = "检查变更图斑数据是否存在自相交/多部件/短线段/尖锐角/局部狭长问题"; } public override void StartCheck(object pParm) { IFeatureClass m_Fc = null; try { base.CheckState = EnumCheckState.检查中; m_Fc = MapsManager.Instance.MapService.GetFeatureClassByName("DLTBBG"); IDataCheckHelper dataCheckHelper = UIShell.OSGi.BundleRuntime.Instance.GetFirstOrDefaultService(); if (dataCheckHelper == null) { base.CheckState = EnumCheckState.检查失败; return; } dataCheckHelper.DataCheck(new CheckParametr() { CheckType = enumCheckType.Graphic, DataSource = m_Fc, IDataCheckName = "BGQDataCheck" }); StartLoadData(pParm); base.CheckState = EnumCheckState.检查完成; } catch (Exception ex) { base.CheckState = EnumCheckState.检查失败; LogAPI.Debug(string.Format("{0}", _RuleName)); LogAPI.Debug(ex); } } public override void StartLoadData(object pParm) { try { string dbPath = System.IO.Path.Combine((MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ProjDir, "DataCheckrResult.db"); DataTable dtFJ = SQLiteDBOperate.Instance.ExceDataTable(dbPath, "select * from DataCheckResults WHERE ErrorCode like '200100039999001%' and ErrorLayer='BGQDataCheck' order by ErrorType DESC"); if (dtFJ == null) return; base.CheckResults.Clear(); for (int i = 0; i < dtFJ.Rows.Count; i++) { int id = dtFJ.Rows[i]["ID"].ToInt(); int bgoid = dtFJ.Rows[i]["OBJECTID"].ToInt(); string jcError = dtFJ.Rows[i]["ErrorDesc"].ToTrim(); string jcErroArea = dtFJ.Rows[i]["ErrorArea"].ToTrim(); string bgErrorType = dtFJ.Rows[i]["ErrorType"].ToTrim(); string errorcode = dtFJ.Rows[i]["ErrorCode"].ToTrim(); EnumErrorType errType = (EnumErrorType)Enum.Parse(typeof(EnumErrorType), bgErrorType); base.CheckResults.Add(new DataCheckResult() { ID = id, ErrorDesc = jcError, ErrorCode = errorcode, ErrorLayer = "DLTBBG", PrimaryKey = "OBJECTID", PrimaryKeyValue = bgoid.ToTrim(), ErrorType = errType, ErrorArea = jcErroArea, Icon = string.Format("pack://siteoforigin:,,,/Images/{0}.{1}", errType.ToString(), "png") }); } } catch (Exception ex) { MessageHelper.ShowError("加载检查结果视图数据失败,请查看日志!"); LogAPI.Debug(ex.Message); } } public override void StartRepair(object pParm) { StartLoadData(pParm); } public override void StartSingleRepair(object pParm) { } public override void StartCheckForThread(object pParam) { } } }