dzx преди 1 година
родител
ревизия
6ac2c1ba89

+ 24 - 0
src/main/java/com/xjrsoft/module/classtime/controller/ClassTimeStatisticsController.java

@@ -1,12 +1,14 @@
 package com.xjrsoft.module.classtime.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.excel.support.ExcelTypeEnum;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.model.result.RT;
@@ -241,4 +243,26 @@ public class ClassTimeStatisticsController {
         return RT.fileStream(bytes, fileName);
     }
 
+
+    @GetMapping(value = "/teacher-record-page")
+    @ApiOperation(value="课时统计教师详情列表")
+    @SaCheckPermission("classtimestatistics:detail")
+    public RT<PageOutput<ClassTimeStatisticsPageVo>> teacherRecordPage(@Valid ClassTimeStatisticsPageDto dto){
+
+        MPJLambdaWrapper<ClassTimeStatistics> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper
+                .select(ClassTimeStatisticsRecord::getId)
+                .select(ClassTimeStatistics.class,x -> VoToColumnUtil.fieldsToColumns(ClassTimeStatisticsPageVo.class).contains(x.getProperty()))
+                .innerJoin(ClassTimeStatisticsRecord.class, ClassTimeStatisticsRecord::getClassTimeStatisticsId, ClassTimeStatistics::getId)
+                .eq(dto.getYear() != null, ClassTimeStatistics::getYear, dto.getYear())
+                .eq(dto.getMonth() != null, ClassTimeStatistics::getMonth, dto.getMonth())
+                .eq(ClassTimeStatistics::getCategory, 1)
+                .eq(ClassTimeStatisticsRecord::getUserId, StpUtil.getLoginIdAsLong())
+                .orderByDesc(ClassTimeStatistics::getId)
+        ;
+        IPage<ClassTimeStatistics> page = classTimeStatisticsService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<ClassTimeStatisticsPageVo> pageOutput = ConventPage.getPageOutput(page, ClassTimeStatisticsPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
 }

+ 7 - 3
src/main/java/com/xjrsoft/module/classtime/service/impl/ClassTimeStatisticsServiceImpl.java

@@ -871,23 +871,26 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
             if(!insertList.isEmpty()){
                 Double overWorkloadNumber = statistics.getOverWorkloadNumber() == null ? 0D : statistics.getOverWorkloadNumber();
                 Double time14 = weightFieldMap.get("time14");//工作量得分
+                Double time13 = weightFieldMap.get("time13");//超工作量得分
                 if(statistics.getOverWorkloadNumberStatus() != 1){
                     //取出最大总平均课时
                     Double maxClassTime4 = insertList.stream().mapToDouble(ClassTimeStatisticsRecord::getClassTime4).max().getAsDouble();
                     //计算超工作量基数
                     if(!maxClassTime4.equals(time14)){
-                        Double time13 = weightFieldMap.get("time13");//超工作量得分
+
                         overWorkloadNumber = BigDecimal.valueOf(time13).divide((BigDecimal.valueOf(maxClassTime4).subtract(BigDecimal.valueOf(time14))),2, RoundingMode.HALF_UP).doubleValue();
                     }
                 }
+                double allClassTime = insertList.stream().filter(x -> x.getAllClassTime() != null).mapToDouble(ClassTimeStatisticsRecord::getAllClassTime).sum();
+                statistics.setAllClassTime(allClassTime);
                 statistics.setOverWorkloadNumber(overWorkloadNumber);
                 //先删除
                 String sql = "delete from class_time_statistics_record where class_time_statistics_id = " + statistics.getId();
                 SqlRunnerAdapter.db().delete(sql);
                 for (ClassTimeStatisticsRecord record : insertList) {
-                    if(overWorkloadNumber != 0D){
+                    if(overWorkloadNumber != 0D && time13 < record.getClassTime4()){
                         double classTime6 = BigDecimal.valueOf(record.getClassTime4())
-                                .subtract(BigDecimal.valueOf(time14))
+                                .subtract(BigDecimal.valueOf(time13))
                                 .multiply(BigDecimal.valueOf(overWorkloadNumber)).doubleValue();
                         if(classTime6 > 0d){
                             record.setClassTime6(classTime6);
@@ -957,6 +960,7 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
         for (CourseClassTimeStatisticsRecordVo el : recordList) {
             ClassTimeStatisticsAdministrationExcelVo excelVo = BeanUtil.toBean(el, ClassTimeStatisticsAdministrationExcelVo.class);
             excelVo.setSortCode(sortCode);
+            list.add(excelVo);
             sortCode ++;
         }
         ByteArrayOutputStream bot = new ByteArrayOutputStream();

+ 3 - 0
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeStatisticsPageVo.java

@@ -95,4 +95,7 @@ public class ClassTimeStatisticsPageVo {
     @ApiModelProperty("状态(0:已解锁 1:已锁定)")
     private Integer status;
 
+    @ApiModelProperty("总周次")
+    private Integer weeks;
+
 }