Commit cc35fa85 by lcx

接口修改

parent 32495d57
......@@ -723,13 +723,13 @@ private List<Column> GetLevel2Columns(List<QueryResult> results, int rowNum, Dic
var columnData = results.Select(t => new { Column1 = t.Column1.NoBlank(), Column2 = t.Column2.NoBlank() }).Distinct();
var level1 = columnData.Where(t => !string.IsNullOrEmpty(t.Column1))?.Select(t => t.Column1).Distinct().OrderBy(t => t);
var level1 = columnData.Where(t => !string.IsNullOrEmpty(t.Column1))?.Select(t => t.Column1).Distinct();
if (level1 == null || !level1.Any()) return columns;
foreach (var item in level1)
{
var column = new Column { Label = item, Prop = $"field_{item}" };
var level2 = columnData.Where(t => t.Column1 == item && !string.IsNullOrEmpty(t.Column2))?.Select(t => t.Column2).Distinct().OrderBy(t => t);
var level2 = columnData.Where(t => t.Column1 == item && !string.IsNullOrEmpty(t.Column2))?.Select(t => t.Column2).Distinct();
if (level2 == null || !level2.Any()) continue;
column.Children = level2.Select(item2 =>
......@@ -764,19 +764,19 @@ private List<Column> GetLevel3Columns(List<QueryResult> results, int rowNum, Dic
var columnData = results.Select(t => new { Column1 = t.Column1.NoBlank(), Column2 = t.Column2.NoBlank(), Column3 = t.Column3.NoBlank() }).Distinct();
var level1 = columnData.Where(t => !string.IsNullOrEmpty(t.Column1))?.Select(t => t.Column1).Distinct().OrderBy(t => t);
var level1 = columnData.Where(t => !string.IsNullOrEmpty(t.Column1))?.Select(t => t.Column1).Distinct();
if (level1 == null || !level1.Any()) return columns;
foreach (var item1 in level1)
{
var column1 = new Column { Label = item1, Prop = $"field_{item1}", Children = new List<Column>() };
var level2 = columnData.Where(t => t.Column1 == item1 && !string.IsNullOrEmpty(t.Column2))?.Select(t => t.Column2).Distinct().OrderBy(t => t);
var level2 = columnData.Where(t => t.Column1 == item1 && !string.IsNullOrEmpty(t.Column2))?.Select(t => t.Column2).Distinct();
if (level2 == null || !level2.Any()) continue;
foreach (var item2 in level2)
{
var column2 = new Column { Label = item1, Prop = $"field_{item1}_{item2}" };
var level3 = columnData.Where(t => t.Column1 == item1 && t.Column2 == item2 && !string.IsNullOrEmpty(t.Column3))?.Select(t => t.Column3).Distinct().OrderBy(t => t);
var level3 = columnData.Where(t => t.Column1 == item1 && t.Column2 == item2 && !string.IsNullOrEmpty(t.Column3))?.Select(t => t.Column3).Distinct();
if (level3 == null || !level3.Any()) continue;
column2.Children = level3.Select(item3 =>
......@@ -983,11 +983,11 @@ public TableData TableSpecial(ConditionRequest request)
{
TableData tableData = new TableData();
try
{
var conditions = GetConditions(request);
if (conditions == null || !conditions.Any()) return tableData;
try
{
#region columns
List<Column> columns = new List<Column>
......@@ -1026,84 +1026,60 @@ public TableData TableSpecial(ConditionRequest request)
if (data == null || !data.Any()) return tableData;
var type = data.Select(t => new { SourceType = t.SourceType.NoBlank(), Category = t.Category.NoBlank(), ItemName = t.ItemName.NoBlank() }).Distinct();
var groupType = type.GroupBy(t => t.SourceType).Select(t => new
{
SourceType = t.Key,
Count = t.Count()
}).OrderBy(t => t.SourceType).ThenBy(t => t.Count);
#region data
JArray jarray = new JArray();
int index = 0;
int index = 1;
// 不包含子集
foreach (var sourcetype in groupType.Where(t => t.Count == 1).Select(t => t.SourceType))
foreach (var sourcetype in type.Where(t => !string.IsNullOrEmpty(t.SourceType))?.Select(t => t.SourceType).Distinct())
{
var conditionData = data.Where(t => t.SourceType == sourcetype);
if (conditionData == null || !conditionData.Any()) continue;
JObject jobj = new JObject { ["rownumber"] = index, ["itemname"] = sourcetype };
index++;
foreach (var item in conditions)
{
string key = $"field_{item.Year}_{item.Month}_{item.AccountingUnit}_{item.UnitType}";
var value = conditionData?.Where(t => t.Year == item.Year && t.Month == item.Month && t.AccountingUnit == item.AccountingUnit && t.UnitType == item.UnitType)?.Sum(t => t.Value);
jobj[key] = value == 0 ? null : value;
}
jarray.Add(jobj);
}
// 含有子集
foreach (var sourcetype in groupType.Where(t => t.Count > 1).Select(t => t.SourceType))
{
JObject level1 = new JObject { ["rownumber"] = index, ["itemname"] = sourcetype };
index++;
WriteDataToJObject(level1, conditionData, conditions);
JArray level1Arr = new JArray();
jarray.Add(level1);
var categories = type.Where(t => t.SourceType == sourcetype);
if (categories == null || !categories.Any()) continue;
if (categories == null || !categories.Any(t => !string.IsNullOrEmpty(t.Category))) continue;
foreach (var category in categories.Select(t => t.Category).Distinct().OrderBy(t => t))
foreach (var category in categories.Select(t => t.Category).Distinct())
{
conditionData = data.Where(t => t.SourceType == sourcetype && t.Category == category);
if (conditionData == null || !conditionData.Any()) continue;
JObject level2 = new JObject { ["rownumber"] = index, ["itemname"] = category };
index++;
WriteDataToJObject(level2, conditionData, conditions);
JArray level2Arr = new JArray();
level1Arr.Add(level2);
var itemnames = categories.Where(t => t.Category == category);
if (itemnames == null || !itemnames.Any()) continue;
if (itemnames == null || !itemnames.Any(t => !string.IsNullOrEmpty(t.ItemName))) continue;
foreach (var itemname in itemnames.Select(t => t.ItemName).Distinct().OrderBy(t => t))
foreach (var itemname in itemnames.Select(t => t.ItemName).Distinct())
{
var conditionData = data.Where(t => t.SourceType == sourcetype && t.Category == category && t.ItemName == itemname);
conditionData = data.Where(t => t.SourceType == sourcetype && t.Category == category && t.ItemName == itemname);
if (conditionData == null || !conditionData.Any()) continue;
JObject level3 = new JObject { ["rownumber"] = index, ["itemname"] = itemname };
index++;
foreach (var item in conditions)
{
string key = $"field_{item.Year}_{item.Month}_{item.AccountingUnit}_{item.UnitType}";
var value = conditionData?.Where(t => t.Year == item.Year && t.Month == item.Month && t.AccountingUnit == item.AccountingUnit && t.UnitType == item.UnitType)?.Sum(t => t.Value);
level3[key] = value == 0 ? null : value;
}
WriteDataToJObject(level3, conditionData, conditions);
level2Arr.Add(level3);
}
if (level2Arr != null && level2Arr.Any())
{
level2["children"] = level2Arr;
level1Arr.Add(level2);
}
}
if (level1Arr != null && level1Arr.Any())
{
level1["children"] = level1Arr;
jarray.Add(level1);
}
}
tableData.Data = jarray;
......@@ -1149,6 +1125,25 @@ private List<Condition> GetConditions(ConditionRequest request)
return conditions;
}
public void WriteDataToJObject(JObject jobj, IEnumerable<QueryData> data, List<Condition> conditions)
{
try
{
foreach (var item in conditions)
{
string key = $"field_{item.Year}_{item.Month}_{item.AccountingUnit}_{item.UnitType}";
var value = data?.Where(t => t.Year == item.Year && t.Month == item.Month && t.AccountingUnit == item.AccountingUnit && t.UnitType == item.UnitType)?.Sum(t => t.Value);
jobj[key] = value == 0 ? null : value;
}
}
catch (Exception ex)
{
logger.LogError($"WriteDataToJObject: {ex}");
}
}
#endregion
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment