package com.gzlh.utils; import cn.hutool.json.JSONUtil; import com.gzlh.bus.SysConfig; import com.gzlh.config.ModuleEnum; import com.gzlh.config.dto.CaputreSetting; import com.gzlh.config.dto.SerialSetting; import com.gzlh.config.dto.VoiceSetting; import com.gzlh.device.capture.brand.CaptureBrandType; import com.gzlh.device.rfid.brand.ElectronBrandType; import com.gzlh.device.led.brand.LedBrandType; import com.gzlh.device.print.brand.PrintBrandType; import com.gzlh.device.voice.brand.VoiceBrandType; import com.gzlh.device.weighbridge.brand.WeighbridgeBrandType; import com.gzlh.entity.DeviceStatus; import lombok.extern.slf4j.Slf4j; import org.springframework.util.StringUtils; import java.util.Date; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @Slf4j public class DeviceCache { private static DeviceStatus deviceStatus = new DeviceStatus(); private static Map plcTimeMap = new ConcurrentHashMap(); static boolean interrupt = false; static String plcStatus = ""; public static void setPlcStatus(String status) { plcStatus = status; } public static String getPlcStatus() { return plcStatus; } public static void putTime(String k, Date v) { plcTimeMap.put(k, v); } public static Date getTime(String k) { return plcTimeMap.get(k); } public static void resetTimeMap() { plcTimeMap = new ConcurrentHashMap(); ; } public static String getDeviceStatusJson() { return JSONUtil.toJsonStr(deviceStatus); } public static void deviceStatusInit() { SerialSetting serialSetting = SysConfig.serialSetting; deviceStatus.setChannelCode(SysConfig.channelSetting.getChannelCode()); deviceStatus.setChannelName(SysConfig.channelSetting.getChannelName()); CaputreSetting caputreSetting = SysConfig.caputreSetting; if (caputreSetting.isEnable()) { DeviceStatus.Device capture = new DeviceStatus.Device(caputreSetting.getHost(), caputreSetting.getPort(), CaptureBrandType.getBrandByCode(caputreSetting.getBrand()), ModuleEnum.CAPTURE_MODULE.getModuleZh()); deviceStatus.getDeviceList().add(capture); } if (serialSetting.getPlc().getEnable()) { DeviceStatus.Device plc = new DeviceStatus.Device(serialSetting.getHost(), serialSetting.getPlc().getPort(), "smart 200", ModuleEnum.PLC_MODULE.getModuleZh()); deviceStatus.getDeviceList().add(plc); } if (serialSetting.getLed().getEnable()) { DeviceStatus.Device led = new DeviceStatus.Device(serialSetting.getHost(), serialSetting.getLed().getPort(), LedBrandType.getBrandByCode(serialSetting.getLed().getBrand()), ModuleEnum.LED_MODULE.getModuleZh()); deviceStatus.getDeviceList().add(led); } if (serialSetting.getWeighbridge().getEnable()) { DeviceStatus.Device weighbridge = new DeviceStatus.Device(serialSetting.getHost(), serialSetting.getWeighbridge().getPort(), WeighbridgeBrandType.getBrandByCode(serialSetting.getWeighbridge().getBrand()), ModuleEnum.WEIGHBRIDGE_MODULE.getModuleZh()); deviceStatus.getDeviceList().add(weighbridge); } if (serialSetting.getElectron().getEnable()) { DeviceStatus.Device electron = new DeviceStatus.Device(serialSetting.getHost(), serialSetting.getElectron().getPort(), ElectronBrandType.getBrandByCode(serialSetting.getElectron().getBrand()), ModuleEnum.ELECTRON_MODULE.getModuleZh()); deviceStatus.getDeviceList().add(electron); } if (serialSetting.getPrint() != null && serialSetting.getPrint().isEnable()) { SerialSetting.PrintSetting printSetting = serialSetting.getPrint(); DeviceStatus.Device electron = new DeviceStatus.Device(printSetting.getIp(), printSetting.getPort(), PrintBrandType.getBrandByCode(printSetting.getBrand()), ModuleEnum.PRINT_MODULE.getModuleZh()); deviceStatus.getDeviceList().add(electron); } VoiceSetting voiceSetting = SysConfig.voiceSetting; if (voiceSetting != null && voiceSetting.isEnable()) { DeviceStatus.Device voice = new DeviceStatus.Device(voiceSetting.getHost(), voiceSetting.getPort(), VoiceBrandType.getBrandByCode(voiceSetting.getBrand()), ModuleEnum.VOICE_MODULE.getModuleZh()); deviceStatus.getDeviceList().add(voice); } } public static boolean isInterrupt() { return interrupt; } public static void setInterrupt(boolean interrupt) { DeviceCache.interrupt = interrupt; } public static void changeDeviceStatus(String name, int status) { deviceStatus.getDeviceList().stream().filter(device -> device.getName().equalsIgnoreCase(name)) .forEach(e -> e.setStatus(status)); } public static void changeDeviceStatus(String name, int status, String eMsg) { deviceStatus.getDeviceList().stream().filter(device -> device.getName().equalsIgnoreCase(name)) .forEach(e -> e.setStatus(status).setEMsg(eMsg)); } public static void changeDeviceStatus(String name, String eMsg) { deviceStatus.getDeviceList().stream().filter(device -> device.getName().equalsIgnoreCase(name)) .forEach(device -> { device.setEMsg(eMsg); }); } }