瀏覽代碼

Add project entities

tags/Baseline_30082024_BACKEND_UAT
Wayne 1 年之前
父節點
當前提交
e5a0023f3e
共有 19 個檔案被更改,包括 358 行新增1 行删除
  1. +5
    -1
      build.gradle
  2. +8
    -0
      settings.gradle
  3. +19
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/PaymentMilestone.kt
  4. +6
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/PaymentMilestoneRepository.kt
  5. +55
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/Project.kt
  6. +6
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt
  7. +29
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/ProjectTask.kt
  8. +6
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/ProjectTaskRepository.kt
  9. +43
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/StaffAllocation.kt
  10. +6
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/StaffAllocationRepository.kt
  11. +30
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/Task.kt
  12. +6
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/TaskRepository.kt
  13. +23
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/TaskTemplate.kt
  14. +6
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/TaskTemplateRepository.kt
  15. +30
    -0
      src/main/resources/db/changelog/changes/20240128_01_wayne/01_project.sql
  16. +32
    -0
      src/main/resources/db/changelog/changes/20240128_01_wayne/02_task.sql
  17. +9
    -0
      src/main/resources/db/changelog/changes/20240128_01_wayne/03_milestone.sql
  18. +18
    -0
      src/main/resources/db/changelog/changes/20240128_01_wayne/04_project_task.sql
  19. +21
    -0
      src/main/resources/db/changelog/changes/20240128_01_wayne/05_staff_allocation.sql

+ 5
- 1
build.gradle 查看文件

@@ -2,13 +2,13 @@ plugins {
id 'java'
id 'org.springframework.boot' version '3.1.1'
id 'io.spring.dependency-management' version '1.1.0'
id 'org.jetbrains.kotlin.jvm'
}

group = 'com.ffii'
version = '0.0.1-SNAPSHOT'

java {
sourceCompatibility = '17'
}

repositories {
@@ -47,6 +47,7 @@ dependencies {

testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}

configurations {
@@ -54,3 +55,6 @@ configurations {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
}
kotlin {
jvmToolchain(17)
}

+ 8
- 0
settings.gradle 查看文件

@@ -1 +1,9 @@
pluginManagement {
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.9.21'
}
}
plugins {
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.5.0'
}
rootProject.name = 'TSMS-backend'

+ 19
- 0
src/main/java/com/ffii/tsms/modules/project/entity/PaymentMilestone.kt 查看文件

@@ -0,0 +1,19 @@
package com.ffii.tsms.modules.project.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 = "milestone")
open class PaymentMilestone : IdEntity<Long>() {
@NotNull
@Column(name = "name")
open var name: String? = null

@NotNull
@Column(name = "description")
open var description: String? = null
}

+ 6
- 0
src/main/java/com/ffii/tsms/modules/project/entity/PaymentMilestoneRepository.kt 查看文件

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

import com.ffii.core.support.AbstractRepository

interface PaymentMilestoneRepository : AbstractRepository<PaymentMilestone, Long> {
}

+ 55
- 0
src/main/java/com/ffii/tsms/modules/project/entity/Project.kt 查看文件

@@ -0,0 +1,55 @@
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 jakarta.persistence.*
import jakarta.validation.constraints.NotNull
import java.time.LocalDate

