소스 검색

课表同步调整

dzx 8 달 전
부모
커밋
11d356138d
2개의 변경된 파일29개의 추가작업 그리고 21개의 파일을 삭제
  1. 25 17
      src/main/java/com/xjrsoft/module/job/JianyuekbScheduleTask.java
  2. 4 4
      src/main/java/com/xjrsoft/module/schedule/util/DataUtil.java

+ 25 - 17
src/main/java/com/xjrsoft/module/job/JianyuekbScheduleTask.java

@@ -26,7 +26,9 @@ import com.xjrsoft.module.courseTable.entity.CourseTable;
 import com.xjrsoft.module.courseTable.service.ICourseTableService;
 import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
 import com.xjrsoft.module.organization.entity.Department;
+import com.xjrsoft.module.organization.entity.Role;
 import com.xjrsoft.module.organization.entity.User;
+import com.xjrsoft.module.organization.entity.UserRoleRelation;
 import com.xjrsoft.module.organization.service.IDepartmentService;
 import com.xjrsoft.module.organization.service.IUserService;
 import com.xjrsoft.module.organization.service.IWeChatService;
@@ -138,10 +140,10 @@ public class JianyuekbScheduleTask {
 
     public void doExecute() {
         String active = SpringUtil.getActiveProfile();
-//        if(!"prod".equals(active)){
-//            log.info("非正式环境,无法执行获取课表数据");
-//            return;
-//        }
+        if(!"prod".equals(active)){
+            log.info("非正式环境,无法执行获取课表数据");
+            return;
+        }
         String sql = "SELECT * FROM course_receive_msg WHERE delete_mark = 0 AND is_callback IS NULL";
         List<Map<String, Object>> receiveMsgs = SqlRunnerAdapter.db().selectList(sql);
         if (receiveMsgs.isEmpty()) {
@@ -176,7 +178,7 @@ public class JianyuekbScheduleTask {
         LocalDate today = LocalDate.now();
 
         DataUtil dataUtil = new DataUtil();
-        Set<String> ongoing = redisUtil.get(taskKey, new TypeReference<Set<String>>() {
+        Set<String> ongoing = redisUtil.get(taskKey, new TypeReference<>() {
         });//正在进行中的
         if (ongoing == null) {
             ongoing = new HashSet<>();
@@ -185,7 +187,6 @@ public class JianyuekbScheduleTask {
         Map<String, Map<String, String>> dataMap = initDataMap();
         for (Map<String, Object> receiveMsg : receiveMsgs) {
             String eduYearSerialNo = receiveMsg.get("edu_year_serial_no").toString();
-            Long courseReceiveMsgId = Long.parseLong(receiveMsg.get("id").toString());
             if (ongoing.contains(eduYearSerialNo)) {
                 continue;
             }
@@ -239,7 +240,7 @@ public class JianyuekbScheduleTask {
 
                 ongoing.remove(eduYearSerialNo);
                 redisUtil.set(taskKey, ongoing);
-                insertCourse(allScheduleInfo, dataMap, dataUtil, courseReceiveMsgId, startDateStr, endDateStr);
+                insertCourse(allScheduleInfo, dataMap, dataUtil, receiveMsg, startDateStr, endDateStr);
                 //恢复挂起的流程
                 restoreCourseAdjust(processIds);
                 //处理该日期内已经审批通过的调课和顶课申请
@@ -253,7 +254,7 @@ public class JianyuekbScheduleTask {
         }
     }
 
-    void insertCourse(JsonArray scheduleInfo, Map<String, Map<String, String>> dataMap, DataUtil dataUtil, Long courseReceiveMsgId, String startDate, String endDate) {
+    void insertCourse(JsonArray scheduleInfo, Map<String, Map<String, String>> dataMap, DataUtil dataUtil, Map<String, Object> receiveMsg, String startDate, String endDate) {
         //获取年级
         String tableName = "base_grade";
 //            Map<String, Long> gradeMap = dataMap.get(tableName);
@@ -274,27 +275,34 @@ public class JianyuekbScheduleTask {
         Map<String, String> classroomMap = dataMap.get(tableName);
 
         Set<String> techerIds = dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap,
-                teacherMap, classMap, courseReceiveMsgId, startDate, endDate);
-        sendMsg(techerIds, courseReceiveMsgId);
+                teacherMap, classMap, receiveMsg.get("id").toString(), startDate, endDate);
+        sendMsg(techerIds, receiveMsg);
         dataUtil.insertClassTime(scheduleInfo);
     }
 
-    void sendMsg(Set<String> techerIds, Long courseReceiveMsgId) {
-        ActiveSpan.tag("params[ JianyuekbScheduleTaskSendMsg ]", "sendMsg");
+    void sendMsg(Set<String> techerIds, Map<String, Object> receiveMsg) {
         try {
-            CourseReceiveMsg receiveMsg = receiveMsgService.getById(courseReceiveMsgId);
             JianyueData jianyueData = jianyueDataService.getOne(
                     new QueryWrapper<JianyueData>().lambda()
-                            .eq(JianyueData::getJianyueId, receiveMsg.getEduYearSerialNo())
+                            .eq(JianyueData::getJianyueId, receiveMsg.get("edu_year_serial_no").toString())
             );
             String[] sourceId = jianyueData.getSourceId().split("_");
             Department department = departmentService.getById(sourceId[0]);
 
             BaseGrade grade = gradeService.getById(sourceId[1]);
-
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             //通知对应教师
             List<User> userList = userService.listByIds(new ArrayList<>(techerIds));
+            List<User> userList1 = userService.list(
+                    new MPJLambdaWrapper<User>()
+                            .distinct()
+                            .select(User::getId)
+                            .select(User.class, x -> VoToColumnUtil.fieldsToColumns(User.class).contains(x.getProperty()))
+                            .innerJoin(UserRoleRelation.class, UserRoleRelation::getUserId, User::getId)
+                            .innerJoin(Role.class, Role::getId, UserRoleRelation::getRoleId)
+                            .eq(Role::getCode, "KEBIAOGX")
+            );
+            userList.addAll(userList1);
+
             for (User user : userList) {
                 WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
                 weChatSendMessageDto.setTemplateId(noticeTeacherTemplate);
@@ -313,7 +321,7 @@ public class JianyuekbScheduleTask {
                 paramJson.put("thing6", thing6);
 
                 JSONObject time3 = new JSONObject();
-                time3.put("value", sdf.format(receiveMsg.getCreateDate()));
+                time3.put("value", receiveMsg.get("create_date").toString());
                 paramJson.put("time3", time3);
 
                 weChatSendMessageDto.setContent(paramJson);

+ 4 - 4
src/main/java/com/xjrsoft/module/schedule/util/DataUtil.java

@@ -625,7 +625,7 @@ public class DataUtil {
 
             String sql = "INSERT INTO course_table(id,base_semester_id,teacher_id,teacher_name,teacher_serial_no,course_id,course_name," +
                     "class_id, class_name,weeks,weeks_cn,time_period,time_number,site_id,site_name,status," +
-                    "create_date,schedule_date,jianyue_id) select " + id + String.format("%04d", count) + ","
+                    "create_date,schedule_date,jianyue_id, start_time, end_time) select " + id + String.format("%04d", count) + ","
                     + semesterMap.get(asJsonObject.get("semesterSerialNo").getAsString()) + ",";
             if (teachers.size() > 0) {
                 JsonObject teacherJson = teachers.get(0).getAsJsonObject();
@@ -647,8 +647,8 @@ public class DataUtil {
                     + (classroomMap.get(asJsonObject.get("classRoomSerialNo").getAsString()) == null ? 0 : classroomMap.get(asJsonObject.get("classRoomSerialNo").getAsString())) + ","
                     + "'" + asJsonObject.get("classRoomName").getAsString() + "',1,now(),"
                     + "'" + asJsonObject.get("scheduleDate").getAsString() + "',"
-                    + "'" + asJsonObject.get("id").getAsString() + "' FROM DUAL"
-                    + " WHERE NOT EXISTS(SELECT * FROM course_table WHERE jianyue_id = '" + asJsonObject.get("id").getAsString() + "' and status = 1)";
+                    + "'" + asJsonObject.get("id").getAsString() + "', '" + asJsonObject.get("startTime").getAsString() + "', '" + asJsonObject.get("endTime").getAsString() +"' FROM DUAL"
+                    + " WHERE NOT EXISTS(SELECT 1 FROM course_table WHERE jianyue_id = '" + asJsonObject.get("id").getAsString() + "' and status = 1)";
 //            sqls.add(updateSql);
 //            sqls.add(sql);
             SqlRunnerAdapter.db().insert(sql);
@@ -658,7 +658,7 @@ public class DataUtil {
 
     public Set<String> insertCourseTableEntiy(JsonArray data, Map<String, String> classroomMap, Map<String, String> coureseMap,
                                               Map<String, String> semesterMap, Map<String, String> teacherMap, Map<String, String> classMap
-            , Long courseReceiveMsgId, String startDate, String endDate) {
+            , String courseReceiveMsgId, String startDate, String endDate) {
         String sql = "SELECT jianyue_id FROM course_table" +
                 " where schedule_date between '" + startDate + "' and '" + endDate + "'";
         List<Map<String, Object>> oldDataList = SqlRunnerAdapter.db().selectList(sql);