Jelajahi Sumber

Merge branch 'pre'

dzx 1 tahun lalu
induk
melakukan
ba424db203

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

@@ -98,4 +98,8 @@ public class CourseTable implements Serializable {
     @ApiModelProperty("关键信息(存课程的教师id、班级id、日期、节次、课程id、场地以“_”拼接)")
     private String keyInfo;
 
+
+    @ApiModelProperty("同步记录id")
+    private Long courseReceiveMsgId;
+
 }

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

@@ -178,6 +178,7 @@ 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;
             }
@@ -231,7 +232,7 @@ public class JianyuekbScheduleTask {
 
                 ongoing.remove(eduYearSerialNo);
                 redisUtil.set(taskKey, ongoing);
-                insertCourse(allScheduleInfo, dataMap, dataUtil);
+                insertCourse(allScheduleInfo, dataMap, dataUtil, courseReceiveMsgId);
                 //恢复挂起的流程
                 restoreCourseAdjust(processIds);
                 //处理该日期内已经审批通过的调课和顶课申请
@@ -245,7 +246,7 @@ public class JianyuekbScheduleTask {
         }
     }
 
-    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";
 //            Map<String, Long> gradeMap = dataMap.get(tableName);
@@ -265,7 +266,7 @@ public class JianyuekbScheduleTask {
         tableName = "base_classroom";
         Map<String, String> classroomMap = dataMap.get(tableName);
 
-        dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap);
+        dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, courseReceiveMsgId);
         dataUtil.insertClassTime(scheduleInfo);
     }
 

+ 139 - 57
src/main/java/com/xjrsoft/module/ledger/controller/LedgerStatisticsController.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.ledger.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.support.ExcelTypeEnum;
@@ -12,8 +13,11 @@ import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.ledger.dto.LedgerStatisticsPageDto;
+import com.xjrsoft.module.ledger.vo.LedgerStatisticsLeaveExcelVo;
 import com.xjrsoft.module.ledger.vo.LedgerStatisticsLeaveVo;
+import com.xjrsoft.module.ledger.vo.LedgerStatisticsListenExcelVo;
 import com.xjrsoft.module.ledger.vo.LedgerStatisticsListenVo;
+import com.xjrsoft.module.ledger.vo.LedgerStatisticsOvertimeExcelVo;
 import com.xjrsoft.module.ledger.vo.LedgerStatisticsOvertimeVo;
 import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.organization.service.IUserService;
