Exemple #1
0
        public void Gain(OleDbConnection connection)
        {
            var reader = ADOSQLHelper.ExecuteReader(connection, string.Format("select XZCDM,XZCMC,TBBH,{0} from {1}", string.Join(",", AreaFields), TableName));

            if (reader != null)
            {
                List = new List <TB>();
                while (reader.Read())
                {
                    var val = new TB
                    {
                        XZCDM = reader[0].ToString(),
                        XZCMC = reader[1].ToString(),
                        TBBH  = reader[2].ToString()
                    };
                    var sum = .0;
                    for (var i = 3; i < AreaFields.Length + 3; i++)
                    {
                        var a = .0;
                        if (double.TryParse(reader[i].ToString(), out a))
                        {
                            sum += a;
                        }
                    }
                    val.MJ = sum;
                    List.Add(val);
                }
                if (List.Count > 0)
                {
                    DCDYTBManager.AddTB(TableName, List);
                }
            }
        }
Exemple #2
0
        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 Program()
        {
            QuestionManager.Clear();
            LogManager.Init();
            ParameterManager.Init(Folder);
            DCDYTBManager.Init();
            ExcelParameterManager.Clear();
            if (!Init())
            {
                OutputMessage("00", "初始化失败,程序终止", ProgressResultTypeEnum.Fail);
                return;
            }
            OutputMessage("00", "成功初始化", ProgressResultTypeEnum.Pass);
            foreach (var id in _ruleIds)
            {
                var rule = _rules.FirstOrDefault(e => e.ID == id.ToString());
                if (rule != null)
                {
                    var sb     = new StringBuilder(rule.RuleName);
                    var result = ProgressResultTypeEnum.Pass;
                    try
                    {
                        rule.Check();
                    }
                    catch (AggregateException ae)
                    {
                        foreach (var exp in ae.InnerExceptions)
                        {
                            sb.Append(exp.Message + "\r\n");
                        }
                        result = ProgressResultTypeEnum.Fail;
                    }
                    catch (Exception ex)
                    {
                        result = ProgressResultTypeEnum.Fail;
                        sb.Append(ex.ToString());
                    }

                    if (result != ProgressResultTypeEnum.Pass)
                    {
                        QuestionManager.Add(new Question {
                            Code = rule.ID, Name = rule.RuleName, Description = sb.ToString()
                        });
                    }
                    if (OutputMessage(rule.ID, sb.ToString(), result) == true)
                    {
                        break;
                    }
                }
            }
            _reportPath = QuestionManager.Save(ReportPath);
            //PDFHelper.Save(_reportPath, ReportPDFPath);
            //PdfHelper2.SavePdf(_reportPath, ReportPDFPath);
            PdfHelper2.Convert(_reportPath, ReportPDFPath);
        }
Exemple #4
0
        public void Gain(OleDbConnection connection)
        {
            var reader = ADOSQLHelper.ExecuteReader(connection, string.Format("select XZCDM,XZCMC,TBBH,{0} from {1}", string.Join(",", AreaFields), TableName));

            if (reader != null)
            {
                List = new List <TB>();
                while (reader.Read())
                {
                    var val = new TB
                    {
                        XZCDM = reader[0].ToString(),
                        XZCMC = reader[1].ToString(),
                        TBBH  = reader[2].ToString()
                    };
                    var sum = .0;
                    for (var i = 3; i < AreaFields.Length + 3; i++)
                    {
                        var a = .0;
                        if (double.TryParse(reader[i].ToString(), out a))
                        {
                            sum += a / Denominator;
                        }
                    }
                    val.MJ = sum;
                    List.Add(val);
                }
                if (List.Count == 0)
                {
                    //var info = string.Format("获取表【{0}】中的图斑面积时,图斑面积数据量为空", TableName);
                    //LogManager.Log(info);
                    //QuestionManager.Add(new Question { Code = "3201", Name = "检验图斑面积", TableName = TableName, Description = info });
                }
                else
                {
                    DCDYTBManager.AddTB(List);
                }
            }
        }
        public void Check()
        {
            var tools = new List <GainAreaTool>()
            {
                new GainAreaTool {
                    TableName = "CLZJD", AreaFields = new string[] { "JZZDMJ", "FSYDMJ" }, Denominator = 1
                },
                new GainAreaTool {
                    TableName = "JYXJSYD", AreaFields = new string[] { "JSYDMJ" }, Denominator = 1
                },
                new GainAreaTool {
                    TableName = "GGGL_GGFWSSYD", AreaFields = new string[] { "JSYDMJ" }, Denominator = 1
                },
                new GainAreaTool {
                    TableName = "QTCLJSYD", AreaFields = new string[] { "JSYDMJ" }, Denominator = 1
                }
            };

            try
            {
                Parallel.ForEach(tools, tool =>
                {
                    tool.Gain(ParameterManager.Connection);
                });
                DCDYTBManager.Program();//校验图斑的面积-(宅基地、经营性建设用地、公共管理和公共服务设施和其他存量建设用地)面积和<1平方米
            }catch (AggregateException ae)
            {
                foreach (var exp in ae.InnerExceptions)
                {
                    LogManager.LogRecord(exp.ToString());
                }
            }catch (Exception ex)
            {
                LogManager.LogRecord(ex.ToString());
            }
        }
 public override void Check(OleDbConnection connection)
 {
     base.Check(connection);
     DCDYTBManager.Init(connection);//获取图斑编号、调查单元类型
 }
Exemple #7
0
        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();
            }
        }