Kaynağa Gözat

add position log + team log tables

add_swagger
MSI\derek 11 ay önce
ebeveyn
işleme
6f1f887ce8
12 değiştirilmiş dosya ile 296 ekleme ve 1 silme
  1. +46
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/PositionLog.java
  2. +11
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/PositionLogRepository.java
  3. +46
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/TeamLog.java
  4. +11
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/TeamLogRepository.java
  5. +0
    -1
      src/main/java/com/ffii/tsms/modules/data/entity/projections/GradeLogInfo.kt
  6. +21
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/projections/PositionLogInfo.kt
  7. +41
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/projections/TeamLogInfo.kt
  8. +20
    -0
      src/main/java/com/ffii/tsms/modules/data/service/PositionLogService.kt
  9. +19
    -0
      src/main/java/com/ffii/tsms/modules/data/service/TeamLogService.kt
  10. +22
    -0
      src/main/java/com/ffii/tsms/modules/data/web/PositionLogController.kt
  11. +21
    -0
      src/main/java/com/ffii/tsms/modules/data/web/TeamLogController.kt
  12. +38
    -0
      src/main/resources/db/changelog/changes/20240902_01_derek/02_add_pos_log_and_team_log.sql

+ 46
- 0
src/main/java/com/ffii/tsms/modules/data/entity/PositionLog.java Dosyayı Görüntüle

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

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

import java.time.LocalDate;

@Entity
@Table(name = "position_log")
public class PositionLog extends BaseEntity<Long> {

@NotNull
@OneToOne
@JoinColumn(name = "staffId")
private Staff staff;

@NotNull
@OneToOne
@JoinColumn(name = "positionId")
private Position position;

@NotNull
@Column(name = "from", length = 30)
private LocalDate from;

@NotNull
@Column(name = "to", length = 30)
private LocalDate to;

public Staff getStaff() {
return staff;
}

public void setStaff(Staff staff) {
this.staff = staff;
}

public Position getPosition() { return position; }

public void setPosition(Position position) { this.position = position; }

public LocalDate getFrom() { return from; }

public void setFrom(LocalDate from) { this.from = from; }
}

+ 11
- 0
src/main/java/com/ffii/tsms/modules/data/entity/PositionLogRepository.java Dosyayı Görüntüle

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

import com.ffii.core.support.AbstractRepository;
import com.ffii.tsms.modules.data.entity.projections.GradeLogInfo;
import com.ffii.tsms.modules.data.entity.projections.PositionLogInfo;

import java.util.List;

public interface PositionLogRepository extends AbstractRepository<PositionLog, Long> {
List<PositionLogInfo> findPositionLogInfoByStaffIdAndDeletedFalse(Long staffId);
}

+ 46
- 0
src/main/java/com/ffii/tsms/modules/data/entity/TeamLog.java Dosyayı Görüntüle

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

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

import java.time.LocalDate;

@Entity
@Table(name = "team_log")
public class TeamLog extends BaseEntity<Long> {

@NotNull
@OneToOne
@JoinColumn(name = "staffId")
private Staff staff;

@NotNull
@OneToOne
@JoinColumn(name = "teamId")
private Team team;

@NotNull
@Column(name = "from", length = 30)
private LocalDate from;

@NotNull
@Column(name = "to", length = 30)
private LocalDate to;

public Staff getStaff() {
return staff;
}

public void setStaff(Staff staff) {
this.staff = staff;
}

public Team getTeam() { return team; }

public void setTeam(Team team) { this.team = team; }

public LocalDate getFrom() { return from; }

public void setFrom(LocalDate from) { this.from = from; }
}

+ 11
- 0
src/main/java/com/ffii/tsms/modules/data/entity/TeamLogRepository.java Dosyayı Görüntüle

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

import com.ffii.core.support.AbstractRepository;
import com.ffii.tsms.modules.data.entity.projections.PositionLogInfo;
import com.ffii.tsms.modules.data.entity.projections.TeamLogInfo;

import java.util.List;

public interface TeamLogRepository extends AbstractRepository<TeamLog, Long> {
List<TeamLogInfo> findTeamLogInfoByStaffIdAndDeletedFalse(Long staffId);
}

+ 0
- 1
src/main/java/com/ffii/tsms/modules/data/entity/projections/GradeLogInfo.kt Dosyayı Görüntüle

@@ -1,7 +1,6 @@
package com.ffii.tsms.modules.data.entity.projections

import com.ffii.tsms.modules.data.entity.Grade
import com.ffii.tsms.modules.data.entity.Position
import org.springframework.beans.factory.annotation.Value
import java.time.LocalDate



+ 21
- 0
src/main/java/com/ffii/tsms/modules/data/entity/projections/PositionLogInfo.kt Dosyayı Görüntüle

@@ -0,0 +1,21 @@
package com.ffii.tsms.modules.data.entity.projections
import com.ffii.tsms.modules.data.entity.Position
import org.springframework.beans.factory.annotation.Value
import java.time.LocalDate

interface PositionLogInfo {
val id: Long

@get:Value("#{target.staff.id}")
val staffId: Long

@get:Value("#{target.staff.name}")
val staffName: String

@get:Value("#{target.staff.staffId}")
val staffCode: String

val position: Position
val from: LocalDate
val to: LocalDate?
}

+ 41
- 0
src/main/java/com/ffii/tsms/modules/data/entity/projections/TeamLogInfo.kt Dosyayı Görüntüle

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

import com.ffii.tsms.modules.data.entity.Grade
import com.ffii.tsms.modules.data.entity.Team
import org.springframework.beans.factory.annotation.Value
import java.time.LocalDate

interface TeamInfo {
val id: Long

@get:Value("#{target.description}")
val description: String

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

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

@get:Value("#{target.staff?.id}")
val teamLead: Long?
}

