Kaynağa Gözat

Add project entities

tags/Baseline_30082024_BACKEND_UAT
Wayne 1 yıl önce
ebeveyn
işleme
e5a0023f3e
19 değiştirilmiş dosya ile 358 ekleme ve 1 silme
  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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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 Dosyayı Görüntüle

@@ -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);

Yükleniyor…
İptal
Kaydet