From 803697bd4f3ac5262e0acd69d6d7cc519ec45b2a Mon Sep 17 00:00:00 2001 From: vince <757871790@qq.com> Date: 星期一, 04 九月 2023 10:28:57 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- igds-verb/src/main/java/com/ld/igds/verb/manager/VerbManager.java | 17 igds-web/src/main/resources/static/img/gas/5328/5328_001_7.png | 0 igds-protocol-modbus/.rules | 1178 ++++++++++++++++++++ igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbusPR.java | 13 igds-web/src/main/resources/static/img/gas/5328/5328_001_10.png | 0 igds-web/src/main/resources/static/img/n2/5325/pfc2_a.png | 0 igds-web/src/main/resources/lib/modbus4j-3.1.0.jar | 0 igds-core/src/main/java/com/ld/igds/models/DepotConf.java | 9 igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil2.java | 70 igds-recir/src/main/java/com/ld/igds/temp/manager/TempControlManager.java | 12 igds-protocol-modbus/src/main/java/com/ld/igds/modbus/GasModbus.view.xml | 378 ++++++ igds-web/src/main/resources/n2-conf.properties | 4 igds-core/src/main/java/com/ld/igds/view/DepotConf.view.xml | 65 igds-web/src/main/resources/static/img/aerial-5325_001.png | 0 igds-web/src/main/resources/static/img/gas/5328/5328_001_5.png | 0 igds-web/src/main/resources/static/admin/n2/n2-hand-5013.js | 2 igds-protocol-modbus/src/main/java/com/ld/igds/modbus/GasModbusPR.java | 83 + igds-web/src/main/resources/application-pro5325.yml | 12 igds-protocol-modbus/src/main/java/com/ld/igds/models/GasModbus.java | 60 + igds-web/src/main/resources/templates/admin/n2/n2-hand-5013.html | 10 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 | 38 igds-web/src/main/resources/verb-conf.properties | 22 igds-protocol-modbus/src/main/java/com/ld/igds/modbus/ModbusConstant.java | 2 igds-web/src/main/resources/gas-conf.properties | 60 igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteGasServiceImpl.java | 185 +++ igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/data/ModbusTcp.java | 9 igds-web/src/main/resources/application-pro5327.yml | 2 igds-n2/src/main/java/com/ld/igds/n2/controller/N2Controller.java | 4 igds-core/src/main/java/com/ld/igds/common/impl/CoreDeviceServiceImpl.java | 26 igds-protocol-modbus/src/main/java/com/ld/igds/models/DeviceModbus.java | 22 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/data/ModbusGasResult.java | 31 igds-web/src/main/resources/static/img/gas/5328/5328_001_4.png | 0 igds-web/src/main/resources/templates/admin/verb/verb-hand1.html | 10 igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteControlServiceImpl.java | 213 ++ igds-core/src/main/java/com/ld/igds/common/CoreDeviceService.java | 9 igds-protocol-modbus/src/main/java/com/ld/igds/modbus/service/HModbusService.java | 240 ++++ igds-protocol-modbus/pom.xml | 41 igds-web/src/main/resources/static/img/aerial-5328_001.png | 0 igds-core/src/main/resources/mapper/CommonMapper.xml | 2 igds-basic/src/main/java/com/ld/igds/gas/manager/GasManager.java | 2 igds-protocol-fzzy3/src/main/java/com/ld/igds/protocol/fzzy/analysis/AnalysisGas.java | 2 /dev/null | 208 --- igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/AnalysisService.java | 173 +++ igds-web/src/main/resources/static/img/logo-5325.png | 0 igds-core/src/main/java/com/ld/igds/data/ConfigGasImg.java | 11 igds-web/src/main/resources/static/img/gas/5325/5325_001.png | 0 igds-web/pom.xml | 3 igds-web/src/main/resources/static/img/n2/5325/pfc2_b.png | 0 igds-core/src/main/java/models/igds.model.xml | 41 igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ServerUtil.java | 52 52 files changed, 2,973 insertions(+), 421 deletions(-) diff --git a/igds-basic/src/main/java/com/ld/igds/gas/manager/GasManager.java b/igds-basic/src/main/java/com/ld/igds/gas/manager/GasManager.java index 02446e1..6b758ff 100644 --- a/igds-basic/src/main/java/com/ld/igds/gas/manager/GasManager.java +++ b/igds-basic/src/main/java/com/ld/igds/gas/manager/GasManager.java @@ -261,7 +261,7 @@ // 鑾峰彇鍒嗘満淇℃伅 DeviceSer deviceSer = coreSerService.getCacheSer(param.getCompanyId(), - depotConf.getGrainSer()); + depotConf.getGasSer()); CheckGasRequest request = new CheckGasRequest(); request.setDepotId(param.getDepotId()); diff --git a/igds-core/src/main/java/com/ld/igds/common/CoreDeviceService.java b/igds-core/src/main/java/com/ld/igds/common/CoreDeviceService.java index 216fd35..df04f89 100644 --- a/igds-core/src/main/java/com/ld/igds/common/CoreDeviceService.java +++ b/igds-core/src/main/java/com/ld/igds/common/CoreDeviceService.java @@ -2,6 +2,7 @@ import java.util.List; import java.util.Map; +import java.util.Set; import com.ld.igds.models.Device; import com.ld.igds.temp.dto.TempParam; @@ -39,6 +40,14 @@ */ List<Device> getCacheDeviceBySerId(String companyId, String serId); + /** + * 鏍规嵁浠撳簱缂栫爜鑾峰彇璁惧淇℃伅 + * @param companyId + * @param depotId + * @return + */ + Set<String> getCacheDeviceSerByDepotId(String companyId, String depotId); + /** * 鏍规嵁鍒嗘満淇℃伅鑾峰彇璁惧 diff --git a/igds-core/src/main/java/com/ld/igds/common/impl/CoreDeviceServiceImpl.java b/igds-core/src/main/java/com/ld/igds/common/impl/CoreDeviceServiceImpl.java index ac4ab1b..11d32fb 100644 --- a/igds-core/src/main/java/com/ld/igds/common/impl/CoreDeviceServiceImpl.java +++ b/igds-core/src/main/java/com/ld/igds/common/impl/CoreDeviceServiceImpl.java @@ -9,6 +9,8 @@ import com.ld.igds.constant.DeviceStatus; import com.ld.igds.constant.DeviceType; +import com.ld.igds.io.request.ExeDevice; +import com.ld.igds.models.Depot; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -112,6 +114,30 @@ return list; } + @SuppressWarnings("unchecked") + @Override + public Set<String> getCacheDeviceSerByDepotId(String companyId, String depotId) { + String patten = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_LIST); + + Set<String> keys = redisUtil.keys(patten); + if (null == keys) return null; + + List<Device> list = new ArrayList<>(); + for (String key : keys) { + list.addAll((List<Device>) redisUtil.get(key)); + } + if (list.isEmpty()) { + return null; + } + Set<String> result = new HashSet<>(); + for (Device device : list) { + if(depotId.equals(device.getDepotId())){ + result.add(device.getSerId()); + } + } + return result; + } + @Override public Device getCacheDeviceById(String companyId, String id) { String key = RedisConst.buildDeviceKey(companyId, RedisConst.KEY_DEVICE, id); diff --git a/igds-core/src/main/java/com/ld/igds/data/ConfigGasImg.java b/igds-core/src/main/java/com/ld/igds/data/ConfigGasImg.java index e21e671..91b3d21 100644 --- a/igds-core/src/main/java/com/ld/igds/data/ConfigGasImg.java +++ b/igds-core/src/main/java/com/ld/igds/data/ConfigGasImg.java @@ -22,8 +22,9 @@ public class ConfigGasImg { /** - * 鍥剧墖鐨勫皝瑁呰鍒欙細浠撳簱缂栫爜.img.png --鐓х墖 - * 鍥剧墖鐨勫皝瑁呰鍒欙細鍒嗗簱缂栫爜.img.png --榛樿鐓х墖 + * gas.mapImg.5318_001.img=5318_001.png + * 鍥剧墖鐨勫皝瑁呰鍒欙細gas.mapImg.companyId_浠撳簱缂栫爜.img.png --鐓х墖 + * 鍥剧墖鐨勫皝瑁呰鍒欙細gas.mapImg.companyId_鍒嗗簱缂栫爜.img.png --榛樿鐓х墖 */ private Map<String, GasImg> mapImg; @@ -39,12 +40,16 @@ Map<String, GasImg> result = new HashMap<>(); Map<String, GasImg> all = this.getMapImg(); if (null == depotList || null == all) return result; + String companyId = depotList.get(0).getCompanyId(); GasImg temp; for (Depot d : depotList) { - temp = all.get(d.getId()); + //鍏堜粠閰嶇疆涓幏鍙� + temp = all.get(companyId + "_" + d.getId()); + if (null == temp) { temp = all.get(deptId); } + result.put(d.getId(), temp); } return result; diff --git a/igds-core/src/main/java/com/ld/igds/modbus/service/HDeviceModbusService.java b/igds-core/src/main/java/com/ld/igds/modbus/service/HDeviceModbusService.java deleted file mode 100644 index a5da293..0000000 --- a/igds-core/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-core/src/main/java/com/ld/igds/models/DepotConf.java b/igds-core/src/main/java/com/ld/igds/models/DepotConf.java index ef59d56..aee0f85 100644 --- a/igds-core/src/main/java/com/ld/igds/models/DepotConf.java +++ b/igds-core/src/main/java/com/ld/igds/models/DepotConf.java @@ -47,6 +47,14 @@ @PropertyDef(label = "姘斾綋鍒嗘満") private String gasSer; + @Column(name = "PEST_SER_", length = 40) + @PropertyDef(label = "姘斾綋鍒嗘満") + private String pestSer; + + @Column(name = "VERB_SER_", length = 40) + @PropertyDef(label = "閫氶鍒嗘満") + private String verbSer; + @Column(name = "GRAIN_FREQ_", length = 4) @PropertyDef(label = "绮儏淇濆瓨棰戠巼", description = "榛樿涓�澶╁娆�") private String grainFreq = GrainFrequence.FREQ_01.getCode(); @@ -126,7 +134,6 @@ @Column(name = "PEST_MAX_") @PropertyDef(label = "铏涓婇檺") private Double pestMax; - // 浠撳簱鍚嶇О @Transient 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 0f9aaac..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 @@ -155,7 +155,7 @@ </Children> </FieldSet> <FieldSet> - <Property name="caption">绮儏妫�娴嬮厤缃�</Property> + <Property name="caption">绮俯妫�娴嬮厤缃�</Property> <Buttons/> <Children> <AutoForm layoutConstraint="padding:5"> @@ -205,17 +205,7 @@ <AutoFormElement> <Property name="name">tempMax</Property> <Property name="property">tempMax</Property> - <Editor/> - </AutoFormElement> - <AutoFormElement> - <Property name="name">thSer</Property> - <Property name="property">thSer</Property> - <Property name="trigger">autoMappingDropDown2</Property> - <Editor/> - </AutoFormElement> - <AutoFormElement> - <Property name="name">thConf</Property> - <Property name="property">thConf</Property> + <Property name="label">绮俯涓婇檺</Property> <Editor/> </AutoFormElement> <AutoFormElement> @@ -249,6 +239,17 @@ <AutoFormElement> <Property name="name">grainFreq</Property> <Property name="property">grainFreq</Property> + <Editor/> + </AutoFormElement> + <AutoFormElement> + <Property name="name">thSer</Property> + <Property name="property">thSer</Property> + <Property name="trigger">autoMappingDropDown2</Property> + <Editor/> + </AutoFormElement> + <AutoFormElement> + <Property name="name">thConf</Property> + <Property name="property">thConf</Property> <Editor/> </AutoFormElement> <Button> @@ -313,6 +314,15 @@ <Property name="property">ph3Max</Property> <Editor/> </AutoFormElement> + <Button> + <ClientEvent name="onClick">var depotId = view.get("#dsMain.data:#").get("depotId");
 +var path = "com.ld.igds.modbus.GasModbus.d?depotId="+depotId;
 +view.get("#iframModbus").set("path",path);
 +view.get("#dialogModbus").show();</ClientEvent> + <Property name="caption">Modbus閰嶇疆</Property> + <Property name="tip">閽堝Modbus鍗忚鐨勯厤缃�</Property> + <Property name="iconClass">fa fa-refresh</Property> + </Button> </AutoForm> </Children> </FieldSet> @@ -325,6 +335,11 @@ <Property name="cols">*,*,*</Property> <Property name="labelSeparator">锛�</Property> <Property name="labelWidth">100</Property> + <AutoFormElement> + <Property name="name">pestSer</Property> + <Property name="property">pestSer</Property> + <Editor/> + </AutoFormElement> <AutoFormElement> <Property name="name">pestStart</Property> <Property name="property">pestStart</Property> @@ -340,6 +355,15 @@ <Property name="property">pestMax</Property> <Editor/> </AutoFormElement> + <Button> + <ClientEvent name="onClick">var depotId = view.get("#dsMain.data:#").get("depotId");
 +var path = "com.ld.igds.modbus.PestModbus.d?depotId="+depotId;
 +view.get("#iframModbus").set("path",path);
 +view.get("#dialogModbus").show();</ClientEvent> + <Property name="caption">Modbus閰嶇疆</Property> + <Property name="tip">閽堝Modbus鍗忚鐨勯厤缃�</Property> + <Property name="iconClass">fa fa-refresh</Property> + </Button> </AutoForm> </Children> </FieldSet> @@ -352,6 +376,11 @@ <Property name="cols">*,*,*</Property> <Property name="labelSeparator">锛�</Property> <Property name="labelWidth">100</Property> + <AutoFormElement> + <Property name="name">verbSer</Property> + <Property name="property">verbSer</Property> + <Editor/> + </AutoFormElement> <AutoFormElement> <Property name="name">esSer</Property> <Property name="property">esSer</Property> @@ -377,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-core/src/main/java/models/igds.model.xml b/igds-core/src/main/java/models/igds.model.xml index 933f79a..861700c 100644 --- a/igds-core/src/main/java/models/igds.model.xml +++ b/igds-core/src/main/java/models/igds.model.xml @@ -871,24 +871,6 @@ <Property name="dataType">Double</Property> <Property name="label">铏涓婇檺</Property> </PropertyDef> - <PropertyDef name="videoIn"> - <Property></Property> - <Property name="label">鍐呴儴瑙嗛</Property> - <Property name="mapping"> - <Property name="mapValues">${dorado.getDataProvider("securityPR#listCamera").getResult()}</Property> - <Property name="keyProperty">id</Property> - <Property name="valueProperty">name</Property> - </Property> - </PropertyDef> - <PropertyDef name="quantitySer"> - <Property></Property> - <Property name="label">鏁伴噺妫�娴嬪垎鏈�</Property> - <Property name="mapping"> - <Property name="mapValues">${dorado.getDataProvider("deviceSerPR2#getSerCacheByType").getResult("99")}</Property> - <Property name="keyProperty">id</Property> - <Property name="valueProperty">name</Property> - </Property> - </PropertyDef> <PropertyDef name="thSer"> <Property></Property> <Property name="label">娓╂箍搴﹀垎鏈�</Property> @@ -957,6 +939,29 @@ <PropertyDef name="gasSer"> <Property></Property> <Property name="label">姘斾綋鍒嗘満</Property> + <Property name="mapping"> + <Property name="mapValues">${dorado.getDataProvider("deviceSerPR#getAllSerCache").getResult()}</Property> + <Property name="keyProperty">id</Property> + <Property name="valueProperty">name</Property> + </Property> + </PropertyDef> + <PropertyDef name="pestSer"> + <Property/> + <Property name="label">姘斾綋鍒嗘満</Property> + <Property name="mapping"> + <Property name="mapValues">${dorado.getDataProvider("deviceSerPR#getAllSerCache").getResult()}</Property> + <Property name="keyProperty">id</Property> + <Property name="valueProperty">name</Property> + </Property> + </PropertyDef> + <PropertyDef name="verbSer"> + <Property/> + <Property name="label">閫氶鍒嗘満</Property> + <Property name="mapping"> + <Property name="mapValues">${dorado.getDataProvider("deviceSerPR#getAllSerCache").getResult()}</Property> + <Property name="keyProperty">id</Property> + <Property name="valueProperty">name</Property> + </Property> </PropertyDef> </DataType> <DataType name="dtDicSlogan"> diff --git a/igds-core/src/main/resources/mapper/CommonMapper.xml b/igds-core/src/main/resources/mapper/CommonMapper.xml index 11d7a80..a31668c 100644 --- a/igds-core/src/main/resources/mapper/CommonMapper.xml +++ b/igds-core/src/main/resources/mapper/CommonMapper.xml @@ -212,6 +212,8 @@ <if test="data.gasEnd != null ">GAS_END_ = #{data.gasEnd},</if> <if test="data.pestStart != null ">PEST_START_ = #{data.pestStart},</if> <if test="data.pestEnd != null ">PEST_END_ = #{data.pestEnd},</if> + <if test="data.pestSer != null ">PEST_SER_ = #{pestSer},</if> + <if test="data.verbSer != null ">VERB_SER_ = #{verbSer},</if> </set> where COMPANY_ID_ = #{data.companyId} AND DEPOT_ID_ = #{data.depotId} </update> 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-n2/src/main/java/com/ld/igds/n2/controller/N2Controller.java b/igds-n2/src/main/java/com/ld/igds/n2/controller/N2Controller.java index 506e3f4..bc10d82 100644 --- a/igds-n2/src/main/java/com/ld/igds/n2/controller/N2Controller.java +++ b/igds-n2/src/main/java/com/ld/igds/n2/controller/N2Controller.java @@ -80,7 +80,7 @@ if (DepotType.TYPE_02.getCode().equals(depotType) || DepotType.TYPE_04.getCode().equals(depotType)) { view.setViewName("admin/n2/n2-hand2"); } else { - if ("5013".equals(user.getCompanyId()) || "5016".equals(user.getCompanyId())) { + if ("5013".equals(user.getCompanyId()) || "5016".equals(user.getCompanyId()) || "5325".equals(user.getCompanyId())) { view.setViewName("admin/n2/n2-hand-5013"); } else { view.setViewName("admin/n2/n2-hand1"); @@ -128,7 +128,7 @@ view.addObject("n2ImgMap", n2ImgMap); view.setViewName("admin/n2/n2-hand1"); - if ("5013".equals(user.getCompanyId()) || "5016".equals(user.getCompanyId())) { + if ("5013".equals(user.getCompanyId()) || "5016".equals(user.getCompanyId()) || "5325".equals(user.getCompanyId())) { view.setViewName("admin/n2/n2-hand-5013"); } return view; diff --git a/igds-protocol-fzzy3/src/main/java/com/ld/igds/protocol/fzzy/analysis/AnalysisGas.java b/igds-protocol-fzzy3/src/main/java/com/ld/igds/protocol/fzzy/analysis/AnalysisGas.java index b62e2ba..a3274b1 100644 --- a/igds-protocol-fzzy3/src/main/java/com/ld/igds/protocol/fzzy/analysis/AnalysisGas.java +++ b/igds-protocol-fzzy3/src/main/java/com/ld/igds/protocol/fzzy/analysis/AnalysisGas.java @@ -48,8 +48,6 @@ private CoreGasService gasService; @Autowired private CoreCommonService commonService; - @Autowired - private ExeOrderService exeOrderService; @Autowired private NotifyWebInvoker notifyInvoker; diff --git a/igds-protocol-modbus/.rules b/igds-protocol-modbus/.rules new file mode 100644 index 0000000..4f44b30 --- /dev/null +++ b/igds-protocol-modbus/.rules @@ -0,0 +1,1178 @@ +<?xml version="1.0" encoding="UTF-8"?> +<RuleSet version="1.1"><PackageInfos> +<PackageInfo name="dorado-core" version="7.6.0.2.190128.1750"/> +<PackageInfo name="bdf2-orm" version="2.1.0"/> +<PackageInfo name="bdf2-core" version="2.0.9"/> +<PackageInfo name="dorado-uploader" version="1.0.20-SNAPSHOT"/> +<PackageInfo name="bdf2-job" version="2.0.5-SNAPSHOT"/> +<PackageInfo name="dorado-intro" version="0.2.1.140715.2255"/> +<PackageInfo name="bdf2-swfviewer" version="2.0.6-SNAPSHOT"/> +<PackageInfo name="bdf2-export" version="2.0.8"/> +<PackageInfo name="dorado-vidor"/></PackageInfos><Rule name="Auxiliary"><Children><Child rule="Import" name="Import"></Child><Child rule="GroupStart" name="GroupStart"></Child><Child rule="GroupEnd" name="GroupEnd"></Child><Child rule="PlaceHolder" name="PlaceHolder"></Child><Child rule="PlaceHolderStart" name="PlaceHolderStart"></Child><Child rule="PlaceHolderEnd" name="PlaceHolderEnd"></Child></Children></Rule><Rule name="Import" scope="public" sortFactor="9001" category="Auxiliary" icon="/com/bstek/dorado/idesupport/icons/Import.png"><PrimitiveProps> +<Prop name="id"/> +<Prop name="src"/></PrimitiveProps></Rule><Rule name="GroupStart" scope="public" sortFactor="9002" category="Auxiliary" icon="/com/bstek/dorado/idesupport/icons/GroupStart.png"><PrimitiveProps> +<Prop name="id"/></PrimitiveProps></Rule><Rule name="GroupEnd" scope="public" sortFactor="9003" category="Auxiliary" icon="/com/bstek/dorado/idesupport/icons/GroupEnd.png"></Rule><Rule name="PlaceHolder" scope="public" sortFactor="9004" category="Auxiliary" icon="/com/bstek/dorado/idesupport/icons/PlaceHolder.png"><PrimitiveProps> +<Prop name="id"/></PrimitiveProps></Rule><Rule name="PlaceHolderStart" parents="PlaceHolder" scope="public" sortFactor="9005" category="Auxiliary" icon="/com/bstek/dorado/idesupport/icons/PlaceHolderStart.png"></Rule><Rule name="PlaceHolderEnd" scope="public" sortFactor="9006" category="Auxiliary" icon="/com/bstek/dorado/idesupport/icons/PlaceHolderEnd.png"></Rule><Rule name="Model" icon="/com/bstek/dorado/view/manager/Model.png"><Children><Child rule="AbstractDataType" name="DataType" aggregated="true"></Child><Child rule="AbstractDataProvider" name="DataProvider" aggregated="true"></Child><Child rule="AbstractDataResolver" name="DataResolver" aggregated="true"></Child></Children></Rule><Rule name="AbstractDataType" abstract="true" nodeName="DataType" type="com.bstek.dorado.data.type.AbstractDataType"><PrimitiveProps> +<Prop name="name"/></PrimitiveProps><Props> +<Prop name="creationType" type="java.lang.Class"/> +<Prop name="matchType" type="java.lang.Class"/><Prop name="metaData" type="java.util.Map" compositeType="Open"></Prop> +<Prop name="tags"/></Props></Rule><Rule name="AbstractDataProvider" abstract="true" nodeName="DataProvider" type="com.bstek.dorado.data.provider.AbstractDataProvider"><PrimitiveProps> +<Prop name="impl"/> +<Prop name="parent"/> +<Prop name="scope" enumValues="instant,thread,singleton,session,request"/> +<Prop name="listener"/> +<Prop name="overwrite" type="boolean"/> +<Prop name="name"/></PrimitiveProps><Props> +<Prop name="interceptor"/><Prop name="metaData" type="java.util.Map" compositeType="Open"></Prop> +<Prop name="parameter" editor="pojo" type="java.lang.Object"/></Props></Rule><Rule name="AbstractDataResolver" abstract="true" nodeName="DataResolver" type="com.bstek.dorado.data.resolver.AbstractDataResolver"><PrimitiveProps> +<Prop name="impl"/> +<Prop name="parent"/> +<Prop name="scope" enumValues="instant,thread,singleton,session,request"/> +<Prop name="listener"/> +<Prop name="overwrite" type="boolean"/> +<Prop name="name"/></PrimitiveProps><Props> +<Prop name="interceptor"/><Prop name="metaData" type="java.util.Map" compositeType="Open"></Prop> +<Prop name="parameter" type="java.lang.Object"/></Props></Rule><Rule name="ViewConfig" label="ViewConfig" type="com.bstek.dorado.view.manager.ViewConfig" icon="/com/bstek/dorado/view/manager/ViewConfig.png"><PrimitiveProps> +<Prop name="listener"/> +<Prop name="template"/></PrimitiveProps><Props><Prop name="metaData" type="java.util.Map" compositeType="Open"></Prop> +<Prop name="scope" defaultValue="thread" enumValues="instant,thread,singleton,session,request"/></Props><Children><Child name="Arguments"><Rule name="Arguments" nodeName="Arguments" icon="/com/bstek/dorado/view/manager/Arguments.png"><Children><Child name="Argument" aggregated="true"><Rule name="Argument" nodeName="Argument" icon="/com/bstek/dorado/view/manager/Argument.png"><PrimitiveProps> +<Prop name="name"/></PrimitiveProps><Props> +<Prop name="value" type="java.lang.Object"/></Props></Rule></Child></Children></Rule></Child><Child name="Context"><Rule name="Context" nodeName="Context" icon="/com/bstek/dorado/view/manager/ViewContext.png"><Children><Child name="Attribute" aggregated="true"><Rule name="Attribute" nodeName="Attribute" icon="/com/bstek/dorado/view/manager/Attribute.png"><PrimitiveProps> +<Prop name="name"/></PrimitiveProps><Props> +<Prop name="value" type="java.lang.Object"/></Props></Rule></Child></Children></Rule></Child><Child rule="Model" name="Model"></Child><Child rule="View" name="View"></Child></Children></Rule><Rule name="LayoutHolder"><Children><Child rule="AnchorLayout" name="anchor"></Child><Child rule="DockLayout" name="dock"></Child><Child rule="HboxLayout" name="hbox"></Child><Child rule="VboxLayout" name="vbox"></Child><Child rule="FormLayout" name="form"></Child><Child rule="NativeLayout" name="native"></Child></Children></Rule><Rule name="View" parents="Container" abstract="true" type="com.bstek.dorado.view.View" scope="private" clientTypes="desktop"><PrimitiveProps> +<Prop name="listener"/></PrimitiveProps><Props><Prop name="cache" type="com.bstek.dorado.view.ViewCache" compositeType="Fixed"> +<Prop name="maxAge" type="long"/> +<Prop name="mode" enumValues="none,clientSide"/></Prop> +<Prop name="javaScriptFile"/> +<Prop name="packages"/> +<Prop name="pageTemplate"/> +<Prop name="pageUri"/> +<Prop name="renderMode" defaultValue="onCreate" enumValues="onCreate,onDataLoaded,manual"/> +<Prop name="skin"/> +<Prop name="styleSheetFile"/> +<Prop name="title" highlight="1"/></Props><ClientEvents> +<ClientEvent name="onLoadData" parameters="self,arg"/> +<ClientEvent name="onComponentRegistered" parameters="self,arg"/> +<ClientEvent name="onComponentUnregistered" parameters="self,arg"/></ClientEvents><Children><Child rule="Component" name="Children" aggregated="true"></Child></Children></Rule><Rule name="DataType" parents="EntityDataTypeSupport" label="DataType" type="com.bstek.dorado.data.type.DefaultEntityDataType" scope="public" sortFactor="1" robots="datatype-reflection|鑷姩鍒涘缓PropertyDefs" icon="/com/bstek/dorado/data/type/DefaultEntityDataType.png" reserve="default"><Children><Child rule="BasePropertyDef" name="PropertyDef" aggregated="true"></Child><Child rule="Reference" name="Reference" aggregated="true"></Child></Children></Rule><Rule name="NonAggregationDataType" parents="AbstractDataType" abstract="true" type="com.bstek.dorado.data.type.NonAggregationDataType"></Rule><Rule name="EntityDataTypeSupport" parents="NonAggregationDataType" abstract="true" nodeName="DataType" type="com.bstek.dorado.data.type.EntityDataTypeSupport"><PrimitiveProps> +<Prop name="impl"/> +<Prop name="parent"/> +<Prop name="listener"/> +<Prop name="overwrite" type="boolean"/></PrimitiveProps><Props> +<Prop name="cachable" type="java.lang.Boolean"/> +<Prop name="acceptUnknownProperty" type="boolean"/> +<Prop name="acceptValidationState" defaultValue="ok" enumValues="info,ok,warn,error"/> +<Prop name="autoCreatePropertyDefs" type="boolean"/> +<Prop name="defaultDisplayProperty"/> +<Prop name="userData" editor="any" type="java.lang.Object"/></Props><ClientEvents> +<ClientEvent name="onEntityToText" parameters="self,arg"/> +<ClientEvent name="onAttributeChange" parameters="self,arg"/> +<ClientEvent name="beforeInsert" parameters="self,arg"/> +<ClientEvent name="beforeDataChange" parameters="self,arg"/> +<ClientEvent name="onDataChange" parameters="self,arg"/> +<ClientEvent name="beforeCurrentChange" parameters="self,arg"/> +<ClientEvent name="onCurrentChange" parameters="self,arg"/> +<ClientEvent name="beforeStateChange" parameters="self,arg"/> +<ClientEvent name="beforeRemove" parameters="self,arg"/> +<ClientEvent name="onMessageChange" parameters="self,arg"/> +<ClientEvent name="onStateChange" parameters="self,arg"/> +<ClientEvent name="onRemove" parameters="self,arg"/> +<ClientEvent name="onEntityLoad" parameters="self,arg"/> +<ClientEvent name="onInsert" parameters="self,arg"/></ClientEvents></Rule><Rule name="BasePropertyDef" parents="com.bstek.dorado.data.type.property.PropertyDefSupport" label="PropertyDef" nodeName="PropertyDef" type="com.bstek.dorado.data.type.property.BasePropertyDef" scope="protected" icon="/com/bstek/dorado/data/type/property/BasePropertyDef.png"><Props> +<Prop name="propertyPath"/></Props></Rule><Rule name="PropertyDef" abstract="true" type="com.bstek.dorado.data.type.property.PropertyDef"><PrimitiveProps> +<Prop name="name"/></PrimitiveProps><Props> +<Prop name="acceptUnknownMapKey" type="boolean"/> +<Prop name="dataType" highlight="1" type="com.bstek.dorado.data.type.DataType"/> +<Prop name="defaultValue" type="java.lang.Object"/> +<Prop name="displayFormat"/> +<Prop name="ignored" type="boolean"/> +<Prop name="label" highlight="1"/><Prop name="mapping" type="com.bstek.dorado.data.type.property.Mapping" compositeType="Fixed"> +<Prop name="keyProperty"/> +<Prop name="mapValues" editor="collection[pojo]" type="java.lang.Object"/> +<Prop name="valueProperty"/></Prop><Prop name="metaData" type="java.util.Map" compositeType="Open"></Prop> +<Prop name="readOnly" type="boolean"/> +<Prop name="required" type="boolean"/> +<Prop name="submittable" defaultValue="true" type="boolean"/> +<Prop name="tags"/> +<Prop name="userData" editor="any" type="java.lang.Object"/> +<Prop name="visible" defaultValue="true" type="boolean"/></Props><ClientEvents> +<ClientEvent name="onGet" parameters="self,arg"/> +<ClientEvent name="onSet" parameters="self,arg"/> +<ClientEvent name="onValidate" parameters="self,arg"/> +<ClientEvent name="onGetText" parameters="self,arg"/></ClientEvents><Children><Child rule="Validator" name="Validators" aggregated="true"></Child></Children></Rule><Rule name="Validator" abstract="true" nodeName="Validator" type="com.bstek.dorado.data.type.validator.Validator" icon="/com/bstek/dorado/view/type/property/validator/Validator.png"><PrimitiveProps> +<Prop name="name"/></PrimitiveProps></Rule><Rule name="Reference" parents="LazyPropertyDef" label="Reference" type="com.bstek.dorado.data.type.property.Reference" icon="/com/bstek/dorado/data/type/property/Reference.png"><Props> +<Prop name="activeOnNewEntity" type="boolean"/> +<Prop name="dataProvider" highlight="1" type="com.bstek.dorado.data.provider.DataProvider"/> +<Prop name="pageSize" type="int"/> +<Prop name="parameter" highlight="1" editor="pojo" type="java.lang.Object"/></Props><ClientEvents> +<ClientEvent name="beforeLoadData" parameters="self,arg"/> +<ClientEvent name="onLoadData" parameters="self,arg"/></ClientEvents></Rule><Rule name="PropertyDefSupport" parents="PropertyDef" abstract="true" type="com.bstek.dorado.data.type.property.PropertyDefSupport"></Rule><Rule name="LazyPropertyDef" parents="PropertyDefSupport" abstract="true" type="com.bstek.dorado.data.type.property.LazyPropertyDef"><Props> +<Prop name="activeAtClient" defaultValue="true" type="boolean"/> +<Prop name="cacheMode" enumValues="noCache,serverSide,clientSide,bothSides"/></Props></Rule><Rule name="com.bstek.dorado.data.type.property.PropertyDefSupport" parents="PropertyDef" abstract="true" type="com.bstek.dorado.data.type.property.PropertyDefSupport"></Rule><Rule name="DirectDataProvider" parents="AbstractDataProvider" label="DirectDataProvider" type="com.bstek.dorado.data.provider.DirectDataProvider" scope="public" sortFactor="2" icon="/com/bstek/dorado/data/provider/DirectDataProvider.png" reserve="direct"><PrimitiveProps> +<Prop name="type" defaultValue="direct" fixed="true" visible="false"/></PrimitiveProps><Props> +<Prop name="result" editor="pojo" type="java.lang.Object"/></Props></Rule><Rule name="DirectDataResolver" parents="AbstractDataResolver" label="DirectDataResolver" type="com.bstek.dorado.data.resolver.DirectDataResolver" scope="public" sortFactor="3" icon="/com/bstek/dorado/data/resolver/DirectDataResolver.png" reserve="direct"><PrimitiveProps> +<Prop name="type" defaultValue="direct" fixed="true" visible="false"/></PrimitiveProps></Rule><Rule name="AbstractValidator" parents="Validator" abstract="true" nodeName="Validator" type="com.bstek.dorado.view.type.property.validator.AbstractValidator" icon="/com/bstek/dorado/view/type/property/validator/Validator.png"><Props> +<Prop name="name"/> +<Prop name="defaultResultState" defaultValue="error" enumValues="info,ok,warn,error"/> +<Prop name="revalidateOldValue" defaultValue="true" type="boolean"/> +<Prop name="runAt" enumValues="server,client,both"/></Props></Rule><Rule name="RequiredValidator" parents="BaseValidator" label="RequiredValidator" type="com.bstek.dorado.view.type.property.validator.RequiredValidator" scope="public" sortFactor="4" reserve="required"><PrimitiveProps> +<Prop name="type" defaultValue="required" fixed="true" visible="false"/></PrimitiveProps><Props> +<Prop name="acceptZeroOrFalse" type="boolean"/> +<Prop name="trimBeforeValid" defaultValue="true" type="boolean"/></Props></Rule><Rule name="BaseValidator" parents="AbstractValidator" abstract="true" type="com.bstek.dorado.view.type.property.validator.BaseValidator"><Props> +<Prop name="resultMessage"/></Props></Rule><Rule name="LengthValidator" parents="BaseValidator" label="LengthValidator" type="com.bstek.dorado.view.type.property.validator.LengthValidator" scope="public" sortFactor="5" reserve="length"><PrimitiveProps> +<Prop name="type" defaultValue="length" fixed="true" visible="false"/></PrimitiveProps><Props> +<Prop name="maxLength" defaultValue="-1" type="int"/> +<Prop name="minLength" defaultValue="-1" type="int"/></Props></Rule><Rule name="CharLengthValidator" parents="BaseValidator" label="CharLengthValidator" type="com.bstek.dorado.view.type.property.validator.CharLengthValidator" scope="public" sortFactor="6" reserve="charLength"><PrimitiveProps> +<Prop name="type" defaultValue="charLength" fixed="true" visible="false"/></PrimitiveProps><Props> +<Prop name="maxLength" type="int"/> +<Prop name="minLength" type="int"/></Props></Rule><Rule name="RangeValidator" parents="BaseValidator" label="RangeValidator" type="com.bstek.dorado.view.type.property.validator.RangeValidator" scope="public" sortFactor="7" reserve="range"><PrimitiveProps> +<Prop name="type" defaultValue="range" fixed="true" visible="false"/></PrimitiveProps><Props> +<Prop name="maxValue" defaultValue="-1" type="double"/> +<Prop name="maxValueValidateMode" defaultValue="ignore" enumValues="allowEquals,notAllowEquals,ignore"/> +<Prop name="minValue" defaultValue="-1" type="double"/> +<Prop name="minValueValidateMode" defaultValue="ignore" enumValues="allowEquals,notAllowEquals,ignore"/></Props></Rule><Rule name="EnumValidator" parents="BaseValidator" label="EnumValidator" type="com.bstek.dorado.view.type.property.validator.EnumValidator" scope="public" sortFactor="8" reserve="enum"><PrimitiveProps> +<Prop name="type" defaultValue="enum" fixed="true" visible="false"/></PrimitiveProps><Props> +<Prop name="enumValues" highlight="1" editor="collection[value]" type="java.util.List"/></Props></Rule><Rule name="RegExpValidator" parents="BaseValidator" label="RegExpValidator" type="com.bstek.dorado.view.type.property.validator.RegExpValidator" scope="public" sortFactor="9" reserve="regExp"><PrimitiveProps> +<Prop name="type" defaultValue="regExp" fixed="true" visible="false"/></PrimitiveProps><Props> +<Prop name="blackRegExp"/> +<Prop name="validateMode" enumValues="whiteBlack,blackWhite"/> +<Prop name="whiteRegExp"/></Props></Rule><Rule name="AjaxValidator" parents="AbstractAjaxValidator" label="AjaxValidator" type="com.bstek.dorado.view.type.property.validator.AjaxValidator" scope="public" sortFactor="10" reserve="ajax"><PrimitiveProps> +<Prop name="type" defaultValue="ajax" fixed="true" visible="false"/></PrimitiveProps><Props> +<Prop name="ajaxAction" reference="AjaxAction:id"/> +<Prop name="service" highlight="1"/></Props><ClientEvents> +<ClientEvent name="beforeExecute" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractAjaxValidator" parents="AbstractValidator" abstract="true" type="com.bstek.dorado.view.type.property.validator.AbstractAjaxValidator"><Props> +<Prop name="async" defaultValue="true" type="boolean"/> +<Prop name="executingMessage"/></Props></Rule><Rule name="CustomValidator" parents="AbstractValidator" label="CustomValidator" type="com.bstek.dorado.view.type.property.validator.CustomValidator" scope="public" sortFactor="11" reserve="custom"><PrimitiveProps> +<Prop name="type" defaultValue="custom" fixed="true" visible="false"/></PrimitiveProps><ClientEvents> +<ClientEvent name="onValidate" parameters="self,arg"/></ClientEvents></Rule><Rule name="AnchorLayout" parents="Layout" label="AnchorLayout" nodeName="anchor" type="com.bstek.dorado.view.widget.layout.AnchorLayout" sortFactor="1001"></Rule><Rule name="Layout" abstract="true" type="com.bstek.dorado.view.widget.layout.Layout"><Props> +<Prop name="className"/> +<Prop name="padding" type="int"/></Props></Rule><Rule name="AnchorLayoutConstraint" parents="LayoutConstraintSupport" label="AnchorLayoutConstraint" type="com.bstek.dorado.view.widget.layout.AnchorLayoutConstraint"><Props> +<Prop name="anchorBottom" enumValues="auto,none,container,previous"/> +<Prop name="anchorLeft" enumValues="auto,none,container,previous"/> +<Prop name="anchorRight" enumValues="auto,none,container,previous"/> +<Prop name="anchorTop" enumValues="auto,none,container,previous"/> +<Prop name="bottom"/> +<Prop name="heightOffset" type="int"/> +<Prop name="left"/> +<Prop name="leftOffset" type="int"/> +<Prop name="right"/> +<Prop name="top"/> +<Prop name="topOffset" type="int"/> +<Prop name="widthOffset" type="int"/></Props></Rule><Rule name="LayoutConstraintSupport" abstract="true" type="com.bstek.dorado.view.widget.layout.LayoutConstraintSupport"><Props> +<Prop name="padding" type="int"/></Props></Rule><Rule name="DockLayout" parents="Layout" label="DockLayout" nodeName="dock" type="com.bstek.dorado.view.widget.layout.DockLayout" sortFactor="1002"><Props> +<Prop name="regionPadding" type="int"/></Props></Rule><Rule name="DockLayoutConstraint" parents="LayoutConstraintSupport" label="DockLayoutConstraint" type="com.bstek.dorado.view.widget.layout.DockLayoutConstraint"><Props> +<Prop name="type" highlight="1" enumValues="left,top,right,bottom,center"/></Props></Rule><Rule name="HboxLayout" parents="AbstractBoxLayout" label="HBoxLayout" nodeName="hbox" type="com.bstek.dorado.view.widget.layout.HBoxLayout" sortFactor="1003"><Props> +<Prop name="align" defaultValue="center" enumValues="top,center,bottom"/></Props></Rule><Rule name="AbstractBoxLayout" parents="Layout" abstract="true" type="com.bstek.dorado.view.widget.layout.AbstractBoxLayout"><Props> +<Prop name="pack" defaultValue="start" enumValues="start,center,end"/> +<Prop name="padding" defaultValue="2" type="int"/> +<Prop name="regionPadding" defaultValue="2" type="int"/> +<Prop name="stretch" defaultValue="true" type="boolean"/></Props></Rule><Rule name="HboxLayoutConstraint" parents="LayoutConstraintSupport" label="HBoxLayoutConstraintSupport" type="com.bstek.dorado.view.widget.layout.HBoxLayoutConstraintSupport"><Props> +<Prop name="align" defaultValue="center" enumValues="top,center,bottom"/></Props></Rule><Rule name="VboxLayout" parents="AbstractBoxLayout" label="VBoxLayout" nodeName="vbox" type="com.bstek.dorado.view.widget.layout.VBoxLayout" sortFactor="1004"><Props> +<Prop name="align" defaultValue="left" enumValues="left,center,right"/> +<Prop name="lazyRenderChild" type="boolean"/></Props></Rule><Rule name="VboxLayoutConstraint" parents="LayoutConstraintSupport" label="VBoxLayoutConstraintSupport" type="com.bstek.dorado.view.widget.layout.VBoxLayoutConstraintSupport"><Props> +<Prop name="align" defaultValue="left" enumValues="left,center,right"/></Props></Rule><Rule name="FormLayout" parents="Layout" label="FormLayout" nodeName="form" type="com.bstek.dorado.view.widget.layout.FormLayout" sortFactor="1005"><Props> +<Prop name="colPadding" defaultValue="6" type="int"/> +<Prop name="cols" highlight="1"/> +<Prop name="padding" defaultValue="8" type="int"/> +<Prop name="rowHeight" type="int"/> +<Prop name="rowPadding" defaultValue="6" type="int"/> +<Prop name="stretchWidth" type="boolean"/></Props></Rule><Rule name="FormLayoutConstraint" parents="LayoutConstraintSupport" label="FormLayoutConstraint" type="com.bstek.dorado.view.widget.layout.FormLayoutConstraint"><Props> +<Prop name="align" defaultValue="left" enumValues="left,center,right"/> +<Prop name="colSpan" type="int"/> +<Prop name="rowSpan" type="int"/> +<Prop name="vAlign" defaultValue="top" enumValues="top,center,bottom"/></Props></Rule><Rule name="NativeLayout" parents="Layout" label="NativeLayout" nodeName="native" type="com.bstek.dorado.view.widget.layout.NativeLayout" sortFactor="1006"><Props> +<Prop name="lazyRenderChild" type="boolean"/> +<Prop name="style"/></Props></Rule><Rule name="NativeLayoutConstraint" parents="HashMap" label="CommonLayoutConstraint" type="com.bstek.dorado.view.widget.layout.CommonLayoutConstraint"></Rule><Rule name="AbstractMap" abstract="true" type="java.util.AbstractMap"></Rule><Rule name="HashMap" parents="AbstractMap" label="HashMap" type="java.util.HashMap"></Rule><Rule name="DataSet" parents="Component" label="DataSet" nodeName="DataSet" type="com.bstek.dorado.view.widget.data.DataSet" sortFactor="2001" category="General" icon="/com/bstek/dorado/view/widget/data/DataSet.png" autoGenerateId="true" clientTypes="desktop,touch"><PrimitiveProps> +<Prop name="listener"/></PrimitiveProps><Props> +<Prop name="cacheable" type="boolean"/> +<Prop name="dataProvider" highlight="1" type="com.bstek.dorado.data.provider.DataProvider"/> +<Prop name="dataType" highlight="1" type="com.bstek.dorado.data.type.DataType"/> +<Prop name="loadMode" defaultValue="lazy" enumValues="preload,onCreate,onReady,lazy,manual"/> +<Prop name="pageSize" type="int"/> +<Prop name="parameter" highlight="1" editor="any" type="java.lang.Object"/> +<Prop name="readOnly" type="boolean"/></Props><ClientEvents> +<ClientEvent name="onLoadData" parameters="self,arg"/> +<ClientEvent name="beforeLoadData" parameters="self,arg"/> +<ClientEvent name="onDataLoad" parameters="self,arg" deprecated="true"/></ClientEvents></Rule><Rule name="Control" parents="com.bstek.dorado.view.widget.Control" label="Control" nodeName="Control" type="com.bstek.dorado.view.widget.DefaultControl" sortFactor="2002" category="General" clientTypes="desktop,touch"></Rule><Rule name="Container" parents="com.bstek.dorado.view.widget.Control" label="Container" type="com.bstek.dorado.view.widget.Container" sortFactor="2003" category="General" icon="/com/bstek/dorado/view/widget/Container.png" clientTypes="desktop,touch"><PrimitiveProps> +<Prop name="listener"/></PrimitiveProps><Props> +<Prop name="containerUi" defaultValue="default" enumValues="default,optional1"/> +<Prop name="contentOverflow" enumValues="visible,hidden,scroll,auto"/> +<Prop name="contentOverflowX" enumValues="visible,hidden,scroll,auto"/> +<Prop name="contentOverflowY" enumValues="visible,hidden,scroll,auto"/> +<Prop name="layout" visible="false" type="com.bstek.dorado.view.widget.layout.Layout"/></Props><Children><Child rule="Component" name="Children" aggregated="true"></Child></Children></Rule><Rule name="HtmlContainer" parents="Container" label="HtmlContainer" type="com.bstek.dorado.view.widget.HtmlContainer" sortFactor="2004" category="General" icon="/com/bstek/dorado/view/widget/HtmlContainer.png" clientTypes="desktop,touch"><Props> +<Prop name="containerExpression"/> +<Prop name="content" editor="multiLines"/> +<Prop name="contentFile"/></Props></Rule><Rule name="SubViewHolder" parents="com.bstek.dorado.view.widget.Control" label="SubViewHolder" type="com.bstek.dorado.view.widget.SubViewHolder" sortFactor="2005" category="General" icon="/com/bstek/dorado/view/widget/SubViewHolder.png" clientTypes="desktop,touch"><Props><Prop name="context" type="java.util.Map" compositeType="Open"></Prop> +<Prop name="loadMode" enumValues="preload,lazy,manual"/> +<Prop name="subView"/></Props><ClientEvents> +<ClientEvent name="beforeLoad" parameters="self,arg"/> +<ClientEvent name="onLoad" parameters="self,arg"/> +<ClientEvent name="onLoadFailure" parameters="self,arg"/></ClientEvents></Rule><Rule name="Action" parents="Component" label="Action" type="com.bstek.dorado.view.widget.action.Action" sortFactor="2006" category="Action" icon="/com/bstek/dorado/view/widget/action/Action.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> +<Prop name="caption"/> +<Prop name="confirmMessage"/> +<Prop name="disabled" type="boolean"/> +<Prop name="hotkey" enumValues="f1,f2,ctrl+s,alt+s,shift+s,ctrl+alt+shift+s,return,space,backspace,left,right,up,down"/> +<Prop name="icon"/> +<Prop name="iconClass"/> +<Prop name="parameter" editor="any" type="java.lang.Object"/> +<Prop name="successMessage"/> +<Prop name="tip"/></Props><ClientEvents> +<ClientEvent name="onExecute" parameters="self,arg"/> +<ClientEvent name="beforeExecute" parameters="self,arg"/> +<ClientEvent name="onFailure" parameters="self,arg"/> +<ClientEvent name="onSuccess" parameters="self,arg"/></ClientEvents></Rule><Rule name="AjaxAction" parents="AsyncAction" label="AjaxAction" type="com.bstek.dorado.view.widget.action.AjaxAction" sortFactor="2007" category="Action" icon="/com/bstek/dorado/view/widget/action/AjaxAction.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> +<Prop name="batchable" defaultValue="true" type="boolean"/> +<Prop name="service" highlight="1"/> +<Prop name="supportsEntity" defaultValue="true" type="boolean"/> +<Prop name="timeout" type="long"/></Props></Rule><Rule name="UpdateAction" parents="AsyncAction" label="UpdateAction" type="com.bstek.dorado.view.widget.action.UpdateAction" sortFactor="2008" category="Action" icon="/com/bstek/dorado/view/widget/action/UpdateAction.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> +<Prop name="alwaysExecute" type="boolean"/> +<Prop name="dataResolver" highlight="1" type="com.bstek.dorado.data.resolver.DataResolver"/> +<Prop name="executingMessage"/></Props><ClientEvents> +<ClientEvent name="onGetUpdateData" parameters="self,arg"/></ClientEvents><Children><Child rule="UpdateItem" name="UpdateItems" aggregated="true"></Child></Children></Rule><Rule name="FormSubmitAction" parents="Action" label="FormSubmitAction" type="com.bstek.dorado.view.widget.action.FormSubmitAction" sortFactor="2009" category="Action" icon="/com/bstek/dorado/view/widget/action/FormSubmitAction.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> +<Prop name="action"/> +<Prop name="method" defaultValue="post" enumValues="post,get"/> +<Prop name="target"/></Props></Rule><Rule name="LongTask" parents="Action" label="LongTask" type="com.bstek.dorado.view.widget.action.LongTask" sortFactor="2010" category="Action" autoGenerateId="true" clientTypes="desktop,touch"><Props> +<Prop name="appearence" defaultValue="daemonTask" enumValues="none,daemonTask,mainTask"/> +<Prop name="disableOnActive" defaultValue="true" type="boolean"/> +<Prop name="taskName" highlight="1"/></Props><ClientEvents> +<ClientEvent name="onTaskScheduled" parameters="self,arg"/> +<ClientEvent name="onTaskEnd" parameters="self,arg"/> +<ClientEvent name="onLog" parameters="self,arg"/> +<ClientEvent name="onStateChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="Button" parents="AbstractButton" label="Button" type="com.bstek.dorado.view.widget.base.Button" sortFactor="2011" category="General" icon="/com/bstek/dorado/view/widget/base/Button.png" clientTypes="desktop"><Props> +<Prop name="caption" highlight="1"/> +<Prop name="height" visible="false"/> +<Prop name="icon"/> +<Prop name="iconClass"/> +<Prop name="showTrigger" type="boolean"/> +<Prop name="splitButton" type="boolean"/> +<Prop name="triggerToggled" type="boolean"/></Props><ClientEvents> +<ClientEvent name="onTriggerClick" parameters="self,arg"/></ClientEvents></Rule><Rule name="SimpleButton" parents="AbstractButton" label="SimpleButton" type="com.bstek.dorado.view.widget.base.SimpleButton" sortFactor="2012" category="General" icon="/com/bstek/dorado/view/widget/base/SimpleButton.png" clientTypes="desktop,touch"><Props> +<Prop name="disabledClassName"/> +<Prop name="hoverClassName"/> +<Prop name="mouseDownClassName"/> +<Prop name="toggledClassName"/></Props></Rule><Rule name="SimpleIconButton" parents="SimpleButton" label="SimpleIconButton" type="com.bstek.dorado.view.widget.base.SimpleIconButton" sortFactor="2013" category="General" icon="/com/bstek/dorado/view/widget/base/SimpleIconButton.png" clientTypes="desktop,touch"><Props> +<Prop name="icon" highlight="1"/> +<Prop name="iconClass"/> +<Prop name="showTrigger" type="boolean"/></Props></Rule><Rule name="Panel" parents="AbstractPanel" label="Panel" type="com.bstek.dorado.view.widget.base.Panel" sortFactor="2014" category="General" icon="/com/bstek/dorado/view/widget/base/Panel.png" clientTypes="desktop"><Props> +<Prop name="background"/> +<Prop name="border" defaultValue="normal" enumValues="none,normal,curve" deprecated="true"/> +<Prop name="closeAction" defaultValue="hide" enumValues="hide,close"/> +<Prop name="closeable" type="boolean"/> +<Prop name="collapseable" defaultValue="false" type="boolean"/> +<Prop name="icon"/> +<Prop name="iconClass"/> +<Prop name="maximizeable" type="boolean"/> +<Prop name="maximized" type="boolean"/> +<Prop name="showCaptionBar" type="java.lang.Boolean"/></Props><ClientEvents> +<ClientEvent name="onMaximize" parameters="self,arg"/> +<ClientEvent name="beforeMaximize" parameters="self,arg"/></ClientEvents><Children><Child name="Tools" fixed="true"><Rule name="Wrapper.Tools" label="Tools" nodeName="Tools" icon="/com/bstek/dorado/view/widget/base/Tools.png"><Children><Child rule="SimpleIconButton" name="Tools" aggregated="true"></Child></Children></Rule></Child></Children></Rule><Rule name="GroupBox" parents="AbstractPanel" label="GroupBox" type="com.bstek.dorado.view.widget.base.GroupBox" sortFactor="2015" category="General" icon="/com/bstek/dorado/view/widget/base/GroupBox.png" clientTypes="desktop"></Rule><Rule name="FieldSet" parents="AbstractPanel" label="FieldSet" type="com.bstek.dorado.view.widget.base.FieldSet" sortFactor="2016" category="General" icon="/com/bstek/dorado/view/widget/base/FieldSet.png" clientTypes="desktop"></Rule><Rule name="IFrame" parents="com.bstek.dorado.view.widget.Control" label="IFrame" type="com.bstek.dorado.view.widget.base.IFrame" sortFactor="2017" category="General" icon="/com/bstek/dorado/view/widget/base/IFrame.png" clientTypes="desktop,touch"><Props> +<Prop name="name"/> +<Prop name="path"/></Props><ClientEvents> +<ClientEvent name="onLoad" parameters="self,arg"/></ClientEvents></Rule><Rule name="CardBook" parents="com.bstek.dorado.view.widget.Control" label="CardBook" type="com.bstek.dorado.view.widget.base.CardBook" sortFactor="2018" category="General" icon="/com/bstek/dorado/view/widget/base/CardBook.png" clientTypes="desktop,touch"><Props> +<Prop name="currentControl" deprecated="true" visible="false" type="int"/> +<Prop name="currentIndex" type="int"/> +<Prop name="dynaHeight" defaultValue="false" type="boolean"/></Props><ClientEvents> +<ClientEvent name="beforeCurrentChange" parameters="self,arg"/> +<ClientEvent name="onCurrentChange" parameters="self,arg"/></ClientEvents><Children><Child rule="com.bstek.dorado.view.widget.Control" name="Controls" aggregated="true"></Child></Children></Rule><Rule name="TabControl" parents="TabBar" label="TabControl" type="com.bstek.dorado.view.widget.base.tab.TabControl" sortFactor="2019" category="General" icon="/com/bstek/dorado/view/widget/base/tab/TabControl.png" clientTypes="desktop"><Props> +<Prop name="dynaHeight" defaultValue="false" type="boolean"/></Props><Children><Child rule="ControlTab" name="ControlTab" aggregated="true"></Child><Child rule="IFrameTab" name="IFrameTab" aggregated="true"></Child></Children></Rule><Rule name="VerticalTabControl" parents="TabColumn" label="VerticalTabControl" type="com.bstek.dorado.view.widget.base.tab.VerticalTabControl" sortFactor="2020" category="General" icon="/com/bstek/dorado/view/widget/base/tab/VerticalTabControl.png" clientTypes="desktop"><Props> +<Prop name="tabColumnWidth" defaultValue="200" type="int"/></Props><Children><Child rule="ControlTab" name="ControlTab" aggregated="true"></Child><Child rule="IFrameTab" name="IFrameTab" aggregated="true"></Child></Children></Rule><Rule name="TabBar" parents="AbstractTabControl" label="TabBar" type="com.bstek.dorado.view.widget.base.tab.TabBar" sortFactor="2021" category="General" icon="/com/bstek/dorado/view/widget/base/tab/TabBar.png" clientTypes="desktop"><Props> +<Prop name="showMenuButton" type="boolean"/> +<Prop name="tabMinWidth" type="int"/> +<Prop name="tabPlacement" defaultValue="top" enumValues="top,bottom"/></Props><Children><Child rule="Tab" name="Tab" aggregated="true" public="false"></Child></Children></Rule><Rule name="TabColumn" parents="AbstractTabControl" label="TabColumn" type="com.bstek.dorado.view.widget.base.tab.TabColumn" sortFactor="2022" category="General" icon="/com/bstek/dorado/view/widget/base/tab/TabColumn.png" clientTypes="desktop"><Props> +<Prop name="tabPlacement" defaultValue="left" enumValues="left,right"/> +<Prop name="verticalText" type="boolean"/></Props><Children><Child rule="Tab" name="Tab" aggregated="true" public="false"></Child></Children></Rule><Rule name="ToolBar" parents="com.bstek.dorado.view.widget.Control" label="ToolBar" type="com.bstek.dorado.view.widget.base.toolbar.ToolBar" sortFactor="2023" category="General" icon="/com/bstek/dorado/view/widget/base/toolbar/ToolBar.png" clientTypes="desktop"><Props> +<Prop name="fixRight" type="boolean"/> +<Prop name="height" visible="false"/> +<Prop name="showMenuOnHover" defaultValue="false" type="boolean"/></Props><Children><Child rule="com.bstek.dorado.view.widget.base.toolbar.Label" name="ToolBarLabel" aggregated="true"></Child><Child rule="MenuButton" name="MenuButton" aggregated="true"></Child><Child rule="Fill" name="Fill" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.base.toolbar.Button" name="ToolBarButton" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.base.toolbar.Separator" name="Separator" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.Control" name="Items" aggregated="true"></Child></Children></Rule><Rule name="SplitPanel" parents="com.bstek.dorado.view.widget.Control" label="SplitPanel" type="com.bstek.dorado.view.widget.base.SplitPanel" sortFactor="2024" category="General" icon="/com/bstek/dorado/view/widget/base/SplitPanel.png" clientTypes="desktop"><Props> +<Prop name="animate" type="java.lang.Boolean"/> +<Prop name="collapseBothSide" defaultValue="false" type="boolean"/> +<Prop name="collapseable" defaultValue="true" type="boolean"/> +<Prop name="collapsed" type="boolean"/> +<Prop name="direction" defaultValue="left" highlight="1" enumValues="left,top,right,bottom"/> +<Prop name="maxPosition" type="int"/> +<Prop name="minPosition" type="int"/> +<Prop name="openPreviewOnHover" defaultValue="false" type="boolean"/> +<Prop name="position" defaultValue="100" highlight="1"/> +<Prop name="previewable" type="boolean"/> +<Prop name="resizeable" defaultValue="true" type="boolean"/></Props><ClientEvents> +<ClientEvent name="onCollapsedChange" parameters="self,arg"/> +<ClientEvent name="beforeCollapsedChange" parameters="self,arg"/></ClientEvents><Children><Child name="MainControl" fixed="true"><Rule name="Wrapper.MainControl" label="MainControl" nodeName="MainControl" icon="/com/bstek/dorado/view/widget/base/MainControl.png"><Children><Child rule="com.bstek.dorado.view.widget.Control" name="MainControl"></Child></Children></Rule></Child><Child name="SideControl" fixed="true"><Rule name="Wrapper.SideControl" label="SideControl" nodeName="SideControl" icon="/com/bstek/dorado/view/widget/base/SideControl.png"><Children><Child rule="com.bstek.dorado.view.widget.Control" name="SideControl"></Child></Children></Rule></Child></Children></Rule><Rule name="Accordion" parents="com.bstek.dorado.view.widget.Control" label="Accordion" type="com.bstek.dorado.view.widget.base.accordion.Accordion" sortFactor="2025" category="General" icon="/com/bstek/dorado/view/widget/base/accordion/Accordion.png" clientTypes="desktop"><Props> +<Prop name="animate" type="java.lang.Boolean"/> +<Prop name="currentSection" type="int"/> +<Prop name="dynaHeight" defaultValue="false" type="boolean"/></Props><ClientEvents> +<ClientEvent name="beforeCurrentSectionChange" parameters="self,arg"/> +<ClientEvent name="onCurrentSectionChange" parameters="self,arg"/></ClientEvents><Children><Child rule="Section" name="Sections" aggregated="true"></Child></Children></Rule><Rule name="Slider" parents="com.bstek.dorado.view.widget.Control" label="Slider" type="com.bstek.dorado.view.widget.base.Slider" sortFactor="2026" category="General" icon="/com/bstek/dorado/view/widget/base/Slider.png" clientTypes="desktop"><Props> +<Prop name="maxValue" defaultValue="100" type="float"/> +<Prop name="minValue" type="float"/> +<Prop name="orientation" defaultValue="horizental" enumValues="horizontal,horizontal,vertical"/> +<Prop name="precision" type="int"/> +<Prop name="step" type="float"/> +<Prop name="value" type="float"/></Props><ClientEvents> +<ClientEvent name="onValueChange" parameters="self,arg"/> +<ClientEvent name="beforeValueChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="ProgressBar" parents="AbstractPropertyDataControl" label="ProgressBar" type="com.bstek.dorado.view.widget.base.ProgressBar" sortFactor="2027" category="General" icon="/com/bstek/dorado/view/widget/base/ProgressBar.png" clientTypes="desktop,touch"><Props> +<Prop name="effectEnable" type="boolean"/> +<Prop name="maxValue" defaultValue="100" type="float"/> +<Prop name="minValue" type="float"/> +<Prop name="showText" defaultValue="true" type="boolean"/> +<Prop name="textPattern" defaultValue="{percent}%"/> +<Prop name="value"/></Props></Rule><Rule name="Tip" parents="com.bstek.dorado.view.widget.Control,FloatControl" label="Tip" type="com.bstek.dorado.view.widget.base.Tip" sortFactor="2028" category="Floatable" icon="/com/bstek/dorado/view/widget/base/Tip.png" clientTypes="desktop,touch"><Props> +<Prop name="align" enumValues="left,innerleft,center,innerright,top" visible="false"/> +<Prop name="anchorTarget" visible="false"/> +<Prop name="animateTarget" visible="false"/> +<Prop name="animateType" defaultValue="fade" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="arrowAlign" defaultValue="center" enumValues="center,top,right,bottom,left"/> +<Prop name="arrowDirection" defaultValue="none" enumValues="top,right,bottom,left,none"/> +<Prop name="arrowOffset" type="int"/> +<Prop name="autoAdjustPosition" defaultValue="true" type="boolean"/> +<Prop name="caption"/> +<Prop name="center" type="boolean"/> +<Prop name="closeable" type="boolean"/> +<Prop name="content" type="java.lang.Object"/> +<Prop name="continuedFocus" defaultValue="true" type="boolean"/> +<Prop name="floating" defaultValue="true" type="boolean"/> +<Prop name="floatingClassName"/> +<Prop name="focusAfterShow" defaultValue="false" type="boolean"/> +<Prop name="handleOverflow" defaultValue="true" visible="false" type="boolean"/> +<Prop name="hideAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="icon" enumValues="INFO,WARNING,ERROR,QUESTION"/> +<Prop name="left" type="int"/> +<Prop name="modal" type="boolean"/> +<Prop name="modalType" enumValues="dark,transparent"/> +<Prop name="offsetLeft" type="int"/> +<Prop name="offsetTop" type="int"/> +<Prop name="shadowMode" defaultValue="drop" enumValues="drop,sides,frame,none"/> +<Prop name="showAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="showDuration" type="int"/> +<Prop name="text" editor="multilines"/> +<Prop name="top" type="int"/> +<Prop name="vAlign" enumValues="top,innertop,center,innerbottom,bottom" visible="false"/> +<Prop name="visible" type="java.lang.Boolean"/></Props><ClientEvents> +<ClientEvent name="onClose" parameters="self,arg"/> +<ClientEvent name="onShow" parameters="self,arg"/> +<ClientEvent name="beforeHide" parameters="self,arg"/> +<ClientEvent name="beforeClose" parameters="self,arg"/> +<ClientEvent name="beforeShow" parameters="self,arg"/> +<ClientEvent name="onHide" parameters="self,arg"/></ClientEvents></Rule><Rule name="FloatContainer" parents="Container,FloatControl" label="FloatContainer" type="com.bstek.dorado.view.widget.base.FloatContainer" sortFactor="2029" category="Floatable" icon="/com/bstek/dorado/view/widget/base/FloatContainer.png" clientTypes="desktop,touch"><Props> +<Prop name="align" enumValues="left,innerleft,center,innerright,top" visible="false"/> +<Prop name="anchorTarget" visible="false"/> +<Prop name="animateTarget" visible="false"/> +<Prop name="animateType" defaultValue="zoom" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="autoAdjustPosition" defaultValue="true" type="boolean"/> +<Prop name="center" type="boolean"/> +<Prop name="continuedFocus" defaultValue="true" type="boolean"/> +<Prop name="floating" defaultValue="true" type="boolean"/> +<Prop name="floatingClassName"/> +<Prop name="focusAfterShow" defaultValue="true" type="boolean"/> +<Prop name="handleOverflow" defaultValue="true" visible="false" type="boolean"/> +<Prop name="hideAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="left" type="int"/> +<Prop name="modal" type="boolean"/> +<Prop name="modalType" enumValues="dark,transparent"/> +<Prop name="offsetLeft" type="int"/> +<Prop name="offsetTop" type="int"/> +<Prop name="shadowMode" defaultValue="sides" enumValues="drop,sides,frame,none"/> +<Prop name="showAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="top" type="int"/> +<Prop name="vAlign" enumValues="top,innertop,center,innerbottom,bottom" visible="false"/> +<Prop name="visible" type="java.lang.Boolean"/></Props><ClientEvents> +<ClientEvent name="onClose" parameters="self,arg"/> +<ClientEvent name="onShow" parameters="self,arg"/> +<ClientEvent name="beforeHide" parameters="self,arg"/> +<ClientEvent name="beforeClose" parameters="self,arg"/> +<ClientEvent name="beforeShow" parameters="self,arg"/> +<ClientEvent name="onHide" parameters="self,arg"/></ClientEvents></Rule><Rule name="FloatPanel" parents="Panel,FloatControl" label="FloatPanel" type="com.bstek.dorado.view.widget.base.FloatPanel" sortFactor="2030" category="Floatable" icon="/com/bstek/dorado/view/widget/base/FloatPanel.png" clientTypes="desktop"><Props> +<Prop name="align" enumValues="left,innerleft,center,innerright,top" visible="false"/> +<Prop name="anchorTarget" visible="false"/> +<Prop name="animateTarget" visible="false"/> +<Prop name="animateType" defaultValue="zoom" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="autoAdjustPosition" defaultValue="true" type="boolean"/> +<Prop name="center" highlight="1" type="boolean"/> +<Prop name="continuedFocus" defaultValue="true" type="boolean"/> +<Prop name="floating" defaultValue="true" type="boolean"/> +<Prop name="floatingClassName"/> +<Prop name="focusAfterShow" defaultValue="true" type="boolean"/> +<Prop name="handleOverflow" defaultValue="true" visible="false" type="boolean"/> +<Prop name="hideAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="left" type="int"/> +<Prop name="modal" highlight="1" type="boolean"/> +<Prop name="modalType" enumValues="dark,transparent"/> +<Prop name="offsetLeft" type="int"/> +<Prop name="offsetTop" type="int"/> +<Prop name="shadowMode" defaultValue="sides" enumValues="drop,sides,frame,none"/> +<Prop name="showAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="top" type="int"/> +<Prop name="vAlign" enumValues="top,innertop,center,innerbottom,bottom" visible="false"/> +<Prop name="visible" type="java.lang.Boolean"/></Props><ClientEvents> +<ClientEvent name="onClose" parameters="self,arg"/> +<ClientEvent name="onShow" parameters="self,arg"/> +<ClientEvent name="beforeHide" parameters="self,arg"/> +<ClientEvent name="beforeClose" parameters="self,arg"/> +<ClientEvent name="beforeShow" parameters="self,arg"/> +<ClientEvent name="onHide" parameters="self,arg"/></ClientEvents></Rule><Rule name="Dialog" parents="FloatPanel" label="Dialog" type="com.bstek.dorado.view.widget.base.Dialog" sortFactor="2031" category="Floatable" icon="/com/bstek/dorado/view/widget/base/Dialog.png" clientTypes="desktop"><Props> +<Prop name="center" defaultValue="true" type="boolean"/> +<Prop name="closeable" defaultValue="true" type="boolean"/> +<Prop name="dragOutside" type="boolean"/> +<Prop name="draggable" defaultValue="true" type="boolean"/> +<Prop name="maxHeight" type="int"/> +<Prop name="maxWidth" type="int"/> +<Prop name="minHeight" type="int"/> +<Prop name="minWidth" type="int"/> +<Prop name="minimizeable" type="boolean"/> +<Prop name="minimized" type="boolean"/> +<Prop name="modal" defaultValue="true" type="boolean"/> +<Prop name="resizeable" defaultValue="true" type="boolean"/> +<Prop name="shadowMode" defaultValue="frame" enumValues="drop,sides,frame,none"/></Props><ClientEvents> +<ClientEvent name="onMinimize" parameters="self,arg"/> +<ClientEvent name="beforeMinimize" parameters="self,arg"/></ClientEvents></Rule><Rule name="Menu" parents="com.bstek.dorado.view.widget.Control,FloatControl" label="Menu" type="com.bstek.dorado.view.widget.base.menu.Menu" sortFactor="2032" category="Floatable" icon="/com/bstek/dorado/view/widget/base/menu/Menu.png" autoGenerateId="true" clientTypes="desktop"><Props> +<Prop name="align" enumValues="left,innerleft,center,innerright,top" visible="false"/> +<Prop name="anchorTarget" visible="false"/> +<Prop name="animateTarget" visible="false"/> +<Prop name="animateType" defaultValue="zoom" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="autoAdjustPosition" defaultValue="true" type="boolean"/> +<Prop name="center" type="boolean"/> +<Prop name="continuedFocus" defaultValue="true" type="boolean"/> +<Prop name="floating" defaultValue="true" type="boolean"/> +<Prop name="floatingClassName"/> +<Prop name="focusAfterShow" defaultValue="true" type="boolean"/> +<Prop name="handleOverflow" defaultValue="true" visible="false" type="boolean"/> +<Prop name="hideAnimateType" defaultValue="fade" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="iconPosition" defaultValue="left" enumValues="left,top"/> +<Prop name="left" type="int"/> +<Prop name="modal" type="boolean"/> +<Prop name="modalType" enumValues="dark,transparent"/> +<Prop name="offsetLeft" type="int"/> +<Prop name="offsetTop" type="int"/> +<Prop name="shadowMode" defaultValue="sides" enumValues="drop,sides,frame,none"/> +<Prop name="showAnimateType" defaultValue="slide" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="top" type="int"/> +<Prop name="vAlign" enumValues="top,innertop,center,innerbottom,bottom" visible="false"/> +<Prop name="visible" type="java.lang.Boolean"/></Props><ClientEvents> +<ClientEvent name="onClose" parameters="self,arg"/> +<ClientEvent name="onShow" parameters="self,arg"/> +<ClientEvent name="beforeHide" parameters="self,arg"/> +<ClientEvent name="beforeClose" parameters="self,arg"/> +<ClientEvent name="beforeShow" parameters="self,arg"/> +<ClientEvent name="onHide" parameters="self,arg"/> +<ClientEvent name="onHideTopMenu" parameters="self,arg"/></ClientEvents><Children><Child rule="BaseMenuItem" name="Items" aggregated="true"></Child></Children></Rule><Rule name="DatePicker" parents="com.bstek.dorado.view.widget.Control" label="DatePicker" nodeName="DatePicker" type="com.bstek.dorado.view.widget.base.DatePicker" sortFactor="2033" category="General" icon="/com/bstek/dorado/view/widget/base/DatePicker.png" clientTypes="desktop"><Props> +<Prop name="date" type="java.util.Date"/> +<Prop name="selectionMode" defaultValue="singleDate" enumValues="singleDate,multiDate"/> +<Prop name="showClearButton" defaultValue="true" type="boolean"/> +<Prop name="showConfirmButton" defaultValue="true" type="boolean"/> +<Prop name="showTimeSpinner" defaultValue="false" type="boolean"/> +<Prop name="showTodayButton" defaultValue="true" type="boolean"/> +<Prop name="yearMonthFormat"/></Props><ClientEvents> +<ClientEvent name="onFilterDate" parameters="self,arg"/> +<ClientEvent name="onClear" parameters="self,arg"/> +<ClientEvent name="onCancel" parameters="self,arg"/> +<ClientEvent name="onConfirm" parameters="self,arg"/> +<ClientEvent name="onRefreshDateCell" parameters="self,arg"/> +<ClientEvent name="onPick" parameters="self,arg"/></ClientEvents></Rule><Rule name="YearMonthPicker" parents="com.bstek.dorado.view.widget.Control" label="YearMonthPicker" nodeName="YearMonthPicker" type="com.bstek.dorado.view.widget.base.YearMonthPicker" sortFactor="2034" category="General" icon="/com/bstek/dorado/view/widget/base/YearMonthPicker.png" clientTypes="desktop"><Props> +<Prop name="month" type="int"/> +<Prop name="year" type="int"/></Props><ClientEvents> +<ClientEvent name="onPick" parameters="self,arg"/> +<ClientEvent name="onCancel" parameters="self,arg"/></ClientEvents></Rule><Rule name="Label" parents="AbstractPropertyDataControl" label="Label" type="com.bstek.dorado.view.widget.form.Label" sortFactor="2035" category="Form" icon="/com/bstek/dorado/view/widget/form/Label.png" clientTypes="desktop,touch"><Props> +<Prop name="text" highlight="1"/> +<Prop name="ui" enumValues="default,bold,h1,h2,h3"/></Props></Rule><Rule name="DataLabel" parents="AbstractPropertyDataControl" label="DataLabel" type="com.bstek.dorado.view.widget.form.DataLabel" sortFactor="2036" category="Form" icon="/com/bstek/dorado/view/widget/form/DataLabel.png" clientTypes="desktop,touch" deprecated="true"></Rule><Rule name="Link" parents="Label" label="Link" type="com.bstek.dorado.view.widget.form.Link" sortFactor="2037" category="Form" icon="/com/bstek/dorado/view/widget/form/Link.png" clientTypes="desktop,touch"><Props> +<Prop name="href"/> +<Prop name="target"/></Props></Rule><Rule name="Image" parents="AbstractPropertyDataControl" label="Image" type="com.bstek.dorado.view.widget.form.Image" sortFactor="2038" category="Form" icon="/com/bstek/dorado/view/widget/form/Image.png" clientTypes="desktop,touch"><Props> +<Prop name="blankImage"/> +<Prop name="image" highlight="1"/> +<Prop name="packMode" defaultValue="center" enumValues="start,center,end"/> +<Prop name="stretchMode" defaultValue="keepRatio" enumValues="fitWidth,fitHeight,keepRatio,fill,stretch,none"/></Props></Rule><Rule name="TemplateField" parents="AbstractDataControl" label="TemplateField" type="com.bstek.dorado.view.widget.form.TemplateField" sortFactor="2039" category="Form" icon="/com/bstek/dorado/view/widget/form/TemplateField.png" clientTypes="desktop,touch"><Props> +<Prop name="template" highlight="1" editor="multiLines"/></Props></Rule><Rule name="TextEditor" parents="AbstractTextEditor" label="TextEditor" type="com.bstek.dorado.view.widget.form.TextEditor" sortFactor="2040" category="Form" icon="/com/bstek/dorado/view/widget/form/TextEditor.png" clientTypes="desktop,touch"><Props> +<Prop name="dataType" type="com.bstek.dorado.data.type.DataType"/> +<Prop name="displayFormat"/><Prop name="mapping" type="com.bstek.dorado.data.type.property.Mapping" compositeType="Fixed"> +<Prop name="keyProperty"/> +<Prop name="mapValues" editor="collection[pojo]" type="java.lang.Object"/> +<Prop name="valueProperty"/></Prop> +<Prop name="password" visible="false" type="boolean"/> +<Prop name="typeFormat"/></Props></Rule><Rule name="PasswordEditor" parents="AbstractTextEditor" label="PasswordEditor" type="com.bstek.dorado.view.widget.form.PasswordEditor" sortFactor="2041" category="Form" icon="/com/bstek/dorado/view/widget/form/PasswordEditor.png" clientTypes="desktop,touch"></Rule><Rule name="TextArea" parents="AbstractTextEditor" label="TextArea" type="com.bstek.dorado.view.widget.form.TextArea" sortFactor="2042" category="Form" icon="/com/bstek/dorado/view/widget/form/TextArea.png" clientTypes="desktop,touch"><Props> +<Prop name="maxLength" type="int"/> +<Prop name="minLength" type="int"/> +<Prop name="required" type="boolean"/> +<Prop name="selectTextOnFocus" defaultValue="false" type="boolean"/> +<Prop name="text" editor="multiLines"/></Props></Rule><Rule name="CheckBox" parents="AbstractDataEditor" label="CheckBox" type="com.bstek.dorado.view.widget.form.CheckBox" sortFactor="2043" category="Form" icon="/com/bstek/dorado/view/widget/form/CheckBox.png" clientTypes="desktop,touch"><Props> +<Prop name="caption"/> +<Prop name="mixedValue" type="java.lang.Object"/> +<Prop name="offValue" defaultValue="false" type="java.lang.Object"/> +<Prop name="onValue" defaultValue="true" type="java.lang.Object"/> +<Prop name="triState" type="boolean"/> +<Prop name="value" defaultValue="false" type="java.lang.Object"/></Props><ClientEvents> +<ClientEvent name="onValueChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="RadioGroup" parents="AbstractDataEditor" label="RadioGroup" type="com.bstek.dorado.view.widget.form.RadioGroup" sortFactor="2044" category="Form" icon="/com/bstek/dorado/view/widget/form/RadioGroup.png" clientTypes="desktop,touch"><Props> +<Prop name="columnCount" defaultValue="3" type="int"/> +<Prop name="layout" defaultValue="flow" enumValues="vertical,flow,grid"/> +<Prop name="value" type="java.lang.Object"/></Props><ClientEvents> +<ClientEvent name="onValueChange" parameters="self,arg"/></ClientEvents><Children><Child rule="RadioButton" name="RadioButtons" aggregated="true"></Child></Children></Rule><Rule name="DataMessage" parents="AbstractPropertyDataControl" label="DataMessage" type="com.bstek.dorado.view.widget.form.DataMessage" sortFactor="2045" category="Form" icon="/com/bstek/dorado/view/widget/form/DataMessage.png" clientTypes="desktop,touch"><Props> +<Prop name="showIconOnly" type="boolean"/> +<Prop name="showMultiMessage" type="boolean"/></Props></Rule><Rule name="FormProfile" parents="Component" label="FormProfile" type="com.bstek.dorado.view.widget.form.FormProfile" sortFactor="2046" category="Form" icon="/com/bstek/dorado/view/widget/form/FormProfile.png" clientTypes="desktop,touch"><Props> +<Prop name="className"/> +<Prop name="dataPath" highlight="1"/> +<Prop name="dataSet" highlight="1" reference="DataSet:id"/> +<Prop name="editorWidth" type="int"/> +<Prop name="exClassName"/> +<Prop name="height"/> +<Prop name="hintPosition" enumValues="right,bottom"/> +<Prop name="hintSpacing" type="int"/> +<Prop name="hintWidth" type="int"/> +<Prop name="labelAlign" defaultValue="left" enumValues="left,center,right"/> +<Prop name="labelPosition" defaultValue="left" enumValues="left,top"/> +<Prop name="labelSeparator"/> +<Prop name="labelSpacing" type="int"/> +<Prop name="labelWidth" type="int"/> +<Prop name="readOnly" type="boolean"/> +<Prop name="showHint" defaultValue="true" type="boolean"/> +<Prop name="showHintMessage" type="boolean"/> +<Prop name="showLabel" defaultValue="true" type="boolean"/> +<Prop name="trigger" enumValues="triggerClear,autoMappingDropDown1,autoMappingDropDown2,defaultDateDropDown,defaultDateTimeDropDown,defaultYearMonthDropDown,defaultYearDropDown,defaultMonthDropDown" reference="Trigger:id"/> +<Prop name="type" defaultValue="text" enumValues="text,password,textArea,checkBox,radioGroup"/> +<Prop name="ui"/> +<Prop name="width"/></Props></Rule><Rule name="FormElement" parents="com.bstek.dorado.view.widget.Control" label="FormElement" type="com.bstek.dorado.view.widget.form.FormElement" sortFactor="2047" category="Form" icon="/com/bstek/dorado/view/widget/form/FormElement.png" clientTypes="desktop,touch"><Props> +<Prop name="dataPath" highlight="1"/> +<Prop name="dataSet" highlight="1" reference="DataSet:id"/> +<Prop name="editable" defaultValue="true" type="boolean"/> +<Prop name="editorType" highlight="1" enumValues="TextEditor,PasswordEditor,TextArea,CheckBox,RadioGroup,Label,NumberSpinner"/> +<Prop name="editorWidth" type="int"/> +<Prop name="formProfile" reference="FormProfile:id"/> +<Prop name="hint"/> +<Prop name="hintPosition" defaultValue="right" enumValues="right,bottom"/> +<Prop name="hintSpacing" type="int"/> +<Prop name="hintWidth" type="int"/> +<Prop name="label" highlight="1"/> +<Prop name="labelAlign" defaultValue="left" enumValues="left,center,right"/> +<Prop name="labelPosition" defaultValue="left" enumValues="left,top"/> +<Prop name="labelSeparator"/> +<Prop name="labelSpacing" type="int"/> +<Prop name="labelWidth" type="int"/> +<Prop name="property" highlight="1"/> +<Prop name="readOnly" type="boolean"/> +<Prop name="showHint" defaultValue="true" type="boolean"/> +<Prop name="showHintMessage" type="boolean"/> +<Prop name="showLabel" defaultValue="true" type="boolean"/> +<Prop name="trigger" enumValues="triggerClear,autoMappingDropDown1,autoMappingDropDown2,autoOpenMappingDropDown1,autoOpenMappingDropDown2,defaultDateDropDown,defaultDateTimeDropDown,defaultYearMonthDropDown,defaultYearDropDown,defaultMonthDropDown" reference="Trigger:id"/> +<Prop name="type" enumValues="text,password,textArea,checkBox,radioGroup" visible="false"/></Props><ClientEvents> +<ClientEvent name="onGetBindingData" parameters="self,arg"/> +<ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents><Children><Child name="Editor" fixed="true"><Rule name="Wrapper.Editor" label="Editor" nodeName="Editor" icon="/com/bstek/dorado/view/widget/form/Editor.png"><Children><Child rule="com.bstek.dorado.view.widget.Control" name="Editor"></Child></Children></Rule></Child></Children></Rule><Rule name="AutoForm" parents="com.bstek.dorado.view.widget.Control" label="AutoForm" type="com.bstek.dorado.view.widget.form.autoform.AutoForm" sortFactor="2048" category="Form" icon="/com/bstek/dorado/view/widget/form/autoform/AutoForm.png" clientTypes="desktop,touch"><Props> +<Prop name="autoCreateElements" type="boolean"/> +<Prop name="colPadding" type="int"/> +<Prop name="cols" highlight="1"/> +<Prop name="createOwnEntity" defaultValue="true" type="boolean"/> +<Prop name="createPrivateDataSet" type="boolean"/> +<Prop name="dataPath" highlight="1"/> +<Prop name="dataSet" highlight="1" reference="DataSet:id"/> +<Prop name="dataType" type="com.bstek.dorado.data.type.EntityDataType"/> +<Prop name="editorWidth" type="int"/> +<Prop name="formProfile" reference="FormProfile:id"/> +<Prop name="hintPosition" enumValues="right,bottom"/> +<Prop name="hintSpacing" type="int"/> +<Prop name="hintWidth" type="int"/> +<Prop name="labelAlign" defaultValue="left" enumValues="left,center,right"/> +<Prop name="labelPosition" defaultValue="left" enumValues="left,top"/> +<Prop name="labelSeparator"/> +<Prop name="labelSpacing" type="int"/> +<Prop name="labelWidth" type="int"/> +<Prop name="padding" type="int"/> +<Prop name="readOnly" type="boolean"/> +<Prop name="rowHeight" type="int"/> +<Prop name="rowPadding" type="int"/> +<Prop name="showHint" defaultValue="true" type="boolean"/> +<Prop name="showHintMessage" type="boolean"/> +<Prop name="showLabel" defaultValue="true" type="boolean"/> +<Prop name="stretchWidth" type="boolean"/></Props><Children><Child rule="AutoFormElement" name="AutoFormElement" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.Control" name="Elements" aggregated="true"></Child></Children></Rule><Rule name="NumberSpinner" parents="Spinner" label="NumberSpinner" type="com.bstek.dorado.view.widget.form.NumberSpinner" sortFactor="2049" category="Form" icon="/com/bstek/dorado/view/widget/form/NumberSpinner.png" clientTypes="desktop,touch"><Props> +<Prop name="max" defaultValue="2147483647" type="int"/> +<Prop name="min" defaultValue="-2147483648" type="int"/> +<Prop name="selectTextOnFocus" defaultValue="true" type="boolean"/></Props></Rule><Rule name="DateTimeSpinner" parents="Spinner" label="DateTimeSpinner" type="com.bstek.dorado.view.widget.form.DateTimeSpinner" sortFactor="2050" category="Form" icon="/com/bstek/dorado/view/widget/form/DateTimeSpinner.png" clientTypes="desktop,touch"><Props> +<Prop name="date" type="int"/> +<Prop name="hours" type="int"/> +<Prop name="minutes" type="int"/> +<Prop name="month" type="int"/> +<Prop name="seconds" type="int"/> +<Prop name="type" defaultValue="time" enumValues="date,time,dateTime,hours,minutes,dateHours,dateMinutes"/> +<Prop name="year" type="int"/></Props></Rule><Rule name="CustomSpinner" parents="Spinner" label="CustomSpinner" type="com.bstek.dorado.view.widget.form.CustomSpinner" sortFactor="2051" category="Form" icon="/com/bstek/dorado/view/widget/form/CustomSpinner.png" clientTypes="desktop,touch"><Props> +<Prop name="pattern" highlight="1"/> +<Prop name="text" visible="false"/> +<Prop name="value"/></Props></Rule><Rule name="Trigger" parents="Component" label="Trigger" type="com.bstek.dorado.view.widget.form.trigger.Trigger" sortFactor="2052" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/Trigger.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> +<Prop name="buttonVisible" defaultValue="true" type="boolean"/> +<Prop name="editable" defaultValue="true" type="boolean"/> +<Prop name="icon"/> +<Prop name="iconClass" enumValues="d-trigger-icon-drop,d-trigger-icon-search,d-trigger-icon-date,d-trigger-icon-custom"/></Props><ClientEvents> +<ClientEvent name="onExecute" parameters="self,arg"/> +<ClientEvent name="beforeExecute" parameters="self,arg"/></ClientEvents></Rule><Rule name="ListDropDown" parents="RowListDropDown" label="ListDropDown" type="com.bstek.dorado.view.widget.form.trigger.ListDropDown" sortFactor="2053" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/ListDropDown.png" autoGenerateId="true" clientTypes="desktop"><Props> +<Prop name="items" highlight="1" editor="collection[any]" type="java.util.List"/></Props></Rule><Rule name="DataSetDropDown" parents="RowListDropDown" label="DataSetDropDown" type="com.bstek.dorado.view.widget.form.trigger.DataSetDropDown" sortFactor="2054" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/DataSetDropDown.png" autoGenerateId="true" clientTypes="desktop"><Props> +<Prop name="dataPath" highlight="1"/> +<Prop name="dataSet" highlight="1" reference="DataSet:id"/> +<Prop name="filterMode" defaultValue="serverSide" enumValues="clientSide,serverSide"/> +<Prop name="filterOnTyping" defaultValue="false" type="boolean"/> +<Prop name="property" highlight="1"/> +<Prop name="reloadDataOnOpen" type="boolean"/> +<Prop name="useDataBinding" defaultValue="true" type="boolean"/></Props><ClientEvents> +<ClientEvent name="onGetBindingData" parameters="self,arg"/> +<ClientEvent name="onSetFilterParameter" parameters="self,arg"/> +<ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents></Rule><Rule name="AutoMappingDropDown" parents="RowListDropDown" label="AutoMappingDropDown" type="com.bstek.dorado.view.widget.form.trigger.AutoMappingDropDown" sortFactor="2055" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/AutoMappingDropDown.png" autoGenerateId="true" clientTypes="desktop"><Props> +<Prop name="dynaFilter" defaultValue="true" type="boolean"/> +<Prop name="property" defaultValue="value"/></Props></Rule><Rule name="DateDropDown" parents="DropDown" label="DateDropDown" type="com.bstek.dorado.view.widget.form.trigger.DateDropDown" sortFactor="2056" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/DateDropDown.png" autoGenerateId="true" clientTypes="desktop"><Props> +<Prop name="selectionMode" defaultValue="singleDate" enumValues="singleDate,multiDate"/> +<Prop name="showConfirmButton" defaultValue="true" type="boolean"/> +<Prop name="showTimeSpinner" type="boolean"/> +<Prop name="showTodayButton" defaultValue="true" type="boolean"/></Props><ClientEvents> +<ClientEvent name="onRefreshDateCell" parameters="self,arg"/> +<ClientEvent name="onFilterDate" parameters="self,arg"/></ClientEvents></Rule><Rule name="YearMonthDropDown" parents="DropDown" label="YearMonthDropDown" type="com.bstek.dorado.view.widget.form.trigger.YearMonthDropDown" sortFactor="2057" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/YearMonthDropDown.png" autoGenerateId="true" clientTypes="desktop"></Rule><Rule name="YearDropDown" parents="DropDown" label="YearDropDown" type="com.bstek.dorado.view.widget.form.trigger.YearDropDown" sortFactor="2058" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/YearDropDown.png" autoGenerateId="true" clientTypes="desktop"></Rule><Rule name="MonthDropDown" parents="DropDown" label="MonthDropDown" type="com.bstek.dorado.view.widget.form.trigger.MonthDropDown" sortFactor="2059" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/MonthDropDown.png" autoGenerateId="true" clientTypes="desktop"></Rule><Rule name="CustomDropDown" parents="DropDown" label="CustomDropDown" type="com.bstek.dorado.view.widget.form.trigger.CustomDropDown" sortFactor="2060" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/CustomDropDown.png" autoGenerateId="true" clientTypes="desktop"><Children><Child rule="com.bstek.dorado.view.widget.Control" name="Control"></Child></Children></Rule><Rule name="DataPilot" parents="AbstractDataControl" label="DataPilot" type="com.bstek.dorado.view.widget.datacontrol.DataPilot" sortFactor="2061" category="General" icon="/com/bstek/dorado/view/widget/datacontrol/DataPilot.png" clientTypes="desktop"><Props> +<Prop name="height" visible="false"/> +<Prop name="itemCodes" highlight="1" enumValues="pages,|<,<,>,>|,goto,pageSize,info,+,-,x,|"/></Props><ClientEvents> +<ClientEvent name="onSubControlAction" parameters="self,arg"/> +<ClientEvent name="onSubControlRefresh" parameters="self,arg"/></ClientEvents></Rule><Rule name="ListBox" parents="AbstractListBox" label="ListBox" type="com.bstek.dorado.view.widget.list.ListBox" sortFactor="2062" category="Collection" icon="/com/bstek/dorado/view/widget/list/ListBox.png" clientTypes="desktop"><Props> +<Prop name="items" highlight="1" editor="collection[any]" type="java.util.List"/></Props></Rule><Rule name="DataListBox" parents="AbstractListBox" label="DataListBox" type="com.bstek.dorado.view.widget.list.DataListBox" sortFactor="2063" category="Collection" icon="/com/bstek/dorado/view/widget/list/DataListBox.png" clientTypes="desktop"><Props> +<Prop name="dataPath" highlight="1"/> +<Prop name="dataSet" highlight="1" reference="DataSet:id"/></Props><ClientEvents> +<ClientEvent name="onGetBindingData" parameters="self,arg"/> +<ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents></Rule><Rule name="Grid" parents="AbstractGrid" label="Grid" type="com.bstek.dorado.view.widget.grid.Grid" sortFactor="2064" category="Collection" icon="/com/bstek/dorado/view/widget/grid/Grid.png" clientTypes="desktop"><Props> +<Prop name="items" highlight="1" editor="collection[pojo]" type="java.util.List"/></Props></Rule><Rule name="DataGrid" parents="AbstractGrid" label="DataGrid" type="com.bstek.dorado.view.widget.grid.DataGrid" sortFactor="2065" category="Collection" icon="/com/bstek/dorado/view/widget/grid/DataGrid.png" clientTypes="desktop"><Props> +<Prop name="appendOnLastEnter" type="boolean"/> +<Prop name="autoCreateColumns" type="java.lang.Boolean"/> +<Prop name="dataPath" highlight="1"/> +<Prop name="dataSet" highlight="1" reference="DataSet:id"/> +<Prop name="dataType" deprecated="true" type="com.bstek.dorado.data.type.EntityDataType"/> +<Prop name="filterMode" defaultValue="clientSide" enumValues="clientSide,serverSide"/> +<Prop name="rowSelectionProperty"/> +<Prop name="sortMode" defaultValue="clientSide" enumValues="clientSide,serverSide"/> +<Prop name="supportsPaging" type="boolean"/></Props><ClientEvents> +<ClientEvent name="onGetBindingData" parameters="self,arg"/> +<ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents></Rule><Rule name="Tree" parents="AbstractTree" label="Tree" type="com.bstek.dorado.view.widget.tree.Tree" sortFactor="2066" category="Collection" icon="/com/bstek/dorado/view/widget/tree/Tree.png" clientTypes="desktop"><Children><Child rule="BaseNode" name="Nodes" aggregated="true"></Child></Children></Rule><Rule name="DataTree" parents="AbstractTree" label="DataTree" type="com.bstek.dorado.view.widget.tree.DataTree" sortFactor="2067" category="Collection" icon="/com/bstek/dorado/view/widget/tree/DataTree.png" clientTypes="desktop"><Props> +<Prop name="currentNodeDataPath"/> +<Prop name="dataPath" highlight="1"/> +<Prop name="dataSet" highlight="1" reference="DataSet:id"/></Props><ClientEvents> +<ClientEvent name="onDataNodeCreate" parameters="self,arg"/> +<ClientEvent name="onGetBindingDataType" parameters="self,arg"/> +<ClientEvent name="onGetBindingData" parameters="self,arg"/> +<ClientEvent name="beforeDataNodeCreate" parameters="self,arg"/></ClientEvents><Children><Child name="BindingConfigs" fixed="true"><Rule name="Wrapper.BindingConfigs" label="BindingConfigs" nodeName="BindingConfigs" icon="/com/bstek/dorado/view/widget/tree/BindingConfigs.png"><Children><Child rule="BindingConfig" name="BindingConfigs" aggregated="true"></Child></Children></Rule></Child></Children></Rule><Rule name="BlockView" parents="AbstractBlockView" label="BlockView" type="com.bstek.dorado.view.widget.blockview.BlockView" sortFactor="2068" category="Collection" icon="/com/bstek/dorado/view/widget/blockview/BlockView.png" clientTypes="desktop,touch"><Props> +<Prop name="items" highlight="1" editor="collection[any]" type="java.util.List"/></Props></Rule><Rule name="DataBlockView" parents="AbstractBlockView" label="DataBlockView" type="com.bstek.dorado.view.widget.blockview.DataBlockView" sortFactor="2069" category="Collection" icon="/com/bstek/dorado/view/widget/blockview/DataBlockView.png" clientTypes="desktop,touch"><Props> +<Prop name="dataPath" highlight="1"/> +<Prop name="dataSet" highlight="1" reference="DataSet:id"/></Props><ClientEvents> +<ClientEvent name="onGetBindingData" parameters="self,arg"/> +<ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents></Rule><Rule name="TreeGrid" parents="AbstractTreeGrid" label="TreeGrid" type="com.bstek.dorado.view.widget.treegrid.TreeGrid" sortFactor="2070" category="Collection" icon="/com/bstek/dorado/view/widget/treegrid/TreeGrid.png" clientTypes="desktop"><Children><Child name="Nodes" fixed="true"><Rule name="Wrapper.Nodes" label="Nodes" nodeName="Nodes" icon="/com/bstek/dorado/view/widget/treegrid/Nodes.png"><Children><Child rule="BaseNode" name="Nodes" aggregated="true"></Child></Children></Rule></Child></Children></Rule><Rule name="DataTreeGrid" parents="AbstractTreeGrid" label="DataTreeGrid" type="com.bstek.dorado.view.widget.treegrid.DataTreeGrid" sortFactor="2071" category="Collection" icon="/com/bstek/dorado/view/widget/treegrid/DataTreeGrid.png" clientTypes="desktop"><Props> +<Prop name="autoCreateColumns" type="java.lang.Boolean"/> +<Prop name="currentNodeDataPath"/> +<Prop name="dataPath" highlight="1"/> +<Prop name="dataSet" highlight="1" reference="DataSet:id"/> +<Prop name="dataType" type="com.bstek.dorado.data.type.EntityDataType"/></Props><ClientEvents> +<ClientEvent name="onDataNodeCreate" parameters="self,arg"/> +<ClientEvent name="onGetBindingDataType" parameters="self,arg"/> +<ClientEvent name="onGetBindingData" parameters="self,arg"/> +<ClientEvent name="beforeDataNodeCreate" parameters="self,arg"/></ClientEvents><Children><Child name="BindingConfigs" fixed="true"><Rule name="Wrapper.BindingConfigs" label="BindingConfigs" nodeName="BindingConfigs" icon="/com/bstek/dorado/view/widget/tree/BindingConfigs.png"><Children><Child rule="BindingConfig" name="BindingConfigs" aggregated="true"></Child></Children></Rule></Child></Children></Rule><Rule name="TagEditor" parents="AbstractTextEditor" label="TagEditor" type="com.bstek.dorado.view.widget.advance.TagEditor" sortFactor="2072" category="Form" icon="/com/bstek/dorado/view/widget/advance/TagEditor.png" clientTypes="desktop"><Props> +<Prop name="acceptUnknownTag" defaultValue="true" type="boolean"/> +<Prop name="availableTags" highlight="1" type="[Ljava.lang.String;"/> +<Prop name="availableTagsDataPath" highlight="1"/> +<Prop name="availableTagsDataSet" highlight="1" reference="DataSet:id"/> +<Prop name="highlightRequiredTags" defaultValue="true" type="boolean"/> +<Prop name="requiredTags" highlight="1" type="[Ljava.lang.String;"/> +<Prop name="showAvailableTags" defaultValue="true" type="boolean"/> +<Prop name="textSeperator" defaultValue=","/></Props><ClientEvents> +<ClientEvent name="beforeTagAdd" parameters="self,arg"/> +<ClientEvent name="beforeUnknownTagAccept" parameters="self,arg"/> +<ClientEvent name="onUnknownTagAccept" parameters="self,arg"/> +<ClientEvent name="onTagAdd" parameters="self,arg"/> +<ClientEvent name="beforeTagRemove" parameters="self,arg"/> +<ClientEvent name="onTagRemove" parameters="self,arg"/></ClientEvents></Rule><Rule name="ColorPicker" parents="com.bstek.dorado.view.widget.Control" label="ColorPicker" type="com.bstek.dorado.view.widget.advance.ColorPicker" sortFactor="2073" category="Form" icon="/com/bstek/dorado/view/widget/advance/ColorPicker.png" clientTypes="desktop"><Props> +<Prop name="allowEmpty" type="boolean"/> +<Prop name="color"/> +<Prop name="disabled" type="boolean"/> +<Prop name="palette" enumValues="#sixteen,#websafe,#named" type="[Ljava.lang.String;"/> +<Prop name="preferredFormat" enumValues="none,hex,hex6,hsl,rgb,name"/> +<Prop name="showAlpha" type="boolean"/> +<Prop name="showButtons" defaultValue="true" type="boolean"/> +<Prop name="showInitial" type="boolean"/> +<Prop name="showInput" type="boolean"/> +<Prop name="showPalette" type="boolean"/> +<Prop name="showPaletteOnly" type="boolean"/></Props></Rule><Rule name="ColorEditor" parents="AbstractDataEditor" label="ColorEditor" type="com.bstek.dorado.view.widget.advance.ColorEditor" sortFactor="2074" category="Form" icon="/com/bstek/dorado/view/widget/advance/ColorEditor.png" clientTypes="desktop"><Props> +<Prop name="allowEmpty" type="boolean"/> +<Prop name="color"/> +<Prop name="disabled" type="boolean"/> +<Prop name="palette" enumValues="#sixteen,#websafe,#named" type="[Ljava.lang.String;"/> +<Prop name="preferredFormat" defaultValue="name" enumValues="none,hex,hex6,hsl,rgb,name"/> +<Prop name="showAlpha" type="boolean"/> +<Prop name="showButtons" defaultValue="true" type="boolean"/> +<Prop name="showInitial" type="boolean"/> +<Prop name="showInput" type="boolean"/> +<Prop name="showPalette" type="boolean"/> +<Prop name="showPaletteOnly" type="boolean"/></Props></Rule><Rule name="UploadAction" parents="Action" label="UploadAction" type="com.bstek.dorado.uploader.widget.UploadAction" sortFactor="2075" category="Action" icon="/com/bstek/dorado/uploader/widget/UploadAction.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> +<Prop name="autoUpload" defaultValue="true" type="boolean"/> +<Prop name="confirmMessage" visible="false"/> +<Prop name="fileResolver" highlight="1"/> +<Prop name="headers" editor="pojo" type="java.util.Map"/> +<Prop name="hotkey" visible="false"/> +<Prop name="maxFileSize" defaultValue="100MB"/> +<Prop name="runtimes" defaultValue="html5,flash,silverlight,gears,browserplus,html4" visible="false"/> +<Prop name="selectionMode" defaultValue="singleFile" enumValues="singleFile,multiFiles"/> +<Prop name="url" defaultValue=">dorado/uploader/fileupload" visible="false"/></Props><ClientEvents> +<ClientEvent name="beforeExecute" parameters="self,arg" deprecated="true"/> +<ClientEvent name="onStateChanged" parameters="self,arg"/> +<ClientEvent name="onError" parameters="self,arg"/> +<ClientEvent name="onRefresh" parameters="self,arg"/> +<ClientEvent name="onExecute" parameters="self,arg" deprecated="true"/> +<ClientEvent name="onChunkUploaded" parameters="self,arg"/> +<ClientEvent name="onFailure" parameters="self,arg" deprecated="true"/> +<ClientEvent name="beforeInit" parameters="self,arg"/> +<ClientEvent name="onFilesAdded" parameters="self,arg"/> +<ClientEvent name="onFilesRemoved" parameters="self,arg"/> +<ClientEvent name="onQueueChanged" parameters="self,arg"/> +<ClientEvent name="beforeFileUpload" parameters="self,arg"/> +<ClientEvent name="onInit" parameters="self,arg"/> +<ClientEvent name="beforeFileUploaded" parameters="self,arg"/> +<ClientEvent name="onUploadProgress" parameters="self,arg"/> +<ClientEvent name="onFileUploaded" parameters="self,arg"/> +<ClientEvent name="onUploadComplete" parameters="self,arg"/> +<ClientEvent name="onSuccess" parameters="self,arg" deprecated="true"/></ClientEvents><Children><Child name="Filters" fixed="true"><Rule name="Wrapper.Filters" label="Filters" nodeName="Filters"><Children><Child rule="Filter" name="Filters" aggregated="true"></Child></Children></Rule></Child></Children></Rule><Rule name="DownloadAction" parents="FormSubmitAction" label="DownloadAction" type="com.bstek.dorado.uploader.widget.DownloadAction" sortFactor="2076" category="Action" icon="/com/bstek/dorado/uploader/widget/DownloadAction.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> +<Prop name="action" defaultValue=">dorado/uploader/filedownload" visible="false"/> +<Prop name="fileProvider" highlight="1"/> +<Prop name="inlineMode" defaultValue="off" enumValues="none,off,browser"/></Props></Rule><Rule name="Intro" parents="Component" label="Intro" type="com.bstek.dorado.intro.Intro" sortFactor="2077" category="Advance" icon="/com/bstek/dorado/intro/Intro.png" clientTypes="desktop,touch"><Props> +<Prop name="doneLabel"/> +<Prop name="exitOnEsc" defaultValue="true" type="boolean"/> +<Prop name="exitOnOverlayClick" defaultValue="true" type="boolean"/> +<Prop name="name"/> +<Prop name="nextLabel"/> +<Prop name="prevLabel"/> +<Prop name="showNextButton" defaultValue="true" type="boolean"/> +<Prop name="showPrevButton" defaultValue="true" type="boolean"/> +<Prop name="showSkipButton" defaultValue="true" type="boolean"/> +<Prop name="showStepNumbers" defaultValue="true" type="boolean"/> +<Prop name="skipLabel"/> +<Prop name="tooltipClass"/> +<Prop name="tooltipPosition" highlight="1" enumValues="left,top,right,bottom" deprecated="true"/></Props><ClientEvents> +<ClientEvent name="onStart" parameters="self,arg"/> +<ClientEvent name="onChange" parameters="self,arg"/> +<ClientEvent name="onExit" parameters="self,arg"/> +<ClientEvent name="onBeforeStart" parameters="self,arg"/> +<ClientEvent name="onComplete" parameters="self,arg"/> +<ClientEvent name="onBeforeChange" parameters="self,arg"/></ClientEvents><Children><Child rule="Step" name="Step" aggregated="true"></Child><Child rule="Step" name="Steps" aggregated="true"></Child></Children></Rule><Rule name="Step" label="Step" type="com.bstek.dorado.intro.Step" sortFactor="2078" icon="/com/bstek/dorado/intro/Step.png" clientTypes="desktop,touch"><Props> +<Prop name="arrowAlign" enumValues="left,top,center,right,bottom"/> +<Prop name="arrowDirection" enumValues="left,top,right,bottom"/> +<Prop name="element" highlight="1"/> +<Prop name="ignored" type="boolean"/> +<Prop name="intro" editor="multiLines"/> +<Prop name="name"/> +<Prop name="position" enumValues="left,top,right,bottom" deprecated="true"/> +<Prop name="tags"/><Prop name="tooltipPosition" type="java.util.Map" compositeType="Open"></Prop> +<Prop name="userData" type="java.lang.Object"/></Props></Rule><Rule name="SwfViewer" parents="com.bstek.dorado.view.widget.Control" label="SwfViewer" type="com.bstek.bdf2.swfviewer.widget.SwfViewer" sortFactor="2079" category="BDF2" clientTypes="desktop"><Props> +<Prop name="attributes"/> +<Prop name="expressInstallSwfurl"/> +<Prop name="flashvars"/> +<Prop name="handlerName"/> +<Prop name="height" defaultValue="400"/> +<Prop name="parameter"/> +<Prop name="params"/> +<Prop name="printEnabled" defaultValue="true" type="boolean"/> +<Prop name="showType" defaultValue="complex" enumValues="simple,complex"/> +<Prop name="swfUrl" highlight="1"/> +<Prop name="version"/> +<Prop name="width" defaultValue="400"/></Props></Rule><Rule name="Export2ReportAction" parents="AjaxAction" label="Export2ReportAction" type="com.bstek.bdf2.export.view.Export2ReportAction" sortFactor="2080" category="BDF2" icon="/com/bstek/bdf2/export/view/Export2ReportAction.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> +<Prop name="autoDownload" defaultValue="true" type="boolean"/> +<Prop name="batchable" defaultValue="true" type="boolean"/> +<Prop name="dataBgColor" defaultValue="#FFFFFF"/> +<Prop name="dataFontColor" defaultValue="#000000"/> +<Prop name="dataFontSize" defaultValue="10" type="int"/> +<Prop name="dataScope" defaultValue="currentPage" enumValues="currentPage,serverAll"/> +<Prop name="extension" defaultValue="xls" enumValues="xls,xlsx,pdf,csv"/> +<Prop name="fileName"/> +<Prop name="headerBgColor" defaultValue="#D8D8D8"/> +<Prop name="headerFontColor" defaultValue="#000000"/> +<Prop name="headerFontSize" defaultValue="10" type="int"/> +<Prop name="interceptorName"/> +<Prop name="maxSize" defaultValue="1000" type="int"/> +<Prop name="rowSpace" defaultValue="1" type="int"/> +<Prop name="showPageNumber" defaultValue="true" type="boolean"/> +<Prop name="showTitle" defaultValue="false" type="boolean"/> +<Prop name="template" highlight="1"/> +<Prop name="timeout" type="long"/> +<Prop name="titleBgColor" defaultValue="#FFFFFF"/> +<Prop name="titleFontColor" defaultValue="#000000"/> +<Prop name="titleFontSize" defaultValue="18" type="int"/> +<Prop name="titleName"/></Props><ClientEvents> +<ClientEvent name="onGetExportElement" parameters="self,arg"/> +<ClientEvent name="onGetExportData" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractViewElement" abstract="true" type="com.bstek.dorado.view.AbstractViewElement"><PrimitiveProps> +<Prop name="id" highlight="1"/></PrimitiveProps><Props> +<Prop name="ignored" type="boolean"/><Prop name="metaData" type="java.util.Map" compositeType="Open"></Prop> +<Prop name="tags"/> +<Prop name="userData" type="java.lang.Object"/></Props></Rule><Rule name="ClientEventSupportedElement" parents="AbstractViewElement" abstract="true" type="com.bstek.dorado.view.ClientEventSupportedElement"></Rule><Rule name="Component" parents="ClientEventSupportedElement" abstract="true" type="com.bstek.dorado.view.widget.Component" scope="protected"><PrimitiveProps> +<Prop name="listener"/></PrimitiveProps><Props> +<Prop name="userData" editor="any" type="java.lang.Object"/></Props><ClientEvents> +<ClientEvent name="onCreate" parameters="self,arg"/> +<ClientEvent name="onAttributeChange" parameters="self,arg"/> +<ClientEvent name="onDestroy" parameters="self,arg"/> +<ClientEvent name="onReady" parameters="self,arg"/></ClientEvents></Rule><Rule name="com.bstek.dorado.view.widget.Control" parents="Component" abstract="true" type="com.bstek.dorado.view.widget.Control" scope="protected" icon="/com/bstek/dorado/view/widget/Control.png" clientTypes="desktop"><PrimitiveProps> +<Prop name="listener"/></PrimitiveProps><Props> +<Prop name="className"/> +<Prop name="dragTags"/> +<Prop name="draggable" type="boolean"/> +<Prop name="droppable" type="boolean"/> +<Prop name="droppableTags"/> +<Prop name="exClassName"/> +<Prop name="height"/> +<Prop name="hideMode" defaultValue="visibility" enumValues="visibility,display"/> +<Prop name="layoutConstraint" type="java.lang.Object"/> +<Prop name="lazyInit" type="java.lang.Boolean"/> +<Prop name="renderOn"/> +<Prop name="renderTo"/><Prop name="style" type="java.util.Map" compositeType="Open"></Prop> +<Prop name="tip"/> +<Prop name="ui" defaultValue="default"/> +<Prop name="visible" type="java.lang.Boolean"/> +<Prop name="width"/></Props><ClientEvents> +<ClientEvent name="onKeyDown" parameters="self,arg"/> +<ClientEvent name="onClick" parameters="self,arg" clientTypes="desktop"/> +<ClientEvent name="onKeyPress" parameters="self,arg"/> +<ClientEvent name="beforeRefreshDom" parameters="self,arg"/> +<ClientEvent name="onRefreshDom" parameters="self,arg"/> +<ClientEvent name="onDragMove" parameters="self,arg"/> +<ClientEvent name="onSwipe" parameters="self,arg" clientTypes="touch"/> +<ClientEvent name="onDoubleClick" parameters="self,arg" clientTypes="desktop"/> +<ClientEvent name="onDraggingSourceOver" parameters="self,arg"/> +<ClientEvent name="onTap" parameters="self,arg" clientTypes="touch"/> +<ClientEvent name="onGetDraggingIndicator" parameters="self,arg"/> +<ClientEvent name="onDraggingSourceMove" parameters="self,arg"/> +<ClientEvent name="onCreateDom" parameters="self,arg"/> +<ClientEvent name="onDraggingSourceOut" parameters="self,arg"/> +<ClientEvent name="onDragStart" parameters="self,arg"/> +<ClientEvent name="onMouseDown" parameters="self,arg"/> +<ClientEvent name="onContextMenu" parameters="self,arg"/> +<ClientEvent name="beforeDraggingSourceDrop" parameters="self,arg"/> +<ClientEvent name="onTapHold" parameters="self,arg" clientTypes="touch"/> +<ClientEvent name="onDraggingSourceDrop" parameters="self,arg"/> +<ClientEvent name="onFocus" parameters="self,arg"/> +<ClientEvent name="onDoubleTap" parameters="self,arg" clientTypes="touch"/> +<ClientEvent name="onBlur" parameters="self,arg"/> +<ClientEvent name="onResize" parameters="self,arg"/> +<ClientEvent name="onDragStop" parameters="self,arg"/> +<ClientEvent name="onMouseUp" parameters="self,arg"/></ClientEvents></Rule><Rule name="AsyncAction" parents="Action" abstract="true" type="com.bstek.dorado.view.widget.action.AsyncAction" scope="protected"><Props> +<Prop name="async" defaultValue="true" type="boolean"/> +<Prop name="executingMessage"/> +<Prop name="modal" defaultValue="true" type="boolean"/></Props></Rule><Rule name="UpdateItem" label="UpdateItem" type="com.bstek.dorado.view.widget.action.UpdateItem" icon="/com/bstek/dorado/view/widget/action/UpdateItem.png"><Props> +<Prop name="alias"/> +<Prop name="autoResetEntityState" defaultValue="true" type="boolean"/> +<Prop name="dataPath" defaultValue="!DIRTY_TREE" enumValues="!DIRTY_TREE,!CASCADE_DIRTY,[#dirty],[#all],[#visible],[#current]"/> +<Prop name="dataSet" highlight="1" reference="DataSet:id"/> +<Prop name="firstResultOnly" type="boolean"/> +<Prop name="refreshMode" defaultValue="value" enumValues="none,state,value,cascade"/> +<Prop name="submitDeletedEntity" type="java.lang.Boolean"/> +<Prop name="submitOldData" type="boolean"/> +<Prop name="submitSimplePropertyOnly" type="boolean"/> +<Prop name="validateData" defaultValue="true" type="boolean"/></Props></Rule><Rule name="AbstractButton" parents="com.bstek.dorado.view.widget.Control" abstract="true" type="com.bstek.dorado.view.widget.base.AbstractButton" scope="protected" clientTypes="desktop"><Props> +<Prop name="action" highlight="1" reference="Action:id"/> +<Prop name="disabled" type="boolean"/> +<Prop name="menu" reference="Menu:id"/> +<Prop name="toggleOnShowMenu" defaultValue="true" type="boolean"/> +<Prop name="toggleable" type="boolean"/> +<Prop name="toggled" type="boolean"/></Props></Rule><Rule name="AbstractPanel" parents="Container" abstract="true" type="com.bstek.dorado.view.widget.base.AbstractPanel" scope="protected" clientTypes="desktop"><Props> +<Prop name="buttonAlign" defaultValue="center" enumValues="left,center,right"/> +<Prop name="caption"/> +<Prop name="collapseable" defaultValue="true" type="boolean"/> +<Prop name="collapsed" defaultValue="false" type="boolean"/> +<Prop name="lazyInitChildren" type="boolean"/></Props><ClientEvents> +<ClientEvent name="onCollapsedChange" parameters="self,arg"/> +<ClientEvent name="beforeCollapsedChange" parameters="self,arg"/></ClientEvents><Children><Child name="Buttons" fixed="true"><Rule name="Wrapper.Buttons" label="Buttons" nodeName="Buttons" icon="/com/bstek/dorado/view/widget/base/Buttons.png"><Children><Child rule="Button" name="Buttons" aggregated="true"></Child></Children></Rule></Child><Child name="Children" fixed="true"><Rule name="Wrapper.Children" label="Children" nodeName="Children" icon="/com/bstek/dorado/view/widget/base/Children.png"><Children><Child rule="Component" name="Children" aggregated="true"></Child></Children></Rule></Child></Children></Rule><Rule name="ControlTab" parents="Tab" label="ControlTab" type="com.bstek.dorado.view.widget.base.tab.ControlTab" scope="protected" icon="/com/bstek/dorado/view/widget/base/tab/ControlTab.png"><Children><Child rule="com.bstek.dorado.view.widget.Control" name="Control"></Child></Children></Rule><Rule name="Tab" parents="ClientEventSupportedElement" label="Tab" type="com.bstek.dorado.view.widget.base.tab.Tab" scope="protected" icon="/com/bstek/dorado/view/widget/base/tab/Tab.png"><Props> +<Prop name="caption" highlight="1"/> +<Prop name="className"/> +<Prop name="closeable" type="boolean"/> +<Prop name="disabled" type="boolean"/> +<Prop name="exClassName" deprecated="true"/> +<Prop name="height"/> +<Prop name="icon"/> +<Prop name="iconClass"/> +<Prop name="name"/><Prop name="style" type="java.util.Map" compositeType="Open"></Prop> +<Prop name="tip"/> +<Prop name="visible" defaultValue="true" type="boolean"/> +<Prop name="width"/></Props><ClientEvents> +<ClientEvent name="onClose" parameters="self,arg"/> +<ClientEvent name="onClick" parameters="self,arg"/> +<ClientEvent name="beforeClose" parameters="self,arg"/></ClientEvents></Rule><Rule name="IFrameTab" parents="Tab" label="IFrameTab" type="com.bstek.dorado.view.widget.base.tab.IFrameTab" scope="protected" icon="/com/bstek/dorado/view/widget/base/tab/IFrameTab.png"><Props> +<Prop name="iframeHeight" type="java.lang.Integer"/> +<Prop name="path" highlight="1"/></Props></Rule><Rule name="AbstractTabControl" parents="com.bstek.dorado.view.widget.Control" abstract="true" type="com.bstek.dorado.view.widget.base.tab.AbstractTabControl" scope="protected" clientTypes="desktop"><Props> +<Prop name="alwaysShowNavButtons" type="boolean"/> +<Prop name="currentTab" type="int"/></Props><ClientEvents> +<ClientEvent name="onTabContextMenu" parameters="self,arg"/> +<ClientEvent name="onTabChange" parameters="self,arg"/> +<ClientEvent name="onTabRemove" parameters="self,arg"/> +<ClientEvent name="beforeTabChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="com.bstek.dorado.view.widget.base.toolbar.Label" parents="com.bstek.dorado.view.widget.Control" label="Label" nodeName="ToolBarLabel" type="com.bstek.dorado.view.widget.base.toolbar.Label" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Label.png" clientTypes="desktop"><Props> +<Prop name="text"/></Props></Rule><Rule name="MenuButton" parents="Button" label="MenuButton" nodeName="MenuButton" type="com.bstek.dorado.view.widget.base.toolbar.MenuButton" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/MenuButton.png" clientTypes="desktop"><Props> +<Prop name="hideMenuOnMouseLeave" type="boolean"/> +<Prop name="hideMenuOnMouseLeaveDelay" defaultValue="300" type="int"/> +<Prop name="menu" deprecated="true" visible="false"/> +<Prop name="showMenuOnHover" defaultValue="false" type="boolean"/></Props><Children><Child rule="BaseMenuItem" name="Items" aggregated="true"></Child></Children></Rule><Rule name="BaseMenuItem" parents="ClientEventSupportedElement" abstract="true" type="com.bstek.dorado.view.widget.base.menu.BaseMenuItem"><Props> +<Prop name="className"/> +<Prop name="exClassName"/> +<Prop name="height"/> +<Prop name="name"/><Prop name="style" type="java.util.Map" compositeType="Open"></Prop> +<Prop name="tip"/> +<Prop name="visible" defaultValue="true" type="boolean"/> +<Prop name="width"/></Props></Rule><Rule name="Separator" parents="BaseMenuItem" label="Separator" type="com.bstek.dorado.view.widget.base.menu.Separator" icon="/com/bstek/dorado/view/widget/base/menu/Separator.png" clientTypes="desktop,touch"></Rule><Rule name="CheckableMenuItem" parents="MenuItem" label="CheckableMenuItem" type="com.bstek.dorado.view.widget.base.menu.CheckableMenuItem" icon="/com/bstek/dorado/view/widget/base/menu/CheckableMenuItem.png" clientTypes="desktop"><Props> +<Prop name="checked" type="boolean"/> +<Prop name="group"/></Props><ClientEvents> +<ClientEvent name="onCheckedChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="TextMenuItem" parents="BaseMenuItem" abstract="true" type="com.bstek.dorado.view.widget.base.menu.TextMenuItem"><Props> +<Prop name="action" reference="Action:id"/> +<Prop name="caption"/> +<Prop name="disabled" type="boolean"/> +<Prop name="hideOnClick" defaultValue="true" type="boolean"/> +<Prop name="icon"/> +<Prop name="iconClass"/></Props><ClientEvents> +<ClientEvent name="onClick" parameters="self,arg"/></ClientEvents></Rule><Rule name="MenuItem" parents="TextMenuItem" label="MenuItem" type="com.bstek.dorado.view.widget.base.menu.MenuItem" icon="/com/bstek/dorado/view/widget/base/menu/MenuItem.png" clientTypes="desktop"><Children><Child rule="BaseMenuItem" name="Items" aggregated="true"></Child></Children></Rule><Rule name="ControlMenuItem" parents="TextMenuItem" label="ControlMenuItem" type="com.bstek.dorado.view.widget.base.menu.ControlMenuItem" icon="/com/bstek/dorado/view/widget/base/menu/ControlMenuItem.png" clientTypes="desktop"><Children><Child rule="FloatControl" name="Control"></Child></Children></Rule><Rule name="FloatControl" abstract="true" type="com.bstek.dorado.view.widget.FloatControl"><Props> +<Prop name="align" enumValues="left,innerleft,center,innerright,top" visible="false"/> +<Prop name="anchorTarget" visible="false"/> +<Prop name="animateTarget" visible="false"/> +<Prop name="animateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="autoAdjustPosition" type="boolean"/> +<Prop name="center" type="boolean"/> +<Prop name="continuedFocus" type="boolean"/> +<Prop name="floating" type="boolean"/> +<Prop name="floatingClassName"/> +<Prop name="focusAfterShow" type="boolean"/> +<Prop name="handleOverflow" visible="false" type="boolean"/> +<Prop name="hideAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="left" type="int"/> +<Prop name="modal" type="boolean"/> +<Prop name="modalType" enumValues="dark,transparent"/> +<Prop name="offsetLeft" type="int"/> +<Prop name="offsetTop" type="int"/> +<Prop name="shadowMode" enumValues="drop,sides,frame,none"/> +<Prop name="showAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> +<Prop name="top" type="int"/> +<Prop name="vAlign" enumValues="top,innertop,center,innerbottom,bottom" visible="false"/></Props></Rule><Rule name="Fill" parents="com.bstek.dorado.view.widget.Control" label="Fill" type="com.bstek.dorado.view.widget.base.toolbar.Fill" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Fill.png" clientTypes="desktop"></Rule><Rule name="com.bstek.dorado.view.widget.base.toolbar.Button" parents="Button" label="ToolBarButton" nodeName="ToolBarButton" type="com.bstek.dorado.view.widget.base.toolbar.Button" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Button.png" clientTypes="desktop"><Props> +<Prop name="hideMenuOnMouseLeave" type="boolean"/> +<Prop name="hideMenuOnMouseLeaveDelay" defaultValue="300" type="int"/> +<Prop name="showMenuOnHover" defaultValue="false" type="boolean"/></Props></Rule><Rule name="com.bstek.dorado.view.widget.base.toolbar.Separator" parents="com.bstek.dorado.view.widget.Control" label="Separator" type="com.bstek.dorado.view.widget.base.toolbar.Separator" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Separator.png" clientTypes="desktop"></Rule><Rule name="Section" parents="ClientEventSupportedElement" label="Section" type="com.bstek.dorado.view.widget.base.accordion.Section" icon="/com/bstek/dorado/view/widget/base/accordion/Section.png"><Props> +<Prop name="caption"/> +<Prop name="className"/> +<Prop name="disabled" type="boolean"/> +<Prop name="exClassName"/> +<Prop name="icon"/> +<Prop name="iconClass"/> +<Prop name="name"/><Prop name="style" type="java.util.Map" compositeType="Open"></Prop> +<Prop name="tip"/> +<Prop name="visible" defaultValue="true" type="boolean"/></Props><ClientEvents> +<ClientEvent name="onCaptionClick" parameters="self,arg"/></ClientEvents><Children><Child rule="com.bstek.dorado.view.widget.Control" name="Control"></Child></Children></Rule><Rule name="AbstractDataControl" parents="com.bstek.dorado.view.widget.Control" abstract="true" type="com.bstek.dorado.view.widget.datacontrol.AbstractDataControl" scope="protected" clientTypes="desktop"><Props> +<Prop name="dataPath" highlight="1"/> +<Prop name="dataSet" highlight="1" reference="DataSet:id"/></Props><ClientEvents> +<ClientEvent name="onGetBindingData" parameters="self,arg"/> +<ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractPropertyDataControl" parents="AbstractDataControl" abstract="true" type="com.bstek.dorado.view.widget.datacontrol.AbstractPropertyDataControl" scope="protected" clientTypes="desktop"><Props> +<Prop name="property" highlight="1"/></Props><ClientEvents> +<ClientEvent name="onGetBindingData" parameters="self,arg"/> +<ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractEditor" parents="com.bstek.dorado.view.widget.Control" abstract="true" type="com.bstek.dorado.view.widget.form.AbstractEditor" scope="protected" clientTypes="desktop"><Props> +<Prop name="readOnly" type="boolean"/> +<Prop name="supportsDirtyFlag" defaultValue="true" type="boolean"/></Props><ClientEvents> +<ClientEvent name="onPost" parameters="self,arg"/> +<ClientEvent name="beforePost" parameters="self,arg"/> +<ClientEvent name="onPostFailed" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractDataEditor" parents="AbstractEditor" abstract="true" type="com.bstek.dorado.view.widget.form.AbstractDataEditor" scope="protected" clientTypes="desktop"><Props> +<Prop name="dataPath" highlight="1"/> +<Prop name="dataSet" highlight="1" reference="DataSet:id"/> +<Prop name="property" highlight="1"/></Props><ClientEvents> +<ClientEvent name="onGetBindingData" parameters="self,arg"/> +<ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractTextBox" parents="AbstractDataEditor" abstract="true" type="com.bstek.dorado.view.widget.form.AbstractTextBox" scope="protected" clientTypes="desktop"><Props> +<Prop name="text"/> +<Prop name="trigger" enumValues="triggerClear,autoMappingDropDown1,autoMappingDropDown2,autoOpenMappingDropDown1,autoOpenMappingDropDown2,defaultDateDropDown,defaultDateTimeDropDown,defaultYearMonthDropDown,defaultYearDropDown,defaultMonthDropDown" reference="Trigger:id"/></Props><ClientEvents> +<ClientEvent name="onValidationStateChange" parameters="self,arg"/> +<ClientEvent name="onTriggerClick" parameters="self,arg"/> +<ClientEvent name="onTextEdit" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractTextEditor" parents="AbstractTextBox" abstract="true" type="com.bstek.dorado.view.widget.form.AbstractTextEditor" scope="protected" clientTypes="desktop"><Props> +<Prop name="blankText"/> +<Prop name="editable" defaultValue="true" type="boolean"/> +<Prop name="maxLength" type="int"/> +<Prop name="minLength" type="int"/> +<Prop name="required" type="boolean"/> +<Prop name="selectTextOnFocus" defaultValue="true" type="boolean"/></Props></Rule><Rule name="RadioButton" label="RadioButton" type="com.bstek.dorado.view.widget.form.RadioButton" icon="/com/bstek/dorado/view/widget/form/RadioButton.png"><Props> +<Prop name="readOnly" type="boolean"/> +<Prop name="text"/> +<Prop name="value" type="java.lang.Object"/></Props></Rule><Rule name="AutoFormElement" parents="FormElement" label="AutoFormElement" type="com.bstek.dorado.view.widget.form.autoform.AutoFormElement" scope="protected" category="AutoForm" icon="/com/bstek/dorado/view/widget/form/autoform/AutoFormElement.png" labelProperty="id,name,property" clientTypes="desktop,touch"><Props> +<Prop name="name"/></Props></Rule><Rule name="Spinner" parents="AbstractTextBox" abstract="true" type="com.bstek.dorado.view.widget.form.Spinner" scope="protected" clientTypes="desktop"><Props> +<Prop name="postValueOnSpin" defaultValue="true" type="boolean"/> +<Prop name="showSpinTrigger" defaultValue="true" type="boolean"/> +<Prop name="step" defaultValue="1" type="int"/></Props></Rule><Rule name="DropDown" parents="Trigger" abstract="true" type="com.bstek.dorado.view.widget.form.trigger.DropDown" scope="protected"><Props> +<Prop name="assignmentMap"/> +<Prop name="autoOpen" type="boolean"/> +<Prop name="height" type="int"/> +<Prop name="maxHeight" type="int"/> +<Prop name="maxWidth" type="int"/> +<Prop name="minHeight" type="int"/> +<Prop name="minWidth" type="int"/> +<Prop name="postValueOnSelect" defaultValue="true" type="boolean"/> +<Prop name="width" type="int"/></Props><ClientEvents> +<ClientEvent name="onValueSelect" parameters="self,arg"/> +<ClientEvent name="onClose" parameters="self,arg"/> +<ClientEvent name="onOpen" parameters="self,arg"/></ClientEvents></Rule><Rule name="RowListDropDown" parents="DropDown" abstract="true" type="com.bstek.dorado.view.widget.form.trigger.RowListDropDown" scope="protected"><Props> +<Prop name="displayProperty"/> +<Prop name="dynaFilter" type="boolean"/> +<Prop name="filterOnOpen" type="boolean"/> +<Prop name="filterOnTyping" defaultValue="true" type="boolean"/> +<Prop name="minFilterInterval" defaultValue="300" type="int"/> +<Prop name="property" highlight="1"/> +<Prop name="useEmptyItem" type="boolean"/></Props><ClientEvents> +<ClientEvent name="onFilterItems" parameters="self,arg"/> +<ClientEvent name="onFilterItem" parameters="self,arg"/></ClientEvents><Children><Child rule="Column" name="Columns" aggregated="true"></Child></Children></Rule><Rule name="Column" parents="ClientEventSupportedElement" abstract="true" type="com.bstek.dorado.view.widget.grid.Column"><Props> +<Prop name="align" enumValues="left,center,right"/> +<Prop name="caption"/> +<Prop name="headerAlign" defaultValue="center" enumValues="left,center,right"/> +<Prop name="headerRenderer"/> +<Prop name="name"/> +<Prop name="supportsOptionMenu" defaultValue="true" type="boolean"/> +<Prop name="visible" defaultValue="true" type="boolean"/></Props><ClientEvents> +<ClientEvent name="onGetCellEditor" parameters="self,arg"/> +<ClientEvent name="onHeaderClick" parameters="self,arg"/> +<ClientEvent name="onRenderHeaderCell" parameters="self,arg"/></ClientEvents></Rule><Rule name="DataColumn" parents="AbstractDataColumn" label="DataColumn" type="com.bstek.dorado.view.widget.grid.DataColumn" icon="/com/bstek/dorado/view/widget/grid/DataColumn.png" labelProperty="name,property"><Props> +<Prop name="align" enumValues="left,center,right"/> +<Prop name="dataType" type="com.bstek.dorado.data.type.DataType"/> +<Prop name="defaultFilterOperator"/> +<Prop name="displayFormat"/> +<Prop name="editable" defaultValue="true" type="boolean"/> +<Prop name="editorType" defaultValue="TextEditor" highlight="1" enumValues="None,TextEditor,PasswordEditor,TextArea,CheckBox,RadioGroup,NumberSpinner"/> +<Prop name="filterable" defaultValue="true" type="boolean"/> +<Prop name="property" highlight="1"/> +<Prop name="readOnly" type="boolean"/> +<Prop name="required" type="boolean"/> +<Prop name="sortState" defaultValue="none" enumValues="none,asc,desc"/> +<Prop name="summaryType" enumValues="sum,average,count,max,min"/> +<Prop name="trigger" enumValues="triggerClear,autoMappingDropDown1,autoMappingDropDown2,autoOpenMappingDropDown1,autoOpenMappingDropDown2,defaultDateDropDown,defaultDateTimeDropDown,defaultYearMonthDropDown,defaultYearDropDown,defaultMonthDropDown" reference="Trigger:id"/> +<Prop name="typeFormat"/> +<Prop name="wrappable" type="boolean"/></Props><Children><Child name="Editor" fixed="true"><Rule name="Wrapper.Editor" label="Editor" nodeName="Editor" icon="/com/bstek/dorado/view/widget/grid/Editor.png"><Children><Child rule="com.bstek.dorado.view.widget.Control" name="Editor"></Child></Children></Rule></Child></Children></Rule><Rule name="AbstractDataColumn" parents="Column" abstract="true" type="com.bstek.dorado.view.widget.grid.AbstractDataColumn"><Props> +<Prop name="filterBarRenderer"/> +<Prop name="footerRenderer"/> +<Prop name="renderer"/> +<Prop name="resizeable" defaultValue="true" type="boolean"/> +<Prop name="width"/></Props><ClientEvents> +<ClientEvent name="onRenderFooterCell" parameters="self,arg"/> +<ClientEvent name="onRenderCell" parameters="self,arg"/></ClientEvents></Rule><Rule name="ColumnGroup" parents="Column" label="ColumnGroup" type="com.bstek.dorado.view.widget.grid.ColumnGroup" icon="/com/bstek/dorado/view/widget/grid/ColumnGroup.png"><Props> +<Prop name="align" enumValues="left,center,right" visible="false"/></Props><Children><Child rule="Column" name="Columns" aggregated="true"></Child></Children></Rule><Rule name="IndicatorColumn" parents="AbstractDataColumn" label="IndicatorColumn" type="com.bstek.dorado.view.widget.grid.IndicatorColumn" icon="/com/bstek/dorado/view/widget/grid/IndicatorColumn.png"></Rule><Rule name="RowSelectorColumn" parents="AbstractDataColumn" label="RowSelectorColumn" type="com.bstek.dorado.view.widget.grid.RowSelectorColumn" icon="/com/bstek/dorado/view/widget/grid/RowSelectorColumn.png"></Rule><Rule name="RowNumColumn" parents="AbstractDataColumn" label="RowNumColumn" type="com.bstek.dorado.view.widget.grid.RowNumColumn" icon="/com/bstek/dorado/view/widget/grid/RowNumColumn.png"></Rule><Rule name="AbstractList" parents="com.bstek.dorado.view.widget.Control" abstract="true" type="com.bstek.dorado.view.widget.list.AbstractList" scope="protected" clientTypes="desktop"><Props> +<Prop name="allowNoCurrent" type="boolean"/> +<Prop name="dragMode" defaultValue="item" enumValues="item,control,itemOrControl"/> +<Prop name="dropMode" defaultValue="insertItems" enumValues="onControl,onItem,insertItems,onOrInsertItems,onAnyWhere"/> +<Prop name="scrollMode" defaultValue="lazyRender" enumValues="simple,lazyRender,viewport"/> +<Prop name="selectionMode" defaultValue="none" enumValues="none,singleRow,multiRows"/> +<Prop name="useNativeScrollbars" type="boolean"/></Props><ClientEvents> +<ClientEvent name="onCompareItems" parameters="self,arg"/> +<ClientEvent name="onCurrentChange" parameters="self,arg"/> +<ClientEvent name="onFilterItem" parameters="self,arg"/> +<ClientEvent name="onSelectionChange" parameters="self,arg"/> +<ClientEvent name="beforeSelectionChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="RowList" parents="AbstractList" abstract="true" type="com.bstek.dorado.view.widget.list.RowList" scope="protected" clientTypes="desktop"><Props> +<Prop name="highlightCurrentRow" defaultValue="true" type="boolean"/> +<Prop name="highlightHoverRow" defaultValue="true" type="boolean"/> +<Prop name="highlightSelectedRow" defaultValue="true" type="boolean"/> +<Prop name="rowHeight" type="int"/></Props><ClientEvents> +<ClientEvent name="onDataRowClick" parameters="self,arg"/> +<ClientEvent name="onDataRowDoubleClick" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractListBox" parents="RowList" abstract="true" type="com.bstek.dorado.view.widget.list.AbstractListBox" scope="protected" clientTypes="desktop"><Props> +<Prop name="property"/> +<Prop name="renderer"/></Props><ClientEvents> +<ClientEvent name="onRenderRow" parameters="self,arg"/></ClientEvents></Rule><Rule name="GridSupport" parents="RowList" abstract="true" type="com.bstek.dorado.view.widget.grid.GridSupport" scope="protected" clientTypes="desktop"><Props> +<Prop name="cellRenderer"/> +<Prop name="dynaRowHeight" type="boolean"/> +<Prop name="fixedColumnCount" type="int"/> +<Prop name="footerRenderer"/> +<Prop name="footerRowHeight" type="int"/> +<Prop name="headerRenderer"/> +<Prop name="headerRowHeight" type="int"/> +<Prop name="readOnly" type="boolean"/> +<Prop name="rowRenderer"/> +<Prop name="showFooter" type="boolean"/> +<Prop name="showHeader" defaultValue="true" type="boolean"/> +<Prop name="stretchColumnsMode" defaultValue="auto" enumValues="auto,off,stretchableColumns,lastColumn,allColumns,allResizeableColumns"/></Props><ClientEvents> +<ClientEvent name="beforeCellValueEdit" parameters="self,arg"/> +<ClientEvent name="onGetCellEditor" parameters="self,arg"/> +<ClientEvent name="onRenderRow" parameters="self,arg"/> +<ClientEvent name="onRenderFooterCell" parameters="self,arg"/> +<ClientEvent name="onCellValueEdit" parameters="self,arg"/> +<ClientEvent name="onRenderCell" parameters="self,arg"/> +<ClientEvent name="onHeaderClick" parameters="self,arg"/> +<ClientEvent name="onRenderHeaderCell" parameters="self,arg"/></ClientEvents><Children><Child rule="Column" name="Columns" aggregated="true"></Child></Children></Rule><Rule name="AbstractGrid" parents="GridSupport" abstract="true" type="com.bstek.dorado.view.widget.grid.AbstractGrid" scope="protected" clientTypes="desktop"><Props> +<Prop name="filterBarRenderer"/> +<Prop name="groupFooterRenderer"/> +<Prop name="groupHeaderRenderer"/> +<Prop name="groupOnSort" defaultValue="true" type="boolean"/> +<Prop name="groupProperty"/> +<Prop name="showFilterBar" type="boolean"/> +<Prop name="showGroupFooter" type="boolean"/></Props></Rule><Rule name="AbstractTree" parents="RowList" abstract="true" type="com.bstek.dorado.view.widget.tree.AbstractTree" scope="protected" clientTypes="desktop"><Props> +<Prop name="defaultExpandedIcon"/> +<Prop name="defaultExpandedIconClass"/> +<Prop name="defaultIcon"/> +<Prop name="defaultIconClass"/> +<Prop name="dropMode" defaultValue="onItem" enumValues="onControl,onItem,insertItems,onOrInsertItems,onAnyWhere"/> +<Prop name="expandingAnimated" defaultValue="true" type="boolean"/> +<Prop name="expandingMode" defaultValue="async" enumValues="async,sync"/> +<Prop name="indent" type="int"/> +<Prop name="renderer"/> +<Prop name="scrollMode" enumValues="simple,lazyRender,viewport"/> +<Prop name="showLines" type="boolean"/></Props><ClientEvents> +<ClientEvent name="onRenderNode" parameters="self,arg"/> +<ClientEvent name="onCollapse" parameters="self,arg"/> +<ClientEvent name="onNodeAttached" parameters="self,arg"/> +<ClientEvent name="beforeNodeCheckedChange" parameters="self,arg"/> +<ClientEvent name="onExpand" parameters="self,arg"/> +<ClientEvent name="beforeCollapse" parameters="self,arg"/> +<ClientEvent name="beforeCurrentChange" parameters="self,arg"/> +<ClientEvent name="beforeExpand" parameters="self,arg"/> +<ClientEvent name="onNodeDetached" parameters="self,arg"/> +<ClientEvent name="onNodeCheckedChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="BaseNode" abstract="true" type="com.bstek.dorado.view.widget.tree.BaseNode"><Props> +<Prop name="autoCheckChildren" defaultValue="true" type="boolean"/> +<Prop name="checkable" type="boolean"/> +<Prop name="checked" type="boolean"/> +<Prop name="data" type="java.lang.Object"/> +<Prop name="expanded" type="boolean"/> +<Prop name="expandedIcon"/> +<Prop name="expandedIconClass"/> +<Prop name="hasChild" type="boolean"/> +<Prop name="icon"/> +<Prop name="iconClass"/> +<Prop name="ignored" type="boolean"/> +<Prop name="label"/> +<Prop name="tags"/> +<Prop name="tip"/> +<Prop name="userData" type="java.lang.Object"/></Props><Children><Child rule="BaseNode" name="Nodes" aggregated="true"></Child></Children></Rule><Rule name="Node" parents="BaseNode" label="Node" type="com.bstek.dorado.view.widget.tree.Node" icon="/com/bstek/dorado/view/widget/tree/Node.png"><PrimitiveProps> +<Prop name="id" highlight="1"/></PrimitiveProps><Props><Prop name="metaData" type="java.util.Map" compositeType="Open"></Prop></Props></Rule><Rule name="BindingConfig" label="BindingConfig" type="com.bstek.dorado.view.widget.tree.BindingConfig" icon="/com/bstek/dorado/view/widget/tree/BindingConfig.png"><Props> +<Prop name="autoCheckChildren" defaultValue="true" type="boolean"/> +<Prop name="checkable" type="boolean"/> +<Prop name="checkedProperty"/> +<Prop name="childrenProperty"/> +<Prop name="expandLevel" type="int"/> +<Prop name="expandedIcon"/> +<Prop name="expandedIconClass"/> +<Prop name="expandedIconProperty"/> +<Prop name="hasChild" type="java.lang.Boolean"/> +<Prop name="hasChildProperty"/> +<Prop name="icon"/> +<Prop name="iconClass"/> +<Prop name="iconProperty"/> +<Prop name="ignored" type="boolean"/> +<Prop name="labelProperty"/> +<Prop name="name"/> +<Prop name="recursive" type="boolean"/> +<Prop name="tags"/> +<Prop name="tipProperty"/></Props><Children><Child rule="BindingConfig" name="ChildBindingConfigs" aggregated="true"></Child></Children></Rule><Rule name="AbstractBlockView" parents="AbstractList" abstract="true" type="com.bstek.dorado.view.widget.blockview.AbstractBlockView" scope="protected" clientTypes="desktop"><Props> +<Prop name="blockDecoratorSize" defaultValue="4" type="int"/> +<Prop name="blockHeight" defaultValue="80" type="int"/> +<Prop name="blockLayout" defaultValue="vertical" enumValues="vertical,horizontal"/> +<Prop name="blockWidth" defaultValue="80" type="int"/> +<Prop name="fillLine" type="boolean"/> +<Prop name="horiPadding" defaultValue="8" type="int"/> +<Prop name="horiSpacing" defaultValue="8" type="int"/> +<Prop name="lineSize" type="int"/> +<Prop name="renderer"/> +<Prop name="vertPadding" defaultValue="8" type="int"/> +<Prop name="vertSpacing" defaultValue="8" type="int"/></Props><ClientEvents> +<ClientEvent name="onBlockClick" parameters="self,arg" clientTypes="desktop"/> +<ClientEvent name="onBlockDoubleClick" parameters="self,arg" clientTypes="desktop"/> +<ClientEvent name="onRenderBlock" parameters="self,arg"/> +<ClientEvent name="onBlockTap" parameters="self,arg" clientTypes="touch"/> +<ClientEvent name="onBlockMouseDown" parameters="self,arg"/> +<ClientEvent name="onBlockMouseUp" parameters="self,arg"/> +<ClientEvent name="onBlockTapHold" parameters="self,arg" clientTypes="touch"/></ClientEvents></Rule><Rule name="AbstractTreeGrid" parents="GridSupport" abstract="true" type="com.bstek.dorado.view.widget.treegrid.AbstractTreeGrid" scope="protected" clientTypes="desktop"><Props> +<Prop name="defaultExpandedIcon"/> +<Prop name="defaultExpandedIconClass"/> +<Prop name="defaultIcon"/> +<Prop name="defaultIconClass"/> +<Prop name="dropMode" defaultValue="onItem" enumValues="onControl,onItem,insertItems,onOrInsertItems,onAnyWhere"/> +<Prop name="expandingAnimated" defaultValue="true" type="boolean"/> +<Prop name="expandingMode" defaultValue="async" enumValues="async,sync"/> +<Prop name="indent" type="int"/> +<Prop name="showLines" type="boolean"/> +<Prop name="treeColumn" highlight="1"/></Props><ClientEvents> +<ClientEvent name="onRenderNode" parameters="self,arg"/> +<ClientEvent name="onCollapse" parameters="self,arg"/> +<ClientEvent name="onNodeAttached" parameters="self,arg"/> +<ClientEvent name="beforeNodeCheckedChange" parameters="self,arg"/> +<ClientEvent name="onExpand" parameters="self,arg"/> +<ClientEvent name="beforeCollapse" parameters="self,arg"/> +<ClientEvent name="beforeExpand" parameters="self,arg"/> +<ClientEvent name="onNodeDetached" parameters="self,arg"/> +<ClientEvent name="onNodeCheckedChange" parameters="self,arg"/></ClientEvents><Children><Child name="Columns" fixed="true"><Rule name="Wrapper.Columns" label="Columns" nodeName="Columns" icon="/com/bstek/dorado/view/widget/treegrid/Columns.png"><Children><Child rule="Column" name="Columns" aggregated="true"></Child></Children></Rule></Child></Children></Rule><Rule name="Filter" label="Filter" type="com.bstek.dorado.uploader.widget.Filter" labelProperty="title"><Props> +<Prop name="extensions"/> +<Prop name="title"/></Props></Rule><Rule name="DefaultView" parents="View" label="View" nodeName="View" type="com.bstek.dorado.view.DefaultView" category="General" icon="/com/bstek/dorado/view/DefaultView.png" clientTypes="desktop"></Rule></RuleSet> \ No newline at end of file diff --git a/igds-protocol-modbus/pom.xml b/igds-protocol-modbus/pom.xml index 708d3c0..150f570 100644 --- a/igds-protocol-modbus/pom.xml +++ b/igds-protocol-modbus/pom.xml @@ -64,21 +64,32 @@ </dependencies> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <configuration> - <source>1.8</source> - <target>1.8</target> - <compilerArguments> - <extdirs>src\main\webapp\WEB-INF\lib</extdirs> - </compilerArguments> - </configuration> - </plugin> - </plugins> - </build> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>${java.version}</source> + <target>${java.version}</target> + </configuration> + </plugin> + </plugins> + + <resources> + <resource> + <directory>src/main/java</directory> + <includes> + <include>**/*.xml</include> + <include>**/*.js</include> + </includes> + <filtering>true</filtering> + </resource> + <resource> + <directory>src/main/resources</directory> + </resource> + </resources> + </build> <!-- <repositories>--> diff --git a/igds-core/src/main/java/com/ld/igds/modbus/DeviceModbus.view.xml b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbus.view.xml similarity index 89% rename from igds-core/src/main/java/com/ld/igds/modbus/DeviceModbus.view.xml rename to igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbus.view.xml index 1c4353f..0992467 100644 --- a/igds-core/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,24 @@ <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> + <Property name="mapping"> + <Property name="mapValues">${dorado.getDataProvider("deviceSerPR#getAllSerCache").getResult()}</Property> + <Property name="keyProperty">id</Property> + <Property name="valueProperty">name</Property> + </Property> + </PropertyDef> </DataType> </Model> <View layout="padding:5;regionPadding:5"> @@ -170,12 +188,18 @@ <DataColumn name="deviceCode"> <Property name="property">deviceCode</Property> </DataColumn> + <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"> <Property name="property">open</Property> <Property name="caption">鍦板潃</Property> - <Property name="width">100</Property> + <Property name="width">80</Property> </DataColumn> <DataColumn name="openFun"> <Property name="property">openFun</Property> @@ -189,7 +213,7 @@ <DataColumn name="close"> <Property name="property">close</Property> <Property name="caption">鍦板潃</Property> - <Property name="width">100</Property> + <Property name="width">80</Property> </DataColumn> <DataColumn name="closeFun"> <Property name="property">closeFun</Property> @@ -203,7 +227,7 @@ <DataColumn name="stop"> <Property name="property">stop</Property> <Property name="caption">鍦板潃</Property> - <Property name="width">100</Property> + <Property name="width">80</Property> </DataColumn> <DataColumn name="stopFun"> <Property name="property">stopFun</Property> @@ -217,7 +241,7 @@ <DataColumn name="openEnd"> <Property name="property">openEnd</Property> <Property name="caption">鍦板潃</Property> - <Property name="width">100</Property> + <Property name="width">80</Property> </DataColumn> <DataColumn name="openEndFun"> <Property name="property">openEndFun</Property> @@ -231,7 +255,7 @@ <DataColumn name="closeEnd"> <Property name="property">closeEnd</Property> <Property name="caption">鍦板潃</Property> - <Property name="width">100</Property> + <Property name="width">80</Property> </DataColumn> <DataColumn name="closeEndFun"> <Property name="property">closeEndFun</Property> @@ -245,7 +269,7 @@ <DataColumn name="openError"> <Property name="property">openError</Property> <Property name="caption">鍦板潃</Property> - <Property name="width">100</Property> + <Property name="width">80</Property> </DataColumn> <DataColumn name="openErrorFun"> <Property name="property">openErrorFun</Property> @@ -259,7 +283,7 @@ <DataColumn name="closeError"> <Property name="property">closeError</Property> <Property name="caption">鍦板潃</Property> - <Property name="width">100</Property> + <Property name="width">80</Property> </DataColumn> <DataColumn name="closeErrorFun"> <Property name="property">closeErrorFun</Property> diff --git a/igds-core/src/main/java/com/ld/igds/modbus/DeviceModbusPR.java b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbusPR.java similarity index 86% rename from igds-core/src/main/java/com/ld/igds/modbus/DeviceModbusPR.java rename to igds-protocol-modbus/src/main/java/com/ld/igds/modbus/DeviceModbusPR.java index 500a440..361ee0e 100644 --- a/igds-core/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..2576894 --- /dev/null +++ b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/GasModbus.view.xml @@ -0,0 +1,378 @@ +<?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("depotPR#getAllCache").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("deviceModbusPR#triggerFun").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("deviceModbusPR#triggerFun").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("deviceModbusPR#triggerFun").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("deviceModbusPR#triggerFun").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("deviceModbusPR#triggerFun").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("deviceModbusPR#triggerFun").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("deviceModbusPR#triggerFun").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> + <Property name="label">ID</Property> + </PropertyDef> + <PropertyDef name="depotId"> + <Property></Property> + <Property name="label">鎵�灞炰粨搴�</Property> + </PropertyDef> + <PropertyDef name="passcode"> + <Property name="dataType">int</Property> + <Property name="label">閫氶亾</Property> + </PropertyDef> + <PropertyDef name="co2"> + <Property></Property> + <Property name="label">浜屾哀鍖栫⒊</Property> + </PropertyDef> + <PropertyDef name="co2Fun"> + <Property></Property> + <Property name="label">鍔熻兘鍙�</Property> + <Property name="mapping"> + <Property name="mapValues">${dorado.getDataProvider("deviceModbusPR#triggerFun").getResult()}</Property> + <Property name="keyProperty">code</Property> + <Property name="valueProperty">name</Property> + </Property> + </PropertyDef> + <PropertyDef name="o2"> + <Property></Property> + <Property name="label">姘ф皵</Property> + </PropertyDef> + <PropertyDef name="o2Fun"> + <Property></Property> + <Property name="label">鍔熻兘鍙�</Property> + <Property name="mapping"> + <Property name="mapValues">${dorado.getDataProvider("deviceModbusPR#triggerFun").getResult()}</Property> + <Property name="keyProperty">code</Property> + <Property name="valueProperty">name</Property> + </Property> + </PropertyDef> + <PropertyDef name="ph3"> + <Property></Property> + <Property name="label">纾峰寲姘�</Property> + </PropertyDef> + <PropertyDef name="ph3Fun"> + <Property></Property> + <Property name="label">鍔熻兘鍙�</Property> + <Property name="mapping"> + <Property name="mapValues">${dorado.getDataProvider("deviceModbusPR#triggerFun").getResult()}</Property> + <Property name="keyProperty">code</Property> + <Property name="valueProperty">name</Property> + </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("#dsMain.data").get("listGas");
 +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("#uaAction").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("#dataGrid1").getCurrentItem();;
 +if(!data){
 + return;
 +}
 +view.get("#ajaxDel").set("parameter",data).execute(function(result){
 + if(result){
 + $alert(result);
 + return;
 + }else{
 + data.remove();
 + }
 +}); </ClientEvent> + <Property name="caption">鍒犻櫎閫氶亾</Property> + <Property name="exClassName">btn-warn</Property> + <Property name="iconClass">fa fa-minus</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> + </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..05d89ff --- /dev/null +++ b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/GasModbusPR.java @@ -0,0 +1,83 @@ +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); + } + + /** + * deviceModbusPR#delData + * + * @return + */ + @Expose + public String delData(GasModbus data) { + if (null == data.getId()) return null; + return modbusService.delDataGas(data); + } + +} diff --git a/igds-core/src/main/java/com/ld/igds/modbus/ModbusConstant.java b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/ModbusConstant.java similarity index 91% rename from igds-core/src/main/java/com/ld/igds/modbus/ModbusConstant.java rename to igds-protocol-modbus/src/main/java/com/ld/igds/modbus/ModbusConstant.java index 9a630ca..299052e 100644 --- a/igds-core/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/HModbusService.java b/igds-protocol-modbus/src/main/java/com/ld/igds/modbus/service/HModbusService.java new file mode 100644 index 0000000..9ade627 --- /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.HashMap; +import java.util.List; +import java.util.Map; + + +@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); + + if (null == hibDevice.getBizType()) hibDevice.setBizType(BizType.AREATION.getCode()); + if (BizType.AREATION.getCode().equals(hibDevice.getBizType())) { + key = RedisConst.buildKey(companyId, ModbusConstant.MODBUS_DEVICE_CACHE, hibDevice.getDeviceCode()); + } else { + key = RedisConst.buildKey(companyId, ModbusConstant.MODBUS_DEVICE_CACHE, hibDevice.getDeviceCode(), hibDevice.getBizType()); + } + redisUtil.set(key, entityDevice); + } + } + + public DeviceModbus getCacheDeviceModbus(String companyId, String deviceCode) { + return getCacheDeviceModbus(companyId, deviceCode, null); + } + + public DeviceModbus getCacheDeviceModbus(String companyId, String deviceCode, String bizType) { + String key = RedisConst.buildKey(companyId, ModbusConstant.MODBUS_DEVICE_CACHE, deviceCode); + if (null != bizType && !BizType.AREATION.equals(bizType)) { + key = RedisConst.buildKey(companyId, ModbusConstant.MODBUS_DEVICE_CACHE, deviceCode, bizType); + } + 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; + } + + /** + * 鏍规嵁绫诲瀷鑾峰彇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) { + + 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); + } + } + } + + + public String delDataGas(GasModbus data) { + Session session = this.getSessionFactory().openSession(); + try { + session.delete(data); + } catch (Exception e) { + } finally { + session.flush(); + session.close(); + } + return null; + } +} diff --git a/igds-core/src/main/java/com/ld/igds/models/DeviceModbus.java b/igds-protocol-modbus/src/main/java/com/ld/igds/models/DeviceModbus.java similarity index 75% rename from igds-core/src/main/java/com/ld/igds/models/DeviceModbus.java rename to igds-protocol-modbus/src/main/java/com/ld/igds/models/DeviceModbus.java index e41d581..3c0e3d3 100644 --- a/igds-core/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,17 +27,22 @@ @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 = "寮�鍦板潃") + @PropertyDef(label = "寮�鍦板潃", description = "寮�鍦板潃銆佽兘鑰楄鍙栧湴鍧�") private String open = Constant.YN_N; + @Column(name = "OPEN_FUN", length = 4) @PropertyDef(label = "鍔熻兘鍙�") 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) @@ -51,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) @@ -82,4 +89,13 @@ @PropertyDef(label = "鍔熻兘鍙�") private String closeErrorFun = "99"; + //杞存祦椋庢満鍜岃酱娴佺獥鍙兘涓嶅湪涓�涓垎鏈轰笂锛孖P涓嶅悓 + @Column(name = "SER_ID_", length = 10) + @PropertyDef(label = "鎵�灞炲垎鏈�") + private String serId; + + + @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/ModbusConfig.java b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusConfig.java deleted file mode 100644 index 59d269d..0000000 --- a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusConfig.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.ld.igds.protocol.modbus; - -import com.serotonin.modbus4j.ModbusFactory; -import com.serotonin.modbus4j.ModbusMaster; -import com.serotonin.modbus4j.exception.ModbusInitException; -import com.serotonin.modbus4j.ip.IpParameters; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; - -import java.util.HashMap; - -@Configuration -@Import(com.serotonin.modbus4j.ModbusFactory.class) -public class ModbusConfig { - - - @Bean - public HashMap<String, ModbusMaster> contextModbusMap() { - return new HashMap<>(); - } - - @Autowired - private ModbusFactory modbusFactory; - - @Autowired - @Qualifier("contextModbusMap") - private HashMap<String, ModbusMaster> masterMap; - - /** - * @Description: 閫氳繃ip鑾峰彇瀵瑰簲鐨刴odbus杩炴帴鍣� - */ - public ModbusMaster getMaster(String ip, int port) { - ModbusMaster modbusMaster = masterMap.get(ip); - if (modbusMaster == null || !modbusMaster.isConnected()) { - setMaster(ip, port); - modbusMaster = masterMap.get(ip); - } - return modbusMaster; - - } - - /** - * @Description: 璁剧疆ip瀵瑰簲鐨刴odbus杩炴帴鍣� - */ - private void setMaster(String ip, Integer port) { - ModbusMaster master; - IpParameters params = new IpParameters(); - params.setHost(ip); - params.setPort(port); - //璁剧疆涓簍rue锛屼細瀵艰嚧TimeoutException: request=com.serotonin.modbus4j.ip.encap.EncapMessageRequest@774dfba5", - //params.setEncapsulated(true); - master = modbusFactory.createTcpMaster(params, false);// TCP 鍗忚 - try { - //璁剧疆瓒呮椂鏃堕棿 - master.setTimeout(2 * 1000); - //璁剧疆閲嶈繛娆℃暟 - master.setRetries(3); - //鍒濆鍖� - master.init(); - } catch (ModbusInitException e) { - e.printStackTrace(); - } - masterMap.put(ip, master); - } -} \ No newline at end of file diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil.java b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil.java deleted file mode 100644 index 416e7cb..0000000 --- a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ModbusUtil.java +++ /dev/null @@ -1,208 +0,0 @@ -package com.ld.igds.protocol.modbus; - -import com.serotonin.modbus4j.BatchRead; -import com.serotonin.modbus4j.BatchResults; -import com.serotonin.modbus4j.ModbusMaster; -import com.serotonin.modbus4j.code.DataType; -import com.serotonin.modbus4j.exception.ModbusInitException; -import com.serotonin.modbus4j.exception.ModbusTransportException; -import com.serotonin.modbus4j.locator.BaseLocator; -import com.serotonin.modbus4j.msg.ReadCoilsRequest; -import com.serotonin.modbus4j.msg.ReadCoilsResponse; -import com.serotonin.modbus4j.msg.ReadDiscreteInputsRequest; -import com.serotonin.modbus4j.msg.ReadDiscreteInputsResponse; -import com.serotonin.modbus4j.msg.ReadHoldingRegistersRequest; -import com.serotonin.modbus4j.msg.ReadHoldingRegistersResponse; -import com.serotonin.modbus4j.msg.ReadInputRegistersRequest; -import com.serotonin.modbus4j.msg.ReadInputRegistersResponse; -import com.serotonin.modbus4j.msg.WriteCoilRequest; -import com.serotonin.modbus4j.msg.WriteCoilResponse; -import com.serotonin.modbus4j.msg.WriteCoilsRequest; -import com.serotonin.modbus4j.msg.WriteCoilsResponse; -import com.serotonin.modbus4j.msg.WriteRegisterRequest; -import com.serotonin.modbus4j.msg.WriteRegisterResponse; -import com.serotonin.modbus4j.msg.WriteRegistersRequest; -import com.serotonin.modbus4j.msg.WriteRegistersResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * @Desc: 宸ュ叿绫� - * @author: Andy - * @update-time: 2023/8/11 - */ -@Slf4j -@Component -public class ModbusUtil { - - //浠庢満榛樿鍊� - private Integer slaveId = 1; - - @Autowired - private ModbusConfig modbusConfig; - - - /** - * 璇荤嚎鍦�--01 - * - * @param ip - * @param port - * @param offset - * @param numberOfRegister - */ - public boolean[] readStatus01(String ip, int port, int offset, int numberOfRegister) throws ModbusTransportException { - - ModbusMaster master = modbusConfig.getMaster(ip, port); - ReadCoilsRequest request = new ReadCoilsRequest(slaveId, offset, numberOfRegister); - ReadCoilsResponse response = (ReadCoilsResponse) master.send(request); - boolean[] booleans = response.getBooleanData(); - - return valueRegroup(numberOfRegister, booleans); - } - - /** - * @Description: 02H-璇荤鏁h緭鍏ラ噺 - * @Param: [ip, offset, numberOfRegister] - * @return: boolean[] - * @throws: - */ - public boolean[] readStatus02(String ip, int port, int offset, int numberOfRegister) throws ModbusTransportException { - ModbusMaster master = modbusConfig.getMaster(ip, port); - ReadDiscreteInputsRequest request = new ReadDiscreteInputsRequest(slaveId, offset, numberOfRegister); - ReadDiscreteInputsResponse response = (ReadDiscreteInputsResponse) master.send(request); - boolean[] booleans = response.getBooleanData(); - return valueRegroup(numberOfRegister, booleans); - } - - /** - * @Description: 03H-璇讳繚鎸佸瘎瀛樺櫒 - * @Param: [ip, offset, numberOfRegister] - * @return: short[] - * @throws: - */ - public short[] readStatus03(String ip, int port, int offset, int numberOfRegister) throws ModbusTransportException { - - ModbusMaster master = modbusConfig.getMaster(ip, port); - ReadHoldingRegistersRequest request = new ReadHoldingRegistersRequest(slaveId, offset, numberOfRegister); - ReadHoldingRegistersResponse response = (ReadHoldingRegistersResponse) master.send(request); - return response.getShortData(); - } - - /** - * @Description: 04H-璇昏緭鍏ュ瘎瀛樺櫒 - * @Param: [ip, offset, numberOfRegister] - * @return: short[] - * @throws: - */ - public short[] readStatus04(String ip, int port, int offset, int numberOfRegister) throws ModbusTransportException { - ModbusMaster master = modbusConfig.getMaster(ip, port); - ReadInputRegistersRequest request = new ReadInputRegistersRequest(slaveId, offset, numberOfRegister); - ReadInputRegistersResponse response = (ReadInputRegistersResponse) master.send(request); - return response.getShortData(); - } - - - public BatchResults<Integer> readBatch(String ip, int port) throws Exception { - ModbusMaster master = modbusConfig.getMaster(ip, port); - - if (null == master) return null; - - return readBatch(master); - } - - /** - * 鎵归噺璇诲彇澶氫釜 - * - * @param master - * @throws ModbusTransportException - */ - public BatchResults<Integer> readBatch(ModbusMaster master) throws Exception { - BatchRead<Integer> batch = new BatchRead<>(); - batch.addLocator(0, BaseLocator.holdingRegister(1, 1, DataType.TWO_BYTE_INT_SIGNED)); - batch.addLocator(1, BaseLocator.inputStatus(1, 0)); - batch.setContiguousRequests(true); - BatchResults<Integer> results = master.send(batch); - log.info("batchRead:" + results.getValue(0)); - log.info("batchRead:" + results.getValue(1)); - - return results; - } - - /** - * @Description: 鍐欏崟涓紙绾垮湀锛夊紑鍏抽噺鏁版嵁锛岀浉褰撲簬鍔熻兘鐮侊細05H-鍐欏崟涓嚎鍦� - * @Param: [ip, writeOffset, writeValue] - * @return: boolean - * @throws: - */ - public boolean writeValue05(String ip, int port, int writeOffset, boolean writeValue) throws ModbusTransportException { - - ModbusMaster tcpMaster = modbusConfig.getMaster(ip, port); - WriteCoilRequest request = new WriteCoilRequest(slaveId, writeOffset, writeValue); - WriteCoilResponse response = (WriteCoilResponse) tcpMaster.send(request); - return !response.isException(); - } - - /** - * @Description: 鍐欏涓紑鍏抽噺鏁版嵁锛堢嚎鍦堬級锛岀浉褰撲簬鍔熻兘鐮侊細0FH-鍐欏涓嚎鍦� - * @Param: [ip, startOffset, data] - * @return: boolean - * @throws: - */ - public boolean writeValues15(String ip, int port, int startOffset, boolean[] data) throws ModbusTransportException { - - ModbusMaster tcpMaster = modbusConfig.getMaster(ip, port); - WriteCoilsRequest request = new WriteCoilsRequest(slaveId, startOffset, data); - WriteCoilsResponse response = (WriteCoilsResponse) tcpMaster.send(request); - return !response.isException(); - - } - - /** - * @Description: 鍐欏崟涓繚鎸佸瘎瀛樺櫒锛岀浉褰撲簬鍔熻兘鐮侊細06H-鍐欏崟涓繚鎸佸瘎瀛樺櫒 - * @Param: [ip, writeOffset, writeValue] - * @return: boolean - * @throws: - */ - public boolean writeValue06(String ip, int port, int writeOffset, short writeValue) throws ModbusTransportException, ModbusInitException { - - ModbusMaster tcpMaster = modbusConfig.getMaster(ip, port); - WriteRegisterRequest request = new WriteRegisterRequest(slaveId, writeOffset, writeValue); - WriteRegisterResponse response = (WriteRegisterResponse) tcpMaster.send(request); - return !response.isException(); - - } - - /** - * @Description: 鍐欏涓繚鎸佸瘎瀛樺櫒锛岀浉褰撲簬鍔熻兘鐮侊細10H-鍐欏涓繚鎸佸瘎瀛樺櫒 - * @Param: [ip, startOffset, data] - * @return: boolean - * @throws: - */ - public boolean writeValues16(String ip, int port, int startOffset, short[] data) throws ModbusTransportException, ModbusInitException { - - ModbusMaster tcpMaster = modbusConfig.getMaster(ip, port); - WriteRegistersRequest request = new WriteRegistersRequest(slaveId, startOffset, data); - WriteRegistersResponse response = (WriteRegistersResponse) tcpMaster.send(request); - return !response.isException(); - } - - /** - * @Description: 杞崲宸ュ叿锛屽皢Boolean杞崲鎴�0锛�1 - * @Param: [numberOfBits, values] - * @return: boolean[] - * @throws: - */ - private boolean[] valueRegroup(int numberOfBits, boolean[] values) { - boolean[] bs = new boolean[numberOfBits]; - int temp = 1; - for (boolean b : values) { - bs[temp - 1] = b; - temp++; - if (temp > numberOfBits) { - break; - } - } - return bs; - } -} \ No newline at end of file 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 5090776..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 @@ -2,6 +2,7 @@ import com.serotonin.modbus4j.ModbusFactory; import com.serotonin.modbus4j.ModbusMaster; +import com.serotonin.modbus4j.code.DataType; import com.serotonin.modbus4j.exception.ErrorResponseException; import com.serotonin.modbus4j.exception.ModbusInitException; import com.serotonin.modbus4j.exception.ModbusTransportException; @@ -9,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: 宸ュ叿绫� @@ -24,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) { @@ -44,18 +39,17 @@ * * @return */ - public static ModbusMaster getMaster(String ip, int port) throws ModbusInitException { - String key = ip; - ModbusMaster modbusMaster = masterMap.get(key); - if (modbusMaster == null || !modbusMaster.isConnected()) { - IpParameters ipParameters = new IpParameters(); - ipParameters.setHost(ip); - ipParameters.setPort(port); - modbusMaster = modbusFactory.createTcpMaster(ipParameters, true); - modbusMaster.init(); - masterMap.put(key, modbusMaster); - return modbusMaster; - } + public static ModbusMaster getMaster(String ip, int port) throws ModbusInitException, InterruptedException { + + IpParameters ipParameters = new IpParameters(); + ipParameters.setHost(ip); + ipParameters.setPort(port); + ModbusMaster modbusMaster = modbusFactory.createTcpMaster(ipParameters, false); + modbusMaster.init(); + + //鍒濆鍖栦箣鍚庣瓑寰咃紝閬垮厤鍑虹幇杩炴帴鏈垱寤� + Thread.sleep(2500); + return modbusMaster; } @@ -69,7 +63,7 @@ * @throws ModbusTransportException * @throws ErrorResponseException */ - public static Boolean readCoilStatus(String ip, int port, int offset) throws ModbusInitException, ModbusTransportException, ErrorResponseException { + public static Boolean readCoilStatus(String ip, int port, int offset) throws ModbusInitException, ModbusTransportException, ErrorResponseException, InterruptedException { BaseLocator<Boolean> coilStatus = BaseLocator.coilStatus(slaveId, offset); Boolean res = getMaster(ip, port).getValue(coilStatus); return res; @@ -84,8 +78,10 @@ * @throws ModbusTransportException * @throws ErrorResponseException */ - public static Boolean readInputStatus(String ip, int port, int offset) throws ModbusInitException, ModbusTransportException, ErrorResponseException { + public static Boolean readInputStatus(String ip, int port, int offset) throws ModbusInitException, ModbusTransportException, ErrorResponseException, InterruptedException { BaseLocator<Boolean> inputStatus = BaseLocator.inputStatus(slaveId, offset); + + // Thread.sleep(3000); Boolean res = getMaster(ip, port).getValue(inputStatus); return res; } @@ -100,10 +96,15 @@ * @throws ModbusTransportException * @throws ErrorResponseException */ - public static Number readHoldingRegister(String ip, int port, int offset, int dataType) throws ModbusInitException, ModbusTransportException, ErrorResponseException { + public static Number readHoldingRegister(String ip, int port, int offset, int dataType) throws ModbusInitException, ModbusTransportException, ErrorResponseException, InterruptedException { BaseLocator<Number> holdingRegister = BaseLocator.holdingRegister(slaveId, offset, dataType); Number value = getMaster(ip, port).getValue(holdingRegister); return value; + } + + public static Number readHoldingRegister(String ip, int port, int offset) throws ModbusInitException, ModbusTransportException, ErrorResponseException, InterruptedException { + int dataType = DataType.TWO_BYTE_INT_SIGNED; + return readHoldingRegister(ip, port, offset, dataType); } /** @@ -116,10 +117,24 @@ * @throws ModbusTransportException * @throws ErrorResponseException */ - public static Number readInputRegister(String ip, int port, int offset, int dataType) throws ModbusInitException, ModbusTransportException, ErrorResponseException { + public static Number readInputRegister(String ip, int port, int offset, int dataType) throws ModbusInitException, ModbusTransportException, ErrorResponseException, InterruptedException { BaseLocator<Number> inputRegister = BaseLocator.inputRegister(slaveId, offset, dataType); Number value = getMaster(ip, port).getValue(inputRegister); return value; + } + + /** + * 璇昏緭鍏ュ瘎瀛樺櫒鏁版嵁 0x04 + * + * @param offset + * @return + * @throws ModbusInitException + * @throws ModbusTransportException + * @throws ErrorResponseException + */ + public static Number readInputRegister(String ip, int port, int offset) throws ModbusInitException, ModbusTransportException, ErrorResponseException, InterruptedException { + int dataType = DataType.TWO_BYTE_INT_SIGNED; + return readInputRegister(ip, port, offset, dataType); } @@ -132,9 +147,8 @@ * @throws ModbusTransportException * @throws ModbusInitException */ - public static Boolean writeCoilStatus(String ip, int port, int offset, boolean status) throws ModbusTransportException, ModbusInitException { - boolean coilValue = status; - WriteCoilRequest coilRequest = new WriteCoilRequest(slaveId, offset, coilValue); + public static Boolean writeCoilStatus(String ip, int port, int offset, boolean status) throws ModbusTransportException, ModbusInitException, InterruptedException { + WriteCoilRequest coilRequest = new WriteCoilRequest(slaveId, offset, status); WriteCoilResponse coilResponse = (WriteCoilResponse) getMaster(ip, port).send(coilRequest); return !coilResponse.isException(); } @@ -149,7 +163,7 @@ * @throws ModbusTransportException * @throws ModbusInitException */ - public static Boolean writeRegister(String ip, int port, int offset, int value) throws ModbusTransportException, ModbusInitException { + public static Boolean writeRegister(String ip, int port, int offset, int value) throws ModbusTransportException, ModbusInitException, InterruptedException { WriteRegisterRequest registerRequest = new WriteRegisterRequest(slaveId, offset, value); WriteRegisterResponse registerResponse = (WriteRegisterResponse) getMaster(ip, port).send(registerRequest); return !registerResponse.isException(); @@ -165,7 +179,7 @@ * @throws ModbusTransportException * @throws ModbusInitException */ - public static Boolean writeCoils(String ip, int port, int offset, boolean[] booleans) throws ModbusTransportException, ModbusInitException { + public static Boolean writeCoils(String ip, int port, int offset, boolean[] booleans) throws ModbusTransportException, ModbusInitException, InterruptedException { WriteCoilsRequest writeCoils = new WriteCoilsRequest(slaveId, offset, booleans); WriteCoilsResponse coilsResponse = (WriteCoilsResponse) getMaster(ip, port).send(writeCoils); return !coilsResponse.isException(); @@ -181,7 +195,7 @@ * @throws ModbusTransportException * @throws ModbusInitException */ - public static Boolean writeRegisters(String ip, int port, int offset, short[] nums) throws ModbusTransportException, ModbusInitException { + public static Boolean writeRegisters(String ip, int port, int offset, short[] nums) throws ModbusTransportException, ModbusInitException, InterruptedException { WriteRegistersRequest writeRegisters = new WriteRegistersRequest(slaveId, offset, nums); WriteRegistersResponse registersResponse = (WriteRegistersResponse) getMaster(ip, port).send(writeRegisters); return !registersResponse.isException(); diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ServerUtil.java b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ServerUtil.java index b31119c..93a3fa4 100644 --- a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ServerUtil.java +++ b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ServerUtil.java @@ -1,6 +1,9 @@ package com.ld.igds.protocol.modbus; +import com.ld.igds.constant.Constant; +import com.ld.igds.constant.DeviceStatus; import com.ld.igds.util.ContextUtil; +import org.apache.commons.lang3.StringUtils; import java.util.HashMap; import java.util.Map; @@ -11,10 +14,9 @@ public class ServerUtil { - /** - * 鐢ㄦ潵缂撳瓨锛孴CP璁惧鎵ц鏃堕棿璁板綍key = TCP鍞竴鏍囧織锛寁alue = 褰撳墠鎵ц鏃堕棿 - */ - public static Map<String, Long> contextExeModbusTcp = new HashMap<>(); + + public static final String RUN_TAG = "RUN_TAG"; + /** @@ -31,6 +33,35 @@ * @param status 涓嶈�冭檻璁惧绫诲瀷锛屽彧鍦ㄩ�氶亾涓婃爣璁版槸OPEN鎴栬�匔LOSE鍗冲彲 */ public static void add2StatusMap(String companyId, String serId, String deviceCode, String status) { +// System.out.println(mainLink); +// //鑻ヤ笉涓虹┖锛屽垯鏌ヨ涓昏澶囩姸鎬� +// if(StringUtils.isNotEmpty(mainLink)){ +// String oldStatus = contextStatusMap.get(ContextUtil.buildDeviceStatusKey(companyId, serId, mainLink)); +// //鑻ラ绐楁垨椋庡彛寮� +// if(DeviceStatus.OPEN.getCode().equals(oldStatus)){ +// //鑻ラ鏈哄紑 +// if(DeviceStatus.OPEN.getCode().equals(status)){ +// status = DeviceStatus.F_OPEN.getCode(); +// } +// //鑻ラ鏈哄叧 +// if(DeviceStatus.CLOSE.getCode().equals(status)){ +// status = DeviceStatus.W_OPEN.getCode(); +// } +// } +// //鑻ラ绐楁垨椋庡彛寮� +// if(DeviceStatus.CLOSE.getCode().equals(oldStatus)){ +// //鑻ラ鏈哄紑 +// if(DeviceStatus.OPEN.getCode().equals(status)){ +// status = DeviceStatus.ERROR.getCode(); +// } +// //鑻ラ鏈哄叧 +// if(DeviceStatus.CLOSE.getCode().equals(status)){ +// status = DeviceStatus.W_CLOSE.getCode(); +// } +// } +// contextStatusMap.put(ContextUtil.buildDeviceStatusKey(companyId, serId, mainLink), status); +// return; +// } contextStatusMap.put(ContextUtil.buildDeviceStatusKey(companyId, serId, deviceCode), status); } @@ -38,4 +69,17 @@ return contextStatusMap; } + + + + + + public static int getAddrExe(String temp) { + if (Constant.YN_N.equals(temp)) return 65535; + if (temp.length() > 4) { + temp = temp.substring(temp.length() - 4); + } + return Integer.valueOf(temp) - 1; + } + } 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 07211d3..37b58e2 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 @@ -1,15 +1,29 @@ package com.ld.igds.protocol.modbus.command; 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; import com.ld.igds.protocol.modbus.ServerUtil; +import com.ld.igds.protocol.modbus.data.ModbusGasResult; +import com.ld.igds.util.ContextUtil; +import com.ld.igds.util.NumberUtil; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.text.DecimalFormat; +import java.util.Date; +import java.util.List; /** * 瑙f瀽 @@ -22,6 +36,10 @@ private CoreDeviceService coreDeviceService; @Resource private NotifyWebInvoker notifyInvoker; + @Autowired + private CoreGasService gasService; + @Autowired + private CoreEsService esService; /** @@ -46,4 +64,159 @@ log.error("---MODBUS-TCP-鐘舵�佽В鏋愬紓甯竰}", e); } } + + + /** + * 瑙f瀽姘斾綋妫�娴嬬粨鏋� + * + * @param request + * @param results + */ + public void analysisGas(CheckGasRequest request, List<ModbusGasResult> results) { + + log.debug("----------寮�濮嬫墽琛屾皵浣撶粨鏋滆В鏋�----{}", request.getDepotId()); + + String batchId = ContextUtil.getDefaultBatchId(); + //涓讳綋淇℃伅 + Gas gas = new Gas(batchId, request.getCompanyId(), request.getDepotId(), new Date()); + gas.setCheckNum(results.size()); + gas.setGasEnd(results.size()); + gas.setGasStart(1); + gas.setReceiveDate(new Date()); + + int sumNum = results.size(); + double co2, o2, ph3, n2; + DecimalFormat df = new DecimalFormat("#0.00"); + double sumO2 = 0.0, sumCo2 = 0.0, sumPh3 = 0.0, sumN2 = 0.0; + int num = 1; + StringBuffer sb = new StringBuffer(); + for (ModbusGasResult gasResult : results) { + //浜屾哀鍖栫⒊锛屽崟浣嶏細PPM锛岀洿鎺ヤ娇鐢� + co2 = gasResult.getCo2().doubleValue(); + //姘ф皵锛岄櫎浠�10锛屽崟浣嶏細鐧惧垎姣� + o2 = Double.valueOf(df.format(gasResult.getO2().doubleValue()*0.1)); + //纾峰寲姘紝鍗曚綅锛歅PM锛岀洿鎺ヤ娇鐢� + ph3 = gasResult.getPh3().doubleValue(); + n2 = Double.valueOf(df.format(99.9 - o2));; + + if(num == 1){ + gas.setPerCo2Min(co2); + gas.setPerO2Min(o2); + gas.setPerPh3Min(ph3); + gas.setPerN2Min(n2); + } + num ++; + if (gas.getPerCo2Max() < co2) { + gas.setPerCo2Max(co2); + } + if (gas.getPerCo2Min() > co2) { + gas.setPerCo2Min(co2); + } + if (gas.getPerO2Max() < o2) { + gas.setPerO2Max(o2); + } + if (gas.getPerO2Min() > o2) { + gas.setPerO2Min(o2); + } + if (gas.getPerPh3Max() < ph3) { + gas.setPerPh3Max(ph3); + } + if (gas.getPerPh3Min() > ph3) { + gas.setPerPh3Min(ph3); + } + if (gas.getPerN2Max() < n2) { + gas.setPerN2Max(n2); + } + if (gas.getPerN2Min() > n2) { + gas.setPerN2Min(n2); + } + + //鍥哄畾涓猴細passCode,co2,o2,ph3,n2;passCode,co2,o2,ph3,n2;" + sb.append(gasResult.getPasscode()); + sb.append(","); + sb.append(co2); + sb.append(","); + sb.append(o2); + sb.append(","); + sb.append(ph3); + sb.append(","); + sb.append(n2); + sb.append(";"); + + sumCo2 += co2; + sumO2 += o2; + sumPh3 += ph3; + sumN2 += n2; + + } + gas.setPoints(sb.toString()); + gas.setPerCo2(NumberUtil.keepPrecision(sumCo2 / sumNum, 2)); + gas.setPerO2(NumberUtil.keepPrecision(sumO2 / sumNum, 2)); + gas.setPerN2(NumberUtil.keepPrecision(sumN2 / sumNum, 2)); + gas.setPerPh3(NumberUtil.keepPrecision(sumPh3 / sumNum, 2)); + + gasService.saveOrUpdateData(gas); + + // 璋冪敤閫氱煡鍓嶇 + 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); + } + + /** + * 瑙f瀽绌鸿皟鐘舵�� + * + * @param request + * @param result + */ + public void analysisTempStatus(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 2bf1d8e..7057bc8 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 @@ -1,8 +1,11 @@ package com.ld.igds.protocol.modbus.command; import com.ld.igds.common.CoreDeviceService; +import com.ld.igds.common.CoreSerService; +import com.ld.igds.constant.BizType; import com.ld.igds.constant.Constant; import com.ld.igds.constant.DeviceStatus; +import com.ld.igds.constant.DeviceType; import com.ld.igds.io.RemoteControlService; import com.ld.igds.io.constant.OrderRespEnum; import com.ld.igds.io.constant.ProtocolEnum; @@ -11,9 +14,10 @@ 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.models.DeviceSer; import com.ld.igds.protocol.modbus.ModbusUtil2; import com.ld.igds.protocol.modbus.ServerUtil; import com.ld.igds.protocol.modbus.data.ModbusTcp; @@ -40,9 +44,11 @@ @Resource private CoreDeviceService coreDeviceService; @Resource - private HDeviceModbusService deviceModbusService; + private HModbusService deviceModbusService; @Resource private AnalysisService analysisService; + @Resource + private CoreSerService coreSerService; @Override @@ -63,6 +69,7 @@ ModbusTcp modbusTcp; ModbusTcp modbusTcpLink = null; String temp = Constant.YN_N; + DeviceSer deviceSer; for (ExeDevice exeDevice : deviceList) { deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), exeDevice.getPassCode() + ""); @@ -74,7 +81,13 @@ modbusTcp = new ModbusTcp(deviceModbus); modbusTcp.setIp(request.getIp()); modbusTcp.setPort(request.getPort()); - modbusTcp.setDeviceCode(exeDevice.getPassCode() + ""); + //鑻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()); @@ -87,74 +100,87 @@ temp = modbusTcp.getDeviceModbus().getOpen(); } + //鐜祦椋庢満-鍏� + if (DeviceStatus.F_CLOSE.getCode().equals(exeDevice.getTargetStatus())) { + temp = modbusTcp.getDeviceModbus().getStop(); + } + + //鐜祦椋庢満-寮� + if (DeviceStatus.F_OPEN.getCode().equals(exeDevice.getTargetStatus())) { + temp = modbusTcp.getDeviceModbus().getOpen(); + } + if (StringUtils.isBlank(exeDevice.getLink()) || "null".equals(exeDevice.getLink())) { //鏍规嵁璁惧鐩爣鐘舵�侊紝璋冪敤MODBUS鎵ц - modbusTcp.setAddrExe(this.getAddrExe(temp)); + modbusTcp.setAddrExe(ServerUtil.getAddrExe(temp)); doWriteExe(modbusTcp, exeDevice.getTargetStatus()); continue; } - deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), exeDevice.getLink()); if (null == deviceModbus) continue; modbusTcpLink = new ModbusTcp(deviceModbus); modbusTcpLink.setIp(request.getIp()); modbusTcpLink.setPort(request.getPort()); - modbusTcpLink.setDeviceCode(exeDevice.getLink()); + modbusTcpLink.setBizCode(exeDevice.getLink()); modbusTcpLink.setSerId(request.getSerId()); modbusTcpLink.setCompanyId(request.getCompanyId()); + //鑻odbus璁惧閰嶇疆鍒嗘満锛屽垯浣跨敤鎵�閰嶇疆鍒嗘満鐨処P銆佺鍙� + if (StringUtils.isNotEmpty(deviceModbus.getSerId())) { + deviceSer = coreSerService.getCacheSer(request.getCompanyId(), deviceModbus.getSerId()); + modbusTcpLink.setIp(deviceSer.getIp()); + modbusTcpLink.setPort(deviceSer.getPort()); + } //濡傛灉鏄紑椋庢満 if (DeviceStatus.F_OPEN.getCode().equals(exeDevice.getTargetStatus())) { //鍏堝紑绐楀彛 temp = modbusTcp.getDeviceModbus().getOpen(); - modbusTcp.setAddrExe(this.getAddrExe(temp)); - + modbusTcp.setAddrExe(ServerUtil.getAddrExe(temp)); doWriteExe(modbusTcp, DeviceStatus.OPEN.getCode()); - Thread.sleep(300); //鍐嶅紑椋庢満 temp = modbusTcpLink.getDeviceModbus().getOpen(); - modbusTcpLink.setAddrExe(this.getAddrExe(temp)); + modbusTcpLink.setAddrExe(ServerUtil.getAddrExe(temp)); doWriteExe(modbusTcpLink, DeviceStatus.OPEN.getCode()); } //濡傛灉鍏抽鏈� - if (DeviceStatus.F_CLOSE.equals(exeDevice.getTargetStatus())) { + if (DeviceStatus.F_CLOSE.getCode().equals(exeDevice.getTargetStatus())) { temp = modbusTcpLink.getDeviceModbus().getStop(); - modbusTcpLink.setAddrExe(this.getAddrExe(temp)); + modbusTcpLink.setAddrExe(ServerUtil.getAddrExe(temp)); doWriteExe(modbusTcpLink, DeviceStatus.CLOSE.getCode()); } //濡傛灉寮�绐� - if (DeviceStatus.W_OPEN.equals(exeDevice.getTargetStatus())) { + if (DeviceStatus.W_OPEN.getCode().equals(exeDevice.getTargetStatus())) { temp = modbusTcp.getDeviceModbus().getOpen(); - modbusTcp.setAddrExe(this.getAddrExe(temp)); + modbusTcp.setAddrExe(ServerUtil.getAddrExe(temp)); doWriteExe(modbusTcp, exeDevice.getTargetStatus()); } //濡傛灉鏄叧绐楁埛 - if (DeviceStatus.W_CLOSE.equals(exeDevice.getTargetStatus())) { + if (DeviceStatus.W_CLOSE.getCode().equals(exeDevice.getTargetStatus())) { //鍏堝叧椋庢満 temp = modbusTcpLink.getDeviceModbus().getStop(); - modbusTcpLink.setAddrExe(this.getAddrExe(temp)); + modbusTcpLink.setAddrExe(ServerUtil.getAddrExe(temp)); doWriteExe(modbusTcpLink, DeviceStatus.CLOSE.getCode()); Thread.sleep(300); //鍦ㄥ叧绐楁埛 - temp = modbusTcp.getDeviceModbus().getOpen(); - modbusTcp.setAddrExe(this.getAddrExe(temp)); + temp = modbusTcp.getDeviceModbus().getClose(); + modbusTcp.setAddrExe(ServerUtil.getAddrExe(temp)); doWriteExe(modbusTcp, DeviceStatus.CLOSE.getCode()); } @@ -168,19 +194,14 @@ return new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS); } - private int getAddrExe(String temp) { - if (Constant.YN_N.equals(temp)) return 65535; - if (temp.length() > 4) { - temp = temp.substring(temp.length() - 4); - } - return Integer.valueOf(temp) - 1; - } - private void doWriteExe(ModbusTcp modbusTcp, String targetStatus) throws Exception { boolean exeResult = ModbusUtil2.writeCoilStatus(modbusTcp.getIp(), modbusTcp.getPort(), modbusTcp.getAddrExe(), true); if (exeResult) { - log.debug("--------鍐欏叆鍊�---{}-{}-{}", modbusTcp.getSerId(), modbusTcp.getDeviceCode(), targetStatus); - ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getDeviceCode(), targetStatus); + //鏍规嵁Modbus-TCP锛屽皢鍐欒繃鐨勫�硷紝鎭㈠鍘熸潵鐨勫�� + ModbusUtil2.writeCoilStatus(modbusTcp.getIp(), modbusTcp.getPort(), modbusTcp.getAddrExe(), false); + + log.debug("--------鍐欏叆鍊�---{}-{}-{}", modbusTcp.getSerId(), modbusTcp.getBizCode(), targetStatus); + ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), targetStatus); } } @@ -204,6 +225,11 @@ for (Device device : list) { deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), device.getPassCode() + ""); + //绌鸿皟璁惧鍗曠嫭鏌ヨ + if(DeviceType.TYPE_05.getCode().equals(device.getType())){ + deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), device.getPassCode() + "", BizType.TEMPCONTROL.getCode()); + } + if (null == deviceModbus) { log.error("褰撳墠璁惧---{}{},涓鸿幏鍙栧埌閰嶇疆鐨凪ODBUS淇℃伅", device.getSerId(), device.getName()); continue; @@ -214,11 +240,17 @@ modbusTcp = new ModbusTcp(deviceModbus); modbusTcp.setIp(request.getIp()); modbusTcp.setPort(request.getPort()); - modbusTcp.setDeviceCode(device.getPassCode() + ""); + modbusTcp.setBizCode(device.getPassCode() + ""); modbusTcp.setSerId(device.getSerId()); modbusTcp.setCompanyId(device.getCompanyId()); - doReadStatus(modbusTcp); + //绌鸿皟鐘舵�佸崟鐙鍙� + if(DeviceType.TYPE_05.getCode().equals(device.getType())){ + doReadTempStatus(modbusTcp); + continue; + } + + doReadStatus(modbusTcp, false); if (StringUtils.isBlank(device.getLink()) || "null".equals(device.getLink())) continue; @@ -232,12 +264,12 @@ modbusTcpLink.setIp(request.getIp()); modbusTcpLink.setPort(request.getPort()); modbusTcpLink.setSerId(device.getSerId()); - modbusTcpLink.setDeviceCode(device.getLink()); + modbusTcpLink.setBizCode(device.getLink()); modbusTcpLink.setCompanyId(device.getCompanyId()); - modbusTcpLink.setAddrExe(this.getAddrExe(modbusTcp.getDeviceModbus().getOpenEnd())); + modbusTcpLink.setAddrExe(ServerUtil.getAddrExe(modbusTcp.getDeviceModbus().getOpenEnd())); - doReadStatus(modbusTcpLink); + doReadStatus(modbusTcpLink, true); } } catch (Exception e) { @@ -254,34 +286,125 @@ * 璇诲彇鐘舵�侊紝鍚屾椂璇诲彇寮�鐘舵�佸拰鍏抽棴鐘舵�� * * @param modbusTcp + * @param flag 鏄惁鏄叧鑱旇澶� * @throws Exception */ - private void doReadStatus(ModbusTcp modbusTcp) throws Exception { + private void doReadStatus(ModbusTcp modbusTcp, Boolean flag) throws Exception { if (Constant.YN_N.equals(modbusTcp.getDeviceModbus().getOpen())) return; + if (Constant.YN_N.equals(modbusTcp.getDeviceModbus().getOpenEnd())) return; - int addrExe = getAddrExe(modbusTcp.getDeviceModbus().getOpenEnd()); - + int addrExe = ServerUtil.getAddrExe(modbusTcp.getDeviceModbus().getOpenEnd()); boolean result = ModbusUtil2.readInputStatus(modbusTcp.getIp(), modbusTcp.getPort(), addrExe); - log.debug("---------璇诲紑鍒颁綅鐘舵��------{}-{}-{}", modbusTcp.getDeviceCode(), addrExe, result); - + log.debug("---------璇婚绐楅鍙e紑鍒颁綅鐘舵��(鎴栧叾浠栬澶囪繍琛岀姸鎬�)------{}-{}-{}", modbusTcp.getBizCode(), addrExe, result); + String statusOpen = DeviceStatus.OPEN.getCode(); + String statusClose = DeviceStatus.CLOSE.getCode(); + if(flag){ + statusOpen = DeviceStatus.F_OPEN.getCode(); + statusClose = DeviceStatus.F_CLOSE.getCode(); + } if (result) { - ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getDeviceCode(), DeviceStatus.OPEN.getCode()); + ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), statusOpen); + }else { + ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), statusClose); } - - addrExe = getAddrExe(modbusTcp.getDeviceModbus().getCloseEnd()); + if (Constant.YN_N.equals(modbusTcp.getDeviceModbus().getCloseEnd())) return; + addrExe = ServerUtil.getAddrExe(modbusTcp.getDeviceModbus().getCloseEnd()); result = ModbusUtil2.readInputStatus(modbusTcp.getIp(), modbusTcp.getPort(), addrExe); - log.debug("---------璇诲叧鍒颁綅鐘舵��------{}-{}-{}", modbusTcp.getDeviceCode(), addrExe, result); - + log.debug("---------璇婚绐楅鍙e叧鍒颁綅鐘舵��------{}-{}-{}", modbusTcp.getBizCode(), addrExe, result); if (result) { - ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getDeviceCode(), DeviceStatus.CLOSE.getCode()); + ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), DeviceStatus.CLOSE.getCode()); + }else { + ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), DeviceStatus.OPEN.getCode()); + } + } + + /** + * 璇诲彇绌鸿皟璁惧鐘舵�� + * + * @param modbusTcp + * @throws Exception + */ + private void doReadTempStatus(ModbusTcp modbusTcp) throws Exception { + + if (Constant.YN_N.equals(modbusTcp.getDeviceModbus().getOpenEnd())) return; + + int addrExe = ServerUtil.getAddrExe(modbusTcp.getDeviceModbus().getOpenEnd()); + Number number = ModbusUtil2.readHoldingRegister(modbusTcp.getIp(), modbusTcp.getPort(), addrExe); + log.debug("---------璇荤┖璋冭繍琛岀姸鎬�------{}-{}-{}", modbusTcp.getBizCode(), addrExe, number); + + int num = number.intValue(); + if(num == 1){ + ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), DeviceStatus.OPEN.getCode()); + } + if(num == 2){ + ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), DeviceStatus.CLOSE.getCode()); } } @Override public DeviceControlResponse tempControl(TempControlRequest request) { - return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "缁堢鏌滀綋鏈帴鍏ュ綋鍓嶆帶鍒�"); + ExeDevice exeDevice = request.getExeDevice(); + + if (null == exeDevice) { + return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "娌℃湁闇�瑕佹墽琛岀殑璁惧"); + } + + try { + ModbusTcp modbusTcp; + String temp = Constant.YN_N; + DeviceSer deviceSer; + + DeviceModbus deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), exeDevice.getPassCode() + "", BizType.TEMPCONTROL.getCode()); + if (null == deviceModbus) { + return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "鏈幏鍙栧埌閰嶇疆鐨凪ODBUS淇℃伅"); + } + + 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()); + + //寮�绌鸿皟鏃讹紝闇�瑕佸彂閫佷袱鏉″懡浠わ紝涓�鏉¤缃俯搴﹀懡浠わ紝涓�鏉″紑鍚懡浠� + if (DeviceStatus.OPEN.getCode().equals(exeDevice.getTargetStatus())) { + + //璁剧疆娓╁害 + temp = modbusTcp.getDeviceModbus().getClose(); + modbusTcp.setAddrExe(ServerUtil.getAddrExe(temp)); + doWriteExe(modbusTcp, exeDevice.getTargetStatus()); + boolean exeResult = ModbusUtil2.writeRegister(modbusTcp.getIp(), modbusTcp.getPort(), modbusTcp.getAddrExe(), Integer.valueOf(request.getTargetTemp())); + + //寮�绌鸿皟 + if (exeResult) { + temp = modbusTcp.getDeviceModbus().getOpen(); + modbusTcp.setAddrExe(ServerUtil.getAddrExe(temp)); + doWriteExe(modbusTcp, exeDevice.getTargetStatus()); + } + } + + //鍏崇┖璋冩椂锛屽彧鍙戦�佷竴鏉″叧闂懡浠� + if (DeviceStatus.CLOSE.getCode().equals(exeDevice.getTargetStatus())) { + temp = modbusTcp.getDeviceModbus().getStop(); + modbusTcp.setAddrExe(ServerUtil.getAddrExe(temp)); + doWriteExe(modbusTcp, exeDevice.getTargetStatus()); + } + } catch (Exception e) { + log.error("璋冪敤MODBUS-TCP鎵ц寮傚父锛歿}", e); + return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "鍚庡彴鎵ц寮傚父锛�" + e.getMessage()); + } + + return new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS); } @Override 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); } } diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteGasServiceImpl.java b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteGasServiceImpl.java index 8862faa..6918ae1 100644 --- a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteGasServiceImpl.java +++ b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteGasServiceImpl.java @@ -1,10 +1,28 @@ package com.ld.igds.protocol.modbus.command; +import com.ld.igds.constant.BizType; +import com.ld.igds.constant.RedisConst; import com.ld.igds.io.RemoteGasService; +import com.ld.igds.io.constant.OrderRespEnum; +import com.ld.igds.io.constant.ProtocolEnum; import com.ld.igds.io.request.CheckGasRequest; +import com.ld.igds.io.response.DeviceControlResponse; 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.GasModbus; +import com.ld.igds.protocol.modbus.ModbusUtil2; +import com.ld.igds.protocol.modbus.ServerUtil; +import com.ld.igds.protocol.modbus.data.ModbusGasResult; +import com.ld.igds.protocol.modbus.data.ModbusTcp; +import com.ld.igds.util.RedisUtil; import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; /** * 褰撳墠鍗忚閽堝鏍囧噯Modbus-TCP鍗忚 @@ -19,23 +37,182 @@ public static final String BEAN_ID = "modbus.remoteGasService"; + @Resource + private HModbusService modbusService; + @Resource + private AnalysisService analysisService; + @Resource + private RedisUtil redisUtil; + + @Override public String getProtocol() { - return null; + return ProtocolEnum.TCP_MODBUS.getCode(); } @Override public GasResponse checkGas(CheckGasRequest request) { - return null; + + boolean isRun = isRun(request); + if (isRun) { + return new GasResponse(OrderRespEnum.ORDER_ERROR.getCode(), "鎻愰啋锛氬綋鍓嶄粨姝e湪鎵ц妫�娴�"); + } + + String passCode = request.getDepotId(); + + try { + //鑾峰彇闇�瑕佹墽琛岀殑璁惧閰嶇疆 + DeviceModbus deviceModbus = modbusService.getCacheDeviceModbus(request.getCompanyId(), passCode, BizType.GAS.getCode()); + + ModbusTcp modbusTcp = new ModbusTcp(deviceModbus); + modbusTcp.setIp(request.getIp()); + modbusTcp.setPort(request.getPort()); + modbusTcp.setBizCode(passCode); + modbusTcp.setSerId(request.getSerId()); + modbusTcp.setCompanyId(request.getCompanyId()); + + modbusTcp.setAddrExe(ServerUtil.getAddrExe(deviceModbus.getOpen())); + + boolean exeResult = ModbusUtil2.writeCoilStatus(modbusTcp.getIp(), modbusTcp.getPort(), modbusTcp.getAddrExe(), true); + if (exeResult) { + addRun(request); + //璋冪敤寮傛鑾峰彇缁撴灉 + progressGasResult(request, modbusTcp); + log.debug("--------鍚姩娴嬫皵---{}-{}", modbusTcp.getSerId(), modbusTcp.getBizCode()); + } + + } catch (Exception e) { + return new GasResponse(OrderRespEnum.ORDER_ERROR.getCode(), "鍚庡彴鎵ц寮傚父锛�" + e.getLocalizedMessage()); + } + + return new GasResponse(OrderRespEnum.ORDER_SUCCESS); } + + private void addRun(CheckGasRequest request) { + String key = RedisConst.buildKey(request.getCompanyId(), ServerUtil.RUN_TAG, request.getDepotId()); + + redisUtil.set(key, request, 6 * 60); + } + + private void delRun(CheckGasRequest request) { + String key = RedisConst.buildKey(request.getCompanyId(), ServerUtil.RUN_TAG, request.getDepotId()); + + redisUtil.del(key); + } + + private boolean isRun(CheckGasRequest request) { + String key = RedisConst.buildKey(request.getCompanyId(), ServerUtil.RUN_TAG, request.getDepotId()); + + Object obj = redisUtil.get(key); + if (null == obj) return false; + + return true; + } + + /** + * 寮傛鎵ц杩涘害鏌ヨ + * + * @param modbusTcp + */ + @Async + public void progressGasResult(CheckGasRequest request, ModbusTcp modbusTcp) { + + + log.debug("--------------寮傛鎵ц姘斾綋妫�娴嬭杩囪幏鍙�-------------"); + + try { + List<GasModbus> list = modbusService.listGasModBus(modbusTcp.getBizCode()); + + if (null == list || list.isEmpty()) { + log.error("------------鏇存柊姘斾綋妫�娴嬬粨鏋滆繘搴﹀け璐ワ紝娌℃湁鑾峰彇鍒版娴嬮�氶亾閰嶇疆淇℃伅-----{}", modbusTcp.getBizCode()); + return; + } + + //鏍规嵁閫氶亾鏁伴噺绾跨▼绛夊緟锛屾瘡涓�氶亾绛夊緟60绉� + Thread.sleep(list.size() * 50 * 1000); + log.debug("--------------绛夊緟鏃堕棿瀹屾垚锛屽紑濮嬭幏鍙栨娴嬬粨鏋�-------------{}", modbusTcp.getBizCode()); + + boolean isRun = isRun(request); + if (!isRun) { + log.info("--------------褰撳墠浠撳簱妫�娴嬪凡缁忓仠姝紝鍙栨秷缁撴灉鏌ヨ-------------{}", modbusTcp.getBizCode()); + return; + } + + ModbusTcp modbusTcpTemp = modbusTcp; + List<ModbusGasResult> results = new ArrayList<>(); + ModbusGasResult gasResult; + Number check; + for (GasModbus gasModbus : list) { + gasResult = new ModbusGasResult(); + gasResult.setPasscode(gasModbus.getPasscode()); + + //浜屾哀鍖栫⒊ + modbusTcpTemp.setAddrExe(ServerUtil.getAddrExe(gasModbus.getCo2())); + check = ModbusUtil2.readHoldingRegister(modbusTcpTemp.getIp(), modbusTcpTemp.getPort(), modbusTcpTemp.getAddrExe()); + gasResult.setCo2(check); + + //姘ф皵 + modbusTcpTemp.setAddrExe(ServerUtil.getAddrExe(gasModbus.getO2())); + check = ModbusUtil2.readHoldingRegister(modbusTcpTemp.getIp(), modbusTcpTemp.getPort(), modbusTcpTemp.getAddrExe()); + gasResult.setO2(check); + + //纾峰寲姘� + modbusTcpTemp.setAddrExe(ServerUtil.getAddrExe(gasModbus.getPh3())); + check = ModbusUtil2.readHoldingRegister(modbusTcpTemp.getIp(), modbusTcpTemp.getPort(), modbusTcpTemp.getAddrExe()); + gasResult.setPh3(check); + log.debug("----閫氶亾{}锛孋o2={}锛孫2={}锛孭h3={}", gasModbus.getPasscode(), gasResult.getCo2(), gasResult.getO2(), gasResult.getPh3()); + results.add(gasResult); + } + + //鍒犻櫎杩愯鏍囪 + delRun(request); + + log.debug("----鑾峰彇鐨勬皵浣撴娴嬬粨鏋�---{}--{}", request.getDepotId(), results.toString()); + //閫氱煡瑙f瀽 + analysisService.analysisGas(request, results); + } catch (Exception e) { + log.error("------------鏇存柊姘斾綋妫�娴嬬粨鏋滆繘搴﹀け璐ワ紝鎵ц寮傚父-----{}--{}", modbusTcp.getBizCode(), e); + } + + } + @Override public GasResponse checkGasByPoint(CheckGasRequest request) { - return null; + return new GasResponse(OrderRespEnum.ORDER_ERROR.getCode(), "褰撳墠鎺у埗鏌滀笉鏀寔閫夋嫨鐐逛綅閲囬泦"); } @Override public GasResponse stopCheckGas(CheckGasRequest request) { - return null; + String passCode = request.getDepotId(); + + try { + //鑾峰彇闇�瑕佹墽琛岀殑璁惧閰嶇疆 + DeviceModbus deviceModbus = modbusService.getCacheDeviceModbus(request.getCompanyId(), passCode, BizType.GAS.getCode()); + + ModbusTcp modbusTcp = new ModbusTcp(deviceModbus); + modbusTcp.setIp(request.getIp()); + modbusTcp.setPort(request.getPort()); + modbusTcp.setBizCode(passCode); + modbusTcp.setSerId(request.getSerId()); + modbusTcp.setCompanyId(request.getCompanyId()); + + modbusTcp.setAddrExe(ServerUtil.getAddrExe(deviceModbus.getStop())); + + boolean exeResult = ModbusUtil2.writeCoilStatus(modbusTcp.getIp(), modbusTcp.getPort(), modbusTcp.getAddrExe(), true); + if (exeResult) { + log.debug("--------鍏抽棴娴嬫皵---{}-{}", modbusTcp.getSerId(), modbusTcp.getBizCode()); + + //閫氱煡寮傛缁撴潫缁撴灉閲囬泦 + delRun(request); + } + + } catch (Exception e) { + return new GasResponse(OrderRespEnum.ORDER_ERROR.getCode(), "鍚庡彴鎵ц寮傚父锛�" + e.getLocalizedMessage()); + } + + return new GasResponse(OrderRespEnum.ORDER_SUCCESS); } + + } diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/data/ModbusGasResult.java b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/data/ModbusGasResult.java new file mode 100644 index 0000000..5285f72 --- /dev/null +++ b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/data/ModbusGasResult.java @@ -0,0 +1,31 @@ +package com.ld.igds.protocol.modbus.data; + +import lombok.Data; + +/** + * @Desc: 鐢ㄤ簬灏佽ModBUsTCP鐨勪俊鎭� + * @author: andy.jia + * @update-time: 2023/8/12 15:29 + */ +@Data +public class ModbusGasResult { + + private int passcode; + + private Number co2; + + private Number o2; + + private Number ph3; + + + @Override + public String toString() { + return "GasResult{" + + "passcode=" + passcode + + ", co2=" + co2 + + ", o2=" + o2 + + ", ph3=" + ph3 + + '}'; + } +} diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/data/ModbusTcp.java b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/data/ModbusTcp.java index c69d629..f743c9d 100644 --- a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/data/ModbusTcp.java +++ b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/data/ModbusTcp.java @@ -13,8 +13,9 @@ private String companyId; - - private String deviceCode; + + //涓氬姟鐩稿叧缂栫爜 + private String bizCode; private String serId; @@ -34,9 +35,9 @@ this.deviceModbus = deviceModbus; } - public ModbusTcp(String companyId, String deviceCode, String serId, String ip, int port, DeviceModbus deviceModbus) { + public ModbusTcp(String companyId, String bizCode, String serId, String ip, int port, DeviceModbus deviceModbus) { this.companyId = companyId; - this.deviceCode = deviceCode; + this.bizCode = bizCode; this.serId = serId; this.ip = ip; this.port = port; diff --git a/igds-recir/src/main/java/com/ld/igds/temp/manager/TempControlManager.java b/igds-recir/src/main/java/com/ld/igds/temp/manager/TempControlManager.java index 8bbc262..9e53777 100644 --- a/igds-recir/src/main/java/com/ld/igds/temp/manager/TempControlManager.java +++ b/igds-recir/src/main/java/com/ld/igds/temp/manager/TempControlManager.java @@ -161,7 +161,7 @@ return tempControl3(param); } -// 濡傛灉澶氫釜璁惧锛岄渶瑕佸璁惧鎸夊垎鏈鸿繘琛屽垎缁� + // 濡傛灉澶氫釜璁惧锛岄渶瑕佸璁惧鎸夊垎鏈鸿繘琛屽垎缁� Map<String, List<ExeDevice>> deviceMap = deviceList.stream().collect(Collectors.groupingBy(ExeDevice::getSerId)); String temp = ""; @@ -202,11 +202,11 @@ // 鑾峰彇鍒嗘満淇℃伅 DeviceSer deviceSer = coreSerService.getCacheSer(param.getCompanyId(), exeDevice.getSerId()); - if (!Constant.YN_Y.equals(deviceSer.getStatus())) { - return new DeviceControlResponse( - OrderRespEnum.ORDER_ERROR.getCode(), - "褰撳墠璁惧鎵�鍦ㄦ帶鍒舵煖銆�" + deviceSer.getName() + "銆戜笉鍦ㄧ嚎锛屾棤娉曟墽琛�"); - } +// if (!Constant.YN_Y.equals(deviceSer.getStatus())) { +// return new DeviceControlResponse( +// OrderRespEnum.ORDER_ERROR.getCode(), +// "褰撳墠璁惧鎵�鍦ㄦ帶鍒舵煖銆�" + deviceSer.getName() + "銆戜笉鍦ㄧ嚎锛屾棤娉曟墽琛�"); +// } TempControlRequest request = new TempControlRequest(); request.setDepotId(param.getDepotId()); diff --git a/igds-verb/src/main/java/com/ld/igds/verb/manager/VerbManager.java b/igds-verb/src/main/java/com/ld/igds/verb/manager/VerbManager.java index 4880842..fac6d43 100644 --- a/igds-verb/src/main/java/com/ld/igds/verb/manager/VerbManager.java +++ b/igds-verb/src/main/java/com/ld/igds/verb/manager/VerbManager.java @@ -29,10 +29,7 @@ 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.*; import java.util.stream.Collectors; @@ -301,16 +298,22 @@ return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "娌℃湁闇�瑕佹洿鏂扮殑璁惧淇℃伅锛侊紒"); } +// 2023-08-31鏆傛椂绂佺敤锛屼娇鐢ㄤ粨搴撶紪鐮佽幏鍙栦粨搴撴墍鏈夎澶囩殑鍒嗘満淇℃伅 //鏍规嵁璁惧鎵�灞炲垎鏈鸿繘琛屽垎缁� - Map<String, List<ExeDevice>> groupBy = param.getDeviceList().stream().collect(Collectors.groupingBy(ExeDevice::getSerId)); +// Map<String, List<ExeDevice>> groupBy = param.getDeviceList().stream().collect(Collectors.groupingBy(ExeDevice::getSerId)); +// DeviceControlResponse response = new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS.getCode(), "鍛戒护鍙戦�佹垚鍔燂紒"); +// DeviceSer deviceSer; +// DeviceControlRequest request; +// try { +// for (String serId : groupBy.keySet()) { + Set<String> list = coreDeviceService.getCacheDeviceSerByDepotId(param.getCompanyId(), param.getDepotId()); DeviceControlResponse response = new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS.getCode(), "鍛戒护鍙戦�佹垚鍔燂紒"); - DeviceSer deviceSer; DeviceControlRequest request; try { - for (String serId : groupBy.keySet()) { + for (String serId : list) { deviceSer = coreSerService.getCacheSer(param.getCompanyId(), serId); if (null == deviceSer) { log.info("鏍规嵁浠撳簱{}鑾峰彇璁惧鐘舵�侊紝鍒嗘満缂栫爜{}鐨勫垎鏈轰笉瀛樺湪锛屽彇娑堟墽琛屻��", param.getDepotId(), serId); diff --git a/igds-web/pom.xml b/igds-web/pom.xml index de80120..6515ad6 100644 --- a/igds-web/pom.xml +++ b/igds-web/pom.xml @@ -187,7 +187,7 @@ <!-- </dependency>--> - <!-- 绉佹湁鍗忚-椋庢鑷磋繙IOT銆佸埗姘満--> + <!-- 绉佹湁鍗忚-椋庢鑷磋繙IOT銆佸埗姘満 <dependency> <groupId>com.ld.igds</groupId> <artifactId>igds-protocol-iot</artifactId> @@ -203,6 +203,7 @@ </exclusion> </exclusions> </dependency> + --> <!-- 绉佹湁鍗忚-璐濆崥绮儏--> <dependency> diff --git a/igds-web/src/main/resources/application-pro5325.yml b/igds-web/src/main/resources/application-pro5325.yml index 701c756..d2d11bf 100644 --- a/igds-web/src/main/resources/application-pro5325.yml +++ b/igds-web/src/main/resources/application-pro5325.yml @@ -1,4 +1,4 @@ -########################## 姹熻タ璧e窞椤圭洰 ########################## +########################## 姹熻タ璧e窞-澶у叕椤圭洰 ########################## server: port: 8888 context-path: / @@ -15,7 +15,7 @@ url: jdbc:mysql://127.0.0.1:3306/igds_master?useUnicode=true&characterEncoding=utf-8 driver-class-name: com.mysql.jdbc.Driver username: root - password: ukJp12Qf+elyBvGHkJ5MQMa95pfVm0oFBHefdEgDFKoFSjbgYa9PYfv5vlem5nvoXjQsP9tIIo53DvSbsl160Q== + password: cCB/meZWF3TckLO5t3oIETehaLqFAgDisogg8yqrdEIClsZxu8lwFAkgtilJRYnLgQPHlJV4eamhE9IGPN+kKw== public-key: config-decrypt: true initial-size: 5 @@ -64,17 +64,17 @@ subject: ld_license publicAlias: publicCert storePass: PUBLICFZZYXXJSGFYXGS888888 - licensePath: D:/IGDS/license/license.lic - publicKeysStorePath: D:/IGDS/license/publicCerts.keystore + licensePath: F:/IGDS/license/license.lic + publicKeysStorePath: F:/IGDS/license/publicCerts.keystore ########################## IGDS ########################## ## 绯荤粺鎺ュ彛璺敱閰嶇疆 娉ㄦ剰鏁板瓧濡傛灉浠�0寮�澶寸殑璇濓紝鍚庡彴浼氬嚭鐜拌浆涔夛紝璇锋坊鍔�"" igds: default: - companyId: 5328 + companyId: 5325 sys-name: 鏅烘収绮簱绠$悊绯荤粺 logo: logo-default.png logo-title: logo-title-default.png support: 椋庢鑷磋繙淇℃伅鎶�鏈偂浠芥湁闄愬叕鍙� grian-add-point: N - file-path: D:/IGDS/FILE/ \ No newline at end of file + file-path: F:/IGDS/FILE/ \ No newline at end of file diff --git a/igds-web/src/main/resources/application-pro5327.yml b/igds-web/src/main/resources/application-pro5327.yml index 3a22b99..03d0465 100644 --- a/igds-web/src/main/resources/application-pro5327.yml +++ b/igds-web/src/main/resources/application-pro5327.yml @@ -1,4 +1,4 @@ -########################## 姝︽眽榛勯檪鍐涚伯 ########################## +########################## 姝︽眽榛勯檪鍐涚伯-Linux ########################## server: port: 8888 context-path: / diff --git a/igds-web/src/main/resources/gas-conf.properties b/igds-web/src/main/resources/gas-conf.properties index 71d39ba..675bf62 100644 --- a/igds-web/src/main/resources/gas-conf.properties +++ b/igds-web/src/main/resources/gas-conf.properties @@ -4,20 +4,20 @@ gas.mapImg.5000_001.img=5000_001.png ## 5016-\u5927\u6E7E\u533A\u6C14\u4F53\uFF0C\u53EA\u670910\u4E2A\u5E73\u65B9\u4ED3\u6709\u6C14\u4F53 -gas.mapImg.3P01.img=5016_001.png -gas.mapImg.3P02.img=5016_001.png -gas.mapImg.3P03.img=5016_001.png -gas.mapImg.3P04.img=5016_001.png -gas.mapImg.3P05.img=5016_001.png -gas.mapImg.3P06.img=5016_001.png -gas.mapImg.3P07.img=5016_001.png -gas.mapImg.3P08.img=5016_001.png -gas.mapImg.3P09.img=5016_001.png -gas.mapImg.3P10.img=5016_001.png +gas.mapImg.5016_3P01.img=5016_001.png +gas.mapImg.5016_3P02.img=5016_001.png +gas.mapImg.5016_3P03.img=5016_001.png +gas.mapImg.5016_3P04.img=5016_001.png +gas.mapImg.5016_3P05.img=5016_001.png +gas.mapImg.5016_3P06.img=5016_001.png +gas.mapImg.5016_3P07.img=5016_001.png +gas.mapImg.5016_3P08.img=5016_001.png +gas.mapImg.5016_3P09.img=5016_001.png +gas.mapImg.5016_3P10.img=5016_001.png ## 5303-\u4E0A\u6D77\u5609\u5B9A\uFF0C\u53EA\u67092\u4E2A\u4ED3\u6709\u6C14\u4F53 -gas.mapImg.91310114703439394M0010009001.img=009001.png -gas.mapImg.91310114703439394M0010009002.img=009002.png +gas.mapImg.5303_91310114703439394M0010009001.img=009001.png +gas.mapImg.5303_91310114703439394M0010009002.img=009002.png ## 5317-\u6F6E\u9633 gas.mapImg.5317_001.img=5317_001.png @@ -29,4 +29,38 @@ gas.mapImg.5013_001.img=5013_001.png ## 5318-\u6F6E\u9633 -gas.mapImg.5318_001.img=5318_001.png \ No newline at end of file +gas.mapImg.5318_001.img=5318_001. + +## 5325 江西赣州-大公 +gas.mapImg.5325_1.img=5325_001.png +gas.mapImg.5325_2.img=5325_001.png +gas.mapImg.5325_3.img=5325_001.png +gas.mapImg.5325_4.img=5325_001.png +gas.mapImg.5325_5.img=5325_001.png +gas.mapImg.5325_6.img=5325_001.png +gas.mapImg.5325_7.img=5325_001.png +gas.mapImg.5325_8.img=5325_001.png +gas.mapImg.5325_9.img=5325_001.png +gas.mapImg.5325_10.img=5325_001.png +gas.mapImg.5325_11.img=5325_001.png +gas.mapImg.5325_12.img=5325_001.png +gas.mapImg.5325_13.img=5325_001.png +gas.mapImg.5325_14.img=5325_001.png +gas.mapImg.5325_15.img=5325_001.png +gas.mapImg.5325_16.img=5325_001.png + +## 5328 广西来宾 +gas.mapImg.5328_0P18.img=5328_001_7.png +gas.mapImg.5328_0P19.img=5328_001_7.png +gas.mapImg.5328_0P20.img=5328_001_7.png +gas.mapImg.5328_0P21.img=5328_001_5.png +gas.mapImg.5328_0P22.img=5328_001_4.png +gas.mapImg.5328_0P23.img=5328_001_10.png +gas.mapImg.5328_0P24.img=5328_001_10.png +gas.mapImg.5328_0P25.img=5328_001_7.png +gas.mapImg.5328_0P26.img=5328_001_7.png +gas.mapImg.5328_0P27.img=5328_001_7.png +gas.mapImg.5328_0P28.img=5328_001_5.png +gas.mapImg.5328_0P29.img=5328_001_5.png +gas.mapImg.5328_0P30.img=5328_001_10.png +gas.mapImg.5328_0P31.img=5328_001_10.png \ No newline at end of file diff --git a/igds-web/src/main/resources/lib/modbus4j-3.1.0.jar b/igds-web/src/main/resources/lib/modbus4j-3.1.0.jar new file mode 100644 index 0000000..ab89c85 --- /dev/null +++ b/igds-web/src/main/resources/lib/modbus4j-3.1.0.jar Binary files differ diff --git a/igds-web/src/main/resources/n2-conf.properties b/igds-web/src/main/resources/n2-conf.properties index 639d665..9e6b4d0 100644 --- a/igds-web/src/main/resources/n2-conf.properties +++ b/igds-web/src/main/resources/n2-conf.properties @@ -110,6 +110,10 @@ n2.mapImg.5000_0138.a=default_qyc_a.png n2.mapImg.5000_0138.b=default_qyc_b.png +## 5325_001 +n2.mapImg.5325_001.a=pfc2_a.png +n2.mapImg.5325_001.b=pfc2_b.png + ## 5329_001 n2.mapImg.5329_001.a=default_qyc_a.png n2.mapImg.5329_001.b=default_qyc_b.png \ No newline at end of file diff --git a/igds-web/src/main/resources/static/admin/n2/n2-hand-5013.js b/igds-web/src/main/resources/static/admin/n2/n2-hand-5013.js index e90375d..5f6dc99 100644 --- a/igds-web/src/main/resources/static/admin/n2/n2-hand-5013.js +++ b/igds-web/src/main/resources/static/admin/n2/n2-hand-5013.js @@ -298,7 +298,7 @@ layer.open({ type: 1, title: '璁惧鎿嶄綔-' + domSelectDevice.attr("name"), - area: ['450px', '200px'], + area: ['450px', '150px'], shade: 0, content: $('#control-HL2'), btn: 0, diff --git a/igds-web/src/main/resources/static/img/aerial-5325_001.png b/igds-web/src/main/resources/static/img/aerial-5325_001.png new file mode 100644 index 0000000..6929eb8 --- /dev/null +++ b/igds-web/src/main/resources/static/img/aerial-5325_001.png Binary files differ diff --git a/igds-web/src/main/resources/static/img/aerial-5328_001.png b/igds-web/src/main/resources/static/img/aerial-5328_001.png new file mode 100644 index 0000000..6f396b5 --- /dev/null +++ b/igds-web/src/main/resources/static/img/aerial-5328_001.png Binary files differ diff --git a/igds-web/src/main/resources/static/img/gas/5325/5325_001.png b/igds-web/src/main/resources/static/img/gas/5325/5325_001.png new file mode 100644 index 0000000..25c971d --- /dev/null +++ b/igds-web/src/main/resources/static/img/gas/5325/5325_001.png Binary files differ diff --git a/igds-web/src/main/resources/static/img/gas/5328/5328_001_10.png b/igds-web/src/main/resources/static/img/gas/5328/5328_001_10.png new file mode 100644 index 0000000..4a14d6d --- /dev/null +++ b/igds-web/src/main/resources/static/img/gas/5328/5328_001_10.png Binary files differ diff --git a/igds-web/src/main/resources/static/img/gas/5328/5328_001_4.png b/igds-web/src/main/resources/static/img/gas/5328/5328_001_4.png new file mode 100644 index 0000000..c5fc467 --- /dev/null +++ b/igds-web/src/main/resources/static/img/gas/5328/5328_001_4.png Binary files differ diff --git a/igds-web/src/main/resources/static/img/gas/5328/5328_001_5.png b/igds-web/src/main/resources/static/img/gas/5328/5328_001_5.png new file mode 100644 index 0000000..67bab46 --- /dev/null +++ b/igds-web/src/main/resources/static/img/gas/5328/5328_001_5.png Binary files differ diff --git a/igds-web/src/main/resources/static/img/gas/5328/5328_001_7.png b/igds-web/src/main/resources/static/img/gas/5328/5328_001_7.png new file mode 100644 index 0000000..8f00ab1 --- /dev/null +++ b/igds-web/src/main/resources/static/img/gas/5328/5328_001_7.png Binary files differ diff --git a/igds-web/src/main/resources/static/img/logo-5325.png b/igds-web/src/main/resources/static/img/logo-5325.png new file mode 100644 index 0000000..d2c753c --- /dev/null +++ b/igds-web/src/main/resources/static/img/logo-5325.png Binary files differ diff --git a/igds-web/src/main/resources/static/img/n2/5325/pfc2_a.png b/igds-web/src/main/resources/static/img/n2/5325/pfc2_a.png new file mode 100644 index 0000000..aa7f80c --- /dev/null +++ b/igds-web/src/main/resources/static/img/n2/5325/pfc2_a.png Binary files differ diff --git a/igds-web/src/main/resources/static/img/n2/5325/pfc2_b.png b/igds-web/src/main/resources/static/img/n2/5325/pfc2_b.png new file mode 100644 index 0000000..8fa743b --- /dev/null +++ b/igds-web/src/main/resources/static/img/n2/5325/pfc2_b.png Binary files differ diff --git a/igds-web/src/main/resources/templates/admin/n2/n2-hand-5013.html b/igds-web/src/main/resources/templates/admin/n2/n2-hand-5013.html index cf58456..2d56e19 100644 --- a/igds-web/src/main/resources/templates/admin/n2/n2-hand-5013.html +++ b/igds-web/src/main/resources/templates/admin/n2/n2-hand-5013.html @@ -323,16 +323,16 @@ <div class="layui-btn-container m10"> <button class="rkbk-quick-btn btn-fj layui-btn btn-blue" onClick="toExecute('F_OPEN')"> - <i><img th:src="@{../../static/images/icon-sm-fj.png}" /></i>寮洪 + <i><img th:src="@{../../static/images/icon-sm-fj.png}" /></i>寮�椋庢満 </button> <button class="rkbk-quick-btn btn-fj layui-btn btn-red" onClick="toExecute('F_CLOSE')"> <i><img th:src="@{../../static/images/icon-sm-fj.png}" /></i>鍏抽鏈� </button> - <button class="rkbk-quick-btn btn-fj layui-btn btn-blue" - onClick="toExecute('F_OPEN_F')"> - <i><img th:src="@{../../static/images/icon-sm-fj.png}" /></i>寮遍 - </button> +<!-- <button class="rkbk-quick-btn btn-fj layui-btn btn-blue"--> +<!-- onClick="toExecute('F_OPEN_F')">--> +<!-- <i><img th:src="@{../../static/images/icon-sm-fj.png}" /></i>寮遍--> +<!-- </button>--> </div> </div> diff --git a/igds-web/src/main/resources/templates/admin/verb/verb-hand1.html b/igds-web/src/main/resources/templates/admin/verb/verb-hand1.html index 522efc1..9c73ca1 100644 --- a/igds-web/src/main/resources/templates/admin/verb/verb-hand1.html +++ b/igds-web/src/main/resources/templates/admin/verb/verb-hand1.html @@ -404,16 +404,16 @@ <div class="layui-btn-container m10"> <button class="rkbk-quick-btn btn-fj layui-btn btn-blue" onClick="toExecute('F_OPEN')"> - <i><img th:src="@{../../static/images/icon-sm-fj.png}" /></i>寮洪 + <i><img th:src="@{../../static/images/icon-sm-fj.png}" /></i>寮�椋庢満 </button> <button class="rkbk-quick-btn btn-fj layui-btn btn-red" onClick="toExecute('F_CLOSE')"> <i><img th:src="@{../../static/images/icon-sm-fj.png}" /></i>鍏抽鏈� </button> - <button class="rkbk-quick-btn btn-fj layui-btn btn-blue" - onClick="toExecute('F_OPEN_F')"> - <i><img th:src="@{../../static/images/icon-sm-fj.png}" /></i>寮遍 - </button> +<!-- <button class="rkbk-quick-btn btn-fj layui-btn btn-blue"--> +<!-- onClick="toExecute('F_OPEN_F')">--> +<!-- <i><img th:src="@{../../static/images/icon-sm-fj.png}" /></i>寮遍--> +<!-- </button>--> </div> </div> diff --git a/igds-web/src/main/resources/verb-conf.properties b/igds-web/src/main/resources/verb-conf.properties index fae8818..622cf9a 100644 --- a/igds-web/src/main/resources/verb-conf.properties +++ b/igds-web/src/main/resources/verb-conf.properties @@ -1,7 +1,7 @@ ##----\u901A\u98CE\u53C2\u6570\u914D\u7F6E----verb.mapImg.deptId.a--## ## 5000_001 -verb.mapImg.5000_001.a=default_pfc2_a.png -verb.mapImg.5000_001.b=default_pfc2_b.png +verb.mapImg.5000_001.a=pfc_a.png +verb.mapImg.5000_001.b=pfc_b.png verb.mapImg.5000_0137.a=default_qyc_a.png verb.mapImg.5000_0137.b=default_qyc_b.png @@ -176,9 +176,21 @@ verb.mapImg.5324_11.b=pfc_b.png -## 5325_001 -verb.mapImg.5325_001.a=default_pfc_a.png -verb.mapImg.5325_001.b=default_pfc_b.png +## 5325_001 江西赣州-大公 +verb.mapImg.5325_001.a=default_pfc2_a.png +verb.mapImg.5325_001.b=default_pfc2_b.png +verb.mapImg.5325_Q010101.a=default_qyc_a.png +verb.mapImg.5325_Q010101.b=default_qyc_b.png +verb.mapImg.5325_Q010201.a=default_qyc_a.png +verb.mapImg.5325_Q010201.b=default_qyc_b.png +verb.mapImg.5325_Q010301.a=default_qyc_a.png +verb.mapImg.5325_Q010301.b=default_qyc_b.png +verb.mapImg.5325_Q010401.a=default_qyc_a.png +verb.mapImg.5325_Q010401.b=default_qyc_b.png +verb.mapImg.5325_Q010501.a=default_qyc_a.png +verb.mapImg.5325_Q010501.b=default_qyc_b.png +verb.mapImg.5325_Q010601.a=default_qyc_a.png +verb.mapImg.5325_Q010601.b=default_qyc_b.png ## 5328_001 verb.mapImg.5328_001.a=default_pfc_a.png -- Gitblit v1.9.3