zhang
2025-05-20 1313906bb1eb983d3beece810035e7fc28d6a92f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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)));
 
    }
 
}