优化代码生成Controller 查询条件拼接

This commit is contained in:
不做码农 2021-12-10 22:05:25 +08:00
parent 0f3424de55
commit 1fa9d2aad5
6 changed files with 56 additions and 43 deletions

View File

@ -51,7 +51,18 @@ namespace ${options.ApiControllerNamespace}.Controllers
var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>();
//搜索条件查询语法参考Sqlsugar
${QueryCondition}
$foreach(column in genTable.Columns)
$if(column.IsQuery)
$if(column.CsharpType == "string")
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.${column.CsharpField}), ${codeTool.QueryExp(column.CsharpField, column.QueryType)};
$elseif(column.CsharpType == "DateTime")
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});
$elseif(column.CsharpType == "int" || column.CsharpType == "long")
predicate = predicate.AndIF(parm.${column.CsharpField} != null, ${codeTool.QueryExp(column.CsharpField, column.QueryType)};
$end
$end
$end
$if(genTable.SortField != "" && genTable.SortField != null)
var response = _${replaceDto.ModelTypeName}Service.GetPages(predicate.ToExpression(), parm, x => x.${genTable.SortField}, "${genTable.SortType}");
$else

View File

@ -14,7 +14,7 @@ $foreach(item in genTable.Columns)
$if((item.IsInsert || item.IsEdit || item.IsPk || item.IsIncrement))
public $item.CsharpType$item.RequiredStr $item.CsharpField { get; set; }
$end
${end}
$end
}
/// <summary>
@ -27,8 +27,8 @@ $if(item.IsQuery && item.htmlType == "datetime")
public DateTime? Begin$item.CsharpField { get; set; }
public DateTime? End$item.CsharpField { get; set; }
$elseif(item.IsQuery)
public $item.CsharpType $item.CsharpField { get; set; }
public $item.CsharpType$if(item.CsharpType != "string")?$end $item.CsharpField { get; set; }
$end
$end
${end}
}
}

View File