@@ -36,6 +40,7 @@ import java.io.ByteArrayOutputStream;
 import java.text.DecimalFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -60,6 +65,20 @@ public class LedgerStatisticsController {
     @ApiOperation(value="教师请假统计(分页)")
     @SaCheckPermission("ledgerstatistics:detail")
     public RT<PageOutput<LedgerStatisticsLeaveVo>> teacherLeavePage(@Valid LedgerStatisticsPageDto dto){
+
+        LocalDateTime startTime = null;
+        LocalDateTime endTime = null;
+        if(dto.getStartDate() != null && dto.getEndDate() != null){
+            startTime = dto.getStartDate().atTime(0,0,0);
+            endTime = dto.getEndDate().atTime(23,59,59);
+        }
+        Map<String, List<WfTeacherleave>> userLeaveMap = teacherleaveService.getUserLeaveList(startTime, endTime);
+
+        List<String> userIds = new ArrayList<>(userLeaveMap.keySet());
+        if(userIds.isEmpty()){
+            return RT.ok(new PageOutput<>());
+        }
+
         IPage<LedgerStatisticsLeaveVo> userPage = userService.selectJoinListPage(ConventPage.getPage(dto), LedgerStatisticsLeaveVo.class,
                 new MPJLambdaWrapper<User>()
                         .disableSubLogicDel()
@@ -70,15 +89,9 @@ public class LedgerStatisticsController {
                                 " WHERE t1.delete_mark = 0 AND t2.user_id = t.id) as dept_name")
                         .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
                         .like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
+                        .in(User::getId, userIds)
                         .orderByAsc(User::getId)
         );
-        LocalDateTime startTime = null;
-        LocalDateTime endTime = null;
-        if(dto.getStartDate() != null && dto.getEndDate() != null){
-            startTime = dto.getStartDate().atTime(0,0,0);
-            endTime = dto.getEndDate().atTime(23,59,59);
-        }
-        Map<String, List<WfTeacherleave>> userLeaveMap = teacherleaveService.getUserLeaveList(startTime, endTime);
 
         for (LedgerStatisticsLeaveVo record : userPage.getRecords()) {
             List<WfTeacherleave> wfTeacherleaves = userLeaveMap.get(record.getId().toString());
@@ -100,6 +113,23 @@ public class LedgerStatisticsController {
     @ApiOperation(value="教师请假统计-导出")
     @SaCheckPermission("ledgerstatistics:detail")
     public ResponseEntity<byte[]> teacherLeaveExportQuery(@Valid @RequestBody LedgerStatisticsPageDto dto){
+        LocalDateTime startTime = null;
+        LocalDateTime endTime = null;
+        if(dto.getStartDate() != null && dto.getEndDate() != null){
+            startTime = dto.getStartDate().atTime(0,0,0);
+            endTime = dto.getEndDate().atTime(23,59,59);
+        }
+        Map<String, List<WfTeacherleave>> userLeaveMap = teacherleaveService.getUserLeaveList(startTime, endTime);
+
+        List<String> userIds = new ArrayList<>(userLeaveMap.keySet());
+        if(userIds.isEmpty()){
+            List<LedgerStatisticsLeaveExcelVo> list = new ArrayList<>();
+            ByteArrayOutputStream bot = new ByteArrayOutputStream();
+            EasyExcel.write(bot, LedgerStatisticsLeaveExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
+
+            return RT.fileStream(bot.toByteArray(), "teacher-leave" + ExcelTypeEnum.XLSX.getValue());
+        }
+
         List<LedgerStatisticsLeaveVo> list = userService.selectJoinList(LedgerStatisticsLeaveVo.class,
                 new MPJLambdaWrapper<User>()
                         .disableSubLogicDel()
@@ -110,15 +140,11 @@ public class LedgerStatisticsController {
                                 " WHERE t1.delete_mark = 0 AND t2.user_id = t.id) as dept_name")
                         .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
                         .like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
+                        .in(User::getId, userIds)
                         .orderByAsc(User::getId)
         );
-        LocalDateTime startTime = null;
-        LocalDateTime endTime = null;
-        if(dto.getStartDate() != null && dto.getEndDate() != null){
-            startTime = dto.getStartDate().atTime(0,0,0);
-            endTime = dto.getEndDate().atTime(23,59,59);
-        }
-        Map<String, List<WfTeacherleave>> userLeaveMap = teacherleaveService.getUserLeaveList(startTime, endTime);
+        List<LedgerStatisticsLeaveExcelVo> dataList = new ArrayList<>();
+
         int sortCode = 1;
         for (LedgerStatisticsLeaveVo record : list) {
             List<WfTeacherleave> wfTeacherleaves = userLeaveMap.get(record.getId().toString());
@@ -131,11 +157,13 @@ public class LedgerStatisticsController {
             String formattedValue = df.format(value);
             record.setLeaveDays(formattedValue);
             record.setSortCode(sortCode);
+            LedgerStatisticsLeaveExcelVo bean = BeanUtil.toBean(record, LedgerStatisticsLeaveExcelVo.class);
+            dataList.add(bean);
             sortCode ++;
         }
 
         ByteArrayOutputStream bot = new ByteArrayOutputStream();
-        EasyExcel.write(bot, LedgerStatisticsLeaveVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
+        EasyExcel.write(bot, LedgerStatisticsLeaveExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(dataList);
 
         return RT.fileStream(bot.toByteArray(), "teacher-leave" + ExcelTypeEnum.XLSX.getValue());
     }
@@ -144,18 +172,6 @@ public class LedgerStatisticsController {
     @ApiOperation(value="教师加班统计(分页)")
     @SaCheckPermission("ledgerstatistics:detail")
     public RT<PageOutput<LedgerStatisticsOvertimeVo>> teacherOvertimePage(@Valid LedgerStatisticsPageDto dto){
-        IPage<LedgerStatisticsOvertimeVo> userPage = userService.selectJoinListPage(ConventPage.getPage(dto), LedgerStatisticsOvertimeVo.class,
-                new MPJLambdaWrapper<User>()
-                        .disableSubLogicDel()
-                        .select(User::getId)
-                        .select(User.class, x -> VoToColumnUtil.fieldsToColumns(UserPageVo.class).contains(x.getProperty()))
-                        .select(" (SELECT GROUP_CONCAT(t1.name) FROM xjr_department t1" +
-                                " INNER JOIN xjr_user_dept_relation t2 ON t1.id = t2.dept_id" +
-                                " WHERE t1.delete_mark = 0 AND t2.user_id = t.id) as dept_name")
-                        .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
-                        .like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
-                        .orderByAsc(User::getId)
-        );
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
         String sql = "SELECT t4.teacher_user_id,SUM(t.total_days) as total_days FROM wf_overtime t" +
@@ -176,9 +192,29 @@ public class LedgerStatisticsController {
         }
         sql += " GROUP BY t4.teacher_user_id";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
-        Map<Long, String> userLeaveMap = list.stream().collect(
+        Map<Long, String> userLeaveMap = list.stream().filter(x -> x.get("total_days") != null && x.get("teacher_user_id") != null).collect(
                 Collectors.toMap(x -> Long.parseLong(x.get("teacher_user_id").toString()), x -> x.get("total_days").toString())
         );
+
+        List<Long> userIds = new ArrayList<>(userLeaveMap.keySet());
+        if(userIds.isEmpty()){
+            return RT.ok(new PageOutput<>());
+        }
+
+        IPage<LedgerStatisticsOvertimeVo> userPage = userService.selectJoinListPage(ConventPage.getPage(dto), LedgerStatisticsOvertimeVo.class,
+                new MPJLambdaWrapper<User>()
+                        .disableSubLogicDel()
+                        .select(User::getId)
+                        .select(User.class, x -> VoToColumnUtil.fieldsToColumns(UserPageVo.class).contains(x.getProperty()))
+                        .select(" (SELECT GROUP_CONCAT(t1.name) FROM xjr_department t1" +
+                                " INNER JOIN xjr_user_dept_relation t2 ON t1.id = t2.dept_id" +
+                                " WHERE t1.delete_mark = 0 AND t2.user_id = t.id) as dept_name")
+                        .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
+                        .like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
+                        .in(User::getId, userIds)
+                        .orderByAsc(User::getId)
+        );
+
         for (LedgerStatisticsOvertimeVo record : userPage.getRecords()) {
             if(!userLeaveMap.containsKey(record.getId())){
                 continue;
@@ -198,18 +234,6 @@ public class LedgerStatisticsController {
     @ApiOperation(value="教师加班统计-导出")
     @SaCheckPermission("ledgerstatistics:detail")
     public ResponseEntity<byte[]> teacherOvertimeExportQuery(@Valid @RequestBody LedgerStatisticsPageDto dto){
-        List<LedgerStatisticsOvertimeVo> userPage = userService.selectJoinList(LedgerStatisticsOvertimeVo.class,
-                new MPJLambdaWrapper<User>()
-                        .disableSubLogicDel()
-                        .select(User::getId)
-                        .select(User.class, x -> VoToColumnUtil.fieldsToColumns(UserPageVo.class).contains(x.getProperty()))
-                        .select(" (SELECT GROUP_CONCAT(t1.name) FROM xjr_department t1" +
-                                " INNER JOIN xjr_user_dept_relation t2 ON t1.id = t2.dept_id" +
-                                " WHERE t1.delete_mark = 0 AND t2.user_id = t.id) as dept_name")
-                        .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
-                        .like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
-                        .orderByAsc(User::getId)
-        );
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
         String sql = "SELECT t4.teacher_user_id,SUM(t.total_days) as total_days FROM wf_overtime t" +
@@ -230,9 +254,36 @@ public class LedgerStatisticsController {
         }
         sql += " GROUP BY t4.teacher_user_id";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
-        Map<Long, String> userLeaveMap = list.stream().collect(
+        Map<Long, String> userLeaveMap = list.stream().filter(x -> x.get("total_days") != null && x.get("teacher_user_id") != null).collect(
                 Collectors.toMap(x -> Long.parseLong(x.get("teacher_user_id").toString()), x -> x.get("total_days").toString())
         );
+
+        List<Long> userIds = new ArrayList<>(userLeaveMap.keySet());
+        if(userIds.isEmpty()){
+            List<LedgerStatisticsOvertimeExcelVo> dataList = new ArrayList<>();
+            ByteArrayOutputStream bot = new ByteArrayOutputStream();
+            EasyExcel.write(bot, LedgerStatisticsOvertimeExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(dataList);
+
+            return RT.fileStream(bot.toByteArray(), "teacher-leave" + ExcelTypeEnum.XLSX.getValue());
+        }
+
+        List<LedgerStatisticsOvertimeVo> userPage = userService.selectJoinList(LedgerStatisticsOvertimeVo.class,
+                new MPJLambdaWrapper<User>()
+                        .disableSubLogicDel()
+                        .select(User::getId)
+                        .select(User.class, x -> VoToColumnUtil.fieldsToColumns(UserPageVo.class).contains(x.getProperty()))
+                        .select(" (SELECT GROUP_CONCAT(t1.name) FROM xjr_department t1" +
+                                " INNER JOIN xjr_user_dept_relation t2 ON t1.id = t2.dept_id" +
+                                " WHERE t1.delete_mark = 0 AND t2.user_id = t.id) as dept_name")
+                        .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
+                        .like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
+                        .in(User::getId, userIds)
+                        .orderByAsc(User::getId)
+        );
+
+        List<LedgerStatisticsOvertimeExcelVo> dataList = new ArrayList<>();
+
+        int sortCode = 1;
         for (LedgerStatisticsOvertimeVo record : userPage) {
             if(!userLeaveMap.containsKey(record.getId())){
                 continue;
@@ -242,10 +293,14 @@ public class LedgerStatisticsController {
             DecimalFormat df = new DecimalFormat(isInteger ? "0" : "#.##");
             String formattedValue = df.format(value);
             record.setTotalDays(formattedValue);
+            LedgerStatisticsOvertimeExcelVo bean = BeanUtil.toBean(record, LedgerStatisticsOvertimeExcelVo.class);
+            bean.setSortCode(sortCode);
+            dataList.add(bean);
+            sortCode ++;
         }
 
         ByteArrayOutputStream bot = new ByteArrayOutputStream();
-        EasyExcel.write(bot, LedgerStatisticsOvertimeVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
+        EasyExcel.write(bot, LedgerStatisticsOvertimeExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(dataList);
 
         return RT.fileStream(bot.toByteArray(), "teacher-overtime" + ExcelTypeEnum.XLSX.getValue());
     }
@@ -254,18 +309,6 @@ public class LedgerStatisticsController {
     @ApiOperation(value="教师听课统计(分页)")
     @SaCheckPermission("ledgerstatistics:detail")
     public RT<PageOutput<LedgerStatisticsListenVo>> teacherListenPage(@Valid LedgerStatisticsPageDto dto){
-        IPage<LedgerStatisticsListenVo> userPage = userService.selectJoinListPage(ConventPage.getPage(dto), LedgerStatisticsListenVo.class,
-                new MPJLambdaWrapper<User>()
-                        .disableSubLogicDel()
-                        .select(User::getId)
-                        .select(User.class, x -> VoToColumnUtil.fieldsToColumns(UserPageVo.class).contains(x.getProperty()))
-                        .select(" (SELECT GROUP_CONCAT(t1.name) FROM xjr_department t1" +
-                                " INNER JOIN xjr_user_dept_relation t2 ON t1.id = t2.dept_id" +
-                                " WHERE t1.delete_mark = 0 AND t2.user_id = t.id) as dept_name")
-                        .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
-                        .like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
-                        .orderByAsc(User::getId)
-        );
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 
         String sql = "SELECT t1.user_id,count(t1.course_name) as course_count FROM wf_teacher_listen t1" +
@@ -278,9 +321,29 @@ public class LedgerStatisticsController {
         }
         sql += " GROUP BY t1.user_id";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
-        Map<Long, String> userLeaveMap = list.stream().collect(
+        Map<Long, String> userLeaveMap = list.stream().filter(x -> x.get("user_id") != null && x.get("course_count") != null).collect(
                 Collectors.toMap(x -> Long.parseLong(x.get("user_id").toString()), x -> x.get("course_count").toString())
         );
+
+        List<Long> userIds = new ArrayList<>(userLeaveMap.keySet());
+        if(userIds.isEmpty()){
+            return RT.ok(new PageOutput<>());
+        }
+
+        IPage<LedgerStatisticsListenVo> userPage = userService.selectJoinListPage(ConventPage.getPage(dto), LedgerStatisticsListenVo.class,
+                new MPJLambdaWrapper<User>()
+                        .disableSubLogicDel()
+                        .select(User::getId)
+                        .select(User.class, x -> VoToColumnUtil.fieldsToColumns(UserPageVo.class).contains(x.getProperty()))
+                        .select(" (SELECT GROUP_CONCAT(t1.name) FROM xjr_department t1" +
+                                " INNER JOIN xjr_user_dept_relation t2 ON t1.id = t2.dept_id" +
+                                " WHERE t1.delete_mark = 0 AND t2.user_id = t.id) as dept_name")
+                        .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
+                        .like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
+                        .in(User::getId, userIds)
+                        .orderByAsc(User::getId)
+        );
+
         for (LedgerStatisticsListenVo record : userPage.getRecords()) {
             if(!userLeaveMap.containsKey(record.getId())){
                 continue;
@@ -324,9 +387,23 @@ public class LedgerStatisticsController {
         }
         sql += " GROUP BY t1.user_id";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
-        Map<Long, String> userLeaveMap = list.stream().collect(
+        Map<Long, String> userLeaveMap = list.stream().filter(x -> x.get("user_id") != null && x.get("course_count") != null).collect(
                 Collectors.toMap(x -> Long.parseLong(x.get("user_id").toString()), x -> x.get("course_count").toString())
         );
+
+        List<Long> userIds = new ArrayList<>(userLeaveMap.keySet());
+        if(userIds.isEmpty()){
+            List<LedgerStatisticsListenExcelVo> dataList = new ArrayList<>();
+            ByteArrayOutputStream bot = new ByteArrayOutputStream();
+            EasyExcel.write(bot, LedgerStatisticsListenExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(dataList);
+
+            return RT.fileStream(bot.toByteArray(), "teacher-leave" + ExcelTypeEnum.XLSX.getValue());
+        }
+
+        List<LedgerStatisticsListenExcelVo> dataList = new ArrayList<>();
+
+        int sortCode = 1;
+
         for (LedgerStatisticsListenVo record : userPage) {
             if(!userLeaveMap.containsKey(record.getId())){
                 continue;
@@ -336,10 +413,15 @@ public class LedgerStatisticsController {
             DecimalFormat df = new DecimalFormat(isInteger ? "0" : "#.##");
             String formattedValue = df.format(value);
             record.setCourseCount(formattedValue);
+
+            LedgerStatisticsListenExcelVo bean = BeanUtil.toBean(record, LedgerStatisticsListenExcelVo.class);
+            bean.setSortCode(sortCode);
+            dataList.add(bean);
+            sortCode ++;
         }
 
         ByteArrayOutputStream bot = new ByteArrayOutputStream();
-        EasyExcel.write(bot, LedgerStatisticsListenVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
+        EasyExcel.write(bot, LedgerStatisticsListenExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(dataList);
 
         return RT.fileStream(bot.toByteArray(), "teacher-listen" + ExcelTypeEnum.XLSX.getValue());
     }

+ 37 - 0
src/main/java/com/xjrsoft/module/ledger/vo/LedgerStatisticsLeaveExcelVo.java

@@ -0,0 +1,37 @@
+package com.xjrsoft.module.ledger.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+* @title: 台账配置表分页查询入参
+* @Author dzx
+* @Date: 2024-03-06
+* @Version 1.0
+*/
+@Data
+public class LedgerStatisticsLeaveExcelVo{
+
+    @ExcelProperty("序号")
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+
+    @ExcelProperty("请假人")
+    @ApiModelProperty("请假人")
+    private String name;
+
+    @ExcelProperty("工号")
+    @ApiModelProperty("工号")
+    private String userName;
+
+    @ExcelProperty("所属部门")
+    @ApiModelProperty("所属部门")
+    private String deptName;
+
+    @ExcelProperty("请假天数")
+    @ApiModelProperty("请假天数")
+    private String leaveDays;
+
+}

+ 37 - 0
src/main/java/com/xjrsoft/module/ledger/vo/LedgerStatisticsListenExcelVo.java

@@ -0,0 +1,37 @@
+package com.xjrsoft.module.ledger.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+* @title: 台账配置表分页查询入参
+* @Author dzx
+* @Date: 2024-03-06
+* @Version 1.0
+*/
+@Data
+public class LedgerStatisticsListenExcelVo extends LedgerStatisticsPageVo{
+
+    @ExcelProperty("序号")
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+
+    @ExcelProperty("请假人")
+    @ApiModelProperty("请假人")
+    private String name;
+
+    @ExcelProperty("工号")
+    @ApiModelProperty("工号")
+    private String userName;
+
+    @ExcelProperty("所属部门")
+    @ApiModelProperty("所属部门")
+    private String deptName;
+
+    @ExcelProperty("听课次数")
+    @ApiModelProperty("听课次数")
+    private String courseCount;
+
+}

+ 37 - 0
src/main/java/com/xjrsoft/module/ledger/vo/LedgerStatisticsOvertimeExcelVo.java

@@ -0,0 +1,37 @@
+package com.xjrsoft.module.ledger.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+* @title: 台账配置表分页查询入参
+* @Author dzx
+* @Date: 2024-03-06
+* @Version 1.0
+*/
+@Data
+public class LedgerStatisticsOvertimeExcelVo{
+
+    @ExcelProperty("序号")
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+
+    @ExcelProperty("请假人")
+    @ApiModelProperty("请假人")
+    private String name;
+
+    @ExcelProperty("工号")
+    @ApiModelProperty("工号")
+    private String userName;
+
+    @ExcelProperty("所属部门")
+    @ApiModelProperty("所属部门")
+    private String deptName;
+
+    @ExcelProperty("加班天数")
+    @ApiModelProperty("加班天数")
+    private String totalDays;
+
+}

+ 8 - 1
src/main/java/com/xjrsoft/module/schedule/controller/ScheduleController.java

@@ -55,6 +55,7 @@ import javax.validation.Valid;
 import java.io.ByteArrayOutputStream;
 import java.time.DayOfWeek;
 import java.time.Duration;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
@@ -162,7 +163,13 @@ public class ScheduleController {
     @ApiOperation(value="获取当前周次")
     @SaCheckPermission("schedule:detail")
     public RT<Integer> currentWeek(CourseTableDto dto){
-        List<BaseSemester> semesterList = semesterService.list(new QueryWrapper<BaseSemester>().lambda().orderByDesc(BaseSemester::getStartDate));
+        List<BaseSemester> semesterList = semesterService.list(
+                new QueryWrapper<BaseSemester>().lambda()
+                        .eq(BaseSemester::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .le(BaseSemester::getEndDate, LocalDate.now())
+                        .ge(BaseSemester::getStartDate, LocalDate.now())
+                        .orderByDesc(BaseSemester::getStartDate)
+        );
         BaseSemester baseSemester = semesterList.get(0);
         LocalDateTime now = LocalDateTime.now();
         if(dto.getScheduleDate() != null){

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

@@ -3,7 +3,6 @@ package com.xjrsoft.module.schedule.util;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.db.Entity;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
@@ -16,8 +15,6 @@ import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.base.entity.BaseLabel;
 import com.xjrsoft.module.base.entity.BaseSemester;
 import com.xjrsoft.module.organization.entity.Department;
-import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
-import com.xjrsoft.module.schedule.service.IWfCourseAdjustService;
 import com.xjrsoft.module.schedule.vo.StudentJianyuekbVo;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import lombok.extern.slf4j.Slf4j;
@@ -622,7 +619,8 @@ public class DataUtil {
     }
 
     public void insertCourseTableEntiy(JsonArray data, Map<String, String> classroomMap, Map<String, String> coureseMap,
-                                  Map<String, String> semesterMap, Map<String, String> teacherMap, Map<String, String> classMap) {
+                                  Map<String, String> semesterMap, Map<String, String> teacherMap, Map<String, String> classMap
+            , Long courseReceiveMsgId) {
 
         String sql = "SELECT CONCAT(schedule_date,class_id,time_number) AS only_key,id FROM course_table";
         List<Map<String, Object>> oldDataList = SqlRunnerAdapter.db().selectList(sql);
@@ -715,6 +713,7 @@ public class DataUtil {
             entity.set("schedule_date", scheduleDate);
             entity.set("jianyue_id", asJsonObject.get("id").getAsString());
             entity.set("key_info", keyInfo);
+            entity.set("course_receive_msg_id", courseReceiveMsgId);
             entityList.add(entity);
         }
         if(!entityList.isEmpty()){

+ 1 - 1
src/test/java/com/xjrsoft/module/job/JianyuekbScheduleTaskTest.java

@@ -167,7 +167,7 @@ class JianyuekbScheduleTaskTest {
         tableName = "base_classroom";
         Map<String, String> classroomMap = dataMap.get(tableName);
 
-        dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap);
+        dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, null);
         dataUtil.insertClassTime(scheduleInfo);
     }
 

+ 1 - 1
src/test/java/com/xjrsoft/module/job/JianyuekbScheduleTaskTest2.java

@@ -266,7 +266,7 @@ class JianyuekbScheduleTaskTest2 {
         tableName = "base_classroom";
         Map<String, String> classroomMap = dataMap.get(tableName);
 
-        dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap);
+        dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, null);
         dataUtil.insertClassTime(scheduleInfo);
     }