| | |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alibaba.fastjson.serializer.SerializerFeature; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.zy.asrs.common.utils.HttpHandler; |
| | | import com.zy.asrs.framework.common.DateUtils; |
| | | import com.zy.asrs.framework.common.SpringUtils; |
| | | import com.zy.asrs.framework.exception.CoolException; |
| | | import com.zy.asrs.wcs.common.ExecuteSupport; |
| | | import com.zy.asrs.wcs.core.entity.BasLift; |
| | | import com.zy.asrs.wcs.core.model.command.LiftCommand; |
| | | import com.zy.asrs.wcs.core.model.enums.LiftCommandModeType; |
| | | import com.zy.asrs.wcs.core.service.BasLiftService; |
| | | import com.zy.asrs.wcs.rcs.News; |
| | | import com.zy.asrs.wcs.rcs.cache.OutputQueue; |
| | | import com.zy.asrs.wcs.rcs.entity.DeviceDataLog; |
| | |
| | | //模式 |
| | | liftProtocol.setModel(true); |
| | | //运行状态 |
| | | liftProtocol.setRun(data.getInteger("runningstate") == 1); |
| | | liftProtocol.setRun(data.getInteger("runningState") == 1); |
| | | //就绪状态 |
| | | liftProtocol.setReady(data.getInteger("readyState") == 1); |
| | | //有托盘 |
| | |
| | | //有小车 |
| | | liftProtocol.setHasCar(data.getString("haveCar").equals("Y")); |
| | | //故障码 |
| | | liftProtocol.setErrorCode(""); |
| | | liftProtocol.setErrorCode("0"); |
| | | //层 |
| | | liftProtocol.setLev(data.getInteger("curFloor")); |
| | | |
| | | |
| | | //************补充扩展字段************* |
| | | InnerLiftExtend liftExtend = JSON.parseObject(JSON.toJSONString(liftProtocol.getExtend()), InnerLiftExtend.class); |
| | | InnerLiftExtend liftExtend = (InnerLiftExtend) liftProtocol.getExtend(); |
| | | liftExtend.setLock(data.getInteger("lockStatus") == 1 ? true : false); |
| | | liftProtocol.setExtend(liftExtend); |
| | | |
| | |
| | | |
| | | //更新采集时间 |
| | | liftProtocol.setDeviceDataLog(System.currentTimeMillis()); |
| | | } |
| | | |
| | | //将提升机状态保存至数据库 |
| | | BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class); |
| | | BasLift basLift = basLiftService.getOne(new LambdaQueryWrapper<BasLift>() |
| | | .eq(BasLift::getLiftNo, device.getDeviceNo()) |
| | | .eq(BasLift::getHostId, device.getHostId())); |
| | | if (basLift == null) { |
| | | basLift = new BasLift(); |
| | | //提升机号 |
| | | basLift.setLiftNo(Integer.valueOf(device.getDeviceNo())); |
| | | basLift.setStatus(1); |
| | | basLift.setDeleted(0); |
| | | basLift.setHostId(device.getHostId()); |
| | | basLift.setDeviceId(device.getId()); |
| | | basLiftService.save(basLift); |
| | | } |
| | | //任务号 |
| | | basLift.setTaskNo(liftProtocol.getTaskNo().intValue()); |
| | | //修改时间 |
| | | basLift.setUpdateTime(new Date()); |
| | | //设备状态 |
| | | basLift.setProtocol(JSON.toJSONString(liftProtocol)); |
| | | if (basLiftService.updateById(basLift)) { |
| | | OutputQueue.LIFT.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), device.getDeviceNo())); |
| | | } |
| | | |
| | | }else { |
| | |
| | | if (this.liftProtocol.getModel() |
| | | && !this.liftProtocol.getRun() |
| | | && this.liftProtocol.getReady() |
| | | && this.liftProtocol.getPakMk() |
| | | // && this.liftProtocol.getPakMk() |
| | | && this.liftProtocol.getErrorCode().equals("0") |
| | | && this.liftProtocol.getProtocolStatus().equals(LiftProtocolStatusType.IDLE) |
| | | && this.liftProtocol.getProtocolStatusType().equals(LiftProtocolStatusType.IDLE) |
| | | && !extend.getLock() |
| | | ) { |
| | | return true; |
| | |
| | | public boolean setSyncTaskNo(Integer taskNo) { |
| | | this.liftProtocol.setTaskNo(taskNo); |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public boolean isLock(ExecuteSupport support) { |
| | | InnerLiftExtend extend = (InnerLiftExtend) this.liftProtocol.getExtend(); |
| | | return extend.getLock(); |
| | | } |
| | | |
| | | //***************设备层通讯-不同厂商设备通讯方案不一致*************** |
| | |
| | | //获取设备状态 |
| | | private JSONObject requestDeviceStatus() { |
| | | //模拟数据 |
| | | String data = "[{\"taskNo\":1244,\"curFloor\":2,\"readyState\":1,\"haveCar\":'N',\"completeTaskNo\":0,\"haveCargo\":\"Y\",\"runningstate\":0,\"floors\":[{\"floor\":1,\"location\":1,\"run\":1,\"error\":1,\"cargoState\":\"Y\"},{\"floor\":1,\"location\":2,\"run\":0,\"error\":0,\"cargoState\":\"N\"}]}]"; |
| | | return JSON.parseArray(data).getJSONObject(0); |
| | | // try { |
| | | // String loginToken = requestLoginToken(); |
| | | // if (loginToken == null) { |
| | | // return null; |
| | | // } |
| | | // |
| | | // HashMap<String, Object> headers = new HashMap<>(); |
| | | // headers.put("Authorization", "Bearer " + loginToken); |
| | | // |
| | | // HashMap<String, Object> param = new HashMap<>(); |
| | | // param.put("messageName", "deviceRgvStatus"); |
| | | // param.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | // param.put("deviceNo", device.getDeviceNo()); |
| | | // String response = new HttpHandler.Builder() |
| | | // .setUri(API_URL) |
| | | // .setPath("/RDS/deviceLifterStatus") |
| | | // .setHeaders(headers) |
| | | // .setJson(JSON.toJSONString(param)) |
| | | // .build() |
| | | // .doPost(); |
| | | // JSONObject jsonObject = JSON.parseObject(response); |
| | | // Integer code = jsonObject.getInteger("code"); |
| | | // if (code.equals(200)) { |
| | | // return jsonObject.getJSONArray("data").getJSONObject(0); |
| | | // } |
| | | // } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // return null; |
| | | // String data = "[{\"taskNo\":1244,\"curFloor\":2,\"readyState\":1,\"haveCar\":'N',\"completeTaskNo\":0,\"haveCargo\":\"Y\",\"runningstate\":0,\"floors\":[{\"floor\":1,\"location\":1,\"run\":1,\"error\":1,\"cargoState\":\"Y\"},{\"floor\":1,\"location\":2,\"run\":0,\"error\":0,\"cargoState\":\"N\"}]}]"; |
| | | // return JSON.parseArray(data).getJSONObject(0); |
| | | try { |
| | | String loginToken = requestLoginToken(); |
| | | if (loginToken == null) { |
| | | return null; |
| | | } |
| | | |
| | | HashMap<String, Object> headers = new HashMap<>(); |
| | | headers.put("Authorization", "Bearer " + loginToken); |
| | | |
| | | HashMap<String, Object> param = new HashMap<>(); |
| | | param.put("messageName", "deviceRgvStatus"); |
| | | param.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | param.put("deviceNo", device.getDeviceNo()); |
| | | String response = new HttpHandler.Builder() |
| | | .setUri(API_URL) |
| | | .setPath("/RDS/deviceLifterStatus") |
| | | .setHeaders(headers) |
| | | .setJson(JSON.toJSONString(param)) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | Integer code = jsonObject.getInteger("code"); |
| | | if (code.equals(200)) { |
| | | return jsonObject.getJSONArray("data").getJSONObject(0); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | //空载移动 |
| | | @Override |
| | | public LiftCommand getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer mode) { |
| | | public LiftCommand getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) { |
| | | int taskMode = 3;//空载移动 |
| | | if (mode == null) { |
| | | taskMode = mode.shortValue(); |
| | | } |
| | | |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | body.put("messageName", "lifterTask"); |
| | |
| | | |
| | | //载车移动 |
| | | @Override |
| | | public LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer mode) { |
| | | public LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) { |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | body.put("messageName", "lifterTask"); |
| | | body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | |
| | | |
| | | //托盘出入 |
| | | @Override |
| | | public LiftCommand getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, Integer mode) { |
| | | public LiftCommand getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) { |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | body.put("messageName", "lifterTask"); |
| | | body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |