Jelajahi Sumber

管乐迷需求迭代

zouxuan 2 tahun lalu
induk
melakukan
843f933881

+ 77 - 75
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CloudStudyStudentDataDto.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 
+import java.math.BigDecimal;
+
 /**
  * @Author Joburgess
  * @Date 2021/8/16 0016
@@ -14,23 +16,23 @@ public class CloudStudyStudentDataDto {
     private String organName;
 
     @ApiModelProperty("在读学员总数")
-    private int totalStudentNum;
+    private BigDecimal totalStudentNum = BigDecimal.ZERO;
     
     @ApiModelProperty("有效学员总数")
-    private int effectiveStudentNum; 
+    private BigDecimal effectiveStudentNum = BigDecimal.ZERO;
 
     @ApiModelProperty("付费会员数")
-    private int vipStudentNum;
+    private BigDecimal vipStudentNum = BigDecimal.ZERO;
     
-	private int effectiveVipStudentNum;
+	private BigDecimal effectiveVipStudentNum = BigDecimal.ZERO;
 	
-	private int waitActivateVipStudentNum;
+	private BigDecimal waitActivateVipStudentNum = BigDecimal.ZERO;
 
     @ApiModelProperty("试用会员数")
-    private int eVipStudentNum;
+    private BigDecimal eVipStudentNum = BigDecimal.ZERO;
 
     @ApiModelProperty("付费会员占比")
-    private double vipStudentRate;
+    private BigDecimal vipStudentRate = BigDecimal.ZERO;
 
     @ApiModelProperty("云教练使用人数")
     private int cloudStudyUseStudentNum;
@@ -39,46 +41,22 @@ public class CloudStudyStudentDataDto {
     private int cloudStudyTodayUseStudentNum;
 
     @ApiModelProperty("云教练使用人数占比")
-    private float cloudStudyUseStudentDuty;
+    private BigDecimal cloudStudyUseStudentDuty = BigDecimal.ZERO;
 
     @ApiModelProperty("活跃人数")
-    private int cloudStudyLivelyStudentNum;
+    private BigDecimal cloudStudyLivelyStudentNum = BigDecimal.ZERO;
 
     @ApiModelProperty("云教练新增人数")
-    private int newCloudStudyStudentNum;
+    private BigDecimal newCloudStudyStudentNum = BigDecimal.ZERO;
 
     @ApiModelProperty("重复购买云教练的用户")
-    private int againBuyNum;
+    private BigDecimal againBuyNum = BigDecimal.ZERO;
 
     //重复购买率
-    private double againBuyRate;
+    private BigDecimal againBuyRate = BigDecimal.ZERO;
 
     //购买率
-    private double buyRate;
-
-    public double getAgainBuyRate() {
-        return againBuyRate;
-    }
-
-    public void setAgainBuyRate(double againBuyRate) {
-        this.againBuyRate = againBuyRate;
-    }
-
-    public double getBuyRate() {
-        return buyRate;
-    }
-
-    public void setBuyRate(double buyRate) {
-        this.buyRate = buyRate;
-    }
-
-    public int getAgainBuyNum() {
-        return againBuyNum;
-    }
-
-    public void setAgainBuyNum(int againBuyNum) {
-        this.againBuyNum = againBuyNum;
-    }
+    private BigDecimal buyRate = BigDecimal.ZERO;
 
     public Integer getOrganId() {
         return organId;
@@ -96,35 +74,59 @@ public class CloudStudyStudentDataDto {
         this.organName = organName;
     }
 
-    public int getTotalStudentNum() {
+    public BigDecimal getTotalStudentNum() {
         return totalStudentNum;
     }
 
-    public void setTotalStudentNum(int totalStudentNum) {
+    public void setTotalStudentNum(BigDecimal totalStudentNum) {
         this.totalStudentNum = totalStudentNum;
     }
 
-    public int getVipStudentNum() {
+    public BigDecimal getEffectiveStudentNum() {
+        return effectiveStudentNum;
+    }
+
+    public void setEffectiveStudentNum(BigDecimal effectiveStudentNum) {
+        this.effectiveStudentNum = effectiveStudentNum;
+    }
+
+    public BigDecimal getVipStudentNum() {
         return vipStudentNum;
     }
 
-    public void setVipStudentNum(int vipStudentNum) {
+    public void setVipStudentNum(BigDecimal vipStudentNum) {
         this.vipStudentNum = vipStudentNum;
     }
 
-    public int geteVipStudentNum() {
+    public BigDecimal getEffectiveVipStudentNum() {
+        return effectiveVipStudentNum;
+    }
+
+    public void setEffectiveVipStudentNum(BigDecimal effectiveVipStudentNum) {
+        this.effectiveVipStudentNum = effectiveVipStudentNum;
+    }
+
+    public BigDecimal getWaitActivateVipStudentNum() {
+        return waitActivateVipStudentNum;
+    }
+
+    public void setWaitActivateVipStudentNum(BigDecimal waitActivateVipStudentNum) {
+        this.waitActivateVipStudentNum = waitActivateVipStudentNum;
+    }
+
+    public BigDecimal geteVipStudentNum() {
         return eVipStudentNum;
     }
 
-    public void seteVipStudentNum(int eVipStudentNum) {
+    public void seteVipStudentNum(BigDecimal eVipStudentNum) {
         this.eVipStudentNum = eVipStudentNum;
     }
 
-    public double getVipStudentRate() {
+    public BigDecimal getVipStudentRate() {
         return vipStudentRate;
     }
 
-    public void setVipStudentRate(double vipStudentRate) {
+    public void setVipStudentRate(BigDecimal vipStudentRate) {
         this.vipStudentRate = vipStudentRate;
     }
 
@@ -136,14 +138,6 @@ public class CloudStudyStudentDataDto {
         this.cloudStudyUseStudentNum = cloudStudyUseStudentNum;
     }
 
-    public float getCloudStudyUseStudentDuty() {
-        return cloudStudyUseStudentDuty;
-    }
-
-    public void setCloudStudyUseStudentDuty(float cloudStudyUseStudentDuty) {
-        this.cloudStudyUseStudentDuty = cloudStudyUseStudentDuty;
-    }
-
     public int getCloudStudyTodayUseStudentNum() {
         return cloudStudyTodayUseStudentNum;
     }
@@ -152,43 +146,51 @@ public class CloudStudyStudentDataDto {
         this.cloudStudyTodayUseStudentNum = cloudStudyTodayUseStudentNum;
     }
 
-    public int getCloudStudyLivelyStudentNum() {
+    public BigDecimal getCloudStudyUseStudentDuty() {
+        return cloudStudyUseStudentDuty;
+    }
+
+    public void setCloudStudyUseStudentDuty(BigDecimal cloudStudyUseStudentDuty) {
+        this.cloudStudyUseStudentDuty = cloudStudyUseStudentDuty;
+    }
+
+    public BigDecimal getCloudStudyLivelyStudentNum() {
         return cloudStudyLivelyStudentNum;
     }
 
-    public void setCloudStudyLivelyStudentNum(int cloudStudyLivelyStudentNum) {
+    public void setCloudStudyLivelyStudentNum(BigDecimal cloudStudyLivelyStudentNum) {
         this.cloudStudyLivelyStudentNum = cloudStudyLivelyStudentNum;
     }
 
-    public int getNewCloudStudyStudentNum() {
+    public BigDecimal getNewCloudStudyStudentNum() {
         return newCloudStudyStudentNum;
     }
 
-    public void setNewCloudStudyStudentNum(int newCloudStudyStudentNum) {
+    public void setNewCloudStudyStudentNum(BigDecimal newCloudStudyStudentNum) {
         this.newCloudStudyStudentNum = newCloudStudyStudentNum;
     }
 
-	public int getEffectiveVipStudentNum() {
-		return effectiveVipStudentNum;
-	}
+    public BigDecimal getAgainBuyNum() {
+        return againBuyNum;
+    }
 
-	public void setEffectiveVipStudentNum(int effectiveVipStudentNum) {
-		this.effectiveVipStudentNum = effectiveVipStudentNum;
-	}
+    public void setAgainBuyNum(BigDecimal againBuyNum) {
+        this.againBuyNum = againBuyNum;
+    }
 
-	public int getWaitActivateVipStudentNum() {
-		return waitActivateVipStudentNum;
-	}
+    public BigDecimal getAgainBuyRate() {
+        return againBuyRate;
+    }
 
-	public void setWaitActivateVipStudentNum(int waitActivateVipStudentNum) {
-		this.waitActivateVipStudentNum = waitActivateVipStudentNum;
-	}
+    public void setAgainBuyRate(BigDecimal againBuyRate) {
+        this.againBuyRate = againBuyRate;
+    }
 
-	public int getEffectiveStudentNum() {
-		return effectiveStudentNum;
-	}
+    public BigDecimal getBuyRate() {
+        return buyRate;
+    }
 
-	public void setEffectiveStudentNum(int effectiveStudentNum) {
-		this.effectiveStudentNum = effectiveStudentNum;
-	}
+    public void setBuyRate(BigDecimal buyRate) {
+        this.buyRate = buyRate;
+    }
 }

+ 50 - 48
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/IndexCloudStudySumDto.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 
+import java.math.BigDecimal;
+
 public class IndexCloudStudySumDto {
 
 	private Integer organId;
@@ -9,58 +11,34 @@ public class IndexCloudStudySumDto {
 	private String organName;
 
 	//在读学员数
-	private Integer totalStudentNum = 0;
+	private BigDecimal totalStudentNum = BigDecimal.ZERO;
 
 	//会员总数
-	private Integer vipStudentNum = 0;
+	private BigDecimal vipStudentNum = BigDecimal.ZERO;
 
 	//会员人数占比
-	private Double vipStudentRate = 0d;
+	private BigDecimal vipStudentRate = BigDecimal.ZERO;
 
 	//生效中的学员数
-	private Integer effectiveVipStudentNum = 0;
+	private BigDecimal effectiveVipStudentNum = BigDecimal.ZERO;
 
 	//待激活学员数
-	private Integer waitActivateVipStudentNum = 0;
+	private BigDecimal waitActivateVipStudentNum = BigDecimal.ZERO;
 
 	//活跃人数
-	private Integer activeStudentNum = 0;
+	private BigDecimal activeStudentNum = BigDecimal.ZERO;
 
 	//重复购买人数
-	private Integer againBuyNum = 0;
+	private BigDecimal againBuyNum = BigDecimal.ZERO;
 
 	//重复购买率
-	private Double againBuyRate = 0d;
+	private BigDecimal againBuyRate = BigDecimal.ZERO;
 
 	//购买率
-	private Double buyRate = 0d;
+	private BigDecimal buyRate = BigDecimal.ZERO;
 
 	@ApiModelProperty("云教练今日使用人数")
-	private Integer cloudStudyTodayUseStudentNum = 0;
-
-	public Integer getCloudStudyTodayUseStudentNum() {
-		return cloudStudyTodayUseStudentNum;
-	}
-
-	public void setCloudStudyTodayUseStudentNum(Integer cloudStudyTodayUseStudentNum) {
-		this.cloudStudyTodayUseStudentNum = cloudStudyTodayUseStudentNum;
-	}
-
-	public Double getAgainBuyRate() {
-		return againBuyRate;
-	}
-
-	public void setAgainBuyRate(double againBuyRate) {
-		this.againBuyRate = againBuyRate;
-	}
-
-	public Double getBuyRate() {
-		return buyRate;
-	}
-
-	public void setBuyRate(Double buyRate) {
-		this.buyRate = buyRate;
-	}
+	private BigDecimal cloudStudyTodayUseStudentNum = BigDecimal.ZERO;
 
 	public Integer getOrganId() {
 		return organId;
@@ -78,59 +56,83 @@ public class IndexCloudStudySumDto {
 		this.organName = organName;
 	}
 
-	public Integer getTotalStudentNum() {
+	public BigDecimal getTotalStudentNum() {
 		return totalStudentNum;
 	}
 
-	public void setTotalStudentNum(Integer totalStudentNum) {
+	public void setTotalStudentNum(BigDecimal totalStudentNum) {
 		this.totalStudentNum = totalStudentNum;
 	}
 
-	public Integer getVipStudentNum() {
+	public BigDecimal getVipStudentNum() {
 		return vipStudentNum;
 	}
 
-	public void setVipStudentNum(Integer vipStudentNum) {
+	public void setVipStudentNum(BigDecimal vipStudentNum) {
 		this.vipStudentNum = vipStudentNum;
 	}
 
-	public Double getVipStudentRate() {
+	public BigDecimal getVipStudentRate() {
 		return vipStudentRate;
 	}
 
-	public void setVipStudentRate(Double vipStudentRate) {
+	public void setVipStudentRate(BigDecimal vipStudentRate) {
 		this.vipStudentRate = vipStudentRate;
 	}
 
-	public Integer getEffectiveVipStudentNum() {
+	public BigDecimal getEffectiveVipStudentNum() {
 		return effectiveVipStudentNum;
 	}
 
-	public void setEffectiveVipStudentNum(Integer effectiveVipStudentNum) {
+	public void setEffectiveVipStudentNum(BigDecimal effectiveVipStudentNum) {
 		this.effectiveVipStudentNum = effectiveVipStudentNum;
 	}
 
-	public Integer getWaitActivateVipStudentNum() {
+	public BigDecimal getWaitActivateVipStudentNum() {
 		return waitActivateVipStudentNum;
 	}
 
-	public void setWaitActivateVipStudentNum(Integer waitActivateVipStudentNum) {
+	public void setWaitActivateVipStudentNum(BigDecimal waitActivateVipStudentNum) {
 		this.waitActivateVipStudentNum = waitActivateVipStudentNum;
 	}
 
-	public Integer getActiveStudentNum() {
+	public BigDecimal getActiveStudentNum() {
 		return activeStudentNum;
 	}
 
-	public void setActiveStudentNum(Integer activeStudentNum) {
+	public void setActiveStudentNum(BigDecimal activeStudentNum) {
 		this.activeStudentNum = activeStudentNum;
 	}
 
-	public Integer getAgainBuyNum() {
+	public BigDecimal getAgainBuyNum() {
 		return againBuyNum;
 	}
 
-	public void setAgainBuyNum(Integer againBuyNum) {
+	public void setAgainBuyNum(BigDecimal againBuyNum) {
 		this.againBuyNum = againBuyNum;
 	}
+
+	public BigDecimal getAgainBuyRate() {
+		return againBuyRate;
+	}
+
+	public void setAgainBuyRate(BigDecimal againBuyRate) {
+		this.againBuyRate = againBuyRate;
+	}
+
+	public BigDecimal getBuyRate() {
+		return buyRate;
+	}
+
+	public void setBuyRate(BigDecimal buyRate) {
+		this.buyRate = buyRate;
+	}
+
+	public BigDecimal getCloudStudyTodayUseStudentNum() {
+		return cloudStudyTodayUseStudentNum;
+	}
+
+	public void setCloudStudyTodayUseStudentNum(BigDecimal cloudStudyTodayUseStudentNum) {
+		this.cloudStudyTodayUseStudentNum = cloudStudyTodayUseStudentNum;
+	}
 }

+ 14 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -1203,9 +1203,9 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
                 continue;
             }
             BigDecimal normalNum = dto.getNormalNum();
-            dto.setAvgTrainTime(dto.getTrainTotalTime().divide(normalNum,2, BigDecimal.ROUND_DOWN));
-            dto.setTrainRate(dto.getTrainStudentNum().divide(normalNum,2, BigDecimal.ROUND_DOWN).multiply(decimal));
-            dto.setTrainStandRate(dto.getTrain0().divide(normalNum,2, BigDecimal.ROUND_DOWN).multiply(decimal));
+            dto.setAvgTrainTime(dto.getTrainTotalTime().divide(normalNum,2, 2));
+            dto.setTrainRate(dto.getTrainStudentNum().divide(normalNum,4, 2).multiply(decimal).setScale(2));
+            dto.setTrainStandRate(dto.getTrain0().divide(normalNum,4, 2).multiply(decimal).setScale(2));
         }
         return cloudTeacherSumDtos;
     }
@@ -1271,21 +1271,22 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         if(!CollectionUtils.isEmpty(studentNumMap)){
             todayStudyMap = MapUtil.convertIntegerMap(studentNumMap);
         }
+        BigDecimal bigDecimal = new BigDecimal(100);
         for (IndexCloudStudySumDto dto : list) {
             dto.setOrganName(organMap.get(dto.getOrganId()));
-            dto.setCloudStudyTodayUseStudentNum(todayStudyMap.get(dto.getOrganId()));
+            Integer integer1 = todayStudyMap.get(dto.getOrganId());
+            dto.setCloudStudyTodayUseStudentNum(integer1==null?BigDecimal.ZERO:new BigDecimal(integer1));
             Long aLong = waitMap.get(dto.getOrganId());
-            dto.setWaitActivateVipStudentNum(aLong==null?0:aLong.intValue());
+            dto.setWaitActivateVipStudentNum(aLong==null?BigDecimal.ZERO:new BigDecimal(aLong));
             Long aLong1 = againBuyMap.get(dto.getOrganId());
-            dto.setAgainBuyNum(aLong1==null?0:aLong1.intValue());
+            dto.setAgainBuyNum(aLong1==null?BigDecimal.ZERO:new BigDecimal(aLong1));
             Long integer = activeMap.get(dto.getOrganId());
-            dto.setActiveStudentNum(integer==null?0:integer.intValue());
-            dto.setVipStudentNum(dto.getEffectiveVipStudentNum() + dto.getWaitActivateVipStudentNum());
-            if(dto.getVipStudentNum() != 0){
-                double studentNum = (double)dto.getVipStudentNum();
-                dto.setBuyRate(studentNum / dto.getTotalStudentNum() * 100);
-                dto.setAgainBuyRate(dto.getAgainBuyNum() / studentNum * 100);
-                dto.setVipStudentRate(studentNum / dto.getTotalStudentNum() * 100d);
+            dto.setActiveStudentNum(integer==null?BigDecimal.ZERO:new BigDecimal(integer));
+            dto.setVipStudentNum(dto.getEffectiveVipStudentNum().add(dto.getWaitActivateVipStudentNum()));
+            if(dto.getVipStudentNum().compareTo(BigDecimal.ZERO) > 0){
+                dto.setBuyRate(dto.getVipStudentNum().divide(dto.getTotalStudentNum(),4,2).multiply(bigDecimal).setScale(2));
+                dto.setAgainBuyRate(dto.getAgainBuyNum().divide(dto.getVipStudentNum(),4,2).multiply(bigDecimal).setScale(2));
+                dto.setVipStudentRate(dto.getVipStudentNum().divide(dto.getTotalStudentNum(),4,2).multiply(bigDecimal).setScale(2));
             }
         }
         return list;

+ 12 - 12
mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -345,18 +346,17 @@ public class StudentManageController extends BaseController {
         Map<String,Object> result = new HashMap<String, Object>(2);
         result.put("list",list);
         CloudStudyStudentDataDto cloudStudyStudentDataDto = studentService.getCloudStudyStudentOverView(organIdsList);
-
-        cloudStudyStudentDataDto.setCloudStudyLivelyStudentNum(list.stream().collect(Collectors.summingInt(IndexCloudStudySumDto :: getActiveStudentNum)));
-        cloudStudyStudentDataDto.setTotalStudentNum(list.stream().collect(Collectors.summingInt(IndexCloudStudySumDto :: getTotalStudentNum)));
-        cloudStudyStudentDataDto.setEffectiveVipStudentNum(list.stream().collect(Collectors.summingInt(IndexCloudStudySumDto :: getEffectiveVipStudentNum)));
-        cloudStudyStudentDataDto.setWaitActivateVipStudentNum(list.stream().collect(Collectors.summingInt(IndexCloudStudySumDto :: getWaitActivateVipStudentNum)));
-        cloudStudyStudentDataDto.setVipStudentNum(list.stream().collect(Collectors.summingInt(IndexCloudStudySumDto :: getVipStudentNum)));
-        cloudStudyStudentDataDto.setAgainBuyNum(list.stream().collect(Collectors.summingInt(IndexCloudStudySumDto :: getAgainBuyNum)));
-        if(cloudStudyStudentDataDto.getVipStudentNum() != 0){
-            double studentNum = (double)cloudStudyStudentDataDto.getVipStudentNum();
-            cloudStudyStudentDataDto.setBuyRate(studentNum / cloudStudyStudentDataDto.getTotalStudentNum() * 100);
-            cloudStudyStudentDataDto.setAgainBuyRate(cloudStudyStudentDataDto.getAgainBuyNum() / studentNum * 100);
-            cloudStudyStudentDataDto.setVipStudentRate(studentNum / cloudStudyStudentDataDto.getTotalStudentNum() * 100d);
+        BigDecimal bigDecimal = new BigDecimal(100);
+        cloudStudyStudentDataDto.setCloudStudyLivelyStudentNum(list.stream().map(IndexCloudStudySumDto :: getActiveStudentNum).reduce(BigDecimal.ZERO,BigDecimal::add));
+        cloudStudyStudentDataDto.setTotalStudentNum(list.stream().map(IndexCloudStudySumDto :: getTotalStudentNum).reduce(BigDecimal.ZERO,BigDecimal::add));
+        cloudStudyStudentDataDto.setEffectiveVipStudentNum(list.stream().map(IndexCloudStudySumDto :: getEffectiveVipStudentNum).reduce(BigDecimal.ZERO,BigDecimal::add));
+        cloudStudyStudentDataDto.setWaitActivateVipStudentNum(list.stream().map(IndexCloudStudySumDto :: getWaitActivateVipStudentNum).reduce(BigDecimal.ZERO,BigDecimal::add));
+        cloudStudyStudentDataDto.setVipStudentNum(list.stream().map(IndexCloudStudySumDto :: getVipStudentNum).reduce(BigDecimal.ZERO,BigDecimal::add));
+        cloudStudyStudentDataDto.setAgainBuyNum(list.stream().map(IndexCloudStudySumDto :: getAgainBuyNum).reduce(BigDecimal.ZERO,BigDecimal::add));
+        if(cloudStudyStudentDataDto.getVipStudentNum().compareTo(BigDecimal.ZERO) > 0){
+            cloudStudyStudentDataDto.setBuyRate(cloudStudyStudentDataDto.getVipStudentNum().divide(cloudStudyStudentDataDto.getTotalStudentNum(),4,2).multiply(bigDecimal).setScale(2));
+            cloudStudyStudentDataDto.setAgainBuyRate(cloudStudyStudentDataDto.getAgainBuyNum().divide(cloudStudyStudentDataDto.getVipStudentNum(),4,2).multiply(bigDecimal).setScale(2));
+            cloudStudyStudentDataDto.setVipStudentRate(cloudStudyStudentDataDto.getVipStudentNum().divide(cloudStudyStudentDataDto.getTotalStudentNum(),4,2).multiply(bigDecimal).setScale(2));
         }
         result.put("overView",cloudStudyStudentDataDto);
         return succeed(result);