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);
|
}
|
}
|
}
|