vince
2023-07-01 7d84b6cbf8268a6993f661e22a842ffa12c13732
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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;
        }
 
    }
}