skyline 2 лет назад
Родитель
Сommit
795735f380

+ 18 - 0
admin/src/main/java/com/kym/admin/controller/AdminUserStationController.java

@@ -0,0 +1,18 @@
+package com.kym.admin.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 操作员站点关联表 前端控制器
+ * </p>
+ *
+ * @author skyline
+ * @since 2023-09-18
+ */
+@RestController
+@RequestMapping("/admin-user-station")
+public class AdminUserStationController {
+
+}

+ 3 - 3
admin/src/main/java/com/kym/admin/controller/EquipmentInfoController.java

@@ -42,9 +42,9 @@ public class EquipmentInfoController {
      *
      * @return
      */
-    @GetMapping({"/statEquipmentStatus/{stationId}","/statEquipmentStatus"})
-    R statEquipment(@PathVariable(required = false) String stationId) {
-        return R.success(equipmentInfoService.statEquipmentStatus(stationId));
+    @GetMapping("/statEquipmentStatus")
+    R statEquipment() {
+        return R.success(equipmentInfoService.statEquipmentStatus());
     }
 
 }

+ 7 - 1
admin/src/main/java/com/kym/admin/controller/StatController.java

@@ -1,8 +1,11 @@
 package com.kym.admin.controller;
 
+import cn.dev33.satoken.stp.StpUtil;
 import com.kym.common.R;
 import com.kym.entity.admin.queryParams.StatQueryParam;
 import com.kym.service.miniapp.ChargeOrderService;
+import com.kym.service.utils.KymCache;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.web.bind.annotation.*;
 
 /**
@@ -16,8 +19,11 @@ public class StatController {
 
     private final ChargeOrderService chargeOrderService;
 
-    public StatController(ChargeOrderService chargeOrderService) {
+    private final KymCache kymCache;
+
+    public StatController(ChargeOrderService chargeOrderService, @Lazy KymCache kymCache) {
         this.chargeOrderService = chargeOrderService;
+        this.kymCache = kymCache;
     }
 
     /**

+ 43 - 0
entity/src/main/java/com/kym/entity/admin/AdminUserStation.java

@@ -0,0 +1,43 @@
+package com.kym.entity.admin;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.kym.entity.BaseEntity;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 操作员站点关联表
+ * </p>
+ *
+ * @author skyline
+ * @since 2023-09-18
+ */
+@Getter
+@Setter
+@TableName("t_admin_user_station")
+public class AdminUserStation extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 公司id
+     */
+    private Long companyId;
+
+    /**
+     * 操作员id
+     */
+    private Long adminUserId;
+
+    /**
+     * 站点id
+     */
+    private String stationId;
+
+    /**
+     * 站点名称
+     */
+    private String stationName;
+}

+ 4 - 0
entity/src/main/java/com/kym/entity/admin/queryParams/CustomChargeOrdersQueryParam.java

