zouxuan 2 years ago
parent
commit
baa53a9eaf
20 changed files with 318 additions and 158 deletions
  1. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMusicCompareRecordDao.java
  2. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseHomeworkStudentDetailDto.java
  3. 90 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExportCompareRecordDto.java
  4. 1 14
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExportDto.java
  5. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExtraExerciseStudentsDto.java
  6. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentVisit.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. 15 15
      mec-biz/src/main/java/com/ym/mec/biz/service/ExportService.java
  10. 92 80
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java
  11. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java
  12. 17 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java
  13. 3 1
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesReplyMapper.xml
  14. 2 0
      mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml
  15. 7 3
      mec-biz/src/main/resources/config/mybatis/StudentVisitMapper.xml
  16. 25 0
      mec-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml
  17. 6 27
      mec-student/src/main/java/com/ym/mec/student/controller/StudentCourseHomeworkController.java
  18. 1 2
      mec-util/src/main/java/com/ym/mec/util/excel/POIUtil.java
  19. 1 4
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  20. 5 1
      mec-web/src/main/resources/exportColumnMapper.ini

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

@@ -101,4 +101,6 @@ public interface SysMusicCompareRecordDao extends BaseDAO<Long, SysMusicCompareR
                                         @Param("heardLevel") HeardLevelEnum heardLevel);
     
     int queryCurrentDatePlayTimeByUserId(Integer userId);
+
+    List<ExportCompareRecordDto> exportCompareRecord(@Param("organId") String organId);
 }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseHomeworkStudentDetailDto.java

