CZT
2023-10-11 f169fcb00f7bf8c15bb1d461cd3710ebaf8106e8
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
package com.ld.igds.grain.manager;
 
import com.ld.igds.io.RemoteGrainService;
import com.ld.igds.io.constant.OrderRespEnum;
import com.ld.igds.io.request.CheckGrainRequest;
import com.ld.igds.io.response.GrainResponse;
import com.ld.igds.models.DepotConf;
import com.ld.igds.models.DicSysConf;
import com.ld.igds.order.ExeOrderService;
import com.ld.igds.order.data.ExeRequest;
import lombok.extern.slf4j.Slf4j;
 
import java.util.concurrent.Callable;
 
/**
 * 为了避免一个分机同时支持多个分机,当分机在被调用时候,创建子任务执行四次
 */
@Slf4j
public class GrainTask implements Callable<String> {
 
    private RemoteGrainService remoteGrainService;
 
    private ExeOrderService exeOrderService;
 
    private CheckGrainRequest request;
 
    private DepotConf depotConf;
 
    private DicSysConf sysConf;
 
    private Integer index;
 
    public RemoteGrainService getRemoteGrainService() {
        return remoteGrainService;
    }
 
    public CheckGrainRequest getRequest() {
        return request;
    }
 
    public void setRemoteGrainService(RemoteGrainService remoteGrainService) {
        this.remoteGrainService = remoteGrainService;
    }
 
    public void setRequest(CheckGrainRequest request) {
        this.request = request;
    }
 
    public DepotConf getDepotConf() {
        return depotConf;
    }
 
    public DicSysConf getSysConf() {
        return sysConf;
    }
 
    public void setDepotConf(DepotConf depotConf) {
        this.depotConf = depotConf;
    }
 
    public void setSysConf(DicSysConf sysConf) {
        this.sysConf = sysConf;
    }
 
    public void setIndex(Integer index) {
        this.index = index;
    }
 
    public GrainTask() {
        super();
    }
 
    public ExeOrderService getExeOrderService() {
        return exeOrderService;
    }
 
    public void setExeOrderService(ExeOrderService exeOrderService) {
        this.exeOrderService = exeOrderService;
    }
 
    public GrainTask(RemoteGrainService remoteGrainService, ExeOrderService exeOrderService, CheckGrainRequest request, DepotConf depotConf, DicSysConf sysConf, Integer index) {
        super();
        this.remoteGrainService = remoteGrainService;
        this.exeOrderService = exeOrderService;
        this.request = request;
        this.depotConf = depotConf;
        this.sysConf = sysConf;
        this.index = index;
    }
 
    @Override
    public String call() throws Exception {
        long sleepTime = index * 40 * 1000;
        Thread.sleep(sleepTime);
 
        ExeRequest newExeRequest = new ExeRequest(request);
        doBatchCheck(newExeRequest);
 
        return "SUCCESS";
    }
 
    private void doBatchCheck(ExeRequest exeRequest) {
        try {
            GrainResponse tempResp = remoteGrainService.checkGrain(request);
 
            if (OrderRespEnum.ORDER_SUCCESS.getCode().equals(tempResp.getCode())) {
                exeOrderService.addLogAndCache(exeRequest);
            } else {
                String msg = depotConf.getDepotName() + " 粮情命令发送异常:" + tempResp.getMsg();
                exeOrderService.addErrorCache(request, msg);
            }
 
            Thread.sleep(1000);
        } catch (Exception e) {
            String msg = depotConf.getDepotName() + "粮情请求失败,原因:" + e.getMessage();
 
            log.error("粮情一分机多仓执行失败---------{}", msg);
        }
    }
}