You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
199 lines
11 KiB
199 lines
11 KiB
using KGIS.Framework.Utils; |
|
using Kingo.Plugin.AttributeMaintain.ModelEntity; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.ComponentModel; |
|
using System.Linq; |
|
using System.Text; |
|
using System.Xml; |
|
|
|
namespace Kingo.Plugin.AttributeMaintain.Config |
|
{ |
|
public class DataCheckTableMappingConfig |
|
{ |
|
/// <summary> |
|
/// 变更---根据表名获取检查表映射,lstTableName若参数为空则查询出所有的表映射 |
|
/// </summary> |
|
/// <param name="lstTableName"></param> |
|
/// <returns></returns> |
|
public static List<RuleTableEntity> BGGetListRuleTableEntity(List<string> lstTableName = null) |
|
{ |
|
List<RuleTableEntity> lstRuleTableEntity = new List<RuleTableEntity>(); |
|
try |
|
{ |
|
XmlDocument doc = new XmlDocument(); |
|
string strPath = SysAppPath.BG_GetMappingConfigPath(); |
|
doc.Load(strPath); |
|
if (doc != null) |
|
{ |
|
#region 获取规则检查TableMapping |
|
XmlNodeList nodeTableMappingList = doc.SelectNodes("CheckTableMapping"); |
|
if (nodeTableMappingList != null && nodeTableMappingList.Count > 0) |
|
{ |
|
foreach (XmlNode checkTableNode in nodeTableMappingList) |
|
{ |
|
foreach (XmlNode tableNode in checkTableNode.ChildNodes) |
|
{ |
|
if (tableNode.Attributes["TableName"] == null || string.IsNullOrWhiteSpace(tableNode.Attributes["TableName"].Value)) |
|
{ |
|
continue; |
|
} |
|
//如果参数不为空,则只返回参数里的表结构 |
|
if (lstTableName != null && lstTableName.Count > 0 && !lstTableName.Contains(tableNode.Attributes["TableName"].Value)) |
|
{ |
|
continue; |
|
} |
|
RuleTableEntity pRuleTableEntity = new RuleTableEntity(); |
|
pRuleTableEntity.Columns = new List<RuleColumnEntity>(); |
|
pRuleTableEntity.TableName = tableNode.Attributes["TableName"].Value; |
|
if (tableNode.Attributes["Name"] != null) |
|
{ |
|
pRuleTableEntity.TableAliasName = tableNode.Attributes["Name"].Value; |
|
} |
|
if (tableNode.Attributes["Type"] != null) |
|
{ |
|
pRuleTableEntity.Type = tableNode.Attributes["Type"].Value; |
|
} |
|
if (tableNode.Attributes["YSDM"] != null) |
|
{ |
|
pRuleTableEntity.YSDM = tableNode.Attributes["YSDM"].Value; |
|
} |
|
if (tableNode.Attributes["CDM"] != null) |
|
{ |
|
pRuleTableEntity.CDM = tableNode.Attributes["CDM"].Value; |
|
} |
|
if (tableNode.Attributes["IsNecessary"] != null) |
|
{ |
|
bool b = false; |
|
if (bool.TryParse(tableNode.Attributes["IsNecessary"].Value, out b)) |
|
{ |
|
} |
|
pRuleTableEntity.IsNecessary = b; |
|
} |
|
#region 表结构的列 |
|
foreach (XmlNode columnNode in tableNode.ChildNodes) |
|
{ |
|
RuleColumnEntity pRuleColumnEntity = new RuleColumnEntity(); |
|
if (columnNode.Attributes["Name"] != null) |
|
{ |
|
pRuleColumnEntity.ColumnName = columnNode.Attributes["Name"].Value.Trim(); |
|
} |
|
if (columnNode.Attributes["AliasName"] != null) |
|
{ |
|
pRuleColumnEntity.AliasName = columnNode.Attributes["AliasName"].Value.Trim(); |
|
} |
|
if (columnNode.Attributes["Range"] != null) |
|
{ |
|
pRuleColumnEntity.Range = columnNode.Attributes["Range"].Value; |
|
} |
|
if (columnNode.Attributes["ToolTip"] != null) |
|
{ |
|
pRuleColumnEntity.ToolTip = columnNode.Attributes["ToolTip"].Value; |
|
} |
|
if (columnNode.Attributes["Pic"] != null) |
|
{ |
|
pRuleColumnEntity.Pic = columnNode.Attributes["Pic"].Value; |
|
} |
|
pRuleColumnEntity.AllowDBNull = false; |
|
//字段是否可为空:如果未配置则默认为false:标识当前字段为必填项,不可为空 |
|
if (columnNode.Attributes["AllowDBNull"] != null) |
|
{ |
|
bool b = false; |
|
if (bool.TryParse(columnNode.Attributes["AllowDBNull"].Value.Trim(), out b)) |
|
{ |
|
} |
|
pRuleColumnEntity.AllowDBNull = b; |
|
} |
|
pRuleColumnEntity.IsUnique = false; |
|
//字段值是否必须唯一:如果未配置则默认为false:表示当前字段不是必须唯一,可重复 |
|
if (columnNode.Attributes["IsUnique"] != null) |
|
{ |
|
bool b = false; |
|
if (bool.TryParse(columnNode.Attributes["IsUnique"].Value.Trim(), out b)) |
|
{ |
|
} |
|
pRuleColumnEntity.IsUnique = b; |
|
} |
|
pRuleColumnEntity.DataType = "string"; |
|
if (columnNode.Attributes["DataType"] != null) |
|
{ |
|
pRuleColumnEntity.DataType = columnNode.Attributes["DataType"].Value.Trim(); |
|
} |
|
pRuleColumnEntity.IllegalityCheck = true; |
|
//如果不是字符串类型的字段则不检查 |
|
//字段值非法字符检查:如果未配置则默认为false:表示需要检查非法字符 |
|
if (pRuleColumnEntity.DataType != "string") |
|
{ |
|
pRuleColumnEntity.IllegalityCheck = false; |
|
} |
|
else |
|
{ |
|
pRuleColumnEntity.IllegalityCheck = true; |
|
} |
|
if (columnNode.Attributes["IllegalityNotCheck"] != null) |
|
{ |
|
bool b = false; |
|
if (bool.TryParse(columnNode.Attributes["IllegalityNotCheck"].Value.Trim(), out b)) |
|
{ |
|
} |
|
pRuleColumnEntity.IllegalityCheck = b; |
|
} |
|
if (columnNode.Attributes["MaxLength"] != null) |
|
{ |
|
int max = 0; |
|
if (int.TryParse(columnNode.Attributes["MaxLength"].Value.Trim(), out max)) |
|
{ |
|
|
|
} |
|
pRuleColumnEntity.MaxLength = max; |
|
} |
|
if (columnNode.Attributes["Precision"] != null) |
|
{ |
|
int precision = 0; |
|
if (int.TryParse(columnNode.Attributes["Precision"].Value.Trim(), out precision)) |
|
{ |
|
|
|
} |
|
pRuleColumnEntity.Precision = precision; |
|
} |
|
if (columnNode.Attributes["Dic"] != null) |
|
{ |
|
pRuleColumnEntity.DIC = columnNode.Attributes["Dic"].Value.Trim(); |
|
} |
|
pRuleColumnEntity.IsEllipsoidArea = false; |
|
if (columnNode.Attributes["IsEllipsoidArea"] != null) |
|
{ |
|
bool b = false; |
|
if (bool.TryParse(columnNode.Attributes["IsEllipsoidArea"].Value.Trim(), out b)) |
|
{ |
|
} |
|
pRuleColumnEntity.IsEllipsoidArea = b; |
|
} |
|
pRuleColumnEntity.ExtendField = false; |
|
if (columnNode.Attributes["ExtendField"] != null) |
|
{ |
|
bool b = false; |
|
if (bool.TryParse(columnNode.Attributes["ExtendField"].Value.Trim(), out b)) |
|
{ |
|
} |
|
pRuleColumnEntity.ExtendField = b; |
|
} |
|
pRuleTableEntity.Columns.Add(pRuleColumnEntity); |
|
} |
|
#endregion |
|
lstRuleTableEntity.Add(pRuleTableEntity); |
|
} |
|
} |
|
} |
|
#endregion |
|
} |
|
return lstRuleTableEntity; |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("加载CheckConfig的CheckTableMapping配置文件失败:" + ex.Message); |
|
throw new ArgumentNullException("加载CheckConfig的CheckTableMapping配置文件失败"); |
|
} |
|
} |
|
} |
|
}
|
|
|