浏览代码

1、 报表中心新增学员小课记录导出

zouxuan 3 年之前
父节点
当前提交
fa7c9a721b

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -560,4 +560,22 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @return
      */
     List<BasicUserDto> getCourseStudents(@Param("courseScheduleId") Long courseScheduleId);
+
+    /**
+    * @description: 当前分部是否有vip,网管课
+     * @param organId
+    * @return boolean
+    * @author zx
+    * @date 2021/11/5 11:30
+    */
+    boolean hasCourse(Integer organId);
+
+    /**
+    * @description:  报表中心学员小课记录导出
+     * @param organId
+    * @return java.util.List<com.ym.mec.biz.dal.dto.StudentVipPracticeExportDto>
+    * @author zx
+    * @date 2021/11/5 11:54 
+    */
+    List<StudentVipPracticeExportDto> exportStudentVipPractice(Integer organId);
 }

+ 103 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVipPracticeExportDto.java

@@ -0,0 +1,103 @@
+package com.ym.mec.biz.dal.dto;
+
+public class StudentVipPracticeExportDto{
+    private Integer userId;
+
+    private String username;
+
+    private Integer vipOverNum;
+
+    private Integer vipNotStartNum;
+
+    private String vipTeacherIds;
+
+    private String vipTeacherNames;
+
+    private Integer practiceOverNum;
+
+    private Integer practiceNotStartNum;
+
+    private String practiceTeacherIds;
+
+    private String practiceTeacherNames;
+
+    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 Integer getVipOverNum() {
+        return vipOverNum;
+    }
+
+    public void setVipOverNum(Integer vipOverNum) {
+        this.vipOverNum = vipOverNum;
+    }
+
+    public Integer getVipNotStartNum() {
+        return vipNotStartNum;
+    }
+
+    public void setVipNotStartNum(Integer vipNotStartNum) {
+        this.vipNotStartNum = vipNotStartNum;
+    }
+
+    public String getVipTeacherIds() {
+        return vipTeacherIds;
+    }
+
+    public void setVipTeacherIds(String vipTeacherIds) {
+        this.vipTeacherIds = vipTeacherIds;
+    }
+
+    public String getVipTeacherNames() {
+        return vipTeacherNames;
+    }
+
+    public void setVipTeacherNames(String vipTeacherNames) {
+        this.vipTeacherNames = vipTeacherNames;
+    }
+
+    public Integer getPracticeOverNum() {
+        return practiceOverNum;
+    }
+
+    public void setPracticeOverNum(Integer practiceOverNum) {
+        this.practiceOverNum = practiceOverNum;
+    }
+
+    public Integer getPracticeNotStartNum() {
+        return practiceNotStartNum;
+    }
+
+    public void setPracticeNotStartNum(Integer practiceNotStartNum) {
+        this.practiceNotStartNum = practiceNotStartNum;
+    }
+
+    public String getPracticeTeacherIds() {
+        return practiceTeacherIds;
+    }
+
+    public void setPracticeTeacherIds(String practiceTeacherIds) {
+        this.practiceTeacherIds = practiceTeacherIds;
+    }
+
+    public String getPracticeTeacherNames() {
+        return practiceTeacherNames;
+    }
+
+    public void setPracticeTeacherNames(String practiceTeacherNames) {
+        this.practiceTeacherNames = practiceTeacherNames;
+    }
+}

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportTypeEnum.java

@@ -5,7 +5,8 @@ import com.ym.mec.common.enums.BaseEnum;
 public enum ExportTypeEnum implements BaseEnum<Integer, ExportTypeEnum> {
 	ORDER(1, "订单列表"),
 	COURSE_SCHEDULE(3, "课表列表"),
-	ROUTE_ORDER(2, "财务管理");
+	ROUTE_ORDER(2, "财务管理"),
+	STUDENT_VIP_PRACTICE(4, "学员小课记录");
 
 	private Integer code;
 

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ExportService.java

@@ -31,4 +31,14 @@ public interface ExportService {
      * @param managerDownload
      */
     void superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo, ManagerDownload managerDownload) throws FileNotFoundException;
+
+    /**
+    * @description:  报表中心学员小课记录导出
+     * @param organId
+     * @param managerDownload
+    * @return void
+    * @author zx
+    * @date 2021/11/5 11:38 
+    */
+    void studentVipPractice(Integer organId, ManagerDownload managerDownload) throws FileNotFoundException;
 }

