| | |
| | | import com.zy.acs.common.domain.AgvProtocol; |
| | | import com.zy.acs.common.domain.protocol.*; |
| | | import com.zy.acs.common.enums.AgvStatusType; |
| | | import com.zy.acs.common.enums.error.AgvErrorType; |
| | | import com.zy.acs.common.utils.GsonUtils; |
| | | import com.zy.acs.common.utils.RedisSupport; |
| | | import com.zy.acs.framework.common.Cools; |
| | | import com.zy.acs.framework.common.DateUtils; |
| | | import com.zy.acs.manager.core.constant.MapDataConstant; |
| | | import com.zy.acs.manager.core.domain.BackpackDto; |
| | | import com.zy.acs.manager.manager.entity.Agv; |
| | | import com.zy.acs.manager.core.domain.VehicleFaultDto; |
| | | import com.zy.acs.manager.manager.entity.AgvDetail; |
| | | import com.zy.acs.manager.manager.entity.Code; |
| | | import com.zy.acs.manager.manager.service.*; |
| | |
| | | IMessageBody msgBody = protocol.getMessageBody(); |
| | | assert msgBody != null; |
| | | |
| | | Agv agv = agvService.selectByUuid(protocol.getAgvNo()); |
| | | if (null == agv) { |
| | | Long agvId = agvService.getAgvId(protocol.getAgvNo()); |
| | | if (null == agvId) { |
| | | log.warn("Agv [{}] 尚未鉴权 !!!", protocol.getAgvNo()); |
| | | return; |
| | | } |
| | | AgvDetail detail = agvDetailService.selectByAgvId(agv.getId()); |
| | | AgvDetail detail = agvDetailService.selectByAgvId(agvId); |
| | | if (null == detail) { |
| | | detail = new AgvDetail(); |
| | | detail.setAgvId(agv.getId()); |
| | | detail.setAgvId(agvId); |
| | | if (!agvDetailService.save(detail)) { |
| | | log.error("Agv [{}] 详情更新失败 !!!", protocol.getAgvNo()); |
| | | return; |
| | |
| | | AGV_12_UP agv_12_up = (AGV_12_UP) msgBody; |
| | | |
| | | // unlock path |
| | | threadPoolRegulator.getInstance().execute(() -> { |
| | | mapService.unlockPath(protocol.getAgvNo(), agv_12_up.getQrCode()); |
| | | }); |
| | | mapService.unlockPath(protocol.getAgvNo(), agv_12_up.getQrCode()); |
| | | // threadPoolRegulator.getInstance().execute(() -> { |
| | | // |
| | | // }); |
| | | // finish jam |
| | | threadPoolRegulator.getInstance().execute(() -> jamService.checkIfFinish(agv.getId(), agv_12_up.getQrCode())); |
| | | threadPoolRegulator.getInstance().execute(() -> jamService.checkIfFinish(agvId, agv_12_up.getQrCode())); |
| | | |
| | | // websocketService.agvInfoBroadcastOnPos(new WebsocketDto<AGV_12_UP>("agv", agv.getUuid(), agv_12_up)); |
| | | this.sync(agv_12_up, detail); |
| | |
| | | if (PRINT_LOG) { |
| | | log.info("Agv [{}] 有码实时数据包 ===>> {}", protocol.getAgvNo(), JSON.toJSONString(agv_12_up)); |
| | | } |
| | | } |
| | | // 无码实时数据包 |
| | | if (msgBody instanceof AGV_13_UP) { |
| | | AGV_13_UP agv_13_up = (AGV_13_UP) msgBody; |
| | | // websocketService.agvInfoBroadcastWithOutPos(new WebsocketDto<AGV_13_UP>("agv", agv.getUuid(), agv_13_up)); |
| | | this.sync(agv_13_up, detail); |
| | | // redis.setObject(RedisConstant.DIGITAL_AGV_FLAG, agv.getUuid(), agv_13_up); |
| | | if (PRINT_LOG) { |
| | | log.info("Agv [{}] 无码实时数据包 ===>> {}", protocol.getAgvNo(), JSON.toJSONString(agv_13_up)); |
| | | } |
| | | } |
| | | // 心跳包 |
| | | if (msgBody instanceof AGV_03_UP) { |
| | | AGV_03_UP agv_03_up = (AGV_03_UP) msgBody; |
| | | this.sync(agv_03_up, detail); |
| | | if (PRINT_LOG) { |
| | | log.info("Agv [{}] 心跳包 ===>> {}", protocol.getAgvNo(), JSON.toJSONString(agv_03_up)); |
| | | } |
| | | } |
| | | // 登陆包 |
| | | if (msgBody instanceof AGV_F0_UP) { |
| | | AGV_F0_UP agv_f0_up = (AGV_F0_UP) msgBody; |
| | | this.sync(agv_f0_up, detail); |
| | | log.info("Agv [{}] 登陆包 ===>> {}", protocol.getAgvNo(), JSON.toJSONString(agv_f0_up)); |
| | | } |
| | | // 故障数据包 |
| | | if (msgBody instanceof AGV_04_UP) { |
| | | AGV_04_UP agv_04_up = (AGV_04_UP) msgBody; |
| | | log.info("Agv [{}] 故障数据包 ===>> {}", protocol.getAgvNo(), JSON.toJSONString(agv_04_up)); |
| | | // faultProcessor.execute(new VehicleFaultDto()); |
| | | } |
| | | |
| | | if (!agvDetailService.updateById(detail)) { |
| | |
| | | private void sync(AGV_12_UP mesBody, AgvDetail detail) { |
| | | detail.setStatus(mesBody.getStatus()); |
| | | |
| | | Code code = codeService.selectByData(mesBody.getQrCode()); |
| | | Code code = codeService.getCacheByData(mesBody.getQrCode()); |
| | | if (null != code) { |
| | | detail.setCode(code.getId()); |
| | | detail.setLastCode(null); |
| | |
| | | |
| | | } |
| | | |
| | | // 无码实时数据包 |
| | | private void sync(AGV_13_UP mesBody, AgvDetail detail) { |
| | | detail.setStatus(mesBody.getStatus()); |
| | | |
| | | Code code = codeService.selectByData(mesBody.getQrCode()); |
| | | if (null != code) { |
| | | |
| | | if (!detail.getAgvStatus().equals(AgvStatusType.CHARGE)) { |
| | | detail.setCode(null); |
| | | detail.setLastCode(code.getId()); |
| | | detail.setPos(0); |
| | | } else { |
| | | detail.setCode(code.getId()); |
| | | detail.setLastCode(null); |
| | | detail.setPos(1); |
| | | } |
| | | |
| | | |
| | | } else { |
| | | log.error("Agv [{}] 更新定位数据失败 !!!上传条码:{}", agvService.getById(detail.getAgvId()).getUuid(), mesBody.getQrCode()); |
| | | } |
| | | |
| | | detail.setStraightVal((double) mesBody.getStraightDirectionPosition()); |
| | | |
| | | detail.setAgvAngle((double) mesBody.getAGVCurrentAngle()); |
| | | |
| | | detail.setGyroAngle((double) mesBody.getGyroAngle()); |
| | | |
| | | detail.setEncoderAngle((double) mesBody.getEncoderAngle()); |
| | | |
| | | detail.setHigh(mesBody.getCurrentAltitude()); |
| | | |
| | | detail.setSensorSts((long) mesBody.getSensorStatusFlags()); |
| | | |
| | | List<BackpackDto> backpackDtoList = new ArrayList<>(); |
| | | backpackDtoList.add(new BackpackDto(1, mesBody.isTempLoc1())); |
| | | backpackDtoList.add(new BackpackDto(2, mesBody.isTempLoc2())); |
| | | backpackDtoList.add(new BackpackDto(3, mesBody.isTempLoc3())); |
| | | backpackDtoList.add(new BackpackDto(4, mesBody.isTempLoc4())); |
| | | backpackDtoList.add(new BackpackDto(5, mesBody.isTempLoc5())); |
| | | backpackDtoList.add(new BackpackDto(6, mesBody.isTempLoc6())); |
| | | backpackDtoList.add(new BackpackDto(7, mesBody.isTempLoc7())); |
| | | detail.setBackpack(GsonUtils.toJson(backpackDtoList)); |
| | | |
| | | } |
| | | |
| | | // 心跳包 |
| | | private void sync(AGV_03_UP mesBody, AgvDetail detail) { |
| | | |
| | | detail.setVol(mesBody.getVoltage()); |
| | | detail.setSoc(mesBody.getSoc()); |
| | | detail.setSoh(mesBody.getSoh()); |
| | | detail.setBatteryFail(mesBody.getBatterFailSign()); |
| | | |
| | | detail.setTempe(JSON.toJSONString(Cools |
| | | .add("batteryTempe", mesBody.getBatteryTempe()) |
| | | .add("envirTempe", mesBody.getEnvirTempe()) |
| | | .add("leftMotorTempe", mesBody.getLeftMotorTempe()) |
| | | .add("rightMotorTempe", mesBody.getRightMotorTempe()) |
| | | .add("raiseMotorTempe", mesBody.getRaiseMotorTempe()) |
| | | .add("telescopicMotorTempe", mesBody.getTelescopicMotorTempe()) |
| | | .add("rotatingMotorTempe", mesBody.getRotatingMotorTempe()) |
| | | )); |
| | | |
| | | detail.setMotorFail(JSON.toJSONString(Cools |
| | | .add("leftMotorFailSign", mesBody.getLeftMotorFailSign()) |
| | | .add("rightMotorFailSign", mesBody.getRightMotorFailSign()) |
| | | .add("raiseMotorFailSign", mesBody.getRaiseMotorFailSign()) |
| | | .add("telescopicMotorFailSign", mesBody.getTelescopicMotorFailSign()) |
| | | .add("rotatingMotorFailSign", mesBody.getRotatingMotorFailSign()) |
| | | )); |
| | | |
| | | detail.setFailSign(String.valueOf(mesBody.getFailSign())); |
| | | |
| | | detail.setBootTime(mesBody.getBootTime()); |
| | | |
| | | } |
| | | |
| | | // 登陆包 |
| | | private void sync(AGV_F0_UP mesBody, AgvDetail detail) { |
| | | |
| | | } |
| | | |
| | | } |