From 391c534a5ed0a07f8e9feb2ddaf14cfed070300d Mon Sep 17 00:00:00 2001 From: CZT <czt18638530771@163.com> Date: 星期四, 02 十一月 2023 20:40:06 +0800 Subject: [PATCH] 提交配置信息 --- igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grainv1/analysis/AnalysisService.java | 412 ++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 284 insertions(+), 128 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 f130495..9124cae 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 @@ -20,11 +20,13 @@ import com.ld.igds.protocol.beibo.grainv1.util.BeiboGrainServerUtils; import com.ld.igds.util.BytesUtil; import com.ld.igds.util.ContextUtil; +import com.ld.igds.util.NumberUtil; import com.ld.igds.warn.WarnUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; + import java.util.*; /** @@ -53,82 +55,115 @@ public static String result = ""; - public static Map<String, String> contextMap = new HashMap<>(); - public static double ERROR_CHECK_TAG = -100.0; public static double FAULT_CHECK_TAG = 85.0; public static double ERROR_CHECK_TAG2 = 50; + public static String ERROR_HEX = "FFFF"; 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)); - } + /* + * 00000000FFEB90FEAA41D821DD21DB21DE21DE21DA21DD21DE21DC21DC21DC21DC21DB21D821D721CE21D121DD21DC21DF21DE21DE21DD21DA21DD21D921DD21DC21DA21D921D921D721D521D321DD21DE21DF21DC21DF21DC21DA21DD21DD21DD21DC21DC21DC21DB21D821D721D121DC21DF21DF21DD21DD21DA21DE21DD21DC21DE21DB21D821DA21DB21D821D721D321DE21E021DD21DF21DF21DE21DB21DC21DF21DF21DD21DF21DB21DC21DB21FFFFFFFFDA21DC21D721DB21DB21DA21DB21D421DB21D921DC21D821D921D621D321FFFFFFFFDF21E021DE21DE21DB21DD21DC21E021DF21DD21DD21DC21DC21DC21DA21FFFFFFFFD921DD21DD21DE21DB21DD21DA21DB21DF21DD21DC21DB21DB21DB21D921FFFFFFFFDD21DC21DE21DD21DE21DC21DB21DC21DE21DE21DC21DC21DB21D921D921FFFFFFFFE021DD21DB21E021DF21DB21DB21D821DE21DE21DD21DD21DB21DB21DB21FFFFFFFFE021E021E021E221DC21DE21DF21DD21DD21DF21DF21DB21DC21DD21DC21FFFFFFFFE221E321E321E521E421DF21E321E321E321E521E321E121D921DE21FFFFFFFFFFFFE321E421E321E621E521E321E621E021E521E321E221E321DF21DE21FFFFFFFFFFFFE421E621E521E521E621E321E521E121E621E121E321E421E121DE21FFFFFFFFFFFFE621E421E521E521E521E321E521E421E121E321E521E321DF21E021FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40013D10101039014110101010101010101000000000000000E5113500031A4C + * + * 00000000FFEB90FEAA + * 41 + * D821DD21DB21DE21DE21DA21DD21DE21DC21DC21DC21DC21DB21D821D721CE21D121 + * DD21DC21DF21DE21DE21DD21DA21DD21D921DD21DC21DA21D921D921D721D521D321 + * DD21DE21DF21DC21DF21DC21DA21DD21DD21DD21DC21DC21DC21DB21D821D721D121 + * DC21DF21DF21DD21DD21DA21DE21DD21DC21DE21DB21D821DA21DB21D821D721D321 + * DE21E021DD21DF21DF21DE21DB21DC21DF21DF21DD21DF21DB21DC21DB21FFFFFFFF + * DA21DC21D721DB21DB21DA21DB21D421DB21D921DC21D821D921D621D321FFFFFFFF + * DF21E021DE21DE21DB21DD21DC21E021DF21DD21DD21DC21DC21DC21DA21FFFFFFFF + * D921DD21DD21DE21DB21DD21DA21DB21DF21DD21DC21DB21DB21DB21D921FFFFFFFF + * DD21DC21DE21DD21DE21DC21DB21DC21DE21DE21DC21DC21DB21D921D921FFFFFFFF + * E021DD21DB21E021DF21DB21DB21D821DE21DE21DD21DD21DB21DB21DB21FFFFFFFF + * E021E021E021E221DC21DE21DF21DD21DD21DF21DF21DB21DC21DD21DC21FFFFFFFF + * + * E221E321E321E521E421DF21E321E321E321E521E321E121D921DE21FFFFFFFFFFFF + * E321E421E321E621E521E321E621E021E521E321E221E321DF21DE21FFFFFFFFFFFF + * E421E621E521E521E621E321E521E121E621E121E321E421E121DE21FFFFFFFFFFFF + * E621E421E521E521E521E321E521E421E121E321E521E321DF21E021FFFFFFFFFFFF + * FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + * 40013D 101010 390141 101010101010101010 + * 00000000000000E51135 + * 00031A4C + * + * + * + * + * + * */ /** - * 00000000FFEB90FEAA41E821EC21EA21EC21ED21EC21E921E221E921E921E921EC21E921ED21F021E521E521E221E421E321E321E121DE21D721E021DD21DC21DF21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + * * * @param hexStr */ public void analysis(String ip, int port, String hexStr) { result += hexStr; - if(result.length() < 1066*2){ + if (result.length() < 1066 * 2) { log.info("鍒嗘満------->>骞冲彴锛屾姤鏂囬暱搴︿笉澶燂紝绛夊緟涓嬩竴鍖呮暟鎹�"); return; } - //灏佽鏁版嵁 - ReMessage reMessage = ReMessageBuilder.getInstance().buildMessage(hexStr); - reMessage.setIp(ip); - reMessage.setPort(port); - log.info("鍒嗘満------->>骞冲彴锛氱伯鎯呭畬鏁存姤鏂囦俊鎭�={}", reMessage); + try { - if (!BeiboGrainServerUtils.MSG_START.startsWith(reMessage.getStartStr())) { - log.error("鍒嗘満------->>骞冲彴锛岃В鏋愮伯鎯呭け璐ワ細鎶ユ枃璧峰绗�={}閿欒锛屼笉瑙f瀽", reMessage.getStartStr()); - return; + + //灏佽鏁版嵁 + ReMessage reMessage = ReMessageBuilder.getInstance().buildMessage(result); + reMessage.setIp(ip); + reMessage.setPort(port); + log.info("鍒嗘満------->>骞冲彴锛氱伯鎯呭畬鏁存姤鏂囦俊鎭�={}", reMessage); + result = ""; + if (!BeiboGrainServerUtils.MSG_START.startsWith(reMessage.getStartStr())) { + log.error("鍒嗘満------->>骞冲彴锛岃В鏋愮伯鎯呭け璐ワ細鎶ユ枃璧峰绗�={}閿欒锛屼笉瑙f瀽", reMessage.getStartStr()); + return; + } + + //鏍规嵁鍒嗘満鍦板潃鑾峰彇鍒嗘満淇℃伅 + DeviceSer ser = coreSerService.getCacheSer(ContextUtil.getDefaultCompanyId(), reMessage.getSerId()); + if (ser == null) { + log.error("鍒嗘満-------->>骞冲彴锛岃В鏋愮伯鎯呭け璐ワ紝鏈幏鍙栧埌绯荤粺绮儏涓绘満閰嶇疆锛�" + reMessage.getSerId()); + return; + } + + List<ExeRequest> list = exeOrderService.getInProgressOrderBySerId(BizType.GRAIN.getCode(), ser.getId()); + if (null == list || list.isEmpty()) { + String info = "绮儏瑙f瀽澶辫触:鍒嗘満=" + ser.getName() + "娌℃湁鑾峰彇鍒版墍灞炰粨搴撲俊鎭��"; + log.error("鍒嗘満------>>>骞冲彴锛�" + info); + notifyGrainInvoker.notifyWeb(ser.getCompanyId(), OrderRespEnum.MSG_ERROR, BizType.GRAIN, info); + return; + } + + ExeRequest exeRequest = list.get(0); + log.info("鑾峰彇绮儏鍛戒护淇℃伅={}", exeRequest); + if (null == exeRequest) { + String info = "绮儏瑙f瀽澶辫触:鍒嗘満=" + ser.getName() + "娌℃湁鑾峰彇鍘嗗彶鍛戒护銆�"; + log.error("璐濆崥鍒嗘満------>>>骞冲彴锛�" + info); + return; + } + + DepotConf depotConf = commonService.getCacheDepotConf(exeRequest.getCompanyId(), exeRequest.getDepotId()); + if (null == depotConf) { + String info = "绮儏瑙f瀽澶辫触:鍒嗘満=" + ser.getName() + "娌℃湁鑾峰彇鍒扮伯鎯呭弬鏁伴厤缃俊鎭��"; + log.error("鍒嗘満------>>>骞冲彴锛�" + info); + notifyGrainInvoker.notifyWeb(ser.getCompanyId(), + OrderRespEnum.MSG_ERROR, BizType.GRAIN, info); + return; + } + + // 棣栧厛鑾峰彇鍒扮郴缁熷弬鏁帮紝鍒ゆ柇鏄惁闇�瑕佹壒娆¤嚜鍔ㄤ紭鍖� + DicSysConf sysConf = commonService.getCacheSysConf(ser.getCompanyId()); + + reMessage.setCompanyId(ser.getCompanyId()); + analysisGrain(depotConf, reMessage, ser, exeRequest, sysConf); + } catch (Exception e) { + result = ""; + log.error("鍒嗘満------->>骞冲彴锛岃В鏋愮伯鎯呭紓甯革細鍘熷洜={}", e.toString()); } - - //鏍规嵁鍒嗘満鍦板潃鑾峰彇鍒嗘満淇℃伅 - DeviceSer ser = coreSerService.getCacheSer(ContextUtil.getDefaultCompanyId(), reMessage.getSerId()); - if (ser == null) { - log.error("鍒嗘満-------->>骞冲彴锛岃В鏋愮伯鎯呭け璐ワ紝鏈幏鍙栧埌绯荤粺绮儏涓绘満閰嶇疆锛�" + reMessage.getSerId()); - return; - } - - List<ExeRequest> list = exeOrderService.getInProgressOrderBySerId(BizType.GRAIN.getCode(), ser.getId()); - if (null == list || list.isEmpty()) { - String info = "绮儏瑙f瀽澶辫触:鍒嗘満=" + ser.getName() + "娌℃湁鑾峰彇鍒版墍灞炰粨搴撲俊鎭��"; - log.error("鍒嗘満------>>>骞冲彴锛�" + info); - notifyGrainInvoker.notifyWeb(ser.getCompanyId(), OrderRespEnum.MSG_ERROR, BizType.GRAIN, info); - return; - } - - ExeRequest exeRequest = list.get(0); - log.info("鑾峰彇绮儏鍛戒护淇℃伅={}", exeRequest); - if (null == exeRequest) { - String info = "绮儏瑙f瀽澶辫触:鍒嗘満=" + ser.getName() + "娌℃湁鑾峰彇鍘嗗彶鍛戒护銆�"; - log.error("璐濆崥鍒嗘満------>>>骞冲彴锛�" + info); - return; - } - - DepotConf depotConf = commonService.getCacheDepotConf(exeRequest.getCompanyId(), exeRequest.getDepotId()); - if (null == depotConf) { - String info = "绮儏瑙f瀽澶辫触:鍒嗘満=" + ser.getName() + "娌℃湁鑾峰彇鍒扮伯鎯呭弬鏁伴厤缃俊鎭��"; - log.error("鍒嗘満------>>>骞冲彴锛�" + info); - notifyGrainInvoker.notifyWeb(ser.getCompanyId(), - OrderRespEnum.MSG_ERROR, BizType.GRAIN, info); - return; - } - - // 棣栧厛鑾峰彇鍒扮郴缁熷弬鏁帮紝鍒ゆ柇鏄惁闇�瑕佹壒娆¤嚜鍔ㄤ紭鍖� - DicSysConf sysConf = commonService.getCacheSysConf(ser.getCompanyId()); - - reMessage.setCompanyId(ser.getCompanyId()); - analysisGrain(depotConf, reMessage, ser, exeRequest, sysConf); } @@ -170,23 +205,6 @@ } // 涓�鍒嗗嚑澶氫粨鎯呭喌锛岃�冭檻鍗曚粨閲囬泦鍜屽浠撻噰闆� - // 鍗曚粨閲囬泦鏃跺�欐暟鎹粠0杩斿洖 - if (StringUtils.isEmpty(exeRequest.getDepotIds())) { - - depotConf.setCableEnd(depotConf.getCableEnd() - depotConf.getCableStart() + 1); - depotConf.setCableStart(ser.getCableStart()); - - if (DepotType.TYPE_02.getCode().equals(depotConf.getDepotType())) { - analysisStep2(depotConf, ser, exeRequest, reMessage, sysConf); - } else if (DepotType.TYPE_04.getCode().equals(depotConf.getDepotType())) { - analysisStep2(depotConf, ser, exeRequest, reMessage, sysConf); - } else { - analysisStep1(depotConf, ser, exeRequest, reMessage, sysConf); - } - - return; - - } // 鎵归噺閲囬泦鎵�鏈夊叧鑱斾竴璧烽噰闆嗭紝閬嶅巻鎵ц for (DepotConf depotConfTemp : depotConfs) { @@ -241,12 +259,19 @@ log.info("------绛掍粨绮儏鎶ユ枃={}------", strPoints); - int sumNum = 0, cableZ = 1;// sumNum 鍏卞灏戞牴鐢电紗锛沜ableZ 灞傜殑鏈�澶у�硷紝閿ュ舰浠撹ˉ榻愭渶澶у眰 + int sumNum = 0, cableZ = 1; // sumNum 鍏卞灏戞牴鐢电紗锛沜ableZ 灞傜殑鏈�澶у�硷紝閿ュ舰浠撹ˉ榻愭渶澶у眰 + for (int i = 0; i < cableCirAtt.length; i++) { if (Integer.valueOf(cableCirAtt[i]) > cableZ) { cableZ = Integer.valueOf(cableCirAtt[i]); } sumNum += Integer.valueOf(cableRuleAtt[i]); + } + int cableZTemp = 1;// 褰撳墠浠撶殑鏈�澶у眰 + cableZTemp = cableZ; + //鍒ゆ柇鏈�澶у眰璺熷垎鏈虹殑灞傛暟鏄惁涓�鑷� + if(cableZ < ser.getCableZ()){ + cableZ = ser.getCableZ(); } // 鏍规嵁灞傝鍒楄幏鍙栨寚瀹氶暱搴� @@ -260,58 +285,47 @@ 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; //绗﹀彿浣� + int num = 0; //鏍囪瑙f瀽鐨勫眰鏁� for (int i = 0; i < strPoints.length() / 4; i++) { - temp = strPoints.substring(i * 4, i * 4 + 4); - if (temp == null) { - temp = "0000"; + if(num == cableZ){ + num = 0; } - tempValue = BytesUtil.hexToInt(BytesUtil.tran_LH(temp)) / 10.0; - - //闈炴甯稿�� - if (tempValue > ERROR_CHECK_TAG2) { - tempValue = Constant.ERROR_TEMP; - } - - // 鏁呴殰鍊煎鐞� - 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); + if(num < cableZTemp){ + temp = strPoints.substring(i * 4, i * 4 + 4); + if (temp == null) { + temp = "0000"; + } + //楂樹綆浣嶈浆鎹㈠悗杞负16浣嶄簩杩涘埗瀛楃涓� + temp = BytesUtil.tran_LH(temp); + if(ERROR_HEX.equals(temp)){ + tempValue = Constant.ERROR_TEMP; + }else { + //10杩涘埗杞�16浣嶇殑2杩涘埗 + temp = BytesUtil.hexString2binaryString(temp, 16); + //绗﹀彿浣� + symbol = Integer.valueOf(temp.substring(0, 1)); + //鑾峰彇娓╁害鍊� + tempValue = BytesUtil.biannary2Decimal(temp.substring(6)) * 0.0625; + //鑻ヤ负璐燂紝鍒欒ˉ鐮侊細鍙栧弽鍔�1 + if (symbol == 1) { + tempValue = ((~BytesUtil.biannary2Decimal(temp.substring(6))) + 1) * 0.0625; } - - } else { - temps.add(tempValue); + tempValue = NumberUtil.keepPrecision(tempValue, 1); } - } else { + //闈炴甯稿�� + if (tempValue > ERROR_CHECK_TAG2) { + tempValue = Constant.ERROR_TEMP; + } + + // 鏁呴殰鍊煎鐞� + if (tempValue >= FAULT_CHECK_TAG) { + tempValue = Constant.FAULT_TEMP; + } temps.add(tempValue); } + num ++; } log.debug("-------CheckGrainRequest--={}", exeRequest.toString()); @@ -369,12 +383,31 @@ List<Double> temps = new ArrayList<>(); double tempValue; String temp; + int symbol = 0; for (int i = 0; i < strPoints.length() / 4; i++) { temp = strPoints.substring(i * 4, i * 4 + 4); + //楂樹綆浣嶈浆鎹㈠悗杞负16浣嶄簩杩涘埗瀛楃涓� + temp = BytesUtil.tran_LH(temp); if (temp == null) { temp = "0000"; } - tempValue = BytesUtil.hexToInt(BytesUtil.tran_LH(temp)) / 10.0; + + if(ERROR_HEX.equals(temp)){ + tempValue = Constant.ERROR_TEMP; + }else { + //10杩涘埗杞�16浣嶇殑2杩涘埗 + temp = BytesUtil.hexString2binaryString(temp, 16); + //绗﹀彿浣� + symbol = Integer.valueOf(temp.substring(0, 1)); + //鑾峰彇娓╁害鍊� + tempValue = BytesUtil.biannary2Decimal(temp.substring(6)) * 0.0625; + //鑻ヤ负璐燂紝鍒欒ˉ鐮侊細鍙栧弽鍔�1 + if (symbol == 1) { + tempValue = ((~BytesUtil.biannary2Decimal(temp.substring(6))) + 1) * 0.0625; + } + tempValue = NumberUtil.keepPrecision(tempValue, 1); + } + // 璇存槑瑙f瀽鐨勬暟鎹湁闂 if (tempValue == ERROR_CHECK_TAG || tempValue == ERROR_CHECK_TAG2) { tempValue = Constant.ERROR_TEMP; @@ -434,10 +467,29 @@ grain.setCompanyId(depotConf.getCompanyId()); grain.setCable(depotConf.getCableRule()); grain.setBatchId(msg.getBatchId()); - grain.setTempIn(Constant.ERROR_TEMP); - grain.setHumidityIn(Constant.ERROR_TEMP); - grain.setReceiveDate(msg.getReceiveDate()); + int humidity = -100; + int tem = -100; + String substring = ""; + + //瑙f瀽浠撳唴娓╀粨鍐呮箍 + int thConf = Integer.valueOf(depotConf.getThConf()); + int start = 0, end = 6; + if(thConf > 1){ + start += 6*thConf; //12-18 + end += start; + } + String 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 * 0.1); + if(substring.startsWith("1")){ + grain.setTempIn(tem * -0.1); + } + + grain.setReceiveDate(new Date()); grain.setRemark("绮俯姝e父"); // 鑾峰彇缂撳瓨涓殑鍛戒护淇℃伅 @@ -516,10 +568,29 @@ grain.setCable(depotConf.getCableRule()); grain.setCableCir(depotConf.getCableCir()); grain.setBatchId(msg.getBatchId()); - grain.setTempIn(Constant.ERROR_TEMP); - grain.setHumidityIn(Constant.ERROR_TEMP); - grain.setReceiveDate(msg.getReceiveDate()); + int humidity = -100; + int tem = -100; + String substring = ""; + + //瑙f瀽浠撳唴娓╀粨鍐呮箍 + int thConf = Integer.valueOf(depotConf.getThConf()); + int start = 0, end = 6; + if(thConf > 1){ + start += 6*thConf; //12-18 + end += start; + } + String 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 * 0.1); + if(substring.startsWith("1")){ + grain.setTempIn(tem * -0.1); + } + + grain.setReceiveDate(new Date()); grain.setRemark("绮俯姝e父"); grain.setCheckUser(exeRequest.getExeUser()); @@ -565,6 +636,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; @@ -656,11 +738,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