JianyuekbBaseDataTask.java 4.7 KB

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