yonge 2 年之前
父节点
当前提交
c80e5ecf22

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

@@ -5,7 +5,9 @@ import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
 import com.ym.mec.biz.dal.entity.SysMusicCompareWeekData;
 import com.ym.mec.biz.dal.enums.HeardLevelEnum;
 import com.ym.mec.biz.dal.page.ExportCompareQueryInfo;
+import com.ym.mec.biz.dal.page.TeacherCloudTrainingQueryInfo;
 import com.ym.mec.common.dal.BaseDAO;
+
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -117,4 +119,8 @@ public interface SysMusicCompareRecordDao extends BaseDAO<Long, SysMusicCompareR
     void deleteDayData(@Param("date") String date);
 
     void init(String date);
+    
+    List<TeacherCloudTrainingDto> queryTeacherTrainingList(@Param("queryInfo") TeacherCloudTrainingQueryInfo queryInfo);
+    
+    int queryTeacherTrainingCount(@Param("queryInfo") TeacherCloudTrainingQueryInfo queryInfo);
 }

+ 84 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherCloudTrainingDto.java

@@ -0,0 +1,84 @@
+package com.ym.mec.biz.dal.dto;
+
+public class TeacherCloudTrainingDto {
+
+	private Integer organId;
+	
+	private String organName;
+	
+	private Integer subjectId;
+	
+	private String subjectName;
+	
+	private Integer userId;
+	
+	private String username;
+	
+	private int trianingDays;
+	
+	private int trainingDurationSeconds;
+
+	public Integer getOrganId() {
+		return organId;
+	}
+
+	public void setOrganId(Integer organId) {
+		this.organId = organId;
+	}
+
+	public String getOrganName() {
+		return organName;
+	}
+
+	public void setOrganName(String organName) {
+		this.organName = organName;
+	}
+
+	public Integer getSubjectId() {
+		return subjectId;
+	}
+
+	public void setSubjectId(Integer subjectId) {
+		this.subjectId = subjectId;
+	}
+
+	public String getSubjectName() {
+		return subjectName;
+	}
+
+	public void setSubjectName(String subjectName) {
+		this.subjectName = subjectName;
+	}
+
+	public Integer getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Integer userId) {
+		this.userId = userId;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public int getTrianingDays() {
+		return trianingDays;
+	}
+
+	public void setTrianingDays(int trianingDays) {
+		this.trianingDays = trianingDays;
+	}
+
+	public int getTrainingDurationSeconds() {
+		return trainingDurationSeconds;
+	}
+
+	public void setTrainingDurationSeconds(int trainingDurationSeconds) {
+		this.trainingDurationSeconds = trainingDurationSeconds;
+	}
+}

+ 47 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherCloudTrainingQueryInfo.java

@@ -0,0 +1,47 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+
+public class TeacherCloudTrainingQueryInfo extends QueryInfo {
+
+    private Integer teacherId;
+
+    private String startTime;
+
+    private String endTime;
+
+    private String organIdList;
+
+    public String getOrganIdList() {
+		return organIdList;
+	}
+
+	public void setOrganIdList(String organIdList) {
+		this.organIdList = organIdList;
+	}
+
+	public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+}

+ 6 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicCompareRecordService.java

@@ -1,17 +1,19 @@
 package com.ym.mec.biz.service;
 
+import java.util.Map;
+
 import com.ym.mec.biz.dal.dao.SysMusicCompareRecordDao;
 import com.ym.mec.biz.dal.dto.CountStudentTrainDataDto;
 import com.ym.mec.biz.dal.dto.MusicCompareRankingDto;
 import com.ym.mec.biz.dal.dto.SoundCompareHelper;
 import com.ym.mec.biz.dal.dto.StatDto;
+import com.ym.mec.biz.dal.dto.TeacherCloudTrainingDto;
 import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
 import com.ym.mec.biz.dal.page.SysMusicCompareRecordQueryInfo;
+import com.ym.mec.biz.dal.page.TeacherCloudTrainingQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
-import java.util.Map;
-
 public interface SysMusicCompareRecordService extends BaseService<Long, SysMusicCompareRecord> {
 
     SysMusicCompareRecordDao getDao();
@@ -97,4 +99,6 @@ public interface SysMusicCompareRecordService extends BaseService<Long, SysMusic
     int queryCurrentDatePlayTimeByUserId(Integer userId);
 
     void initSysMusicCompareDayData();
+    
+    PageInfo<TeacherCloudTrainingDto> queryTeacherTraining(TeacherCloudTrainingQueryInfo queryInfo);
 }

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicCompareRecordServiceImpl.java

