Quellcode durchsuchen

课表模块提交

dzx vor 1 Jahr
Ursprung
Commit
d64a50d677

+ 3 - 0
src/main/java/com/xjrsoft/module/base/entity/BaseCourseSubject.java

@@ -52,4 +52,7 @@ public class BaseCourseSubject implements Serializable {
 
     @ApiModelProperty("备注")
     private String remark;
+
+    @ApiModelProperty("开课机构")
+    private Long orgId;
 }

+ 7 - 1
src/main/java/com/xjrsoft/module/job/JianyuekbBaseDataTask.java

@@ -64,9 +64,15 @@ public class JianyuekbBaseDataTask {
             //推送学期
             tableName = "base_semester";
             dataUtil.insertSemester(use, tableName, dataMap.get(tableName));
+            //推送标签
+            tableName = "xjr_department";
+            Map<Long, String> tagMap = dataUtil.insertTag(use, tableName, dataMap.get(tableName));
+            if(tagMap.isEmpty() && dataMap.get(tableName) != null){
+                tagMap = dataMap.get(tableName);
+            }
             //推送课程
             tableName = "base_course_subject";
-            dataUtil.insertCourse(use, tableName, dataMap.get(tableName));
+            dataUtil.insertCourse(use, tableName, dataMap.get(tableName), tagMap);
             //推送教职工
             tableName = "base_teacher";
             Map<Long, String> teacherMap = dataUtil.insertTeacher(use, tableName, dataMap.get(tableName));

+ 8 - 3
src/main/java/com/xjrsoft/module/job/JianyuekbScheduleTask.java

@@ -29,6 +29,10 @@ public class JianyuekbScheduleTask {
 
     @Scheduled(cron = "0 */5 * * * ?")
     public void RefreshConnectionPool() {
+        doExecute();
+    }
+
+    void doExecute(){
         log.info("开始获取课表数据");
         DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
         try {
@@ -77,19 +81,20 @@ public class JianyuekbScheduleTask {
             if(StrUtil.isEmpty(currenSemeter)){
                 return;
             }
-            sql = "SELECT * FROM base_semester WHERE id = " + currenSemeter;
+            sql = "SELECT * FROM base_semester WHERE id = (select source_id from jianyue_data where jianyue_id = '" + currenSemeter + "')";
             List<BaseSemester> semesters = use.query(sql, BaseSemester.class);
             if(semesters.isEmpty()){
                 return;
             }
             BaseSemester baseSemester = semesters.get(0);
             //获取课表并存到数据库
-            Map<Long, JsonArray> scheduleInfo = dataUtil.getScheduleInfo(classMap, baseSemester.getStartDate(), baseSemester.getEndDate());
-            dataUtil.insertCourseTable(use, scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap);
+            JsonArray scheduleInfo = dataUtil.getScheduleInfoByClass(classMap, baseSemester.getStartDate(), baseSemester.getEndDate());
+            dataUtil.insertCourseTable(use, scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap);
             dataUtil.insertClassTime(use, scheduleInfo, baseSemester);
             log.info("课表数据获取完成");
         } catch (Exception e) {
             log.error(e.getMessage());
         }
     }
+
 }

+ 71 - 4
src/main/java/com/xjrsoft/module/schedule/controller/ScheduleController.java

@@ -1,11 +1,20 @@
 package com.xjrsoft.module.schedule.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.db.Db;
+import com.google.gson.JsonArray;
+import com.xjrsoft.common.constant.GlobalConstant;
 import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.EnabledMark;
 import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.DatasourceUtil;
+import com.xjrsoft.module.base.entity.BaseSemester;
 import com.xjrsoft.module.schedule.entity.CourseReceiveMsg;
+import com.xjrsoft.module.schedule.entity.JianyueData;
 import com.xjrsoft.module.schedule.service.ICourseReceiveMsgService;
+import com.xjrsoft.module.schedule.service.IJianyueDataService;
+import com.xjrsoft.module.schedule.util.DataUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -14,13 +23,19 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.sql.DataSource;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
 * @title: 寝室
 * @Author dzx
 * @Date: 2023-12-27
-* @Version 1.0
+* @Version 1.0i see you monster歌曲
 */
 @RestController
 @RequestMapping("/schedule" + "/schedule")
@@ -30,11 +45,12 @@ public class ScheduleController {
 
 
     private final ICourseReceiveMsgService courseReceiveMsgService;
+    private final IJianyueDataService jianyueDataService;
 
     @GetMapping(value = "/receive-msg")
     @ApiOperation(value="接收消息")
     @SaCheckPermission("room:detail")
-    public RT<Boolean> receiveMsg(@RequestParam String schoolId, @RequestParam String eduYearSerialNo, @RequestParam String startDate, @RequestParam String endDate){
+    public RT<CourseReceiveMsg> receiveMsg(@RequestParam String schoolId, @RequestParam String eduYearSerialNo, @RequestParam String startDate, @RequestParam String endDate) throws Exception {
         CourseReceiveMsg courseReceiveMsg = new CourseReceiveMsg();
         courseReceiveMsg.setCreateDate(new Date());
         courseReceiveMsg.setSchoolId(schoolId);
@@ -44,10 +60,61 @@ public class ScheduleController {
         courseReceiveMsg.setDeleteMark(DeleteMark.NODELETE.getCode());
         courseReceiveMsg.setEnabledMark(EnabledMark.ENABLED.getCode());
         courseReceiveMsgService.save(courseReceiveMsg);
-        return RT.ok(true);
-    }
 
+        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
+        Db use = Db.use(datasource);
+        DataUtil dataUtil = new DataUtil();
+        JsonArray scheduleInfo = dataUtil.getScheduleInfoByGrade(eduYearSerialNo, startDate, endDate);
+        String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
+        List<JianyueData> query = use.query(sql, JianyueData.class);
+        Set<String> tables = new HashSet<>();
+        for (JianyueData jianyueData : query) {
+            tables.add(jianyueData.getTableName());
+        }
+        sql = "SELECT * FROM jianyue_data WHERE 0 = 0";
+        List<JianyueData> list = use.query(sql, JianyueData.class);
+        Map<String, Map<String, Long>> dataMap = new HashMap<>();
+        for (String table : tables) {
+            Map<String, Long> tableData = new HashMap<>();
+            for (JianyueData jianyueData : list) {
+                if(!table.equals(jianyueData.getTableName())){
+                    continue;
+                }
+                tableData.put(jianyueData.getJianyueId(), jianyueData.getSourceId());
+            }
+            dataMap.put(table, tableData);
+        }
+
+        //获取学期
+        String tableName = "base_semester";
+        Map<String, Long> semesterMap = dataMap.get(tableName);
+        //获取课程
+        tableName = "base_course_subject";
+        Map<String, Long> courseMap = dataMap.get(tableName);
+        //获取教职工
+        tableName = "base_teacher";
+        Map<String, Long> teacherMap = dataMap.get(tableName);
+        //获取行政班
+        tableName = "base_class";
+        Map<String, Long> classMap = dataMap.get(tableName);
 
+        tableName = "base_classroom";
+        Map<String, Long> classroomMap = dataMap.get(tableName);
+        dataUtil.insertCourseTable(use, scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap);
 
+        //查询当前学期id
+        String currenSemeter = dataUtil.getCurrenSemeter();
+        if(StrUtil.isEmpty(currenSemeter)){
+            return RT.ok(courseReceiveMsg);
+        }
+        sql = "SELECT * FROM base_semester WHERE id = (select source_id from jianyue_data where jianyue_id = '" + currenSemeter + "')";
+        List<BaseSemester> semesters = use.query(sql, BaseSemester.class);
+        if(semesters.isEmpty()){
+            return RT.ok(courseReceiveMsg);
+        }
+        BaseSemester baseSemester = semesters.get(0);
+        dataUtil.insertClassTime(use, scheduleInfo, baseSemester);
+        return RT.ok(courseReceiveMsg);
+    }
 
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/schedule/mapper/JianyueMapper.java → src/main/java/com/xjrsoft/module/schedule/mapper/JianyueDataMapper.java

@@ -11,5 +11,5 @@ import org.apache.ibatis.annotations.Mapper;
 * @Version 1.0
 */
 @Mapper
-public interface JianyueMapper extends MPJBaseMapper<JianyueData> {
+public interface JianyueDataMapper extends MPJBaseMapper<JianyueData> {
 }

+ 17 - 0
src/main/java/com/xjrsoft/module/schedule/service/IJianyueDataService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.schedule.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.schedule.entity.JianyueData;
+
+/**
+* @title: 班级荣誉
+* @Author szs
+* @Date: 2023-12-06
+* @Version 1.0
+*/
+
+public interface IJianyueDataService extends MPJBaseService<JianyueData> {
+
+
+
+}

+ 19 - 0
src/main/java/com/xjrsoft/module/schedule/service/impl/JianyueDataServiceImpl.java

@@ -0,0 +1,19 @@
+package com.xjrsoft.module.schedule.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.schedule.entity.JianyueData;
+import com.xjrsoft.module.schedule.mapper.JianyueDataMapper;
+import com.xjrsoft.module.schedule.service.IJianyueDataService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+* @title: 干部部门
+* @Author szs
+* @Date: 2023-12-20
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class JianyueDataServiceImpl extends MPJBaseServiceImpl<JianyueDataMapper, JianyueData> implements IJianyueDataService {
+}

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

@@ -10,6 +10,7 @@ import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseCourseSubject;
 import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.base.entity.BaseSemester;
+import com.xjrsoft.module.organization.entity.Department;
 import com.xjrsoft.module.schedule.vo.ClassroomJianyuekbVo;
 import com.xjrsoft.module.schedule.vo.StudentJianyuekbVo;
 import com.xjrsoft.module.teacher.entity.XjrUser;
@@ -184,7 +185,7 @@ public class DataUtil {
     /**
      *  新增课程
      */
-    public Map<Long, String> insertCourse(Db db, String tableName, Map<Long, String> ids) throws Exception {
+    public Map<Long, String> insertCourse(Db db, String tableName, Map<Long, String> ids, Map<Long, String> tagMap) throws Exception {
         String sql = "select * from " + tableName + " where delete_mark = 0";
         List<BaseCourseSubject> list = db.query(sql, BaseCourseSubject.class);
         String url  = ScheduleUtil.apiUrl + "courseclass/Create";
@@ -198,6 +199,12 @@ public class DataUtil {
             paramJson.addProperty("name", courseSubject.getName() + courseSubject.getCode());
             paramJson.addProperty("code", courseSubject.getCode());
             paramJson.addProperty("extendId", courseSubject.getId().toString());
+            if(tagMap.get(courseSubject.getOrgId()) != null){
+                JsonArray jsonArray = new JsonArray();
+                jsonArray.add(tagMap.get(courseSubject.getOrgId()));
+                paramJson.add("tagSerialNos", jsonArray);
+            }
+
             //获取时间戳
             long timestamp = System.currentTimeMillis();
             //生成签名
@@ -268,6 +275,36 @@ public class DataUtil {
         return idMap;
     }
 
+    public Map<Long, String> insertTag(Db db, String tableName, Map<Long, String> ids) throws Exception {
+        String sql = "select * from " + tableName + " where delete_mark = 0" +
+                " and id in (select distinct org_id from base_course_subject where delete_mark = 0)";
+        List<Department> list = db.query(sql, Department.class);
+        String url = ScheduleUtil.apiUrl + "courseclass/tag/create";
+        JsonParser jsonParser = new JsonParser();
+        Map<Long, String> idMap = new HashMap<>();
+        for (Department department : list) {
+            if(ids != null && ids.get(department.getId()) != null){
+                continue;
+            }
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("name", department.getName());
+
+            //获取时间戳
+            long timestamp = System.currentTimeMillis();
+            //生成签名
+            String sign = ScheduleUtil.createSign(timestamp);
+
+            String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+
+            idMap.put(department.getId(), resultJson.get("data").getAsString());
+        }
+        //插入记录表
+        insertRecord(db, tableName, idMap);
+        return idMap;
+    }
+
     /**
      * 插入年级
      * @param db 数据库链接
@@ -366,11 +403,11 @@ public class DataUtil {
         return currentSemeterId;
     }
 
-    public Map<Long, JsonArray> getScheduleInfo(Map<String, Long> classMap, Date startDate, Date endDate) throws Exception {
+    public JsonArray getScheduleInfoByClass(Map<String, Long> classMap, Date startDate, Date endDate) throws Exception {
         JsonParser jsonParser = new JsonParser();
         String url  = ScheduleUtil.apiUrl + "TimeTable/List";
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        Map<Long, JsonArray> dataMap = new HashMap<>();
+        JsonArray dataMap = new JsonArray();
         for (String classId : classMap.keySet()) {
             //获取时间戳
             long timestamp = System.currentTimeMillis();
@@ -383,11 +420,28 @@ public class DataUtil {
             String result = ScheduleUtil.doPost(url, jsonObject.toString(), sign, timestamp);
 
             JsonObject asJsonObject = jsonParser.parse(result).getAsJsonObject();
-            dataMap.put(classMap.get(classId), asJsonObject.get("data").getAsJsonArray());
+            dataMap.addAll(asJsonObject.get("data").getAsJsonArray());
         }
         return dataMap;
     }
 
+    public JsonArray getScheduleInfoByGrade(String eduYearSerialNo, String startDate, String endDate) throws Exception {
+        JsonParser jsonParser = new JsonParser();
+        String url  = ScheduleUtil.apiUrl + "TimeTable/List";
+        //获取时间戳
+        long timestamp = System.currentTimeMillis();
+        //生成签名
+        String sign = ScheduleUtil.createSign(timestamp);
+        JsonObject jsonObject = new JsonObject();
+        jsonObject.addProperty("eduYearSerialNo", eduYearSerialNo);
+        jsonObject.addProperty("startDate", startDate);
+        jsonObject.addProperty("endDate", endDate);
+        String result = ScheduleUtil.doPost(url, jsonObject.toString(), sign, timestamp);
+
+        JsonObject asJsonObject = jsonParser.parse(result).getAsJsonObject();
+        return asJsonObject.get("data").getAsJsonArray();
+    }
+
     /**
      *
      * @param db 数据库链接
@@ -397,72 +451,71 @@ public class DataUtil {
      * @param semesterMap 学期对应关系
      * @param teacherMap 教师对应关系
      */
-    public void insertCourseTable(Db db, Map<Long, JsonArray> data, Map<String, Long> classroomMap, Map<String, Long> coureseMap,Map<String, Long> semesterMap, Map<String, Long> teacherMap) throws SQLException {
+    public void insertCourseTable(Db db, JsonArray data, Map<String, Long> classroomMap, Map<String, Long> coureseMap,
+        Map<String, Long> semesterMap, Map<String, Long> teacherMap, Map<String, Long> classMap) throws SQLException {
         List<String> sqls = new ArrayList<>();
         Map<Integer, String> week = ScheduleUtil.getWeek();
         Map<Integer, Integer> tmePeriod = ScheduleUtil.getTmePeriod();
         int count = 1;
-        for (Long classId : data.keySet()) {
-            JsonArray jsonArray = data.get(classId);
-            for (JsonElement jsonElement : jsonArray) {
-                JsonObject asJsonObject = jsonElement.getAsJsonObject();
-                long id = System.currentTimeMillis();
-                JsonArray teachers = asJsonObject.get("teachers").getAsJsonArray();
-
-                String numberOfDayName = asJsonObject.get("numberOfDayName").getAsString();
-                Integer timeNumber = 0;//节次
-                if(!StrUtil.isEmpty(numberOfDayName)){
-                    timeNumber = Integer.parseInt(numberOfDayName.substring(numberOfDayName.length() - 1));
-                }
-                String sql = "INSERT INTO course_table(id,base_semester_id,teacher_id,teacher_name,course_id,course_name," +
-                        "class_id, class_name,weeks,weeks_cn,time_period,time_number,site_id,site_name,status," +
-                        "create_date,jianyue_id) select " + id + String.format("%04d", count) + ","
-                        + semesterMap.get(asJsonObject.get("semesterSerialNo").getAsString()) + ",";
-                if(teachers.size() > 0){
-                    JsonObject teacherJson = teachers.get(0).getAsJsonObject();
-                    sql += teacherMap.get(teacherJson.get("teacherSerialNo").getAsString()) + ","
-                        + "'" + teacherJson.get("name").getAsString() + "',";
-                }else{
-                    sql += "0,'',";
-                }
-                sql += coureseMap.get(asJsonObject.get("courseClassId").getAsString()) + ","
-                    + "'" + asJsonObject.get("courseClassName").getAsString() + "',"
-                    + classId + ","
-                    + "'" + asJsonObject.get("className").getAsString() + "',"
-                    + asJsonObject.get("dayOfWeek").getAsInt() + ","
-                    + "'" + week.get(asJsonObject.get("dayOfWeek").getAsInt()) + "',"
-                    + tmePeriod.get(asJsonObject.get("timeOption").getAsInt()) + ","
-                    + timeNumber + ","
-                    + (classroomMap.get(asJsonObject.get("classRoomSerialNo").getAsString()) == null ? 0 : classroomMap.get(asJsonObject.get("classRoomSerialNo").getAsString())) + ","
-                    + "'" + asJsonObject.get("classRoomName").getAsString() + "',1,now(),"
-                    + "'" + asJsonObject.get("id").getAsString() + "' FROM DUAL"
-                    + " WHERE NOT EXISTS(SELECT * FROM course_table WHERE jianyue_id = '" + asJsonObject.get("id").getAsString() +"' )";
-                sqls.add(sql);
-                count ++;
+        for (JsonElement jsonElement : data) {
+            JsonObject asJsonObject = jsonElement.getAsJsonObject();
+            long id = System.currentTimeMillis();
+            JsonArray teachers = asJsonObject.get("teachers").getAsJsonArray();
+            if(coureseMap.get(asJsonObject.get("courseClassId").getAsString()) == null){
+                continue;
+            }
+            String numberOfDayName = asJsonObject.get("numberOfDayName").getAsString();
+            Integer timeNumber = 0;//节次
+            if(!StrUtil.isEmpty(numberOfDayName)){
+                timeNumber = Integer.parseInt(numberOfDayName.substring(numberOfDayName.length() - 1));
+            }
+            String sql = "INSERT INTO course_table(id,base_semester_id,teacher_id,teacher_name,course_id,course_name," +
+                    "class_id, class_name,weeks,weeks_cn,time_period,time_number,site_id,site_name,status," +
+                    "create_date,jianyue_id) select " + id + String.format("%04d", count) + ","
+                    + semesterMap.get(asJsonObject.get("semesterSerialNo").getAsString()) + ",";
+            if(teachers.size() > 0){
+                JsonObject teacherJson = teachers.get(0).getAsJsonObject();
+                sql += teacherMap.get(teacherJson.get("teacherSerialNo").getAsString()) + ","
+                    + "'" + teacherJson.get("name").getAsString() + "',";
+            }else{
+                sql += "0,'',";
             }
-            db.executeBatch(sqls);
+            sql += coureseMap.get(asJsonObject.get("courseClassId").getAsString()) + ","
+                + "'" + asJsonObject.get("courseClassName").getAsString() + "',"
+                + classMap.get(asJsonObject.get("classSerialNo").getAsString()) + ","
+                + "'" + asJsonObject.get("className").getAsString() + "',"
+                + asJsonObject.get("dayOfWeek").getAsInt() + ","
+                + "'" + week.get(asJsonObject.get("dayOfWeek").getAsInt()) + "',"
+                + tmePeriod.get(asJsonObject.get("timeOption").getAsInt()) + ","
+                + timeNumber + ","
+                + (classroomMap.get(asJsonObject.get("classRoomSerialNo").getAsString()) == null ? 0 : classroomMap.get(asJsonObject.get("classRoomSerialNo").getAsString())) + ","
+                + "'" + asJsonObject.get("classRoomName").getAsString() + "',1,now(),"
+                + "'" + asJsonObject.get("id").getAsString() + "' FROM DUAL"
+                + " WHERE NOT EXISTS(SELECT * FROM course_table WHERE jianyue_id = '" + asJsonObject.get("id").getAsString() +"' )";
+            sqls.add(sql);
+            count ++;
         }
+        db.executeBatch(sqls);
     }
 
     /**
      * 提取课时相关信息
-     * @param db
-     * @param data
+     * @param db 数据库链接
+     * @param data 数据
+     *
      */
-    public void insertClassTime(Db db, Map<Long, JsonArray> data, BaseSemester baseSemester) throws SQLException {
+    public void insertClassTime(Db db, JsonArray data, BaseSemester baseSemester) throws SQLException {
 
         Map<String, JsonObject> infoMap = new HashMap<>();
         Map<Integer, Integer> tmePeriod = ScheduleUtil.getTmePeriod();
-        for (JsonArray value : data.values()) {
-            for (JsonElement jsonElement : value) {
-                JsonObject asJsonObject = jsonElement.getAsJsonObject();
-                String numberOfDayName = asJsonObject.get("numberOfDayName").getAsString();
-                JsonObject json = new JsonObject();
-                json.add("startTime", asJsonObject.get("startTime"));
-                json.add("endTime", asJsonObject.get("endTime"));
-                json.addProperty("tmePeriod", tmePeriod.get(asJsonObject.get("timeOption").getAsInt()));
-                infoMap.put(numberOfDayName, json);
-            }
+        for (JsonElement jsonElement : data) {
+            JsonObject asJsonObject = jsonElement.getAsJsonObject();
+            String numberOfDayName = asJsonObject.get("numberOfDayName").getAsString();
+            JsonObject json = new JsonObject();
+            json.add("startTime", asJsonObject.get("startTime"));
+            json.add("endTime", asJsonObject.get("endTime"));
+            json.addProperty("tmePeriod", tmePeriod.get(asJsonObject.get("timeOption").getAsInt()));
+            infoMap.put(numberOfDayName, json);
         }
         List<String> sqls = new ArrayList<>();
         int count = 1;

+ 1 - 0
src/main/resources/application-pre.yml

@@ -95,6 +95,7 @@ xjrsoft:
       - /organization/user/register # 注册
       - /oauth2/* # oauth2
       - /system/bindOpenid # 绑定openid
+      - /schedule/schedule/receive-msg
   email:
     host:  #邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>
     port:  # 邮件服务器的SMTP端口,可选,默认25

+ 1 - 0
src/main/resources/application-prod.yml

@@ -90,6 +90,7 @@ xjrsoft:
       - /organization/user/register # 注册
       - /oauth2/* # oauth2
       - /system/bindOpenid # 绑定openid
+      - /schedule/schedule/receive-msg
   email:
     host:  #邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>
     port:  # 邮件服务器的SMTP端口,可选,默认25

+ 175 - 1
src/main/resources/sqlScript/20240125_sql.sql

@@ -23,6 +23,180 @@ CREATE TABLE base_student_graduate
     PRIMARY KEY (`id`)
 ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '学生毕业管理';
 
+ALTER TABLE `course_table`
+    ADD COLUMN `jianyue_id` VARCHAR(40) NULL   COMMENT '简约课表的id' AFTER `modify_date`;
+ALTER TABLE `wf_subscription`
+    ADD COLUMN `folder_id` BIGINT NULL   COMMENT '附件夹主键' AFTER `total_amount`;
+ALTER TABLE `base_student_assessment_inspection`
+    CHANGE `reason` `reason` VARCHAR(1000) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL   COMMENT '备注',
+    ADD COLUMN `student_user_ids` VARCHAR(4000) NULL   COMMENT '学生ids(多选)' AFTER `status`;
+ALTER TABLE `base_student_assessment_inspection`
+    ADD COLUMN `dept_id` BIGINT NULL   COMMENT '专业部id' AFTER `student_user_ids`;
 
+ALTER TABLE `base_student_assessment_inspection`
+    ADD COLUMN `assessment_type` VARCHAR(50) NULL   COMMENT '考核对象(class:班级 personal:个人)' AFTER `dept_id`;
 
--- ------------------------------------------------------------------毕业--------------------------------------------------------------------
+
+-- -------------------------------
+-- 调课顶课申请
+-- -------------------------------
+DROP TABLE IF EXISTS wf_course_adjust;
+CREATE TABLE wf_course_adjust
+(
+    id BIGINT NOT NULL COMMENT '主键编号',
+    `create_user_id` BIGINT NULL DEFAULT NULL COMMENT '创建人',
+    `create_date` DATETIME NULL DEFAULT NULL COMMENT '创建时间',
+    `modify_user_id` BIGINT NULL DEFAULT NULL COMMENT '修改人',
+    `modify_date` DATETIME NULL DEFAULT NULL COMMENT '修改时间',
+    `delete_mark` INT NOT NULL COMMENT '删除标记',
+    `enabled_mark` INT NOT NULL COMMENT '有效标志',
+    `sort_code` INT NULL DEFAULT NULL COMMENT '序号',
+    `user_id` BIGINT NULL DEFAULT NULL COMMENT '申请人id',
+    `dept_id`  BIGINT NULL DEFAULT NULL COMMENT '专业部id',
+    `adjust_type` VARCHAR(50) NULL DEFAULT NULL COMMENT '调课类型',
+    `reason`  VARCHAR(100) NULL DEFAULT NULL COMMENT '原因',
+    `adjust_date` DATE NULL DEFAULT NULL COMMENT '调整日期',
+    `remark` VARCHAR(300) NULL DEFAULT NULL COMMENT '备注',
+    `course_id` BIGINT NULL DEFAULT NULL COMMENT '课程id(base_course_subject)',
+    `exchange_date` DATE NULL DEFAULT NULL COMMENT '对调日期',
+    `exchange_teacher_id` BIGINT NULL DEFAULT NULL COMMENT '替班教师id(xjr_user)',
+    `exchange_course_id` BIGINT NULL DEFAULT NULL COMMENT '对调课程id(base_course_subject)',
+    `status` INT NOT NULL DEFAULT 0 COMMENT '状态(0:未通过 1:已通过)',
+    PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '调课顶课申请';
+
+
+-- -------------------------------
+-- 课表发布消息接收
+-- -------------------------------
+DROP TABLE IF EXISTS course_receive_msg;
+CREATE TABLE course_receive_msg
+(
+    id BIGINT NOT NULL COMMENT '主键编号',
+    `create_date` DATETIME NULL DEFAULT NULL COMMENT '创建时间',
+    `delete_mark` INT NOT NULL COMMENT '删除标记',
+    `enabled_mark` INT NOT NULL COMMENT '有效标志',
+    `sort_code` INT NULL DEFAULT NULL COMMENT '序号',
+    `school_id` VARCHAR(50) NULL DEFAULT NULL COMMENT '学校id',
+    `edu_year_serial_no` VARCHAR(50) NULL DEFAULT NULL COMMENT '年级id',
+    `start_date` VARCHAR(50) NULL DEFAULT NULL COMMENT '开始时间',
+    `end_date`  VARCHAR(50) NULL DEFAULT NULL COMMENT '结束时间',
+    `is_callback` INT NULL DEFAULT NULL COMMENT '是否已回调',
+    PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '课表发布消息接收';
+
+DROP PROCEDURE IF EXISTS createCom;
+DELIMITER $$
+CREATE
+    PROCEDURE createCom()
+BEGIN
+    IF not EXISTS(SELECT 1 FROM information_schema.columns  WHERE table_name='base_course_subject' AND COLUMN_NAME = 'org_id') THEN
+ALTER TABLE `base_course_subject`
+    ADD COLUMN `org_id` BIGINT NULL   COMMENT '开课机构id' AFTER `remark`;
+END IF;
+END$$
+DELIMITER ;
+CALL createCom;
+DROP PROCEDURE createCom;
+
+DROP PROCEDURE IF EXISTS createCom;
+DELIMITER $$
+CREATE
+    PROCEDURE createCom()
+BEGIN
+    IF NOT EXISTS(SELECT 1 FROM information_schema.columns  WHERE table_name='evaluate_manage' AND COLUMN_NAME = 'source_id') THEN
+ALTER TABLE `evaluate_manage`
+    ADD COLUMN `source_id` BIGINT NULL   COMMENT '来源id';
+END IF;
+END$$
+DELIMITER ;
+CALL createCom;
+DROP PROCEDURE createCom;
+
+
+
+-- ------------------------------------------------------------------毕业--------------------------------------------------------------------
+
+---------------------------------------------------------------------评价管理-----------------------------------------------------------------
+DROP PROCEDURE IF EXISTS createCom;
+DELIMITER $$
+CREATE
+    PROCEDURE createCom()
+BEGIN
+    IF not EXISTS(SELECT 1 FROM information_schema.columns  WHERE table_name='evaluate_manage' AND COLUMN_NAME = 'is_auto_create') THEN
+
+ALTER TABLE `evaluate_manage`
+    ADD COLUMN `is_auto_create` INT NULL   COMMENT '是否自动生成(0:否,1:是)' AFTER `status`,
+	ADD COLUMN `create_frequency` VARCHAR(50) NULL   COMMENT '生成频率(xjr_dictionary_detail[create_frequency])' AFTER `is_auto_create`;
+
+END IF;
+END$$
+DELIMITER ;
+CALL createCom;
+DROP PROCEDURE createCom;
+---------------------------------------------------------------------评价管理-----------------------------------------------------------------
+---------------------------------------------------------------------考核-----------------------------------------------------------------
+-- -------------------------------
+-- 指标公式规则管理
+-- -------------------------------
+DROP TABLE IF EXISTS quota_formula_rule;
+CREATE TABLE quota_formula_rule
+(
+    id BIGINT NOT NULL COMMENT '主键编号',
+    `create_user_id` BIGINT NULL DEFAULT NULL COMMENT '创建人',
+    `create_date` DATETIME NULL DEFAULT NULL COMMENT '创建时间',
+    `modify_user_id` BIGINT NULL DEFAULT NULL COMMENT '修改人',
+    `modify_date` DATETIME NULL DEFAULT NULL COMMENT '修改时间',
+    `delete_mark` INT NOT NULL COMMENT '删除标记',
+    `enabled_mark` INT NOT NULL COMMENT '有效标志',
+    `sort_code` INT NULL DEFAULT NULL COMMENT '序号',
+    `name` VARCHAR(255) NULL DEFAULT NULL COMMENT '规则名称',
+    `formula`  VARCHAR(1000) NULL DEFAULT NULL COMMENT '规则公式',
+    `bind_quota` VARCHAR(50) NULL DEFAULT NULL COMMENT '指标',
+    `remark`  VARCHAR(500) NULL DEFAULT NULL COMMENT '备注',
+    PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '指标公式规则管理';
+
+-- -------------------------------
+-- 考核基数
+-- -------------------------------
+DROP TABLE IF EXISTS quota_formula_rule_constant;
+CREATE TABLE quota_formula_rule_constant
+(
+    id BIGINT NOT NULL COMMENT '主键编号',
+    `create_user_id` BIGINT NULL DEFAULT NULL COMMENT '创建人',
+    `create_date` DATETIME NULL DEFAULT NULL COMMENT '创建时间',
+    `modify_user_id` BIGINT NULL DEFAULT NULL COMMENT '修改人',
+    `modify_date` DATETIME NULL DEFAULT NULL COMMENT '修改时间',
+    `delete_mark` INT NOT NULL COMMENT '删除标记',
+    `enabled_mark` INT NOT NULL COMMENT '有效标志',
+    `sort_code` INT NULL DEFAULT NULL COMMENT '序号',
+    `name` VARCHAR(255) NULL DEFAULT NULL COMMENT '基数名称',
+    `formula`  VARCHAR(1000) NULL DEFAULT NULL COMMENT '规则公式',
+    `bind_quota` VARCHAR(50) NULL DEFAULT NULL COMMENT '指标',
+    `remark`  VARCHAR(500) NULL DEFAULT NULL COMMENT '备注',
+    PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '考核基数';
+
+
+-- -------------------------------
+-- 考核表单属性
+-- -------------------------------
+DROP TABLE IF EXISTS quota_formula_rule_attribute;
+CREATE TABLE quota_formula_rule_attribute
+(
+    id BIGINT NOT NULL COMMENT '主键编号',
+    `create_user_id` BIGINT NULL DEFAULT NULL COMMENT '创建人',
+    `create_date` DATETIME NULL DEFAULT NULL COMMENT '创建时间',
+    `modify_user_id` BIGINT NULL DEFAULT NULL COMMENT '修改人',
+    `modify_date` DATETIME NULL DEFAULT NULL COMMENT '修改时间',
+    `delete_mark` INT NOT NULL COMMENT '删除标记',
+    `enabled_mark` INT NOT NULL COMMENT '有效标志',
+    `sort_code` INT NULL DEFAULT NULL COMMENT '序号',
+    `name` VARCHAR(255) NULL DEFAULT NULL COMMENT '属性名称',
+    `formula`  VARCHAR(1000) NULL DEFAULT NULL COMMENT '属性值',
+    `remark`  VARCHAR(500) NULL DEFAULT NULL COMMENT '备注',
+    PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '考核表单属性';
+
+---------------------------------------------------------------------考核-----------------------------------------------------------------

+ 3 - 4
src/test/java/com/xjrsoft/xjrsoftboot/ScheduleFlowTest.java

@@ -7,9 +7,8 @@ import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.xjrsoft.XjrSoftApplication;
-import com.xjrsoft.config.JianyuekbConfig;
 import com.xjrsoft.module.schedule.entity.JianyueData;
-import com.xjrsoft.module.schedule.mapper.JianyueMapper;
+import com.xjrsoft.module.schedule.mapper.JianyueDataMapper;
 import org.junit.jupiter.api.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -41,7 +40,7 @@ public class ScheduleFlowTest {
     public static final String ALGORITHM = "HmacSHA256";
     public static final String apiUrl = "https://live.jianyuekb.com/api/v1/ScheduleFlowV2/OpenApi/";
     @Autowired
-    private JianyueMapper jianyueMapper;
+    private JianyueDataMapper jianyueDataMapper;
 
     public static String calculateHMac(String key, String data) throws Exception {
         Mac sha256_HMAC = Mac.getInstance(ALGORITHM);
@@ -118,7 +117,7 @@ public class ScheduleFlowTest {
 //        List<String> classInfo = getClassInfo(sign, timestamp);
 //
 //        //查询课表信息
-        List<JianyueData> baseClass = jianyueMapper.selectList(new QueryWrapper<JianyueData>().lambda().eq(JianyueData::getTableName, "base_class"));
+        List<JianyueData> baseClass = jianyueDataMapper.selectList(new QueryWrapper<JianyueData>().lambda().eq(JianyueData::getTableName, "base_class"));
         List<String> classInfo = new ArrayList<>();
         for (JianyueData aClass : baseClass) {
             classInfo.add(aClass.getJianyueId());