Commit 9a41ec4b by wyc

简单查询(补充)

parent ca1ba2c9
...@@ -307,7 +307,11 @@ public enum CustomTableLimitation ...@@ -307,7 +307,11 @@ public enum CustomTableLimitation
public enum Formatter public enum Formatter
{ {
text, text,
numeric, pre, // html pre标签保留文本中的所有空格、制表符和换行符。
numeric, // 数字
numeric_compare, // 数字对比 正-红 复-绿
pct, // 百分比
pct_compare, // 百分比对比 正-红 复-绿
tag, tag,
} }
} }
......
using AngleSharp.Dom; using AngleSharp.Dom;
using AutoMapper; using AutoMapper;
using Dapper; using Dapper;
using GraphQL;
using Masuit.Tools; using Masuit.Tools;
using Masuit.Tools.Models; using Masuit.Tools.Models;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using MySql.Data.MySqlClient; using MySql.Data.MySqlClient;
using Newtonsoft.Json; using Newtonsoft.Json;
using Performance.DtoModels; using Performance.DtoModels;
...@@ -13,6 +15,7 @@ ...@@ -13,6 +15,7 @@
using Performance.Infrastructure; using Performance.Infrastructure;
using Performance.Infrastructure.Models; using Performance.Infrastructure.Models;
using Performance.Repository; using Performance.Repository;
using SqlSugar;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
...@@ -165,11 +168,6 @@ public void DeleteAsync(params long[] procIds) ...@@ -165,11 +168,6 @@ public void DeleteAsync(params long[] procIds)
{ {
var dict = (IDictionary<string, object>)data.First(); var dict = (IDictionary<string, object>)data.First();
var keys = dict.Select(w => w.Key).ToList(); var keys = dict.Select(w => w.Key).ToList();
//if (!keys.Any(key => string.Equals(key, "TreeId", StringComparison.OrdinalIgnoreCase)))
//{
//}
// 获取总页数 // 获取总页数
var totalCountKey = keys.FirstOrDefault(key => key.Equals("TotalCount", StringComparison.OrdinalIgnoreCase)); var totalCountKey = keys.FirstOrDefault(key => key.Equals("TotalCount", StringComparison.OrdinalIgnoreCase));
if (!string.IsNullOrEmpty(totalCountKey) && dict[totalCountKey] != null) if (!string.IsNullOrEmpty(totalCountKey) && dict[totalCountKey] != null)
...@@ -214,18 +212,23 @@ public void DeleteAsync(params long[] procIds) ...@@ -214,18 +212,23 @@ public void DeleteAsync(params long[] procIds)
} }
foreach (var item in columns) foreach (var item in columns)
{ {
var field = keys.FirstOrDefault(col => col.Equals(item.Field, StringComparison.OrdinalIgnoreCase)); var field = keys.FirstOrDefault(col => col.Equals(item.Field, StringComparison.OrdinalIgnoreCase));
if (!string.IsNullOrEmpty(field) && item.Formatter == Formatter.numeric.ToString()) if (!string.IsNullOrEmpty(field))
{ {
if (item.Formatter == Formatter.numeric.ToString() || item.Formatter == Formatter.numeric_compare.ToString())
{
object? sumValue = null;
try try
{ {
var sumValue = data.Select(field).ToDynamicList().Cast<decimal?>().Sum(); sumValue = data.Select(field, StringComparison.OrdinalIgnoreCase).ToListDynamic().Select(item => decimal.TryParse(item?.ToString(), out var value) ? (decimal?)value : null).Sum();
total.AddOrUpdate(item.Field, sumValue, sumValue);
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, "计算字段 {Field} 的总和时失败", field); _logger.LogError(ex, "计算字段 {Field} 的总和时失败", field);
} }
total.AddOrUpdate(item.Field, sumValue, sumValue);
}
} }
} }
} }
...@@ -260,7 +263,24 @@ public async Task<(IQueryable<dynamic> data, List<ColumnResponse> columns)> GetE ...@@ -260,7 +263,24 @@ public async Task<(IQueryable<dynamic> data, List<ColumnResponse> columns)> GetE
_logger.LogInformation("存储过程:【{Script}】;参数:{Args}", script, string.Join(", ", args.Select(kv => $"{kv.Key}={kv.Value}"))); _logger.LogInformation("存储过程:【{Script}】;参数:{Args}", script, string.Join(", ", args.Select(kv => $"{kv.Key}={kv.Value}")));
var multi = await conn.QueryMultipleAsync(script, args, commandTimeout: _commandTimeout); var multi = await conn.QueryMultipleAsync(script, args, commandTimeout: _commandTimeout);
var data = (await multi.ReadAsync()).AsQueryable(); var data = await multi.ReadAsync();
if (data.Any())
{
var dataFirt = (IDictionary<string, object>)data.First();
var key = dataFirt.Keys.FirstOrDefault(k => string.Equals(k, "treeid", StringComparison.OrdinalIgnoreCase));
dataFirt.TryGetValue(key, out var value);
if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(value?.ToString() ?? ""))
{
var index = 1;
data.ForEach(item =>
{
var pairs = (IDictionary<string, object>)item;
pairs.AddOrUpdate("treeid", index, StringComparer.OrdinalIgnoreCase);
pairs.AddOrUpdate("treeparentid", null, StringComparer.OrdinalIgnoreCase);
index += 1;
});
}
}
var columns = (await multi.ReadAsync<ColumnResponse>()).AsList(); var columns = (await multi.ReadAsync<ColumnResponse>()).AsList();
columns.ForEach(column => columns.ForEach(column =>
{ {
...@@ -269,7 +289,7 @@ public async Task<(IQueryable<dynamic> data, List<ColumnResponse> columns)> GetE ...@@ -269,7 +289,7 @@ public async Task<(IQueryable<dynamic> data, List<ColumnResponse> columns)> GetE
}); });
columns = columns.OrderBy(w => w.Sort).ToList(); columns = columns.OrderBy(w => w.Sort).ToList();
return (data, columns); return (data.AsQueryable(), columns);
} }
} }
......
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