From 2583d630205582822e2af3026b75c5f915352bfc Mon Sep 17 00:00:00 2001 From: CZT <czt18638530771@163.com> Date: 星期六, 07 十月 2023 18:51:24 +0800 Subject: [PATCH] 贝博粮情解析6-温湿度解析 --- igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java | 207 +++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 158 insertions(+), 49 deletions(-) diff --git a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java index 5a789b8..a516d11 100644 --- a/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java +++ b/igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java @@ -65,11 +65,6 @@ public static double MAX_TEMP = -50.0; public static double MIN_TEMP = 50.0; - public static void main(String[] args) { - String str = "00000000FFEB90FEAA41E821EC21EA21EC21ED21EC21E921E221E921E921E921EC21E921ED21F021E521E521E221E421E321E321E121DE21D721E021DD21DC21DF21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"; - System.out.println(str.substring(9 * 2, 10 * 2)); - } - /** * 00000000FFEB90FEAA41E821EC21EA21EC21ED21EC21E921E221E921E921E921EC21E921ED21F021E521E521E221E421E321E321E121DE21D721E021DD21DC21DF21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF * @@ -241,6 +236,10 @@ sumNum += Integer.valueOf(cableRuleAtt[i]); } + if(cableZ < ser.getCableZ()){ + cableZ = ser.getCableZ(); + } + // 鏍规嵁灞傝鍒楄幏鍙栨寚瀹氶暱搴� int start = 4 * (depotConf.getCableStart() - ser.getCableStart()) * cableZ; int len = 4 * cableZ * sumNum; @@ -252,10 +251,6 @@ List<Double> temps = new ArrayList<>(); double tempValue; String temp; - int curLay = 1;//鎵�鍦ㄥ眰浠�1寮�濮� - int curRoot = 1;//鎵�鍦ㄦ牴 - int curCir = 1;//鎵�鍦ㄥ湀 - int cirLay = 1;//褰撳墠鍦堢殑灞� int symbol = 0; //绗﹀彿浣� for (int i = 0; i < strPoints.length() / 4; i++) { temp = strPoints.substring(i * 4, i * 4 + 4); @@ -289,38 +284,7 @@ if (tempValue >= FAULT_CHECK_TAG) { tempValue = Constant.FAULT_TEMP; } - - // 澶囩敤鍊� - if (tempValue == ERROR_CHECK_TAG) { - tempValue = Constant.ERROR_TEMP; - - - //楠岃瘉鏄笉鏄敟褰粨琛ュ伩鍊� - curLay = (i % layMax) + 1; - curRoot = (i / layMax) + 1; - curCir = getCurCir(curRoot, cableRuleAtt); - - cirLay = Integer.valueOf(cableCirAtt[curCir - 1]); - - //姣斿閰嶇疆浜�5灞備絾鏄綋鍓嶆槸6灞傦紝璇存槑褰撳墠鐐逛负琛ュ伩鐐� - if (curLay > cirLay) { - tempValue = Constant.ADD_TEMP; - - //鍒ゆ柇鏄笉鏄笂閿ュ舰锛屽皢琛ョ偣杞Щ鍒颁笂鏂� - if (Constant.CABLE_CONE_1.equals(depotConf.getCableCone())) { - int index = i - curLay - 1; - temps.add(index, tempValue); - } else { - temps.add(tempValue); - } - - } else { - temps.add(tempValue); - } - - } else { - temps.add(tempValue); - } + temps.add(tempValue); } log.debug("-------CheckGrainRequest--={}", exeRequest.toString()); @@ -460,8 +424,38 @@ grain.setCompanyId(depotConf.getCompanyId()); grain.setCable(depotConf.getCableRule()); grain.setBatchId(msg.getBatchId()); - grain.setTempIn(Constant.ERROR_TEMP); - grain.setHumidityIn(Constant.ERROR_TEMP); + + int humidity = -100; + int tem = -100; + String substring = ""; + + //瑙f瀽澶栨箍澶栨俯 + String thStr = msg.getThStr().substring(6, 12); + humidity = BytesUtil.hexToInt(thStr.substring(0, 2)); + grain.setHumidityOut(humidity * 1.0); + substring = thStr.substring(2); + tem = BytesUtil.hexToInt(substring); + grain.setTempOut(tem * 1.0); + if(substring.startsWith("1")){ + grain.setTempOut(tem * -1.0); + } + + //瑙f瀽浠撳唴娓╀粨鍐呮箍 + int thConf = Integer.valueOf(depotConf.getThConf()); + int start = 0, end = 6; + if(thConf > 1){ + start += 6*thConf; //12-18 + end += start; + } + thStr = msg.getThStr().substring(start, end); + humidity = BytesUtil.hexToInt(thStr.substring(0, 2)); + grain.setHumidityIn(humidity * 1.0); + substring = thStr.substring(2); + tem = BytesUtil.hexToInt(substring); + grain.setTempIn(tem * 1.0); + if(substring.startsWith("1")){ + grain.setTempIn(tem * -1.0); + } grain.setReceiveDate(new Date()); grain.setRemark("绮俯姝e父"); @@ -542,8 +536,38 @@ grain.setCable(depotConf.getCableRule()); grain.setCableCir(depotConf.getCableCir()); grain.setBatchId(msg.getBatchId()); - grain.setTempIn(Constant.ERROR_TEMP); - grain.setHumidityIn(Constant.ERROR_TEMP); + + int humidity = -100; + int tem = -100; + String substring = ""; + + //瑙f瀽澶栨箍澶栨俯 + String thStr = msg.getThStr().substring(6, 12); + humidity = BytesUtil.hexToInt(thStr.substring(0, 2)); + grain.setHumidityOut(humidity * 1.0); + substring = thStr.substring(2); + tem = BytesUtil.hexToInt(substring); + grain.setTempOut(tem * 1.0); + if(substring.startsWith("1")){ + grain.setTempOut(tem * -1.0); + } + + //瑙f瀽浠撳唴娓╀粨鍐呮箍 + int thConf = Integer.valueOf(depotConf.getThConf()); + int start = 0, end = 6; + if(thConf > 1){ + start += 6*thConf; //12-18 + end += start; + } + thStr = msg.getThStr().substring(start, end); + humidity = BytesUtil.hexToInt(thStr.substring(0, 2)); + grain.setHumidityIn(humidity * 1.0); + substring = thStr.substring(2); + tem = BytesUtil.hexToInt(substring); + grain.setTempIn(tem * 1.0); + if(substring.startsWith("1")){ + grain.setTempIn(tem * -1.0); + } grain.setReceiveDate(new Date()); grain.setRemark("绮俯姝e父"); @@ -591,6 +615,17 @@ grain.setTempMax(max); grain.setTempMin(min); grain.setPoints(StringUtils.join(temps, ",")); + //鍒ゆ柇鏄惁鏄敟褰粨锛屾槸鐨勮瘽杩涜閿ュ舰浠撹ˉ鐐� + if(StringUtils.isNotEmpty(depotConf.getCableCone())){ + //涓婇敟褰㈣ˉ鐐� + if(Constant.CABLE_CONE_1.equals(depotConf.getCableCone())){ + grain.setPoints(upConePoints(depotConf, grain.getPoints())); + } + //涓嬮敟褰㈣ˉ鐐� + if(Constant.CABLE_CONE_2.equals(depotConf.getCableCone())){ + grain.setPoints(downConePoints(depotConf, grain.getPoints())); + } + } String depotIds = exeRequest.getDepotIds(); boolean notifyWeb = true; @@ -682,11 +717,85 @@ return temps; } - private String buildCurKey(ReMessage msg, int curPacket) { - return msg.getSerId() + "_" + curPacket; + /** + * 涓婇敟褰㈣ˉ鐐�(鐐逛綅浣嶇疆姝g‘锛岄渶瑕佽ˉ鐐逛负-102) + * + * @param depotConf + * @param points + * @return + */ + private String upConePoints(DepotConf depotConf, String points){ + String[] cableRuleAtt = depotConf.getCableRule().split("-"); + String[] cableCirAtt = depotConf.getCableCir().split("-"); + //鑾峰彇鏈�澶х殑灞傞厤缃� + int layMax = Integer.valueOf(cableCirAtt[0]); + for (int i = 0; i < cableCirAtt.length; i++) { + if (Integer.valueOf(cableCirAtt[i]) >= layMax) { + layMax = Integer.valueOf(cableCirAtt[i]); + } + } + //鎵�鍦ㄥ眰浠�1寮�濮� + int curLay = 1; + //鎵�鍦ㄦ牴 + int curRoot = 1; + //鎵�鍦ㄥ湀 + int curCir = 1; + //褰撳墠鍦堢殑灞� + int cirLay = 1; + String[] array = points.split(","); + + for (int i = 0; i < array.length; i++) { + curLay = (i % layMax) + 1; + curRoot = (i / layMax) + 1; + curCir = getCurCir(curRoot, cableRuleAtt); + cirLay = Integer.valueOf(cableCirAtt[curCir - 1]); + + //姣斿閰嶇疆浜�5灞備絾鏄綋鍓嶆槸6灞傦紝璇存槑褰撳墠鐐逛负琛ュ伩鐐� + if (curLay <= (layMax - cirLay)) { + array[i] = String.valueOf(Constant.ADD_TEMP); + } + } + return StringUtils.join(array, ","); } - private String buildContextKey(String companyId, String serId) { - return companyId + "_" + serId; + /** + * 涓嬮敟褰㈣ˉ鐐�(鐐逛綅浣嶇疆姝g‘锛岄渶瑕佽ˉ鐐逛负-102) + * + * @param depotConf + * @param points + * @return + */ + private String downConePoints(DepotConf depotConf, String points){ + String[] cableRuleAtt = depotConf.getCableRule().split("-"); + String[] cableCirAtt = depotConf.getCableCir().split("-"); + //鑾峰彇鏈�澶х殑灞傞厤缃� + int layMax = Integer.valueOf(cableCirAtt[0]); + for (int i = 0; i < cableCirAtt.length; i++) { + if (Integer.valueOf(cableCirAtt[i]) >= layMax) { + layMax = Integer.valueOf(cableCirAtt[i]); + } + } + //鎵�鍦ㄥ眰浠�1寮�濮� + int curLay = 1; + //鎵�鍦ㄦ牴 + int curRoot = 1; + //鎵�鍦ㄥ湀 + int curCir = 1; + //褰撳墠鍦堢殑灞� + int cirLay = 1; + String[] array = points.split(","); + + for (int i = 0; i < array.length; i++) { + curLay = (i % layMax) + 1; + curRoot = (i / layMax) + 1; + curCir = getCurCir(curRoot, cableRuleAtt); + cirLay = Integer.valueOf(cableCirAtt[curCir - 1]); + + //姣斿閰嶇疆浜�5灞備絾鏄綋鍓嶆槸6灞傦紝璇存槑褰撳墠鐐逛负琛ュ伩鐐� + if (curLay > cirLay) { + array[i] = String.valueOf(Constant.ADD_TEMP); + } + } + return StringUtils.join(array, ","); } } -- Gitblit v1.9.3