更新推送第三方判断桩禁用状态
This commit is contained in:
parent
68ef7ab098
commit
8afe372b62
@ -1,14 +1,30 @@
|
|||||||
package com.xhpc.evcs.api;
|
package com.xhpc.evcs.api;
|
||||||
|
|
||||||
import com.xhpc.common.api.dto.ChargingStationDto;
|
import com.xhpc.common.api.dto.ChargingStationDto;
|
||||||
import com.xhpc.evcs.dto.*;
|
import com.xhpc.common.domain.XhpcTerminal;
|
||||||
|
import com.xhpc.evcs.dto.CommonRequest;
|
||||||
|
import com.xhpc.evcs.dto.CommonResponse;
|
||||||
|
import com.xhpc.evcs.dto.ConnectorStatusInfo;
|
||||||
|
import com.xhpc.evcs.dto.StationStatusInfo;
|
||||||
|
import com.xhpc.evcs.dto.StationStatusInfoWrapper;
|
||||||
|
import com.xhpc.evcs.dto.StationStatusRequest;
|
||||||
import com.xhpc.evcs.encryption.EvcsConst;
|
import com.xhpc.evcs.encryption.EvcsConst;
|
||||||
|
import com.xhpc.evcs.jpa.XhpcTerminalRepository;
|
||||||
import com.xhpc.evcs.utils.JSONUtil;
|
import com.xhpc.evcs.utils.JSONUtil;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.util.*;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static cn.hutool.core.util.NumberUtil.isInteger;
|
import static cn.hutool.core.util.NumberUtil.isInteger;
|
||||||
import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
||||||
@ -16,6 +32,8 @@ import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
|||||||
@RestController
|
@RestController
|
||||||
public class QueryStationStatusController {
|
public class QueryStationStatusController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
XhpcTerminalRepository terminalRepository;
|
||||||
|
|
||||||
@PostMapping("/v1/query_station_status")
|
@PostMapping("/v1/query_station_status")
|
||||||
public CommonResponse queryStationsInfo(@RequestBody CommonRequest<StationStatusRequest> commonRequest) throws Exception {
|
public CommonResponse queryStationsInfo(@RequestBody CommonRequest<StationStatusRequest> commonRequest) throws Exception {
|
||||||
@ -46,6 +64,10 @@ public class QueryStationStatusController {
|
|||||||
for (int i = 0; i < keys.length; i++) {
|
for (int i = 0; i < keys.length; i++) {
|
||||||
statusMap.put(keys[i], values[i]);
|
statusMap.put(keys[i], values[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<XhpcTerminal> terminalList = terminalRepository.selectStatusBySql();
|
||||||
|
Map<String,Integer> terminalDBMap = terminalList.stream().collect(Collectors.toMap(XhpcTerminal::getSerialNumber,XhpcTerminal::getStatus));
|
||||||
|
|
||||||
for (String stationID : stationIDs) {
|
for (String stationID : stationIDs) {
|
||||||
ChargingStationDto chargingStationDto = REDIS.getCacheObject("station:" + stationID);
|
ChargingStationDto chargingStationDto = REDIS.getCacheObject("station:" + stationID);
|
||||||
Set<String> pileIds = new HashSet<>();
|
Set<String> pileIds = new HashSet<>();
|
||||||
@ -59,12 +81,21 @@ public class QueryStationStatusController {
|
|||||||
if (pileId.equals(value.substring(0, 14))) {
|
if (pileId.equals(value.substring(0, 14))) {
|
||||||
existsGun = true;
|
existsGun = true;
|
||||||
ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo();
|
ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo();
|
||||||
|
Integer gunStatus = terminalDBMap.get(value);
|
||||||
|
if (gunStatus == null){
|
||||||
|
existsGun = false;
|
||||||
|
} else {
|
||||||
|
if (gunStatus == 0){
|
||||||
Object status = REDIS.getCacheMapValue("gun:" + value, "status");
|
Object status = REDIS.getCacheMapValue("gun:" + value, "status");
|
||||||
if (isInteger(status.toString())) {
|
if (isInteger(status.toString())) {
|
||||||
connectorStatusInfo.setStatus(3);
|
connectorStatusInfo.setStatus(3);
|
||||||
} else {
|
} else {
|
||||||
connectorStatusInfo.setStatus(statusMap.get(status));
|
connectorStatusInfo.setStatus(statusMap.get(status));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
connectorStatusInfo.setStatus(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
connectorStatusInfo.setConnectorID(value);
|
connectorStatusInfo.setConnectorID(value);
|
||||||
connectorStatusInfos.add(connectorStatusInfo);
|
connectorStatusInfos.add(connectorStatusInfo);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import org.springframework.data.jpa.repository.Query;
|
|||||||
import org.springframework.data.repository.query.QueryByExampleExecutor;
|
import org.springframework.data.repository.query.QueryByExampleExecutor;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -31,4 +32,7 @@ public interface XhpcTerminalRepository extends JpaRepository<XhpcTerminal, Inte
|
|||||||
@Query("select t.pileSerialNumber from XhpcTerminal as t where t.delFlag = 0 and t.serialNumber = ?1")
|
@Query("select t.pileSerialNumber from XhpcTerminal as t where t.delFlag = 0 and t.serialNumber = ?1")
|
||||||
String selectBySql(String serialNumber);
|
String selectBySql(String serialNumber);
|
||||||
|
|
||||||
|
|
||||||
|
@Query("select t.serialNumber, t.status from XhpcTerminal as t where t.delFlag = 0")
|
||||||
|
List<XhpcTerminal> selectStatusBySql();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.xhpc.evcs.notification;
|
package com.xhpc.evcs.notification;
|
||||||
|
|
||||||
import com.xhpc.common.api.dto.ChargingStationDto;
|
import com.xhpc.common.api.dto.ChargingStationDto;
|
||||||
|
import com.xhpc.common.domain.XhpcTerminal;
|
||||||
import com.xhpc.evcs.domain.AuthSecretToken;
|
import com.xhpc.evcs.domain.AuthSecretToken;
|
||||||
import com.xhpc.evcs.domain.XhpcInternetUser;
|
import com.xhpc.evcs.domain.XhpcInternetUser;
|
||||||
import com.xhpc.evcs.domain.XhpcStationInternetBlacklist;
|
import com.xhpc.evcs.domain.XhpcStationInternetBlacklist;
|
||||||
@ -10,6 +11,7 @@ import com.xhpc.evcs.dto.ConnectorStatusInfoReq;
|
|||||||
import com.xhpc.evcs.jpa.AuthSecretTokenRepository;
|
import com.xhpc.evcs.jpa.AuthSecretTokenRepository;
|
||||||
import com.xhpc.evcs.jpa.XhpcInternetUserRepository;
|
import com.xhpc.evcs.jpa.XhpcInternetUserRepository;
|
||||||
import com.xhpc.evcs.jpa.XhpcStationInternetBlacklistRepository;
|
import com.xhpc.evcs.jpa.XhpcStationInternetBlacklistRepository;
|
||||||
|
import com.xhpc.evcs.jpa.XhpcTerminalRepository;
|
||||||
import com.xhpc.evcs.utils.ChangePoleStatus;
|
import com.xhpc.evcs.utils.ChangePoleStatus;
|
||||||
import com.xhpc.evcs.utils.JSONUtil;
|
import com.xhpc.evcs.utils.JSONUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -17,13 +19,22 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.*;
|
import java.util.Collection;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
||||||
import static com.xhpc.evcs.domain.AuthSecretToken.SECRET_TOKEN_TYPE_OUT;
|
import static com.xhpc.evcs.domain.AuthSecretToken.SECRET_TOKEN_TYPE_OUT;
|
||||||
import static com.xhpc.evcs.dto.ConnectorStatusInfo.*;
|
import static com.xhpc.evcs.dto.ConnectorStatusInfo.CHARGING;
|
||||||
|
import static com.xhpc.evcs.dto.ConnectorStatusInfo.ERROR;
|
||||||
|
import static com.xhpc.evcs.dto.ConnectorStatusInfo.FREE;
|
||||||
|
import static com.xhpc.evcs.dto.ConnectorStatusInfo.OFF_LINE;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -35,12 +46,17 @@ public class NotificationStationStatusTask extends CoreDispatcher {
|
|||||||
private XhpcInternetUserRepository xhpcInternetUserRepository;
|
private XhpcInternetUserRepository xhpcInternetUserRepository;
|
||||||
@Autowired
|
@Autowired
|
||||||
private XhpcStationInternetBlacklistRepository xhpcStationInternetBlacklistRepo;
|
private XhpcStationInternetBlacklistRepository xhpcStationInternetBlacklistRepo;
|
||||||
|
@Resource
|
||||||
|
private XhpcTerminalRepository terminalRepository;
|
||||||
|
|
||||||
@Scheduled(fixedRate = 1000 * 45)
|
@Scheduled(fixedRate = 1000 * 45)
|
||||||
protected void run() throws IOException {
|
protected void run() throws IOException {
|
||||||
|
|
||||||
Collection<String> stationTerminalKeys = REDIS.keys("stationTerminalStatus:*");
|
Collection<String> stationTerminalKeys = REDIS.keys("stationTerminalStatus:*");
|
||||||
|
|
||||||
|
List<XhpcTerminal> terminalList = terminalRepository.selectStatusBySql();
|
||||||
|
Map<String,Integer> terminalDBMap = terminalList.stream().collect(Collectors.toMap(XhpcTerminal::getSerialNumber,XhpcTerminal::getStatus));
|
||||||
|
|
||||||
Instant now = Instant.now();
|
Instant now = Instant.now();
|
||||||
List<XhpcInternetUser> xhpcInternetUserList =
|
List<XhpcInternetUser> xhpcInternetUserList =
|
||||||
xhpcInternetUserRepository.findByCooperationStartTimeBeforeAndCooperationEndTimeAfter(now, now);
|
xhpcInternetUserRepository.findByCooperationStartTimeBeforeAndCooperationEndTimeAfter(now, now);
|
||||||
@ -49,7 +65,7 @@ public class NotificationStationStatusTask extends CoreDispatcher {
|
|||||||
"station"));
|
"station"));
|
||||||
String operatorId = chargingStationDto.getOperatorId();
|
String operatorId = chargingStationDto.getOperatorId();
|
||||||
Map<String, String> terminalStatusMap = REDIS.getCacheMap(stationTerminalKey);
|
Map<String, String> terminalStatusMap = REDIS.getCacheMap(stationTerminalKey);
|
||||||
Set<ConnectorStatusInfo> connectorStatusInfos = translateStatus(operatorId, terminalStatusMap);
|
Set<ConnectorStatusInfo> connectorStatusInfos = translateStatus(operatorId, terminalStatusMap, terminalDBMap);
|
||||||
Set<ConnectorStatusInfo> changeStatus = ChangePoleStatus.getChangeStatus(connectorStatusInfos);
|
Set<ConnectorStatusInfo> changeStatus = ChangePoleStatus.getChangeStatus(connectorStatusInfos);
|
||||||
if (!changeStatus.isEmpty()) {
|
if (!changeStatus.isEmpty()) {
|
||||||
for (XhpcInternetUser xhpcInternetUser : xhpcInternetUserList) {
|
for (XhpcInternetUser xhpcInternetUser : xhpcInternetUserList) {
|
||||||
@ -70,7 +86,7 @@ public class NotificationStationStatusTask extends CoreDispatcher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Set<ConnectorStatusInfo> translateStatus(String operatorId, Map<String, String> terminalStatusMap) {
|
private Set<ConnectorStatusInfo> translateStatus(String operatorId, Map<String, String> terminalStatusMap, Map<String, Integer> terminalDBMap) {
|
||||||
|
|
||||||
Set<ConnectorStatusInfo> connectorStatusInfoList = new HashSet<>();
|
Set<ConnectorStatusInfo> connectorStatusInfoList = new HashSet<>();
|
||||||
final Set<String> connectorIds = terminalStatusMap.keySet();
|
final Set<String> connectorIds = terminalStatusMap.keySet();
|
||||||
@ -78,7 +94,12 @@ public class NotificationStationStatusTask extends CoreDispatcher {
|
|||||||
ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo();
|
ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo();
|
||||||
connectorStatusInfo.setConnectorID(gunId);
|
connectorStatusInfo.setConnectorID(gunId);
|
||||||
connectorStatusInfo.setOperatorID(operatorId);
|
connectorStatusInfo.setOperatorID(operatorId);
|
||||||
|
Integer dbStatus = terminalDBMap.get(gunId);
|
||||||
|
if(dbStatus == 0){
|
||||||
connectorStatusInfo.setStatus(translateStatus(terminalStatusMap.get(gunId)));
|
connectorStatusInfo.setStatus(translateStatus(terminalStatusMap.get(gunId)));
|
||||||
|
} else {
|
||||||
|
connectorStatusInfo.setStatus(0);
|
||||||
|
}
|
||||||
connectorStatusInfoList.add(connectorStatusInfo);
|
connectorStatusInfoList.add(connectorStatusInfo);
|
||||||
}
|
}
|
||||||
return connectorStatusInfoList;
|
return connectorStatusInfoList;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user