From 3210698902c4e0f3e6f1433d24e62923fbfa794d Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 28 五月 2025 12:59:42 +0800
Subject: [PATCH] 组托IO类型优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java |  114 ++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 92 insertions(+), 22 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java
index dc5064e..b9668dc 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java
@@ -5,41 +5,100 @@
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.SpringUtils;
 import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.api.controller.params.TaskInParam;
+import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto;
 import com.vincent.rsf.server.api.entity.dto.LocTypeDto;
-import com.vincent.rsf.server.manager.entity.DeviceBind;
-import com.vincent.rsf.server.manager.entity.Loc;
-import com.vincent.rsf.server.manager.service.DeviceBindService;
+import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.LocStsType;
+import com.vincent.rsf.server.manager.enums.TaskType;
+import com.vincent.rsf.server.manager.service.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 
+import javax.annotation.PostConstruct;
+import javax.annotation.RegEx;
+import javax.annotation.Resource;
 import java.util.List;
 
+@Component
 public class LocUtils {
+
+    public static final Logger logger = LoggerFactory.getLogger(LocUtils.class);
+
+    private static List<Integer>  doubleLocs;
+
+    private static Boolean isDoubleDeep;
+
+    @Autowired
+    private SlaveProperties slavePropertie;
+
+    @PostConstruct
+    public void init() {
+        doubleLocs = slavePropertie.getDoubleLocs();
+        isDoubleDeep = slavePropertie.isDoubleDeep();
+    }
+
 
     /**
      * 鑾峰彇 娴呭簱浣嶅搴旂殑娣卞簱浣嶅彿
      */
     public static String getDeepLoc(SlaveProperties slaveProperties, String shallowLoc) {
-        int row = getRow(shallowLoc);
-        int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount());
-        int targetRow;
-        if (remainder == 2) {
-            targetRow = row - 1;
-        } else if (remainder == 3) {
-            targetRow = row + 1;
-        } else {
-            throw new CoolException(shallowLoc + "涓嶆槸娴呭簱浣嶏紝绯荤粺绻佸繖");
+        LocService locService = SpringUtils.getBean(LocService.class);
+        Loc shaLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLoc));
+        int row = shaLoc.getRow()-1;
+        boolean contains = slaveProperties.getDoubleLocs().contains(row);
+        Loc deepLoc = null;
+        if (contains) {
+            deepLoc = locService.getOne(new LambdaQueryWrapper<Loc>()
+                    .eq(Loc::getAreaId, shaLoc.getAreaId())
+                    .eq(Loc::getRow, row)
+                    .eq(Loc::getCol, shaLoc.getCol())
+                    .eq(Loc::getLev, shaLoc.getLev())
+            );
+        }else {
+            deepLoc = locService.getOne(new LambdaQueryWrapper<Loc>()
+                    .eq(Loc::getAreaId, shaLoc.getAreaId())
+                    .eq(Loc::getRow, shaLoc.getRow()+1)
+                    .eq(Loc::getCol, shaLoc.getCol())
+                    .eq(Loc::getLev, shaLoc.getLev())
+            );
         }
-        return zerofill(String.valueOf(targetRow), 2) + shallowLoc.substring(2);
+        return deepLoc.getCode();
     }
 
     /**
      * 鑾峰彇 娣卞簱浣嶅搴旂殑娴呭簱浣嶅彿
      */
     public static String getShallowLoc(SlaveProperties slaveProperties, String deepLoc) {
-        int row = getRow(deepLoc);
-        int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount());
-        int shallowRow = remainder == 1 ? (row + 1) : (row - 1);
-        return zerofill(String.valueOf(shallowRow), 2) + deepLoc.substring(2);
+        LocService locService = SpringUtils.getBean(LocService.class);
+        Loc depLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, deepLoc));
+        int row;
+        if (depLoc.getRow() != 1) {
+            row = depLoc.getRow()-1;
+        } else {
+            row = depLoc.getRow();
+        }
+        boolean contains = slaveProperties.getDoubleLocs().contains(row);
+        Loc shallowLoc = null;
+        if (!contains) {
+            shallowLoc = locService.getOne(new LambdaQueryWrapper<Loc>()
+                    .eq(Loc::getAreaId, depLoc.getAreaId())
+                    .eq(Loc::getRow, row)
+                    .eq(Loc::getCol, depLoc.getCol())
+                    .eq(Loc::getLev, depLoc.getLev())
+            );
+        }else {
+            shallowLoc = locService.getOne(new LambdaQueryWrapper<Loc>()
+                    .eq(Loc::getAreaId, depLoc.getAreaId())
+                    .eq(Loc::getRow, depLoc.getRow()+1)
+                    .eq(Loc::getCol, depLoc.getCol())
+                    .eq(Loc::getLev, depLoc.getLev())
+            );
+        }
+        return shallowLoc.getCode();
     }
 
     /**
@@ -71,13 +130,10 @@
 
     //搴撲綅鎺掑彿鍒嗛厤
     public static int[] LocNecessaryParameters(DeviceBind deviceBind, Integer curRow, Integer crnNumber) {
-
       return LocNecessaryParametersDoubleExtension(curRow, crnNumber); //宸插畬鍠�
-
-
     }
 
-    //缁忓吀鍙屼几搴撲綅
+    //缁忓吀鍙屼几搴撲綅,  鑾峰彇鍙屾繁鎺�
     public static int[] LocNecessaryParametersDoubleExtension( Integer curRow, Integer crnNumber) {
         int[] necessaryParameters = new int[]{0, 0, 0, 0};
 
@@ -117,7 +173,12 @@
      */
     public static int getRow(String locNo) {
         if (!Cools.isEmpty(locNo)) {
-            return Integer.parseInt(locNo.substring(0, 2));
+            LocService locService = SpringUtils.getBean(LocService.class);
+            Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, locNo));
+            if (null == loc) {
+                throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+            }
+            return loc.getRow();
         }
         throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
     }
@@ -150,6 +211,15 @@
         // 濡傛灉婧愬簱浣嶆槸楂樺簱浣嶏紝鐩爣搴撲綅鏄綆搴撲綅
         return dto.getLocType1().equals(Integer.parseInt(loc.getType()));
     }
+
+    public static String  getCrnLoc() {
+        SlaveProperties bean = SpringUtils.getBean(SlaveProperties.class);
+        System.out.println(bean.getDoubleLocs());
+
+        return null;
+    }
+
+
     public static String zerofill(String msg, Integer count) {
         if (msg.length() == count) {
             return msg;

--
Gitblit v1.9.1