From 7dff456b1b61c712873c21417dc4fd5bef8258eb Mon Sep 17 00:00:00 2001 From: "cyril.tsui" Date: Wed, 11 Jun 2025 18:16:19 +0800 Subject: [PATCH] test m18 api --- .../fpsms/m18/service/M18MasterDataService.kt | 69 ++++++++++++------- .../m18/service/M18PurchaseOrderService.kt | 2 +- .../service/M18PurchaseQuotationService.kt | 26 ++++--- .../com/ffii/fpsms/m18/utils/CommonUtils.kt | 9 +++ .../ffii/fpsms/m18/web/M18TestController.kt | 60 ++++++++-------- .../fpsms/m18/web/models/M18TestRequest.kt | 14 +++- 6 files changed, 114 insertions(+), 66 deletions(-) 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 d9ced09..147b1e6 100644 --- a/src/main/java/com/ffii/fpsms/m18/service/M18MasterDataService.kt +++ b/src/main/java/com/ffii/fpsms/m18/service/M18MasterDataService.kt @@ -5,6 +5,7 @@ import com.ffii.fpsms.api.service.ApiCallerService import com.ffii.fpsms.m18.M18Config import com.ffii.fpsms.m18.model.* import com.ffii.fpsms.m18.utils.CommonUtils +import com.ffii.fpsms.m18.web.models.M18TestMasterDateRequest import com.ffii.fpsms.modules.master.entity.UomConversion import com.ffii.fpsms.modules.master.enums.ShopType import com.ffii.fpsms.modules.master.service.* @@ -35,8 +36,8 @@ open class M18MasterDataService( val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") // M18 Conditions - val lastModifyDate = LocalDate.now().minusDays(1) - val lastModifyDateConds = "lastModifyDate=largerThan=$lastModifyDate" +// val lastModifyDate = LocalDate.now().minusDays(1) +// val lastModifyDateConds = "lastModifyDate=largerThan=$lastModifyDate" val seriesIdList = listOf(m18Config.SERIESID_SC, m18Config.SERIESID_SE, m18Config.SERIESID_SF, m18Config.SERIESID_SR) val seriesIdConds = @@ -61,11 +62,21 @@ open class M18MasterDataService( stSearch: String?, params: String? = null, conds: String? = null, + request: M18TestMasterDateRequest, ): T? { + val lastModifyDateFromConds = request.modifiedDateFrom?.let { "lastModifyDate=largerOrEqual=${it}" } + val lastModifyDateToConds = request.modifiedDateTo?.let{ "lastModifyDate=lessOrEqual=${it}" } + val haveFromAndTo = lastModifyDateFromConds != null && lastModifyDateToConds != null + val finalConds = if (lastModifyDateFromConds == null && lastModifyDateToConds == null) { + conds + } else { + conds + "=and=(${lastModifyDateFromConds ?: ""}${if(haveFromAndTo) "=and=" else ""}${lastModifyDateToConds ?: ""})" + } + val request = M18CommonListRequest( stSearch = stSearch, params = params, - conds = conds + conds = finalConds ) val response = apiCallerService.get( @@ -95,12 +106,13 @@ open class M18MasterDataService( } // --------------------------------------------- Product --------------------------------------------- /// - open fun getProducts(): M18ProductListResponse? { + open fun getProducts(request: M18TestMasterDateRequest): M18ProductListResponse? { // seems no beId return getList( stSearch = StSearchType.PRODUCT.value, params = null, - conds = seriesIdConds + conds = seriesIdConds, + request = request ) // val itemsParams = M18CommonListRequest( // stSearch = StSearchType.PRODUCT.value, @@ -125,9 +137,9 @@ open class M18MasterDataService( ) } - open fun saveProducts() { + open fun saveProducts(request: M18TestMasterDateRequest) { logger.info("--------------------------------------------Start - Saving M18 Products / Materials--------------------------------------------") - val items = getProducts() + val items = getProducts(request) val exampleProducts = listOf(10946L, 3825L) val successList = mutableListOf() @@ -222,11 +234,12 @@ open class M18MasterDataService( } // --------------------------------------------- Vendor --------------------------------------------- /// - open fun getVendors(): M18VendorListResponse? { + open fun getVendors(request: M18TestMasterDateRequest): M18VendorListResponse? { return getList( stSearch = StSearchType.VENDOR.value, params = null, - conds = beIdConds + conds = beIdConds, + request = request ) } @@ -239,9 +252,9 @@ open class M18MasterDataService( ) } - open fun saveVendors() { + open fun saveVendors(request: M18TestMasterDateRequest) { logger.info("--------------------------------------------Start - Saving M18 Vendors--------------------------------------------") - val vendors = getVendors() + val vendors = getVendors(request) val exampleVendors = listOf(191L) val successList = mutableListOf() @@ -304,12 +317,13 @@ open class M18MasterDataService( } // --------------------------------------------- Unit (UoM) --------------------------------------------- /// - open fun getUnits(): M18UnitListResponse? { + open fun getUnits(request: M18TestMasterDateRequest): M18UnitListResponse? { // seems no beId return getList( stSearch = StSearchType.UNIT.value, params = null, - conds = null + conds = null, + request = request ) } @@ -322,9 +336,9 @@ open class M18MasterDataService( ) } - open fun saveUnits() { + open fun saveUnits(request: M18TestMasterDateRequest) { logger.info("--------------------------------------------Start - Saving M18 Units--------------------------------------------") - val units = getUnits() + val units = getUnits(request) val successTransformList = mutableListOf() val successSaveList = mutableListOf() @@ -387,11 +401,12 @@ open class M18MasterDataService( } // --------------------------------------------- Currency --------------------------------------------- /// - open fun getCurrencies(): M18CurrencyListResponse? { + open fun getCurrencies(request: M18TestMasterDateRequest): M18CurrencyListResponse? { return getList( stSearch = StSearchType.CURRENCY.value, params = null, - conds = null + conds = null, + request = request ) } @@ -404,9 +419,9 @@ open class M18MasterDataService( ) } - open fun saveCurrencies() { + open fun saveCurrencies(request: M18TestMasterDateRequest) { logger.info("--------------------------------------------Start - Saving M18 Currencies--------------------------------------------") - val currencies = getCurrencies() + val currencies = getCurrencies(request) val successList = mutableListOf() val failList = mutableListOf() @@ -449,11 +464,12 @@ open class M18MasterDataService( } // --------------------------------------------- Bom --------------------------------------------- /// - open fun getBoms(): M18BomListResponse? { + open fun getBoms(request: M18TestMasterDateRequest): M18BomListResponse? { return getList( stSearch = StSearchType.BOM.value, params = null, - conds = beIdConds + conds = beIdConds, + request = request ) } @@ -466,9 +482,9 @@ open class M18MasterDataService( ) } - open fun saveBoms() { + open fun saveBoms(request: M18TestMasterDateRequest) { logger.info("--------------------------------------------Start - Saving M18 Boms--------------------------------------------") - val boms = getBoms() + val boms = getBoms(request) val successList = mutableListOf() val successDetailList = mutableListOf() @@ -561,12 +577,13 @@ open class M18MasterDataService( } // --------------------------------------------- Business Unit (Shop) --------------------------------------------- /// - open fun getBusinessUnits(): M18BusinessUnitListResponse? { + open fun getBusinessUnits(request: M18TestMasterDateRequest): M18BusinessUnitListResponse? { // seems no beId return getList( stSearch = StSearchType.BUSINESS_UNIT.value, params = null, // conds = beIdConds + request = request ) } @@ -579,9 +596,9 @@ open class M18MasterDataService( ) } - open fun saveBusinessUnits() { + open fun saveBusinessUnits(request: M18TestMasterDateRequest) { logger.info("--------------------------------------------Start - Saving M18 Business Units (Shops)--------------------------------------------") - val businessUnits = getBusinessUnits() + val businessUnits = getBusinessUnits(request) val successList = mutableListOf() val failList = mutableListOf() diff --git a/src/main/java/com/ffii/fpsms/m18/service/M18PurchaseOrderService.kt b/src/main/java/com/ffii/fpsms/m18/service/M18PurchaseOrderService.kt index ce56baf..d289bc4 100644 --- a/src/main/java/com/ffii/fpsms/m18/service/M18PurchaseOrderService.kt +++ b/src/main/java/com/ffii/fpsms/m18/service/M18PurchaseOrderService.kt @@ -53,7 +53,7 @@ open class M18PurchaseOrderService( open fun getPurchaseOrdersWithType(request: M18TestPoRequest): M18PurchaseOrderListResponseWithType? { val purchaseOrders = M18PurchaseOrderListResponseWithType(mutableListOf()) val lastModifyDateConds = - "lastModifyDate=largerOrEqual=${request.dateFrom ?: lastModifyDateStart}=and=lastModifyDate=lessOrEqual=${request.dateTo ?: lastModifyDateEnd}" + "lastModifyDate=largerOrEqual=${request.modifiedDateFrom ?: lastModifyDateStart}=and=lastModifyDate=lessOrEqual=${request.modifiedDateTo ?: lastModifyDateEnd}" // Material PO val materialPoBuyers = commonUtils.listToString(listOf(m18Config.BEID_PP, m18Config.BEID_PF), "beId=equal=", "=or=") diff --git a/src/main/java/com/ffii/fpsms/m18/service/M18PurchaseQuotationService.kt b/src/main/java/com/ffii/fpsms/m18/service/M18PurchaseQuotationService.kt index ac24dc1..9f1c34b 100644 --- a/src/main/java/com/ffii/fpsms/m18/service/M18PurchaseQuotationService.kt +++ b/src/main/java/com/ffii/fpsms/m18/service/M18PurchaseQuotationService.kt @@ -8,6 +8,7 @@ import com.ffii.fpsms.m18.model.M18PurchaseQuotationListResponse import com.ffii.fpsms.m18.model.M18PurchaseQuotationRequest import com.ffii.fpsms.m18.model.M18PurchaseQuotationResponse import com.ffii.fpsms.m18.utils.CommonUtils +import com.ffii.fpsms.m18.web.models.M18TestPqRequest import com.ffii.fpsms.modules.master.service.ItemUomService import com.ffii.fpsms.modules.master.service.ItemsService import com.ffii.fpsms.modules.purchaseQuotation.service.PurchaseQuotationLineService @@ -30,10 +31,10 @@ open class M18PurchaseQuotationService( val commonUtils = CommonUtils() val logger: Logger = LoggerFactory.getLogger(JwtTokenUtil::class.java) - val lastModifyDateStart = "2025-05-14 14:00:00" - val lastModifyDateEnd = "2025-05-14 14:30:00" - val lastModifyDateConds = - "lastModifyDate=largerOrEqual=${lastModifyDateStart}=and=lastModifyDate=lessOrEqual=${lastModifyDateEnd}" +// val lastModifyDateStart = "2025-05-14 14:00:00" +// val lastModifyDateEnd = "2025-05-14 14:30:00" +// val lastModifyDateConds = +// "lastModifyDate=largerOrEqual=${lastModifyDateStart}=and=lastModifyDate=lessOrEqual=${lastModifyDateEnd}" // M18 Conditions val beIdList = listOf(m18Config.BEID_PF, m18Config.BEID_PP, m18Config.BEID_TOA) @@ -43,9 +44,18 @@ open class M18PurchaseQuotationService( val M18_LOAD_PURCHASE_QUOTATION_API = "/root/api/read/vqu" val M18_FETCH_PURCHASE_QUOTATION_LIST_API = "/search/search" - open fun getPurchaseQuotations(): M18PurchaseQuotationListResponse? { + open fun getPurchaseQuotations(request: M18TestPqRequest): M18PurchaseQuotationListResponse? { + val lastModifyDateFromConds = request.modifiedDateFrom?.let { "lastModifyDate=largerOrEqual=${it}" } + val lastModifyDateToConds = request.modifiedDateTo?.let{ "lastModifyDate=lessOrEqual=${it}" } + val haveFromAndTo = lastModifyDateFromConds != null && lastModifyDateToConds != null + val finalConds = if (lastModifyDateFromConds == null && lastModifyDateToConds == null) { + beIdConds + } else { + beIdConds + "=and=(${lastModifyDateFromConds ?: ""}${if(haveFromAndTo) "=and=" else ""}${lastModifyDateToConds ?: ""})" + } + val params = M18PurchaseQuotationListRequest( - conds = beIdConds + conds = finalConds ) var purchaseQuotations: M18PurchaseQuotationListResponse? = null @@ -84,9 +94,9 @@ open class M18PurchaseQuotationService( return purchaseQuotation } - open fun savePurchaseQuotations() { + open fun savePurchaseQuotations(request: M18TestPqRequest) { logger.info("--------------------------------------------Start - Saving M18 Purchase Quotations--------------------------------------------") - val purchaseQuotations = getPurchaseQuotations() + val purchaseQuotations = getPurchaseQuotations(request) val pqRefType = "Purchase Quotation" val pqLineRefType = "Purchase Quotation Line" diff --git a/src/main/java/com/ffii/fpsms/m18/utils/CommonUtils.kt b/src/main/java/com/ffii/fpsms/m18/utils/CommonUtils.kt index 0157374..b59a2f5 100644 --- a/src/main/java/com/ffii/fpsms/m18/utils/CommonUtils.kt +++ b/src/main/java/com/ffii/fpsms/m18/utils/CommonUtils.kt @@ -17,10 +17,19 @@ open class CommonUtils( return localDateTime } + @JvmName("listToStringForLongs") fun listToString(numbers: List?, prefix: String, delimiter: String): String { if (numbers == null) { return "" } return numbers.joinToString(delimiter) { "$prefix$it" } } + + @JvmName("listToStringForStrings") + fun listToString(strings: List?, prefix: String, delimiter: String): String { + if (strings == null) { + return "" + } + return strings.joinToString(delimiter) { "$prefix$it" } + } } \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/m18/web/M18TestController.kt b/src/main/java/com/ffii/fpsms/m18/web/M18TestController.kt index 31a9807..861b4a1 100644 --- a/src/main/java/com/ffii/fpsms/m18/web/M18TestController.kt +++ b/src/main/java/com/ffii/fpsms/m18/web/M18TestController.kt @@ -5,7 +5,9 @@ import com.ffii.fpsms.m18.M18Config import com.ffii.fpsms.m18.service.M18MasterDataService import com.ffii.fpsms.m18.service.M18PurchaseOrderService import com.ffii.fpsms.m18.service.M18PurchaseQuotationService +import com.ffii.fpsms.m18.web.models.M18TestMasterDateRequest import com.ffii.fpsms.m18.web.models.M18TestPoRequest +import com.ffii.fpsms.m18.web.models.M18TestPqRequest import com.ffii.fpsms.modules.master.entity.ItemUom import com.ffii.fpsms.modules.master.entity.Items import com.ffii.fpsms.modules.master.entity.ShopRepository @@ -61,51 +63,51 @@ class M18TestController ( } // --------------------------------------------- Master Data --------------------------------------------- /// - @GetMapping("/master-data") - fun m18MasterData() { + @PostMapping("/master-data") + fun m18MasterData(@Valid @RequestBody request: M18TestMasterDateRequest) { // Master Data - m18MasterDataService.saveUnits() - m18MasterDataService.saveProducts() - m18MasterDataService.saveVendors() - m18MasterDataService.saveBusinessUnits() - m18MasterDataService.saveCurrencies() - m18MasterDataService.saveBoms() + m18MasterDataService.saveUnits(request) + m18MasterDataService.saveProducts(request) + m18MasterDataService.saveVendors(request) + m18MasterDataService.saveBusinessUnits(request) + m18MasterDataService.saveCurrencies(request) + m18MasterDataService.saveBoms(request) } - @GetMapping("/product") - fun m18Products() { + @PostMapping("/product") + fun m18Products(@Valid @RequestBody request: M18TestMasterDateRequest) { logger.info("Access token: ${m18Config.ACCESS_TOKEN}") - m18MasterDataService.saveProducts() + m18MasterDataService.saveProducts(request) } - @GetMapping("/vendor") - fun m18Vendor() { + @PostMapping("/vendor") + fun m18Vendor(@Valid @RequestBody request: M18TestMasterDateRequest) { logger.info("Access token: ${m18Config.ACCESS_TOKEN}") - m18MasterDataService.saveVendors() + m18MasterDataService.saveVendors(request) } - @GetMapping("/unit") - fun m18Unit() { + @PostMapping("/unit") + fun m18Unit(@Valid @RequestBody request: M18TestMasterDateRequest) { logger.info("Access token: ${m18Config.ACCESS_TOKEN}") - m18MasterDataService.saveUnits() + m18MasterDataService.saveUnits(request) } - @GetMapping("/currency") - fun m18Currency() { + @PostMapping("/currency") + fun m18Currency(@Valid @RequestBody request: M18TestMasterDateRequest) { logger.info("Access token: ${m18Config.ACCESS_TOKEN}") - m18MasterDataService.saveCurrencies() + m18MasterDataService.saveCurrencies(request) } - @GetMapping("/bom") - fun m18Bom() { + @PostMapping("/bom") + fun m18Bom(@Valid @RequestBody request: M18TestMasterDateRequest) { logger.info("Access token: ${m18Config.ACCESS_TOKEN}") - m18MasterDataService.saveBoms() + m18MasterDataService.saveBoms(request) } - @GetMapping("/businessUnit") - fun m18BusinessUnit() { + @PostMapping("/businessUnit") + fun m18BusinessUnit(@Valid @RequestBody request: M18TestMasterDateRequest) { logger.info("Access token: ${m18Config.ACCESS_TOKEN}") - m18MasterDataService.saveBusinessUnits() + m18MasterDataService.saveBusinessUnits(request) } // --------------------------------------------- Purchase Order --------------------------------------------- /// @@ -116,9 +118,9 @@ class M18TestController ( } // --------------------------------------------- Purchase Quotation --------------------------------------------- /// - @GetMapping("/pq") - fun m18PQ() { + @PostMapping("/pq") + fun m18PQ(@Valid @RequestBody request: M18TestPqRequest) { logger.info("Access token: ${m18Config.ACCESS_TOKEN}") - m18PurchaseQuotationService.savePurchaseQuotations() + m18PurchaseQuotationService.savePurchaseQuotations(request) } } \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/m18/web/models/M18TestRequest.kt b/src/main/java/com/ffii/fpsms/m18/web/models/M18TestRequest.kt index 9bc9bb3..916ca99 100644 --- a/src/main/java/com/ffii/fpsms/m18/web/models/M18TestRequest.kt +++ b/src/main/java/com/ffii/fpsms/m18/web/models/M18TestRequest.kt @@ -1,6 +1,16 @@ package com.ffii.fpsms.m18.web.models data class M18TestPoRequest( - val dateFrom: String?, - val dateTo: String?, + val modifiedDateFrom: String?, + val modifiedDateTo: String?, +) + +data class M18TestPqRequest( + val modifiedDateFrom: String?, + val modifiedDateTo: String?, +) + +data class M18TestMasterDateRequest( + val modifiedDateFrom: String?, + val modifiedDateTo: String?, )