refactor: 代码模板完善,增加日期筛选处理

This commit is contained in:
ray
2024-08-03 16:17:28 +08:00
parent af920d7cc2
commit ec35411239
6 changed files with 197 additions and 79 deletions

View File

@@ -26,6 +26,6 @@ public class UserPageQuery extends BasePageQuery {
private Long deptId;
@Schema(description="创建时间范围")
private List<String> createTimeRange;
private List<String> createTime;
}

View File

@@ -37,13 +37,13 @@
<if test='queryParams.deptId!=null'>
AND concat(',',concat(d.tree_path,',',d.id),',') like concat('%,',#{queryParams.deptId},',%')
</if>
<if test='queryParams.createTimeRange != null'>
<if test="queryParams.createTimeRange[0] != null and queryParams.createTimeRange[0].trim() neq ''">
AND u.create_time >=CONCAT(#{queryParams.createTimeRange[0]}, ' 00:00:00')
</if>
<if test="queryParams.createTimeRange[1] != null and queryParams.createTimeRange[0].trim() neq ''">
AND u.create_time &lt;= CONCAT(#{queryParams.createTimeRange[1]}, ' 23:59:59')
</if>
<if test="queryParams.createTime[0] != null and queryParams.createTime[0] != ''">
<bind name="startDate" value="queryParams.createTime[0].length() == 10 ? queryParams.createTime[0] + ' 00:00:00' : queryParams.createTime[0]"/>
AND u.create_time &gt;= #{startDate}
</if>
<if test="queryParams.createTime[1] != null and queryParams.createTime[1] != ''">
<bind name="endDate" value="queryParams.createTime[1].length() == 10 ? queryParams.createTime[1] + ' 23:59:59' : queryParams.createTime[1]"/>
AND u.create_time &lt;= #{endDate}
</if>
</where>
GROUP BY

View File

@@ -62,10 +62,24 @@ class ${entityName}API {
export default ${entityName}API;
/** $${businessName}分页查询参数 */
/** ${businessName}分页查询参数 */
export interface ${entityName}PageQuery extends PageQuery {
/** 搜索关键字 */
keywords?: string;
#foreach($fieldConfig in $fieldConfigs)
#if($fieldConfig.isShowInList)
#if("$!fieldConfig.fieldComment" != "")
/** ${fieldConfig.fieldComment} */
#end
#if($fieldConfig.formType == "DATE" || $fieldConfig.formType == "DATE_TIME")
#if($fieldConfig.queryType == "BETWEEN")
${fieldConfig.fieldName}?: [string, string];
#else
${fieldConfig.fieldName}?: ${fieldConfig.tsType};
#end
#else
${fieldConfig.fieldName}?: ${fieldConfig.tsType};
#end
#end
#end
}
/** ${businessName}表单对象 */

View File

@@ -6,35 +6,76 @@
#if($fieldConfig.isShowInQuery == 1)
<el-form-item label="$fieldConfig.fieldComment" prop="$fieldConfig.fieldName">
#if($fieldConfig.formType == "INPUT")
<el-input v-model="queryParams.$fieldConfig.fieldName" placeholder="$fieldConfig.fieldComment" clearable @keyup.enter="handleQuery" />
<el-input
v-model="queryParams.$fieldConfig.fieldName"
placeholder="$fieldConfig.fieldComment"
clearable
@keyup.enter="handleQuery"
/>
#elseif($fieldConfig.formType == "SELECT")
#if($fieldConfig.dictType != "")
<dictionary v-model="formData.$fieldConfig.fieldName" code="$fieldConfig.dictType" />
#else
<el-select v-model="formData.$fieldConfig.fieldName" placeholder="请选择$fieldConfig.fieldComment">
<el-option :key="1" :value="1" label="下拉项1"/>
<el-option :key="2" :value="2" label="下拉项2"/>
<el-option :key="3" :value="3" label="下拉项3"/>
<el-option :key="1" :value="1" label="选项一"/>
<el-option :key="2" :value="2" label="选项二"/>
</el-select>
#end
#elseif($fieldConfig.formType == "RADIO")
<el-radio-group v-model="queryParams.$fieldConfig.fieldName">
<el-radio v-for="option in $fieldConfig.options" :key="option.value" :label="option.value">{{ option.label }}</el-radio>
<el-radio :key="1" :label="1">选项一</el-radio>
<el-radio :key="2" :label="2">选项二</el-radio>
</el-radio-group>
#elseif($fieldConfig.formType == "CHECK_BOX")
<el-checkbox-group v-model="queryParams.$fieldConfig.fieldName">
<el-checkbox v-for="option in $fieldConfig.options" :key="option.value" :label="option.value">{{ option.label }}</el-checkbox>
<el-checkbox :key="1" :label="1">选项一</el-checkbox>
<el-checkbox :key="2" :label="2">选项二</el-checkbox>
</el-checkbox-group>
#elseif($fieldConfig.formType == "INPUT_NUMBER")
<el-input-number v-model="queryParams.$fieldConfig.fieldName" placeholder="$fieldConfig.fieldComment" />
<el-input-number
v-model="queryParams.$fieldConfig.fieldName"
placeholder="$fieldConfig.fieldComment"
/>
#elseif($fieldConfig.formType == "SWITCH")
<el-switch v-model="queryParams.$fieldConfig.fieldName" />
<el-switch
v-model="queryParams.$fieldConfig.fieldName"
:active-value="1"
:inactive-value="0"
/>
#elseif($fieldConfig.formType == "TEXT_AREA")
<el-input type="textarea" v-model="queryParams.$fieldConfig.fieldName" placeholder="$fieldConfig.fieldComment" />
<el-input type="textarea"
v-model="queryParams.$fieldConfig.fieldName"
placeholder="$fieldConfig.fieldComment"
/>
#elseif($fieldConfig.formType == "DATE_TIME")
<el-date-picker v-model="queryParams.$fieldConfig.fieldName" type="datetime" placeholder="$fieldConfig.fieldComment" />
<el-date-picker
v-model="queryParams.$fieldConfig.fieldName"
#if($fieldConfig.queryType == "BETWEEN")
type="daterange"
range-separator="~"
start-placeholder="开始时间"
end-placeholder="截止时间"
#else
type="datetime"
placeholder="$fieldConfig.fieldComment"
#end
value-format="YYYY-MM-DD HH:mm:ss"
/>
#elseif($fieldConfig.formType == "DATE")
<el-date-picker v-model="queryParams.$fieldConfig.fieldName" type="date" placeholder="$fieldConfig.fieldComment" />
<el-date-picker
class="!w-[240px]"
v-model="queryParams.$fieldConfig.fieldName"
#if($fieldConfig.queryType == "BETWEEN")
type="daterange"
range-separator="~"
start-placeholder="开始时间"
end-placeholder="截止时间"
#else
type="date"
placeholder="$fieldConfig.fieldComment"
#end
value-format="YYYY-MM-DD"
/>
#end
</el-form-item>
#end
@@ -53,79 +94,127 @@
</template>
<el-table
ref="dataTableRef"
v-loading="loading"
:data="pageData"
highlight-current-row
border
@selection-change="handleSelectionChange"
ref="dataTableRef"
v-loading="loading"
:data="pageData"
highlight-current-row
border
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
#foreach($fieldConfig in $fieldConfigs)
#if($fieldConfig.isShowInList == 1)
<el-table-column
key="$fieldConfig.fieldName"
label="$fieldConfig.fieldComment"
prop="$fieldConfig.fieldName"
min-width="100"
/>
<el-table-column
key="$fieldConfig.fieldName"
label="$fieldConfig.fieldComment"
prop="$fieldConfig.fieldName"
min-width="100"
/>
#end
#end
<el-table-column fixed="right" label="操作" width="220">
<template #default="scope">
<el-button type="primary" size="small" link @click="handleOpenDialog(scope.row.id)"><i-ep-edit />编辑</el-button>
<el-button type="danger" size="small" link @click="handleDelete(scope.row.id)"><i-ep-delete />删除</el-button>
<el-button
type="primary"
size="small"
link
@click="handleOpenDialog(scope.row.id)"
>
<i-ep-edit />
编辑
</el-button>
<el-button
type="danger"
size="small"
link
@click="handleDelete(scope.row.id)"
>
<i-ep-delete />
删除
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-if="total > 0"
v-model:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="handleQuery"
v-if="total > 0"
v-model:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="handleQuery"
/>
</el-card>
<!-- $!{businessName}表单弹窗 -->
<el-dialog v-model="dialog.visible" :title="dialog.title" width="500px" @close="handleCloseDialog">
<el-dialog
v-model="dialog.visible"
:title="dialog.title"
width="500px"
@close="handleCloseDialog"
>
<el-form ref="dataFormRef" :model="formData" :rules="rules" label-width="100px">
#foreach($fieldConfig in $fieldConfigs)
#if($fieldConfig.isShowInForm == 1)
<el-form-item abel="$fieldConfig.fieldComment" prop="$fieldConfig.fieldName">
#if($fieldConfig.formType == "INPUT")
<el-input v-model="formData.$fieldConfig.fieldName" placeholder="'请输入$fieldConfig.fieldComment" />
#elseif($fieldConfig.formType == "SELECT")
#if($fieldConfig.dictType != "")
<dictionary v-model="formData.$fieldConfig.fieldName" code="$fieldConfig.dictType" />
#else
<el-select v-model="formData.$fieldConfig.fieldName" placeholder="'请选择$fieldConfig.fieldComment">
<el-option :key="1" :value="1" label="下拉项1"/>
<el-option :key="2" :value="2" label="下拉项2"/>
<el-option :key="3" :value="3" label="下拉项3"/>
</el-select>
<el-form-item label="$fieldConfig.fieldComment" prop="$fieldConfig.fieldName">
#if($fieldConfig.formType == "INPUT")
<el-input
v-model="queryParams.$fieldConfig.fieldName"
placeholder="$fieldConfig.fieldComment"
clearable
@keyup.enter="handleQuery"
/>
#elseif($fieldConfig.formType == "SELECT")
#if($fieldConfig.dictType != "")
<dictionary v-model="formData.$fieldConfig.fieldName" code="$fieldConfig.dictType" />
#else
<el-select v-model="formData.$fieldConfig.fieldName" placeholder="请选择$fieldConfig.fieldComment">
<el-option :value="0" label="选项一"/>
<el-option :value="1" label="选项二"/>
</el-select>
#end
#elseif($fieldConfig.formType == "RADIO")
<el-radio-group v-model="queryParams.$fieldConfig.fieldName">
<el-radio :value="0">选项一</el-radio>
<el-radio :value="1">选项二</el-radio>
</el-radio-group>
#elseif($fieldConfig.formType == "CHECK_BOX")
<el-checkbox-group v-model="queryParams.$fieldConfig.fieldName">
<el-checkbox :value="0">选项一</el-checkbox>
<el-checkbox :value="1">选项二</el-checkbox>
</el-checkbox-group>
#elseif($fieldConfig.formType == "INPUT_NUMBER")
<el-input-number
v-model="queryParams.$fieldConfig.fieldName"
placeholder="$fieldConfig.fieldComment"
/>
#elseif($fieldConfig.formType == "SWITCH")
<el-switch
v-model="queryParams.$fieldConfig.fieldName"
:active-value="1"
:inactive-value="0"
/>
#elseif($fieldConfig.formType == "TEXT_AREA")
<el-input type="textarea"
v-model="queryParams.$fieldConfig.fieldName"
placeholder="$fieldConfig.fieldComment"
/>
#elseif($fieldConfig.formType == "DATE_TIME")
<el-date-picker
v-model="queryParams.$fieldConfig.fieldName"
type="datetime"
placeholder="$fieldConfig.fieldComment"
value-format="YYYY-MM-DD HH:mm:ss"
/>
#elseif($fieldConfig.formType == "DATE")
<el-date-picker
class="!w-[240px]"
v-model="queryParams.$fieldConfig.fieldName"
type="date"
placeholder="$fieldConfig.fieldComment"
value-format="YYYY-MM-DD"
/>
#end
#elseif($fieldConfig.formType == "RADIO")
<el-radio-group v-model="formData.$fieldConfig.fieldName">
<el-radio v-for="option in $fieldConfig.options" :key="option.value" :label="option.value">{{ option.label }}</el-radio>
</el-radio-group>
#elseif($fieldConfig.formType == "CHECK_BOX")
<el-checkbox-group v-model="formData.$fieldConfig.fieldName">
<el-checkbox v-for="option in $fieldConfig.options" :key="option.value" :label="option.value">{{ option.label }}</el-checkbox>
</el-checkbox-group>
#elseif($fieldConfig.formType == "INPUT_NUMBER")
<el-input-number v-model="formData.$fieldConfig.fieldName" placeholder="'请输入$fieldConfig.fieldComment" />
#elseif($fieldConfig.formType == "SWITCH")
<el-switch v-model="formData.$fieldConfig.fieldName" />
#elseif($fieldConfig.formType == "TEXT_AREA")
<el-input type="textarea" v-model="formData.$fieldConfig.fieldName" placeholder="'请输入$fieldConfig.fieldComment" />
#elseif($fieldConfig.formType == "DATE_TIME")
<el-date-picker v-model="formData.$fieldConfig.fieldName" type="datetime" placeholder="'请选择$fieldConfig.fieldComment" />
#elseif($fieldConfig.formType == "DATE")
<el-date-picker v-model="formData.$fieldConfig.fieldName" type="date" placeholder="'请选择$fieldConfig.fieldComment" />
#end
</el-form-item>
</el-form-item>
#end
#end
</el-form>

View File

@@ -22,7 +22,11 @@
#if($fieldConfigs)
#foreach($fieldConfig in ${fieldConfigs})
#if($fieldConfig.isShowInQuery)
#if($fieldConfig.fieldType == "String")
<if test="queryParams.${fieldConfig.fieldName} != null and queryParams.${fieldConfig.fieldName} != ''">
#else
<if test="queryParams.${fieldConfig.fieldName} != null">
#end
#set ($queryType = ${fieldConfig.queryType})
#if($queryType == "EQ")
AND ${fieldConfig.columnName} = #{queryParams.${fieldConfig.fieldName}}
@@ -33,11 +37,14 @@
AND ${fieldConfig.columnName} IN <foreach collection="queryParams.${fieldConfig.fieldName}" item="item" open="(" close=")" separator=",">#{item}</foreach>
</if>
#elseif($queryType == "BETWEEN")
#if(${fieldConfig.fieldType} == "LocalDateTime")
AND ${fieldConfig.columnName} BETWEEN STR_TO_DATE(#{queryParams.${fieldConfig.fieldName}Start}, '%Y-%m-%d %H:%i:%s') AND STR_TO_DATE(#{queryParams.${fieldConfig.fieldName}End}, '%Y-%m-%d %H:%i:%s')
#else
AND ${fieldConfig.columnName} BETWEEN #{queryParams.${fieldConfig.fieldName}Start} AND #{queryParams.${fieldConfig.fieldName}End}
#end
<if test="queryParams.${fieldConfig.fieldName}[0] != null and queryParams.${fieldConfig.fieldName}[0] != ''">
<bind name="startDate" value="queryParams.${fieldConfig.fieldName}[0].length() == 10 ? queryParams.${fieldConfig.fieldName}[0] + ' 00:00:00' : queryParams.${fieldConfig.fieldName}[0]"/>
AND u.create_time &gt;= #{startDate}
</if>
<if test="queryParams.${fieldConfig.fieldName}[1] != null and queryParams.${fieldConfig.fieldName}[1] != ''">
<bind name="endDate" value="queryParams.${fieldConfig.fieldName}[1].length() == 10 ? queryParams.${fieldConfig.fieldName}[1] + ' 23:59:59' : queryParams.${fieldConfig.fieldName}[1]"/>
AND u.create_time &lt;= #{endDate}
</if>
#elseif($queryType == "GT")
AND ${fieldConfig.columnName} > #{queryParams.${fieldConfig.fieldName}}
#elseif($queryType == "GE")

View File

@@ -29,7 +29,15 @@ public class ${entityName}Query extends BasePageQuery {
#if("$!fieldConfig.fieldComment" != "")
@Schema(description = "${fieldConfig.fieldComment}")
#end
#if($fieldConfig.formType == "DATE" || $fieldConfig.formType == "DATE_TIME")
#if($fieldConfig.queryType == "BETWEEN")
private List<String> ${fieldConfig.fieldName};
#else
private ${fieldConfig.fieldType} ${fieldConfig.fieldName};
#end
#else
private ${fieldConfig.fieldType} ${fieldConfig.fieldName};
#end
#end
#end
#end