doc: sql in README #2

Merged
SOR2171 merged 5 commits from backend-dev into main 2026-07-25 14:41:42 +08:00
44 changed files with 530 additions and 0 deletions
Showing only changes of commit 999ce5a68a - Show all commits
@@ -0,0 +1,23 @@
package club.itstudio.itmanager.entity.dto
import com.baomidou.mybatisplus.annotation.IdType
import com.baomidou.mybatisplus.annotation.TableId
import com.baomidou.mybatisplus.annotation.TableName
import club.itstudio.itmanager.entity.DataCopy
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.Serializable
@Serializable
@TableName("attachments")
data class Attachment(
@TableId(type = IdType.AUTO)
val id: Long? = null,
val relatedTable: String? = null,
val relatedId: Long? = null,
val fileName: String? = null,
val filePath: String? = null,
val fileSize: Long? = null,
val contentType: String? = null,
val uploadedBy: Long? = null,
val uploadedAt: LocalDateTime? = null
) : DataCopy
@@ -0,0 +1,26 @@
package club.itstudio.itmanager.entity.dto
import com.baomidou.mybatisplus.annotation.IdType
import com.baomidou.mybatisplus.annotation.TableId
import com.baomidou.mybatisplus.annotation.TableName
import club.itstudio.itmanager.entity.DataCopy
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.Serializable
@Serializable
@TableName("borrow_records")
data class BorrowRecord(
@TableId(type = IdType.AUTO)
val id: Long? = null,
val itemId: Long = 0,
val borrowerId: Long = 0,
val quantity: Int = 1,
val borrowDate: LocalDateTime? = null,
val dueDate: LocalDateTime? = null,
val returnDate: LocalDateTime? = null,
val status: String = "BORROWED", // BORROWED / RETURNED / OVERDUE / CANCELED
val approverId: Long? = null,
val note: String? = null,
val createdAt: LocalDateTime? = null,
val updatedAt: LocalDateTime? = null
) : DataCopy
@@ -0,0 +1,20 @@
package club.itstudio.itmanager.entity.dto
import com.baomidou.mybatisplus.annotation.IdType
import com.baomidou.mybatisplus.annotation.TableId
import com.baomidou.mybatisplus.annotation.TableName
import club.itstudio.itmanager.entity.DataCopy
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.Serializable
@Serializable
@TableName("categories")
data class Category(
@TableId(type = IdType.AUTO)
val id: Long? = null,
val name: String = "",
val parentId: Long? = null,
val description: String? = null,
val createdAt: LocalDateTime? = null,
val updatedAt: LocalDateTime? = null
) : DataCopy
@@ -0,0 +1,21 @@
package club.itstudio.itmanager.entity.dto
import com.baomidou.mybatisplus.annotation.IdType
import com.baomidou.mybatisplus.annotation.TableId
import com.baomidou.mybatisplus.annotation.TableName
import club.itstudio.itmanager.entity.DataCopy
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.Serializable
@Serializable
@TableName("departments")
data class Department(
@TableId(type = IdType.AUTO)
val id: Long? = null,
val name: String = "",
val code: String? = null,
val parentId: Long? = null,
val description: String? = null,
val createdAt: LocalDateTime? = null,
val updatedAt: LocalDateTime? = null
) : DataCopy
@@ -0,0 +1,24 @@
package club.itstudio.itmanager.entity.dto
import com.baomidou.mybatisplus.annotation.IdType
import com.baomidou.mybatisplus.annotation.TableId
import com.baomidou.mybatisplus.annotation.TableName
import club.itstudio.itmanager.entity.DataCopy
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.Serializable
@Serializable
@TableName("email_notices")
data class EmailNotice(
@TableId(type = IdType.AUTO)
val id: Long? = null,
val name: String? = null,
val targetEmails: String? = null,
val subject: String? = null,
val body: String? = null,
val enabled: Boolean = true,
val scheduleCron: String? = null,
val lastSentAt: LocalDateTime? = null,
val createdAt: LocalDateTime? = null,
val updatedAt: LocalDateTime? = null
) : DataCopy
@@ -0,0 +1,20 @@
package club.itstudio.itmanager.entity.dto
import com.baomidou.mybatisplus.annotation.IdType
import com.baomidou.mybatisplus.annotation.TableId
import com.baomidou.mybatisplus.annotation.TableName
import club.itstudio.itmanager.entity.DataCopy
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.Serializable
@Serializable
@TableName("evaluations")
data class Evaluation(
@TableId(type = IdType.AUTO)
val id: Long? = null,
val relatedItemId: Long? = null,
val evaluatorId: Long? = null,
val score: Short? = null, // 1-5
val comment: String? = null,
val createdAt: LocalDateTime? = null
) : DataCopy
@@ -0,0 +1,26 @@
package club.itstudio.itmanager.entity.dto
import com.baomidou.mybatisplus.annotation.IdType
import com.baomidou.mybatisplus.annotation.TableId
import com.baomidou.mybatisplus.annotation.TableName
import club.itstudio.itmanager.entity.DataCopy
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.Serializable
import java.math.BigDecimal
@Serializable
@TableName("finance_records")
data class FinanceRecord(
@TableId(type = IdType.AUTO)
val id: Long? = null,
val recordNo: String? = null,
val type: String = "", // PURCHASE / REFUND / REPAIR / DEPRECIATION / OTHER
val relatedItemId: Long? = null,
val amount: BigDecimal = BigDecimal.ZERO,
val currency: String = "CNY",
val vendor: String? = null,
val occurredAt: LocalDateTime? = null,
val recordedBy: Long? = null,
val note: String? = null,
val createdAt: LocalDateTime? = null
) : DataCopy
@@ -0,0 +1,35 @@
package club.itstudio.itmanager.entity.dto
import com.baomidou.mybatisplus.annotation.IdType
import com.baomidou.mybatisplus.annotation.TableId
import com.baomidou.mybatisplus.annotation.TableName
import club.itstudio.itmanager.entity.DataCopy
import kotlinx.datetime.LocalDate
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.Serializable
import java.math.BigDecimal
@Serializable
@TableName("items")
data class Item(
@TableId(type = IdType.AUTO)
val id: Long? = null,
val code: String = "",
val name: String = "",
val categoryId: Long? = null,
val model: String? = null,
val brand: String? = null,
val location: String? = null,
val totalQuantity: Int = 0,
val availableQuantity: Int = 0,
val unit: String = "件",
val price: BigDecimal? = null,
val purchaseDate: LocalDate? = null,
val supplier: String? = null,
val status: String = "normal",
val description: String? = null,
val imagePath: String? = null,
val createdBy: Long? = null,
val createdAt: LocalDateTime? = null,
val updatedAt: LocalDateTime? = null
) : DataCopy
@@ -0,0 +1,24 @@
package club.itstudio.itmanager.entity.dto
import com.baomidou.mybatisplus.annotation.IdType
import com.baomidou.mybatisplus.annotation.TableId
import com.baomidou.mybatisplus.annotation.TableName
import club.itstudio.itmanager.entity.DataCopy
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.Serializable
@Serializable
@TableName("item_transactions")
data class ItemTransaction(
@TableId(type = IdType.AUTO)
val id: Long? = null,
val itemId: Long = 0,
val transType: String = "", // IN / OUT / ADJUST / TRANSFER
val quantity: Int = 0,
val fromLocation: String? = null,
val toLocation: String? = null,
val relatedId: Long? = null,
val operatorId: Long? = null,
val note: String? = null,
val createdAt: LocalDateTime? = null
) : DataCopy
@@ -0,0 +1,22 @@
package club.itstudio.itmanager.entity.dto
import com.baomidou.mybatisplus.annotation.IdType
import com.baomidou.mybatisplus.annotation.TableId
import com.baomidou.mybatisplus.annotation.TableName
import club.itstudio.itmanager.entity.DataCopy
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.Serializable
@Serializable
@TableName("memos")
data class Memo(
@TableId(type = IdType.AUTO)
val id: Long? = null,
val title: String? = null,
val content: String? = null,
val authorId: Long? = null,
val relatedItemId: Long? = null,
val isPublic: Boolean = false,
val createdAt: LocalDateTime? = null,
val updatedAt: LocalDateTime? = null
) : DataCopy
@@ -0,0 +1,25 @@
package club.itstudio.itmanager.entity.dto
import com.baomidou.mybatisplus.annotation.IdType
import com.baomidou.mybatisplus.annotation.TableId
import com.baomidou.mybatisplus.annotation.TableName
import club.itstudio.itmanager.entity.DataCopy
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.Serializable
@Serializable
@TableName("personnel")
data class Personnel(
@TableId(type = IdType.AUTO)
val id: Long? = null,
val userId: Long? = null,
val employeeNo: String? = null,
val name: String = "",
val departmentId: Long? = null,
val phone: String? = null,
val email: String? = null,
val role: String? = null,
val isActive: Boolean = true,
val createdAt: LocalDateTime? = null,
val updatedAt: LocalDateTime? = null
) : DataCopy
@@ -0,0 +1,8 @@
package club.itstudio.itmanager.mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper
import club.itstudio.itmanager.entity.dto.Attachment
import org.apache.ibatis.annotations.Mapper
@Mapper
interface AttachmentMapper : BaseMapper<Attachment>
@@ -0,0 +1,8 @@
package club.itstudio.itmanager.mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper
import club.itstudio.itmanager.entity.dto.BorrowRecord
import org.apache.ibatis.annotations.Mapper
@Mapper
interface BorrowRecordMapper : BaseMapper<BorrowRecord>
@@ -0,0 +1,8 @@
package club.itstudio.itmanager.mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper
import club.itstudio.itmanager.entity.dto.Category
import org.apache.ibatis.annotations.Mapper
@Mapper
interface CategoryMapper : BaseMapper<Category>
@@ -0,0 +1,8 @@
package club.itstudio.itmanager.mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper
import club.itstudio.itmanager.entity.dto.Department
import org.apache.ibatis.annotations.Mapper
@Mapper
interface DepartmentMapper : BaseMapper<Department>
@@ -0,0 +1,8 @@
package club.itstudio.itmanager.mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper
import club.itstudio.itmanager.entity.dto.EmailNotice
import org.apache.ibatis.annotations.Mapper
@Mapper
interface EmailNoticeMapper : BaseMapper<EmailNotice>
@@ -0,0 +1,8 @@
package club.itstudio.itmanager.mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper
import club.itstudio.itmanager.entity.dto.Evaluation
import org.apache.ibatis.annotations.Mapper
@Mapper
interface EvaluationMapper : BaseMapper<Evaluation>
@@ -0,0 +1,8 @@
package club.itstudio.itmanager.mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper
import club.itstudio.itmanager.entity.dto.FinanceRecord
import org.apache.ibatis.annotations.Mapper
@Mapper
interface FinanceRecordMapper : BaseMapper<FinanceRecord>
@@ -0,0 +1,8 @@
package club.itstudio.itmanager.mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper
import club.itstudio.itmanager.entity.dto.Item
import org.apache.ibatis.annotations.Mapper
@Mapper
interface ItemMapper : BaseMapper<Item>
@@ -0,0 +1,8 @@
package club.itstudio.itmanager.mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper
import club.itstudio.itmanager.entity.dto.ItemTransaction
import org.apache.ibatis.annotations.Mapper
@Mapper
interface ItemTransactionMapper : BaseMapper<ItemTransaction>
@@ -0,0 +1,8 @@
package club.itstudio.itmanager.mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper
import club.itstudio.itmanager.entity.dto.Memo
import org.apache.ibatis.annotations.Mapper
@Mapper
interface MemoMapper : BaseMapper<Memo>
@@ -0,0 +1,8 @@
package club.itstudio.itmanager.mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper
import club.itstudio.itmanager.entity.dto.Personnel
import org.apache.ibatis.annotations.Mapper
@Mapper
interface PersonnelMapper : BaseMapper<Personnel>
@@ -0,0 +1,6 @@
package club.itstudio.itmanager.service
import com.baomidou.mybatisplus.extension.service.IService
import club.itstudio.itmanager.entity.dto.Attachment
interface AttachmentService : IService<Attachment>
@@ -0,0 +1,6 @@
package club.itstudio.itmanager.service
import com.baomidou.mybatisplus.extension.service.IService
import club.itstudio.itmanager.entity.dto.BorrowRecord
interface BorrowRecordService : IService<BorrowRecord>
@@ -0,0 +1,6 @@
package club.itstudio.itmanager.service
import com.baomidou.mybatisplus.extension.service.IService
import club.itstudio.itmanager.entity.dto.Category
interface CategoryService : IService<Category>
@@ -0,0 +1,6 @@
package club.itstudio.itmanager.service
import com.baomidou.mybatisplus.extension.service.IService
import club.itstudio.itmanager.entity.dto.Department
interface DepartmentService : IService<Department>
@@ -0,0 +1,6 @@
package club.itstudio.itmanager.service
import com.baomidou.mybatisplus.extension.service.IService
import club.itstudio.itmanager.entity.dto.EmailNotice
interface EmailNoticeService : IService<EmailNotice>
@@ -0,0 +1,6 @@
package club.itstudio.itmanager.service
import com.baomidou.mybatisplus.extension.service.IService
import club.itstudio.itmanager.entity.dto.Evaluation
interface EvaluationService : IService<Evaluation>
@@ -0,0 +1,6 @@
package club.itstudio.itmanager.service
import com.baomidou.mybatisplus.extension.service.IService
import club.itstudio.itmanager.entity.dto.FinanceRecord
interface FinanceRecordService : IService<FinanceRecord>
@@ -0,0 +1,6 @@
package club.itstudio.itmanager.service
import com.baomidou.mybatisplus.extension.service.IService
import club.itstudio.itmanager.entity.dto.Item
interface ItemService : IService<Item>
@@ -0,0 +1,6 @@
package club.itstudio.itmanager.service
import com.baomidou.mybatisplus.extension.service.IService
import club.itstudio.itmanager.entity.dto.ItemTransaction
interface ItemTransactionService : IService<ItemTransaction>
@@ -0,0 +1,6 @@
package club.itstudio.itmanager.service
import com.baomidou.mybatisplus.extension.service.IService
import club.itstudio.itmanager.entity.dto.Memo
interface MemoService : IService<Memo>
@@ -0,0 +1,6 @@
package club.itstudio.itmanager.service
import com.baomidou.mybatisplus.extension.service.IService
import club.itstudio.itmanager.entity.dto.Personnel
interface PersonnelService : IService<Personnel>
@@ -0,0 +1,10 @@
package club.itstudio.itmanager.service.impl
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import club.itstudio.itmanager.entity.dto.Attachment
import club.itstudio.itmanager.mapper.AttachmentMapper
import club.itstudio.itmanager.service.AttachmentService
import org.springframework.stereotype.Service
@Service
class AttachmentServiceImpl : ServiceImpl<AttachmentMapper, Attachment>(), AttachmentService
@@ -0,0 +1,10 @@
package club.itstudio.itmanager.service.impl
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import club.itstudio.itmanager.entity.dto.BorrowRecord
import club.itstudio.itmanager.mapper.BorrowRecordMapper
import club.itstudio.itmanager.service.BorrowRecordService
import org.springframework.stereotype.Service
@Service
class BorrowRecordServiceImpl : ServiceImpl<BorrowRecordMapper, BorrowRecord>(), BorrowRecordService
@@ -0,0 +1,10 @@
package club.itstudio.itmanager.service.impl
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import club.itstudio.itmanager.entity.dto.Category
import club.itstudio.itmanager.mapper.CategoryMapper
import club.itstudio.itmanager.service.CategoryService
import org.springframework.stereotype.Service
@Service
class CategoryServiceImpl : ServiceImpl<CategoryMapper, Category>(), CategoryService
@@ -0,0 +1,10 @@
package club.itstudio.itmanager.service.impl
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import club.itstudio.itmanager.entity.dto.Department
import club.itstudio.itmanager.mapper.DepartmentMapper
import club.itstudio.itmanager.service.DepartmentService
import org.springframework.stereotype.Service
@Service
class DepartmentServiceImpl : ServiceImpl<DepartmentMapper, Department>(), DepartmentService
@@ -0,0 +1,10 @@
package club.itstudio.itmanager.service.impl
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import club.itstudio.itmanager.entity.dto.EmailNotice
import club.itstudio.itmanager.mapper.EmailNoticeMapper
import club.itstudio.itmanager.service.EmailNoticeService
import org.springframework.stereotype.Service
@Service
class EmailNoticeServiceImpl : ServiceImpl<EmailNoticeMapper, EmailNotice>(), EmailNoticeService
@@ -0,0 +1,10 @@
package club.itstudio.itmanager.service.impl
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import club.itstudio.itmanager.entity.dto.Evaluation
import club.itstudio.itmanager.mapper.EvaluationMapper
import club.itstudio.itmanager.service.EvaluationService
import org.springframework.stereotype.Service
@Service
class EvaluationServiceImpl : ServiceImpl<EvaluationMapper, Evaluation>(), EvaluationService
@@ -0,0 +1,10 @@
package club.itstudio.itmanager.service.impl
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import club.itstudio.itmanager.entity.dto.FinanceRecord
import club.itstudio.itmanager.mapper.FinanceRecordMapper
import club.itstudio.itmanager.service.FinanceRecordService
import org.springframework.stereotype.Service
@Service
class FinanceRecordServiceImpl : ServiceImpl<FinanceRecordMapper, FinanceRecord>(), FinanceRecordService
@@ -0,0 +1,10 @@
package club.itstudio.itmanager.service.impl
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import club.itstudio.itmanager.entity.dto.Item
import club.itstudio.itmanager.mapper.ItemMapper
import club.itstudio.itmanager.service.ItemService
import org.springframework.stereotype.Service
@Service
class ItemServiceImpl : ServiceImpl<ItemMapper, Item>(), ItemService
@@ -0,0 +1,10 @@
package club.itstudio.itmanager.service.impl
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import club.itstudio.itmanager.entity.dto.ItemTransaction
import club.itstudio.itmanager.mapper.ItemTransactionMapper
import club.itstudio.itmanager.service.ItemTransactionService
import org.springframework.stereotype.Service
@Service
class ItemTransactionServiceImpl : ServiceImpl<ItemTransactionMapper, ItemTransaction>(), ItemTransactionService
@@ -0,0 +1,10 @@
package club.itstudio.itmanager.service.impl
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import club.itstudio.itmanager.entity.dto.Memo
import club.itstudio.itmanager.mapper.MemoMapper
import club.itstudio.itmanager.service.MemoService
import org.springframework.stereotype.Service
@Service
class MemoServiceImpl : ServiceImpl<MemoMapper, Memo>(), MemoService
@@ -0,0 +1,10 @@
package club.itstudio.itmanager.service.impl
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import club.itstudio.itmanager.entity.dto.Personnel
import club.itstudio.itmanager.mapper.PersonnelMapper
import club.itstudio.itmanager.service.PersonnelService
import org.springframework.stereotype.Service
@Service
class PersonnelServiceImpl : ServiceImpl<PersonnelMapper, Personnel>(), PersonnelService