Просмотр исходного кода

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into zx_saas_2023_03

zouxuan 2 лет назад
Родитель
Сommit
ea44653a81
27 измененных файлов с 538 добавлено и 12 удалено
  1. 3 3
      audio-analysis/src/main/java/com/yonge/netty/dto/HardLevelEnum.java
  2. 1 1
      audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java
  3. 3 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SchoolDao.java
  4. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherCloudCourseReportDao.java
  5. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/School.java
  6. 101 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherCloudCourseReport.java
  7. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportEnum.java
  8. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportTypeEnum.java
  9. 40 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherCloudCourseReportQueryInfo.java
  10. 38 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TeacherCloudCourseReportDto.java
  11. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SchoolService.java
  12. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherCloudCourseReportService.java
  13. 14 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java
  14. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolServiceImpl.java
  15. 57 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherCloudCourseReportServiceImpl.java
  16. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampServiceImpl.java
  17. 11 0
      mec-biz/src/main/resources/config/mybatis/SchoolMapper.xml
  18. 92 0
      mec-biz/src/main/resources/config/mybatis/TeacherCloudCourseReportMapper.xml
  19. 1 1
      mec-biz/src/main/resources/config/mybatis/TempLittleArtistTrainingCampMapper.xml
  20. 3 0
      mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java
  21. 5 0
      mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java
  22. 19 0
      mec-task/src/main/java/com/ym/mec/task/jobs/TeacherCloudCourseReportTask.java
  23. 43 0
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  24. 8 0
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java
  25. 32 0
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherCloudCourseReportController.java
  26. 4 0
      mec-web/src/main/resources/exportColumnMapper.ini
  27. 3 3
      mec-web/src/main/resources/logback-spring.xml

+ 3 - 3
audio-analysis/src/main/java/com/yonge/netty/dto/HardLevelEnum.java

