Browse Source

增加,获取学生课程作业情况接口

周箭河 4 years ago
parent
commit
67541ef3fc

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -363,8 +363,16 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
 
     /**
      * 获取用户的合作单位
+     *
      * @param userId
      * @return
      */
     CooperationOrgan findUserMusicGroupCooperationOrgan(@Param("userId") Integer userId);
+
+    /**
+     * 根据ids获取乐团信息
+     * @param ids
+     * @return
+     */
+    List<MusicGroup> getMusicGroupByIds(@Param("ids") List<String> ids);
 }

+ 35 - 19
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentCourseHomeworkDao.java

@@ -1,9 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
-import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
-import com.ym.mec.biz.dal.dto.StudentCourseHomeworkDto;
-import com.ym.mec.biz.dal.dto.StudentHomeworkRecordDto;
-import com.ym.mec.biz.dal.dto.StudentServeCourseHomeworkDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.CourseHomework;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.common.dal.BaseDAO;
@@ -53,46 +50,48 @@ public interface StudentCourseHomeworkDao extends BaseDAO<Long, StudentCourseHom
      * 构建初始学生作业提交记录
      */
     List<StudentCourseHomework> constructInitialStudentHomeworkRecordsWithPayment(@Param("courseScheduleID") Long courseScheduleID,
-                                                                       @Param("courseHomeworkID") Long courseHomeworkID);
+                                                                                  @Param("courseHomeworkID") Long courseHomeworkID);
 
     /**
+     * @param courseScheduleId: 作业编号
+     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentCourseHomework>
      * @describe 根据作业编号获取需要提交作业的学生
      * @author Joburgess
      * @date 2019/10/20
-     * @param courseScheduleId: 作业编号
-     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentCourseHomework>
      */
     List<StudentCourseHomework> findByCourseSchedule(@Param("courseScheduleId") Long courseScheduleId,
                                                      @Param("userName") String userName);
 
     /**
+     * @param courseHomeworkId: 作业编号
+     * @param userId:           用户编号
+     * @return com.ym.mec.biz.dal.entity.StudentCourseHomework
      * @describe 根据作业编号和学生编号查询对应学生作业记录
      * @author Joburgess
      * @date 2019/10/20
-     * @param courseHomeworkId: 作业编号
-     * @param userId: 用户编号
-     * @return com.ym.mec.biz.dal.entity.StudentCourseHomework
      */
     StudentCourseHomework findByStudentAndCourseHomewok(@Param("courseHomeworkId") Long courseHomeworkId,
                                                         @Param("userId") Integer userId);
-	
+
     /**
      * 查询未完成的课程作业
+     *
      * @return
      */
     List<StudentCourseHomework> queryNotDoneHomeworkList();
 
     /**
+     * @param courseIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentCourseHomework>
      * @describe 根据课程查询学生作业记录
      * @author Joburgess
      * @date 2020/3/20
-     * @param courseIds:
-     * @return java.util.List<com.ym.mec.biz.dal.entity.StudentCourseHomework>
      */
     List<StudentCourseHomework> findByCourses(@Param("courseIds") List<Long> courseIds);
 
     /**
      * count课程学员作业列表
+     *
      * @param params
      * @return
      */
@@ -100,37 +99,39 @@ public interface StudentCourseHomeworkDao extends BaseDAO<Long, StudentCourseHom
 
     /**
      * 获取课程学员作业列表
+     *
      * @param params
      * @return
      */
     List<StudentCourseHomeworkDto> findStudentCourseHomeworks(Map<String, Object> params);
 
     int delByCourseScheduleId(Long courseScheduleId);
-    
+
     int batchDelByCourseScheduleId(@Param("courseScheduleIdList") List<Long> courseScheduleIdList);
 
     int countStudentHomeworkRecord(Map<String, Object> params);
