From 7557ebe34d191f9ef1784c9bace8c6872a875da5 Mon Sep 17 00:00:00 2001 From: Wayne Date: Sun, 14 Apr 2024 16:56:31 +0900 Subject: [PATCH] Add project types --- .../data/entity/BuildingTypeRepository.kt | 6 ++ .../data/entity/ContractTypeRepository.kt | 6 ++ .../data/entity/FundingTypeRepository.kt | 6 ++ .../modules/data/entity/LocationRepository.kt | 6 ++ .../data/entity/ServiceTypeRepository.kt | 6 ++ .../data/entity/WorkNatureRepository.kt | 6 ++ .../data/service/CustomerContactService.kt | 4 + .../tsms/modules/data/web/StaffsController.kt | 4 +- .../project/service/ProjectsService.kt | 75 ++++++++++++++----- .../modules/project/web/ProjectsController.kt | 31 ++++++++ .../project/web/models/NewProjectRequest.kt | 16 ++-- 11 files changed, 138 insertions(+), 28 deletions(-) create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/BuildingTypeRepository.kt create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/ContractTypeRepository.kt create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/FundingTypeRepository.kt create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/LocationRepository.kt create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/ServiceTypeRepository.kt create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/WorkNatureRepository.kt diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/BuildingTypeRepository.kt b/src/main/java/com/ffii/tsms/modules/data/entity/BuildingTypeRepository.kt new file mode 100644 index 0000000..1a4443b --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/BuildingTypeRepository.kt @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository + +interface BuildingTypeRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/ContractTypeRepository.kt b/src/main/java/com/ffii/tsms/modules/data/entity/ContractTypeRepository.kt new file mode 100644 index 0000000..bdb4a32 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/ContractTypeRepository.kt @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository + +interface ContractTypeRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/FundingTypeRepository.kt b/src/main/java/com/ffii/tsms/modules/data/entity/FundingTypeRepository.kt new file mode 100644 index 0000000..aa08bda --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/FundingTypeRepository.kt @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository + +interface FundingTypeRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/LocationRepository.kt b/src/main/java/com/ffii/tsms/modules/data/entity/LocationRepository.kt new file mode 100644 index 0000000..278bd35 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/LocationRepository.kt @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository + +interface LocationRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/ServiceTypeRepository.kt b/src/main/java/com/ffii/tsms/modules/data/entity/ServiceTypeRepository.kt new file mode 100644 index 0000000..f99977c --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/ServiceTypeRepository.kt @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository + +interface ServiceTypeRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/WorkNatureRepository.kt b/src/main/java/com/ffii/tsms/modules/data/entity/WorkNatureRepository.kt new file mode 100644 index 0000000..24f88c7 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/WorkNatureRepository.kt @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository + +interface WorkNatureRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/service/CustomerContactService.kt b/src/main/java/com/ffii/tsms/modules/data/service/CustomerContactService.kt index ec14db0..7fec504 100644 --- a/src/main/java/com/ffii/tsms/modules/data/service/CustomerContactService.kt +++ b/src/main/java/com/ffii/tsms/modules/data/service/CustomerContactService.kt @@ -15,6 +15,10 @@ class CustomerContactService( return customerContactRepository.findAllByCustomerId(customerId) } + fun findByContactId(contactId: Long): CustomerContact { + return customerContactRepository.findById(contactId).orElseThrow() + } + fun saveContactsByCustomer(saveCustomerId: Long, saveCustomerContact: List) { val customerContactList = mutableListOf() diff --git a/src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt b/src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt index d609464..51f0455 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt @@ -15,8 +15,8 @@ import org.springframework.web.bind.annotation.* @RequestMapping("/staffs") class StaffsController(private val staffsService: StaffsService) { @GetMapping("/teamLeads") - fun teamLeads(): List { - return staffsService.getTeamLeads() + fun teamLeads(): List { + return staffsService.allStaff() } @GetMapping fun allStaff(): List { diff --git a/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt b/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt index 3aaedaa..787d78b 100644 --- a/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt +++ b/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt @@ -1,6 +1,7 @@ package com.ffii.tsms.modules.project.service -import com.ffii.tsms.modules.data.entity.StaffRepository +import com.ffii.tsms.modules.data.entity.* +import com.ffii.tsms.modules.data.service.CustomerContactService import com.ffii.tsms.modules.project.entity.projections.ProjectSearchInfo import com.ffii.tsms.modules.data.service.CustomerService import com.ffii.tsms.modules.project.entity.Project @@ -14,8 +15,15 @@ import org.springframework.stereotype.Service class ProjectsService( private val projectRepository: ProjectRepository, private val customerService: CustomerService, + private val customerContactService: CustomerContactService, private val projectCategoryRepository: ProjectCategoryRepository, - private val staffRepository: StaffRepository + private val staffRepository: StaffRepository, + private val fundingTypeRepository: FundingTypeRepository, + private val serviceTypeRepository: ServiceTypeRepository, + private val contractTypeRepository: ContractTypeRepository, + private val locationRepository: LocationRepository, + private val buildingTypeRepository: BuildingTypeRepository, + private val workNatureRepository: WorkNatureRepository ) { fun allProjects(): List { return projectRepository.findProjectSearchInfoBy() @@ -28,35 +36,62 @@ class ProjectsService( fun saveProject(request: NewProjectRequest): Project { val projectCategory = projectCategoryRepository.findById(request.projectCategoryId).orElseThrow() + val fundingType = fundingTypeRepository.findById(request.fundingTypeId).orElseThrow() + val serviceType = serviceTypeRepository.findById(request.serviceTypeId).orElseThrow() + val contractType = contractTypeRepository.findById(request.contractTypeId).orElseThrow() + val location = locationRepository.findById(request.locationId).orElseThrow() + val buildingTypes = buildingTypeRepository.findAllById(request.buildingTypeIds).toMutableSet() + val workNatures = workNatureRepository.findAllById(request.workNatureIds).toMutableSet() + val teamLead = staffRepository.findById(request.projectLeadId).orElseThrow() + val customer = customerService.findCustomer(request.clientId) + val clientContact = customerContactService.findByContactId(request.clientContactId) - // val _customer = - // SaveCustomerRequest( - // name = request.clientName, - // code = request.clientCode, - // // email = request.clientEmail, - // // phone = request.clientPhone, - // // contactName = request.clientContactName, - // brNo = null, - // address = null, - // district = null, - // deleteSubsidiaryIds = emptyList(), - // addSubsidiaryIds = emptyList(), - // id = null - // ) - // val customer = customerService.saveCustomer(_customer) - - // TODO: Add tasks, milestones, allocated + // TODO: Add tasks, milestones, allocated staff val project = Project().apply { name = request.projectName description = request.projectDescription code = request.projectCode this.projectCategory = projectCategory + this.fundingType = fundingType + this.serviceType = serviceType + this.contractType = contractType + this.location = location + this.buildingTypes = buildingTypes + this.workNatures = workNatures + this.teamLead = teamLead - // this.customer = customer + this.customer = customer + custLeadName = clientContact.name + custLeadEmail = clientContact.email + custLeadPhone = clientContact.phone } return projectRepository.save(project) } + + fun allFundingTypes(): List { + return fundingTypeRepository.findAll() + } + + fun allLocationTypes(): List { + return locationRepository.findAll() + } + + fun allServiceTypes(): List { + return serviceTypeRepository.findAll() + } + + fun allContractTypes(): List { + return contractTypeRepository.findAll() + } + + fun allBuildingTypes(): List { + return buildingTypeRepository.findAll() + } + + fun allWorkNatures(): List { + return workNatureRepository.findAll() + } } diff --git a/src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt b/src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt index fc4a775..844af9e 100644 --- a/src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt +++ b/src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt @@ -1,5 +1,6 @@ package com.ffii.tsms.modules.project.web +import com.ffii.tsms.modules.data.entity.* import com.ffii.tsms.modules.project.entity.projections.ProjectSearchInfo import com.ffii.tsms.modules.project.entity.Project import com.ffii.tsms.modules.project.entity.ProjectCategory @@ -25,4 +26,34 @@ class ProjectsController(private val projectsService: ProjectsService) { fun saveProject(@Valid @RequestBody newProject: NewProjectRequest): Project { return projectsService.saveProject(newProject) } + + @GetMapping("/fundingTypes") + fun projectFundingTypes(): List { + return projectsService.allFundingTypes() + } + + @GetMapping("/serviceTypes") + fun projectServiceTypes(): List { + return projectsService.allServiceTypes() + } + + @GetMapping("/contractTypes") + fun projectContractTypes(): List { + return projectsService.allContractTypes() + } + + @GetMapping("/locationTypes") + fun projectLocationTypes(): List { + return projectsService.allLocationTypes() + } + + @GetMapping("/buildingTypes") + fun projectBuildingTypes(): List { + return projectsService.allBuildingTypes() + } + + @GetMapping("/workNatures") + fun projectWorkNatures(): List { + return projectsService.allWorkNatures() + } } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/project/web/models/NewProjectRequest.kt b/src/main/java/com/ffii/tsms/modules/project/web/models/NewProjectRequest.kt index 5d46281..d8c0076 100644 --- a/src/main/java/com/ffii/tsms/modules/project/web/models/NewProjectRequest.kt +++ b/src/main/java/com/ffii/tsms/modules/project/web/models/NewProjectRequest.kt @@ -12,12 +12,16 @@ data class NewProjectRequest( val projectDescription: String, val projectLeadId: Long, - val clientCode: String, - val clientName: String, - val clientContactName: String, - val clientPhone: String, - val clientEmail: String, - val clientSubsidiary: String, + val serviceTypeId: Long, + val fundingTypeId: Long, + val contractTypeId: Long, + val locationId: Long, + val buildingTypeIds: List, + val workNatureIds: List, + + val clientId: Long, + val clientContactId: Long, + val clientSubsidiaryId: Long?, val tasks: Map,