@@ -9,20 +9,20 @@ public enum HardLevelEnum implements BaseEnum<String, HardLevelEnum> {
 	 * 完成度范围, 未演奏的范围
 	 */
 	//BEGINNER("入门级", 3, 5, 5, 5, 10, 10, 13, 15, 60, 10), 
-	BEGINNER("入门级", 3, 5, 10, 10, 15, 15, 22, 22, 75, 25), 
+	BEGINNER("入门级", 3, 5, 10, 10, 15, 18, 22, 25, 70, 25), 
 	/**
 	 * 进阶级, 振幅阈值, 频率阈值 <br>
 	 * 节奏有效范围(1分音符), 节奏有效范围(2分音符), 节奏有效范围(4分音符), 节奏有效范围(8分音符), 节奏有效范围(16分音符), 节奏有效范围(32分音符)<br>
 	 * 完成度范围, 未演奏的范围
 	 */
-	ADVANCED("进阶级", 3, 5, 8, 8, 12, 12, 20, 20, 85, 15),
+	ADVANCED("进阶级", 3, 5, 8, 8, 12, 15, 20, 22, 80, 15),
 	//ADVANCED("进阶级", 3, 5, 50, 50, 50, 50, 50, 5, 80, 10),
 	/**
 	 * 大师级, 振幅阈值, 频率阈值 <br>
 	 * 节奏有效范围(1分音符), 节奏有效范围(2分音符), 节奏有效范围(4分音符), 节奏有效范围(8分音符), 节奏有效范围(16分音符), 节奏有效范围(32分音符)<br>
 	 * 完成度范围, 未演奏的范围
 	 */
-	PERFORMER("大师级", 3, 3, 5, 5, 10, 10, 13, 15, 95, 10);
+	PERFORMER("大师级", 3, 3, 5, 5, 10, 12, 15, 18, 90, 10);
 
 	private String msg;
 

+ 1 - 1
audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java

@@ -36,7 +36,7 @@ public class UserChannelContext {
 	private final static Logger LOGGER = LoggerFactory.getLogger(UserChannelContext.class);
 	
 	//打击乐
-	private final static List<Integer> percussionList = Arrays.asList(23, 113);
+	private final static List<Integer> percussionList = Arrays.asList(23, 113, 121);
 	
 	private final static int MIN_FREQUECY = 43;
 	

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SchoolDao.java

@@ -1,7 +1,9 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.School;
+import com.ym.mec.biz.dal.page.SchoolQueryInfo;
 import com.ym.mec.common.dal.BaseDAO;
+
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -55,5 +57,5 @@ public interface SchoolDao extends BaseDAO<Integer, School> {
     List<School> findVipSchoolByUserId2(@Param("userId") Integer userId,
                                        @Param("organId") String organId);
 
-
+    List<School> querySchoolExportList(SchoolQueryInfo queryInfo);
 }

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

@@ -0,0 +1,21 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.TeacherCloudCourseReport;
+import com.ym.mec.biz.dal.vo.TeacherCloudCourseReportDto;
+import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface TeacherCloudCourseReportDao extends BaseDAO<Long, TeacherCloudCourseReport> {
+
+
+    void batchSaveBySelect(@Param("classDate") String classDate);
+
+    void deleteByClassDate(@Param("classDate") String classDate);
+
+    int countReport(Map<String, Object> params);
+
+    List<TeacherCloudCourseReportDto> queryReport(Map<String, Object> params);
+}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/School.java

@@ -65,6 +65,9 @@ public class School extends BaseEntity {
 	
 	@ApiModelProperty(value = "备注", required = false)
 	private String remark;
+	
+	@ApiModelProperty(value = "合作单位名称", required = false)
+	private String cooperationOrganName;
 
 	public String getRealName() {
 		return realName;
@@ -194,6 +197,14 @@ public class School extends BaseEntity {
 		this.remark = remark;
 	}
 
+	public String getCooperationOrganName() {
+		return cooperationOrganName;
+	}
+
+	public void setCooperationOrganName(String cooperationOrganName) {
+		this.cooperationOrganName = cooperationOrganName;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 101 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherCloudCourseReport.java

@@ -0,0 +1,101 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 对应数据库表(teacher_cloud_course_report):
+ */
+public class TeacherCloudCourseReport extends BaseEntity {
+
+	private Long id;
+
+	@ApiModelProperty(value = "老师编号")
+	private Long teacherId;
+
+	@ApiModelProperty(value = "分部")
+	private Integer organId;
+
+	@ApiModelProperty(value = "课程时长")
+	private Integer courseTime;
+
+	@ApiModelProperty(value = "训练时长")
+	private Integer playTime;
+
+	@ApiModelProperty(value = "训练总时长")
+	private Integer totalPlayTime;
+
+	@ApiModelProperty(value = "上课时间")
+	private String classDate;
+
+	private Integer tenantId;
+
+	public Integer getTotalPlayTime() {
+		return totalPlayTime;
+	}
+
+	public void setTotalPlayTime(Integer totalPlayTime) {
+		this.totalPlayTime = totalPlayTime;
+	}
+
+	@Override
+	public Integer getTenantId() {
+		return tenantId;
+	}
+
+	@Override
+	public void setTenantId(Integer tenantId) {
+		this.tenantId = tenantId;
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getTeacherId() {
+		return teacherId;
+	}
+
+	public void setTeacherId(Long teacherId) {
+		this.teacherId = teacherId;
+	}
+
+	public Integer getOrganId() {
+		return organId;
+	}
+
+	public void setOrganId(Integer organId) {
+		this.organId = organId;
+	}
+
+	public Integer getCourseTime() {
+		return courseTime;
+	}
+
+	public void setCourseTime(Integer courseTime) {
+		this.courseTime = courseTime;
+	}
+
+	public Integer getPlayTime() {
+		return playTime;
+	}
+
+	public void setPlayTime(Integer playTime) {
+		this.playTime = playTime;
+	}
+
+	public String getClassDate() {
+		return classDate;
+	}
+
+	public void setClassDate(String classDate) {
+		this.classDate = classDate;
+	}
+}

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportEnum.java

@@ -87,6 +87,7 @@ public enum ExportEnum implements BaseEnum<String, ExportEnum> {
     EXPORT_CLOUD_TEACHER_SUM("EXPORT_CLOUD_TEACHER_SUM", "云教练统计导出"),
     EXPORT_CLOUD_TEACHER_SUM_DETAIL("EXPORT_CLOUD_TEACHER_SUM_DETAIL", "云教练统计详情导出"),
     EXPORT_INDEX_COOP("EXPORT_INDEX_COOP", "首页经营数据合作单位导出"),
+    EXPORT_TEACHER_CLOUD_COURSE_REPORT("EXPORT_TEACHER_CLOUD_COURSE_REPORT","老师云教练使用数据"),
     ;
 
     private String code;

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

@@ -25,7 +25,8 @@ public enum ExportTypeEnum implements BaseEnum<Integer, ExportTypeEnum> {
 	EXPORT_COURSE_CONSUMER_SUM(19, "课耗统计导出"),
 	EXPORT_CLOUD_TEACHER_SUM(20, "云教练统计导出"),
 	CLASS_GROUP(21, "班级列表导出"),
-	EXPORT_CLOUD_TEACHER_SUM_DETAIL(22, "云教练统计详情导出")
+	EXPORT_CLOUD_TEACHER_SUM_DETAIL(22, "云教练统计详情导出"),
+	EXPORT_TEACHER_CLOUD_COURSE_REPORT(23, "老师云教练使用数据")
 	;
 
 	private Integer code;

+ 40 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherCloudCourseReportQueryInfo.java

@@ -0,0 +1,40 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+
+/**
+* @author zx
+* @date 2021/9/26 15:52
+*/
+public class TeacherCloudCourseReportQueryInfo extends QueryInfo {
+
+    private String organId;
+
+    private String startTime;
+
+    private String endTime;
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
+    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;
+    }
+}

+ 38 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TeacherCloudCourseReportDto.java

@@ -0,0 +1,38 @@
+package com.ym.mec.biz.dal.vo;
+
+import com.ym.mec.biz.dal.entity.TeacherCloudCourseReport;
+import io.swagger.annotations.ApiModel;
+
+@ApiModel(value = "老师课程云教练使用统计")
+public class TeacherCloudCourseReportDto extends TeacherCloudCourseReport {
+
+    private String organName;
+
+    private String subjectName;
+
+    private String teacherName;
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+}

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SchoolService.java

@@ -45,4 +45,6 @@ public interface SchoolService extends BaseService<Integer, School> {
     List<School> findVipSchoolByTeacher(Integer teacherId,String organId);
 
     PageInfo<School> queryPageDetail(SchoolQueryInfo queryInfo);
+    
+    List<School> querySchoolExportList(SchoolQueryInfo queryInfo);
 }

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherCloudCourseReportService.java

@@ -0,0 +1,17 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.TeacherCloudCourseReport;
+import com.ym.mec.biz.dal.page.TeacherCloudCourseReportQueryInfo;
+import com.ym.mec.biz.dal.vo.TeacherCloudCourseReportDto;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.BaseService;
+import org.springframework.stereotype.Service;
+
+@Service
+public interface TeacherCloudCourseReportService extends BaseService<Long, TeacherCloudCourseReport> {
+
+    void taskReport();
+
+
+    PageInfo<TeacherCloudCourseReportDto> queryReportPage(TeacherCloudCourseReportQueryInfo queryInfo);
+}

+ 14 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -8,6 +8,7 @@ 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.*;
+import com.ym.mec.biz.dal.vo.TeacherCloudCourseReportDto;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.controller.BaseController;
@@ -188,7 +189,7 @@ public class ExportServiceImpl implements ExportService {
     @Autowired
     private StudentTeacherMapperDao studentTeacherMapperDao;
     @Autowired
-    private SchoolDao schoolDao;
+    private TeacherCloudCourseReportService teacherCloudCourseReportService;
 
     private static final ExecutorService exportExecutorService = Executors.newFixedThreadPool(10);
     @Autowired
@@ -381,6 +382,7 @@ public class ExportServiceImpl implements ExportService {
         exportManageFuncMap.put(ExportEnum.EXPORT_CLOUD_TEACHER_SUM, (info) -> exportCloudTeacherSum(info));
         exportManageFuncMap.put(ExportEnum.EXPORT_CLOUD_TEACHER_SUM_DETAIL, (info) -> exportCloudTeacherSumDetail(info));
         exportManageFuncMap.put(ExportEnum.CLASS_GROUP, info -> exportClassGroup(info));
+        exportManageFuncMap.put(ExportEnum.EXPORT_TEACHER_CLOUD_COURSE_REPORT, info -> exportTeacherCloudCourseReport(info));
     }
 
     private List<StudentServeExportDto> exportStudentServeInfo(Map<String, Object> info) {
@@ -1547,6 +1549,17 @@ public class ExportServiceImpl implements ExportService {
                 managerDownload.getName());
     }
 
+    private HttpResponseResult exportTeacherCloudCourseReport(Map<String, Object> info){
+        TeacherCloudCourseReportQueryInfo queryInfo = JSONObject.parseObject(JSONObject.toJSONString(info), TeacherCloudCourseReportQueryInfo.class);
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
+        List<TeacherCloudCourseReportDto> rows = teacherCloudCourseReportService.queryReportPage(queryInfo).getRows();
+        checkRows(rows);
+        SysUser user = sysUserService.getUser();
+        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.EXPORT_TEACHER_CLOUD_COURSE_REPORT,user.getId());
+        return this.asyncExport(() -> this.initExportInfo(rows, managerDownload,ExportEnum.EXPORT_TEACHER_CLOUD_COURSE_REPORT),
+                managerDownload.getName());
+    }
+
     private HttpResponseResult exportClassGroup(Map<String, Object> info){
         SysUser user = sysUserService.getUser();
         ClassGroupQueryInfo queryInfo = JSONObject.parseObject(JSONObject.toJSONString(info), ClassGroupQueryInfo.class);

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolServiceImpl.java

@@ -71,4 +71,9 @@ public class SchoolServiceImpl extends BaseServiceImpl<Integer, School>  impleme
 		}
 		return schoolPageInfo;
 	}
+
+	@Override
+	public List<School> querySchoolExportList(SchoolQueryInfo queryInfo) {
+		return schoolDao.querySchoolExportList(queryInfo);
+	}
 }

+ 57 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherCloudCourseReportServiceImpl.java

@@ -0,0 +1,57 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.TeacherCloudCourseReportDao;
+import com.ym.mec.biz.dal.entity.TeacherCloudCourseReport;
+import com.ym.mec.biz.dal.page.TeacherCloudCourseReportQueryInfo;
+import com.ym.mec.biz.dal.vo.TeacherCloudCourseReportDto;
+import com.ym.mec.biz.service.TeacherCloudCourseReportService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.collection.MapUtil;
+import com.ym.mec.util.date.DateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+@Service
+public class TeacherCloudCourseReportServiceImpl extends BaseServiceImpl<Long, TeacherCloudCourseReport>  implements TeacherCloudCourseReportService {
+	
+	@Autowired
+	private TeacherCloudCourseReportDao teacherCloudCourseReportDao;
+
+	@Override
+	public BaseDAO<Long, TeacherCloudCourseReport> getDAO() {
+		return teacherCloudCourseReportDao;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void taskReport() {
+		String classDate = DateUtil.format(DateUtil.addDays(new Date(),-1), DateUtil.DEFAULT_PATTERN);
+		teacherCloudCourseReportDao.deleteByClassDate(classDate);
+		teacherCloudCourseReportDao.batchSaveBySelect(classDate);
+	}
+
+	@Override
+	public PageInfo<TeacherCloudCourseReportDto> queryReportPage(TeacherCloudCourseReportQueryInfo queryInfo) {
+		PageInfo<TeacherCloudCourseReportDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<TeacherCloudCourseReportDto> dataList = null;
+		int count = teacherCloudCourseReportDao.countReport(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = teacherCloudCourseReportDao.queryReport(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampServiceImpl.java

@@ -249,7 +249,7 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
                 if (Objects.nonNull(t)) {
                     vo.setPlayTime(t);
                     //大于1200秒
-                    if (t.intValue() > 1200) {
+                    if (t.intValue() > 600) {
                         vo.setIsFinish(1);
                     }
                 }

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/SchoolMapper.xml

@@ -21,6 +21,7 @@
         <result column="longitude_latitude_" property="longitudeLatitude"/>
         <result column="subsidy_" property="subsidy"/>
         <result column="cooperation_organ_id_" property="cooperationOrganId"/>
+        <result column="cooperation_organ_name_" property="cooperationOrganName"/>
         <result column="remark_" property="remark"/>
         <result column="tenant_id_" property="tenantId"/>
     </resultMap>
@@ -160,4 +161,14 @@
             #{schoolId}
         </foreach>
     </select>
+    
+    <select id="querySchoolExportList" resultMap="School" parameterType="map">
+        SELECT s.id_,o.`name_` organName,ifnull(co.`name_`,'租赁') cooperation_organ_name_ ,s.`name_` name_,ifnull(s.`subsidy_`,0) subsidy_,s.`address_` ,ifnull(su.real_name_,'公共')  real_name_ FROM school s
+		LEFT JOIN `organization` o on o.`id_` = s.`organ_id_` 
+		LEFT JOIN `cooperation_organ` co on co.`id_` = s.`cooperation_organ_id_` 
+        LEFT JOIN sys_user su ON su.id_ = s.user_id_
+        WHERE s.del_flag_ != 1
+        <include refid="queryPageSql"/>
+        ORDER BY s.id_
+    </select>
 </mapper>

+ 92 - 0
mec-biz/src/main/resources/config/mybatis/TeacherCloudCourseReportMapper.xml

@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.TeacherCloudCourseReportDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.TeacherCloudCourseReport" id="TeacherCloudCourseReport">
+		<result column="id_" property="id" />
+		<result column="organ_id_" property="organId" />
+		<result column="teacher_id_" property="teacherId" />
+		<result column="course_time_" property="courseTime" />
+		<result column="play_time_" property="playTime" />
+		<result column="total_play_time_" property="totalPlayTime" />
+		<result column="class_date_" property="classDate" />
+		<result column="tenant_id_" property="tenantId" />
+	</resultMap>
+	<insert id="batchSaveBySelect">
+		insert into teacher_cloud_course_report (teacher_id_, organ_id_, course_time_, play_time_,total_play_time_, class_date_, tenant_id_)
+		select cs.actual_teacher_id_,cs.organ_id_,cs.courseTime,CASE WHEN SUM(mcr.play_time_) IS NULL THEN 0 ELSE SUM(mcr.play_time_)/60 END playTime,
+		       CASE WHEN mcr1.totalPlayTime IS NULL THEN 0 ELSE mcr1.totalPlayTime END totalPlayTime,
+			   cs.class_date_,cs.tenant_id_ from (
+		select cs.actual_teacher_id_,cs.organ_id_,SUM(TIMESTAMPDIFF(MINUTE,cs.startTime,cs.endTime)) courseTime,cs.class_date_,cs.tenant_id_,cs.startTime,cs.endTime
+		FROM (select cs.actual_teacher_id_,concat(cs.class_date_,' ',cs.start_class_time_) startTime,
+		concat(cs.class_date_,' ',cs.end_class_time_) endTime,cs.organ_id_,cs.class_date_,cs.tenant_id_,cs.id_ FROM course_schedule cs
+		where cs.class_date_ = #{classDate} AND cs.teach_mode_ = 'OFFLINE' AND cs.group_type_ = 'MUSIC') cs
+		group by cs.actual_teacher_id_,cs.class_date_) cs
+		left join sys_music_compare_record mcr ON mcr.client_id_ = 'teacher' AND mcr.create_time_ BETWEEN cs.startTime AND cs.endTime AND cs.actual_teacher_id_ = mcr.user_id_
+		left join (select user_id_,SUM(play_time_)/60 totalPlayTime from sys_music_compare_record where client_id_ = 'teacher'
+		AND DATE_FORMAT(create_time_,'%Y-%m-%d') = #{classDate}
+		group by user_id_) mcr1 ON cs.actual_teacher_id_ = mcr1.user_id_
+		group by cs.actual_teacher_id_
+	</insert>
+	<delete id="deleteByClassDate">
+		delete from teacher_cloud_course_report where class_date_ = #{classDate}
+	</delete>
+	<resultMap id="TeacherCloudCourseReportDto" type="com.ym.mec.biz.dal.vo.TeacherCloudCourseReportDto" extends="TeacherCloudCourseReport">
+		<result property="organName" column="organName"/>
+		<result property="teacherName" column="teacherName"/>
+		<result property="subjectName" column="subjectName"/>
+	</resultMap>
+	<select id="queryReport" resultMap="TeacherCloudCourseReportDto">
+		select t.teacher_id_, organ_id_, course_time_, play_time_, total_play_time_, class_date_, teacherName, organName,GROUP_CONCAT(distinct sb.name_) subjectName from (
+		select tccr.teacher_id_,tccr.organ_id_,SUM(tccr.course_time_) course_time_,sum(tccr.play_time_) play_time_,sum(tccr.total_play_time_) total_play_time_,tccr.class_date_,t.subject_id_,
+		su.real_name_ teacherName,o.name_ organName from teacher_cloud_course_report tccr
+		left join sys_user su ON su.id_ = tccr.teacher_id_
+		left join organization o ON o.id_ = tccr.organ_id_
+		left join teacher t ON t.id_ = tccr.teacher_id_
+		<where>
+			<if test="startTime != null and startTime != ''">
+				AND tccr.class_date_ BETWEEN #{startTime} AND #{endTime}
+			</if>
+			<if test="organId != null and organId != ''">
+				AND FIND_IN_SET(tccr.organ_id_,#{organId})
+			</if>
+			<if test="search != null and search != ''">
+				AND (tccr.teacher_id_ = #{search} OR su.real_name_ LIKE CONCAT('%',#{search},'%'))
+			</if>
+			<if test="tenantId != null">
+				AND tccr.tenant_id_ = #{tenantId}
+			</if>
+		</where>
+		group by tccr.teacher_id_
+		) t
+		left join subject sb ON FIND_IN_SET(sb.id_,t.subject_id_)
+		group by t.teacher_id_
+		order by t.organ_id_
+		<if test="sort != null and sort != ''">
+			,${sort} ${order}
+		</if>
+		<include refid="global.limit"/>
+	</select>
+	<select id="countReport" resultType="java.lang.Integer">
+		select COUNT(DISTINCT tccr.teacher_id_) from teacher_cloud_course_report tccr
+		left join sys_user su ON su.id_ = tccr.teacher_id_
+		<where>
+			<if test="startTime != null and startTime != ''">
+				AND tccr.class_date_ BETWEEN #{startTime} AND #{endTime}
+			</if>
+			<if test="organId != null and organId != ''">
+				AND FIND_IN_SET(tccr.organ_id_,#{organId})
+			</if>
+			<if test="tenantId != null">
+				AND tccr.tenant_id_ = #{tenantId}
+			</if>
+			<if test="search != null and search != ''">
+				AND (tccr.teacher_id_ = #{search} OR su.real_name_ LIKE CONCAT('%',#{search},'%'))
+			</if>
+		</where>
+	</select>
+</mapper>

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

@@ -115,7 +115,7 @@
         WHERE `cr`.`create_time_` &gt;= DATE_ADD(DATE(#{param.startTime}), INTERVAL IF(#{param.startTime} = DATE(#{param.startTime}), 0, 1) DAY)
         AND `cr`.`create_time_` &lt; DATE_ADD(DATE(#{param.endTime}), INTERVAL 1 DAY)
         GROUP BY `cr`.`user_id_`, DATE(`cr`.`create_time_`)
-        HAVING SUM(`cr`.`play_time_`) > 1200
+        HAVING SUM(`cr`.`play_time_`) > 600
         ) `a`
         GROUP BY `a`.`user_id_`
         ) `b`

+ 3 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -290,4 +290,7 @@ public interface TaskRemoteService {
 
     @GetMapping("task/initSysMusicCompareDayData")
     void initSysMusicCompareDayData();
+
+    @GetMapping("task/teacherCloudCourseReport")
+    void teacherCloudCourseReport();
 }

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -339,4 +339,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
     public void initSysMusicCompareDayData() {
 
     }
+
+    @Override
+    public void teacherCloudCourseReport() {
+
+    }
 }

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/TeacherCloudCourseReportTask.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TeacherCloudCourseReportTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.teacherCloudCourseReport();
+	}
+}

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

@@ -18,10 +18,12 @@ import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.excel.POIUtil;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,6 +33,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+
 import java.io.IOException;
 import java.io.OutputStream;
 import java.math.BigDecimal;
@@ -145,6 +148,9 @@ public class ExportController extends BaseController {
     
     @Autowired
     private SysMusicCompareRecordService sysMusicCompareRecordService;
+    
+    @Autowired
+    private SchoolService schoolService;
 
     @ApiOperation(value = "获取可导出字段")
     @RequestMapping("export/getFields")
@@ -2951,4 +2957,41 @@ public class ExportController extends BaseController {
             }
         }
     }
+    
+    @ApiOperation(value = "教学点管理导出")
+    @PostMapping("export/exportSchoolList")
+    @PreAuthorize("@pcs.hasPermissions('export/exportSchoolList')")
+    public void exportSchoolList(HttpServletResponse response, SchoolQueryInfo queryInfo) throws IOException {
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
+        List<School> rows = schoolService.querySchoolExportList(queryInfo);
+        if (rows.size() < 1) {
+            throw new BizException("没有可导出数据");
+        }
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "编号", "教学点来源", "教学点名称","可用状态",
+                    "租赁费用","上课地点详情"}, new String[]{
+                    "organName", "id", "cooperationOrganName", "name", "realName","subsidy","address"}, rows);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attac:wq" +
+                    "hment;filename=SchoolList-" + 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();
+                }
+            }
+        }
+    }
 }

+ 8 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -126,6 +126,8 @@ public class TaskController extends BaseController {
     private CooperationShareProfitService cooperationShareProfitService;
     @Autowired
     private StudentTeacherMapperService studentTeacherMapperService;
+    @Autowired
+    private TeacherCloudCourseReportService teacherCloudCourseReportService;
 
 	@GetMapping(value = "/initSysMusicCompareDayData")
 	public void initSysMusicCompareDayData(){
@@ -621,6 +623,12 @@ public class TaskController extends BaseController {
         tempLittleArtistTrainingCampService.checkCampState();
     }
 
+    @ApiOperation("统计老师课程云教练使用时长")
+    @GetMapping(value = "/teacherCloudCourseReport")
+    public void  teacherCloudCourseReport(){
+		teacherCloudCourseReportService.taskReport();
+    }
+
     @ApiOperation("每天早上8点执行-提醒当天开启训练营并已分群的用户开始训练")
     @GetMapping(value = "/pushStartTrain")
     public void  pushStartTrain(){

+ 32 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TeacherCloudCourseReportController.java

@@ -0,0 +1,32 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.biz.dal.page.TeacherCloudCourseReportQueryInfo;
+import com.ym.mec.biz.dal.vo.TeacherCloudCourseReportDto;
+import com.ym.mec.biz.service.TeacherCloudCourseReportService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(tags = "老师课程云教练使用时长统计")
+@RequestMapping("teacherCloudCourseReport")
+@RestController
+public class TeacherCloudCourseReportController extends BaseController {
+
+    @Autowired
+    private TeacherCloudCourseReportService teacherCloudCourseReportService;
+
+    @ApiOperation(value = "分页查询")
+    @PostMapping("/queryReportPage")
+    @PreAuthorize("@pcs.hasPermissions('teacherCloudCourseReport/queryReportPage')")
+    public HttpResponseResult<PageInfo<TeacherCloudCourseReportDto>> queryReportPage(@RequestBody TeacherCloudCourseReportQueryInfo queryInfo){
+        return succeed(teacherCloudCourseReportService.queryReportPage(queryInfo));
+    }
+}

+ 4 - 0
mec-web/src/main/resources/exportColumnMapper.ini

@@ -337,3 +337,7 @@ fieldColumns = ["musicGroupId", "musicGroupName", "organName", "name","type.msg"
 [首页经营数据合作单位导出]
 headColumns = ["合作单位", "总金额"]
 fieldColumns = ["name", "amount"]
+
+[老师云教练使用数据]
+headColumns = ["分部", "老师姓名", "声部", "课程时长(分)", "课程云教练使用时长(分)", "云教练使用总时长(分)"]
+fieldColumns = ["organName", "teacherName", "subjectName", "courseTime", "playTime", "totalPlayTime"]

+ 3 - 3
mec-web/src/main/resources/logback-spring.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration scan="true" scanPeriod="10 seconds">
 
-    <property name="LOG_HOME" value="/mdata/logs/web-%d{yyyy-MM-dd_HH}-%i.log"/>
+    <property name="LOG_HOME" value="/Users/chenxiaoyu/Documents/logs/web-%d{yyyy-MM-dd_HH}-%i.log"/>
     <property name="CONSOLE_LOG_PATTERN"
               value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n"/>
 
@@ -30,7 +30,7 @@
     <appender name="messagefile"
               class="ch.qos.logback.core.rolling.RollingFileAppender">
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <FileNamePattern>/mdata/logs/web-message-%d{yyyy-MM-dd_HH}-%i.log</FileNamePattern>
+            <FileNamePattern>/Users/chenxiaoyu/Documents/logs/web-message-%d{yyyy-MM-dd_HH}-%i.log</FileNamePattern>
             <MaxHistory>90</MaxHistory>
             <TimeBasedFileNamingAndTriggeringPolicy
                     class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
@@ -46,7 +46,7 @@
     <appender name="liveFile"
               class="ch.qos.logback.core.rolling.RollingFileAppender">
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <FileNamePattern>/mdata/logs/web-live-%d{yyyy-MM-dd_HH}-%i.log</FileNamePattern>
+            <FileNamePattern>/Users/chenxiaoyu/Documents/logs/web-live-%d{yyyy-MM-dd_HH}-%i.log</FileNamePattern>
             <MaxHistory>90</MaxHistory>
             <TimeBasedFileNamingAndTriggeringPolicy
                     class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">