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 />
-                                &nbsp;{translate('page.map.action.route')}&nbsp;
-                            </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 />
+                &nbsp;{translate('page.map.action.route')}&nbsp;
+                {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