// Admin.NET 项目的版æƒã€å•†æ ‡ã€ä¸“利和其他相关æƒåˆ©å‡å—ç›¸åº”æ³•å¾‹æ³•è§„çš„ä¿æŠ¤ã€‚ä½¿ç”¨æœ¬é¡¹ç›®åº”éµå®ˆç›¸å…³æ³•律法规和许å¯è¯çš„è¦æ±‚。
//
// 本项目主è¦éµå¾ª MIT 许å¯è¯å’Œ Apache 许å¯è¯ï¼ˆç‰ˆæœ¬ 2.0)进行分å‘和使用。许å¯è¯ä½äºŽæºä»£ç æ ‘æ ¹ç›®å½•ä¸çš„ LICENSE-MIT å’Œ LICENSE-APACHE 文件。
//
// ä¸å¾—利用本项目从事å±å®³å›½å®¶å®‰å…¨ã€æ‰°ä¹±ç¤¾ä¼šç§©åºã€ä¾µçŠ¯ä»–äººåˆæ³•æƒç›Šç‰æ³•å¾‹æ³•è§„ç¦æ¢çš„æ´»åЍï¼ä»»ä½•基于本项目二次开å‘è€Œäº§ç”Ÿçš„ä¸€åˆ‡æ³•å¾‹çº çº·å’Œè´£ä»»ï¼Œæˆ‘ä»¬ä¸æ‰¿æ‹…任何责任ï¼
namespace Admin.NET.Core.Service;
/// <summary>
/// 系统å˜å‚¨è¿‡ç¨‹æœåŠ¡ 🧩
/// </summary>
[ApiDescriptionSettings(Order = 102)]
public class SysProcService : IDynamicApiController, ITransient
{
private readonly ISqlSugarClient _db;
public SysProcService(ISqlSugarClient db)
{
_db = db;
}
/// <summary>
/// 导出å˜å‚¨è¿‡ç¨‹æ•°æ®-æŒ‡å®šåˆ—ï¼Œæ²¡æœ‰æŒ‡å®šçš„å—æ®µä¼šè¢«éšè— 🔖
/// </summary>
/// <returns></returns>
public async Task<IActionResult> PocExport2(ExportProcInput input)
{
var db = _db.AsTenant().GetConnectionScope(input.ConfigId);
var dt = await db.Ado.UseStoredProcedure().GetDataTableAsync(input.ProcId, input.ProcParams);
var headers = new Dictionary<string, Tuple<string, int>>();
var index = 1;
foreach (var val in input.EHeader)
{
headers.Add(val.Key.ToUpper(), new Tuple<string, int>(val.Value, index));
index++;
}
var excelExporter = new ExcelExporter();
var da = await excelExporter.ExportAsByteArray(dt, new ProcExporterHeaderFilter(headers));
return new FileContentResult(da, "application/octet-stream") { FileDownloadName = input.ProcId + ".xlsx" };
}
/// <summary>
/// æ ¹æ®æ¨¡æ¿å¯¼å‡ºå˜å‚¨è¿‡ç¨‹æ•°æ® 🔖
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<IActionResult> PocExport(ExportProcByTMPInput input)
{
var db = _db.AsTenant().GetConnectionScope(input.ConfigId);
var dt = await db.Ado.UseStoredProcedure().GetDataTableAsync(input.ProcId, input.ProcParams);
var excelExporter = new ExcelExporter();
string template = AppDomain.CurrentDomain.BaseDirectory + "/wwwroot/template/" + input.Template + ".xlsx";
var bs = await excelExporter.ExportBytesByTemplate(dt, template);
return new FileContentResult(bs, "application/octet-stream") { FileDownloadName = input.ProcId + ".xlsx" };
}
/// <summary>
/// 获å–å˜å‚¨è¿‡ç¨‹è¿”回表-Oracleã€è¾¾æ¢¦å‚数顺åºä¸èƒ½é”™ 🔖
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<DataTable> ProcTable(BaseProcInput input)
{
var db = _db.AsTenant().GetConnectionScope(input.ConfigId);
return await db.Ado.UseStoredProcedure().GetDataTableAsync(input.ProcId, input.ProcParams);
}
/// <summary>
/// 获å–å˜å‚¨è¿‡ç¨‹è¿”回数æ®é›†-Oracleã€è¾¾æ¢¦å‚数顺åºä¸èƒ½é”™
/// Oracle 返回tableã€table1,其他返回table1ã€table2。适用于报表ã€å¤æ‚详细页é¢ç‰ 🔖
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task<DataSet> CommonDataSet(BaseProcInput input)
{
var db = _db.AsTenant().GetConnectionScope(input.ConfigId);
return await db.Ado.UseStoredProcedure().GetDataSetAllAsync(input.ProcId, input.ProcParams);
}
///// <summary>
///// æ ¹æ®é…置表获å–å¯¹æ˜ å˜å‚¨è¿‡ç¨‹
///// </summary>
///// <param name="input"></param>
///// <returns></returns>
//public async Task<DataTable> ProcEnitybyConfig(BaseProcInput input)
//{
// var key = "ProcConfig";
// var ds = _sysCacheService.Get<Dictionary<string, string>>(key);
// if (ds == null || ds.Count == 0 || !ds.ContainsKey(input.ProcId))
// {
// var datas = await _db.Queryable<ProcConfig>().ToListAsync();
// ds = datas.ToDictionary(m => m.ProcId, m => m.ProcName);
// _sysCacheService.Set(key, ds);
// }
// var procName = ds[input.ProcId];
// return await _db.Ado.UseStoredProcedure().GetDataTableAsync(procName, input.ProcParams);
//}
}