瀏覽代碼

Merge remote-tracking branch 'origin/master'

master
CANCERYS\kw093 6 天之前
父節點
當前提交
fa5aa71759
共有 4 個檔案被更改,包括 27 行新增7 行删除
  1. +1
    -0
      src/main/java/com/ffii/fpsms/m18/model/M18MasterDataResponse.kt
  2. +10
    -2
      src/main/java/com/ffii/fpsms/m18/service/M18MasterDataService.kt
  3. +1
    -0
      src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt
  4. +15
    -5
      src/main/java/com/ffii/fpsms/modules/master/service/ItemUomService.kt

+ 1
- 0
src/main/java/com/ffii/fpsms/m18/model/M18MasterDataResponse.kt 查看文件

@@ -35,6 +35,7 @@ data class M18ProductPrice (
val purUnit: Boolean,
val pickUnit: Boolean,
val expired: Boolean,
val endDate: Long,
val ratioN: BigDecimal,
val ratioD: BigDecimal,
)


+ 10
- 2
src/main/java/com/ffii/fpsms/m18/service/M18MasterDataService.kt 查看文件

@@ -17,6 +17,9 @@ import java.math.BigDecimal
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import com.ffii.fpsms.m18.model.SyncResult
import java.time.Instant
import java.time.LocalDate
import java.time.ZoneId

@Service
open class M18MasterDataService(
@@ -279,7 +282,7 @@ open class M18MasterDataService(
isEgg = null,
isFee = null,
isBag = null,
qcType = null,
qcType = null
)

val savedItem = itemsService.saveItem(saveItemRequest)
@@ -298,6 +301,10 @@ open class M18MasterDataService(
// Update the item uom
logger.info("Updating item uom...")
price?.forEach {
val endMillis = it.endDate
val endInstant = Instant.ofEpochMilli(endMillis)
val now = Instant.now()

val itemUomRequest = ItemUomRequest(
m18UomId = it.unitId,
itemId = savedItem.id,
@@ -312,7 +319,8 @@ open class M18MasterDataService(
m18LastModifyDate = commonUtils.timestampToLocalDateTime(pro.lastModifyDate),
ratioD = it.ratioD,
ratioN = it.ratioN,
deleted = it.expired
//deleted = it.expired
deleted = endInstant.isBefore(now)
)

// logger.info("saved item id: ${savedItem.id}")


+ 1
- 0
src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt 查看文件

@@ -26,4 +26,5 @@ interface ItemUomRespository : AbstractRepository<ItemUom, Long> {
fun findByItemM18IdAndPurchaseUnitIsTrueAndDeletedIsFalse(itemM18Id: Long): ItemUom?
fun findBaseUnitByItemIdAndStockUnitIsTrueAndDeletedIsFalse(itemId: Long): ItemUom?
fun findFirstByItemIdAndUomIdAndDeletedIsFalse(itemId: Long, uomId: Long): ItemUom?
fun findByItemIdAndUomIdAndStockUnitAndDeletedIsFalse(itemId: Long, uomId: Long, stockUnit: Boolean): ItemUom?
}

+ 15
- 5
src/main/java/com/ffii/fpsms/modules/master/service/ItemUomService.kt 查看文件

@@ -9,6 +9,8 @@ import java.io.IOException
import java.math.BigDecimal
import java.math.RoundingMode
import kotlin.jvm.optionals.getOrNull
import org.slf4j.Logger
import org.slf4j.LoggerFactory

@Service
open class ItemUomService(
@@ -17,6 +19,8 @@ open class ItemUomService(
val itemUomRespository: ItemUomRespository,
val currencyService: CurrencyService
) {
val logger = org.slf4j.LoggerFactory.getLogger(this::class.java)

open fun findAllByItemsId(itemId: Long): List<ItemUom> {
return itemUomRespository.findAllByItemIdAndDeletedIsFalse(itemId);
}
@@ -44,6 +48,10 @@ open class ItemUomService(
return itemUomRespository.findFirstByItemIdAndUomIdAndDeletedIsFalse(itemId, uomId)
}

open fun findByItemIdAndUomIdAndStockUnit(itemId: Long, uomId: Long, stockUnit: Boolean): ItemUom? {
return itemUomRespository.findByItemIdAndUomIdAndStockUnitAndDeletedIsFalse(itemId, uomId, stockUnit)
}

open fun findPurchaseUnitByM18ItemId(m18ItemId: Long): ItemUom? {
return itemUomRespository.findByItemM18IdAndPurchaseUnitIsTrueAndDeletedIsFalse(m18ItemId)
}
@@ -79,7 +87,7 @@ open class ItemUomService(
}

open fun convertQtyToStockQty(itemId: Long, uomId: Long, sourceQty: BigDecimal): BigDecimal {
val itemUom = findFirstByItemIdAndUomId(itemId, uomId)
val itemUom = findFirstByItemIdAndUomId(itemId, uomId) ?: return sourceQty;

val stockUnit = findStockUnitByItemId(itemId) ?: return BigDecimal.ZERO;
val one = BigDecimal.ONE;
@@ -93,9 +101,11 @@ open class ItemUomService(
// See if need to update the response
open fun saveItemUom(request: ItemUomRequest): ItemUom {
val itemUom = request.m18Id?.let { findByM18Id(it) } ?: request.id?.let { findById(it) } ?: ItemUom()
if (request.m18LastModifyDate == itemUom.m18LastModifyDate) {
return itemUom
}

//if (request.m18LastModifyDate == itemUom.m18LastModifyDate) {
// logger.info("Skipping update - m18LastModifyDate unchanged")
// return itemUom
//}

val item = request.itemId?.let { itemsService.find(it).getOrNull() }
val uom = request.m18UomId?.let { uomConversionService.findByM18Id(it) } ?: request.uomId?.let { uomConversionService.find(it).getOrNull() }
@@ -115,7 +125,7 @@ open class ItemUomService(
m18LastModifyDate = request.m18LastModifyDate
ratioD = request.ratioD
ratioN = request.ratioN
deleted = request.deleted
deleted = request.deleted // ← EXPLICIT assignment (same as before)
}

val savedItemUom = itemUomRespository.saveAndFlush(itemUom)


Loading…
取消
儲存