SysConfig.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package com.gzlh.bus;
  2. import cn.hutool.core.io.FileUtil;
  3. import cn.hutool.json.JSONArray;
  4. import cn.hutool.json.JSONObject;
  5. import cn.hutool.json.XML;
  6. import com.gzlh.config.dto.*;
  7. import com.gzlh.utils.DeviceCache;
  8. import lombok.Data;
  9. import lombok.extern.slf4j.Slf4j;
  10. import javax.xml.bind.JAXBContext;
  11. import javax.xml.bind.JAXBException;
  12. import javax.xml.bind.Unmarshaller;
  13. import java.io.File;
  14. import java.io.StringReader;
  15. import java.util.ArrayList;
  16. import java.util.List;
  17. import java.util.Properties;
  18. @Data
  19. @Slf4j
  20. public class SysConfig {
  21. public static List<EventDTO> eventDTOList;
  22. public static SerialSetting serialSetting;
  23. public static CaputreSetting caputreSetting;
  24. public static ChannelSetting channelSetting;
  25. public static ManagerSetting managerSetting;
  26. public static PassportSetting passportSetting;
  27. public static FaceListDTO faceDTO;
  28. public static void initConfig() {
  29. Properties properties = System.getProperties();
  30. String rootPath = properties.getProperty("user.dir");
  31. String separator = File.separator;
  32. String configFile = rootPath + separator + "config.xml";
  33. if (!FileUtil.exist(configFile)) {
  34. log.error("配置文件不存在:{}", configFile);
  35. return;
  36. }
  37. String content = FileUtil.readUtf8String(configFile);
  38. JSONObject result = XML.toJSONObject(content);
  39. log.info("result:{}", result.toJSONString(0));
  40. ApplicationConfigDTO configDTO = result.toBean(ApplicationConfigDTO.class);
  41. eventDTOList = configDTO.getConfig().getEventList().getEvent();
  42. serialSetting = configDTO.getConfig().getSysConfig().getSerialSetting();
  43. caputreSetting = configDTO.getConfig().getSysConfig().getCaputreSetting();
  44. channelSetting = configDTO.getConfig().getChannelSetting();
  45. managerSetting = configDTO.getConfig().getManagerSetting();
  46. passportSetting = configDTO.getConfig().getPassport();
  47. parseFace(result);
  48. DeviceCache.deviceStatusInit();
  49. }
  50. private static void parseFace(JSONObject result) {
  51. JSONObject faceConfig = result.getJSONObject("config").getJSONObject("faceConfig");
  52. if (faceConfig==null) return;
  53. boolean enable = faceConfig.getBool("enable");
  54. // 获取 faceList 节点
  55. JSONObject faceList = faceConfig.getJSONObject("faceList");
  56. FaceListDTO faceListDTO = new FaceListDTO();
  57. faceListDTO.setEnable(enable);
  58. List<Face> faceArray = new ArrayList<>();
  59. // 检查 face 节点是否存在
  60. if (faceList.containsKey("face")) {
  61. Object faceObj = faceList.get("face");
  62. if (faceObj instanceof JSONArray) {
  63. // 多个 face 节点
  64. JSONArray faces = faceList.getJSONArray("face");
  65. for (int i = 0; i < faces.size(); i++) {
  66. JSONObject face = faces.getJSONObject(i);
  67. // 处理每个 face 节点
  68. faceArray.add(processFace(face));
  69. }
  70. } else if (faceObj instanceof JSONObject) {
  71. // 单个 face 节点
  72. JSONObject face = faceList.getJSONObject("face");
  73. // 处理单个 face 节点
  74. faceArray.add(processFace(face));
  75. }
  76. }
  77. faceListDTO.setFaceList(faceArray);
  78. faceDTO = faceListDTO;
  79. }
  80. private static Face processFace(JSONObject face) {
  81. String channelCode = face.getStr("channelCode");
  82. String ip = face.getStr("ip");
  83. short port = face.getShort("port");
  84. String uname = face.getStr("uname");
  85. String pwd = face.getStr("pwd");
  86. return new Face(channelCode, ip, port, uname, pwd);
  87. }
  88. }