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<ExeDevice> deviceList = request.getDeviceList();
|
|
List<Request3101> 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);
|
}
|
|
}
|