|
|
@@ -2,20 +2,27 @@ package com.kym.service.admin.impl;
|
|
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
+import com.kym.common.utils.CommUtil;
|
|
|
import com.kym.entity.admin.ConnectorInfo;
|
|
|
+import com.kym.entity.admin.EquipmentInfo;
|
|
|
import com.kym.entity.admin.queryParams.EquipmentQueryParam;
|
|
|
import com.kym.entity.admin.vo.ConnectorInfoVo;
|
|
|
import com.kym.entity.common.PageBean;
|
|
|
+import com.kym.entity.miniapp.ChargeOrder;
|
|
|
import com.kym.mapper.admin.ConnectorInfoMapper;
|
|
|
import com.kym.service.admin.ConnectorInfoService;
|
|
|
import com.kym.service.cache.KymCache;
|
|
|
+import com.kym.service.miniapp.ChargeOrderService;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Comparator;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotNull;
|
|
|
|
|
|
@@ -30,6 +37,13 @@ import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotNull;
|
|
|
@Service
|
|
|
@DS("db-admin")
|
|
|
public class ConnectorInfoServiceImpl extends MPJBaseServiceImpl<ConnectorInfoMapper, ConnectorInfo> implements ConnectorInfoService {
|
|
|
+
|
|
|
+ private final ChargeOrderService chargeOrderService;
|
|
|
+
|
|
|
+ public ConnectorInfoServiceImpl(ChargeOrderService chargeOrderService) {
|
|
|
+ this.chargeOrderService = chargeOrderService;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public PageBean<ConnectorInfoVo> listConnectors(EquipmentQueryParam params) {
|
|
|
// 判断数据权限
|
|
|
@@ -63,4 +77,31 @@ public class ConnectorInfoServiceImpl extends MPJBaseServiceImpl<ConnectorInfoMa
|
|
|
page.setList(res);
|
|
|
return page;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<Integer, Long> statConnectorStatus(String stationId) {
|
|
|
+ if (CommUtil.null2Long(stationId) <= 0) {
|
|
|
+ // 判断数据权限
|
|
|
+ stationId = KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong()) == null ? null : KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong()).get(0);
|
|
|
+ }
|
|
|
+ // 获取指定站点下的充电桩
|
|
|
+ var connectorInfos = lambdaQuery().eq(isNotNull(stationId), ConnectorInfo::getStationId, stationId).list();
|
|
|
+ // 根据状态进行分组
|
|
|
+
|
|
|
+ // 预约中的设备
|
|
|
+ // 手动切换数据源
|
|
|
+ DynamicDataSourceContextHolder.push("db-miniapp");
|
|
|
+ // 查询预约中的订单,按照站点id分组并对connectorId去重计数
|
|
|
+ var orderInfos = chargeOrderService.lambdaQuery()
|
|
|
+ .select(ChargeOrder::getConnectorId)
|
|
|
+ .eq(ChargeOrder::getStationId, stationId)
|
|
|
+ .eq(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_预约中)
|
|
|
+ .list().stream().filter(CommUtil.distinctByKey(ChargeOrder::getConnectorId)).count();
|
|
|
+
|
|
|
+ DynamicDataSourceContextHolder.poll();
|
|
|
+ var res = connectorInfos.stream().collect(Collectors.groupingBy(ConnectorInfo::getStatus, Collectors.counting()));
|
|
|
+ res.put(EquipmentInfo.SERVICE_STATUS_已连接, res.get(EquipmentInfo.SERVICE_STATUS_已连接) - orderInfos);
|
|
|
+ res.put(EquipmentInfo.SERVICE_STATUS_预约中, orderInfos);
|
|
|
+ return res;
|
|
|
+ }
|
|
|
}
|