Browse Source

Merge remote-tracking branch 'origin/dev' into dev

phoenix 1 year ago
parent
commit
4f3cc33e82
20 changed files with 636 additions and 71 deletions
  1. 3 0
      src/main/java/com/xjrsoft/module/base/entity/BaseCourseSubject.java
  2. 1 0
      src/main/java/com/xjrsoft/module/courseTable/entity/CourseTable.java
  3. 5 1
      src/main/java/com/xjrsoft/module/courseTable/mapper/CourseTableMapper.java
  4. 4 0
      src/main/java/com/xjrsoft/module/courseTable/service/ICourseTableService.java
  5. 39 0
      src/main/java/com/xjrsoft/module/courseTable/service/impl/CourseTableServiceImpl.java
  6. 7 1
      src/main/java/com/xjrsoft/module/job/JianyuekbBaseDataTask.java
  7. 8 3
      src/main/java/com/xjrsoft/module/job/JianyuekbScheduleTask.java
  8. 82 4
      src/main/java/com/xjrsoft/module/schedule/controller/ScheduleController.java
  9. 39 0
      src/main/java/com/xjrsoft/module/schedule/dto/CourseTableDto.java
  10. 1 1
      src/main/java/com/xjrsoft/module/schedule/mapper/JianyueDataMapper.java
  11. 17 0
      src/main/java/com/xjrsoft/module/schedule/service/IJianyueDataService.java
  12. 19 0
      src/main/java/com/xjrsoft/module/schedule/service/impl/JianyueDataServiceImpl.java
  13. 111 57
      src/main/java/com/xjrsoft/module/schedule/util/DataUtil.java
  14. 30 0
      src/main/java/com/xjrsoft/module/schedule/vo/CourseDetailVo.java
  15. 36 0
      src/main/java/com/xjrsoft/module/schedule/vo/CourseTableVo.java
  16. 1 0
      src/main/resources/application-pre.yml
  17. 1 0
      src/main/resources/application-prod.yml
  18. 39 0
      src/main/resources/mapper/courseTable/CourseTable.xml
  19. 190 1
      src/main/resources/sqlScript/20240125_sql.sql
  20. 3 3
      src/test/java/com/xjrsoft/xjrsoftboot/ScheduleFlowTest.java

+ 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;
 }

+ 1 - 0
src/main/java/com/xjrsoft/module/courseTable/entity/CourseTable.java

@@ -81,4 +81,5 @@ public class CourseTable implements Serializable {
 
     @TableField(fill = FieldFill.UPDATE)
     private LocalDateTime modifyDate;
+
 }

+ 5 - 1
src/main/java/com/xjrsoft/module/courseTable/mapper/CourseTableMapper.java

@@ -2,8 +2,12 @@ package com.xjrsoft.module.courseTable.mapper;
 
 import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.courseTable.entity.CourseTable;
+import com.xjrsoft.module.schedule.dto.CourseTableDto;
+import com.xjrsoft.module.schedule.vo.CourseDetailVo;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * <p>
  * 课表 Mapper 接口
@@ -14,5 +18,5 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface CourseTableMapper extends MPJBaseMapper<CourseTable> {
-
+    List<CourseDetailVo> getList(CourseTableDto dto);
 }

+ 4 - 0
src/main/java/com/xjrsoft/module/courseTable/service/ICourseTableService.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.xjrsoft.module.courseTable.dto.ClassListDto;
 import com.xjrsoft.module.courseTable.entity.CourseTable;
 import com.xjrsoft.module.courseTable.vo.ClassListVo;
+import com.xjrsoft.module.schedule.dto.CourseTableDto;
+import com.xjrsoft.module.schedule.vo.CourseTableVo;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -22,4 +24,6 @@ public interface ICourseTableService extends IService<CourseTable> {
     Boolean wordImport(InputStream inputStream) throws IOException;
 
     List<ClassListVo> classList(ClassListDto dto);
+
+    CourseTableVo getList(CourseTableDto dto);
 }

+ 39 - 0
src/main/java/com/xjrsoft/module/courseTable/service/impl/CourseTableServiceImpl.java

@@ -5,7 +5,9 @@ import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -16,6 +18,7 @@ import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.config.TimetableConfig;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseSemester;
+import com.xjrsoft.module.base.mapper.BaseSemesterMapper;
 import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.base.service.IBaseSemesterService;
 import com.xjrsoft.module.courseTable.dto.ClassListDto;
@@ -26,6 +29,9 @@ import com.xjrsoft.module.courseTable.mapper.ClassTimeMapper;
 import com.xjrsoft.module.courseTable.mapper.CourseTableMapper;
 import com.xjrsoft.module.courseTable.service.ICourseTableService;
 import com.xjrsoft.module.courseTable.vo.ClassListVo;
