package com.ld.igds.protocol.bhzn.verb.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.constant.OrderRespEnum; import com.ld.igds.io.notify.NotifyWebInvoker; 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.BaseResponse; import com.ld.igds.io.response.DeviceControlResponse; import com.ld.igds.protocol.bhzn.verb.builder.ControlCommandBuilder; import com.ld.igds.protocol.bhzn.verb.builder.TempControlCommandBuilder; import com.ld.igds.protocol.bhzn.verb.dto.IoMessage; 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 = "bhzn.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 { IoMessage 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 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) { return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "协议不支持"); } @Override public DeviceControlResponse queryStatus(DeviceControlRequest request) { return new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS); } @Override public DeviceControlResponse tempControl(TempControlRequest request) { try { IoMessage 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) { return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "协议不支持"); } /** * 自动通风,智能控制柜执行 * * @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); } }