From c9ec91f64f45e1484231cee06d3efd8510bb0995 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 26 四月 2024 16:16:35 +0800
Subject: [PATCH] #

---
 src/utils/common.js    |    6 +++---
 src/components/box.jsx |   27 ++++++++++++++++++++++++---
 src/config/setting.js  |    8 +++++++-
 3 files changed, 34 insertions(+), 7 deletions(-)

diff --git a/src/components/box.jsx b/src/components/box.jsx
index af0d2d7..351575b 100644
--- a/src/components/box.jsx
+++ b/src/components/box.jsx
@@ -2,7 +2,13 @@
 import { useFrame } from '@react-three/fiber';
 import { useFBX, useAnimations } from '@react-three/drei';
 import * as THREE from 'three';
-import { MODEL_BOX_SCALE, SHELF_BAY_GROUP_COUNT } from '@/config/setting'
+import {
+    MODEL_BOX_SCALE,
+    SHELF_BAY_GROUP_COUNT,
+    SHELF_BAY_UNIT_SEPARTE_DISTANCE,
+    SHELF_LEV_UNIT_SEPARTE_DISTANCE,
+    SHELF_HEIGHT_FROM_GROUND
+} from '@/config/setting'
 import * as Common from '../utils/common';
 import { useStore } from '@/store';
 
@@ -43,11 +49,26 @@
             // from shelf
             const shelfNo = getShelfNo(row, bay, lev);
             const shelfPos = state.shelfList[shelfNo];
+            if (!shelfPos) { return }
             const { row: shelfRow, bay: shelfBay, lev: shelfLev } = Common.parseLocNo(shelfNo);
 
-            console.log([shelfPos[0], shelfPos[1] + (bay - shelfBay) * 100, shelfPos[2] + (lev - shelfLev) * 100]);
+            // cal bay position
+            let posZByLev = shelfPos[2];
+            if (bay === shelfBay) {
+                posZByLev = shelfPos[2] + SHELF_BAY_UNIT_SEPARTE_DISTANCE;
+            }
+            if (bay === shelfBay + 1) {
+                posZByLev = shelfPos[2];
+            }
+            if (bay === shelfBay + 2) {
+                posZByLev = shelfPos[2] - SHELF_BAY_UNIT_SEPARTE_DISTANCE;
+            }
 
-            setPos([shelfPos[0], shelfPos[1] + (bay - shelfBay) * 10, shelfPos[2] + (lev - shelfLev) * 100]);
+            setPos([
+                shelfPos[0],
+                shelfPos[1] + SHELF_HEIGHT_FROM_GROUND + (lev - shelfLev) * SHELF_LEV_UNIT_SEPARTE_DISTANCE,
+                posZByLev
+            ]);
             setRotaY(Math.PI / 2);
         } else {
             // from agv
diff --git a/src/config/setting.js b/src/config/setting.js
index cde926b..e95ac6a 100644
--- a/src/config/setting.js
+++ b/src/config/setting.js
@@ -26,4 +26,10 @@
 
 // shelf setting
 
-export const SHELF_BAY_GROUP_COUNT = 3;
\ No newline at end of file
+export const SHELF_BAY_GROUP_COUNT = 3;
+
+export const SHELF_BAY_UNIT_SEPARTE_DISTANCE = 50;
+
+export const SHELF_HEIGHT_FROM_GROUND = 10;
+
+export const SHELF_LEV_UNIT_SEPARTE_DISTANCE = 28;
\ No newline at end of file
diff --git a/src/utils/common.js b/src/utils/common.js
index 50bfdb4..25d76a5 100644
--- a/src/utils/common.js
+++ b/src/utils/common.js
@@ -84,9 +84,9 @@
     }
     const locParseArr = locNo.split('-');
     return {
-        row: locParseArr?.[0],
-        bay: locParseArr?.[1],
-        lev: locParseArr?.[2],
+        row: Number(locParseArr?.[0]),
+        bay: Number(locParseArr?.[1]),
+        lev: Number(locParseArr?.[2]),
     }
 }
 

--
Gitblit v1.9.1