mirror of https://github.com/jeecgboot/jeecg-boot
fix : archiving job now works as intended, by archiving by default all orders and parcel infos before today 1 year ago
parent
f453575fb1
commit
cdf5ce3cb6
|
@ -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.");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 < #{endDate};
|
||||
</select>
|
||||
<insert id="insertPlatformOrdersArchives" parameterType="list">
|
||||
INSERT INTO platform_order_delete(id, create_by,
|
||||
create_time, update_by,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue