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