修改组合筛选查询功能

This commit is contained in:
wyt
2025-12-11 10:53:28 +08:00
parent 68cc26d239
commit fb0e30ad63
4 changed files with 304 additions and 79 deletions

View File

@@ -200,33 +200,38 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="params != null and !params.isEmpty()">
<!-- 空值条件 -->
<foreach collection="params.entrySet()" item="value" index="key">
<if test="value == 'IS_NULL'">
<if test="value != null and value.toString() == 'IS_NULL'">
AND ${key} IS NULL
</if>
<if test="value == 'NOT_NULL'">
<if test="value != null and value.toString() == 'NOT_NULL'">
AND ${key} IS NOT NULL
</if>
</foreach>
<!-- 范围条件 -->
<foreach collection="params.entrySet()" item="value" index="key">
<if test="value != null and value.toString().startsWith('GT:')">
AND ${key} &gt; #{value.toString().substring(3)}
</if>
<if test="value != null and value.toString().startsWith('LT:')">
AND ${key} &lt; #{value.toString().substring(3)}
</if>
<if test="value != null and value.toString().startsWith('GE:')">
AND ${key} &gt;= #{value.toString().substring(3)}
</if>
<if test="value != null and value.toString().startsWith('LE:')">
AND ${key} &lt;= #{value.toString().substring(3)}
<!-- 显式将 value 转换为字符串 -->
<if test="value != null and value.toString() != null">
<choose>
<when test="value.toString().startsWith('GT:')">
AND ${key} &gt; #{value.toString().substring(3)}
</when>
<when test="value.toString().startsWith('LT:')">
AND ${key} &lt; #{value.toString().substring(3)}
</when>
<when test="value.toString().startsWith('GE:')">
AND ${key} &gt;= #{value.toString().substring(3)}
</when>
<when test="value.toString().startsWith('LE:')">
AND ${key} &lt;= #{value.toString().substring(3)}
</when>
</choose>
</if>
</foreach>
<!-- 列表条件 -->
<foreach collection="params.entrySet()" item="value" index="key">
<if test="value != null and value.toString().contains(',')">
<if test="value != null and value.toString() != null and value.toString().contains(',')">
AND ${key} IN
<foreach collection="value.toString().split(',')" item="item" open="(" separator="," close=")">
#{item}
@@ -236,35 +241,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!-- 模糊查询条件(针对文本字段) -->
<foreach collection="params.entrySet()" item="value" index="key">
<if test="value != null and
(key == 'bs_manage_tags' or key == 'electronic_tags' or
key == 'dr_ranch' or key == 'sheepfold_name' or
key == 'variety' or key == 'family' or
key == 'name' or key == 'breed' or
key == 'father_manage_tags' or key == 'mother_manage_tags' or
key == 'receptor_manage_tags') and
value != 'IS_NULL' and value != 'NOT_NULL' and
!value.toString().startsWith('GT:') and !value.toString().startsWith('LT:') and
!value.toString().startsWith('GE:') and !value.toString().startsWith('LE:') and
!value.toString().contains(',')">
AND ${key} LIKE CONCAT('%', #{value}, '%')
</if>
</foreach>
<!-- 普通等于条件 -->
<foreach collection="params.entrySet()" item="value" index="key">
<if test="value != null and
value != 'IS_NULL' and value != 'NOT_NULL' and
!value.toString().startsWith('GT:') and !value.toString().startsWith('LT:') and
!value.toString().startsWith('GE:') and !value.toString().startsWith('LE:') and
!value.toString().contains(',') and
!(key == 'bs_manage_tags' or key == 'electronic_tags' or
key == 'dr_ranch' or key == 'sheepfold_name' or
key == 'variety' or key == 'family' or
key == 'name' or key == 'breed' or
key == 'father_manage_tags' or key == 'mother_manage_tags' or
key == 'receptor_manage_tags')">
AND ${key} = #{value}
<if test="value != null and value.toString() != null">
<choose>
<when test="key == 'bs_manage_tags' or key == 'electronic_tags' or
key == 'dr_ranch' or key == 'sheepfold_name' or
key == 'variety' or key == 'family' or
key == 'name' or key == 'breed' or
key == 'father_manage_tags' or key == 'mother_manage_tags' or
key == 'receptor_manage_tags'">
AND ${key} LIKE CONCAT('%', #{value}, '%')
</when>
<otherwise>
<!-- 普通等于条件 -->
AND ${key} = #{value}
</otherwise>
</choose>
</if>
</foreach>
</if>