diff --git a/riis-system/src/main/java/com/yfd/platform/modules/algorithm/controller/AlgorithmLogsController.java b/riis-system/src/main/java/com/yfd/platform/modules/algorithm/controller/AlgorithmLogsController.java index 523acc6..9f0ff50 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/algorithm/controller/AlgorithmLogsController.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/algorithm/controller/AlgorithmLogsController.java @@ -1,16 +1,18 @@ package com.yfd.platform.modules.algorithm.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yfd.platform.config.ResponseResult; import com.yfd.platform.modules.algorithm.domain.AlgorithmLogs; import com.yfd.platform.modules.algorithm.service.IAlgorithmLogsService; +import com.yfd.platform.utils.wrapper.QueryCondition; +import com.yfd.platform.utils.wrapper.QueryWrapperBuilder; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; import java.util.Map; /** @@ -31,13 +33,22 @@ public class AlgorithmLogsController { // 算法分类,区域,间隔,部件 @GetMapping("/getAlgorithmLogsPage") - @ApiOperation("Page>") + @ApiOperation("分页查询算法分析日志") public ResponseResult getAlgorithmLogsPage(String stationCode, String algorithmId, String areaId, String bayId, String mainDeviceId, String componentId, String componentName, Page page) { - Page> pageMaps = algorithmLogsService.getAlgorithmLogsPage(stationCode, algorithmId, areaId, + Page> pageMaps = algorithmLogsService.getAlgorithmLogsPage(stationCode, algorithmId, areaId, bayId, mainDeviceId, componentId, componentName, page); return ResponseResult.successData(pageMaps); } + // 算法分类,区域,间隔,部件 + @PostMapping("/testQueryWrapperBuilder") + @ApiOperation("测试构造器") + public ResponseResult testQueryWrapperBuilder(@RequestBody QueryCondition queryCondition) { + QueryWrapper queryWrapper = QueryWrapperBuilder.build(queryCondition, AlgorithmLogs.class); + List list = algorithmLogsService.list(queryWrapper); + return ResponseResult.successData(list); + } + } diff --git a/riis-system/src/main/java/com/yfd/platform/utils/TestFileDir.java b/riis-system/src/main/java/com/yfd/platform/utils/TestFileDir.java index ab62eea..8e6fbd8 100644 --- a/riis-system/src/main/java/com/yfd/platform/utils/TestFileDir.java +++ b/riis-system/src/main/java/com/yfd/platform/utils/TestFileDir.java @@ -1,11 +1,17 @@ package com.yfd.platform.utils; +import java.net.URLDecoder; +import java.net.URLEncoder; + public class TestFileDir { public static void main(String[] args) throws Exception { double resultvalue = 50; double baseValue = 100; double abs = Math.abs((resultvalue - baseValue) / baseValue * 100); System.out.println(abs); - + String decode = URLDecoder.decode("%E5%95%86%E4%B8%98%E5%B8%82%2F500Kv%E6%A0%87%E5%87%86%E5%8F%98%E7%94%B5%E7%AB%99%E7%AE%A1%E7%90%86%E5%8C%BA%E5%9F%9F%2F500V%E5%8F%98%E7%94%B5%E7%AB%99%2F%E7%BC%BA%E9%99%B7%2F202505%2F20250519_160142_500kV%E6%B5%8B%E8%AF%95%E9%97%B4%E9%9A%94_500kV%E6%B5%8B%E8%AF%95%E4%B8%BB%E8%AE%BE%E5%A4%87_%E5%A3%B0%E7%BA%B9%E7%82%B9%E4%BD%8D.wav", "utf-8"); + System.out.println(decode); + String encode = URLEncoder.encode("商丘市\\500Kv标准变电站管理区域\\500V变电站\\缺陷\\202505\\test.mp4", "UTF-8"); + System.out.println(encode); } } diff --git a/riis-system/src/main/java/com/yfd/platform/utils/wrapper/QueryCondition.java b/riis-system/src/main/java/com/yfd/platform/utils/wrapper/QueryCondition.java index bbb2542..5ac6ab9 100644 --- a/riis-system/src/main/java/com/yfd/platform/utils/wrapper/QueryCondition.java +++ b/riis-system/src/main/java/com/yfd/platform/utils/wrapper/QueryCondition.java @@ -1,8 +1,8 @@ package com.yfd.platform.utils.wrapper; import lombok.Data; -import org.springframework.data.domain.Sort; +import java.util.List; import java.util.Map; @Data @@ -10,6 +10,6 @@ public class QueryCondition { private Integer page; private Integer size; private Map filters; - private Sort sort; + private List sortOrders; // 修改为 SortOrder 列表 } diff --git a/riis-system/src/main/java/com/yfd/platform/utils/wrapper/QueryWrapperBuilder.java b/riis-system/src/main/java/com/yfd/platform/utils/wrapper/QueryWrapperBuilder.java index 5df1b99..b245ff9 100644 --- a/riis-system/src/main/java/com/yfd/platform/utils/wrapper/QueryWrapperBuilder.java +++ b/riis-system/src/main/java/com/yfd/platform/utils/wrapper/QueryWrapperBuilder.java @@ -1,7 +1,6 @@ package com.yfd.platform.utils.wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.springframework.data.domain.Sort; import java.lang.reflect.Field; import java.util.Arrays; @@ -23,40 +22,36 @@ public class QueryWrapperBuilder { */ public static QueryWrapper build(QueryCondition condition, Class entityClass) { QueryWrapper wrapper = new QueryWrapper<>(); - - // 修改 build 方法中的过滤条件处理部分 condition.getFilters().forEach((field, value) -> { - if (isValidField(field, entityClass)) { - String column = camelToUnderline(field); - - // 解析运算符(示例格式:age_gt=30) - if (field.contains("__")) { // 使用双下划线分隔符更安全 - String[] parts = field.split("__"); - if (parts.length == 2) { - String realField = parts[0]; - String operator = parts[1]; - column = camelToUnderline(realField); - applyOperator(wrapper, column, operator, value); - return; - } - } - - // 默认等值查询 - wrapper.eq(column, value); + if (!field.contains("__")) { // 使用双下划线分隔符更安全 + return; + } + String[] parts = field.split("__"); + if (parts.length != 2) { + return; + } + String realField = parts[0]; + String operator = parts[1]; + String column = camelToUnderline(realField); + if (isValidField(column, entityClass)) { + applyOperator(wrapper, column, operator, value); } }); // 处理排序 - if (condition.getSort() != null) { - condition.getSort().forEach(order -> { + if (condition.getSortOrders() != null) { + for (SortOrder order : condition.getSortOrders()) { String column = camelToUnderline(order.getProperty()); - if (order.isAscending()) { + if (!isValidField(column, entityClass)) { + continue; + } + if (order.getDirection() == SortDirection.ASC) { wrapper.orderByAsc(column); } else { wrapper.orderByDesc(column); } - }); + } } return wrapper; diff --git a/riis-system/src/main/java/com/yfd/platform/utils/wrapper/SortDirection.java b/riis-system/src/main/java/com/yfd/platform/utils/wrapper/SortDirection.java new file mode 100644 index 0000000..55ce9cf --- /dev/null +++ b/riis-system/src/main/java/com/yfd/platform/utils/wrapper/SortDirection.java @@ -0,0 +1,17 @@ +package com.yfd.platform.utils.wrapper; + +public enum SortDirection { + // 升序 + ASC, + // 降序 + DESC; + + public static SortDirection fromString(String direction) { + try { + return SortDirection.valueOf(direction.toUpperCase()); + } catch (IllegalArgumentException e) { + // 默认升序 + return ASC; + } + } +} diff --git a/riis-system/src/main/java/com/yfd/platform/utils/wrapper/SortOrder.java b/riis-system/src/main/java/com/yfd/platform/utils/wrapper/SortOrder.java new file mode 100644 index 0000000..3e8e8fb --- /dev/null +++ b/riis-system/src/main/java/com/yfd/platform/utils/wrapper/SortOrder.java @@ -0,0 +1,27 @@ +package com.yfd.platform.utils.wrapper; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SortOrder { + /** + * 排序字段(对应实体类属性名) + */ + private String property; + + /** + * 排序方向 + */ + private SortDirection direction = SortDirection.ASC; // 默认升序 + + /** + * 快速构建方法 + */ + public static SortOrder of(String property, SortDirection direction) { + return new SortOrder(property, direction); + } +}