Quellcode durchsuchen

update bom

production_process
MSI\derek vor 2 Monaten
Ursprung
Commit
19ade5b9b9
23 geänderte Dateien mit 86 neuen und 25 gelöschten Zeilen
  1. +7
    -0
      src/main/java/com/ffii/fpsms/modules/master/entity/BomMaterial.kt
  2. +2
    -2
      src/main/java/com/ffii/fpsms/modules/master/entity/BomProcess.kt
  3. +61
    -21
      src/main/java/com/ffii/fpsms/modules/master/service/BomService.kt
  4. +3
    -2
      src/main/java/com/ffii/fpsms/modules/master/web/models/SaveBomRequest.kt
  5. BIN
      src/main/resources/bomImport/006 PP1080 咖喱汁 Pings BOM Template v3.xlsx
  6. BIN
      src/main/resources/bomImport/016 PP1133 豬骨粥(1位份量)(1磅包) Pings BOM Template v3.xlsx
  7. BIN
      src/main/resources/bomImport/017 PP1136 白粥 Pings BOM Template v3.xlsx
  8. BIN
      src/main/resources/bomImport/024 PP - PP1175_鮮檸檬汁 Pings BOM Template v3.xlsx
  9. BIN
      src/main/resources/bomImport/053 PP - PP2061 炒芝麻 Pings BOM Template.xlsx
  10. BIN
      src/main/resources/bomImport/054 PP2063 咖哩牛腩(2磅包) Pings BOM Template v3.xlsx
  11. BIN
      src/main/resources/bomImport/058 PP2088淨牛腩粒(2磅包) Pings BOM Template v3.xlsx
  12. BIN
      src/main/resources/bomImport/200 PP - PP1193 蔥油(1磅) Pings BOM Template.xlsx
  13. BIN
      src/main/resources/bomImport/201 PP - PP1188 咖喱膽 Pings BOM Template.xlsx
  14. BIN
      src/main/resources/bomImport/202 PP - PP1096 白麵撈(1磅) Pings BOM Template.xlsx
  15. BIN
      src/main/resources/bomImport/205 PP2257 咖哩汁箱料粉 Pings BOM Template v3.xlsx
  16. BIN
      src/main/resources/bomImport/206 PP2258 豬骨粥箱料粉 Pings BOM Template v3.xlsx
  17. BIN
      src/main/resources/bomImport/207 PP2259 白粥箱料粉 Pings BOM Template v3.xlsx
  18. BIN
      src/main/resources/bomImport/208 PP2256 瑤柱碎 Pings BOM Template v3.xlsx
  19. BIN
      src/main/resources/bomImport/40 PP1224 柚子蒜蓉汁 Pings BOM Template.xlsx
  20. BIN
      src/main/resources/bomImport/801 PP1080 咖哩汁箱料粉 Pings BOM Template v3.xlsx
  21. +4
    -0
      src/main/resources/db/changelog/changes/20250612_01_derek/06_update_bom_process_duration_to_durationinMinute.sql
  22. +5
    -0
      src/main/resources/db/changelog/changes/20250612_01_derek/07_update_bom_material_add_salesUnit_id_code.sql
  23. +4
    -0
      src/main/resources/db/changelog/changes/20250612_01_derek/08_bug_fix_last_one.sql

+ 7
- 0
src/main/java/com/ffii/fpsms/modules/master/entity/BomMaterial.kt Datei anzeigen

@@ -36,6 +36,13 @@ open class BomMaterial : BaseEntity<Long>() {
@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)


+ 2
- 2
src/main/java/com/ffii/fpsms/modules/master/entity/BomProcess.kt Datei anzeigen

@@ -31,8 +31,8 @@ open class BomProcess : BaseEntity<Long>() {
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


+ 61
- 21
src/main/java/com/ffii/fpsms/modules/master/service/BomService.kt Datei anzeigen

@@ -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 -> {}
}
}
}


+ 3
- 2
src/main/java/com/ffii/fpsms/modules/master/web/models/SaveBomRequest.kt Datei anzeigen

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


BIN
src/main/resources/bomImport/006 PP1080 咖喱汁 Pings BOM Template v3.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/016 PP1133 豬骨粥(1位份量)(1磅包) Pings BOM Template v3.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/017 PP1136 白粥 Pings BOM Template v3.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/024 PP - PP1175_鮮檸檬汁 Pings BOM Template v3.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/053 PP - PP2061 炒芝麻 Pings BOM Template.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/054 PP2063 咖哩牛腩(2磅包) Pings BOM Template v3.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/058 PP2088淨牛腩粒(2磅包) Pings BOM Template v3.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/200 PP - PP1193 蔥油(1磅) Pings BOM Template.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/201 PP - PP1188 咖喱膽 Pings BOM Template.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/202 PP - PP1096 白麵撈(1磅) Pings BOM Template.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/205 PP2257 咖哩汁箱料粉 Pings BOM Template v3.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/206 PP2258 豬骨粥箱料粉 Pings BOM Template v3.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/207 PP2259 白粥箱料粉 Pings BOM Template v3.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/208 PP2256 瑤柱碎 Pings BOM Template v3.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/40 PP1224 柚子蒜蓉汁 Pings BOM Template.xlsx Datei anzeigen


BIN
src/main/resources/bomImport/801 PP1080 咖哩汁箱料粉 Pings BOM Template v3.xlsx Datei anzeigen


+ 4
- 0
src/main/resources/db/changelog/changes/20250612_01_derek/06_update_bom_process_duration_to_durationinMinute.sql Datei anzeigen

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

+ 5
- 0
src/main/resources/db/changelog/changes/20250612_01_derek/07_update_bom_material_add_salesUnit_id_code.sql Datei anzeigen

@@ -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`;

+ 4
- 0
src/main/resources/db/changelog/changes/20250612_01_derek/08_bug_fix_last_one.sql Datei anzeigen

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

Laden…
Abbrechen
Speichern