From b2e336d43fe43898e70938fcb065ca0ed8010bff Mon Sep 17 00:00:00 2001 From: mh Date: Wed, 8 Nov 2023 13:50:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=87=87=E9=9B=86=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/controller/SerialPortController.java | 317 +++++++++--------- .../user/mapper/provider/NowDataProvider.java | 2 +- .../serialport/SerialPortSendReceive2.java | 12 - .../mh/user/serialport/SerialPortSingle.java | 25 +- .../mh/user/serialport/SerialPortSingle2.java | 240 +++++-------- .../user/utils/AnalysisReceiveOrder485.java | 23 +- .../java/com/mh/user/chart/ChartTest.java | 60 +--- 7 files changed, 277 insertions(+), 402 deletions(-) diff --git a/user-service/src/main/java/com/mh/user/controller/SerialPortController.java b/user-service/src/main/java/com/mh/user/controller/SerialPortController.java index 06eef65..7a23a8d 100644 --- a/user-service/src/main/java/com/mh/user/controller/SerialPortController.java +++ b/user-service/src/main/java/com/mh/user/controller/SerialPortController.java @@ -12,6 +12,7 @@ import com.mh.user.model.DeviceModel; import com.mh.user.model.SerialPortModel; import com.mh.user.serialport.SerialPortSendReceive; import com.mh.user.serialport.SerialPortSingle; +import com.mh.user.serialport.SerialPortSingle2; import com.mh.user.service.ControlSetService; import com.mh.user.service.DeviceInstallService; import com.mh.user.service.NowDataService; @@ -46,7 +47,7 @@ public class SerialPortController { @PostMapping(value = "/operate") public HttpResult operateDevice(@RequestBody List params) { try { - SerialPortSingle serialPortSingle = new SerialPortSingle(); //发送接收类 + SerialPortSingle2 serialPortSingle = new SerialPortSingle2(); //发送接收类 DeviceCodeParamEntity deviceCodeParam = new DeviceCodeParamEntity();//参数实体类 Constant.WEB_FLAG = true; //单抄,暂时停止采集 @@ -75,11 +76,9 @@ public class SerialPortController { deviceCodeParam.setBuildingId(buildingId); String brand = deviceInstallEntity.getBrand();//品牌 deviceCodeParam.setBrand(brand); - - ControlSetEntity controlData = new ControlSetEntity(); //设置设备实体对象 + ControlSetEntity controlData = new ControlSetEntity(); controlData.setBuildingId(deviceInstallEntity.getBuildingId()); - if (deviceType == null || deviceType.equals("") || deviceType.equals("热泵")) { //设置热泵实体对象 PumpSetEntity pumpData = new PumpSetEntity(); @@ -190,9 +189,11 @@ public class SerialPortController { Constant.WEB_FLAG = false; //单抄,恢复采集 return HttpResult.ok(); } catch (Exception e) { -// e.printStackTrace(); + log.error("前端发送控制异常==>", e); Constant.WEB_FLAG = false; //单抄,恢复采集 return HttpResult.error(500, "fail"); + } finally { + Constant.WEB_FLAG = false; } } @@ -201,7 +202,7 @@ public class SerialPortController { @PostMapping(value = "/read") public HttpResult readData(@RequestBody List params) { try { - SerialPortSingle serialPortSingle = new SerialPortSingle(); + SerialPortSingle2 serialPortSingle = new SerialPortSingle2(); DeviceCodeParamEntity deviceCodeParam = new DeviceCodeParamEntity(); String rtData = ""; //返回值 Constant.WEB_FLAG = true; //单抄,暂时停止采集 @@ -215,169 +216,169 @@ public class SerialPortController { List list = deviceInstallService.selectDevices(buildingId, deviceType); deviceAddr = list.get(0).getDeviceAddr(); } - if (deviceAddr != null && deviceAddr.length() > 0) { - DeviceInstallEntity deviceInstallEntity = deviceInstallService.selectDevice(deviceAddr, deviceType, buildingId); - //发送指令实体类 - deviceCodeParam.setDeviceAddr(deviceAddr); - deviceCodeParam.setDeviceType(deviceType); - deviceCodeParam.setDataCom(deviceInstallEntity.getDataCom()); - deviceCodeParam.setBaudrate(deviceInstallEntity.getBaudRate()); - deviceCodeParam.setParity(deviceInstallEntity.getParity()); - deviceCodeParam.setDataValue(serialPortModel.getDataValue());//传入相关参数值 - deviceCodeParam.setBuildingId(buildingId); - String brand = deviceInstallEntity.getBrand();//品牌 - deviceCodeParam.setBrand(brand); - //设置设备实体对象 - ControlSetEntity controlData = new ControlSetEntity(); - controlData.setBuildingId(deviceInstallEntity.getBuildingId()); - if (deviceType == null || deviceType.equals("") || deviceType.equals("热泵")) { - //设置热泵实体对象 - PumpSetEntity pumpData = new PumpSetEntity(); - pumpData.setBuildingId(deviceInstallEntity.getBuildingId()); - pumpData.setPumpId(deviceAddr); - if (param == null || param.equals("") || param.equals("读温度设定")) { - deviceCodeParam.setFunCode("03"); //功能码读数据 - if (brand.equals("美的")) { - deviceCodeParam.setRegisterAddr("0642"); //寄存器地址 - } else { - deviceCodeParam.setRegisterAddr("0003"); //寄存器地址 - } - rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 - if (!rtData.equals("")) { - pumpData.setTempSet(rtData); - pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库 - } - } else if (param.equals("实际温度")) { - deviceCodeParam.setFunCode("03"); //功能码读数据 - if (brand.equals("美的")) { - deviceCodeParam.setRegisterAddr("0007"); //寄存器地址 - } else { - deviceCodeParam.setRegisterAddr("0064"); //寄存器地址 - } - rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 - if (!rtData.equals("")) { - pumpData.setWaterTemp(rtData); - pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库 - } - } else if (param.equals("运行状态")) { - deviceCodeParam.setFunCode("03"); //功能码读数据 - if (brand.equals("美的")) { - deviceCodeParam.setRegisterAddr("0641"); //寄存器地址 - } else { - deviceCodeParam.setRegisterAddr("0BBD"); //寄存器地址 - } - rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 - //pumpData(rtData); - //pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库 - } else if (param.equals("时段1")) { - if (brand.equals("美的")) { - //发送指令 - deviceCodeParam.setRegisterAddr("0656"); //寄存器地址 - deviceCodeParam.setFunCode("03"); //功能码读数据 - //保存数据 - rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 - String time = rtData; - if (time.length() == 8) { - String statTime = time.substring(0, 2) + ":" + time.substring(2, 4); - String closeTime = time.substring(4, 6) + ":" + time.substring(6, 8); - pumpData.setStartTime1(statTime); - pumpData.setCloseTime1(closeTime); - } - pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库 - } - } else if (param.equals("时段2")) { - if (brand.equals("美的")) { - //发送指令 - deviceCodeParam.setRegisterAddr("065A"); //寄存器地址 - deviceCodeParam.setFunCode("03"); //功能码读数据 - //保存数据 - rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 - String time = rtData; - if (time.length() == 8) { - String statTime = time.substring(0, 2) + ":" + time.substring(2, 4); - String closeTime = time.substring(4, 6) + ":" + time.substring(6, 8); - pumpData.setStartTime2(statTime); - pumpData.setCloseTime2(closeTime); - } - pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库 - } - } - } else if (deviceType.equals("时控")) { - if (param.equals("L1")) { - deviceCodeParam.setRegisterAddr("0009"); //寄存器地址,L3路,L1(0009),L2(000D) - } else if (param.equals("L2")) { - deviceCodeParam.setRegisterAddr("000D"); + if (deviceAddr == null || deviceAddr.length() == 0) { + Constant.WEB_FLAG = false; + return HttpResult.error("通讯ID为空!"); + } + DeviceInstallEntity deviceInstallEntity = deviceInstallService.selectDevice(deviceAddr, deviceType, buildingId); + //发送指令实体类 + deviceCodeParam.setDeviceAddr(deviceAddr); + deviceCodeParam.setDeviceType(deviceType); + deviceCodeParam.setDataCom(deviceInstallEntity.getDataCom()); + deviceCodeParam.setBaudrate(deviceInstallEntity.getBaudRate()); + deviceCodeParam.setParity(deviceInstallEntity.getParity()); + deviceCodeParam.setDataValue(serialPortModel.getDataValue());//传入相关参数值 + deviceCodeParam.setBuildingId(buildingId); + String brand = deviceInstallEntity.getBrand();//品牌 + deviceCodeParam.setBrand(brand); + //设置设备实体对象 + ControlSetEntity controlData = new ControlSetEntity(); + controlData.setBuildingId(deviceInstallEntity.getBuildingId()); + if (deviceType == null || deviceType.equals("") || deviceType.equals("热泵")) { + //设置热泵实体对象 + PumpSetEntity pumpData = new PumpSetEntity(); + pumpData.setBuildingId(deviceInstallEntity.getBuildingId()); + pumpData.setPumpId(deviceAddr); + if (param == null || param.equals("") || param.equals("读温度设定")) { + deviceCodeParam.setFunCode("03"); //功能码读数据 + if (brand.equals("美的")) { + deviceCodeParam.setRegisterAddr("0642"); //寄存器地址 } else { - deviceCodeParam.setRegisterAddr("0011"); + deviceCodeParam.setRegisterAddr("0003"); //寄存器地址 } - deviceCodeParam.setFunCode("03"); //功能码读数据 rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 - - String time = rtData; - if (time.length() == 16) { - //时段1 - String statTime1 = time.substring(0, 2) + ":" + time.substring(2, 4); - String closeTime1 = time.substring(4, 6) + ":" + time.substring(6, 8); - //时段2 - String statTime2 = time.substring(8, 10) + ":" + time.substring(10, 12); - String closeTime2 = time.substring(12, 14) + ":" + time.substring(14, 16); - - if (param.equals("L1")) { - controlData.setUseStartTime1(statTime1); - controlData.setUseCloseTime1(closeTime1); - controlData.setUseStartTime2(statTime2); - controlData.setUseCloseTime2(closeTime2); - } else if (param.equals("L2")) { - controlData.setUseStartTime3(statTime1); - controlData.setUseCloseTime3(closeTime1); - controlData.setUseStartTime4(statTime2); - controlData.setUseCloseTime4(closeTime2); - } else { - controlData.setUseStartTime5(statTime1); - controlData.setUseCloseTime5(closeTime1); - controlData.setUseStartTime6(statTime2); - controlData.setUseCloseTime6(closeTime2); - } + if (!rtData.equals("")) { + pumpData.setTempSet(rtData); + pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库 } - controlSetService.saveControlSet(controlData); //保存设置内容 - } else if (deviceType.equals("水位开关") && !param.equals("状态")) { - if (brand == null || brand.equals("") || brand.equals("中凯")) {//品牌 - deviceCodeParam.setFunCode("17"); //功能码读 - deviceCodeParam.setRegisterAddr("0017"); - } else if (brand.equals("远向")) { - deviceCodeParam.setFunCode("03"); //功能码读 - deviceCodeParam.setRegisterAddr("0018"); - } else if (brand.equals("顶威")) { - deviceCodeParam.setFunCode("0102"); //功能码读 - deviceCodeParam.setRegisterAddr("0102"); + } else if (param.equals("实际温度")) { + deviceCodeParam.setFunCode("03"); //功能码读数据 + if (brand.equals("美的")) { + deviceCodeParam.setRegisterAddr("0007"); //寄存器地址 + } else { + deviceCodeParam.setRegisterAddr("0064"); //寄存器地址 } rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 - deviceCodeParam.setDataValue(rtData); - //controlData.setLevelSet(serialPortModel.getDataValue()); - //controlSetService.saveControlSet(controlData); - log.info("--------------读取返回数据:" + rtData + "------------------"); - } else if (deviceType.equals("水位开关") && param.equals("状态")) { - if (brand.equals("远向")) { - deviceCodeParam.setFunCode("03"); //功能码读 - deviceCodeParam.setRegisterAddr("0010"); + if (!rtData.equals("")) { + pumpData.setWaterTemp(rtData); + pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库 + } + } else if (param.equals("运行状态")) { + deviceCodeParam.setFunCode("03"); //功能码读数据 + if (brand.equals("美的")) { + deviceCodeParam.setRegisterAddr("0641"); //寄存器地址 + } else { + deviceCodeParam.setRegisterAddr("0BBD"); //寄存器地址 } rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + //pumpData(rtData); + //pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库 + } else if (param.equals("时段1")) { + if (brand.equals("美的")) { + //发送指令 + deviceCodeParam.setRegisterAddr("0656"); //寄存器地址 + deviceCodeParam.setFunCode("03"); //功能码读数据 + //保存数据 + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + String time = rtData; + if (time.length() == 8) { + String statTime = time.substring(0, 2) + ":" + time.substring(2, 4); + String closeTime = time.substring(4, 6) + ":" + time.substring(6, 8); + pumpData.setStartTime1(statTime); + pumpData.setCloseTime1(closeTime); + } + pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库 + } + } else if (param.equals("时段2")) { + if (brand.equals("美的")) { + //发送指令 + deviceCodeParam.setRegisterAddr("065A"); //寄存器地址 + deviceCodeParam.setFunCode("03"); //功能码读数据 + //保存数据 + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + String time = rtData; + if (time.length() == 8) { + String statTime = time.substring(0, 2) + ":" + time.substring(2, 4); + String closeTime = time.substring(4, 6) + ":" + time.substring(6, 8); + pumpData.setStartTime2(statTime); + pumpData.setCloseTime2(closeTime); + } + pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库 + } + } + } else if (deviceType.equals("时控")) { + if (param.equals("L1")) { + deviceCodeParam.setRegisterAddr("0009"); //寄存器地址,L3路,L1(0009),L2(000D) + } else if (param.equals("L2")) { + deviceCodeParam.setRegisterAddr("000D"); + } else { + deviceCodeParam.setRegisterAddr("0011"); + } + deviceCodeParam.setFunCode("03"); //功能码读数据 + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + + String time = rtData; + if (time.length() == 16) { + //时段1 + String statTime1 = time.substring(0, 2) + ":" + time.substring(2, 4); + String closeTime1 = time.substring(4, 6) + ":" + time.substring(6, 8); + //时段2 + String statTime2 = time.substring(8, 10) + ":" + time.substring(10, 12); + String closeTime2 = time.substring(12, 14) + ":" + time.substring(14, 16); - } else if (deviceType.equals("温度变送器")) { + if (param.equals("L1")) { + controlData.setUseStartTime1(statTime1); + controlData.setUseCloseTime1(closeTime1); + controlData.setUseStartTime2(statTime2); + controlData.setUseCloseTime2(closeTime2); + } else if (param.equals("L2")) { + controlData.setUseStartTime3(statTime1); + controlData.setUseCloseTime3(closeTime1); + controlData.setUseStartTime4(statTime2); + controlData.setUseCloseTime4(closeTime2); + } else { + controlData.setUseStartTime5(statTime1); + controlData.setUseCloseTime5(closeTime1); + controlData.setUseStartTime6(statTime2); + controlData.setUseCloseTime6(closeTime2); + } + } + controlSetService.saveControlSet(controlData); //保存设置内容 + } else if (deviceType.equals("水位开关") && !param.equals("状态")) { + if (brand == null || brand.equals("") || brand.equals("中凯")) {//品牌 + deviceCodeParam.setFunCode("17"); //功能码读 + deviceCodeParam.setRegisterAddr("0017"); + } else if (brand.equals("远向")) { deviceCodeParam.setFunCode("03"); //功能码读 - deviceCodeParam.setRegisterAddr("0028"); - rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 - } else if (deviceType.equals("压变")) { + deviceCodeParam.setRegisterAddr("0018"); + } else if (brand.equals("顶威")) { + deviceCodeParam.setFunCode("0102"); //功能码读 + deviceCodeParam.setRegisterAddr("0102"); + } + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + deviceCodeParam.setDataValue(rtData); + //controlData.setLevelSet(serialPortModel.getDataValue()); + //controlSetService.saveControlSet(controlData); + log.info("--------------读取返回数据:" + rtData + "------------------"); + } else if (deviceType.equals("水位开关") && param.equals("状态")) { + if (brand.equals("远向")) { deviceCodeParam.setFunCode("03"); //功能码读 - deviceCodeParam.setRegisterAddr("0004"); - rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 - } else if (deviceType.equals("水表")) { - rtData = serialPortSingle.serialPortSend(deviceCodeParam); - } else if (deviceType.equals("电表")) { - rtData = serialPortSingle.serialPortSend(deviceCodeParam); + deviceCodeParam.setRegisterAddr("0010"); } - } else { - return HttpResult.error(500, "fail"); + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + + } else if (deviceType.equals("温度变送器")) { + deviceCodeParam.setFunCode("03"); //功能码读 + deviceCodeParam.setRegisterAddr("0028"); + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + } else if (deviceType.equals("压变")) { + deviceCodeParam.setFunCode("03"); //功能码读 + deviceCodeParam.setRegisterAddr("0004"); + rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令 + } else if (deviceType.equals("水表")) { + rtData = serialPortSingle.serialPortSend(deviceCodeParam); + } else if (deviceType.equals("电表")) { + rtData = serialPortSingle.serialPortSend(deviceCodeParam); } } Constant.WEB_FLAG = false; //单抄,恢复采集 @@ -394,6 +395,8 @@ public class SerialPortController { } catch (Exception e) { Constant.WEB_FLAG = false; //单抄,恢复采集 return HttpResult.error(500, "fail"); + } finally { + Constant.WEB_FLAG = false; //单抄,恢复采集 } } diff --git a/user-service/src/main/java/com/mh/user/mapper/provider/NowDataProvider.java b/user-service/src/main/java/com/mh/user/mapper/provider/NowDataProvider.java index 1a6e850..c150d51 100644 --- a/user-service/src/main/java/com/mh/user/mapper/provider/NowDataProvider.java +++ b/user-service/src/main/java/com/mh/user/mapper/provider/NowDataProvider.java @@ -173,6 +173,7 @@ public class NowDataProvider { StringBuffer sql = new StringBuffer(""); sql.append("select top 1000 * from (select *,ROW_NUMBER() over(order by cur_date) as rn from (" + "select top 1000 t1.cur_date,t1.building_id,t2.building_name,t2.sort,convert(decimal(8,1),AVG(convert(float,t1.temp00)))as temp00," + + "convert(decimal(8,1),AVG(convert(float,t1.temp02)))as temp02," + "convert(decimal(8,1),AVG(convert(float,t1.temp08)))as temp08,convert(decimal(8,1),AVG(convert(float,t1.temp11)))as temp11," + "convert(decimal(8,1),AVG(convert(float,t1.temp13)))as temp13,convert(decimal(8,1),AVG(convert(float,t1.temp15)))as temp15," + "convert(decimal(8,1),AVG(convert(float,t1.temp16)))as temp16,convert(decimal(8,1),AVG(convert(float,t1.temp17)))as temp17," + @@ -188,7 +189,6 @@ public class NowDataProvider { } else if (page == 0){ sql.append(" )T )TT order by TT.cur_date desc "); } -// System.out.println(sql.toString()); return sql.toString(); } diff --git a/user-service/src/main/java/com/mh/user/serialport/SerialPortSendReceive2.java b/user-service/src/main/java/com/mh/user/serialport/SerialPortSendReceive2.java index ffe0815..11d964c 100644 --- a/user-service/src/main/java/com/mh/user/serialport/SerialPortSendReceive2.java +++ b/user-service/src/main/java/com/mh/user/serialport/SerialPortSendReceive2.java @@ -47,20 +47,8 @@ public class SerialPortSendReceive2 { public void serialPortSend(String sort, String thread) { SerialPort serialPort = null; CacheUtil cacheUtil = CacheUtil.getInstance(); -// if (port.contains(comName)){ try { //生成对应的采集指令 -// switch (sort) { -// case "2": //采集水、电、运行状态! -// deviceManageEntityList = deviceCodeParamService.queryCodeParam4(thread); -// break; -// case "3": //采集设定温度、设定水位、故障状态! -// deviceManageEntityList = deviceCodeParamService.queryCodeParam5(thread); -// break; -// default: -// deviceManageEntityList = deviceCodeParamService.queryCodeParam3(thread); -// break; -// } List deviceParamsByType = cacheUtil.getDeviceParamsByType(sort); deviceManageEntityList = deviceParamsByType .parallelStream() diff --git a/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle.java b/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle.java index 6122742..93b38ce 100644 --- a/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle.java +++ b/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle.java @@ -108,39 +108,40 @@ public class SerialPortSingle { } try { if ((dataStr.length() == 18 || dataStr.length() == 70 || dataStr.length() == 44) && deviceType.equals("水表")) { - rtData = analysisReceiveOrder485.analysisWtMeterOrder4852(dataStr, registerAddr, brand, buildingId); + rtData = analysisReceiveOrder485.analysisWtMeterOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); } else if ((dataStr.length() == 36 || dataStr.length() == 44 || dataStr.length() == 40 || dataStr.length() == 50) && deviceType.equals("电表")) { - rtData = analysisReceiveOrder485.analysisMeterOrder4852(dataStr, registerAddr, brand, buildingId); + rtData = analysisReceiveOrder485.analysisMeterOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); } else if (deviceType.equals("压变")) { - rtData = analysisReceiveOrder485.analysisPressureOrder4852(dataStr, registerAddr, brand, buildingId); + rtData = analysisReceiveOrder485.analysisPressureOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); } else if ((dataStr.length() == 30) && deviceType.equals("状态检测")) {//五路状态读取,兼容旧版系统 analysisReceiveOrder485.analysisStateOrder485(dataStr, registerAddr, brand, buildingId, buildingName); } else if (deviceType.equals("水位开关") && (registerAddr.equals("0018") || registerAddr.equals("0017"))) { - rtData = analysisReceiveOrder485.analysisRelayOrder4852(dataStr, registerAddr, brand, buildingId); + rtData = analysisReceiveOrder485.analysisRelayOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); } else if (deviceType.equals("热泵")) { - rtData = analysisReceiveOrder485.analysisPumpOrder4852(dataStr, registerAddr, brand, buildingId); + rtData = analysisReceiveOrder485.analysisPumpOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); } else if (deviceType.equals("时控")) { - rtData = analysisReceiveOrder485.analysisTimeSetOrder4852(dataStr, registerAddr, brand, buildingId); + rtData = analysisReceiveOrder485.analysisTimeSetOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); } else if (deviceType.equals("水位开关") && registerAddr.equals("0010")) { //热泵状态 - rtData = analysisReceiveOrder485.analysisPumpStateOrder2(dataStr, registerAddr, brand, buildingId); + rtData = analysisReceiveOrder485.analysisPumpStateOrder2(dataStr, registerAddr, brand, buildingId, buildingName); } else if (deviceType.equals("温度变送器")) { - rtData = analysisReceiveOrder485.analysisMulTempOrder4852(dataStr, registerAddr, brand, buildingId); + rtData = analysisReceiveOrder485.analysisMulTempOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); } else if (deviceType.equals("热泵状态")) { - rtData = analysisReceiveOrder485.analysisPumpStateOrder2(dataStr, registerAddr, brand, buildingId); + rtData = analysisReceiveOrder485.analysisPumpStateOrder2(dataStr, registerAddr, brand, buildingId, buildingName); } } catch (Exception e) { log.error(deviceCodeParamEntity.getDeviceType() + "单抄保存数据库失败!"); - serialPortUtil.closePort(serialPort); return "fail"; } - serialPortUtil.closePort(serialPort); - System.out.println("关闭" + serialPort); Thread.sleep(500); log.info("-----------------------------" + serialPort + "单抄结束!-----------------------------"); return rtData; } catch (Exception e) { log.error("前端设置出现异常==>", e); return "fail"; + } finally { + if (null != serialPort) { + serialPortUtil.closePort(serialPort); + } } } diff --git a/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java b/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java index 811295b..8b7a8a8 100644 --- a/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java +++ b/user-service/src/main/java/com/mh/user/serialport/SerialPortSingle2.java @@ -5,12 +5,15 @@ import com.mh.user.service.BuildingService; import com.mh.user.service.DeviceInstallService; import com.mh.user.service.NowDataService; import com.mh.user.utils.AnalysisReceiveOrder485; +import com.mh.user.utils.ExchangeStringUtil; import com.mh.user.utils.SendOrderUtils; import com.mh.user.utils.SpringBeanUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.context.ApplicationContext; + import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; + import purejavacomm.SerialPort; /** @@ -23,177 +26,102 @@ import purejavacomm.SerialPort; @Slf4j public class SerialPortSingle2 { - private String receiveStr = null; - private int baudrate=9600; - private String parity=null; - // 调用service ApplicationContext context = SpringBeanUtil.getApplicationContext(); AnalysisReceiveOrder485 analysisReceiveOrder485 = new AnalysisReceiveOrder485(); DeviceInstallService deviceInstallService = context.getBean(DeviceInstallService.class); NowDataService nowDataService = context.getBean(NowDataService.class); BuildingService buildingService = context.getBean(BuildingService.class); - public String serialPortSend(DeviceCodeParamEntity deviceCodeParamEntity){ - SerialPort serialPort = null; - String rtData=""; - String comName=deviceCodeParamEntity.getDataCom().toUpperCase(); - //if (port.contains(comName)){ - try{ - try{ - baudrate=deviceCodeParamEntity.getBaudrate(); - parity=deviceCodeParamEntity.getParity(); - if (parity==null || parity.equals("") || parity.equalsIgnoreCase("none")){ - serialPort = SerialTool.openPort(comName, baudrate, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); - }else{ - serialPort = SerialTool.openPort(comName, baudrate, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_EVEN); - } - //向串口发送指令 - log.info("-----------------------------单抄向串口"+serialPort+"发送指令!-----------------------------"); - if (serialPort != null) { - String sendStr=SendOrderUtils.getSendStr(deviceCodeParamEntity); - SerialTool.sendToPort(SerialTool.HexString2Bytes(sendStr), serialPort,sendStr,deviceCodeParamEntity.getDeviceType()); - Thread.sleep(1500); - } - }catch(Exception e){ - e.printStackTrace(); - } - //对返回数据进行相关解析处理 - receiveStr=null; - byte[] bytes = SerialTool.readFromPort(serialPort); //读取串口数据 - try { - String byteStr = new String(bytes, 0, bytes.length).trim(); - receiveStr = receiveStr + printHexString(bytes); - //去掉空格和null - receiveStr = receiveStr.replace("null", ""); - receiveStr = receiveStr.replace(" ", ""); - log.info("串口"+serialPort+"接收数据:" + receiveStr + ",大小: " + receiveStr.length()); - } catch (NullPointerException e) { - SerialTool.closePort(serialPort); - log.info("单抄串口"+serialPort+"异常,没有数据返回!关闭串口"); - } - //返回值全部变成大写 - String receiveData = receiveStr.toUpperCase(); - //截取去掉FE - String dataStr = receiveData.replace("FE", ""); - String deviceType=deviceCodeParamEntity.getDeviceType(); - String deviceAddr=deviceCodeParamEntity.getDeviceAddr(); - String registerAddr=deviceCodeParamEntity.getRegisterAddr(); - String brand=deviceCodeParamEntity.getBrand(); - String buildingId=deviceCodeParamEntity.getBuildingId(); - String buildingName=buildingService.queryBuildingName(buildingId); //查询楼栋名称 - deviceInstallService.updateOnline(deviceAddr,deviceType,buildingId,"在线"); //设备在线 - log.info(deviceType+"在线,设备号:"+deviceAddr+",所属楼栋:"+buildingName); - if (deviceType.equals("热泵")){ - String strState=nowDataService.selectState(buildingId,deviceAddr); - if (strState!=null && strState.equals("离线")){ //采集到数据 - nowDataService.updateRunState(buildingId,deviceAddr,"不运行", buildingName); //监控界面状态表热泵在线状态 - } + public String serialPortSend(DeviceCodeParamEntity deviceCodeParamEntity) { + SerialPort serialPort = null; + String rtData = ""; + String comName = deviceCodeParamEntity.getDataCom().toUpperCase(); + try { + try { + int baudrate = deviceCodeParamEntity.getBaudrate(); + String parity = deviceCodeParamEntity.getParity(); + if (parity == null || parity.equals("") || parity.equalsIgnoreCase("none")) { + serialPort = SerialTool.openPort(comName, baudrate, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); + } else { + serialPort = SerialTool.openPort(comName, baudrate, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_EVEN); } - try{ - if ((dataStr.length() == 18 || dataStr.length() == 70 || dataStr.length() == 44) && deviceType.equals("水表")) { - rtData=analysisReceiveOrder485.analysisWtMeterOrder4852(dataStr,registerAddr,brand,buildingId); - } else if ((dataStr.length() == 36 || dataStr.length() == 44 || dataStr.length()==40 || dataStr.length()==50) && deviceType.equals("电表")) { - rtData=analysisReceiveOrder485.analysisMeterOrder4852(dataStr,registerAddr,brand,buildingId); - } else if (deviceType.equals("压变")) { - rtData=analysisReceiveOrder485.analysisPressureOrder4852(dataStr,registerAddr,brand,buildingId); - } else if ((dataStr.length() == 30) && deviceType.equals("状态检测")) {//五路状态读取,兼容旧版系统 - analysisReceiveOrder485.analysisStateOrder485(dataStr,registerAddr,brand,buildingId, buildingName); - } else if (deviceType.equals("水位开关") && (registerAddr.equals("0018") || registerAddr.equals("0017"))) { - rtData=analysisReceiveOrder485.analysisRelayOrder4852(dataStr,registerAddr,brand,buildingId); - } else if (deviceType.equals("热泵")) { - rtData=analysisReceiveOrder485.analysisPumpOrder4852(dataStr,registerAddr,brand,buildingId); - } else if (deviceType.equals("时控")) { - rtData=analysisReceiveOrder485.analysisTimeSetOrder4852(dataStr,registerAddr,brand,buildingId); - } else if (deviceType.equals("水位开关") && registerAddr.equals("0010")){ //热泵状态 - rtData=analysisReceiveOrder485.analysisPumpStateOrder2(dataStr,registerAddr,brand,buildingId); - } else if (deviceType.equals("温度变送器")) { - rtData=analysisReceiveOrder485.analysisMulTempOrder4852(dataStr,registerAddr,brand,buildingId); - } else if (deviceType.equals("热泵状态")){ - rtData=analysisReceiveOrder485.analysisPumpStateOrder2(dataStr,registerAddr,brand,buildingId); - } - }catch (Exception e){ - log.error(deviceCodeParamEntity.getDeviceType()+"单抄保存数据库失败!"); - SerialTool.closePort(serialPort); + //向串口发送指令 + log.info("-----------------------------单抄向串口" + serialPort + "发送指令!-----------------------------"); + if (serialPort != null) { + String sendStr = SendOrderUtils.getSendStr(deviceCodeParamEntity); + SerialTool.sendToPort(SerialTool.HexString2Bytes(sendStr), serialPort, sendStr, deviceCodeParamEntity.getDeviceType()); + Thread.sleep(1500); } - SerialTool.closePort(serialPort); - System.out.println("关闭"+serialPort); - Thread.sleep(500); - log.info("-----------------------------"+serialPort+"单抄结束!-----------------------------"); - return rtData; - }catch (Exception e){ -// e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); } - //}else { - //log.info("串口:"+comName+"不存在!"); - //} - return "fail"; - } - /** - * 字节数组转16进制字符串 - * @param b 字节数组 - * @return 16进制字符串 - */ - public static String printHexString(byte[] b) { - StringBuilder sbf = new StringBuilder(); - for (byte value : b) { - String hex = Integer.toHexString(value & 0xFF); - if (hex.length() == 1) { - hex = '0' + hex; + //对返回数据进行相关解析处理 + byte[] bytes = SerialTool.readFromPort(serialPort); //读取串口数据 + if (null == bytes) { + SerialTool.closePort(serialPort); + log.info("单抄串口" + serialPort + "异常,没有数据返回!关闭串口"); + return "fail"; } - sbf.append(hex.toUpperCase()).append(" "); - } - return sbf.toString().trim(); - } - - /** - * 十六进制字符串转byte[] - * @param hex 十六进制字符串 - * @return byte[] - */ - public static byte[] hexStr2Byte(String hex) { - if (hex == null) { - return new byte[] {}; - } - - // 奇数位补0 - if (hex.length() % 2 != 0) { - hex = "0" + hex; - } + String receiveStr = null; + receiveStr = ExchangeStringUtil.printHexString(bytes); + //去掉空格和null + receiveStr = receiveStr.replace("null", "").replace(" ", ""); + log.info("串口" + serialPort + "接收数据:" + receiveStr + ",大小: " + receiveStr.length()); + //返回值全部变成大写 + String receiveData = receiveStr.toUpperCase(); + //截取去掉FE + String dataStr = receiveData.replace("FE", ""); + String deviceType = deviceCodeParamEntity.getDeviceType(); + String deviceAddr = deviceCodeParamEntity.getDeviceAddr(); + String registerAddr = deviceCodeParamEntity.getRegisterAddr(); + String brand = deviceCodeParamEntity.getBrand(); + String buildingId = deviceCodeParamEntity.getBuildingId(); + String buildingName = buildingService.queryBuildingName(buildingId); //查询楼栋名称 - int length = hex.length(); - ByteBuffer buffer = ByteBuffer.allocate(length / 2); - for (int i = 0; i < length; i++) { - String hexStr = hex.charAt(i) + ""; - i++; - hexStr += hex.charAt(i); - byte b = (byte) Integer.parseInt(hexStr, 16); - buffer.put(b); - } - return buffer.array(); - } - /** - * 16进制转换成为string类型字符串 - * @param s 待转换字符串 - */ - public static String hexStringToString(String s) { - if (s == null || "".equals(s)) { - return null; - } - s = s.replace(" ", ""); - byte[] baKeyword = new byte[s.length() / 2]; - for (int i = 0; i < baKeyword.length; i++) { + deviceInstallService.updateOnline(deviceAddr, deviceType, buildingId, "在线"); //设备在线 + log.info(deviceType + "在线,设备号:" + deviceAddr + ",所属楼栋:" + buildingName); + if (deviceType.equals("热泵")) { + String strState = nowDataService.selectState(buildingId, deviceAddr); + if (strState != null && strState.equals("离线")) { //采集到数据 + nowDataService.updateRunState(buildingId, deviceAddr, "不运行", buildingName); //监控界面状态表热泵在线状态 + } + } try { - baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16)); + if ((dataStr.length() == 18 || dataStr.length() == 70 || dataStr.length() == 44) && deviceType.equals("水表")) { + rtData = analysisReceiveOrder485.analysisWtMeterOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); + } else if ((dataStr.length() == 36 || dataStr.length() == 44 || dataStr.length() == 40 || dataStr.length() == 50) && deviceType.equals("电表")) { + rtData = analysisReceiveOrder485.analysisMeterOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); + } else if (deviceType.equals("压变")) { + rtData = analysisReceiveOrder485.analysisPressureOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); + } else if ((dataStr.length() == 30) && deviceType.equals("状态检测")) {//五路状态读取,兼容旧版系统 + analysisReceiveOrder485.analysisStateOrder485(dataStr, registerAddr, brand, buildingId, buildingName); + } else if (deviceType.equals("水位开关") && (registerAddr.equals("0018") || registerAddr.equals("0017"))) { + rtData = analysisReceiveOrder485.analysisRelayOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); + } else if (deviceType.equals("热泵")) { + rtData = analysisReceiveOrder485.analysisPumpOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); + } else if (deviceType.equals("时控")) { + rtData = analysisReceiveOrder485.analysisTimeSetOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); + } else if (deviceType.equals("水位开关") && registerAddr.equals("0010")) { //热泵状态 + rtData = analysisReceiveOrder485.analysisPumpStateOrder2(dataStr, registerAddr, brand, buildingId, buildingName); + } else if (deviceType.equals("温度变送器")) { + rtData = analysisReceiveOrder485.analysisMulTempOrder4852(dataStr, registerAddr, brand, buildingId, buildingName); + } else if (deviceType.equals("热泵状态")) { + rtData = analysisReceiveOrder485.analysisPumpStateOrder2(dataStr, registerAddr, brand, buildingId, buildingName); + } } catch (Exception e) { - e.printStackTrace(); + log.error(deviceCodeParamEntity.getDeviceType() + "单抄保存数据库失败!"); + SerialTool.closePort(serialPort); + return "fail"; } + SerialTool.closePort(serialPort); + System.out.println("关闭" + serialPort); + Thread.sleep(200); + log.info("-----------------------------" + serialPort + "单抄结束!-----------------------------"); + return rtData; + } catch (Exception e) { + log.info("单抄串口" + serialPort + "异常,没有数据返回!关闭串口", e); } - try { - s = new String(baKeyword, StandardCharsets.UTF_8); - } catch (Exception e1) { - e1.printStackTrace(); - } - return s; + return "fail"; } } diff --git a/user-service/src/main/java/com/mh/user/utils/AnalysisReceiveOrder485.java b/user-service/src/main/java/com/mh/user/utils/AnalysisReceiveOrder485.java index 1b224e7..7b39d43 100644 --- a/user-service/src/main/java/com/mh/user/utils/AnalysisReceiveOrder485.java +++ b/user-service/src/main/java/com/mh/user/utils/AnalysisReceiveOrder485.java @@ -85,7 +85,7 @@ public class AnalysisReceiveOrder485 { // }); } - public String analysisMeterOrder4852(final String dataStr,final String registerAddr,final String brand,String buildingId) { + public String analysisMeterOrder4852(final String dataStr,final String registerAddr,final String brand,String buildingId, final String buildingName) { SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); String dateStr = sdf1.format(date); @@ -118,7 +118,6 @@ public class AnalysisReceiveOrder485 { data = String.format("%08d", Long.parseLong(data)); data = data.substring(0, 6) + "." + data.substring(6, 8); log.info("电表表号:" + meterId+",电表读数:" + data); - String buildingName=buildingService.queryBuildingName(buildingId); //查询楼栋名称 try { DataResultEntity dataResultEntity = new DataResultEntity(); dataResultEntity.setDeviceAddr(meterId);//通讯编号 @@ -202,7 +201,7 @@ public class AnalysisReceiveOrder485 { } // 水表 - public String analysisWtMeterOrder4852(final String dataStr,final String registerAddr,final String brand,String buildingId) { + public String analysisWtMeterOrder4852(final String dataStr,final String registerAddr,final String brand,String buildingId, String buildingName) { SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); String dateStr = sdf1.format(date); @@ -244,7 +243,6 @@ public class AnalysisReceiveOrder485 { log.info("水表报文检验失败: " + dataStr); } } - String buildingName=buildingService.queryBuildingName(buildingId); //查询楼栋名称 log.info("水表表号: " + meterId+",水表读数:" + data); try { DataResultEntity dataResultEntity = new DataResultEntity(); @@ -451,7 +449,7 @@ public class AnalysisReceiveOrder485 { // } } - public String analysisPumpOrder4852(final String receiveData, final String registerAddr,final String brand,String buildingId) { + public String analysisPumpOrder4852(final String receiveData, final String registerAddr,final String brand,String buildingId, final String buildingName) { SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); String dateStr = sdf1.format(date); @@ -464,7 +462,6 @@ public class AnalysisReceiveOrder485 { if (checkWord.equalsIgnoreCase(receiveData.substring(receiveData.length() - 4))) { log.info("热泵报文检验成功: " + receiveData); String addr = ExchangeStringUtil.hexToDec(checkStr.substring(0, 2)); - String buildingName=buildingService.queryBuildingName(buildingId); //查询楼栋名称 String data = ""; if (brand==null || brand.equals("") || brand.equals("美的")){ if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {//读 @@ -674,7 +671,7 @@ public class AnalysisReceiveOrder485 { } // 温度变送器,长度42,读功能03 - public String analysisMulTempOrder4852(final String receiveData, final String registerAddr,final String brand,String buildingId) { + public String analysisMulTempOrder4852(final String receiveData, final String registerAddr,final String brand,String buildingId, String buildingName) { String result="fail"; SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); @@ -688,7 +685,6 @@ public class AnalysisReceiveOrder485 { //log.info("温度变送器报文检验成功: " + receiveData); String addr = ExchangeStringUtil.hexToDec(checkStr.substring(0, 2));//地址 String data = ""; - String buildingName=buildingService.queryBuildingName(buildingId); //查询楼栋名称 if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {// 读 Map map= new HashMap<>(); String L1=checkStr.substring(6, 10); //1路 @@ -823,7 +819,7 @@ public class AnalysisReceiveOrder485 { } // 压变,长度14,18读功能03 - public String analysisPressureOrder4852(final String receiveData, final String registerAddr,final String brand,String buildingId) { + public String analysisPressureOrder4852(final String receiveData, final String registerAddr,final String brand,String buildingId, final String buildingName) { String result="fail"; String checkStr = receiveData.substring(0, receiveData.length() - 4);// 检验报文 byte[] strOrder = ExchangeStringUtil.hexStrToBinaryStr(checkStr); @@ -837,7 +833,6 @@ public class AnalysisReceiveOrder485 { String dateStr = sdf1.format(date); String addr = ExchangeStringUtil.hexToDec(checkStr.substring(0, 2));//地址 String data = ""; - String buildingName=buildingService.queryBuildingName(buildingId); //查询楼栋名称 if (checkStr.substring(2, 4).equalsIgnoreCase("03")) {// 读 Double wtHeight=0.0; if (brand==null || brand.equals("")){ @@ -1023,7 +1018,7 @@ public class AnalysisReceiveOrder485 { } // 水位开关,长度42,128 - public String analysisRelayOrder4852(final String receiveData, final String registerAddr,final String brand,String buildingId) { + public String analysisRelayOrder4852(final String receiveData, final String registerAddr,final String brand,String buildingId, final String buildingName) { SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.sss"); Date date = new Date(); String dateStr = sdf1.format(date); @@ -1037,7 +1032,6 @@ public class AnalysisReceiveOrder485 { String l8=""; String waterLevelSet=""; String addr=""; - String buildingName=buildingService.queryBuildingName(buildingId); //查询楼栋名称 if (brand==null || brand.equals("") || brand.equals("中凯")){ // 检验报文 String checkStr = receiveData.substring(0, receiveData.length() - 4); //减去校验码 @@ -1335,7 +1329,7 @@ public class AnalysisReceiveOrder485 { } // 热泵状态处理(水位开关),长度42,128 - public String analysisPumpStateOrder2(final String receiveData, final String registerAddr,final String brand,String buildingId) { + public String analysisPumpStateOrder2(final String receiveData, final String registerAddr,final String brand,String buildingId, String buildingName) { String result="fail"; SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); @@ -1351,7 +1345,6 @@ public class AnalysisReceiveOrder485 { String runState=""; String addr=""; Map map=new HashMap(); - String buildingName=buildingService.queryBuildingName(buildingId); //查询楼栋名称 if (brand==null || brand.equals("") || brand.equals("顶威")){ String checkStr = receiveData.substring(0, receiveData.length() - 4); //检验报文减,去校验码 String checkNum = ExchangeStringUtil.makeChecksum(checkStr); //生成校验码 @@ -1622,7 +1615,7 @@ public class AnalysisReceiveOrder485 { } //时间控制器,长度26、22 - public String analysisTimeSetOrder4852(final String receiveData, final String registerAddr,final String brand,String buildingId) { + public String analysisTimeSetOrder4852(final String receiveData, final String registerAddr,final String brand,String buildingId, final String buildingName) { String result="fail"; SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); diff --git a/user-service/src/test/java/com/mh/user/chart/ChartTest.java b/user-service/src/test/java/com/mh/user/chart/ChartTest.java index 3ff1e39..b366aa3 100644 --- a/user-service/src/test/java/com/mh/user/chart/ChartTest.java +++ b/user-service/src/test/java/com/mh/user/chart/ChartTest.java @@ -9,55 +9,17 @@ package com.mh.user.chart; */ public class ChartTest { public static void main(String[] args) { + System.out.println(extracted()); + } -// Set objects = new LinkedHashSet<>(); -// objects.add("test"); -// objects.add("test1"); -// objects.add("test"); -// objects.add("test1"); -// for (Object object : -// objects) { -// System.out.println(object); -// } - -// Title title = new Title(false, "COP"); -// -// Feature feature = new Feature( -// new boolean[]{false, false, false, false}, -// new String[]{"温度", "湿度", "千瓦", "千帕"}, -// new String[]{"温度", "湿度", "千瓦", "千帕"}, -// new String[]{"温度", "湿度", "千瓦", "千帕"}, -// new String[]{"温度", "湿度", "千瓦", "千帕"}); -// -// Legend legend = new Legend( -// new String[]{"COP"}, -// 200, -// new int[]{25}); -// -// XAxis xAxis = new XAxis(new String[]{"前3周","前2周","前1周","本周"}); -// -// List yAxisList = new ArrayList<>(); -// yAxisList.add(new YAxis("value", -// "COP", -// new SplitLine(false), -// new AxisLine(false,new LineStyle("#FFF")), -// true)); -// -// List seriesList = new ArrayList<>(); -// seriesList.add(new Series("COP", -// "bar", -// 0, -// new Double[]{4.7, 5.8, 6.0, 5.3})); -// -// ChartEntity chartEntity = new ChartEntity(title,feature,legend,xAxis,yAxisList,seriesList); -// List chartEntities = new ArrayList<>(); -// chartEntities.add(chartEntity); -// String json = JSONArray.toJSONString(chartEntities); -// System.out.println(json); -// BigDecimal b1 = BigDecimal.valueOf(Math.PI / 2); -// double a = b1.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); -// System.out.println(a); - String s = "a9fec2c71f90ff03fc0000000100000200000300000400000500000600000700000800000900000a00000b00000c00000d00000e00000f00001000001100001200001300001400001500001600001700001800001900001a00001b00001c00001d00011e00001f00002000002100002200002300002400002500002600002700002800002900002a00002b00002c00002d00002e00002f000030000031000040a8"; - System.out.println("大小: " + s.length()); + private static String extracted() { + try { + System.out.println("测试"); + return "测试了"; + } catch (Exception e) { + throw new RuntimeException(e); + } finally { + System.out.println("最后也执行的"); + } } }