From 2cd165b0fae397281801939182436837e0a55ad0 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 21 四月 2026 10:10:07 +0800
Subject: [PATCH] #堆垛机增加镭射值-V3.0.0.6

---
 src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java b/src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java
index 73498e5..acd7b71 100644
--- a/src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java
+++ b/src/main/java/com/zy/core/network/fake/ZyCrnFakeConnect.java
@@ -21,10 +21,33 @@
     private long levelStepDurationMs() { return FakeConfigSupport.getLong(FakeConfigKeys.FAKE_CRN_LEVEL_STEP_DURATION_MS); }
     private long bayStepDurationMs() { return FakeConfigSupport.getLong(FakeConfigKeys.FAKE_CRN_BAY_STEP_DURATION_MS); }
     private long resetDurationMs() { return FakeConfigSupport.getLong(FakeConfigKeys.FAKE_CRN_RESET_DURATION_MS); }
+    private long bayMin() { return FakeConfigSupport.getLong(FakeConfigKeys.FAKE_CRN_BAY_MIN); }
+    private long bayMax() { return FakeConfigSupport.getLong(FakeConfigKeys.FAKE_CRN_BAY_MAX); }
+    private long laserMin() { return FakeConfigSupport.getLong(FakeConfigKeys.FAKE_CRN_LASER_MIN); }
+    private long laserMax() { return FakeConfigSupport.getLong(FakeConfigKeys.FAKE_CRN_LASER_MAX); }
 
     public ZyCrnFakeConnect(DeviceConfig deviceConfig) {
         this.deviceConfig = deviceConfig;
         this.crnStatus = JSON.parseObject(deviceConfig.getFakeInitStatus(), ZyCrnStatusEntity.class);
+        if (this.crnStatus != null && this.crnStatus.getBay() != null) {
+            updateLaserByBay(this.crnStatus.getBay());
+        }
+    }
+
+    private void updateLaserByBay(int bay) {
+        long bayMin = bayMin();
+        long bayMax = bayMax();
+        long laserMin = laserMin();
+        long laserMax = laserMax();
+        if (bayMax <= bayMin || laserMax <= laserMin) {
+            this.crnStatus.setLaserValue((int) laserMin);
+            return;
+        }
+        long normalizedBay = Math.max(bayMin, Math.min(bayMax, bay));
+        double ratio = (double) (normalizedBay - bayMin) / (double) (bayMax - bayMin);
+        long computed = Math.round(laserMin + ratio * (laserMax - laserMin));
+        long clamped = Math.max(laserMin, Math.min(laserMax, computed));
+        this.crnStatus.setLaserValue((int) clamped);
     }
 
     @Override
@@ -148,6 +171,7 @@
             for(int i = 0; i < moveLength; i++) {
                 initSourcePosY++;
                 this.crnStatus.setBay(initSourcePosY);
+                updateLaserByBay(initSourcePosY);
                 sleep(bayStepDurationMs());
                 if (Thread.currentThread().isInterrupted()) {
                     return;
@@ -159,6 +183,7 @@
             for(int i = 0; i < moveLength; i++) {
                 initSourcePosY--;
                 this.crnStatus.setBay(initSourcePosY);
+                updateLaserByBay(initSourcePosY);
                 sleep(bayStepDurationMs());
                 if (Thread.currentThread().isInterrupted()) {
                     return;

--
Gitblit v1.9.1