Browse Source

小小训练营

zouxuan 2 years ago
parent
commit
e8ad84ec65

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/OperatingReportNewDao.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.OperatingReportNewDto1;
 import com.ym.mec.biz.dal.entity.OperatingReportNew;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
@@ -100,4 +101,24 @@ public interface OperatingReportNewDao extends BaseDAO<Integer, OperatingReportN
 
     //课程未开始团体云教练预收
     List<Map<Integer,BigDecimal>> sumNotStartCloudPreAmount();
+
+    /**
+    * @description: 获取当月有课的乐团和学员列表
+     * @param currentMonth
+    * @return java.util.List<com.ym.mec.biz.dal.dto.OperatingReportNewDto1>
+    * @author zx
+    * @date 2023/3/27 15:21
+    */
+    List<OperatingReportNewDto1> queryMusicGroupIds(@Param("currentMonth") String currentMonth);
+
+    /**
+    * @description: 获取关联乐团、学员的课程列表
+     * @param currentMonth
+    * @return java.util.List<com.ym.mec.biz.dal.dto.OperatingReportNewDto1>
+    * @author zx
+    * @date 2023/3/27 18:41
+    */
+    List<OperatingReportNewDto1> queryNotStartMusicGroupIds(@Param("currentMonth") String currentMonth,
+                                                            @Param("userIdList") List<Integer> userIdList,
+                                                            @Param("musicGroupIdList") List<String> musicGroupIdList);
 }

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/OperatingReportNewDto1.java

@@ -0,0 +1,14 @@
+package com.ym.mec.biz.dal.dto;
+
+import lombok.Data;
+
+@Data
+public class OperatingReportNewDto1{
+    private String musicGroupId;
+
+    private Integer userId;
+
+    private String courseType;
+
+    private Integer signClassTime;
+}

+ 20 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OperatingReportNewServiceImpl.java

@@ -1,8 +1,11 @@
 package com.ym.mec.biz.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.biz.dal.dao.OperatingReportCloudDao;
 import com.ym.mec.biz.dal.dao.OperatingReportNewDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dao.VipGroupCategoryDao;
+import com.ym.mec.biz.dal.dto.OperatingReportNewDto1;
 import com.ym.mec.biz.dal.entity.OperatingReportNew;
 import com.ym.mec.biz.dal.entity.VipGroupCategory;
 import com.ym.mec.biz.service.OperatingReportNewService;
@@ -15,10 +18,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -30,6 +30,8 @@ public class OperatingReportNewServiceImpl extends BaseServiceImpl<Integer, Oper
 	private VipGroupCategoryDao vipGroupCategoryDao;
 	@Autowired
 	private OperatingReportCloudDao operatingReportCloudDao;
