Merge pull request #96 from LQYBill/fix/mabangJobOverridingContent

fix: mabang job, overriding order content
pull/8040/head
Qiuyi LI 2024-07-29 12:06:14 +02:00 committed by GitHub
commit 58fde4e98d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 9 deletions

View File

@ -7,6 +7,7 @@ import org.codehaus.jettison.json.JSONObject;
import org.jeecg.modules.business.domain.api.mabang.dochangeorder.ArchiveOrderRequest;
import org.jeecg.modules.business.domain.api.mabang.dochangeorder.ArchiveOrderRequestBody;
import org.jeecg.modules.business.domain.api.mabang.dochangeorder.ChangeOrderResponse;
import org.jeecg.modules.business.service.IPlatformOrderMabangService;
import org.jeecg.modules.business.service.IPlatformOrderService;
import org.quartz.Job;
import org.quartz.JobDataMap;
@ -36,6 +37,8 @@ public class ArchiveOrderJob implements Job {
@Autowired
private IPlatformOrderService platformOrderService;
@Autowired
private IPlatformOrderMabangService platformOrderMabangService;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
@ -86,7 +89,7 @@ public class ArchiveOrderJob implements Job {
platformOrderIds.forEach(s -> archiveOrderRequestBodies.add(new ArchiveOrderRequestBody(s)));
log.info("{} order archiving requests to be sent to MabangAPI", archiveOrderRequestBodies.size());
List<String> platformOrderIdsArchived = new ArrayList<>();
List<CompletableFuture<Boolean>> changeOrderFutures = archiveOrderRequestBodies.stream()
.map(archiveOrderRequestBody -> CompletableFuture.supplyAsync(() -> {
boolean success = false;
@ -94,7 +97,9 @@ public class ArchiveOrderJob implements Job {
ArchiveOrderRequest archiveOrderRequest = new ArchiveOrderRequest(archiveOrderRequestBody);
ChangeOrderResponse response = archiveOrderRequest.send();
success = response.success();
} catch (RuntimeException e) {
if(success)
platformOrderIdsArchived.add(archiveOrderRequestBody.getPlatformOrderId());
} catch (RuntimeException e) {
log.error("Error communicating with MabangAPI", e);
}
return success;
@ -103,5 +108,11 @@ public class ArchiveOrderJob implements Job {
List<Boolean> results = changeOrderFutures.stream().map(CompletableFuture::join).collect(Collectors.toList());
long nbSuccesses = results.stream().filter(b -> b).count();
log.info("{}/{} order archiving requests have succeeded.", nbSuccesses, archiveOrderRequestBodies.size());
try {
platformOrderMabangService.syncOrdersFromMabang(platformOrderIdsArchived);
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
}

View File

@ -17,6 +17,7 @@ import org.jeecg.modules.business.domain.job.ThrottlingExecutorService;
import org.jeecg.modules.business.entity.PlatformOrder;
import org.jeecg.modules.business.mapper.PlatformOrderMabangMapper;
import org.jeecg.modules.business.service.IPlatformOrderMabangService;
import org.jeecg.modules.business.service.IPlatformOrderService;
import org.jeecg.modules.business.vo.PlatformOrderOperation;
import org.jeecg.modules.business.vo.Responses;
import org.springframework.beans.factory.annotation.Autowired;
@ -46,6 +47,8 @@ public class PlatformOrderMabangServiceImpl extends ServiceImpl<PlatformOrderMab
@Autowired
private PlatformOrderMabangMapper platformOrderMabangMapper;
@Autowired
private IPlatformOrderService orderservice;
@Autowired
private ISysBaseAPI ISysBaseApi;
private static final Integer DEFAULT_NUMBER_OF_THREADS = 2;
@ -99,6 +102,9 @@ public class PlatformOrderMabangServiceImpl extends ServiceImpl<PlatformOrderMab
) {
// If order wasn't invoiced pre-shipping, we can remove and re-insert contents
if (orderInDatabase.getShippingInvoiceNumber() == null) {
boolean hasInvoiceNumber = orderservice.getById(orderInDatabase.getId()).getShippingInvoiceNumber() != null;
if(hasInvoiceNumber)
continue;
oldOrders.add(retrievedOrder);
} else {
invoicedShippedOrders.add(retrievedOrder);
@ -123,11 +129,11 @@ public class PlatformOrderMabangServiceImpl extends ServiceImpl<PlatformOrderMab
/* for new orders, insert them to DB and their children */
List<OrderItem> allNewItems = prepareItems(newOrders);
try {
if (newOrders.size() != 0) {
if (!newOrders.isEmpty()) {
log.info("{} orders to be inserted/updated.", newOrders.size());
platformOrderMabangMapper.insertOrdersFromMabang(newOrders);
}
if (allNewItems.size() != 0) {
if (!allNewItems.isEmpty()) {
platformOrderMabangMapper.insertOrderItemsFromMabang(allNewItems);
log.info("{} order items to be inserted/updated.", allNewItems.size());
}
@ -138,12 +144,12 @@ public class PlatformOrderMabangServiceImpl extends ServiceImpl<PlatformOrderMab
// for old orders, update themselves and delete and reinsert their content.
List<OrderItem> allNewItemsOfOldItems = prepareItems(oldOrders);
try {
if (oldOrders.size() != 0) {
if (!oldOrders.isEmpty()) {
log.info("{} orders to be inserted/updated.", oldOrders.size());
platformOrderMabangMapper.batchUpdateById(oldOrders);
platformOrderMabangMapper.batchDeleteByMainID(oldOrders.stream().map(Order::getId).collect(toList()));
}
if (ordersFromShippedToCompleted.size() != 0) {
if (!ordersFromShippedToCompleted.isEmpty()) {
log.info("{} orders to be updated from Shipped to Completed.", ordersFromShippedToCompleted.size());
platformOrderMabangMapper.batchUpdateById(ordersFromShippedToCompleted);
log.info("Contents of {} orders to be updated from Shipped to Completed.", ordersFromShippedToCompleted.size());
@ -151,7 +157,7 @@ public class PlatformOrderMabangServiceImpl extends ServiceImpl<PlatformOrderMab
ordersFromShippedToCompleted.stream().map(Order::getId).collect(toList()),
OrderStatus.Completed.getCode());
}
if (invoicedShippedOrders.size() != 0) {
if (!invoicedShippedOrders.isEmpty()) {
log.info("{} orders to be updated from Pending/Preparing to Shipped.", invoicedShippedOrders.size());
platformOrderMabangMapper.batchUpdateById(invoicedShippedOrders);
log.info("Contents of {} orders to be updated from Pending/Preparing to Shipped.", invoicedShippedOrders.size());
@ -159,7 +165,7 @@ public class PlatformOrderMabangServiceImpl extends ServiceImpl<PlatformOrderMab
invoicedShippedOrders.stream().map(Order::getId).collect(toList()),
OrderStatus.Shipped.getCode());
}
if (obsoleteOrders.size() != 0) {
if (!obsoleteOrders.isEmpty()) {
log.info("{} orders to become obsolete.", obsoleteOrders.size());
platformOrderMabangMapper.batchUpdateById(obsoleteOrders);
log.info("Contents of {} orders to be updated to Obsolete.", obsoleteOrders.size());
@ -167,7 +173,7 @@ public class PlatformOrderMabangServiceImpl extends ServiceImpl<PlatformOrderMab
obsoleteOrders.stream().map(Order::getId).collect(toList()),
OrderStatus.Obsolete.getCode());
}
if (allNewItemsOfOldItems.size() != 0) {
if (!allNewItemsOfOldItems.isEmpty()) {
log.info("{} order items to be inserted/updated.", allNewItemsOfOldItems.size());
platformOrderMabangMapper.insertOrderItemsFromMabang(allNewItemsOfOldItems);
}