package com.ld.igds.io.impl; import com.ld.igds.common.CoreDeviceService; 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.constant.ProtocolEnum; 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.models.Device; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; /** * 默认实现类,直接返回 */ @Slf4j @Component public class DefaultRemoteControlImpl implements RemoteControlService { @Autowired private NotifyWebInvoker notifyWebInvoker; @Autowired private CoreDeviceService coreDeviceService; @Override public String getProtocol() { return ProtocolEnum.TCP_DEFAULT.getCode(); } @Override public DeviceControlResponse deviceControl(DeviceControlRequest request) { log.info("-----------------------执行默认协议-系统模拟设备操作----------------{}", request.toString()); try { List listDevice = request.getDeviceList(); String deviceType = listDevice.get(0).getType(); String targetStatus = listDevice.get(0).getTargetStatus(); //间隔时间定义 long longTime = 3 * 1000, longTimeW = 5 * 1000; if (request.isSysExeTag()) { longTime = 800; longTimeW = 800; } if (DeviceType.TYPE_01.getCode().equals(deviceType)) { longTime = longTimeW; } if (DeviceType.TYPE_0B.getCode().equals(deviceType)) { longTime = longTimeW; } if (DeviceType.TYPE_07.getCode().equals(deviceType)) { longTime = longTimeW; } if (DeviceType.TYPE_09.getCode().equals(deviceType)) { longTime = longTimeW; } if (DeviceStatus.W_OPEN.getCode().equals(targetStatus) || DeviceStatus.W_CLOSE.getCode().equals(targetStatus)) { longTime = longTimeW; } Thread.sleep(longTime); // 模拟已经成功 List deviceList = coreDeviceService.getCacheDeviceBySerId(request.getCompanyId(), request.getSerId()); for (ExeDevice exDevice : listDevice) { Device temp; for (int i = 0; i < deviceList.size(); i++) { temp = deviceList.get(i); if (exDevice.getPassCode() == temp.getPassCode()) { temp.setStatus(exDevice.getTargetStatus()); deviceList.set(i, temp); } } } coreDeviceService.updateCacheDeviceBySerId(deviceList, request.getCompanyId(), request.getSerId()); notifyWebInvoker.notifyWeb(request.getCompanyId(), OrderRespEnum.NO_PROTOCOL, BizType.SYS, "当前为演示协议解析!!"); return new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS); } catch (Exception e) { return new DeviceControlResponse(OrderRespEnum.NO_PROTOCOL); } } @Override public DeviceControlResponse closeAll(DeviceControlRequest request) { return new DeviceControlResponse(OrderRespEnum.NO_PROTOCOL); } @Override public DeviceControlResponse queryStatus(DeviceControlRequest request) { try { Thread.sleep(2 * 1000); notifyWebInvoker.notifyAnalysisStatusSuccess(request.getCompanyId(), request.getSerId(), OrderRespEnum.MSG_SUCCESS, "状态查询成功……"); } catch (Exception e) { } return new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS); } @Override public DeviceControlResponse tempControl(TempControlRequest request) { return new DeviceControlResponse(OrderRespEnum.NO_PROTOCOL); } @Override public DeviceControlResponse airAutoControl(DeviceAutoControlRequest request) { return new DeviceControlResponse(OrderRespEnum.NO_PROTOCOL); } @Override public DeviceControlResponse n2AutoControl(DeviceAutoControlRequest request) { return new DeviceControlResponse(OrderRespEnum.NO_PROTOCOL); } }