瀏覽代碼

expense related files

add_swagger
MSI\derek 11 月之前
父節點
當前提交
94e03db1ed
共有 5 個文件被更改,包括 123 次插入0 次删除
  1. +50
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/Expense.kt
  2. +8
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/ExpenseRepository.kt
  3. +26
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/projections/ExpenseSearchInfo.kt
  4. +21
    -0
      src/main/java/com/ffii/tsms/modules/project/service/ExpenseService.kt
  5. +18
    -0
      src/main/java/com/ffii/tsms/modules/project/web/ExpenseController.kt

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

@@ -0,0 +1,50 @@
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

}

+ 8
- 0
src/main/java/com/ffii/tsms/modules/project/entity/ExpenseRepository.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.ExpenseSearchInfo

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

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

@@ -0,0 +1,26 @@
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
}

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

@@ -0,0 +1,21 @@
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()
}

}

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

@@ -0,0 +1,18 @@
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()
}
}

Loading…
取消
儲存