From 5102acc865e66f0cb5e74dbabc712dfb238a0267 Mon Sep 17 00:00:00 2001 From: "MSI\\derek" Date: Wed, 16 Apr 2025 11:54:51 +0800 Subject: [PATCH] update --- .../fpsms/modules/master/entity/ItemType.kt | 15 ------ .../master/entity/ItemTypeRepository.kt | 10 ---- .../ffii/fpsms/modules/master/entity/Items.kt | 30 +++--------- .../modules/master/entity/ItemsRepository.kt | 5 +- .../modules/master/service/ItemTypeService.kt | 17 ------- .../modules/master/service/ItemsService.kt | 46 +++++++++++-------- .../master/web/models/ItemWithQcResponse.kt | 15 ++++++ .../master/web/models/NewItemRequest.kt | 16 +++---- .../changes/20250312_01_derek/01_master.sql | 3 +- 9 files changed, 60 insertions(+), 97 deletions(-) delete mode 100644 src/main/java/com/ffii/fpsms/modules/master/entity/ItemType.kt delete mode 100644 src/main/java/com/ffii/fpsms/modules/master/entity/ItemTypeRepository.kt delete mode 100644 src/main/java/com/ffii/fpsms/modules/master/service/ItemTypeService.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/master/web/models/ItemWithQcResponse.kt diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/ItemType.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/ItemType.kt deleted file mode 100644 index 8c0479f..0000000 --- a/src/main/java/com/ffii/fpsms/modules/master/entity/ItemType.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.ffii.fpsms.modules.master.entity - -import com.fasterxml.jackson.annotation.JsonBackReference -import com.ffii.core.entity.IdEntity -import jakarta.persistence.* -import jakarta.validation.constraints.NotNull - - -@Entity -@Table(name = "item_type") -open class ItemType: IdEntity() { - @NotNull - @Column(name = "name") - open var name: String? = null -} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/ItemTypeRepository.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/ItemTypeRepository.kt deleted file mode 100644 index ae84274..0000000 --- a/src/main/java/com/ffii/fpsms/modules/master/entity/ItemTypeRepository.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.ffii.fpsms.modules.master.entity - -import com.ffii.core.support.AbstractRepository -import org.springframework.stereotype.Repository -import org.springframework.transaction.annotation.Transactional - -@Repository -interface ItemTypeRepository : AbstractRepository { - -} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/Items.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/Items.kt index 8fed9e5..c7c2a41 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/entity/Items.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/Items.kt @@ -1,6 +1,7 @@ package com.ffii.fpsms.modules.master.entity import com.ffii.core.entity.BaseEntity +import com.ffii.fpsms.modules.master.web.models.ItemType import jakarta.persistence.* import jakarta.validation.constraints.NotNull @@ -21,10 +22,9 @@ open class Items : BaseEntity() { @Column(name = "remarks") open var remarks: String? = null -// (mappedBy = "items", cascade = [CascadeType.ALL], orphanRemoval = true) - @OneToOne - @JoinColumn(name = "typeId", referencedColumnName = "id") - open var type: ItemType? = null + @NotNull + @Column(name = "type") + open var type: String? = null @Column(name = "shelfLife") open var shelfLife: Double? = null @@ -32,24 +32,6 @@ open class Items : BaseEntity() { @Column(name = "countryOfOrigin") open var countryOfOrigin: String? = null - @Column(name = "minHumid") - open var minHumid: Double? = null - - @Column(name = "maxHumid") - open var maxHumid: Double? = null - - @Column(name = "minTemp") - open var minTemp: Double? = null - - @Column(name = "maxTemp") - open var maxTemp: Double? = null - - @Column(name = "sampleRate") - open var sampleRate: Double? = null - - @Column(name = "passingRate") - open var passingRate: Double? = null - - @Column(name = "netWeight") - open var netWeight: Double? = null + @Column(name = "maxQty") + open var maxQty: Double? = null } \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/ItemsRepository.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/ItemsRepository.kt index 0ad7914..be200b1 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/entity/ItemsRepository.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/ItemsRepository.kt @@ -1,11 +1,12 @@ package com.ffii.fpsms.modules.master.entity import com.ffii.core.support.AbstractRepository +import com.ffii.fpsms.modules.master.web.models.ItemType import org.springframework.stereotype.Repository @Repository interface ItemsRepository : AbstractRepository { fun findAllByDeletedFalse(): List; - fun findByIdAndTypeIdAndDeletedFalse(id: Long, typeId: Long): Items; - fun findByCodeAndTypeIdAndDeletedFalse(code: String, typeId: Long): Items?; + fun findByIdAndDeletedFalse(id: Long): Items; + fun findByCodeAndTypeAndDeletedFalse(code: String, type: ItemType): Items?; } \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/service/ItemTypeService.kt b/src/main/java/com/ffii/fpsms/modules/master/service/ItemTypeService.kt deleted file mode 100644 index c2fde5e..0000000 --- a/src/main/java/com/ffii/fpsms/modules/master/service/ItemTypeService.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.ffii.fpsms.modules.master.service - -import com.ffii.core.support.AbstractBaseEntityService -import com.ffii.core.support.AbstractIdEntityService -import com.ffii.core.support.JdbcDao -import com.ffii.fpsms.modules.master.entity.* -import com.ffii.fpsms.modules.master.web.models.MessageResponse -import org.springframework.stereotype.Service -import org.springframework.transaction.annotation.Transactional - -@Service -open class ItemTypeService( - private val jdbcDao: JdbcDao, - private val itemTypeRepository: ItemTypeRepository -): AbstractIdEntityService(jdbcDao, itemTypeRepository) { - -} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/master/service/ItemsService.kt b/src/main/java/com/ffii/fpsms/modules/master/service/ItemsService.kt index 7d043f0..07bb86b 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/service/ItemsService.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/service/ItemsService.kt @@ -2,9 +2,8 @@ package com.ffii.fpsms.modules.master.service import com.ffii.core.support.AbstractBaseEntityService import com.ffii.core.support.JdbcDao -import com.ffii.fpsms.modules.master.entity.ItemTypeRepository -import com.ffii.fpsms.modules.master.entity.Items -import com.ffii.fpsms.modules.master.entity.ItemsRepository +import com.ffii.fpsms.modules.master.entity.* +import com.ffii.fpsms.modules.master.web.models.ItemWithQcResponse import com.ffii.fpsms.modules.master.web.models.MessageResponse import com.ffii.fpsms.modules.master.web.models.NewItemRequest import org.springframework.stereotype.Service @@ -16,7 +15,7 @@ import kotlin.jvm.optionals.getOrNull open class ItemsService( private val jdbcDao: JdbcDao, private val itemsRepository: ItemsRepository, - private val itemTypeRepository: ItemTypeRepository, + private val qcCheckRepository: QcCheckRepository, ): AbstractBaseEntityService(jdbcDao, itemsRepository) { // do mapping with projection open fun allItems(): List { @@ -24,27 +23,42 @@ open class ItemsService( val items = itemsRepository.findAll() return items } - open fun getItem(id: Long): Items? { - return itemsRepository.findById(id).getOrNull() + + // QcCheck included item + open fun getItem(id: Long): ItemWithQcResponse { + val list = listOf(1,2) + val item = itemsRepository.findByIdAndDeletedFalse(id) + val qcChecks = qcCheckRepository.findAllByItemIdAndDeletedFalse(id).map { qcCheck -> + + } + val response = ItemWithQcResponse( + item = item + ) + +// val test = ItemWithQC(list) + // TODO: Return with QC items + return response } +// open fun getItem(id: Long): Items? { +// // TODO: Return with QC items +// return itemsRepository.findById(id).get() +// } @Throws(IOException::class) @Transactional open fun saveItem(request: NewItemRequest): MessageResponse { - val type = itemTypeRepository.findById(request.typeId).get() - val duplicatedItem = itemsRepository.findByCodeAndTypeIdAndDeletedFalse(request.code, request.typeId) + val duplicatedItem = itemsRepository.findByCodeAndTypeAndDeletedFalse(request.code, request.type) if (duplicatedItem != null && duplicatedItem.id != request.id) { return MessageResponse( id = request.id, code = request.code, name = request.name, - type = type.name, + type = request.type.toString(), message = "The item code has already existed", errorPosition = "code" ) } - val item = if (request.id != null && request.id > 0) itemsRepository.findByIdAndTypeIdAndDeletedFalse(request.id, request.typeId) + val item = if (request.id != null && request.id > 0) itemsRepository.findByIdAndDeletedFalse(request.id) else Items() - println(request.netWeight) item.apply { code = request.code name = request.name @@ -52,13 +66,7 @@ open class ItemsService( remarks = request.remarks shelfLife = request.shelfLife countryOfOrigin = request.countryOfOrigin - minHumid = request.minHumid - maxHumid = request.maxHumid - minTemp = request.minTemp - maxTemp = request.maxTemp - sampleRate = request.sampleRate - passingRate = request.passingRate - netWeight = request.netWeight + maxQty = request.maxQty this.type = type } val savedItem = itemsRepository.saveAndFlush(item) @@ -66,7 +74,7 @@ open class ItemsService( id = savedItem.id, name = savedItem.name, code = savedItem.code, - type = type.name, + type = savedItem.type.toString(), message = "Item Save Success", errorPosition = null, ) diff --git a/src/main/java/com/ffii/fpsms/modules/master/web/models/ItemWithQcResponse.kt b/src/main/java/com/ffii/fpsms/modules/master/web/models/ItemWithQcResponse.kt new file mode 100644 index 0000000..2f41ecd --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/master/web/models/ItemWithQcResponse.kt @@ -0,0 +1,15 @@ +package com.ffii.fpsms.modules.master.web.models + +import com.ffii.fpsms.modules.master.entity.Items +import com.ffii.fpsms.modules.master.entity.QcItem + +data class ItemQc( + val id: Long, + val description: String?, + val lowerLimit: Double?, + val upperLimit: Double?, +) +data class ItemWithQcResponse( + val item: Items, + val qcChecks: List +) diff --git a/src/main/java/com/ffii/fpsms/modules/master/web/models/NewItemRequest.kt b/src/main/java/com/ffii/fpsms/modules/master/web/models/NewItemRequest.kt index 1d808ff..7d227e6 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/web/models/NewItemRequest.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/web/models/NewItemRequest.kt @@ -3,26 +3,26 @@ package com.ffii.fpsms.modules.master.web.models import jakarta.validation.constraints.NotBlank import jakarta.validation.constraints.NotNull +enum class ItemType(type: String) { + MATERIAL("mat"), + BY_PRODUCT("byp"), + PRODUCT("product"), + CONSUMABLE("consumables"), +} data class NewItemRequest( @field:NotBlank(message = "material code cannot be empty") val code: String, @field:NotBlank(message = "material name cannot be empty") val name: String, @field:NotNull(message = "typeId cannot be null") - val typeId: Long, + val type: ItemType, val id: Long?, val description: String?, val remarks: String?, val shelfLife: Double?, val countryOfOrigin: String?, - val minHumid: Double?, - val maxHumid: Double?, - val minTemp: Double?, - val maxTemp: Double?, - val sampleRate: Double?, - val passingRate: Double?, - val netWeight: Double?, + val maxQty: Double?, // val type: List?, // val uom: List?, // val weightUnit: List?, diff --git a/src/main/resources/db/changelog/changes/20250312_01_derek/01_master.sql b/src/main/resources/db/changelog/changes/20250312_01_derek/01_master.sql index 2881b8d..b23ba51 100644 --- a/src/main/resources/db/changelog/changes/20250312_01_derek/01_master.sql +++ b/src/main/resources/db/changelog/changes/20250312_01_derek/01_master.sql @@ -19,8 +19,7 @@ CREATE TABLE items ( shelfLife INT(11) NULL, countryOfOrigin varchar(50) NULL, maxQty DECIMAL(16,2) NULL, - CONSTRAINT pk_material PRIMARY KEY (id), - CONSTRAINT fk_items FOREIGN KEY (`typeId`) REFERENCES `item_type` (`id`) + CONSTRAINT pk_material PRIMARY KEY (id) ); CREATE TABLE uom_conversion ( id INT NOT NULL AUTO_INCREMENT,