|
@@ -1,28 +1,31 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
import com.ym.mec.biz.dal.dao.*;
|
|
|
-import com.ym.mec.biz.dal.dto.StudentClassInfoDto;
|
|
|
-import com.ym.mec.biz.dal.dto.StudentCourseTimesDto;
|
|
|
-import com.ym.mec.biz.dal.dto.StudentTeacherCourseDto;
|
|
|
+import com.ym.mec.biz.dal.dto.*;
|
|
|
import com.ym.mec.biz.dal.entity.*;
|
|
|
import com.ym.mec.biz.dal.enums.*;
|
|
|
import com.ym.mec.biz.dal.page.StudentQueryInfo;
|
|
|
import com.ym.mec.biz.service.StudentService;
|
|
|
import com.ym.mec.biz.service.SysConfigService;
|
|
|
import com.ym.mec.biz.service.SysMessageService;
|
|
|
+import com.ym.mec.common.constant.CommonConstants;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
import com.ym.mec.common.exception.BizException;
|
|
|
import com.ym.mec.common.page.PageInfo;
|
|
|
+import com.ym.mec.common.page.QueryInfo;
|
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
|
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.apache.poi.ss.formula.functions.T;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
+import sun.nio.cs.ext.Big5;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -54,6 +57,15 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
|
|
|
@Autowired
|
|
|
private SysMessageService sysMessageService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SysMusicCompareRecordDao sysMusicCompareRecordDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CloudTeacherDao cloudTeacherDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OrganizationDao organizationDao;
|
|
|
+
|
|
|
@Override
|
|
|
public BaseDAO<Integer, Student> getDAO() {
|
|
|
return studentDao;
|
|
@@ -438,4 +450,126 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
|
|
|
"STUDENT");
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public StatDto organStudentData(StudentQueryInfo queryInfo) {
|
|
|
+ PageInfo<EduOrganStudentListDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
|
+ Map<String, Object> params = new HashMap<String, Object>();
|
|
|
+ MapUtil.populateMap(params, queryInfo);
|
|
|
+
|
|
|
+ List<EduOrganStudentListDto> dataList = new ArrayList<>();
|
|
|
+ int count = studentDao.countCloudStudyStudentData(params);
|
|
|
+ if (count > 0) {
|
|
|
+ pageInfo.setTotal(count);
|
|
|
+ params.put("offset", pageInfo.getOffset());
|
|
|
+ dataList = studentDao.queryCloudStudyStudentData(params);
|
|
|
+ List<Integer> studentIds = dataList.stream().map(EduOrganStudentListDto::getStudentId).collect(Collectors.toList());
|
|
|
+ List<Map<Integer, String>> studentGroupNamesMapList = studentRegistrationDao.queryStudentMusicGroupNamesMap(studentIds);
|
|
|
+ Map<Integer, String> studentGroupNamesMap = MapUtil.convertIntegerMap(studentGroupNamesMapList);
|
|
|
+ Set<Integer> hasVipCourseStudentIds = courseScheduleStudentPaymentDao.getHasVipCourseStudentIds(studentIds);
|
|
|
+
|
|
|
+ for (EduOrganStudentListDto eduOrganStudentListDto : dataList) {
|
|
|
+ if(studentGroupNamesMap.containsKey(eduOrganStudentListDto.getStudentId())){
|
|
|
+ eduOrganStudentListDto.setMusicGroupNames(studentGroupNamesMap.get(eduOrganStudentListDto.getStudentId()));
|
|
|
+ }
|
|
|
+ if(hasVipCourseStudentIds.contains(eduOrganStudentListDto.getSubjectId())){
|
|
|
+ eduOrganStudentListDto.setHasVipGroup(1);
|
|
|
+ }
|
|
|
+ if(eduOrganStudentListDto.getCloudStudyUseNum()>0 && eduOrganStudentListDto.getCloudStudyUseTime()>0){
|
|
|
+ eduOrganStudentListDto.setCloudStudyUseAvgTime(eduOrganStudentListDto.getCloudStudyUseTime()/eduOrganStudentListDto.getCloudStudyUseNum());
|
|
|
+ }
|
|
|
+ eduOrganStudentListDto.setCloudStudyUseTime(eduOrganStudentListDto.getCloudStudyUseTime()/60);
|
|
|
+ eduOrganStudentListDto.setCloudStudyUseAvgTime(eduOrganStudentListDto.getCloudStudyUseAvgTime()/60);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ pageInfo.setRows(dataList);
|
|
|
+
|
|
|
+ StatDto result = new StatDto();
|
|
|
+ if(queryInfo.getPage()==1){
|
|
|
+ EduOrganStudentDataDto organStudentVipData = new EduOrganStudentDataDto();
|
|
|
+ organStudentVipData.setTotalStudentNum(studentDao.getOrganStudentNum(queryInfo.getOrganId()));
|
|
|
+ organStudentVipData.setVipStudentNum(cloudTeacherDao.getOrganVipStudentNum(queryInfo.getOrganId()));
|
|
|
+ organStudentVipData.seteVipStudentNum(studentDao.getOrganEVipStudentNum(queryInfo.getOrganId()));
|
|
|
+ organStudentVipData.setCloudStudyUseStudentNum(studentDao.getCloudStudyStudentNum(queryInfo.getOrganId()));
|
|
|
+ organStudentVipData.setCloudStudyLivelyStudentNum(studentDao.getCloudStudyLivelyStudentNum(queryInfo.getOrganId()));
|
|
|
+ if(organStudentVipData.getVipStudentNum()>0&&organStudentVipData.getTotalStudentNum()>0){
|
|
|
+ organStudentVipData.setVipStudentDuty(new BigDecimal(organStudentVipData.getVipStudentNum()).divide(new BigDecimal(organStudentVipData.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
|
|
|
+ }
|
|
|
+ result.setHead(organStudentVipData);
|
|
|
+ }
|
|
|
+ result.setDetail(pageInfo);
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<EduOrganStudentDataDto> organStudentOverView(List<Integer> organIds) {
|
|
|
+ List<Organization> organs = organizationDao.getOrgans(organIds);
|
|
|
+
|
|
|
+ if(CollectionUtils.isEmpty(organs)){
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Map<Integer, Integer>> organsStudentNumMapList = studentDao.getOrgansStudentNum(organIds);
|
|
|
+ Map<String, Long> organsStudentNumMap = new HashMap<>();
|
|
|
+ if(!CollectionUtils.isEmpty(organsStudentNumMapList)){
|
|
|
+ organsStudentNumMap = MapUtil.convertIntegerMap(organsStudentNumMapList);
|
|
|
+ }
|
|
|
+ List<Map<Integer, Integer>> organsVipStudentNumMapList = cloudTeacherDao.getOrgansVipStudentNum(organIds);
|
|
|
+ Map<String, Long> organsVipStudentNumMap = new HashMap<>();
|
|
|
+ if(!CollectionUtils.isEmpty(organsVipStudentNumMapList)){
|
|
|
+ organsVipStudentNumMap = MapUtil.convertIntegerMap(organsVipStudentNumMapList);
|
|
|
+ }
|
|
|
+ List<Map<Integer, Integer>> organsEVipStudentNumMapList = studentDao.getOrgansEVipStudentNum(organIds);
|
|
|
+ Map<String, Long> organsEVipStudentNumMap = new HashMap<>();
|
|
|
+ if(!CollectionUtils.isEmpty(organsEVipStudentNumMapList)){
|
|
|
+ organsEVipStudentNumMap = MapUtil.convertIntegerMap(organsEVipStudentNumMapList);
|
|
|
+ }
|
|
|
+ List<Map<Integer, Integer>> organCloudStudyStudentNumMapList = studentDao.getOrganCloudStudyStudentNum(organIds);
|
|
|
+ Map<String, Long> organCloudStudyStudentNumMap = new HashMap<>();
|
|
|
+ if(!CollectionUtils.isEmpty(organCloudStudyStudentNumMapList)){
|
|
|
+ organCloudStudyStudentNumMap = MapUtil.convertIntegerMap(organCloudStudyStudentNumMapList);
|
|
|
+ }
|
|
|
+ List<Map<Integer, Integer>> organCloudStudyLivelyStudentNumMapList = studentDao.getOrganCloudStudyLivelyStudentNum(organIds);
|
|
|
+ Map<String, Long> organCloudStudyLivelyStudentNumMap = new HashMap<>();
|
|
|
+ if(!CollectionUtils.isEmpty(organCloudStudyLivelyStudentNumMapList)){
|
|
|
+ organCloudStudyLivelyStudentNumMap = MapUtil.convertIntegerMap(organCloudStudyLivelyStudentNumMapList);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<EduOrganStudentDataDto> result = new ArrayList<>();
|
|
|
+
|
|
|
+ for (Organization organ : organs) {
|
|
|
+ EduOrganStudentDataDto organStudentVipData = new EduOrganStudentDataDto();
|
|
|
+ organStudentVipData.setOrganId(organ.getId());
|
|
|
+ organStudentVipData.setOrganName(organ.getName());
|
|
|
+ if(organsStudentNumMap.containsKey(organ.getId().toString())){
|
|
|
+ organStudentVipData.setTotalStudentNum(organsStudentNumMap.get(organ.getId().toString()).intValue());
|
|
|
+ }
|
|
|
+ if(organsVipStudentNumMap.containsKey(organ.getId().toString())){
|
|
|
+ organStudentVipData.setVipStudentNum(organsVipStudentNumMap.get(organ.getId().toString()).intValue());
|
|
|
+ }
|
|
|
+ if(organsEVipStudentNumMap.containsKey(organ.getId().toString())){
|
|
|
+ organStudentVipData.seteVipStudentNum(organsEVipStudentNumMap.get(organ.getId().toString()).intValue());
|
|
|
+ }
|
|
|
+ if(organCloudStudyStudentNumMap.containsKey(organ.getId().toString())){
|
|
|
+ organStudentVipData.setCloudStudyUseStudentNum(organCloudStudyStudentNumMap.get(organ.getId().toString()).intValue());
|
|
|
+ }
|
|
|
+ if(organCloudStudyLivelyStudentNumMap.containsKey(organ.getId().toString())){
|
|
|
+ organStudentVipData.setCloudStudyLivelyStudentNum(organCloudStudyLivelyStudentNumMap.get(organ.getId().toString()).intValue());
|
|
|
+ }
|
|
|
+ if(organStudentVipData.getVipStudentNum()>0&&organStudentVipData.getTotalStudentNum()>0){
|
|
|
+ organStudentVipData.setVipStudentDuty(new BigDecimal(organStudentVipData.getVipStudentNum()).divide(new BigDecimal(organStudentVipData.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
|
|
|
+ }
|
|
|
+ if(organStudentVipData.getCloudStudyUseStudentNum()>0&&organStudentVipData.getTotalStudentNum()>0){
|
|
|
+ organStudentVipData.setCloudStudyUseStudentDuty(new BigDecimal(organStudentVipData.getCloudStudyUseStudentNum()).divide(new BigDecimal(organStudentVipData.getTotalStudentNum()), 4, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).floatValue());
|
|
|
+ }
|
|
|
+ result.add(organStudentVipData);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void cleanStudentCloudStudySequenceDays() {
|
|
|
+ studentDao.cleanStudentCloudStudySequenceDays();
|
|
|
+ }
|
|
|
}
|