@@ -27,6 +27,10 @@ public class CustomChargeOrdersQueryParam {
      * 用户名
      */
     private String username;
+    /**
+     * 站点id
+     */
+    private String stationId;
     /**
      * 充电桩序列号
      */

+ 16 - 0
mapper/src/main/java/com/kym/mapper/admin/AdminUserStationMapper.java

@@ -0,0 +1,16 @@
+package com.kym.mapper.admin;
+
+import com.kym.entity.admin.AdminUserStation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 操作员站点关联表 Mapper 接口
+ * </p>
+ *
+ * @author skyline
+ * @since 2023-09-18
+ */
+public interface AdminUserStationMapper extends BaseMapper<AdminUserStation> {
+
+}

+ 1 - 1
mapper/src/main/java/com/kym/mapper/miniapp/ChargeOrderMapper.java

@@ -25,5 +25,5 @@ public interface ChargeOrderMapper extends BaseMapper<ChargeOrder> {
 
     List<StationStatVo> stationStat(@Param("params") StatQueryParam params);
 
-    Map stationTodayStat(@Param("stationId") String stationId);
+    Map<String, Object> stationTodayStat(@Param("stationId") String stationId);
 }

+ 18 - 0
mapper/src/main/resources/mappers/admin/AdminUserStationMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.kym.mapper.admin.AdminUserStationMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.kym.entity.admin.AdminUserStation">
+        <result column="company_id" property="companyId" />
+        <result column="admin_user_id" property="adminUserId" />
+        <result column="station_id" property="stationId" />
+        <result column="station_name" property="stationName" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        company_id, admin_user_id, station_id, station_name
+    </sql>
+
+</mapper>

+ 13 - 10
mapper/src/main/resources/mappers/miniapp/ChargeOrderMapper.xml

@@ -82,22 +82,25 @@
             <if test="params.userId != null">
                 and t2.user_id = ${params.userId}
             </if>
-            <if test="params.mobilePhone != null">
+            <if test="params.mobilePhone != null and params.mobilePhone != ''">
                 and t2.mobile_phone = "${params.mobilePhone}"
             </if>
-            <if test="params.connectorId != null">
+            <if test="params.connectorId != null and params.connectorId != ''">
                 and t1.connector_id = "${params.connectorId}"
             </if>
-            <if test="params.startChargeSeq != null">
+            <if test="params.stationId != null and params.stationId != ''">
+                and t1.station_id = "${params.stationId}"
+            </if>
+            <if test="params.startChargeSeq != null and params.startChargeSeq != ''">
                 and t1.start_charge_seq = "${params.startChargeSeq}"
             </if>
             <if test="params.orderStatus != null">
                 and t1.order_status = ${params.orderStatus}
             </if>
-            <if test="params.startDate != null">
+            <if test="params.startDate != null and params.startDate != ''">
                 and t1.start_time &gt;= "${params.startDate}"
             </if>
-            <if test="params.endDate != null">
+            <if test="params.endDate != null and params.endDate != ''">
                 and t1.end_time &lt;= "${params.endDate}"
             </if>
         </where>
@@ -106,7 +109,7 @@
 
     <select id="stationStat" resultMap="StationStatMap" parameterType="com.kym.entity.admin.queryParams.StatQueryParam">
         SELECT
-        <if test="params.stationId != null">
+        <if test="params.stationId != null and params.stationId != ''">
             t1.station_id,
         </if>
         <if test="params.type == null or params.type == 'day'">
@@ -127,17 +130,17 @@
         FROM
         t_charge_order
         <where>
-            <if test="params.stationId != null">
+            <if test="params.stationId != null and params.stationId != ''">
                 and station_id = #{params.stationId}
             </if>
         </where>
         ) t1
         GROUP BY stat_time
         <trim prefix="having" suffixOverrides="and">
-            <if test="params.startTime != null">
+            <if test="params.startTime != null and params.startTime != ''">
                 stat_time &gt;= #{params.startTime} and
             </if>
-            <if test="params.endTime != null">
+            <if test="params.endTime != null and params.endTime != ''">
                 stat_time &lt;= #{params.endTime} and
             </if>
         </trim>
@@ -158,7 +161,7 @@
         FROM
         t_charge_order
         <where>
-            <if test="stationId != null">
+            <if test="stationId != null and stationId != ''">
                 AND station_id = #{stationId}
             </if>
             AND start_time &gt;= DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00')

+ 16 - 0
service/src/main/java/com/kym/service/admin/AdminUserStationService.java

@@ -0,0 +1,16 @@
+package com.kym.service.admin;
+
+import com.kym.entity.admin.AdminUserStation;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 操作员站点关联表 服务类
+ * </p>
+ *
+ * @author skyline
+ * @since 2023-09-18
+ */
+public interface AdminUserStationService extends IService<AdminUserStation> {
+
+}

+ 2 - 2
service/src/main/java/com/kym/service/admin/EquipmentInfoService.java

@@ -1,7 +1,7 @@
 package com.kym.service.admin;
 
-import com.kym.entity.admin.EquipmentInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kym.entity.admin.EquipmentInfo;
 import com.kym.entity.admin.queryParams.EquipmentQueryParam;
 import com.kym.entity.common.PageBean;
 
@@ -19,5 +19,5 @@ public interface EquipmentInfoService extends IService<EquipmentInfo> {
 
     PageBean<EquipmentInfo> listEquipment(EquipmentQueryParam params);
 
-    Map statEquipmentStatus(String stationId);
+    Map<Integer, Long> statEquipmentStatus();
 }

+ 22 - 0
service/src/main/java/com/kym/service/admin/impl/AdminUserStationServiceImpl.java

@@ -0,0 +1,22 @@
+package com.kym.service.admin.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.kym.entity.admin.AdminUserStation;
+import com.kym.mapper.admin.AdminUserStationMapper;
+import com.kym.service.admin.AdminUserStationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 操作员站点关联表 服务实现类
+ * </p>
+ *
+ * @author skyline
+ * @since 2023-09-18
+ */
+@Service
+@DS("db-admin")
+public class AdminUserStationServiceImpl extends ServiceImpl<AdminUserStationMapper, AdminUserStation> implements AdminUserStationService {
+    
+}

+ 4 - 1
service/src/main/java/com/kym/service/admin/impl/EquipmentInfoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.kym.service.admin.impl;
 
