From cdf5ce3cb65c8c179254dbe47f01851985d9657b Mon Sep 17 00:00:00 2001 From: Gauthier LO Date: Thu, 6 Jul 2023 16:13:27 +0200 Subject: [PATCH] fix : archiving job now works as intended, by archiving by default all orders and parcel infos before today 1 year ago --- .../business/domain/job/DBArchivingJob.java | 86 +++++++++++-------- .../business/mapper/PlatformOrderMapper.java | 3 +- .../mapper/xml/PlatformOrderMapper.xml | 8 +- .../service/IPlatformOrderService.java | 11 ++- .../impl/PlatformOrderServiceImpl.java | 8 +- 5 files changed, 75 insertions(+), 41 deletions(-) diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/DBArchivingJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/DBArchivingJob.java index 5d54b4987..d391de646 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/DBArchivingJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/DBArchivingJob.java @@ -45,8 +45,8 @@ public class DBArchivingJob implements Job { private static final Integer DEFAULT_NUMBER_OF_DAYS = 365; @Override public void execute(JobExecutionContext context) throws JobExecutionException { - LocalDateTime endDateTime = LocalDateTime.now(ZoneId.of(ZoneId.SHORT_IDS.get("CTT"))); - LocalDateTime startDateTime = endDateTime.minusDays(DEFAULT_NUMBER_OF_DAYS); + LocalDateTime endDateTime = LocalDateTime.now(ZoneId.of(ZoneId.SHORT_IDS.get("CTT"))).minusDays(DEFAULT_NUMBER_OF_DAYS); + LocalDateTime startDateTime = null; JobDataMap jobDataMap = context.getMergedJobDataMap(); String parameter = ((String) jobDataMap.get("parameter")); if (parameter != null) { @@ -59,48 +59,62 @@ public class DBArchivingJob implements Job { if (!jsonObject.isNull("endDateTime")) { String endDateStr = jsonObject.getString("endDateTime"); endDateTime = LocalDateTime.parse(endDateStr); + if(endDateTime.isAfter(LocalDateTime.now(ZoneId.of(ZoneId.SHORT_IDS.get("CTT"))).minusDays(DEFAULT_NUMBER_OF_DAYS))) { + throw new RuntimeException("Error : Only orders older than 1 year can be archived !"); + } } } catch (JSONException e) { log.error("Error while parsing parameter as JSON, falling back to default parameters."); } } - if (!endDateTime.isAfter(startDateTime)) { - throw new RuntimeException("EndDateTime must be strictly greater than StartDateTime !"); - } - String startDate = startDateTime.toString().substring(0,10); + + String startDate; endDateTime = endDateTime.plusDays(1); String endDate = endDateTime.toString().substring(0,10); - - // sauvegarde des entrées dans des listes - // suppression des entrées dans l'ancienne table - List platformOrders = platformOrderService.fetchPlatformOrdersToArchive(startDate, endDate); - List platformOrderIDs = platformOrders.stream().map(PlatformOrder::getId).collect(Collectors.toList()); - List platformOrderContents = platformOrderContentService.fetchPlatformOrderContentsToArchive(platformOrderIDs); - - log.info("Archiving entries between ["+startDate+" and "+endDate+"]\n" - +"- Platform Order entries : " + platformOrders.size() + "\n" - +"- Platform Order Content entries : " + platformOrderContents.size()); - platformOrderService.savePlatformOrderArchive(platformOrders); - platformOrderContentService.savePlatformOrderContentArchive(platformOrderContents); - platformOrderService.delBatchMain(platformOrderIDs); - - List platformOrderTrackingNumber = platformOrders.stream().map(PlatformOrder::getTrackingNumber).collect(Collectors.toList()); - if(platformOrderTrackingNumber.size() > 0) { - List parcels = parcelService.fetchParcelsToArchive(platformOrderTrackingNumber); - if(parcels.size() > 0) { - log.info("- Parcel entries : " + parcels.size()); - parcelService.saveParcelArchive(parcels); - - List parcelIDs = parcels.stream().map(Parcel::getId).collect(Collectors.toList()); - List parcelTraces = parcelTraceService.fetchParcelTracesToArchive(parcelIDs); - if(parcelTraces.size() > 0) { - log.info("- Parcel trace entries : " + parcelTraces.size()); - parcelTraceService.saveParcelTraceArchive(parcelTraces); - } - parcelService.delBatchMain(parcelIDs); - } + List platformOrders; + if (startDateTime != null) { + if(!endDateTime.isAfter(startDateTime)) + throw new RuntimeException("EndDateTime must be strictly greater than StartDateTime !"); + startDate = startDateTime.toString().substring(0,10); + platformOrders = platformOrderService.fetchOrdersToArchiveBetweenDate(startDate, endDate); + log.info("Archiving entries between ["+startDate+" and "+endDate+"]"); + } + else { + platformOrders = platformOrderService.fetchOrdersToArchiveBeforeDate(endDate); + log.info("Archiving entries before ["+endDate+"]"); + } + if(platformOrders.size() > 0) { + // sauvegarde des entrées dans des listes + // suppression des entrées dans l'ancienne table + List platformOrderIDs = platformOrders.stream().map(PlatformOrder::getId).collect(Collectors.toList()); + List platformOrderContents = platformOrderContentService.fetchPlatformOrderContentsToArchive(platformOrderIDs); + log.info("- Platform Order entries : " + platformOrders.size() + "\n" + + "- Platform Order Content entries : " + platformOrderContents.size()); + platformOrderService.savePlatformOrderArchive(platformOrders); + platformOrderContentService.savePlatformOrderContentArchive(platformOrderContents); + platformOrderService.delBatchMain(platformOrderIDs); + + List platformOrderTrackingNumber = platformOrders.stream().map(PlatformOrder::getTrackingNumber).collect(Collectors.toList()); + if (platformOrderTrackingNumber.size() > 0) { + List parcels = parcelService.fetchParcelsToArchive(platformOrderTrackingNumber); + if (parcels.size() > 0) { + log.info("- Parcel entries : " + parcels.size()); + parcelService.saveParcelArchive(parcels); + + List parcelIDs = parcels.stream().map(Parcel::getId).collect(Collectors.toList()); + List parcelTraces = parcelTraceService.fetchParcelTracesToArchive(parcelIDs); + if (parcelTraces.size() > 0) { + log.info("- Parcel trace entries : " + parcelTraces.size()); + parcelTraceService.saveParcelTraceArchive(parcelTraces); + } + parcelService.delBatchMain(parcelIDs); + } + } + log.info("Archiving Done."); + } + else { + log.info("Nothing to archive !"); } - log.info("Archiving Done."); } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PlatformOrderMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PlatformOrderMapper.java index f49d88d3b..99edad025 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PlatformOrderMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PlatformOrderMapper.java @@ -178,6 +178,7 @@ public interface PlatformOrderMapper extends BaseMapper { @Param("shops") List shops, @Param("erpStatuses") List erpStatuses, @Param("warehouses") List warehouses); - List fetchPlatformOrdersToArchive(@Param("startDate") String startDate, @Param("endDate") String endDate); + List fetchOrdersToArchiveBetweenDate(@Param("startDate") String startDate, @Param("endDate") String endDate); + List fetchOrdersToArchiveBeforeDate(@Param("endDate") String endDate); void insertPlatformOrdersArchives(@Param("orders") List platformOrders); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PlatformOrderMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PlatformOrderMapper.xml index 1fbadea86..15f9e20f3 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PlatformOrderMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PlatformOrderMapper.xml @@ -528,12 +528,18 @@ #{erpStatus} ; - SELECT * FROM platform_order po WHERE erp_status IN (4,5) AND order_time BETWEEN #{startDate} AND #{endDate}; + INSERT INTO platform_order_delete(id, create_by, create_time, update_by, diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IPlatformOrderService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IPlatformOrderService.java index 84336450a..214e974d2 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IPlatformOrderService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IPlatformOrderService.java @@ -149,7 +149,16 @@ public interface IPlatformOrderService extends IService { * @param endDate End date time * @return List of PlatformOrder */ - List fetchPlatformOrdersToArchive(String startDate, String endDate); + List fetchOrdersToArchiveBetweenDate(String startDate, String endDate); + + /** + * Fetch all platform orders before endDate and of status erp_status 4 or 5 + * this list will then be archived + * + * @param endDate Start date time + * @return List of PlatformOrder + */ + List fetchOrdersToArchiveBeforeDate(String endDate); /** * Archive a list of platform orders diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/PlatformOrderServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/PlatformOrderServiceImpl.java index 308370c4b..22d879c8f 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/PlatformOrderServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/PlatformOrderServiceImpl.java @@ -367,8 +367,12 @@ public class PlatformOrderServiceImpl extends ServiceImpl fetchPlatformOrdersToArchive(String startDate, String endDate) { - return platformOrderMap.fetchPlatformOrdersToArchive(startDate, endDate); + public List fetchOrdersToArchiveBetweenDate(String startDate, String endDate) { + return platformOrderMap.fetchOrdersToArchiveBetweenDate(startDate, endDate); + } + @Override + public List fetchOrdersToArchiveBeforeDate(String endDate) { + return platformOrderMap.fetchOrdersToArchiveBeforeDate(endDate); } @Override public void savePlatformOrderArchive(List platformOrders) {