123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- package com.sd.wln.context;
- import cn.hutool.core.date.DateUtil;
- import cn.hutool.core.util.ObjectUtil;
- import cn.hutool.core.util.StrUtil;
- import cn.hutool.extra.spring.SpringUtil;
- import com.alibaba.fastjson2.JSONObject;
- import com.fjhx.tenant.entity.dict.po.DictCommonData;
- import com.fjhx.tenant.service.dict.DictCommonDataService;
- import com.ruoyi.framework.mybatis.holder.LogicHolder;
- import com.sd.business.entity.department.po.Department;
- import com.sd.business.entity.order.po.OrderInfo;
- import com.sd.business.entity.order.po.OrderPackageBom;
- import com.sd.business.entity.order.po.OrderSku;
- import com.sd.business.entity.order.po.OrderSkuBom;
- import com.sd.business.entity.sku.po.SkuSpec;
- import com.sd.business.service.department.DepartmentService;
- import com.sd.business.service.order.OrderService;
- import com.sd.business.service.sku.SkuSpecService;
- import com.sd.wln.util.WlnUtil;
- import lombok.Getter;
- import lombok.extern.slf4j.Slf4j;
- import java.util.*;
- import java.util.stream.Collectors;
- @Slf4j
- public class OrderContext {
- private final OrderService orderService = SpringUtil.getBean(OrderService.class);
- private final DictCommonDataService dictCommonDataService = SpringUtil.getBean(DictCommonDataService.class);
- private final DepartmentService departmentService = SpringUtil.getBean(DepartmentService.class);
- private final SkuSpecService skuSpecService = SpringUtil.getBean(SkuSpecService.class);
-
- @Getter
- private final Date endDate;
-
- @Getter
- private final List<JSONObject> wlnOrderList;
-
- @Getter
- private final List<OrderInfo> saveOrderList = new ArrayList<>();
-
- @Getter
- private final List<OrderInfo> updateOrderList = new ArrayList<>();
-
- @Getter
- private final List<OrderSku> saveOrderSkuList = new ArrayList<>();
-
- @Getter
- private final List<OrderSkuBom> saveOrderSkuBomList = new ArrayList<>();
-
- @Getter
- private final List<OrderPackageBom> orderPackageBomList = new ArrayList<>();
-
- private Map<String, OrderInfo> orderMap;
-
- private Map<String, Department> departmentMap;
-
- private Map<String, SkuSpec> skuSpecMap;
- public OrderContext() {
- this.endDate = new Date();
- this.wlnOrderList = selectWlnOrderList();
- }
-
- private List<JSONObject> selectWlnOrderList() {
- List<DictCommonData> warehouseCodeList = dictCommonDataService.list(q -> q.eq(DictCommonData::getDictCode, "warehouse_code"));
- if (warehouseCodeList.size() == 0) {
- log.error("订单同步失败,仓库字典:warehouse_code 为空");
- return null;
- }
- List<JSONObject> list = new ArrayList<>();
- long endTime = endDate.getTime();
- long startTime = endTime - 1000 * 60 * 60 * 24;
- for (DictCommonData dictCommonData : warehouseCodeList) {
- String warehouseCode = dictCommonData.getDictValue();
- int page = 1;
- int size;
- do {
- try {
- List<JSONObject> itemList = WlnUtil.getOrderList(page, 200, startTime, endTime, warehouseCode);
- page++;
- size = itemList.size();
- list.addAll(itemList);
- } catch (Exception e) {
- log.error("订单同步失败", e);
- return null;
- }
- } while (size >= 200);
- }
- return list;
- }
-
- public Map<String, OrderInfo> getOrderMap() {
- if (this.orderMap == null) {
- LogicHolder.setLogicHolder(new LogicHolder());
- this.orderMap = orderService.mapKEntity(
- OrderInfo::getWlnUid,
- q -> q.between(OrderInfo::getWlnApproveTime, DateUtil.offsetDay(endDate, -3), endDate));
- LogicHolder.clear();
- }
- return this.orderMap;
- }
-
- public Map<String, Department> getDepartmentMap() {
- if (this.departmentMap == null) {
- this.departmentMap = new HashMap<>();
- for (Department department : departmentService.list()) {
- String warehouseCode = department.getWlnWarehouseCode();
- if (StrUtil.isBlank(warehouseCode)) {
- continue;
- }
- for (String item : warehouseCode.split(",")) {
- this.departmentMap.put(item, department);
- }
- }
- }
- return this.departmentMap;
- }
-
- public Map<String, SkuSpec> getSkuSpecMap() {
- if (this.skuSpecMap == null) {
- 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());
- this.skuSpecMap = skuSpecService.mapKEntity(SkuSpec::getWlnUid, q -> q.in(SkuSpec::getWlnUid, wlnUidList));
- }
- return this.skuSpecMap;
- }
- }
|