Commit de2d9088 by wyc

简单查询(条件修改/补充日志)

parent 1fb74544
......@@ -110,11 +110,10 @@ public ApiResponse DeleteAsync([FromBody] long[] procIds)
[ProducesResponseType(typeof(List<DashboardResponse>), StatusCodes.Status200OK)]
public async Task<ApiResponse<object>> GetDatumAsync([FromQuery, Required] long procId, [FromQuery] string? allotId, [FromQuery] PagedQueryRequest? paged, [FromBody] List<DynamicQuery> filters)
{
var filteredQueries = filters.Where(q => !string.IsNullOrEmpty(q.Value)).ToList();
long allotIdValue = long.TryParse(allotId, out var result) ? result : 0;
var args = Args(allotIdValue, paged?.Page ?? 1, paged?.Size ?? 20);
var res = await _services.GetDatumAsync(procId, filteredQueries, paged?.Page ?? 1, paged?.Size ?? 20, args);
var res = await _services.GetDatumAsync(procId, filters, paged?.Page ?? 1, paged?.Size ?? 20, args);
foreach (var item in res.Columns)
{
item.Field = item.Field.ToLower();
......@@ -156,12 +155,11 @@ public ApiResponse DeleteAsync([FromBody] long[] procIds)
[HttpPost(template: "query/datum/export")]
public async Task<IActionResult> GetDatumExportAsync([FromQuery, Required] long procId, [FromQuery] string? allotId, [FromBody] List<DynamicQuery> filters)
{
var filteredQueries = filters.Where(q => !string.IsNullOrEmpty(q.Value)).ToList();
long allotIdValue = long.TryParse(allotId, out var result) ? result : 0;
var lowProc = await _services.GetAsync(procId)
?? throw new PerformanceException("查询配置信息不存在");
var args = Args(allotIdValue, 1, int.MaxValue);
var res = await _services.GetDatumAsync(procId, filteredQueries, 1, int.MaxValue, args);
var res = await _services.GetDatumAsync(procId, filters, 1, int.MaxValue, args);
var filePath = Path.Combine(Tools.Path.Download, $"{lowProc.Title}.{Guid.NewGuid():N}.xlsx");
var rows = Tools.MapDictionary(res.Data);
......
......@@ -2,23 +2,21 @@
using Dapper;
using Masuit.Tools;
using Masuit.Tools.Models;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using MySql.Data.MySqlClient;
using Newtonsoft.Json;
using Performance.DtoModels;
using Performance.DtoModels.AppSettings;
using Performance.EntityModels;
using Performance.Infrastructure;
using Performance.Infrastructure.Models;
using Performance.Repository;
using Swashbuckle.AspNetCore.SwaggerGen;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
using System.Security.Claims;
using System.Threading.Tasks;
using Yitter.IdGenerator;
using static Performance.DtoModels.ManagementDept;
......@@ -34,12 +32,15 @@ public class LowProcService : IAutoInjection
private readonly IMapper _mapper;
private readonly IOptions<AppConnection> _options;
private readonly int _commandTimeout = 60 * 5;
private readonly ILogger<LowProcService> _logger;
/// ctor
public LowProcService(PerforLowProcRepository lowProcRepository, IMapper mapper, IOptions<AppConnection> options)
public LowProcService(PerforLowProcRepository lowProcRepository, IMapper mapper, IOptions<AppConnection> options, ILogger<LowProcService> logger)
{
_lowProcRepository = lowProcRepository;
_mapper = mapper;
_options = options;
_logger = logger;
}
/// <summary>
......@@ -138,12 +139,12 @@ public void DeleteAsync(params long[] procIds)
foreach (var query in queries)
{
if (query.Field.Equals("allotId", StringComparison.OrdinalIgnoreCase))
if (query.Field.Equals("allotId", StringComparison.OrdinalIgnoreCase) && string.IsNullOrEmpty(query.Value))
{
if (long.TryParse(query.Value, out long allotIdValue))
args.AddOrUpdate(query.Field, allotIdValue, allotIdValue);
else
args.AddOrUpdate(query.Field, 0L, 0L);
args.AddOrUpdate(query.Field, 0L, 0L);
}
else
{
......@@ -209,7 +210,7 @@ public async Task<(IQueryable<dynamic> data, List<ColumnResponse> columns)> GetE
using (var conn = new MySqlConnection(_options.Value.PerformanceConnectionString))
{
if (conn.State != ConnectionState.Open) conn.Open();
_logger.LogInformation($"存储过程:【{script}】;参数:{string.Join(", ", args.Select(kv => $"{kv.Key}={kv.Value}"))}");
var multi = await conn.QueryMultipleAsync(script, args, commandTimeout: _commandTimeout);
var data = (await multi.ReadAsync()).AsQueryable();
......
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