Browse Source

feat: 拓展标签查询工具类

checkBack
Yen 1 year ago
parent
commit
fb0b2f8388
  1. 47
      src/main/java/com/qs/serve/common/model/tag/TagFiledUtil.java
  2. 33
      src/main/java/com/qs/serve/modules/tag/entity/so/TagQuery.java
  3. 13
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  4. 3
      src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java
  5. 24
      src/main/resources/mapper/tag/TagDataMapper.xml
  6. 18
      src/main/resources/mapper/tbs/TbsCostApplyMapper.xml

47
src/main/java/com/qs/serve/common/model/tag/TagFiledUtil.java

@ -0,0 +1,47 @@
package com.qs.serve.common.model.tag;
import cn.hutool.core.collection.CollUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.tag.entity.so.TagQuery;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import lombok.experimental.UtilityClass;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author YenHex
* @since 2024/7/15
*/
@UtilityClass
public class TagFiledUtil {
public final static Map<String,String> TbsCostApplyPageMap = new HashMap<String,String>(){{
put("supplier","tbs_cost_apply.supplier_id");
}};
public static void TbsCostApplyPage(TbsCostApply param){
List<TagQuery> newList = new ArrayList<>();
List<TagQuery> paramTagList = param.getTagQueryList();
for (TagQuery tag : paramTagList) {
if(!StringUtils.hasText(tag.getTargetType())){
continue;
}
if (StringUtils.hasText(tag.getTargetName()) || CollUtil.isNotEmpty(tag.getTagIds())){
String sqlColumn = TbsCostApplyPageMap.get(tag.getDataField());
if(StringUtils.hasText(sqlColumn)){
TagQuery newVal = new TagQuery();
newVal.setTargetType(tag.getTargetType());
newVal.setTargetName(tag.getTargetName());
newVal.setTagIds(tag.getTagIds());
newVal.setSqlColumn(sqlColumn);
newList.add(newVal);
}
}
}
param.setTagQueryList(newList);
}
}

33
src/main/java/com/qs/serve/modules/tag/entity/so/TagQuery.java

@ -0,0 +1,33 @@
package com.qs.serve.modules.tag.entity.so;
import lombok.Data;
import java.util.List;
/**
* @author YenHex
* @since 2024/7/12
*/
@Data
public class TagQuery {
/**
* 类型
*/
private String targetType;
private String targetName;
private List<Long> tagIds;
/**
* 列名 creator.checker
*/
private String dataField;
/**
* 不用传
*/
private String sqlColumn;
}

13
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java

@ -11,6 +11,7 @@ import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.model.tag.TagFiledUtil;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.bir.consts.BirActivityCenterGoodsUtil;
import com.qs.serve.modules.bms.entity.BmsRegion2;
@ -227,6 +228,18 @@ public class TbsCostApplyController {
return R.byMbpList(page);
}
/**
* 翻页
* @param param
* @return
*/
@PostMapping("/pageDev")
public R<PageVo<TbsCostApply>> getPageDev(@RequestBody TbsCostApply param){
TagFiledUtil.TbsCostApplyPage(param);
IPage<TbsCostApply> page = tbsCostApplyService.selectPage(param);
return R.byMbpList(page);
}
/**
* ID查询
* @param id

3
src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java

@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.qs.serve.modules.tag.entity.so.TagQuery;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
@ -287,7 +288,7 @@ public class TbsCostApply implements Serializable {
* 选择的标签ID
*/
@TableField(exist = false)
List<String> tagIds;
List<TagQuery> tagQueryList;
}

24
src/main/resources/mapper/tag/TagDataMapper.xml

@ -70,4 +70,28 @@
</where>
</select>
<sql id="tagSelectSql">
<if test="query.tagQueryList!=null and query.tagQueryList.size > 0">
<foreach collection="query.tagQueryList" item="tagQuery" index="i" open="(" close=")" separator=",">
and ${tagQuery.sqlColumn} in
(
select target_id from tag_data
left join tag_info on tag_data.tag_id = tag_info.id and del_flag=0
where tag_data.del_flag = 0
<if test="tagQuery.tagIds!=null and tagQuery.tagIds.size > 0">
and tag_id in
<foreach collection="tagQuery.tagIds" item="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</if>
<if test="tagQuery.targetName!=null and tagQuery.targetName!=''">
and target_name like concat('%',#{tagQuery.targetName},'%')
</if>
and tag_data.target_type = #{tagQuery.targetType}
group by tag_data.target_id
)
</foreach>
</if>
</sql>
</mapper>

18
src/main/resources/mapper/tbs/TbsCostApplyMapper.xml

@ -143,21 +143,7 @@
#{selectId}
</foreach> )
</if>
<if test="query.tagIds!=null and query.tagIds.size > 0">
and tbs_cost_apply.supplier_id in
(
select target_id from tag_data
where del_flag = 0
and target_id in
<foreach collection="query.tagIds" item="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
and target_type = 'customer'
group by target_id
)
</if>
<include refid="com.qs.serve.modules.tag.mapper.TagDataMapper.tagSelectSql"></include>
order by tbs_cost_apply.`create_time` DESC
</select>
@ -240,5 +226,7 @@
<if test="query.delFlag != null and query.delFlag != ''"> and `tbs_cost_apply`.`del_flag` = #{query.delFlag}</if>
<if test="query.templateTitle != null and query.templateTitle != ''"> and `tbs_cost_apply`.`template_title` like concat('%', #{query.templateTitle},'%')</if>
</sql>
</mapper>

Loading…
Cancel
Save