更新推送第三方判断桩禁用状态
This commit is contained in:
parent
68ef7ab098
commit
8afe372b62
@ -1,14 +1,30 @@
|
||||
package com.xhpc.evcs.api;
|
||||
|
||||
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.jpa.XhpcTerminalRepository;
|
||||
import com.xhpc.evcs.utils.JSONUtil;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
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 com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
||||
@ -16,6 +32,8 @@ import static com.xhpc.common.data.redis.StaticBeanUtil.REDIS;
|
||||
@RestController
|
||||
public class QueryStationStatusController {
|
||||
|
||||
@Resource
|
||||
XhpcTerminalRepository terminalRepository;
|
||||
|
||||
@PostMapping("/v1/query_station_status")
|
||||
public CommonResponse queryStationsInfo(@RequestBody CommonRequest<StationStatusRequest> commonRequest) throws Exception {
|
||||
@ -46,6 +64,10 @@ public class QueryStationStatusController {
|
||||
for (int i = 0; i < keys.length; 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) {
|
||||
ChargingStationDto chargingStationDto = REDIS.getCacheObject("station:" + stationID);
|
||||
Set<String> pileIds = new HashSet<>();
|
||||
@ -59,12 +81,21 @@ public class QueryStationStatusController {
|
||||
if (pileId.equals(value.substring(0, 14))) {
|
||||
existsGun = true;
|
||||
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");
|
||||
if (isInteger(status.toString())) {
|
||||
connectorStatusInfo.setStatus(3);
|
||||
} else {
|
||||
connectorStatusInfo.setStatus(statusMap.get(status));
|
||||
}
|
||||
} else {
|
||||
connectorStatusInfo.setStatus(0);
|
||||
}
|
||||
}
|
||||
connectorStatusInfo.setConnectorID(value);
|
||||
connectorStatusInfos.add(connectorStatusInfo);
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.QueryByExampleExecutor;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
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")
|
||||
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;
|
||||
|
||||
import com.xhpc.common.api.dto.ChargingStationDto;
|
||||
import com.xhpc.common.domain.XhpcTerminal;
|
||||
import com.xhpc.evcs.domain.AuthSecretToken;
|
||||
import com.xhpc.evcs.domain.XhpcInternetUser;
|
||||
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.XhpcInternetUserRepository;
|
||||
import com.xhpc.evcs.jpa.XhpcStationInternetBlacklistRepository;
|
||||
import com.xhpc.evcs.jpa.XhpcTerminalRepository;
|
||||
import com.xhpc.evcs.utils.ChangePoleStatus;
|
||||
import com.xhpc.evcs.utils.JSONUtil;
|
||||
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.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
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.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
|
||||
@Slf4j
|
||||
@ -35,12 +46,17 @@ public class NotificationStationStatusTask extends CoreDispatcher {
|
||||
private XhpcInternetUserRepository xhpcInternetUserRepository;
|
||||
@Autowired
|
||||
private XhpcStationInternetBlacklistRepository xhpcStationInternetBlacklistRepo;
|
||||
@Resource
|
||||
private XhpcTerminalRepository terminalRepository;
|
||||
|
||||
@Scheduled(fixedRate = 1000 * 45)
|
||||
protected void run() throws IOException {
|
||||
|
||||
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();
|
||||
List<XhpcInternetUser> xhpcInternetUserList =
|
||||
xhpcInternetUserRepository.findByCooperationStartTimeBeforeAndCooperationEndTimeAfter(now, now);
|
||||
@ -49,7 +65,7 @@ public class NotificationStationStatusTask extends CoreDispatcher {
|
||||
"station"));
|
||||
String operatorId = chargingStationDto.getOperatorId();
|
||||
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);
|
||||
if (!changeStatus.isEmpty()) {
|
||||
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<>();
|
||||
final Set<String> connectorIds = terminalStatusMap.keySet();
|
||||
@ -78,7 +94,12 @@ public class NotificationStationStatusTask extends CoreDispatcher {
|
||||
ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo();
|
||||
connectorStatusInfo.setConnectorID(gunId);
|
||||
connectorStatusInfo.setOperatorID(operatorId);
|
||||
Integer dbStatus = terminalDBMap.get(gunId);
|
||||
if(dbStatus == 0){
|
||||
connectorStatusInfo.setStatus(translateStatus(terminalStatusMap.get(gunId)));
|
||||
} else {
|
||||
connectorStatusInfo.setStatus(0);
|
||||
}
|
||||
connectorStatusInfoList.add(connectorStatusInfo);
|
||||
}
|
||||
return connectorStatusInfoList;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user