Pārlūkot izejas kodu

Add more project information

tags/Baseline_30082024_BACKEND_UAT
Wayne pirms 1 gada
vecāks
revīzija
2ecae9947a
23 mainītis faili ar 482 papildinājumiem un 153 dzēšanām
  1. +32
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/BuildingType.kt
  2. +15
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/ContractType.kt
  3. +15
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/FundingType.kt
  4. +15
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/Location.kt
  5. +15
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/ServiceType.kt
  6. +32
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/WorkNature.kt
  7. +3
    -3
      src/main/java/com/ffii/tsms/modules/data/entity/projections/StaffSearchInfo.kt
  8. +95
    -96
      src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt
  9. +42
    -47
      src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt
  10. +36
    -2
      src/main/java/com/ffii/tsms/modules/project/entity/Project.kt
  11. +1
    -1
      src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt
  12. +1
    -1
      src/main/java/com/ffii/tsms/modules/project/entity/projections/ProjectSearchInfo.kt
  13. +1
    -2
      src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt
  14. +1
    -1
      src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt
  15. +27
    -0
      src/main/resources/db/changelog/changes/20240402_01_wayne/01_service_type.sql
  16. +17
    -0
      src/main/resources/db/changelog/changes/20240402_01_wayne/02_funding_type.sql
  17. +19
    -0
      src/main/resources/db/changelog/changes/20240402_01_wayne/03_contract_type.sql
  18. +18
    -0
      src/main/resources/db/changelog/changes/20240402_01_wayne/04_location.sql
  19. +30
    -0
      src/main/resources/db/changelog/changes/20240402_01_wayne/05_building_type.sql
  20. +21
    -0
      src/main/resources/db/changelog/changes/20240402_01_wayne/06_work_nature.sql
  21. +10
    -0
      src/main/resources/db/changelog/changes/20240402_01_wayne/07_update_project_category.sql
  22. +4
    -0
      src/main/resources/db/changelog/changes/20240402_01_wayne/08_update_project_expected_total_fee.sql
  23. +32
    -0
      src/main/resources/db/changelog/changes/20240402_01_wayne/09_update_project_types.sql

+ 32
- 0
src/main/java/com/ffii/tsms/modules/data/entity/BuildingType.kt Parādīt failu

@@ -0,0 +1,32 @@
package com.ffii.tsms.modules.data.entity

import com.ffii.core.entity.IdEntity
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.Table
import jakarta.validation.constraints.NotNull
import org.hibernate.proxy.HibernateProxy

@Entity
@Table(name = "building_type")
open class BuildingType : IdEntity<Long>() {
@NotNull
@Column(name = "name")
open var name: String? = null

final override fun equals(other: Any?): Boolean {
if (this === other) return true
if (other == null) return false
val oEffectiveClass =
if (other is HibernateProxy) other.hibernateLazyInitializer.persistentClass else other.javaClass
val thisEffectiveClass =
if (this is HibernateProxy) this.hibernateLazyInitializer.persistentClass else this.javaClass
if (thisEffectiveClass != oEffectiveClass) return false
other as BuildingType

return id != null && id == other.id
}

final override fun hashCode(): Int =
if (this is HibernateProxy) this.hibernateLazyInitializer.persistentClass.hashCode() else javaClass.hashCode()
}

+ 15
- 0
src/main/java/com/ffii/tsms/modules/data/entity/ContractType.kt Parādīt failu

@@ -0,0 +1,15 @@
package com.ffii.tsms.modules.data.entity

import com.ffii.core.entity.IdEntity
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.Table
import jakarta.validation.constraints.NotNull

@Entity
@Table(name = "contract_type")
open class ContractType : IdEntity<Long>() {
@NotNull
@Column(name = "name")
open var name: String? = null
}

+ 15
- 0
src/main/java/com/ffii/tsms/modules/data/entity/FundingType.kt Parādīt failu

