From 178c71496d5508dae69110f4d988cf128723d740 Mon Sep 17 00:00:00 2001 From: CZT <czt18638530771@163.com> Date: 星期三, 30 八月 2023 14:58:41 +0800 Subject: [PATCH] 配置Modbus协议:增加能耗信息 --- igds-protocol-modbus/src/main/java/com/ld/igds/models/DeviceModbus.java | 6 igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/AnalysisService.java | 34 ++++++++ igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteEsServiceImpl.java | 65 +++++++++++++++ igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteControlServiceImpl.java | 15 ++- igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil2.java | 28 ++----- igds-protocol-modbus/src/main/java/com/ld/igds/modbus/service/HModbusService.java | 17 ++++ igds-es/src/main/java/com/ld/igds/es/manager/EsManager.java | 8 +- igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbus.view.xml | 12 +++ 8 files changed, 151 insertions(+), 34 deletions(-) diff --git a/igds-es/src/main/java/com/ld/igds/es/manager/EsManager.java b/igds-es/src/main/java/com/ld/igds/es/manager/EsManager.java index 142fab3..332a9cb 100644 --- a/igds-es/src/main/java/com/ld/igds/es/manager/EsManager.java +++ b/igds-es/src/main/java/com/ld/igds/es/manager/EsManager.java @@ -205,10 +205,10 @@ "鎵ц澶辫触锛氭病鏈夐厤缃�氳鍗忚銆�"); } - if (Constant.YN_N.equals(deviceSer.getStatus())) { - return new BaseResponse(OrderRespEnum.ORDER_ERROR.getCode(), - "鎵ц澶辫触锛氳兘鑰楀垎鏈轰笉鍦ㄧ嚎銆�"); - } +// if (Constant.YN_N.equals(deviceSer.getStatus())) { +// return new BaseResponse(OrderRespEnum.ORDER_ERROR.getCode(), +// "鎵ц澶辫触锛氳兘鑰楀垎鏈轰笉鍦ㄧ嚎銆�"); +// } RemoteEsService remoteEsService = remoteManager.getRemoteEsService(deviceSer.getProtocol()); diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbus.view.xml b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbus.view.xml index bba19cc..0992467 100644 --- a/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbus.view.xml +++ b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbus.view.xml @@ -104,6 +104,15 @@ <Property name="valueProperty">name</Property> </Property> </PropertyDef> + <PropertyDef name="bizType"> + <Property/> + <Property name="label">涓氬姟绫诲瀷</Property> + <Property name="mapping"> + <Property name="mapValues">${dorado.getDataProvider("dicTriggerPR#triggerBizType").getResult()}</Property> + <Property name="keyProperty">code</Property> + <Property name="valueProperty">name</Property> + </Property> + </PropertyDef> <PropertyDef name="serId"> <Property/> <Property name="label">鎵�灞炲垎鏈�</Property> @@ -182,6 +191,9 @@ <DataColumn name="serId"> <Property name="property">serId</Property> </DataColumn> + <DataColumn name="bizType"> + <Property name="property">bizType</Property> + </DataColumn> <ColumnGroup> <Property name="caption">寮�鎿嶄綔</Property> <DataColumn name="open"> diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/service/HModbusService.java b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/service/HModbusService.java index 0f1ff64..9ade627 100644 --- a/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/service/HModbusService.java +++ b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/service/HModbusService.java @@ -140,6 +140,23 @@ return null; } + /** + * 鏍规嵁绫诲瀷鑾峰彇Modbus鑳借�楄澶囬厤缃俊鎭� + * @param bizType + * @param serId + * @return + */ + public List<DeviceModbus> getDataByBizType(String bizType, String serId) { + + String hql = " from " + DeviceModbus.class.getName() + " where bizType=:bizType and serId =:serId"; + + Map<String, Object> param = new HashMap<>(); + param.put("bizType", bizType); + param.put("serId", serId); + + return this.query(hql, param); + } + public DeviceModbus getGasData(String companyId, String depotId, String bizType) { diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/models/DeviceModbus.java b/igds-protocol-modbus/src/main/java/com/ld/igds/models/DeviceModbus.java index 654ac0f..3c0e3d3 100644 --- a/igds-protocol-modbus/src/main/java/com/ld/igds/models/DeviceModbus.java +++ b/igds-protocol-modbus/src/main/java/com/ld/igds/models/DeviceModbus.java @@ -33,7 +33,7 @@ private String bizType = BizType.AREATION.getCode(); @Column(name = "OPEN_", length = 10) - @PropertyDef(label = "寮�鍦板潃") + @PropertyDef(label = "寮�鍦板潃", description = "寮�鍦板潃銆佽兘鑰楄鍙栧湴鍧�") private String open = Constant.YN_N; @@ -42,7 +42,7 @@ private String openFun = "99"; @Column(name = "CLOSE_", length = 10) - @PropertyDef(label = "鍏冲湴鍧�") + @PropertyDef(label = "鍏冲湴鍧�", description = "鍏冲湴鍧�銆佺┖璋冩俯搴﹁缃湴鍧�") private String close = Constant.YN_N; @Column(name = "CLOSE_FUN", length = 4) @@ -58,7 +58,7 @@ private String stopFun = "99"; @Column(name = "OPEN_END_", length = 10) - @PropertyDef(label = "寮�鍒颁綅鍦板潃") + @PropertyDef(label = "寮�鍒颁綅鍦板潃", description = "寮�鍒颁綅鍦板潃銆佽繍琛岀姸鎬佸湴鍧�(椋庢満鍜岀┖璋�)") private String openEnd = Constant.YN_N; @Column(name = "OPEN_END_FUN", length = 4) diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil2.java b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil2.java index d4385be..4eb27c7 100644 --- a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil2.java +++ b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil2.java @@ -10,9 +10,6 @@ import com.serotonin.modbus4j.locator.BaseLocator; import com.serotonin.modbus4j.msg.*; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import java.util.HashMap; /** * @Desc: 宸ュ叿绫� @@ -25,13 +22,10 @@ //浠庢満榛樿鍊� private static Integer slaveId = 1; - private static HashMap<String, ModbusMaster> masterMap = new HashMap<>(); - /** * 宸ュ巶 */ static ModbusFactory modbusFactory; - //static ModbusMaster modbusMaster; static { if (modbusFactory == null) { @@ -46,23 +40,17 @@ * @return */ public static ModbusMaster getMaster(String ip, int port) throws ModbusInitException, InterruptedException { - String key = ip; -// ModbusMaster modbusMaster = masterMap.get(key); -// if (modbusMaster == null || !modbusMaster.isConnected()) { - IpParameters ipParameters = new IpParameters(); - ipParameters.setHost(ip); - ipParameters.setPort(port); + + IpParameters ipParameters = new IpParameters(); + ipParameters.setHost(ip); + ipParameters.setPort(port); ModbusMaster modbusMaster = modbusFactory.createTcpMaster(ipParameters, false); - modbusMaster.init(); + modbusMaster.init(); - //鍒濆鍖栦箣鍚庣瓑寰咃紝閬垮厤鍑虹幇杩炴帴鏈垱寤� - Thread.sleep(2500); + //鍒濆鍖栦箣鍚庣瓑寰咃紝閬垮厤鍑虹幇杩炴帴鏈垱寤� + Thread.sleep(2500); -// masterMap.put(key, modbusMaster); - - return modbusMaster; -// } -// return modbusMaster; + return modbusMaster; } diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/AnalysisService.java b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/AnalysisService.java index 59b1fbf..be6703b 100644 --- a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/AnalysisService.java +++ b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/AnalysisService.java @@ -2,9 +2,12 @@ import com.ld.igds.common.CoreDeviceService; import com.ld.igds.constant.BizType; +import com.ld.igds.es.dto.EsData; +import com.ld.igds.es.service.CoreEsService; import com.ld.igds.gas.CoreGasService; import com.ld.igds.io.constant.OrderRespEnum; import com.ld.igds.io.notify.NotifyWebInvoker; +import com.ld.igds.io.request.BaseRequest; import com.ld.igds.io.request.CheckGasRequest; import com.ld.igds.io.request.DeviceControlRequest; import com.ld.igds.models.Gas; @@ -35,6 +38,8 @@ private NotifyWebInvoker notifyInvoker; @Autowired private CoreGasService gasService; + @Autowired + private CoreEsService esService; /** @@ -156,4 +161,33 @@ notifyInvoker.notifyWeb(gas.getCompanyId(), OrderRespEnum.MSG_SUCCESS, BizType.GAS, request.getDepotId() + " 姘斾綋妫�娴嬶細缁撴灉杩斿洖鎴愬姛."); log.info("鎺у埗鏌�----->>>骞冲彴锛氭皵浣撹В鏋愬畬鎴�-浠撳簱={}", request.getDepotId()); } + + /** + * 瑙f瀽鑳借�楁暟鎹� + * + * @param request + * @param result + */ + public void analysisEs(BaseRequest request, Number result) { + + log.debug("----------寮�濮嬫墽琛岃兘鑰楃粨鏋滆В鏋�----{}", request.getDepotId()); + + + //鏈夊姛鐢佃兘鍒ゆ柇鏄惁杩斿洖鏈夋晥鏁版嵁 + if (null == result) { + log.error("---鑳借�楁暟鎹繑鍥炴暟鎹笉瀹屾暣锛屽仠姝㈣В鏋�----{}", result.toString()); + return; + } + + EsData esData = new EsData(); + esData.setCompanyId(request.getCompanyId()); + esData.setDepotId(request.getDepotId()); + esData.setUpdateTime(new Date()); + + esData.setEp(result.doubleValue()); + esData.setEs(result.doubleValue()); + + log.info("Modbus鐢佃〃----->>>骞冲彴锛氳兘鑰楁暟鎹В鏋愬畬鎴�-浠撳簱={}", esData.getDepotId()); + esService.saveAndUpdateInc(esData); + } } diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteControlServiceImpl.java b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteControlServiceImpl.java index b6c25d7..5da1698 100644 --- a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteControlServiceImpl.java +++ b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteControlServiceImpl.java @@ -67,6 +67,7 @@ ModbusTcp modbusTcp; ModbusTcp modbusTcpLink = null; String temp = Constant.YN_N; + DeviceSer deviceSer; for (ExeDevice exeDevice : deviceList) { deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), exeDevice.getPassCode() + ""); @@ -78,6 +79,12 @@ modbusTcp = new ModbusTcp(deviceModbus); modbusTcp.setIp(request.getIp()); modbusTcp.setPort(request.getPort()); + //鑻odbus璁惧閰嶇疆鍒嗘満锛屽垯浣跨敤鎵�閰嶇疆鍒嗘満鐨処P銆佺鍙� + if(StringUtils.isNotEmpty(deviceModbus.getSerId())){ + deviceSer = coreSerService.getCacheSer(request.getCompanyId(), deviceModbus.getSerId()); + modbusTcp.setIp(deviceSer.getIp()); + modbusTcp.setPort(deviceSer.getPort()); + } modbusTcp.setBizCode(exeDevice.getPassCode() + ""); modbusTcp.setSerId(request.getSerId()); modbusTcp.setCompanyId(request.getCompanyId()); @@ -109,7 +116,6 @@ continue; } - deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), exeDevice.getLink()); if (null == deviceModbus) continue; modbusTcpLink = new ModbusTcp(deviceModbus); @@ -118,9 +124,10 @@ modbusTcpLink.setBizCode(exeDevice.getLink()); modbusTcpLink.setSerId(request.getSerId()); modbusTcpLink.setCompanyId(request.getCompanyId()); + + //鑻odbus璁惧閰嶇疆鍒嗘満锛屽垯浣跨敤鎵�閰嶇疆鍒嗘満鐨処P銆佺鍙� if(StringUtils.isNotEmpty(deviceModbus.getSerId())){ - //鑻odbus璁惧閰嶇疆鍒嗘満锛屽垯浣跨敤鎵�閰嶇疆鍒嗘満鐨処P銆佺鍙� - DeviceSer deviceSer = coreSerService.getCacheSer(request.getCompanyId(), deviceModbus.getSerId()); + deviceSer = coreSerService.getCacheSer(request.getCompanyId(), deviceModbus.getSerId()); modbusTcpLink.setIp(deviceSer.getIp()); modbusTcpLink.setPort(deviceSer.getPort()); } @@ -131,9 +138,7 @@ //鍏堝紑绐楀彛 temp = modbusTcp.getDeviceModbus().getOpen(); modbusTcp.setAddrExe(ServerUtil.getAddrExe(temp)); - doWriteExe(modbusTcp, DeviceStatus.OPEN.getCode()); - Thread.sleep(300); diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteEsServiceImpl.java b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteEsServiceImpl.java index beee3fe..2c72b32 100644 --- a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteEsServiceImpl.java +++ b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteEsServiceImpl.java @@ -1,10 +1,24 @@ package com.ld.igds.protocol.modbus.command; +import com.ld.igds.common.CoreSerService; +import com.ld.igds.constant.BizType; import com.ld.igds.io.RemoteEsService; +import com.ld.igds.io.constant.OrderRespEnum; +import com.ld.igds.io.constant.ProtocolEnum; import com.ld.igds.io.request.BaseRequest; import com.ld.igds.io.response.BaseResponse; +import com.ld.igds.io.response.GasResponse; +import com.ld.igds.modbus.service.HModbusService; +import com.ld.igds.models.DeviceModbus; +import com.ld.igds.models.DeviceSer; +import com.ld.igds.protocol.modbus.ModbusUtil2; +import com.ld.igds.protocol.modbus.ServerUtil; +import com.ld.igds.protocol.modbus.data.ModbusTcp; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.util.List; /** * 褰撳墠鍗忚閽堝鏍囧噯Modbus-TCP鍗忚 @@ -19,13 +33,60 @@ public static final String BEAN_ID = "modbus.remoteEsService"; + @Resource + private HModbusService modbusService; + @Resource + private AnalysisService analysisService; + @Resource + private CoreSerService coreSerService; + @Override public String getProtocol() { - return null; + return ProtocolEnum.TCP_MODBUS.getCode(); } @Override public BaseResponse checkEs(BaseRequest request) { - return null; + + String passCode = request.getDepotId(); + + try { + //鑾峰彇闇�瑕佹墽琛岀殑璁惧閰嶇疆 + List<DeviceModbus> list = modbusService.getDataByBizType(BizType.ES.getCode(), request.getSerId()); + + if(null == list || list.isEmpty()){ + return new GasResponse(OrderRespEnum.ORDER_ERROR.getCode(), "鏈幏鍙栧埌Modbus鑳借�楅厤缃俊鎭�"); + } + ModbusTcp modbusTcp; + DeviceSer deviceSer; + for (DeviceModbus deviceModbus : list) { + modbusTcp = new ModbusTcp(deviceModbus); + modbusTcp.setIp(request.getIp()); + modbusTcp.setPort(request.getPort()); + + //鑻odbus璁惧閰嶇疆鍒嗘満锛屽垯浣跨敤鎵�閰嶇疆鍒嗘満鐨処P銆佺鍙� + if(StringUtils.isNotEmpty(deviceModbus.getSerId())){ + deviceSer = coreSerService.getCacheSer(request.getCompanyId(), deviceModbus.getSerId()); + modbusTcp.setIp(deviceSer.getIp()); + modbusTcp.setPort(deviceSer.getPort()); + } + + modbusTcp.setBizCode(passCode); + modbusTcp.setSerId(request.getSerId()); + modbusTcp.setCompanyId(request.getCompanyId()); + + modbusTcp.setAddrExe(ServerUtil.getAddrExe(deviceModbus.getOpen())); + + log.debug("--------鍚姩鑳借�楁煡璇�---{}-{}", modbusTcp.getSerId(), modbusTcp.getBizCode()); + Number check = ModbusUtil2.readHoldingRegister(modbusTcp.getIp(), modbusTcp.getPort(), modbusTcp.getAddrExe()); + + //瑙f瀽鑳借�楁暟鎹� + analysisService.analysisEs(request, check); + } + } catch (Exception e) { + return new GasResponse(OrderRespEnum.ORDER_ERROR.getCode(), "鍚庡彴鎵ц寮傚父锛�" + e.getLocalizedMessage()); + } + + return new GasResponse(OrderRespEnum.ORDER_SUCCESS); } } -- Gitblit v1.9.3