|
@@ -1,6 +1,5 @@
|
|
|
package com.xjrsoft.module.job;
|
|
package com.xjrsoft.module.job;
|
|
|
|
|
|
|
|
-import cn.dev33.satoken.stp.StpUtil;
|
|
|
|
|
import cn.hutool.core.convert.Convert;
|
|
import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
@@ -24,12 +23,18 @@ import com.xjrsoft.module.courseTable.dto.ClassTeacherDto;
|
|
|
import com.xjrsoft.module.courseTable.entity.CourseTable;
|
|
import com.xjrsoft.module.courseTable.entity.CourseTable;
|
|
|
import com.xjrsoft.module.courseTable.service.ICourseTableService;
|
|
import com.xjrsoft.module.courseTable.service.ICourseTableService;
|
|
|
import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
|
|
import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
|
|
|
|
|
+import com.xjrsoft.module.organization.entity.Department;
|
|
|
import com.xjrsoft.module.organization.entity.User;
|
|
import com.xjrsoft.module.organization.entity.User;
|
|
|
|
|
+import com.xjrsoft.module.organization.service.IDepartmentService;
|
|
|
import com.xjrsoft.module.organization.service.IUserService;
|
|
import com.xjrsoft.module.organization.service.IUserService;
|
|
|
import com.xjrsoft.module.organization.service.IWeChatService;
|
|
import com.xjrsoft.module.organization.service.IWeChatService;
|
|
|
|
|
+import com.xjrsoft.module.schedule.entity.CourseReceiveMsg;
|
|
|
import com.xjrsoft.module.schedule.entity.CourseTableBak;
|
|
import com.xjrsoft.module.schedule.entity.CourseTableBak;
|
|
|
|
|
+import com.xjrsoft.module.schedule.entity.JianyueData;
|
|
|
import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
|
|
import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
|
|
|
|
|
+import com.xjrsoft.module.schedule.service.ICourseReceiveMsgService;
|
|
|
import com.xjrsoft.module.schedule.service.ICourseTableBakService;
|
|
import com.xjrsoft.module.schedule.service.ICourseTableBakService;
|
|
|
|
|
+import com.xjrsoft.module.schedule.service.IJianyueDataService;
|
|
|
import com.xjrsoft.module.schedule.service.IWfCourseAdjustService;
|
|
import com.xjrsoft.module.schedule.service.IWfCourseAdjustService;
|
|
|
import com.xjrsoft.module.schedule.util.DataUtil;
|
|
import com.xjrsoft.module.schedule.util.DataUtil;
|
|
|
import com.xjrsoft.module.teacher.entity.BaseTeacher;
|
|
import com.xjrsoft.module.teacher.entity.BaseTeacher;
|
|
@@ -57,12 +62,12 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.boot.test.context.SpringBootTest;
|
|
import org.springframework.boot.test.context.SpringBootTest;
|
|
|
import org.springframework.test.context.junit4.SpringRunner;
|
|
import org.springframework.test.context.junit4.SpringRunner;
|
|
|
|
|
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.time.temporal.ChronoUnit;
|
|
import java.time.temporal.ChronoUnit;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
import java.util.HashSet;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
@@ -127,6 +132,15 @@ class JianyuekbScheduleTaskTest2 {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private IWorkflowExtraService workflowExtraService;
|
|
private IWorkflowExtraService workflowExtraService;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private ICourseReceiveMsgService receiveMsgService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IJianyueDataService jianyueDataService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IDepartmentService departmentService;
|
|
|
|
|
+
|
|
|
@Test
|
|
@Test
|
|
|
void test2(){
|
|
void test2(){
|
|
|
WfCourseAdjust courseAdjust = adjustService.getById(1851529228440875008L);
|
|
WfCourseAdjust courseAdjust = adjustService.getById(1851529228440875008L);
|
|
@@ -138,7 +152,7 @@ class JianyuekbScheduleTaskTest2 {
|
|
|
doExecute();
|
|
doExecute();
|
|
|
}
|
|
}
|
|
|
public void doExecute() {
|
|
public void doExecute() {
|
|
|
- String sql = "SELECT * FROM course_receive_msg WHERE delete_mark = 0 AND is_callback = -1";
|
|
|
|
|
|
|
+ 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);
|
|
List<Map<String, Object>> receiveMsgs = SqlRunnerAdapter.db().selectList(sql);
|
|
|
if(receiveMsgs.isEmpty()){
|
|
if(receiveMsgs.isEmpty()){
|
|
|
return;
|
|
return;
|
|
@@ -180,6 +194,7 @@ class JianyuekbScheduleTaskTest2 {
|
|
|
Map<String, Map<String, String>> dataMap = initDataMap();
|
|
Map<String, Map<String, String>> dataMap = initDataMap();
|
|
|
for (Map<String, Object> receiveMsg : receiveMsgs) {
|
|
for (Map<String, Object> receiveMsg : receiveMsgs) {
|
|
|
String eduYearSerialNo = receiveMsg.get("edu_year_serial_no").toString();
|
|
String eduYearSerialNo = receiveMsg.get("edu_year_serial_no").toString();
|
|
|
|
|
+ Long courseReceiveMsgId = Long.parseLong(receiveMsg.get("id").toString());
|
|
|
if(ongoing.contains(eduYearSerialNo)){
|
|
if(ongoing.contains(eduYearSerialNo)){
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
@@ -234,7 +249,7 @@ class JianyuekbScheduleTaskTest2 {
|
|
|
|
|
|
|
|
ongoing.remove(eduYearSerialNo);
|
|
ongoing.remove(eduYearSerialNo);
|
|
|
redisUtil.set(taskKey, ongoing);
|
|
redisUtil.set(taskKey, ongoing);
|
|
|
- insertCourse(allScheduleInfo, dataMap, dataUtil);
|
|
|
|
|
|
|
+ insertCourse(allScheduleInfo, dataMap, dataUtil, courseReceiveMsgId);
|
|
|
//恢复挂起的流程
|
|
//恢复挂起的流程
|
|
|
restoreCourseAdjust(processIds);
|
|
restoreCourseAdjust(processIds);
|
|
|
//处理该日期内已经审批通过的调课和顶课申请
|
|
//处理该日期内已经审批通过的调课和顶课申请
|
|
@@ -247,7 +262,7 @@ class JianyuekbScheduleTaskTest2 {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- void insertCourse(JsonArray scheduleInfo, Map<String, Map<String, String>> dataMap, DataUtil dataUtil){
|
|
|
|
|
|
|
+ void insertCourse(JsonArray scheduleInfo, Map<String, Map<String, String>> dataMap, DataUtil dataUtil, Long courseReceiveMsgId){
|
|
|
//获取年级
|
|
//获取年级
|
|
|
String tableName = "base_grade";
|
|
String tableName = "base_grade";
|
|
|
// Map<String, Long> gradeMap = dataMap.get(tableName);
|
|
// Map<String, Long> gradeMap = dataMap.get(tableName);
|
|
@@ -267,10 +282,58 @@ class JianyuekbScheduleTaskTest2 {
|
|
|
tableName = "base_classroom";
|
|
tableName = "base_classroom";
|
|
|
Map<String, String> classroomMap = dataMap.get(tableName);
|
|
Map<String, String> classroomMap = dataMap.get(tableName);
|
|
|
|
|
|
|
|
- dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, null);
|
|
|
|
|
|
|
+ Set<String> techerIds = dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, courseReceiveMsgId);
|
|
|
|
|
+ sendMsg(techerIds, courseReceiveMsgId);
|
|
|
dataUtil.insertClassTime(scheduleInfo);
|
|
dataUtil.insertClassTime(scheduleInfo);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ void sendMsg(Set<String> techerIds, Long courseReceiveMsgId){
|
|
|
|
|
+ try {
|
|
|
|
|
+ CourseReceiveMsg receiveMsg = receiveMsgService.getById(courseReceiveMsgId);
|
|
|
|
|
+ JianyueData jianyueData = jianyueDataService.getOne(
|
|
|
|
|
+ new QueryWrapper<JianyueData>().lambda()
|
|
|
|
|
+ .eq(JianyueData::getJianyueId, receiveMsg.getEduYearSerialNo())
|
|
|
|
|
+ );
|
|
|
|
|
+ String[] sourceId = jianyueData.getSourceId().split("_");
|
|
|
|
|
+ Department department = departmentService.getById(sourceId[0]);
|
|
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+ //通知对应教师
|
|
|
|
|
+ List<User> userList = userService.listByIds(new ArrayList<>(techerIds));
|
|
|
|
|
+ for (User user : userList) {
|
|
|
|
|
+ WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
|
|
|
|
|
+ weChatSendMessageDto.setTemplateId(wechatTemplate);
|
|
|
|
|
+ JSONObject paramJson = new JSONObject();
|
|
|
|
|
+
|
|
|
|
|
+ JSONObject thing8 = new JSONObject();
|
|
|
|
|
+ thing8.put("value", "课表更新");
|
|
|
|
|
+ paramJson.put("thing8", thing8);
|
|
|
|
|
+
|
|
|
|
|
+ JSONObject thing2 = new JSONObject();
|
|
|
|
|
+ thing2.put("value", department.getName());
|
|
|
|
|
+ paramJson.put("thing2", thing2);
|
|
|
|
|
+
|
|
|
|
|
+ JSONObject thing6 = new JSONObject();
|
|
|
|
|
+ thing6.put("value", "教务处");
|
|
|
|
|
+ paramJson.put("thing6", thing6);
|
|
|
|
|
+
|
|
|
|
|
+ JSONObject time3 = new JSONObject();
|
|
|
|
|
+ time3.put("value", sdf.format(receiveMsg.getCreateDate()));
|
|
|
|
|
+ paramJson.put("time3", time3);
|
|
|
|
|
+
|
|
|
|
|
+ weChatSendMessageDto.setContent(paramJson);
|
|
|
|
|
+ weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
|
|
|
|
|
+
|
|
|
|
|
+ String openId = user.getOpenId();
|
|
|
|
|
+ if(openId != null && !"".equals(openId)){
|
|
|
|
|
+ weChatSendMessageDto.setUserId(openId);
|
|
|
|
|
+ weChatService.sendTemplateMessage(weChatSendMessageDto);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }catch (Exception e){
|
|
|
|
|
+ Log.error(e.getMessage(), e);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
Map<String, Map<String, String>> initDataMap(){
|
|
Map<String, Map<String, String>> initDataMap(){
|
|
|
Map<String, Map<String, String>> dataMap = new HashMap<>();
|
|
Map<String, Map<String, String>> dataMap = new HashMap<>();
|
|
|
String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
|
|
String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
|