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