From 528a44245d26fa8feb86ee9208c4bb1301050534 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=B1=9F=E7=8E=AE?= Date: Thu, 24 Aug 2023 09:56:53 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E8=8E=B7=E5=8F=96AGV=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/acs/history/ErrorUtil.java | 83 +++++++++++-------- 1 file changed, 50 insertions(+), 33 deletions(-) diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/history/ErrorUtil.java b/acs/nladmin-system/src/main/java/org/nl/acs/history/ErrorUtil.java index 8bd44c828..5ecee7101 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/history/ErrorUtil.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/history/ErrorUtil.java @@ -10,10 +10,7 @@ import org.nl.modules.system.service.impl.DictDetailServiceImpl; import org.nl.modules.system.service.impl.DictServiceImpl; import org.nl.modules.wql.util.SpringContextHolder; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.stream.Collectors; @@ -68,9 +65,7 @@ public class ErrorUtil { List dictDtos = dictService.queryAll(); for (int i = 0; i < dictDtos.size(); i++) { Dict dictDto = dictDtos.get(i); - dictMap.put(dictDto.getName(), getDict(dictDto.getName(), t -> { - return dictDetailService.getDictByName(t); - })); + dictMap.put(dictDto.getName(), getDict(dictDto.getName(), dictDetailService::getDictByName)); } } } @@ -79,35 +74,57 @@ public class ErrorUtil { return f.apply(name); } - public static Map getAgvErrorMsg(Integer ageErrorNum) { - Map agvMap = getDictDetailByName("agv_error_type"); - Integer[] keys = agvMap.keySet().toArray(new Integer[0]); - String message = ""; - String code = ""; - out: - for (int i = 1; i < 1 << keys.length; i++) { - int sum = 0; - StringBuffer sb = new StringBuffer(); - StringBuffer sbCode = new StringBuffer(); - inner: - for (int j = 0; j < keys.length; j++) { - if ((i & 1 << j) != 0) { - sum += keys[j]; - sb.append(agvMap.get(keys[j])).append(","); - sbCode.append(keys[j]).append(","); + public static Map getAgvErrorMsg(Integer agvErrorNum) { + String code; + String message; + + if (agvErrorNum == 0) { + code = "0"; + message = "正常"; + } else if (agvErrorNum < 0) { + code = "-1"; + message = "AGV上报报警代码有误"; + } else { + Map agvMap = getDictDetailByName("agv_error_type"); + if (agvMap.isEmpty()) { + code = "-1"; + message = "字典表未配置 [agv_error_type]"; + } else { + List> errors = agvMap.entrySet().stream().filter(e -> e.getKey() > 0).sorted(Comparator.comparingInt(Map.Entry::getKey)).collect(Collectors.toList()); + + if (errors.isEmpty()) { + code = "-1"; + message = "字典表 [agv_error_type] 配置有误"; + } else if (agvErrorNum >= (int) Math.pow(2, errors.get(errors.size() - 1).getKey())) { + code = "-1"; + message = "AGV上报报警代码有误"; + } else { + int index = 0; + StringBuilder errorCode = new StringBuilder(); + StringBuilder errorMessage = new StringBuilder(); + for (int i = agvErrorNum; i != 0; i = i >> 1) { + if (index == errors.size()) { + errorCode.setLength(0); + errorCode.append("-1"); + errorMessage.setLength(0); + errorMessage.append("字典表 [agv_error_type] 配置有误"); + break; + } + if (i % 2 == 1) { + errorCode.append(errors.get(index).getKey()).append(","); + errorMessage.append(errors.get(index).getValue()).append(","); + } + index++; + } + code = errorCode.toString(); + message = errorMessage.toString(); } } - if (sum == ageErrorNum) { - code = sbCode.toString(); - message = sb.toString(); - break out; - } } + Map map = new HashMap<>(); - String info = replace(message); - code = replace(code); - map.put("code", StrUtil.isEmpty(code) ? "-1" : code); - map.put("info", StrUtil.isEmpty(info) ? "AGV上报报警代码有误" : info); + map.put("code", replace(code)); + map.put("info", replace(message)); return map; } @@ -115,7 +132,7 @@ public class ErrorUtil { if (StrUtil.isEmpty(message)) { return null; } - if (message.endsWith(",")) { + if (message.endsWith(",") || message.endsWith(",")) { return message.substring(0, message.length() - 1); } return message;