JianyuekbBaseDataTask.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package com.xjrsoft.module.job;
  2. import cn.hutool.db.Db;
  3. import cn.hutool.extra.spring.SpringUtil;
  4. import com.google.gson.JsonArray;
  5. import com.xjrsoft.common.constant.GlobalConstant;
  6. import com.xjrsoft.common.utils.DatasourceUtil;
  7. import com.xjrsoft.module.schedule.entity.JianyueData;
  8. import com.xjrsoft.module.schedule.util.DataUtil;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.springframework.scheduling.annotation.Scheduled;
  11. import org.springframework.stereotype.Component;
  12. import javax.sql.DataSource;
  13. import java.util.HashMap;
  14. import java.util.HashSet;
  15. import java.util.List;
  16. import java.util.Map;
  17. import java.util.Set;
  18. /**
  19. * @author dzx
  20. * @date 2024/1/12
  21. */
  22. @Component
  23. @Slf4j
  24. public class JianyuekbBaseDataTask {
  25. @Scheduled(cron = "0 */15 * * * ?")
  26. public void RefreshConnectionPool() {
  27. String active = SpringUtil.getActiveProfile();
  28. if("prod".equals(active)){
  29. log.info("非正式环境,无法执行数据推送");
  30. return;
  31. }
  32. log.info("开始推送课表基础数据");
  33. DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
  34. try {
  35. Db use = Db.use(datasource);
  36. String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
  37. List<JianyueData> query = use.query(sql, JianyueData.class);
  38. Set<String> tables = new HashSet<>();
  39. for (JianyueData jianyueData : query) {
  40. tables.add(jianyueData.getTableName());
  41. }
  42. sql = "SELECT * FROM jianyue_data WHERE 0 = 0";
  43. List<JianyueData> list = use.query(sql, JianyueData.class);
  44. Map<String, Map<Long, String>> dataMap = new HashMap<>();
  45. for (String table : tables) {
  46. Map<Long, String> tableData = new HashMap<>();
  47. for (JianyueData jianyueData : list) {
  48. if(!table.equals(jianyueData.getTableName())){
  49. continue;
  50. }
  51. tableData.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
  52. }
  53. dataMap.put(table, tableData);
  54. }
  55. DataUtil dataUtil = new DataUtil();
  56. //查询校区
  57. JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
  58. //推送年级
  59. String tableName = "base_grade";
  60. Map<Long, String> grade = dataUtil.insertGrade(use, tableName, schoolDistrictData.get(0).getAsString(), dataMap.get(tableName));
  61. if(grade.isEmpty() && dataMap.get(tableName) != null){
  62. grade = dataMap.get(tableName);
  63. }
  64. //推送学期
  65. tableName = "base_semester";
  66. dataUtil.insertSemester(use, tableName, dataMap.get(tableName));
  67. //推送标签
  68. tableName = "xjr_department";
  69. Map<Long, String> tagMap = dataUtil.insertTag(use, tableName, dataMap.get(tableName));
  70. if(tagMap.isEmpty() && dataMap.get(tableName) != null){
  71. tagMap = dataMap.get(tableName);
  72. }
  73. //推送课程
  74. tableName = "base_course_subject";
  75. dataUtil.insertCourse(use, tableName, dataMap.get(tableName), tagMap);
  76. //推送教职工
  77. tableName = "base_teacher";
  78. Map<Long, String> teacherMap = dataUtil.insertTeacher(use, tableName, dataMap.get(tableName));
  79. if(teacherMap.isEmpty() && dataMap.get(tableName) != null){
  80. teacherMap = dataMap.get(tableName);
  81. }
  82. //推送学生
  83. tableName = "base_student";
  84. dataUtil.insertStudent(use, tableName, grade, dataMap.get(tableName));
  85. //推送教室
  86. tableName = "base_classroom";
  87. Map<Long, String> classroomMap = dataUtil.insertClassRoom(use, tableName, schoolDistrictData.get(0).getAsString(), dataMap.get(tableName));
  88. if(classroomMap.isEmpty() && dataMap.get(tableName) != null){
  89. classroomMap = dataMap.get(tableName);
  90. }
  91. //推送行政班,先查询当前学期id
  92. String currenSemeter = dataUtil.getCurrenSemeter();
  93. tableName = "base_class";
  94. dataUtil.insertClass(use, tableName, grade, teacherMap, currenSemeter, dataMap.get(tableName), classroomMap);
  95. log.info("数据推送完成");
  96. } catch (Exception e) {
  97. log.error(e.getMessage());
  98. }
  99. }
  100. }