年度变更建库软件5.0版本
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.

134 lines
5.4 KiB

using KGIS.Framework.DBOperator;
using KGIS.Framework.Maps;
using Kingo.PluginServiceInterface;
using System.Collections.Generic;
using System.Data;
using System.Windows.Controls;
using System.Linq;
using System;
using KGIS.Framework.Utils;
using System.Xml.Linq;
using KGIS.Framework.Utils.Helper;
namespace Kingo.Plugin.SystemSetting.View.ViewSystemSetting
{
/// <summary>
/// 系统设置-变更图斑检查规则设置 的交互逻辑
/// </summary>
public partial class ViewRuleSetting : UserControl
{
public List<Rule> FieldsTempData = null;
public ViewRuleSetting()
{
InitializeComponent();
BindData();
}
private void BindData()
{
try
{
FieldsTempData = new List<Rule>();
string SDM = KGIS.Framework.Utils.SysConfigsOprator.GetAppsetingValueByKey("ArearName");
string matchingRegionFilePath = System.IO.Path.Combine(SysAppPath.GetConfigPath(), "CheckRuleConfigs.xml");
XDocument pXDoc = XDocument.Load(matchingRegionFilePath);
var elements = pXDoc.Element("CheckRules").Elements();
foreach (XElement item in elements)
{
if (!string.IsNullOrEmpty(SDM) && item.Attribute("Name").Value.Equals(SDM))
{
var element = item.Elements();
foreach (XElement xElement in element)
{
Rule rule = new Rule();
rule.RuleName = xElement.Attribute("RuleName") == null ? "" : xElement.Attribute("RuleName").Value;
rule.RuleCode = xElement.Attribute("RuleCode") == null ? "" : xElement.Attribute("RuleCode").Value;
rule.RuleContent = xElement.Attribute("RuleContent") == null ? "" : xElement.Attribute("RuleContent").Value;
rule.ErrorType = xElement.Attribute("ErrorType") == null ? "" : xElement.Attribute("ErrorType").Value;
rule.ErrorTip = xElement.Attribute("ErrorTip") == null ? "" : xElement.Attribute("ErrorTip").Value;
rule.IsCheck = xElement.Attribute("IsCheck") == null ? false : xElement.Attribute("IsCheck").Value.ToBoolean();
FieldsTempData.Add(rule);
}
}
}
treeList.ItemsSource = FieldsTempData;
}
catch (Exception ex)
{
LogAPI.Debug("GetMatchingRegionMapping异常:" + ex.Message);
LogAPI.Debug("GetMatchingRegionMapping异常:" + ex.StackTrace);
}
}
private void View_CellValueChanged(object sender, DevExpress.Xpf.Grid.TreeList.TreeListCellValueChangedEventArgs e)
{
try
{
var checkingRule = e.Cell.Row as Rule;
if (checkingRule != null)
{
if (checkingRule.IsCheck)
{
checkingRule.IsCheck = false;
UpdateConfigs(checkingRule.RuleCode, "false");
}
else
{
checkingRule.IsCheck = true;
UpdateConfigs(checkingRule.RuleCode, "true");
}
treeList.RefreshData();
}
}
catch (Exception ex)
{
LogAPI.Debug("View_CellValueChanged异常:" + ex.Message);
LogAPI.Debug("View_CellValueChanged异常:" + ex.StackTrace);
MessageHelper.Show("单图斑质检规则设置失败!");
}
}
public static void UpdateConfigs(string RuleCode, string IsCheck)
{
try
{
string SDM = KGIS.Framework.Utils.SysConfigsOprator.GetAppsetingValueByKey("ArearName");
string strPath = SysAppPath.GetConfigPath() + "CheckRuleConfigs.xml";
XDocument pXDoc = XDocument.Load(strPath);
var elements = pXDoc.Element("CheckRules").Elements();
foreach (XElement item in elements)
{
if (!string.IsNullOrEmpty(SDM) && item.Attribute("Name").Value.Equals(SDM))
{
var element = item.Elements().Where(x => x.Attribute("RuleCode").Value.Equals(RuleCode));
if (element != null)
element.FirstOrDefault().Attribute("IsCheck").Value = IsCheck;
pXDoc.Save(strPath);
break;
}
}
}
catch (Exception ex)
{
LogAPI.Debug("UpdateConfigs异常:" + ex.Message);
LogAPI.Debug("UpdateConfigs异常:" + ex.StackTrace);
throw ex;
}
}
}
public class Rule
{
public string ClassName { get; set; }
public string CheckObject { get; set; }
public string ErrorTip { get; set; }
public string RuleCode { get; set; }
public string ErrorType { get; set; }
public string RuleName { get; set; }
public bool IsCheck { get; set; }
public string RuleContent { get; set; }
}
}