| @@ -35,3 +35,6 @@ out/ | |||
| ### VS Code ### | |||
| .vscode/ | |||
| ### JPA Buddy ### | |||
| .jpb/ | |||
| @@ -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" | |||
| } | |||
| ``` | |||
| ``` | |||
| 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 | |||
| ``` | |||
| @@ -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' | |||
| } | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| package com.ffii.tsms.modules.data.entity; | |||
| import com.ffii.core.support.AbstractRepository; | |||
| public interface CompanyHolidayRepository extends AbstractRepository<CompanyHoliday, Long> { | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| package com.ffii.tsms.modules.data.entity; | |||
| import com.ffii.core.support.AbstractRepository; | |||
| public interface CompanyRepository extends AbstractRepository<Company, Long> { | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| package com.ffii.tsms.modules.data.entity; | |||
| import com.ffii.core.support.AbstractRepository; | |||
| public interface CustomerRepository extends AbstractRepository<Customer, Long> { | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| package com.ffii.tsms.modules.data.entity; | |||
| import com.ffii.core.support.AbstractRepository; | |||
| public interface DepartmentRepository extends AbstractRepository<Department, Long> { | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| package com.ffii.tsms.modules.data.entity; | |||
| import com.ffii.core.support.AbstractRepository; | |||
| public interface GradeRepository extends AbstractRepository<Grade, Long> { | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| package com.ffii.tsms.modules.data.entity; | |||
| import com.ffii.core.support.AbstractRepository; | |||
| public interface PositionRepository extends AbstractRepository<Position, Long> { | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| package com.ffii.tsms.modules.data.entity; | |||
| import com.ffii.core.support.AbstractRepository; | |||
| public interface RateRepository extends AbstractRepository<Rate, Long> { | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| package com.ffii.tsms.modules.data.entity; | |||
| import com.ffii.core.support.AbstractRepository; | |||
| public interface SalaryRepository extends AbstractRepository<Salary, Long> { | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| package com.ffii.tsms.modules.data.entity; | |||
| import com.ffii.core.support.AbstractRepository; | |||
| public interface ServiceRepository extends AbstractRepository<Service, Long> { | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| package com.ffii.tsms.modules.data.entity; | |||
| import com.ffii.core.support.AbstractRepository; | |||
| public interface SkillRepository extends AbstractRepository<Skill, Long> { | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| package com.ffii.tsms.modules.data.entity; | |||
| import com.ffii.core.support.AbstractRepository; | |||
| public interface StaffRepository extends AbstractRepository<Staff, Long> { | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| package com.ffii.tsms.modules.data.entity; | |||
| import com.ffii.core.support.AbstractRepository; | |||
| public interface SubsidiaryRepository extends AbstractRepository<Subsidiary, Long> { | |||
| } | |||
| @@ -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<Long> { | |||
| @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; | |||
| } | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| package com.ffii.tsms.modules.data.entity; | |||
| import com.ffii.core.support.AbstractRepository; | |||
| public interface TeamRepository extends AbstractRepository<Team, Long> { | |||
| } | |||
| @@ -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) | |||
| ); | |||
| @@ -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) | |||
| ); | |||
| @@ -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) | |||
| ); | |||
| @@ -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) | |||
| ); | |||
| @@ -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); | |||
| @@ -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) | |||
| ); | |||
| @@ -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) | |||
| ); | |||
| @@ -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) | |||
| ); | |||
| @@ -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) | |||
| ); | |||
| @@ -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) | |||
| ); | |||
| @@ -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) | |||
| ); | |||
| @@ -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); | |||
| @@ -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) | |||
| ); | |||
| @@ -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); | |||
| @@ -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) | |||
| ); | |||
| @@ -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) | |||
| ); | |||
| @@ -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); | |||