MSI\2Fi 11 月之前
父節點
當前提交
951963cbea
共有 11 個文件被更改,包括 133 次插入123 次删除
  1. +0
    -50
      src/main/java/com/ffii/tsms/modules/project/entity/Expense.kt
  2. +0
    -8
      src/main/java/com/ffii/tsms/modules/project/entity/ExpenseRepository.kt
  3. +37
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/ProjectExpense.kt
  4. +8
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/ProjectExpenseRepository.kt
  5. +0
    -26
      src/main/java/com/ffii/tsms/modules/project/entity/projections/ExpenseSearchInfo.kt
  6. +29
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/projections/ProjectExpenseSearchInfo.kt
  7. +0
    -21
      src/main/java/com/ffii/tsms/modules/project/service/ExpenseService.kt
  8. +19
    -0
      src/main/java/com/ffii/tsms/modules/project/service/ProjectExpenseService.kt
  9. +0
    -18
      src/main/java/com/ffii/tsms/modules/project/web/ExpenseController.kt
  10. +18
    -0
      src/main/java/com/ffii/tsms/modules/project/web/ProjectExpenseController.kt
  11. +22
    -0
      src/main/resources/db/changelog/changes/20240912_01_derek/01_projectExpense.sql

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

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

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

@Entity
@Table(name = "expense")
open class Expense : BaseEntity<Long>(){

@NotNull
@OneToOne
@JoinColumn(name = "projectId")
open var project: Project? = null

@NotNull
@OneToOne
@JoinColumn(name = "staffId")
open var staff: Staff? = null

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

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

@Column(name = "supporting")
open var supporting: Int? = null

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

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

@Column(name = "verifiedDatetime")
open var verifiedDatetime: LocalDateTime? = null

@Column(name = "verifiedBy")
open var verifiedBy: Int? = null

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

}

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

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

import com.ffii.core.support.AbstractRepository
import com.ffii.tsms.modules.project.entity.projections.ExpenseSearchInfo

interface ExpenseRepository : AbstractRepository<Expense, Long> {
fun findExpenseSearchInfoByDeletedFalse(): List<ExpenseSearchInfo>
}

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

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

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

@Entity
@Table(name = "project_expense")
open class ProjectExpense : BaseEntity<Long>(){

// @NotNull
@Column(name = "expenseNo", length = 45)
open var expenseNo: String? = null

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

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

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

@NotNull
@OneToOne
@JoinColumn(name = "projectId")
open var project: Project? = null

@NotNull
@OneToOne
@JoinColumn(name = "teamId")
open var team: Team? = null
}

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

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

import com.ffii.core.support.AbstractRepository
import com.ffii.tsms.modules.project.entity.projections.ProjectExpenseSearchInfo

interface ProjectExpenseRepository : AbstractRepository<ProjectExpense, Long> {
fun findExpenseSearchInfoByDeletedFalse(): List<ProjectExpenseSearchInfo>
}

+ 0
- 26
src/main/java/com/ffii/tsms/modules/project/entity/projections/ExpenseSearchInfo.kt 查看文件

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

import org.springframework.beans.factory.annotation.Value
import java.time.LocalDateTime

interface ExpenseSearchInfo {
val id: Long

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

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

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

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

val description: String
val amount: Double
val approvedAmount: Double?
val verifiedDatetime: LocalDateTime
val remark: String
}

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

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

import org.springframework.beans.factory.annotation.Value
import java.time.LocalDate
import java.time.LocalDateTime

interface ProjectExpenseSearchInfo {
val id: Long
val expenseNo: String

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

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

@get:Value("#{target.team.id}")
val teamId: Long

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

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

val amount: Double
val issueDate: LocalDate
val receiptDate: LocalDate?
}

+ 0
- 21
src/main/java/com/ffii/tsms/modules/project/service/ExpenseService.kt 查看文件

@@ -1,21 +0,0 @@
package com.ffii.tsms.modules.project.service

