package com.ld.igds.protocol.quantity.shuhan.command;
|
|
import com.ld.igds.constant.RedisConst;
|
|
import com.ld.igds.io.constant.OrderRespEnum;
|
import com.ld.igds.io.request.QuantityRequest;
|
import com.ld.igds.io.response.BaseResponse;
|
import com.ld.igds.protocol.quantity.shuhan.QueryStatusTask;
|
import com.ld.igds.protocol.quantity.shuhan.ShuHanUtils;
|
import com.ld.igds.protocol.snap.SnapPluginService;
|
import com.ld.igds.quantity.io.RemoteQuantityService;
|
import com.ld.igds.quantity.service.CoreQuantityService;
|
import com.ld.igds.util.RedisUtil;
|
import com.ld.io.api.InvokeResult;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.Executors;
|
import java.util.concurrent.FutureTask;
|
|
/**
|
* 蜀汉粮油协议
|
*
|
* @author vince
|
*/
|
@Slf4j
|
@Component(RemoteQuantityServiceImpl.BEAN_ID)
|
public class RemoteQuantityServiceImpl extends BaseRemoteImpl implements RemoteQuantityService {
|
|
public static final String BEAN_ID = "shly.remoteQuantityService";
|
@Autowired
|
private RedisUtil redisUtil;
|
@Autowired
|
private CoreQuantityService coreQuantityService;
|
@Autowired
|
private SnapPluginService snapService;
|
|
@Override
|
public BaseResponse checkStart(QuantityRequest request) {
|
try {
|
String key = RedisConst.buildKey(request.getCompanyId(), request.getYtIp());
|
|
String msg = CommandBuilder.getCheckMsg(request);
|
log.info("发起数量检测采集命令: " + msg);
|
InvokeResult result = super.send(request.getIp(), request.getPort(), msg.getBytes(ShuHanUtils.CHARSET));
|
// 封装返回信息
|
if (InvokeResult.SUCCESS == result) {
|
//最长保存一个小时
|
redisUtil.set(key, request, 60 * 60);
|
|
//将采集信息放缓存,收到结果后删除
|
|
//启动子任务定时查询进度和结果
|
|
// 创建子任务
|
FutureTask<String> futureTask = new FutureTask<>(new QueryStatusTask(redisUtil, this, coreQuantityService, snapService, key, CommandBuilder.getQueryStatusMsg(request)));
|
ExecutorService executorService = Executors.newCachedThreadPool();
|
executorService.submit(futureTask);
|
executorService.shutdown();
|
|
return new BaseResponse(OrderRespEnum.ORDER_SUCCESS.getCode(),
|
"数量检测采集命令发送成功");
|
} else {
|
log.info("分机" + request.getSerName() + "数量检测采集命令发送失败:" + result.getMessage());
|
return new BaseResponse(OrderRespEnum.ORDER_ERROR.getCode(), result.getMessage());
|
}
|
} catch (Exception e) {
|
log.error(e.getMessage(), e);
|
return new BaseResponse(OrderRespEnum.ORDER_ERROR.getCode(), e.getMessage());
|
}
|
}
|
|
@Override
|
public BaseResponse remoteConf(QuantityRequest request) {
|
return new BaseResponse(OrderRespEnum.NO_FUNCTION);
|
}
|
|
@Override
|
public BaseResponse checkStop(QuantityRequest request) {
|
return new BaseResponse(OrderRespEnum.NO_FUNCTION);
|
}
|
|
@Override
|
public BaseResponse snapImg(QuantityRequest request) {
|
return new BaseResponse(OrderRespEnum.NO_FUNCTION);
|
}
|
|
@Override
|
public BaseResponse closeWarn(QuantityRequest request) {
|
return new BaseResponse(OrderRespEnum.NO_FUNCTION);
|
}
|
|
@Override
|
public BaseResponse ptz(QuantityRequest Request) {
|
return new BaseResponse(OrderRespEnum.NO_FUNCTION);
|
}
|
}
|