| | |
| | | const pointRoute = new PointRoute(POINT_ROUTE_DIRECTION[route.direction]); |
| | | pointRoute.setPoint(startPoint, endPoint); |
| | | pointRoute.clear(); |
| | | pointRoute.lineStyle(Math.max(7, 1.5 * (1 / mapContainer.scale.x)), themeMode === 'light' ? '#ced6e0' : '#535c68'); |
| | | pointRoute.lineStyle(Math.max(7, 2 * (1 / mapContainer.scale.x)), themeMode === 'light' ? '#ced6e0' : '#535c68'); |
| | | pointRoute.moveTo(startPoint.position.x, startPoint.position.y); |
| | | pointRoute.lineTo(endPoint.position.x, endPoint.position.y); |
| | | pointRoute.alpha = 1; |
| | |
| | | |
| | | export const generateDynamicGraphic = (curZone, data, setCurSprite) => { |
| | | // console.log("ws", curZone, data); |
| | | |
| | | console.log(JSON.stringify(data)); |
| | | for (const agvVo of data.agvVos) { |
| | | // console.log(agvVo); |
| | | showAgvSprite(curZone, agvVo, setCurSprite); |
| | | drawerAgvPath(curZone, agvVo); |
| | | } |
| | |
| | | let agvSprite = querySprite(DEVICE_TYPE.AGV, agvNo); |
| | | if (!agvSprite) { |
| | | agvSprite = generateSprite(DEVICE_TYPE.AGV, |
| | | generateAgvSpriteTexture(getAgvStatusMode(backpack.filter(item => item.loaded === true).length, battery)) |
| | | // generateAgvSpriteTexture(getAgvStatusMode(backpack.filter(item => item.loaded === true).length, battery)); |
| | | generateAgvSpriteTexture(getAgvStatusMode(1, battery)) |
| | | ); |
| | | initSprite(agvSprite, DEVICE_TYPE.AGV); |
| | | agvSprite.data.no = agvNo; |
| | |
| | | beInsight(agvSprite, setCurSprite); |
| | | // agv no on sprite |
| | | } |
| | | |
| | | new TWEEDLE.Tween(agvSprite?.position).easing(TWEEDLE.Easing.Linear.None).to({ |
| | | x: codeSprite.position.x, |
| | | y: codeSprite.position.y |
| | | }, 1000).onUpdate(() => { |
| | | updateEffect(agvSprite); |
| | | }).start(); |
| | | } |
| | | |
| | | const drawerAgvPath = (curZone, agvVo) => { |
| | |
| | | return; |
| | | } |
| | | const { agvNo, code: curCode, dynamicRoute } = agvVo; |
| | | if (dynamicRoute?.length <= 1) { |
| | | return; |
| | | } |
| | | // if (dynamicRoute?.length <= 1) { |
| | | // return; |
| | | // } |
| | | |
| | | const agvPathName = 'agvPath-' + agvNo; |
| | | let agvPath = mapContainer.getChildByName(agvPathName); |
| | |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.PostConstruct; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | |
| | | /** |
| | | * Created by vincent on 10/14/2024 |
| | |
| | | @Autowired |
| | | private MapDataDispatcher mapDataDispatcher; |
| | | |
| | | int i = 0; |
| | | |
| | | @Scheduled(cron = "0/1 * * * * ? ") |
| | | public void broadcast() { |
| | | i++; |
| | | int key; |
| | | if (i > 10) { |
| | | i=0; |
| | | } |
| | | key = i /2; |
| | | MapWebSocket.broadcast(mockData.get(key)); |
| | | |
| | | |
| | | MapWsVo mapWsVo = new MapWsVo(); |
| | | mapWsVo.setAgvVos(syncAgv()); |
| | | MapWebSocket.broadcast(GsonUtils.toJson(mapWsVo)); |
| | | // MapWebSocket.broadcast(GsonUtils.toJson(mapWsVo)); |
| | | } |
| | | |
| | | private List<MapWsAgvVo> syncAgv() { |
| | |
| | | return agvVos; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | private static final Map<Integer, String> mockData = new ConcurrentHashMap<>(); |
| | | |
| | | @PostConstruct |
| | | public void init() { |
| | | mockData.put(1, |
| | | "{\n" + |
| | | " \"agvVos\": [\n" + |
| | | " {\n" + |
| | | " \"agvNo\": \"1\",\n" + |
| | | " \"code\": \"00000002\",\n" + |
| | | " \"direction\": 90,\n" + |
| | | " \"dynamicRoute\": [\n" + |
| | | " \"00000002\",\n" + |
| | | " \"00000003\",\n" + |
| | | " \"00000004\"\n" + |
| | | " ]\n" + |
| | | " },\n" + |
| | | " {\n" + |
| | | " \"agvNo\": \"2\",\n" + |
| | | " \"code\": \"00000063\",\n" + |
| | | " \"direction\": 90,\n" + |
| | | " \"dynamicRoute\": [\n" + |
| | | " \"00000063\",\n" + |
| | | " \"00000062\",\n" + |
| | | " \"00000061\",\n" + |
| | | " \"00000060\",\n" + |
| | | " \"00000059\"\n" + |
| | | " ]\n" + |
| | | " }\n" + |
| | | " ]\n" + |
| | | "}" |
| | | ); |
| | | mockData.put(2, |
| | | "{\n" + |
| | | " \"agvVos\": [\n" + |
| | | " {\n" + |
| | | " \"agvNo\": \"1\",\n" + |
| | | " \"code\": \"00000003\",\n" + |
| | | " \"direction\": 90,\n" + |
| | | " \"dynamicRoute\": [\n" + |
| | | " \"00000003\",\n" + |
| | | " \"00000004\"\n" + |
| | | " ]\n" + |
| | | " },\n" + |
| | | " {\n" + |
| | | " \"agvNo\": \"2\",\n" + |
| | | " \"code\": \"00000062\",\n" + |
| | | " \"direction\": 90,\n" + |
| | | " \"dynamicRoute\": [\n" + |
| | | " \n" + |
| | | " \"00000062\",\n" + |
| | | " \"00000061\",\n" + |
| | | " \"00000060\",\n" + |
| | | " \"00000059\"\n" + |
| | | " ]\n" + |
| | | " }\n" + |
| | | " ]\n" + |
| | | "}" |
| | | |
| | | ); |
| | | |
| | | mockData.put(3, |
| | | "{\n" + |
| | | " \"agvVos\": [\n" + |
| | | " {\n" + |
| | | " \"agvNo\": \"1\",\n" + |
| | | " \"code\": \"00000004\",\n" + |
| | | " \"direction\": 90,\n" + |
| | | " \"dynamicRoute\": [\n" + |
| | | " \n" + |
| | | " \"00000004\"\n" + |
| | | " ]\n" + |
| | | " },\n" + |
| | | " {\n" + |
| | | " \"agvNo\": \"2\",\n" + |
| | | " \"code\": \"00000061\",\n" + |
| | | " \"direction\": 90,\n" + |
| | | " \"dynamicRoute\": [\n" + |
| | | "\n" + |
| | | " \"00000061\",\n" + |
| | | " \"00000060\",\n" + |
| | | " \"00000059\"\n" + |
| | | " ]\n" + |
| | | " }\n" + |
| | | " ]\n" + |
| | | "}" |
| | | ); |
| | | |
| | | mockData.put(4, |
| | | "{\n" + |
| | | " \"agvVos\": [\n" + |
| | | " {\n" + |
| | | " \"agvNo\": \"1\",\n" + |
| | | " \"code\": \"00000004\",\n" + |
| | | " \"direction\": 120,\n" + |
| | | " \"dynamicRoute\": [\n" + |
| | | " \"00000004\"\n" + |
| | | " ]\n" + |
| | | " },\n" + |
| | | " {\n" + |
| | | " \"agvNo\": \"2\",\n" + |
| | | " \"code\": \"00000060\",\n" + |
| | | " \"direction\": 90,\n" + |
| | | " \"dynamicRoute\": [\n" + |
| | | "\n" + |
| | | " \"00000060\",\n" + |
| | | " \"00000059\"\n" + |
| | | " ]\n" + |
| | | " }\n" + |
| | | " ]\n" + |
| | | "}" |
| | | ); |
| | | |
| | | mockData.put(5, |
| | | "{\n" + |
| | | " \"agvVos\": [\n" + |
| | | " {\n" + |
| | | " \"agvNo\": \"1\",\n" + |
| | | " \"code\": \"00000004\",\n" + |
| | | " \"direction\": 180,\n" + |
| | | " \"dynamicRoute\": [\n" + |
| | | " \"00000004\"\n" + |
| | | " ]\n" + |
| | | " },\n" + |
| | | " {\n" + |
| | | " \"agvNo\": \"2\",\n" + |
| | | " \"code\": \"00000059\",\n" + |
| | | " \"direction\": 90,\n" + |
| | | " \"dynamicRoute\": [\n" + |
| | | "\n" + |
| | | " \"00000059\"\n" + |
| | | " ]\n" + |
| | | " }\n" + |
| | | " ]\n" + |
| | | "}" |
| | | |
| | | ); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | |
| | | { |
| | | "agvVos": [ |
| | | { |
| | | "agvNo": "1", |
| | | "code": "00000002", |
| | | "direction": 90, |
| | | "dynamicRoute": [ |
| | | "00000002", |
| | | "00000003", |
| | | "00000004" |
| | | ] |
| | | }, |
| | | { |
| | | "agvNo": "2", |
| | | "code": "00000063", |
| | | "direction": 90, |
| | | "dynamicRoute": [ |
| | | "00000063", |
| | | "00000062", |
| | | "00000061", |
| | | "00000060", |
| | | "00000059" |
| | | ] |
| | | } |
| | | ] |
| | | } |
| | | ] |
| | | } |
| | | */ |