@@ -0,0 +1,15 @@
package com.ffii.tsms.modules.data.entity

import com.ffii.core.entity.IdEntity
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.Table
import jakarta.validation.constraints.NotNull

@Entity
@Table(name = "funding_type")
open class FundingType : IdEntity<Long>() {
@NotNull
@Column(name = "name")
open var name: String? = null
}

+ 15
- 0
src/main/java/com/ffii/tsms/modules/data/entity/Location.kt Parādīt failu

@@ -0,0 +1,15 @@
package com.ffii.tsms.modules.data.entity

import com.ffii.core.entity.IdEntity
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.Table
import jakarta.validation.constraints.NotNull

@Entity
@Table(name = "location")
open class Location : IdEntity<Long>() {
@NotNull
@Column(name = "name")
open var name: String? = null
}

+ 15
- 0
src/main/java/com/ffii/tsms/modules/data/entity/ServiceType.kt Parādīt failu

@@ -0,0 +1,15 @@
package com.ffii.tsms.modules.data.entity

import com.ffii.core.entity.IdEntity
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.Table
import jakarta.validation.constraints.NotNull

@Entity
@Table(name = "service_type")
open class ServiceType : IdEntity<Long>() {
@NotNull
@Column(name = "name")
open var name: String? = null
}

+ 32
- 0
src/main/java/com/ffii/tsms/modules/data/entity/WorkNature.kt Parādīt failu

@@ -0,0 +1,32 @@
package com.ffii.tsms.modules.data.entity

import com.ffii.core.entity.IdEntity
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.Table
import jakarta.validation.constraints.NotNull
import org.hibernate.proxy.HibernateProxy

@Entity
@Table(name = "work_nature")
open class WorkNature : IdEntity<Long>() {
@NotNull
@Column(name = "name")
open var name: String? = null

final override fun equals(other: Any?): Boolean {
if (this === other) return true
if (other == null) return false
val oEffectiveClass =
if (other is HibernateProxy) other.hibernateLazyInitializer.persistentClass else other.javaClass
val thisEffectiveClass =
if (this is HibernateProxy) this.hibernateLazyInitializer.persistentClass else this.javaClass
if (thisEffectiveClass != oEffectiveClass) return false
other as WorkNature

return id != null && id == other.id
}

final override fun hashCode(): Int =
if (this is HibernateProxy) this.hibernateLazyInitializer.persistentClass.hashCode() else javaClass.hashCode()
}

+ 3
- 3
src/main/java/com/ffii/tsms/modules/data/entity/projections/StaffSearchInfo.kt Parādīt failu

@@ -10,13 +10,13 @@ interface StaffSearchInfo {
val staffId: String?
val name: String?

@get:Value("#{target.team.code}")
@get:Value("#{target.team?.code}")
val team: String?

@get:Value("#{target.grade.name}")
@get:Value("#{target.grade?.name}")
val grade: String?

@get:Value("#{target.currentPosition.name}")
@get:Value("#{target.currentPosition?.name}")
val currentPosition: String?

}

+ 95
- 96
src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt Parādīt failu

