From 73f74cbf665a431b0db474be129a03c655e2338a Mon Sep 17 00:00:00 2001
From: jiazx0107@163.com <jiazx0107@163.com>
Date: 星期五, 25 八月 2023 13:30:03 +0800
Subject: [PATCH] 更新MODBUS-TCP协议,添加GasModus的配置

---
 igds-protocol-modbus/src/main/java/com/ld/igds/modbus/ModbusConstant.java                            |    2 
 /dev/null                                                                                            |  118 -------
 igds-protocol-modbus/src/main/java/com/ld/igds/models/DeviceModbus.java                              |   11 
 igds-protocol-modbus/src/main/java/com/ld/igds/models/GasModbus.java                                 |   60 +++
 igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteControlServiceImpl.java |    4 
 igds-protocol-modbus/src/main/java/com/ld/igds/modbus/service/HModbusService.java                    |  240 +++++++++++++++
 igds-protocol-modbus/src/main/java/com/ld/igds/modbus/GasModbus.view.xml                             |  373 +++++++++++++++++++++++
 igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbusPR.java                            |   13 
 igds-core/src/main/java/com/ld/igds/view/DepotConf.view.xml                                          |   30 +
 igds-protocol-modbus/src/main/java/com/ld/igds/modbus/GasModbusPR.java                               |   94 +++++
 10 files changed, 817 insertions(+), 128 deletions(-)

diff --git a/igds-core/src/main/java/com/ld/igds/view/DepotConf.view.xml b/igds-core/src/main/java/com/ld/igds/view/DepotConf.view.xml
index a3b6099..4aba95d 100644
--- a/igds-core/src/main/java/com/ld/igds/view/DepotConf.view.xml
+++ b/igds-core/src/main/java/com/ld/igds/view/DepotConf.view.xml
@@ -314,6 +314,15 @@
                 <Property name="property">ph3Max</Property>
                 <Editor/>
               </AutoFormElement>
