jiazx0107@163.com
2023-05-17 620eab6cca2bc9ef9ea6d3067a0a5ba1deadbd1c
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
package com.ld.igds.io.fzzy.command;
 
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ld.igds.io.fzzy.ServerUtils;
import com.ld.igds.io.fzzy.dto.IoMessage;
import com.ld.igds.io.fzzy.dto.Req1001;
import com.ld.igds.io.fzzy.dto.Resp1002;
import com.ld.igds.io.request.QuantityRequest;
 
 
/**
 * 命令生成
 *
 * @author vince
 */
public class CommandBuilder {
 
    /**
     * 下发配置
     *
     * @param request
     * @return
     */
    public IoMessage build1001Message(QuantityRequest request) {
        IoMessage message = new IoMessage();
        // 调整信息
        buildInfo(message, request);
        Req1001 req1001 = new Req1001();
        req1001.setHeight(request.getHeight().intValue());
        req1001.setOrien(1);
        req1001.setVoluWeight(request.getDensity().intValue());
        req1001.setStorageType("01".equals(request.getDepotType()) ? 1 : 0);
 
        req1001.setWeightAdd(request.getWeightAdd().intValue());
        req1001.setVolumeAdd(request.getVolumeAdd().intValue());
        if ("01".equals(request.getDepotType())) {
            req1001.setStorageType(1);
            req1001.setLength(Integer.parseInt((request.getLength() * 100.00) + ""));
            req1001.setWidth(Integer.parseInt((request.getWidth() * 100.00) + ""));
        } else {
            req1001.setStorageType(0);
            req1001.setRadius(Integer.parseInt((request.getWidth() * 100.00) + "")); //筒仓时候宽度当作半径
        }
        message.setContent(JSON.toJSONString(req1001));
        message.setFunctionId(ServerUtils.FUNCTION_1001);
        return message;
    }
 
    /**
     * 回复时间
     *
     * @return
     */
    public IoMessage build1002Message(IoMessage message) {
        message.setFunctionId(ServerUtils.FUNCTION_1002);
        Resp1002 resp1002 = new Resp1002();
        resp1002.setTime(System.currentTimeMillis());
        message.setContent(JSON.toJSONString(resp1002));
        return message;
    }
 
    /**
     * 回复登陆成功
     *
     * @return
     */
    public IoMessage build1003Message(IoMessage message) {
        message.setFunctionId(ServerUtils.FUNCTION_1003);
        message.setContent(null);
        return message;
    }
 
    /**
     * 开始检测
     *
     * @param request
     * @return
     */
    public IoMessage build2001Message(QuantityRequest request) {
        IoMessage message = new IoMessage();
        // 调整信息
        buildInfo(message, request);
        message.setFunctionId(ServerUtils.FUNCTION_2001);
        return message;
    }
 
    /**
     * 停止检测
     *
     * @param request
     * @return
     */
    public IoMessage build2002Message(QuantityRequest request) {
        IoMessage message = new IoMessage();
        // 调整信息
        buildInfo(message, request);
        message.setFunctionId(ServerUtils.FUNCTION_2002);
        return message;
    }
 
    /**
     * 进度查询
     *
     * @param request
     * @return
     */
    public IoMessage build2003Message(QuantityRequest request) {
        IoMessage message = new IoMessage();
        // 调整信息
        buildInfo(message, request);
        message.setFunctionId(ServerUtils.FUNCTION_2003);
        return message;
    }
 
    /**
     * 结果上报
     *
     * @param
     * @return
     */
    public IoMessage build2004Message(IoMessage message) {
        message.setFunctionId(ServerUtils.FUNCTION_2004);
        message.setContent(null);
        return message;
    }
 
    /**
     * 查询点位数据
     *
     * @param request
     * @return
     */
    public IoMessage build2005Message(QuantityRequest request) {
        IoMessage message = new IoMessage();
        // 调整信息
        buildInfo(message, request);
        message.setFunctionId(ServerUtils.FUNCTION_2005);
        return message;
    }
 
    /**
     * 抓拍
     *
     * @param message
     * @return
     */
    public IoMessage build2006Message(IoMessage message) {
        message.setFunctionId(ServerUtils.FUNCTION_2006);
        message.setContent("");
        return message;
    }
 
    /**
     * 抓拍
     *
     * @param request
     * @return
     */
    public IoMessage build2006Message(QuantityRequest request) {
        IoMessage message = new IoMessage();
        // 调整信息
        buildInfo(message, request);
        message.setFunctionId(ServerUtils.FUNCTION_2006);
        return message;
    }
 
    /**
     * 心跳返回
     *
     * @param message
     * @return
     */
    public IoMessage build2007Message(IoMessage message) {
        //message.setFunctionId(ServerUtils.FUNCTION_2007);
        return message;
    }
 
    public void buildInfo(IoMessage message, QuantityRequest request) {
        message.setSn(request.getSn());
        message.setOrderId(ServerUtils.createOrderId());
        message.setSign(ServerUtils.SIGN_DEFAULT);
        message.setResult(ServerUtils.RESP_0);
        message.setVersion(ServerUtils.VERSION_1);
    }
 
    /**
     * 根据生成的命令,进行调整
     *
     * @param message
     */
    public String build(IoMessage message) {
        StringBuffer hexSb = new StringBuffer();
        hexSb.append(ServerUtils.MSG_BEGIN);
        hexSb.append(JSONObject.toJSONString(message));
        hexSb.append((ServerUtils.MSG_END));
        return hexSb.toString();
    }
 
 
    private static CommandBuilder instance = new CommandBuilder();
 
    private CommandBuilder() {
    }
 
    public static CommandBuilder getInstance() {
        return instance;
    }
 
 
}