Junjie
2023-12-19 a4019f141e1fdd29a198742095cfdba6128d2f44
src/main/webapp/views/console4.html
@@ -131,9 +131,11 @@
  let pixiShuttleMap = new Map();
  let pixiShuttleMoveAdvancePathMap = new Map();
  let pixiShuttleMoveAdvancePathList = [];
  let pixiShuttleLockPathMap = new Map();
  let pixiStaMap = new Map();
  let objectsContainer;
  let objectsContainer2;
  let objectsContainer3;
  let graphics0;
  let graphics3;
  let graphics4;
@@ -200,10 +202,10 @@
        // this.getSystemRunningStatus() //获取系统运行状态
        this.consoleInterval = setInterval(() => {
          this.getMap(this.currentLev) //获取实时地图数据
          this.getShuttleStateInfo() //获取四向穿梭车信息
          this.getLiftStateInfo() //获取提升机信息
          this.getSiteInfo() //获取输送站点数据
          this.getMap(this.currentLev) //获取实时地图数据
          // this.getCodeData()//获取条码
        }, 1000)
@@ -249,8 +251,8 @@
                const shuttle = new PIXI.Sprite(resources.shuttle.texture);
                shuttle.width = width
                shuttle.height = height
                shuttle.x = item.point.x * width;//更新坐标x
                shuttle.y = item.point.y * height;//更新坐标y
                shuttle.x = (item.wcsPoint.y - 0) * width;//更新坐标x
                shuttle.y = (item.wcsPoint.x - 1) * height;//更新坐标y
                shuttle.updateMoveStatus = true;//动画执行完成
                shuttle.interactive = true; // 必须要设置才能接收事件
                shuttle.buttonMode = true; // 让光标在hover时变为手型指针
@@ -310,6 +312,18 @@
        this.reloadMap = true
        this.reloadSta = true
        this.getMap(lev)
        //清空占用路径
        pixiShuttleLockPathMap.forEach((item, index) => {
          objectsContainer3.removeChild(item);
        });
        pixiShuttleLockPathMap = new Map();
        pixiShuttleMoveAdvancePathMap.forEach((item, index) => {
          objectsContainer2.removeChild(item.sprite);
        });
        pixiShuttleMoveAdvancePathMap = new Map();
        pixiShuttleMoveAdvancePathList = []
      },
      createMap(){
        //Create a Pixi Application
@@ -341,6 +355,10 @@
        // 创建一个容器来管理大批量的显示对象
        objectsContainer2 = new PIXI.Container();
        pixiApp.stage.addChild(objectsContainer2);
        // 创建一个容器来管理大批量的显示对象
        objectsContainer3 = new PIXI.Container();
        pixiApp.stage.addChild(objectsContainer3);
        //*******************拖动画布*******************
        let stageOriginalPos;
@@ -453,7 +471,7 @@
                  this.openDrawerLift(val)
                }else{
                  //库位
                  this.rightEvent(index, idx, e);
                  this.rightEvent(index + 1, idx, e);
                  updateColor(sprite, 0x9900ff);
                }
              });
@@ -488,7 +506,12 @@
                pixiStaMap.set(parseInt(val.data), sprite);//站点数据添加到map中
              }
              objectsContainer.addChild(sprite);
              if (val.value == -999) {
                pixiShuttleLockPathMap.set(this.getLocNoByXYZ(index + 1, idx, this.currentLev), sprite);
                objectsContainer3.addChild(sprite);
              }else {
                objectsContainer.addChild(sprite);
              }
              pixiStageList[index][idx] = sprite
            }
          });
@@ -497,15 +520,26 @@
          diff.forEach((item, index) => {
            //获取old元素
            let oldSprite = pixiStageList[item.x][item.y]
            //移除old元素
            objectsContainer.removeChild(oldSprite)
            if (item.originData == -999) {
              //移除old路径元素
              objectsContainer3.removeChild(oldSprite);
            }else {
              //移除old元素
              objectsContainer.removeChild(oldSprite);
            }
            let sprite = getSprite(item.data, item.y * width, item.x * height, (e) => {
              this.rightEvent(item.x, item.y, e);
              this.rightEvent(item.x + 1, item.y, e);
              updateColor(sprite, 0x9900ff);
            });
            objectsContainer.addChild(sprite);
            if (item.data == -999) {
              //添加路径元素
              objectsContainer3.addChild(sprite);
            }else {
              //添加元素
              objectsContainer.addChild(sprite);
            }
            //保存新元素
            pixiStageList[item.x][item.y] = sprite
@@ -527,7 +561,8 @@
              diff.push({
                x: index,
                y: idx,
                data: arr2[index][idx].value
                data: arr2[index][idx].value,
                originData: val.value
              })
            }
          })
@@ -655,12 +690,12 @@
        if (shuttle.updateMoveStatus) {//动画执行完成才可继续执行动画
          shuttle.updateMoveStatus = false;//动画执行中
          // 计算两点之间的距离1
          const distance = Math.sqrt(Math.pow((item.point.x * width) - shuttle.x, 2) + Math.pow((item.point.y * height) - shuttle.y, 2));
          const distance = Math.sqrt(Math.pow((item.wcsPoint.x * width) - shuttle.x, 2) + Math.pow((item.wcsPoint.y * height) - shuttle.y, 2));
          gsap.killTweensOf(shuttle); // 杀死所有针对".class"的动画
          gsap.to(shuttle, {
            x: item.point.x * width, // 目标位置
            y: item.point.y * height, // 目标位置
            duration: distance / 100, // 动画持续时间(秒)
            x: (item.wcsPoint.y - 0) * width, // 目标位置
            y: (item.wcsPoint.x - 1) * height, // 目标位置
            duration: 0.2, // 动画持续时间(秒)
            ease: "power1.inOut", // 缓动类型
            onComplete: () => {
              shuttle.updateMoveStatus = true;//动画执行完成
@@ -824,7 +859,7 @@
        moveAdvancePath.forEach((path, idx) => {
          let locNo = that.getLocNoByXYZ(path.x, path.y, path.z);
          if (!pixiShuttleMoveAdvancePathMap.has(locNo)) {
            let graphics = getGraphics(0x9966ff, width, height, path.y * width, path.x * height);
            let graphics = getGraphics(0x9966ff, width, height, path.y * width, (path.x - 1) * height);
            let shuttleNos = [shuttleNo];
            // 创建文本对象
            const style = new PIXI.TextStyle({