diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/Bom.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/Bom.kt index c9ba0dd..0cd38cf 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/entity/Bom.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/Bom.kt @@ -21,6 +21,10 @@ open class Bom : BaseEntity() { @Column open var isDense: Int? = null + @Column + open var scrapRate: Int? = null + @Column + open var allergicSubstances: Int? = null @JsonBackReference @OneToOne 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 e4f65f1..bb2ae96 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 @@ -96,6 +96,8 @@ open class BomService( this.isFloat = req.isFloat this.isDense = req.isDense this.code = req.code + this.scrapRate = req.scrapRate + this.allergicSubstances = req.allergicSubstances this.name = req.name this.description = req.description this.item = item @@ -286,13 +288,31 @@ open class BomService( } return score } + + fun calculateAllergicSubstancesScore(value: String): Int { + var score = -1 + when (value) { + "N/A" -> score = 0 + "0" -> score = 0 + "Yes" -> score = 5 + "1" -> score = 5 + " " -> score = 0 + "" -> score = 0 + } + return score + } val leftTargetValueRow = sheet.getRow(startRowIndex) val leftTargetValueCell = leftTargetValueRow.getCell(startColumnIndex + 1) when { tempCellVal.contains("深淺") -> request.isDark = calculateColourScore(leftTargetValueCell.stringCellValue.trim()) tempCellVal.contains("浮沉") -> request.isFloat = calculateFloatScore(leftTargetValueCell.stringCellValue.trim()) + tempCellVal.contains("過敏原 (如有)") -> request.allergicSubstances = calculateAllergicSubstancesScore(leftTargetValueCell.stringCellValue.trim()) tempCellVal.contains("濃淡") -> request.isDense = if (leftTargetValueCell.cellType == CellType.NUMERIC) leftTargetValueCell.numericCellValue.toInt() + else 0 + tempCellVal.contains("損耗率") -> request.scrapRate = if (leftTargetValueCell.cellType == CellType.NUMERIC) + + leftTargetValueCell.numericCellValue.toInt() else 0 } } @@ -492,7 +512,8 @@ open class BomService( // val folder = File(folderPath) val resolver = PathMatchingResourcePatternResolver() // val excels = resolver.getResources("bomImport/*.xlsx") - val excels = resolver.getResources("file:C:/Users/Kelvin YAU/Downloads/bom/*.xlsx") + //val excels = resolver.getResources("file:C:/Users/Kelvin YAU/Downloads/bom/*.xlsx") + val excels = resolver.getResources("file:C:/Users/kw093/Downloads/bom/*.xlsx") // val excels = resolver.getResources("file:C:/Users/2Fi/Desktop/Third Wave of BOM Excel/*.xlsx") println("size: ${excels.size}") val logExcel = ClassPathResource("excelTemplate/bom_excel_issue_log.xlsx") 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 70979d9..e6f09bf 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 @@ -30,6 +30,8 @@ data class ImportBomRequest ( @field:NotBlank(message = "bom description cannot be empty") var description: String, var itemId: Long? = null, + var scrapRate: Int? = null, + var allergicSubstances: Int? = null, var outputQty: BigDecimal? = null, var outputQtyUom: String? = null, var yield: BigDecimal? = null, diff --git a/src/main/java/com/ffii/fpsms/modules/productProcess/entity/ProductProcessLine.kt b/src/main/java/com/ffii/fpsms/modules/productProcess/entity/ProductProcessLine.kt index 127f108..500efa3 100644 --- a/src/main/java/com/ffii/fpsms/modules/productProcess/entity/ProductProcessLine.kt +++ b/src/main/java/com/ffii/fpsms/modules/productProcess/entity/ProductProcessLine.kt @@ -66,6 +66,27 @@ open class ProductProcessLine : BaseEntity() { @Column(name = "defectUom", length = 20) open var defectUom: String? = null + @Column(name = "defectDescription", length = 255) + open var defectDescription: String? = null + + @Column(name = "defectQty2", precision = 16, scale = 2) + open var defectQty2: Int? = null + + @Column(name = "defectRemark2", length = 255) + open var defectRemark2: String? = null + + @Column(name = "defectUom2", length = 20) + open var defectUom2: String? = null + + @Column(name = "defectQty3", precision = 16, scale = 2) + open var defectQty3: Int? = null + + @Column(name = "defectUom3", length = 20) + open var defectUom3: String? = null + + @Column(name = "defectDescription3", length = 255) + open var defectDescription3: String? = null + @Column(name = "outputFromProcessQty", precision = 16, scale = 2) open var outputFromProcessQty: Int? = null diff --git a/src/main/resources/db/changelog/changes/20251125_01_enson/03_altertable_enson.sql b/src/main/resources/db/changelog/changes/20251125_01_enson/03_altertable_enson.sql new file mode 100644 index 0000000..ee3b6a9 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20251125_01_enson/03_altertable_enson.sql @@ -0,0 +1,8 @@ +-- liquibase formatted sql +-- changeset enson:altertable_enson + +ALTER TABLE `fpsmsdb`.`bom` + DROP COLUMN `ScrapRate`, + DROP COLUMN `AllergicSubstance`, + ADD COLUMN `scrapRate` INT AFTER `isDense`, + ADD COLUMN `allergicSubstances` INT AFTER `scrapRate`; \ No newline at end of file