import { HttpClient } from '@angular/common/http'; import { AfterViewInit, ElementRef, EventEmitter, OnDestroy } from '@angular/core'; import { VaultMapService } from './vault.map.service'; import { AGVDTO, HandcartDTO, LocationDTO, VaultMap } from './interface'; export declare class ZijinVaultMapComponent extends VaultMap implements AfterViewInit, OnDestroy { private _vaultMapService; private _elementRef; private _http; private _canvasWidth; private _canvasHeight; private _transformRate; private _naturalWidth; private _naturalHeight; private _itemWidth; private _itemHeight; private _offsetX; private _offsetY; speed: number; serverUrl: any; retryInterval: number; refreshInterval: number; itemClick: EventEmitter; locationClick: EventEmitter; agvClick: EventEmitter; handcart: EventEmitter; private _hostElement; private _renderer; private _camera; private _scene; private _data; private _initialized; private _destroyed; private _startingRealTime; private _retrySubject; private _repeatSubject; private _updateRMSInfoSubscription; private _stdGeometry; private _lineGeometry; private _moveArr; private _rotateArr; private _animationStatus; private _requestAnimationId; private _rotationStep; private _highlightMesh; private _multiHighlightSet; private _callbacksForDestroy; constructor(_vaultMapService: VaultMapService, _elementRef: ElementRef, _http: HttpClient); ngAfterViewInit(): void; /** * 初始化画布 * 缩放比例 * 初始化threejs */ init(): void; /** * 初始化threejs * @param width 画布宽度 * @param height 画布高度 * @private */ private _initThree; /** * 加载地图库位信息 */ loadLocation(forceRealTime?: boolean): void; /** * 重新加载库位信息 * 当修改库位信息后调用 */ reloadLocation(): void; /** * 开始实时获取AGV和笼车信息 * 1、 第一次从数据库中拉取数据 * 2、 后续定时从缓存中拉取数据 * 3、 开启实时模式的前提是 金库地图已经初始化,并且没有正在执行中的实时任务 */ startRealTime(): void; /** * 开启获取金库地图状态的任务 * notes: * 每两次获取信息的时间间隔 1200ms * 获取任务失败后 会重试3次 * @private */ private _startContinuousUpdateRMSInfo; private _stopContinuousUpdateRMSInfo; /** * 初始化金库地图 * 包括墙壁、承重墙、金库门等 * @private */ private _initBackground; private _initLocation; private _updateVaultMap; /** * * @param lastAgvList * @param toRemoveLine * @param toRemoveAGV_Handcart * @param toAddArray * @private */ private _updateAGV; /** * 更新金库地图中的笼车信息(包括删除笼车、新增笼车、移动笼车、改变笼车空满状态) * @param lastHandcartList 从服务端获得的最新的笼车信息 * @param toRemoveAGV_Handcart 即将被删除的对象将缓存到该数组中,后续批量删除 * @param toAddArray * @private */ private _updateHandcart; /** * 执行AGV小车的移动、转向动画,以及笼车的移动动画 * note: * 1、先执行移动操作,当所有移动操作完成再执行转向操作 * 2、所有的移动操作都是先水平移动 再垂直移动(会有问题) */ private _animation; /** * @deprecated 用户不应该调用该方法 * 恢复指定位置的默认颜色 * @param locationNo */ resetLocationColor(locationNo: string): void; /** * @deprecated * 根据线路编号查询笼车信息 * @param lineNo */ getHandcartByLineNo(lineNo: string): { handCartNo: string; lineNo: string; lineName: string; shelfType: number; status: number; }; /** * 根据元素编号和类型查找指定元素 * @param targetNo 元素编号:位置编号/AGV编号/笼车编号 * @param targetType 元素类型: location/agv/handcart */ find(targetNo: any, targetType: any): LocationDTO | AGVDTO | HandcartDTO; /** * @description 货架装卸货物状态变换 * @param {*} shelfId 货架编号 * @param {Integer} status 货架状态(1:无货物,2:有货物) * @memberof VaultMap2Component */ shelfTransform(shelfId: any, status: any): void; private _initEvent; zoom(num: any): void; /** * 该方法每次确保只有一个元素(位置/AGV/笼车)被高亮显示 * highlight和multiHighlight方法彼此不会相互影响 * @param targetNo * @param targetType */ highlight(targetNo: any, targetType: any): void; clearHighlight(): void; /** * 传入空值 则清空当前高亮值 * @param mesh */ private _highlight; /** * 将id指定的位置高亮显示 * 该方法不影响其他已经高亮显示的位置 * @param locationNo * @param color * @param render */ incrementalHighlight(locationNo: string, color: number, render?: boolean): void; /** * 将数组中指定为位置高亮显示 * @param locationNoArray 位置ID数组 * @param color 高亮显示的颜色 */ multiHighlight(locationNoArray: Array, color: number): void; /** * 清空高亮显示的位置信息 * 如果不传递参数 则所有通过incrementalHighlight和multiHighlight高亮的位置都将恢复默认样式 * @param locationNoArray 可选 将要被清空高亮显示的位置ID数组 */ clearMultiHighlight(locationNoArray?: Array): void; private _find; /** * 清空高亮显示 */ private _transX; private _transY; /** * 释放资源 防止内存泄漏 * * 停止定时访问后端 * 关闭当前地图正在进行的动画效果 * 调用自定义的销毁函数 * 将物体从scene中移除 * 销毁background * 销毁组件级辅助元素(不需要销毁纹理) * 销毁highlight辅助元素 * 销毁multiHighlight辅助元素 * 解除事件绑定 */ ngOnDestroy(): void; }