Browse Source

[Project] Add sub-teamLead

master
cyril.tsui 2 weeks ago
parent
commit
aca976e9fb
6 changed files with 25 additions and 1 deletions
  1. +4
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/Project.kt
  2. +6
    -1
      src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt
  3. +1
    -0
      src/main/java/com/ffii/tsms/modules/project/web/models/EditProjectDetails.kt
  4. +1
    -0
      src/main/java/com/ffii/tsms/modules/project/web/models/MainProjectDetails.kt
  5. +1
    -0
      src/main/java/com/ffii/tsms/modules/project/web/models/NewProjectRequest.kt
  6. +12
    -0
      src/main/resources/db/changelog/changes/20251129_01_cyril/01_update_project.sql

+ 4
- 0
src/main/java/com/ffii/tsms/modules/project/entity/Project.kt View File

@@ -43,6 +43,10 @@ open class Project : BaseEntity<Long>() {
@JoinColumn(name = "teamLead")
open var teamLead: Staff? = null

@ManyToOne
@JoinColumn(name = "subTeamLead")
open var subTeamLead: Staff? = null

@ManyToOne
@JoinColumn(name = "customerId")
open var customer: Customer? = null


+ 6
- 1
src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt View File

@@ -186,6 +186,7 @@ open class ProjectsService(
if (request.taskTemplateId != null && request.taskTemplateId > 0) taskTemplateRepository.findById(request.taskTemplateId)
.orElseThrow() else null
val teamLead = staffRepository.findById(request.projectLeadId).orElseThrow()
val subTeamLead = request.projectSubLeadId?.let { staffRepository.findById(it).orElseThrow() }
val customer = customerService.findCustomer(request.clientId)
val customerType = request.clientTypeId?.let { customerService.findCustomerType(it) } ?: customer.customerType
val subsidiaryContact =
@@ -261,6 +262,7 @@ open class ProjectsService(
this.taskTemplate = taskTemplate

this.teamLead = teamLead
this.subTeamLead = subTeamLead
this.customer = customer
custLeadName =
if (request.isSubsidiaryContact == null || !request.isSubsidiaryContact) clientContact?.name else subsidiaryContact?.name
@@ -425,6 +427,7 @@ open class ProjectsService(
projectCategoryId = it.projectCategory?.id,
projectDescription = it.description,
projectLeadId = it.teamLead?.id,
projectSubLeadId = it.subTeamLead?.id,
projectActualStart = it.actualStart,
projectActualEnd = it.actualEnd,
projectPlanStart = it.planStart,
@@ -497,8 +500,9 @@ open class ProjectsService(
open fun allBuildingTypes(): List<BuildingType> {
val sortedBuildingType = buildingTypeRepository.findAll().sortedBy { it.name }.sortedWith { a, b ->
when {
a.contains("Hidden", ignoreCase = true) && !b.contains("Hidden", ignoreCase = true) -> 2
a.startsWith("Others") && !b.startsWith("Others") -> 1 // Move "Others" to the end
!a.startsWith("Others") && b.startsWith("Others") -> -1 // Keep non-"Others" items above
(!a.startsWith("Others") && b.startsWith("Others")) || (!a.contains("Hidden", ignoreCase = true) && b.contains("Hidden", ignoreCase = true)) -> -1 // Keep non-"Others" items above
else -> 0 // Maintain relative order for other items
}
}
@@ -527,6 +531,7 @@ open class ProjectsService(
projectCategoryId = project.projectCategory?.id,
projectDescription = project.description,
projectLeadId = project.teamLead?.id,
projectSubLeadId = project.subTeamLead?.id,
projectStatus = project.status,
isClpProject = project.isClpProject,
serviceTypeId = project.serviceType?.id,


+ 1
- 0
src/main/java/com/ffii/tsms/modules/project/web/models/EditProjectDetails.kt View File

@@ -11,6 +11,7 @@ data class EditProjectDetails(
val projectCategoryId: Long?,
val projectDescription: String?,
val projectLeadId: Long?,
val projectSubLeadId: Long?,
val projectPlanStart: LocalDate?,
val projectPlanEnd: LocalDate?,
val projectActualStart: LocalDate?,


+ 1
- 0
src/main/java/com/ffii/tsms/modules/project/web/models/MainProjectDetails.kt View File

@@ -11,6 +11,7 @@ data class MainProjectDetails (
val projectDescription: String?,

val projectLeadId: Long?,
val projectSubLeadId: Long?,
val projectStatus: String?,
val isClpProject: Boolean?,



+ 1
- 0
src/main/java/com/ffii/tsms/modules/project/web/models/NewProjectRequest.kt View File

@@ -13,6 +13,7 @@ data class NewProjectRequest(
val projectCategoryId: Long,
val projectDescription: String,
val projectLeadId: Long,
val projectSubLeadId: Long? = null,
val projectId: Long?,
val projectActualStart: LocalDate?,
val projectActualEnd: LocalDate?,


+ 12
- 0
src/main/resources/db/changelog/changes/20251129_01_cyril/01_update_project.sql View File

@@ -0,0 +1,12 @@
-- liquibase formatted sql
-- changeset cyril:update_project_by_adding_subTeamLead

ALTER TABLE `project`
ADD COLUMN `subTeamLead` INT NULL AFTER `teamLead`,
ADD INDEX `FK_PROJECT_ON_SUBTEAMLEAD` (`subTeamLead` ASC) VISIBLE;
ALTER TABLE `project`
ADD CONSTRAINT `FK_PROJECT_ON_SUBTEAMLEAD`
FOREIGN KEY (`subTeamLead`)
REFERENCES `staff` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT;

Loading…
Cancel
Save