Browse Source

异常订单

24282 1 năm trước cách đây
mục cha
commit
07849f3f49

+ 1 - 1
sd-business/src/main/java/com/sd/business/entity/order/enums/OrderExceptionTypeEnum.java

@@ -16,7 +16,7 @@ public enum OrderExceptionTypeEnum {
     ORDER_ABORT(2, "万里牛状态异常:订单异常结束"),
     ORDER_EXCEPTION_HANDLING(3, "万里牛状态异常:订单异常处理"),
     UNKNOWN_WAREHOUSE(4, "无法通过仓库编码找到事业部"),
-    UNKNOWN_SKU_SPEC(5, "未知sku规格"),
+    UNKNOWN_SKU_SPEC(5, "订单存在未知sku规格"),
 
     ;
 

+ 1 - 2
sd-business/src/main/java/com/sd/business/entity/order/enums/OrderStatusEnum.java

@@ -20,8 +20,7 @@ public enum OrderStatusEnum {
     COMPLETION_PRODUCTION(40, "生产完成"),
     HAVE_BEEN_SHIPPED(50, "已发货"),
 
-    DELETE(90, "订单删除审核中"),
-    EXCEPTION(99, "订单异常");
+    ;
 
     private static final Map<Integer, OrderStatusEnum> map = new HashMap<>();
 

+ 5 - 0
sd-business/src/main/java/com/sd/business/entity/order/po/OrderInfo.java

@@ -125,6 +125,11 @@ public class OrderInfo extends BasePo {
     private Integer status;
 
     /**
+     * 异常类型 {@link com.sd.business.entity.order.enums.OrderExceptionTypeEnum}
+     */
+    private String exceptionType;
+
+    /**
      * 结算状态 1未结算 2已对账 3已结算
      */
     private Integer settlementStatus;

+ 5 - 0
sd-business/src/main/java/com/sd/business/service/order/OrderService.java

@@ -49,4 +49,9 @@ public interface OrderService extends BaseService<OrderInfo> {
      */
     SkuSpecPriceVo getSkuSpecPrice(SkuSpecPriceDto dto);
 
+    /**
+     * 获取异常类型
+     */
+    String addExceptionType(String exceptionTypeStr, Integer addExceptionType);
+
 }

+ 14 - 0
sd-business/src/main/java/com/sd/business/service/order/impl/OrderServiceImpl.java

@@ -2,6 +2,7 @@ package com.sd.business.service.order.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.constant.StatusConstant;
@@ -278,4 +279,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
         return skuSpecPriceVo;
     }
 
+    @Override
+    public String addExceptionType(String exceptionTypeStr, Integer addExceptionType) {
+        if (StrUtil.isBlank(exceptionTypeStr) || exceptionTypeStr.equals("0")) {
+            return addExceptionType.toString();
+        }
+
+        if (Arrays.asList(exceptionTypeStr.split(",")).contains(addExceptionType.toString())) {
+            return exceptionTypeStr;
+        }
+
+        return exceptionTypeStr + "," + addExceptionType;
+    }
+
 }

+ 0 - 1
sd-business/src/main/java/com/sd/business/service/production/impl/ProductionOrderServiceImpl.java

@@ -67,7 +67,6 @@ public class ProductionOrderServiceImpl implements ProductionOrderService {
 
         IWrapper<ProductionOrderVo> wrapper = IWrapper.getWrapper();
         wrapper.ge("oi", OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey());
-        wrapper.notIn("oi", OrderInfo::getStatus, OrderStatusEnum.DELETE.getKey(), OrderStatusEnum.EXCEPTION.getKey());
         wrapper.like("oi", OrderInfo::getCode, dto.getCode());
         wrapper.like("oi", OrderInfo::getWlnCode, dto.getWlnCode());
         wrapper.eq("oi", OrderInfo::getDepartmentId, dto.getDepartmentId());

+ 60 - 22
sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

@@ -9,6 +9,7 @@ import com.ruoyi.common.core.domain.BaseIdPo;
 import com.sd.business.entity.bom.bo.BomBo;
 import com.sd.business.entity.bom.po.BomSpec;
 import com.sd.business.entity.department.po.Department;
+import com.sd.business.entity.order.enums.OrderExceptionTypeEnum;
 import com.sd.business.entity.order.enums.OrderStatusEnum;
 import com.sd.business.entity.order.po.OrderInfo;
 import com.sd.business.entity.order.po.OrderPackageBom;
@@ -93,12 +94,6 @@ public class WlnOrderServiceImpl implements WlnOrderService {
             // 部门实体
             Department department = context.getDepartmentMap().get(storageCode);
 
-            // 未匹配到部门id
-            if (department == null) {
-                log.error("未知仓库code:{}", storageCode);
-                continue;
-            }
-
             OrderInfo orderInfo = orderMap.get(wlnUid);
 
             if (orderInfo == null) {
@@ -135,7 +130,6 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         orderInfo.setTag("0");
         orderInfo.setSettlementStatus(1);
 
-        orderInfo.setDepartmentId(department.getId());
         orderInfo.setWlnStorageCode(wlnOrder.getString("storage_code"));
         orderInfo.setWlnUid(wlnOrder.getString("uid"));
         orderInfo.setCode(wlnOrder.getString("tp_tid"));
@@ -156,10 +150,27 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         orderInfo.setDeliveryTime(DateUtil.offsetDay(orderInfo.getWlnCreateTime(), 1));
         orderInfo.setRemark(wlnOrder.getString("remark"));
 
-        // 订单状态
-        if (orderInfo.getWlnStatus() == 10 || orderInfo.getWlnStatus() == 11 || orderInfo.getWlnStatus() == 12) {
-            orderInfo.setStatus(OrderStatusEnum.EXCEPTION.getKey());
-        } else if (Objects.equals(department.getOrderMode(), "2")) {
+        // 赋值订单异常类型
+        orderInfo.setExceptionType("0");
+        if (orderInfo.getWlnStatus() == 10) {
+            addExceptionType(orderInfo, OrderExceptionTypeEnum.ORDER_CLOSURE);
+        }
+        if (orderInfo.getWlnStatus() == 11) {
+            addExceptionType(orderInfo, OrderExceptionTypeEnum.ORDER_ABORT);
+        }
+        if (orderInfo.getWlnStatus() == 12) {
+            addExceptionType(orderInfo, OrderExceptionTypeEnum.ORDER_EXCEPTION_HANDLING);
+        }
+
+        // 事业部id
+        if (department == null) {
+            addExceptionType(orderInfo, OrderExceptionTypeEnum.UNKNOWN_WAREHOUSE);
+        } else {
+            orderInfo.setDepartmentId(department.getId());
+        }
+
+        // 订单进度
+        if (department != null && Objects.equals(department.getOrderMode(), "2")) {
             orderInfo.setStatus(OrderStatusEnum.STOCK_PREPARATION.getKey());
         } else {
             orderInfo.setStatus(OrderStatusEnum.UNDER_REVIEW.getKey());
@@ -175,7 +186,6 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     private void updateOrder(OrderContext context, JSONObject wlnOrder, Department department, OrderInfo orderInfo) {
         List<OrderInfo> updateOrderList = context.getUpdateOrderList();
 
-        orderInfo.setDepartmentId(department.getId());
         orderInfo.setWlnStorageCode(wlnOrder.getString("storage_code"));
         orderInfo.setWlnUid(wlnOrder.getString("uid"));
         orderInfo.setCode(wlnOrder.getString("tp_tid"));
@@ -196,6 +206,24 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         orderInfo.setDeliveryTime(DateUtil.offsetDay(orderInfo.getWlnCreateTime(), 1));
         orderInfo.setRemark(wlnOrder.getString("remark"));
 
+        // 赋值订单异常类型
+        if (orderInfo.getWlnStatus() == 10) {
+            addExceptionType(orderInfo, OrderExceptionTypeEnum.ORDER_CLOSURE);
+        }
+        if (orderInfo.getWlnStatus() == 11) {
+            addExceptionType(orderInfo, OrderExceptionTypeEnum.ORDER_ABORT);
+        }
+        if (orderInfo.getWlnStatus() == 12) {
+            addExceptionType(orderInfo, OrderExceptionTypeEnum.ORDER_EXCEPTION_HANDLING);
+        }
+
+        // 事业部id
+        if (department == null) {
+            addExceptionType(orderInfo, OrderExceptionTypeEnum.UNKNOWN_WAREHOUSE);
+        } else {
+            orderInfo.setDepartmentId(department.getId());
+        }
+
         updateOrderList.add(orderInfo);
     }
 
@@ -209,12 +237,16 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         orderSku.setWlnSkuSpecId(wlnOrderSku.getString("sys_spec_uid"));
         orderSku.setWlnSkuName(wlnOrderSku.getString("oln_sku_name"));
         orderSku.setOrderId(orderInfo.getId());
-        orderSku.setSkuId(skuSpec.getSkuId());
-        orderSku.setSkuSpecId(skuSpec.getId());
-        orderSku.setBomSpecId(skuSpec.getBomSpecId());
         orderSku.setQuantity(wlnOrderSku.getBigDecimal("size"));
         orderSku.setPrintType(1);
         orderSku.setStockPreparationStatus(StatusConstant.NO);
+
+        if (skuSpec != null) {
+            orderSku.setSkuId(skuSpec.getSkuId());
+            orderSku.setSkuSpecId(skuSpec.getId());
+            orderSku.setBomSpecId(skuSpec.getBomSpecId());
+        }
+
         return orderSku;
     }
 
@@ -298,8 +330,8 @@ public class WlnOrderServiceImpl implements WlnOrderService {
 
         List<OrderSku> orderSkuList = new ArrayList<>();
 
-        // 是否添加
-        boolean isAdd = true;
+        // 是否异常
+        boolean isException = false;
 
         // 创建订单sku
         for (JSONObject wlnOrderSku : wlnOrder.getJSONArray("orders").toJavaList(JSONObject.class)) {
@@ -311,9 +343,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
             SkuSpec skuSpec = skuSpecMap.get(sysSpecUid);
 
             if (skuSpec == null) {
-                isAdd = false;
-                log.error("没有通过万里牛sys_spec_uid: {} 找到sku规格", sysSpecUid);
-                break;
+                isException = true;
             }
 
             // 创建订单sku
@@ -322,8 +352,8 @@ public class WlnOrderServiceImpl implements WlnOrderService {
 
         }
 
-        if (!isAdd) {
-            return;
+        if (isException) {
+            addExceptionType(orderInfo, OrderExceptionTypeEnum.UNKNOWN_SKU_SPEC);
         }
 
         // 订单关联
@@ -524,6 +554,14 @@ public class WlnOrderServiceImpl implements WlnOrderService {
     }
 
     /**
+     * 添加订单异常类型
+     */
+    private void addExceptionType(OrderInfo orderInfo, OrderExceptionTypeEnum exceptionTypeEnum) {
+        String exceptionType = orderInfo.getExceptionType();
+        orderInfo.setExceptionType(orderService.addExceptionType(exceptionType, exceptionTypeEnum.getKey()));
+    }
+
+    /**
      * 保存或更新数据
      */
     private void saveOrUpdateOrder(OrderContext context) {

+ 0 - 1
sd-wln/src/main/java/com/sd/wln/service/impl/WlnStatementOfAccountImpl.java

@@ -58,7 +58,6 @@ public class WlnStatementOfAccountImpl implements WlnStatementOfAccount {
         List<OrderInfo> orderList = orderService.list(q -> q
                 .in(OrderInfo::getWlnCode, map.keySet())
                 .ge(OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey())
-                .notIn(OrderInfo::getStatus, OrderStatusEnum.DELETE.getKey(), OrderStatusEnum.EXCEPTION.getKey())
                 .isNull(OrderInfo::getStatementOfAccountId)
         );