zy-acs-flow/src/page/bus/BusList.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/BusinessSortService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/DataFieldSortFunc.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/BusStsType.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/BaseController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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 /> zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/BusinessSortService.java
New file @@ -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 ""; } } zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/DataFieldSortFunc.java
New file @@ -0,0 +1,9 @@ package com.zy.acs.manager.common.utils; import java.util.List; public interface DataFieldSortFunc { List<String> getDataFieldSort(); } 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)) { 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()); } } 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; } }