From 556820e0e2431e2a0ec119e7d0fb0d50db8e03c7 Mon Sep 17 00:00:00 2001 From: Gauthier LO Date: Wed, 29 May 2024 15:30:03 +0200 Subject: [PATCH] feat: clear logistic channel name --- .../dochangeorder/ClearLogisticRequest.java | 8 ++--- .../ClearLogisticRequestBody.java | 21 +++-------- .../dochangeorder/ClearLogisticResponse.java | 36 +++---------------- .../domain/job/AddPortraitTubeJob.java | 4 ++- .../domain/job/ClearLogisticChannelJob.java | 1 - .../domain/job/RemoveVirtualProductJob.java | 25 ++++++++++--- .../business/mapper/PlatformOrderMapper.java | 2 +- .../mapper/xml/PlatformOrderMapper.xml | 4 +-- .../service/IPlatformOrderService.java | 2 +- .../impl/PlatformOrderServiceImpl.java | 2 +- .../templates/admin/invoiceNotification.ftl | 2 +- .../resources/templates/invoiceDetailMail.ftl | 2 +- 12 files changed, 44 insertions(+), 65 deletions(-) diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ClearLogisticRequest.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ClearLogisticRequest.java index 04ac10e96..52067f937 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ClearLogisticRequest.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ClearLogisticRequest.java @@ -2,14 +2,14 @@ package org.jeecg.modules.business.domain.api.mabang.dochangeorder; import org.jeecg.modules.business.domain.api.mabang.Request; -public class EditLogisticRequest extends Request { - public EditLogisticRequest(EditLogisticRequestBody body) { +public class ClearLogisticRequest extends Request { + public ClearLogisticRequest(ClearLogisticRequestBody body) { super(body); } @Override - public ChangeOrderResponse send() { + public ClearLogisticResponse send() { String jsonString = rawSend().getBody(); - return ChangeOrderResponse.parse(jsonString); + return ClearLogisticResponse.parse(jsonString); } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ClearLogisticRequestBody.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ClearLogisticRequestBody.java index e4207ce96..4dff1ff13 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ClearLogisticRequestBody.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ClearLogisticRequestBody.java @@ -1,41 +1,28 @@ package org.jeecg.modules.business.domain.api.mabang.dochangeorder; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.Data; -import org.apache.commons.lang3.tuple.Pair; import org.jeecg.modules.business.domain.api.mabang.RequestBody; -import java.util.HashSet; - @Data -public class EditLogisticRequestBody implements RequestBody { - +public class ClearLogisticRequestBody implements RequestBody { private String platformOrderId; - private String logisticChannelName; - /** - * 1 : edit, 2: delete, 3: add - */ - private Integer type; - public EditLogisticRequestBody(String platformOrderId, String logisticChannelName, int type) { + public ClearLogisticRequestBody(String platformOrderId) { this.platformOrderId = platformOrderId; - this.logisticChannelName = logisticChannelName; - this.type = type; } @Override public String api() { - return "order-do-change-order"; + return "order-do-order-logistics"; } @Override public JSONObject parameters() { JSONObject json = new JSONObject(); putNonNull(json, "platformOrderId", platformOrderId); - putNonNull(json, "myLogisticsId", logisticChannelName); - putNonNull(json, "type", type); + putNonNull(json, "type", 1); return json; } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ClearLogisticResponse.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ClearLogisticResponse.java index d0801180b..6e97276f7 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ClearLogisticResponse.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ClearLogisticResponse.java @@ -4,46 +4,20 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import org.jeecg.modules.business.domain.api.mabang.Response; -public class ChangeOrderResponse extends Response { - private final String message; - /** - * Erp order number - */ - private final String orderId; +public class ClearLogisticResponse extends Response { - private ChangeOrderResponse(Code status, String message, String orderId) { + private ClearLogisticResponse(Code status) { super(status); - this.message = message; - this.orderId = orderId; } - public static ChangeOrderResponse parse(String json) { + public static ClearLogisticResponse parse(String json) { JSONObject jsonObject = JSON.parseObject(json); String code = jsonObject.getString("code"); - String message = jsonObject.getString("message"); if (code.equals("200")) { - JSONObject data = jsonObject.getJSONObject("data"); - String orderId = data.getString("orderId"); - return new ChangeOrderResponse(Code.SUCCESS, message, orderId); + return new ClearLogisticResponse(Code.SUCCESS); } else { - return new ChangeOrderResponse(Code.ERROR, message, null); + return new ClearLogisticResponse(Code.ERROR); } } - - public String getMessage() { - return message; - } - - public String getOrderId() { - return orderId; - } - - @Override - public String toString() { - return "ChangeOrderResponse{" + - "message='" + message + '\'' + - ", orderId='" + orderId + '\'' + - '}'; - } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/AddPortraitTubeJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/AddPortraitTubeJob.java index 595f28608..588cbd1e9 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/AddPortraitTubeJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/AddPortraitTubeJob.java @@ -10,6 +10,7 @@ import org.jeecg.modules.business.domain.api.mabang.dochangeorder.ChangeOrderReq import org.jeecg.modules.business.domain.api.mabang.dochangeorder.ChangeOrderRequestBody; import org.jeecg.modules.business.domain.api.mabang.dochangeorder.ChangeOrderResponse; import org.jeecg.modules.business.domain.api.mabang.getorderlist.*; +import org.jeecg.modules.business.entity.PlatformOrder; import org.jeecg.modules.business.service.IPlatformOrderService; import org.quartz.Job; import org.quartz.JobDataMap; @@ -87,7 +88,8 @@ public class AddPortraitTubeJob implements Job { throw new RuntimeException("EndDateTime must be strictly greater than StartDateTime !"); } - List platformOrderIds = platformOrderService.fetchUninvoicedOrdersForShops(startDateTime, endDateTime, shops); + List platformOrders = platformOrderService.fetchUninvoicedOrdersForShops(startDateTime, endDateTime, shops); + List platformOrderIds = platformOrders.stream().map(PlatformOrder::getPlatformOrderId).collect(Collectors.toList()); List> platformOrderIdLists = Lists.partition(platformOrderIds, 10); List requests = new ArrayList<>(); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/ClearLogisticChannelJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/ClearLogisticChannelJob.java index b53c6ebc7..cca33e0da 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/ClearLogisticChannelJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/ClearLogisticChannelJob.java @@ -5,7 +5,6 @@ import org.codehaus.jettison.json.JSONArray; import org.codehaus.jettison.json.JSONException; import org.codehaus.jettison.json.JSONObject; import org.jeecg.modules.business.domain.api.mabang.dochangeorder.*; -import org.jeecg.modules.business.domain.api.mabang.getorderlist.Order; import org.quartz.Job; import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/RemoveVirtualProductJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/RemoveVirtualProductJob.java index 877ab0680..d9e9e80c4 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/RemoveVirtualProductJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/RemoveVirtualProductJob.java @@ -6,10 +6,9 @@ import org.apache.commons.lang3.tuple.Pair; import org.codehaus.jettison.json.JSONArray; import org.codehaus.jettison.json.JSONException; import org.codehaus.jettison.json.JSONObject; -import org.jeecg.modules.business.domain.api.mabang.dochangeorder.ChangeOrderResponse; -import org.jeecg.modules.business.domain.api.mabang.dochangeorder.RemoveSkuRequest; -import org.jeecg.modules.business.domain.api.mabang.dochangeorder.RemoveSkuRequestBody; +import org.jeecg.modules.business.domain.api.mabang.dochangeorder.*; import org.jeecg.modules.business.domain.api.mabang.getorderlist.*; +import org.jeecg.modules.business.entity.PlatformOrder; import org.jeecg.modules.business.service.IPlatformOrderService; import org.quartz.Job; import org.quartz.JobDataMap; @@ -81,7 +80,8 @@ public class RemoveVirtualProductJob implements Job { throw new RuntimeException("EndDateTime must be strictly greater than StartDateTime !"); } - List platformOrderIds = platformOrderService.fetchUninvoicedOrdersForShops(startDateTime, endDateTime, shops); + List platformOrders = platformOrderService.fetchUninvoicedOrdersForShops(startDateTime, endDateTime, shops); + List platformOrderIds = platformOrders.stream().map(PlatformOrder::getPlatformOrderId).collect(Collectors.toList()); List> platformOrderIdLists = Lists.partition(platformOrderIds, 10); List requests = new ArrayList<>(); @@ -112,6 +112,7 @@ public class RemoveVirtualProductJob implements Job { log.info("{}/{} mabang orders have been retrieved.", mabangOrders.size(), platformOrderIds.size()); log.info("Constructing virtual SKU removal requests"); + List ordersWithLogistic = new ArrayList<>(); List removeSkuRequests = new ArrayList<>(); Set shopErpCodes = virtualSkusByShop.keySet(); for (Order mabangOrder : mabangOrders) { @@ -126,6 +127,9 @@ public class RemoveVirtualProductJob implements Job { } } if (!virtualSkuToRemove.isEmpty()) { + if(!mabangOrder.getLogisticChannelName().isEmpty()) { + ordersWithLogistic.add(mabangOrder); + } RemoveSkuRequestBody removeSkuRequestBody = new RemoveSkuRequestBody(mabangOrder.getPlatformOrderId(), virtualSkuToRemove); removeSkuRequests.add(removeSkuRequestBody); @@ -134,6 +138,19 @@ public class RemoveVirtualProductJob implements Job { } log.info("{} virtual SKU removal requests to be sent to MabangAPI", removeSkuRequests.size()); + // First we delete the logistic channel names, otherwise we can't delete virtual skus + List> clearLogisticFutures = ordersWithLogistic.stream() + .map(orderWithLogistic -> CompletableFuture.supplyAsync(() -> { + ClearLogisticRequestBody body = new ClearLogisticRequestBody(orderWithLogistic.getPlatformOrderId()); + ClearLogisticRequest request = new ClearLogisticRequest(body); + ClearLogisticResponse response = request.send(); + return response.success(); + }, executor)) + .collect(Collectors.toList()); + List logisticResults = clearLogisticFutures.stream().map(CompletableFuture::join).collect(Collectors.toList()); + long logisticClearSuccessCount = logisticResults.stream().filter(b -> b).count(); + log.info("{}/{} logistic channel names cleared successfully.", logisticClearSuccessCount, ordersWithLogistic.size()); + List> removeSkuFutures = removeSkuRequests.stream() .map(removeSkuRequestBody -> CompletableFuture.supplyAsync(() -> { boolean success = false; 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 5871009d7..2a8d6ba16 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 @@ -161,7 +161,7 @@ public interface PlatformOrderMapper extends BaseMapper { List fetchBillCodesOfParcelsWithoutTrace(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("transporters") List transporters); - List fetchUninvoicedOrdersForShops(@Param("startDateTime") LocalDateTime startDateTime, + List fetchUninvoicedOrdersForShops(@Param("startDateTime") LocalDateTime startDateTime, @Param("endDateTime") LocalDateTime endDateTime, @Param("shops") List shops); 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 ba302500b..4bc711014 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 @@ -404,8 +404,8 @@ AND internal_tracking_number IS NOT NULL; - + SELECT platform_order_id, logistic_channel_name FROM platform_order po join shop s ON po.shop_id = s.id WHERE erp_code IN { List fetchBillCodesOfParcelsWithoutTrace(Date startDate, Date endDate, List transporters); - List fetchUninvoicedOrdersForShops(LocalDateTime startDate, LocalDateTime endDate, List shops); + List fetchUninvoicedOrdersForShops(LocalDateTime startDate, LocalDateTime endDate, List shops); /** * Fetch platformOrderId of shipped AND invoiced orders, from startDatetime to endDatetime, excluding orders from 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 d2c4cd04b..0e6b5bee0 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 @@ -369,7 +369,7 @@ public class PlatformOrderServiceImpl extends ServiceImpl fetchUninvoicedOrdersForShops(LocalDateTime startDate, LocalDateTime endDate, List shops) { + public List fetchUninvoicedOrdersForShops(LocalDateTime startDate, LocalDateTime endDate, List shops) { return platformOrderMap.fetchUninvoicedOrdersForShops(startDate, endDate, shops); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/resources/templates/admin/invoiceNotification.ftl b/jeecg-module-system/jeecg-system-biz/src/main/resources/templates/admin/invoiceNotification.ftl index 97c956ad9..c920d7fe4 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/resources/templates/admin/invoiceNotification.ftl +++ b/jeecg-module-system/jeecg-system-biz/src/main/resources/templates/admin/invoiceNotification.ftl @@ -12,6 +12,6 @@ Client : ${invoiceEntity} - Numéro de facture : ${invoiceNumber} + Numéro de facture : ${invoiceNumber} <#include "../components/footer.ftl"> \ No newline at end of file diff --git a/jeecg-module-system/jeecg-system-biz/src/main/resources/templates/invoiceDetailMail.ftl b/jeecg-module-system/jeecg-system-biz/src/main/resources/templates/invoiceDetailMail.ftl index 2e346cbfc..e6e0c9ea8 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/resources/templates/invoiceDetailMail.ftl +++ b/jeecg-module-system/jeecg-system-biz/src/main/resources/templates/invoiceDetailMail.ftl @@ -12,6 +12,6 @@ Client : ${invoiceEntity} - Numéro de facture : ${invoiceNumber} + Numéro de facture : ${invoiceNumber} <#include "components/footer.ftl"> \ No newline at end of file