+
     List<StudentHomeworkRecordDto> findStudentHomeworkRecord(Map<String, Object> params);
 
     /**
-     * @describe 根据上课时间区间获取学员课堂作业
-     * @author Joburgess
-     * @date 2020.05.27
      * @param startDate:
      * @param endDate:
      * @return java.util.List<com.ym.mec.biz.dal.dto.StudentServeCourseHomeworkDto>
+     * @describe 根据上课时间区间获取学员课堂作业
+     * @author Joburgess
+     * @date 2020.05.27
      */
     List<StudentServeCourseHomeworkDto> findStudentHomeworkWithCourseDateRange(@Param("startDate") String startDate,
                                                                                @Param("endDate") String endDate,
                                                                                @Param("studentIds") List<Integer> studentIds);
 
     /**
-     * @describe
-     * @date 2020.06.15
      * @param startDate:
      * @param endDate:
      * @param studentIds:
      * @return java.util.Set<java.lang.Integer>
+     * @describe
+     * @date 2020.06.15
      */
     Set<Integer> checkStudentHaveHomeworkInDateRange(@Param("startDate") String startDate,
                                                      @Param("endDate") String endDate,
@@ -142,8 +143,23 @@ public interface StudentCourseHomeworkDao extends BaseDAO<Long, StudentCourseHom
 
     /**
      * 获取作业的已回复数
+     *
      * @param homeWorkIds
      * @return
      */
     List<Map<Long, Long>> queryReplied(@Param("homeWorkIds") List<Long> homeWorkIds);
+
+    /**
+     * 获取学生课程作业列表
+     * @param params
+     * @return
+     */
+    List<StudentVisitCourseHomeWorkDto> getStudentCourseHomeWorks(Map<String, Object> params);
+
+    /**
+     * 获取学生课程作业总数
+     * @param params
+     * @return
+     */
+    int getStudentCourseHomeWorksCount(Map<String, Object> params);
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/VipGroupDao.java

@@ -351,4 +351,11 @@ public interface VipGroupDao extends BaseDAO<Long, VipGroup> {
     List<VipCourseStudentInfoDto> queryVipCourseStudentInfo();
 
     List<VipBuyResultDto> getGroupTeachers(@Param("groupIds") List<Long> groupIds);
+
+    /**
+     * 根据ids获取课程组信息
+     *
+     * @return
+     */
+    List<VipGroup> getVipGroupByIds(@Param("ids") List<Long> ids);
 }

+ 81 - 13
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVisitCourseHomeWorkDto.java

@@ -1,9 +1,20 @@
 package com.ym.mec.biz.dal.dto;
 
-import com.ym.mec.biz.dal.entity.StudentCourseHomework;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 
-public class StudentVisitCourseHomeWorkDto extends StudentCourseHomework {
+import java.util.Date;
+
+public class StudentVisitCourseHomeWorkDto {
+    @ApiModelProperty(value = "课程id",required = false)
+    private Long courseScheduleId;
+
+    @ApiModelProperty(value = "课程类型",required = false)
+    private GroupType groupType;
+
+    @ApiModelProperty(value = "课程组id",required = false)
+    private String groupId;
 
     @ApiModelProperty(value = "课程名称",required = false)
     private String courseName;
@@ -14,12 +25,29 @@ public class StudentVisitCourseHomeWorkDto extends StudentCourseHomework {
     @ApiModelProperty(value = "布置老师",required = false)
     private String teacherName;
 
-    @ApiModelProperty(value = "作业标题",required = false)
-    private String title;
-
     @ApiModelProperty(value = "作业内容",required = false)
     private String content;
 
+    @ApiModelProperty(value = "提交状态",required = false)
+    private YesOrNoEnum status;
+
+    @ApiModelProperty(value = "是否已经回复",required = false)
+    private YesOrNoEnum isReplied;
+
+    @ApiModelProperty(value = "是否已查看")
+    private YesOrNoEnum isView;
+
+    @ApiModelProperty(value = "布置时间")
+    private Date createTime;
+
+    public GroupType getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(GroupType groupType) {
+        this.groupType = groupType;
+    }
+
     public String getCourseName() {
         return courseName;
     }
@@ -44,14 +72,6 @@ public class StudentVisitCourseHomeWorkDto extends StudentCourseHomework {
         this.teacherName = teacherName;
     }
 
-    public String getTitle() {
-        return title;
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
     public String getContent() {
         return content;
     }
@@ -59,4 +79,52 @@ public class StudentVisitCourseHomeWorkDto extends StudentCourseHomework {
     public void setContent(String content) {
         this.content = content;
     }
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
+    public Long getCourseScheduleId() {
+        return courseScheduleId;
+    }
+
+    public void setCourseScheduleId(Long courseScheduleId) {
+        this.courseScheduleId = courseScheduleId;
+    }
+
+    public YesOrNoEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(YesOrNoEnum status) {
+        this.status = status;
+    }
+
+    public YesOrNoEnum getIsReplied() {
+        return isReplied;
+    }
+
+    public void setIsReplied(YesOrNoEnum isReplied) {
+        this.isReplied = isReplied;
+    }
+
+    public YesOrNoEnum getIsView() {
+        return isView;
+    }
+
+    public void setIsView(YesOrNoEnum isView) {
+        this.isView = isView;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
 }

+ 65 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentCourseHomeWorkQueryInfo.java

@@ -0,0 +1,65 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+public class StudentCourseHomeWorkQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "学生id")
+    private Long userId;
+
+    @ApiModelProperty(value = "开始时间")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private Date endTime;
+
+    @ApiModelProperty(value = "是否提交")
+    private YesOrNoEnum status;
+
+    @ApiModelProperty(value = "是否回复")
+    private YesOrNoEnum isReplied;
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public YesOrNoEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(YesOrNoEnum status) {
+        this.status = status;
+    }
+
+    public YesOrNoEnum getIsReplied() {
+        return isReplied;
+    }
+
+    public void setIsReplied(YesOrNoEnum isReplied) {
+        this.isReplied = isReplied;
+    }
+}

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentCourseHomeworkService.java

@@ -2,9 +2,11 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
 import com.ym.mec.biz.dal.dto.StudentCourseHomeworkDto;
+import com.ym.mec.biz.dal.dto.StudentVisitCourseHomeWorkDto;
 import com.ym.mec.biz.dal.entity.CourseHomework;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
+import com.ym.mec.biz.dal.page.StudentCourseHomeWorkQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
@@ -87,4 +89,11 @@ public interface StudentCourseHomeworkService extends BaseService<Long, StudentC
      * @return java.util.Map<java.lang.String,java.lang.Object>
      */
     Map<String, Object> getCourseHomeworkDetail(CourseHomeworkQueryInfo queryInfo);
+
+    /**
+     * 获取学生作业列表
+     * @param queryInfo
+     * @return
+     */
+    PageInfo<StudentVisitCourseHomeWorkDto> getStudentHomeWorks(StudentCourseHomeWorkQueryInfo queryInfo);
 }

+ 106 - 43
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java

@@ -5,9 +5,11 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
+import com.ym.mec.biz.dal.page.StudentCourseHomeWorkQueryInfo;
 import com.ym.mec.biz.service.CourseHomeworkService;
 import com.ym.mec.biz.service.StudentCourseHomeworkService;
 import com.ym.mec.biz.service.StudentServeService;
@@ -34,6 +36,7 @@ import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
+
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 
 @Service
@@ -65,6 +68,12 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
     private SubjectDao subjectDao;
     @Autowired
     private StudentServeService studentServeService;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
+    @Autowired
+    private VipGroupDao vipGroupDao;
+    @Autowired
+    private PracticeGroupDao practiceGroupDao;
 
     @Override
     public BaseDAO<Long, StudentCourseHomework> getDAO() {
@@ -93,15 +102,15 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void submitHomework(StudentCourseHomework bean) {
-        if(Objects.isNull(bean.getAttachments())||StringUtils.isBlank(bean.getAttachments())){
+        if (Objects.isNull(bean.getAttachments()) || StringUtils.isBlank(bean.getAttachments())) {
             throw new BizException("请选择作业");
         }
         StudentCourseHomework existHomework = studentCourseHomeworkDao.get(bean.getId());
         if (Objects.isNull(bean) || Objects.isNull(bean.getId()) || Objects.isNull(existHomework)) {
             throw new BizException("作业不存在");
         }
-        Date now=new Date();
-        if (DateUtil.daysBetween(existHomework.getCreateTime(), now)>=14){
+        Date now = new Date();
+        if (DateUtil.daysBetween(existHomework.getCreateTime(), now) >= 14) {
             throw new BizException("该作业已超出可提交时间范围,无法提交作业。");
         }
 
@@ -122,21 +131,21 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         LocalDate createDateTime = LocalDateTime.ofInstant(courseSchedule.getClassDate().toInstant(), DateUtil.zoneId).toLocalDate();
         LocalDate createMonday = createDateTime.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
         LocalDate homeworkCreateDateTime = LocalDateTime.ofInstant(existHomework.getCreateTime().toInstant(), DateUtil.zoneId).toLocalDate();
-        boolean isOk=false;
-        switch (createDateTime.getDayOfWeek()){
+        boolean isOk = false;
+        switch (createDateTime.getDayOfWeek()) {
             case SATURDAY:
-                if(createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS)<4){
-                    isOk=true;
+                if (createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS) < 4) {
+                    isOk = true;
                 }
                 break;
             case SUNDAY:
-                if(createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS)<3){
-                    isOk=true;
+                if (createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS) < 3) {
+                    isOk = true;
                 }
                 break;
             default:
-                if(createDateTime.get(DateUtil.weekFields.weekOfYear())==homeworkCreateDateTime.get(DateUtil.weekFields.weekOfYear())){
-                    isOk=true;
+                if (createDateTime.get(DateUtil.weekFields.weekOfYear()) == homeworkCreateDateTime.get(DateUtil.weekFields.weekOfYear())) {
+                    isOk = true;
                 }
                 break;
         }
@@ -146,7 +155,7 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
 //        CourseHomework temp = courseHomeworkService.get(courseHomework.getId());
 //        if (temp.getExpectNum().equals(courseHomework.getCompletedNum())) {
         Integer userId = bean.getUserId();
-        if(courseSchedule.getType().equals(CourseScheduleType.VIP)){
+        if (courseSchedule.getType().equals(CourseScheduleType.VIP)) {
             userId = null;
         }
 
@@ -157,25 +166,25 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         }
 //        }
 
-        if(push){
+        if (push) {
             Map<Integer, String> userMap = new HashMap<>();
             userMap.put(courseSchedule.getActualTeacherId(), courseSchedule.getActualTeacherId().toString());
             SysUser user = teacherDao.getUser(bean.getUserId());
             String notifyUrl = "9?courseScheduleID=" + bean.getId() + "&userId=" + bean.getUserId() + "&studentCourseHomeworkId=" + bean.getId() + "&extra=0";
             String extra = "dayaedu?courseScheduleID=" + courseSchedule.getId() + "&userId=" + bean.getUserId() + "&studentCourseHomeworkId=" + bean.getId() + "&extra=0";
             String courseDate = DateUtil.dateToString(courseSchedule.getClassDate(), "yyyy年MM月dd日");
-            sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH,bean.getUserId().toString(),extra,
+            sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH, bean.getUserId().toString(), extra,
                     new String[]{courseSchedule.getActualTeacherId().toString()},
-                    null,courseDate,courseSchedule.getName());
+                    null, courseDate, courseSchedule.getName());
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.HOMEWORK_SUBMIT_PUSH,
                     userMap, null, 0, notifyUrl, "TEACHER", courseSchedule.getName(), courseDate, user.getUsername());
 
             Date date = new Date();
-            if(date.before(courseHomework.getExpiryDate())){
+            if (date.before(courseHomework.getExpiryDate())) {
                 ClassGroup classGroup = classGroupDao.findByCourseSchedule(existHomework.getCourseScheduleId().intValue(), 0);
-                if(classGroup != null){
+                if (classGroup != null) {
                     SysUser sysUser = sysUserFeignService.queryUserById(existHomework.getUserId());
-                    sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH_GROUP,existHomework.getUserId().toString(),null,
+                    sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH_GROUP, existHomework.getUserId().toString(), null,
                             new String[]{classGroup.getId().toString()},
                             null, sysUser.getUsername());
                 }
@@ -189,12 +198,12 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             throw new BizException("作业不存在");
         }
         CourseHomeworkStudentDetailDto courseHomeworkStudentDetail = studentCourseHomeworkDao.findCourseHomeworkStudentDetail(courseScheduleID, userId);
-        if(Objects.nonNull(courseHomeworkStudentDetail)){
+        if (Objects.nonNull(courseHomeworkStudentDetail)) {
             SysUser student = teacherDao.getUser(userId.intValue());
             courseHomeworkStudentDetail.setStudentId(userId.intValue());
             courseHomeworkStudentDetail.setStudentName(student.getUsername());
             CourseSchedule courseSchedule = courseScheduleDao.get(courseHomeworkStudentDetail.getCourseScheduleId());
-            if(Objects.nonNull(courseSchedule)){
+            if (Objects.nonNull(courseSchedule)) {
                 SysUser teacher = teacherDao.getUser(courseSchedule.getActualTeacherId());
                 courseHomeworkStudentDetail.setTeacherId(courseSchedule.getActualTeacherId());
                 courseHomeworkStudentDetail.setTeacherName(teacher.getRealName());
@@ -212,13 +221,13 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         }
 
         int hours = -1;
-        if(Objects.nonNull(byStudentAndCourseHomewok.getSubmitTime())){
+        if (Objects.nonNull(byStudentAndCourseHomewok.getSubmitTime())) {
             hours = DateUtil.hoursBetween(byStudentAndCourseHomewok.getSubmitTime(), new Date());
         }
         if (byStudentAndCourseHomewok.getIsReplied() == YesOrNoEnum.YES && Integer.valueOf(1).equals(byStudentAndCourseHomewok.getIsRepliedTimely())) {
             return true;
         }
-        if(hours>=0&&hours<=12){
+        if (hours >= 0 && hours <= 12) {
             byStudentAndCourseHomewok.setIsRepliedTimely(1);
         }
         CourseHomework byTeacherAndCourseHomewok = courseHomeworkDao.findByTeacherAndCourseHomewok(courseHomeworkId, teacherId);
@@ -234,25 +243,25 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             LocalDate createMonday = createDateTime.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
 
             LocalDate homeworkCreateDateTime = LocalDateTime.ofInstant(byStudentAndCourseHomewok.getCreateTime().toInstant(), DateUtil.zoneId).toLocalDate();
-            boolean isOk=false;
-            switch (createDateTime.getDayOfWeek()){
+            boolean isOk = false;
+            switch (createDateTime.getDayOfWeek()) {
                 case SATURDAY:
-                    if(createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS)<4){
-                        isOk=true;
+                    if (createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS) < 4) {
+                        isOk = true;
                     }
                     break;
                 case SUNDAY:
-                    if(createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS)<3){
-                        isOk=true;
+                    if (createDateTime.until(homeworkCreateDateTime, ChronoUnit.DAYS) < 3) {
+                        isOk = true;
                     }
                     break;
                 default:
-                    if(createDateTime.get(DateUtil.weekFields.weekOfYear())==homeworkCreateDateTime.get(DateUtil.weekFields.weekOfYear())){
-                        isOk=true;
+                    if (createDateTime.get(DateUtil.weekFields.weekOfYear()) == homeworkCreateDateTime.get(DateUtil.weekFields.weekOfYear())) {
+                        isOk = true;
                     }
                     break;
             }
-            if(createDateTime.isBefore(monDayDate)&&isOk){
+            if (createDateTime.isBefore(monDayDate) && isOk) {
                 studentServeService.updateExercisesSituation(new Date(), new ArrayList<>(Arrays.asList(byStudentAndCourseHomewok.getUserId())), teacherId);
             }
         }
@@ -320,7 +329,7 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
             dataList = studentCourseHomeworkDao.findStudentHomeworkRecord(params);
-            if(!CollectionUtils.isEmpty(dataList)){
+            if (!CollectionUtils.isEmpty(dataList)) {
                 List<Integer> teacherIds = dataList.stream().map(StudentHomeworkRecordDto::getTeacherId).collect(Collectors.toList());
                 List<SimpleUserDto> teachers = teacherDao.findSimpleTeachers(teacherIds);
                 Map<Integer, String> idNameMap = teachers.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, u -> u.getUserName()));
@@ -342,11 +351,11 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         studentCourseHomeworkDao.insert(studentCourseHomework);
         CourseHomework courseHomework = courseHomeworkDao.get(studentCourseHomework.getCourseHomeworkId());
         Date date = new Date();
-        if(date.before(courseHomework.getExpiryDate())){
+        if (date.before(courseHomework.getExpiryDate())) {
             ClassGroup classGroup = classGroupDao.findByCourseSchedule(studentCourseHomework.getCourseScheduleId().intValue(), 0);
-            if(classGroup != null){
+            if (classGroup != null) {
                 SysUser sysUser = sysUserFeignService.queryUserById(studentCourseHomework.getUserId());
-                sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH_GROUP,studentCourseHomework.getUserId().toString(),null,
+                sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH_GROUP, studentCourseHomework.getUserId().toString(), null,
                         new String[]{classGroup.getId().toString()},
                         null, sysUser.getUsername());
             }
@@ -358,7 +367,7 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         Map<String, Object> result = new HashMap<>();
         CourseHomework courseHomework = courseHomeworkDao.findByCourseSchedule(queryInfo.getCourseScheduleId());
 
-        if(Objects.isNull(courseHomework)){
+        if (Objects.isNull(courseHomework)) {
             result.put("countInfo", null);
             return result;
         }
@@ -379,14 +388,14 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             List<Student> students = studentDao.findByStudentIds(new ArrayList<>(studentIds));
             Set<Integer> subjectIds = new HashSet<>();
             for (Student student : students) {
-                if(StringUtils.isBlank(student.getSubjectIdList())){
+                if (StringUtils.isBlank(student.getSubjectIdList())) {
                     continue;
                 }
                 Set<Integer> studentSubjectIds = Arrays.stream(student.getSubjectIdList().split(",")).mapToInt(Integer::valueOf).boxed().collect(Collectors.toSet());
                 subjectIds.addAll(studentSubjectIds);
             }
             List<Subject> subjects = new ArrayList<>();
-            if(!CollectionUtils.isEmpty(subjectIds)){
+            if (!CollectionUtils.isEmpty(subjectIds)) {
                 subjects = subjectDao.findBySubjectIds(new ArrayList<>(subjectIds));
             }
             Map<Integer, SimpleUserDto> studentInfoMap = usersSimpleInfo.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, s -> s, (s1, s2) -> s1));
@@ -394,10 +403,10 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             for (StudentCourseHomework studentCourseHomework : dataList) {
                 StudentCourseHomeworkDto s = new StudentCourseHomeworkDto();
                 s.setStudentId(studentCourseHomework.getUserId());
-                s.setStudentName(studentInfoMap.containsKey(s.getStudentId())?studentInfoMap.get(s.getStudentId()).getNickName():"");
-                s.setPhone(studentInfoMap.containsKey(s.getStudentId())?studentInfoMap.get(s.getStudentId()).getPhone():"");
-                s.setSubjectIds(studentMap.containsKey(s.getStudentId())?studentMap.get(s.getStudentId()).getSubjectIdList():"");
-                if(StringUtils.isNotBlank(s.getSubjectIds())){
+                s.setStudentName(studentInfoMap.containsKey(s.getStudentId()) ? studentInfoMap.get(s.getStudentId()).getNickName() : "");
+                s.setPhone(studentInfoMap.containsKey(s.getStudentId()) ? studentInfoMap.get(s.getStudentId()).getPhone() : "");
+                s.setSubjectIds(studentMap.containsKey(s.getStudentId()) ? studentMap.get(s.getStudentId()).getSubjectIdList() : "");
+                if (StringUtils.isNotBlank(s.getSubjectIds())) {
                     Set<Integer> studentSubjectIds = Arrays.stream(s.getSubjectIds().split(",")).mapToInt(Integer::valueOf).boxed().collect(Collectors.toSet());
                     List<String> subjectNames = subjects.stream().filter(sj -> studentSubjectIds.contains(sj.getId())).map(Subject::getName).collect(Collectors.toList());
                     s.setSubjectNames(StringUtils.join(subjectNames, ","));
@@ -411,7 +420,7 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
         }
         pageInfo.setRows(studentCourseHomeworkDtos);
 
-        if(queryInfo.getPage()==1){
+        if (queryInfo.getPage() == 1) {
             params.put("isReplied", 1);
             int repliedNum = studentCourseHomeworkDao.countAll(params);
             CourseHomeworkDto courseHomeworkDto = new CourseHomeworkDto();
@@ -426,4 +435,58 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
 
         return result;
     }
+
+    /**
+     * MUSIC("乐团课"),
+     * VIP("VIP课"),
+     * DEMO("试听课"),
+     * SPORADIC("零星收费"),
+     * PRACTICE("网管课"),
+     *
+     * @param queryInfo
+     * @return
+     */
+    @Override
+    public PageInfo<StudentVisitCourseHomeWorkDto> getStudentHomeWorks(StudentCourseHomeWorkQueryInfo queryInfo) {
+        PageInfo<StudentVisitCourseHomeWorkDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        List<StudentVisitCourseHomeWorkDto> dataList = new ArrayList<>();
+        int count = studentCourseHomeworkDao.getStudentCourseHomeWorksCount(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = studentCourseHomeworkDao.getStudentCourseHomeWorks(params);
+
+            List<String> musicGroupIds = dataList.stream().filter(e -> e.getGroupType().equals(GroupType.MUSIC)).map(StudentVisitCourseHomeWorkDto::getGroupId).distinct().collect(Collectors.toList());
+            List<Long> vipGroupIds = dataList.stream().filter(e -> e.getGroupType().equals(GroupType.VIP)).map(e -> Long.parseLong(e.getGroupId())).distinct().collect(Collectors.toList());
+            List<Long> practiceGroupIds = dataList.stream().filter(e -> e.getGroupType().equals(GroupType.PRACTICE)).map(e -> Long.parseLong(e.getGroupId())).distinct().collect(Collectors.toList());
+
+            Map<String, List<MusicGroup>> musicGroupMap = new HashMap<>();
+            Map<Long, List<VipGroup>> vipGroupMap = new HashMap<>();
+            Map<Long, List<PracticeGroup>> practiceGroupMap = new HashMap<>();
+            if (musicGroupIds.size() > 0) {
+                musicGroupMap = musicGroupDao.getMusicGroupByIds(musicGroupIds).stream().collect(Collectors.groupingBy(MusicGroup::getId));
+            }
+            if (vipGroupIds.size() > 0) {
+                vipGroupMap = vipGroupDao.getVipGroupByIds(vipGroupIds).stream().collect(Collectors.groupingBy(VipGroup::getId));
+            }
+            if (practiceGroupIds.size() > 0) {
+                practiceGroupMap = practiceGroupDao.getWithIds(practiceGroupIds).stream().collect(Collectors.groupingBy(PracticeGroup::getId));
+            }
+            for (StudentVisitCourseHomeWorkDto homeWork : dataList) {
+                if (homeWork.getGroupType().equals(GroupType.MUSIC) && musicGroupMap.get(homeWork.getGroupId()).size() > 0) {
+                    homeWork.setGroupName(musicGroupMap.get(homeWork.getGroupId()).get(0).getName());
+                }
+                if (homeWork.getGroupType().equals(GroupType.VIP) && vipGroupMap.get(Long.parseLong(homeWork.getGroupId())).size() > 0) {
+                    homeWork.setGroupName(vipGroupMap.get(Long.parseLong(homeWork.getGroupId())).get(0).getName());
+                }
+                if (homeWork.getGroupType().equals(GroupType.PRACTICE) && practiceGroupMap.get(Long.parseLong(homeWork.getGroupId())).size() > 0) {
+                    homeWork.setGroupName(practiceGroupMap.get(Long.parseLong(homeWork.getGroupId())).get(0).getName());
+                }
+            }
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
 }

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -674,4 +674,11 @@
         ORDER BY sr.id_ ASC
         LIMIT 1
     </select>
+
+    <select id="getMusicGroupByIds" resultMap="MusicGroup">
+        SELECT * FROM music_group WHERE id_ IN
+        <foreach collection="ids" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
 </mapper>

+ 52 - 5
mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml

@@ -395,10 +395,10 @@
     <sql id="queryAllCondition">
         <where>
             <if test="courseScheduleId!=null">
-                course_schedule_id_=#{courseScheduleId}
+               AND course_schedule_id_=#{courseScheduleId}
             </if>
             <if test="isReplied!=null">
-                is_replied_=#{isReplied}
+               AND is_replied_=#{isReplied}
             </if>
         </where>
     </sql>
@@ -425,12 +425,59 @@
 		</foreach>
 	</delete>
 
-    <select id="getStudentCourseHomeWorks" resultType="com.ym.mec.biz.dal.dto.StudentVisitCourseHomeWorkDto">
-        SELECT sch.course_schedule_id_ courseScheduleId,cs.name_ courseName,sch.create_time_ createTime,t.real_name_ teacherName,
-            ch.content_
+    <resultMap id="StudentVisitCourseHomeWorkDto" type="com.ym.mec.biz.dal.dto.StudentVisitCourseHomeWorkDto">
+        <result column="groupType" property="groupType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="groupId" property="groupId"/>
+        <result column="courseName" property="courseName"/>
+        <result column="createTime" property="createTime"/>
+        <result column="teacherName" property="teacherName"/>
+        <result column="content" property="content"/>
+        <result column="status" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="isReplied" property="isReplied" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="isView" property="isView" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+    </resultMap>
+    <select id="getStudentCourseHomeWorks" resultMap="StudentVisitCourseHomeWorkDto">
+        SELECT sch.course_schedule_id_ courseScheduleId,
+        cs.group_type_          groupType,
+        cs.music_group_id_      groupId,
+        cs.name_                courseName,
+        sch.create_time_        createTime,
+        t.real_name_            teacherName,
+        ch.content_             content,
+        sch.status_             status,
+        sch.is_replied_         isReplied,
+        sch.is_view_            isView
         FROM student_course_homework sch
         LEFT JOIN course_homework ch ON ch.id_ = sch.course_homework_id_
         LEFT JOIN course_schedule cs ON cs.id_ = sch.course_schedule_id_
         LEFT JOIN sys_user t ON t.id_ = cs.actual_teacher_id_
+        <include refid="homeWorkCondition"/>
+        ORDER BY sch.create_time_ DESC
+        <include refid="global.limit"/>
     </select>
+
+    <select id="getStudentCourseHomeWorksCount" resultType="int">
+        SELECT COUNT(*) FROM student_course_homework sch
+        <include refid="homeWorkCondition"/>
+    </select>
+
+    <sql id="homeWorkCondition">
+        <where>
+            <if test="userId!=null">
+                AND sch.user_id_=#{userId}
+            </if>
+            <if test="status!=null">
+                AND sch.status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            <if test="isReplied!=null">
+                AND sch.is_replied_=#{isReplied,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            <if test="startTime != null">
+                AND sch.create_time_ >=#{startTime}
+            </if>
+            <if test="startTime != null">
+                <![CDATA[   AND sch.create_time_<=#{startTime}
+            ]]></if>
+        </where>
+    </sql>
 </mapper>

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -1006,4 +1006,11 @@
             </if>
         </where>
     </select>
+
+    <select id="getVipGroupByIds" resultMap="VipGroup">
+        SELECT * FROM vip_group WHERE id_ IN
+        <foreach collection="ids" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+    </select>
 </mapper>

+ 12 - 4
mec-web/src/main/java/com/ym/mec/web/controller/WebCourseHomeworkController.java

@@ -6,10 +6,12 @@ import com.ym.mec.biz.dal.dao.EmployeeDao;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.page.CourseHomeWorkTemplateQueryInfo;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
+import com.ym.mec.biz.dal.page.StudentCourseHomeWorkQueryInfo;
 import com.ym.mec.biz.service.CourseHomeworkService;
 import com.ym.mec.biz.service.StudentCourseHomeworkService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
@@ -67,10 +69,16 @@ public class WebCourseHomeworkController extends BaseController {
 
 
     @ApiOperation(value = "获取学生作业记录")
-    @GetMapping(value = "/findStudentHomeworkRecord")
-    @PreAuthorize("@pcs.hasPermissions('webCurseHomework/findStudentHomeworkRecord')")
-    public HttpResponseResult findStudentHomeworkRecord(CourseHomeworkQueryInfo queryInfo){
-        return succeed(studentCourseHomeworkService.findStudentHomeworkRecord(queryInfo));
+    @GetMapping(value = "/getStudentHomeWorks")
+    @PreAuthorize("@pcs.hasPermissions('webCurseHomework/getStudentHomeWorks')")
+    public HttpResponseResult getStudentHomeWorks(StudentCourseHomeWorkQueryInfo queryInfo){
+        if (queryInfo.getStartTime() != null) {
+            queryInfo.setStartTime(DateUtil.trunc(queryInfo.getStartTime()));
+        }
+        if (queryInfo.getEndTime() != null) {
+            queryInfo.setEndTime(DateUtil.getLastTimeWithDay(queryInfo.getEndTime()));
+        }
+        return succeed(studentCourseHomeworkService.getStudentHomeWorks(queryInfo));
     }
 
 }