| @@ -137,18 +137,19 @@ open class M18DeliveryOrderService( | |||
| // Process for Delivery Order (mainpo) | |||
| // Assume only one DO in the DO (search by DO ID) | |||
| val mainpo = deliveryOrderDetail?.data?.mainpo?.get(0) | |||
| logger.info("deliveryOrderDetail: data is null? ${deliveryOrderDetail?.data == null} | mainpo is null? ${deliveryOrderDetail?.data?.mainpo == null} | get(0) is null? ${deliveryOrderDetail?.data?.mainpo?.get(0) == null}") | |||
| val pot = deliveryOrderDetail?.data?.pot | |||
| val deliveryOrderLineMessage = deliveryOrderDetail?.messages | |||
| // delivery_order + m18_data_log table | |||
| if (mainpo != null) { | |||
| // Find the latest m18 data log by m18 id & type | |||
| logger.info("${doRefType}: Finding For Latest M18 Data Log...") | |||
| // logger.info("${doRefType}: Finding For Latest M18 Data Log...") | |||
| val latestDeliveryOrderLog = | |||
| m18DataLogService.findLatestM18DataLogWithSuccess(deliveryOrder.id, doRefType) | |||
| logger.info(latestDeliveryOrderLog.toString()) | |||
| // Save to m18_data_log table | |||
| logger.info("${doRefType}: Saving for M18 Data Log...") | |||
| // logger.info("${doRefType}: Saving for M18 Data Log...") | |||
| val mainpoJson = | |||
| mainpo::class.memberProperties.associate { prop -> prop.name to prop.getter.call(mainpo) } | |||
| .toMutableMap() | |||
| @@ -168,13 +169,13 @@ open class M18DeliveryOrderService( | |||
| try { | |||
| // Find the delivery_order if exist | |||
| logger.info("${doRefType}: Finding exising delivery order...") | |||
| // logger.info("${doRefType}: Finding exising delivery order...") | |||
| val existingDeliveryOrder = | |||
| latestDeliveryOrderLog?.id?.let { deliveryOrderService.findByM18DataLogId(it) } | |||
| logger.info("${doRefType}: Exising delivery order ID: ${existingDeliveryOrder?.id}") | |||
| // logger.info("${doRefType}: Exising delivery order ID: ${existingDeliveryOrder?.id}") | |||
| // Save to delivery_order table | |||
| logger.info("${doRefType}: Saving delivery order...") | |||
| // logger.info("${doRefType}: Saving delivery order...") | |||
| val saveDeliveryOrderRequest = SaveDeliveryOrderRequest( | |||
| id = existingDeliveryOrder?.id, | |||
| code = mainpo.code, | |||
| @@ -210,7 +211,7 @@ open class M18DeliveryOrderService( | |||
| } catch (e: Exception) { | |||
| failList.add(deliveryOrder.id) | |||
| logger.error("${doRefType}: Saving Failure!") | |||
| // logger.error("${doRefType}: Saving Failure!") | |||
| logger.error("Error on Function - ${e.stackTrace} | Type: ${doRefType} | M18 ID: ${deliveryOrder.id} | Different? ${mainpo.id}") | |||
| logger.error(e.message) | |||
| @@ -221,7 +222,7 @@ open class M18DeliveryOrderService( | |||
| ) | |||
| m18DataLogService.saveM18DataLog(errorSaveM18DeliveryOrderLogRequest) | |||
| logger.error("${doRefType}: M18 Data Log Updated! Please see the error. ID: ${saveM18DeliveryOrderLogRequest.id}") | |||
| // logger.error("${doRefType}: M18 Data Log Updated! Please see the error. ID: ${saveM18DeliveryOrderLogRequest.id}") | |||
| } | |||
| // delivery_order_line + m18_data_log | |||
| @@ -231,13 +232,13 @@ open class M18DeliveryOrderService( | |||
| pot.forEach { line -> | |||
| // Find the latest m18 data log by m18 id & type | |||
| logger.info("${doLineRefType}: Finding For Latest M18 Data Log...") | |||
| // logger.info("${doLineRefType}: Finding For Latest M18 Data Log...") | |||
| val latestDeliveryOrderLineLog = | |||
| m18DataLogService.findLatestM18DataLogWithSuccess(line.id, doLineRefType) | |||
| // logger.info("${doLineRefType}: Latest M18 Data Log ID: ${latestDeliveryOrderLineLog?.id}") | |||
| // Save to m18_data_log table | |||
| logger.info("${doLineRefType}: Saving for M18 Data Log...") | |||
| // logger.info("${doLineRefType}: Saving for M18 Data Log...") | |||
| val lineJson = | |||
| line::class.memberProperties.associate { prop -> | |||
| prop.name to prop.getter.call( | |||
| @@ -258,7 +259,7 @@ open class M18DeliveryOrderService( | |||
| m18DataLogService.saveM18DataLog(saveM18DeliveryOrderLineLogRequest) | |||
| // logger.info("${doLineRefType}: Saved M18 Data Log. ID: ${saveM18DeliveryOrderLineLog.id}") | |||
| logger.info("${doLineRefType}: Finding item...") | |||
| // logger.info("${doLineRefType}: Finding item...") | |||
| val item = itemsService.findByM18Id(line.proId) | |||
| var itemId: Long? = null | |||
| if (item == null) { | |||
| @@ -267,18 +268,18 @@ open class M18DeliveryOrderService( | |||
| itemId = item.id | |||
| } | |||
| logger.info("${doLineRefType}: Item ID: ${itemId} | M18 Item ID: ${line.proId}") | |||
| // logger.info("${doLineRefType}: Item ID: ${itemId} | M18 Item ID: ${line.proId}") | |||
| try { | |||
| // Find the delivery_order_line if exist | |||
| logger.info("${doLineRefType}: Finding exising delivery order line...") | |||
| // logger.info("${doLineRefType}: Finding exising delivery order line...") | |||
| val existingDeliveryOrderLine = latestDeliveryOrderLineLog?.id?.let { | |||
| deliveryOrderLineService.findDeliveryOrderLineByM18Id(it) | |||
| } | |||
| logger.info("${doLineRefType}: Exising delivery order line ID: ${existingDeliveryOrderLine?.id}") | |||
| // logger.info("${doLineRefType}: Exising delivery order line ID: ${existingDeliveryOrderLine?.id}") | |||
| // Save to delivery_order_line table | |||
| logger.info("${doLineRefType}: Saving delivery order line...") | |||
| // logger.info("${doLineRefType}: Saving delivery order line...") | |||
| val itemUom = itemId?.let { itemUomService.findSalesUnitByItemId(it) } | |||
| val saveDeliveryOrderLineRequest = SaveDeliveryOrderLineRequest( | |||
| id = existingDeliveryOrderLine?.id, | |||
| @@ -310,12 +311,12 @@ open class M18DeliveryOrderService( | |||
| // log success info | |||
| successDetailList.add(line.id) | |||
| logger.info("${doLineRefType}: Delivery order ID: ${deliveryOrderId} | M18 ID: ${deliveryOrder.id}") | |||
| logger.info("${doLineRefType}: Saved delivery order line. ID: ${saveDeliveryOrderLineResponse.id} | M18 Line ID: ${line.id}") | |||
| // logger.info("${doLineRefType}: Delivery order ID: ${deliveryOrderId} | M18 ID: ${deliveryOrder.id}") | |||
| logger.info("${doLineRefType}: Saved delivery order line. ID: ${saveDeliveryOrderLineResponse.id} | M18 Line ID: ${line.id} | Delivery order ID: ${deliveryOrderId} | M18 ID: ${deliveryOrder.id}") | |||
| } catch (e: Exception) { | |||
| failDetailList.add(line.id) | |||
| failItemDetailList.add(line.proId) | |||
| logger.error("${doLineRefType}: Saving Failure!") | |||
| // logger.error("${doLineRefType}: Saving Failure!") | |||
| logger.error("Error on Function - ${e.stackTrace} | Type: ${doLineRefType} | M18 ID: ${line.id}") | |||
| logger.error(e.message) | |||
| @@ -326,12 +327,12 @@ open class M18DeliveryOrderService( | |||
| ) | |||
| m18DataLogService.saveM18DataLog(errorSaveM18DeliveryOrderLineLogRequest) | |||
| logger.error("${doLineRefType}: M18 Data Log Updated! Please see the error. ID: ${saveM18DeliveryOrderLineLog.id}") | |||
| // logger.error("${doLineRefType}: M18 Data Log Updated! Please see the error. ID: ${saveM18DeliveryOrderLineLog.id}") | |||
| } | |||
| } | |||
| } else { | |||
| // pot | |||
| logger.error("${doLineRefType}: Saving Failure!") | |||
| // logger.error("${doLineRefType}: Saving Failure!") | |||
| val saveM18DeliveryOrderLineLogRequest = SaveM18DataLogRequest( | |||
| id = null, | |||
| refType = "${doLineRefType}", | |||
| @@ -361,7 +362,7 @@ open class M18DeliveryOrderService( | |||
| } else { | |||
| // mainpo | |||
| failList.add(deliveryOrder.id) | |||
| logger.error("${doRefType}: Saving Failure!") | |||
| // logger.error("${doRefType}: Saving Failure!") | |||
| val saveM18DataLogRequest = SaveM18DataLogRequest( | |||
| id = null, | |||
| refType = "${doRefType}", | |||
| @@ -398,15 +399,17 @@ open class M18DeliveryOrderService( | |||
| } | |||
| // End of save. Check result | |||
| logger.info("Total Success (${doRefType}) (${successList.size}): $successList") | |||
| // logger.info("Total Success (${doRefType}) (${successList.size}): $successList") | |||
| logger.info("Total Success (${doRefType}) (${successList.size})") | |||
| // if (failList.size > 0) { | |||
| logger.error("Total Fail (${doRefType}) (${failList.size}): $failList") | |||
| // } | |||
| logger.info("Total Success (${doLineRefType}) (${successDetailList.size}): $successDetailList") | |||
| // logger.info("Total Success (${doLineRefType}) (${successDetailList.size}): $successDetailList") | |||
| logger.info("Total Success (${doLineRefType}) (${successDetailList.size})") | |||
| // if (failDetailList.size > 0) { | |||
| logger.error("Total Fail (${doLineRefType}) (${failDetailList.size}): $failDetailList") | |||
| logger.error("Total Fail M18 Items (${doLineRefType}) (${failItemDetailList.distinct().size}): ${failItemDetailList.distinct()}") | |||
| // logger.error("Total Fail M18 Items (${doLineRefType}) (${failItemDetailList.distinct().size}): ${failItemDetailList.distinct()}") | |||
| // } | |||
| logger.info("--------------------------------------------End - Saving M18 Delivery Order--------------------------------------------") | |||
| } | |||
| @@ -195,17 +195,18 @@ open class M18PurchaseOrderService( | |||
| val mainpo = purchaseOrderDetail?.data?.mainpo?.get(0) | |||
| val pot = purchaseOrderDetail?.data?.pot | |||
| val purchaseOrderLineMessage = purchaseOrderDetail?.messages | |||
| logger.info("deliveryOrderDetail: data is null? ${purchaseOrderDetail?.data == null} | mainpo is null? ${purchaseOrderDetail?.data?.mainpo == null} | get(0) is null? ${purchaseOrderDetail?.data?.mainpo?.get(0) == null}") | |||
| // purchase_order + m18_data_log table | |||
| if (mainpo != null) { | |||
| // Find the latest m18 data log by m18 id & type | |||
| logger.info("${poRefType}: Finding For Latest M18 Data Log...") | |||
| // logger.info("${poRefType}: Finding For Latest M18 Data Log...") | |||
| val latestPurchaseOrderLog = | |||
| m18DataLogService.findLatestM18DataLogWithSuccess(purchaseOrder.id, poRefType) | |||
| logger.info(latestPurchaseOrderLog.toString()) | |||
| // logger.info(latestPurchaseOrderLog.toString()) | |||
| // Save to m18_data_log table | |||
| logger.info("${poRefType}: Saving for M18 Data Log...") | |||
| // logger.info("${poRefType}: Saving for M18 Data Log...") | |||
| val mainpoJson = | |||
| mainpo::class.memberProperties.associate { prop -> prop.name to prop.getter.call(mainpo) } | |||
| .toMutableMap() | |||
| @@ -225,13 +226,13 @@ open class M18PurchaseOrderService( | |||
| try { | |||
| // Find the purchase_order if exist | |||
| logger.info("${poRefType}: Finding exising purchase order...") | |||
| // logger.info("${poRefType}: Finding exising purchase order...") | |||
| val existingPurchaseOrder = | |||
| latestPurchaseOrderLog?.id?.let { purchaseOrderService.findByM18DataLogId(it) } | |||
| logger.info("${poRefType}: Exising purchase order ID: ${existingPurchaseOrder?.id}") | |||
| // logger.info("${poRefType}: Exising purchase order ID: ${existingPurchaseOrder?.id}") | |||
| // Save to purchase_order table | |||
| logger.info("${poRefType}: Saving purchase order...") | |||
| // logger.info("${poRefType}: Saving purchase order...") | |||
| val savePurchaseOrderRequest = SavePurchaseOrderRequest( | |||
| id = existingPurchaseOrder?.id, | |||
| code = mainpo.code, | |||
| @@ -266,7 +267,7 @@ open class M18PurchaseOrderService( | |||
| } catch (e: Exception) { | |||
| failList.add(purchaseOrder.id) | |||
| logger.error("${poRefType}: Saving Failure!") | |||
| // logger.error("${poRefType}: Saving Failure!") | |||
| logger.error("Error on Function - ${e.stackTrace} | Type: ${poRefType} | M18 ID: ${purchaseOrder.id} | Different? ${mainpo.id}") | |||
| logger.error(e.message) | |||
| @@ -277,7 +278,7 @@ open class M18PurchaseOrderService( | |||
| ) | |||
| m18DataLogService.saveM18DataLog(errorSaveM18PurchaseOrderLogRequest) | |||
| logger.error("${poRefType}: M18 Data Log Updated! Please see the error. ID: ${saveM18PurchaseOrderLogRequest.id}") | |||
| // logger.error("${poRefType}: M18 Data Log Updated! Please see the error. ID: ${saveM18PurchaseOrderLogRequest.id}") | |||
| } | |||
| // purchase_order_line + m18_data_log | |||
| @@ -287,13 +288,13 @@ open class M18PurchaseOrderService( | |||
| pot.forEach { line -> | |||
| // Find the latest m18 data log by m18 id & type | |||
| logger.info("${poLineRefType}: Finding For Latest M18 Data Log...") | |||
| // logger.info("${poLineRefType}: Finding For Latest M18 Data Log...") | |||
| val latestPurchaseOrderLineLog = | |||
| m18DataLogService.findLatestM18DataLogWithSuccess(line.id, poLineRefType) | |||
| // logger.info("${poLineRefType}: Latest M18 Data Log ID: ${latestPurchaseOrderLineLog?.id}") | |||
| // Save to m18_data_log table | |||
| logger.info("${poLineRefType}: Saving for M18 Data Log...") | |||
| // logger.info("${poLineRefType}: Saving for M18 Data Log...") | |||
| val lineJson = | |||
| line::class.memberProperties.associate { prop -> | |||
| prop.name to prop.getter.call( | |||
| @@ -314,7 +315,7 @@ open class M18PurchaseOrderService( | |||
| m18DataLogService.saveM18DataLog(saveM18PurchaseOrderLineLogRequest) | |||
| // logger.info("${poLineRefType}: Saved M18 Data Log. ID: ${saveM18PurchaseOrderLineLog.id}") | |||
| logger.info("${poLineRefType}: Finding item...") | |||
| // logger.info("${poLineRefType}: Finding item...") | |||
| val item = itemsService.findByM18Id(line.proId) | |||
| var itemId: Long? = null | |||
| if (item == null) { | |||
| @@ -326,14 +327,14 @@ open class M18PurchaseOrderService( | |||
| try { | |||
| // Find the purchase_order_line if exist | |||
| logger.info("${poLineRefType}: Finding exising purchase order line...") | |||
| // logger.info("${poLineRefType}: Finding exising purchase order line...") | |||
| val existingPurchaseOrderLine = latestPurchaseOrderLineLog?.id?.let { | |||
| purchaseOrderLineService.findPurchaseOrderLineByM18Id(it) | |||
| } | |||
| logger.info("${poLineRefType}: Exising purchase order line ID: ${existingPurchaseOrderLine?.id}") | |||
| // logger.info("${poLineRefType}: Exising purchase order line ID: ${existingPurchaseOrderLine?.id}") | |||
| // Save to purchase_order_line table | |||
| logger.info("${poLineRefType}: Saving purchase order line...") | |||
| // logger.info("${poLineRefType}: Saving purchase order line...") | |||
| val itemUom = itemId?.let { itemUomService.findPurchaseUnitByItemId(it) } | |||
| val savePurchaseOrderLineRequest = SavePurchaseOrderLineRequest( | |||
| id = existingPurchaseOrderLine?.id, | |||
| @@ -365,11 +366,11 @@ open class M18PurchaseOrderService( | |||
| // log success info | |||
| successDetailList.add(line.id) | |||
| logger.info("${poLineRefType}: Purchase order ID: ${purchaseOrderId} | M18 ID: ${purchaseOrder.id}") | |||
| logger.info("${poLineRefType}: Saved purchase order line. ID: ${savePurchaseOrderLineResponse.id} | M18 Line ID: ${line.id}") | |||
| // logger.info("${poLineRefType}: Purchase order ID: ${purchaseOrderId} | M18 ID: ${purchaseOrder.id}") | |||
| logger.info("${poLineRefType}: Saved purchase order line. ID: ${savePurchaseOrderLineResponse.id} | M18 Line ID: ${line.id} | Purchase order ID: ${purchaseOrderId} | M18 ID: ${purchaseOrder.id}") | |||
| } catch (e: Exception) { | |||
| failDetailList.add(line.id) | |||
| logger.error("${poLineRefType}: Saving Failure!") | |||
| // logger.error("${poLineRefType}: Saving Failure!") | |||
| logger.error("Error on Function - ${e.stackTrace} | Type: ${poLineRefType} | M18 ID: ${line.id}") | |||
| logger.error(e.message) | |||
| @@ -380,12 +381,12 @@ open class M18PurchaseOrderService( | |||
| ) | |||
| m18DataLogService.saveM18DataLog(errorSaveM18PurchaseOrderLineLogRequest) | |||
| logger.error("${poLineRefType}: M18 Data Log Updated! Please see the error. ID: ${saveM18PurchaseOrderLineLog.id}") | |||
| // logger.error("${poLineRefType}: M18 Data Log Updated! Please see the error. ID: ${saveM18PurchaseOrderLineLog.id}") | |||
| } | |||
| } | |||
| } else { | |||
| // pot | |||
| logger.error("${poLineRefType}: Saving Failure!") | |||
| // logger.error("${poLineRefType}: Saving Failure!") | |||
| val saveM18PurchaseOrderLineLogRequest = SaveM18DataLogRequest( | |||
| id = null, | |||
| refType = "${poLineRefType}", | |||
| @@ -415,7 +416,7 @@ open class M18PurchaseOrderService( | |||
| } else { | |||
| // mainpo | |||
| failList.add(purchaseOrder.id) | |||
| logger.error("${poRefType}: Saving Failure!") | |||
| // logger.error("${poRefType}: Saving Failure!") | |||
| val saveM18DataLogRequest = SaveM18DataLogRequest( | |||
| id = null, | |||
| refType = "${poRefType}", | |||
| @@ -452,12 +453,14 @@ open class M18PurchaseOrderService( | |||
| } | |||
| // End of save. Check result | |||
| logger.info("Total Success (${poRefType}) (${successList.size}): $successList") | |||
| // logger.info("Total Success (${poRefType}) (${successList.size}): $successList") | |||
| logger.info("Total Success (${poRefType}) (${successList.size})") | |||
| // if (failList.size > 0) { | |||
| logger.error("Total Fail (${poRefType}) (${failList.size}): $failList") | |||
| // } | |||
| logger.info("Total Success (${poLineRefType}) (${successDetailList.size}): $successDetailList") | |||
| // logger.info("Total Success (${poLineRefType}) (${successDetailList.size}): $successDetailList") | |||
| logger.info("Total Success (${poLineRefType}) (${successDetailList.size})") | |||
| // if (failDetailList.size > 0) { | |||
| logger.error("Total Fail (${poLineRefType}) (${failDetailList.size}): $failDetailList") | |||
| // } | |||
| @@ -4,6 +4,7 @@ import com.ffii.core.utils.JwtTokenUtil | |||
| import com.ffii.fpsms.m18.web.models.M18CommonRequest | |||
| import org.slf4j.Logger | |||
| import org.slf4j.LoggerFactory | |||
| import org.springframework.scheduling.annotation.Async | |||
| import org.springframework.scheduling.annotation.Scheduled | |||
| import org.springframework.stereotype.Service | |||
| import java.time.LocalDateTime | |||
| @@ -18,9 +19,12 @@ open class M18SchedulerService( | |||
| var logger: Logger = LoggerFactory.getLogger(JwtTokenUtil::class.java) | |||
| val dataStringFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd") | |||
| @Scheduled(cron = "0 0 0 * * *") | |||
| // @Async | |||
| // @Scheduled(cron = "0 0 2 * * *") // (SS/MM/HH/DD/MM/YY) | |||
| @Scheduled(cron = "0 35 14 * * *") // (SS/MM/HH/DD/MM/YY) | |||
| open fun getM18Pos() { | |||
| val today = LocalDateTime.now() | |||
| val currentTime = LocalDateTime.now() | |||
| val today = currentTime.toLocalDate().atStartOfDay() | |||
| val yesterday = today.minusDays(1L) | |||
| val request = M18CommonRequest( | |||
| modifiedDateTo = today.format(dataStringFormat), | |||
| @@ -2,10 +2,7 @@ package com.ffii.fpsms.m18.web | |||
| import com.ffii.core.utils.JwtTokenUtil | |||
| import com.ffii.fpsms.m18.M18Config | |||
| import com.ffii.fpsms.m18.service.M18DeliveryOrderService | |||
| 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.service.* | |||
| import com.ffii.fpsms.m18.web.models.M18CommonRequest | |||
| import com.ffii.fpsms.modules.master.entity.ItemUom | |||
| import com.ffii.fpsms.modules.master.entity.Items | |||
| @@ -32,6 +29,7 @@ class M18TestController ( | |||
| private val itemUomService: ItemUomService, | |||
| private val m18PurchaseQuotationService: M18PurchaseQuotationService, | |||
| private val m18DeliveryOrderService: M18DeliveryOrderService, | |||
| val m18SchedulerService: M18SchedulerService, | |||
| ) { | |||
| var logger: Logger = LoggerFactory.getLogger(JwtTokenUtil::class.java) | |||
| @@ -56,6 +54,11 @@ class M18TestController ( | |||
| println(response?.uom?.id) | |||
| return response | |||
| } | |||
| @GetMapping("/test4") | |||
| fun test4(): Any { | |||
| return m18SchedulerService.getM18Pos(); | |||
| } | |||
| // --------------------------------------------- Master Data --------------------------------------------- /// | |||
| @GetMapping("/all") | |||
| fun m18All() { | |||