Przeglądaj źródła

update

create_edit_user
MSI\derek 4 miesięcy temu
rodzic
commit
5102acc865
9 zmienionych plików z 60 dodań i 97 usunięć
  1. +0
    -15
      src/main/java/com/ffii/fpsms/modules/master/entity/ItemType.kt
  2. +0
    -10
      src/main/java/com/ffii/fpsms/modules/master/entity/ItemTypeRepository.kt
  3. +6
    -24
      src/main/java/com/ffii/fpsms/modules/master/entity/Items.kt
  4. +3
    -2
      src/main/java/com/ffii/fpsms/modules/master/entity/ItemsRepository.kt
  5. +0
    -17
      src/main/java/com/ffii/fpsms/modules/master/service/ItemTypeService.kt
  6. +27
    -19
      src/main/java/com/ffii/fpsms/modules/master/service/ItemsService.kt
  7. +15
    -0
      src/main/java/com/ffii/fpsms/modules/master/web/models/ItemWithQcResponse.kt
  8. +8
    -8
      src/main/java/com/ffii/fpsms/modules/master/web/models/NewItemRequest.kt
  9. +1
    -2
      src/main/resources/db/changelog/changes/20250312_01_derek/01_master.sql

+ 0
- 15
src/main/java/com/ffii/fpsms/modules/master/entity/ItemType.kt Wyświetl plik

@@ -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<Long>() {
@NotNull
@Column(name = "name")
open var name: String? = null
}

+ 0
- 10
src/main/java/com/ffii/fpsms/modules/master/entity/ItemTypeRepository.kt Wyświetl plik

@@ -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<ItemType, Long> {

}

+ 6
- 24
src/main/java/com/ffii/fpsms/modules/master/entity/Items.kt Wyświetl plik

@@ -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<Long>() {
@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<Long>() {
@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
}

+ 3
- 2
src/main/java/com/ffii/fpsms/modules/master/entity/ItemsRepository.kt Wyświetl plik

@@ -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<Items, Long> {
fun findAllByDeletedFalse(): List<Items>;
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?;
}

+ 0
- 17
src/main/java/com/ffii/fpsms/modules/master/service/ItemTypeService.kt Wyświetl plik

@@ -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<ItemType, Long, ItemTypeRepository>(jdbcDao, itemTypeRepository) {

}

+ 27
- 19
src/main/java/com/ffii/fpsms/modules/master/service/ItemsService.kt Wyświetl plik

@@ -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<Items, Long, ItemsRepository>(jdbcDao, itemsRepository) {
// do mapping with projection
open fun allItems(): List<Items> {
@@ -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,
)


+ 15
- 0
src/main/java/com/ffii/fpsms/modules/master/web/models/ItemWithQcResponse.kt Wyświetl plik

@@ -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<ItemQc>
)

+ 8
- 8
src/main/java/com/ffii/fpsms/modules/master/web/models/NewItemRequest.kt Wyświetl plik

@@ -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<NewTypeRequest>?,
// val uom: List<NewUomRequest>?,
// val weightUnit: List<NewWeightUnitRequest>?,


+ 1
- 2
src/main/resources/db/changelog/changes/20250312_01_derek/01_master.sql Wyświetl plik

@@ -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,


Ładowanie…
Anuluj
Zapisz