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