Commit bad93f23 LN

支持匹配多行功能可配置

1 个父辈 d5ce2572
......@@ -345,6 +345,8 @@ namespace BLL
[MyConfigComment("数据源匹配Key_其他项_关键字=标题")]
public static MyConfig<string[]> DataSource_DataKey_Others= new string[] { };
[MyConfigComment("数据源匹配_是否支持匹配多行,true=支持多行弹框选择。false=多行认为匹配失败")]
public static MyConfig<bool> DataSource_MultilineMode = false ;
[MyConfigComment("数据源匹配_是否可以修改内容重新匹配")]
public static MyConfig<bool> DataSource_CanReMatch = false ;
......
......@@ -293,10 +293,11 @@ namespace BLL
return aExtraData[0];
}
else
else if (Config.DataSource_MultilineMode.Val == true)
{
if (DataSelectingEvent == null)
{
LogNet.log.Info("匹配到数据源:" + dataKey + " 共有 " + aExtraData.Count + "条数据,默认使用第一条数据");
return aExtraData[0];
}
......@@ -304,6 +305,10 @@ namespace BLL
Dictionary<string, string> selecValue = DataSelectingEvent?.Invoke(dataKey, aExtraData);
return selecValue;
}
else
{
return null;
}
}
public static bool hasFileData()
{
......@@ -366,18 +371,14 @@ namespace BLL
if (key.ContainsKey(Config.DataSource_DataKey) && ExtraFileData.AllData.ContainsKey(CleanData))
{
var extraData = ExtraFileData.GetSelectDataSource(CleanData);
findOk = true;
Dictionary<string, string> otherKeys = GetOtherKeys();
//foreach (var d in extraData)
//{
// if (!string.IsNullOrEmpty(d.Value))
// key[d.Key] = d.Value;
//}
key = UpdateData(key, extraData, otherKeys);
LogNet.log.Info("匹配到数据源:" + Config.DataSource_DataKey + "=" + CleanData + " 数据: " + JsonConvert.SerializeObject(extraData));
return key;
if (extraData != null)
{
findOk = true;
Dictionary<string, string> otherKeys = GetOtherKeys();
key = UpdateData(key, extraData, otherKeys);
LogNet.log.Info("匹配到数据源:" + Config.DataSource_DataKey + "=" + CleanData + " 数据: " + JsonConvert.SerializeObject(extraData));
return key;
}
}
}
if (!findOk && Config.DataSource_DataKey_Others.Val != null && Config.DataSource_DataKey_Others.Val.Length > 0)
......@@ -385,81 +386,80 @@ namespace BLL
Dictionary<string, string> otherKeys = GetOtherKeys();
foreach (string oKey in otherKeys.Keys)
{
if (key.ContainsKey(oKey))
if (!key.ContainsKey(oKey))
{
continue;
}
string CleanData = key[oKey].Replace("<OCR>", "");
if (String.IsNullOrEmpty(CleanData))
{
continue;
}
string titleValue = otherKeys[oKey];
string CleanData = key[oKey].Replace("<OCR>", "");
if (String.IsNullOrEmpty(CleanData))
{
continue;
}
string titleValue = otherKeys[oKey];
//循环所有数据
if (titleValue == Config.DataSource_DataTitle && ExtraFileData.AllData.ContainsKey(CleanData))
//循环所有数据
if (titleValue == Config.DataSource_DataTitle && ExtraFileData.AllData.ContainsKey(CleanData))
{
var extraData = ExtraFileData.GetSelectDataSource(CleanData);
if (extraData != null)
{
var extraData = ExtraFileData.GetSelectDataSource(CleanData);
findOk = true;
//foreach (var d in extraData)
//{
// if (!string.IsNullOrEmpty(d.Value))
// key[d.Key] = d.Value;
//}
key = UpdateData(key, extraData, otherKeys);
LogNet.log.Info("匹配到数据源:" + titleValue + "=" + CleanData + " 数据: " + JsonConvert.SerializeObject(extraData));
break;
}
else
}
else
{
List<Dictionary<string, string>> findData = new List<Dictionary<string, string>>();
//查找其他列
foreach (List<Dictionary<string, string>> sourceData in AllData.Values)
{
List<Dictionary<string, string>> findData = new List<Dictionary<string, string>>();
//查找其他列
foreach (List<Dictionary<string, string>> sourceData in AllData.Values)
{
foreach (Dictionary<string, string> data in sourceData)
foreach (Dictionary<string, string> data in sourceData)
{
if (data.ContainsKey(titleValue))
{
if (data.ContainsKey(titleValue) )
string vstring = data[titleValue];
if (vstring.Trim().Equals(CleanData.Trim()))
{
string vstring = data[titleValue];
if (vstring.Trim().Equals(CleanData.Trim()))
{
findData.Add(data);
}
findData.Add(data);
}
}
}
if (findData.Count > 0)
}
if (findData.Count > 0)
{
var findDataMap = new Dictionary<string, string>();
if (findData.Count == 1)
{
findDataMap = findData[0];
LogNet.log.Info("匹配到数据源:" + titleValue + "=" + CleanData + " 共有 " + 1 + "条数据: " + JsonConvert.SerializeObject(findData[0]));
}
else if (Config.DataSource_MultilineMode.Val == true)
{
var findDataMap = new Dictionary<string, string>();
if (findData.Count == 1 || DataSelectingEvent == null)
if (DataSelectingEvent == null)
{
findOk = true;
findDataMap = findData[0];
LogNet.log.Info("匹配到数据源:" + titleValue + "=" + CleanData + " 共有 " + 1 + "条数据: " + JsonConvert.SerializeObject(findData[0]));
LogNet.log.Info("匹配到数据源:" + titleValue + "=" + CleanData + " 共有 " + findData.Count + "条数据,默认使用第一条数据");
findDataMap = findData[0];
}
else
{
LogNet.log.Info("匹配到数据源:" + titleValue + "=" + CleanData + " 共有 " + findData.Count + "条数据,弹框让用户选择");
findDataMap = DataSelectingEvent?.Invoke(titleValue + "=" + CleanData, findData);
if (findDataMap != null && findDataMap.Count > 0)
{
findOk = true;
}
}
if (findOk)
{
key= UpdateData(key, findDataMap, otherKeys);
findDataMap = DataSelectingEvent?.Invoke(titleValue + "=" + CleanData, findData);
}
}
if (findDataMap != null && findDataMap.Count > 0)
{
findOk = true;
key = UpdateData(key, findDataMap, otherKeys);
break;
}
}
}
}
}
}
}
catch (Exception ex)
{
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!