| 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))); | 
|   | 
|     } | 
|   | 
| } |