Browse Source

feat: enhance date range query support by adding LocalDate and LocalDateTime parsing in controllers and entity classes

lengleng 1 month ago
parent
commit
a194e6f59b
4 changed files with 38 additions and 9 deletions
  1. 16 3
      multiple/主子Contoller.java
  2. 16 3
      single/Controller.java
  3. 5 1
      single/实体.java
  4. 1 2
      single/表格.vue

+ 16 - 3
multiple/主子Contoller.java

@@ -5,6 +5,8 @@ import cn.hutool.core.util.StrUtil;
 #end
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.date.DateUtil;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -76,15 +78,26 @@ public class ${ClassName}Controller {
 #else
 #set($expression="Objects.nonNull")
 #end
-#if($field.queryFormType == 'date-range' || $field.queryFormType == 'datetime-range')
+#if($field.queryFormType == 'date-range')
 		// ${field.fieldComment}范围查询
 		if (ArrayUtil.isNotEmpty(${className}.get${field.attrName.substring(0,1).toUpperCase()}${field.attrName.substring(1)}Range())) {
 			String[] range = ${className}.get${field.attrName.substring(0,1).toUpperCase()}${field.attrName.substring(1)}Range();
 			if (StrUtil.isNotBlank(range[0])) {
-				wrapper.ge(${ClassName}Entity::$getAttrName, range[0]);
+				wrapper.ge(${ClassName}Entity::$getAttrName, LocalDate.parse(range[0]));
 			}
 			if (StrUtil.isNotBlank(range[1])) {
-				wrapper.le(${ClassName}Entity::$getAttrName, range[1]);
+				wrapper.le(${ClassName}Entity::$getAttrName, LocalDate.parse(range[1]));
+			}
+		}
+#elseif($field.queryFormType == 'datetime-range')
+		// ${field.fieldComment}范围查询
+		if (ArrayUtil.isNotEmpty(${className}.get${field.attrName.substring(0,1).toUpperCase()}${field.attrName.substring(1)}Range())) {
+			String[] range = ${className}.get${field.attrName.substring(0,1).toUpperCase()}${field.attrName.substring(1)}Range();
+			if (StrUtil.isNotBlank(range[0])) {
+				wrapper.ge(${ClassName}Entity::$getAttrName, LocalDateTime.parse(range[0]));
+			}
+			if (StrUtil.isNotBlank(range[1])) {
+				wrapper.le(${ClassName}Entity::$getAttrName, LocalDateTime.parse(range[1]));
 			}
 		}
 #elseif($field.queryType == '=')

+ 16 - 3
single/Controller.java

@@ -6,6 +6,8 @@ import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -77,15 +79,26 @@ public class ${ClassName}Controller {
 #else
 #set($expression="Objects.nonNull")
 #end
-#if($field.queryFormType == 'date-range' || $field.queryFormType == 'datetime-range')
+#if($field.queryFormType == 'date-range')
 		// ${field.fieldComment}范围查询
 		if (ArrayUtil.isNotEmpty(${className}.get${field.attrName.substring(0,1).toUpperCase()}${field.attrName.substring(1)}Range())) {
 			String[] range = ${className}.get${field.attrName.substring(0,1).toUpperCase()}${field.attrName.substring(1)}Range();
 			if (StrUtil.isNotBlank(range[0])) {
-				wrapper.ge(${ClassName}Entity::$getAttrName, range[0]);
+				wrapper.ge(${ClassName}Entity::$getAttrName, LocalDate.parse(range[0]));
 			}
 			if (StrUtil.isNotBlank(range[1])) {
-				wrapper.le(${ClassName}Entity::$getAttrName, range[1]);
+				wrapper.le(${ClassName}Entity::$getAttrName, LocalDate.parse(range[1]));
+			}
+		}
+#elseif($field.queryFormType == 'datetime-range')
+		// ${field.fieldComment}范围查询
+		if (ArrayUtil.isNotEmpty(${className}.get${field.attrName.substring(0,1).toUpperCase()}${field.attrName.substring(1)}Range())) {
+			String[] range = ${className}.get${field.attrName.substring(0,1).toUpperCase()}${field.attrName.substring(1)}Range();
+			if (StrUtil.isNotBlank(range[0])) {
+				wrapper.ge(${ClassName}Entity::$getAttrName, LocalDateTime.parse(range[0]));
+			}
+			if (StrUtil.isNotBlank(range[1])) {
+				wrapper.le(${ClassName}Entity::$getAttrName, LocalDateTime.parse(range[1]));
 			}
 		}
 #elseif($field.queryType == '=')

+ 5 - 1
single/实体.java

@@ -50,7 +50,11 @@ public class ${ClassName}Entity extends Model<${ClassName}Entity> {
 	@TableField(fill = FieldFill.INSERT)
 #end
     @Schema(description="$comment"#if($field.hidden),hidden=$field.hidden#end)
-#if($field.formType == 'checkbox')
+#if($field.fieldType == 'date')
+    private LocalDate $field.attrName;
+#elseif($field.fieldType == 'datetime')
+    private LocalDateTime $field.attrName;
+#elseif($field.formType == 'checkbox')
     private ${field.attrType}[] $field.attrName;
 #else
     private $field.attrType $field.attrName;

+ 1 - 2
single/表格.vue

@@ -166,8 +166,7 @@
           <template #default="scope">
             <el-image 
               v-if="scope.row.${field.attrName}"
-              :src="scope.row.${field.attrName}" 
-              :preview-src-list="[scope.row.${field.attrName}]"
+              :src="baseURL + scope.row.${field.attrName}" 
               fit="cover"
               class="w-20 h-20 rounded"
               :preview-teleported="true"