vince
2023-12-19 c8a4f3f8327b4a2290d719503211adb8845e6fd8
优化代码,增加仓温仓湿度
已修改12个文件
已添加1个文件
113 ■■■■ 文件已修改
src/main/java/com/fzzy/api/Constant.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/data/GatewayDeviceProtocol.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/gateway/GatewayUtils.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/gateway/hx2023/data/GrainData.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/gateway/hx2023/data/GrainOutPut.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/gateway/hx2023/data/GrainTH.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/protocol/bhzn/analysis/AnalysisService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2ServerEngine.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/protocol/bhzn/service/Bhzn2GatewayGrainService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisGrain.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/protocol/fzzy/service/FzzyGatewayGrainService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/Constant.java
@@ -1,6 +1,8 @@
package com.fzzy.api;
import com.alibaba.fastjson.JSON;
import com.fzzy.api.data.ApiCommonDevice;
import lombok.extern.slf4j.Slf4j;
import java.util.Date;
import java.util.HashMap;
@@ -9,6 +11,7 @@
/**
 * å…¨å±€é™æ€ç±»
 */
@Slf4j
public class Constant {
@@ -322,6 +325,7 @@
    public static ApiCommonDevice getCommonDeviceCache(String sn) {
        if (null == sn) return null;
        log.info("在线设备:" + JSON.toJSONString(contextDeviceMap));
        return contextDeviceMap.get(sn);
    }
@@ -329,13 +333,22 @@
        if (null == ip) return null;
        if (contextDeviceMap.isEmpty()) return null;
        log.info("在线设备:" + JSON.toJSONString(contextDeviceMap));
        for (ApiCommonDevice device : contextDeviceMap.values()) {
            if (ip.equals(device)) return device;
            if (ip.equals(device.getIp())) return device;
        }
        return null;
    }
    public static ApiCommonDevice getCommonDeviceCacheBySn(String sn) {
        if (null == sn) return null;
        if (contextDeviceMap.isEmpty()) return null;
        log.info("在线设备:" + JSON.toJSONString(contextDeviceMap));
        for (ApiCommonDevice device : contextDeviceMap.values()) {
            if (sn.equals(device.getSn())) return device;
        }
        return null;
    }
    public static ApiCommonDevice updateCacheOnline(String ip, Integer port) {
        ApiCommonDevice device = getCommonDeviceCacheByIp(ip);
@@ -348,7 +361,8 @@
        device.setCode("SUCCESS");
        device.setMsg("设备上线");
        device.setOnlineTime(new Date());
        contextDeviceMap.put(device.getSn(), device);
        contextDeviceMap.put(device.getIp(), device);
        log.info("设备上线:" + ip);
        return device;
    }
@@ -363,12 +377,12 @@
        device.setStatus(Constant.YN_N);
        device.setCode("ERROR");
        device.setMsg("设备离线");
        contextDeviceMap.put(device.getSn(), device);
        contextDeviceMap.put(device.getIp(), device);
        return device;
    }
    public static void updateCache(ApiCommonDevice device) {
        contextDeviceMap.put(device.getSn(), device);
        contextDeviceMap.put(device.getIp(), device);
    }
}
src/main/java/com/fzzy/api/data/GatewayDeviceProtocol.java
@@ -13,8 +13,8 @@
    TCP_FZZY_V3("TCP_FZZY_V3", "粮情-风正致远控制柜协议V3"),
    GRAIN_FZZY_IGDS_V40("GRAIN_FZZY_IGDS_V40", "粮情-风正致远系统V40"),
    GRAIN_FZZY_BHZN_WEB("GRAIN_FZZY_BHZN_WEB", "粮情-FZZY-邦海智能网口协议"),
    GRAIN_FZZY_ZLDZ_WEB("GRAIN_FZZY_ZLDZ_WEB", "粮情-FZZY-正来电子网口协议"),
    GRAIN_FZZY_BHZN_WEB("GRAIN_FZZY_BHZN_WEB", "粮情-FZZY-BHZN口协议"),
    GRAIN_FZZY_ZLDZ_WEB("GRAIN_FZZY_ZLDZ_WEB", "粮情-FZZY-ZLDZ网口协议"),
    DEVICE_WEIGHT_HTTP("DEVICE_WEIGHT_HTTP", "地磅-HTTP协议"),
    DEVICE_WEIGHT_TCP_YH("DEVICE_WEIGHT_TCP_YH", "地磅-耀华TCP协议"),
    DEVICE_IDCARD_HTTP("DEVICE_IDCARD_HTTP", "身份证-HTTP协议"),
src/main/java/com/fzzy/gateway/GatewayUtils.java
@@ -59,6 +59,15 @@
        return null;
    }
    public static GatewayDevice getCacheByDeviceSIp(String ip) {
        Collection<GatewayDevice> list = allCacheDevice();
        if (null == list || list.isEmpty()) return null;
        for (GatewayDevice device : list) {
            if (ip.equals(device.getIp())) return device;
        }
        return null;
    }
    /**
     * é’ˆå¯¹ä¸€ä¸ªé€šè®¯åˆ†æœºå¯¹å¤šä¸ªä»“情况
src/main/java/com/fzzy/gateway/hx2023/data/GrainData.java
@@ -25,4 +25,6 @@
    private String weatherStation;
}
src/main/java/com/fzzy/gateway/hx2023/data/GrainOutPut.java
@@ -36,7 +36,9 @@
    private String maxZ = "0";
    private List<GrainTH> temperatureAndhumidity;
    private List<GrainTemp> temperature;
}
src/main/java/com/fzzy/gateway/hx2023/data/GrainTH.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.fzzy.gateway.hx2023.data;
import lombok.Data;
/**
 * ç²®æƒ…信息详细
 */