+	@Autowired
+	private SysConfigDao sysConfigDao;
 
 	@Override
 	public BaseDAO<Integer, OperatingReportNew> getDAO() {
@@ -62,6 +64,20 @@ public class OperatingReportNewServiceImpl extends BaseServiceImpl<Integer, Oper
 		//导入的服务收入  (全部记录为课程收入)
 		Map<Integer, BigDecimal> collect24 = MapUtil.convertIntegerMap(operatingReportNewDao.sumImportServerOrderAmount(currentMonth));
 		//获取当月有课的学员和乐团列表
+		List<OperatingReportNewDto1> overDtos = operatingReportNewDao.queryMusicGroupIds(currentMonth);
+		List<Integer> userIdList = overDtos.stream().map(e -> e.getUserId()).distinct().collect(Collectors.toList());
+		List<String> musicGroupIdList = overDtos.stream().map(e -> e.getMusicGroupId()).distinct().collect(Collectors.toList());
+		//获取当月有课的学员所有未开始的课程类型以及时长
+		String operatingReportCourseConfig = sysConfigDao.findConfigValue("operating_report_course_config");
+		Map<String,BigDecimal> operatingReportCourseMap = JSONObject.parseObject(operatingReportCourseConfig, HashMap.class);
+		//获取关联学员的所有未开始、以及本月课程
+		List<OperatingReportNewDto1> notStartDtos = operatingReportNewDao.queryNotStartMusicGroupIds(currentMonth,userIdList,musicGroupIdList);
+		//课程实际收入 = 学员总课程时长(包含未开始、未排课、当月已完成)* 课程单价
+		//处理导出逻辑
+		//记录学员在乐团每种课程类型总时长
+		//
+
+
 
 		//云教练赠送课程实际收入
 		Map<Integer, BigDecimal> collect1 = MapUtil.convertIntegerMap(operatingReportNewDao.sumCloudCourseAmount(firstDayOfMonth,lastDayOfMonth));

+ 35 - 0
mec-biz/src/main/resources/config/mybatis/OperatingReportNewMapper.xml

@@ -348,4 +348,39 @@
 		where orc.start_date_ IS NULL AND orc.course_price_ > 0
 		group by orc.organ_id_
 	</select>
+    <select id="queryMusicGroupIds" resultType="com.ym.mec.biz.dal.dto.OperatingReportNewDto1">
+		select cs.music_group_id_ musicGroupId,cssp.user_id_ userId ,cs.type_ courseType,
+			   SUM(ROUND((UNIX_TIMESTAMP(CONCAT(cs.class_date_,' ',cs.end_class_time_)) - UNIX_TIMESTAMP(CONCAT(cs.class_date_,' ',cs.start_class_time_)))/60) ) signClassTime
+		from mec_pro.course_schedule cs
+		left join mec_pro.course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
+		where DATE_FORMAT(cs.class_date_,'%Y-%m') = #{currentMonth} AND cs.group_type_ = 'MUSIC' AND DATE_FORMAT(cs.create_time_,'%Y') = DATE_FORMAT(#{currentMonth},'%Y')
+		group by cs.music_group_id_,cssp.user_id_,cs.type_
+	</select>
+	<select id="queryNotStartMusicGroupIds" resultType="com.ym.mec.biz.dal.dto.OperatingReportNewDto1">
+		SELECT music_group_id_,user_id_,course_type_,SUM(sub_course_minutes_) from (
+		select cs.music_group_id_,cssp.user_id_,cs.type_ course_type_,
+		SUM(ROUND((UNIX_TIMESTAMP(CONCAT(cs.class_date_,' ',cs.end_class_time_)) -
+		UNIX_TIMESTAMP(CONCAT(cs.class_date_,' ',cs.start_class_time_)))/60) ) sub_course_minutes_
+		from mec_pro.course_schedule cs
+		left join mec_pro.course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
+		where DATE_FORMAT(cs.class_date_,'%Y-%m') >= #{currentMonth} AND cs.group_type_ = 'MUSIC' AND
+		DATE_FORMAT(cs.create_time_,'%Y') = DATE_FORMAT(#{currentMonth},'%Y')
+		AND cssp.user_id_ IN
+		<foreach collection="userIdList" item="userId" separator="," open="(" close=")">
+			#{userId}
+		</foreach>
+		AND cs.music_group_id_ IN
+		<foreach collection="musicGroupIdList" item="musicGroupId" separator="," open="(" close=")">
+			#{musicGroupId}
+		</foreach>
+		group by cs.music_group_id_,cssp.user_id_,cs.type_
+		UNION ALL
+		select mgpscd.music_group_id_,mgpscd.user_id_,mgpscd.course_type_,SUM(mgpscd.sub_course_minutes_) sub_course_minutes_
+		from music_group_payment_student_course_detail mgpscd
+		left join music_group_payment_calender mgpc ON mgpc.id_ = mgpscd.music_group_payment_calender_id_
+		where DATE_FORMAT(mgpc.create_time_,'%Y') = DATE_FORMAT(#{currentMonth},'%Y') AND mgpscd.sub_course_minutes_ > 0
+		group by mgpscd.music_group_id_,mgpscd.user_id_,mgpscd.course_type_
+		)
+		group by music_group_id_,user_id_,course_type_
+	</select>
 </mapper>