代码生成导出数据支持字典类型数据导出

This commit is contained in:
不做码农 2023-11-22 18:24:55 +08:00
parent d49d59f1e9
commit 332acde5a0
6 changed files with 101 additions and 23 deletions

View File

@ -1,4 +1,5 @@
using Quartz.Spi; using Quartz.Spi;
using SqlSugar;
using SqlSugar.IOC; using SqlSugar.IOC;
using ZR.Model.System; using ZR.Model.System;
using ZR.Tasks; using ZR.Tasks;
@ -49,5 +50,29 @@ namespace ZR.Admin.WebApi.Extensions
return app; return app;
} }
/// <summary>
/// 初始化字典
/// </summary>
/// <param name="app"></param>
/// <returns></returns>
public static IApplicationBuilder UseInit(this IApplicationBuilder app)
{
Console.WriteLine("初始化字典数据...");
var db = DbScoped.SugarScope;
var types = db.Queryable<SysDictType>()
.Where(it => it.Status == "0")
.Select(it => it.DictType)
.ToList();
//上面有耗时操作写在Any上面保证程序启动后只执行一次
if (!db.ConfigQuery.Any())
{
foreach (var type in types)
{
db.ConfigQuery.SetTable<SysDictData>(it => SqlFunc.ToString(it.DictValue), it => it.DictLabel, type, it => it.DictType == type);
}
}
return app;
}
} }
} }

View File

@ -120,6 +120,9 @@ if (builder.Environment.IsProduction())
//恢复/启动任务 //恢复/启动任务
app.UseAddTaskSchedulers(); app.UseAddTaskSchedulers();
} }
//初始化字典数据
app.UseInit();
//使用swagger //使用swagger
app.UseSwagger(); app.UseSwagger();
//启用客户端IP限制速率 //启用客户端IP限制速率

View File

@ -136,7 +136,7 @@ $if(replaceDto.ShowBtnExport)
{ {
parm.PageNum = 1; parm.PageNum = 1;
parm.PageSize = 100000; parm.PageSize = 100000;
var list = _${replaceDto.ModelTypeName}Service.GetList(parm).Result; var list = _${replaceDto.ModelTypeName}Service.ExportList(parm).Result;
if (list == null || list.Count <= 0) if (list == null || list.Count <= 0)
{ {
return ToResponse(ResultCode.FAIL, "没有要导出的数据"); return ToResponse(ResultCode.FAIL, "没有要导出的数据");

View File

@ -38,7 +38,7 @@ $if(item.IsRequired)
$end $end
$if(replaceDto.ShowBtnExport) $if(replaceDto.ShowBtnExport)
$if(item.IsExport) $if(item.IsExport)
[ExcelColumn(Name = "$if(item.ColumnComment == "")${item.CsharpField}${else}${item.ColumnComment}${end}"$if(item.CsharpType == "DateTime"), Format = "yyyy-MM-dd HH:mm:ss"$end)] [ExcelColumn(Name = "$if(item.ColumnComment == "")${item.CsharpField}${else}${item.ColumnComment}${end}"$if(item.CsharpType == "DateTime"), Format = "yyyy-MM-dd HH:mm:ss", Width = 20$end)]
[ExcelColumnName("$if(item.ColumnComment == "")${item.CsharpField}${else}${item.ColumnComment}${end}")] [ExcelColumnName("$if(item.ColumnComment == "")${item.CsharpField}${else}${item.ColumnComment}${end}")]
$else $else
[ExcelIgnore] [ExcelIgnore]
@ -63,6 +63,13 @@ $if(replaceDto.ShowBtnExport)
[ExcelIgnore] [ExcelIgnore]
$end $end
public List<${genTable.SubTable.ClassName}Dto> ${genTable.SubTable.ClassName}Nav { get; set; } public List<${genTable.SubTable.ClassName}Dto> ${genTable.SubTable.ClassName}Nav { get; set; }
$end
$foreach(column in dicts)
$if(column.IsExport)
[ExcelColumn(Name = "$if(column.ColumnComment == "")${column.CsharpField}${else}${column.ColumnComment}${end}")]
public string ${column.CsharpField}Label { get; set; }
$end
$end $end
} }
} }

View File

@ -18,6 +18,7 @@ namespace ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNam
$if(genTable.TplCategory == "tree") $if(genTable.TplCategory == "tree")
List<${replaceDto.ModelTypeName}> GetTreeList(${replaceDto.ModelTypeName}QueryDto parm); List<${replaceDto.ModelTypeName}> GetTreeList(${replaceDto.ModelTypeName}QueryDto parm);
$end $end
${replaceDto.ModelTypeName} Add${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} parm); ${replaceDto.ModelTypeName} Add${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} parm);
int Update${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} parm); int Update${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} parm);
@ -28,5 +29,9 @@ $end
$if(replaceDto.ShowBtnImport) $if(replaceDto.ShowBtnImport)
(string, object, object) Import${replaceDto.ModelTypeName}(List<${replaceDto.ModelTypeName}> list); (string, object, object) Import${replaceDto.ModelTypeName}(List<${replaceDto.ModelTypeName}> list);
$end $end
$if(replaceDto.ShowBtnExport)
PagedInfo<${replaceDto.ModelTypeName}Dto> ExportList(${replaceDto.ModelTypeName}QueryDto parm);
$end
} }
} }

