@@ -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() { | |||