From 55c0b973855662af93473ec1a70c1260ad06bb40 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@gmail.com>
Date: 星期一, 05 一月 2026 14:14:51 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/page/agvModel/AgvModelCreate.jsx                                         |    2 +
 zy-acs-flow/src/map/tool.js                                                              |   98 ++++++++++++++++++++++++++-----------------------
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java |    9 ++++
 zy-acs-flow/src/page/agvModel/AgvModelEdit.jsx                                           |    2 +
 4 files changed, 64 insertions(+), 47 deletions(-)

diff --git a/zy-acs-flow/src/map/tool.js b/zy-acs-flow/src/map/tool.js
index 32a05dc..017d65b 100644
--- a/zy-acs-flow/src/map/tool.js
+++ b/zy-acs-flow/src/map/tool.js
@@ -85,7 +85,7 @@
     return { mapX: mapPoint.x, mapY: mapPoint.y };
 }
 
-export const generateSprite = (deviceType, texture) => {
+export const generateSprite = (deviceType, texture, agvModel) => {
     let sprite;
     switch (deviceType) {
         case DEVICE_TYPE.SHELF:
@@ -118,14 +118,14 @@
             if (texture) {
                 sprite = new PIXI.Sprite(PIXI.Texture.from(texture, { resourceOptions: { scale: 1 } }));
             }
-            sprite.width = 750;
-            sprite.height = 1300;
             sprite.zIndex = DEVICE_Z_INDEX.AGV;
 
-            // // sprite.width = 750;
-            // // sprite.height = 1300;
-            // sprite.zIndex = DEVICE_Z_INDEX.AGV;
-            // sprite.scale.set(12, 10)
+            if (agvModel === 'HEAVY_LOAD_STACKING_ROBOT') {
+                sprite.scale.set(13, 11);
+            } else {
+                sprite.width = 750;
+                sprite.height = 1300;
+            }
             break
         case DEVICE_TYPE.POINT:
             sprite = new PIXI.Sprite(PIXI.Texture.from(point, { resourceOptions: { scale: 1 } }));
@@ -699,43 +699,47 @@
     }
 }
 
-export const generateAgvSpriteTexture = (agvStatusMode) => {
-    switch (agvStatusMode) {
-        case AGV_STATUS_MODE.EMPTY_NO_BATTERY:
-            return ctuEmptyNoBattery;
-        case AGV_STATUS_MODE.EMPTY_HALF_BATTERY:
-            return ctuEmptyHalfBattery;
-        case AGV_STATUS_MODE.EMPTY_FULL_BATTERY:
-            return ctuEmptyFullBattery;
-        case AGV_STATUS_MODE.LOADED_NO_BATTERY:
-            return ctuLoadedNoBattery;
-        case AGV_STATUS_MODE.LOADED_HALF_BATTERY:
-            return ctuLoadedHalfBattery;
-        case AGV_STATUS_MODE.LOADED_FULL_BATTERY:
-            return ctuLoadedFullBattery;
-        default:
-            return;
+export const generateAgvSpriteTexture = (agvModel, agvStatusMode) => {
+    if (!agvModel) {
+        console.error("failed to load agv model");
+        return;
+    }
+    if (agvModel === 'HEAVY_LOAD_STACKING_ROBOT') {
+        switch (agvStatusMode) {
+            case AGV_STATUS_MODE.EMPTY_NO_BATTERY:
+                return ASREmptyNoBattery;
+            case AGV_STATUS_MODE.EMPTY_HALF_BATTERY:
+                return ASREmptyHalfBattery;
+            case AGV_STATUS_MODE.EMPTY_FULL_BATTERY:
+                return ASREmptyFullBattery;
+            case AGV_STATUS_MODE.LOADED_NO_BATTERY:
+                return ASRLoadedNoBattery;
+            case AGV_STATUS_MODE.LOADED_HALF_BATTERY:
+                return ASRLoadedHalfBattery;
+            case AGV_STATUS_MODE.LOADED_FULL_BATTERY:
+                return ASRLoadedFullBattery;
+            default:
+                return;
+        }
+    } else {
+        switch (agvStatusMode) {
+            case AGV_STATUS_MODE.EMPTY_NO_BATTERY:
+                return ctuEmptyNoBattery;
+            case AGV_STATUS_MODE.EMPTY_HALF_BATTERY:
+                return ctuEmptyHalfBattery;
+            case AGV_STATUS_MODE.EMPTY_FULL_BATTERY:
+                return ctuEmptyFullBattery;
+            case AGV_STATUS_MODE.LOADED_NO_BATTERY:
+                return ctuLoadedNoBattery;
+            case AGV_STATUS_MODE.LOADED_HALF_BATTERY:
+                return ctuLoadedHalfBattery;
+            case AGV_STATUS_MODE.LOADED_FULL_BATTERY:
+                return ctuLoadedFullBattery;
+            default:
+                return;
+        }
     }
 }
-
-// export const generateAgvSpriteTexture = (agvStatusMode) => {
-//     switch (agvStatusMode) {
-//         case AGV_STATUS_MODE.EMPTY_NO_BATTERY:
-//             return ASREmptyNoBattery;
-//         case AGV_STATUS_MODE.EMPTY_HALF_BATTERY:
-//             return ASREmptyHalfBattery;
-//         case AGV_STATUS_MODE.EMPTY_FULL_BATTERY:
-//             return ASREmptyFullBattery;
-//         case AGV_STATUS_MODE.LOADED_NO_BATTERY:
-//             return ASRLoadedNoBattery;
-//         case AGV_STATUS_MODE.LOADED_HALF_BATTERY:
-//             return ASRLoadedHalfBattery;
-//         case AGV_STATUS_MODE.LOADED_FULL_BATTERY:
-//             return ASRLoadedFullBattery;
-//         default:
-//             return;
-//     }
-// }
 
 export function createAgvJobPanel(parentContainer, text) {
     const panelScale = 4;
@@ -800,7 +804,7 @@
 const agvRotationOffset = rotationParseNum(AGV_ANGLE_OFFSET_VAL);
 
 const showAgvSprite = (curZone, agvVo, setCurSprite) => {
-    const { agvNo, code, direction, battery, jobType, backpack: backpackCount, slots, error } = agvVo;
+    const { agvNo, agvModel, code, direction, battery, jobType, backpack: backpackCount, slots, error } = agvVo;
     if (!code) { return; }
     const codeSprite = querySprite(DEVICE_TYPE.POINT, code);
     if (!codeSprite) { return; }
@@ -811,8 +815,8 @@
     let agvSprite = querySprite(DEVICE_TYPE.AGV, agvNo);
     if (!agvSprite) {
         const agvStatusMode = getAgvStatusMode(backpackCount, battery);
-        const agvTexture = generateAgvSpriteTexture(agvStatusMode);
-        agvSprite = generateSprite(DEVICE_TYPE.AGV, agvTexture);
+        const agvTexture = generateAgvSpriteTexture(agvModel, agvStatusMode);
+        agvSprite = generateSprite(DEVICE_TYPE.AGV, agvTexture, agvModel);
 
         initSprite(agvSprite, DEVICE_TYPE.AGV);
 
@@ -831,7 +835,9 @@
         });
         agvText.anchor.set(0.5, 0.5);
         agvText.position.set(0, 8);
-        // agvText.position.set(0, 18);
+        if (agvModel === 'HEAVY_LOAD_STACKING_ROBOT') {
+            agvText.position.set(0, 20);
+        }
         agvText.scale.set(MAP_MIRROR ? -1 : 1, 1)
         agvSprite.addChild(agvText);
 
diff --git a/zy-acs-flow/src/page/agvModel/AgvModelCreate.jsx b/zy-acs-flow/src/page/agvModel/AgvModelCreate.jsx
index 4b58a6b..cbd0f58 100644
--- a/zy-acs-flow/src/page/agvModel/AgvModelCreate.jsx
+++ b/zy-acs-flow/src/page/agvModel/AgvModelCreate.jsx
@@ -157,12 +157,14 @@
                                     <NumberInput
                                         label="table.field.agvModel.lowBattery"
                                         source="lowBattery"
+                                        validate={required()}
                                     />
                                 </Grid>
                                 <Grid item xs={6} display="flex" gap={1}>
                                     <NumberInput
                                         label="table.field.agvModel.quaBattery"
                                         source="quaBattery"
+                                        validate={required()}
                                     />
                                 </Grid>
                                 <Grid item xs={6} display="flex" gap={1}>
diff --git a/zy-acs-flow/src/page/agvModel/AgvModelEdit.jsx b/zy-acs-flow/src/page/agvModel/AgvModelEdit.jsx
index f2de69c..5b78e04 100644
--- a/zy-acs-flow/src/page/agvModel/AgvModelEdit.jsx
+++ b/zy-acs-flow/src/page/agvModel/AgvModelEdit.jsx
@@ -122,10 +122,12 @@
                             <NumberInput
                                 label="table.field.agvModel.lowBattery"
                                 source="lowBattery"
+                                validate={required()}
                             />
                             <NumberInput
                                 label="table.field.agvModel.quaBattery"
                                 source="quaBattery"
+                                validate={required()}
                             />
                         </Stack>
                         <Stack direction='row' gap={2}>
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java
index 97ca4cd..fedc29c 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java
@@ -120,7 +120,7 @@
     }
 
     @Override
-    public Agv modify(Agv agv, Long userId) {
+    public synchronized Agv modify(Agv agv, Long userId) {
         if (agv == null || agv.getId() == null) {
             throw new CoolException("Update Fail");
         }
@@ -139,6 +139,9 @@
         Agv oldAgv = this.getById(agv.getId());
         String oldAgvNo = oldAgv.getUuid();
 
+        AgvModelServiceImpl.AGV_ID_MODEL_CACHE.remove(agv.getId());
+        AgvModelServiceImpl.AGV_NO_MODEL_CACHE.remove(oldAgvNo);
+
         agv.setUpdateBy(userId);
         agv.setUpdateTime(now);
         if (!this.updateById(agv)) {
@@ -157,6 +160,10 @@
             AGV_NO_MAP.put(newAgv.getId(), newAgvNo);
         }
 
+//        AgvModel agvModel = agvModelService.getById(agv.getAgvModel());
+//        AgvModelServiceImpl.AGV_ID_MODEL_CACHE.put(agv.getId(), agvModel);
+//        AgvModelServiceImpl.AGV_NO_MODEL_CACHE.put(newAgvNo, agvModel);
+
         return newAgv;
     }
 

--
Gitblit v1.9.1