Commit d424bda0 by lcx

数据提取修改

parent 28867a1e
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
using Performance.Infrastructure; using Performance.Infrastructure;
using Performance.Services; using Performance.Services;
using Performance.Services.ExtractExcelService; using Performance.Services.ExtractExcelService;
using Performance.Services.Queues;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
...@@ -37,6 +38,8 @@ public class TemplateController : Controller ...@@ -37,6 +38,8 @@ public class TemplateController : Controller
private readonly AllotService allotService; private readonly AllotService allotService;
private readonly LogManageService logService; private readonly LogManageService logService;
private readonly IServiceScopeFactory serviceScopeFactory; private readonly IServiceScopeFactory serviceScopeFactory;
private readonly IBackgroundTaskQueue _backgroundTaskQueue;
private readonly ExtractService extractService;
public TemplateController( public TemplateController(
ILogger<ExceptionsFilter> logger, ILogger<ExceptionsFilter> logger,
...@@ -50,7 +53,9 @@ public class TemplateController : Controller ...@@ -50,7 +53,9 @@ public class TemplateController : Controller
HospitalService hospitalService, HospitalService hospitalService,
AllotService allotService, AllotService allotService,
LogManageService logService, LogManageService logService,
IServiceScopeFactory serviceScopeFactory) IBackgroundTaskQueue backgroundTaskQueue,
IServiceScopeFactory serviceScopeFactory,
ExtractService extractService)
{ {
this.logger = logger; this.logger = logger;
this.env = env; this.env = env;
...@@ -64,6 +69,8 @@ public class TemplateController : Controller ...@@ -64,6 +69,8 @@ public class TemplateController : Controller
this.allotService = allotService; this.allotService = allotService;
this.logService = logService; this.logService = logService;
this.serviceScopeFactory = serviceScopeFactory; this.serviceScopeFactory = serviceScopeFactory;
_backgroundTaskQueue = backgroundTaskQueue;
this.extractService = extractService;
} }
/// <summary> /// <summary>
...@@ -226,22 +233,22 @@ public ApiResponse NewExtractData([CustomizeValidator, FromBody] ExtractRequest ...@@ -226,22 +233,22 @@ public ApiResponse NewExtractData([CustomizeValidator, FromBody] ExtractRequest
allot.IsExtracting = 1; allot.IsExtracting = 1;
allot.ExtractTime = DateTime.Now; allot.ExtractTime = DateTime.Now;
allotService.Update(allot); allotService.Update(allot);
string email = claim.GetUserClaim(JwtClaimTypes.Mail); // string email = claim.GetUserClaim(JwtClaimTypes.Mail);
string email = "";
if (isSingle) if (isSingle)
{ {
logger.LogInformation("同一项目中进行提取"); logger.LogInformation("同一项目中进行提取");
Task.Run(() =>
_backgroundTaskQueue.QueueBackgroundWorkItem(async token =>
{ {
using (var scope = serviceScopeFactory.CreateScope()) using (var scope = serviceScopeFactory.CreateScope())
{ {
var scopedServices = scope.ServiceProvider.GetRequiredService<ExtractService>(); var scopedServices = scope.ServiceProvider.GetRequiredService<ExtractService>();
logger.LogInformation("提取绩效数据参数:" + JsonHelper.Serialize(new { allotId = allot.ID, hospitalId = allot.HospitalId, userId = claim.GetUserId() })); logger.LogInformation("提取绩效数据参数:" + JsonHelper.Serialize(new { allotId = allot.ID, hospitalId = allot.HospitalId }));
string extractFilePath = scopedServices.Main(allot.ID, allot.HospitalId, email, "User" + claim.GetUserId(), filePath, isSingle); string extractFilePath = scopedServices.Main(allot.ID, allot.HospitalId, email, allot.ID.ToString(), filePath, isSingle);
} }
}); });
Thread.Sleep(1000);
} }
else else
{ {
...@@ -252,8 +259,7 @@ public ApiResponse NewExtractData([CustomizeValidator, FromBody] ExtractRequest ...@@ -252,8 +259,7 @@ public ApiResponse NewExtractData([CustomizeValidator, FromBody] ExtractRequest
{ {
AllotId = request.AllotId, AllotId = request.AllotId,
HospitalId = request.HospitalId, HospitalId = request.HospitalId,
Email = email, Email = email
UserId = claim.GetUserId()
}; };
string json = JsonHelper.Serialize(obj); string json = JsonHelper.Serialize(obj);
...@@ -284,6 +290,12 @@ public ApiResponse NewExtractData([CustomizeValidator, FromBody] ExtractRequest ...@@ -284,6 +290,12 @@ public ApiResponse NewExtractData([CustomizeValidator, FromBody] ExtractRequest
// B 使用配置作为模板 // B 使用配置作为模板
} }
[HttpPost("extract/allot/file")]
public ApiResponse ExtractAllotFile(ExtractRequest request)
{
extractService.Main(request.AllotId, request.HospitalId, request.Email, request.AllotId.ToString(), "", true);
return new ApiResponse(ResponseType.OK);
}
/// <summary> /// <summary>
/// 提取日志 /// 提取日志
......
using Microsoft.Data.SqlClient; using MySql.Data.MySqlClient;
using MySql.Data.MySqlClient;
using Oracle.ManagedDataAccess.Client; using Oracle.ManagedDataAccess.Client;
using System; using System;
using System.Data; using System.Data;
using System.Data.SqlClient;
namespace Performance.Repository namespace Performance.Repository
{ {
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
using Performance.Repository; using Performance.Repository;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
...@@ -117,7 +118,10 @@ public Comparison CheckAccountingUnitRealGiveFeeDiff(int allotId, string searchQ ...@@ -117,7 +118,10 @@ public Comparison CheckAccountingUnitRealGiveFeeDiff(int allotId, string searchQ
TotalCount = DapperQuery<int>(queryCount, new { allotId, searchQuery, parm = $"%{searchQuery}%" })?.FirstOrDefault() ?? 0, TotalCount = DapperQuery<int>(queryCount, new { allotId, searchQuery, parm = $"%{searchQuery}%" })?.FirstOrDefault() ?? 0,
}; };
} }
}
public IDbConnection GetDbConnection()
{
return context.Database.GetDbConnection();
}
}
} }
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Data.SqlClient" Version="4.0.0" />
<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="3.21.4" /> <PackageReference Include="Oracle.ManagedDataAccess.Core" Version="3.21.4" />
<PackageReference Include="System.Data.SqlClient" Version="4.8.3" />
</ItemGroup> </ItemGroup>
......
...@@ -775,7 +775,7 @@ public string Judge(int allotId, int hospitalId, int useTemplate, ref bool isSin ...@@ -775,7 +775,7 @@ public string Judge(int allotId, int hospitalId, int useTemplate, ref bool isSin
if (conf == null) if (conf == null)
continue; continue;
var data = queryService.QueryData(conf, allot, scr.ExecScript); var data = queryService.QueryData<ExtractDto>(conf, scr.ExecScript, allot, false);
if (data == null || !data.Any()) continue; if (data == null || !data.Any()) continue;
foreach (var module in moduleSheet.Where(t => t.CheckScriptId == scr.Id)) foreach (var module in moduleSheet.Where(t => t.CheckScriptId == scr.Id))
......
...@@ -71,7 +71,7 @@ public void Handler(int hospitalId, per_allot allot, string groupName, bool isSi ...@@ -71,7 +71,7 @@ public void Handler(int hospitalId, per_allot allot, string groupName, bool isSi
var typeIds = types.Where(t => t.Source == (int)SheetType.Employee).Select(t => t.Id); var typeIds = types.Where(t => t.Source == (int)SheetType.Employee).Select(t => t.Id);
var script = scripts.Where(t => typeIds.Contains(t.TypeId)); var script = scripts.Where(t => typeIds.Contains(t.TypeId));
if (script != null) if (script != null)
Employee(allot, configs, scripts); Employee(allot, configs, scripts, isSingle);
} }
if (types.Any(t => t.Source == (int)SheetType.OnlyExtract)) //不写入Excel的提取数据 if (types.Any(t => t.Source == (int)SheetType.OnlyExtract)) //不写入Excel的提取数据
{ {
...@@ -84,7 +84,7 @@ public void Handler(int hospitalId, per_allot allot, string groupName, bool isSi ...@@ -84,7 +84,7 @@ public void Handler(int hospitalId, per_allot allot, string groupName, bool isSi
foreach (var script in thisTypeScripts) foreach (var script in thisTypeScripts)
{ {
logger.LogInformation($"提取sql: {script.ExecScript}"); logger.LogInformation($"提取sql: {script.ExecScript}");
ExResult(allot, configs.FirstOrDefault(t => t.Id == script.ConfigId), script.ExecScript, type.EName); ExResult(allot, configs.FirstOrDefault(t => t.Id == script.ConfigId), script.ExecScript, type.EName, isSingle);
} }
} }
} }
...@@ -96,7 +96,7 @@ public void Handler(int hospitalId, per_allot allot, string groupName, bool isSi ...@@ -96,7 +96,7 @@ public void Handler(int hospitalId, per_allot allot, string groupName, bool isSi
foreach (var item in hisScrips) foreach (var item in hisScrips)
{ {
logService.ReturnTheLog(allot.ID, groupName, 2, "提取数据", $"提取{item.SourceType} - {item.Category}数据", isSingle: isSingle); logService.ReturnTheLog(allot.ID, groupName, 2, "提取数据", $"提取{item.SourceType} - {item.Category}数据", isSingle: isSingle);
HisData(allot, configs.FirstOrDefault(t => t.Id == item.ConfigId), item); HisData(allot, configs.FirstOrDefault(t => t.Id == item.ConfigId), item, isSingle);
} }
} }
catch (Exception) catch (Exception)
...@@ -106,7 +106,7 @@ public void Handler(int hospitalId, per_allot allot, string groupName, bool isSi ...@@ -106,7 +106,7 @@ public void Handler(int hospitalId, per_allot allot, string groupName, bool isSi
} }
} }
private void Employee(per_allot allot, List<sys_hospitalconfig> configs, IEnumerable<ex_script> scripts) private void Employee(per_allot allot, List<sys_hospitalconfig> configs, IEnumerable<ex_script> scripts, bool isSingle)
{ {
try try
{ {
...@@ -116,12 +116,12 @@ private void Employee(per_allot allot, List<sys_hospitalconfig> configs, IEnumer ...@@ -116,12 +116,12 @@ private void Employee(per_allot allot, List<sys_hospitalconfig> configs, IEnumer
var sql = script.ExecScript; var sql = script.ExecScript;
if (config == null || string.IsNullOrEmpty(sql)) return; if (config == null || string.IsNullOrEmpty(sql)) return;
var limitData = queryService.QueryData<dynamic>(config, allot, sql); var limitData = queryService.QueryData<dynamic>(config, sql, allot, isSingle);
if (limitData == null || !limitData.Any()) return; if (limitData == null || !limitData.Any()) return;
var columns = ((IDictionary<string, object>)limitData.ElementAt(0)).Select(t => t.Key.ToLower()).ToList(); var columns = ((IDictionary<string, object>)limitData.ElementAt(0)).Select(t => t.Key.ToLower()).ToList();
var data = queryService.QueryData<per_employee>(config, allot, sql).ToList(); var data = queryService.QueryData<per_employee>(config, sql, allot, isSingle).ToList();
data.ForEach(t => data.ForEach(t =>
{ {
t.AllotId = allot.ID; t.AllotId = allot.ID;
...@@ -223,13 +223,13 @@ private void JudgeDataEqual(List<string> columns, List<per_employee> emps, List< ...@@ -223,13 +223,13 @@ private void JudgeDataEqual(List<string> columns, List<per_employee> emps, List<
} }
} }
private void HisData(per_allot allot, sys_hospitalconfig config, his_script script) private void HisData(per_allot allot, sys_hospitalconfig config, his_script script, bool isSingle)
{ {
try try
{ {
if (config == null || string.IsNullOrEmpty(script.ExecScript)) return; if (config == null || string.IsNullOrEmpty(script.ExecScript)) return;
var data = queryService.QueryData<HisData>(config, allot, script.ExecScript); var data = queryService.QueryData<HisData>(config, script.ExecScript, allot, isSingle);
if (data == null || !data.Any()) return; if (data == null || !data.Any()) return;
var hisdata = hisdataRepository.GetEntities(t => t.AllotId == allot.ID && t.SourceType == script.SourceType && t.Category == script.Category); var hisdata = hisdataRepository.GetEntities(t => t.AllotId == allot.ID && t.SourceType == script.SourceType && t.Category == script.Category);
...@@ -265,13 +265,13 @@ private void Department() ...@@ -265,13 +265,13 @@ private void Department()
{ {
} }
private void ExResult(per_allot allot, sys_hospitalconfig config, string sql, string enmae) private void ExResult(per_allot allot, sys_hospitalconfig config, string sql, string enmae, bool isSingle)
{ {
try try
{ {
if (config == null || string.IsNullOrEmpty(sql)) return; if (config == null || string.IsNullOrEmpty(sql)) return;
var data = queryService.QueryData(config, allot, sql); var data = queryService.QueryData<ExtractDto>(config, sql, allot, isSingle);
if (data == null || !data.Any()) return; if (data == null || !data.Any()) return;
var createTime = DateTime.Now; var createTime = DateTime.Now;
......
using Microsoft.Extensions.Logging; using Dapper;
using Microsoft.Extensions.Logging;
using NPOI.SS.UserModel; using NPOI.SS.UserModel;
using Performance.DtoModels; using Performance.DtoModels;
using Performance.EntityModels; using Performance.EntityModels;
...@@ -7,6 +8,7 @@ ...@@ -7,6 +8,7 @@
using Performance.Services.ExtractExcelService.SheetDataWrite; using Performance.Services.ExtractExcelService.SheetDataWrite;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
...@@ -73,9 +75,11 @@ PerforCofdrugtypefactorRepository drugtypefactorRepository ...@@ -73,9 +75,11 @@ PerforCofdrugtypefactorRepository drugtypefactorRepository
/// <param name="isSingle">抽取是否在同一项目</param> /// <param name="isSingle">抽取是否在同一项目</param>
public string Main(int allotId, int hospitalId, string email, string groupName, string filePath = null, bool isSingle = false) public string Main(int allotId, int hospitalId, string email, string groupName, string filePath = null, bool isSingle = false)
{ {
groupName = allotId.ToString();
string extractFilePath = ""; string extractFilePath = "";
per_allot allot = null; per_allot allot = null;
IWorkbook workbook = null; IWorkbook workbook = null;
IDbConnection connection = peremployeeRepository.GetDbConnection();
try try
{ {
logService.ClearExtractLog(allotId); logService.ClearExtractLog(allotId);
...@@ -114,6 +118,11 @@ public string Main(int allotId, int hospitalId, string email, string groupName, ...@@ -114,6 +118,11 @@ public string Main(int allotId, int hospitalId, string email, string groupName,
allot.ExtractPath = extractFilePath; allot.ExtractPath = extractFilePath;
workbook.EvaluateAll(); workbook.EvaluateAll();
using (FileStream file = new FileStream(extractFilePath, FileMode.OpenOrCreate))
{
workbook.Write(file);
}
workbook.Close();
} }
catch (Exception ex) catch (Exception ex)
{ {
...@@ -124,12 +133,7 @@ public string Main(int allotId, int hospitalId, string email, string groupName, ...@@ -124,12 +133,7 @@ public string Main(int allotId, int hospitalId, string email, string groupName,
finally finally
{ {
logService.ReturnTheLog(allotId, groupName, 3, "", 100, 5, isSingle); logService.ReturnTheLog(allotId, groupName, 3, "", 100, 5, isSingle);
using (FileStream file = new FileStream(extractFilePath, FileMode.OpenOrCreate)) UpdateAllot(connection, allot);
{
workbook.Write(file);
}
workbook.Close();
perallotRepository.Update(allot);
} }
return extractFilePath; return extractFilePath;
} }
...@@ -333,6 +337,25 @@ private List<ExtractTransDto> StandDataFormat(int hospitalId, List<ex_result> re ...@@ -333,6 +337,25 @@ private List<ExtractTransDto> StandDataFormat(int hospitalId, List<ex_result> re
return groupdata.ToList(); return groupdata.ToList();
} }
private void UpdateAllot(IDbConnection connection, per_allot allot)
{
try
{
string sql = "update per_allot set isextracting = @isextracting, extractpath = @extractpath where id = @id";
if (connection == null) return;
if (connection.State == ConnectionState.Closed)
connection.Open();
connection.Execute(sql, allot);
}
catch (Exception ex)
{
logger.LogError(ex.Message);
}
}
private readonly List<SheetType> OtherConfigSheet = new List<SheetType> private readonly List<SheetType> OtherConfigSheet = new List<SheetType>
{ {
SheetType.AccountExtra, SheetType.AccountExtra,
......
...@@ -59,6 +59,7 @@ PerforPerallotRepository perallotRepository ...@@ -59,6 +59,7 @@ PerforPerallotRepository perallotRepository
} }
private readonly DateTime CreateTime = DateTime.Now; private readonly DateTime CreateTime = DateTime.Now;
private static Dictionary<int, IDbConnection> pools = new Dictionary<int, IDbConnection>();
/// <summary> /// <summary>
/// 获取抽取数据 /// 获取抽取数据
...@@ -194,8 +195,6 @@ private List<ex_result> ExtractModuleData(per_allot allot, string groupName, boo ...@@ -194,8 +195,6 @@ private List<ex_result> ExtractModuleData(per_allot allot, string groupName, boo
logService.ReturnTheLog(allot.ID, groupName, 3, "", ratio > 20 ? 20 : ratio, 1, isSingle); logService.ReturnTheLog(allot.ID, groupName, 3, "", ratio > 20 ? 20 : ratio, 1, isSingle);
logService.ReturnTheLog(allot.ID, groupName, 2, "提取数据", $"开始提取模块“{string.Join("、", thisModules.Select(t => t.ModuleName))}”的数据", 1, isSingle); logService.ReturnTheLog(allot.ID, groupName, 2, "提取数据", $"开始提取模块“{string.Join("、", thisModules.Select(t => t.ModuleName))}”的数据", 1, isSingle);
Dictionary<int, IDbConnection> pools = new Dictionary<int, IDbConnection>();
foreach (var script in scripts.Where(t => t.TypeId == typeId)) foreach (var script in scripts.Where(t => t.TypeId == typeId))
{ {
var config = configs.FirstOrDefault(t => t.Id == script.ConfigId); var config = configs.FirstOrDefault(t => t.Id == script.ConfigId);
...@@ -203,20 +202,7 @@ private List<ex_result> ExtractModuleData(per_allot allot, string groupName, boo ...@@ -203,20 +202,7 @@ private List<ex_result> ExtractModuleData(per_allot allot, string groupName, boo
try try
{ {
try var querydata = QueryData<ExtractDto>(config, script.ExecScript, allot, isSingle);
{
if (!pools.ContainsKey(config.Id))
pools.Add(config.Id, ConnectionBuilder.Create((DatabaseType)config.DataBaseType, config.DbSource, config.DbName, config.DbUser, config.DbPassword));
}
catch
{
logService.ReturnTheLog(allot.ID, groupName, 2, "数据库连接", $"数据库“{config.DbName}”连接失败", 3, isSingle);
}
IDbConnection connection = pools[config.Id];
var parameters = GetParameters(allot);
var querydata = QueryData(connection, parameters, script.ExecScript);
if (querydata != null && querydata.Any()) if (querydata != null && querydata.Any())
{ {
...@@ -287,7 +273,7 @@ private List<ex_result> ExtractItemData(per_allot allot, string groupName, bool ...@@ -287,7 +273,7 @@ private List<ex_result> ExtractItemData(per_allot allot, string groupName, bool
var config = configs.FirstOrDefault(t => t.Id == script.ConfigId); var config = configs.FirstOrDefault(t => t.Id == script.ConfigId);
if (config == null) continue; if (config == null) continue;
var querydata = QueryData(config, allot, script.ExecScript); var querydata = QueryData<ExtractDto>(config, script.ExecScript, allot, isSingle);
if (querydata != null && querydata.Any()) if (querydata != null && querydata.Any())
{ {
thisItems.ForEach(f => thisItems.ForEach(f =>
...@@ -351,7 +337,7 @@ private List<ex_result> ExtractSpecialData(per_allot allot, string groupName, bo ...@@ -351,7 +337,7 @@ private List<ex_result> ExtractSpecialData(per_allot allot, string groupName, bo
var config = configs.FirstOrDefault(t => t.Id == script.ConfigId); var config = configs.FirstOrDefault(t => t.Id == script.ConfigId);
if (config == null) continue; if (config == null) continue;
var querydata = QueryData(config, allot, script.ExecScript); var querydata = QueryData<ExtractDto>(config, script.ExecScript, allot, isSingle);
if (querydata != null && querydata.Any()) if (querydata != null && querydata.Any())
{ {
thisSpecials.ForEach(f => thisSpecials.ForEach(f =>
...@@ -396,62 +382,36 @@ private List<ex_result> ExtractSpecialData(per_allot allot, string groupName, bo ...@@ -396,62 +382,36 @@ private List<ex_result> ExtractSpecialData(per_allot allot, string groupName, bo
/// <param name="source"></param> /// <param name="source"></param>
/// <param name="category"></param> /// <param name="category"></param>
/// <returns></returns> /// <returns></returns>
public IEnumerable<ExtractDto> QueryData(sys_hospitalconfig config, per_allot allot, string execsql) public IEnumerable<T> QueryData<T>(sys_hospitalconfig config, string execsql, per_allot allot, bool isSingle)
{ {
var parameters = GetParameters(allot); var parameters = GetParameters(allot);
using (var connection = ConnectionBuilder.Create((DatabaseType)config.DataBaseType, config.DbSource, config.DbName, config.DbUser, config.DbPassword))
{
return QueryData(connection, parameters, execsql);
}
}
/// <summary>
/// 查询数据
/// </summary>
/// <param name="config"></param>
/// <param name="allot"></param>
/// <param name="execsql"></param>
/// <param name="source"></param>
/// <param name="category"></param>
/// <returns></returns>
public IEnumerable<ExtractDto> QueryData(IDbConnection connection, Dictionary<string, string> parameters, string execsql)
{
foreach (var item in parameters) foreach (var item in parameters)
{ {
execsql = Regex.Replace(execsql, item.Key, item.Value, RegexOptions.IgnoreCase); execsql = Regex.Replace(execsql, item.Key, item.Value, RegexOptions.IgnoreCase);
} }
logger.LogInformation($"提取绩效数据SQL脚本{execsql}"); IDbConnection connection = null;
var result = connection.Query<ExtractDto>(execsql, commandTimeout: 20000); try
logger.LogInformation($"提取绩效数据执行脚本获取数据{result?.Count() ?? 0}条记录"); {
if (!pools.ContainsKey(config.Id))
pools.Add(config.Id, ConnectionBuilder.Create((DatabaseType)config.DataBaseType, config.DbSource, config.DbName, config.DbUser, config.DbPassword));
connection = pools[config.Id];
return result; if (connection == null) return Enumerable.Empty<T>();
}
/// <summary> if (connection.State == ConnectionState.Closed)
/// 查询数据 connection.Open();
/// </summary> }
/// <param name="config"></param> catch
/// <param name="allot"></param>
/// <param name="execsql"></param>
/// <param name="source"></param>
/// <param name="category"></param>
/// <returns></returns>
public IEnumerable<T> QueryData<T>(sys_hospitalconfig config, per_allot allot, string execsql)
{
var parameters = GetParameters(allot);
using (var connection = ConnectionBuilder.Create((DatabaseType)config.DataBaseType, config.DbSource, config.DbName, config.DbUser, config.DbPassword))
{ {
foreach (var item in parameters) logService.ReturnTheLog(allot.ID, allot.ID.ToString(), 2, "数据库连接", $"数据库“{config.DbName}”连接失败", 3, isSingle);
{ }
execsql = Regex.Replace(execsql, item.Key, item.Value, RegexOptions.IgnoreCase);
}
logger.LogInformation($"提取绩效数据SQL脚本{execsql}"); logger.LogInformation($"提取绩效数据SQL脚本{execsql}");
var result = connection.Query<T>(execsql, commandTimeout: 20000); var result = connection.Query<T>(execsql, commandTimeout: 20000);
logger.LogInformation($"提取绩效数据执行脚本获取数据{result?.Count() ?? 0}条记录"); logger.LogInformation($"提取绩效数据执行脚本获取数据{result?.Count() ?? 0}条记录");
return result; return result;
}
} }
/// <summary> /// <summary>
......
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