HikvisionBaseDataTask.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package com.xjrsoft.module.job;
  2. import cn.hutool.extra.spring.SpringUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
  5. import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
  6. import com.xjrsoft.module.hikvision.entity.HikvisionData;
  7. import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
  8. import com.xjrsoft.module.hikvision.util.DataUtil;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.scheduling.annotation.Async;
  12. import org.springframework.scheduling.annotation.Scheduled;
  13. import org.springframework.stereotype.Component;
  14. import java.util.*;
  15. /**
  16. * @author dzx
  17. * @date 2024/5/8
  18. */
  19. @Component
  20. @Slf4j
  21. public class HikvisionBaseDataTask {
  22. @Autowired
  23. private HikvisionDataMapper hikvisionDataMapper;
  24. @Async
  25. @Scheduled(cron = "0 */15 * * * ?")
  26. public void execute() {
  27. String active = SpringUtil.getActiveProfile();
  28. if (!"prod".equals(active)) {
  29. log.info("非正式环境,无法执行数据推送");
  30. return;
  31. }
  32. RefreshConnectionPool();
  33. }
  34. public void RefreshConnectionPool() {
  35. String active = SpringUtil.getActiveProfile();
  36. if (!"prod".equals(active)) {
  37. log.info("非正式环境,无法执行数据推送");
  38. return;
  39. }
  40. log.info("开始推送海康威视基础数据");
  41. try {
  42. String sql = "SELECT distinct table_name FROM hikvision_data WHERE 1 = 1";
  43. List<Map<String, Object>> maps = SqlRunnerAdapter.db().selectList(sql);
  44. Set<String> tables = new HashSet<>();
  45. for (Map<String, Object> map : maps) {
  46. String[] strings = SqlRunnerAdapterUtil.convertMapToStringArray(map);
  47. tables.add(strings[0]);
  48. }
  49. sql = "SELECT * FROM hikvision_data WHERE 0 = 0";
  50. List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
  51. Map<String, Map<String, String>> dataMap = new HashMap<>();
  52. for (String table : tables) {
  53. Map<String, String> tableData = new HashMap<>();
  54. for (Map<String, Object> hikvision : list) {
  55. if (!table.equals(hikvision.get("table_name").toString())) {
  56. continue;
  57. }
  58. tableData.put(hikvision.get("source_id").toString(), hikvision.get("hikvision_id").toString());
  59. }
  60. dataMap.put(table, tableData);
  61. }
  62. DataUtil dataUtil = new DataUtil();
  63. //查询根机构
  64. //JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
  65. //推送组织机构
  66. String tableName = "xjr_department";
  67. Map<String, String> department = new HashMap<>();
  68. try {
  69. department = dataUtil.insertDepartment(tableName, dataMap.get(tableName));
  70. } catch (Exception e) {
  71. log.error("推送组织机构报错", e);
  72. }
  73. if (department.isEmpty() && dataMap.get(tableName) != null) {
  74. department = dataMap.get(tableName);
  75. }
  76. //推送教职工
  77. tableName = "base_teacher";
  78. try {
  79. dataUtil.insertTeacher(tableName, dataMap.get(tableName), department);
  80. } catch (Exception e) {
  81. log.error("推送教职工报错", e);
  82. }
  83. //推送车辆
  84. String carTableName = "car_message_apply";
  85. Map<String, String> baseCar = dataMap.get(carTableName);
  86. try {
  87. dataUtil.insertCar(carTableName, baseCar, hikvisionDataMapper);
  88. } catch (Exception e) {
  89. log.error("同步车辆数据报错", e);
  90. }
  91. tableName = "base_class";
  92. Map<String, String> baseClass = dataMap.get(tableName);
  93. try {
  94. dataUtil.insertClass(tableName, baseClass);
  95. } catch (Exception e) {
  96. log.error("同步班级数据报错", e);
  97. }
  98. tableName = "base_student";
  99. List<HikvisionData> studentList = hikvisionDataMapper.selectList(
  100. new QueryWrapper<HikvisionData>().lambda().eq(HikvisionData::getTableName, tableName)
  101. );
  102. Map<String, String> baseStudent = dataMap.get(tableName);
  103. dataUtil.insertStudentOne(tableName, baseStudent, studentList);
  104. log.info("数据推送完成");
  105. } catch (Exception e) {
  106. log.error(e.getMessage(), e);
  107. }
  108. }
  109. }