+ 39 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -62,6 +62,8 @@ public class ExportServiceImpl implements ExportService {
     private CourseScheduleService courseScheduleService;
     @Autowired
     private StudentService studentService;
+    @Autowired
+    private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
 
     @Override
     @Async
@@ -870,4 +872,41 @@ public class ExportServiceImpl implements ExportService {
             }
         }
     }
+
+    @Override
+    public void studentVipPractice(Integer organId, ManagerDownload managerDownload) throws FileNotFoundException {
+        List<StudentVipPracticeExportDto> studentVipPracticeExportDtos = courseScheduleStudentPaymentDao.exportStudentVipPractice(organId);
+
+        String basePath = new ApplicationHome(this.getClass()).getSource().getParentFile().getPath();
+        File file = new File(basePath + "/" + managerDownload.getName());
+        FileOutputStream fileOutputStream = new FileOutputStream(file);
+
+        HSSFWorkbook workbook = null;
+        try {
+            String[] header = {"学员编号", "学生姓名", "VIP已结束课时数", "VIP未开始课时数", "VIP上课老师编号", "VIP上课老师", "网管课已结束课时数", "网管课未开始课时数", "网管课上课老师编号", "网管课上课老师"};
+            String[] body = {"userId", "username", "vipOverNum", "vipNotStartNum", "vipTeacherIds", "vipTeacherNames"
+                    , "practiceOverNum", "practiceNotStartNum", "practiceTeacherIds", "practiceTeacherNames"};
+            workbook = POIUtil.exportExcel(header, body, studentVipPracticeExportDtos);
+            workbook.write(fileOutputStream);
+            fileOutputStream.getFD().sync();
+            fileOutputStream.close();
+
+            String folder = "download/" + UploadUtil.getFileFloder();
+            String url = storagePluginContext.uploadFile(KS3StoragePlugin.PLUGIN_NAME, folder, file);
+            //把记录插入下载表
+            managerDownload.setFileUrl(url);
+            managerDownload.setStatus(1);
+            managerDownloadDao.update(managerDownload);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                fileOutputStream.close();
+                workbook.close();
+                file.delete();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
 }

+ 43 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -833,4 +833,47 @@
 		LEFT JOIN `subject` s ON s.id_ = st.subject_id_list_
 		WHERE cssp.course_schedule_id_ = #{courseScheduleId}
 	</select>
+	<select id="hasCourse" resultType="java.lang.Boolean">
+		SELECT CASE WHEN s.user_id_ = NULL THEN 0 ELSE 1 END hasCourse FROM student s
+		LEFT JOIN sys_user su ON s.user_id_ = su.id_
+		LEFT JOIN course_schedule_student_payment cssp FORCE INDEX(group_type_) ON cssp.user_id_ = s.user_id_
+		WHERE cssp.group_type_ IN ('VIP','PRACTICE')
+		<if test="organId != null">
+			su.organ_id_ = #{organId}
+		</if>
+		LIMIT 1
+	</select>
+	<resultMap id="StudentVipPracticeExportDto" type="com.ym.mec.biz.dal.dto.StudentVipPracticeExportDto">
+		<result property="userId" column="user_id_"/>
+		<result property="username" column="username_"/>
+		<result property="vipOverNum" column="vip_over_num_"/>
+		<result property="vipNotStartNum" column="vip_not_start_num_"/>
+		<result property="vipTeacherIds" column="vip_teacher_ids_"/>
+		<result property="vipTeacherNames" column="vip_teacher_names_"/>
+		<result property="practiceOverNum" column="practice_over_num_"/>
+		<result property="practiceNotStartNum" column="practice_not_start_num_"/>
+		<result property="practiceTeacherIds" column="practice_teacher_ids_"/>
+		<result property="practiceTeacherNames" column="practice_teacher_names_"/>
+	</resultMap>
+	<select id="exportStudentVipPractice" resultMap="StudentVipPracticeExportDto">
+		SELECT s.user_id_,su.username_,
+		COUNT(CASE WHEN cssp.group_type_ = 'VIP' AND cs.status_ != 'NOT_START' THEN 1 ELSE NULL END) vip_over_num_,
+		COUNT(CASE WHEN cssp.group_type_ = 'VIP' AND cs.status_ = 'NOT_START' THEN 1 ELSE NULL END) vip_not_start_num_,
+		GROUP_CONCAT(DISTINCT (CASE WHEN cssp.group_type_ = 'VIP' THEN sut.id_ ELSE NULL END)) vip_teacher_ids_,
+		GROUP_CONCAT(DISTINCT (CASE WHEN cssp.group_type_ = 'VIP' THEN sut.real_name_ ELSE NULL END)) vip_teacher_names_,
+		COUNT(CASE WHEN cssp.group_type_ = 'PRACTICE' AND cs.status_ != 'NOT_START' THEN 1 ELSE NULL END) practice_over_num_,
+		COUNT(CASE WHEN cssp.group_type_ = 'PRACTICE' AND cs.status_ = 'NOT_START' THEN 1 ELSE NULL END) practice_not_start_num_,
+		GROUP_CONCAT(DISTINCT (CASE WHEN cssp.group_type_ = 'PRACTICE' THEN sut.id_ ELSE NULL END)) practice_teacher_ids_,
+		GROUP_CONCAT(DISTINCT (CASE WHEN cssp.group_type_ = 'PRACTICE' THEN sut.real_name_ ELSE NULL END)) practice_teacher_names_
+		FROM student s
+		LEFT JOIN sys_user su ON s.user_id_ = su.id_
+		LEFT JOIN course_schedule_student_payment cssp FORCE INDEX(group_type_) ON cssp.user_id_ = s.user_id_
+		LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+		LEFT JOIN sys_user sut ON cs.actual_teacher_id_ = sut.id_
+		WHERE cssp.group_type_ IN ('VIP','PRACTICE')
+		<if test="organId">
+			AND su.organ_id_ = #{organId}
+		</if>
+		GROUP BY s.user_id_
+	</select>
 </mapper>

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

@@ -1443,6 +1443,31 @@ public class ExportController extends BaseController {
     }
 
 
+    @ApiOperation(value = "学员小课记录导出")
+    @PostMapping("export/studentVipPractice")
+    @PreAuthorize("@pcs.hasPermissions('export/studentVipPractice')")
+    public HttpResponseResult exportStudentVipPractice(Integer organId) throws IOException {
+        boolean hasCourse = courseScheduleStudentPaymentDao.hasCourse(organId);
+        if (!hasCourse) {
+            return failed("没有可导出的数据");
+        }
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        Date nowDate = new Date();
+        String no = idGeneratorService.generatorId("download") + "";
+        String fileName = "studentVipPractice-" + no + "-" + DateUtil.getDate(nowDate) + ".xls";
+        ManagerDownload managerDownload = new ManagerDownload();
+        managerDownload.setType(ExportTypeEnum.STUDENT_VIP_PRACTICE);
+        managerDownload.setUserId(sysUser.getId());
+        managerDownload.setName(fileName);
+        managerDownload.setFileUrl("");
+        managerDownload.setCreateTime(nowDate);
+        managerDownload.setUpdateTime(nowDate);
+        managerDownloadDao.insert(managerDownload);
+        exportService.studentVipPractice(organId, managerDownload);
+        return succeed(fileName+"导出申请已提交,请到【报表中心-下载列表查看】");
+    }
+
+
     @ApiOperation(value = "乐团管理--乐团详情-导出学员列表")
     @RequestMapping("export/musicGroupStudent")
     @PreAuthorize("@pcs.hasPermissions('export/musicGroupStudent')")