package com.fzzy.gateway; import com.fzzy.api.Constant; import com.fzzy.api.data.ApiCommonDevice; import com.fzzy.api.data.GatewayDeviceType; import com.fzzy.gateway.entity.GatewayDevice; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import java.util.*; /** * 常量 */ @Component public class GatewayUtils { /** * 设备缓存 */ public static Map cacheMapDeviceId = new HashMap<>(); /** * 设备缓存-只针对 */ public static Map cacheMapDeviceWeight = new HashMap<>(); public static void add2Cache(GatewayDevice device) { cacheMapDeviceId.put(device.getDeviceId(), device); //保存地磅 if (GatewayDeviceType.TYPE_01.getCode().equals(device.getType())) { cacheMapDeviceWeight.put(device.getDeviceId(), device); } } public static Collection allCacheDevice() { return cacheMapDeviceId.values(); } public static GatewayDevice getCacheByDeviceId(String deviceId) { return cacheMapDeviceId.get(deviceId); } /** * 针对一个分机对廒间的情况 * * @param deviceSn * @return */ public static GatewayDevice getCacheByDeviceSn(String deviceSn) { Collection list = allCacheDevice(); if (null == list || list.isEmpty()) return null; for (GatewayDevice device : list) { if (deviceSn.equals(device.getDeviceSn())) return device; } return null; } /** * 针对一个通讯分机对多个仓情况 * * @param deviceSn * @return */ public static List getCacheByDeviceSn2(String deviceSn) { Collection list = allCacheDevice(); if (null == list || list.isEmpty()) return null; List result = new ArrayList<>(); for (GatewayDevice device : list) { if (deviceSn.equals(device.getDeviceSn())) result.add(device); } return result; } public static List getCacheByDeviceType(String deviceType) { List result = new ArrayList<>(); for (GatewayDevice device : cacheMapDeviceId.values()) { if (deviceType.equals(device.getType())) result.add(device); } return result; } public static GatewayDevice getCacheByDeviceTypeOne(String deviceType) { for (GatewayDevice device : cacheMapDeviceId.values()) { if (deviceType.equals(device.getType())) return device; } return null; } public static void removeCache(GatewayDevice data) { cacheMapDeviceId.remove(data.getDeviceId()); //cacheMapDeviceSn.remove(data.getDeviceSn()); } public static String getStatus(String sn) { ApiCommonDevice device = Constant.getCommonDeviceCache(sn); if (null == device) return Constant.YN_N; return device.getStatus(); } public static boolean isOnline(String deviceId) { GatewayDevice device = getCacheByDeviceId(deviceId); if (null == device.getStatus() || Constant.YN_N.equals(device.getStatus())) return false; return true; } public static Collection listDeviceWeight() { return cacheMapDeviceWeight.values(); } }