| | |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.zy.common.Cools; |
| | | import com.zy.common.SpringUtils; |
| | | import com.zy.common.exception.CoolException; |
| | | import com.zy.common.utils.RedisUtil; |
| | | import com.zy.core.News; |
| | | import com.zy.core.ThreadHandler; |
| | |
| | | |
| | | |
| | | private RedisUtil redisUtil; |
| | | private JSONObject fakeStatusDemo = JSONObject.parseObject("{\"mode\":1,\"extend\":{\"countQuantity\":400,\"suspendState\":0,\"minCellVoltage\":3279,\"chargeCycleTimes\":0,\"maxCellVoltage\":3281,\"surplusQuantity\":204,\"voltage\":5248},\"hasLift\":false,\"hasPallet\":false,\"batteryVoltage\":5248,\"runDirection\":\"2\",\"currentCode\":\"{\\\"x\\\":12,\\\"y\\\":37,\\\"z\\\":3}\",\"errorCode\":\"0\",\"hasCharge\":false,\"batteryPower\":\"51\",\"speed\":0,\"deviceStatus\":1}"); |
| | | private JSONObject fakeStatusDemo = JSONObject.parseObject("{\"mode\":1,\"extend\":{\"countQuantity\":400,\"suspendState\":0,\"minCellVoltage\":3279,\"chargeCycleTimes\":0,\"maxCellVoltage\":3281,\"surplusQuantity\":204,\"voltage\":5248},\"hasLift\":false,\"hasPallet\":false,\"batteryVoltage\":5248,\"runDirection\":\"2\",\"currentCode\":\"{\\\"x\\\":19,\\\"y\\\":11,\\\"z\\\":2}\",\"errorCode\":\"0\",\"hasCharge\":false,\"batteryPower\":\"51\",\"speed\":0,\"deviceStatus\":1}"); |
| | | private HashMap<String, Socket> fakeServerMap = new HashMap(); |
| | | private HashMap<String, JSONObject> fakeStatusMap = new HashMap(); |
| | | |
| | |
| | | try { |
| | | ServerSocket serverSocket = new ServerSocket(device.getPort()); |
| | | Socket fakeSocket = serverSocket.accept(); |
| | | |
| | | String fakeStatus = JSON.toJSONString(fakeStatusDemo); |
| | | if (!Cools.isEmpty(device.getFakeInitStatus())) { |
| | | fakeStatus = device.getFakeInitStatus(); |
| | | } |
| | | |
| | | fakeServerMap.put(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo(), fakeSocket); |
| | | fakeStatusMap.put(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo(), JSON.parseObject(JSON.toJSONString(fakeStatusDemo))); |
| | | fakeStatusMap.put(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo(), JSON.parseObject(fakeStatus)); |
| | | while (true) { |
| | | if(fakeSocket == null) { |
| | | fakeServerMap.remove(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo()); |
| | | break; |
| | | } |
| | | |
| | | if(fakeSocket.isClosed()) { |
| | | fakeSocket = null; |
| | | continue; |
| | | } |
| | | |
| | | handleClient(fakeSocket, device); |
| | |
| | | log.info("收到Client Data: {}", JSON.toJSONString(result)); |
| | | processCommand(result, device); |
| | | } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | socket.close(); |
| | | fakeServerMap.remove(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo()); |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | |
| | | JSONObject fakeStatus = fakeStatusMap.get(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo()); |
| | | |
| | | JSONObject request = result.getJSONObject("request"); |
| | | JSONObject header = request.getJSONObject("header"); |
| | | JSONObject body = request.getJSONObject("body"); |
| | | |
| | | Integer requestId = header.getInteger("requestId"); |
| | | String requestType = body.getString("requestType"); |
| | | Integer taskId = body.getInteger("taskId"); |
| | | if (requestType.equals("liftUp")) { |
| | | fakeStatus.put("hasLift", true); |
| | | response = genereateFakeCommandResponse(requestId, taskId, requestType); |
| | | } else if (requestType.equals("liftDown")) { |
| | | fakeStatus.put("hasLift", false); |
| | | response = genereateFakeCommandResponse(requestId, taskId, requestType); |
| | | } else if (requestType.equals("charge")) { |
| | | fakeStatus.put("hasCharge", true); |
| | | response = genereateFakeCommandResponse(requestId, taskId, requestType); |
| | | } else if (requestType.equals("stopCharge")) { |
| | | fakeStatus.put("hasCharge", false); |
| | | response = genereateFakeCommandResponse(requestId, taskId, requestType); |
| | | } else if (requestType.equals("updateFloor")) { |
| | | String currentCode = fakeStatus.getString("currentCode"); |
| | | JSONObject point = JSON.parseObject(currentCode); |
| | | point.put("z", body.getInteger("z")); |
| | | fakeStatus.put("currentCode", JSON.toJSONString(point)); |
| | | response = genereateFakeCommandResponse(requestId, taskId, requestType); |
| | | } else if (requestType.equals("move")) { |
| | | String pathList = body.getString("path"); |
| | | List<JSONObject> list = JSON.parseArray(pathList, JSONObject.class); |
| | |
| | | } |
| | | } |
| | | } else if (requestType.equals("readState")) { |
| | | response = genereateFakeStatusResponse(taskId, fakeStatus); |
| | | response = genereateFakeStatusResponse(requestId, fakeStatus); |
| | | } |
| | | |
| | | fakeStatusMap.put(String.valueOf(SlaveType.Shuttle) + device.getDeviceNo(), fakeStatus); |
| | |
| | | return JSON.toJSONString(result); |
| | | } |
| | | |
| | | public String genereateFakeCommandResponse(Integer responseId, Integer taskId, String commandType) { |
| | | JSONObject result = new JSONObject(); |
| | | JSONObject response = new JSONObject(); |
| | | result.put("msgType", "responseMsg"); |
| | | result.put("robotId", 5001); |
| | | result.put("response", response); |
| | | |
| | | JSONObject header = new JSONObject(); |
| | | JSONObject body = new JSONObject(); |
| | | response.put("header", header); |
| | | response.put("body", body); |
| | | |
| | | header.put("responseId", responseId); |
| | | header.put("version", "GV-APP-F427-N24036-1112"); |
| | | |
| | | body.put("responseType", commandType); |
| | | body.put("result", "success"); |
| | | body.put("taskId", taskId); |
| | | return JSON.toJSONString(result); |
| | | } |
| | | |
| | | @Override |
| | | public boolean connect() { |
| | | return true; |