wangliang 1 anno fa
parent
commit
7ef9fb66f0

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ObeRequirementDto.java

@@ -20,7 +20,7 @@ import java.util.stream.Collectors;
 public class ObeRequirementDto extends MatrixRequirementDto implements Serializable {
 
     @ApiModelProperty(value = "毕业指标达成值")
-    private BigDecimal matrixDegree = new BigDecimal(0);
+    private BigDecimal matrixDegree;
 
     @ApiModelProperty(value = "毕业指标点集合")
     private List<ObeSubRequirementsDto> obeSubRequirements;

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ObeSubRequirementsDto.java

@@ -27,7 +27,7 @@ public class ObeSubRequirementsDto extends CourseTargetWebDto {
     private String name;
 
     @ApiModelProperty(value = "权重")
-    private BigDecimal scale = new BigDecimal(0);
+    private BigDecimal scale;
 
     @ApiModelProperty(value = "描述")
     private String content;
@@ -37,7 +37,7 @@ public class ObeSubRequirementsDto extends CourseTargetWebDto {
     private Long subRequirementId;
 
     @ApiModelProperty(value = "毕业指标点达成值")
-    private BigDecimal matrixDegree = new BigDecimal(0);
+    private BigDecimal matrixDegree;
 
     public ObeSubRequirementsDto() {
 

+ 21 - 13
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCourseRequirementReportServiceImpl.java

@@ -92,8 +92,11 @@ public class ObeCourseRequirementReportServiceImpl extends ServiceImpl<ObeCourse
                         List<ObeSubRequirementsDto> obeSubRequirementsDtoList = obeRequirementDto.getObeSubRequirements();
                         for (ObeSubRequirementsDto obeSubRequirementsDto : obeSubRequirementsDtoList) {
                             if (obeSubRequirementsDto.getSubRequirementId().longValue() == k.longValue()) {
-                                Double degree = v.stream().mapToDouble(x -> x.getMatrixDegree().doubleValue()).sum();
-                                obeSubRequirementsDto.setMatrixDegree(new BigDecimal(degree).setScale(2, BigDecimal.ROUND_HALF_UP));
+                                List<Double> obeMatrixDegreeList = v.stream().filter(x -> Objects.nonNull(x.getMatrixDegree())).map(x -> x.getMatrixDegree().doubleValue()).collect(Collectors.toList());
+                                Optional<Double> degree = obeMatrixDegreeList.stream().reduce(Double::sum);
+                                if (degree.isPresent()) {
+                                    obeSubRequirementsDto.setMatrixDegree(new BigDecimal(degree.get()).setScale(2, BigDecimal.ROUND_HALF_UP));
+                                }
                             }
                         }
                     }
@@ -215,10 +218,12 @@ public class ObeCourseRequirementReportServiceImpl extends ServiceImpl<ObeCourse
                         //计算各个课程的指标点达成值
                         if (!CollectionUtils.isEmpty(matrixSubRequirementIdMap)) {
                             for (Map.Entry<Long, List<ObeSubRequirementsDto>> entry : matrixSubRequirementIdMap.entrySet()) {
-                                Double evaluationValue = entry.getValue().stream().mapToDouble(x -> Objects.nonNull(x.getEvaluationValue()) ? x.getEvaluationValue().doubleValue() : 0.0d).average().orElse(0.0d);
-                                ObeSubRequirementsDto obeSubRequirementsDto = entry.getValue().get(0);
-                                BigDecimal bigDecimal = new BigDecimal(evaluationValue).multiply(obeSubRequirementsDto.getScale()).setScale(2, BigDecimal.ROUND_HALF_UP);
-                                entry.getValue().stream().peek(x -> x.setMatrixDegree(bigDecimal)).collect(Collectors.toList());
+                                OptionalDouble evaluationValue = entry.getValue().stream().mapToDouble(x -> Objects.nonNull(x.getEvaluationValue()) ? x.getEvaluationValue().doubleValue() : 0.0d).average();
+                                if (evaluationValue.isPresent()) {
+                                    ObeSubRequirementsDto obeSubRequirementsDto = entry.getValue().get(0);
+                                    BigDecimal bigDecimal = new BigDecimal(evaluationValue.getAsDouble()).multiply(obeSubRequirementsDto.getScale()).setScale(2, BigDecimal.ROUND_HALF_UP);
+                                    entry.getValue().stream().peek(x -> x.setMatrixDegree(bigDecimal)).collect(Collectors.toList());
+                                }
                             }
                         }
                         //计算各个课程的指标点达成值
@@ -284,16 +289,19 @@ public class ObeCourseRequirementReportServiceImpl extends ServiceImpl<ObeCourse
                 List<ObeSubRequirementsDto> obeSubRequirementsDtoList = obeRequirementDto.getObeSubRequirements();
                 for (ObeSubRequirementsDto obeSubRequirementsDto : obeSubRequirementsDtoList) {
                     if (obeSubRequirementsDtoMap.containsKey(obeSubRequirementsDto.getSubRequirementId())) {
-                        Double degree = obeSubRequirementsDtoMap.get(obeSubRequirementsDto.getSubRequirementId()).stream().mapToDouble(x -> x.getMatrixDegree().doubleValue()).sum();
-                        if (obeRequirementDto.getMatrixDegree().doubleValue() == 0) {
-                            obeRequirementDto.setMatrixDegree(new BigDecimal(degree).setScale(2, BigDecimal.ROUND_HALF_UP));
-                        } else if (degree.doubleValue() > 0 && degree.doubleValue() < obeRequirementDto.getMatrixDegree().doubleValue()) {
-                            obeRequirementDto.setMatrixDegree(new BigDecimal(degree).setScale(2, BigDecimal.ROUND_HALF_UP));
+                        List<Double> obeMatrixDegreeList = obeSubRequirementsDtoMap.get(obeSubRequirementsDto.getSubRequirementId()).stream().filter(x -> Objects.nonNull(x.getMatrixDegree())).map(x -> x.getMatrixDegree().doubleValue()).collect(Collectors.toList());
+                        Optional<Double> degree = obeMatrixDegreeList.stream().reduce(Double::sum);
+                        if (degree.isPresent() && (Objects.isNull(obeRequirementDto.getMatrixDegree()) || obeRequirementDto.getMatrixDegree().doubleValue() == 0)) {
+                            obeRequirementDto.setMatrixDegree(new BigDecimal(degree.get()).setScale(2, BigDecimal.ROUND_HALF_UP));
+                        } else if (degree.isPresent() && degree.get().doubleValue() > 0 && Objects.nonNull(obeRequirementDto.getMatrixDegree()) && degree.get().doubleValue() < obeRequirementDto.getMatrixDegree().doubleValue()) {
+                            obeRequirementDto.setMatrixDegree(new BigDecimal(degree.get()).setScale(2, BigDecimal.ROUND_HALF_UP));
                         }
                     }
                 }
-                Double degree = obeRequirementDtoList.stream().filter(x -> x.getMatrixDegree().doubleValue() > 0).mapToDouble(x -> x.getMatrixDegree().doubleValue()).min().orElse(0.0d);
-                o.setMatrixDegree(new BigDecimal(degree).setScale(2, BigDecimal.ROUND_HALF_UP));
+                OptionalDouble degree = obeRequirementDtoList.stream().filter(x -> Objects.nonNull(x.getMatrixDegree()) && x.getMatrixDegree().doubleValue() > 0).mapToDouble(x -> x.getMatrixDegree().doubleValue()).min();
+                if (degree.isPresent()) {
+                    o.setMatrixDegree(new BigDecimal(degree.getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP));
+                }
             }
         }
         return obeCourseRequirementDtoList;