package com.zy.acs.manager.manager.service.impl; 
 | 
  
 | 
import com.alibaba.fastjson.JSON; 
 | 
import com.zy.acs.framework.common.Cools; 
 | 
import com.zy.acs.common.domain.protocol.AGV_12_UP; 
 | 
import com.zy.acs.common.domain.protocol.AGV_13_UP; 
 | 
import com.zy.acs.common.enums.AgvInOutFlagType; 
 | 
import com.zy.acs.manager.common.domain.WebsocketDto; 
 | 
import com.zy.acs.manager.manager.controller.DigitalChartsController; 
 | 
import com.zy.acs.manager.manager.controller.result.DigitalAgvVo; 
 | 
import com.zy.acs.manager.manager.entity.Code; 
 | 
import com.zy.acs.manager.manager.service.AgvDetailService; 
 | 
import com.zy.acs.manager.manager.service.AgvService; 
 | 
import com.zy.acs.manager.manager.service.CodeService; 
 | 
import com.zy.acs.manager.manager.service.WebsocketService; 
 | 
import com.zy.acs.manager.manager.websocket.DigitalTwinWebSocket; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.scheduling.annotation.Async; 
 | 
import org.springframework.stereotype.Service; 
 | 
  
 | 
/** 
 | 
 * Created by vincent on 6/11/2024 
 | 
 */ 
 | 
@Service("websocketService") 
 | 
public class WebsocketServiceImpl implements WebsocketService { 
 | 
  
 | 
    public static String taskShelfBarcode; 
 | 
  
 | 
    @Autowired 
 | 
    private AgvService agvService; 
 | 
    @Autowired 
 | 
    private AgvDetailService agvDetailService; 
 | 
    @Autowired 
 | 
    private CodeService codeService; 
 | 
  
 | 
    @Async 
 | 
    @Override 
 | 
    public void agvInfoBroadcastOnPos(WebsocketDto<AGV_12_UP> dto) { 
 | 
        AGV_12_UP protocol = dto.getObj(); 
 | 
        Code currCode = codeService.selectByData(protocol.getQrCode()); 
 | 
  
 | 
        DigitalAgvVo vo = new DigitalAgvVo(); 
 | 
        vo.setAgvNo(dto.getNo()); 
 | 
        vo.synPosition(currCode.getX(), 0, currCode.getY()); 
 | 
  
 | 
        vo.setTheta((double) protocol.getAGVCurrentAngle()); 
 | 
        vo.setHeight((double) protocol.getCurrentAltitude()); 
 | 
        vo.setLoaderTheta((double) protocol.getLoaderTheta()); 
 | 
        vo.setForkLength((double) protocol.getForkLength()); 
 | 
  
 | 
        vo.setFinger1(protocol.isFinger1()); 
 | 
        vo.setFinger2(protocol.isFinger2()); 
 | 
        vo.setFinger3(protocol.isFinger3()); 
 | 
        vo.setFinger4(protocol.isFinger4()); 
 | 
  
 | 
        vo.setInOutFlag(AgvInOutFlagType.query(protocol.getInOutFlag()).val); 
 | 
  
 | 
        vo.getTrayList().add(new DigitalAgvVo.Tray(1, protocol.isTempLoc1())); 
 | 
        vo.getTrayList().add(new DigitalAgvVo.Tray(2, protocol.isTempLoc2())); 
 | 
        vo.getTrayList().add(new DigitalAgvVo.Tray(3, protocol.isTempLoc3())); 
 | 
        vo.getTrayList().add(new DigitalAgvVo.Tray(4, protocol.isTempLoc4())); 
 | 
        vo.getTrayList().add(new DigitalAgvVo.Tray(5, protocol.isTempLoc5())); 
 | 
        vo.getTrayList().add(new DigitalAgvVo.Tray(6, protocol.isTempLoc6())); 
 | 
  
 | 
        vo.setHasBox(protocol.isLoaderMid()); 
 | 
  
 | 
        DigitalTwinWebSocket.broadcast(JSON.toJSONString(new WebsocketDto<>(dto.getType(), dto.getNo(), vo))); 
 | 
  
 | 
        DigitalChartsController.agvChartsQueue.offer(Cools 
 | 
                .add("agvNo", dto.getNo()) 
 | 
                .add("qrcode", protocol.getQrCode()) 
 | 
                .add("height", protocol.getCurrentAltitude()) 
 | 
                .add("angle", protocol.getAGVCurrentAngle()) 
 | 
                .add("loaderTheta", protocol.getLoaderTheta()) 
 | 
                .add("forkLength", protocol.getForkLength()) 
 | 
                .add("inOutFlag", AgvInOutFlagType.query(protocol.getInOutFlag()).desc) 
 | 
        ); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void agvInfoBroadcastWithOutPos(WebsocketDto<AGV_13_UP> dto) { 
 | 
        AGV_13_UP protocol = dto.getObj(); 
 | 
        Code currCode = codeService.selectByData(protocol.getQrCode()); 
 | 
  
 | 
        DigitalAgvVo vo = new DigitalAgvVo(); 
 | 
        vo.setAgvNo(dto.getNo()); 
 | 
        vo.synPosition(currCode.getX(), 0, currCode.getY()); 
 | 
  
 | 
        vo.setOffset(protocol.getStraightDirectionPosition()); 
 | 
  
 | 
        vo.setTheta((double) protocol.getAGVCurrentAngle()); 
 | 
        vo.setHeight((double) protocol.getCurrentAltitude()); 
 | 
        vo.setLoaderTheta((double) protocol.getLoaderTheta()); 
 | 
        vo.setForkLength((double) protocol.getForkLength()); 
 | 
  
 | 
        vo.setFinger1(protocol.isFinger1()); 
 | 
        vo.setFinger2(protocol.isFinger2()); 
 | 
        vo.setFinger3(protocol.isFinger3()); 
 | 
        vo.setFinger4(protocol.isFinger4()); 
 | 
  
 | 
        vo.setInOutFlag(AgvInOutFlagType.query(protocol.getInOutFlag()).val); 
 | 
  
 | 
        vo.getTrayList().add(new DigitalAgvVo.Tray(1, protocol.isTempLoc1())); 
 | 
        vo.getTrayList().add(new DigitalAgvVo.Tray(2, protocol.isTempLoc2())); 
 | 
        vo.getTrayList().add(new DigitalAgvVo.Tray(3, protocol.isTempLoc3())); 
 | 
        vo.getTrayList().add(new DigitalAgvVo.Tray(4, protocol.isTempLoc4())); 
 | 
        vo.getTrayList().add(new DigitalAgvVo.Tray(5, protocol.isTempLoc5())); 
 | 
        vo.getTrayList().add(new DigitalAgvVo.Tray(6, protocol.isTempLoc6())); 
 | 
  
 | 
        vo.setHasBox(protocol.isLoaderMid()); 
 | 
  
 | 
        DigitalTwinWebSocket.broadcast(JSON.toJSONString(new WebsocketDto<>(dto.getType(), dto.getNo(), vo))); 
 | 
  
 | 
    } 
 | 
  
 | 
} 
 |