✨代码生成导出数据支持字典类型数据导出
This commit is contained in:
parent
d49d59f1e9
commit
332acde5a0
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -120,6 +120,9 @@ if (builder.Environment.IsProduction())
|
|||||||
//恢复/启动任务
|
//恢复/启动任务
|
||||||
app.UseAddTaskSchedulers();
|
app.UseAddTaskSchedulers();
|
||||||
}
|
}
|
||||||
|
//初始化字典数据
|
||||||
|
app.UseInit();
|
||||||
|
|
||||||
//使用swagger
|
//使用swagger
|
||||||
app.UseSwagger();
|
app.UseSwagger();
|
||||||
//启用客户端IP限制速率
|
//启用客户端IP限制速率
|
||||||
|
|||||||
@ -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, "没有要导出的数据");
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user