From d73dd95e28262ed31828c9b0368fd912abf40612 Mon Sep 17 00:00:00 2001 From: "Tommy\\2Fi-Staff" Date: Mon, 12 Jan 2026 21:11:56 +0800 Subject: [PATCH] Add delete item --- .../modules/master/service/ItemsService.kt | 28 +++++++++++++++++++ .../modules/master/web/ItemsController.kt | 5 ++++ 2 files changed, 33 insertions(+) diff --git a/src/main/java/com/ffii/fpsms/modules/master/service/ItemsService.kt b/src/main/java/com/ffii/fpsms/modules/master/service/ItemsService.kt index cd5e335..337c6c9 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/service/ItemsService.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/service/ItemsService.kt @@ -45,6 +45,8 @@ import com.ffii.fpsms.modules.stock.service.StockInLineService import com.ffii.fpsms.modules.stock.web.model.SaveStockInLineRequest import com.ffii.fpsms.modules.stock.web.model.StockInLineStatus import com.ffii.fpsms.modules.stock.web.model.SaveInventoryLotLineForSil +import com.ffii.fpsms.modules.bag.entity.Bag +import com.ffii.fpsms.modules.bag.entity.BagRepository @Service open class ItemsService( @@ -63,6 +65,7 @@ open class ItemsService( private val stockInLineRepository: StockInLineRepository, private val inventoryLotLineRepository: InventoryLotLineRepository, private val inventoryLotRepository: InventoryLotRepository, + private val bagRepository: BagRepository, ): AbstractBaseEntityService(jdbcDao, itemsRepository) { private val excelImportPath: String = System.getProperty("user.home") + "/Downloads/StockTakeImport/" @@ -439,6 +442,13 @@ open class ItemsService( return itemsRepository.findByM18BomCode(m18BomCode); } + open fun markDeleted(id: Long): Items { + val item = itemsRepository.findById(id).orElseThrow().apply { + deleted = true + } + return itemsRepository.save(item) + } + // QcCheck included item open fun getItem(id: Long): ItemWithQcResponse { val list = listOf(1, 2) @@ -527,6 +537,24 @@ open class ItemsService( logger.info("saving item: $item") val savedItem = itemsRepository.saveAndFlush(item) logger.info("save success") + + // Create Bag record if isBag is true + if (savedItem.isBag == true && savedItem.id != null) { + val existingBag = bagRepository.findByItemIdAndDeletedIsFalse(savedItem.id!!) + if (existingBag == null) { + val bag = Bag().apply { + itemId = savedItem.id + itemCode = savedItem.code + itemName = savedItem.name + takenBagBalance = 0 + } + bagRepository.save(bag) + logger.info("Created bag record for item: ${savedItem.code} (ID: ${savedItem.id})") + } else { + logger.info("Bag record already exists for item: ${savedItem.code} (ID: ${savedItem.id})") + } + } + return MessageResponse( id = savedItem.id, name = savedItem.name, diff --git a/src/main/java/com/ffii/fpsms/modules/master/web/ItemsController.kt b/src/main/java/com/ffii/fpsms/modules/master/web/ItemsController.kt index 6c2d556..4ffeb2c 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/web/ItemsController.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/web/ItemsController.kt @@ -110,6 +110,11 @@ class ItemsController( return itemsService.saveItem(newItem) } + @DeleteMapping("/{id}") + fun deleteItem(@PathVariable id: Long): Items { + return itemsService.markDeleted(id) + } + @GetMapping("/itemsWithDetails") fun getItemsWithDetailsByPage(request: HttpServletRequest): RecordsRes> { val criteriaArgs = CriteriaArgsBuilder.withRequest(request)