From 6224398d6ac2db27c33fb5a950cdab2b8e189814 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 10 十二月 2024 15:21:23 +0800
Subject: [PATCH] #
---
zy-acs-flow/src/map/header/RouteFab.jsx | 64 +++++++++++++++++++++
zy-acs-flow/src/map/http.js | 11 ++-
zy-acs-flow/src/map/tool.js | 40 ++++++++-----
zy-acs-manager/src/main/java/com/zy/acs/manager/core/DemoController.java | 10 +++
zy-acs-manager/src/main/java/com/zy/acs/manager/core/utils/RouteGenerator.java | 17 ++++-
zy-acs-flow/src/map/MapPage.jsx | 20 ++----
6 files changed, 127 insertions(+), 35 deletions(-)
diff --git a/zy-acs-flow/src/map/MapPage.jsx b/zy-acs-flow/src/map/MapPage.jsx
index b777f45..f4f6ba0 100644
--- a/zy-acs-flow/src/map/MapPage.jsx
+++ b/zy-acs-flow/src/map/MapPage.jsx
@@ -19,11 +19,12 @@
import * as Http from './http';
import WebSocketClient from './websocket'
import ConfirmButton from "../page/components/ConfirmButton";
-import { FitScreen, AltRoute, RotateRight } from '@mui/icons-material';
+import { FitScreen, RotateRight } from '@mui/icons-material';
import MapSearch from "./header/MapSearch";
import { startupOrShutdown } from "./http";
import PulseSignal from "../page/components/PulseSignal";
import FakeFab from "./header/FakeFab";
+import RouteFab from "./header/RouteFab";
let player;
let websocket;
@@ -409,17 +410,12 @@
>
{mode !== MAP_MODE.MOVABLE_MODE && (
<>
- <Fab
- variant="extended"
- color={showRoutes ? 'primary' : 'default'}
- size="small"
- onClick={() => {
- showRoutes ? Tool.hideRoutes(curZone, setShowRoutes) : Tool.showRoutes(curZone, setShowRoutes)
- }}
- >
- <AltRoute />
- {translate('page.map.action.route')}
- </Fab>
+ <RouteFab
+ curZone={curZone}
+ showRoutes={showRoutes}
+ setShowRoutes={setShowRoutes}
+ notify={notify}
+ />
<FakeFab />
</>
)}
diff --git a/zy-acs-flow/src/map/header/RouteFab.jsx b/zy-acs-flow/src/map/header/RouteFab.jsx
new file mode 100644
index 0000000..e961aaf
--- /dev/null
+++ b/zy-acs-flow/src/map/header/RouteFab.jsx
@@ -0,0 +1,64 @@
+import React, { useState, useRef, useEffect, useMemo } from "react";
+import { useTranslate } from "react-admin";
+import {
+ Fab,
+ Box,
+ Backdrop,
+ useTheme,
+} from '@mui/material';
+import AltRouteIcon from '@mui/icons-material/AltRoute';
+import CircularProgress from '@mui/material/CircularProgress';
+import * as Tool from '../tool';
+
+const RouteFab = (props) => {
+ const { curZone, showRoutes, setShowRoutes, notify } = props;
+ const translate = useTranslate();
+ const theme = useTheme(); // theme.palette.primary.main
+
+ const [loading, setLoading] = React.useState(false);
+
+ const handleClick = () => {
+ if (showRoutes) {
+ Tool.hideRoutes(curZone, setShowRoutes);
+ } else {
+ Tool.showRoutes(curZone, setShowRoutes, setLoading);
+ }
+ }
+
+ return (
+ <>
+ <Fab
+ variant="extended"
+ color={showRoutes ? 'primary' : 'default'}
+ size="small"
+ disabled={loading}
+ onClick={handleClick}
+ >
+ <AltRouteIcon />
+ {translate('page.map.action.route')}
+ {loading && (
+ <>
+ <svg width={0} height={0}>
+ <defs>
+ <linearGradient id="my_gradient" x1="0%" y1="0%" x2="0%" y2="100%">
+ <stop offset="0%" stopColor="#e01cd5" />
+ <stop offset="100%" stopColor="#1CB5E0" />
+ </linearGradient>
+ </defs>
+ </svg>
+ <CircularProgress size={18} thickness={8} sx={{ 'svg circle': { stroke: 'url(#my_gradient)' } }} />
+ </>
+ )}
+ </Fab>
+ {/* global */}
+ {/* <Backdrop
+ sx={{ color: '#fff', zIndex: (theme) => theme.zIndex.drawer + 1 }}
+ open={loading}
+ >
+ <CircularProgress color="inherit" />
+ </Backdrop> */}
+ </>
+ )
+}
+
+export default RouteFab;
\ No newline at end of file
diff --git a/zy-acs-flow/src/map/http.js b/zy-acs-flow/src/map/http.js
index a581384..88ab8dc 100644
--- a/zy-acs-flow/src/map/http.js
+++ b/zy-acs-flow/src/map/http.js
@@ -49,12 +49,11 @@
// support
switch (item.type) {
case DEVICE_TYPE.POINT:
- sprite.scale.set(1);
+ sprite.scale.set(pointList.length < 2000 ? 1 : 1.6);
break
default:
break
}
- // }, 50);
mapContainer.addChild(sprite);
Tool.beInsight(sprite, setCurSprite);
@@ -185,7 +184,7 @@
})
}
-export const getRouteList = async (zoneId, callback) => {
+export const getRouteList = async (zoneId, callback, errCallBack) => {
await request.post('/map/route/list', {
zoneId: zoneId,
}, {
@@ -196,10 +195,16 @@
callback(data)
} else {
notify.error(msg);
+ if (errCallBack) {
+ errCallBack();
+ }
}
}).catch((error) => {
notify.error(error.message);
console.error(error.message);
+ if (errCallBack) {
+ errCallBack();
+ }
})
}
diff --git a/zy-acs-flow/src/map/tool.js b/zy-acs-flow/src/map/tool.js
index 09d3ded..bdd7690 100644
--- a/zy-acs-flow/src/map/tool.js
+++ b/zy-acs-flow/src/map/tool.js
@@ -489,22 +489,30 @@
effectCircle.position.set(selectedSprite.x, selectedSprite.y);
};
-export const showRoutes = (curZone, setShowRoutes) => {
- setShowRoutes(true);
- getRouteList(curZone, (routeList) => {
- routeList.forEach(route => {
- const startPoint = querySprite(DEVICE_TYPE.POINT, route.startCodeStr);
- const endPoint = querySprite(DEVICE_TYPE.POINT, route.endCodeStr);
- const pointRoute = new PointRoute(POINT_ROUTE_DIRECTION[route.direction]);
- pointRoute.setPoint(startPoint, endPoint);
- pointRoute.clear();
- 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;
- mapContainer.addChild(pointRoute);
- })
- })
+export const showRoutes = (curZone, setShowRoutes, setLoading) => {
+ setLoading(true);
+ getRouteList(
+ curZone,
+ (routeList) => {
+ routeList.forEach(route => {
+ const startPoint = querySprite(DEVICE_TYPE.POINT, route.startCodeStr);
+ const endPoint = querySprite(DEVICE_TYPE.POINT, route.endCodeStr);
+ const pointRoute = new PointRoute(POINT_ROUTE_DIRECTION[route.direction]);
+ pointRoute.setPoint(startPoint, endPoint);
+ pointRoute.clear();
+ 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;
+ mapContainer.addChild(pointRoute);
+ })
+ setLoading(false);
+ setShowRoutes(true);
+ },
+ () => {
+ setLoading(false);
+ },
+ )
};
export const hideRoutes = (curZone, setShowRoutes) => {
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/DemoController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/DemoController.java
index 6845c30..ed9c70b 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/DemoController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/DemoController.java
@@ -4,6 +4,7 @@
import com.zy.acs.framework.common.SnowflakeIdWorker;
import com.zy.acs.manager.core.service.*;
import com.zy.acs.manager.core.service.astart.MapDataDispatcher;
+import com.zy.acs.manager.core.utils.RouteGenerator;
import com.zy.acs.manager.manager.entity.AgvDetail;
import com.zy.acs.manager.manager.enums.TaskTypeType;
import com.zy.acs.manager.manager.service.*;
@@ -50,12 +51,21 @@
private AvoidWaveCalculator avoidWaveCalculator;
@Autowired
private PatrolService patrolService;
+ @Autowired
+ private RouteGenerator routeGenerator;
@RequestMapping(value = "/system/info", method = {RequestMethod.GET, RequestMethod.POST})
public R systemInfo() {
return R.ok("RCS-FLOW-1.0.0");
}
+// @RequestMapping(value = "/system/route/generate", method = {RequestMethod.GET, RequestMethod.POST})
+// public R generate() {
+// String[][] codeMatrix = mapDataDispatcher.getCodeMatrix(null);
+// List<String> list = routeGenerator.generateRoutes(codeMatrix);
+// return R.ok(String.valueOf(list.size())).add(list);
+// }
+
@GetMapping("/dead/lock")
public R aaa() {
AgvDetail agvDetail11 = agvDetailService.selectByAgvNo("11");
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/utils/RouteGenerator.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/utils/RouteGenerator.java
index f2c9b62..c3cad61 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/utils/RouteGenerator.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/utils/RouteGenerator.java
@@ -4,10 +4,10 @@
import com.zy.acs.manager.core.service.astart.CodeNodeType;
import com.zy.acs.manager.core.service.astart.MapDataDispatcher;
import com.zy.acs.manager.manager.entity.Code;
-import com.zy.acs.manager.manager.entity.Route;
import com.zy.acs.manager.manager.service.CodeGapService;
import com.zy.acs.manager.manager.service.CodeService;
import com.zy.acs.manager.manager.service.RouteService;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -17,6 +17,7 @@
/**
* Created by vincent on 12/9/2024
*/
+@Slf4j
@Component
public class RouteGenerator {
@@ -29,8 +30,8 @@
@Autowired
private CodeGapService codeGapService;
- public List<Route> generateRoutes(String[][] codeMatrix) {
- List<Route> routes = new ArrayList<>();
+ public List<String> generateRoutes(String[][] codeMatrix) {
+ List<String> list = new ArrayList<>();
int rows = codeMatrix.length;
int cols = codeMatrix[0].length;
@@ -51,7 +52,11 @@
String rightCodeData = codeMatrix[i][j + 1];
if (!Cools.isEmpty(rightCodeData) && !CodeNodeType.NONE.val.equals(rightCodeData)) {
Code rightCode = codeService.selectByData(rightCodeData);
+ list.add(currCode.getData() + "-" + rightCode.getData());
routeService.createRouteByCode(currCode, rightCode, 0, null);
+ codeGapService.createCodeGapByCode(currCode, rightCode, null);
+
+ log.info(currCode.getData() + "-" + rightCode.getData() + " [finished]");
}
}
@@ -60,13 +65,17 @@
String bottomCodeData = codeMatrix[i + 1][j];
if (!Cools.isEmpty(bottomCodeData) && !CodeNodeType.NONE.val.equals(bottomCodeData)) {
Code bottomCode = codeService.selectByData(bottomCodeData);
+ list.add(currCode.getData() + "-" + bottomCode.getData());
routeService.createRouteByCode(currCode, bottomCode, 0, null);
+ codeGapService.createCodeGapByCode(currCode, bottomCode, null);
+
+ log.info(currCode.getData() + "-" + bottomCode.getData() + " [finished]");
}
}
}
}
- return routes;
+ return list;
}
--
Gitblit v1.9.1