Skip to content

Commit 168bcb4

Browse files
authored
Merge pull request #83 from Capstone-QuarterBack/feature
Feature
2 parents c7da2de + 3852514 commit 168bcb4

6 files changed

Lines changed: 62 additions & 1 deletion

File tree

src/main/java/com/example/quaterback/api/domain/charger/entity/ChargerEntity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class ChargerEntity {
3939

4040
public ChargerDomain toDomain() {
4141
return ChargerDomain.builder()
42+
.id(id)
4243
.stationId(station.getStationId())
4344
.evseId(evseId)
4445
.chargerStatus(chargerStatus)

src/main/java/com/example/quaterback/api/domain/txinfo/repository/SpringDataJpaTxInfoRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,4 +229,7 @@ WHEN HOUR(started_time) >= 6 AND HOUR(started_time) < 18 THEN 'DAY'
229229
GROUP BY timeType
230230
""", nativeQuery = true)
231231
List<DayNightMeterValueDto> findMeterValueGroupedByTimeType();
232+
233+
TransactionInfoEntity findTop1ByEvseId_IdOrderByStartedTimeDesc(Long chargerPk);
234+
232235
}

src/main/java/com/example/quaterback/api/domain/txlog/repository/SpringDataJpaTxLogRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@
55
import org.springframework.data.jpa.repository.Query;
66
import org.springframework.data.repository.query.Param;
77

8+
import java.util.List;
89
import java.util.Optional;
910

1011
public interface SpringDataJpaTxLogRepository extends JpaRepository<TransactionLogEntity, Long> {
1112
@Query("SELECT AVG(t.meterValue) FROM TransactionLogEntity t WHERE t.transactionId = :transactionId")
1213
Integer avgMeterValueByTransactionId(@Param("transactionId") String transactionId);
1314

1415
TransactionLogEntity findTopByTransactionIdOrderByTimestampDesc(String txId);
16+
17+
List<TransactionLogEntity> findByTransactionIdOrderByTimestampAsc(String transactionId);
1518
}

src/main/java/com/example/quaterback/api/feature/monitoring/controller/StationMonitoringController.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.example.quaterback.api.feature.monitoring.dto.response.*;
44
import com.example.quaterback.api.feature.monitoring.facade.StationMonitoringFacade;
5+
import com.example.quaterback.websocket.transaction.event.service.TransactionEventService;
56
import lombok.RequiredArgsConstructor;
67
import org.springframework.data.domain.Page;
78
import org.springframework.data.domain.PageRequest;
@@ -18,6 +19,7 @@
1819
public class StationMonitoringController {
1920

2021
private final StationMonitoringFacade stationMonitoringFacade;
22+
private final TransactionEventService transactionEventService;
2123

2224
@GetMapping("/charging-history/{stationId}")
2325
public ChargingRecordResponsePage getChargingHistoryPaged(
@@ -74,4 +76,13 @@ public Long todoCharger() {
7476
public EssValueResponse getEssValue(@PathVariable(name = "stationId") String stationId) {
7577
return stationMonitoringFacade.getEssValue(stationId);
7678
}
79+
80+
@GetMapping("/live-streaming/{evseId}/{stationId}")
81+
public List<TimeAndValueDto> getLive(
82+
@PathVariable(name = "evseId") Integer evseId,
83+
@PathVariable(name = "stationId") String stationId
84+
){
85+
return transactionEventService.getLiveInfo(evseId,stationId);
86+
87+
}
7788
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.example.quaterback.api.feature.monitoring.dto.response;
2+
3+
import com.example.quaterback.api.domain.txlog.entity.TransactionLogEntity;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
import java.time.LocalDateTime;
9+
10+
@Data
11+
@AllArgsConstructor
12+
@NoArgsConstructor
13+
public class TimeAndValueDto {
14+
LocalDateTime timestamp;
15+
Double value;
16+
17+
public static TimeAndValueDto from(TransactionLogEntity entity){
18+
return new TimeAndValueDto(entity.getTimestamp(), entity.getMeterValue());
19+
}
20+
}

src/main/java/com/example/quaterback/websocket/transaction/event/service/TransactionEventService.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
package com.example.quaterback.websocket.transaction.event.service;
22

3+
import com.example.quaterback.api.domain.charger.domain.ChargerDomain;
4+
import com.example.quaterback.api.domain.charger.repository.ChargerRepository;
5+
import com.example.quaterback.api.domain.station.repository.ChargingStationRepository;
36
import com.example.quaterback.api.domain.txinfo.domain.TransactionInfoDomain;
7+
import com.example.quaterback.api.domain.txinfo.entity.TransactionInfoEntity;
8+
import com.example.quaterback.api.domain.txinfo.repository.SpringDataJpaTxInfoRepository;
49
import com.example.quaterback.api.domain.txinfo.repository.TxInfoRepository;
510
import com.example.quaterback.api.domain.txinfo.service.TransactionInfoService;
611
import com.example.quaterback.api.domain.txlog.domain.TransactionLogDomain;
12+
import com.example.quaterback.api.domain.txlog.entity.TransactionLogEntity;
13+
import com.example.quaterback.api.domain.txlog.repository.SpringDataJpaTxLogRepository;
714
import com.example.quaterback.api.domain.txlog.repository.TxLogRepository;
815
import com.example.quaterback.api.feature.dashboard.dto.query.ChargerUsageQuery;
916
import com.example.quaterback.api.feature.dashboard.dto.query.DashboardSummaryQuery;
@@ -15,6 +22,7 @@
1522
import com.example.quaterback.api.feature.monitoring.dto.query.DailyUsageQuery;
1623
import com.example.quaterback.api.feature.monitoring.dto.query.HourlyCongestionQuery;
1724
import com.example.quaterback.api.feature.monitoring.dto.response.HourlyCongestion;
25+
import com.example.quaterback.api.feature.monitoring.dto.response.TimeAndValueDto;
1826
import com.example.quaterback.common.redis.service.RedisMapSessionToStationService;
1927
import com.example.quaterback.websocket.transaction.event.converter.TransactionEventConverter;
2028
import com.example.quaterback.websocket.transaction.event.domain.TransactionEventDomain;
@@ -39,7 +47,9 @@ public class TransactionEventService {
3947
private final TxLogRepository txLogRepository;
4048
private final RedisMapSessionToStationService redisMappingService;
4149
private final TransactionInfoService transactionInfoService;
42-
50+
private final ChargerRepository chargerRepository;
51+
private final SpringDataJpaTxInfoRepository springDataJpaTxInfoRepository;
52+
private final SpringDataJpaTxLogRepository springDataJpaTxLogRepository;
4353
public String saveTxInfo(JsonNode jsonNode, String sessionId) {
4454
TransactionEventDomain txEventDomain = converter.convertToStartedTransactionDomain(jsonNode);
4555

@@ -109,4 +119,17 @@ public Page<TransactionInfoDomain> findTransactionInfo(String stationId, Integer
109119
public DailyUsageQuery findOneDayUsageInfo(String stationId, Integer evseId, LocalDate date) {
110120
return txInfoRepository.findDailyUsageByEvseIdAndDate( stationId, evseId, date);
111121
}
122+
123+
124+
public List<TimeAndValueDto> getLiveInfo (Integer evseId, String stationId) {
125+
log.info("1");
126+
ChargerDomain chargerDomain = chargerRepository.findByStationIdAndEvseId(stationId, evseId);
127+
log.info(chargerDomain.getId().toString());
128+
TransactionInfoEntity transactionInfoEntity = springDataJpaTxInfoRepository.findTop1ByEvseId_IdOrderByStartedTimeDesc(chargerDomain.getId());
129+
log.info("3");
130+
List<TransactionLogEntity> txEntities = springDataJpaTxLogRepository.findByTransactionIdOrderByTimestampAsc(transactionInfoEntity.getTransactionId());
131+
log.info("4");
132+
return txEntities.stream()
133+
.map(TimeAndValueDto::from).toList();
134+
}
112135
}

0 commit comments

Comments
 (0)