Procházet zdrojové kódy

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

yonge před 4 roky
rodič
revize
7d1c574796
25 změnil soubory, kde provedl 817 přidání a 48 odebrání
  1. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseHomeworkDao.java
  2. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentCourseHomeworkDao.java
  3. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseHomeworkDto.java
  4. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SimpleUserDto.java
  5. 55 14
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentCourseHomeworkDto.java
  6. 27 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendancesDto.java
  7. 200 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/WebCourseHomeworkListDto.java
  8. 40 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseHomeWorkTemplateQueryInfo.java
  9. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseHomeworkQueryInfo.java
  10. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseHomeworkService.java
  11. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleStudentPaymentService.java
  12. 2 5
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java
  13. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentCourseHomeworkService.java
  14. 32 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseHomeworkServiceImpl.java
  15. 18 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java
  16. 30 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  17. 80 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java
  18. 76 1
      mec-biz/src/main/resources/config/mybatis/CourseHomeworkMapper.xml
  19. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  20. 36 3
      mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml
  21. 1 0
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  22. 1 14
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleStudentPaymentController.java
  23. 11 0
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleTeacherSalaryController.java
  24. 47 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentCourseHomeworkController.java
  25. 60 0
      mec-web/src/main/java/com/ym/mec/web/controller/WebCourseHomeworkController.java

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseHomeworkDao.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.Mapper;
 import com.ym.mec.biz.dal.dto.TeacherHomeworkListDto;
+import com.ym.mec.biz.dal.dto.WebCourseHomeworkListDto;
 import com.ym.mec.biz.dal.entity.CourseHomework;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
@@ -50,4 +51,18 @@ public interface CourseHomeworkDao extends BaseDAO<Long, CourseHomework> {
 	int delByCourseScheduleId(Long courseScheduleId);
 
 	int batchDelByCourseScheduleId(@Param("courseScheduleIdList") List<Long> courseScheduleIdList);
+
+	/**
+	 * 后台作业列表
+	 * @param params
+	 * @return
+	 */
+    List<WebCourseHomeworkListDto> queryHomePage(Map<String, Object> params);
+
+	/**
+	 * 后台作业列表
+	 * @param params
+	 * @return
+	 */
+	int findHomeCount(Map<String, Object> params);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentCourseHomeworkDao.java

@@ -134,4 +134,15 @@ public interface StudentCourseHomeworkDao extends BaseDAO<Long, StudentCourseHom
     Set<Integer> checkStudentHaveHomeworkInDateRange(@Param("startDate") String startDate,
                                                      @Param("endDate") String endDate,
                                                      @Param("studentIds") List<Integer> studentIds);
+
+    List<StudentCourseHomework> queryAll(Map<String, Object> params);
+
+    int countAll(Map<String, Object> params);
+
+    /**
+     * 获取作业的已回复数
+     * @param homeWorkIds
+     * @return
+     */
+    List<Map<Long, Long>> queryReplied(@Param("homeWorkIds") List<Long> homeWorkIds);
 }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseHomeworkDto.java

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.CourseHomework;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/11/17 0017
+ */
+public class CourseHomeworkDto extends CourseHomework {
+
+    private int repliedNum;
+
+    public int getRepliedNum() {
+        return repliedNum;
+    }
+
+    public void setRepliedNum(int repliedNum) {
+        this.repliedNum = repliedNum;
+    }
+}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SimpleUserDto.java

