Browse Source

课表课时统计

dzx 1 year ago
parent
commit
a94f0dc40f

+ 5 - 4
src/main/java/com/xjrsoft/module/classtime/controller/CourseClassTimeStatisticsController.java

@@ -14,6 +14,7 @@ import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.activity.dto.ChangeStatusDto;
 import com.xjrsoft.module.classtime.dto.AddClassTimeStatisticsDto;
 import com.xjrsoft.module.classtime.dto.ClassTimeStatisticsPageDto;
+import com.xjrsoft.module.classtime.dto.CourseRecordDto;
 import com.xjrsoft.module.classtime.dto.RefreshStatisticsDto;
 import com.xjrsoft.module.classtime.dto.UpdateClassTimeStatisticsDto;
 import com.xjrsoft.module.classtime.dto.UpdateOverworkloadNumberDto;
@@ -198,8 +199,8 @@ public class CourseClassTimeStatisticsController {
     @GetMapping(value = "/record-list")
     @ApiOperation(value="课程课时统计详情列表")
     @SaCheckPermission("classtimestatistics:detail")
-    public RT<List<CourseClassTimeStatisticsRecordVo>> recordPage(@Valid RefreshStatisticsDto dto){
-        List<CourseClassTimeStatisticsRecordVo> recordList = classTimeStatisticsService.getCourseRecordList(dto.getId());
+    public RT<List<CourseClassTimeStatisticsRecordVo>> recordPage(@Valid CourseRecordDto dto){
+        List<CourseClassTimeStatisticsRecordVo> recordList = classTimeStatisticsService.getCourseRecordList(dto);
         return RT.ok(recordList);
     }
 
@@ -216,8 +217,8 @@ public class CourseClassTimeStatisticsController {
     @ApiOperation(value = "导出")
     @SaCheckPermission("classtimestatistics:detail")
     public ResponseEntity<byte[]> exportData(@Valid @RequestBody RefreshStatisticsDto dto) throws IOException {
-        classTimeStatisticsService.exportAdministration(dto.getId());
-        return RT.fileStream(null, "classtimestatistics" + ExcelTypeEnum.XLSX.getValue());
+        byte[] bytes = classTimeStatisticsService.exportAdministration(dto.getId());
+        return RT.fileStream(bytes, "classtimestatistics" + ExcelTypeEnum.XLSX.getValue());
     }
 
 }

+ 28 - 0
src/main/java/com/xjrsoft/module/classtime/dto/CourseRecordDto.java

@@ -0,0 +1,28 @@
+package com.xjrsoft.module.classtime.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+* @title: 刷新课时
+* @Author dzx
+* @Date: 2024-09-26
+* @Version 1.0
+*/
+@Data
+public class CourseRecordDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("id")
+    private Long id;
+
+    @ApiModelProperty(value = "排序字段")
+    private String field;
+
+    @ApiModelProperty(value = "排序方式 asc  desc")
+    private String order;
+}

+ 2 - 1
src/main/java/com/xjrsoft/module/classtime/mapper/ClassTimeStatisticsMapper.java

@@ -2,6 +2,7 @@ package com.xjrsoft.module.classtime.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.classtime.dto.CourseRecordDto;
 import com.xjrsoft.module.classtime.entity.ClassTimeStatistics;
 import com.xjrsoft.module.classtime.vo.ClassTimeStatisticsRecordVo;
 import com.xjrsoft.module.classtime.vo.CourseClassTimeStatisticsRecordVo;
@@ -52,5 +53,5 @@ public interface ClassTimeStatisticsMapper extends MPJBaseMapper<ClassTimeStatis
      */
     List<CourseListVo> getHolidayReplaceCourseList(@Param("dto") ClassTimeStatistics dto);
 
-    List<CourseClassTimeStatisticsRecordVo> getCourseRecordList(@Param("id") Long id);
+    List<CourseClassTimeStatisticsRecordVo> getCourseRecordList(@Param("dto") CourseRecordDto dto);
 }

