|
@@ -83,7 +83,6 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
|
|
|
// 当前时间
|
|
|
Date endDate = new Date();
|
|
|
-
|
|
|
// 保存订单列表
|
|
|
List<OrderInfo> saveOrderList = new ArrayList<>();
|
|
|
// 更新订单列表
|
|
@@ -101,12 +100,8 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- // 不排除逻辑删除的订单
|
|
|
- LogicHolder.setLogicHolder(new LogicHolder());
|
|
|
// 查询近3天已存在数据库中的订单
|
|
|
- Map<String, OrderInfo> orderMap = orderService.mapKEntity(OrderInfo::getWlnUid,
|
|
|
- q -> q.between(OrderInfo::getWlnApproveTime, DateUtil.offsetDay(endDate, -3), endDate));
|
|
|
- LogicHolder.clear();
|
|
|
+ Map<String, OrderInfo> orderMap = getOrderMap(endDate);
|
|
|
|
|
|
// 查询事业部
|
|
|
Map<String, Department> departmentMap = getDepartmentMap();
|
|
@@ -128,26 +123,11 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
// 创建订单
|
|
|
OrderInfo orderInfo = createOrder(wlnOrder, department);
|
|
|
|
|
|
- // 如果订单存在于数据库,且订单状态改变,执行update
|
|
|
- OrderInfo oldOrderInfo = orderMap.get(orderInfo.getWlnUid());
|
|
|
- if (oldOrderInfo != null) {
|
|
|
- if (ObjectUtil.notEqual(oldOrderInfo.getWlnStatus(), orderInfo.getWlnStatus())
|
|
|
- || ObjectUtil.notEqual(oldOrderInfo.getWlnModifyTimestamp(), orderInfo.getWlnModifyTimestamp())
|
|
|
- || ObjectUtil.notEqual(DateUtil.formatDateTime(oldOrderInfo.getWlnApproveTime()), DateUtil.formatDateTime(orderInfo.getWlnApproveTime()))
|
|
|
- || ObjectUtil.notEqual(DateUtil.formatDateTime(oldOrderInfo.getWlnPrintTime()), DateUtil.formatDateTime(orderInfo.getWlnPrintTime()))
|
|
|
- || ObjectUtil.notEqual(oldOrderInfo.getWlnStorageCode(), orderInfo.getWlnStorageCode())
|
|
|
- || ObjectUtil.notEqual(oldOrderInfo.getDepartmentId(), orderInfo.getDepartmentId())) {
|
|
|
- OrderInfo updateOrder = new OrderInfo();
|
|
|
- updateOrder.setId(oldOrderInfo.getId());
|
|
|
- updateOrder.setWlnStatus(orderInfo.getWlnStatus());
|
|
|
- updateOrder.setWlnModifyTime(orderInfo.getWlnModifyTime());
|
|
|
- updateOrder.setWlnModifyTimestamp(orderInfo.getWlnModifyTimestamp());
|
|
|
- updateOrder.setWlnApproveTime(orderInfo.getWlnApproveTime());
|
|
|
- updateOrder.setWlnPrintTime(orderInfo.getWlnPrintTime());
|
|
|
- updateOrder.setWlnStorageCode(orderInfo.getWlnStorageCode());
|
|
|
- updateOrder.setDepartmentId(orderInfo.getDepartmentId());
|
|
|
- updateOrderList.add(updateOrder);
|
|
|
- }
|
|
|
+ // 判断订单是否存在与数据库中,若订单存在且订单信息被修改,则添加到更新订单数组
|
|
|
+ boolean existOrder = existOrder(orderMap, orderInfo, updateOrderList);
|
|
|
+
|
|
|
+ // 若订单是否存在与数据库中,跳过以下保存订单逻辑
|
|
|
+ if (existOrder) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
@@ -158,6 +138,8 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
|
|
|
// 创建订单sku
|
|
|
for (JSONObject wlnOrderSku : wlnOrder.getJSONArray("orders").toJavaList(JSONObject.class)) {
|
|
|
+
|
|
|
+ // 订单明细未匹配到sku规格,跳过次订单同步
|
|
|
String sysSpecUid = wlnOrderSku.getString("sys_spec_uid");
|
|
|
SkuSpec skuSpec = skuSpecMap.get(sysSpecUid);
|
|
|
if (skuSpec == null) {
|
|
@@ -166,9 +148,11 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+ // 创建订单sku
|
|
|
OrderSku orderSku = createOrderSku(wlnOrderSku, orderInfo, skuSpec);
|
|
|
tempOrderSkuList.add(orderSku);
|
|
|
|
|
|
+ // 创建订单包材
|
|
|
List<OrderSkuBom> orderSkuBomList = createOrderSkuBoom(orderInfo, orderSku);
|
|
|
tempOrderSkuBomList.addAll(orderSkuBomList);
|
|
|
}
|
|
@@ -248,6 +232,52 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 查询近3天已存在数据库中的订单
|
|
|
+ */
|
|
|
+ private Map<String, OrderInfo> getOrderMap(Date endDate) {
|
|
|
+ LogicHolder.setLogicHolder(new LogicHolder());
|
|
|
+
|
|
|
+ Map<String, OrderInfo> orderMap = orderService.mapKEntity(
|
|
|
+ OrderInfo::getWlnUid,
|
|
|
+ q -> q.between(OrderInfo::getWlnApproveTime, DateUtil.offsetDay(endDate, -3), endDate)
|
|
|
+ );
|
|
|
+
|
|
|
+ LogicHolder.clear();
|
|
|
+ return orderMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单是否存在,若订单存在且订单信息被修改,则添加到更新订单数组
|
|
|
+ */
|
|
|
+ private boolean existOrder(Map<String, OrderInfo> orderMap, OrderInfo orderInfo, List<OrderInfo> updateOrderList) {
|
|
|
+
|
|
|
+ // 如果订单存在于数据库,且订单状态改变,执行update
|
|
|
+ OrderInfo oldOrderInfo = orderMap.get(orderInfo.getWlnUid());
|
|
|
+ if (oldOrderInfo != null) {
|
|
|
+ if (ObjectUtil.notEqual(oldOrderInfo.getWlnStatus(), orderInfo.getWlnStatus())
|
|
|
+ || ObjectUtil.notEqual(oldOrderInfo.getWlnModifyTimestamp(), orderInfo.getWlnModifyTimestamp())
|
|
|
+ || ObjectUtil.notEqual(DateUtil.formatDateTime(oldOrderInfo.getWlnApproveTime()), DateUtil.formatDateTime(orderInfo.getWlnApproveTime()))
|
|
|
+ || ObjectUtil.notEqual(DateUtil.formatDateTime(oldOrderInfo.getWlnPrintTime()), DateUtil.formatDateTime(orderInfo.getWlnPrintTime()))
|
|
|
+ || ObjectUtil.notEqual(oldOrderInfo.getWlnStorageCode(), orderInfo.getWlnStorageCode())
|
|
|
+ || ObjectUtil.notEqual(oldOrderInfo.getDepartmentId(), orderInfo.getDepartmentId())) {
|
|
|
+ OrderInfo updateOrder = new OrderInfo();
|
|
|
+ updateOrder.setId(oldOrderInfo.getId());
|
|
|
+ updateOrder.setWlnStatus(orderInfo.getWlnStatus());
|
|
|
+ updateOrder.setWlnModifyTime(orderInfo.getWlnModifyTime());
|
|
|
+ updateOrder.setWlnModifyTimestamp(orderInfo.getWlnModifyTimestamp());
|
|
|
+ updateOrder.setWlnApproveTime(orderInfo.getWlnApproveTime());
|
|
|
+ updateOrder.setWlnPrintTime(orderInfo.getWlnPrintTime());
|
|
|
+ updateOrder.setWlnStorageCode(orderInfo.getWlnStorageCode());
|
|
|
+ updateOrder.setDepartmentId(orderInfo.getDepartmentId());
|
|
|
+ updateOrderList.add(updateOrder);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 查询事业部
|
|
|
*/
|
|
|
private Map<String, Department> getDepartmentMap() {
|
|
@@ -387,7 +417,9 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
}).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ /**
|
|
|
+ * 创建订单包装
|
|
|
+ */
|
|
|
private List<OrderPackageBom> createOrderPackageBomList(List<OrderSku> orderSkuList, Long departmentId) {
|
|
|
|
|
|
// 获取sku规格快递包材map
|