+              <Button>
+                <ClientEvent name="onClick">var depotId = view.get(&quot;#dsMain.data:#&quot;).get(&quot;depotId&quot;);&#xD;
+var path = &quot;com.ld.igds.modbus.GasModbus.d?depotId=&quot;+depotId;&#xD;
+view.get(&quot;#iframModbus&quot;).set(&quot;path&quot;,path);&#xD;
+view.get(&quot;#dialogModbus&quot;).show();</ClientEvent>
+                <Property name="caption">Modbus閰嶇疆</Property>
+                <Property name="tip">閽堝Modbus鍗忚鐨勯厤缃�</Property>
+                <Property name="iconClass">fa fa-refresh</Property>
+              </Button>
             </AutoForm>
           </Children>
         </FieldSet>
@@ -346,6 +355,15 @@
                 <Property name="property">pestMax</Property>
                 <Editor/>
               </AutoFormElement>
+              <Button>
+                <ClientEvent name="onClick">var depotId = view.get(&quot;#dsMain.data:#&quot;).get(&quot;depotId&quot;);&#xD;
+var path = &quot;com.ld.igds.modbus.PestModbus.d?depotId=&quot;+depotId;&#xD;
+view.get(&quot;#iframModbus&quot;).set(&quot;path&quot;,path);&#xD;
+view.get(&quot;#dialogModbus&quot;).show();</ClientEvent>
+                <Property name="caption">Modbus閰嶇疆</Property>
+                <Property name="tip">閽堝Modbus鍗忚鐨勯厤缃�</Property>
+                <Property name="iconClass">fa fa-refresh</Property>
+              </Button>
             </AutoForm>
           </Children>
         </FieldSet>
@@ -388,5 +406,17 @@
       <Property name="service">depotPR#ajaxGetAllCache</Property>
       <Property name="executingMessage">鍒濆鍖栨暟鎹�︹��</Property>
     </AjaxAction>
+    <Dialog id="dialogModbus">
+      <Property name="width">80%</Property>
+      <Property name="height">95%</Property>
+      <Property name="caption">Modbus-TCP閰嶇疆</Property>
+      <Buttons/>
+      <Children>
+        <IFrame id="iframModbus">
+          <Property name="path">com.ld.igds.modbus.GasModbus.d</Property>
+        </IFrame>
+      </Children>
+      <Tools/>
+    </Dialog>
   </View>
 </ViewConfig>
diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbusPR.java b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbusPR.java
index 500a440..361ee0e 100644
--- a/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbusPR.java
+++ b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbusPR.java
@@ -3,7 +3,7 @@
 import com.bstek.dorado.annotation.DataProvider;
 import com.bstek.dorado.annotation.DataResolver;
 import com.bstek.dorado.annotation.Expose;
-import com.ld.igds.modbus.service.HDeviceModbusService;
+import com.ld.igds.modbus.service.HModbusService;
 import com.ld.igds.models.DeviceModbus;
 import com.ld.igds.models.DicTrigger;
 import com.ld.igds.util.ContextUtil;
@@ -20,7 +20,7 @@
 public class DeviceModbusPR {
 
     @Resource
-    private HDeviceModbusService deviceModbusService;
+    private HModbusService deviceModbusService;
 
     /**
      * deviceModbusPR#listAll
@@ -30,7 +30,7 @@
     @DataProvider
     public List<DeviceModbus> listAll() {
         String companyId = ContextUtil.getCompanyId();
-        return deviceModbusService.listAll(companyId);
+        return deviceModbusService.listAllDevice(companyId);
     }
 
     /**
@@ -41,7 +41,7 @@
     @Expose
     public void flushCache() {
         String companyId = ContextUtil.getCompanyId();
-        deviceModbusService.flushCache(companyId);
+        deviceModbusService.flushCacheDevice(companyId);
     }
 
     /**
@@ -52,7 +52,7 @@
     @Expose
     public String delData(DeviceModbus data) {
         if (null == data.getId()) return null;
-        return deviceModbusService.delData(data);
+        return deviceModbusService.delDataDevice(data);
     }
 
     /**
@@ -63,7 +63,7 @@
      */
     @DataResolver
     public void updateData(List<DeviceModbus> details) {
-        deviceModbusService.updateData(details);
+        deviceModbusService.updateDataDevice(details);
     }
 
 
@@ -87,6 +87,5 @@
         list.add(new DicTrigger(ModbusConstant.FUN_99, "鏈厤缃�"));
         return list;
     }
-
 
 }
diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/GasModbus.view.xml b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/GasModbus.view.xml
new file mode 100644
index 0000000..50f26ee
--- /dev/null
+++ b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/GasModbus.view.xml
@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+  <Arguments/>
+  <Context/>
+  <Model>
+    <DataType name="dtMain">
+      <Property name="creationType">com.ld.igds.models.DeviceModbus</Property>
+      <PropertyDef name="id">
+        <Property></Property>
+        <Property name="label">ID</Property>
+      </PropertyDef>
+      <PropertyDef name="deviceCode">
+        <Property></Property>
+        <Property name="label">浠撳簱缂栫爜</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;depotPR#getAllCache&quot;).getResult()}</Property>
+          <Property name="keyProperty">id</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="open">
+        <Property></Property>
+        <Property name="label">寮�鍦板潃</Property>
+      </PropertyDef>
+      <PropertyDef name="openFun">
+        <Property></Property>
+        <Property name="label">鍔熻兘鍙�</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;deviceModbusPR#triggerFun&quot;).getResult()}</Property>
+          <Property name="keyProperty">code</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="close">
+        <Property></Property>
+        <Property name="label">鍏冲湴鍧�</Property>
+      </PropertyDef>
+      <PropertyDef name="closeFun">
+        <Property></Property>
+        <Property name="label">鍔熻兘鍙�</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;deviceModbusPR#triggerFun&quot;).getResult()}</Property>
+          <Property name="keyProperty">code</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="stop">
+        <Property></Property>
+        <Property name="label">鍋滃湴鍧�</Property>
+      </PropertyDef>
+      <PropertyDef name="stopFun">
+        <Property></Property>
+        <Property name="label">鍔熻兘鍙�</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;deviceModbusPR#triggerFun&quot;).getResult()}</Property>
+          <Property name="keyProperty">code</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="openEnd">
+        <Property></Property>
+        <Property name="label">寮�鍒颁綅</Property>
+      </PropertyDef>
+      <PropertyDef name="openEndFun">
+        <Property></Property>
+        <Property name="label">鍔熻兘鍙�</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;deviceModbusPR#triggerFun&quot;).getResult()}</Property>
+          <Property name="keyProperty">code</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="closeEnd">
+        <Property></Property>
+        <Property name="label">鍏冲埌浣�</Property>
+      </PropertyDef>
+      <PropertyDef name="closeEndFun">
+        <Property></Property>
+        <Property name="label">鍔熻兘鍙�</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;deviceModbusPR#triggerFun&quot;).getResult()}</Property>
+          <Property name="keyProperty">code</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="openError">
+        <Property></Property>
+        <Property name="label">寮�鏁呴殰</Property>
+      </PropertyDef>
+      <PropertyDef name="openErrorFun">
+        <Property></Property>
+        <Property name="label">鍔熻兘鍙�</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;deviceModbusPR#triggerFun&quot;).getResult()}</Property>
+          <Property name="keyProperty">code</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="closeError">
+        <Property></Property>
+        <Property name="label">鍏虫晠闅�</Property>
+      </PropertyDef>
+      <PropertyDef name="closeErrorFun">
+        <Property></Property>
+        <Property name="label">鍔熻兘鍙�</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;deviceModbusPR#triggerFun&quot;).getResult()}</Property>
+          <Property name="keyProperty">code</Property>
+          <Property name="valueProperty">name</Property>
+        </Property>
+      </PropertyDef>
+      <Reference name="listGas">
+        <Property name="dataType">[dtGas]</Property>
+        <Property name="dataProvider">gasModbusPR#listGasModBus</Property>
+        <Property name="parameter">$${this.deviceCode}</Property>
+      </Reference>
+    </DataType>
+    <DataType name="dtGas">
+      <Property name="creationType">com.ld.igds.models.GasModbus</Property>
+      <PropertyDef name="id">
+        <Property/>
+        <Property name="label">ID</Property>
+      </PropertyDef>
+      <PropertyDef name="depotId">
+        <Property/>
+        <Property name="label">鎵�灞炰粨搴�</Property>
+      </PropertyDef>
+      <PropertyDef name="passcode">
+        <Property name="dataType">int</Property>
+        <Property name="label">閫氶亾</Property>
+      </PropertyDef>
+      <PropertyDef name="co2">
+        <Property/>
+        <Property name="label">浜屾哀鍖栫⒊</Property>
+      </PropertyDef>
+      <PropertyDef name="co2Fun">
+        <Property/>
+        <Property name="label">鍔熻兘鍙�</Property>
+      </PropertyDef>
+      <PropertyDef name="o2">
+        <Property/>
+        <Property name="label">姘ф皵</Property>
+      </PropertyDef>
+      <PropertyDef name="o2Fun">
+        <Property/>
+        <Property name="label">鍔熻兘鍙�</Property>
+      </PropertyDef>
+      <PropertyDef name="ph3">
+        <Property/>
+        <Property name="label">纾峰寲姘�</Property>
+      </PropertyDef>
+      <PropertyDef name="ph3Fun">
+        <Property/>
+        <Property name="label">鍔熻兘鍙�</Property>
+      </PropertyDef>
+    </DataType>
+  </Model>
+  <View layout="padding:5;regionPadding:5">
+    <Property name="packages">font-awesome,css-common</Property>
+    <DataSet id="dsMain">
+      <Property name="loadMode">lazy</Property>
+      <Property name="dataType">dtMain</Property>
+      <Property name="dataProvider">gasModbusPR#getGasData</Property>
+      <Property name="parameter">${request.getParameter('depotId')}</Property>
+    </DataSet>
+    <Container layout="regionPadding:10" layoutConstraint="top">
+      <Property name="exClassName">bg-color</Property>
+      <Property name="contentOverflow">hidden</Property>
+      <Property name="height">55</Property>
+      <Label layoutConstraint="left">
+        <Property name="text">鑿滃崟鏍忥細</Property>
+      </Label>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">var list = view.get(&quot;#dsMain.data&quot;).get(&quot;listGas&quot;);&#xD;
+list.insert({});</ClientEvent>
+        <Property name="caption">鏂板閫氶亾</Property>
+        <Property name="exClassName">btn-default</Property>
+        <Property name="iconClass">fa fa-plus</Property>
+      </Button>
+      <Button>
+        <ClientEvent name="onClick">view.get(&quot;#uaAction&quot;).execute();   </ClientEvent>
+        <Property name="caption">淇濆瓨鏁版嵁</Property>
+        <Property name="iconClass">fa fa-check</Property>
+        <Property name="exClassName">btn-normal</Property>
+      </Button>
+      <Button layoutConstraint="left">
+        <ClientEvent name="onClick">var data = view.get(&quot;#dataGrid1&quot;).getCurrentItem();;&#xD;
+if(!data){&#xD;
+	return;&#xD;
+}&#xD;
+view.get(&quot;#ajaxDel&quot;).set(&quot;parameter&quot;,data).execute(function(result){&#xD;
+	if(result){&#xD;
+		$alert(result);&#xD;
+		return;&#xD;
+	}else{&#xD;
+		data.remove();&#xD;
+	}&#xD;
+});           </ClientEvent>
+        <Property name="caption">鍒犻櫎閫氶亾</Property>
+        <Property name="exClassName">btn-warn</Property>
+        <Property name="iconClass">fa fa-minus</Property>
+      </Button>
+      <Button layoutConstraint="left">
+        <Property name="caption">鍒锋柊缂撳瓨</Property>
+        <Property name="exClassName">btn-default</Property>
+        <Property name="iconClass">fa fa-refresh</Property>
+        <Property name="action">ajaxFlushCache</Property>
+      </Button>
+    </Container>
+    <Container layout="regionPadding:10" layoutConstraint="center">
+      <Property name="exClassName">bg-color</Property>
+      <AutoForm>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="cols">*,*,*,*</Property>
+        <Property name="labelAlign">right</Property>
+        <Property name="labelSeparator">锛�</Property>
+        <Property name="labelWidth">100</Property>
+        <AutoFormElement layoutConstraint="colSpan:2">
+          <Property name="name">deviceCode</Property>
+          <Property name="property">deviceCode</Property>
+          <Property name="label">浠撳簱缂栫爜</Property>
+          <Property name="labelWidth">100</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">open</Property>
+          <Property name="property">open</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">openFun</Property>
+          <Property name="property">openFun</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">close</Property>
+          <Property name="property">close</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">closeFun</Property>
+          <Property name="property">closeFun</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">stop</Property>
+          <Property name="property">stop</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">stopFun</Property>
+          <Property name="property">stopFun</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">openEnd</Property>
+          <Property name="property">openEnd</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">openEndFun</Property>
+          <Property name="property">openEndFun</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">closeEnd</Property>
+          <Property name="property">closeEnd</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">closeEndFun</Property>
+          <Property name="property">closeEndFun</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">openError</Property>
+          <Property name="property">openError</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">openErrorFun</Property>
+          <Property name="property">openErrorFun</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">closeError</Property>
+          <Property name="property">closeError</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">closeErrorFun</Property>
+          <Property name="property">closeErrorFun</Property>
+          <Editor/>
+        </AutoFormElement>
+      </AutoForm>
+      <ToolBar>
+        <ToolBarLabel>
+          <Property name="text">妫�娴嬮�氶亾閰嶇疆</Property>
+          <Property name="style">
+            <Property name="font-weight">bold</Property>
+          </Property>
+        </ToolBarLabel>
+      </ToolBar>
+      <DataGrid id="dataGrid1" layoutConstraint="center padding:5px">
+        <Property name="dataSet">dsMain</Property>
+        <Property name="dataPath">#.listGas</Property>
+        <RowNumColumn/>
+        <DataColumn>
+          <Property name="property">passcode</Property>
+          <Property name="name">passcode</Property>
+          <Editor/>
+        </DataColumn>
+        <ColumnGroup>
+          <Property name="caption">CO2</Property>
+          <DataColumn>
+            <Property name="property">co2</Property>
+            <Property name="caption">鍦板潃</Property>
+            <Property name="name">co2</Property>
+          </DataColumn>
+          <DataColumn>
+            <Property name="property">co2Fun</Property>
+            <Property name="caption">鍔熻兘</Property>
+            <Property name="trigger">autoMappingDropDown1</Property>
+            <Property name="name">co2Fun</Property>
+          </DataColumn>
+        </ColumnGroup>
+        <ColumnGroup>
+          <Property name="caption">O2</Property>
+          <DataColumn>
+            <Property name="property">o2</Property>
+            <Property name="caption">鍦板潃</Property>
+            <Property name="name">o2</Property>
+          </DataColumn>
+          <DataColumn>
+            <Property name="property">o2Fun</Property>
+            <Property name="caption">鍔熻兘</Property>
+            <Property name="trigger">autoMappingDropDown1</Property>
+            <Property name="name">o2Fun</Property>
+          </DataColumn>
+        </ColumnGroup>
+        <ColumnGroup>
+          <Property name="caption">PH3</Property>
+          <DataColumn>
+            <Property name="property">ph3</Property>
+            <Property name="caption">鍦板潃</Property>
+            <Property name="name">ph3</Property>
+          </DataColumn>
+          <DataColumn>
+            <Property name="property">ph3Fun</Property>
+            <Property name="caption">鍔熻兘</Property>
+            <Property name="trigger">autoMappingDropDown1</Property>
+            <Property name="name">ph3Fun</Property>
+          </DataColumn>
+        </ColumnGroup>
+      </DataGrid>
+    </Container>
+    <UpdateAction id="uaAction">
+      <Property name="dataResolver">gasModbusPR#updateData</Property>
+      <UpdateItem>
+        <Property name="dataSet">dsMain</Property>
+        <Property name="dataPath">[#current]</Property>
+      </UpdateItem>
+    </UpdateAction>
+    <AjaxAction id="ajaxDel">
+      <Property name="service">gasModbusPR#delData</Property>
+      <Property name="confirmMessage">纭畾瑕佸垹闄や箞锛�</Property>
+    </AjaxAction>
+    <AjaxAction id="ajaxFlushCache">
+      <Property name="service">gasModbusPR#flushCache</Property>
+      <Property name="successMessage">缂撳瓨鏇存柊鎴愬姛</Property>
+    </AjaxAction>
+  </View>
+</ViewConfig>
diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/GasModbusPR.java b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/GasModbusPR.java
new file mode 100644
index 0000000..266c5ac
--- /dev/null
+++ b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/GasModbusPR.java
@@ -0,0 +1,94 @@
+package com.ld.igds.modbus;
+
+import com.bstek.dorado.annotation.DataProvider;
+import com.bstek.dorado.annotation.DataResolver;
+import com.bstek.dorado.annotation.Expose;
+import com.ld.igds.constant.BizType;
+import com.ld.igds.modbus.service.HModbusService;
+import com.ld.igds.models.DeviceModbus;
+import com.ld.igds.models.GasModbus;
+import com.ld.igds.util.ContextUtil;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * MOOBUS-TCP璁惧鍙傛暟閰嶇疆
+ */
+@Component
+public class GasModbusPR {
+
+    @Resource
+    private HModbusService modbusService;
+
+    /**
+     * gasModbusPR#getGasData
+     *
+     * @return
+     */
+    @DataProvider
+    public DeviceModbus getGasData(String depotId) {
+        if (null == depotId) return new DeviceModbus();
+
+        String bizType = BizType.GAS.getCode();
+
+        String companyId = ContextUtil.getCompanyId();
+
+        DeviceModbus result = modbusService.getGasData(companyId, depotId, bizType);
+
+        if (null == result) {
+            result = new DeviceModbus();
+            result.setBizType(bizType);
+            result.setDeviceCode(depotId);
+            result.setListGas(new ArrayList<>());
+        }
+
+        return result;
+    }
+
+    /**
+     * gasModbusPR#listGasModBus
+     *
+     * @param depotId
+     * @return
+     */
+    @DataProvider
+    public List<GasModbus> listGasModBus(String depotId) {
+        return modbusService.listGasModBus(depotId);
+    }
+
+
+    /**
+     * gasModbusPR#updateData
+     * @param data
+     */
+    @DataResolver
+    public void updateData(DeviceModbus data){
+        modbusService.updateGasModbus(data);
+    }
+
+    /**
+     * gasModbusPR#flushCache
+     *
+     * @return
+     */
+    @Expose
+    public void flushCache() {
+        String companyId = ContextUtil.getCompanyId();
+        modbusService.flushCacheGas(companyId);
+    }
+
+    /**
+     * deviceModbusPR#delData
+     *
+     * @return
+     */
+    @Expose
+    public String delData(GasModbus data) {
+        if (null == data.getId()) return null;
+        return modbusService.delDataGas(data);
+    }
+
+}
diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/ModbusConstant.java b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/ModbusConstant.java
index 9a630ca..299052e 100644
--- a/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/ModbusConstant.java
+++ b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/ModbusConstant.java
@@ -29,7 +29,7 @@
 
     public static final String MODBUS_DEVICE_CACHE = "MODBUS_DEVICE";
 
-
+    public static final String MODBUS_GAS_CACHE_LIST = "MODBUS_GAS_LIST";
 
 
 
diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/service/HDeviceModbusService.java b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/service/HDeviceModbusService.java
deleted file mode 100644
index a5da293..0000000
--- a/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/service/HDeviceModbusService.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.ld.igds.modbus.service;
-
-import com.bstek.bdf2.core.orm.hibernate.HibernateDao;
-import com.ld.igds.constant.Constant;
-import com.ld.igds.constant.RedisConst;
-import com.ld.igds.modbus.ModbusConstant;
-import com.ld.igds.models.DeviceModbus;
-import com.ld.igds.util.ContextUtil;
-import com.ld.igds.util.RedisUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.hibernate.Session;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-
-@Component
-public class HDeviceModbusService extends HibernateDao {
-
-    @Resource
-    private RedisUtil redisUtil;
-
-
-    public List<DeviceModbus> listAll(String companyId) {
-
-        String hql = " from " + DeviceModbus.class.getName() + " where 1=1 order by deviceCode+0";
-
-        return this.query(hql);
-    }
-
-    public void flushCache(String companyId) {
-
-        if (null == companyId) companyId = ContextUtil.getCompanyId();
-
-        List<DeviceModbus> listAll = this.listAll(companyId);
-
-        if (null == listAll || listAll.isEmpty()) return;
-
-
-        String key;
-        DeviceModbus entityDevice;
-        for (DeviceModbus hibDevice : listAll) {
-            entityDevice = new DeviceModbus();
-            BeanUtils.copyProperties(hibDevice, entityDevice);
-            key = RedisConst.buildKey(companyId, ModbusConstant.MODBUS_DEVICE_CACHE, hibDevice.getDeviceCode());
-            redisUtil.set(key, entityDevice);
-        }
-    }
-
-    public DeviceModbus getCacheDeviceModbus(String companyId, String deviceCode) {
-        String key = RedisConst.buildKey(companyId, ModbusConstant.MODBUS_DEVICE_CACHE, deviceCode);
-        return (DeviceModbus) redisUtil.get(key);
-    }
-
-    public void updateData(List<DeviceModbus> details) {
-        if (null == details || details.isEmpty()) return;
-
-        Session session = this.getSessionFactory().openSession();
-        try {
-            for (DeviceModbus device : details) {
-
-                if (StringUtils.isEmpty(device.getOpen())) device.setOpen(Constant.YN_N);
-                if (StringUtils.isEmpty(device.getOpenFun())) device.setOpenFun(ModbusConstant.FUN_99);
-
-                if (StringUtils.isEmpty(device.getOpenEnd())) device.setOpenEnd(Constant.YN_N);
-                if (StringUtils.isEmpty(device.getOpenEndFun())) device.setOpenEndFun(ModbusConstant.FUN_99);
-
-                if (StringUtils.isEmpty(device.getOpenError())) device.setOpenError(Constant.YN_N);
-                if (StringUtils.isEmpty(device.getOpenErrorFun())) device.setOpenErrorFun(ModbusConstant.FUN_99);
-
-                if (StringUtils.isEmpty(device.getClose())) device.setClose(Constant.YN_N);
-                if (StringUtils.isEmpty(device.getCloseFun())) device.setCloseFun(ModbusConstant.FUN_99);
-
-                if (StringUtils.isEmpty(device.getCloseEnd())) device.setCloseEnd(Constant.YN_N);
-                if (StringUtils.isEmpty(device.getCloseEndFun())) device.setCloseEndFun(ModbusConstant.FUN_99);
-
-                if (StringUtils.isEmpty(device.getCloseError())) device.setCloseError(Constant.YN_N);
-                if (StringUtils.isEmpty(device.getCloseErrorFun())) device.setCloseErrorFun(ModbusConstant.FUN_99);
-
-                if (StringUtils.isEmpty(device.getStop())) device.setStop(Constant.YN_N);
-                if (StringUtils.isEmpty(device.getStopFun())) device.setStopFun(ModbusConstant.FUN_99);
-
-
-                if (null == device.getId()) {
-                    device.setId(ContextUtil.getUUID());
-                    session.save(device);
-                } else {
-                    session.update(device);
-                }
-            }
-
-            flushCache(null);
-
-        } catch (Exception e) {
-
-        } finally {
-            session.flush();
-            session.close();
-        }
-    }
-
-    public String delData(DeviceModbus data) {
-        Session session = this.getSessionFactory().openSession();
-        try {
-            session.delete(data);
-            flushCache(null);
-        } catch (Exception e) {
-        } finally {
-            session.flush();
-            session.close();
-        }
-        return null;
-    }
-
-
-}
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
new file mode 100644
index 0000000..216aad2
--- /dev/null
+++ b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/service/HModbusService.java
@@ -0,0 +1,240 @@
+package com.ld.igds.modbus.service;
+
+import com.bstek.bdf2.core.orm.hibernate.HibernateDao;
+import com.ld.igds.constant.BizType;
+import com.ld.igds.constant.Constant;
+import com.ld.igds.constant.RedisConst;
+import com.ld.igds.modbus.ModbusConstant;
+import com.ld.igds.models.DeviceModbus;
+import com.ld.igds.models.GasModbus;
+import com.ld.igds.util.ContextUtil;
+import com.ld.igds.util.RedisUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.hibernate.Session;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+@Component
+public class HModbusService extends HibernateDao {
+
+    @Resource
+    private RedisUtil redisUtil;
+
+
+    public List<DeviceModbus> listAllDevice(String companyId) {
+
+        String hql = " from " + DeviceModbus.class.getName() + " where 1=1 order by deviceCode+0";
+
+        return this.query(hql);
+    }
+
+    public void flushCacheDevice(String companyId) {
+
+        if (null == companyId) companyId = ContextUtil.getDefaultCompanyId();
+
+        List<DeviceModbus> listAll = this.listAllDevice(companyId);
+
+        if (null == listAll || listAll.isEmpty()) return;
+
+
+        String key;
+        DeviceModbus entityDevice;
+        for (DeviceModbus hibDevice : listAll) {
+            entityDevice = new DeviceModbus();
+            BeanUtils.copyProperties(hibDevice, entityDevice);
+            key = RedisConst.buildKey(companyId, ModbusConstant.MODBUS_DEVICE_CACHE, hibDevice.getDeviceCode());
+            redisUtil.set(key, entityDevice);
+        }
+    }
+
+    public DeviceModbus getCacheDeviceModbus(String companyId, String deviceCode) {
+        String key = RedisConst.buildKey(companyId, ModbusConstant.MODBUS_DEVICE_CACHE, deviceCode);
+        return (DeviceModbus) redisUtil.get(key);
+    }
+
+    public void updateDataDevice(List<DeviceModbus> details) {
+        if (null == details || details.isEmpty()) return;
+
+        Session session = this.getSessionFactory().openSession();
+        try {
+            for (DeviceModbus device : details) {
+
+
+                device = updateInitData(device);
+
+                if (null == device.getId()) {
+                    device.setId(ContextUtil.getUUID());
+                    session.save(device);
+                } else {
+                    session.update(device);
+                }
+            }
+
+            flushCacheDevice(null);
+
+        } catch (Exception e) {
+
+        } finally {
+            session.flush();
+            session.close();
+        }
+    }
+
+    private DeviceModbus updateInitData(DeviceModbus device) {
+        if (StringUtils.isEmpty(device.getOpen())) device.setOpen(Constant.YN_N);
+        if (StringUtils.isEmpty(device.getOpenFun())) device.setOpenFun(ModbusConstant.FUN_99);
+
+        if (StringUtils.isEmpty(device.getOpenEnd())) device.setOpenEnd(Constant.YN_N);
+        if (StringUtils.isEmpty(device.getOpenEndFun())) device.setOpenEndFun(ModbusConstant.FUN_99);
+
+        if (StringUtils.isEmpty(device.getOpenError())) device.setOpenError(Constant.YN_N);
+        if (StringUtils.isEmpty(device.getOpenErrorFun())) device.setOpenErrorFun(ModbusConstant.FUN_99);
+
+        if (StringUtils.isEmpty(device.getClose())) device.setClose(Constant.YN_N);
+        if (StringUtils.isEmpty(device.getCloseFun())) device.setCloseFun(ModbusConstant.FUN_99);
+
+        if (StringUtils.isEmpty(device.getCloseEnd())) device.setCloseEnd(Constant.YN_N);
+        if (StringUtils.isEmpty(device.getCloseEndFun())) device.setCloseEndFun(ModbusConstant.FUN_99);
+
+        if (StringUtils.isEmpty(device.getCloseError())) device.setCloseError(Constant.YN_N);
+        if (StringUtils.isEmpty(device.getCloseErrorFun())) device.setCloseErrorFun(ModbusConstant.FUN_99);
+
+        if (StringUtils.isEmpty(device.getStop())) device.setStop(Constant.YN_N);
+        if (StringUtils.isEmpty(device.getStopFun())) device.setStopFun(ModbusConstant.FUN_99);
+
+
+        if (StringUtils.isEmpty(device.getBizType())) device.setBizType(BizType.AREATION.getCode());
+
+        return device;
+    }
+
+    public String delDataDevice(DeviceModbus data) {
+        Session session = this.getSessionFactory().openSession();
+        try {
+            session.delete(data);
+            flushCacheDevice(null);
+        } catch (Exception e) {
+        } finally {
+            session.flush();
+            session.close();
+        }
+        return null;
+    }
+
+
+    public DeviceModbus getGasData(String companyId, String depotId, String bizType) {
+
+        String hql = " from " + DeviceModbus.class.getName() + " where bizType=:bizType and deviceCode =:deviceCode";
+
+        Map<String, Object> param = new HashMap<>();
+        param.put("bizType", bizType);
+        param.put("deviceCode", depotId);
+        List<DeviceModbus> list = this.query(hql, param);
+
+        if (null == list || list.isEmpty()) {
+            return null;
+        }
+        return list.get(0);
+    }
+
+
+    public List<GasModbus> listGasModBus(String depotId) {
+        String hql = " from " + GasModbus.class.getName();
+
+        if (null == depotId) {
+            return this.query(hql);
+        } else {
+            hql += " where depotId=:depotId order by passcode";
+            Map<String, Object> param = new HashMap<>();
+            param.put("depotId", depotId);
+            return this.query(hql, param);
+        }
+    }
+
+    public void updateGasModbus(DeviceModbus data) {
+        Session session = this.getSessionFactory().openSession();
+        try {
+
+            data = updateInitData(data);
+            data.setBizType(BizType.GAS.getCode());
+
+            if (StringUtils.isEmpty(data.getId())) {
+                data.setId(ContextUtil.getUUID());
+                session.save(data);
+            } else {
+                session.update(data);
+            }
+            flushCacheDevice(null);
+
+            this.updateListGas(session, data);
+
+        } catch (Exception e) {
+        } finally {
+            session.flush();
+            session.close();
+        }
+    }
+
+    private void updateListGas(Session session, DeviceModbus data) {
+        List<GasModbus> list = data.getListGas();
+        if (null == list || list.isEmpty()) return;
+        for (GasModbus gas : list) {
+            gas.setDepotId(data.getDeviceCode());
+            if (StringUtils.isEmpty(gas.getId())) {
+                gas.setId(ContextUtil.getUUID());
+                session.save(gas);
+            } else {
+                session.update(gas);
+            }
+        }
+        flushCacheGas(null);
+    }
+
+    public void flushCacheGas(String companyId) {
+
+        List<GasModbus> listAll = this.listGasModBus(null);
+
+        if (null == listAll || listAll.isEmpty()) return;
+
+        if (null == companyId) companyId = ContextUtil.getDefaultCompanyId();
+
+
+        Map<String, List<GasModbus>> collect = listAll.stream().collect(Collectors.groupingBy(GasModbus::getDepotId));
+
+        String key;
+        for (String depotId : collect.keySet()) {
+            key = RedisConst.buildKey(companyId, ModbusConstant.MODBUS_GAS_CACHE_LIST, depotId);
+            redisUtil.set(key, key);
+        }
+    }
+
+
+    public List<GasModbus> getCacheGasModbus(String companyId, String depotId) {
+        if (null == companyId) companyId = ContextUtil.getDefaultCompanyId();
+        String key = RedisConst.buildKey(companyId, ModbusConstant.MODBUS_GAS_CACHE_LIST, depotId);
+        return (List<GasModbus>) redisUtil.get(key);
+    }
+
+
+    public String delDataGas(GasModbus data) {
+        Session session = this.getSessionFactory().openSession();
+        try {
+            session.delete(data);
+
+            flushCacheGas(null);
+        } catch (Exception e) {
+        } finally {
+            session.flush();
+            session.close();
+        }
+        return null;
+    }
+}
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 e41d581..5d172eb 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
@@ -1,11 +1,13 @@
 package com.ld.igds.models;
 
 import com.bstek.dorado.annotation.PropertyDef;
+import com.ld.igds.constant.BizType;
 import com.ld.igds.constant.Constant;
 import lombok.Data;
 
 import javax.persistence.*;
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * 鏍规嵁璁惧閰嶇疆鐨凪odbus-TCP鍙傛暟閰嶇疆
@@ -25,10 +27,15 @@
     @Column(name = "DEVICE_CODE_", length = 40)
     @PropertyDef(label = "璁惧缂栫爜")
     private String deviceCode;
+    
+    @Column(name = "BIZ_TYEP_", length = 10)
+    @PropertyDef(label = "涓氬姟绫诲瀷")
+    private String bizType = BizType.AREATION.getCode();
 
     @Column(name = "OPEN_", length = 10)
     @PropertyDef(label = "寮�鍦板潃")
     private String open = Constant.YN_N;
+
 
     @Column(name = "OPEN_FUN", length = 4)
     @PropertyDef(label = "鍔熻兘鍙�")
@@ -82,4 +89,8 @@
     @PropertyDef(label = "鍔熻兘鍙�")
     private String closeErrorFun = "99";
 
+
+    @Transient
+    private List<GasModbus> listGas;
+
 }
diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/models/GasModbus.java b/igds-protocol-modbus/src/main/java/com/ld/igds/models/GasModbus.java
new file mode 100644
index 0000000..d7b3872
--- /dev/null
+++ b/igds-protocol-modbus/src/main/java/com/ld/igds/models/GasModbus.java
@@ -0,0 +1,60 @@
+package com.ld.igds.models;
+
+import com.bstek.dorado.annotation.PropertyDef;
+import com.ld.igds.constant.Constant;
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * 閰嶇疆娴嬫皵鍜屾祴铏殑MODBUS锛峊CP閰嶇疆淇℃伅
+ */
+@Data
+@Entity
+@Table(name = "D_GAS_MODBUS")
+public class GasModbus implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @Column(name = "ID_", length = 40)
+    @PropertyDef(label = "ID")
+    private String id;
+
+    @Column(name = "DEPOT_ID_", length = 50)
+    @PropertyDef(label = "鎵�灞炰粨搴�")
+    private String depotId;
+
+    @Column(name = "PASS_CODE_")
+    @PropertyDef(label = "閫氶亾")
+    private int passcode;
+
+    @Column(name = "CO2_", length = 10)
+    @PropertyDef(label = "浜屾哀鍖栫⒊")
+    private String co2 = Constant.YN_N;
+
+    @Column(name = "CO2_FUN", length = 4)
+    @PropertyDef(label = "鍔熻兘鍙�")
+    private String co2Fun = "99";
+
+    @Column(name = "O2_", length = 10)
+    @PropertyDef(label = "姘ф皵")
+    private String o2 = Constant.YN_N;
+
+    @Column(name = "O2_FUN", length = 4)
+    @PropertyDef(label = "鍔熻兘鍙�")
+    private String o2Fun = "99";
+
+    @Column(name = "PH3_", length = 10)
+    @PropertyDef(label = "纾峰寲姘�")
+    private String ph3= Constant.YN_N;
+
+    @Column(name = "PH3_FUN", length = 4)
+    @PropertyDef(label = "鍔熻兘鍙�")
+    private String ph3Fun = "99";
+
+}
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 2bf1d8e..c59a7b2 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
@@ -11,7 +11,7 @@
 import com.ld.igds.io.request.ExeDevice;
 import com.ld.igds.io.request.TempControlRequest;
 import com.ld.igds.io.response.DeviceControlResponse;
-import com.ld.igds.modbus.service.HDeviceModbusService;
+import com.ld.igds.modbus.service.HModbusService;
 import com.ld.igds.models.Device;
 import com.ld.igds.models.DeviceModbus;
 import com.ld.igds.protocol.modbus.ModbusUtil2;
@@ -40,7 +40,7 @@
     @Resource
     private CoreDeviceService coreDeviceService;
     @Resource
-    private HDeviceModbusService deviceModbusService;
+    private HModbusService deviceModbusService;
     @Resource
     private AnalysisService analysisService;
 

--
Gitblit v1.9.3