+ 2 - 1
src/main/java/com/xjrsoft/module/classtime/service/IClassTimeStatisticsService.java

@@ -2,6 +2,7 @@ package com.xjrsoft.module.classtime.service;
 
 import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.classtime.dto.AddClassTimeStatisticsDto;
+import com.xjrsoft.module.classtime.dto.CourseRecordDto;
 import com.xjrsoft.module.classtime.entity.ClassTimeStatistics;
 import com.xjrsoft.module.classtime.vo.ClassTimeStatisticsRecordVo;
 import com.xjrsoft.module.classtime.vo.CourseClassTimeStatisticsRecordVo;
@@ -70,7 +71,7 @@ public interface IClassTimeStatisticsService extends MPJBaseService<ClassTimeSta
 
     List<ClassTimeStatisticsRecordVo> getRecordList(@Param("id") Long id);
 
-    List<CourseClassTimeStatisticsRecordVo> getCourseRecordList(@Param("id") Long id);
+    List<CourseClassTimeStatisticsRecordVo> getCourseRecordList(@Param("dto") CourseRecordDto dto);
 
     /**
      * 导出明细

+ 16 - 10
src/main/java/com/xjrsoft/module/classtime/service/impl/ClassTimeStatisticsServiceImpl.java

@@ -3,6 +3,7 @@ package com.xjrsoft.module.classtime.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.base.MPJBaseServiceImpl;
@@ -20,6 +21,7 @@ import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.classtime.dto.AddClassTimeStatisticsDto;
+import com.xjrsoft.module.classtime.dto.CourseRecordDto;
 import com.xjrsoft.module.classtime.entity.ClassTimeDelete;
 import com.xjrsoft.module.classtime.entity.ClassTimeStatistics;
 import com.xjrsoft.module.classtime.entity.ClassTimeStatisticsAdministration;
@@ -31,6 +33,7 @@ import com.xjrsoft.module.classtime.mapper.ClassTimeStatisticsRecordMapper;
 import com.xjrsoft.module.classtime.service.IClassTimeDeleteService;
 import com.xjrsoft.module.classtime.service.IClassTimeStatisticsService;
 import com.xjrsoft.module.classtime.service.IClassTimeStatisticsSetService;
+import com.xjrsoft.module.classtime.vo.ClassTimeStatisticsAdministrationExcelVo;
 import com.xjrsoft.module.classtime.vo.ClassTimeStatisticsRecordVo;
 import com.xjrsoft.module.classtime.vo.CourseClassTimeStatisticsRecordVo;
 import com.xjrsoft.module.classtime.vo.CourseListVo;
@@ -60,7 +63,6 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.ByteArrayOutputStream;
-import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.DayOfWeek;
@@ -598,8 +600,8 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
     }
 
     @Override
-    public List<CourseClassTimeStatisticsRecordVo> getCourseRecordList(Long id) {
-        return this.baseMapper.getCourseRecordList(id);
+    public List<CourseClassTimeStatisticsRecordVo> getCourseRecordList(CourseRecordDto dto) {
+        return this.baseMapper.getCourseRecordList(dto);
     }
 
     /**
@@ -903,7 +905,7 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
     }
 
     @Override
-    public Boolean importAdministration(Long classTimeStatisticsId, MultipartFile file) throws IOException {
+    public Boolean importAdministration(Long classTimeStatisticsId, MultipartFile file){
         try {
             List<Map<Integer, Object>> excelDataList = EasyExcel.read(file.getInputStream()).sheet().headRowNumber(2).doReadSync();
             List<User> teacherList = userService.list(
@@ -943,8 +945,16 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
     }
 
     @Override
-    public byte[] exportAdministration(Long classTimeStatisticsId) throws IOException {
-        return new byte[0];
+    public byte[] exportAdministration(Long classTimeStatisticsId) {
+        CourseRecordDto dto = new CourseRecordDto() {{
+            setId(classTimeStatisticsId);
+        }};
+        List<CourseClassTimeStatisticsRecordVo> recordList = this.getCourseRecordList(dto);
+        List<ClassTimeStatisticsAdministrationExcelVo> list = BeanUtil.copyToList(recordList, ClassTimeStatisticsAdministrationExcelVo.class);
+        ByteArrayOutputStream bot = new ByteArrayOutputStream();
+        EasyExcel.write(bot, ClassTimeStatisticsAdministrationExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
+
+        return bot.toByteArray();
     }
 
     /**
@@ -1050,8 +1060,6 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
      * 生成第三行表头
      * 关于周的表头,周一日期到周二日期,第几周,最后拼接一个单独的月份
      *
-     * @param workbook
-     * @param sheet
      * @param month 月份
      * @param weekTimeRangeVos 周的数据,包含周一的日期周二的日期
      * @param lastIndex 前一个表头的单元格
@@ -1098,8 +1106,6 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
      * 生成第四行表头
      * 表头内容:总课时(含调顶课节)、顶课(节)、调课(节)、晚辅(节)、课时晚辅合计
      *
-     * @param workbook
-     * @param sheet
      * @param weekTimeRangeVos 周的数据,包含周一的日期周二的日期
      * @param lastIndex 前一个表头的单元格
      */