@@ -8,6 +8,8 @@ public class SimpleUserDto {
 
     private Integer userId;
 
+    private String nickName;
+
     private String userName;
 
     private String avatar;
@@ -66,6 +68,14 @@ public class SimpleUserDto {
         this.userId = userId;
     }
 
+    public String getNickName() {
+        return nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+
     public String getUserName() {
         return userName;
     }

+ 55 - 14
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentCourseHomeworkDto.java

@@ -4,28 +4,29 @@ package com.ym.mec.biz.dal.dto;
 import java.util.Date;
 
 public class StudentCourseHomeworkDto {
+
+    private Integer studentId;
+
+    private String studentName;
+
     private String phone;
 
-    private String username;
+    private String subjectIds;
 
-    private String subjectName;
+    private String subjectNames;
 
     private String url;
 
+    private String attachments;
+
+    private Date submitTime;
+
     private Date createTime;
 
     private Integer isReplied;
 
     private Integer isView;
 
-    public String getSubjectName() {
-        return subjectName;
-    }
-
-    public void setSubjectName(String subjectName) {
-        this.subjectName = subjectName;
-    }
-
     public String getPhone() {
         return phone;
     }
@@ -34,12 +35,36 @@ public class StudentCourseHomeworkDto {
         this.phone = phone;
     }
 
-    public String getUsername() {
-        return username;
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getAttachments() {
+        return attachments;
+    }
+
+    public void setAttachments(String attachments) {
+        this.attachments = attachments;
     }
 
-    public void setUsername(String username) {
-        this.username = username;
+    public Date getSubmitTime() {
+        return submitTime;
+    }
+
+    public void setSubmitTime(Date submitTime) {
+        this.submitTime = submitTime;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
     }
 
     public String getUrl() {
@@ -66,6 +91,22 @@ public class StudentCourseHomeworkDto {
         this.isReplied = isReplied;
     }
 
+    public String getSubjectIds() {
+        return subjectIds;
+    }
+
+    public void setSubjectIds(String subjectIds) {
+        this.subjectIds = subjectIds;
+    }
+
+    public String getSubjectNames() {
+        return subjectNames;
+    }
+
+    public void setSubjectNames(String subjectNames) {
+        this.subjectNames = subjectNames;
+    }
+
     public Integer getIsView() {
         return isView;
     }

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendancesDto.java

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.SignInStatusEnum;
 import com.ym.mec.biz.dal.enums.SignOutStatusEnum;
+import com.ym.mec.biz.dal.enums.TeachTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
@@ -13,6 +14,8 @@ public class TeacherAttendancesDto {
     @ApiModelProperty(value = "老师名",required = false)
 	private String teacherName;
 
+    private TeachTypeEnum teacherRole;
+
     @ApiModelProperty(value = "分部名",required = false)
 	private String organName;
 
@@ -109,6 +112,30 @@ public class TeacherAttendancesDto {
         this.courseScheduleName = courseScheduleName;
     }
 
+    public TeachTypeEnum getTeacherRole() {
+        return teacherRole;
+    }
+
+    public void setTeacherRole(TeachTypeEnum teacherRole) {
+        this.teacherRole = teacherRole;
+    }
+
+    public String getSignInLongitudeLatitude() {
+        return signInLongitudeLatitude;
+    }
+
+    public void setSignInLongitudeLatitude(String signInLongitudeLatitude) {
+        this.signInLongitudeLatitude = signInLongitudeLatitude;
+    }
+
+    public String getSignOutLongitudeLatitude() {
+        return signOutLongitudeLatitude;
+    }
+
+    public void setSignOutLongitudeLatitude(String signOutLongitudeLatitude) {
+        this.signOutLongitudeLatitude = signOutLongitudeLatitude;
+    }
+
     public CourseStatusEnum getCourseScheduleStatus() {
         return courseScheduleStatus;
     }

+ 200 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/WebCourseHomeworkListDto.java

@@ -0,0 +1,200 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.enums.GroupType;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/19
+ */
+public class WebCourseHomeworkListDto {
+
+    @ApiModelProperty(value = "作业编号",required = false)
+    private Long id;
+
+    @ApiModelProperty(value = "课程时间",required = false)
+    private String classDate;
+
+    @ApiModelProperty(value = "课程开始时间",required = false)
+    private String classStartDate;
+
+    @ApiModelProperty(value = "课程结束时间",required = false)
+    private String classEndDate;
+
+    @ApiModelProperty(value = "课程编号",required = false)
+    private Long courseScheduleId;
+
+    @ApiModelProperty(value = "课程名称",required = false)
+    private String courseScheduleName;
+
+    @ApiModelProperty(value = "分部编号",required = false)
+    private Integer organId;
+
+    @ApiModelProperty(value = "分部名称",required = false)
+    private String organName;
+
+    @ApiModelProperty(value = "课程组编号",required = false)
+    private String groupId;
+
+    @ApiModelProperty(value = "课程组名称",required = false)
+    private String groupName;
+
+    @ApiModelProperty(value = "课程组类型",required = false)
+    private GroupType groupType;
+
+    @ApiModelProperty(value = "布置时间",required = false)
+    private Date createTime;
+
+    @ApiModelProperty(value = "布置老师",required = false)
+    private Integer actualTeacherId;
+
+    @ApiModelProperty(value = "布置老师名称",required = false)
+    private String actualTeacherName;
+
+    @ApiModelProperty(value = "作业完成人数",required = false)
+    private Integer completedNum = 0;
+
+    @ApiModelProperty(value = "预计完成人数",required = false)
+    private Integer expectNum;
+
+    @ApiModelProperty(value = "已回复数",required = false)
+    private Integer repliedNum = 0;
+
+    public String getClassDate() {
+        return classDate;
+    }
+
+    public void setClassDate(String classDate) {
+        this.classDate = classDate;
+    }
+
+    public String getClassStartDate() {
+        return classStartDate;
+    }
+
+    public void setClassStartDate(String classStartDate) {
+        this.classStartDate = classStartDate;
+    }
+
+    public String getClassEndDate() {
+        return classEndDate;
+    }
+
+    public void setClassEndDate(String classEndDate) {
+        this.classEndDate = classEndDate;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getCourseScheduleId() {
+        return courseScheduleId;
+    }
+
+    public void setCourseScheduleId(Long courseScheduleId) {
+        this.courseScheduleId = courseScheduleId;
+    }
+
+    public String getCourseScheduleName() {
+        return courseScheduleName;
+    }
+
+    public void setCourseScheduleName(String courseScheduleName) {
+        this.courseScheduleName = courseScheduleName;
+    }
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public GroupType getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(GroupType groupType) {
+        this.groupType = groupType;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Integer getActualTeacherId() {
+        return actualTeacherId;
+    }
+
+    public void setActualTeacherId(Integer actualTeacherId) {
+        this.actualTeacherId = actualTeacherId;
+    }
+
+    public String getActualTeacherName() {
+        return actualTeacherName;
+    }
+
+    public void setActualTeacherName(String actualTeacherName) {
+        this.actualTeacherName = actualTeacherName;
+    }
+
+    public Integer getCompletedNum() {
+        return completedNum;
+    }
+
+    public void setCompletedNum(Integer completedNum) {
+        this.completedNum = completedNum;
+    }
+
+    public Integer getExpectNum() {
+        return expectNum;
+    }
+
+    public void setExpectNum(Integer expectNum) {
+        this.expectNum = expectNum;
+    }
+
+    public Integer getRepliedNum() {
+        return repliedNum;
+    }
+
+    public void setRepliedNum(Integer repliedNum) {
+        this.repliedNum = repliedNum;
+    }
+}

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

@@ -8,6 +8,7 @@ import io.swagger.annotations.ApiModelProperty;
  * @Date 2019/9/18
  */
 public class CourseHomeWorkTemplateQueryInfo extends QueryInfo {
+    private String organId;
 
     @ApiModelProperty(value = "科目ID集合",required = false)
     private String[] subjectIDs;
@@ -15,9 +16,48 @@ public class CourseHomeWorkTemplateQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "课程计划ID",required = false)
     private Long courseScheduleID;
 
+    private String classStartDate;
+
+    private String classEndDate;
+
     @ApiModelProperty(value = "班级类型")
     private String classType;
 
+    @ApiModelProperty(value = "课程组类型")
+    private String groupType = "MUSIC";
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
+    public String getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(String groupType) {
+        this.groupType = groupType;
+    }
+
+    public String getClassStartDate() {
+        return classStartDate;
+    }
+
+    public void setClassStartDate(String classStartDate) {
+        this.classStartDate = classStartDate;
+    }
+
+    public String getClassEndDate() {
+        return classEndDate;
+    }
+
+    public void setClassEndDate(String classEndDate) {
+        this.classEndDate = classEndDate;
+    }
+
     public String getClassType() {
         return classType;
     }

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseHomeworkQueryInfo.java

@@ -24,9 +24,14 @@ public class CourseHomeworkQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "班级ID",required = false)
     private Long classGroupId;
 
+    @ApiModelProperty(value = "课程编号")
+    private Long courseScheduleId;
+
     @ApiModelProperty(value = "用户ID",required = false)
     private Long userId;
 
+    private Integer isReplied;
+
     private Date classDate;
 
     public Date getClassDate() {
@@ -69,6 +74,22 @@ public class CourseHomeworkQueryInfo extends QueryInfo {
         this.classGroupId = classGroupId;
     }
 
+    public Long getCourseScheduleId() {
+        return courseScheduleId;
+    }
+
+    public void setCourseScheduleId(Long courseScheduleId) {
+        this.courseScheduleId = courseScheduleId;
+    }
+
+    public Integer getIsReplied() {
+        return isReplied;
+    }
+
+    public void setIsReplied(Integer isReplied) {
+        this.isReplied = isReplied;
+    }
+
     public Long getUserId() {
         return userId;
     }

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

@@ -1,7 +1,10 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.WebCourseHomeworkListDto;
 import com.ym.mec.biz.dal.entity.CourseHomework;
+import com.ym.mec.biz.dal.page.CourseHomeWorkTemplateQueryInfo;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.List;
@@ -36,4 +39,11 @@ public interface CourseHomeworkService extends BaseService<Long, CourseHomework>
 	 * @return
 	 */
 	boolean delHomwworkByCourseScheduleId(List<Long> courseScheduleIdList);
+
+	/**
+	 * 管理端作业列表
+	 * @param queryInfo
+	 * @return
+	 */
+	PageInfo<WebCourseHomeworkListDto> queryHomePage(CourseHomeWorkTemplateQueryInfo queryInfo);
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleStudentPaymentService.java

@@ -11,6 +11,7 @@ import com.ym.mec.common.service.BaseService;
 import org.snaker.engine.access.Page;
 
 import java.util.List;
+import java.util.Map;
 
 public interface CourseScheduleStudentPaymentService extends BaseService<Long, CourseScheduleStudentPayment> {
 
@@ -67,6 +68,6 @@ public interface CourseScheduleStudentPaymentService extends BaseService<Long, C
 	 * @param queryInfo:
 	 * @return com.ym.mec.common.page.PageInfo<com.ym.mec.biz.dal.dto.CourseScheduleStudentListDto>
 	 */
-	PageInfo<CourseScheduleStudentListDto> queryCourseStudentList(CourseScheduleStudentPaymentQueryInfo queryInfo);
+	Map<String, Object> queryCourseStudentList(CourseScheduleStudentPaymentQueryInfo queryInfo);
 
 }

+ 2 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java

@@ -1,9 +1,6 @@
 package com.ym.mec.biz.service;
 
-import com.ym.mec.biz.dal.dto.ExportTeacherSalaryDto;
-import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
-import com.ym.mec.biz.dal.dto.TeacherCourseSalaryDetail4WebDto;
-import com.ym.mec.biz.dal.dto.TeacherSalaryDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
 import com.ym.mec.biz.dal.entity.VipGroup;
@@ -175,5 +172,5 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
      * @param courseScheduleId:
      * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherAttendanceDto>
      */
-    List<TeacherAttendanceDto> getCourseTeachers(Long courseScheduleId);
+    List<TeacherAttendancesDto> getCourseTeachers(Long courseScheduleId);
 }

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

@@ -2,6 +2,7 @@ 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.entity.CourseHomework;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.common.page.PageInfo;
@@ -9,6 +10,7 @@ import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.List;
+import java.util.Map;
 
 public interface StudentCourseHomeworkService extends BaseService<Long, StudentCourseHomework> {
 
@@ -76,4 +78,13 @@ public interface StudentCourseHomeworkService extends BaseService<Long, StudentC
      * @param studentCourseHomework
      */
     void add(StudentCourseHomework studentCourseHomework);
+
+    /**
+     * @describe 获取课程作业详情
+     * @author Joburgess
+     * @date 2020/11/17 0017
+     * @param queryInfo:
+     * @return java.util.Map<java.lang.String,java.lang.Object>
+     */
+    Map<String, Object> getCourseHomeworkDetail(CourseHomeworkQueryInfo queryInfo);
 }

+ 32 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseHomeworkServiceImpl.java

@@ -5,14 +5,17 @@ import com.ym.mec.biz.dal.dao.StudentCourseHomeworkDao;
 import com.ym.mec.biz.dal.dao.StudentCourseHomeworkReplyDao;
 import com.ym.mec.biz.dal.dto.Mapper;
 import com.ym.mec.biz.dal.dto.TeacherHomeworkListDto;
+import com.ym.mec.biz.dal.dto.WebCourseHomeworkListDto;
 import com.ym.mec.biz.dal.entity.CourseHomework;
 import com.ym.mec.biz.dal.entity.StudentCourseHomework;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.page.CourseHomeWorkTemplateQueryInfo;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.biz.service.CourseHomeworkService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
@@ -134,4 +137,33 @@ public class CourseHomeworkServiceImpl extends BaseServiceImpl<Long, CourseHomew
 		studentCourseHomeworkReplyDao.delByCourseScheduleIds(courseScheduleIdList);
 		return true;
 	}
+
+	@Override
+	public PageInfo<WebCourseHomeworkListDto> queryHomePage(CourseHomeWorkTemplateQueryInfo queryInfo) {
+		PageInfo<WebCourseHomeworkListDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<WebCourseHomeworkListDto> dataList = null;
+		int count = courseHomeworkDao.findHomeCount(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = courseHomeworkDao.queryHomePage(params);
+			List<Long> homeWorkIds = dataList.stream().map(e -> e.getId()).collect(Collectors.toList());
+			List<Map<Long,Long>> repliedList = studentCourseHomeworkDao.queryReplied(homeWorkIds);
+			Map<Long,Long> map = MapUtil.convertIntegerMap(repliedList);
+			dataList.forEach(e->{
+				Long aLong = map.get(e.getId());
+				if(aLong != null){
+					e.setRepliedNum(aLong.intValue());
+				}
+			});
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
 }

+ 18 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java

@@ -283,10 +283,11 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 	}
 
 	@Override
-	public PageInfo<CourseScheduleStudentListDto> queryCourseStudentList(CourseScheduleStudentPaymentQueryInfo queryInfo) {
+	public Map<String, Object> queryCourseStudentList(CourseScheduleStudentPaymentQueryInfo queryInfo) {
 		PageInfo<CourseScheduleStudentListDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<String, Object>();
 		MapUtil.populateMap(params, queryInfo);
+		List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseId(queryInfo.getCourseScheduleId().longValue());
 
 		List<CourseScheduleStudentListDto> dataList = new ArrayList<>();
 		int count = courseScheduleStudentPaymentDao.countAll(params);
@@ -295,7 +296,6 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 			params.put("offset", pageInfo.getOffset());
 			List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.queryAll(params);
 			Set<Integer> studentIds = courseScheduleStudentPayments.stream().map(CourseScheduleStudentPayment::getUserId).collect(Collectors.toSet());
-			List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseId(queryInfo.getCourseScheduleId().longValue());
 			List<SimpleUserDto> usersSimpleInfo = teacherDao.getUsersSimpleInfo(new ArrayList<>(studentIds));
 			List<Student> students = studentDao.findByStudentIds(new ArrayList<>(studentIds));
 			Set<Integer> subjectIds = new HashSet<>();
@@ -316,6 +316,7 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 			for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
 				CourseScheduleStudentListDto cssld=new CourseScheduleStudentListDto();
 				cssld.setStudentId(courseScheduleStudentPayment.getUserId());
+				cssld.setStudentName(studentInfoMap.containsKey(cssld.getStudentId())?studentInfoMap.get(cssld.getStudentId()).getNickName():"");
 				cssld.setPhone(studentInfoMap.containsKey(cssld.getStudentId())?studentInfoMap.get(cssld.getStudentId()).getPhone():"");
 				cssld.setSubjectIds(studentMap.containsKey(cssld.getStudentId())?studentMap.get(cssld.getStudentId()).getSubjectIdList():"");
 				if(StringUtils.isNotBlank(cssld.getSubjectIds())){
@@ -333,6 +334,20 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 			}
 		}
 		pageInfo.setRows(dataList);
-		return pageInfo;
+
+		Map<String, Object> result = new HashMap<>();
+		result.put("pageInfo", pageInfo);
+
+		if(queryInfo.getPage()==1){
+			Map<String, Integer> countInfo = new HashMap<>();
+			countInfo.put("totalStudentNum", count);
+			countInfo.put("signInStudentNum", (int) studentAttendances.stream().filter(s -> Objects.nonNull(s.getSignInTime())).count());
+			countInfo.put("leaveStudentNum", (int) studentAttendances.stream().filter(s -> StudentAttendanceStatusEnum.LEAVE.equals(s.getStatus())).count());
+			countInfo.put("truantStudentNum", (int) studentAttendances.stream().filter(s -> Objects.isNull(s.getStatus())||StudentAttendanceStatusEnum.TRUANT.equals(s.getStatus())).count());
+
+			result.put("countInfo", countInfo);
+		}
+
+		return result;
 	}
 }

+ 30 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -1275,8 +1275,36 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     }
 
     @Override
-    public List<TeacherAttendanceDto> getCourseTeachers(Long courseScheduleId) {
+    public List<TeacherAttendancesDto> getCourseTeachers(Long courseScheduleId) {
+        List<TeacherAttendancesDto> result = new ArrayList<>();
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedule(courseScheduleId);
-        return null;
+        if(CollectionUtils.isEmpty(courseScheduleTeacherSalaries)){
+            return result;
+        }
+        Set<Integer> teacherIds = courseScheduleTeacherSalaries.stream().map(CourseScheduleTeacherSalary::getUserId).collect(Collectors.toSet());
+        List<TeacherAttendance> teacherAttendances = teacherAttendanceDao.findByCourseSchedules(Arrays.asList(courseScheduleId));
+        Map<Integer, TeacherAttendance> idTeacherAttendanceMap = teacherAttendances.stream().collect(Collectors.toMap(TeacherAttendance::getTeacherId, t -> t, (t1, t2) -> t1));
+        List<SimpleUserDto> usersSimpleInfo = new ArrayList<>();
+        if(!CollectionUtils.isEmpty(teacherIds)){
+            usersSimpleInfo = teacherDao.getUsersSimpleInfo(new ArrayList<>(teacherIds));
+        }
+        Map<Integer, SimpleUserDto> idUserMap = usersSimpleInfo.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, s -> s));
+        for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
+            TeacherAttendancesDto t = new TeacherAttendancesDto();
+            t.setTeacherId(courseScheduleTeacherSalary.getUserId());
+            t.setTeacherName(idUserMap.containsKey(t.getTeacherId())?idUserMap.get(t.getTeacherId()).getUserName():"");
+            t.setTeacherRole(courseScheduleTeacherSalary.getTeacherRole());
+            if(idTeacherAttendanceMap.containsKey(t.getTeacherId())){
+                TeacherAttendance teacherAttendance = idTeacherAttendanceMap.get(t.getTeacherId());
+                t.setSignInTime(teacherAttendance.getSignInTime());
+                t.setSignInStatus(Objects.nonNull(teacherAttendance.getSignInStatus())?SignInStatusEnum.valueOf(teacherAttendance.getSignInStatus().getCode().toString()):SignInStatusEnum.NO);
+                t.setSignOutTime(teacherAttendance.getSignOutTime());
+                t.setSignOutStatus(Objects.nonNull(teacherAttendance.getSignOutStatus())?SignOutStatusEnum.valueOf(teacherAttendance.getSignOutStatus().getCode().toString()):SignOutStatusEnum.NO);
+                t.setSignInLongitudeLatitude(teacherAttendance.getSignInLongitudeLatitude());
+                t.setSignOutLongitudeLatitude(teacherAttendance.getSignOutLongitudeLatitude());
+            }
+            result.add(t);
+        }
+        return result;
     }
 }

+ 80 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java

@@ -3,10 +3,7 @@ package com.ym.mec.biz.service.impl;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.CourseHomeworkStudentDetailDto;
-import com.ym.mec.biz.dal.dto.SimpleUserDto;
-import com.ym.mec.biz.dal.dto.StudentCourseHomeworkDto;
-import com.ym.mec.biz.dal.dto.StudentHomeworkRecordDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
@@ -24,6 +21,7 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -60,6 +58,10 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
     private TeacherDao teacherDao;
     @Autowired
     private StudentExtracurricularExercisesSituationDao studentExtracurricularExercisesSituationDao;
+    @Autowired
+    private StudentDao studentDao;
+    @Autowired
+    private SubjectDao subjectDao;
 
     @Override
     public BaseDAO<Long, StudentCourseHomework> getDAO() {
@@ -352,4 +354,78 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             }
         }
     }