View File

@ -27,28 +27,8 @@ namespace ${options.ServicesNamespace}.${options.SubNamespace}
/// <returns></returns> /// <returns></returns>
public PagedInfo<${replaceDto.ModelTypeName}Dto> GetList(${replaceDto.ModelTypeName}QueryDto parm) public PagedInfo<${replaceDto.ModelTypeName}Dto> GetList(${replaceDto.ModelTypeName}QueryDto parm)
{ {
var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>(); var predicate = QueryExp(parm);
$foreach(column in genTable.Columns)
$if(column.IsQuery)
$if(column.HtmlType == "selectMulti")
predicate = predicate.AndIF(parm.${column.CsharpField} != null, it => parm.${column.CsharpField}.Contains(it.${column.CsharpField}));
$elseif(column.CsharpType == "string")
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.${column.CsharpField}), ${codeTool.QueryExp(column.CsharpField, column.QueryType)};
$elseif(column.CsharpType == "DateTime")
$if(column.HtmlType == "month")
DateTime monthEnd = Convert.ToDateTime(parm.${column.CsharpField}).AddMonths(1);
predicate = predicate.AndIF(parm.${column.CsharpField} != null, it => it.${column.CsharpField} >= parm.${column.CsharpField} && it.${column.CsharpField} < monthEnd);
$else
predicate = predicate.AndIF(parm.Begin${column.CsharpField} == null, it => it.${column.CsharpField} >= DateTime.Now.ToShortDateString().ParseToDateTime());
predicate = predicate.AndIF(parm.Begin${column.CsharpField} != null, it => it.${column.CsharpField} >= parm.Begin${column.CsharpField});
predicate = predicate.AndIF(parm.End${column.CsharpField} != null, it => it.${column.CsharpField} <= parm.End${column.CsharpField});
$end
$elseif(column.CsharpType == "int" || column.CsharpType == "long")
predicate = predicate.AndIF(parm.${column.CsharpField} != null, ${codeTool.QueryExp(column.CsharpField, column.QueryType)};
$end
$end
$end
var response = Queryable() var response = Queryable()
$if(null != genTable.SubTableName && "" != genTable.SubTableName) $if(null != genTable.SubTableName && "" != genTable.SubTableName)
//.Includes(x => x.${genTable.SubTable.ClassName}Nav) //填充子对象 //.Includes(x => x.${genTable.SubTable.ClassName}Nav) //填充子对象
@ -199,5 +179,63 @@ $end
return (msg, x.ErrorList, x.IgnoreList); return (msg, x.ErrorList, x.IgnoreList);
} }
$end $end
$if(replaceDto.ShowBtnExport)
/// <summary>
/// 导出${genTable.FunctionName}
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public PagedInfo<${replaceDto.ModelTypeName}Dto> ExportList(${replaceDto.ModelTypeName}QueryDto parm)
{
var predicate = QueryExp(parm);
var response = Queryable()
.Where(predicate.ToExpression())
.Select((it) => new ${replaceDto.ModelTypeName}Dto()
{
$foreach(column in dicts)
$if(column.DictType != "")
${column.CsharpField}Label = it.${column.CsharpField}.GetConfigValue<Model.System.SysDictData>("${column.DictType}"),
$end
$end
}, true)
.ToPage(parm);
return response;
$end
}
/// <summary>
/// 查询导出表达式
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
private static Expressionable<${replaceDto.ModelTypeName}> QueryExp(${replaceDto.ModelTypeName}QueryDto parm)
{
var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>();
$foreach(column in genTable.Columns)
$if(column.IsQuery)
$if(column.HtmlType == "selectMulti")
predicate = predicate.AndIF(parm.${column.CsharpField} != null, it => parm.${column.CsharpField}.Contains(it.${column.CsharpField}));
$elseif(column.CsharpType == "string")
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.${column.CsharpField}), ${codeTool.QueryExp(column.CsharpField, column.QueryType)};
$elseif(column.CsharpType == "DateTime")
$if(column.HtmlType == "month")
DateTime monthEnd = Convert.ToDateTime(parm.${column.CsharpField}).AddMonths(1);
predicate = predicate.AndIF(parm.${column.CsharpField} != null, it => it.${column.CsharpField} >= parm.${column.CsharpField} && it.${column.CsharpField} < monthEnd);
$else
predicate = predicate.AndIF(parm.Begin${column.CsharpField} == null, it => it.${column.CsharpField} >= DateTime.Now.ToShortDateString().ParseToDateTime());
predicate = predicate.AndIF(parm.Begin${column.CsharpField} != null, it => it.${column.CsharpField} >= parm.Begin${column.CsharpField});
predicate = predicate.AndIF(parm.End${column.CsharpField} != null, it => it.${column.CsharpField} <= parm.End${column.CsharpField});
$end
$elseif(column.CsharpType == "int" || column.CsharpType == "long")
predicate = predicate.AndIF(parm.${column.CsharpField} != null, ${codeTool.QueryExp(column.CsharpField, column.QueryType)};
$end
$end
$end
return predicate;
}
} }
} }