From d6f1c42e4f06494557f6253b4f946cc477145375 Mon Sep 17 00:00:00 2001 From: jiazx0107@163.com <jiazx0107@163.com> Date: 星期一, 28 八月 2023 16:32:19 +0800 Subject: [PATCH] 更新MODBUS-TCP协议,协议解析3 --- igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteGasServiceImpl.java | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 45 insertions(+), 1 deletions(-) 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 f475b24..cece11d 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,6 +1,7 @@ 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; @@ -14,6 +15,7 @@ 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; @@ -39,6 +41,9 @@ private HModbusService modbusService; @Resource private AnalysisService analysisService; + @Resource + private RedisUtil redisUtil; + @Override public String getProtocol() { @@ -47,6 +52,12 @@ @Override public GasResponse checkGas(CheckGasRequest request) { + + boolean isRun = isRun(request); + if (isRun) { + return new GasResponse(OrderRespEnum.ORDER_ERROR.getCode(), "鎻愰啋锛氬綋鍓嶄粨姝e湪鎵ц妫�娴�"); + } + String passCode = request.getDepotId(); try { @@ -64,6 +75,8 @@ boolean exeResult = ModbusUtil2.writeCoilStatus(modbusTcp.getIp(), modbusTcp.getPort(), modbusTcp.getAddrExe(), true); if (exeResult) { + + addRun(request); //璋冪敤寮傛鑾峰彇缁撴灉 progressGasResult(request, modbusTcp); log.debug("--------鍚姩娴嬫皵---{}-{}", modbusTcp.getSerId(), modbusTcp.getBizCode()); @@ -76,6 +89,27 @@ 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; + } + /** * 寮傛鎵ц杩涘害鏌ヨ * @@ -83,6 +117,7 @@ */ @Async public void progressGasResult(CheckGasRequest request, ModbusTcp modbusTcp) { + log.debug("--------------寮傛鎵ц姘斾綋妫�娴嬭杩囪幏鍙�-------------"); @@ -97,6 +132,12 @@ //鏍规嵁閫氶亾鏁伴噺绾跨▼绛夊緟锛屾瘡涓�氶亾绛夊緟50绉� 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<>(); @@ -124,16 +165,18 @@ results.add(gasResult); } + //鍒犻櫎杩愯鏍囪 + delRun(request); log.debug("----鑾峰彇鐨勬皵浣撴娴嬬粨鏋�---{}--{}", request.getDepotId(), results.toString()); //閫氱煡瑙f瀽 analysisService.analysisGas(request, results); - } catch (Exception e) { log.error("------------鏇存柊姘斾綋妫�娴嬬粨鏋滆繘搴﹀け璐ワ紝鎵ц寮傚父-----{}--{}", modbusTcp.getBizCode(), e.getMessage()); } } + @Override public GasResponse checkGasByPoint(CheckGasRequest request) { @@ -162,6 +205,7 @@ log.debug("--------鍏抽棴娴嬫皵---{}-{}", modbusTcp.getSerId(), modbusTcp.getBizCode()); //閫氱煡寮傛缁撴潫缁撴灉閲囬泦 + delRun(request); } } catch (Exception e) { -- Gitblit v1.9.3