package com.ld.igds.protocol.bhzn.verb.builder;
|
|
import com.alibaba.fastjson.JSON;
|
import com.ld.igds.constant.DeviceStatus;
|
import com.ld.igds.constant.DeviceType;
|
import com.ld.igds.io.request.ExeDevice;
|
import com.ld.igds.io.request.TempControlRequest;
|
import com.ld.igds.protocol.bhzn.verb.dto.IoMessage;
|
import com.ld.igds.protocol.bhzn.verb.dto.Req248;
|
import com.ld.igds.protocol.bhzn.verb.server.BhznVerbServerUtils;
|
import com.ld.igds.util.BytesUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
|
import java.util.List;
|
@Slf4j
|
public class TempControlCommandBuilder extends CommandBuilder {
|
|
private final static TempControlCommandBuilder instance = new TempControlCommandBuilder();
|
|
private TempControlCommandBuilder() {
|
}
|
|
public static TempControlCommandBuilder getInstance() {
|
return instance;
|
}
|
|
public IoMessage buildMessage(TempControlRequest request) {
|
|
IoMessage message = new IoMessage();
|
message.setIp(request.getIp());
|
message.setPort(request.getPort());
|
message.setBegin(BhznVerbServerUtils.MSG_START1);
|
// 调整信息
|
buildInfo(message, request);
|
message.setSign("0000");
|
message.setVersion("V1.0000000");
|
message.setStNum(Integer.parseInt(request.getDepotId()));
|
message.setSn(request.getSerId());
|
message.setCmd(248);
|
message.setResult("");
|
message.setOrderId(request.getOrderId());
|
message.setEnd(BhznVerbServerUtils.MSG_END);
|
// 生成整体命令信息和BYte信息
|
build(message);
|
|
return message;
|
}
|
|
public void buildInfo(IoMessage message, TempControlRequest request) {
|
Req248 info = new Req248();
|
Integer[] winStr = new Integer[]{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
|
Integer[] fanStr = new Integer[]{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
|
Integer[] airStr = new Integer[]{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
|
Integer[] lightStr = new Integer[]{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
|
int winCount = 0,fanCount = 0,airCount = 0,lightCount = 0;
|
ExeDevice exeDevice = request.getExeDevice();
|
|
//空调类型设备
|
airStr[exeDevice.getPassCode()-41] = getAirStatus(request);
|
airCount = exeDevice.getPassCode()-41;
|
info.setWinCount(winCount);
|
info.setWin_Str(winStr);
|
info.setFanCount(fanCount);
|
info.setFan_Str(fanStr);
|
info.setAirCount(airCount);
|
info.setAir_Str(airStr);
|
info.setLightCount(lightCount);
|
info.setLight_Str(lightStr);
|
message.setContentStr(JSON.toJSONString(info));
|
}
|
|
|
private Integer getAirStatus(TempControlRequest request){
|
try{
|
String h = "";
|
String l = "";
|
h = "001"+h;
|
if(DeviceStatus.OPEN.getCode().equals(request.getExeDevice().getTargetStatus())){
|
h = "1"+h;
|
}else{
|
h = "0"+h;
|
}
|
h = "0000"+h;
|
h = BytesUtil.hexToInt(BytesUtil.bin2Hex(h)) + "";
|
if (h.length() < 2) {
|
h = "0" + h;
|
}
|
l = BytesUtil.intToHexStr1(Integer.parseInt(request.getTargetTemp()));
|
String s= l+ h ;
|
return BytesUtil.hexToInt(s);
|
}catch (Exception e){
|
log.error(e.getMessage(),e);
|
return -1;
|
}
|
|
}
|
}
|