@Entity
@Table(name = "project")
open class Project : BaseEntity<Long>() {
@NotNull
@Column(name = "name", length = 100)
open var name: String? = null

@NotNull
@Column(name = "description")
open var description: String? = null

@Column(name = "planStart")
open var planStart: LocalDate? = null

@Column(name = "actualStart")
open var actualStart: LocalDate? = null

@Column(name = "planEnd")
open var planEnd: LocalDate? = null

@Column(name = "actualEnd")
open var actualEnd: LocalDate? = null

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

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

@Column(name = "custLeadName", length = 30)
open var custLeadName: String? = null

@Column(name = "custLeadPhone", length = 20)
open var custLeadPhone: String? = null

@Column(name = "custLeadEmail")
open var custLeadEmail: String? = null

@Column(name = "remark", length = 1500)
open var remark: String? = null

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

+ 6
- 0
src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt 查看文件

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

import com.ffii.core.support.AbstractRepository

interface ProjectRepository : AbstractRepository<Project, Long> {
}

+ 29
- 0
src/main/java/com/ffii/tsms/modules/project/entity/ProjectTask.kt 查看文件

@@ -0,0 +1,29 @@
package com.ffii.tsms.modules.project.entity

import com.ffii.core.entity.IdEntity
import jakarta.persistence.*
import jakarta.validation.constraints.NotNull

@Entity
@Table(name = "project_task")
open class ProjectTask : IdEntity<Long>() {
@NotNull
@ManyToOne
open var project: Project? = null

@ManyToOne
@JoinColumn(name = "milestoneId")
open var paymentMilestone: PaymentMilestone? = null

@NotNull
@ManyToOne
open var task: Task? = null

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

@NotNull
@Column(name = "reminderPercentage")
open var reminderPercentage: Double? = null
}

+ 6
- 0
src/main/java/com/ffii/tsms/modules/project/entity/ProjectTaskRepository.kt 查看文件

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

import com.ffii.core.support.AbstractRepository

interface ProjectTaskRepository : AbstractRepository<ProjectTask, Long> {
}

+ 43
- 0
src/main/java/com/ffii/tsms/modules/project/entity/StaffAllocation.kt 查看文件

@@ -0,0 +1,43 @@
package com.ffii.tsms.modules.project.entity

import com.ffii.core.entity.IdEntity
import com.ffii.tsms.modules.data.entity.Staff
import jakarta.persistence.*
import jakarta.validation.constraints.NotNull
import java.time.LocalDate

@Entity
@Table(name = "staff_allocation")
open class StaffAllocation : IdEntity<Long>() {
@NotNull
@ManyToOne
open var project: Project? = null

@NotNull
@ManyToOne
open var staff: Staff? = null

@Column(name = "allocatedDateFrom")
open var allocatedDateFrom: LocalDate? = null

@Column(name = "allocatedDateTo")
open var allocatedDateTo: LocalDate? = null

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

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

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

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

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

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

+ 6
- 0
src/main/java/com/ffii/tsms/modules/project/entity/StaffAllocationRepository.kt 查看文件

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

import com.ffii.core.support.AbstractRepository

interface StaffAllocationRepository : AbstractRepository<StaffAllocation, Long> {
}

+ 30
- 0
src/main/java/com/ffii/tsms/modules/project/entity/Task.kt 查看文件

@@ -0,0 +1,30 @@
package com.ffii.tsms.modules.project.entity

import com.ffii.core.entity.BaseEntity
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.Table
import org.hibernate.proxy.HibernateProxy

@Entity
@Table(name = "task")
open class Task : BaseEntity<Long>() {
@Column(name = "name")
open var name: String? = null

@Column(name = "description")
open var description: 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 Task

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

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

+ 6
- 0
src/main/java/com/ffii/tsms/modules/project/entity/TaskRepository.kt 查看文件

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

import com.ffii.core.support.AbstractRepository

interface TaskRepository : AbstractRepository<Task, Long> {
}

+ 23
- 0
src/main/java/com/ffii/tsms/modules/project/entity/TaskTemplate.kt 查看文件

@@ -0,0 +1,23 @@
package com.ffii.tsms.modules.project.entity

import com.ffii.core.entity.IdEntity
import jakarta.persistence.*
import jakarta.validation.constraints.NotNull

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

@NotNull
@Column(name = "name")
open var name: String? = null

@ManyToMany
@JoinTable(name = "task_template_tasks",
joinColumns = [JoinColumn(name = "taskTemplateId")],
inverseJoinColumns = [JoinColumn(name = "tasksId")])
open var tasks: MutableSet<Task> = mutableSetOf()
}

+ 6
- 0
src/main/java/com/ffii/tsms/modules/project/entity/TaskTemplateRepository.kt 查看文件

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

import com.ffii.core.support.AbstractRepository

interface TaskTemplateRepository : AbstractRepository<TaskTemplate, Long> {
}

+ 30
- 0
src/main/resources/db/changelog/changes/20240128_01_wayne/01_project.sql 查看文件

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

-- changeset wayne:project
CREATE TABLE project (
id INT NOT NULL AUTO_INCREMENT,
version INT NOT NULL DEFAULT '0',
created datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
createdBy VARCHAR(30) NULL,
modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
modifiedBy VARCHAR(30) NULL,
deleted TINYINT(1) NOT NULL DEFAULT '0',
name VARCHAR(100) NOT NULL,
`description` VARCHAR(255) NOT NULL,
planStart date NULL,
actualStart date NULL,
planEnd date NULL,
actualEnd date NULL,
teamLead INT NULL,
customerId INT NULL,
custLeadName VARCHAR(30) NULL,
custLeadPhone VARCHAR(20) NULL,
custLeadEmail VARCHAR(255) NULL,
remark VARCHAR(1500) NULL,
billStatus TINYINT NULL,
CONSTRAINT pk_project PRIMARY KEY (id)
);

ALTER TABLE project ADD CONSTRAINT FK_PROJECT_ON_CUSTOMERID FOREIGN KEY (customerId) REFERENCES customer (id);

ALTER TABLE project ADD CONSTRAINT FK_PROJECT_ON_TEAMLEAD FOREIGN KEY (teamLead) REFERENCES staff (id);

+ 32
- 0
src/main/resources/db/changelog/changes/20240128_01_wayne/02_task.sql 查看文件

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

-- changeset wayne:task
CREATE TABLE task (
id INT NOT NULL AUTO_INCREMENT,
version INT NOT NULL DEFAULT '0',
created datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
createdBy VARCHAR(30) NULL,
modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
modifiedBy VARCHAR(30) NULL,
deleted TINYINT(1) NOT NULL DEFAULT '0',
name VARCHAR(255) NULL,
`description` VARCHAR(255) NULL,
CONSTRAINT pk_task PRIMARY KEY (id)
);

CREATE TABLE task_template (
id INT NOT NULL AUTO_INCREMENT,
code VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
CONSTRAINT pk_task_template PRIMARY KEY (id)
);

CREATE TABLE task_template_tasks (
taskTemplateId INT NOT NULL,
tasksId INT NOT NULL,
CONSTRAINT pk_task_template_tasks PRIMARY KEY (taskTemplateId, tasksId)
);

ALTER TABLE task_template_tasks ADD CONSTRAINT fk_tastemtas_on_task FOREIGN KEY (tasksId) REFERENCES task (id);

ALTER TABLE task_template_tasks ADD CONSTRAINT fk_tastemtas_on_task_template FOREIGN KEY (taskTemplateId) REFERENCES task_template (id);

+ 9
- 0
src/main/resources/db/changelog/changes/20240128_01_wayne/03_milestone.sql 查看文件

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

-- changeset wayne:milestone
CREATE TABLE milestone (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
`description` VARCHAR(255) NOT NULL,
CONSTRAINT pk_milestone PRIMARY KEY (id)
);

+ 18
- 0
src/main/resources/db/changelog/changes/20240128_01_wayne/04_project_task.sql 查看文件

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

-- changeset wayne:project_task
CREATE TABLE project_task (
id INT NOT NULL AUTO_INCREMENT,
project_id INT NOT NULL,
milestoneId INT NULL,
task_id INT NOT NULL,
paymentPercentage DOUBLE NOT NULL,
reminderPercentage DOUBLE NOT NULL,
CONSTRAINT pk_project_task PRIMARY KEY (id)
);

ALTER TABLE project_task ADD CONSTRAINT FK_PROJECT_TASK_ON_MILESTONEID FOREIGN KEY (milestoneId) REFERENCES milestone (id);

ALTER TABLE project_task ADD CONSTRAINT FK_PROJECT_TASK_ON_PROJECT FOREIGN KEY (project_id) REFERENCES project (id);

ALTER TABLE project_task ADD CONSTRAINT FK_PROJECT_TASK_ON_TASK FOREIGN KEY (task_id) REFERENCES task (id);

+ 21
- 0
src/main/resources/db/changelog/changes/20240128_01_wayne/05_staff_allocation.sql 查看文件

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

-- changeset wayne:staff_allocation
CREATE TABLE staff_allocation (
id INT NOT NULL AUTO_INCREMENT,
project_id INT NOT NULL,
staff_id INT NOT NULL,
allocatedDateFrom date NULL,
allocatedDateTo date NULL,
normalAllocated DOUBLE NULL,
normalConsumed DOUBLE NULL,
otAllocated DOUBLE NULL,
otConsumed DOUBLE NULL,
normalBilled DOUBLE NULL,
otBilled DOUBLE NULL,
CONSTRAINT pk_staff_allocation PRIMARY KEY (id)
);

ALTER TABLE staff_allocation ADD CONSTRAINT FK_STAFF_ALLOCATION_ON_PROJECT FOREIGN KEY (project_id) REFERENCES project (id);

ALTER TABLE staff_allocation ADD CONSTRAINT FK_STAFF_ALLOCATION_ON_STAFF FOREIGN KEY (staff_id) REFERENCES staff (id);

Loading…
取消
儲存