+
+    @Override
+    public Map<String, Object> getCourseHomeworkDetail(CourseHomeworkQueryInfo queryInfo) {
+        Map<String, Object> result = new HashMap<>();
+        CourseHomework courseHomework = courseHomeworkDao.findByCourseSchedule(queryInfo.getCourseScheduleId());
+
+        if(Objects.isNull(courseHomework)){
+            result.put("countInfo", null);
+            return result;
+        }
+
+        PageInfo<StudentCourseHomeworkDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<StudentCourseHomework> dataList = new ArrayList<>();
+        List<StudentCourseHomeworkDto> studentCourseHomeworkDtos = new ArrayList<>();
+        int count = studentCourseHomeworkDao.countAll(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = studentCourseHomeworkDao.queryAll(params);
+            Set<Integer> studentIds = dataList.stream().map(StudentCourseHomework::getUserId).collect(Collectors.toSet());
+            List<SimpleUserDto> usersSimpleInfo = teacherDao.getUsersSimpleInfo(new ArrayList<>(studentIds));
+            List<Student> students = studentDao.findByStudentIds(new ArrayList<>(studentIds));
+            Set<Integer> subjectIds = new HashSet<>();
+            for (Student student : students) {
+                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)){
+                subjects = subjectDao.findBySubjectIds(new ArrayList<>(subjectIds));
+            }
+            Map<Integer, SimpleUserDto> studentInfoMap = usersSimpleInfo.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, s -> s, (s1, s2) -> s1));
+            Map<Integer, Student> studentMap = students.stream().collect(Collectors.toMap(Student::getUserId, s -> s, (s1, s2) -> s1));
+            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())){
+                    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, ","));
+                }
+                s.setSubmitTime(studentCourseHomework.getSubmitTime());
+                s.setIsView(studentCourseHomework.getIsView().getCode());
+                s.setIsReplied(studentCourseHomework.getIsReplied().getCode());
+                s.setAttachments(studentCourseHomework.getAttachments());
+                studentCourseHomeworkDtos.add(s);
+            }
+        }
+        pageInfo.setRows(studentCourseHomeworkDtos);
+
+        if(queryInfo.getPage()==1){
+            params.put("isReplied", 1);
+            int repliedNum = studentCourseHomeworkDao.countAll(params);
+            CourseHomeworkDto courseHomeworkDto = new CourseHomeworkDto();
+            courseHomeworkDto.setExpectNum(courseHomework.getExpectNum());
+            courseHomeworkDto.setCompletedNum(courseHomework.getCompletedNum());
+            courseHomeworkDto.setRepliedNum(repliedNum);
+            courseHomeworkDto.setRepliedNum(repliedNum);
+            result.put("countInfo", courseHomeworkDto);
+        }
+
+        result.put("pageInfo", pageInfo);
+
+        return result;
+    }
 }

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

