Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitab35c3c

Browse files
Step 8. Implement business logic
1 parentcf7bd8b commitab35c3c

File tree

4 files changed

+61
-1
lines changed

4 files changed

+61
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
packageorg.springframework.samples.petclinic.owner;
2+
3+
importorg.springframework.data.jpa.repository.JpaRepository;
4+
5+
publicinterfacePetRepositoryextendsJpaRepository<Pet,Integer> {
6+
}

‎existing-spring-boot-app-modification/spring-petclinic-main/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
importjava.util.Map;
1919

20+
importorg.springframework.samples.petclinic.vet.Vet;
21+
importorg.springframework.samples.petclinic.vet.VetAutoAssignmentService;
2022
importorg.springframework.stereotype.Controller;
2123
importorg.springframework.validation.BindingResult;
2224
importorg.springframework.web.bind.WebDataBinder;
@@ -40,8 +42,16 @@ class VisitController {
4042

4143
privatefinalOwnerRepositoryowners;
4244

43-
publicVisitController(OwnerRepositoryowners) {
45+
privatefinalPetRepositorypetRepository;
46+
47+
privatefinalVetAutoAssignmentServicevetAutoAssignmentService;
48+
49+
publicVisitController(OwnerRepositoryowners,
50+
PetRepositorypetRepository,
51+
VetAutoAssignmentServicevetAutoAssignmentService) {
4452
this.owners =owners;
53+
this.petRepository =petRepository;
54+
this.vetAutoAssignmentService =vetAutoAssignmentService;
4555
}
4656

4757
@InitBinder
@@ -86,6 +96,10 @@ public String processNewVisitForm(@ModelAttribute Owner owner, @PathVariable int
8696
return"pets/createOrUpdateVisitForm";
8797
}
8898

99+
Petpet =petRepository.getReferenceById(petId);
100+
Vetvet =vetAutoAssignmentService.findAppropriateVet(pet);
101+
visit.setVet(vet);
102+
89103
owner.addVisit(petId,visit);
90104
this.owners.save(owner);
91105
return"redirect:/owners/{ownerId}";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
packageorg.springframework.samples.petclinic.vet;
2+
3+
importorg.springframework.samples.petclinic.owner.Pet;
4+
importorg.springframework.samples.petclinic.owner.Visit;
5+
importorg.springframework.stereotype.Service;
6+
7+
importjava.util.Collections;
8+
importjava.util.Comparator;
9+
importjava.util.List;
10+
11+
@Service
12+
publicclassVetAutoAssignmentService {
13+
14+
publicstaticfinalintSURGERY_ID =2;
15+
privatefinalVetRepositoryvetRepository;
16+
17+
publicVetAutoAssignmentService(VetRepositoryvetRepository) {
18+
this.vetRepository =vetRepository;
19+
}
20+
21+
publicVetfindAppropriateVet(Petpet) {
22+
List<Visit>visits =pet.getVisits()
23+
.stream()
24+
.toList();
25+
if (visits.isEmpty() ||visits.stream()
26+
.noneMatch(v ->v.getVet() !=null)) {
27+
returnvetRepository.findBySpecialties_IdIn(Collections.singleton(SURGERY_ID))
28+
.stream()
29+
.findAny()
30+
.orElseThrow();
31+
}
32+
returnvisits.stream()
33+
.filter(v ->v.getVet() !=null)
34+
.max(Comparator.comparing(Visit::getDate))
35+
.orElseThrow()
36+
.getVet();
37+
}
38+
}

‎existing-spring-boot-app-modification/spring-petclinic-main/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,6 @@ public interface VetRepository extends Repository<Vet, Integer> {
5757
Page<Vet>findAll(Pageablepageable)throwsDataAccessException;
5858

5959
List<Vet>findBySpecialtiesIn(Collection<Specialty>specialties);
60+
61+
List<Vet>findBySpecialties_IdIn(Collection<Integer>ids);
6062
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp