From 21d88a01807b3a27787bdbbcd657dbbffaa58172 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 08 四月 2024 15:51:01 +0800 Subject: [PATCH] Merge branch 'Four-Way-Rack' of http://47.97.1.152:5880/r/zy-asrs-master into Four-Way-Rack --- zy-asrs-flow/src/pages/map/utils.js | 111 ++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 84 insertions(+), 27 deletions(-) diff --git a/zy-asrs-flow/src/pages/map/utils.js b/zy-asrs-flow/src/pages/map/utils.js index f5926c6..64df894 100644 --- a/zy-asrs-flow/src/pages/map/utils.js +++ b/zy-asrs-flow/src/pages/map/utils.js @@ -440,23 +440,28 @@ await Http.doPostPromise('api/map/list', { floor: curFloor }, (res) => { const mapItemList = eval(res.data); mapItemList.forEach(item => { - const sprite = generateSprite(item.type); - if (sprite) { - initSprite(sprite, item.type); - // data - sprite.data.uuid = item.uuid; - sprite.data.no = item.no; + if (!( + item.type === SENSOR_TYPE.SHUTTLE + || item.type === SENSOR_TYPE.AGV + )) { + const sprite = generateSprite(item.type); + if (sprite) { + initSprite(sprite, item.type); + // data + sprite.data.uuid = item.uuid; + sprite.data.no = item.no; - // dynamical data - Object.assign(sprite.data, item.property); + // dynamical data + Object.assign(sprite.data, item.property); - showSheflType(sprite); - // graph - sprite.position.set(item.positionX, item.positionY); - sprite.scale.set(item.scaleX, item.scaleY); - sprite.rotation = rotationParseNum(item.rotation); + showSheflType(sprite); + // graph + sprite.position.set(item.positionX, item.positionY); + sprite.scale.set(item.scaleX, item.scaleY); + sprite.rotation = rotationParseNum(item.rotation); - mapContainer.addChild(sprite); + mapContainer.addChild(sprite); + } } }) @@ -613,20 +618,72 @@ return row + '-' + bay + '-' + lev; } -export const updateMapStatusInRealTime = (data) => { +export const updateMapStatusInRealTime = (data, curFloorGetter, setCurSPrite) => { + const curFloor = curFloorGetter(); + if (isNullOfUndefined(curFloor)) { return; } const mapVo = JSON.parse(data); - // shuttle + // shuttleVo for (const shuttleVo of mapVo.shuttleVos) { - const shuttle = querySprite(SENSOR_TYPE.SHUTTLE, shuttleVo.shuttleNo); - if (!shuttle && !shuttleVo.curLocNo) { continue; } - const { row, bay, lev } = parseLocNo(shuttleVo.curLocNo); - const shelf = querySprite(SENSOR_TYPE.SHELF, row + '-' + bay); - if (!shelf) { continue; } - new TWEEDLE.Tween(shuttle?.position).easing(TWEEDLE.Easing.Linear.None).to({ - x: shelf.position.x, - y: shelf.position.y - }, 1000).onUpdate(() => { - updateEffect(shuttle); - }).start(); + // path + drawPreTravelPath(shuttleVo.preTravelPath, shuttleVo.shuttleNo, curFloor); + // shuttle + showShuttle(shuttleVo.shuttleNo, shuttleVo.curLocNo, curFloor, setCurSPrite); } +} + +export const drawPreTravelPath = (path, shuttleNo, curFloor) => { + if (!mapContainer) { + return; + } + const pathLineName = 'preTravelPath-' + shuttleNo; + let pathLine = mapContainer.getChildByName(pathLineName); + if (pathLine) mapContainer.removeChild(pathLine); + + pathLine = new PIXI.Graphics(); + pathLine.name = pathLineName; + pathLine.lineStyle(3 * (1 / mapContainer.scale.x), 0x3498db, 1); + pathLine.zIndex = 9999; + let firstNode = true; + for (let i = 0; i < path.length; i++) { + const { row, bay, lev } = parseLocNo(path[i]); + if (Number(lev) !== curFloor) { continue } + const shelf = querySprite(SENSOR_TYPE.SHELF, row + '-' + bay); + + if (!shelf) { continue }; + let position = shelf.position; + let x = position.x; + let y = position.y; + if (firstNode) { + pathLine.moveTo(x, y); + firstNode = false; + } else { + pathLine.lineTo(x, y); + } + } + mapContainer.addChild(pathLine); +} + +export const showShuttle = (shuttleNo, curLocNo, curFloor, setCurSPrite) => { + if (!curLocNo) { return } + const { row, bay, lev } = parseLocNo(curLocNo); + if (Number(lev) !== curFloor) { return } + + let shuttle = querySprite(SENSOR_TYPE.SHUTTLE, shuttleNo); + if (!shuttle) { + shuttle = generateSprite(SENSOR_TYPE.SHUTTLE); + initSprite(shuttle, SENSOR_TYPE.SHUTTLE); + shuttle.data.no = shuttleNo; + mapContainer.addChild(shuttle); + viewFeature(shuttle, setCurSPrite); + } + + const shelf = querySprite(SENSOR_TYPE.SHELF, row + '-' + bay); + if (!shelf) { return } + + new TWEEDLE.Tween(shuttle?.position).easing(TWEEDLE.Easing.Linear.None).to({ + x: shelf.position.x, + y: shelf.position.y + }, 1000).onUpdate(() => { + updateEffect(shuttle); + }).start(); } \ No newline at end of file -- Gitblit v1.9.1