From 81b17533dba7c6e98b457d844aa104229aa63f36 Mon Sep 17 00:00:00 2001 From: "cyril.tsui" Date: Mon, 14 Apr 2025 15:42:35 +0800 Subject: [PATCH] add qc category --- .../fpsms/modules/master/entity/QcCategory.kt | 31 +++++++++++++++++++ .../master/entity/QcCategoryRepository.kt | 9 ++++++ .../modules/master/entity/QcItemCategory.kt | 25 +++++++++++++++ .../master/entity/QcItemCategoryRepository.kt | 8 +++++ .../master/service/QcCategoryService.kt | 15 +++++++++ .../master/web/QcCategoryController.kt | 18 +++++++++++ .../20250310_01_cyril/02_qc_category.sql | 16 ++++++++++ .../20250310_01_cyril/03_qc_item_category.sql | 22 +++++++++++++ 8 files changed, 144 insertions(+) create mode 100644 src/main/java/com/ffii/fpsms/modules/master/entity/QcCategory.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/master/entity/QcCategoryRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/master/entity/QcItemCategory.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/master/entity/QcItemCategoryRepository.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/master/service/QcCategoryService.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/master/web/QcCategoryController.kt create mode 100644 src/main/resources/db/changelog/changes/20250310_01_cyril/02_qc_category.sql create mode 100644 src/main/resources/db/changelog/changes/20250310_01_cyril/03_qc_item_category.sql diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/QcCategory.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/QcCategory.kt new file mode 100644 index 0000000..f1b1b3e --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/QcCategory.kt @@ -0,0 +1,31 @@ +package com.ffii.fpsms.modules.master.entity + +import com.ffii.core.entity.BaseEntity +import jakarta.persistence.CascadeType +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.JoinColumn +import jakarta.persistence.JoinTable +import jakarta.persistence.OneToMany +import jakarta.persistence.Table +import jakarta.validation.constraints.NotNull + +@Entity +@Table(name = "qc_category") +open class QcCategory : BaseEntity() { + @NotNull + @Column(name = "code") + open var code: String? = null + + @NotNull + @Column(name = "name") + open var name: String? = null + + @OneToMany(cascade = [CascadeType.ALL]) + @JoinTable( + name = "qc_item_category", + joinColumns = [JoinColumn(name = "qcCategoryId")], + inverseJoinColumns = [JoinColumn(name = "qcItemId")] + ) + open var qcItems: MutableSet = mutableSetOf() +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/QcCategoryRepository.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/QcCategoryRepository.kt new file mode 100644 index 0000000..7dcbd79 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/QcCategoryRepository.kt @@ -0,0 +1,9 @@ +package com.ffii.fpsms.modules.master.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface QcCategoryRepository : AbstractRepository { + fun findAllByDeletedIsFalse(): List +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/QcItemCategory.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/QcItemCategory.kt new file mode 100644 index 0000000..00ab0de --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/QcItemCategory.kt @@ -0,0 +1,25 @@ +package com.ffii.fpsms.modules.master.entity + +import com.fasterxml.jackson.annotation.JsonBackReference +import com.fasterxml.jackson.annotation.JsonManagedReference +import com.ffii.core.entity.BaseEntity +import com.ffii.core.entity.IdEntity +import jakarta.persistence.Entity +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.Table +import jakarta.validation.constraints.NotNull + +@Entity +@Table(name = "qc_item_category") +open class QcItemCategory : IdEntity() { + @NotNull + @ManyToOne + @JoinColumn(name = "qcCategoryId") + open var qcCategory: QcCategory? = null + + @NotNull + @ManyToOne + @JoinColumn(name = "qcItemId") + open var qcItem: QcItem? = null +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/QcItemCategoryRepository.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/QcItemCategoryRepository.kt new file mode 100644 index 0000000..1528ddf --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/QcItemCategoryRepository.kt @@ -0,0 +1,8 @@ +package com.ffii.fpsms.modules.master.entity + +import com.ffii.core.support.AbstractRepository +import org.springframework.stereotype.Repository + +@Repository +interface QcItemCategoryRepository : AbstractRepository { +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/service/QcCategoryService.kt b/src/main/java/com/ffii/fpsms/modules/master/service/QcCategoryService.kt new file mode 100644 index 0000000..90c294e --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/master/service/QcCategoryService.kt @@ -0,0 +1,15 @@ +package com.ffii.fpsms.modules.master.service + +import com.ffii.core.support.AbstractBaseEntityService +import com.ffii.fpsms.modules.master.entity.QcCategory +import com.ffii.fpsms.modules.master.entity.QcCategoryRepository +import org.springframework.stereotype.Service + +@Service +open class QcCategoryService( + private val qcCategoryRepository: QcCategoryRepository +) { + open fun allQcCategories(): List { + return qcCategoryRepository.findAllByDeletedIsFalse() + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/web/QcCategoryController.kt b/src/main/java/com/ffii/fpsms/modules/master/web/QcCategoryController.kt new file mode 100644 index 0000000..027f1dc --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/master/web/QcCategoryController.kt @@ -0,0 +1,18 @@ +package com.ffii.fpsms.modules.master.web + +import com.ffii.fpsms.modules.master.entity.QcCategory +import com.ffii.fpsms.modules.master.service.QcCategoryService +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController + +@RestController +@RequestMapping("/qcCategories") +class QcCategoryController( + private val qcCategoryService: QcCategoryService +) { + @GetMapping + fun allQcCategories(): List { + return qcCategoryService.allQcCategories() + } +} \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20250310_01_cyril/02_qc_category.sql b/src/main/resources/db/changelog/changes/20250310_01_cyril/02_qc_category.sql new file mode 100644 index 0000000..f4138c8 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250310_01_cyril/02_qc_category.sql @@ -0,0 +1,16 @@ +--liquibase formatted sql + +--changeset cyril:qc_category +CREATE TABLE `qc_category` +( + `id` INT NOT NULL, + `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `createdBy` VARCHAR(30) NULL DEFAULT NULL, + `version` INT NOT NULL DEFAULT '0', + `modified` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `modifiedBy` VARCHAR(30) NULL DEFAULT NULL, + `deleted` TINYINT(1) NOT NULL DEFAULT '0', + `code` VARCHAR(50) NOT NULL, + `name` VARCHAR(50) NOT NULL, + PRIMARY KEY (`id`) +); diff --git a/src/main/resources/db/changelog/changes/20250310_01_cyril/03_qc_item_category.sql b/src/main/resources/db/changelog/changes/20250310_01_cyril/03_qc_item_category.sql new file mode 100644 index 0000000..21186c0 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250310_01_cyril/03_qc_item_category.sql @@ -0,0 +1,22 @@ +--liquibase formatted sql + +--changeset cyril:qc_item_category +CREATE TABLE `qc_item_category` +( + `id` INT NOT NULL, + `qcItemId` INT NOT NULL, + `qcCategoryId` INT NOT NULL, + PRIMARY KEY (`id`), + INDEX `FK_QC_ITEM_CATEGORY_ON_QCITEMID` (`qcItemId` ASC) VISIBLE, + INDEX `FK_QC_ITEM_CATEGORY_ON_QCCATEGORYID` (`qcCategoryId` ASC) VISIBLE, + CONSTRAINT `FK_QC_ITEM_CATEGORY_ON_QCITEMID` + FOREIGN KEY (`qcItemId`) + REFERENCES `qc_item` (`id`) + ON DELETE RESTRICT + ON UPDATE RESTRICT, + CONSTRAINT `FK_QC_ITEM_CATEGORY_ON_QCCATEGORYID` + FOREIGN KEY (`qcCategoryId`) + REFERENCES `qc_category` (`id`) + ON DELETE RESTRICT + ON UPDATE RESTRICT +);