Commit bad93f23 LN

支持匹配多行功能可配置

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