JianyuekbBaseDataTask.java 3.9 KB

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