✨代码生成导出数据支持字典类型数据导出
This commit is contained in:
parent
d49d59f1e9
commit
332acde5a0
@ -1,4 +1,5 @@
|
||||
using Quartz.Spi;
|
||||
using SqlSugar;
|
||||
using SqlSugar.IOC;
|
||||
using ZR.Model.System;
|
||||
using ZR.Tasks;
|
||||
@ -49,5 +50,29 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
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.UseInit();
|
||||
|
||||
//使用swagger
|
||||
app.UseSwagger();
|
||||
//启用客户端IP限制速率
|
||||
|
||||
@ -136,7 +136,7 @@ $if(replaceDto.ShowBtnExport)
|
||||
{
|
||||
parm.PageNum = 1;
|
||||
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)
|
||||
{
|
||||
return ToResponse(ResultCode.FAIL, "没有要导出的数据");
|
||||
|
||||
@ -38,7 +38,7 @@ $if(item.IsRequired)
|
||||
$end
|
||||
$if(replaceDto.ShowBtnExport)
|
||||
$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}")]
|
||||
$else
|
||||
[ExcelIgnore]
|
||||
@ -63,6 +63,13 @@ $if(replaceDto.ShowBtnExport)
|
||||
[ExcelIgnore]
|
||||
$end
|
||||
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
|
||||
}
|
||||
}
|
||||
@ -18,6 +18,7 @@ namespace ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNam
|
||||
$if(genTable.TplCategory == "tree")
|
||||
List<${replaceDto.ModelTypeName}> GetTreeList(${replaceDto.ModelTypeName}QueryDto parm);
|
||||
$end
|
||||
|
||||
${replaceDto.ModelTypeName} Add${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} parm);
|
||||
|
||||
int Update${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} parm);
|
||||
@ -28,5 +29,9 @@ $end
|
||||
$if(replaceDto.ShowBtnImport)
|
||||
(string, object, object) Import${replaceDto.ModelTypeName}(List<${replaceDto.ModelTypeName}> list);
|
||||
$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>
|
||||
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()
|
||||
$if(null != genTable.SubTableName && "" != genTable.SubTableName)
|
||||
//.Includes(x => x.${genTable.SubTable.ClassName}Nav) //填充子对象
|
||||
@ -199,5 +179,63 @@ $end
|
||||
return (msg, x.ErrorList, x.IgnoreList);
|
||||
}
|
||||
$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