feat: 用户自定义筛选列
This commit is contained in:
parent
c9ff984bd5
commit
bbac60655d
@ -257,6 +257,14 @@ public class SwaggerConfig {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public GroupedOpenApi groupCusColumnApi() {
|
||||||
|
return GroupedOpenApi.builder()
|
||||||
|
.group("5.4 自定义筛选列")
|
||||||
|
.packagesToScan("com.yfd.platform.qgc_sys.cuscolumn.controller")
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public GroupedOpenApi groupLygkApi() {
|
public GroupedOpenApi groupLygkApi() {
|
||||||
|
|||||||
@ -0,0 +1,44 @@
|
|||||||
|
package com.yfd.platform.qgc_sys.cuscolumn.controller;
|
||||||
|
|
||||||
|
import com.yfd.platform.config.ResponseResult;
|
||||||
|
import com.yfd.platform.qgc_sys.cuscolumn.domain.MsUsercolumnB;
|
||||||
|
import com.yfd.platform.qgc_sys.cuscolumn.service.IMsUsercolumnBService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户自定义筛选列 控制层
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/sys/usercolumn")
|
||||||
|
@Tag(name = "用户自定义筛选列")
|
||||||
|
public class MsUsercolumnBController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IMsUsercolumnBService msUsercolumnBService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量保存用户自定义列数据
|
||||||
|
*/
|
||||||
|
@PostMapping("/batchSave")
|
||||||
|
@Operation(summary = "保存用户自定义列数据")
|
||||||
|
public ResponseResult batchSave(@RequestBody MsUsercolumnB userColumn) {
|
||||||
|
boolean result = msUsercolumnBService.batchSave(userColumn);
|
||||||
|
return result ? ResponseResult.success("保存成功") : ResponseResult.error("保存失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户自定义列数据
|
||||||
|
*/
|
||||||
|
@PostMapping("/getUserColumnData")
|
||||||
|
@Operation(summary = "获取用户自定义列数据")
|
||||||
|
public ResponseResult getUserColumnData(@RequestBody MsUsercolumnB userColumn) {
|
||||||
|
return ResponseResult.successData(msUsercolumnBService.getUserColumnData(userColumn));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,90 @@
|
|||||||
|
package com.yfd.platform.qgc_sys.cuscolumn.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 筛选列配置表
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("MS_COLUMNCFG_B")
|
||||||
|
public class MsColumncfgB implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@TableId(type = IdType.ASSIGN_UUID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@TableField("FUNCTION_ID")
|
||||||
|
private String functionId;
|
||||||
|
|
||||||
|
@TableField("COLUMN_CFG")
|
||||||
|
private String columnCfg;
|
||||||
|
|
||||||
|
@TableField("ENABLE")
|
||||||
|
private Integer enable;
|
||||||
|
|
||||||
|
@TableField("ORDER_INDEX")
|
||||||
|
private Integer orderIndex;
|
||||||
|
|
||||||
|
@TableField("RECORD_USER")
|
||||||
|
private String recordUser;
|
||||||
|
|
||||||
|
@TableField("RECORD_TIME")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date recordTime;
|
||||||
|
|
||||||
|
@TableField("MODIFY_USER")
|
||||||
|
private String modifyUser;
|
||||||
|
|
||||||
|
@TableField("MODIFY_TIME")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date modifyTime;
|
||||||
|
|
||||||
|
@TableField("IS_DELETED")
|
||||||
|
private Integer isDeleted;
|
||||||
|
|
||||||
|
@TableField("DEFAULT_CHECKED")
|
||||||
|
private Integer defaultChecked;
|
||||||
|
|
||||||
|
@TableField("DELETE_USER")
|
||||||
|
private String deleteUser;
|
||||||
|
|
||||||
|
@TableField("DELETE_TIME")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date deleteTime;
|
||||||
|
|
||||||
|
@TableField("IS_TEMP_STORAGE")
|
||||||
|
private Integer isTempStorage;
|
||||||
|
|
||||||
|
@TableField("COLUMN_EN")
|
||||||
|
private String columnEn;
|
||||||
|
|
||||||
|
@TableField("GROUP_TYPE")
|
||||||
|
private String groupType;
|
||||||
|
|
||||||
|
@TableField("PARENT_ID")
|
||||||
|
private String parentId;
|
||||||
|
|
||||||
|
@TableField("HAS_CHILDREN")
|
||||||
|
private Integer hasChildren;
|
||||||
|
|
||||||
|
@TableField("DESCRIPTION")
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
@TableField("CAN_BE_UPDATED")
|
||||||
|
private Integer canBeUpdated;
|
||||||
|
|
||||||
|
@TableField("WIDTH")
|
||||||
|
private Integer width;
|
||||||
|
|
||||||
|
@TableField("CAN_BE_SORTED")
|
||||||
|
private Integer canBeSorted;
|
||||||
|
}
|
||||||
@ -0,0 +1,105 @@
|
|||||||
|
package com.yfd.platform.qgc_sys.cuscolumn.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户与筛选列映射表
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("MS_USERCOLUMN_B")
|
||||||
|
public class MsUsercolumnB implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@TableId(type = IdType.ASSIGN_UUID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@TableField("CFG_ID")
|
||||||
|
@JsonProperty("cfgId")
|
||||||
|
private String cfgId;
|
||||||
|
|
||||||
|
@TableField("CAN_BE_CHECKED")
|
||||||
|
private Integer canBeChecked;
|
||||||
|
|
||||||
|
@TableField("CHECKED")
|
||||||
|
private Integer checked;
|
||||||
|
|
||||||
|
@TableField("DESCRIPTION")
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
@TableField("ENABLE")
|
||||||
|
private Integer enable;
|
||||||
|
|
||||||
|
@TableField("ORDER_INDEX")
|
||||||
|
private Integer orderIndex;
|
||||||
|
|
||||||
|
@TableField("RECORD_USER")
|
||||||
|
private String recordUser;
|
||||||
|
|
||||||
|
@TableField("RECORD_TIME")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date recordTime;
|
||||||
|
|
||||||
|
@TableField("MODIFY_USER")
|
||||||
|
private String modifyUser;
|
||||||
|
|
||||||
|
@TableField("MODIFY_TIME")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date modifyTime;
|
||||||
|
|
||||||
|
@TableField("IS_DELETED")
|
||||||
|
private Integer isDeleted;
|
||||||
|
|
||||||
|
@TableField("DELETE_USER")
|
||||||
|
private String deleteUser;
|
||||||
|
|
||||||
|
@TableField("DELETE_TIME")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date deleteTime;
|
||||||
|
|
||||||
|
@TableField("IS_TEMP_STORAGE")
|
||||||
|
private Integer isTempStorage;
|
||||||
|
|
||||||
|
@TableField("COLUMN_EN")
|
||||||
|
private String columnEn;
|
||||||
|
|
||||||
|
@TableField("COLUMN_NAME")
|
||||||
|
private String columnName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否默认配置(非数据库字段)
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
@JsonProperty("defaultConfig")
|
||||||
|
private Boolean defaultConfig;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分组类型(非数据库字段,来自关联查询)
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
@JsonProperty("groupType")
|
||||||
|
private String groupType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义列宽度(非数据库字段,来自关联查询)
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
@JsonProperty("width")
|
||||||
|
private Integer width;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量操作时的对象集合(非数据库字段)
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<MsUsercolumnB> list;
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
package com.yfd.platform.qgc_sys.cuscolumn.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.yfd.platform.qgc_sys.cuscolumn.domain.MsColumncfgB;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface MsColumncfgBMapper extends BaseMapper<MsColumncfgB> {
|
||||||
|
}
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
package com.yfd.platform.qgc_sys.cuscolumn.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.yfd.platform.qgc_sys.cuscolumn.domain.MsUsercolumnB;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface MsUsercolumnBMapper extends BaseMapper<MsUsercolumnB> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户ID和模块ID删除用户自定义列数据
|
||||||
|
*/
|
||||||
|
void deleteUserColumn(@Param("recordUser") String recordUser,
|
||||||
|
@Param("cfgId") String cfgId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询用户自定义列数据(LEFT JOIN MS_COLUMNCFG_B,优先使用用户配置,无用户配置时使用默认配置)
|
||||||
|
*/
|
||||||
|
List<MsUsercolumnB> getUserColumnList(@Param("recordUser") String recordUser,
|
||||||
|
@Param("cfgId") String cfgId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据模块ID查询默认列配置
|
||||||
|
*/
|
||||||
|
List<MsUsercolumnB> getUserColumnDefaultList(@Param("cfgId") String cfgId);
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package com.yfd.platform.qgc_sys.cuscolumn.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.yfd.platform.qgc_sys.cuscolumn.domain.MsUsercolumnB;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface IMsUsercolumnBService extends IService<MsUsercolumnB> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量保存用户自定义列数据
|
||||||
|
*/
|
||||||
|
boolean batchSave(MsUsercolumnB userColumn);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户自定义列数据
|
||||||
|
*/
|
||||||
|
List<MsUsercolumnB> getUserColumnData(MsUsercolumnB userColumn);
|
||||||
|
}
|
||||||
@ -0,0 +1,59 @@
|
|||||||
|
package com.yfd.platform.qgc_sys.cuscolumn.service.impl;
|
||||||
|
|
||||||
|
import com.yfd.platform.qgc_sys.cuscolumn.domain.MsUsercolumnB;
|
||||||
|
import com.yfd.platform.qgc_sys.cuscolumn.mapper.MsUsercolumnBMapper;
|
||||||
|
import com.yfd.platform.qgc_sys.cuscolumn.service.IMsUsercolumnBService;
|
||||||
|
import com.yfd.platform.utils.SecurityUtils;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class MsUsercolumnBServiceImpl
|
||||||
|
extends ServiceImpl<MsUsercolumnBMapper, MsUsercolumnB>
|
||||||
|
implements IMsUsercolumnBService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MsUsercolumnBMapper usercolumnBMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public boolean batchSave(MsUsercolumnB userColumn) {
|
||||||
|
if (!StringUtils.hasText(userColumn.getCfgId())) {
|
||||||
|
throw new IllegalArgumentException("模块(cfgId)不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
String currentUser = SecurityUtils.getCurrentUsername();
|
||||||
|
List<MsUsercolumnB> list = userColumn.getList();
|
||||||
|
|
||||||
|
if (list != null && !list.isEmpty()) {
|
||||||
|
for (MsUsercolumnB item : list) {
|
||||||
|
item.setCfgId(userColumn.getCfgId());
|
||||||
|
item.setRecordUser(currentUser);
|
||||||
|
item.setRecordTime(new Date());
|
||||||
|
// 列的中文名称通过COLUMN_EN和MS_COLUMNCFG_B关联查询,不额外存储
|
||||||
|
item.setColumnName(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 先删除旧数据
|
||||||
|
usercolumnBMapper.deleteUserColumn(currentUser, userColumn.getCfgId());
|
||||||
|
|
||||||
|
// 批量保存新数据
|
||||||
|
return this.saveBatch(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<MsUsercolumnB> getUserColumnData(MsUsercolumnB userColumn) {
|
||||||
|
String currentUser = SecurityUtils.getCurrentUsername();
|
||||||
|
return usercolumnBMapper.getUserColumnList(currentUser, userColumn.getCfgId());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,82 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.yfd.platform.qgc_sys.cuscolumn.mapper.MsUsercolumnBMapper">
|
||||||
|
|
||||||
|
<resultMap type="com.yfd.platform.qgc_sys.cuscolumn.domain.MsUsercolumnB" id="MsUsercolumnBMap">
|
||||||
|
<result property="cfgId" column="CFG_ID" jdbcType="VARCHAR"/>
|
||||||
|
<result property="columnEn" column="COLUMN_EN" jdbcType="VARCHAR"/>
|
||||||
|
<result property="columnName" column="COLUMN_NAME" jdbcType="VARCHAR"/>
|
||||||
|
<result property="defaultConfig" column="DEFAULT_CONFIG" jdbcType="INTEGER"/>
|
||||||
|
<result property="enable" column="ENABLE" jdbcType="INTEGER"/>
|
||||||
|
<result property="orderIndex" column="ORDER_INDEX" jdbcType="INTEGER"/>
|
||||||
|
<result property="recordUser" column="RECORD_USER" jdbcType="VARCHAR"/>
|
||||||
|
<result property="checked" column="CHECKED" jdbcType="INTEGER"/>
|
||||||
|
<result property="groupType" column="GROUP_TYPE" jdbcType="VARCHAR"/>
|
||||||
|
<result property="width" column="WIDTH" jdbcType="INTEGER"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<!-- 删除用户自定义列数据 -->
|
||||||
|
<delete id="deleteUserColumn">
|
||||||
|
DELETE FROM MS_USERCOLUMN_B
|
||||||
|
WHERE CFG_ID = #{cfgId}
|
||||||
|
<if test="recordUser != null and recordUser != ''">
|
||||||
|
AND RECORD_USER = #{recordUser}
|
||||||
|
</if>
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
查询用户自定义列数据
|
||||||
|
LEFT JOIN MS_COLUMNCFG_B(默认配置)和 MS_USERCOLUMN_B(用户自定义配置)
|
||||||
|
当用户无自定义配置时,使用默认配置的值
|
||||||
|
-->
|
||||||
|
<select id="getUserColumnList" resultMap="MsUsercolumnBMap">
|
||||||
|
SELECT
|
||||||
|
mcb.FUNCTION_ID AS CFG_ID,
|
||||||
|
mcb.COLUMN_EN,
|
||||||
|
mcb.COLUMN_CFG AS COLUMN_NAME,
|
||||||
|
CASE WHEN mub.COLUMN_EN IS NULL THEN 1 ELSE 0 END AS DEFAULT_CONFIG,
|
||||||
|
CASE WHEN mub.ENABLE IS NULL THEN mcb.ENABLE ELSE mub.ENABLE END AS ENABLE,
|
||||||
|
CASE WHEN mub.ORDER_INDEX IS NULL THEN mcb.ORDER_INDEX ELSE mub.ORDER_INDEX END AS ORDER_INDEX,
|
||||||
|
mub.RECORD_USER,
|
||||||
|
CASE WHEN mub.CHECKED IS NULL THEN mcb.DEFAULT_CHECKED ELSE mub.CHECKED END AS CHECKED,
|
||||||
|
mcb.GROUP_TYPE,
|
||||||
|
mcb.WIDTH
|
||||||
|
FROM MS_COLUMNCFG_B mcb
|
||||||
|
LEFT JOIN MS_USERCOLUMN_B mub
|
||||||
|
ON mcb.FUNCTION_ID = mub.CFG_ID
|
||||||
|
AND mub.COLUMN_EN = mcb.COLUMN_EN
|
||||||
|
AND mub.ENABLE = 1
|
||||||
|
AND mub.IS_DELETED = 0
|
||||||
|
<if test="recordUser != null and recordUser != ''">
|
||||||
|
AND mub.RECORD_USER = #{recordUser}
|
||||||
|
</if>
|
||||||
|
WHERE mcb.IS_DELETED = 0
|
||||||
|
AND mcb.HAS_CHILDREN = 0
|
||||||
|
<if test="cfgId != null and cfgId != ''">
|
||||||
|
AND mcb.FUNCTION_ID = #{cfgId}
|
||||||
|
</if>
|
||||||
|
ORDER BY mcb.ORDER_INDEX
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 根据模块ID查询默认列配置 -->
|
||||||
|
<select id="getUserColumnDefaultList" resultMap="MsUsercolumnBMap">
|
||||||
|
SELECT
|
||||||
|
mcb.FUNCTION_ID AS CFG_ID,
|
||||||
|
mcb.COLUMN_EN,
|
||||||
|
mcb.COLUMN_CFG AS COLUMN_NAME,
|
||||||
|
mcb.ENABLE,
|
||||||
|
mcb.ORDER_INDEX,
|
||||||
|
mcb.RECORD_USER,
|
||||||
|
NVL(mcb.DEFAULT_CHECKED, 1) AS CHECKED,
|
||||||
|
mcb.GROUP_TYPE,
|
||||||
|
mcb.WIDTH
|
||||||
|
FROM MS_COLUMNCFG_B mcb
|
||||||
|
WHERE mcb.ENABLE = 1
|
||||||
|
AND mcb.HAS_CHILDREN = 0
|
||||||
|
<if test="cfgId != null and cfgId != ''">
|
||||||
|
AND mcb.FUNCTION_ID = #{cfgId}
|
||||||
|
</if>
|
||||||
|
ORDER BY mcb.ORDER_INDEX
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
Loading…
Reference in New Issue
Block a user