自动化立体仓库 - WMS系统
1
zhang
9 小时以前 42ba7926de5f21a2856e4c7b9c5ce148413b6cbe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package com.zy.asrs.task;
 
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.Review;
import com.zy.asrs.entity.ReviewDetl;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.service.ReviewDetlService;
import com.zy.asrs.service.ReviewService;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.OrderSyncHandler;
import com.zy.system.entity.Config;
import com.zy.system.mapper.ConfigMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
import javax.annotation.Resource;
import java.util.List;
 
/**
 * Created by vincent on 2020/7/7
 */
@Slf4j
@Component
public class OrderSyncScheduler {
 
    @Autowired
    private OrderSyncHandler orderSyncHandler;
    @Autowired
    private OrderService orderService;
    @Autowired
    private ReviewService reviewService;
    @Autowired
    private ReviewDetlService reviewDetlService;
    @Autowired
    private ApiLogService apiLogService;
    @Resource
    private ConfigMapper configMapper;
 
    @Scheduled(cron = "0 0 1 * * ? ")
    public void clearApiLog() {
        try {
            apiLogService.clearWeekBefore();
        } catch (Exception e) {
            log.error("第三方接口日志自动清除失败(范围:一周之前", e);
        }
    }
 
    @Scheduled(cron = "0/9 * * * * ? ")
    @Async("orderThreadPool")
    public void completeAndReport() {
        Config config = configMapper.selectConfigByCode("erpReport");
        if (config == null || config.getStatus() == 0) {
            return;
        }
 
        List<Order> orders = orderService.selectComplete();
        for (Order order : orders) {
            try {
                ReturnT<String> result = orderSyncHandler.start(order);
                if (!result.isSuccess()) {
                    log.error("单据[orderNo={}]上报erp失败", order.getOrderNo());
                }
            } catch (Exception e) {
                log.error("单据[orderNo={}]上报erp失败", order.getOrderNo());
                log.error("订单" + order + "处理失败,异常信息:" + e);
            }
        }
 
    }
 
    //@Scheduled(cron = "0/9 * * * * ? ")
    //@Async("orderThreadPool")
    public void completeAndReport2() {
        Config config = configMapper.selectConfigByCode("RETURN_REPORT");
        if (config == null || config.getStatus() == 0 || Cools.isEmpty(config.getValue())) {
            return;
        }
        List<Order> orders = orderService.selectComplete2();
        for (Order order : orders) {
            try {
                ReturnT<String> result = orderSyncHandler.start(order);
                if (!result.isSuccess()) {
                    log.error("单据[orderNo={}]上报erp失败", order.getOrderNo());
                }
            } catch (Exception e) {
                log.error("单据[orderNo={}]上报erp失败", order.getOrderNo());
                log.error("订单" + order + "处理失败,异常信息:" + e);
            }
        }
        orders = orderService.selectComplete3();
        for (Order order : orders) {
            try {
                ReturnT<String> result = orderSyncHandler.start(order);
                if (!result.isSuccess()) {
                    log.error("单据[orderNo={}]上报erp失败", order.getOrderNo());
                }
            } catch (Exception e) {
                log.error("单据[orderNo={}]上报erp失败", order.getOrderNo());
                log.error("订单" + order + "处理失败,异常信息:" + e);
            }
        }
    }
 
 
    @Scheduled(cron = "0/30 * * * * ? ")
    public void complete() {
        List<Review> orders = reviewService.selectList(new EntityWrapper<Review>().eq("settle", 2));
        for (Review order : orders) {
            try {
                boolean flag = true;
                List<ReviewDetl> reviewDetls = reviewDetlService.selectList(new EntityWrapper<ReviewDetl>().eq("order_no", order.getOrderNo()));
                for (ReviewDetl reviewDetl : reviewDetls) {
                    if (Cools.isEmpty(reviewDetl.getInspect()) || reviewDetl.getInspect() == 0) {
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    order.setSettle(4L);
                    reviewService.updateById(order);
                }
                log.info("单据[orderNo={}]处理完成", order.getOrderNo());
            } catch (Exception e) {
                log.error("单据[orderNo={}]处理失败,异常信息:" + e, order.getOrderNo());
            }
        }
    }
}