Bläddra i källkod

Return only ongoing assigned projects

tags/Baseline_30082024_BACKEND_UAT
Wayne 1 år sedan
förälder
incheckning
26c6225585
3 ändrade filer med 26 tillägg och 24 borttagningar
  1. +3
    -1
      src/main/java/com/ffii/tsms/modules/project/entity/StaffAllocationRepository.kt
  2. +22
    -23
      src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt
  3. +1
    -0
      src/main/java/com/ffii/tsms/modules/project/web/models/ProjectWithTasks.kt

+ 3
- 1
src/main/java/com/ffii/tsms/modules/project/entity/StaffAllocationRepository.kt Visa fil

@@ -3,10 +3,12 @@ package com.ffii.tsms.modules.project.entity;
import com.ffii.core.support.AbstractRepository
import com.ffii.tsms.modules.data.entity.Staff
import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo
import org.springframework.data.jpa.repository.Query
import java.time.LocalDate

interface StaffAllocationRepository : AbstractRepository<StaffAllocation, Long> {
fun findAssignedProjectsByStaff(staff: Staff): List<StaffAllocation>
@Query("SELECT sa.project FROM StaffAllocation sa WHERE sa.staff = ?1 AND sa.project.status = 'On-going'")
fun findOnGoingAssignedProjectsByStaff(staff: Staff): List<Project>

fun findByProject(project: Project): List<StaffAllocation>
}

+ 22
- 23
src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt Visa fil

@@ -75,29 +75,27 @@ open class ProjectsService(
open fun allAssignedProjects(): List<AssignedProject> {
return SecurityUtils.getUser().getOrNull()?.let { user ->
staffRepository.findByUserId(user.id).getOrNull()?.let { staff ->
staffAllocationRepository.findAssignedProjectsByStaff(staff).mapNotNull {
it.project?.let { project ->
val timesheetHours = timesheetRepository.totalHoursConsumedByProject(project)

AssignedProject(id = project.id!!,
code = project.code!!,
name = project.name!!,
tasks = projectTaskRepository.findAllByProject(project).mapNotNull { pt -> pt.task },
milestones = milestoneRepository.findAllByProject(project)
.filter { milestone -> milestone.taskGroup?.id != null }
.associateBy { milestone -> milestone.taskGroup!!.id!! }
.mapValues { (_, milestone) ->
MilestoneInfo(
startDate = milestone.startDate?.format(DateTimeFormatter.ISO_LOCAL_DATE),
endDate = milestone.endDate?.format(DateTimeFormatter.ISO_LOCAL_DATE)
)
},
hoursAllocated = project.totalManhour ?: 0.0,
hoursAllocatedOther = 0.0,
hoursSpent = timesheetHours.normalConsumed,
hoursSpentOther = timesheetHours.otConsumed
)
}
staffAllocationRepository.findOnGoingAssignedProjectsByStaff(staff).map { project ->
val timesheetHours = timesheetRepository.totalHoursConsumedByProject(project)

AssignedProject(id = project.id!!,
code = project.code!!,
name = project.name!!,
tasks = projectTaskRepository.findAllByProject(project).mapNotNull { pt -> pt.task },
milestones = milestoneRepository.findAllByProject(project)
.filter { milestone -> milestone.taskGroup?.id != null }
.associateBy { milestone -> milestone.taskGroup!!.id!! }
.mapValues { (_, milestone) ->
MilestoneInfo(
startDate = milestone.startDate?.format(DateTimeFormatter.ISO_LOCAL_DATE),
endDate = milestone.endDate?.format(DateTimeFormatter.ISO_LOCAL_DATE)
)
},
hoursAllocated = project.totalManhour ?: 0.0,
hoursAllocatedOther = 0.0,
hoursSpent = timesheetHours.normalConsumed,
hoursSpentOther = timesheetHours.otConsumed
)
}
}
} ?: emptyList()
@@ -108,6 +106,7 @@ open class ProjectsService(
ProjectWithTasks(id = project.id!!,
code = project.code!!,
name = project.name!!,
status = project.status,
tasks = projectTaskRepository.findAllByProject(project).mapNotNull { pt -> pt.task },
milestones = milestoneRepository.findAllByProject(project)
.filter { milestone -> milestone.taskGroup?.id != null }


+ 1
- 0
src/main/java/com/ffii/tsms/modules/project/web/models/ProjectWithTasks.kt Visa fil

@@ -5,6 +5,7 @@ import com.ffii.tsms.modules.project.entity.Task
data class ProjectWithTasks(
val id: Long,
val code: String,
val status: String?,
val name: String,
val tasks: List<Task>,
val milestones: Map<Long, MilestoneInfo>


Laddar…
Avbryt
Spara