+import com.xjrsoft.module.schedule.dto.CourseTableDto;
+import com.xjrsoft.module.schedule.vo.CourseDetailVo;
+import com.xjrsoft.module.schedule.vo.CourseTableVo;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.teacher.service.ITeacherbaseManagerService;
@@ -69,6 +75,7 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
     private final TimetableConfig timetableConfig;
 
     private final ClassTimeMapper classTimeMapper;
+    private final BaseSemesterMapper baseSemesterMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -153,6 +160,38 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
         return classListVos;
     }
 
+    @Override
+    public CourseTableVo getList(CourseTableDto dto) {
+        List<CourseDetailVo> list = courseTableMapper.getList(dto);
+        List<ClassTime> classTimes = classTimeMapper.selectList(null);
+
+        CourseTableVo tableVo = new CourseTableVo();
+        tableVo.setCourseList(list);
+        tableVo.setClassHour(list.size());
+        tableVo.setClassTimeList(classTimes);
+
+        if(dto.getSemesterId() != null){
+            BaseSemester baseSemester = baseSemesterMapper.selectById(dto.getSemesterId());
+            tableVo.setSemesterName(baseSemester.getName());
+        }
+        if(!StrUtil.isEmpty(dto.getTeacherName()) || !StrUtil.isEmpty(dto.getJobNumber())){
+            List<XjrUser> userList = teacherbaseManagerService.list(
+                new QueryWrapper<XjrUser>().lambda()
+                .like(!StrUtil.isEmpty(dto.getTeacherName()), XjrUser::getName, dto.getTeacherName())
+                .like(!StrUtil.isEmpty(dto.getJobNumber()), XjrUser::getCode, dto.getJobNumber())
+            );
+            if(userList != null && !userList.isEmpty()){
+                tableVo.setTeacherName(userList.get(0).getName());
+            }
+        }
+        if(dto.getClassId() != null){
+            BaseClass baseClass = baseClassService.getById(dto.getClassId());
+            tableVo.setClassName(baseClass.getName());
+        }
+        //设置第几周
+        return tableVo;
+    }
+
     /**
      * 获取节次
      *

+ 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());
         }
     }
+
 }

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

@@ -1,11 +1,22 @@
 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.courseTable.service.ICourseTableService;
+import com.xjrsoft.module.schedule.dto.CourseTableDto;
 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 +25,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 +47,13 @@ public class ScheduleController {
 
 
     private final ICourseReceiveMsgService courseReceiveMsgService;
+    private final IJianyueDataService jianyueDataService;
+    private final ICourseTableService courseTableService;
 
     @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 +63,69 @@ 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);
+    }
 
+    @GetMapping(value = "/course-table")
+    @ApiOperation(value="接收消息")
+    @SaCheckPermission("room:detail")
+    public RT<CourseReceiveMsg> courseInfo(CourseTableDto dto){
+        courseTableService.list();
+        return null;
+    }
 
 }

+ 39 - 0
src/main/java/com/xjrsoft/module/schedule/dto/CourseTableDto.java

@@ -0,0 +1,39 @@
+package com.xjrsoft.module.schedule.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+* @title: 寝室
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+public class CourseTableDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("学期管理")
+    private Long semesterId;
+    @ApiModelProperty("课表类型(teacher:教师,class:班级)")
+    private String courseType;
+    @ApiModelProperty("周次")
+    private Integer week;
+
+    @ApiModelProperty("姓名(课表类型为teachar时使用)")
+    private String teacherName;
+    @ApiModelProperty("工号(课表类型为teachar时使用)")
+    private String jobNumber;
+
+    @ApiModelProperty("年级id(课表类型为class时使用)")
+    private Long gradeId;
+    @ApiModelProperty("班级id(课表类型为class时使用)")
+    private Long classId;
+    @ApiModelProperty("专业方向id(课表类型为class时使用)")
+    private Long majorSetId;
+
+}

+ 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 {
+}

+ 111 - 57
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;
             }
-            db.executeBatch(sqls);
+            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() + "',"
+                + 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;
@@ -471,7 +524,7 @@ public class DataUtil {
             String substring1 = number.substring(number.length() - 1);
             JsonObject jsonObject = infoMap.get(number);
             long id = System.currentTimeMillis();
-            String fullName = substring + "第" +substring1 + "节课";
+            String fullName = "第" +substring1 + "节课";
             String sql = "INSERT INTO class_time(id,time_period,number,full_name,short_name,create_date,summer_start_time"
                     + ",summer_end_time,winter_start_time,winter_end_time) select " + id + String.format("%04d", count) + ","
                     + jsonObject.get("tmePeriod").getAsInt() + ","
@@ -509,4 +562,5 @@ public class DataUtil {
         }
         db.executeBatch(sqls);
     }
+
 }

+ 30 - 0
src/main/java/com/xjrsoft/module/schedule/vo/CourseDetailVo.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.schedule.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author dzx
+ * @date 2024/1/29
+ */
+@Data
+public class CourseDetailVo {
+
+    @ApiModelProperty("课程名称")
+    private String courseName;
+
+    @ApiModelProperty("教师名称(课表类型为teacher时使用)")
+    private String teacherName;
+
+    @ApiModelProperty("教室名称")
+    private Integer classroomName;
+
+    @ApiModelProperty("星期几(1-7)")
+    private Integer weeks;
+
+    @ApiModelProperty("时段(1=上午 2=下午 3=晚上)")
+    private String timePeriod;
+
+    @ApiModelProperty("节次")
+    private String timeNumber;
+}

