DeviceCache.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package com.gzlh.utils;
  2. import cn.hutool.json.JSONUtil;
  3. import com.gzlh.bus.SysConfig;
  4. import com.gzlh.config.ModuleEnum;
  5. import com.gzlh.config.SystemObject;
  6. import com.gzlh.config.dto.CaputreSetting;
  7. import com.gzlh.config.dto.SerialSetting;
  8. import com.gzlh.device.capture.brand.CaptureBrandType;
  9. import com.gzlh.device.electron.brand.ElectronBrandType;
  10. import com.gzlh.device.led.brand.LedBrandType;
  11. import com.gzlh.device.weighbridge.brand.WeighbridgeBrandType;
  12. import com.gzlh.entity.DeviceStatus;
  13. import org.springframework.util.StringUtils;
  14. import java.util.Date;
  15. import java.util.List;
  16. import java.util.Map;
  17. import java.util.concurrent.ConcurrentHashMap;
  18. import java.util.stream.Collectors;
  19. public class DeviceCache {
  20. private static DeviceStatus deviceStatus = new DeviceStatus();
  21. private static Map<String, Date> plcTimeMap = new ConcurrentHashMap<String, Date>();
  22. static boolean interrupt = false;
  23. static String plcStatus = null;
  24. public static void setPlcStatus(String status) {
  25. plcStatus = status;
  26. }
  27. public static String getPlcStatus() {
  28. return plcStatus;
  29. }
  30. public static void putTime(String k, Date v) {
  31. plcTimeMap.put(k, v);
  32. }
  33. public static Date getTime(String k) {
  34. return plcTimeMap.get(k);
  35. }
  36. public static void resetTimeMap() {
  37. plcTimeMap = new ConcurrentHashMap<String, Date>();
  38. ;
  39. }
  40. public static String getDeviceStatusJson() {
  41. if (StringUtils.isEmpty(deviceStatus.getChannelCode())) {
  42. deviceStatusInit();
  43. }
  44. return JSONUtil.toJsonStr(deviceStatus);
  45. }
  46. public static void deviceStatusInit() {
  47. SerialSetting serialSetting = SysConfig.serialSetting;
  48. deviceStatus.setChannelCode(SysConfig.channelSetting.getChannelCode());
  49. deviceStatus.setChannelName(SysConfig.channelSetting.getChannelName());
  50. CaputreSetting caputreSetting = SysConfig.caputreSetting;
  51. if (caputreSetting.isEnable()) {
  52. DeviceStatus.Device capture = new DeviceStatus.Device(caputreSetting.getHost(),
  53. caputreSetting.getPort(),
  54. CaptureBrandType.getBrandByCode(caputreSetting.getBrand()),
  55. ModuleEnum.CAPTURE_MODULE.getModuleZh());
  56. deviceStatus.getDeviceList().add(capture);
  57. }
  58. if (serialSetting.getPlc().getEnable()) {
  59. DeviceStatus.Device plc = new DeviceStatus.Device(serialSetting.getHost(),
  60. serialSetting.getPlc().getPort(),
  61. "smart 200",
  62. ModuleEnum.PLC_MODULE.getModuleZh());
  63. deviceStatus.getDeviceList().add(plc);
  64. }
  65. if (serialSetting.getLed().getEnable()) {
  66. DeviceStatus.Device led = new DeviceStatus.Device(serialSetting.getHost(),
  67. serialSetting.getLed().getPort(),
  68. LedBrandType.getBrandByCode(serialSetting.getLed().getBrand()),
  69. ModuleEnum.LED_MODULE.getModuleZh());
  70. deviceStatus.getDeviceList().add(led);
  71. }
  72. if (serialSetting.getWeighbridge().getEnable()) {
  73. DeviceStatus.Device weighbridge = new DeviceStatus.Device(serialSetting.getHost(),
  74. serialSetting.getWeighbridge().getPort(),
  75. WeighbridgeBrandType.getBrandByCode(serialSetting.getWeighbridge().getBrand()),
  76. ModuleEnum.WEIGHBRIDGE_MODULE.getModuleZh());
  77. deviceStatus.getDeviceList().add(weighbridge);
  78. }
  79. if (serialSetting.getElectron().getEnable()) {
  80. DeviceStatus.Device electron = new DeviceStatus.Device(serialSetting.getHost(),
  81. serialSetting.getElectron().getPort(),
  82. ElectronBrandType.getBrandByCode(serialSetting.getElectron().getBrand()),
  83. ModuleEnum.ELECTRON_MODULE.getModuleZh());
  84. deviceStatus.getDeviceList().add(electron);
  85. }
  86. }
  87. public static DeviceStatus getDeviceStatus() {
  88. return deviceStatus;
  89. }
  90. public static Map<String, Date> getTimeMap() {
  91. return plcTimeMap;
  92. }
  93. public static boolean isInterrupt() {
  94. return interrupt;
  95. }
  96. public static void setInterrupt(boolean interrupt) {
  97. DeviceCache.interrupt = interrupt;
  98. }
  99. public static void changeDeviceStatus(String name, int status) {
  100. List<DeviceStatus.Device> devices = DeviceCache.getDeviceStatus().getDeviceList();
  101. if (devices.stream().anyMatch(device -> device.getName().equalsIgnoreCase(name))) {
  102. devices.stream().filter(device -> device.getName().equalsIgnoreCase(name))
  103. .map(e -> e.setStatus(status)).collect(Collectors.toList());
  104. }
  105. }
  106. }