@@ -238,7 +238,82 @@
 		where cs.del_flag_ = 0 AND cs.actual_teacher_id_ IS NOT NULL
 		AND sch.is_replied_ = 0 group by cs.actual_teacher_id_
 	</select>
-	
+
+	<resultMap id="WebCourseHomeworkListDtoMap" type="com.ym.mec.biz.dal.dto.WebCourseHomeworkListDto">
+		<result property="organName" column="organ_name_"/>
+		<result property="organId" column="organ_id_"/>
+		<result property="groupType" column="group_type_"/>
+		<result property="groupName" column="group_name_"/>
+		<result property="groupId" column="group_id_"/>
+		<result property="courseScheduleName" column="course_schedule_name_"/>
+		<result property="courseScheduleId" column="course_schedule_id_"/>
+		<result property="actualTeacherName" column="actual_teacher_name_"/>
+		<result property="actualTeacherId" column="actual_teacher_id_"/>
+		<result property="completedNum" column="completed_num_"/>
+		<result property="createTime" column="create_time_"/>
+		<result property="expectNum" column="expect_num_"/>
+		<result property="id" column="id_"/>
+		<result property="classDate" column="class_date_"/>
+		<result property="classStartDate" column="start_class_time_"/>
+		<result property="classEndDate" column="end_class_time_"/>
+	</resultMap>
+    <select id="queryHomePage" resultMap="WebCourseHomeworkListDtoMap">
+		SELECT ch.id_,cs.id_ course_schedule_id_,cs.name_ course_schedule_name_,
+		cs.class_date_,cs.start_class_time_,cs.end_class_time_,cs.organ_id_,o.name_ organ_name_,
+		mg.id_ group_id_,mg.name_ group_name_,ch.create_time_,cs.actual_teacher_id_,
+		su.real_name_ actual_teacher_name_,ch.completed_num_,ch.expect_num_,cs.group_type_
+		FROM course_homework ch
+		LEFT JOIN course_schedule cs ON cs.id_ = ch.course_schedule_id_
+		LEFT JOIN organization o ON o.id_ = cs.organ_id_
+		<if test="groupType == 'MUSIC'">
+			LEFT JOIN music_group mg ON mg.id_ = cs.music_group_id_
+		</if>
+		<if test="groupType == 'VIP'">
+			LEFT JOIN vip_group mg ON mg.id_ = cs.music_group_id_
+		</if>
+		<if test="groupType == 'PRACTICE'">
+			LEFT JOIN practice_group mg ON mg.id_ = cs.music_group_id_
+		</if>
+		LEFT JOIN sys_user su ON su.id_ = cs.actual_teacher_id_
+		<include refid="queryHomePageSql"/>
+		ORDER BY ch.create_time_ DESC,ch.id_ DESC
+		<include refid="global.limit"/>
+	</select>
+	<sql id="queryHomePageSql">
+		<where>
+			cs.group_type_ = #{groupType}
+			<if test="organId != null">
+				AND FIND_IN_SET(cs.organ_id_,#{organId})
+			</if>
+			<if test="classStartDate != null and classStartDate != ''">
+				AND cs.class_date_ >= #{classStartDate}
+			</if>
+			<if test="classEndDate != null and classEndDate != ''">
+				AND cs.class_date_ &lt;= #{classEndDate}
+			</if>
+			<if test="search != null and search != ''">
+				AND (cs.id_ = #{search} OR cs.name_ LIKE CONCAT('%',#{search},'%')
+				OR mg.name_ LIKE CONCAT('%',#{search},'%') OR mg.id_ = #{search})
+			</if>
+		</where>
+	</sql>
+	<select id="findHomeCount" resultType="java.lang.Integer">
+		SELECT COUNT(ch.id_)
+		FROM course_homework ch
+		LEFT JOIN course_schedule cs ON cs.id_ = ch.course_schedule_id_
+		LEFT JOIN organization o ON o.id_ = cs.organ_id_
+		<if test="groupType == 'MUSIC'">
+			LEFT JOIN music_group mg ON mg.id_ = cs.music_group_id_
+		</if>
+		<if test="groupType == 'VIP'">
+			LEFT JOIN vip_group mg ON mg.id_ = cs.music_group_id_
+		</if>
+		<if test="groupType == 'PRACTICE'">
+			LEFT JOIN practice_group mg ON mg.id_ = cs.music_group_id_
+		</if>
+		<include refid="queryHomePageSql"/>
+	</select>
+
 	<delete id="delByCourseScheduleId" >
 		DELETE FROM course_homework WHERE course_schedule_id_ = #{courseScheduleId} 
 	</delete>

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

@@ -473,7 +473,7 @@
             GROUP BY sa.course_schedule_id_
     </select>
     <select id="findStudentAttendance" resultMap="StudentAttendance">
-        SELECT sa.*,su.username_,su.phone_,IF(s.name_ IS NULL,s1.name_,s.name_) subject_name_,su.avatar_
+        SELECT cssp.user_id_,sa.*,su.username_,su.phone_,IF(s.name_ IS NULL,s1.name_,s.name_) subject_name_,su.avatar_
         FROM course_schedule_student_payment cssp
         LEFT JOIN student_attendance sa ON cssp.course_schedule_id_ = sa.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
         LEFT JOIN sys_user su ON cssp.user_id_ = su.id_

+ 36 - 3
mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml

@@ -285,16 +285,17 @@
         SELECT COUNT(id_) FROM course_schedule_student_payment WHERE course_schedule_id_ = #{search}
     </select>
     <resultMap id="StudentCourseHomeworkDtoMap" type="com.ym.mec.biz.dal.dto.StudentCourseHomeworkDto">
-        <result column="username_" property="username"/>
+        <result column="user_id_" property="studentId"/>
+        <result column="username_" property="studentName"/>
         <result column="phone_" property="phone"/>
-        <result column="subject_name_" property="subjectName"/>
+        <result column="subject_name_" property="subjectNames"/>
         <result column="attachments_" property="url"/>
         <result column="is_replied_" property="isReplied"/>
         <result column="is_view_" property="isView"/>
         <result column="update_time_" property="createTime"/>
     </resultMap>
     <select id="findStudentCourseHomeworks" resultMap="StudentCourseHomeworkDtoMap">
-        SELECT sch.attachments_,sch.is_replied_,sch.is_view_,sch.update_time_,su.username_,su.phone_,s.name_ subject_name_
+        SELECT sch.attachments_,sch.is_replied_,sch.is_view_,sch.update_time_,cssp.user_id_,su.username_,su.phone_,s.name_ subject_name_
         FROM course_schedule_student_payment cssp
         LEFT JOIN student_course_homework sch ON sch.course_schedule_id_ = cssp.course_schedule_id_ AND cssp.user_id_ = sch.user_id_ AND sch.status_ = 1
         LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
@@ -378,6 +379,38 @@
                 #{studentId}
             </foreach>
     </select>
+    <select id="queryReplied" resultType="java.util.Map">
+        SELECT sch.course_homework_id_ AS 'key',COUNT(0) AS 'value'
+        FROM student_course_homework sch
+        WHERE sch.course_homework_id_ IN
+        <foreach collection="homeWorkIds" open="(" close=")" separator="," item="item">
+            #{item}
+        </foreach>
+        AND sch.is_replied_ = 1
+        GROUP BY sch.course_homework_id_
+    </select>
+
+    <sql id="queryAllCondition">
+        <where>
+            <if test="courseScheduleId!=null">
+                course_schedule_id_=#{courseScheduleId}
+            </if>
+            <if test="isReplied!=null">
+                is_replied_=#{isReplied}
+            </if>
+        </where>
+    </sql>
+
+    <select id="queryAll" resultMap="StudentCourseHomework">
+         SELECT * FROM student_course_homework
+         <include refid="queryAllCondition" />
+         ORDER BY id_
+         <include refid="global.limit"></include>
+    </select>
+    <select id="countAll" resultType="int">
+        SELECT COUNT(*) FROM student_course_homework
+        <include refid="queryAllCondition" />
+    </select>
 
     <delete id="delByCourseScheduleId">
 		DELETE FROM student_course_homework WHERE course_schedule_id_ = #{courseScheduleId} 

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

@@ -390,6 +390,7 @@
     <select id="getUsersSimpleInfo" resultType="com.ym.mec.biz.dal.dto.SimpleUserDto">
         SELECT
             su.id_ userId,
+            su.username_ nickName,
             su.real_name_ userName,
             su.phone_ phone
         FROM sys_user su

+ 1 - 14
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleStudentPaymentController.java

@@ -37,20 +37,7 @@ public class CourseScheduleStudentPaymentController extends BaseController {
     @GetMapping("/queryCourseStudentList")
     @PreAuthorize("@pcs.hasPermissions('courseScheduleStudentPayment/queryCourseStudentList')")
     public HttpResponseResult queryCourseStudentList(CourseScheduleStudentPaymentQueryInfo queryInfo) {
-        PageInfo<CourseScheduleStudentListDto> pageInfo = courseScheduleStudentPaymentService.queryCourseStudentList(queryInfo);
-        List<CourseScheduleStudentListDto> courseScheduleStudentList = pageInfo.getRows();
-
-        Map<String, Integer> countInfo = new HashMap<>();
-        countInfo.put("totalStudentNum", courseScheduleStudentList.size());
-        countInfo.put("signInStudentNum", (int) courseScheduleStudentList.stream().filter(s -> Objects.nonNull(s.getSignInTime())).count());
-        countInfo.put("leaveStudentNum", (int) courseScheduleStudentList.stream().filter(s -> StudentAttendanceStatusEnum.LEAVE.equals(s.getStatus())).count());
-        countInfo.put("truantStudentNum", (int) courseScheduleStudentList.stream().filter(s -> StudentAttendanceStatusEnum.TRUANT.equals(s.getStatus())).count());
-
-        Map<String, Object> result = new HashMap<>();
-        result.put("pageInfo", pageInfo);
-        result.put("countInfo", countInfo);
-
-        return succeed(result);
+        return succeed(courseScheduleStudentPaymentService.queryCourseStudentList(queryInfo));
     }
 
 }

+ 11 - 0
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleTeacherSalaryController.java

@@ -4,6 +4,7 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dto.TeacherAttendancesDto;
 import com.ym.mec.biz.dal.entity.Employee;
 import com.ym.mec.biz.dal.enums.TeacherSalaryConfirmStatus;
 import com.ym.mec.biz.dal.page.CourseSalaryQueryInfo4Web;
@@ -105,4 +106,14 @@ public class CourseScheduleTeacherSalaryController extends BaseController {
         courseScheduleTeacherSalaryService.closeSalaryConfirm(month);
         return succeed();
     }
+
+    @ApiOperation(value = "获取指定课程上的教师信息")
+    @GetMapping("/getCourseTeachers")
+    @PreAuthorize("@pcs.hasPermissions('courseScheduleTeacherSalary/getCourseTeachers')")
+    public HttpResponseResult<List<TeacherAttendancesDto>> getCourseTeachers(Long courseScheduleId){
+        if(Objects.isNull(courseScheduleId)){
+            throw new BizException("请指定课程");
+        }
+        return succeed(courseScheduleTeacherSalaryService.getCourseTeachers(courseScheduleId));
+    }
 }

+ 47 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentCourseHomeworkController.java

@@ -0,0 +1,47 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.biz.dal.dto.CourseScheduleStudentListDto;
+import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
+import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
+import com.ym.mec.biz.dal.page.CourseScheduleStudentPaymentQueryInfo;
+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.common.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/11/17 0017
+ */
+@RestController
+@RequestMapping("studentCourseHomework")
+@Api(tags = "学生课堂作业服务")
+public class StudentCourseHomeworkController extends BaseController {
+
+    @Autowired
+    private StudentCourseHomeworkService studentCourseHomeworkService;
+
+    @ApiOperation(value = "获取课程作业详情")
+    @GetMapping("/getCourseHomeworkDetail")
+    @PreAuthorize("@pcs.hasPermissions('studentCourseHomework/getCourseHomeworkDetail')")
+    public HttpResponseResult getCourseHomeworkDetail(CourseHomeworkQueryInfo queryInfo) {
+        if(Objects.isNull(queryInfo.getCourseScheduleId())){
+            throw new BizException("请指定课程");
+        }
+        return succeed(studentCourseHomeworkService.getCourseHomeworkDetail(queryInfo));
+    }
+
+}

+ 60 - 0
mec-web/src/main/java/com/ym/mec/web/controller/WebCourseHomeworkController.java

@@ -0,0 +1,60 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+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.service.CourseHomeworkService;
+import com.ym.mec.common.controller.BaseController;
+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.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @Author zouxuan
+ * @Date 2020/11/17
+ */
+@RequestMapping("webCurseHomework")
+@Api(tags = "课后作业")
+@RestController
+public class WebCourseHomeworkController extends BaseController {
+
+    @Autowired
+    private CourseHomeworkService courseHomeworkService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeDao employeeDao;
+
+    @ApiOperation(value = "分页查询作业列表")
+    @GetMapping(value = "/queryHomePage")
+    public Object queryPage(CourseHomeWorkTemplateQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+                queryInfo.setOrganId(employee.getOrganIdList());
+            } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
+                return failed("用户所在分部异常");
+            } else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
+                    return failed("非法请求");
+                }
+            }
+        }
+        return succeed(courseHomeworkService.queryHomePage(queryInfo));
+    }
+
+}