|
|
|
@@ -1,22 +1,29 @@ |
|
|
|
package com.ffii.fpsms.modules.master.service |
|
|
|
|
|
|
|
import com.ffii.fpsms.m18.model.M18BomShopBatchSyncSummary |
|
|
|
import com.ffii.fpsms.modules.common.SettingNames |
|
|
|
import com.ffii.fpsms.modules.master.entity.BomRepository |
|
|
|
import com.ffii.fpsms.modules.settings.entity.Settings |
|
|
|
import com.ffii.fpsms.modules.settings.service.SettingsService |
|
|
|
import org.springframework.stereotype.Service |
|
|
|
|
|
|
|
/** |
|
|
|
* Calls [BomService.pushBomToM18ShopIfAllowed] for each BOM id via the injected proxied bean |
|
|
|
* so `@Transactional` applies per BOM (avoids same-class self-invocation). |
|
|
|
* |
|
|
|
* BOM shop toggle is read via [settingsService] here (not [BomService]) so callers never hit Kotlin |
|
|
|
* `internal` accessors on [BomService] CGLIB proxies, which could leave delegated dependencies null. |
|
|
|
*/ |
|
|
|
@Service |
|
|
|
open class BomM18ShopBulkPushService( |
|
|
|
private val bomRepository: BomRepository, |
|
|
|
private val bomService: BomService, |
|
|
|
private val settingsService: SettingsService, |
|
|
|
) { |
|
|
|
|
|
|
|
/** Pushes all non-deleted BOMs to M18 when {@link BomService}'s BOM shop sync setting is enabled. */ |
|
|
|
/** Pushes all non-deleted BOMs to M18 when {@link SettingNames#M18_BOM_SHOP_SYNC_ENABLED} is true. */ |
|
|
|
open fun pushAllBomsToM18ShopIfAllowed(): M18BomShopBatchSyncSummary { |
|
|
|
if (!bomService.isM18BomShopSyncEnabled()) { |
|
|
|
if (!isM18BomShopSyncEnabledSetting()) { |
|
|
|
return M18BomShopBatchSyncSummary( |
|
|
|
totalProcessed = 0, |
|
|
|
synced = 0, |
|
|
|
@@ -38,4 +45,9 @@ open class BomM18ShopBulkPushService( |
|
|
|
skippedBecauseFeatureDisabled = false, |
|
|
|
) |
|
|
|
} |
|
|
|
|
|
|
|
private fun isM18BomShopSyncEnabledSetting(): Boolean = |
|
|
|
settingsService.findByName(SettingNames.M18_BOM_SHOP_SYNC_ENABLED) |
|
|
|
.map { Settings.VALUE_BOOLEAN_TRUE == it.value } |
|
|
|
.orElse(false) |
|
|
|
} |