Browse Source

门店供应链物品管理/记录

zhangkaikai 1 year ago
parent
commit
135c5b3145

+ 1 - 1
mp-common/src/main/java/com/qs/mp/common/enums/CouponTypeEnum.java

@@ -17,7 +17,7 @@ public enum CouponTypeEnum implements IEnum<Integer> {
   TICKET_ORDER(1, "盲票购买"),
   SITE_CONSUME(2, "门店消费"),
   CHANNEL(3, "经销商采购"),
-  SITE_GOODS_VERITY(4, "门店采购商品核销")
+  SITE_GOODS_VERITY(4, "采购商品核销")
   ;
 
 

+ 84 - 0
mp-quartz/src/main/java/com/qs/mp/quartz/task/ChannelGoodsOrderTask.java

@@ -0,0 +1,84 @@
+package com.qs.mp.quartz.task;
+
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.qs.mp.channel.domain.ChannelGoodsOrder;
+import com.qs.mp.channel.domain.ChannelOrder;
+import com.qs.mp.channel.service.IChannelGoodsOrderService;
+import com.qs.mp.common.enums.ChannelGoodsOrderStatusEnum;
+import com.qs.mp.common.enums.ChannelOrderStatusEnum;
+import com.qs.mp.common.utils.DateUtils;
+import com.qs.mp.common.utils.LogUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
+import java.util.List;
+
+/**
+ * @author zhangkaikai
+ * @create 2023-06-08 9:54 PM
+ **/
+@Component("channelGoodsOrderTask")
+public class ChannelGoodsOrderTask {
+
+    protected final Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName());
+
+    @Autowired
+    private IChannelGoodsOrderService channelGoodsOrderService;
+
+    private final int PAGE_SIZE = 500;
+
+
+    /**
+     * x天前的待收货订单自动确认收货任务
+     */
+    public void confirm(Integer day) {
+        LogUtil.info(logger, "...渠道商采购商品订单自动确认收货任务开始...");
+        LocalDateTime now = LocalDateTimeUtil.now();
+        LocalDateTime deliveryTime = LocalDateTimeUtil.offset(now, -day, ChronoUnit.DAYS);
+
+        List<ChannelGoodsOrder> channelOrderList = channelGoodsOrderService.list(new LambdaQueryWrapper<ChannelGoodsOrder>()
+                .eq(ChannelGoodsOrder::getStatus, ChannelGoodsOrderStatusEnum.NOT_CONFIRM.getValue())
+                .le(ChannelGoodsOrder::getDeliveryTime, deliveryTime));
+
+        if (CollectionUtils.isNotEmpty(channelOrderList)) {
+            for (ChannelGoodsOrder channelGoodsOrder : channelOrderList) {
+                channelGoodsOrderService.confirmOrder(channelGoodsOrder);
+            }
+        }
+
+        LogUtil.info(logger, "...渠道商采购商品订单自动确认收货任务结束...");
+    }
+
+
+
+    /**
+     * 订单取消到期任务
+     */
+    public void cancel() {
+        LogUtil.info(logger, "...渠道未支付采购商品订单定时取消任务开始...");
+        int total = PAGE_SIZE;
+        while (total == PAGE_SIZE) {
+            // 捞取30分钟前未支付订单
+            List<ChannelGoodsOrder> channelGoodsOrderList = channelGoodsOrderService.list(
+                    new LambdaQueryWrapper<ChannelGoodsOrder>()
+                            .eq(ChannelGoodsOrder::getStatus, ChannelOrderStatusEnum.NOT_PAY)
+                            .lt(ChannelGoodsOrder::getCreatedTime, DateUtils.addMinutes(DateUtils.getNowDate(), -30))
+                            .last("limit " + PAGE_SIZE));
+            total = channelGoodsOrderList.size();
+            for (ChannelGoodsOrder channelGoodsOrder : channelGoodsOrderList) {
+                try {
+                    channelGoodsOrderService.cancelOrder(channelGoodsOrder.getChannelId(), channelGoodsOrder.getOrderId());
+                } catch (Exception e) {
+                    LogUtil.error(logger, e, "定时取消未支付渠道采购商品订单异常。orderId:{0}", channelGoodsOrder.getOrderId());
+                }
+            }
+        }
+        LogUtil.info(logger, "...渠道未支付采购商品订单定时取消任务结束...");
+    }
+}