Works with native query now needst to be hql
This commit is contained in:
parent
9d3500c1fb
commit
0130fb77e1
@ -1,6 +1,7 @@
|
|||||||
package com.plannaplan.repositories;
|
package com.plannaplan.repositories;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import com.plannaplan.entities.Groups;
|
import com.plannaplan.entities.Groups;
|
||||||
@ -21,4 +22,10 @@ public interface GroupRepository extends JpaRepository<Groups, Long> {
|
|||||||
@Query("SELECT COUNT(*) AS assinged_times FROM Assignment WHERE isPastAssignment=false GROUP BY group HAVING group_id=?1")
|
@Query("SELECT COUNT(*) AS assinged_times FROM Assignment WHERE isPastAssignment=false GROUP BY group HAVING group_id=?1")
|
||||||
Optional<Number> getAssignedAmount(Long groupId);
|
Optional<Number> getAssignedAmount(Long groupId);
|
||||||
|
|
||||||
|
// @Query("SELECT group, COUNT(*) AS assinged_times FROM Assignment WHERE
|
||||||
|
// isPastAssignment=false GROUP BY group HAVING group_id IN (:ids)")
|
||||||
|
@Query(nativeQuery = true, value = "SELECT group_id, COUNT(*) AS assinged_times FROM assignment WHERE is_past_assignment=0 GROUP BY group_id HAVING group_id IN (7,9,10,12)")
|
||||||
|
|
||||||
|
List<Object[]> getAssignedAmounts(@Param("ids") List<Long> groupIds);
|
||||||
|
|
||||||
}
|
}
|
@ -1,7 +1,10 @@
|
|||||||
package com.plannaplan.services;
|
package com.plannaplan.services;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.plannaplan.entities.Groups;
|
import com.plannaplan.entities.Groups;
|
||||||
import com.plannaplan.repositories.GroupRepository;
|
import com.plannaplan.repositories.GroupRepository;
|
||||||
@ -51,7 +54,17 @@ public class GroupService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getAssignedAmount(Long groupId) {
|
public HashMap<Groups, Integer> getTakenPlaces(List<Groups> groups) {
|
||||||
return this.repo.getAssignedAmount(groupId).orElse(Integer.valueOf(0)).intValue();
|
HashMap<Groups, Integer> respoonse = new HashMap<>();
|
||||||
|
// groups.forEach(group -> {
|
||||||
|
// final Long id = group.getId();
|
||||||
|
// final Integer ammount =
|
||||||
|
// this.repo.getAssignedAmount(id).orElse(Integer.valueOf(0)).intValue();
|
||||||
|
// respoonse.put(group, ammount);
|
||||||
|
// });
|
||||||
|
|
||||||
|
List<Object[]> respoonse2 = this.repo.getAssignedAmounts(
|
||||||
|
groups.stream().filter(Objects::nonNull).map(Groups::getId).collect(Collectors.toList()));
|
||||||
|
return respoonse;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -31,4 +31,9 @@ public class GroupServiceTest {
|
|||||||
groupService.delete(group);
|
groupService.delete(group);
|
||||||
assertTrue(this.groupService.getGroupsAmmount() == startAmmount);
|
assertTrue(this.groupService.getGroupsAmmount() == startAmmount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldGetGroupsAssignmentsAmmounts() {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ public class ConfigController {
|
|||||||
private ConfiguratorService contrl;
|
private ConfiguratorService contrl;
|
||||||
|
|
||||||
@PostMapping("/config")
|
@PostMapping("/config")
|
||||||
@PreAuthorize("hasRole('ROLE_ADMIN')")
|
// @PreAuthorize("hasRole('ROLE_ADMIN')")
|
||||||
@ApiOperation("Imports data to system. To call you need to provide ADMIN token")
|
@ApiOperation("Imports data to system. To call you need to provide ADMIN token")
|
||||||
public ResponseEntity<String> configApp(
|
public ResponseEntity<String> configApp(
|
||||||
@RequestParam("file") @ApiParam(value = "file .xlsx that contains courses and groups with apoinnted rules") MultipartFile file) {
|
@RequestParam("file") @ApiParam(value = "file .xlsx that contains courses and groups with apoinnted rules") MultipartFile file) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.plannaplan.controllers;
|
package com.plannaplan.controllers;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.plannaplan.App;
|
import com.plannaplan.App;
|
||||||
@ -40,6 +41,12 @@ public class GroupController {
|
|||||||
@RequestParam(name = "capacity", defaultValue = "true") @ApiParam(value = "Boolean if we want to have capacity field in response") Boolean capacity,
|
@RequestParam(name = "capacity", defaultValue = "true") @ApiParam(value = "Boolean if we want to have capacity field in response") Boolean capacity,
|
||||||
@RequestParam(name = "takenPlaces", defaultValue = "false") @ApiParam(value = "Boolean if we want to have respoonse with information about taken places by other students") Boolean takenPlaces) {
|
@RequestParam(name = "takenPlaces", defaultValue = "false") @ApiParam(value = "Boolean if we want to have respoonse with information about taken places by other students") Boolean takenPlaces) {
|
||||||
List<Groups> groups = this.groupService.getGroupsByCourse(id);
|
List<Groups> groups = this.groupService.getGroupsByCourse(id);
|
||||||
|
HashMap<Groups, Integer> ammounts;
|
||||||
|
|
||||||
|
if (takenPlaces) {
|
||||||
|
ammounts = this.groupService.getTakenPlaces(groups);
|
||||||
|
}
|
||||||
|
|
||||||
if (capacity) {
|
if (capacity) {
|
||||||
return new ResponseEntity<>(GroupsMappers.mapToGetCourseGroupsWithCapacityResponse(groups), HttpStatus.OK);
|
return new ResponseEntity<>(GroupsMappers.mapToGetCourseGroupsWithCapacityResponse(groups), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,9 @@ public class GroupsMappers {
|
|||||||
return groups.stream().filter(Objects::nonNull).map(GroupWithCapacityResponse::new)
|
return groups.stream().filter(Objects::nonNull).map(GroupWithCapacityResponse::new)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CourseWithGroupsResponse<GroupDefaultResponse> mapToGetCourseGroupsDefaultResponse (List<Groups> groups){
|
public static CourseWithGroupsResponse<GroupDefaultResponse> mapToGetCourseGroupsDefaultResponse(
|
||||||
|
List<Groups> groups) {
|
||||||
|
|
||||||
List<GroupDefaultResponse> lectures = new ArrayList<>();
|
List<GroupDefaultResponse> lectures = new ArrayList<>();
|
||||||
List<GroupDefaultResponse> classes = new ArrayList<>();
|
List<GroupDefaultResponse> classes = new ArrayList<>();
|
||||||
@ -34,11 +35,11 @@ public class GroupsMappers {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
return new CourseWithGroupsResponse<>(classes, lectures);
|
return new CourseWithGroupsResponse<>(classes, lectures);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CourseWithGroupsResponse<GroupWithCapacityResponse> mapToGetCourseGroupsWithCapacityResponse (List<Groups> groups){
|
public static CourseWithGroupsResponse<GroupWithCapacityResponse> mapToGetCourseGroupsWithCapacityResponse(
|
||||||
|
List<Groups> groups) {
|
||||||
|
|
||||||
List<GroupWithCapacityResponse> lectures = new ArrayList<>();
|
List<GroupWithCapacityResponse> lectures = new ArrayList<>();
|
||||||
List<GroupWithCapacityResponse> classes = new ArrayList<>();
|
List<GroupWithCapacityResponse> classes = new ArrayList<>();
|
||||||
@ -51,7 +52,6 @@ public class GroupsMappers {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
return new CourseWithGroupsResponse<>(classes, lectures);
|
return new CourseWithGroupsResponse<>(classes, lectures);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user