|
@@ -57,53 +57,71 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
public boolean syncOrder() {
|
|
|
Date endDate = new Date();
|
|
|
|
|
|
+ // 查询万里牛3天之内的全部订单
|
|
|
List<JSONObject> wlnOrderList = getWlnOrderList(endDate);
|
|
|
if (wlnOrderList == null) {
|
|
|
log.error("订单同步失败");
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- List<OrderInfo> saveOrderListInfo = new ArrayList<>();
|
|
|
+ // 保存订单列表
|
|
|
+ List<OrderInfo> saveOrderList = new ArrayList<>();
|
|
|
+ // 更新订单列表
|
|
|
+ List<OrderInfo> updateOrderList = new ArrayList<>();
|
|
|
+ // 保存订单明细列表
|
|
|
List<OrderSku> saveOrderSkuList = new ArrayList<>();
|
|
|
- List<OrderInfo> updateOrderListInfo = new ArrayList<>();
|
|
|
|
|
|
+ // 查询事业部map
|
|
|
Map<String, Department> departmentMap = getDepartmentMap();
|
|
|
|
|
|
+ // 查询近3天已存在数据库中德订单map
|
|
|
Map<String, OrderInfo> orderMap = orderService.mapKEntity(OrderInfo::getWlnUid,
|
|
|
q -> q.between(OrderInfo::getWlnApproveTime, DateUtil.offsetDay(endDate, -3), endDate));
|
|
|
|
|
|
+ // 获取sku规格map
|
|
|
Map<String, SkuSpec> skuSpecMap = getSkuSpecMap(wlnOrderList);
|
|
|
|
|
|
+ // 循环万里牛订单
|
|
|
for (JSONObject wlnOrder : wlnOrderList) {
|
|
|
|
|
|
- // 如果订单存在,修改订单状态
|
|
|
+ // 如果订单存在,且订单状态改变,执行update
|
|
|
OrderInfo orderInfo = orderMap.get(wlnOrder.getString("uid"));
|
|
|
if (orderInfo != null) {
|
|
|
Integer processStatus = wlnOrder.getInteger("process_status");
|
|
|
if (ObjectUtil.notEqual(orderInfo.getWlnStatus(), processStatus)) {
|
|
|
orderInfo.setWlnStatus(processStatus);
|
|
|
- updateOrderListInfo.add(orderInfo);
|
|
|
+ updateOrderList.add(orderInfo);
|
|
|
}
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- orderInfo = createOrder(wlnOrder, departmentMap);
|
|
|
+ // 没有匹配到事业部,则跳过
|
|
|
+ Department department = departmentMap.get(wlnOrder.getString("storage_code"));
|
|
|
+ if (department == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建订单
|
|
|
+ orderInfo = createOrder(wlnOrder, department);
|
|
|
+ saveOrderList.add(orderInfo);
|
|
|
+
|
|
|
+ // 创建订单sku
|
|
|
for (JSONObject wlnOrderSku : wlnOrder.getJSONArray("orders").toJavaList(JSONObject.class)) {
|
|
|
SkuSpec skuSpec = skuSpecMap.get(wlnOrderSku.getString("sys_spec_uid"));
|
|
|
OrderSku orderSku = createOrderSku(wlnOrderSku, orderInfo, skuSpec);
|
|
|
saveOrderSkuList.add(orderSku);
|
|
|
}
|
|
|
- saveOrderListInfo.add(orderInfo);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
// 开启事务
|
|
|
TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition);
|
|
|
try {
|
|
|
- if (saveOrderListInfo.size() > 0) {
|
|
|
- orderService.saveBatch(saveOrderListInfo);
|
|
|
+ if (saveOrderList.size() > 0) {
|
|
|
+ orderService.saveBatch(saveOrderList);
|
|
|
}
|
|
|
- if (updateOrderListInfo.size() > 0) {
|
|
|
- orderService.updateBatchById(updateOrderListInfo);
|
|
|
+ if (updateOrderList.size() > 0) {
|
|
|
+ orderService.updateBatchById(updateOrderList);
|
|
|
}
|
|
|
if (saveOrderSkuList.size() > 0) {
|
|
|
orderSkuService.saveBatch(saveOrderSkuList);
|
|
@@ -120,7 +138,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 万里牛查询3天之内的全部订单
|
|
|
+ * 查询万里牛3天之内的全部订单
|
|
|
*/
|
|
|
private List<JSONObject> getWlnOrderList(Date endDate) {
|
|
|
List<DictCommonData> warehouseCodeList = dictCommonDataService.list(q -> q
|
|
@@ -133,7 +151,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
List<JSONObject> list = new ArrayList<>();
|
|
|
|
|
|
long endTime = endDate.getTime();
|
|
|
- long startTime = endTime - 1000 * 60 * 60 * 24 - 1;
|
|
|
+ long startTime = endTime - 1000 * 60 * 60 * 24;
|
|
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
|
for (DictCommonData dictCommonData : warehouseCodeList) {
|
|
@@ -162,8 +180,10 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
* 事业部id Map
|
|
|
*/
|
|
|
private Map<String, Department> getDepartmentMap() {
|
|
|
+ List<Department> departmentList = departmentService.list();
|
|
|
Map<String, Department> departmentMap = new HashMap<>();
|
|
|
- for (Department department : departmentService.list()) {
|
|
|
+
|
|
|
+ for (Department department : departmentList) {
|
|
|
String warehouseCode = department.getWlnWarehouseCode();
|
|
|
if (StrUtil.isBlank(warehouseCode)) {
|
|
|
continue;
|
|
@@ -182,32 +202,33 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
List<String> wlnUidList = wlnOrderList.stream()
|
|
|
.flatMap(item -> item.getJSONArray("orders").toJavaList(JSONObject.class).stream())
|
|
|
.map(item -> item.getString("sys_spec_uid"))
|
|
|
- .filter(ObjectUtil::isNotNull).distinct().collect(Collectors.toList());
|
|
|
+ .filter(ObjectUtil::isNotNull)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
return skuSpecService.mapKEntity(SkuSpec::getWlnUid, q -> q.in(SkuSpec::getWlnUid, wlnUidList));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 创建订单
|
|
|
*/
|
|
|
- private OrderInfo createOrder(JSONObject wlnOrder, Map<String, Department> departmentMap) {
|
|
|
- Department department = departmentMap.get(wlnOrder.getString("storage_code"));
|
|
|
-
|
|
|
+ private OrderInfo createOrder(JSONObject wlnOrder, Department department) {
|
|
|
OrderInfo orderInfo = new OrderInfo();
|
|
|
orderInfo.setId(IdWorker.getId());
|
|
|
orderInfo.setSource(2);
|
|
|
orderInfo.setCode(wlnOrder.getString("tp_tid"));
|
|
|
orderInfo.setWlnCode(wlnOrder.getString("trade_no"));
|
|
|
+ orderInfo.setWlnStatus(wlnOrder.getInteger("process_status"));
|
|
|
orderInfo.setWlnUid(wlnOrder.getString("uid"));
|
|
|
+ orderInfo.setModifyTime(wlnOrder.getLong("modify_time"));
|
|
|
orderInfo.setWlnCreateTime(wlnOrder.getDate("create_time"));
|
|
|
orderInfo.setWlnApproveTime(wlnOrder.getDate("approve_time"));
|
|
|
- orderInfo.setModifyTime(wlnOrder.getLong("modify_time"));
|
|
|
- orderInfo.setRemark(wlnOrder.getString("remark"));
|
|
|
orderInfo.setProvince(wlnOrder.getString("province"));
|
|
|
orderInfo.setCity(wlnOrder.getString("city"));
|
|
|
orderInfo.setCounty(wlnOrder.getString("district"));
|
|
|
orderInfo.setDetailedAddress(wlnOrder.getString("address"));
|
|
|
orderInfo.setPostcode(wlnOrder.getString("zip"));
|
|
|
- orderInfo.setWlnStatus(wlnOrder.getInteger("process_status"));
|
|
|
+ orderInfo.setDepartmentId(department.getId());
|
|
|
+ orderInfo.setRemark(wlnOrder.getString("remark"));
|
|
|
|
|
|
StringBuilder builder = new StringBuilder();
|
|
|
// 订单来源平台
|
|
@@ -221,19 +242,12 @@ public class WlnOrderServiceImpl implements WlnOrderService {
|
|
|
}
|
|
|
orderInfo.setCommercePlatform(builder.toString());
|
|
|
|
|
|
- if (department != null) {
|
|
|
- orderInfo.setDepartmentId(department.getId());
|
|
|
- if (Objects.equals(department.getOrderMode(), "2")) {
|
|
|
- orderInfo.setStatus(OrderStatusEnum.REJECT.getKey());
|
|
|
- } else {
|
|
|
- orderInfo.setStatus(OrderStatusEnum.UNDER_REVIEW.getKey());
|
|
|
- }
|
|
|
- } else {
|
|
|
- orderInfo.setStatus(OrderStatusEnum.UNDER_REVIEW.getKey());
|
|
|
- }
|
|
|
-
|
|
|
if (orderInfo.getWlnStatus() == 10 || orderInfo.getWlnStatus() == 11 || orderInfo.getWlnStatus() == 12) {
|
|
|
orderInfo.setStatus(OrderStatusEnum.EXCEPTION.getKey());
|
|
|
+ } else if (Objects.equals(department.getOrderMode(), "2")) {
|
|
|
+ orderInfo.setStatus(OrderStatusEnum.REJECT.getKey());
|
|
|
+ } else {
|
|
|
+ orderInfo.setStatus(OrderStatusEnum.UNDER_REVIEW.getKey());
|
|
|
}
|
|
|
|
|
|
return orderInfo;
|