浏览代码

update project

tags/Baseline_30082024_BACKEND_UAT
cyril.tsui 1年前
父节点
当前提交
a56da3c440
共有 4 个文件被更改,包括 37 次插入2 次删除
  1. +20
    -2
      src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt
  2. +7
    -0
      src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt
  3. +6
    -0
      src/main/java/com/ffii/tsms/modules/project/web/models/EditProjectDetails.kt
  4. +4
    -0
      src/main/java/com/ffii/tsms/modules/project/web/models/NewProjectRequest.kt

+ 20
- 2
src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt 查看文件

@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.time.LocalDate
import java.time.format.DateTimeFormatter
import kotlin.jvm.optionals.getOrElse
import kotlin.jvm.optionals.getOrNull

@Service
@@ -54,6 +55,10 @@ open class ProjectsService(
return projectRepository.findInvoiceInfoSearchInfoById(id)
}

open fun markDeleted(id: Long) {
projectRepository.save(projectRepository.findById(id).orElseThrow().apply { deleted = true })
}

open fun allAssignedProjects(): List<AssignedProject> {
return SecurityUtils.getUser().getOrNull()?.let { user ->
staffRepository.findByUserId(user.id).getOrNull()?.let { staff ->
@@ -105,13 +110,15 @@ open class ProjectsService(
val taskGroupMap = tasksService.allTaskGroups().associateBy { it.id }
val gradeMap = gradeService.allGrades().associateBy { it.id }

val project =
Project().apply {
val project = if (request.projectId != null && request.projectId > 0) projectRepository.findById(request.projectId).orElseThrow() else Project()
project.apply {
name = request.projectName
description = request.projectDescription
code = request.projectCode
expectedTotalFee = request.expectedProjectFee
totalManhour = request.totalManhour
actualStart = request.projectActualStart
actualEnd = request.projectActualEnd

this.projectCategory = projectCategory
this.fundingType = fundingType
@@ -170,6 +177,13 @@ open class ProjectsService(
}
}

if (milestones.isNotEmpty()) {
project.apply {
planStart = milestones.mapNotNull { it.startDate }.minOrNull()
planEnd = milestones.mapNotNull { it.endDate }.maxOrNull()
}
}

val savedProject = projectRepository.save(project)
milestoneRepository.saveAll(milestones)
projectTaskRepository.saveAll(tasksToSave)
@@ -206,11 +220,15 @@ open class ProjectsService(
.associateBy { milestone -> milestone.taskGroup!!.id!! }

EditProjectDetails(
projectId = it.id,
projectDeleted = it.deleted,
projectCode = it.code,
projectName = it.name,
projectCategoryId = it.projectCategory?.id,
projectDescription = it.description,
projectLeadId = it.teamLead?.id,
projectActualStart = it.actualStart,
projectActualEnd = it.actualEnd,
serviceTypeId = it.serviceType?.id,
fundingTypeId = it.fundingType?.id,
contractTypeId = it.contractType?.id,


+ 7
- 0
src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt 查看文件

@@ -10,6 +10,7 @@ import com.ffii.tsms.modules.project.web.models.EditProjectDetails
import com.ffii.tsms.modules.project.web.models.NewProjectRequest
import com.ffii.tsms.modules.project.web.models.NewProjectResponse
import jakarta.validation.Valid
import org.springframework.http.HttpStatus
import org.springframework.web.bind.annotation.*

@RestController
@@ -20,6 +21,12 @@ class ProjectsController(private val projectsService: ProjectsService) {
return projectsService.allProjects()
}

@DeleteMapping("/{id}")
@ResponseStatus(HttpStatus.NO_CONTENT)
fun deleteProject(@PathVariable id: Long) {
projectsService.markDeleted(id)
}

@GetMapping("/assignedProjects")
fun assignedProjects(): List<AssignedProject> {
return projectsService.allAssignedProjects()


+ 6
- 0
src/main/java/com/ffii/tsms/modules/project/web/models/EditProjectDetails.kt 查看文件

@@ -1,12 +1,18 @@
package com.ffii.tsms.modules.project.web.models

import java.time.LocalDate

data class EditProjectDetails(
// Project details
val projectId: Long?,
val projectDeleted: Boolean?,
val projectCode: String?,
val projectName: String?,
val projectCategoryId: Long?,
val projectDescription: String?,
val projectLeadId: Long?,
val projectActualStart: LocalDate?,
val projectActualEnd: LocalDate?,

val serviceTypeId: Long?,
val fundingTypeId: Long?,


+ 4
- 0
src/main/java/com/ffii/tsms/modules/project/web/models/NewProjectRequest.kt 查看文件

@@ -1,6 +1,7 @@
package com.ffii.tsms.modules.project.web.models

import jakarta.validation.constraints.NotBlank
import java.time.LocalDate

data class NewProjectRequest(
// Project details
@@ -11,6 +12,9 @@ data class NewProjectRequest(
val projectCategoryId: Long,
val projectDescription: String,
val projectLeadId: Long,
val projectId: Long?,
val projectActualStart: LocalDate?,
val projectActualEnd: LocalDate?,

val serviceTypeId: Long,
val fundingTypeId: Long,


正在加载...
取消
保存