@ -8,7 +8,6 @@ ${vueQueryFormHtml}
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-row>
</el-form>
<!-- 工具区域 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
@ -93,7 +92,12 @@ export default {
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 20
pageSize: 20,
$foreach(item in genTable.Columns)
$if(item.IsQuery == true)
${item.columnName}: undefined,
$end
$end
},
// 弹出层标题
title: "",
@ -101,8 +105,6 @@ export default {
open: false,
// 表单参数
form: {},
// 时间范围数组
timeRange: [],
columns: [
$set(index = 0)
$foreach(column in genTable.Columns)

View File

@ -11,34 +11,34 @@ namespace ZR.CodeGenerator
/// </summary>
public class CodeGenerateTemplate
{
/// <summary>
/// 查询Dto属性
/// </summary>
/// <param name="tbColumn"></param>
/// <param name="replaceDto">替换字符对象</param>
/// <returns></returns>
public static void GetQueryDtoProperty(GenTableColumn tbColumn, ReplaceDto replaceDto)
{
if (tbColumn.IsQuery)
{
//字符串类型表达式
if (tbColumn.CsharpType == GenConstants.TYPE_STRING)
{
replaceDto.QueryCondition += $" predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.{tbColumn.CsharpField}), {QueryExp(tbColumn.CsharpField, tbColumn.QueryType)};\n";
}
//int类型表达式
if (CodeGeneratorTool.IsNumber(tbColumn.CsharpType))
{
replaceDto.QueryCondition += $" predicate = predicate.AndIF(parm.{tbColumn.CsharpField} > 0, {QueryExp(tbColumn.CsharpField, tbColumn.QueryType)};\n";
}
//时间类型
if (tbColumn.CsharpType == GenConstants.TYPE_DATE)
{
replaceDto.QueryCondition += $" predicate = predicate.AndIF(parm.Begin{tbColumn.CsharpField} != null, it => it.{tbColumn.CsharpField} >= parm.Begin{tbColumn.CsharpField});\n";
replaceDto.QueryCondition += $" predicate = predicate.AndIF(parm.End{tbColumn.CsharpField} != null, it => it.{tbColumn.CsharpField} <= parm.End{tbColumn.CsharpField});\n";
}
}
}
///// <summary>
///// 查询Dto属性
///// </summary>
///// <param name="tbColumn"></param>
///// <param name="replaceDto">替换字符对象</param>
///// <returns></returns>
//public static void GetQueryDtoProperty(GenTableColumn tbColumn, ReplaceDto replaceDto)
//{
// if (tbColumn.IsQuery)
// {
// //字符串类型表达式
// if (tbColumn.CsharpType == GenConstants.TYPE_STRING)
// {
// replaceDto.QueryCondition += $" predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.{tbColumn.CsharpField}), {QueryExp(tbColumn.CsharpField, tbColumn.QueryType)};\n";
// }
// //int类型表达式
// if (CodeGeneratorTool.IsNumber(tbColumn.CsharpType))
// {
// replaceDto.QueryCondition += $" predicate = predicate.AndIF(parm.{tbColumn.CsharpField} > 0, {QueryExp(tbColumn.CsharpField, tbColumn.QueryType)};\n";
// }
// //时间类型
// if (tbColumn.CsharpType == GenConstants.TYPE_DATE)
// {
// replaceDto.QueryCondition += $" predicate = predicate.AndIF(parm.Begin{tbColumn.CsharpField} != null, it => it.{tbColumn.CsharpField} >= parm.Begin{tbColumn.CsharpField});\n";
// replaceDto.QueryCondition += $" predicate = predicate.AndIF(parm.End{tbColumn.CsharpField} != null, it => it.{tbColumn.CsharpField} <= parm.End{tbColumn.CsharpField});\n";
// }
// }
//}
#region vue
@ -187,7 +187,7 @@ namespace ZR.CodeGenerator
else if ((dbFieldInfo.HtmlType == GenConstants.HTML_SELECT || dbFieldInfo.HtmlType == GenConstants.HTML_RADIO) && !string.IsNullOrEmpty(dbFieldInfo.DictType))
{
//string value = CodeGeneratorTool.IsNumber(dbFieldInfo.CsharpType) ? "parseInt(item.dictValue)" : "item.dictValue";
sb.AppendLine($" <el-form-item label=\"{ labelName}\" :label-width=\"labelWidth\" prop=\"{dbFieldInfo.ColumnName}\">");
sb.AppendLine($" <el-form-item label=\"{ labelName}\" prop=\"{dbFieldInfo.ColumnName}\">");
sb.AppendLine($" <el-select v-model=\"queryParams.{dbFieldInfo.ColumnName}\" placeholder=\"请选择{dbFieldInfo.ColumnComment}\" size=\"small\" >");
sb.AppendLine($" <el-option v-for=\"item in {dbFieldInfo.ColumnName}Options\" :key=\"item.dictValue\" :label=\"item.dictLabel\" :value=\"item.dictValue\"></el-option>");
sb.AppendLine(" </el-select>");
@ -196,7 +196,7 @@ namespace ZR.CodeGenerator
else if (dbFieldInfo.HtmlType == GenConstants.HTML_SELECT)
{
//string value = CodeGeneratorTool.IsNumber(dbFieldInfo.CsharpType) ? "parseInt(item.dictValue)" : "item.dictValue";
sb.AppendLine($" <el-form-item label=\"{ labelName}\" :label-width=\"labelWidth\" prop=\"{dbFieldInfo.ColumnName}\">");
sb.AppendLine($" <el-form-item label=\"{ labelName}\" prop=\"{dbFieldInfo.ColumnName}\">");
sb.AppendLine($" <el-select v-model=\"queryParams.{dbFieldInfo.ColumnName}\" placeholder=\"请选择{dbFieldInfo.ColumnComment}\" size=\"small\">");
sb.AppendLine($" <el-option v-for=\"item in {dbFieldInfo.ColumnName}Options\" :key=\"item.dictValue\" :label=\"item.dictLabel\" :value=\"item.dictValue\"></el-option>");
sb.AppendLine(" </el-select>");
@ -205,7 +205,7 @@ namespace ZR.CodeGenerator
else
{
string inputNumTxt = CodeGeneratorTool.IsNumber(dbFieldInfo.CsharpType) ? ".number" : "";
sb.AppendLine($" <el-form-item label=\"{ labelName}\" :label-width=\"labelWidth\">");
sb.AppendLine($" <el-form-item label=\"{ labelName}\" prop=\"{dbFieldInfo.ColumnName}\">");
sb.AppendLine($" <el-input v-model{inputNumTxt}=\"queryParams.{dbFieldInfo.ColumnName}\" placeholder=\"请输入{dbFieldInfo.ColumnComment}\" size=\"small\"/>");
sb.AppendLine(" </el-form-item>");
}

View File

@ -69,7 +69,7 @@ namespace ZR.CodeGenerator
{
replaceDto.UploadFile = 1;
}
CodeGenerateTemplate.GetQueryDtoProperty(dbFieldInfo, replaceDto);
//CodeGenerateTemplate.GetQueryDtoProperty(dbFieldInfo, replaceDto);
replaceDto.VueViewFormHtml += CodeGenerateTemplate.TplVueFormContent(dbFieldInfo);
replaceDto.VueViewListHtml += CodeGenerateTemplate.TplTableColumn(dbFieldInfo, dto.GenTable);
@ -432,7 +432,8 @@ namespace ZR.CodeGenerator
options.Data.Set("options", dto.GenOptions);
options.Data.Set("genTable", dto.GenTable);
options.Data.Set("btns", dto.CheckedBtn);
//options.Data.Set("codeTool", new CodeGeneratorTool());
options.Data.Set("tool", new CodeGeneratorTool());
options.Data.Set("codeTool", new CodeGenerateTemplate());
options.EnableCache = true;
//...其它数据
});

View File

@ -66,8 +66,7 @@ export function addDateRange(params, dateRange) {
}
export function addDateRange2(dateRange, index) {
console.log(dateRange);
var time = "";
var time = undefined;
if (null != dateRange && '' != dateRange) {
if (dateRange.length <= 2) {
time = dateRange[index];