Pārlūkot izejas kodu

云教练活动

zouxuan 3 gadi atpakaļ
vecāks
revīzija
3b9fbe5afb

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java

@@ -347,4 +347,10 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
      * @return
      */
     List<CloudTeacherActiveTargetDto> countCloudTeacherActive(Map<String, Object> params);
+
+    /**
+     * 获取各分部学员总人数
+     * @return
+     */
+    List<Map<String, Long>> countTotalStudentNum();
 }

+ 10 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -814,10 +814,17 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         }
         List<CloudTeacherActiveTargetDto> targetDtoList = JSONArray.parseArray(cloudTeacherActiveTarget, CloudTeacherActiveTargetDto.class);
         Map<Integer, List<CloudTeacherActiveTargetDto>> targetMap = targetDtoList.stream().collect(Collectors.groupingBy(e -> e.getOrganId()));
-
+        //获取各分部总人数
+        List<Map<String, Long>> maps = indexBaseMonthDataDao.countTotalStudentNum();
+        Map<String, Long> organStudentNumMap = new HashMap<>(20);
+        if(maps != null && maps.size() > 0){
+            organStudentNumMap = MapUtil.convertIntegerMap(maps);
+        }
         params.put("organIdList",organIdList);
         List<CloudTeacherActiveTargetDto> resultList = indexBaseMonthDataDao.countCloudTeacherActive(params);
         for (CloudTeacherActiveTargetDto dto : resultList) {
+            Long aLong = organStudentNumMap.get(dto.getOrganId().toString());
+            dto.setTotalNum(aLong==null?0:aLong.intValue());
             List<CloudTeacherActiveTargetDto> targetDtos = targetMap.get(dto.getOrganId());
             if(targetDtos != null && targetDtos.size() > 0){
                 CloudTeacherActiveTargetDto target = targetDtos.get(0);
@@ -825,7 +832,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
                 dto.setTargetAmount(target.getTargetAmount());
             }
             if(dto.getBuyAmount().doubleValue() > 0d && dto.getBuyNum() > 0){
-                BigDecimal avgBuyAmount = dto.getBuyAmount().divide(new BigDecimal(dto.getBuyNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
+                BigDecimal avgBuyAmount = dto.getBuyAmount().divide(new BigDecimal(dto.getBuyNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
                 dto.setAvgBuyAmount(avgBuyAmount);
             }
             if(dto.getTotalNum() > 0 && dto.getBuyNum() > 0){
@@ -852,7 +859,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         resultMap.put("buyScale",0);
         resultMap.put("targetFinishScale",0);
         if(buyAmount.doubleValue() > 0d && buyNum > 0){
-            BigDecimal avgBuyAmount = buyAmount.divide(new BigDecimal(buyNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
+            BigDecimal avgBuyAmount = buyAmount.divide(new BigDecimal(buyNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
             resultMap.put("avgBuyAmount",avgBuyAmount);
         }
         if(totalNum > 0 && buyNum > 0){

+ 10 - 3
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -1831,11 +1831,12 @@
 	</resultMap>
     <select id="countCloudTeacherActive" resultMap="CloudTeacherActiveTargetDto">
 		SELECT o.name_ organ_name_,o.id_ organ_id_,CASE WHEN SUM(cto.amount_) IS NULL THEN 0 ELSE SUM(cto.amount_) END buy_amount_,
-		COUNT(DISTINCT cto.student_id_) buy_num_,COUNT(s.user_id_) total_num_ FROM student s
-		LEFT JOIN sys_user su ON su.id_ = s.user_id_
+		COUNT(DISTINCT cto.student_id_) buy_num_
+		FROM student s
 		LEFT JOIN cloud_teacher_order cto ON cto.student_id_ = s.user_id_ AND cto.status_ != 0 AND cto.active_remark_ = '202109'
+		LEFT JOIN sys_user su ON su.id_ = s.user_id_
 		LEFT JOIN organization o ON o.id_ = su.organ_id_
-		WHERE s.count_flag_ = 1
+		WHERE 1=1
 		<if test="organIdList != null and organIdList.size > 0">
 			AND su.organ_id_ IN
 			<foreach collection="organIdList" open="(" close=")" item="item" separator=",">
@@ -1844,4 +1845,10 @@
 		</if>
 		GROUP BY su.organ_id_
 	</select>
+	<select id="countTotalStudentNum" resultType="java.util.Map">
+		SELECT su.organ_id_ 'key',COUNT(DISTINCT s.user_id_) 'value' FROM student s
+		LEFT JOIN sys_user su ON su.id_ = s.user_id_
+		WHERE s.count_flag_ = 1
+		GROUP BY su.organ_id_
+	</select>
 </mapper>