@@ -14,6 +14,7 @@ import com.ym.mec.biz.dal.enums.HeardLevelEnum;
 import com.ym.mec.biz.dal.enums.IndexDataType;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.page.SysMusicCompareRecordQueryInfo;
+import com.ym.mec.biz.dal.page.TeacherCloudTrainingQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
@@ -481,4 +482,21 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 		sysMusicCompareRecordDao.deleteDayData(now);
 		sysMusicCompareRecordDao.init(now);
 	}
+
+	@Override
+	public PageInfo<TeacherCloudTrainingDto> queryTeacherTraining(TeacherCloudTrainingQueryInfo queryInfo) {
+		PageInfo<TeacherCloudTrainingDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+
+		List<TeacherCloudTrainingDto> dataList = null;
+		int count = sysMusicCompareRecordDao.queryTeacherTrainingCount(queryInfo);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			dataList = sysMusicCompareRecordDao.queryTeacherTrainingList(queryInfo);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
 }

+ 16 - 0
mec-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -517,4 +517,20 @@
 			</if>
 		</where>
 	</select>
+	
+	<select id="queryTeacherTrainingList" resultType=com.ym.mec.biz.dal.dto.TeacherCloudTrainingDto>
+		SELECT o.`name_` organName,ifnull(u.`real_name_`,u.`username_` ) username,GROUP_CONCAT(distinct s.`name_`)  subjectName,sum(cr.`play_time_`) trainingDurationSeconds,count(DISTINCT(date(cr.`create_time_`)))  trianingDays FROM `sys_music_compare_record` cr 
+		LEFT JOIN `teacher` t on t.`id_` = cr.`user_id_` and cr.`client_id_` = 'teacher'
+		LEFT JOIN `subject` s on find_in_set(s.`id_`,t.`subject_id_` ) 
+		LEFT JOIN `sys_user` u on u.`id_` = cr.`user_id_` 
+		LEFT JOIN `organization` o on o.`id_` = t.`organ_id_` 
+		WHERE cr.`client_id_` = 'teacher' and t.`organ_id_` in (#{queryInfo.organIdList}) AND date(cr.`create_time_`) BETWEEN #{queryInfo.startTime} and #{queryInfo.endTime} and t.job_nature_ = 'FULL_TIME'
+		GROUP BY cr.`user_id_` 
+	</select>
+	
+	<select id="queryTeacherTrainingCount" resultType="int">
+		SELECT count(distinct cr.user_id_) FROM `sys_music_compare_record` cr 
+		LEFT JOIN `teacher` t on t.`id_` = cr.`user_id_` and cr.`client_id_` = 'teacher'
+		WHERE cr.`client_id_` = 'teacher' and t.`organ_id_` in (#{queryInfo.organIdList}) AND date(cr.`create_time_`) BETWEEN #{queryInfo.startTime} and #{queryInfo.endTime} and t.job_nature_ = 'FULL_TIME'
+	</select>
 </mapper>

+ 39 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -142,6 +142,9 @@ public class ExportController extends BaseController {
     
     @Autowired
     private ImLiveBroadcastRoomMemberService imLiveBroadcastRoomMemberService;
+    
+    @Autowired
+    private SysMusicCompareRecordService sysMusicCompareRecordService;
 
     @ApiOperation(value = "获取可导出字段")
     @RequestMapping("export/getFields")
@@ -2912,4 +2915,40 @@ public class ExportController extends BaseController {
             }
         }
     }
+    
+    @ApiOperation(value = "全职老师云教练训练列表")
+    @PostMapping("export/teacherCloudTrainingList")
+    @PreAuthorize("@pcs.hasPermissions('export/teacherCloudTrainingList')")
+    public void exportTeacherCloudTrainingList(HttpServletResponse response, TeacherCloudTrainingQueryInfo queryInfo) throws IOException {
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+        
+        List<TeacherCloudTrainingDto> rows = sysMusicCompareRecordService.queryTeacherTraining(queryInfo).getRows();
+        if (rows.size() < 1) {
+            throw new BizException("没有可导出数据");
+        }
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "姓名", "声部", "总练习时长(秒)",
+                    "训练天数"}, new String[]{
+                    "organName", "username", "subjectName", "trainingDurationSeconds", "trianingDays"}, rows);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attac:wq" +
+                    "hment;filename=teacherCloudTrainingList-" + DateUtil.getDate(new Date()) + ".xls");
+
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 }