From eb067840aa7627c9f3bd944cb6eb6e47e57d677c Mon Sep 17 00:00:00 2001 From: "cyril.tsui" Date: Thu, 18 Sep 2025 16:15:47 +0800 Subject: [PATCH] update for stock in line & uom table. update m18 import --- .../fpsms/m18/service/M18MasterDataService.kt | 32 ++++++++++++------- .../modules/master/entity/UomConversion.kt | 3 ++ .../master/service/UomConversionService.kt | 26 ++++++++------- .../01_update_stock_in_line.sql | 16 ++++++++++ .../20250916_01_cyril/01_update_uom.sql | 5 +++ 5 files changed, 60 insertions(+), 22 deletions(-) create mode 100644 src/main/resources/db/changelog/changes/20250915_01_cyril/01_update_stock_in_line.sql create mode 100644 src/main/resources/db/changelog/changes/20250916_01_cyril/01_update_uom.sql diff --git a/src/main/java/com/ffii/fpsms/m18/service/M18MasterDataService.kt b/src/main/java/com/ffii/fpsms/m18/service/M18MasterDataService.kt index 3d805ce..c0110ec 100644 --- a/src/main/java/com/ffii/fpsms/m18/service/M18MasterDataService.kt +++ b/src/main/java/com/ffii/fpsms/m18/service/M18MasterDataService.kt @@ -444,22 +444,32 @@ open class M18MasterDataService( val finalUnitList = arrayListOf() // transform unit - values.forEach { unit -> + values.forEach { value -> try { - val tempObject = UomConversionService.BomObject().apply { - code = unit.code - udfudesc = unit.udfudesc - lastModifyDate = unit.lastModifyDate - id = unit.id + val unitDetail = getUnit(value.id) + + if (unitDetail != null && unitDetail.data?.unit != null) { + val unit = unitDetail.data.unit[0] + val tempObject = UomConversionService.BomObject().apply { + code = unit.code + udfudesc = unit.udfudesc + udfShortDesc = unit.udfShortDesc + lastModifyDate = commonUtils.timestampToLocalDateTime(unit.lastModifyDate).format(formatter) + id = unit.id + } + finalUnitList += uomConversionService.transformItem(tempObject) + successTransformList += unit.id + logger.info("Transform Success (M18): ${unit.id}") + } else { + failTransformList.add(value.id) + logger.error("Fail Message: ${unitDetail?.messages?.get(0)?.msgDetail}") + logger.error("Fail Count ${failTransformList.size}: Unit ID - ${value.id} Not Found") } - finalUnitList += uomConversionService.transformItem(tempObject) - successTransformList += unit.id - logger.info("Transform Success (M18): ${unit.id}") } catch (e: Exception) { - failTransformList.add(unit.id) + failTransformList.add(value.id) logger.error("Transform Exception") logger.error("Transform Fail Message: ${e.message}") - logger.error("Transform Fail Count ${failTransformList.size}: Unit ID - ${unit.id}") + logger.error("Transform Fail Count ${failTransformList.size}: Unit ID - ${value.id}") } } diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/UomConversion.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/UomConversion.kt index 6f144c2..43ed6b9 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/entity/UomConversion.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/UomConversion.kt @@ -18,6 +18,9 @@ open class UomConversion : BaseEntity() { @Column(name = "udfudesc") open var udfudesc: String? = null + @Column(name = "udfShortDesc") + open var udfShortDesc: String? = null + @Column(name = "unit1") open var unit1: String? = null diff --git a/src/main/java/com/ffii/fpsms/modules/master/service/UomConversionService.kt b/src/main/java/com/ffii/fpsms/modules/master/service/UomConversionService.kt index cda702a..3b85272 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/service/UomConversionService.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/service/UomConversionService.kt @@ -69,6 +69,7 @@ open class UomConversionService( class BomObject { var code: String? = null var udfudesc: String? = null + var udfShortDesc: String? = null var lastModifyDate: String? = null var id: Long? = null } @@ -78,6 +79,7 @@ open class UomConversionService( //Convert m18 bom reocrd to MTMS db structure record val code = if (item.code == null) "N/A" else item.code val udfudesc = item.udfudesc + val udfShortDesc = item.udfShortDesc val id = item.id val lastModifyDate = parseDate(item.lastModifyDate) // Initialize quantities and units @@ -116,6 +118,7 @@ open class UomConversionService( val transformedItem = UomConversion() transformedItem.code = code transformedItem.udfudesc = udfudesc + transformedItem.udfShortDesc = udfShortDesc transformedItem.unit1 = unit1 transformedItem.unit1Qty = unit1Qty transformedItem.unit2 = unit2 @@ -209,17 +212,17 @@ open class UomConversionService( @Throws(IOException::class) @Transactional open fun saveUomConversion(newUomConversion: UomConversion): MessageResponse { - val duplicatedItem = uomConversionRepository.findByLastModifyDateAndM18IdAndDeletedFalse(newUomConversion.lastModifyDate, newUomConversion.m18Id) - if (duplicatedItem != null && duplicatedItem.id != newUomConversion.id) { - return MessageResponse( - id = newUomConversion.id, - code = newUomConversion.code, - name = newUomConversion.udfudesc, - type = "UOM update to date", - message = "BOM with M18Id = ${duplicatedItem.m18Id} is already up to date", - errorPosition = "code" - ) - } +// val duplicatedItem = uomConversionRepository.findByLastModifyDateAndM18IdAndDeletedFalse(newUomConversion.lastModifyDate, newUomConversion.m18Id) +// if (duplicatedItem != null && duplicatedItem.id != newUomConversion.id) { +// return MessageResponse( +// id = newUomConversion.id, +// code = newUomConversion.code, +// name = newUomConversion.udfudesc, +// type = "UOM update to date", +// message = "BOM with M18Id = ${duplicatedItem.m18Id} is already up to date", +// errorPosition = "code" +// ) +// } val uomConversion = findByM18Id(newUomConversion.m18Id) ?: if (newUomConversion.id != null && newUomConversion.id > 0) @@ -242,6 +245,7 @@ open class UomConversionService( m18Id = newUomConversion.m18Id code = newUomConversion.code udfudesc = newUomConversion.udfudesc + udfShortDesc = newUomConversion.udfShortDesc unit1 = newUomConversion.unit1 unit1Qty = newUomConversion.unit1Qty unit2 = newUomConversion.unit2 diff --git a/src/main/resources/db/changelog/changes/20250915_01_cyril/01_update_stock_in_line.sql b/src/main/resources/db/changelog/changes/20250915_01_cyril/01_update_stock_in_line.sql new file mode 100644 index 0000000..859dd68 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250915_01_cyril/01_update_stock_in_line.sql @@ -0,0 +1,16 @@ +-- liquibase formatted sql +-- changeset cyril:update_stock_in_line + +ALTER TABLE `stock_in_line` + DROP FOREIGN KEY `FK_STOCK_IN_LINE_PURCHASE_ORDER_LINE_ON_PURCHASEORDERLINEID`, + DROP FOREIGN KEY `FK_STOCK_IN_LINE_TO_PURCHASE_ORDER_ON_PURCHASE_ORDER_ID`; +ALTER TABLE `stock_in_line` + CHANGE COLUMN `purchaseOrderId` `purchaseOrderId` INT NULL , + CHANGE COLUMN `purchaseOrderLineId` `purchaseOrderLineId` INT NULL ; +ALTER TABLE `stock_in_line` + ADD CONSTRAINT `FK_STOCK_IN_LINE_PURCHASE_ORDER_LINE_ON_PURCHASEORDERLINEID` + FOREIGN KEY (`purchaseOrderLineId`) + REFERENCES `purchase_order_line` (`id`), + ADD CONSTRAINT `FK_STOCK_IN_LINE_TO_PURCHASE_ORDER_ON_PURCHASE_ORDER_ID` + FOREIGN KEY (`purchaseOrderId`) + REFERENCES `purchase_order` (`id`); diff --git a/src/main/resources/db/changelog/changes/20250916_01_cyril/01_update_uom.sql b/src/main/resources/db/changelog/changes/20250916_01_cyril/01_update_uom.sql new file mode 100644 index 0000000..76b9b13 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20250916_01_cyril/01_update_uom.sql @@ -0,0 +1,5 @@ +-- liquibase formatted sql +-- changeset cyril:update_uom + +ALTER TABLE `uom_conversion` + ADD COLUMN `udfShortDesc` VARCHAR(50) NULL DEFAULT NULL AFTER `udfudesc`;