package com.ld.igds.protocol.fzzy.builder; import com.ld.igds.constant.DeviceStatus; import com.ld.igds.io.request.DeviceControlRequest; import com.ld.igds.io.request.ExeDevice; import com.ld.igds.protocol.fzzy.ServerUtils; import com.ld.igds.protocol.fzzy.dto.MessageInfo; import com.ld.igds.protocol.fzzy.dto.SendMessage; import com.ld.igds.protocol.fzzy.req.Request3101; import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.List; public class ControlCommandBuilder extends CommandBuilder { private final static ControlCommandBuilder instance = new ControlCommandBuilder(); private ControlCommandBuilder() { } public static ControlCommandBuilder getInstance() { return instance; } public SendMessage buildMessage(DeviceControlRequest request) { SendMessage message = new SendMessage(); message.setIp(request.getIp()); message.setPort(request.getPort()); message.setBegin(ServerUtils.MSG_BEGIN); // 调整信息 buildInfo(message, request); message.setEnd(ServerUtils.MSG_END); // 生成整体命令信息和BYte信息 build(message); return message; } public void buildInfo(SendMessage message, DeviceControlRequest request) { MessageInfo info = new MessageInfo(); info.setSign(request.getCompanyId()); info.setIedId(request.getSerId()); info.setFunctionId(ServerUtils.FUNCTION_3101); info.setRespCode("0000"); info.setOrderId(request.getOrderId()); info.setUserData("0"); info.setSign("0000"); List deviceList = request.getDeviceList(); List request3101List = new ArrayList<>(); Request3101 request3101; for (ExeDevice exeDevice : deviceList) { request3101 = new Request3101(); request3101.setDeviceId(exeDevice.getPassCode() + ""); if(StringUtils.isNotEmpty(exeDevice.getLink()) && !"null".equals(exeDevice.getLink())){ if(DeviceStatus.F_CLOSE.getCode().equals(exeDevice.getTargetStatus())){ request3101.setDeviceId(exeDevice.getLink()); } if(DeviceStatus.F_OPEN.getCode().equals(exeDevice.getTargetStatus())){ request3101.setDeviceId(exeDevice.getLink()); } if(DeviceStatus.F_OPEN_F.getCode().equals(exeDevice.getTargetStatus())){ request3101.setDeviceId(exeDevice.getLink()); } } request3101.setStatus(ServerUtils.getDeviceSendStatus(exeDevice)); request3101List.add(request3101); } info.setContent(request3101List); message.setInfo(info); } }