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.getCacheByData(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.getCacheByData(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)));
|
|
}
|
|
}
|