interface TeamLogInfo {
val id: Long

@get:Value("#{target.staff.id}")
val staffId: Long

@get:Value("#{target.staff.name}")
val staffName: String

@get:Value("#{target.staff.staffId}")
val staffCode: String

@get:Value("#{target.team}")
val team: TeamInfo

val from: LocalDate
val to: LocalDate?
}

+ 20
- 0
src/main/java/com/ffii/tsms/modules/data/service/PositionLogService.kt Dosyayı Görüntüle

@@ -0,0 +1,20 @@
package com.ffii.tsms.modules.data.service

import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao
import com.ffii.tsms.modules.data.entity.PositionLog
import com.ffii.tsms.modules.data.entity.PositionLogRepository
import com.ffii.tsms.modules.data.entity.projections.GradeLogInfo
import com.ffii.tsms.modules.data.entity.projections.PositionLogInfo
import org.springframework.stereotype.Service


@Service
open class PositionLogService (
private val positionLogRepository: PositionLogRepository,
private val jdbcDao: JdbcDao,
) : AbstractBaseEntityService<PositionLog, Long, PositionLogRepository>(jdbcDao, positionLogRepository) {
open fun allPositionLog(staffId: Long): List<PositionLogInfo> {
return positionLogRepository.findPositionLogInfoByStaffIdAndDeletedFalse(staffId)
}
}

+ 19
- 0
src/main/java/com/ffii/tsms/modules/data/service/TeamLogService.kt Dosyayı Görüntüle

@@ -0,0 +1,19 @@
package com.ffii.tsms.modules.data.service

import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao
import com.ffii.tsms.modules.data.entity.TeamLog
import com.ffii.tsms.modules.data.entity.TeamLogRepository
import com.ffii.tsms.modules.data.entity.projections.PositionLogInfo
import com.ffii.tsms.modules.data.entity.projections.TeamLogInfo
import org.springframework.stereotype.Service

@Service
open class TeamLogService (
private val teamLogRepository: TeamLogRepository,
private val jdbcDao: JdbcDao,
) : AbstractBaseEntityService<TeamLog, Long, TeamLogRepository>(jdbcDao, teamLogRepository) {
open fun allTeamLog(staffId: Long): List<TeamLogInfo> {
return teamLogRepository.findTeamLogInfoByStaffIdAndDeletedFalse(staffId)
}
}

+ 22
- 0
src/main/java/com/ffii/tsms/modules/data/web/PositionLogController.kt Dosyayı Görüntüle

@@ -0,0 +1,22 @@
package com.ffii.tsms.modules.data.web

import com.ffii.tsms.modules.data.entity.PositionLogRepository
import com.ffii.tsms.modules.data.entity.projections.GradeLogInfo
import com.ffii.tsms.modules.data.entity.projections.PositionLogInfo
import com.ffii.tsms.modules.data.service.PositionLogService
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("/positionLog")
class PositionLogController(
private val positionLogService: PositionLogService,
private val positionLogRepository: PositionLogRepository,
) {
@GetMapping("/{staffId}")
fun allPositionLog(@PathVariable staffId: Long): List<PositionLogInfo> {
return positionLogService.allPositionLog(staffId)
}
}

+ 21
- 0
src/main/java/com/ffii/tsms/modules/data/web/TeamLogController.kt Dosyayı Görüntüle

@@ -0,0 +1,21 @@
package com.ffii.tsms.modules.data.web

import com.ffii.tsms.modules.data.entity.TeamLogRepository
import com.ffii.tsms.modules.data.entity.projections.TeamLogInfo
import com.ffii.tsms.modules.data.service.TeamLogService
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("/teamLog")
class TeamLogController(
private val teamLogService: TeamLogService,
private val teamLogRepository: TeamLogRepository,
) {
@GetMapping("/{staffId}")
fun allTeamLog(@PathVariable staffId: Long): List<TeamLogInfo> {
return teamLogService.allTeamLog(staffId)
}
}

+ 38
- 0
src/main/resources/db/changelog/changes/20240902_01_derek/02_add_pos_log_and_team_log.sql Dosyayı Görüntüle

@@ -0,0 +1,38 @@
-- liquibase formatted sql
-- changeset derek:create grade log table

CREATE TABLE position_log (
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 ON UPDATE CURRENT_TIMESTAMP,
modifiedBy VARCHAR(30) NULL,
deleted TINYINT(1) NOT NULL DEFAULT '0',
staffId INT NOT NULL,
positionId INT NOT NULL,
`from` DATE NOT NULL,
`to` DATE NULL,
CONSTRAINT pk_position_log PRIMARY KEY (id)
);

ALTER TABLE position_log ADD CONSTRAINT FK_POSITION_LOG_ON_STAFFID FOREIGN KEY (staffId) REFERENCES staff (id);
ALTER TABLE position_log ADD CONSTRAINT FK_POSITION_LOG_ON_POSITIONID FOREIGN KEY (positionId) REFERENCES `position` (id);

CREATE TABLE team_log (
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 ON UPDATE CURRENT_TIMESTAMP,
modifiedBy VARCHAR(30) NULL,
deleted TINYINT(1) NOT NULL DEFAULT '0',
staffId INT NOT NULL,
teamId INT NOT NULL,
`from` DATE NOT NULL,
`to` DATE NULL,
CONSTRAINT pk_position_log PRIMARY KEY (id)
);

ALTER TABLE team_log ADD CONSTRAINT FK_TEAM_LOG_ON_STAFFID FOREIGN KEY (staffId) REFERENCES staff (id);
ALTER TABLE team_log ADD CONSTRAINT FK_TEAM_LOG_ON_TEAMID FOREIGN KEY (teamId) REFERENCES `team` (id);

Yükleniyor…
İptal
Kaydet