From 419999eec23a93dbfff40224901e065cd21b9d51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=B8=E7=86=9F=E5=90=B4=E5=BD=A6=E7=A5=96?= Date: Tue, 21 Apr 2026 12:12:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(quickQuery):=20=E6=B7=BB=E5=8A=A0=E5=BF=AB?= =?UTF-8?q?=E6=8D=B7=E6=9F=A5=E8=AF=A2=E5=AD=97=E6=AE=B5=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 QuickQueryField 实体类定义数据库表结构 - 创建 QuickQueryFieldController 提供字段配置的增删改查接口 - 定义 QuickQueryFieldData 数据传输对象用于请求响应 - 实现 QuickQueryFieldMapper 和 XML 映射文件进行数据库操作 - 提供 QuickQueryFieldService 业务逻辑接口及其实现类 - 实现按表ID查询可用字段的业务逻辑 - 添加字段配置的保存更新和删除功能 - 集成权限验证和操作日志记录机制 --- .../controller/QuickQueryFieldController.java | 62 ++++++++++++++++ .../quickQuery/data/QuickQueryFieldData.java | 19 +++++ .../quickQuery/entity/QuickQueryField.java | 45 +++++++++++ .../mapper/QuickQueryFieldMapper.java | 21 ++++++ .../service/QuickQueryFieldService.java | 19 +++++ .../impl/QuickQueryFieldServiceImpl.java | 74 +++++++++++++++++++ .../quickQuery/QuickQueryFieldMapper.xml | 27 +++++++ 7 files changed, 267 insertions(+) create mode 100644 src/main/java/com/xujie/modules/quickQuery/controller/QuickQueryFieldController.java create mode 100644 src/main/java/com/xujie/modules/quickQuery/data/QuickQueryFieldData.java create mode 100644 src/main/java/com/xujie/modules/quickQuery/entity/QuickQueryField.java create mode 100644 src/main/java/com/xujie/modules/quickQuery/mapper/QuickQueryFieldMapper.java create mode 100644 src/main/java/com/xujie/modules/quickQuery/service/QuickQueryFieldService.java create mode 100644 src/main/java/com/xujie/modules/quickQuery/service/impl/QuickQueryFieldServiceImpl.java create mode 100644 src/main/resources/mapper/quickQuery/QuickQueryFieldMapper.xml diff --git a/src/main/java/com/xujie/modules/quickQuery/controller/QuickQueryFieldController.java b/src/main/java/com/xujie/modules/quickQuery/controller/QuickQueryFieldController.java new file mode 100644 index 0000000..7b46a9f --- /dev/null +++ b/src/main/java/com/xujie/modules/quickQuery/controller/QuickQueryFieldController.java @@ -0,0 +1,62 @@ +package com.xujie.modules.quickQuery.controller; + +import com.xujie.common.utils.R; +import com.xujie.modules.quickQuery.data.QuickQueryFieldData; +import com.xujie.modules.quickQuery.service.QuickQueryFieldService; +import com.xujie.modules.sys.controller.AbstractController; +import com.xujie.modules.sys.entity.SysUserEntity; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +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; + +import java.util.List; +import java.util.Map; + +/** + * 快捷查询字段配置接口 - rqrq + */ +@RestController +@RequestMapping("/quickQuery/field") +public class QuickQueryFieldController extends AbstractController { + + @Autowired + private QuickQueryFieldService quickQueryFieldService; + + /** + * 按 tableId(及可选 site)加载可查询字段,供快捷查询弹窗使用 + */ + @PostMapping("/listByTableId") + public R listByTableId(@RequestBody QuickQueryFieldData query) { + List rows = quickQueryFieldService.listByTableId( + query.getTableId(), query.getSite()); + return R.ok().put("rows", rows); + } + + /** + * 维护:新增或修改一条字段配置 + */ + @PostMapping("/save") + public R save(@RequestBody QuickQueryFieldData data) { + SysUserEntity user = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); + String op = user != null ? user.getUsername() : "system"; + quickQueryFieldService.saveOrUpdateField(data, op); + return R.ok(); + } + + /** + * 维护:删除 + */ + @PostMapping("/delete") + public R delete(@RequestBody Map body) { + Object idObj = body == null ? null : body.get("id"); + if (idObj == null) { + throw new RuntimeException("id 不能为空"); + } + Long id = Long.valueOf(String.valueOf(idObj)); + quickQueryFieldService.deleteById(id); + return R.ok(); + } +} diff --git a/src/main/java/com/xujie/modules/quickQuery/data/QuickQueryFieldData.java b/src/main/java/com/xujie/modules/quickQuery/data/QuickQueryFieldData.java new file mode 100644 index 0000000..67a06ad --- /dev/null +++ b/src/main/java/com/xujie/modules/quickQuery/data/QuickQueryFieldData.java @@ -0,0 +1,19 @@ +package com.xujie.modules.quickQuery.data; + +import com.xujie.modules.quickQuery.entity.QuickQueryField; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.apache.ibatis.type.Alias; + +/** + * 快捷查询字段(请求/展示) - rqrq + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Alias("QuickQueryFieldData") +public class QuickQueryFieldData extends QuickQueryField { + + private Integer page; + + private Integer limit; +} diff --git a/src/main/java/com/xujie/modules/quickQuery/entity/QuickQueryField.java b/src/main/java/com/xujie/modules/quickQuery/entity/QuickQueryField.java new file mode 100644 index 0000000..9398e15 --- /dev/null +++ b/src/main/java/com/xujie/modules/quickQuery/entity/QuickQueryField.java @@ -0,0 +1,45 @@ +package com.xujie.modules.quickQuery.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 快捷查询字段配置 - rqrq + */ +@Data +@TableName("srm_quick_query_field") +public class QuickQueryField { + + @TableId(type = IdType.AUTO) + private Long id; + + private String tableId; + + private String fieldName; + + private String fieldLabel; + + /** NUMBER / TEXT / DATETIME */ + private String dataType; + + private Integer sortOrder; + + private String site; + + /** ACTIVE / INACTIVE */ + private String status; + + private String remark; + + private String createdBy; + + private Date createdDate; + + private String updatedBy; + + private Date updatedDate; +} diff --git a/src/main/java/com/xujie/modules/quickQuery/mapper/QuickQueryFieldMapper.java b/src/main/java/com/xujie/modules/quickQuery/mapper/QuickQueryFieldMapper.java new file mode 100644 index 0000000..4b2ab38 --- /dev/null +++ b/src/main/java/com/xujie/modules/quickQuery/mapper/QuickQueryFieldMapper.java @@ -0,0 +1,21 @@ +package com.xujie.modules.quickQuery.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xujie.modules.quickQuery.data.QuickQueryFieldData; +import com.xujie.modules.quickQuery.entity.QuickQueryField; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 快捷查询字段配置 Mapper - rqrq + */ +@Mapper +public interface QuickQueryFieldMapper extends BaseMapper { + + /** + * 按表格编码拉取可查询字段(启用、按排序) - rqrq + */ + List listByTableId(@Param("tableId") String tableId, @Param("site") String site); +} diff --git a/src/main/java/com/xujie/modules/quickQuery/service/QuickQueryFieldService.java b/src/main/java/com/xujie/modules/quickQuery/service/QuickQueryFieldService.java new file mode 100644 index 0000000..91c3b3f --- /dev/null +++ b/src/main/java/com/xujie/modules/quickQuery/service/QuickQueryFieldService.java @@ -0,0 +1,19 @@ +package com.xujie.modules.quickQuery.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xujie.modules.quickQuery.data.QuickQueryFieldData; +import com.xujie.modules.quickQuery.entity.QuickQueryField; + +import java.util.List; + +/** + * 快捷查询字段配置 - rqrq + */ +public interface QuickQueryFieldService extends IService { + + List listByTableId(String tableId, String site); + + void saveOrUpdateField(QuickQueryFieldData data, String operator); + + void deleteById(Long id); +} diff --git a/src/main/java/com/xujie/modules/quickQuery/service/impl/QuickQueryFieldServiceImpl.java b/src/main/java/com/xujie/modules/quickQuery/service/impl/QuickQueryFieldServiceImpl.java new file mode 100644 index 0000000..e45597b --- /dev/null +++ b/src/main/java/com/xujie/modules/quickQuery/service/impl/QuickQueryFieldServiceImpl.java @@ -0,0 +1,74 @@ +package com.xujie.modules.quickQuery.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xujie.modules.quickQuery.data.QuickQueryFieldData; +import com.xujie.modules.quickQuery.entity.QuickQueryField; +import com.xujie.modules.quickQuery.mapper.QuickQueryFieldMapper; +import com.xujie.modules.quickQuery.service.QuickQueryFieldService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import java.util.Date; +import java.util.List; + +/** + * 快捷查询字段配置实现 - rqrq + */ +@Service +public class QuickQueryFieldServiceImpl extends ServiceImpl + implements QuickQueryFieldService { + + @Override + public List listByTableId(String tableId, String site) { + if (!StringUtils.hasText(tableId)) { + throw new RuntimeException("tableId 不能为空"); + } + String siteParam = StringUtils.hasText(site) ? site.trim() : ""; + return baseMapper.listByTableId(tableId.trim(), siteParam); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveOrUpdateField(QuickQueryFieldData data, String operator) { + if (!StringUtils.hasText(data.getTableId()) || !StringUtils.hasText(data.getFieldName())) { + throw new RuntimeException("tableId、fieldName 不能为空"); + } + if (!StringUtils.hasText(data.getDataType())) { + throw new RuntimeException("dataType 不能为空"); + } + String dt = data.getDataType().trim().toUpperCase(); + if (!"NUMBER".equals(dt) && !"TEXT".equals(dt) && !"DATETIME".equals(dt)) { + throw new RuntimeException("dataType 仅支持 NUMBER、TEXT、DATETIME"); + } + data.setDataType(dt); + if (data.getSortOrder() == null) { + data.setSortOrder(0); + } + if (!StringUtils.hasText(data.getSite())) { + data.setSite(""); + } + if (!StringUtils.hasText(data.getStatus())) { + data.setStatus("ACTIVE"); + } + Date now = new Date(); + if (data.getId() == null) { + data.setCreatedBy(operator); + data.setCreatedDate(now); + baseMapper.insert(data); + } else { + data.setUpdatedBy(operator); + data.setUpdatedDate(now); + baseMapper.updateById(data); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteById(Long id) { + if (id == null) { + throw new RuntimeException("id 不能为空"); + } + baseMapper.deleteById(id); + } +} diff --git a/src/main/resources/mapper/quickQuery/QuickQueryFieldMapper.xml b/src/main/resources/mapper/quickQuery/QuickQueryFieldMapper.xml new file mode 100644 index 0000000..28f32f6 --- /dev/null +++ b/src/main/resources/mapper/quickQuery/QuickQueryFieldMapper.xml @@ -0,0 +1,27 @@ + + + + + + +