Commit de2d9088 by wyc

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

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