From 65ab695aadfac96fa121986cf1b53966aeab7c2f Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 26 四月 2024 15:34:10 +0800
Subject: [PATCH] #

---
 src/utils/common.js    |   16 ++++++++++++++++
 src/components/box.jsx |   17 ++++++++++++-----
 src/config/setting.js  |   10 +++++++++-
 3 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/src/components/box.jsx b/src/components/box.jsx
index a3dd4dc..af0d2d7 100644
--- a/src/components/box.jsx
+++ b/src/components/box.jsx
@@ -2,7 +2,7 @@
 import { useFrame } from '@react-three/fiber';
 import { useFBX, useAnimations } from '@react-three/drei';
 import * as THREE from 'three';
-import { MODEL_BOX_SCALE } from '@/config/setting'
+import { MODEL_BOX_SCALE, SHELF_BAY_GROUP_COUNT } from '@/config/setting'
 import * as Common from '../utils/common';
 import { useStore } from '@/store';
 
@@ -11,7 +11,7 @@
 }
 
 const getShelfBay = (bay) => {
-    return bay - (bay - 1) % 3;
+    return bay - (bay - 1) % SHELF_BAY_GROUP_COUNT;
 }
 
 const getShelfLev = (lev) => {
@@ -19,7 +19,7 @@
 }
 
 const getShelfNo = (row, bay, lev) => {
-    return getShelfRow(row) + '-' + getShelfBay(bay) + '-' + getShelfLev(lev);
+    return Common.generateLocNo(getShelfRow(row), getShelfBay(bay), getShelfLev(lev));
 }
 
 const Box = (props) => {
@@ -27,6 +27,7 @@
     const state = useStore();
 
     const [pos, setPos] = useState([]);
+    const [rotaY, setRotaY] = useState(0);
 
     const boxModel = useMemo(() => {
         const fbx = useFBX('/models/box/box.fbx');
@@ -42,16 +43,22 @@
             // from shelf
             const shelfNo = getShelfNo(row, bay, lev);
             const shelfPos = state.shelfList[shelfNo];
-            setPos(shelfPos);
+            const { row: shelfRow, bay: shelfBay, lev: shelfLev } = Common.parseLocNo(shelfNo);
+
+            console.log([shelfPos[0], shelfPos[1] + (bay - shelfBay) * 100, shelfPos[2] + (lev - shelfLev) * 100]);
+
+            setPos([shelfPos[0], shelfPos[1] + (bay - shelfBay) * 10, shelfPos[2] + (lev - shelfLev) * 100]);
+            setRotaY(Math.PI / 2);
         } else {
             // from agv
             setPos(position);
+            setRotaY(rotationY);
         }
     }, [props]);
 
     return (
         <>
-            <group rotation-y={rotationY} position={pos}>
+            <group rotation-y={rotaY} position={pos}>
                 <primitive object={boxModel} castShadow />
             </group>
         </>
diff --git a/src/config/setting.js b/src/config/setting.js
index cf4fad5..cde926b 100644
--- a/src/config/setting.js
+++ b/src/config/setting.js
@@ -8,14 +8,22 @@
 
 export const INTERVAL_TIME = 500;
 
+// model scale rate
+
 export const MODEL_AGV_SCALE = .5;
 
 export const MODEL_BOX_SCALE = .5;
 
 export const MODEL_SHELF_SCALE = 1;
 
+// shelf scale & offset
+
 export const REAL_COMPARE_MAP_SCALE = .1;
 
 export const REAL_COMPARE_MAP_OFFSET_X = -200;
 
-export const REAL_COMPARE_MAP_OFFSET_Z = -600;
\ No newline at end of file
+export const REAL_COMPARE_MAP_OFFSET_Z = -600;
+
+// shelf setting
+
+export const SHELF_BAY_GROUP_COUNT = 3;
\ No newline at end of file
diff --git a/src/utils/common.js b/src/utils/common.js
index 5c5c8df..50bfdb4 100644
--- a/src/utils/common.js
+++ b/src/utils/common.js
@@ -76,4 +76,20 @@
         }
     }
     return true;
+}
+
+export const parseLocNo = (locNo) => {
+    if (!locNo || typeof locNo !== 'string') {
+        return null;
+    }
+    const locParseArr = locNo.split('-');
+    return {
+        row: locParseArr?.[0],
+        bay: locParseArr?.[1],
+        lev: locParseArr?.[2],
+    }
+}
+
+export const generateLocNo = (row, bay, lev) => {
+    return row + '-' + bay + '-' + lev;
 }
\ No newline at end of file

--
Gitblit v1.9.1