From b7f7acbb6dec716aa7faa38a72118867779fe5ca Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 23 九月 2024 16:45:38 +0800 Subject: [PATCH] # --- zy-acs-flow/src/page/bus/BusList.jsx | 2 zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/BusinessSortService.java | 61 ++++++++++++++++++++ zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/BusStsType.java | 28 +++++++-- zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java | 11 +++ zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/DataFieldSortFunc.java | 9 +++ zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/BaseController.java | 20 ++++++ 6 files changed, 123 insertions(+), 8 deletions(-) diff --git a/zy-acs-flow/src/page/bus/BusList.jsx b/zy-acs-flow/src/page/bus/BusList.jsx index f0284c5..0222839 100644 --- a/zy-acs-flow/src/page/bus/BusList.jsx +++ b/zy-acs-flow/src/page/bus/BusList.jsx @@ -112,7 +112,7 @@ title={"menu.bus"} empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} filters={filters} - sort={{ field: "create_time", order: "desc" }} + sort={{ field: "create_time", order: "asc" }} actions={( <TopToolbar> <FilterButton /> diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/BusinessSortService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/BusinessSortService.java new file mode 100644 index 0000000..399ba84 --- /dev/null +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/BusinessSortService.java @@ -0,0 +1,61 @@ +package com.zy.acs.manager.common.utils; + +import com.zy.acs.framework.common.Cools; +import com.zy.acs.manager.manager.enums.BusStsType; +import com.zy.acs.manager.manager.service.BusStsService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; + +/** + * Created by vincent on 9/23/2024 + */ +@Slf4j +@Service +public class BusinessSortService { + + public static final Map<Class<? extends DataFieldSortFunc>, String> map = new ConcurrentHashMap<>(); + + interface SelectSupport { + Long execute(String field); + } + + @Autowired + private BusStsService busStsService; + + @PostConstruct + public void init() { + set(BusStsType.class, field -> busStsService.selectByUuid(field).getId()); + } + + public void set(Class<? extends DataFieldSortFunc> cls, SelectSupport support) { + if (null == support) return; + try { + DataFieldSortFunc instance = cls.getEnumConstants()[0]; + List<String> fieldSort = instance.getDataFieldSort(); + List<Long> ids = fieldSort.stream().map(support::execute).collect(Collectors.toList()); + String idString = ids.stream().map(String::valueOf).collect(Collectors.joining(", ")); + if (!Cools.isEmpty(idString)) { + map.put(cls, idString); + } + } catch (Exception e) { + log.error("BusinessSortService", e); + } + } + + public String getSql(Class<? extends DataFieldSortFunc> cls, String fieldName) { + String sql = map.get(cls); + if (!Cools.isEmpty(sql)) { + return "ORDER BY FIELD(" + fieldName + ", " + sql + ") ASC, create_time DESC"; + } + return ""; + } + + +} diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/DataFieldSortFunc.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/DataFieldSortFunc.java new file mode 100644 index 0000000..2febd6e --- /dev/null +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/DataFieldSortFunc.java @@ -0,0 +1,9 @@ +package com.zy.acs.manager.common.utils; + +import java.util.List; + +public interface DataFieldSortFunc { + + List<String> getDataFieldSort(); + +} diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java index c7e937f..6a62262 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java @@ -1,17 +1,20 @@ package com.zy.acs.manager.manager.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.common.R; import com.zy.acs.manager.common.annotation.OperationLog; import com.zy.acs.manager.common.domain.*; +import com.zy.acs.manager.common.utils.BusinessSortService; import com.zy.acs.manager.common.utils.ExcelUtil; import com.zy.acs.manager.core.service.MainService; import com.zy.acs.manager.manager.controller.param.BusCreateParam; import com.zy.acs.manager.manager.controller.param.OpenBusSubmitParam; import com.zy.acs.manager.manager.entity.Bus; import com.zy.acs.manager.manager.entity.Task; +import com.zy.acs.manager.manager.enums.BusStsType; import com.zy.acs.manager.manager.service.BusService; import com.zy.acs.manager.manager.service.LocService; import com.zy.acs.manager.manager.service.StaService; @@ -39,13 +42,19 @@ private LocService locService; @Autowired private TaskService taskService; + @Autowired + private BusinessSortService businessSortService; @PreAuthorize("hasAuthority('manager:bus:list')") @PostMapping("/bus/page") public R page(@RequestBody Map<String, Object> map) { BaseParam baseParam = buildParam(map, BaseParam.class); PageParam<Bus, BaseParam> pageParam = new PageParam<>(baseParam, Bus.class); - PageParam<Bus, BaseParam> page = busService.page(pageParam, pageParam.buildWrapper(true)); + QueryWrapper<Bus> wrapper = pageParam.buildWrapper(true); + if (createTimeDesc(pageParam.getOrders())) { + wrapper.last(businessSortService.getSql(BusStsType.class, "bus_sts")); + } + PageParam<Bus, BaseParam> page = busService.page(pageParam, wrapper); for (Bus record : page.getRecords()) { List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getBusId, record.getId())); if (!Cools.isEmpty(tasks)) { diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/BusStsType.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/BusStsType.java index 2fbd541..478694d 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/BusStsType.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/BusStsType.java @@ -2,18 +2,26 @@ import com.zy.acs.framework.common.SpringUtils; import com.zy.acs.manager.common.exception.BusinessException; +import com.zy.acs.manager.common.utils.DataFieldSortFunc; import com.zy.acs.manager.manager.entity.BusSts; import com.zy.acs.manager.manager.service.BusStsService; -public enum BusStsType { +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; - RECEIVE, - PROGRESS, - FINISH, - CANCEL, +public enum BusStsType implements DataFieldSortFunc { + + RECEIVE(1), + PROGRESS(2), + FINISH(3), + CANCEL(4), ; - BusStsType() { + public int dataSort; + + BusStsType(int dataSort) { + this.dataSort = dataSort; } public long val() { @@ -25,4 +33,12 @@ return busSts.getId(); } + @Override + public List<String> getDataFieldSort() { + return Arrays.stream(BusStsType.values()) + .sorted((e1, e2) -> Integer.compare(e1.dataSort, e2.dataSort)) + .map(Enum::name) + .collect(Collectors.toList()); + } + } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/BaseController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/BaseController.java index 619c985..1849999 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/BaseController.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/BaseController.java @@ -1,10 +1,13 @@ package com.zy.acs.manager.system.controller; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.common.domain.BaseParam; import com.zy.acs.manager.system.entity.User; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; +import java.util.List; import java.util.Map; /** @@ -48,4 +51,21 @@ return t; } + public Boolean createTimeDesc(List<OrderItem> orderItems) { + if (Cools.isEmpty(orderItems)) { + return true; + } + if (orderItems.size() > 1) { + return false; + } + OrderItem orderItem = orderItems.get(0); + if (!orderItem.getColumn().equals("create_time")) { + return false; + } + if (orderItem.isAsc()) { + return false; + } + return true; + } + } -- Gitblit v1.9.1