| | |
| | | const agvRotationOffset = rotationParseNum(agvRotationOffsetDegrees); |
| | | |
| | | const showAgvSprite = (curZone, agvVo, setCurSprite) => { |
| | | const { agvNo, code, direction, battery, backpack } = agvVo; |
| | | const { agvNo, code, direction, battery, backpack, error } = agvVo; |
| | | if (!code) { return; } |
| | | const codeSprite = querySprite(DEVICE_TYPE.POINT, code); |
| | | if (!codeSprite) { return; } |
| | |
| | | animateRotation(agvSprite, targetRotation + agvRotationOffset, agvRotationOffset); |
| | | } |
| | | |
| | | if (error) { |
| | | agvSprite.tint = 0xff3f34; |
| | | } |
| | | |
| | | beInsight(agvSprite, setCurSprite); |
| | | |
| | | new TWEEDLE.Tween(agvSprite.position) |
| | |
| | | |
| | | public static final Integer MAX_JAM_TIMEOUT = 5 * 1000; |
| | | |
| | | public static final String EMPTY_OF_ERROR = "EMPTY"; |
| | | |
| | | } |
| | |
| | | vo.setDirection(agvDetail.getAgvAngle()); |
| | | vo.setBackpack(GsonUtils.fromJsonToList(agvDetail.getBackpack(), BackpackDto.class)); |
| | | vo.setBattery(agvDetail.getSoc()); |
| | | vo.setError(agvDetail.getError()); |
| | | vo.setError(agvDetail.realError()); |
| | | |
| | | vo.setDynamicRoute(mapDataDispatcher.queryCodeListFromDynamicNode(null, agv.getUuid())); |
| | | |
| | |
| | | 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.core.domain.VehicleFaultDto; |
| | | import com.zy.acs.manager.manager.entity.Agv; |
| | |
| | | AGV_04_UP agv_04_up = (AGV_04_UP) msgBody; |
| | | log.info("Agv [{}] 故障数据包 ===>> {}", protocol.getAgvNo(), JSON.toJSONString(agv_04_up)); |
| | | faultProcessor.execute(new VehicleFaultDto<>(protocol.getAgvNo(), protocol.getTimestamp(), agv_04_up)); |
| | | detail.setError(String.valueOf(agv_04_up.getFaultId())); |
| | | detail.setError(agv_04_up.getHexFaultId()); |
| | | detail.setErrorTime(new Date()); |
| | | } |
| | | |
| | | // 故障复位 |
| | | if (!Cools.isEmpty(detail.getError())) { |
| | | if (!Cools.isEmpty(detail.realError())) { |
| | | assert detail.getErrorTime() != null; |
| | | if (DateUtils.diffToSeconds(detail.getErrorTime(), new Date()) > 20) { |
| | | detail.setError("NONE"); |
| | | detail.setError(MapDataConstant.EMPTY_OF_ERROR); |
| | | } |
| | | } |
| | | if (!agvDetailService.updateById(detail)) { |
| | |
| | | import com.zy.acs.common.enums.AgvStatusType; |
| | | import com.zy.acs.framework.common.Cools; |
| | | import com.zy.acs.framework.common.SpringUtils; |
| | | import com.zy.acs.manager.core.constant.MapDataConstant; |
| | | import com.zy.acs.manager.manager.service.AgvService; |
| | | import com.zy.acs.manager.manager.service.CodeService; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | |
| | | return null; |
| | | } |
| | | |
| | | public String getError() { |
| | | if (!Cools.isEmpty(this.error) && !"NONE".equals(this.error)) { |
| | | public String realError() { |
| | | if (!Cools.isEmpty(this.error) && !MapDataConstant.EMPTY_OF_ERROR.equals(this.error)) { |
| | | return this.error; |
| | | } else { |
| | | return ""; |