+ 36 - 0
src/main/java/com/xjrsoft/module/schedule/vo/CourseTableVo.java

@@ -0,0 +1,36 @@
+package com.xjrsoft.module.schedule.vo;
+
+import com.xjrsoft.module.courseTable.entity.ClassTime;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author dzx
+ * @date 2024/1/29
+ */
+@Data
+public class CourseTableVo {
+
+    @ApiModelProperty("节次时间")
+    private List<ClassTime> classTimeList;
+
+    @ApiModelProperty("课程")
+    private List<CourseDetailVo> courseList;
+
+    @ApiModelProperty("总课时")
+    private Integer classHour;
+
+    @ApiModelProperty("学期名称")
+    private String semesterName;
+
+    @ApiModelProperty("教师名称(课表类型为teacher时使用)")
+    private String teacherName;
+
+    @ApiModelProperty("班级名称(课表类型为class时使用)")
+    private String className;
+
+    @ApiModelProperty("第几周")
+    private String week;
+}

+ 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

+ 39 - 0
src/main/resources/mapper/courseTable/CourseTable.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.courseTable.mapper.CourseTableMapper">
+    <select id="getList" parameterType="com.xjrsoft.module.schedule.dto.CourseTableDto" resultType="com.xjrsoft.module.schedule.vo.CourseDetailVo">
+        SELECT t1.course_name, t2.name AS teacher_name,CONCAT(t4.name,t3.name) AS classroom_name,t1.weeks,t1.time_period,t1.time_number FROM course_table t1
+        LEFT JOIN xjr_user t2 ON t1.teacher_id = t2.id
+        LEFT JOIN base_classroom t3 ON t1.site_id = t3.id
+        LEFT JOIN base_office_build t4 ON t3.office_build_id = t4.id
+        LEFT JOIN base_class t5 ON t1.class_id = t5.id
+        LEFT JOIN base_grade t6 ON t5.grade_id = t6.id
+        where 1 = 1
+        <if test="dto.semesterId != null">
+            and t1.base_semester_id = #{dto.semesterId}
+        </if>
+        <if test="dto.courseType != null and dto.courseType != '' and dto.courseType == 'teacher'">
+            <if test="dto.teacherName != null and dto.teacherName != ''">
+                and t2.name like concat('%', #{dto.teacherName},'%')
+            </if>
+            <if test="dto.jobNumber != null and dto.jobNumber != ''">
+                and t2.code like concat('%', #{dto.jobNumber},'%')
+            </if>
+        </if>
+
+        <if test="dto.courseType != null and dto.courseType != '' and dto.courseType == 'class'">
+            <if test="dto.gradeId != null">
+                and t6.id = #{dto.gradeId}
+            </if>
+            <if test="dto.classId != null">
+                and t5.id = #{dto.classId}
+            </if>
+            <if test="dto.majorSetId != null">
+                and t5.major_set_id = #{dto.majorSetId}
+            </if>
+        </if>
+    </select>
+
+</mapper>

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

@@ -23,6 +23,195 @@ 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:个人)';
 
--- ------------------------------------------------------------------毕业--------------------------------------------------------------------
+
+-- -------------------------------
+-- 调课顶课申请
+-- -------------------------------
+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='base_student_assessment_inspection' AND COLUMN_NAME = 'teacher_id') THEN
+ALTER TABLE `base_student_assessment_inspection`
+    ADD COLUMN `teacher_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 - 3
src/test/java/com/xjrsoft/xjrsoftboot/ScheduleFlowTest.java

@@ -8,7 +8,7 @@ import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.xjrsoft.XjrSoftApplication;
 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;
@@ -40,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);
@@ -117,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());