فهرست منبع

站点列表查询优化

skyline 1 سال پیش
والد
کامیت
55c7aff7ab

+ 11 - 5
admin-web/src/views/admin/station/list/index.vue

@@ -34,13 +34,18 @@
           ref="queryRef"
           size="default" label-width="0px" class="mt5 mb5">
 
-        <el-input
-            v-model="state.formQuery.stationName"
-            placeholder="站点名称"
+        <ext-select
+            v-model="state.formQuery.stationId"
+            placeholder="站点"
             clearable
-            @blur="loadData(true)"
+            url="station/listStation"
+            urlMethod="get"
+            data-key=""
+            label-key="stationName"
+            value-key="stationId"
+            @on-change="loadData(true)"
             class="wd150 mr10">
-        </el-input>
+        </ext-select>
 
         <el-button v-auth="'station.list'"    class="ml10"  plain size="default" type="success" @click="loadData(true)">
           <SvgIcon name="ele-Search"/>
@@ -138,6 +143,7 @@ import mittBus from '/@/utils/mitt';
 import ExtDLabel from "/@/components/form/ExtDLabel.vue";
 import {useRouter} from "vue-router";
 import ExtImage from "/@/components/form/ExtImage.vue";
+import ExtSelect from "/@/components/form/ExtSelect.vue";
 const router = useRouter();
 const StationDialog = defineAsyncComponent(() => import("/@/views/admin/station/list/dialog.vue"));
 const Upload = defineAsyncComponent(() => import("/@/views/admin/station/list/upload.vue"));

+ 4 - 17
admin/src/main/java/com/kym/admin/controller/StationController.java

@@ -1,20 +1,14 @@
 package com.kym.admin.controller;
 
-import cn.dev33.satoken.stp.StpUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.kym.common.R;
 import com.kym.common.annotation.SysLog;
 import com.kym.entity.admin.Station;
-import com.kym.entity.admin.vo.ConnectorVo;
+import com.kym.entity.admin.queryParams.StationQueryParam;
 import com.kym.service.admin.StationService;
-import com.kym.service.cache.KymCache;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-
-import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotNull;
-
 /**
  * <p>
  * 充电站信息 前端控制器
@@ -46,15 +40,8 @@ public class StationController {
 
     @SysLog("站点列表")
     @GetMapping("listStation")
-    R<?> listStation(@RequestParam(required = false) String stationName) {
-        // 判断数据权限
-        var adminStationIds = KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong());
-        var res = stationService.lambdaQuery()
-                .eq(Station::getStationStatus, Station.STATION_STATUS_正常使用)
-                .in(isNotNull(adminStationIds), Station::getStationId, adminStationIds)
-                .like(isNotNull(stationName), Station::getStationName, stationName)
-                .orderByAsc(Station::getStationId).list();
-        return R.success(res);
+    R<?> listStation(@ModelAttribute StationQueryParam params) {
+        return R.success(stationService.listStation(params));
     }
 
     @SysLog("修改站点信息")
@@ -76,7 +63,7 @@ public class StationController {
     }
 
     @PostMapping("/importStation")
-    R<?> importStation(@RequestBody JSONObject data){
+    R<?> importStation(@RequestBody JSONObject data) {
         stationService.importStation(data);
         return R.success(data);
     }

+ 13 - 0
entity/src/main/java/com/kym/entity/admin/queryParams/StationQueryParam.java

@@ -0,0 +1,13 @@
+package com.kym.entity.admin.queryParams;
+
+import com.kym.entity.common.PageParams;
+import lombok.Data;
+
+/**
+ * 站点查询参数
+ */
+@Data
+public class StationQueryParam extends PageParams {
+    private String stationId;
+    private String stationName;
+}

+ 3 - 0
service/src/main/java/com/kym/service/admin/StationService.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.github.yulichang.base.MPJBaseService;
 import com.kym.entity.admin.Station;
+import com.kym.entity.admin.queryParams.StationQueryParam;
 import com.kym.entity.admin.vo.StationVo;
 import com.kym.entity.enplus.EnStationStatsInfo;
 import com.kym.entity.enplus.EnStationStatusInfo;
@@ -31,4 +32,6 @@ public interface StationService extends MPJBaseService<Station> {
     void modifyStation(Station station);
 
     void importStation(JSONObject data);
+
+    List<Station> listStation(StationQueryParam params);
 }

+ 21 - 0
service/src/main/java/com/kym/service/admin/impl/StationServiceImpl.java

@@ -1,5 +1,6 @@
 package com.kym.service.admin.impl;
 
+import cn.dev33.satoken.stp.StpUtil;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
@@ -11,6 +12,7 @@ import com.kym.common.exception.BusinessException;
 import com.kym.common.utils.AESUtil;
 import com.kym.common.utils.CommUtil;
 import com.kym.entity.admin.*;
+import com.kym.entity.admin.queryParams.StationQueryParam;
 import com.kym.entity.admin.vo.StationVo;
 import com.kym.entity.enplus.EnEquipmentInfo;
 import com.kym.entity.enplus.EnStationStatsInfo;
@@ -60,6 +62,25 @@ public class StationServiceImpl extends MyBaseServiceImpl<StationMapper, Station
         this.activityService = activityService;
     }
 
+
+    @Override
+    public List<Station> listStation(StationQueryParam params) {
+        // 判断数据权限
+        var adminStationIds = KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong());
+        QueryWrapper<Station> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("station_status", Station.STATION_STATUS_正常使用);
+        if (CommUtil.isNotEmptyAndNull(params.getStationId())) {
+            Set<String> stationIdSets = new java.util.HashSet<>(Set.of(params.getStationId()));
+            stationIdSets.addAll(adminStationIds);
+            queryWrapper.in("station_id", stationIdSets);
+        }
+        if(CommUtil.isNotEmptyAndNull(adminStationIds)){
+            queryWrapper.in("station_id", adminStationIds);
+        }
+        queryWrapper.orderByAsc("station_id");
+        return list(queryWrapper);
+    }
+
     @Override
     @DynamicCache // 方法的返回结果加一层方法缓存,5分钟内不变
     public List<StationVo> queryStationInfo(int pageNum, int pageSize) {