#
luxiaotao1123
2024-09-23 b7f7acbb6dec716aa7faa38a72118867779fe5ca
#
4个文件已修改
2个文件已添加
131 ■■■■■ 已修改文件
zy-acs-flow/src/page/bus/BusList.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/BusinessSortService.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/DataFieldSortFunc.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/BusController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/BusStsType.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/system/controller/BaseController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | 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;
    }
}