+ 69 - 0
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeStatisticsAdministrationExcelVo.java

@@ -0,0 +1,69 @@
+package com.xjrsoft.module.classtime.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 课时量统计-导出
+* @Author dzx
+* @Date: 2024年11月20日
+* @Version 1.0
+*/
+@Data
+public class ClassTimeStatisticsAdministrationExcelVo {
+
+
+    @ExcelProperty("序号")
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+
+    @ExcelProperty("工号")
+    @ApiModelProperty("工号")
+    private String userName;
+
+    @ExcelProperty("姓名")
+    @ApiModelProperty("姓名")
+    private String name;
+
+    @ExcelProperty("聘用类型")
+    @ApiModelProperty("聘用类型")
+    private String employTypeCn;
+
+    @ExcelProperty("正课课时")
+    @ApiModelProperty("正课课时")
+    private String classTime8;
+
+    @ExcelProperty("晚辅")
+    @ApiModelProperty("晚辅")
+    private String classTime9;
+
+    @ExcelProperty("总课时")
+    @ApiModelProperty("总课时")
+    private String allClassTime;
+
+    @ExcelProperty("总周次")
+    @ApiModelProperty("总周次")
+    private Integer classTime1;
+
+    @ExcelProperty("周平均课时")
+    @ApiModelProperty("周平均课时")
+    private String classTime2;
+
+    @ExcelProperty("行政工作量")
+    @ApiModelProperty("行政工作量")
+    private String classTime3;
+
+    @ExcelProperty("总平均课时")
+    @ApiModelProperty("总平均课时")
+    private String classTime4;
+
+    @ExcelProperty("工作量得分")
+    @ApiModelProperty("工作量得分")
+    private String classTime5;
+
+    @ExcelProperty("超工作量得分")
+    @ApiModelProperty("超工作量得分")
+    private String classTime6;
+
+}

+ 13 - 0
src/main/resources/mapper/classtime/ClassTimeStatisticsMapper.xml

@@ -87,5 +87,18 @@
         INNER JOIN xjr_user t2 ON t1.user_id = t2.id
         LEFT JOIN xjr_dictionary_detail t3 ON t1.employ_type = t3.code
         WHERE t1.delete_mark = 0 AND t1.class_time_statistics_id = #{id}
+        <if test="dto.order != null">
+            <if test="dto.order == 'ascend'">
+                <if test="dto.field != null and dto.field == 'classTime4'">
+                    order by t1.class_time4 asc
+                </if>
+
+            </if>
+            <if test="dto.order == 'descend'">
+                <if test="dto.field != null and dto.field == 'classTime4'">
+                    order by t1.class_time4 desc
+                </if>
+            </if>
+        </if>
     </select>
 </mapper>