import com.ffii.core.support.AbstractIdEntityService
import com.ffii.core.support.JdbcDao
import com.ffii.tsms.modules.project.entity.Expense
import com.ffii.tsms.modules.project.entity.ExpenseRepository
import com.ffii.tsms.modules.project.entity.Invoice
import com.ffii.tsms.modules.project.entity.InvoiceRepository
import com.ffii.tsms.modules.project.entity.projections.ExpenseSearchInfo
import org.springframework.stereotype.Service

@Service
open class ExpenseService(
private val expenseRepository: ExpenseRepository,
private val jdbcDao: JdbcDao,
) : AbstractIdEntityService<Expense, Long, ExpenseRepository>(jdbcDao, expenseRepository){
open fun findExpenseSearchInfo(): List<ExpenseSearchInfo> {
return expenseRepository.findExpenseSearchInfoByDeletedFalse()
}

}

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

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

import com.ffii.core.support.AbstractIdEntityService
import com.ffii.core.support.JdbcDao
import com.ffii.tsms.modules.project.entity.ProjectExpense
import com.ffii.tsms.modules.project.entity.ProjectExpenseRepository
import com.ffii.tsms.modules.project.entity.projections.ProjectExpenseSearchInfo
import org.springframework.stereotype.Service

@Service
open class ProjectExpenseService(
private val projectExpenseRepository: ProjectExpenseRepository,
private val jdbcDao: JdbcDao,
) : AbstractIdEntityService<ProjectExpense, Long, ProjectExpenseRepository>(jdbcDao, projectExpenseRepository){
open fun findProjectExpenseSearchInfo(): List<ProjectExpenseSearchInfo> {
return projectExpenseRepository.findExpenseSearchInfoByDeletedFalse()
}

}

+ 0
- 18
src/main/java/com/ffii/tsms/modules/project/web/ExpenseController.kt 查看文件

@@ -1,18 +0,0 @@
package com.ffii.tsms.modules.project.web

import com.ffii.tsms.modules.project.entity.projections.ExpenseSearchInfo
import com.ffii.tsms.modules.project.service.ExpenseService
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("/expense")
class ExpenseController(
private val expenseService: ExpenseService,
) {
@GetMapping
fun allExpense(): List<ExpenseSearchInfo> {
return expenseService.findExpenseSearchInfo()
}
}

+ 18
- 0
src/main/java/com/ffii/tsms/modules/project/web/ProjectExpenseController.kt 查看文件

@@ -0,0 +1,18 @@
package com.ffii.tsms.modules.project.web

import com.ffii.tsms.modules.project.entity.projections.ProjectExpenseSearchInfo
import com.ffii.tsms.modules.project.service.ProjectExpenseService
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("/project-expense")
class ProjectExpenseController(
private val projectExpenseService: ProjectExpenseService,
) {
@GetMapping
fun allProjectExpense(): List<ProjectExpenseSearchInfo> {
return projectExpenseService.findProjectExpenseSearchInfo()
}
}

+ 22
- 0
src/main/resources/db/changelog/changes/20240912_01_derek/01_projectExpense.sql 查看文件

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

-- changeset derek:project_expense
CREATE TABLE project_expense (
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',
expenseNo VARCHAR(150) NULL,
issueDate DATE NOT NULL,
receiptDate date NULL,
amount DECIMAL(16,2) NOT NULL,
projectId INT NOT NULL,
teamId INT NOT NULL,
CONSTRAINT pk_project_expense PRIMARY KEY (id)
);

ALTER TABLE project_expense ADD CONSTRAINT FK_PROJECT_EXPENSE_ON_PROJECTID FOREIGN KEY (projectId) REFERENCES project (id);
ALTER TABLE project_expense ADD CONSTRAINT FK_PROJECT_EXPENSE_ON_TEAMID FOREIGN KEY (teamId) REFERENCES team (id);

Loading…
取消
儲存