@@ -1,97 +1,96 @@
package com.ffii.tsms.modules.data.service
import com.ffii.tsms.modules.data.entity.Staff
import com.ffii.tsms.modules.data.entity.StaffRepository
import com.ffii.tsms.modules.user.entity.UserRepository
import com.ffii.tsms.modules.data.entity.PositionRepository
import com.ffii.tsms.modules.data.entity.CompanyRepository
import com.ffii.tsms.modules.data.entity.GradeRepository
import com.ffii.tsms.modules.data.entity.TeamRepository
import com.ffii.tsms.modules.data.entity.SkillRepository
import com.ffii.tsms.modules.data.entity.SalaryEffectiveRepository
import com.ffii.tsms.modules.data.entity.DepartmentRepository
import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo
import com.ffii.tsms.modules.project.web.models.NewStaffRequest
// import com.ffii.tsms.modules.data.web.models.NewStaffRequest
import org.springframework.stereotype.Service
import com.ffii.core.support.JdbcDao;
import com.ffii.core.support.AbstractBaseEntityService;
@Service
public final class StaffsService(
private val staffRepository: StaffRepository,
private val userRepository: UserRepository,
private val positionRepository: PositionRepository,
private val companyRepository: CompanyRepository,
private val gradeRepository: GradeRepository,
private val teamRepository: TeamRepository,
private val skillRepository: SkillRepository,
private val salaryEffectiveRepository: SalaryEffectiveRepository,
private val departmentRepository: DepartmentRepository,
private val jdbcDao: JdbcDao,
) {
fun getTeamLeads(): List<Staff> {
// TODO: Replace with actual logic and make a projection instead of returning all fields
return staffRepository.findAll()
}
fun allStaff(): List<StaffSearchInfo> {
return staffRepository.findStaffSearchInfoBy();
}
// fun fetchStaffList(args: Map<String, Any>): List<Map<String, Any>> {
// val sql = StringBuilder("select"
// + " s.*,"
// + " date_format(s.created, '%Y-%m-%d') as created,"
// + " date_format(s.departDate, '%Y-%m-%d') as departDate,"
// + " date_format(s.joinDate, '%Y-%m-%d') as joinDate"
// + " from staff s"
// + " where s.deleted = false"
// )
// if (args != null) {
// if (args.containsKey("staffId"))
// sql.append(" AND s.staffId = :staffId ");
// }
// return jdbcDao.queryForList(sql.toString(), args)
// }
fun saveStaff(req: NewStaffRequest): Staff {
val user = userRepository.findById(req.userId).orElseThrow()
val currentPosition = positionRepository.findById(req.currentPositionId).orElseThrow()
val joinPosition = positionRepository.findById(req.joinPositionId).orElseThrow()
val company = companyRepository.findById(req.companyId).orElseThrow()
val grade = gradeRepository.findById(req.gradeId).orElseThrow()
val team = teamRepository.findById(req.teamId).orElseThrow()
val skill = skillRepository.findById(req.skillSetId).orElseThrow()
val salaryEffective = salaryEffectiveRepository.findById(req.salaryEffId).orElseThrow()
val department = departmentRepository.findById(req.departmentId).orElseThrow()
// // TODO: Add tasks, milestones, allocated
val staff = Staff().apply {
joinDate = req.joinDate
name = req.name
staffId = req.staffId
phone1 = req.phone1
phone2 = req.phone2
email = req.email
emergContactName = req.emergContactName
emergContactPhone = req.emergContactPhone
employType = req.employType
departDate = req.departDate
departReason = req.departReason
remark = req.remark
this.user = user
this.currentPosition = currentPosition
this.joinPosition = joinPosition
this.company = company
this.grade = grade
this.team = team
this.skill = skill
this.salaryEffective = salaryEffective
this.department = department
}
return staffRepository.save(staff)
}
package com.ffii.tsms.modules.data.service

import com.ffii.tsms.modules.data.entity.Staff
import com.ffii.tsms.modules.data.entity.StaffRepository
import com.ffii.tsms.modules.user.entity.UserRepository
import com.ffii.tsms.modules.data.entity.PositionRepository
import com.ffii.tsms.modules.data.entity.CompanyRepository
import com.ffii.tsms.modules.data.entity.GradeRepository
import com.ffii.tsms.modules.data.entity.TeamRepository
import com.ffii.tsms.modules.data.entity.SkillRepository
import com.ffii.tsms.modules.data.entity.SalaryEffectiveRepository
import com.ffii.tsms.modules.data.entity.DepartmentRepository
import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo
import com.ffii.tsms.modules.project.web.models.NewStaffRequest
// import com.ffii.tsms.modules.data.web.models.NewStaffRequest
import org.springframework.stereotype.Service
import com.ffii.core.support.JdbcDao;
import com.ffii.core.support.AbstractBaseEntityService;

@Service
public final class StaffsService(
private val staffRepository: StaffRepository,
private val userRepository: UserRepository,
private val positionRepository: PositionRepository,
private val companyRepository: CompanyRepository,
private val gradeRepository: GradeRepository,
private val teamRepository: TeamRepository,
private val skillRepository: SkillRepository,
private val salaryEffectiveRepository: SalaryEffectiveRepository,
private val departmentRepository: DepartmentRepository,
private val jdbcDao: JdbcDao,
) {
fun getTeamLeads(): List<StaffSearchInfo> {
// TODO: Replace with actual logic and make a projection instead of returning all fields
return staffRepository.findStaffSearchInfoBy()
}

fun allStaff(): List<StaffSearchInfo> {
return staffRepository.findStaffSearchInfoBy();
}

// fun fetchStaffList(args: Map<String, Any>): List<Map<String, Any>> {
// val sql = StringBuilder("select"
// + " s.*,"
// + " date_format(s.created, '%Y-%m-%d') as created,"
// + " date_format(s.departDate, '%Y-%m-%d') as departDate,"
// + " date_format(s.joinDate, '%Y-%m-%d') as joinDate"
// + " from staff s"
// + " where s.deleted = false"
// )
// if (args != null) {
// if (args.containsKey("staffId"))
// sql.append(" AND s.staffId = :staffId ");
// }
// return jdbcDao.queryForList(sql.toString(), args)
// }

fun saveStaff(req: NewStaffRequest): Staff {
val user = userRepository.findById(req.userId).orElseThrow()
val currentPosition = positionRepository.findById(req.currentPositionId).orElseThrow()
val joinPosition = positionRepository.findById(req.joinPositionId).orElseThrow()
val company = companyRepository.findById(req.companyId).orElseThrow()
val grade = gradeRepository.findById(req.gradeId).orElseThrow()
val team = teamRepository.findById(req.teamId).orElseThrow()
val skill = skillRepository.findById(req.skillSetId).orElseThrow()
val salaryEffective = salaryEffectiveRepository.findById(req.salaryEffId).orElseThrow()
val department = departmentRepository.findById(req.departmentId).orElseThrow()

// // TODO: Add tasks, milestones, allocated
val staff = Staff().apply {
joinDate = req.joinDate
name = req.name
staffId = req.staffId
phone1 = req.phone1
phone2 = req.phone2
email = req.email
emergContactName = req.emergContactName
emergContactPhone = req.emergContactPhone
employType = req.employType
departDate = req.departDate
departReason = req.departReason
remark = req.remark
this.user = user
this.currentPosition = currentPosition
this.joinPosition = joinPosition
this.company = company
this.grade = grade
this.team = team
this.skill = skill
this.salaryEffective = salaryEffective
this.department = department
}

return staffRepository.save(staff)
}
}

+ 42
- 47
src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt Parādīt failu

@@ -1,48 +1,43 @@
package com.ffii.tsms.modules.data.web
import com.ffii.tsms.modules.data.entity.Staff
import com.ffii.tsms.modules.data.service.StaffsService
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import com.ffii.tsms.modules.project.web.models.NewStaffRequest
import jakarta.validation.Valid
import org.springframework.web.bind.annotation.*
import jakarta.servlet.http.HttpServletRequest;
import com.ffii.core.utils.CriteriaArgsBuilder;
import com.ffii.core.response.IdRes;
import com.ffii.core.response.RecordsRes;
import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo
@RestController
@RequestMapping("/staffs")
class StaffsController(private val staffsService: StaffsService) {
@GetMapping("/teamLeads")
fun teamLeads(): List<Staff> {
return staffsService.getTeamLeads()
}
@GetMapping
fun allStaff(): List<StaffSearchInfo> {
return staffsService.allStaff()
}
@GetMapping("/list")
fun list(): List<Staff> {
return staffsService.getTeamLeads()
}
@PostMapping("/new")
fun saveStaff(@Valid @RequestBody newStaff: NewStaffRequest): Staff {
return staffsService.saveStaff(newStaff)
}
// @GetMapping("/newlist")
// fun list(request: HttpServletRequest): RecordsRes<Map<String, Any>> {
// return RecordsRes(staffsService.fetchStaffList(
// CriteriaArgsBuilder.withRequest(request)
// .addString("staffId")
// .build()
// ))
// }
package com.ffii.tsms.modules.data.web

import com.ffii.tsms.modules.data.entity.Staff
import com.ffii.tsms.modules.data.service.StaffsService
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import com.ffii.tsms.modules.project.web.models.NewStaffRequest
import jakarta.validation.Valid
import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo

@RestController
@RequestMapping("/staffs")
class StaffsController(private val staffsService: StaffsService) {
@GetMapping("/teamLeads")
fun teamLeads(): List<StaffSearchInfo> {
return staffsService.getTeamLeads()
}
@GetMapping
fun allStaff(): List<StaffSearchInfo> {
return staffsService.allStaff()
}
// @GetMapping("/list")
// fun list(): List<Staff> {
// return staffsService.getTeamLeads()
// }

@PostMapping("/new")
fun saveStaff(@Valid @RequestBody newStaff: NewStaffRequest): Staff {
return staffsService.saveStaff(newStaff)
}

// @GetMapping("/newlist")
// fun list(request: HttpServletRequest): RecordsRes<Map<String, Any>> {
// return RecordsRes(staffsService.fetchStaffList(
// CriteriaArgsBuilder.withRequest(request)
// .addString("staffId")
// .build()
// ))
// }
}

+ 36
- 2
src/main/java/com/ffii/tsms/modules/project/entity/Project.kt Parādīt failu

@@ -1,8 +1,7 @@
package com.ffii.tsms.modules.project.entity

import com.ffii.core.entity.BaseEntity
import com.ffii.tsms.modules.data.entity.Customer
import com.ffii.tsms.modules.data.entity.Staff
import com.ffii.tsms.modules.data.entity.*
import jakarta.persistence.*
import jakarta.validation.constraints.NotNull
import java.time.LocalDate
@@ -60,4 +59,39 @@ open class Project : BaseEntity<Long>() {

@Column(name = "billStatus")
open var billStatus: Boolean? = null

@Column(name = "expectedTotalFee")
open var expectedTotalFee: Double? = null

@ManyToOne
@JoinColumn(name = "serviceTypeId")
open var serviceType: ServiceType? = null

@ManyToOne
@JoinColumn(name = "fundingTypeId")
open var fundingType: FundingType? = null

@ManyToOne
@JoinColumn(name = "contractTypeId")
open var contractType: ContractType? = null

@ManyToOne
@JoinColumn(name = "locationId")
open var location: Location? = null

@ManyToMany
@JoinTable(
name = "project_buildingTypes",
joinColumns = [JoinColumn(name = "projectId")],
inverseJoinColumns = [JoinColumn(name = "buildingTypesId")]
)
open var buildingTypes: MutableSet<BuildingType> = mutableSetOf()

@ManyToMany
@JoinTable(
name = "project_workNatures",
joinColumns = [JoinColumn(name = "projectId")],
inverseJoinColumns = [JoinColumn(name = "workNaturesId")]
)
open var workNatures: MutableSet<WorkNature> = mutableSetOf()
}

+ 1
- 1
src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt Parādīt failu

@@ -1,7 +1,7 @@
package com.ffii.tsms.modules.project.entity;

import com.ffii.core.support.AbstractRepository
import com.ffii.tsms.modules.data.entity.projections.ProjectSearchInfo
import com.ffii.tsms.modules.project.entity.projections.ProjectSearchInfo

interface ProjectRepository : AbstractRepository<Project, Long> {
fun findProjectSearchInfoBy(): List<ProjectSearchInfo>

src/main/java/com/ffii/tsms/modules/data/entity/projections/ProjectSearchInfo.kt → src/main/java/com/ffii/tsms/modules/project/entity/projections/ProjectSearchInfo.kt Parādīt failu

@@ -1,4 +1,4 @@
package com.ffii.tsms.modules.data.entity.projections
package com.ffii.tsms.modules.project.entity.projections

import org.springframework.beans.factory.annotation.Value


+ 1
- 2
src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt Parādīt failu

@@ -1,14 +1,13 @@
package com.ffii.tsms.modules.project.service

import com.ffii.tsms.modules.data.entity.StaffRepository
import com.ffii.tsms.modules.data.entity.projections.ProjectSearchInfo
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
import com.ffii.tsms.modules.project.entity.ProjectCategory
import com.ffii.tsms.modules.project.entity.ProjectCategoryRepository
import com.ffii.tsms.modules.project.entity.ProjectRepository
import com.ffii.tsms.modules.project.web.models.NewProjectRequest
import com.ffii.tsms.modules.project.web.models.SaveCustomerRequest
import org.springframework.stereotype.Service

@Service


+ 1
- 1
src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt Parādīt failu

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

import com.ffii.tsms.modules.data.entity.projections.ProjectSearchInfo
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
import com.ffii.tsms.modules.project.service.ProjectsService


+ 27
- 0
src/main/resources/db/changelog/changes/20240402_01_wayne/01_service_type.sql Parādīt failu

@@ -0,0 +1,27 @@
-- liquibase formatted sql

-- changeset wayne:service_type
CREATE TABLE service_type (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
CONSTRAINT pk_service_type PRIMARY KEY (id)
);

INSERT
INTO
service_type
(name)
VALUES
('Audit'),
('Cost Management'),
('Direct Contract'),
('Due Diligence'),
('Estimate'),
('Expert Report'),
('Feasibility'),
('Final Account'),
('Full QS Services'),
('Joint Venture'),
('Measurement'),
('Post Contract'),
('Sub-Consultants');

+ 17
- 0
src/main/resources/db/changelog/changes/20240402_01_wayne/02_funding_type.sql Parādīt failu

@@ -0,0 +1,17 @@
-- liquibase formatted sql
-- changeset wayne:funding_type

CREATE TABLE funding_type (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
CONSTRAINT pk_funding_type PRIMARY KEY (id)
);

INSERT
INTO
funding_type
(name)
VALUES
('Government'),
('Private'),
('Subvented');

+ 19
- 0
src/main/resources/db/changelog/changes/20240402_01_wayne/03_contract_type.sql Parādīt failu

@@ -0,0 +1,19 @@
-- liquibase formatted sql
-- changeset wayne:contract_type

CREATE TABLE contract_type (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
CONSTRAINT pk_contract_type PRIMARY KEY (id)
);

INSERT
INTO
contract_type
(name)
VALUES
('Bills of Quantities'),
('Design and Build'),
('Schedule of Rate'),
('Specification Drawings'),
('Term Contract');

+ 18
- 0
src/main/resources/db/changelog/changes/20240402_01_wayne/04_location.sql Parādīt failu

@@ -0,0 +1,18 @@
-- liquibase formatted sql
-- changeset wayne:location

CREATE TABLE location (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
CONSTRAINT pk_location PRIMARY KEY (id)
);

INSERT
INTO
location
(name)
VALUES
('Hong Kong'),
('China'),
('Macau'),
('Others');

+ 30
- 0
src/main/resources/db/changelog/changes/20240402_01_wayne/05_building_type.sql Parādīt failu

@@ -0,0 +1,30 @@
-- liquibase formatted sql
-- changeset wayne:building_type

CREATE TABLE building_type (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
CONSTRAINT pk_building_type PRIMARY KEY (id)
);

INSERT
INTO
building_type
(name)
VALUES
('Residential'),
('Office'),
('Commercial'),
('Hotel & Resort'),
('Entertainment & Leisure'),
('Hospital'),
('School'),
('Post Secondary College'),
('Industrial'),
('Data Center'),
('Open Space'),
('Civil Engineering'),
('Electricity'),
('Public Transportation'),
('Retail'),
('Others');

+ 21
- 0
src/main/resources/db/changelog/changes/20240402_01_wayne/06_work_nature.sql Parādīt failu

@@ -0,0 +1,21 @@
-- liquibase formatted sql
-- changeset wayne:work_nature

CREATE TABLE work_nature (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
CONSTRAINT pk_work_nature PRIMARY KEY (id)
);

INSERT
INTO
work_nature
(name)
VALUES
('New Capital Works'),
('Maintenance Term Contract'),
('Addition and Alteration'),
('Civil Works'),
('Fitting Out Works'),
('Revitalization'),
('Others');

+ 10
- 0
src/main/resources/db/changelog/changes/20240402_01_wayne/07_update_project_category.sql Parādīt failu

@@ -0,0 +1,10 @@
-- liquibase formatted sql
-- changeset wayne:update_project_category

UPDATE
project_category
SET
name = 'Awarded Project'
WHERE
id = 2
;

+ 4
- 0
src/main/resources/db/changelog/changes/20240402_01_wayne/08_update_project_expected_total_fee.sql Parādīt failu

@@ -0,0 +1,4 @@
-- liquibase formatted sql
-- changeset wayne:update_project_expected_total_fee

ALTER TABLE project ADD expectedTotalFee DOUBLE NULL;

+ 32
- 0
src/main/resources/db/changelog/changes/20240402_01_wayne/09_update_project_types.sql Parādīt failu

@@ -0,0 +1,32 @@
-- liquibase formatted sql
-- changeset wayne:update_project_types

ALTER TABLE project ADD serviceTypeId INT NULL, ADD fundingTypeId INT NULL, ADD contractTypeId INT NULL, ADD locationId INT NULL;

ALTER TABLE project ADD CONSTRAINT FK_PROJECT_ON_CONTRACTTYPEID FOREIGN KEY (contractTypeId) REFERENCES contract_type (id);

ALTER TABLE project ADD CONSTRAINT FK_PROJECT_ON_FUNDINGTYPEID FOREIGN KEY (fundingTypeId) REFERENCES funding_type (id);

ALTER TABLE project ADD CONSTRAINT FK_PROJECT_ON_LOCATIONID FOREIGN KEY (locationId) REFERENCES location (id);

ALTER TABLE project ADD CONSTRAINT FK_PROJECT_ON_SERVICETYPEID FOREIGN KEY (serviceTypeId) REFERENCES service_type (id);

CREATE TABLE project_buildingTypes (
buildingTypesId INT NOT NULL,
projectId INT NOT NULL,
CONSTRAINT pk_project_buildingtypes PRIMARY KEY (buildingTypesId, projectId)
);

CREATE TABLE project_workNatures (
projectId INT NOT NULL,
workNaturesId INT NOT NULL,
CONSTRAINT pk_project_worknatures PRIMARY KEY (projectId, workNaturesId)
);

ALTER TABLE project_workNatures ADD CONSTRAINT fk_prowor_on_project FOREIGN KEY (projectId) REFERENCES project (id);

ALTER TABLE project_workNatures ADD CONSTRAINT fk_prowor_on_work_nature FOREIGN KEY (workNaturesId) REFERENCES work_nature (id);

ALTER TABLE project_buildingTypes ADD CONSTRAINT fk_probui_on_building_type FOREIGN KEY (buildingTypesId) REFERENCES building_type (id);

ALTER TABLE project_buildingTypes ADD CONSTRAINT fk_probui_on_project FOREIGN KEY (projectId) REFERENCES project (id);

Notiek ielāde…
Atcelt
Saglabāt