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