Skip to content

Commit 0c92d7b

Browse files
committed
feat: create daily report api
1 parent f0f5cc2 commit 0c92d7b

22 files changed

+313
-4
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.project.analysis.domain.application.dto.response;
2+
3+
import com.project.analysis.domain.domain.entity.AnalysisDetail;
4+
import com.project.analysis.domain.domain.entity.AnalysisStep;
5+
import com.project.analysis.domain.domain.entity.SleepTimeDetail;
6+
7+
import java.util.List;
8+
9+
public record CreateDailyReportResponse(
10+
AnalysisDetail analysisDetail,
11+
List<AnalysisStep> analysisStep,
12+
SleepTimeDetail sleepTimeDetail
13+
) {}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.project.analysis.domain.application.usecase;
2+
3+
import com.project.analysis.domain.application.dto.response.CreateDailyReportResponse;
4+
import com.project.analysis.domain.domain.entity.*;
5+
import com.project.analysis.domain.domain.service.*;
6+
import com.project.analysis.domain.infra.client.CreateDailyReportClient;
7+
import lombok.RequiredArgsConstructor;
8+
import org.springframework.stereotype.Service;
9+
import org.springframework.transaction.annotation.Transactional;
10+
11+
import java.time.LocalDate;
12+
import java.util.List;
13+
14+
@Service
15+
@Transactional
16+
@RequiredArgsConstructor
17+
public class CreateDailyReportUseCase {
18+
19+
private final SleepSessionService sleepSessionService;
20+
private final AnalyzedSleepLevelService analyzedSleepLevelService;
21+
private final AnalyzedSoundEventService analyzedSoundEventService;
22+
private final CreateDailyReportClient createDailyReportClient;
23+
private final AnalysisDetailService analysisDetailService;
24+
private final DailyReportService dailyReportService;
25+
private final AnalysisStepService analysisStepService;
26+
27+
public void execute(Long userNo, LocalDate date) {
28+
SleepSession sleepSession = sleepSessionService.findByUserNo(userNo, date);
29+
List<AnalyzedSleepLevel> analyzedSleepLevels = analyzedSleepLevelService.findAll(sleepSession);
30+
List<AnalyzedSoundEvent> analyzedSoundEvents = analyzedSoundEventService.findAll(sleepSession);
31+
DailyReport dailyReport = dailyReportService.findBySleepSession(sleepSession);
32+
33+
CreateDailyReportResponse response = createDailyReportClient.request(analyzedSleepLevels, analyzedSoundEvents);
34+
35+
AnalysisDetail analysisDetail = response.analysisDetail();
36+
analysisDetail.updateDailyReport(dailyReport);
37+
analysisDetailService.save(analysisDetail);
38+
39+
for (AnalysisStep analysisStep : response.analysisStep()) {
40+
analysisStep.updateAnalysisDetail(analysisDetail);
41+
analysisStepService.save(analysisStep);
42+
}
43+
44+
SleepTimeDetail sleepTimeDetail = response.sleepTimeDetail();
45+
sleepTimeDetail.updateDailyReport(dailyReport);
46+
}
47+
}

src/main/java/com/project/analysis/domain/domain/entity/AnalysisDetail.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,8 @@ public class AnalysisDetail {
3737
@Enumerated(EnumType.STRING)
3838
@Column(name = "effect", nullable = false, length = 10)
3939
private Effect effect;
40+
41+
public void updateDailyReport(DailyReport dailyReport) {
42+
this.dailyReport = dailyReport;
43+
}
4044
}

src/main/java/com/project/analysis/domain/domain/entity/AnalysisStep.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,8 @@ public class AnalysisStep {
2929

3030
@Column(name = "content", nullable = false, length = 255)
3131
private String content;
32+
33+
public void updateAnalysisDetail(AnalysisDetail analysisDetail) {
34+
this.analysisDetail = analysisDetail;
35+
}
3236
}

src/main/java/com/project/analysis/domain/domain/entity/SleepTimeDetail.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,8 @@ public class SleepTimeDetail {
3939

4040
@Column(name = "rem_sleep_ratio", nullable = false, precision = 4, scale = 1)
4141
private BigDecimal remSleepRatio;
42+
43+
public void updateDailyReport(DailyReport dailyReport) {
44+
this.dailyReport = dailyReport;
45+
}
4246
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.project.analysis.domain.domain.repository;
2+
3+
import com.project.analysis.domain.domain.entity.AnalysisDetail;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
public interface AnalysisDetailRepository extends JpaRepository<AnalysisDetail, Long> {
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.project.analysis.domain.domain.repository;
2+
3+
import com.project.analysis.domain.domain.entity.AnalysisStep;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
public interface AnalysisStepRepository extends JpaRepository<AnalysisStep, Long> {
7+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.project.analysis.domain.domain.repository;
2+
3+
import com.project.analysis.domain.domain.entity.AnalyzedSleepLevel;
4+
import com.project.analysis.domain.domain.entity.SleepSession;
5+
import org.springframework.data.jpa.repository.JpaRepository;
6+
7+
import java.util.List;
8+
9+
public interface AnalyzedSleepLevelRepository extends JpaRepository<AnalyzedSleepLevel, Long> {
10+
List<AnalyzedSleepLevel> findAllBySleepSession(SleepSession sleepSession);
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.project.analysis.domain.domain.repository;
2+
3+
import com.project.analysis.domain.domain.entity.AnalyzedSoundEvent;
4+
import com.project.analysis.domain.domain.entity.SleepSession;
5+
import org.springframework.data.jpa.repository.JpaRepository;
6+
7+
import java.util.List;
8+
9+
public interface AnalyzedSoundEventRepository extends JpaRepository<AnalyzedSoundEvent, Long> {
10+
List<AnalyzedSoundEvent> findAllBySleepSession(SleepSession sleepSession);
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.project.analysis.domain.domain.repository;
2+
3+
import com.project.analysis.domain.domain.entity.DailyReport;
4+
import com.project.analysis.domain.domain.entity.SleepSession;
5+
import org.springframework.data.jpa.repository.JpaRepository;
6+
7+
import java.util.Optional;
8+
9+
public interface DailyReportRepository extends JpaRepository<DailyReport, Long> {
10+
Optional<DailyReport> findBySleepSession(SleepSession sleepSession);
11+
}

0 commit comments

Comments
 (0)