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<String, GatewayDevice> cacheMapDeviceId = new HashMap<>();
|
|
/**
|
* 设备缓存-只针对
|
*/
|
public static Map<String, GatewayDevice> 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<GatewayDevice> allCacheDevice() {
|
return cacheMapDeviceId.values();
|
}
|
|
public static GatewayDevice getCacheByDeviceId(String deviceId) {
|
return cacheMapDeviceId.get(deviceId);
|
}
|
|
|
/**
|
* 针对一个分机对廒间的情况
|
*
|
* @param deviceSn
|
* @return
|
*/
|
public static GatewayDevice getCacheByDeviceSn(String deviceSn) {
|
Collection<GatewayDevice> 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<GatewayDevice> getCacheByDeviceSn2(String deviceSn) {
|
Collection<GatewayDevice> list = allCacheDevice();
|
if (null == list || list.isEmpty()) return null;
|
|
List<GatewayDevice> result = new ArrayList<>();
|
for (GatewayDevice device : list) {
|
if (deviceSn.equals(device.getDeviceSn())) result.add(device);
|
}
|
return result;
|
}
|
|
|
public static List<GatewayDevice> getCacheByDeviceType(String deviceType) {
|
List<GatewayDevice> 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<GatewayDevice> listDeviceWeight() {
|
return cacheMapDeviceWeight.values();
|
}
|
}
|