@Data
public class GrainTH {
    //根号
    private String cableNum;
    //层号
    private String layerNumber;
    //温度值
    private String temperature;
    //温度值
    private String humidity;
    //索引,从0开始
    private String position;
    public GrainTH() {
    }
    public GrainTH(String temperature, String humidity ,String position) {
        this.humidity = humidity;
        this.temperature = temperature;
        this.position = position;
    }
}
src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java
@@ -343,6 +343,10 @@
        }
        outPut.setTemperature(temperature);
        List<GrainTH> ths = new ArrayList<>();
        ths.add(new GrainTH(weather.getTem()!=null?weather.getTem()+"":"",weather.getHumidity()!=null?weather.getHumidity()+"":"","1"));
        outPut.setTemperatureAndhumidity(ths);
        grain.setOutput(JSONObject.toJSONString(outPut));
src/main/java/com/fzzy/protocol/bhzn/analysis/AnalysisService.java
@@ -98,21 +98,22 @@
    private void analysisGrain(IoMessage message) {
        try {
            //根据分机SN获取设备配置信息
            GatewayDevice gatewayDevice = GatewayUtils.getCacheByDeviceSn(message.getAddr());
            if (null == gatewayDevice) {
                replayGrain(message);
                log.error("主机-------->>平台,解析粮情失败,未获取到系统设备配置信息:" + message.getAddr());
                return;
            }
            //根据分机地址获取分机信息
            ApiCommonDevice commonDevice = Constant.getCommonDeviceCache(message.getAddr());
            ApiCommonDevice commonDevice = Constant.getCommonDeviceCache(message.getIp());
            if (commonDevice == null) {
                replayGrain(message);
                log.error("主机-------->>平台,解析粮情失败,未获取到系统粮情主机配置:" + message.getAddr());
                return;
            }
            //根据分机SN获取设备配置信息
            GatewayDevice gatewayDevice = GatewayUtils.getCacheByDeviceSn(commonDevice.getSn());
            if (null == gatewayDevice) {
                replayGrain(message);
                log.error("主机-------->>平台,解析粮情失败,未获取到系统设备配置信息:" + message.getAddr());
                return;
            }
            //获取请求信息
            BaseReqData reqData = ProtocolUtils.getSyncReq(gatewayDevice.getDepotIdSys());
@@ -323,7 +324,10 @@
        outPut.setAvgTemperature(NumberUtil.keepPrecision((sumT / sumNum), 1) + "");
        outPut.setMinTemperature(min + "");
        outPut.setMaxTemperature(min + "");
        List<GrainTH> ths = new ArrayList<>();
        ths.add(new GrainTH(thDto.getTempIn()!=null?thDto.getTempIn()+"":"",thDto.getHumidityIn()!=null?thDto.getHumidityIn()+"":"","1"));
        outPut.setTemperatureAndhumidity(ths);
        grain.setOutput(JSONObject.toJSONString(outPut));
        GatewayDevice gatewayDeviceWeather = GatewayUtils.getCacheByDeviceTypeOne(GatewayDeviceType.TYPE_09.getCode());
src/main/java/com/fzzy/protocol/bhzn/server/BhznGrainV2ServerEngine.java
@@ -46,9 +46,8 @@
        // é…ç½®ç³»ç»Ÿå¿ƒè·³é—´éš”
        ioServerOption.setReaderIdleTime(5 * 60);
        NettyServer ioServer = new NettyServer(ioServerOption, messageConsume, ioSessionListener, heartbeatProvider);
        ioServer = new NettyServer(ioServerOption, messageConsume, ioSessionListener, heartbeatProvider);
        ioServer.startup();
        log.info("* ");
        log.info("* ========================");
src/main/java/com/fzzy/protocol/bhzn/service/Bhzn2GatewayGrainService.java
@@ -38,7 +38,7 @@
        GatewayDevice device = reqData.getDevice();
        //获取连接中的设备信息
        ApiCommonDevice apiCommonDevice = Constant.getCommonDeviceCache(device.getDeviceSn());
        ApiCommonDevice apiCommonDevice = Constant.getCommonDeviceCache(device.getIp());
        if (null == apiCommonDevice) {
            resp.setCode(500);
src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisGrain.java
@@ -159,7 +159,11 @@
        }
        outPut.setTemperature(temperature);
        List<GrainTH> ths = new ArrayList<>();
        ths.add(new GrainTH(response.getTIn()!=null?response.getTIn()+"":"",response.getHIn()!=null?response.getHIn()+"":"","1"));
        outPut.setTemperatureAndhumidity(ths);
        //grain.setOutput(JSONObject.toJSONString(outPut));
        grain.setOutput(com.alibaba.fastjson2.JSONObject.toJSONString(outPut));
src/main/java/com/fzzy/protocol/fzzy/analysis/AnalysisService.java
@@ -47,7 +47,7 @@
            }
            //执行的分机信息
            ApiCommonDevice commonDevice = Constant.getCommonDeviceCache(message.getSn());
            ApiCommonDevice commonDevice = Constant.getCommonDeviceCacheBySn(message.getSn());
            if (null == commonDevice) {
                log.warn("控制柜------>>>平台:当前组织编码={},分机ID={},系统没有获取到分机信息,报文无法进行解析", message.getCompanyId(), message.getIedId());
                return;
src/main/java/com/fzzy/protocol/fzzy/service/FzzyGatewayGrainService.java
@@ -36,7 +36,7 @@
        GatewayDevice device = reqData.getDevice();
        //获取连接中的设备信息
        ApiCommonDevice apiCommonDevice = Constant.getCommonDeviceCache(device.getDeviceSn());
        ApiCommonDevice apiCommonDevice = Constant.getCommonDeviceCache(device.getIp());
        if (null == apiCommonDevice) {
            resp.setCode(500);