public bool Check(OleDbConnection connection) { var reader = ADOSQLHelper.ExecuteReader(connection, string.IsNullOrEmpty(WhereFieldName) ? string.Format("Select {0} from {1}", CheckFieldName, TableName) : string.Format("Select {0},{1} from {1}", CheckFieldName, WhereFieldName, TableName)); if (reader != null) { var temp = new List <string>(); var str = string.Empty; var info = string.Empty; while (reader.Read()) { str = string.IsNullOrEmpty(WhereFieldName) ? string.Format("{0}:{1}", CheckFieldName, reader[0].ToString()) : string.Format("{0}:{1}并且{2}:{3}", WhereFieldName, reader[1], CheckFieldName, reader[0]); if (temp.Contains(str)) { info = string.Format("{0} 存在重复", str); Messages.Add(info); _questions.Add(new Question { Code = Code, Name = Name, Project = CheckProject.属性正确性, TableName = TableName, BSM = CheckFieldName, Description = info }); } else { temp.Add(str); } } QuestionManager.AddRange(_questions); return(true); } return(false); }
public bool Check(OleDbConnection connection) { var reader = ADOSQLHelper.ExecuteReader(connection, string.Format("Select {0} from {1}", string.Join(",", Fields), TableName)); if (reader != null) { var array = new string[Fields.Length]; var info = string.Empty; while (reader.Read()) { array = new string[Fields.Length]; for (var i = 0; i < Fields.Length; i++) { array[i] = Fields[i].ToString(); } var val = string.Join(Split, array); if (!Values.Contains(val)) { info = string.Format("不存在:{0}", val); Messages.Add(info); _questions.Add(new Question { Code = Code, Name = Name, Project = CheckProject.属性正确性, TableName = TableName, Description = info }); } } QuestionManager.AddRange(_questions); return(true); } return(false); }
public void Program() { _workspace = MDBFilePath.OpenAccessFileWorkSpace(); if (_workspace == null) { _messages.Add("获取Access的workspace失败"); return; } var str = string.Empty; foreach (var className in FeatureClassNames) { var featureClass = _workspace.GetFeatureClass(className); if (featureClass == null) { str = string.Format("未获取图层:{0},无法进行图层相关检查", className); _messages.Add(str); _questions.Add(new Question() { Code = "2101", Name = "图层完整性", Project = CheckProject.图层完整性, TableName = className, Description = str }); continue; } var spatialReference = SpatialReferenceManager.GetSpatialReference(featureClass);//检查图层坐标系 if (spatialReference.Name.Trim() != CurrentSpatialReference.Name.Trim()) { str = string.Format("图层:{0}不符合2201(平面坐标系是否采用‘1980 西安坐标系’、3度带、带带号,检查高程系统是否采用‘1985 国家高程基准’,检查投影方式是否采用高斯-克吕格投影)", className); _messages.Add(str); _questions.Add(new Question { Code = "2201", Name = "数学基础", Project = CheckProject.数学基础, TableName = className, Description = str }); } if (className == TABLENAME)//检查DCDYTB中是否存在相交 { var featurePath = string.Format("{0}/{1}", _mdbFilePath, className); var outFeatureName = string.Format("{0}_intersect", className); var intersectPath = string.Format("{0}/{1}", _mdbFilePath, outFeatureName); if (Cross(string.Format("{0};{1}", featurePath, featurePath), intersectPath)) { var intersectfeatureClass = _workspace.GetFeatureClass(outFeatureName); if (intersectfeatureClass == null) { _messages.Add(string.Format("无法获取要素类:【{0}】,故无法验证图斑是否相交")); } else { Run(intersectfeatureClass, TABLENAME, "XZCMC", "TBBH"); DeleteFeatureClass(intersectPath); } } else { _messages.Add(string.Format("验证表【{0}】中是否存在图斑相交,执行intersect发生错误")); } } } QuestionManager.AddRange(_questions); }
public bool Check(OleDbConnection connection) { var reader = ADOSQLHelper.ExecuteReader(connection, string.Format("Select {0},{1} from {2}", CheckFieldName, Key, TableName)); if (reader != null) { var str = string.Empty; var info = string.Empty; while (reader.Read()) { str = reader[0].ToString(); if (Regex.IsMatch(str, RegexString)) { continue; } else { info = string.Format("{0}对应的值不正确,请核对", reader[1].ToString()); Messages.Add(info); _questions.Add(new Question() { Code = "3201", Name = Name, Project = CheckProject.值符合性, TableName = TableName, BSM = reader[1].ToString(), Description = info }); } } QuestionManager.AddRange(_questions); return(true); } return(false); }
public void Write() { var Time = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss"); var tools = new List <IExcel> { new ExcelSix { MStartLine = 6, SaveFolder = SaveFolder, Connection = ParameterManager.Connection, List = ExcelManager.XZQ, District = ParameterManager.District, Code = ParameterManager.Code, Folder = ParameterManager.CollectFolder, CheckCode = ID, TitleName = string.Format("{0}({1})农村存量建设用地情况汇总表 {2}", ParameterManager.District, ParameterManager.Code, Time) }, new ExcelOne { MStartLine = 3, SaveFolder = SaveFolder, Connection = ParameterManager.Connection, List = ExcelManager.XZQ, District = ParameterManager.District, Code = ParameterManager.Code, Folder = ParameterManager.CollectFolder, CheckCode = ID, TitleName = string.Format("{0}({1})农村存量建设用地总体情况汇总表 {2}", ParameterManager.District, ParameterManager.Code, Time) }, new ExcelTwo { MStartLine = 5, SaveFolder = SaveFolder, Connection = ParameterManager.Connection, List = ExcelManager.XZQ, District = ParameterManager.District, Code = ParameterManager.Code, Folder = ParameterManager.CollectFolder, CheckCode = ID, TitleName = string.Format("{0}({1})农村存量宅基地基本情况汇总表 {2}", ParameterManager.District, ParameterManager.Code, Time) }, new ExcelThree { MStartLine = 5, SaveFolder = SaveFolder, Connection = ParameterManager.Connection, List = ExcelManager.XZQ, District = ParameterManager.District, Code = ParameterManager.Code, Folder = ParameterManager.CollectFolder, CheckCode = ID, TitleName = string.Format("{0}({1})农村存量经营性建设用地基本情况汇总表 {2}", ParameterManager.District, ParameterManager.Code, Time) }, new ExcelFour { MStartLine = 5, SaveFolder = SaveFolder, Connection = ParameterManager.Connection, List = ExcelManager.XZQ, District = ParameterManager.District, Code = ParameterManager.Code, Folder = ParameterManager.CollectFolder, CheckCode = ID, TitleName = string.Format("{0}({1})农村存量公共管理及公共服务设施用地基本情况汇总表 {2}", ParameterManager.District, ParameterManager.Code, Time) }, new ExcelFive { MStartLine = 5, SaveFolder = SaveFolder, Connection = ParameterManager.Connection, List = ExcelManager.XZQ, District = ParameterManager.District, Code = ParameterManager.Code, Folder = ParameterManager.CollectFolder, CheckCode = ID, TitleName = string.Format("{0}({1})农村其它存量建设用地基本情况汇总表 {2}", ParameterManager.District, ParameterManager.Code, Time) } }; Parallel.ForEach(tools, tool => { tool.Write(); QuestionManager.AddRange(tool.ParalleQuestions.ToList()); }); }
private bool CheckNoWhere(OleDbConnection connection) { var reader = ADOSQLHelper.ExecuteReader(connection, string.Format("select {0},{1} from {2}", CheckFieldName, Key, TableName)); if (reader != null) { var str = string.Empty; var error = string.Empty; Messages = new List <string>(); while (reader.Read()) { str = reader[0].ToString(); if (Values.Contains(str)) { continue; } else { error = string.Format("{0}对应的‘{1}’值不正确", reader[1].ToString(), str); Messages.Add(error); _questions.Add(new Question() { Code = "3201", Name = Name, Project = CheckProject.值符合性, TableName = TableName, BSM = reader[1].ToString(), Description = error }); } } QuestionManager.AddRange(_questions); return(true); } return(false); }
public void Check() { var tools = new List <IExcel> { new ExcelOne { Connection = ParameterManager.Connection, List = ExcelManager.XZQ, District = ParameterManager.District, Code = ParameterManager.Code, Folder = ParameterManager.CollectFolder, CheckCode = ID }, new ExcelTwo { Connection = ParameterManager.Connection, List = ExcelManager.XZQ, District = ParameterManager.District, Code = ParameterManager.Code, Folder = ParameterManager.CollectFolder, CheckCode = ID }, new ExcelThree { Connection = ParameterManager.Connection, List = ExcelManager.XZQ, District = ParameterManager.District, Code = ParameterManager.Code, Folder = ParameterManager.CollectFolder, CheckCode = ID }, new ExcelFour { Connection = ParameterManager.Connection, List = ExcelManager.XZQ, District = ParameterManager.District, Code = ParameterManager.Code, Folder = ParameterManager.CollectFolder, CheckCode = ID }, new ExcelFive { Connection = ParameterManager.Connection, List = ExcelManager.XZQ, District = ParameterManager.District, Code = ParameterManager.Code, Folder = ParameterManager.CollectFolder, CheckCode = ID } }; foreach (var tool in tools) { tool.Check(); System.Console.WriteLine(tool.ExcelName); QuestionManager.AddRange(tool.ParalleQuestions.ToList()); } //Parallel.ForEach(tools, item => //{ // item.Check(); // QuestionManager.AddRange(item.ParalleQuestions.ToList()); //}); }
private bool CheckNoWhereFields(OleDbConnection connection) { var reader = ADOSQLHelper.ExecuteReader(connection, string.IsNullOrEmpty(WhereCaluse) ? ( LocationFields == null ? string.Format("Select {0},{1} from {2}", string.Join(",", CheckFields), Key, TableName) : string.Format("Select {0},{1},{2} from {3}", string.Join(",", CheckFields), Key, string.Join(",", LocationFields), TableName) ) : ( LocationFields == null ? string.Format("Select {0},{1} from {2} where {3}", string.Join(",", CheckFields), Key, TableName, WhereCaluse) : string.Format("Select {0},{1},{2} from {3} where {4}", string.Join(",", CheckFields), Key, string.Join(",", LocationFields), TableName, WhereCaluse) ) ); if (reader != null) { var str = string.Empty; var info = string.Empty; while (reader.Read()) { str = string.Empty; for (var i = 0; i < CheckFields.Count(); i++) { var a = reader[i].ToString().Trim(); if (Is_Nullable ^ string.IsNullOrEmpty(a))//异或 Is_NULLable ture 为空 字段不为空或者 Is_NULLable false 必填 字段为空 矛盾 { str += CheckFields[i] + ","; } } if (!string.IsNullOrEmpty(str)) { info = string.Format("{0}对应的字段:{1}与要求的{2}不符", reader[CheckFields.Count()], str, Is_Nullable ? "为空" : "必填"); _questions.Add( new Question { Code = "5101", Name = Name, Project = CheckProject.图层内属性一致性, TableName = TableName, BSM = reader[CheckFields.Count()].ToString(), Description = info, RelationClassName = RelationName, ShowType = ShowType.Space, WhereClause = LocationFields == null ? string.Format("[{0}] ='{1}'", Key, reader[CheckFields.Count()].ToString()) : ADOSQLHelper.GetWhereClause(LocationFields, ADOSQLHelper.GetValues(reader, 1 + CheckFields.Length, LocationFields.Length)) }); Messages.Add(info); } } QuestionManager.AddRange(_questions); return(true); } return(false); }
public static void Program(string mdbfilePath, string[] ids) { var _connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}", mdbfilePath); using (var connection = new OleDbConnection(_connectionString)) { connection.Open(); Console.WriteLine("开始检查"); #region 检查数据库是否存在要求的表 var tableStructure = new TableStructure(); Console.WriteLine(string.Format("开始检查{0}", tableStructure.Name)); tableStructure.Check(connection); if (tableStructure.Erros.Count == 0) { Console.WriteLine(string.Format("符合{0}", tableStructure.Name.Replace("检查", ""))); } else { QuestionManager.AddRange(tableStructure.Erros.Select(e => new Models.Question { Code = "2101", Name = "矢量图层完整", Project = Models.CheckProject.图层完整性, Description = e }).ToList()); Console.WriteLine("存在如下错误:"); foreach (var error in tableStructure.Erros) { Console.WriteLine(error); } } #endregion if (tableStructure.ExistTables.Contains(DCDYTB)) { DCDYTBManager.Init(connection); } var rule = new RuleManager() { IDS = ids }; rule.Program(connection); #region 检查图斑面积 Console.WriteLine("正在核对图斑面积一致性;"); try { DCDYTBManager.Program(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } Console.WriteLine("完成核对图斑面积一致性;"); #endregion connection.Close(); } }
public void Check() { var tool = new TableStructure(); tool.Check(ParameterManager.Connection); QuestionManager.AddRange(tool.Erros.Select(e => new Question { Code = "2101", Name = RuleName, Project = CheckProject.图层完整性, Description = e }).ToList()); }
private bool CheckNoWhereField(OleDbConnection connection) { var reader = ADOSQLHelper.ExecuteReader(connection, LocationFields == null? string.Format("Select {0} from {1}", CheckFieldName, TableName) :string.Format("Select {0},{1} from {2}", CheckFieldName, string.Join(",", LocationFields), TableName) ); if (reader != null) { var temp = new List <string>(); var str = string.Empty; var info = string.Empty; while (reader.Read()) { str = string.Format("{0}:{1}", CheckFieldName, reader[0].ToString()); if (temp.Contains(str)) { info = string.Format("{0} 存在重复", str); Messages.Add(info); _questions.Add( new Question { Code = Code, Name = Name, Project = CheckProject.属性正确性, TableName = TableName, BSM = CheckFieldName, Description = info, RelationClassName = RelationName, ShowType = ShowType.Space, WhereClause = LocationFields == null ? string.Empty : ADOSQLHelper.GetWhereClause(LocationFields, ADOSQLHelper.GetValues(reader, 1, LocationFields.Length)) }); } else { temp.Add(str); } } QuestionManager.AddRange(_questions); return(true); } return(false); }
private bool CheckNoWhere(OleDbConnection connection) { var reader = ADOSQLHelper.ExecuteReader(connection, LocationFields == null ? string.Format("select {0},{1} from {2}", CheckFieldName, Key, TableName) : string.Format("select {0},{1},{2} from {3}", CheckFieldName, Key, string.Join(",", LocationFields), TableName) ); if (reader != null) { var str = string.Empty; var error = string.Empty; Messages = new List <string>(); while (reader.Read()) { str = reader[0].ToString().Trim(); if (Values.Contains(str)) { continue; } else { error = string.Format("{0}对应的‘{1}’值不正确", reader[1].ToString(), str); Messages.Add(error); _questions.Add( new Question() { Code = "3201", Name = Name, Project = CheckProject.值符合性, TableName = TableName, BSM = reader[1].ToString(), Description = error, ShowType = ShowType.Space, RelationClassName = RelationName, WhereClause = LocationFields == null ? string.Format("[{0}] ='{1}'", Key, reader[1].ToString()) : ADOSQLHelper.GetWhereClause(LocationFields, ADOSQLHelper.GetValues(reader, 2, LocationFields.Length)) }); } } QuestionManager.AddRange(_questions); return(true); } return(false); }
public void Check() { #region 检查目录文件夹 var resultComplete = new ResultComplete(ParameterManager.Folder) { Children = ParameterManager.ChildrenFolder }; resultComplete.Check(); QuestionManager.AddRange( resultComplete.Messages.Select(e => new Question { Code = ID, Name = RuleName, Project = CheckProject.目录及文件规范性, Description = e, ShowType = ShowType.Folder, Folder = ParameterManager.Folder }).ToList()); #endregion #region 各个文件夹下面的文件是否丢失 是否缺失 var tool = new FileStandard { Files = ParameterManager.ChildrenFiles }; tool.Check(); QuestionManager.AddRange( tool.List.Select(e => new Question { Code = "1102", Name = RuleName, Project = CheckProject.目录及文件规范性, Description = string.Format(@"文件:{0}不存在,请去除多余的空格,并注意全角\半角符号符合规范", e), ShowType = ShowType.Folder, Folder = System.IO.Path.GetDirectoryName(e) }).ToList()); //Parallel.ForEach(tools, tool => //{ // tool.Check(); // QuestionManager.AddRange(tool.List.Select(e => new Question { Code = "1102", Name = RuleName, Project = CheckProject.目录及文件规范性, Description = e }).ToList()); //}); #endregion }
public static void XZQ(string className1, string className2) { var featurePath1 = string.Format("{0}/{1}", ParameterManager.MDBFilePath, className1); //XZQ_XZC var featurePath2 = string.Format("{0}/{1}", ParameterManager.MDBFilePath, className2); //DCDYTB var outfeatureClassName = string.Format("{0}_loowootech", className1); var outfeaturePath = string.Format("{0}\\{1}", ParameterManager.MDBFilePath, outfeatureClassName); if (Cross(string.Format("{0};{1}", featurePath1, featurePath2), outfeaturePath)) { var outfeatureClass = ParameterManager.Workspace.GetFeatureClass(outfeatureClassName); if (outfeatureClass == null) { QuestionManager.Add(new Question { Code = "", Name = "", Project = CheckProject.图层内属性一致性, Description = "" }); } else { var list = RunXZQ(outfeatureClass, className1); System.Runtime.InteropServices.Marshal.ReleaseComObject(outfeatureClass); DeleteFeatureClass2(outfeatureClassName); //DeleteFeatureClass(outfeaturePath); QuestionManager.AddRange(list); //QuestionManager.AddRange( // list.Select(e => // new Question // { // Code = "5101", // Name = "行政区(空间)", // TableName = className1, // Description = e // }).ToList()); } } else { QuestionManager.Add(new Question { Code = "", Name = "", Project = CheckProject.图层内属性一致性, Description = "" }); } }
public bool Check(OleDbConnection connection) { var sb = new StringBuilder(CheckFields[0]); for (var i = 1; i < CheckFields.Count(); i++) { sb.AppendFormat(",{0}", CheckFields[i]); } var reader = ADOSQLHelper.ExecuteReader(connection, string.Format("Select {0},{1} from {2} where {3}", sb.ToString(), Key, TableName, WhereCaluse)); if (reader != null) { var str = string.Empty; var info = string.Empty; while (reader.Read()) { str = string.Empty; for (var i = 0; i < CheckFields.Count(); i++) { if (Is_Nullable ^ string.IsNullOrEmpty(reader[i].ToString()))//异或 Is_NULLable ture 为空 字段不为空或者 Is_NULLable false 必填 字段为空 矛盾 { str += CheckFields[i] + ","; } } if (!string.IsNullOrEmpty(str)) { info = string.Format("{0}对应的字段:{1}与要求的{2}不符", reader[CheckFields.Count()], str, Is_Nullable ? "为空" : "必填"); _questions.Add(new Question { Code = "5101", Name = Name, Project = CheckProject.图层内属性一致性, TableName = TableName, BSM = reader[CheckFields.Count()].ToString(), Description = info }); Messages.Add(info); } } QuestionManager.AddRange(_questions); return(true); } return(false); }
private bool Init() { OutputMessage("00", "正在初始化检查机制", ProgressResultTypeEnum.Other); if (!ReadXZQ())//分析读取行政区 { OutputMessage("00", "未分析读取到行政区名称和行政区代码", ProgressResultTypeEnum.Fail); return(false); } if (!SearchFile())//查找单位代码表和数据库文件 { OutputMessage("00", "未找到单位代码表或者数据库文件", ProgressResultTypeEnum.Fail); return(false); } OutputMessage("00", "参数管理器初始化完毕", ProgressResultTypeEnum.Other); ExcelManager.Init(ParameterManager.CodeFilePath);//初始化单位代码信息列表 var tree = new CodeForm() { Dict = ExcelManager.Dict }; if (tree.ShowDialog() == DialogResult.Cancel) { return(false); } if (ExcelManager.Dict.Count == 0) { QuestionManager.Add(new Question { Code = "00", TableName = "单位代码表", Description = "未获取单位代码表中的相关数据信息" }); OutputMessage("00", "未获取单位代码表中的相关数据信息", ProgressResultTypeEnum.Fail); } else { OutputMessage("00", string.Format("成功读取行政区(乡镇)单位代码表信息:{0}条", ExcelManager.Dict.Count), ProgressResultTypeEnum.Other); } if (ExcelManager.XZQ.Count == 0) { QuestionManager.Add(new Question { Code = "00", TableName = "单位代码表", Description = "读取到的单位代码表中未填写行政区(乡镇)代码信息" }); OutputMessage("00", "读取到的单位代码表中未填写行政区(乡镇)代码信息", ProgressResultTypeEnum.Fail); } if (ExcelManager.XZC.Count == 0) { QuestionManager.Add(new Question { Code = "00", TableName = "单位代码表", Description = "读取到的单位代码表中未填写行政区(村级)代码信息" }); OutputMessage("00", "读取到的单位代码表中未填写行政区(村级)代码信息", ProgressResultTypeEnum.Fail); } var list = ArcGISManager.GainDCDYTB(ParameterManager.Workspace, DCDYTBManager.ClassName) ?? new List <DCDYTB>(); if (list.Count == 0) { OutputMessage("00", "未获取调查单元类型相关基础信息", ProgressResultTypeEnum.Fail); } QuestionManager.AddRange(list.Where(e => e.Right == false).Select(e => new Question { Code = "3401", Name = "面积一致性", TableName = DCDYTBManager.ClassName, Description = string.Format("行政区名称:【{0}】行政区代码:【{1}】图斑编号:【{2}】的MJ:【{3}】图斑实际面积:【{4}】容差超过1平方米", e.XZCMC, e.XZCDM, e.TBBH, e.MJ, e.Area), BSM = e.BSM, ShowType = ShowType.Space, WhereClause = string.Format("[BSM] = {0}", e.BSM) }).ToList()); DCDYTBManager.List = list; OutputMessage("00", "成功读取调查单元图斑信息", ProgressResultTypeEnum.Other); InitRules(); //ParameterManager.Folder = Folder; return(true); }
public void Program() { QuestionManager.Clear();//质检问题初始化 if (!System.IO.Directory.Exists(Folder)) { LogManager.Log(string.Format("质检路径不存在:{0},请核对!", Folder)); QuestionManager.Add(new Question() { Code = "1102", Name = "质检路径不存在", Project = CheckProject.目录及文件规范性, Description = string.Format("质检路径不存在:{0},请核对!", Folder) }); return; } var folderTool = new FolderTool { Folder = Folder }; //对质检路径进行命名规范检查 folderTool.Check(); //if (!folderTool.Check()) //{ // return; //} Code = folderTool.Code; District = folderTool.CityName; var resultComplete = new ResultComplete(Folder) { Children = XmlManager.Get("/Folders/Folder", "Name", XmlEnum.DataTree) }; resultComplete.Check();//对质检路径下的文件夹、文件是否存在,是否能够打开进行检查 QuestionManager.AddRange(resultComplete.Messages.Select(e => new Question { Code = "1102", Name = "成果数据丢露", Project = CheckProject.目录及文件规范性, Description = e }).ToList()); if (OnProgramProcess != null) { var args = new ProgressEventArgs() { Code = "11", Cancel = false, Message = string.Empty }; OnProgramProcess(this, args); if (args.Cancel) { return; } } _folderTools.AddRange(resultComplete.ExistPath.Select(e => new FileFolder() { Folder = e, FileNames = XmlManager.GetChildren(string.Format("/Folders/Folder[@Name='{0}']", new DirectoryInfo(e).Name), "Name", XmlEnum.DataTree), CityName = folderTool.CityName, Code = folderTool.Code })); try { Parallel.ForEach(_folderTools, tool => { tool.Check(); }); } catch (AggregateException ae) { foreach (var exp in ae.InnerExceptions) { LogManager.Log(exp.ToString()); LogManager.Record(exp.ToString()); } } var path = System.IO.Path.Combine(Folder, DataBase); //获取空间数据库文件夹下的单位代码表文件,并获取单位代码信息 var codefileTool = new Tool.FileTool { Folder = path, Filter = "*.xls", RegexString = @"^[\u4e00-\u9fa5]+\(\d{6}\)单位代码表.xls$" }; var currentCodeFile = codefileTool.GetFile(); if (string.IsNullOrEmpty(currentCodeFile)) { LogManager.Log("未识别到单位代码表文件,请核对空间数据库文件下的文件"); } else { ExcelManager.Init(currentCodeFile); } //获取空间数据库文件夹下的空间数据库文件,并对数据库进行检查 var mdbfileTool = new Tool.FileTool() { Folder = path, Filter = "*.mdb", RegexString = @"^[\u4e00-\u9fa5]+\(\d{6}\)农村存量建设用地调查成功空间数据库.mdb$" }; var currentMdbFile = mdbfileTool.GetFile(); if (string.IsNullOrEmpty(currentMdbFile)) { LogManager.Log("未识别到数据库文件,请核对农村存量建设用地调查成功空间数据库.mdb文件"); QuestionManager.Add(new Question { Code = "2101", Name = "适量数据文件", Project = CheckProject.目录及文件规范性, Description = "未识别到数据库文件,请核对农村存量建设用地调查成功空间数据库.mdb文件" }); } else { TableHeart.Program(currentMdbFile, IDS); var gisheart = new ArcGISHeart() { MDBFilePath = currentMdbFile, FeatureClassNames = XmlManager.Get("/Tables/Table[@IsSpace='true']", "Name", XmlEnum.Field) }; gisheart.Program(); } Console.WriteLine("开始对统计表格进行质检......"); var collectfolder = System.IO.Path.Combine(Folder, Collect); if (!System.IO.Directory.Exists(collectfolder)) { QuestionManager.Add(new Question { Code = "1101", Name = "统计表格文件夹", Project = CheckProject.目录及文件规范性, Description = string.Format("目录:{0}不存在", collectfolder) }); } else { //汇总表质检 var excel = new ExcelHeart() { Folder = collectfolder, MDBFilePath = currentMdbFile, District = folderTool.CityName, Code = folderTool.Code }; excel.Program(); QuestionManager.AddRange(excel.Questions); } }
public bool Check(OleDbConnection connection) { var reader = ADOSQLHelper.ExecuteReader(connection, string.Format("Select {0},{1},{2} from {3}", Key, string.Join(",", FieldArray1), string.Join(",", FieldArray2), TableName)); if (reader != null) { var val1 = .0; var val2 = .0; var a = .0; var info = string.Empty; while (reader.Read()) { var str = reader[0].ToString().Trim(); for (var i = 0; i < FieldArray1.Length; i++) { if (double.TryParse(reader[i + 1].ToString(), out a)) { val1 += a; } } for (var i = 0; i < FieldArray2.Length; i++) { if (double.TryParse(reader[i + 1 + FieldArray1.Length].ToString(), out a)) { val2 += a; } } var flag = false; switch (Compare) { case Compare.Above: flag = val1 > val2; break; case Compare.MoreEqual: flag = val1 >= val2; break; case Compare.Equal: flag = Math.Abs(val1 - val2) < 0.001; break; case Compare.Less: flag = val1 < val2; break; case Compare.SmarllerEqual: flag = val1 <= val2; break; } if (flag) { info = string.Format("{0}对应的不符合{1}", str, Name); Messages.Add(info); _questions.Add(new Models.Question { Code = "3201", Name = Name, TableName = TableName, BSM = str, Description = info }); } } QuestionManager.AddRange(_questions); return(true); } return(false); }
public bool CheckInt() { var info = string.Empty; foreach (var entry in Dict) { var list = entry.Value; int val1 = 0, val2 = 0, temp = 0; foreach (var item in FieldArray1) { var a = list.FirstOrDefault(e => e.Title == item); if (a != null) { if (int.TryParse(a.Value, out temp)) { val1 += temp; } } } foreach (var item in FieldArray2) { var a = list.FirstOrDefault(e => e.Title == item); if (a != null) { if (int.TryParse(a.Value, out temp)) { val2 += temp; } } } bool flag = true; switch (Compare) { case Compare.Above: flag = val1 > val2; break; case Compare.Equal: flag = val1 == val2; break; case Compare.Less: flag = val1 < val2; break; case Compare.MoreEqual: flag = val1 >= val2; break; case Compare.SmarllerEqual: flag = val1 <= val2; break; } if (!flag) { info = string.Format("{0}不符合{1}", entry.Key, Name); _questions.Add(new Question { Code = "3201", Name = Name, TableName = ExcelName, BSM = entry.Key, Description = info }); } } QuestionManager.AddRange(_questions); return(true); }
public static void Program(string mdbfilePath, string[] ids) { var _connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}", mdbfilePath); var info = string.Empty; using (var connection = new OleDbConnection(_connectionString)) { connection.Open(); LogManager.Log("开始检查"); #region 检查数据库是否存在要求的表 var tableStructure = new TableStructure(); LogManager.Log(string.Format("开始检查{0}", tableStructure.Name)); tableStructure.Check(connection); if (tableStructure.Erros.Count == 0) { info = string.Format("符合{0}", tableStructure.Name.Replace("检查", "")); LogManager.Log(info); } else { QuestionManager.AddRange(tableStructure.Erros.Select(e => new Models.Question { Code = "2101", Name = "矢量图层完整", Project = Models.CheckProject.图层完整性, Description = e }).ToList()); } #endregion if (tableStructure.ExistTables.Contains(DCDYTB)) { //DCDYTBManager.Init(connection); } else { LogManager.Record("不存在或者未找到表DCDYTB,未获取图斑相关信息"); } var rule = new RuleManager() { IDS = ids }; rule.Program(connection); #region 检查图斑面积 LogManager.Log("核对图斑面积"); var tbTools = new List <GainAreaTool>() { new GainAreaTool { TableName = "CLZJD", AreaFields = new string[] { "JZZDMJ", "FSYDMJ" }, Denominator = 10000 }, new GainAreaTool { TableName = "JYXJSYD", AreaFields = new string[] { "JSYDMJ" }, Denominator = 10000 }, new GainAreaTool { TableName = "GGGL_GGFWSSYD", AreaFields = new string[] { "JSYDMJ" }, Denominator = 10000 }, new GainAreaTool { TableName = "QTCLJSYD", AreaFields = new string[] { "JSYDMJ" }, Denominator = 10000 } }; try { Parallel.ForEach(tbTools, tool => { tool.Gain(connection); }); DCDYTBManager.Program(); } catch (AggregateException ae) { foreach (var exp in ae.InnerExceptions) { LogManager.Log(exp.ToString()); } }catch (Exception ex) { LogManager.Log(ex.ToString()); LogManager.Record(ex.ToString()); } Console.WriteLine("完成核对图斑面积一致性;"); #endregion connection.Close(); } }
public bool Check(OleDbConnection connection) { if (connection != null) { if (connection.State == System.Data.ConnectionState.Broken) { connection.Close(); connection.Open(); } if (connection.State == System.Data.ConnectionState.Closed) { connection.Open(); } var dict = new Dictionary <string, Field>(); var table = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, TableName, null }); var m = table.Columns.IndexOf("COLUMN_NAME"); var n = table.Columns.IndexOf("NUMERIC_PRECISION"); var l = table.Columns.IndexOf("CHARACTER_MAXIMUM_LENGTH"); var a = table.Columns.IndexOf("DATA_TYPE"); var length = 0; for (var i = 0; i < table.Rows.Count; i++) { var row = table.Rows[i]; var name = row.ItemArray.GetValue(m).ToString().Trim(); if (!dict.ContainsKey(name)) { dict.Add(name, new Field() { Name = name, Title = row.ItemArray.GetValue(n).ToString().Trim(), Length = int.TryParse(row.ItemArray.GetValue(l).ToString().Trim(), out length) ? length : 0, Type = (FieldType)Enum.Parse(typeof(FieldType), row.ItemArray.GetValue(a).ToString().Trim()) }); } } var requireField = XmlClass.GetField(TableName); var str = string.Empty; foreach (var field in requireField) { if (dict.ContainsKey(field.Name)) { if (field != dict[field.Name]) { str = string.Format("字段{0}与要求的类型或者长度不符", field.Name); Console.WriteLine(str); Messages.Add(str); } } else { str = string.Format("缺失字段{0};", field.Name); Console.WriteLine(str); Messages.Add(str); } } QuestionManager.AddRange(Messages.Select(e => new Question { Code = "3101", Name = Name, Project = CheckProject.结构符合性, TableName = TableName, Description = e }).ToList()); } return(false); }
private bool CheckWhereFields(OleDbConnection connection) { var reader = ADOSQLHelper.ExecuteReader(connection, string.IsNullOrEmpty(WhereCaluse) ? ( LocationFields == null ? string.Format("Select {0},{1},{2} from {3}", Key, string.Join(",", CheckFields), string.Join(",", WhereFields), TableName) : string.Format("Select {0},{1},{2},{3} from {4}", Key, string.Join(",", CheckFields), string.Join(",", WhereFields), string.Join(",", LocationFields), TableName) ) : ( LocationFields == null ? string.Format("Select {0},{1},{2} from {3} where {4}", Key, string.Join(",", CheckFields), string.Join(",", WhereFields), TableName, WhereCaluse) : string.Format("Select {0},{1},{2},{3} from {4} where {5}", Key, string.Join(",", CheckFields), string.Join(",", WhereFields), string.Join(",", LocationFields), TableName, WhereCaluse) ) ); if (reader != null) { var array = new string[WhereFields.Length]; var str = string.Empty; var info = string.Empty; while (reader.Read()) { for (var i = 0; i < WhereFields.Length; i++) { array[i] = reader[i + 1 + CheckFields.Length].ToString(); } var key = string.Join(Split, array); if (WhereList.Contains(key)) { str = string.Empty; for (var i = 0; i < CheckFields.Length; i++) { var a = reader[i + 1].ToString().Trim(); if (Is_Nullable ^ string.IsNullOrEmpty(a)) { str += CheckFields[i] + ","; } } if (!string.IsNullOrEmpty(str)) { info = string.Format("{0}对应的字段:{1}与要求的{2}不符,图斑信息:行政村代码:【{3}】图斑编号:【{4}】", reader[0].ToString().Trim(), str, Is_Nullable ? "为空" : "必填", array[0], array[1]); _questions.Add( new Question { Code = "5101", Name = Name, Project = CheckProject.图层内属性一致性, TableName = TableName, BSM = reader[0].ToString(), Description = info, RelationClassName = RelationName, ShowType = ShowType.Space, WhereClause = LocationFields == null ? string.Format("[{0}] ='{1}'", Key, reader[0].ToString()) : ADOSQLHelper.GetWhereClause(LocationFields, ADOSQLHelper.GetValues(reader, 1 + CheckFields.Length + WhereFields.Length, LocationFields.Length)) }); Messages.Add(info); } } } QuestionManager.AddRange(_questions); return(true); } return(false); }