From b218f31bb202cffa656fa4ee09bdd8d67f8ed0ef Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期二, 13 五月 2025 17:29:42 +0800 Subject: [PATCH] 1、根据江海调整,功能码92、A2的应答中的日期时间去除; 2、表阀一体机的开关阀上行数据(84、85)处理逻辑进行修改。 --- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/tcp4Bjnl/NetDataDecoder.java | 92 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 92 insertions(+), 0 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/tcp4Bjnl/NetDataDecoder.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/tcp4Bjnl/NetDataDecoder.java new file mode 100644 index 0000000..5f947f6 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/tcp4Bjnl/NetDataDecoder.java @@ -0,0 +1,92 @@ +package com.dy.rtuMw3rd.tcp4Bjnl; + +import com.alibaba.fastjson2.JSON; +import com.dy.common.springUtil.SpringContextUtil; +import com.dy.rtuMw3rd.tcp4Bjnl.deal.BjnlDealer; +import com.dy.rtuMw3rd.tcp4Bjnl.protocol.BjnlProtocol; +import com.dy.rtuMw3rd.tcp4Bjnl.protocol.Result; +import lombok.extern.slf4j.Slf4j; +import org.apache.mina.core.buffer.IoBuffer; +import org.apache.mina.core.session.IoSession; +import org.apache.mina.filter.codec.CumulativeProtocolDecoder; +import org.apache.mina.filter.codec.ProtocolDecoderOutput; + +import java.io.IOException; + +/** + * @Author: liurunyu + * @Date: 2025/03/18 14:20 + * @Description + */ +@Slf4j +public class NetDataDecoder extends CumulativeProtocolDecoder { + + /** + * 瀵圭綉缁滀紶杈撴潵鐨勬暟鎹繘琛岃В鐮� + */ + protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws IOException, Exception{ + int remain = in.remaining() ; + if(remain > 0){ + byte[] bs = new byte[remain]; + in.get(bs) ; + in.position(0) ; + String s = new String(bs, "UTF-8") ; + if(s != null && s.length() > 0){ + s = s.trim() ; + } + this.receive(s); + } + return true; + } + + + private void receive(String json){ + log.info("鍖椾含鍐滄灄--鏀跺埌鏁版嵁锛�" + json); + try{ + if(JSON.isValid(json)){ + Result res = JSON.parseObject(json, Result.class) ; + if(res.status != null && res.status.code != null && res.status.code.equals(BjnlProtocol.SuccessCode)){ + if(res.status.type != null){ + if(res.status.type.equals(BjnlProtocol.ResultTypeAuth)){ + forLogin(res) ; + }else if(res.status.type.equals(BjnlProtocol.ResultTypeData)){ + forData(res) ; + }else if(res.status.type.equals(BjnlProtocol.ResultTypeControl)){ + forControl(res) ; + }else{ + log.error("鍖椾含鍐滄灄--鏈嶅姟绔繑鍥炴暟鎹叾绫诲瀷涓嶅彲璇嗗埆锛�" + res.status.type); + } + } + }else{ + //鍙兘鎺ㄩ�佺殑鏁版嵁涓笉鍖呭惈status瀛愭暟鎹� + if(res.data != null && res.data.length() > 0){ + forData(res) ; + }else{ + log.error("鍖椾含鍐滄灄--鏈嶅姟绔繑鍥炲け璐ヤ俊鎭細" + json); + } + + } + }else{ + log.error("鍖椾含鍐滄灄--鏈嶅姟绔繑鍥炴暟鎹潪鏈夋晥JSON鏁版嵁锛孿n鏁版嵁涓�" + json); + } + }catch (Exception e){ + log.error("鍖椾含鍐滄灄--鏈嶅姟绔繑鍥炴暟鎹浆JSON寮傚父锛孿n鏁版嵁涓�" + json ,e); + } + } + + private void forLogin(Result res){ + Worker.getInstance().setLogined(); + BjnlDealer d = SpringContextUtil.getBean(BjnlDealer.class) ; + d.logined(res); + } + + private void forData(Result res){ + BjnlDealer d = SpringContextUtil.getBean(BjnlDealer.class) ; + d.receiveData(res); + } + + private void forControl(Result res){ + BjnlDealer d = SpringContextUtil.getBean(BjnlDealer.class) ; + d.controlRes(res); + } +} -- Gitblit v1.8.0