package com.ld.igds.protocol.fzzy.command;
|
|
import com.ld.igds.constant.BizType;
|
import com.ld.igds.constant.DeviceStatus;
|
import com.ld.igds.constant.DeviceType;
|
import com.ld.igds.io.RemoteControlService;
|
import com.ld.igds.io.notify.NotifyWebInvoker;
|
import com.ld.igds.io.constant.OrderRespEnum;
|
import com.ld.igds.io.request.DeviceAutoControlRequest;
|
import com.ld.igds.io.request.DeviceControlRequest;
|
import com.ld.igds.io.request.ExeDevice;
|
import com.ld.igds.io.request.TempControlRequest;
|
import com.ld.igds.io.response.DeviceControlResponse;
|
import com.ld.igds.protocol.fzzy.builder.*;
|
import com.ld.igds.protocol.fzzy.dto.SendMessage;
|
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.List;
|
|
@Slf4j
|
@Component(RemoteControlServiceImpl.BEAN_ID)
|
public class RemoteControlServiceImpl extends BaseRemoteImpl implements RemoteControlService {
|
|
public static final String BEAN_ID = "fzzy.remoteControlService";
|
|
@Autowired
|
private NotifyWebInvoker notifyWebInvoker;
|
|
|
@Override
|
public DeviceControlResponse deviceControl(DeviceControlRequest request) {
|
try {
|
controlBatchExe(request);
|
} catch (Exception e) {
|
log.error("平台------>>>>控制柜:设备操作-后端异常-{}", e);
|
return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), e.getMessage());
|
}
|
return new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS);
|
}
|
|
|
/**
|
* 多个设备执行
|
*
|
* @param request
|
* @throws Exception
|
*/
|
public void controlBatchExe(DeviceControlRequest request) throws Exception {
|
|
SendMessage message = ControlCommandBuilder.getInstance().buildMessage(request);
|
|
log.info("平台------>>>>控制柜:设备操作-{}", message.toString());
|
|
InvokeResult result = send(request.getIp(), request.getPort(), message.getByteMsg());
|
|
// 如果有执行异常,直接通知到前端
|
if (InvokeResult.SUCCESS.getCode() != result.getCode()) {
|
log.error("平台------>>>>控制柜:设备操作-执行失败-{}", result.getMessage());
|
notifyWeb(request.getCompanyId(), OrderRespEnum.ORDER_ERROR, "设备操作异常:原因:" + result.getMessage());
|
|
return;
|
}
|
|
List<ExeDevice> listDevice = request.getDeviceList();
|
String deviceType = listDevice.get(0).getType();
|
String targetStatus = listDevice.get(0).getTargetStatus();
|
|
//间隔时间定义
|
long longTime = 1000;
|
|
if (DeviceType.TYPE_01.getCode().equals(deviceType)) {
|
longTime = 15 * 1000;
|
}
|
if (DeviceType.TYPE_0B.getCode().equals(deviceType)) {
|
longTime = 15 * 1000;
|
}
|
if (DeviceType.TYPE_07.getCode().equals(deviceType)) {
|
longTime = 15 * 1000;
|
}
|
if (DeviceType.TYPE_06.getCode().equals(deviceType)) {
|
longTime = 500;
|
}
|
if (DeviceType.TYPE_09.getCode().equals(deviceType)) {
|
longTime = 15 * 1000;
|
}
|
if (DeviceStatus.W_OPEN.getCode().equals(targetStatus) || DeviceStatus.W_CLOSE.getCode().equals(targetStatus)) {
|
longTime = 15 * 1000;
|
}
|
if (DeviceStatus.F_OPEN.getCode().equals(targetStatus) || DeviceStatus.F_OPEN_F.getCode().equals(targetStatus)) {
|
longTime = 3 * 1000;
|
}
|
|
Thread.sleep(longTime);
|
|
//如果不是系统执行,直接诶获取设备状态
|
if (!request.isSysExeTag()) {
|
log.debug("--------------------执行完成后,系统自动发送状态查询------------------{}", request.getDepotId());
|
queryStatus(request);
|
}
|
}
|
|
@Override
|
public DeviceControlResponse closeAll(DeviceControlRequest request) {
|
SendMessage message = CloseAllCommandBuilder.getInstance().buildMessage(request);
|
|
|
log.info("平台------>>>>控制柜:设备全部关闭-{}", message.toString());
|
|
InvokeResult result = send(request.getIp(), request.getPort(), message.getByteMsg());
|
|
// 如果有执行异常,直接通知到前端
|
if (InvokeResult.SUCCESS.getCode() != result.getCode()) {
|
log.error("平台------>>>>控制柜:设备全部关闭-执行失败-{}", result.getMessage());
|
|
notifyWeb(request.getCompanyId(), OrderRespEnum.ORDER_ERROR, "设备操作异常:原因:" + result.getMessage());
|
|
return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "执行异常:原因:" + result.getMessage());
|
}
|
|
return new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS);
|
}
|
|
@Override
|
public DeviceControlResponse queryStatus(DeviceControlRequest request) {
|
|
SendMessage message = StatusCommandBuilder.getInstance().buildMessage(request);
|
|
log.info("平台------>>>>控制柜:设备状态查询-{}", message.toString());
|
|
InvokeResult result = send(request.getIp(), request.getPort(), message.getByteMsg());
|
|
// 如果有执行异常,直接通知到前端
|
if (InvokeResult.SUCCESS.getCode() != result.getCode()) {
|
log.error("平台------>>>>控制柜:设备状态查询-执行失败-{}", result.getMessage());
|
|
notifyWeb(request.getCompanyId(), OrderRespEnum.ORDER_ERROR, request.getSerId() + " 控制柜异常:原因:" + result.getMessage());
|
|
return new DeviceControlResponse(OrderRespEnum.NO_SIGN.getCode(), "终端控制柜不在线");
|
}
|
|
return new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS);
|
}
|
|
|
@Override
|
public DeviceControlResponse tempControl(TempControlRequest request) {
|
try {
|
SendMessage message = TempControlCommandBuilder.getInstance().buildMessage(request);
|
|
log.info("平台------>>>>控制柜:空调设备操作-{}", message.toString());
|
|
InvokeResult result = send(request.getIp(), request.getPort(), message.getByteMsg());
|
|
// 如果有执行异常,直接通知到前端
|
if (InvokeResult.SUCCESS.getCode() != result.getCode()) {
|
log.error("平台------>>>>控制柜:空调设备操作-执行失败-{}", result.getMessage());
|
|
// notifyWeb(request.getCompanyId(), OrderRespEnum.ORDER_ERROR, "设备操作异常:原因:" + result.getMessage());
|
|
return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "执行异常:原因:" + result.getMessage());
|
}
|
|
} catch (Exception e) {
|
log.error("平台------>>>>控制柜:空调设备操作-后端异常-{}", e);
|
return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), e.getMessage());
|
}
|
|
return new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS);
|
}
|
|
|
@Override
|
public DeviceControlResponse n2AutoControl(DeviceAutoControlRequest request) {
|
try {
|
SendMessage message = N2AutoCommandBuilder.getInstance().buildMessage(request);
|
|
log.info("平台------>>>>控制柜:平台发起自动气调-{}", message.toString());
|
|
InvokeResult result = send(request.getIp(), request.getPort(), message.getByteMsg());
|
|
if (InvokeResult.SUCCESS.getCode() != result.getCode()) {
|
log.error("平台------>>>>控制柜:平台发起自动气调-执行失败-{}", result.getMessage());
|
|
//notifyWeb(request.getCompanyId(), OrderRespEnum.ORDER_ERROR, "平台发起自动气调失败:原因:" + result.getMessage());
|
|
return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "执行异常:原因:" + result.getMessage());
|
}
|
|
} catch (Exception e) {
|
log.error("平台------>>>>控制柜:平台发起自动气调-后端异常-{}", e);
|
return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), e.getMessage());
|
}
|
|
return new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS);
|
}
|
|
|
/**
|
* 自动通风,智能控制柜执行
|
*
|
* @param request
|
* @return
|
*/
|
@Override
|
public DeviceControlResponse airAutoControl(DeviceAutoControlRequest request) {
|
return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "当前协议不支持当前模式!");
|
}
|
|
/**
|
* 页面通知
|
*
|
* @param companyId
|
* @param orderResp
|
* @param notifyMsg
|
*/
|
private void notifyWeb(String companyId, OrderRespEnum orderResp,
|
String notifyMsg) {
|
notifyWebInvoker.notifyWeb(companyId, orderResp, BizType.AREATION,
|
notifyMsg);
|
}
|
|
|
}
|