浏览代码

feat:教务端学员云教练数据统计

Joburgess 3 年之前
父节点
当前提交
236d113f2f

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/EduOrganStudentListDto.java

@@ -46,6 +46,9 @@ public class EduOrganStudentListDto {
     @ApiModelProperty("连续天数")
     private int cloudStudyRunningDays;
 
+    @ApiModelProperty("使用天数")
+    private int cloudStudyUseDays;
+
     @ApiModelProperty("会员有效期")
     private String membershipEndTime;
 
@@ -152,4 +155,12 @@ public class EduOrganStudentListDto {
     public void setMembershipEndTime(String membershipEndTime) {
         this.membershipEndTime = membershipEndTime;
     }
+
+    public int getCloudStudyUseDays() {
+        return cloudStudyUseDays;
+    }
+
+    public void setCloudStudyUseDays(int cloudStudyUseDays) {
+        this.cloudStudyUseDays = cloudStudyUseDays;
+    }
 }

+ 1 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -1056,6 +1056,7 @@
             stu.cloud_study_sequence_days_ cloudStudyRunningDays,
             COUNT(DISTINCT smcr.behavior_id_) cloudStudyUseNum,
             SUM(CASE WHEN smcr.play_time_ IS NULL THEN 0 ELSE play_time_ END) cloudStudyUseTime,
+            COUNT(DISTINCT DATE(smcr.create_time_)) cloudStudyUseDays,
             DATE_FORMAT(stu.membership_end_time_, '%Y-%m-%d') membershipEndTime
         FROM student stu
             LEFT JOIN sys_user su ON stu.user_id_=su.id_

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

@@ -3245,4 +3245,53 @@ public class ExportController extends BaseController {
             }
         }
     }
+
+    @ApiOperation(value = "分部云教练学员训练数据导出")
+    @RequestMapping("export/cloudStudyStudentTrainData")
+    @PreAuthorize("@pcs.hasPermissions('export/cloudStudyStudentTrainData')")
+    public void cloudStudyStudentTrainData(StudentQueryInfo queryInfo,HttpServletResponse response) throws IOException {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("用户信息获取失败");
+        }
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+
+        List<EduOrganStudentListDto> rows = ((PageInfo<EduOrganStudentListDto>)studentService.organStudentData(queryInfo).getDetail()).getRows();
+        if (CollectionUtils.isEmpty(rows)) {
+            response.setStatus(200);
+            response.setContentType("Content-Type: application/json;charset=UTF-8");
+            response.getOutputStream().write("{\"data\": null, \"code\": 500, \"status\": false, \"msg\": \"没有可导出的记录\"}".getBytes());
+            response.flushBuffer();
+            return;
+        }
+        for (EduOrganStudentListDto row : rows) {
+            row.setCloudStudyUseTime(Math.round(row.getCloudStudyUseTime()));
+            row.setCloudStudyUseAvgTime(Math.round(row.getCloudStudyUseAvgTime()));
+        }
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            String[] header = {"学员编号", "学员", "训练总时长", "连续训练天数", "乐团", "指导老师", "声部", "是否有小课", "训练次数", "训练天数", "训练平均时长", "会员有效期"};
+            String[] body = {"studentId", "studentName", "cloudStudyUseTime+\"分钟\"", "cloudStudyRunningDays+\"天\"", "musicGroupNames",
+                            "teacherName", "subjectName", "hasVipGroup>0?\"是\":\"否\"", "cloudStudyUseNum+\"次\"", "cloudStudyUseDays+\"天\"",
+                            "cloudStudyUseAvgTime+\"分钟\"", "membershipEndTime"};
+            HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=employeeInfo-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            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();
+                }
+            }
+        }
+    }
 }