From 21ce6aabc5703cd0dc30b0ad28e6022852e8c8a0 Mon Sep 17 00:00:00 2001 From: Wayne Date: Fri, 5 Jan 2024 14:23:13 +0900 Subject: [PATCH] Add data entities --- .gitignore | 3 + README.md | 32 ++- build.gradle | 12 +- gradlew | 0 .../tsms/modules/data/entity/Company.java | 158 +++++++++++ .../modules/data/entity/CompanyHoliday.java | 37 +++ .../data/entity/CompanyHolidayRepository.java | 6 + .../data/entity/CompanyRepository.java | 6 + .../tsms/modules/data/entity/Customer.java | 101 +++++++ .../data/entity/CustomerRepository.java | 6 + .../data/entity/CustomerSubsidiary.java | 35 +++ .../tsms/modules/data/entity/Department.java | 46 ++++ .../data/entity/DepartmentRepository.java | 6 + .../ffii/tsms/modules/data/entity/Grade.java | 46 ++++ .../modules/data/entity/GradeRepository.java | 6 + .../modules/data/entity/InternalRate.java | 81 ++++++ .../tsms/modules/data/entity/Position.java | 46 ++++ .../data/entity/PositionRepository.java | 6 + .../ffii/tsms/modules/data/entity/Rate.java | 81 ++++++ .../modules/data/entity/RateRepository.java | 6 + .../ffii/tsms/modules/data/entity/Salary.java | 59 ++++ .../modules/data/entity/SalaryEffective.java | 40 +++ .../modules/data/entity/SalaryRepository.java | 6 + .../tsms/modules/data/entity/Service.java | 46 ++++ .../tsms/modules/data/entity/ServiceRate.java | 35 +++ .../data/entity/ServiceRepository.java | 6 + .../ffii/tsms/modules/data/entity/Skill.java | 46 ++++ .../modules/data/entity/SkillRepository.java | 6 + .../ffii/tsms/modules/data/entity/Staff.java | 257 ++++++++++++++++++ .../modules/data/entity/StaffRepository.java | 6 + .../tsms/modules/data/entity/Subsidiary.java | 103 +++++++ .../data/entity/SubsidiaryRepository.java | 6 + .../ffii/tsms/modules/data/entity/Team.java | 46 ++++ .../modules/data/entity/TeamRepository.java | 6 + .../changes/20240105_01_wayne/01_company.sql | 26 ++ .../20240105_01_wayne/02_company_holiday.sql | 15 + .../changes/20240105_01_wayne/03_customer.sql | 21 ++ .../20240105_01_wayne/04_subsidiary.sql | 21 ++ .../05_customer_subsidiary.sql | 13 + .../20240105_01_wayne/06_department.sql | 16 ++ .../changes/20240105_01_wayne/07_grade.sql | 16 ++ .../20240105_01_wayne/08_internal_rate.sql | 19 ++ .../changes/20240105_01_wayne/09_position.sql | 16 ++ .../changes/20240105_01_wayne/10_rate.sql | 19 ++ .../changes/20240105_01_wayne/11_salary.sql | 11 + .../20240105_01_wayne/12_salary_effective.sql | 11 + .../changes/20240105_01_wayne/13_service.sql | 16 ++ .../20240105_01_wayne/14_service_rate.sql | 13 + .../changes/20240105_01_wayne/15_skill.sql | 16 ++ .../changes/20240105_01_wayne/16_team.sql | 16 ++ .../changes/20240105_01_wayne/17_staff.sql | 54 ++++ 51 files changed, 1690 insertions(+), 17 deletions(-) mode change 100644 => 100755 gradlew create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/Company.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/CompanyHoliday.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/CompanyHolidayRepository.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/CompanyRepository.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/Customer.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/CustomerRepository.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/CustomerSubsidiary.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/Department.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/DepartmentRepository.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/Grade.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/GradeRepository.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/InternalRate.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/Position.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/PositionRepository.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/Rate.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/RateRepository.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/Salary.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/SalaryEffective.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/SalaryRepository.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/Service.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/ServiceRate.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/ServiceRepository.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/Skill.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/SkillRepository.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/Staff.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/StaffRepository.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/Subsidiary.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/SubsidiaryRepository.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/Team.java create mode 100644 src/main/java/com/ffii/tsms/modules/data/entity/TeamRepository.java create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/01_company.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/02_company_holiday.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/03_customer.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/04_subsidiary.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/05_customer_subsidiary.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/06_department.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/07_grade.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/08_internal_rate.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/09_position.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/10_rate.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/11_salary.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/12_salary_effective.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/13_service.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/14_service_rate.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/15_skill.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/16_team.sql create mode 100644 src/main/resources/db/changelog/changes/20240105_01_wayne/17_staff.sql diff --git a/.gitignore b/.gitignore index c2065bc..9ae4d2f 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ out/ ### VS Code ### .vscode/ + +### JPA Buddy ### +.jpb/ \ No newline at end of file diff --git a/README.md b/README.md index 963d420..7369438 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,9 @@ -# Backend readme -1. Create a schema named "tsmsdb" in MySQL workbench -2. Put the launch.json file into the .vscode folder -3. Put the settings.json file into the .vscode folder -4. Run and Debug "Launch Local" +# TSMS Backend -# launch.json -``` +## Getting started +1. Create a schema named `tsmsdb` in MySQL workbench +2. Create a `launch.json` file and put it into the `.vscode` folder +```json { "version": "0.2.0", "configurations": [ @@ -28,12 +26,24 @@ ] } ``` -# settings.json -You may need to change some settings depending on your development environment -``` +3. Create a `settings.json` file and put it into the `.vscode` folder + *(You may need to change some settings depending on your development environment)* +```json { "java.configuration.updateBuildConfiguration": "interactive", "java.jdt.ls.java.home": "C:\\java\\jdk-17.0.8", "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable" } -``` \ No newline at end of file +``` + +4. Run and Debug "Launch Local" + +## Using gradle + +This project can also be run using gradle. + +### Running the application +After creating the table in MySQL, run +```shell +SPRING_PROFILES_ACTIVE=db-local,ldap-local ./gradlew bootRun +``` diff --git a/build.gradle b/build.gradle index 43a8eea..5bc33a9 100644 --- a/build.gradle +++ b/build.gradle @@ -22,10 +22,10 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' - implementation 'org.springframework.boot:spring-boot-starter-log4j2' + implementation 'org.springframework.boot:spring-boot-starter-log4j2' implementation 'org.springframework.security:spring-security-ldap' implementation 'org.liquibase:liquibase-core' - + implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0' implementation group: 'org.apache.poi', name: 'poi', version: '5.2.3' implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '5.2.3' @@ -41,7 +41,7 @@ dependencies { implementation group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.5' compileOnly group: 'jakarta.servlet', name: 'jakarta.servlet-api', version: '6.0.0' - + runtimeOnly 'com.mysql:mysql-connector-j' runtimeOnly 'com.unboundid:unboundid-ldapsdk:6.0.9' @@ -50,7 +50,7 @@ dependencies { } configurations { - all { - exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' - } + configureEach { + exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' + } } diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Company.java b/src/main/java/com/ffii/tsms/modules/data/entity/Company.java new file mode 100644 index 0000000..d24453d --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Company.java @@ -0,0 +1,158 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.BaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; + +import java.time.LocalTime; + +@Entity +@Table(name = "company") +public class Company extends BaseEntity { + @NotNull + @Column(name = "companyCode", length = 30) + private String companyCode; + + @NotNull + @Column(name = "name", length = 150) + private String name; + + @Column(name = "brNo", length = 20) + private String brNo; + + @Column(name = "contactName", length = 30) + private String contactName; + + @Column(name = "phone", length = 20) + private String phone; + + @Column(name = "otHourTo") + private LocalTime otHourTo; + + @Column(name = "otHourFrom") + private LocalTime otHourFrom; + + @Column(name = "normalHourTo") + private LocalTime normalHourTo; + + @Column(name = "normalHourFrom") + private LocalTime normalHourFrom; + + @Column(name = "currency", length = 20) + private String currency; + + @Column(name = "address", length = 500) + private String address; + + @Column(name = "district", length = 30) + private String district; + + @Column(name = "email") + private String email; + + public LocalTime getOtHourTo() { + return otHourTo; + } + + public void setOtHourTo(LocalTime otHourTo) { + this.otHourTo = otHourTo; + } + + public LocalTime getOtHourFrom() { + return otHourFrom; + } + + public void setOtHourFrom(LocalTime otHourFrom) { + this.otHourFrom = otHourFrom; + } + + public LocalTime getNormalHourTo() { + return normalHourTo; + } + + public void setNormalHourTo(LocalTime normalHourTo) { + this.normalHourTo = normalHourTo; + } + + public LocalTime getNormalHourFrom() { + return normalHourFrom; + } + + public void setNormalHourFrom(LocalTime normalHourFrom) { + this.normalHourFrom = normalHourFrom; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getDistrict() { + return district; + } + + public void setDistrict(String district) { + this.district = district; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getContactName() { + return contactName; + } + + public void setContactName(String contactName) { + this.contactName = contactName; + } + + public String getBrNo() { + return brNo; + } + + public void setBrNo(String brNo) { + this.brNo = brNo; + } + + public String getCompanyCode() { + return companyCode; + } + + public void setCompanyCode(String companyCode) { + this.companyCode = companyCode; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/CompanyHoliday.java b/src/main/java/com/ffii/tsms/modules/data/entity/CompanyHoliday.java new file mode 100644 index 0000000..7bb22ef --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/CompanyHoliday.java @@ -0,0 +1,37 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.BaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; + +import java.time.LocalDate; + +@Entity +@Table(name = "company_holiday") +public class CompanyHoliday extends BaseEntity { + @NotNull + @Column(name = "date") + private LocalDate date; + + @NotNull + @Column(name = "name", length = 150) + private String name; + + public LocalDate getDate() { + return date; + } + + public void setDate(LocalDate date) { + this.date = date; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/CompanyHolidayRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/CompanyHolidayRepository.java new file mode 100644 index 0000000..b5c67a9 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/CompanyHolidayRepository.java @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository; + +public interface CompanyHolidayRepository extends AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/CompanyRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/CompanyRepository.java new file mode 100644 index 0000000..534102d --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/CompanyRepository.java @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository; + +public interface CompanyRepository extends AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Customer.java b/src/main/java/com/ffii/tsms/modules/data/entity/Customer.java new file mode 100644 index 0000000..33d8411 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Customer.java @@ -0,0 +1,101 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.BaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; + +@Entity +@Table(name = "customer") +public class Customer extends BaseEntity { + @NotNull + @Column(name = "name", length = 150) + private String name; + + @NotNull + @Column(name = "code", length = 30) + private String code; + + @Column(name = "address", length = 500) + private String address; + + @Column(name = "district", length = 30) + private String district; + + @Column(name = "email") + private String email; + + @Column(name = "phone", length = 20) + private String phone; + + @Column(name = "contactName", length = 30) + private String contactName; + + @Column(name = "brNo", length = 20) + private String brNo; + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getDistrict() { + return district; + } + + public void setDistrict(String district) { + this.district = district; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getContactName() { + return contactName; + } + + public void setContactName(String contactName) { + this.contactName = contactName; + } + + public String getBrNo() { + return brNo; + } + + public void setBrNo(String brNo) { + this.brNo = brNo; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/CustomerRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/CustomerRepository.java new file mode 100644 index 0000000..743a41c --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/CustomerRepository.java @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository; + +public interface CustomerRepository extends AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/CustomerSubsidiary.java b/src/main/java/com/ffii/tsms/modules/data/entity/CustomerSubsidiary.java new file mode 100644 index 0000000..6065480 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/CustomerSubsidiary.java @@ -0,0 +1,35 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.IdEntity; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; + +@Entity +@Table(name = "customer_subsidiary") +public class CustomerSubsidiary extends IdEntity { + @ManyToOne + @JoinColumn(name = "customerId") + private Customer customer; + + @ManyToOne + @JoinColumn(name = "subsidiaryId") + private Subsidiary subsidiary; + + public Subsidiary getSubsidiary() { + return subsidiary; + } + + public void setSubsidiary(Subsidiary subsidiary) { + this.subsidiary = subsidiary; + } + + public Customer getCustomer() { + return customer; + } + + public void setCustomerId(Customer customer) { + this.customer = customer; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Department.java b/src/main/java/com/ffii/tsms/modules/data/entity/Department.java new file mode 100644 index 0000000..b143424 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Department.java @@ -0,0 +1,46 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.BaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; + +@Entity +@Table(name = "department") +public class Department extends BaseEntity { + @Column(name = "description", length = 1500) + private String description; + + @NotNull + @Column(name = "name", length = 150) + private String name; + + @NotNull + @Column(name = "code", length = 30) + private String code; + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/DepartmentRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/DepartmentRepository.java new file mode 100644 index 0000000..e1b5f46 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/DepartmentRepository.java @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository; + +public interface DepartmentRepository extends AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Grade.java b/src/main/java/com/ffii/tsms/modules/data/entity/Grade.java new file mode 100644 index 0000000..19ece59 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Grade.java @@ -0,0 +1,46 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.BaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; + +@Entity +@Table(name = "grade") +public class Grade extends BaseEntity { + @Column(name = "description", length = 1500) + private String description; + + @NotNull + @Column(name = "name", length = 150) + private String name; + + @NotNull + @Column(name = "code", length = 30) + private String code; + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/GradeRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/GradeRepository.java new file mode 100644 index 0000000..be264ea --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/GradeRepository.java @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository; + +public interface GradeRepository extends AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/InternalRate.java b/src/main/java/com/ffii/tsms/modules/data/entity/InternalRate.java new file mode 100644 index 0000000..a2f7d14 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/InternalRate.java @@ -0,0 +1,81 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.BaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; + +import java.time.LocalDate; + +@Entity +@Table(name = "internal_rate") +public class InternalRate extends BaseEntity { + @NotNull + @Column(name = "name", length = 150) + private String name; + + @NotNull + @Column(name = "code", length = 30) + private String code; + + @Column(name = "effectFrom") + private LocalDate effectFrom; + + @Column(name = "effectTo") + private LocalDate effectTo; + + @Column(name = "normalRate") + private Double normalRate; + + @Column(name = "otRate") + private Double otRate; + + public Double getOtRate() { + return otRate; + } + + public void setOtRate(Double otRate) { + this.otRate = otRate; + } + + public Double getNormalRate() { + return normalRate; + } + + public void setNormalRate(Double normalRate) { + this.normalRate = normalRate; + } + + public LocalDate getEffectTo() { + return effectTo; + } + + public void setEffectTo(LocalDate effectTo) { + this.effectTo = effectTo; + } + + public LocalDate getEffectFrom() { + return effectFrom; + } + + public void setEffectFrom(LocalDate effectFrom) { + this.effectFrom = effectFrom; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Position.java b/src/main/java/com/ffii/tsms/modules/data/entity/Position.java new file mode 100644 index 0000000..83fe927 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Position.java @@ -0,0 +1,46 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.BaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; + +@Entity +@Table(name = "position") +public class Position extends BaseEntity { + @Column(name = "description", length = 1500) + private String description; + + @NotNull + @Column(name = "name", length = 150) + private String name; + + @NotNull + @Column(name = "code", length = 30) + private String code; + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/PositionRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/PositionRepository.java new file mode 100644 index 0000000..4c1894c --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/PositionRepository.java @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository; + +public interface PositionRepository extends AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Rate.java b/src/main/java/com/ffii/tsms/modules/data/entity/Rate.java new file mode 100644 index 0000000..2de7ef7 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Rate.java @@ -0,0 +1,81 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.BaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; + +import java.time.LocalDate; + +@Entity +@Table(name = "rate") +public class Rate extends BaseEntity { + @NotNull + @Column(name = "name", length = 150) + private String name; + + @NotNull + @Column(name = "code", length = 30) + private String code; + + @Column(name = "effectFrom") + private LocalDate effectFrom; + + @Column(name = "effectTo") + private LocalDate effectTo; + + @Column(name = "normalRate") + private Double normalRate; + + @Column(name = "otRate") + private Double otRate; + + public Double getOtRate() { + return otRate; + } + + public void setOtRate(Double otRate) { + this.otRate = otRate; + } + + public Double getNormalRate() { + return normalRate; + } + + public void setNormalRate(Double normalRate) { + this.normalRate = normalRate; + } + + public LocalDate getEffectTo() { + return effectTo; + } + + public void setEffectTo(LocalDate effectTo) { + this.effectTo = effectTo; + } + + public LocalDate getEffectFrom() { + return effectFrom; + } + + public void setEffectFrom(LocalDate effectFrom) { + this.effectFrom = effectFrom; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/RateRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/RateRepository.java new file mode 100644 index 0000000..fb476d7 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/RateRepository.java @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository; + +public interface RateRepository extends AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Salary.java b/src/main/java/com/ffii/tsms/modules/data/entity/Salary.java new file mode 100644 index 0000000..7e1d35d --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Salary.java @@ -0,0 +1,59 @@ +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 = "salary") +public class Salary extends IdEntity { + @NotNull + @Column(name = "salaryPoint") + private Integer salaryPoint; + + @NotNull + @Column(name = "lowerLimit") + private Integer lowerLimit; + + @NotNull + @Column(name = "upperLimit") + private Integer upperLimit; + + @NotNull + @Column(name = "increment") + private Integer increment; + + public Integer getIncrement() { + return increment; + } + + public void setIncrement(Integer increment) { + this.increment = increment; + } + + public Integer getLowerLimit() { + return lowerLimit; + } + + public void setLowerLimit(Integer lowerLimit) { + this.lowerLimit = lowerLimit; + } + + public Integer getUpperLimit() { + return upperLimit; + } + + public void setUpperLimit(Integer upperLimit) { + this.upperLimit = upperLimit; + } + + public void setSalaryPoint(Integer salaryPoint) { + this.salaryPoint = salaryPoint; + } + + public Integer getSalaryPoint() { + return salaryPoint; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/SalaryEffective.java b/src/main/java/com/ffii/tsms/modules/data/entity/SalaryEffective.java new file mode 100644 index 0000000..2b01f9c --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/SalaryEffective.java @@ -0,0 +1,40 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.IdEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; + +import java.time.LocalDate; + +@Entity +@Table(name = "salary_effective") +public class SalaryEffective extends IdEntity { + @NotNull + @Column(name = "date") + private LocalDate date; + + public LocalDate getDate() { + return date; + } + + public void setDate(LocalDate date) { + this.date = date; + } + + @ManyToOne + @JoinColumn(name = "salaryId") + @NotNull + private Salary salary; + + public Salary getSalary() { + return salary; + } + + public void setSalary(Salary salary) { + this.salary = salary; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/SalaryRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/SalaryRepository.java new file mode 100644 index 0000000..093be87 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/SalaryRepository.java @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository; + +public interface SalaryRepository extends AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Service.java b/src/main/java/com/ffii/tsms/modules/data/entity/Service.java new file mode 100644 index 0000000..841987e --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Service.java @@ -0,0 +1,46 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.BaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; + +@Entity +@Table(name = "service") +public class Service extends BaseEntity { + @Column(name = "name", length = 150) + private String name; + + @NotNull + @Column(name = "type", length = 30) + private String type; + + @NotNull + @Column(name = "code", length = 30) + private String code; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/ServiceRate.java b/src/main/java/com/ffii/tsms/modules/data/entity/ServiceRate.java new file mode 100644 index 0000000..fa2e19b --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/ServiceRate.java @@ -0,0 +1,35 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.IdEntity; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; + +@Entity +@Table(name = "service_rate") +public class ServiceRate extends IdEntity { + @ManyToOne + @JoinColumn(name = "rateId") + private Rate rate; + + @ManyToOne + @JoinColumn(name = "serviceId") + private Service service; + + public Rate getRate() { + return rate; + } + + public void setRate(Rate rate) { + this.rate = rate; + } + + public Service getService() { + return service; + } + + public void setService(Service service) { + this.service = service; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/ServiceRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/ServiceRepository.java new file mode 100644 index 0000000..74bb204 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/ServiceRepository.java @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository; + +public interface ServiceRepository extends AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Skill.java b/src/main/java/com/ffii/tsms/modules/data/entity/Skill.java new file mode 100644 index 0000000..fe0771e --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Skill.java @@ -0,0 +1,46 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.BaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; + +@Entity +@Table(name = "skill") +public class Skill extends BaseEntity { + @Column(name = "description", length = 1500) + private String description; + + @NotNull + @Column(name = "name", length = 150) + private String name; + + @NotNull + @Column(name = "code", length = 30) + private String code; + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/SkillRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/SkillRepository.java new file mode 100644 index 0000000..1b47ce9 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/SkillRepository.java @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository; + +public interface SkillRepository extends AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Staff.java b/src/main/java/com/ffii/tsms/modules/data/entity/Staff.java new file mode 100644 index 0000000..001368f --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Staff.java @@ -0,0 +1,257 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.BaseEntity; +import com.ffii.tsms.modules.user.entity.User; +import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; + +import java.time.LocalDate; + +@Entity +@Table(name = "staff") +public class Staff extends BaseEntity { + @NotNull + @OneToOne + @JoinColumn(name = "userId", unique = true) + private User user; + + @Column(name = "joinDate") + private LocalDate joinDate; + + @NotNull + @Column(name = "name", length = 150) + private String name; + + @NotNull + @Column(name = "staffId", length = 30) + private String staffId; + + @ManyToOne + @JoinColumn(name = "currentPosition") + private Position currentPosition; + + @ManyToOne + @JoinColumn(name = "joinPosition") + private Position joinPosition; + + @NotNull + @ManyToOne + @JoinColumn(name = "companyId") + private Company company; + + @ManyToOne + @JoinColumn(name = "gradeId") + private Grade grade; + + @ManyToOne + @JoinColumn(name = "teamId") + private Team team; + + @ManyToOne + @JoinColumn(name = "skillSetId") + private Skill skill; + + @NotNull + @ManyToOne + @JoinColumn(name = "salaryEffId") + private SalaryEffective salaryEffective; + + @ManyToOne + @JoinColumn(name = "departmentId") + private Department department; + + @Column(name = "phone2", length = 20) + private String phone2; + + @Column(name = "phone1", length = 20) + private String phone1; + + @Column(name = "email") + private String email; + + @Column(name = "emergContactName", length = 150) + private String emergContactName; + + @Column(name = "emergContactPhone", length = 20) + private String emergContactPhone; + + @Column(name = "employType", length = 30) + private String employType; + + @Column(name = "departDate") + private LocalDate departDate; + + @Column(name = "departReason", length = 500) + private String departReason; + + @Column(name = "remark", length = 1500) + private String remark; + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getDepartReason() { + return departReason; + } + + public void setDepartReason(String departReason) { + this.departReason = departReason; + } + + public LocalDate getDepartDate() { + return departDate; + } + + public void setDepartDate(LocalDate departDate) { + this.departDate = departDate; + } + + public String getEmployType() { + return employType; + } + + public void setEmployType(String employType) { + this.employType = employType; + } + + public String getEmergContactPhone() { + return emergContactPhone; + } + + public void setEmergContactPhone(String emergContactPhone) { + this.emergContactPhone = emergContactPhone; + } + + public String getEmergContactName() { + return emergContactName; + } + + public void setEmergContactName(String emergContactName) { + this.emergContactName = emergContactName; + } + + public String getPhone2() { + return phone2; + } + + public void setPhone2(String phone2) { + this.phone2 = phone2; + } + + public String getPhone1() { + return phone1; + } + + public void setPhone1(String phone1) { + this.phone1 = phone1; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public SalaryEffective getSalaryEffective() { + return salaryEffective; + } + + public void setSalaryEffective(SalaryEffective salaryEffective) { + this.salaryEffective = salaryEffective; + } + + public Skill getSkill() { + return skill; + } + + public void setSkill(Skill skill) { + this.skill = skill; + } + + public Company getCompany() { + return company; + } + + public void setCompany(Company company) { + this.company = company; + } + + public Grade getGrade() { + return grade; + } + + public void setGrade(Grade grade) { + this.grade = grade; + } + + public Team getTeam() { + return team; + } + + public void setTeam(Team team) { + this.team = team; + } + + public Department getDepartment() { + return department; + } + + public void setDepartment(Department department) { + this.department = department; + } + + public Position getCurrentPosition() { + return currentPosition; + } + + public void setCurrentPosition(Position currentPosition) { + this.currentPosition = currentPosition; + } + + public Position getJoinPosition() { + return joinPosition; + } + + public void setJoinPosition(Position joinPosition) { + this.joinPosition = joinPosition; + } + + public LocalDate getJoinDate() { + return joinDate; + } + + public void setJoinDate(LocalDate joinDate) { + this.joinDate = joinDate; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStaffId() { + return staffId; + } + + public void setStaffId(String staffId) { + this.staffId = staffId; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/StaffRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/StaffRepository.java new file mode 100644 index 0000000..8fe4cd8 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/StaffRepository.java @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository; + +public interface StaffRepository extends AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Subsidiary.java b/src/main/java/com/ffii/tsms/modules/data/entity/Subsidiary.java new file mode 100644 index 0000000..d0ff445 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Subsidiary.java @@ -0,0 +1,103 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.BaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; + +import java.time.LocalTime; + +@Entity +@Table(name = "subsidiary") +public class Subsidiary extends BaseEntity { + @NotNull + @Column(name = "code", length = 30) + private String code; + + @NotNull + @Column(name = "name", length = 150) + private String name; + + @Column(name = "brNo", length = 20) + private String brNo; + + @Column(name = "contactName", length = 30) + private String contactName; + + @Column(name = "phone", length = 20) + private String phone; + + @Column(name = "address", length = 500) + private String address; + + @Column(name = "district", length = 30) + private String district; + + @Column(name = "email") + private String email; + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getDistrict() { + return district; + } + + public void setDistrict(String district) { + this.district = district; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getContactName() { + return contactName; + } + + public void setContactName(String contactName) { + this.contactName = contactName; + } + + public String getBrNo() { + return brNo; + } + + public void setBrNo(String brNo) { + this.brNo = brNo; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/SubsidiaryRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/SubsidiaryRepository.java new file mode 100644 index 0000000..faaec53 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/SubsidiaryRepository.java @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository; + +public interface SubsidiaryRepository extends AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Team.java b/src/main/java/com/ffii/tsms/modules/data/entity/Team.java new file mode 100644 index 0000000..e5e1b5e --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Team.java @@ -0,0 +1,46 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.entity.BaseEntity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotNull; + +@Entity +@Table(name = "team") +public class Team extends BaseEntity { + @Column(name = "description", length = 1500) + private String description; + + @NotNull + @Column(name = "name", length = 150) + private String name; + + @NotNull + @Column(name = "code", length = 30) + private String code; + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/TeamRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/TeamRepository.java new file mode 100644 index 0000000..f9bca98 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/TeamRepository.java @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.data.entity; + +import com.ffii.core.support.AbstractRepository; + +public interface TeamRepository extends AbstractRepository { +} \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/01_company.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/01_company.sql new file mode 100644 index 0000000..a774000 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/01_company.sql @@ -0,0 +1,26 @@ +-- liquibase formatted sql + +-- changeset wayne:company +CREATE TABLE company ( + 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', + companyCode VARCHAR(30) NOT NULL, + name VARCHAR(150) NOT NULL, + brNo VARCHAR(20) NULL, + contactName VARCHAR(30) NULL, + phone VARCHAR(20) NULL, + otHourTo time NULL, + otHourFrom time NULL, + normalHourTo time NULL, + normalHourFrom time NULL, + currency VARCHAR(20) NULL, + address VARCHAR(500) NULL, + district VARCHAR(30) NULL, + email VARCHAR(255) NULL, + CONSTRAINT pk_company PRIMARY KEY (id) +); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/02_company_holiday.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/02_company_holiday.sql new file mode 100644 index 0000000..a38a028 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/02_company_holiday.sql @@ -0,0 +1,15 @@ +-- liquibase formatted sql + +-- changeset wayne:company_holiday +CREATE TABLE company_holiday ( + 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', + date date NOT NULL, + name VARCHAR(150) NOT NULL, + CONSTRAINT pk_company_holiday PRIMARY KEY (id) +); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/03_customer.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/03_customer.sql new file mode 100644 index 0000000..f6fcaf8 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/03_customer.sql @@ -0,0 +1,21 @@ +-- liquibase formatted sql + +-- changeset wayne:customer +CREATE TABLE customer ( + 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(150) NOT NULL, + code VARCHAR(30) NOT NULL, + address VARCHAR(500) NULL, + district VARCHAR(30) NULL, + email VARCHAR(255) NULL, + phone VARCHAR(20) NULL, + contactName VARCHAR(30) NULL, + brNo VARCHAR(20) NULL, + CONSTRAINT pk_customer PRIMARY KEY (id) +); diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/04_subsidiary.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/04_subsidiary.sql new file mode 100644 index 0000000..5b58d76 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/04_subsidiary.sql @@ -0,0 +1,21 @@ +-- liquibase formatted sql + +-- changeset wayne:subsidiary +CREATE TABLE subsidiary ( + 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', + code VARCHAR(30) NOT NULL, + name VARCHAR(150) NOT NULL, + brNo VARCHAR(20) NULL, + contactName VARCHAR(30) NULL, + phone VARCHAR(20) NULL, + address VARCHAR(500) NULL, + district VARCHAR(30) NULL, + email VARCHAR(255) NULL, + CONSTRAINT pk_subsidiary PRIMARY KEY (id) +); diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/05_customer_subsidiary.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/05_customer_subsidiary.sql new file mode 100644 index 0000000..9829a25 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/05_customer_subsidiary.sql @@ -0,0 +1,13 @@ +-- liquibase formatted sql + +-- changeset wayne:customer_subsidiary +CREATE TABLE customer_subsidiary ( + id INT NOT NULL AUTO_INCREMENT, + customerId INT NULL, + subsidiaryId INT NULL, + CONSTRAINT pk_customer_subsidiary PRIMARY KEY (id) +); + +ALTER TABLE customer_subsidiary ADD CONSTRAINT FK_CUSTOMER_SUBSIDIARY_ON_CUSTOMERID FOREIGN KEY (customerId) REFERENCES customer (id); + +ALTER TABLE customer_subsidiary ADD CONSTRAINT FK_CUSTOMER_SUBSIDIARY_ON_SUBSIDIARYID FOREIGN KEY (subsidiaryId) REFERENCES subsidiary (id); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/06_department.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/06_department.sql new file mode 100644 index 0000000..759cfde --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/06_department.sql @@ -0,0 +1,16 @@ +-- liquibase formatted sql + +-- changeset wayne:department +CREATE TABLE department ( + 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', + `description` VARCHAR(1500) NULL, + name VARCHAR(150) NOT NULL, + code VARCHAR(30) NOT NULL, + CONSTRAINT pk_department PRIMARY KEY (id) +); diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/07_grade.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/07_grade.sql new file mode 100644 index 0000000..0798eee --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/07_grade.sql @@ -0,0 +1,16 @@ +-- liquibase formatted sql + +-- changeset wayne:grade +CREATE TABLE grade ( + 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', + `description` VARCHAR(1500) NULL, + name VARCHAR(150) NOT NULL, + code VARCHAR(30) NOT NULL, + CONSTRAINT pk_grade PRIMARY KEY (id) +); diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/08_internal_rate.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/08_internal_rate.sql new file mode 100644 index 0000000..9de6c39 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/08_internal_rate.sql @@ -0,0 +1,19 @@ +-- liquibase formatted sql + +-- changeset wayne:internal_rate +CREATE TABLE internal_rate ( + 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(150) NOT NULL, + code VARCHAR(30) NOT NULL, + effectFrom date NULL, + effectTo date NULL, + normalRate DOUBLE NULL, + otRate DOUBLE NULL, + CONSTRAINT pk_internal_rate PRIMARY KEY (id) +); diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/09_position.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/09_position.sql new file mode 100644 index 0000000..3631a09 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/09_position.sql @@ -0,0 +1,16 @@ +-- liquibase formatted sql + +-- changeset wayne:position +CREATE TABLE position ( + 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', + `description` VARCHAR(1500) NULL, + name VARCHAR(150) NOT NULL, + code VARCHAR(30) NOT NULL, + CONSTRAINT pk_position PRIMARY KEY (id) +); diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/10_rate.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/10_rate.sql new file mode 100644 index 0000000..18d4174 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/10_rate.sql @@ -0,0 +1,19 @@ +-- liquibase formatted sql + +-- changeset wayne:rate +CREATE TABLE rate ( + 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(150) NOT NULL, + code VARCHAR(30) NOT NULL, + effectFrom date NULL, + effectTo date NULL, + normalRate DOUBLE NULL, + otRate DOUBLE NULL, + CONSTRAINT pk_rate PRIMARY KEY (id) +); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/11_salary.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/11_salary.sql new file mode 100644 index 0000000..1f4b58d --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/11_salary.sql @@ -0,0 +1,11 @@ +-- liquibase formatted sql + +-- changeset wayne:salary +CREATE TABLE salary ( + id INT NOT NULL AUTO_INCREMENT, + salaryPoint INT NOT NULL, + lowerLimit INT NOT NULL, + upperLimit INT NOT NULL, + increment INT NOT NULL, + CONSTRAINT pk_salary PRIMARY KEY (id) +); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/12_salary_effective.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/12_salary_effective.sql new file mode 100644 index 0000000..df7d3b7 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/12_salary_effective.sql @@ -0,0 +1,11 @@ +-- liquibase formatted sql + +-- changeset wayne:salary_effective +CREATE TABLE salary_effective ( + id INT NOT NULL AUTO_INCREMENT, + date date NOT NULL, + salaryId INT NOT NULL, + CONSTRAINT pk_salary_effective PRIMARY KEY (id) +); + +ALTER TABLE salary_effective ADD CONSTRAINT FK_SALARY_EFFECTIVE_ON_SALARYID FOREIGN KEY (salaryId) REFERENCES salary (id); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/13_service.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/13_service.sql new file mode 100644 index 0000000..0b6075a --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/13_service.sql @@ -0,0 +1,16 @@ +-- liquibase formatted sql + +-- changeset wayne:service +CREATE TABLE service ( + 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(150) NULL, + type VARCHAR(30) NOT NULL, + code VARCHAR(30) NOT NULL, + CONSTRAINT pk_service PRIMARY KEY (id) +); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/14_service_rate.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/14_service_rate.sql new file mode 100644 index 0000000..898360f --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/14_service_rate.sql @@ -0,0 +1,13 @@ +-- liquibase formatted sql + +-- changeset wayne:service_rate +CREATE TABLE service_rate ( + id INT NOT NULL AUTO_INCREMENT, + rateId INT NULL, + serviceId INT NULL, + CONSTRAINT pk_service_rate PRIMARY KEY (id) +); + +ALTER TABLE service_rate ADD CONSTRAINT FK_SERVICE_RATE_ON_RATEID FOREIGN KEY (rateId) REFERENCES rate (id); + +ALTER TABLE service_rate ADD CONSTRAINT FK_SERVICE_RATE_ON_SERVICEID FOREIGN KEY (serviceId) REFERENCES service (id); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/15_skill.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/15_skill.sql new file mode 100644 index 0000000..6883b1e --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/15_skill.sql @@ -0,0 +1,16 @@ +-- liquibase formatted sql + +-- changeset wayne:skill +CREATE TABLE skill ( + 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', + `description` VARCHAR(1500) NULL, + name VARCHAR(150) NOT NULL, + code VARCHAR(30) NOT NULL, + CONSTRAINT pk_skill PRIMARY KEY (id) +); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/16_team.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/16_team.sql new file mode 100644 index 0000000..356ea31 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/16_team.sql @@ -0,0 +1,16 @@ +-- liquibase formatted sql + +-- changeset wayne:team +CREATE TABLE team ( + 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', + `description` VARCHAR(1500) NULL, + name VARCHAR(150) NOT NULL, + code VARCHAR(30) NOT NULL, + CONSTRAINT pk_team PRIMARY KEY (id) +); \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20240105_01_wayne/17_staff.sql b/src/main/resources/db/changelog/changes/20240105_01_wayne/17_staff.sql new file mode 100644 index 0000000..43e0b99 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240105_01_wayne/17_staff.sql @@ -0,0 +1,54 @@ +-- liquibase formatted sql + +-- changeset wayne:staff +CREATE TABLE staff ( + 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', + userId INT NOT NULL, + joinDate date NULL, + name VARCHAR(150) NOT NULL, + staffId VARCHAR(30) NOT NULL, + currentPosition INT NULL, + joinPosition INT NULL, + companyId INT NOT NULL, + gradeId INT NULL, + teamId INT NULL, + skillSetId INT NULL, + salaryEffId INT NOT NULL, + departmentId INT NULL, + phone2 VARCHAR(20) NULL, + phone1 VARCHAR(20) NULL, + email VARCHAR(255) NULL, + emergContactName VARCHAR(150) NULL, + emergContactPhone VARCHAR(20) NULL, + employType VARCHAR(30) NULL, + departDate date NULL, + departReason VARCHAR(500) NULL, + remark VARCHAR(1500) NULL, + CONSTRAINT pk_staff PRIMARY KEY (id) +); + +ALTER TABLE staff ADD CONSTRAINT uc_staff_userid UNIQUE (userId); + +ALTER TABLE staff ADD CONSTRAINT FK_STAFF_ON_COMPANYID FOREIGN KEY (companyId) REFERENCES company (id); + +ALTER TABLE staff ADD CONSTRAINT FK_STAFF_ON_CURRENTPOSITION FOREIGN KEY (currentPosition) REFERENCES position (id); + +ALTER TABLE staff ADD CONSTRAINT FK_STAFF_ON_DEPARTMENTID FOREIGN KEY (departmentId) REFERENCES department (id); + +ALTER TABLE staff ADD CONSTRAINT FK_STAFF_ON_GRADEID FOREIGN KEY (gradeId) REFERENCES grade (id); + +ALTER TABLE staff ADD CONSTRAINT FK_STAFF_ON_JOINPOSITION FOREIGN KEY (joinPosition) REFERENCES position (id); + +ALTER TABLE staff ADD CONSTRAINT FK_STAFF_ON_SALARYEFFID FOREIGN KEY (salaryEffId) REFERENCES salary_effective (id); + +ALTER TABLE staff ADD CONSTRAINT FK_STAFF_ON_SKILLSETID FOREIGN KEY (skillSetId) REFERENCES skill (id); + +ALTER TABLE staff ADD CONSTRAINT FK_STAFF_ON_TEAMID FOREIGN KEY (teamId) REFERENCES team (id); + +ALTER TABLE staff ADD CONSTRAINT FK_STAFF_ON_USERID FOREIGN KEY (userId) REFERENCES user (id); \ No newline at end of file