diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/BomMaterial.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/BomMaterial.kt index 8bdfad6..3b9903b 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/entity/BomMaterial.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/BomMaterial.kt @@ -36,6 +36,13 @@ open class BomMaterial : BaseEntity() { @Column(name = "uomName", length = 100) open var uomName: String? = null + @ManyToOne + @JoinColumn(name = "salesUnitId") + open var salesUnit: UomConversion? = null + + @Column(name = "salesUnitCode") + open var salesUnitCode: String? = null + @NotNull @ManyToOne(optional = false) @JoinColumn(name = "bomId", nullable = false) diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/BomProcess.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/BomProcess.kt index a892daf..ff3c81e 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/entity/BomProcess.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/BomProcess.kt @@ -31,8 +31,8 @@ open class BomProcess : BaseEntity() { open var seqNo: Long? = null // in minute - @Column(name = "duration", nullable = false) - open var duration: Int? = null + @Column(name = "durationInMinute", nullable = false) + open var durationInMinute: Int? = null @Column(name = "prepTimeInMinute", nullable = false) open var prepTimeInMinute: Int? = null diff --git a/src/main/java/com/ffii/fpsms/modules/master/service/BomService.kt b/src/main/java/com/ffii/fpsms/modules/master/service/BomService.kt index 37cf64d..398ba2d 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/service/BomService.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/service/BomService.kt @@ -79,8 +79,8 @@ open class BomService( //////// -------------------------------- for excel import ------------------------------- ///////// private fun saveBomEntity(req: ImportBomRequest): Bom { - val item = if (req.itemId != null) itemsRepository.findById(req.itemId).orElseThrow() else null - val uom = if (req.uomId != null) uomConversionRepository.findById(req.uomId).orElseThrow() else null + val item = itemsRepository.findByCodeAndDeletedFalse(req.code) ?: itemsRepository.findByNameAndDeletedFalse(req.name) + val uom = if (req.uomId != null) uomConversionRepository.findById(req.uomId!!).orElseThrow() else null val bom = Bom().apply { this.isDark = req.isDark this.isFloat = req.isFloat @@ -101,11 +101,15 @@ open class BomService( } fun saveBomMaterial(req: ImportBomMatRequest): BomMaterial { +// val uom = uomConversionRepository.findByCodeAndDeletedFalse() val bomMaterial = BomMaterial().apply { this.item = req.item this.itemName = req.item!!.name this.isConsumable = req.isConsumable this.qty = req.qty + this.salesUnit = req.salesUnit + this.salesUnitCode = req.salesUnit?.code + this.uom = req.uom this.uomName = req.uomName this.bom = req.bom @@ -118,7 +122,7 @@ open class BomService( this.equipment = req.equipment this.description = req.description this.seqNo = req.seqNo - this.duration = req.duration + this.durationInMinute = req.durationInMinute this.prepTimeInMinute = req.prepTimeInMinute this.postProdTimeInMinute = req.postProdTimeInMinute this.bom = req.bom @@ -182,6 +186,12 @@ open class BomService( this.uomName = tempCell.stringCellValue.trim() } } + 7 -> { + val salesUnit = uomConversionRepository.findByCodeAndDeletedFalse(tempCell.stringCellValue.trim()) + bomMatRequest.apply { + this.salesUnit = salesUnit + } + } 10 -> { val bomProcess = bomProcessRepository.findBySeqNoAndBomIdAndDeletedIsFalse( seqNo = tempCell.numericCellValue.toInt(), @@ -219,9 +229,9 @@ open class BomService( description = "", ) var startRowIndex = 0 - val endRowIndex = 15 + val endRowIndex = 8 var startColumnIndex = 0 - val endColumnIndex = 15 + val endColumnIndex = 9 while (startRowIndex != endRowIndex || startColumnIndex != endColumnIndex) { val tempRow = sheet.getRow(startRowIndex) val tempCell = tempRow.getCell(startColumnIndex) @@ -270,14 +280,14 @@ open class BomService( } val leftTargetValueRow = sheet.getRow(startRowIndex) val leftTargetValueCell = leftTargetValueRow.getCell(startColumnIndex + 1) - when (tempCellVal) { - "顔色深淺度" -> request.apply { + when { + tempCellVal.contains("深淺") -> request.apply { isDark = calculateColourScore(leftTargetValueCell.stringCellValue.trim()) } - "浮沉" -> request.apply { + tempCellVal.contains("浮沉") -> request.apply { isFloat = calculateFloatScore(leftTargetValueCell.stringCellValue.trim()) } - "濃淡程度" -> request.apply { + tempCellVal.contains("濃淡") -> request.apply { isDense = if (leftTargetValueCell.cellType == CellType.NUMERIC) leftTargetValueCell.numericCellValue.toInt() else 0 } } @@ -399,25 +409,55 @@ open class BomService( } } 6 -> { //duration - val durationString = tempCell.stringCellValue.trim() - bomProcessRequest.apply { - this.duration = extractDurationStringToMinutes(durationString) + when (tempCell.cellType) { + CellType.NUMERIC -> { + bomProcessRequest.apply { + this.durationInMinute = tempCell.numericCellValue.toInt() + } + } + CellType.STRING -> { + val durationString = tempCell.stringCellValue.trim() + bomProcessRequest.apply { + this.durationInMinute = extractDurationStringToMinutes(durationString) + } + } + + else -> {} } + } 10 -> { //prepTimeInMinute - if (tempCell.cellType != CellType.BLANK) { - val prepTimeInMinute = tempCell.stringCellValue.trim() - bomProcessRequest.apply { - this.prepTimeInMinute = extractDurationStringToMinutes(prepTimeInMinute) + when (tempCell.cellType) { + CellType.NUMERIC -> { + bomProcessRequest.apply { + this.prepTimeInMinute = tempCell.numericCellValue.toInt() + } } + CellType.STRING -> { + val prepTimeInMinuteString = tempCell.stringCellValue.trim() + bomProcessRequest.apply { + this.prepTimeInMinute = extractDurationStringToMinutes(prepTimeInMinuteString) + } + } + + else -> {} } } - 11 -> { //prepTimeInMinute - if (tempCell.cellType != CellType.BLANK) { - val prepTimeInMinute = tempCell.stringCellValue.trim() - bomProcessRequest.apply { - this.prepTimeInMinute = extractDurationStringToMinutes(prepTimeInMinute) + 11 -> { //postProdTimeInMinute + when (tempCell.cellType) { + CellType.NUMERIC -> { + bomProcessRequest.apply { + this.postProdTimeInMinute = tempCell.numericCellValue.toInt() + } + } + CellType.STRING -> { + val postProdTimeInMinuteString = tempCell.stringCellValue.trim() + bomProcessRequest.apply { + this.postProdTimeInMinute = extractDurationStringToMinutes(postProdTimeInMinuteString) + } } + + else -> {} } } } diff --git a/src/main/java/com/ffii/fpsms/modules/master/web/models/SaveBomRequest.kt b/src/main/java/com/ffii/fpsms/modules/master/web/models/SaveBomRequest.kt index d3dd23d..5bac98c 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/web/models/SaveBomRequest.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/web/models/SaveBomRequest.kt @@ -44,7 +44,8 @@ data class ImportBomMatRequest ( var item: Items? = null, var isConsumable: Boolean? = false, var qty: BigDecimal? = null, - var uomId: Long? = null, + var uom: UomConversion? = null, + var salesUnit: UomConversion? = null, var uomName: String? = null, var bom: Bom? = null, ) @@ -54,7 +55,7 @@ data class ImportBomProcessRequest( var description: String? = null, var equipment: Equipment? = null, var seqNo: Long? = null, - var duration: Int? = null, + var durationInMinute: Int? = null, var prepTimeInMinute: Int? = 0, var postProdTimeInMinute: Int? = 0, var bom: Bom? = null, diff --git a/src/main/resources/bomImport/006 PP1080 咖喱汁 Pings BOM Template v3.xlsx b/src/main/resources/bomImport/006 PP1080 咖喱汁 Pings BOM Template v3.xlsx index c0b6c45..81ef6d8 100644 Binary files a/src/main/resources/bomImport/006 PP1080 咖喱汁 Pings BOM Template v3.xlsx and b/src/main/resources/bomImport/006 PP1080 咖喱汁 Pings BOM Template v3.xlsx differ diff --git a/src/main/resources/bomImport/016 PP1133 豬骨粥(1位份量)(1磅包) Pings BOM Template v3.xlsx b/src/main/resources/bomImport/016 PP1133 豬骨粥(1位份量)(1磅包) Pings BOM Template v3.xlsx new file mode 100644 index 0000000..7da1618 Binary files /dev/null and b/src/main/resources/bomImport/016 PP1133 豬骨粥(1位份量)(1磅包) Pings BOM Template v3.xlsx differ diff --git a/src/main/resources/bomImport/017 PP1136 白粥 Pings BOM Template v3.xlsx b/src/main/resources/bomImport/017 PP1136 白粥 Pings BOM Template v3.xlsx new file mode 100644 index 0000000..8163b21 Binary files /dev/null and b/src/main/resources/bomImport/017 PP1136 白粥 Pings BOM Template v3.xlsx differ diff --git a/src/main/resources/bomImport/024 PP - PP1175_鮮檸檬汁 Pings BOM Template v3.xlsx b/src/main/resources/bomImport/024 PP - PP1175_鮮檸檬汁 Pings BOM Template v3.xlsx new file mode 100644 index 0000000..e4da16b Binary files /dev/null and b/src/main/resources/bomImport/024 PP - PP1175_鮮檸檬汁 Pings BOM Template v3.xlsx differ diff --git a/src/main/resources/bomImport/053 PP - PP2061 炒芝麻 Pings BOM Template.xlsx b/src/main/resources/bomImport/053 PP - PP2061 炒芝麻 Pings BOM Template.xlsx new file mode 100644 index 0000000..53bb64d Binary files /dev/null and b/src/main/resources/bomImport/053 PP - PP2061 炒芝麻 Pings BOM Template.xlsx differ diff --git a/src/main/resources/bomImport/054 PP2063 咖哩牛腩(2磅包) Pings BOM Template v3.xlsx b/src/main/resources/bomImport/054 PP2063 咖哩牛腩(2磅包) Pings BOM Template v3.xlsx new file mode 100644 index 0000000..fe8e65b Binary files /dev/null and b/src/main/resources/bomImport/054 PP2063 咖哩牛腩(2磅包) Pings BOM Template v3.xlsx differ diff --git a/src/main/resources/bomImport/058 PP2088淨牛腩粒(2磅包) Pings BOM Template v3.xlsx b/src/main/resources/bomImport/058 PP2088淨牛腩粒(2磅包) Pings BOM Template v3.xlsx new file mode 100644 index 0000000..ca71c2d Binary files /dev/null and b/src/main/resources/bomImport/058 PP2088淨牛腩粒(2磅包) Pings BOM Template v3.xlsx differ diff --git a/src/main/resources/bomImport/200 PP - PP1193 蔥油(1磅) Pings BOM Template.xlsx b/src/main/resources/bomImport/200 PP - PP1193 蔥油(1磅) Pings BOM Template.xlsx index dbb11f3..6ee914c 100644 Binary files a/src/main/resources/bomImport/200 PP - PP1193 蔥油(1磅) Pings BOM Template.xlsx and b/src/main/resources/bomImport/200 PP - PP1193 蔥油(1磅) Pings BOM Template.xlsx differ diff --git a/src/main/resources/bomImport/201 PP - PP1188 咖喱膽 Pings BOM Template.xlsx b/src/main/resources/bomImport/201 PP - PP1188 咖喱膽 Pings BOM Template.xlsx index 4c6c12c..d38a19c 100644 Binary files a/src/main/resources/bomImport/201 PP - PP1188 咖喱膽 Pings BOM Template.xlsx and b/src/main/resources/bomImport/201 PP - PP1188 咖喱膽 Pings BOM Template.xlsx differ diff --git a/src/main/resources/bomImport/202 PP - PP1096 白麵撈(1磅) Pings BOM Template.xlsx b/src/main/resources/bomImport/202 PP - PP1096 白麵撈(1磅) Pings BOM Template.xlsx index 346a337..4b1d7d1 100644 Binary files a/src/main/resources/bomImport/202 PP - PP1096 白麵撈(1磅) Pings BOM Template.xlsx and b/src/main/resources/bomImport/202 PP - PP1096 白麵撈(1磅) Pings BOM Template.xlsx differ diff --git a/src/main/resources/bomImport/205 PP2257 咖哩汁箱料粉 Pings BOM Template v3.xlsx b/src/main/resources/bomImport/205 PP2257 咖哩汁箱料粉 Pings BOM Template v3.xlsx new file mode 100644 index 0000000..8b08b24 Binary files /dev/null and b/src/main/resources/bomImport/205 PP2257 咖哩汁箱料粉 Pings BOM Template v3.xlsx differ diff --git a/src/main/resources/bomImport/206 PP2258 豬骨粥箱料粉 Pings BOM Template v3.xlsx b/src/main/resources/bomImport/206 PP2258 豬骨粥箱料粉 Pings BOM Template v3.xlsx new file mode 100644 index 0000000..fcc2a1d Binary files /dev/null and b/src/main/resources/bomImport/206 PP2258 豬骨粥箱料粉 Pings BOM Template v3.xlsx differ diff --git a/src/main/resources/bomImport/207 PP2259 白粥箱料粉 Pings BOM Template v3.xlsx b/src/main/resources/bomImport/207 PP2259 白粥箱料粉 Pings BOM Template v3.xlsx new file mode 100644 index 0000000..a797574 Binary files /dev/null and b/src/main/resources/bomImport/207 PP2259 白粥箱料粉 Pings BOM Template v3.xlsx differ diff --git a/src/main/resources/bomImport/208 PP2256 瑤柱碎 Pings BOM Template v3.xlsx b/src/main/resources/bomImport/208 PP2256 瑤柱碎 Pings BOM Template v3.xlsx new file mode 100644 index 0000000..06c00e5 Binary files /dev/null and b/src/main/resources/bomImport/208 PP2256 瑤柱碎 Pings BOM Template v3.xlsx differ diff --git a/src/main/resources/bomImport/40 PP1224 柚子蒜蓉汁 Pings BOM Template.xlsx b/src/main/resources/bomImport/40 PP1224 柚子蒜蓉汁 Pings BOM Template.xlsx new file mode 100644 index 0000000..28bc19c Binary files /dev/null and b/src/main/resources/bomImport/40 PP1224 柚子蒜蓉汁 Pings BOM Template.xlsx differ diff --git a/src/main/resources/bomImport/801 PP1080 咖哩汁箱料粉 Pings BOM Template v3.xlsx b/src/main/resources/bomImport/801 PP1080 咖哩汁箱料粉 Pings BOM Template v3.xlsx deleted file mode 100644 index 0be0bd2..0000000 Binary files a/src/main/resources/bomImport/801 PP1080 咖哩汁箱料粉 Pings BOM Template v3.xlsx and /dev/null differ diff --git a/src/main/resources/db/changelog/changes/20250612_01_derek/06_update_bom_process_duration_to_durationinMinute.sql b/src/main/resources/db/changelog/changes/20250612_01_derek/06_update_bom_process_duration_to_durationinMinute.sql new file mode 100644 index 0000000..2337ac3 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250612_01_derek/06_update_bom_process_duration_to_durationinMinute.sql @@ -0,0 +1,4 @@ +-- liquibase formatted sql +-- changeset derek:update_bom_process_duration_to_durationInMinute +ALTER TABLE `bom_process` +CHANGE COLUMN `duration` `durationInMinute` INT(11) NULL DEFAULT 0; \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20250612_01_derek/07_update_bom_material_add_salesUnit_id_code.sql b/src/main/resources/db/changelog/changes/20250612_01_derek/07_update_bom_material_add_salesUnit_id_code.sql new file mode 100644 index 0000000..089caf5 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250612_01_derek/07_update_bom_material_add_salesUnit_id_code.sql @@ -0,0 +1,5 @@ +-- liquibase formatted sql +-- changeset derek:update_bom_material_add_salesUnit_id_code +ALTER TABLE `bom_material` +ADD COLUMN `salesUnitId` INT(11) AFTER `uomName`, +ADD COLUMN `salesUnitCode` INT(11) AFTER `salesUnitId`; \ No newline at end of file diff --git a/src/main/resources/db/changelog/changes/20250612_01_derek/08_bug_fix_last_one.sql b/src/main/resources/db/changelog/changes/20250612_01_derek/08_bug_fix_last_one.sql new file mode 100644 index 0000000..3e8ec04 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250612_01_derek/08_bug_fix_last_one.sql @@ -0,0 +1,4 @@ +-- liquibase formatted sql +-- changeset derek:update_bom_material_add_salesUnit_id_code +ALTER TABLE `bom_material` +MODIFY COLUMN `salesUnitCode` VARCHAR(255) NULL; \ No newline at end of file