+import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
@@ -51,7 +52,9 @@ public class EquipmentInfoServiceImpl extends ServiceImpl<EquipmentInfoMapper, E
     }
 
     @Override
-    public Map<Integer, Long> statEquipmentStatus(String stationId) {
+    public Map<Integer, Long> statEquipmentStatus() {
+        // 判断数据权限
+        var stationId = kymCache.getAdminUserStationId(StpUtil.getLoginIdAsLong());
         // 获取指定站点下的充电桩
         var equipmentInfos = lambdaQuery().eq(isNotNull(stationId), EquipmentInfo::getStationId, stationId).list();
         // 根据状态进行分组

+ 8 - 4
service/src/main/java/com/kym/service/miniapp/impl/ChargeOrderServiceImpl.java

@@ -1,5 +1,6 @@
 package com.kym.service.miniapp.impl;
 
+import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
@@ -16,7 +17,6 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
@@ -53,6 +53,8 @@ public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, Charg
 
     @Override
     public PageBean<CustomOrderVo> customChargeOrders(CustomChargeOrdersQueryParam params, Integer pageNum, Integer pageSize) {
+        // 判断数据权限
+        params.setStationId(kymCache.getAdminUserStationId(StpUtil.getLoginIdAsLong()));
         PageHelper.startPage(pageNum, pageSize);
         // 查询订单列表(订单编号,手机号,充电站,充电桩SN/短码,订单状态,建单时间,结算时间,充电电量,实付金额,付款状态)
         var result = baseMapper.listChargeOrders(params);
@@ -85,6 +87,8 @@ public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, Charg
      */
     @Override
     public PageBean<StationStatVo> stationStat(StatQueryParam params) {
+        // 判断数据权限
+        params.setStationId(kymCache.getAdminUserStationId(StpUtil.getLoginIdAsLong()));
         PageHelper.startPage(params.getPageNum(), params.getPageSize());
         var res = baseMapper.stationStat(params).stream().peek(item -> {
             item.setElecMoneyPercent((new BigDecimal(item.getElecMoney())).divide(new BigDecimal(Math.max(1, item.getTotalMoney())), 2, RoundingMode.HALF_UP));
@@ -99,9 +103,9 @@ public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, Charg
      * @return
      */
     @Override
-    public Map stationTodayStat() {
-        // TODO: 2023-09-18 判断数据权限
-        String stationId = null;
+    public Map<String, Object> stationTodayStat() {
+        // 判断数据权限
+        var stationId = kymCache.getAdminUserStationId(StpUtil.getLoginIdAsLong());
         return baseMapper.stationTodayStat(stationId);
     }
 

+ 8 - 1
service/src/main/java/com/kym/service/utils/KymCache.java

@@ -1,7 +1,9 @@
 package com.kym.service.utils;
 
+import com.kym.entity.admin.AdminUserStation;
 import com.kym.entity.admin.EquipmentRelation;
 import com.kym.entity.admin.Station;
+import com.kym.service.admin.AdminUserStationService;
 import com.kym.service.admin.EquipmentRelationService;
 import com.kym.service.admin.StationService;
 import lombok.Data;
@@ -22,11 +24,13 @@ public class KymCache {
     private static Map<String, String> SHORT_ID_MAPPING;
     private static Map<String, String> CONNECTOR_STATION_MAPPING;
     private static Map<String, String> STATION_MAPPING;
+    private static Map<Long, String> ADMIN_USER_STATION;
 
-    public KymCache(EquipmentRelationService relationService, StationService stationService) {
+    public KymCache(EquipmentRelationService relationService, StationService stationService, AdminUserStationService adminUserStationService) {
         SHORT_ID_MAPPING = relationService.list().stream().collect(Collectors.toMap(EquipmentRelation::getEquipmentId, EquipmentRelation::getShortId));
         CONNECTOR_STATION_MAPPING = relationService.list().stream().collect(Collectors.toMap(EquipmentRelation::getConnectorId, EquipmentRelation::getStationId));
         STATION_MAPPING = stationService.list().stream().collect(Collectors.toMap(Station::getStationId, Station::getStationName));
+        ADMIN_USER_STATION = adminUserStationService.list().stream().collect(Collectors.toMap(AdminUserStation::getAdminUserId, AdminUserStation::getStationId));
     }
 
     public String getShortId(String equipmentId) {
@@ -49,5 +53,8 @@ public class KymCache {
         return STATION_MAPPING.get(stationId);
     }
 
+    public String getAdminUserStationId(Long adminUserId) {
+        return ADMIN_USER_STATION.get(adminUserId);
+    }
 
 }