fix : archiving job now works as intended, by archiving by default all orders and parcel infos before today 1 year ago

pull/6221/head
Gauthier LO 2023-07-06 16:13:27 +02:00
parent f453575fb1
commit cdf5ce3cb6
5 changed files with 75 additions and 41 deletions

View File

@ -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<PlatformOrder> platformOrders = platformOrderService.fetchPlatformOrdersToArchive(startDate, endDate);
List<String> platformOrderIDs = platformOrders.stream().map(PlatformOrder::getId).collect(Collectors.toList());
List<PlatformOrderContent> 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<String> platformOrderTrackingNumber = platformOrders.stream().map(PlatformOrder::getTrackingNumber).collect(Collectors.toList());
if(platformOrderTrackingNumber.size() > 0) {
List<Parcel> parcels = parcelService.fetchParcelsToArchive(platformOrderTrackingNumber);
if(parcels.size() > 0) {
log.info("- Parcel entries : " + parcels.size());
parcelService.saveParcelArchive(parcels);
List<String> parcelIDs = parcels.stream().map(Parcel::getId).collect(Collectors.toList());
List<ParcelTrace> parcelTraces = parcelTraceService.fetchParcelTracesToArchive(parcelIDs);
if(parcelTraces.size() > 0) {
log.info("- Parcel trace entries : " + parcelTraces.size());
parcelTraceService.saveParcelTraceArchive(parcelTraces);
}
parcelService.delBatchMain(parcelIDs);
}
List<PlatformOrder> 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<String> platformOrderIDs = platformOrders.stream().map(PlatformOrder::getId).collect(Collectors.toList());
List<PlatformOrderContent> 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<String> platformOrderTrackingNumber = platformOrders.stream().map(PlatformOrder::getTrackingNumber).collect(Collectors.toList());
if (platformOrderTrackingNumber.size() > 0) {
List<Parcel> parcels = parcelService.fetchParcelsToArchive(platformOrderTrackingNumber);
if (parcels.size() > 0) {
log.info("- Parcel entries : " + parcels.size());
parcelService.saveParcelArchive(parcels);
List<String> parcelIDs = parcels.stream().map(Parcel::getId).collect(Collectors.toList());
List<ParcelTrace> 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.");
}
}

View File

@ -178,6 +178,7 @@ public interface PlatformOrderMapper extends BaseMapper<PlatformOrder> {
@Param("shops") List<String> shops,
@Param("erpStatuses") List<Integer> erpStatuses,
@Param("warehouses") List<String> warehouses);
List<PlatformOrder> fetchPlatformOrdersToArchive(@Param("startDate") String startDate, @Param("endDate") String endDate);
List<PlatformOrder> fetchOrdersToArchiveBetweenDate(@Param("startDate") String startDate, @Param("endDate") String endDate);
List<PlatformOrder> fetchOrdersToArchiveBeforeDate(@Param("endDate") String endDate);
void insertPlatformOrdersArchives(@Param("orders") List<PlatformOrder> platformOrders);
}

View File

@ -528,12 +528,18 @@
#{erpStatus}
</foreach>;
</select>
<select id="fetchPlatformOrdersToArchive" resultType="org.jeecg.modules.business.entity.PlatformOrder">
<select id="fetchOrdersToArchiveBetweenDate" resultType="org.jeecg.modules.business.entity.PlatformOrder">
SELECT *
FROM platform_order po
WHERE erp_status IN (4,5)
AND order_time BETWEEN #{startDate} AND #{endDate};
</select>
<select id="fetchOrdersToArchiveBeforeDate" resultType="org.jeecg.modules.business.entity.PlatformOrder">
SELECT *
FROM platform_order po
WHERE erp_status IN (4,5)
AND order_time &lt; #{endDate};
</select>
<insert id="insertPlatformOrdersArchives" parameterType="list">
INSERT INTO platform_order_delete(id, create_by,
create_time, update_by,

View File

@ -149,7 +149,16 @@ public interface IPlatformOrderService extends IService<PlatformOrder> {
* @param endDate End date time
* @return List of PlatformOrder
*/
List<PlatformOrder> fetchPlatformOrdersToArchive(String startDate, String endDate);
List<PlatformOrder> 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<PlatformOrder> fetchOrdersToArchiveBeforeDate(String endDate);
/**
* Archive a list of platform orders

View File

@ -367,8 +367,12 @@ public class PlatformOrderServiceImpl extends ServiceImpl<PlatformOrderMapper, P
return platformOrderMap.fetchUninvoicedShippedOrderIDInShops(startDate, endDate, shops, warehouses);
}
@Override
public List<PlatformOrder> fetchPlatformOrdersToArchive(String startDate, String endDate) {
return platformOrderMap.fetchPlatformOrdersToArchive(startDate, endDate);
public List<PlatformOrder> fetchOrdersToArchiveBetweenDate(String startDate, String endDate) {
return platformOrderMap.fetchOrdersToArchiveBetweenDate(startDate, endDate);
}
@Override
public List<PlatformOrder> fetchOrdersToArchiveBeforeDate(String endDate) {
return platformOrderMap.fetchOrdersToArchiveBeforeDate(endDate);
}
@Override
public void savePlatformOrderArchive(List<PlatformOrder> platformOrders) {