@@ -88,6 +88,28 @@ public class CourseHomeworkStudentDetailDto {
 
     private Date submitTime;
 
+    @ApiModelProperty(value = "是否可以提交作业",required = false)
+    private Boolean submitFlag = true;
+
+    @ApiModelProperty(value = "作业创建时间",required = false)
+    private Date createTime;
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Boolean getSubmitFlag() {
+        return submitFlag;
+    }
+
+    public void setSubmitFlag(Boolean submitFlag) {
+        this.submitFlag = submitFlag;
+    }
+
     public Date getSubmitTime() {
         return submitTime;
     }

+ 90 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExportCompareRecordDto.java

@@ -0,0 +1,90 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class ExportCompareRecordDto{
+
+    private String organName;
+
+    private Integer userId;
+
+    private String username;
+
+    private String phone;
+
+    @ApiModelProperty(value = "训练时长")
+    private Integer playTime;
+
+    @ApiModelProperty(value = "训练次数")
+    private Integer playNum;
+
+    @ApiModelProperty(value = "训练天数")
+    private Integer playDays;
+
+    @ApiModelProperty(value = "评测次数")
+    private Integer heardNum;
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    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 String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public Integer getPlayTime() {
+        return playTime;
+    }
+
+    public void setPlayTime(Integer playTime) {
+        this.playTime = playTime;
+    }
+
+    public Integer getPlayNum() {
+        return playNum;
+    }
+
+    public void setPlayNum(Integer playNum) {
+        this.playNum = playNum;
+    }
+
+    public Integer getPlayDays() {
+        return playDays;
+    }
+
+    public void setPlayDays(Integer playDays) {
+        this.playDays = playDays;
+    }
+
+    public Integer getHeardNum() {
+        return heardNum;
+    }
+
+    public void setHeardNum(Integer heardNum) {
+        this.heardNum = heardNum;
+    }
+}

+ 1 - 14
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ExportDto.java

@@ -7,18 +7,13 @@ import java.util.List;
 import java.util.Map;
 
 public class ExportDto {
-    public ExportDto() {
-    }
 
-    public ExportDto(ExportEnum exportEnum, List<String> headColumns) {
+    public ExportDto(ExportEnum exportEnum) {
         this.exportEnum = exportEnum;
-        this.headColumns = headColumns;
     }
 
     private ExportEnum exportEnum;
 
-    private List<String> headColumns;
-
     private Map<String,Object> queryInfo = new HashMap<>();
 
     public Map<String, Object> getQueryInfo() {
@@ -36,12 +31,4 @@ public class ExportDto {
     public void setExportEnum(ExportEnum exportEnum) {
         this.exportEnum = exportEnum;
     }
-
-    public List<String> getHeadColumns() {
-        return headColumns;
-    }
-
-    public void setHeadColumns(List<String> headColumns) {
-        this.headColumns = headColumns;
-    }
 }

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

@@ -41,6 +41,17 @@ public class ExtraExerciseStudentsDto extends ExtracurricularExercisesReply {
 
     private String existVipCourseStr;
 
+    @ApiModelProperty(value = "作业创建时间")
+    private Date homeworkCreateTime;
+
+    public Date getHomeworkCreateTime() {
+        return homeworkCreateTime;
+    }
+
+    public void setHomeworkCreateTime(Date homeworkCreateTime) {
+        this.homeworkCreateTime = homeworkCreateTime;
+    }
+
     public String getMusicScoreId() {
         return musicScoreId;
     }

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

@@ -190,6 +190,17 @@ public class StudentVisit extends BaseEntity {
 
     private Long objectId;
 
+    @ApiModelProperty(value = "回访图片", required = true)
+    private String attachments;
+
+    public String getAttachments() {
+        return attachments;
+    }
+
+    public void setAttachments(String attachments) {
+        this.attachments = attachments;
+    }
+
     public FeedbackTypeDescEnum getFeedbackTypeDesc() {
         return feedbackTypeDesc;
     }

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

@@ -76,6 +76,7 @@ public enum ExportEnum implements BaseEnum<String, ExportEnum> {
     EXERCISES_SITUATION("EXERCISES_SITUATION", "服务指标导出"),
     EXPORT_STUDENT_SUBCOURSE("EXPORT_STUDENT_SUBCOURSE", "活动资格导出"),
     EXPORT_STUDENT_SERVE_INFO("EXPORT_STUDENT_SERVE_INFO", "乐团学生服务指标导出"),
+    EXPORT_TRAINING_STATISTICS("EXPORT_TRAINING_STATISTICS", "训练统计导出"),
     ;
 
     private String code;

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

@@ -15,7 +15,8 @@ public enum ExportTypeEnum implements BaseEnum<Integer, ExportTypeEnum> {
 	MUSIC_GROUP_COURSE_LIST(9, "乐团课表详情导出"),
 	MUSIC_GROUP_DATA_EXPORT(10, "乐团数据导出"),
 	EXPORT_STUDENT_SUBCOURSE(11, "活动资格导出"),
-	EXPORT_STUDENT_SERVE_INFO(12, "乐团学生服务指标导出");
+	EXPORT_STUDENT_SERVE_INFO(12, "乐团学生服务指标导出"),
+	EXPORT_TRAINING_STATISTICS(13, "训练统计导出");
 	;
 
 	private Integer code;

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

@@ -30,7 +30,7 @@ public interface ExportService {
 
     <T> void export(HttpServletResponse response, List<T> rows, ExportDto exportDto) throws IOException;
 
-    Map<ExportEnum, BiFunction<Map<String, Object>,List<String>, HttpResponseResult>> getExportManageFuncMap();
+    Map<ExportEnum, Function<Map<String, Object>, HttpResponseResult>> getExportManageFuncMap();
 
     Map<ExportEnum, Function<Map<String, Object>, List>> getExportFuncMap();
 
@@ -255,45 +255,45 @@ public interface ExportService {
     void musicGroupRegister(HttpServletResponse response, ExportDto exportDto) throws IOException;
 
     //财务管理导出
-    HttpResponseResult routeOrderList(Map<String, Object> info,List<String> headColumns);
+    HttpResponseResult routeOrderList(Map<String, Object> info);
 
     //学员小课记录导出
-    HttpResponseResult exportStudentVipPractice(Map<String, Object> info,List<String> headColumns);
+    HttpResponseResult exportStudentVipPractice(Map<String, Object> info);
 
     //学员小课记录导出
-    HttpResponseResult exportStudentVipCourseInfo(Map<String, Object> info, List<String> headColumns);
+    HttpResponseResult exportStudentVipCourseInfo(Map<String, Object> info);
 
     //vip学员课程管理
-    HttpResponseResult exportVipStudentCourseManage(Map<String, Object> info, List<String> headColumns) throws Exception;
+    HttpResponseResult exportVipStudentCourseManage(Map<String, Object> info) throws Exception;
 
     //导出活动资格
-    HttpResponseResult exportStudentSubCourse(Map<String, Object> info, List<String> headColumns);
+    HttpResponseResult exportStudentSubCourse(Map<String, Object> info);
 
     //学员小课记录导出
-    HttpResponseResult exportStudentMusicTheoryCourseInfo(Map<String, Object> info, List<String> headColumns);
+    HttpResponseResult exportStudentMusicTheoryCourseInfo(Map<String, Object> info);
 
     //订单列表导出
-    HttpResponseResult orderList(Map<String, Object> info,List<String> headColumns);
+    HttpResponseResult orderList(Map<String, Object> info);
 
     //订单列表汇总导出
-    HttpResponseResult orderListSum(Map<String, Object> info,List<String> headColumns);
+    HttpResponseResult orderListSum(Map<String, Object> info);
 
     //保存下载记录
     ManagerDownload saveManagerDownload(ExportTypeEnum exportTypeEnum, Integer userId);
 
-    void orderList(Map<String, Object> params, ManagerDownload managerDownload,List<String> headColumns);
+    void orderList(Map<String, Object> params, ManagerDownload managerDownload);
 
-    void orderListSum(Map<String, Object> params, ManagerDownload managerDownload,List<String> headColumns);
+    void orderListSum(Map<String, Object> params, ManagerDownload managerDownload);
 
-    void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload,List<String> headColumns);
+    void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload);
 
     void superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo, ManagerDownload managerDownload);
 
-    void studentVipPractice(String organId, ManagerDownload managerDownload, Integer tenantId,List<String> headColumns);
+    void studentVipPractice(String organId, ManagerDownload managerDownload, Integer tenantId);
 
-    void queryStudentCourseInfo(String organId, Integer tenantId, String vip, ManagerDownload managerDownload, List<String> headColumns,ExportEnum exportEnum);
+    void queryStudentCourseInfo(String organId, Integer tenantId, String vip, ManagerDownload managerDownload,ExportEnum exportEnum);
 
-    void queryVipStudentCourseManage(String organId, Integer tenantId, ManagerDownload managerDownload, List<String> headColumns, ExportEnum exportEnum);
+    void queryVipStudentCourseManage(String organId, Integer tenantId, ManagerDownload managerDownload, ExportEnum exportEnum);
 
     void exportStudentSmallClassStatisticsSum(StudentStatisticsQueryInfo queryInfo, ManagerDownload managerDownload);
 

+ 92 - 80
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -38,6 +38,7 @@ import org.springframework.util.CollectionUtils;
 import javax.annotation.PostConstruct;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
+import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
@@ -178,6 +179,8 @@ public class ExportServiceImpl implements ExportService {
     private StudentStatisticsService studentStatisticsService;
     @Autowired
     private ActivityUserMapperService activityUserMapperService;
+    @Autowired
+    private SysMusicCompareRecordDao sysMusicCompareRecordDao;
 
     private static final ExecutorService exportExecutorService = Executors.newFixedThreadPool(10);
     @Autowired
@@ -190,11 +193,7 @@ public class ExportServiceImpl implements ExportService {
 
 
     @Override
-    public Map<String, String> getExportMap(ExportDto exportDto) throws IOException {
-        List<String> paramColumns = exportDto.getHeadColumns();
-        if (paramColumns == null || paramColumns.size() == 0) {
-            throw new BizException("请选择导出字段");
-        }
+    public Map<String, String> getExportMap(ExportDto exportDto){
         if (exportDto.getExportEnum() == null) {
             throw new BizException("请选择导出类型");
         }
@@ -205,12 +204,12 @@ public class ExportServiceImpl implements ExportService {
         for (int i = 0; i < headColumns.size(); i++) {
             headMap.put(headColumns.get(i), fieldColumns.get(i));
         }
-        headMap.keySet().removeAll(org.apache.commons.collections.CollectionUtils.subtract(headColumns, paramColumns));
+//        headMap.keySet().removeAll(org.apache.commons.collections.CollectionUtils.subtract(headColumns, fieldColumns));
         return headMap;
     }
 
     @Override
-    public List<String> getExportFields(ExportEnum exportEnum) throws IOException {
+    public List<String> getExportFields(ExportEnum exportEnum){
         SysUser sysUser = sysUserService.getUser();
         if (exportEnum == ExportEnum.ORDER_LIST1 || exportEnum == ExportEnum.ORDER_LIST2) {
             if (sysUser.getTenantId() <= 1) {
@@ -228,9 +227,15 @@ public class ExportServiceImpl implements ExportService {
         return JSONObject.parseObject(loadColumnMapper(exportEnum).get("headColumns"), List.class);
     }
 
-    private Map<String, String> loadColumnMapper(ExportEnum exportEnum) throws IOException {
-        InputStream inputStream = new ClassPathResource("exportColumnMapper.ini").getInputStream();
-        return IniFileUtil.readIniFile(inputStream, exportEnum.getMsg());
+    private Map<String, String> loadColumnMapper(ExportEnum exportEnum){
+        Map<String, String> map = null;
+        try {
+            InputStream inputStream = new ClassPathResource("exportColumnMapper.ini").getInputStream();
+            map = IniFileUtil.readIniFile(inputStream, exportEnum.getMsg());
+        } catch (Exception e) {
+            throw new BizException(e);
+        }
+        return map;
     }
 
     @Override
@@ -265,12 +270,12 @@ public class ExportServiceImpl implements ExportService {
     }
 
     //导出到报表中心
-    private Map<ExportEnum, BiFunction<Map<String, Object>, List<String>, HttpResponseResult>> exportManageFuncMap = new HashMap<>(ExportEnum.values().length);
+    private Map<ExportEnum, Function<Map<String, Object>, HttpResponseResult>> exportManageFuncMap = new HashMap<>(ExportEnum.values().length);
     //直接导出
     private Map<ExportEnum, Function<Map<String, Object>, List>> exportFuncMap = new HashMap<>(ExportEnum.values().length);
 
     @Override
-    public Map<ExportEnum, BiFunction<Map<String, Object>, List<String>, HttpResponseResult>> getExportManageFuncMap() {
+    public Map<ExportEnum, Function<Map<String, Object>, HttpResponseResult>> getExportManageFuncMap() {
         return exportManageFuncMap;
     }
 
@@ -345,17 +350,18 @@ public class ExportServiceImpl implements ExportService {
         //导出到报表中心
 //        exportManageFuncMap.put(ExportEnum.SUPER_FIND_COURSE_SCHEDULES, (info,headColumns) -> this.superFindCourseSchedules(info,headColumns));
         //针对不同的用户有不同的模板
-        exportManageFuncMap.put(ExportEnum.ROUTE_ORDER_LIST1, (info, headColumns) -> routeOrderList(info, headColumns));
-        exportManageFuncMap.put(ExportEnum.ROUTE_ORDER_LIST2, (info, headColumns) -> routeOrderList(info, headColumns));
-        exportManageFuncMap.put(ExportEnum.ORDER_LIST1, (info, headColumns) -> orderList(info, headColumns));
-        exportManageFuncMap.put(ExportEnum.ORDER_LIST2, (info, headColumns) -> orderList(info, headColumns));
-        exportManageFuncMap.put(ExportEnum.ORDER_LIST_SUM, (info, headColumns) -> orderListSum(info, headColumns));
-        exportManageFuncMap.put(ExportEnum.STUDENT_VIP_PRACTICE, (info, headColumns) -> exportStudentVipPractice(info, headColumns));
-        exportManageFuncMap.put(ExportEnum.STUDENT_VIP_COURSE_INFO, (info, headColumns) -> exportStudentVipCourseInfo(info, headColumns));
-        exportManageFuncMap.put(ExportEnum.STUDENT_MUSIC_THEORY_COURSE_INFO, (info, headColumns) -> exportStudentMusicTheoryCourseInfo(info, headColumns));
-        exportManageFuncMap.put(ExportEnum.VIP_STUDENT_COURSE_MANAGE, (info, headColumns) -> exportVipStudentCourseManage(info, headColumns));
-        exportManageFuncMap.put(ExportEnum.EXPORT_STUDENT_SUBCOURSE, (info, headColumns) -> exportStudentSubCourse(info, headColumns));
-        exportManageFuncMap.put(ExportEnum.EXPORT_STUDENT_SERVE_INFO, (info, headColumns) -> exportStudentServeInfo(info, headColumns));
+        exportManageFuncMap.put(ExportEnum.ROUTE_ORDER_LIST1, (info) -> routeOrderList(info));
+        exportManageFuncMap.put(ExportEnum.ROUTE_ORDER_LIST2, (info) -> routeOrderList(info));
+        exportManageFuncMap.put(ExportEnum.ORDER_LIST1, (info) -> orderList(info));
+        exportManageFuncMap.put(ExportEnum.ORDER_LIST2, (info) -> orderList(info));
+        exportManageFuncMap.put(ExportEnum.ORDER_LIST_SUM, (info) -> orderListSum(info));
+        exportManageFuncMap.put(ExportEnum.STUDENT_VIP_PRACTICE, (info) -> exportStudentVipPractice(info));
+        exportManageFuncMap.put(ExportEnum.STUDENT_VIP_COURSE_INFO, (info) -> exportStudentVipCourseInfo(info));
+        exportManageFuncMap.put(ExportEnum.STUDENT_MUSIC_THEORY_COURSE_INFO, (info) -> exportStudentMusicTheoryCourseInfo(info));
+        exportManageFuncMap.put(ExportEnum.VIP_STUDENT_COURSE_MANAGE, (info) -> exportVipStudentCourseManage(info));
+        exportManageFuncMap.put(ExportEnum.EXPORT_STUDENT_SUBCOURSE, (info) -> exportStudentSubCourse(info));
+        exportManageFuncMap.put(ExportEnum.EXPORT_STUDENT_SERVE_INFO, (info) -> exportStudentServeInfo(info));
+        exportManageFuncMap.put(ExportEnum.EXPORT_TRAINING_STATISTICS, (info) -> exportCompareRecord(info));
 
 
     }
@@ -1377,7 +1383,7 @@ public class ExportServiceImpl implements ExportService {
 
     //财务管理导出
     @Override
-    public HttpResponseResult routeOrderList(Map<String, Object> info, List<String> headColumns) {
+    public HttpResponseResult routeOrderList(Map<String, Object> info) {
         StudentPaymentOrderQueryInfo queryInfo = JSONObject.parseObject(JSONObject.toJSONString(info), StudentPaymentOrderQueryInfo.class);
         SysUser sysUser = sysUserService.getUser();
         queryInfo.setRoutingOrganId(organizationService.getEmployeeOrgan(sysUser.getId(), queryInfo.getRoutingOrganId(), sysUser.getIsSuperAdmin()));
@@ -1400,13 +1406,13 @@ public class ExportServiceImpl implements ExportService {
             return BaseController.failed("数据集太大,不能导出.最大数据集不能超过50000");
         }
         ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.ROUTE_ORDER, sysUser.getId());
-        return this.asyncExport(() -> this.routeOrderList(params, managerDownload, headColumns),
+        return this.asyncExport(() -> this.routeOrderList(params, managerDownload),
                 managerDownload.getName());
     }
 
     //学员小课记录导出
     @Override
-    public HttpResponseResult exportStudentVipPractice(Map<String, Object> info, List<String> headColumns) {
+    public HttpResponseResult exportStudentVipPractice(Map<String, Object> info) {
         String organId = getParam(info, "organId", String.class);
         Boolean hasCourse = courseScheduleStudentPaymentDao.hasCourse(organId, TenantContextHolder.getTenantId());
         if (hasCourse == null || !hasCourse) {
@@ -1414,13 +1420,13 @@ public class ExportServiceImpl implements ExportService {
         }
         Integer tenantId = TenantContextHolder.getTenantId();
         ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.STUDENT_VIP_PRACTICE, sysUserService.getUserId());
-        return this.asyncExport(() -> this.studentVipPractice(organId, managerDownload, tenantId, headColumns),
+        return this.asyncExport(() -> this.studentVipPractice(organId, managerDownload, tenantId),
                 managerDownload.getName());
     }
 
     //学员小课记录导出
     @Override
-    public HttpResponseResult exportStudentVipCourseInfo(Map<String, Object> info, List<String> headColumns) {
+    public HttpResponseResult exportStudentVipCourseInfo(Map<String, Object> info) {
         String organId = getParam(info, "organId", String.class);
         Integer tenantId = TenantContextHolder.getTenantId();
         Boolean hasCourse = courseScheduleStudentPaymentDao.hasStudentMusicTheoryCourseInfo(organId, tenantId, "VIP");
@@ -1428,40 +1434,56 @@ public class ExportServiceImpl implements ExportService {
             return BaseController.failed("没有可导出的数据");
         }
         ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.STUDENT_VIP_COURSE_INFO, sysUserService.getUserId());
-        return this.asyncExport(() -> this.queryStudentCourseInfo(organId, tenantId, "VIP", managerDownload, headColumns, ExportEnum.STUDENT_VIP_COURSE_INFO),
+        return this.asyncExport(() -> this.queryStudentCourseInfo(organId, tenantId, "VIP", managerDownload, ExportEnum.STUDENT_VIP_COURSE_INFO),
                 managerDownload.getName());
     }
 
     //vip学员课程管理
     @Override
-    public HttpResponseResult exportVipStudentCourseManage(Map<String, Object> info, List<String> headColumns) {
+    public HttpResponseResult exportVipStudentCourseManage(Map<String, Object> info) {
         SysUser sysUser = sysUserService.getUser();
         String organId = organizationService.getEmployeeOrgan(sysUser.getId(), getParam(info, "organId", String.class), sysUser.getIsSuperAdmin());
         ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.VIP_STUDENT_COURSE_MANAGE, sysUser.getId());
         Integer tenantId = TenantContextHolder.getTenantId();
-        return this.asyncExport(() -> this.queryVipStudentCourseManage(organId, tenantId, managerDownload, headColumns, ExportEnum.VIP_STUDENT_COURSE_MANAGE),
+        return this.asyncExport(() -> this.queryVipStudentCourseManage(organId, tenantId, managerDownload, ExportEnum.VIP_STUDENT_COURSE_MANAGE),
                 managerDownload.getName());
     }
 
     @Override
-    public HttpResponseResult exportStudentSubCourse(Map<String, Object> info, List<String> headColumns) {
+    public HttpResponseResult exportStudentSubCourse(Map<String, Object> info) {
         SysUser sysUser = sysUserService.getUser();
         String organId = organizationService.getEmployeeOrgan(sysUser.getId(), getParam(info, "organId", String.class), sysUser.getIsSuperAdmin());
         Integer tenantId = TenantContextHolder.getTenantId();
-
         List<ExportStudentSubCourse> rows = activityUserMapperService.exportStudentSubCourse(organId, tenantId);
+        this.checkRows(rows);
+        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.EXPORT_STUDENT_SUBCOURSE, sysUser.getId());
+        return this.asyncExport(() -> this.initExportInfo(rows, managerDownload, ExportEnum.EXPORT_STUDENT_SUBCOURSE),
+                managerDownload.getName());
+    }
+
+    private <T> void checkRows(List<T> rows){
         if (CollectionUtils.isEmpty(rows)) {
-            return BaseController.failed("没有可导出的数据");
+            throw new BizException("没有可导出的数据");
         }
         if (rows.size() > 50000) {
-            return BaseController.failed("数据集太大,不能导出.最大数据集不能超过50000");
+            throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
         }
-        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.EXPORT_STUDENT_SUBCOURSE, sysUser.getId());
-        return this.asyncExport(() -> this.queryStudentSubCourse(rows, managerDownload, headColumns, ExportEnum.EXPORT_STUDENT_SUBCOURSE),
+    }
+
+    //导出训练统计
+    private HttpResponseResult exportCompareRecord(Map<String, Object> info){
+        BaseOrganQueryInfo queryInfo = JSONObject.parseObject(JSONObject.toJSONString(info), BaseOrganQueryInfo.class);
+        SysUser user = sysUserService.getUser();
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(user.getId(), queryInfo.getOrganId(), user.getIsSuperAdmin()));
+        List<ExportCompareRecordDto> rows = sysMusicCompareRecordDao.exportCompareRecord(queryInfo.getOrganId());
+        this.checkRows(rows);
+        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.EXPORT_TRAINING_STATISTICS,user.getId());
+        return this.asyncExport(() -> this.initExportInfo(rows, managerDownload,ExportEnum.EXPORT_TRAINING_STATISTICS),
                 managerDownload.getName());
     }
 
-    private HttpResponseResult exportStudentServeInfo(Map<String, Object> info, List<String> headColumns) {
+
+    private HttpResponseResult exportStudentServeInfo(Map<String, Object> info) {
         SysUser sysUser = sysUserService.getUser();
 
         String organId = organizationService.getEmployeeOrgan(sysUser.getId(), getParam(info, "organId", String.class), sysUser.getIsSuperAdmin());
@@ -1478,27 +1500,21 @@ public class ExportServiceImpl implements ExportService {
             return BaseController.failed("数据集太大,不能导出.最大数据集不能超过50000");
         }
         ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.EXPORT_STUDENT_SERVE_INFO, sysUser.getId());
-        return this.asyncExport(() -> this.queryStudentServeInfo(rows, managerDownload, headColumns, ExportEnum.EXPORT_STUDENT_SERVE_INFO),
+        return this.asyncExport(() -> this.initExportInfo(rows, managerDownload, ExportEnum.EXPORT_STUDENT_SERVE_INFO),
                 managerDownload.getName());
     }
 
     @Autowired
     private StudentExtracurricularExercisesSituationDao studentExtracurricularExercisesSituationDao;
 
-    private HttpResponseResult queryStudentServeInfo(List<StudentServeDto> rows, ManagerDownload managerDownload, List<String> headColumns, ExportEnum exportEnum) {
-        exportManagerDownload(getHSSFWorkbook(rows, headColumns, exportEnum), managerDownload);
-        return BaseController.succeed();
-    }
-
-    private HttpResponseResult queryStudentSubCourse(List<ExportStudentSubCourse> rows, ManagerDownload managerDownload, List<String> headColumns, ExportEnum exportEnum) {
-        exportManagerDownload(getHSSFWorkbook(rows, headColumns, exportEnum), managerDownload);
-        return BaseController.succeed();
+    private <T> void initExportInfo(List<T> rows, ManagerDownload managerDownload, ExportEnum exportEnum) {
+        exportManagerDownload(getHSSFWorkbook(rows,exportEnum), managerDownload);
     }
 
 
     //学员小课记录导出
     @Override
-    public HttpResponseResult exportStudentMusicTheoryCourseInfo(Map<String, Object> info, List<String> headColumns) {
+    public HttpResponseResult exportStudentMusicTheoryCourseInfo(Map<String, Object> info) {
         String organId = getParam(info, "organId", String.class);
         Integer tenantId = TenantContextHolder.getTenantId();
         Boolean hasCourse = courseScheduleStudentPaymentDao.hasStudentMusicTheoryCourseInfo(organId, tenantId, "THEORY");
@@ -1506,13 +1522,13 @@ public class ExportServiceImpl implements ExportService {
             return BaseController.failed("没有可导出的数据");
         }
         ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.STUDENT_MUSIC_THEORY_COURSE_INFO, sysUserService.getUserId());
-        return this.asyncExport(() -> this.queryStudentCourseInfo(organId, tenantId, "THEORY", managerDownload, headColumns, ExportEnum.STUDENT_MUSIC_THEORY_COURSE_INFO),
+        return this.asyncExport(() -> this.queryStudentCourseInfo(organId, tenantId, "THEORY", managerDownload, ExportEnum.STUDENT_MUSIC_THEORY_COURSE_INFO),
                 managerDownload.getName());
     }
 
     //订单列表导出
     @Override
-    public HttpResponseResult orderList(Map<String, Object> info, List<String> headColumns) {
+    public HttpResponseResult orderList(Map<String, Object> info) {
         StudentPaymentOrderQueryInfo queryInfo = JSONObject.parseObject(JSONObject.toJSONString(info), StudentPaymentOrderQueryInfo.class);
         SysUser sysUser = sysUserService.getUser();
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(), queryInfo.getOrganId(), sysUser.getIsSuperAdmin()));
@@ -1534,13 +1550,13 @@ public class ExportServiceImpl implements ExportService {
             return BaseController.failed("数据集太大,不能导出.最大数据集不能超过50000");
         }
         ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.ORDER, sysUser.getId());
-        return this.asyncExport(() -> this.orderList(params, managerDownload, headColumns),
+        return this.asyncExport(() -> this.orderList(params, managerDownload),
                 managerDownload.getName());
     }
 
     //订单列表导出
     @Override
-    public HttpResponseResult orderListSum(Map<String, Object> info, List<String> headColumns) {
+    public HttpResponseResult orderListSum(Map<String, Object> info) {
         StudentPaymentOrderQueryInfo queryInfo = JSONObject.parseObject(JSONObject.toJSONString(info), StudentPaymentOrderQueryInfo.class);
         SysUser sysUser = sysUserService.getUser();
         queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(), queryInfo.getOrganId(), sysUser.getIsSuperAdmin()));
@@ -1562,7 +1578,7 @@ public class ExportServiceImpl implements ExportService {
             return BaseController.failed("数据集太大,不能导出.最大数据集不能超过50000");
         }
         ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.ORDER_LIST_SUM, sysUser.getId());
-        return this.asyncExport(() -> this.orderListSum(params, managerDownload, headColumns),
+        return this.asyncExport(() -> this.orderListSum(params, managerDownload),
                 managerDownload.getName());
     }
 
@@ -1596,7 +1612,7 @@ public class ExportServiceImpl implements ExportService {
 
 
     @Override
-    public void orderList(Map<String, Object> params, ManagerDownload managerDownload, List<String> headColumns) {
+    public void orderList(Map<String, Object> params, ManagerDownload managerDownload) {
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentOrderService.ExportQueryPage(params);
         long i = 1;
         Map<Integer, String> cooperationOrganMap = new HashMap<>();
@@ -2011,12 +2027,12 @@ public class ExportServiceImpl implements ExportService {
             row.setOrderAmount(row.getExpectAmount().add(row.getCouponRemitFee()));
             i++;
         }
-        HSSFWorkbook workbook = getHSSFWorkbook(studentPaymentOrderExportDtos, headColumns, ExportEnum.ORDER_LIST1);
+        HSSFWorkbook workbook = getHSSFWorkbook(studentPaymentOrderExportDtos, ExportEnum.ORDER_LIST1);
         exportManagerDownload(workbook, managerDownload);
     }
 
     @Override
-    public void orderListSum(Map<String, Object> params, ManagerDownload managerDownload, List<String> headColumns) {
+    public void orderListSum(Map<String, Object> params, ManagerDownload managerDownload) {
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentOrderService.ExportQueryPage(params);
         //获取机构费率
         Integer tenantId = (Integer) params.get("tenantId");
@@ -2277,7 +2293,7 @@ public class ExportServiceImpl implements ExportService {
             exportDtoList.add(exportDto);
         }
 
-        HSSFWorkbook workbook = getHSSFWorkbook(exportDtoList, headColumns, ExportEnum.ORDER_LIST_SUM);
+        HSSFWorkbook workbook = getHSSFWorkbook(exportDtoList, ExportEnum.ORDER_LIST_SUM);
         exportManagerDownload(workbook, managerDownload);
     }
 
@@ -2289,7 +2305,7 @@ public class ExportServiceImpl implements ExportService {
         return subtract;
     }
 
-    public void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload, List<String> headColumns) {
+    public void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload) {
         //获取分润订单(不包含订单详情)(纯余额支付不处理)
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentRouteOrderDao.ExportQueryPage1(params);
         if (CollectionUtils.isEmpty(studentPaymentOrderExportDtos)) {
@@ -2441,7 +2457,7 @@ public class ExportServiceImpl implements ExportService {
                 this.setSaleFee(basicOrder);
             }
         }
-        HSSFWorkbook workbook = getHSSFWorkbook(studentPaymentOrderExportDtos, headColumns, ExportEnum.ROUTE_ORDER_LIST1);
+        HSSFWorkbook workbook = getHSSFWorkbook(studentPaymentOrderExportDtos, ExportEnum.ROUTE_ORDER_LIST1);
         exportManagerDownload(workbook, managerDownload);
     }
 
@@ -2464,7 +2480,7 @@ public class ExportServiceImpl implements ExportService {
     }
 
     @Override
-    public void studentVipPractice(String organId, ManagerDownload managerDownload, Integer tenantId, List<String> headColumns) {
+    public void studentVipPractice(String organId, ManagerDownload managerDownload, Integer tenantId) {
         List<StudentVipPracticeExportDto> studentVipPracticeExportDtos = courseScheduleStudentPaymentDao.exportStudentVipPractice(organId, tenantId);
         if (studentVipPracticeExportDtos != null && studentVipPracticeExportDtos.size() > 0) {
             List<Integer> studentIds = studentVipPracticeExportDtos.stream().map(e -> e.getUserId()).distinct().collect(Collectors.toList());
@@ -2531,21 +2547,21 @@ public class ExportServiceImpl implements ExportService {
                 }
             }
         }
-        HSSFWorkbook workbook = getHSSFWorkbook(studentVipPracticeExportDtos, headColumns, ExportEnum.STUDENT_VIP_PRACTICE);
+        HSSFWorkbook workbook = getHSSFWorkbook(studentVipPracticeExportDtos, ExportEnum.STUDENT_VIP_PRACTICE);
         exportManagerDownload(workbook, managerDownload);
     }
 
     @Override
-    public void queryStudentCourseInfo(String organId, Integer tenantId, String groupType, ManagerDownload managerDownload, List<String> headColumns, ExportEnum exportEnum) {
+    public void queryStudentCourseInfo(String organId, Integer tenantId, String groupType, ManagerDownload managerDownload, ExportEnum exportEnum) {
         List<ExportStudentCourseInfoDto> rows = courseScheduleStudentPaymentDao.queryStudentCourseInfo(organId, tenantId, groupType);
-        HSSFWorkbook workbook = getHSSFWorkbook(rows, headColumns, exportEnum);
+        HSSFWorkbook workbook = getHSSFWorkbook(rows, exportEnum);
         exportManagerDownload(workbook, managerDownload);
     }
 
     @Override
-    public void queryVipStudentCourseManage(String organId, Integer tenantId, ManagerDownload managerDownload, List<String> headColumns, ExportEnum exportEnum) {
+    public void queryVipStudentCourseManage(String organId, Integer tenantId, ManagerDownload managerDownload, ExportEnum exportEnum) {
         List<ExportVipStudentCourseManageDto> rows = courseScheduleStudentPaymentDao.queryVipStudentCourseManage(organId, tenantId);
-        exportManagerDownload(getHSSFWorkbook(rows, headColumns, exportEnum), managerDownload);
+        exportManagerDownload(getHSSFWorkbook(rows, exportEnum), managerDownload);
     }
 
     @Override
@@ -2572,24 +2588,20 @@ public class ExportServiceImpl implements ExportService {
     @Override
     public void exportMusicGroupCourseScheduleDetail(queryMusicGroupCourseScheduleQueryInfo queryInfo, ManagerDownload managerDownload) {
         List<MusicGroupCourseScheduleDto> rows = classGroupService.queryMusicGroupCourseScheduleDetail(queryInfo).getRows();
-        try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"课程编号", "课程开始时间", "课程结束时间", "课程名称", "课程类型", "课程状态", "老师签到", "老师签退", "指导老师",
-                            "出勤率", "达标率", "是否服务", "是否布置课后作业", "作业提交率", "结算状态", "是否点名", "备注"},
-                    new String[]{"courseScheduleId", "classDate + ' ' + startClassTime", "classDate + ' ' + endClassTime",
-                            "courseScheduleName", "courseScheduleType.msg", "courseScheduleStatus.msg", "signInStatus.msg",
-                            "signOutStatus.msg", "masterTeacherName",
-                            "courseScheduleStatistics.attendanceRate", "courseScheduleStatistics.standardRate",
-                            "courseScheduleStatistics.serviceFlag == false ? '否':'是'", "courseScheduleStatistics.homeworkFlag == false ? '否':'是'", "courseScheduleStatistics.homeworkCommitRate",
-                            "settlementTime == null?'未结算':'已结算'", "isCallNames.msg", "remark"}, rows);
-            exportManagerDownload(workbook, managerDownload);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
+        HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"课程编号", "课程开始时间", "课程结束时间", "课程名称", "课程类型", "课程状态", "老师签到", "老师签退", "指导老师",
+                        "出勤率", "达标率", "是否服务", "是否布置课后作业", "作业提交率", "结算状态", "是否点名", "备注"},
+                new String[]{"courseScheduleId", "classDate + ' ' + startClassTime", "classDate + ' ' + endClassTime",
+                        "courseScheduleName", "courseScheduleType.msg", "courseScheduleStatus.msg", "signInStatus.msg",
+                        "signOutStatus.msg", "masterTeacherName",
+                        "courseScheduleStatistics.attendanceRate", "courseScheduleStatistics.standardRate",
+                        "courseScheduleStatistics.serviceFlag == false ? '否':'是'", "courseScheduleStatistics.homeworkFlag == false ? '否':'是'", "courseScheduleStatistics.homeworkCommitRate",
+                        "settlementTime == null?'未结算':'已结算'", "isCallNames.msg", "remark"}, rows);
+        exportManagerDownload(workbook, managerDownload);
     }
 
-    public HSSFWorkbook getHSSFWorkbook(List rows, List<String> headColumns, ExportEnum exportEnum) {
+    public HSSFWorkbook getHSSFWorkbook(List rows,ExportEnum exportEnum) {
         try {
-            Map<String, String> headMap = getExportMap(new ExportDto(exportEnum, headColumns));
+            Map<String, String> headMap = getExportMap(new ExportDto(exportEnum));
             String[] header = headMap.keySet().toArray(new String[headMap.keySet().size()]);
             String[] body = headMap.values().toArray(new String[headMap.keySet().size()]);
             return POIUtil.exportExcel(header, body, rows);

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java

@@ -107,15 +107,16 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 		detail.setType("EXTRA");
 		detail.setExpire(DateUtil.isOverdue(extraExerciseReply.getCreateTime(),
 				sysConfigDao.findConfigValue("file_expiration_time")));
+		Date now=new Date();
+		if (DateUtil.daysBetween(extraExerciseReply.getHomeworkCreateTime(), now) > 7){
+			detail.setSubmitFlag(false);
+		}
 
 		String configValue = sysConfigDao.findConfigValue(SysConfigService.HOMEWORK_OPEN_FLAG);
 		if(StringUtils.isEmpty(configValue)){
 			configValue = "0";
 		}
 		detail.setHomeworkOpenFlag(Integer.parseInt(configValue));
-//		if(configValue.equals("0")){
-//			detail.setHasMember(0);
-//		}else {
 		if(StringUtils.isNotEmpty(extraExerciseReply.getMusicScoreId())){
 			List<SysMusicScore> sysMusicScores = sysMusicScoreDao.findByIds(extraExerciseReply.getMusicScoreId());
 			detail.setSysMusicScoreList(sysMusicScores);

+ 17 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java

@@ -249,11 +249,6 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             configValue = "0";
         }
         courseHomeworkStudentDetail.setHomeworkOpenFlag(Integer.parseInt(configValue));
-//        if(configValue.equals("0")){
-//            courseHomeworkStudentDetail.setMusicScoreId(null);
-//            courseHomeworkStudentDetail.setMusicScoreName(null);
-//            courseHomeworkStudentDetail.setHasMember(0);
-//        }else {
         if(StringUtils.isNotEmpty(courseHomeworkStudentDetail.getMusicScoreId())){
             List<SysMusicScore> sysMusicScoreList = sysMusicScoreDao.findByIds(courseHomeworkStudentDetail.getMusicScoreId());
             courseHomeworkStudentDetail.setSysMusicScoreList(sysMusicScoreList);
@@ -264,8 +259,23 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         }
         Student student = studentDao.get(userId.intValue());
         courseHomeworkStudentDetail.setHasMember(student.getMemberRankSettingId()==null?0:1);
-//        }
-		
+
+        Date now = new Date();
+
+        if (DateUtil.daysBetween(courseHomeworkStudentDetail.getCreateTime(), now) > 7) {
+            courseHomeworkStudentDetail.setSubmitFlag(false);
+        }
+        if(courseHomeworkStudentDetail.getSubmitFlag()){
+            //若本周有当前课程所在乐团的服务指标,那么在课程开始当天之后不能再提交作业
+            Date classDate = studentExtracurricularExercisesSituationDao.getHomeworkSituations(courseSchedule.getId(),courseSchedule.getMusicGroupId(),"HOMEWORK",
+                    DateUtil.getWeekMondayWithDate(now),userId.intValue());
+            if(Objects.nonNull(classDate)){
+                int i = classDate.compareTo(DateUtil.stringToDate(DateUtil.format(now, DateUtil.ISO_EXPANDED_DATE_FORMAT), DateUtil.ISO_EXPANDED_DATE_FORMAT));
+                if(i <= 0){
+                    courseHomeworkStudentDetail.setSubmitFlag(false);
+                }
+            }
+        }
         return courseHomeworkStudentDetail;
     }
 

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

@@ -40,6 +40,7 @@
 		<result column="expire_date_" property="expireDate"/>
 		<result column="music_score_id_" property="musicScoreId" />
 		<result column="music_score_content_" property="musicScoreContent" />
+		<result column="homework_create_time_" property="homeworkCreateTime" />
 	</resultMap>
 
 	<sql id="queryPageCondition">
@@ -218,7 +219,8 @@
 			eer.music_score_id_,
 			eer.music_score_content_,
 			eer.standard_flag_,
-			su.username_ student_name_
+			su.username_ student_name_,
+			ee.create_time_ homework_create_time_
 		FROM
 			extracurricular_exercises_reply eer
 			LEFT JOIN extracurricular_exercises ee ON ee.id_=eer.extracurricular_exercises_id_

+ 2 - 0
mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml

@@ -42,6 +42,7 @@
         <result column="completed_num_" property="completedNum"/>
         <result column="expect_num_" property="expectNum"/>
         <result column="attachments_" property="attachments"/>
+        <result column="create_time_" property="createTime"/>
         <result column="score_" property="score"/>
         <result column="music_score_id_" property="musicScoreId"/>
         <result column="music_score_content_" property="musicScoreContent"/>
@@ -239,6 +240,7 @@
                ch.completed_num_,
                ch.expect_num_,
                ch.expiry_date_,
+               ch.create_time_,
                sch.music_score_id_,
                sch.music_score_content_,
                sch.id_  studentCourseHomeworkId,

+ 7 - 3
mec-biz/src/main/resources/config/mybatis/StudentVisitMapper.xml

@@ -20,13 +20,14 @@
         <result column="create_time_" property="createTime"/>
         <result column="object_id_" property="objectId"/>
         <result column="tenant_id_" property="tenantId"/>
+        <result column="attachments_" property="attachments"/>
         <result column="feedback_type_" property="feedbackType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="feedback_type_desc_" property="feedbackTypeDesc" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
     <sql id="Base_Column_List">
         <!--@mbg.generated-->
         id_, music_group_id_, organ_id_, student_id_, teacher_id_, visiter_type_, type_, purpose_, overview_, feedback_,
-        visit_time_, create_time_,tenant_id_,feedback_type_,feedback_type_desc_
+        visit_time_, create_time_,tenant_id_,feedback_type_,feedback_type_desc_,attachments_
     </sql>
     <select id="get" parameterType="java.lang.Integer" resultMap="StudentVisit">
         select
@@ -44,18 +45,21 @@
         <!--@mbg.generated-->
         insert into student_visit (music_group_id_, organ_id_, student_id_, teacher_id_, visiter_type_, feedback_type_,feedback_type_desc_,
         type_, purpose_, overview_,
-        feedback_, visit_time_, create_time_,object_id_,tenant_id_)
+        feedback_, visit_time_, create_time_,object_id_,tenant_id_,attachments_)
         values (#{musicGroupId,jdbcType=VARCHAR}, #{organId,jdbcType=INTEGER}, #{studentId,jdbcType=INTEGER},
         #{teacherId,jdbcType=INTEGER},#{visiterType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
                 #{feedbackType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
                 #{feedbackTypeDesc,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
         #{type,jdbcType=VARCHAR}, #{purpose,jdbcType=VARCHAR}, #{overview,jdbcType=VARCHAR},
-        #{feedback,jdbcType=VARCHAR}, #{visitTime}, #{createTime},#{objectId},#{tenantId})
+        #{feedback,jdbcType=VARCHAR}, #{visitTime}, #{createTime},#{objectId},#{tenantId},#{attachments})
     </insert>
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentVisit">
         <!--@mbg.generated-->
         update student_visit
         <set>
+            <if test="attachments != null and attachments != ''">
+                attachments_ = #{attachments},
+            </if>
             <if test="musicGroupId != null">
                 music_group_id_ = #{musicGroupId,jdbcType=VARCHAR},
             </if>

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

@@ -433,4 +433,29 @@
 	<select id="queryCurrentDatePlayTimeByUserId" resultType="int">
 		SELECT sum(ifnull(cr.`play_time_`,0))  FROM `sys_music_compare_record` cr WHERE date(cr.`create_time_`) = CURDATE() AND cr.`user_id_` = #{userId}
 	</select>
+	<resultMap id="ExportCompareRecordDto" type="com.ym.mec.biz.dal.dto.ExportCompareRecordDto">
+		<result property="userId" column="user_id_" />
+		<result property="username" column="username_" />
+		<result property="phone" column="phone_" />
+		<result property="organName" column="organ_name_" />
+		<result property="heardNum" column="heard_num_" />
+		<result property="playDays" column="play_days_" />
+		<result property="playTime" column="play_time_" />
+		<result property="playNum" column="play_num_" />
+	</resultMap>
+    <select id="exportCompareRecord" resultMap="ExportCompareRecordDto">
+		select o.name_ organ_name_,smcr.user_id_,su.username_,su.phone_,ROUND(sum(smcr.play_time_) / 60) play_time_,
+			   COUNT(su.id_) play_num_,COUNT(DISTINCT DATE_FORMAT(smcr.create_time_,'%Y-%m-%d')) play_days_,
+			   COUNT(CASE WHEN smcr.score_ IS NULL THEN NULL ELSE 1 END) heard_num_
+		from sys_music_compare_record smcr
+		left join sys_user su ON su.id_ = smcr.user_id_
+		left join organization o ON o.id_ = su.organ_id_
+		<where>
+			<if test="organId != null and organId != ''">
+				AND FIND_IN_SET(su.organ_id_, #{organId})
+			</if>
+		</where>
+		group by smcr.user_id_
+		order by o.id_;
+	</select>
 </mapper>

+ 6 - 27
mec-student/src/main/java/com/ym/mec/student/controller/StudentCourseHomeworkController.java

@@ -1,7 +1,5 @@
 package com.ym.mec.student.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
@@ -9,6 +7,7 @@ import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
 import com.ym.mec.biz.service.StudentCourseHomeworkService;
 import com.ym.mec.biz.service.StudentServeService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
@@ -18,12 +17,9 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Objects;
-
 /**
  * @Author Joburgess
  * @Date 2019/9/18
@@ -38,7 +34,7 @@ public class StudentCourseHomeworkController extends BaseController {
     @Autowired
     private ExtracurricularExercisesReplyService extracurricularExercisesReplyService;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private StudentServeService studentServeService;
 
@@ -82,22 +78,14 @@ public class StudentCourseHomeworkController extends BaseController {
     @ApiOperation(value = "获取学生作业界面详细信息")
     @GetMapping(value = "/findCourseHomeworkStudentDetail")
     public Object findCourseHomeworkStudentDetail(Long courseScheduleID) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if(Objects.isNull(user)){
-            return failed(HttpStatus.FORBIDDEN,"请登录");
-        }
-        return succeed(studentCourseHomeworkService.findCourseHomeworkStudentDetail(courseScheduleID,user.getId().longValue()));
+        return succeed(studentCourseHomeworkService.findCourseHomeworkStudentDetail(courseScheduleID,sysUserService.getUserId().longValue()));
     }
 
     @ApiOperation(value = "获取学生作业界面详细信息-公用")
     @GetMapping(value = "/findCourseHomeworkStudentDetailPublic")
     public Object findCourseHomeworkStudentDetailPublic(Long courseScheduleID, boolean extra) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if(Objects.isNull(user)){
-            return failed(HttpStatus.FORBIDDEN,"请登录");
-        }
         if(!extra){
-            return succeed(studentCourseHomeworkService.findCourseHomeworkStudentDetail(courseScheduleID,user.getId().longValue()));
+            return succeed(studentCourseHomeworkService.findCourseHomeworkStudentDetail(courseScheduleID,sysUserService.getUserId().longValue()));
         }else{
             return succeed(extracurricularExercisesReplyService.findStudentExtraExerciseDetail(courseScheduleID));
         }
@@ -106,11 +94,7 @@ public class StudentCourseHomeworkController extends BaseController {
     @ApiOperation(value = "获取学生作业记录")
     @GetMapping(value = "/findStudentHomeworkRecord")
     public HttpResponseResult findStudentHomeworkRecord(CourseHomeworkQueryInfo queryInfo){
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if(Objects.isNull(user)){
-            return failed(HttpStatus.FORBIDDEN,"请登录");
-        }
-        queryInfo.setUserId(user.getId().longValue());
+        queryInfo.setUserId(sysUserService.getUserId().longValue());
         return succeed(studentCourseHomeworkService.findStudentHomeworkRecord(queryInfo));
     }
 
@@ -127,11 +111,6 @@ public class StudentCourseHomeworkController extends BaseController {
     @ApiOperation(value = "乐团作业情况")
     @GetMapping("/musicGroupHomeworkStat")
     public HttpResponseResult musicGroupHomeworkStat(String musicGroupId, String year, Integer term) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
         if(StringUtils.isEmpty(year)){
             throw new BizException("请录入年份");
         }
@@ -148,7 +127,7 @@ public class StudentCourseHomeworkController extends BaseController {
             endDay = (Integer.valueOf(year) + 1) + "-02-01";
         }
 
-        return succeed(studentServeService.musicGroupHomeworkStatWithStu(musicGroupId, sysUser.getId(), startDay, endDay));
+        return succeed(studentServeService.musicGroupHomeworkStatWithStu(musicGroupId, sysUserService.getUserId(), startDay, endDay));
     }
 
 }

+ 1 - 2
mec-util/src/main/java/com/ym/mec/util/excel/POIUtil.java

@@ -195,8 +195,7 @@ public class POIUtil {
 	 * @throws InvocationTargetException
 	 * @throws IllegalAccessException
 	 */
-	public static <T> HSSFWorkbook exportExcel(String[] headColumns, String[] fieldColumns, List<T> dataset) throws IOException, IllegalAccessException,
-			InvocationTargetException, NoSuchMethodException {
+	public static <T> HSSFWorkbook exportExcel(String[] headColumns, String[] fieldColumns, List<T> dataset){
 		if (headColumns == null) {
 			throw new UtilException("excel列名不能为空");
 		}

+ 1 - 4
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -170,9 +170,6 @@ public class ExportController extends BaseController {
     @PostMapping("export/managerDownload")
     @PreAuthorize("@pcs.hasPermissions('export/managerDownload')")
     public HttpResponseResult managerDownload(@RequestBody ExportDto exportDto) {
-        if (exportDto.getHeadColumns() == null || exportDto.getHeadColumns().size() == 0) {
-            throw new BizException("请选择导出字段");
-        }
         Map<String, Object> queryInfo = exportDto.getQueryInfo();
         if (queryInfo == null) {
             queryInfo = new HashMap<>(10);
@@ -180,7 +177,7 @@ public class ExportController extends BaseController {
         queryInfo.put("page", 1);
         queryInfo.put("rows", 49999);
         queryInfo.put("isExport", true);
-        return exportService.getExportManageFuncMap().get(exportDto.getExportEnum()).apply(queryInfo, exportDto.getHeadColumns());
+        return exportService.getExportManageFuncMap().get(exportDto.getExportEnum()).apply(queryInfo);
     }
 
 

+ 5 - 1
mec-web/src/main/resources/exportColumnMapper.ini

@@ -288,4 +288,8 @@ fieldColumns = ["organizationName","userId","username","activityId","activityNam
 
 [乐团学生服务指标导出]
 headColumns = ["编号","姓名","乐团名称","分部","服务周期","服务指标总数","已布置","已提交数","点评数","出勤率","达标率"]
-fieldColumns = ["userId","username","musicGroupName","organName","servePeriod", "serveNum","actualExercisesNum","exercisesReplyNum","exercisesMessageNum","signRate","passRate"]
+fieldColumns = ["userId","username","musicGroupName","organName","servePeriod", "serveNum","actualExercisesNum","exercisesReplyNum","exercisesMessageNum","signRate","passRate"]
+
+[训练统计导出]
+headColumns = ["分部", "学员编号", "学员姓名", "手机号", "训练时长(分)", "训练次数", "训练天数", "评测次数"]
+fieldColumns = ["organName", "userId", "username","phone", "playTime", "playNum", "playDays","heardNum"]