| | |
| | | import com.fzzy.api.Constant; |
| | | import com.fzzy.api.data.ApiCommonDevice; |
| | | import com.fzzy.api.data.GatewayDeviceType; |
| | | import com.fzzy.gateway.data.GrainCableData; |
| | | import com.fzzy.gateway.entity.GatewayDevice; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.stereotype.Component; |
| | |
| | | public static Map<String, GatewayDevice> cacheMapDeviceId = new HashMap<>(); |
| | | |
| | | /** |
| | | * 设备缓存 |
| | | */ |
| | | public static Map<String, GatewayDevice> cacheMapDeviceSn = new HashMap<>(); |
| | | |
| | | /** |
| | | * 设备缓存-只针对 |
| | | */ |
| | | public static Map<String, GatewayDevice> cacheMapDeviceWeight = new HashMap<>(); |
| | |
| | | |
| | | public static void add2Cache(GatewayDevice device) { |
| | | cacheMapDeviceId.put(device.getDeviceId(), device); |
| | | cacheMapDeviceSn.put(device.getDeviceSn(), 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) { |
| | | return cacheMapDeviceSn.get(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; |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 针对一个通讯分机对多个仓情况 |
| | | * |
| | | * @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<>(); |
| | |
| | | |
| | | public static void removeCache(GatewayDevice data) { |
| | | cacheMapDeviceId.remove(data.getDeviceId()); |
| | | cacheMapDeviceSn.remove(data.getDeviceSn()); |
| | | //cacheMapDeviceSn.remove(data.getDeviceSn()); |
| | | } |
| | | |
| | | public static String getStatus(String sn) { |
| | |
| | | public static Collection<GatewayDevice> listDeviceWeight() { |
| | | return cacheMapDeviceWeight.values(); |
| | | } |
| | | |
| | | public static GatewayDevice getCacheByDepotSysId(String depotSysId) { |
| | | |
| | | if (null == depotSysId) return null; |
| | | Collection<GatewayDevice> list = allCacheDevice(); |
| | | if (null == list || list.isEmpty()) return null; |
| | | |
| | | for (GatewayDevice device : list) { |
| | | if (null == device.getDepotIdSys()) continue; |
| | | if (depotSysId.equals(device.getDepotIdSys())) return device; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | public static GrainCableData getCableData(GatewayDevice gatewayDevice) { |
| | | String cableRule = gatewayDevice.getCableRule(); |
| | | String cableCir = gatewayDevice.getCableCir(); |
| | | |
| | | GrainCableData result = new GrainCableData(); |
| | | |
| | | int cableY, cableX; |
| | | String[] attCable = cableRule.split("-"); |
| | | int cableZ = Integer.valueOf(attCable[0]); |
| | | if (StringUtils.isEmpty(cableCir)) { |
| | | cableY = Integer.valueOf(attCable[1]); |
| | | cableX = Integer.valueOf(attCable[2]); |
| | | } else { |
| | | String[] attCir = cableCir.split("-"); |
| | | cableZ = Integer.valueOf(attCir[0]); |
| | | cableY = 1; |
| | | cableX = 0; |
| | | //针对多圈计算 |
| | | for (int i = 0; i < cableCir.length(); i++) { |
| | | cableX += Integer.valueOf(attCir[i]); |
| | | } |
| | | |
| | | result.setCir(true); |
| | | } |
| | | |
| | | result.setCableY(cableY); |
| | | result.setCableZ(cableZ); |
| | | result.setCableX(cableX); |
| | | result.setSumNum(cableZ * cableY * cableX); |
| | | |
| | | return result; |
| | | } |
| | | } |