From bbac60655d206da43fdfe5f726b98b3978840603 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 20 Jul 2026 15:41:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=A8=E6=88=B7=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E7=AD=9B=E9=80=89=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yfd/platform/config/SwaggerConfig.java | 8 ++ .../controller/MsUsercolumnBController.java | 44 ++++++++ .../cuscolumn/domain/MsColumncfgB.java | 90 +++++++++++++++ .../cuscolumn/domain/MsUsercolumnB.java | 105 ++++++++++++++++++ .../cuscolumn/mapper/MsColumncfgBMapper.java | 9 ++ .../cuscolumn/mapper/MsUsercolumnBMapper.java | 29 +++++ .../service/IMsUsercolumnBService.java | 19 ++++ .../impl/MsUsercolumnBServiceImpl.java | 59 ++++++++++ .../mapper/system/MsUsercolumnBMapper.xml | 82 ++++++++++++++ 9 files changed, 445 insertions(+) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/controller/MsUsercolumnBController.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/domain/MsColumncfgB.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/domain/MsUsercolumnB.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/mapper/MsColumncfgBMapper.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/mapper/MsUsercolumnBMapper.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/service/IMsUsercolumnBService.java create mode 100644 backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/service/impl/MsUsercolumnBServiceImpl.java create mode 100644 backend/src/main/resources/mapper/system/MsUsercolumnBMapper.xml diff --git a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java index 2e43cdb8..c28488e1 100644 --- a/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SwaggerConfig.java @@ -257,6 +257,14 @@ public class SwaggerConfig { .build(); } + @Bean + public GroupedOpenApi groupCusColumnApi() { + return GroupedOpenApi.builder() + .group("5.4 自定义筛选列") + .packagesToScan("com.yfd.platform.qgc_sys.cuscolumn.controller") + .build(); + } + @Bean public GroupedOpenApi groupLygkApi() { diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/controller/MsUsercolumnBController.java b/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/controller/MsUsercolumnBController.java new file mode 100644 index 00000000..3a269e76 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/controller/MsUsercolumnBController.java @@ -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)); + } +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/domain/MsColumncfgB.java b/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/domain/MsColumncfgB.java new file mode 100644 index 00000000..d21fb44c --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/domain/MsColumncfgB.java @@ -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; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/domain/MsUsercolumnB.java b/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/domain/MsUsercolumnB.java new file mode 100644 index 00000000..30361090 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/domain/MsUsercolumnB.java @@ -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 list; +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/mapper/MsColumncfgBMapper.java b/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/mapper/MsColumncfgBMapper.java new file mode 100644 index 00000000..067f4c38 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/mapper/MsColumncfgBMapper.java @@ -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 { +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/mapper/MsUsercolumnBMapper.java b/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/mapper/MsUsercolumnBMapper.java new file mode 100644 index 00000000..9a00e07c --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/mapper/MsUsercolumnBMapper.java @@ -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 { + + /** + * 根据用户ID和模块ID删除用户自定义列数据 + */ + void deleteUserColumn(@Param("recordUser") String recordUser, + @Param("cfgId") String cfgId); + + /** + * 查询用户自定义列数据(LEFT JOIN MS_COLUMNCFG_B,优先使用用户配置,无用户配置时使用默认配置) + */ + List getUserColumnList(@Param("recordUser") String recordUser, + @Param("cfgId") String cfgId); + + /** + * 根据模块ID查询默认列配置 + */ + List getUserColumnDefaultList(@Param("cfgId") String cfgId); +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/service/IMsUsercolumnBService.java b/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/service/IMsUsercolumnBService.java new file mode 100644 index 00000000..7a41fe3d --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/service/IMsUsercolumnBService.java @@ -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 { + + /** + * 批量保存用户自定义列数据 + */ + boolean batchSave(MsUsercolumnB userColumn); + + /** + * 获取用户自定义列数据 + */ + List getUserColumnData(MsUsercolumnB userColumn); +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/service/impl/MsUsercolumnBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/service/impl/MsUsercolumnBServiceImpl.java new file mode 100644 index 00000000..1524c95c --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/cuscolumn/service/impl/MsUsercolumnBServiceImpl.java @@ -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 + 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 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 getUserColumnData(MsUsercolumnB userColumn) { + String currentUser = SecurityUtils.getCurrentUsername(); + return usercolumnBMapper.getUserColumnList(currentUser, userColumn.getCfgId()); + } +} diff --git a/backend/src/main/resources/mapper/system/MsUsercolumnBMapper.xml b/backend/src/main/resources/mapper/system/MsUsercolumnBMapper.xml new file mode 100644 index 00000000..14819390 --- /dev/null +++ b/backend/src/main/resources/mapper/system/MsUsercolumnBMapper.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + DELETE FROM MS_USERCOLUMN_B + WHERE CFG_ID = #{cfgId} + + AND RECORD_USER = #{recordUser} + + + + + + + + + +