瀏覽代碼

课表课时统计

dzx 1 年之前
父節點
當前提交
24f90d6f62

+ 21 - 0
src/main/java/com/xjrsoft/module/classtime/controller/CourseClassTimeStatisticsController.java

@@ -15,6 +15,7 @@ import com.xjrsoft.module.classtime.dto.AddClassTimeStatisticsDto;
 import com.xjrsoft.module.classtime.dto.ClassTimeStatisticsPageDto;
 import com.xjrsoft.module.classtime.dto.RefreshStatisticsDto;
 import com.xjrsoft.module.classtime.dto.UpdateClassTimeStatisticsDto;
+import com.xjrsoft.module.classtime.dto.UpdateOverworkloadNumberDto;
 import com.xjrsoft.module.classtime.entity.ClassTimeStatistics;
 import com.xjrsoft.module.classtime.entity.ClassTimeStatisticsSet;
 import com.xjrsoft.module.classtime.service.IClassTimeStatisticsService;
@@ -33,8 +34,10 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
+import java.io.IOException;
 import java.time.LocalDate;
 import java.util.Date;
 import java.util.List;
@@ -135,6 +138,16 @@ public class CourseClassTimeStatisticsController {
         return RT.ok(true);
     }
 
+    @PostMapping(value = "/over-workload-number")
+    @ApiOperation(value="修改超工作量基数")
+    @SaCheckPermission("classtimestatistics:detail")
+    public RT<Boolean> updateOverWorkloadNumber(@Valid @RequestBody UpdateOverworkloadNumberDto dto){
+        ClassTimeStatistics statistics = classTimeStatisticsService.getById(dto.getId());
+        statistics.setOverWorkloadNumber(dto.getOverWorkloadNumber());
+        classTimeStatisticsService.updateById(statistics);
+        return RT.ok(true);
+    }
+
 
     @GetMapping(value = "/last-date")
     @ApiOperation(value="查询最新统计的结束日期")
@@ -188,4 +201,12 @@ public class CourseClassTimeStatisticsController {
         return RT.ok(recordList);
     }
 
+
+    @PostMapping("/import")
+    @ApiOperation(value = "导入")
+    @SaCheckPermission("classtimestatistics:detail")
+    public RT<Boolean> importData(@RequestParam MultipartFile file) throws IOException {
+        return null;
+    }
+
 }

+ 25 - 0
src/main/java/com/xjrsoft/module/classtime/dto/UpdateOverworkloadNumberDto.java

@@ -0,0 +1,25 @@
+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 UpdateOverworkloadNumberDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("id")
+    private Long id;
+
+    @ApiModelProperty("超工作量基数")
+    private Double overWorkloadNumber;
+}

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

@@ -62,12 +62,9 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.OptionalDouble;
-import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 
@@ -812,8 +809,6 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
                 record.setEmployType(teacher.getEmployType());
                 record.setClassTime1(statistics.getWeeks());
 
-                Double allClassTime = 0D;
-
                 //早自习、正课、晚辅、顶课、调课
                 Double classTime7 = 0D,classTime8 = 0D,classTime9 = 0D;
 
@@ -861,17 +856,28 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
             }
 
             if(!insertList.isEmpty()){
+                Double overWorkloadNumber = statistics.getOverWorkloadNumber() == null ? 0D : statistics.getOverWorkloadNumber();
+                Double time14 = weightFieldMap.get("time14");//工作量得分
                 if(statistics.getOverWorkloadNumberStatus() != 1){
                     //取出最大总平均课时
                     Double maxClassTime4 = insertList.stream().mapToDouble(ClassTimeStatisticsRecord::getClassTime4).max().getAsDouble();
                     //计算超工作量基数
-                    Double time14 = weightFieldMap.get("time14");//工作量得分
-                    Double time13 = weightFieldMap.get("time13");//超工作量得分
+                    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();
+                    }
                 }
+                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){
+                        double classTime6 = BigDecimal.valueOf(record.getClassTime4())
+                                .subtract(BigDecimal.valueOf(time14))
+                                .multiply(BigDecimal.valueOf(overWorkloadNumber)).doubleValue();
+                        record.setClassTime6(classTime6);
+                    }
                     recordMapper.insert(record);
                 }
             }

+ 6 - 0
src/main/java/com/xjrsoft/module/classtime/vo/ClassTimeStatisticsVo.java

@@ -78,4 +78,10 @@ public class ClassTimeStatisticsVo {
 
     @ApiModelProperty("总周次")
     private Integer weeks;
+
+    @ApiModelProperty("超工作量基数状态(1:锁定 0:解锁)")
+    private Integer overWorkloadNumberStatus;
+
+    @ApiModelProperty("超工作量基数")
+    private Double overWorkloadNumber;
 }