소스 검색

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

zouxuan 5 년 전
부모
커밋
13adedc4f3
24개의 변경된 파일723개의 추가작업 그리고 17개의 파일을 삭제
  1. 12 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ExtracurricularExercisesReplyDao.java
  2. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentCourseHomeworkDao.java
  3. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java
  4. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java
  5. 32 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentServeCourseHomeworkDto.java
  6. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentServeDto.java
  7. 166 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendancesDto.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleTeacherSalary.java
  9. 17 4
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java
  10. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupStudentFee.java
  11. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentExtracurricularExercisesSituation.java
  12. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherCloseQueryInfo.java
  13. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentServeService.java
  14. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java
  15. 10 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  16. 183 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java
  17. 20 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  18. 13 0
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesReplyMapper.xml
  19. 6 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  20. 20 0
      mec-biz/src/main/resources/config/mybatis/StudentCourseHomeworkMapper.xml
  21. 19 0
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  22. 74 0
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  23. 5 2
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  24. 36 0
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherAttendanceController.java

+ 12 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ExtracurricularExercisesReplyDao.java

@@ -97,6 +97,16 @@ public interface ExtracurricularExercisesReplyDao extends BaseDAO<Long, Extracur
     List<StudentServiceDetailDto> findStudentHomeworkDetailsInTimeZone(Map<String, Object> params);
     int countStudentHomeworkDetailsInTimeZone(Map<String, Object> params);
 
-
-	
+    /**
+     * @describe 获取在指定时间段内指定学员的课外训练
+     * @author Joburgess
+     * @date 2020.05.27
+     * @param startDate:
+     * @param endDate:
+     * @param studentIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply>
+     */
+	List<ExtracurricularExercisesReply> getStudentExercisesWithTimeZone(@Param("startDate") String startDate,
+                                                                        @Param("endDate") String endDate,
+                                                                        @Param("studentIds") List<Integer> studentIds);
 }

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

@@ -3,6 +3,7 @@ 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.entity.StudentCourseHomework;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
@@ -108,4 +109,16 @@ public interface StudentCourseHomeworkDao extends BaseDAO<Long, StudentCourseHom
 
     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>
+     */
+    List<StudentServeCourseHomeworkDto> findStudentHomeworkWithCourseDateRange(@Param("startDate") String startDate,
+                                                                               @Param("endDate") String endDate,
+                                                                               @Param("studentIds") List<Integer> studentIds);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.Student4operating;
+import com.ym.mec.biz.dal.dto.StudentServeDto;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.enums.GroupType;
 import org.apache.ibatis.annotations.Param;
@@ -70,4 +71,13 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      */
 
     List<Student> getServiceStudents();
+
+    /**
+     * @describe 查询被服务学员信息
+     * @author Joburgess
+     * @date 2020.05.27
+     * @param monday:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.StudentServeDto>
+     */
+    List<StudentServeDto> getBeServiceStudents(@Param("monday") String monday);
 }

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.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.TeacherAbnormalAttendanceInfoDto;
+import com.ym.mec.biz.dal.dto.TeacherAttendancesDto;
 import com.ym.mec.biz.dal.dto.TeacherPersonalAttendanceDto;
 import com.ym.mec.biz.dal.entity.TeacherAttendance;
 import com.ym.mec.biz.dal.enums.GroupType;
@@ -22,6 +23,13 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
      */
     List<TeacherPersonalAttendanceDto> getTeacherPersonalAttendances(Map<String,Object> params);
 
+    /**
+     * 获取教师签到列表
+     * @param params
+     * @return
+     */
+    List<TeacherAttendancesDto> queryTeacherAttendances(Map<String,Object> params);
+
     int batchInsert(@Param("teacherAttendances") List<TeacherAttendance> teacherAttendances);
 
     int batchDeleteByCourseSchedules(@Param("courseScheduleIds") List<Long> courseScheduleIds);
@@ -37,6 +45,13 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
     int getTeacherPersonalAttendancesCount(Map<String,Object> params);
 
     /**
+     * 获取教师签到列表
+     * @param params
+     * @return
+     */
+    int countTeacherAttendances(Map<String,Object> params);
+
+    /**
      * @Author: Joburgess
      * @Date: 2019/9/24
      * 统计课次

+ 32 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentServeCourseHomeworkDto.java

@@ -0,0 +1,32 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.StudentCourseHomework;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.05.27
+ */
+public class StudentServeCourseHomeworkDto extends StudentCourseHomework {
+
+    private Date courseStartTime;
+
+    private Date homeworkCreateTime;
+
+    public Date getHomeworkCreateTime() {
+        return homeworkCreateTime;
+    }
+
+    public void setHomeworkCreateTime(Date homeworkCreateTime) {
+        this.homeworkCreateTime = homeworkCreateTime;
+    }
+
+    public Date getCourseStartTime() {
+        return courseStartTime;
+    }
+
+    public void setCourseStartTime(Date courseStartTime) {
+        this.courseStartTime = courseStartTime;
+    }
+}

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

@@ -0,0 +1,22 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.Student;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.05.27
+ */
+public class StudentServeDto extends Student {
+
+    private Date courseStartTime;
+
+    public Date getCourseStartTime() {
+        return courseStartTime;
+    }
+
+    public void setCourseStartTime(Date courseStartTime) {
+        this.courseStartTime = courseStartTime;
+    }
+}

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

@@ -0,0 +1,166 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+public class TeacherAttendancesDto {
+
+    @ApiModelProperty(value = "老师名",required = false)
+	private String teacherName;
+
+    @ApiModelProperty(value = "教师编号",required = false)
+    private Integer teacherId;
+
+    @ApiModelProperty(value = "课程编号",required = false)
+    private Long courseScheduleId;
+
+    @ApiModelProperty(value = "课程名",required = false)
+    private String courseScheduleName;
+
+    @ApiModelProperty(value = "课程状态",required = false)
+    private CourseStatusEnum courseScheduleStatus;
+
+    @ApiModelProperty(value = "上课日期",required = false)
+    private String classDate;
+
+    @ApiModelProperty(value = "上课时间",required = false)
+    private String startClassTime;
+
+    @ApiModelProperty(value = "结束时间",required = false)
+    private String endClassTime;
+
+    @ApiModelProperty(value = "课程类型",required = false)
+    private CourseSchedule.CourseScheduleType courseScheduleType;
+
+    @ApiModelProperty(value = "签到状态(1正常签到,0异常签到) ",required = false)
+    private Integer signInStatus;
+
+    /** 状态(正常签到,异常签到) */
+    @ApiModelProperty(value = "签退状态(1正常签到,0异常签到) ",required = false)
+    private Integer signOutStatus;
+
+    /** 备注 */
+    @ApiModelProperty(value = "备注",required = false)
+    private String remark;
+
+    @ApiModelProperty(value = "签到时间",required = false)
+    private Date signInTime;
+
+    @ApiModelProperty(value = "签退时间",required = false)
+    private Date signOutTime;
+
+    public String getClassDate() {
+        return classDate;
+    }
+
+    public void setClassDate(String classDate) {
+        this.classDate = classDate;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    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 CourseStatusEnum getCourseScheduleStatus() {
+        return courseScheduleStatus;
+    }
+
+    public void setCourseScheduleStatus(CourseStatusEnum courseScheduleStatus) {
+        this.courseScheduleStatus = courseScheduleStatus;
+    }
+
+    public String getStartClassTime() {
+        return startClassTime;
+    }
+
+    public void setStartClassTime(String startClassTime) {
+        this.startClassTime = startClassTime;
+    }
+
+    public String getEndClassTime() {
+        return endClassTime;
+    }
+
+    public void setEndClassTime(String endClassTime) {
+        this.endClassTime = endClassTime;
+    }
+
+    public CourseSchedule.CourseScheduleType getCourseScheduleType() {
+        return courseScheduleType;
+    }
+
+    public void setCourseScheduleType(CourseSchedule.CourseScheduleType courseScheduleType) {
+        this.courseScheduleType = courseScheduleType;
+    }
+
+    public Integer getSignInStatus() {
+        return signInStatus;
+    }
+
+    public void setSignInStatus(Integer signInStatus) {
+        this.signInStatus = signInStatus;
+    }
+
+    public Integer getSignOutStatus() {
+        return signOutStatus;
+    }
+
+    public void setSignOutStatus(Integer signOutStatus) {
+        this.signOutStatus = signOutStatus;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public Date getSignInTime() {
+        return signInTime;
+    }
+
+    public void setSignInTime(Date signInTime) {
+        this.signInTime = signInTime;
+    }
+
+    public Date getSignOutTime() {
+        return signOutTime;
+    }
+
+    public void setSignOutTime(Date signOutTime) {
+        this.signOutTime = signOutTime;
+    }
+}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseScheduleTeacherSalary.java

@@ -176,7 +176,7 @@ public class CourseScheduleTeacherSalary {
 	public Integer getUserId(){
 		return this.userId;
 	}
-			
+
 	public void setExpectSalary(java.math.BigDecimal expectSalary){
 		this.expectSalary = expectSalary;
 	}

+ 17 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java

@@ -1,13 +1,16 @@
 package com.ym.mec.biz.dal.entity;
 
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
 import com.ym.mec.biz.dal.entity.CooperationOrgan.OwnershipType;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.FeeType;
 import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
 import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
-import io.swagger.annotations.ApiModelProperty;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-
-import java.util.Date;
 
 /**
  * 对应数据库表(music_group):
@@ -146,6 +149,8 @@ public class MusicGroup{
 	private Integer groupMemberNum;
 	
 	private OwnershipType ownershipType;
+	
+	private FeeType feeType;
 
 	public Integer getRepairUserId() {
 		return repairUserId;
@@ -467,6 +472,14 @@ public class MusicGroup{
 		this.ownershipType = ownershipType;
 	}
 
+	public FeeType getFeeType() {
+		return feeType;
+	}
+
+	public void setFeeType(FeeType feeType) {
+		this.feeType = feeType;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupStudentFee.java

@@ -81,7 +81,7 @@ public class MusicGroupStudentFee {
 
 	private String subjectName;
 
-	private Integer remainNetworkClassTimes;
+	private Integer remainNetworkClassTimes = 0;
 
 	public MusicGroupStudentFee(String musicGroupId, Integer userId, Integer subjectId,
 								BigDecimal courseFee, Date nextPaymentDate, BigDecimal temporaryCourseFee,PaymentStatus paymentStatus) {

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentExtracurricularExercisesSituation.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.dal.entity;
 
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
+import java.util.Date;
+
 /**
  * 对应数据库表(student_extracurricular_exercises_situation_):
  */
@@ -45,7 +47,17 @@ public class StudentExtracurricularExercisesSituation {
 	
 	/**  */
 	private java.util.Date updateTime;
-	
+
+	private Date lastSubmitTime;
+
+	public Date getLastSubmitTime() {
+		return lastSubmitTime;
+	}
+
+	public void setLastSubmitTime(Date lastSubmitTime) {
+		this.lastSubmitTime = lastSubmitTime;
+	}
+
 	public void setId(Long id){
 		this.id = id;
 	}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherCloseQueryInfo.java

@@ -25,6 +25,17 @@ public class TeacherCloseQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "签到状态")
     private String signInStatus;
 
+    @ApiModelProperty(value = "分部")
+    private String organId;
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
     public String getSignInStatus() {
         return signInStatus;
     }

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentServeService.java

@@ -0,0 +1,18 @@
+package com.ym.mec.biz.service;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.05.27
+ */
+public interface StudentServeService {
+
+    /**
+     * @describe 学生服务信息统计
+     * @author Joburgess
+     * @date 2020/4/10
+     * @param :
+     * @return void
+     */
+    void exercisesSituationStatistics(String monday);
+
+}

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java

@@ -44,6 +44,12 @@ public interface TeacherAttendanceService extends BaseService<Long, TeacherAtten
 	PageInfo getTeacherPersonalAttendances(TeacherCloseQueryInfo queryInfo);
 
 	/**
+	 * 获取教师个人的签到记录
+	 * @return
+	 */
+	PageInfo queryTeacherAttendances(TeacherCloseQueryInfo queryInfo);
+
+	/**
 	 * 推送未签退消息提醒
 	 * @return
 	 */

+ 10 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -8,6 +8,7 @@ import com.ym.mec.auth.api.entity.SysUserRole;
 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.entity.MusicGroupPaymentCalender.FeeType;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
@@ -939,10 +940,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
 //        updateTeamTeacher(musicGroup, musicGroup);
         //生成学员费用表
-        List<MusicGroupStudentFee> musicGroupStudentFees = musicGroupStudentFeeDao.initMusicGroupStudentFee(musicGroupId);
-        if (musicGroupStudentFees != null && musicGroupStudentFees.size() > 0) {
-            musicGroupStudentFeeDao.batchInsert(musicGroupStudentFees, null, "PAID_COMPLETED");
-        }
+		List<MusicGroupStudentFee> musicGroupStudentFees = musicGroupStudentFeeDao.initMusicGroupStudentFee(musicGroupId);
+		if (musicGroupStudentFees != null && musicGroupStudentFees.size() > 0) {
+			if (musicGroup.getFeeType() != FeeType.OFFLINE) {
+				for (MusicGroupStudentFee sf : musicGroupStudentFees) {
+					sf.setRemainNetworkClassTimes(sf.getRemainNetworkClassTimes() + 1);
+				}
+			}
+			musicGroupStudentFeeDao.batchInsert(musicGroupStudentFees, null, "PAID_COMPLETED");
+		}
         musicGroupStudentFeeDao.batchUpdateCalenders(musicGroupId);
         //记录操作日志
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "确认开团(筹备中 -> 进行中)", sysUser.getId(), ""));

+ 183 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java

@@ -0,0 +1,183 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.ExtracurricularExercisesReplyDao;
+import com.ym.mec.biz.dal.dao.StudentCourseHomeworkDao;
+import com.ym.mec.biz.dal.dao.StudentDao;
+import com.ym.mec.biz.dal.dao.StudentExtracurricularExercisesSituationDao;
+import com.ym.mec.biz.dal.dto.StudentServeCourseHomeworkDto;
+import com.ym.mec.biz.dal.dto.StudentServeDto;
+import com.ym.mec.biz.dal.dto.StudentServiceHomeworkDto;
+import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
+import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.StudentExtracurricularExercisesSituation;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.service.StudentServeService;
+import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author Joburgess
+ * @Date 2020.05.27
+ */
+@Service
+public class StudentServeServiceImpl implements StudentServeService {
+
+    @Autowired
+    private StudentDao studentDao;
+    @Autowired
+    private StudentCourseHomeworkDao studentCourseHomeworkDao;
+    @Autowired
+    private ExtracurricularExercisesReplyDao extracurricularExercisesReplyDao;
+    @Autowired
+    private StudentExtracurricularExercisesSituationDao studentExtracurricularExercisesSituationDao;
+
+    @Override
+    public void exercisesSituationStatistics(String monday) {
+        LocalDate nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
+
+        if(nowDate.getDayOfWeek()== DayOfWeek.MONDAY){
+            int lastWeekTodayUpdateNum = studentExtracurricularExercisesSituationDao.findLastWeekTodayUpdateNum(nowDate.plusDays(-1).toString());
+            if(lastWeekTodayUpdateNum<=0){
+                nowDate = nowDate.plusDays(-1);
+            }
+        }
+
+        if(StringUtils.isNotBlank(monday)){
+            nowDate=LocalDate.parse(monday, DateUtil.dateFormatter);
+        }
+        LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
+        LocalDate sunDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.SUNDAY.getValue());
+        Date nextMonday = Date.from(sunDayDate.plusDays(1).atStartOfDay(DateUtil.zoneId).toInstant());
+
+        List<StudentServeDto> serviceStudents = studentDao.getBeServiceStudents(monDayDate.toString());
+        if(CollectionUtils.isEmpty(serviceStudents)){
+            return;
+        }
+
+        //本周不服务学员列表
+        Set<Integer> dontServeInCurrentWeekStudentIds=new HashSet<>();
+        //本周有课学员编号集合
+        Set<Integer> haveClassStudentIds=new HashSet<>();
+        //本周无课学员编号集合
+        Set<Integer> noClassStudentIds=new HashSet<>();
+        for (StudentServeDto serviceStudent : serviceStudents) {
+            if(Objects.nonNull(serviceStudent.getCourseStartTime())&&serviceStudent.getCourseStartTime().after(nextMonday)){
+                dontServeInCurrentWeekStudentIds.add(serviceStudent.getUserId());
+                continue;
+            }
+            if(Objects.nonNull(serviceStudent.getCourseStartTime())){
+                haveClassStudentIds.add(serviceStudent.getUserId());
+            }else{
+                noClassStudentIds.add(serviceStudent.getUserId());
+            }
+        }
+
+        Map<Integer, List<StudentServeCourseHomeworkDto>> studentHomeworkMap=new HashMap<>();
+        Map<Integer, List<ExtracurricularExercisesReply>> studentExercisesMap=new HashMap<>();
+
+        if (!CollectionUtils.isEmpty(haveClassStudentIds)){
+            List<StudentServeCourseHomeworkDto> studentHomeworks = studentCourseHomeworkDao.findStudentHomeworkWithCourseDateRange(monDayDate.toString(), sunDayDate.toString(), new ArrayList<>(haveClassStudentIds));
+            studentHomeworkMap = studentHomeworks.stream().filter(h -> DateUtil.daysBetween(h.getCourseStartTime(), h.getHomeworkCreateTime())<3).collect(Collectors.groupingBy(StudentServeCourseHomeworkDto::getUserId));
+        }
+
+        if(!CollectionUtils.isEmpty(noClassStudentIds)){
+            List<ExtracurricularExercisesReply> studentExercises = extracurricularExercisesReplyDao.getStudentExercisesWithTimeZone(monDayDate.toString(), sunDayDate.toString(), new ArrayList<>(noClassStudentIds));
+            studentExercisesMap = studentExercises.stream().collect(Collectors.groupingBy(ExtracurricularExercisesReply::getUserId));
+        }
+
+        List<StudentExtracurricularExercisesSituation> results=new ArrayList<>();
+        for (StudentServeDto serviceStudent : serviceStudents) {
+
+            if(dontServeInCurrentWeekStudentIds.contains(serviceStudent.getUserId())){
+                continue;
+            }
+
+            StudentExtracurricularExercisesSituation studentExtracurricularExercisesSituation=new StudentExtracurricularExercisesSituation();
+            studentExtracurricularExercisesSituation.setStudentId(serviceStudent.getUserId());
+            studentExtracurricularExercisesSituation.setTeacherId(serviceStudent.getTeacherId());
+            studentExtracurricularExercisesSituation.setExpectExercisesNum(1);
+            studentExtracurricularExercisesSituation.setWeekOfYear(nowDate.get(DateUtil.weekFields.weekOfYear()));
+            studentExtracurricularExercisesSituation.setMonday(DateUtil.stringToDate(monDayDate.toString(), "yyyy-MM-dd"));
+            studentExtracurricularExercisesSituation.setSunday(DateUtil.stringToDate(sunDayDate.toString(), "yyyy-MM-dd"));
+
+            if(haveClassStudentIds.contains(serviceStudent.getUserId())){
+                List<StudentServeCourseHomeworkDto> studentHomeworks = studentHomeworkMap.get(serviceStudent.getUserId());
+                if(CollectionUtils.isEmpty(studentHomeworks)){
+                    studentExtracurricularExercisesSituation.setActualExercisesNum(0);
+                    studentExtracurricularExercisesSituation.setExercisesReplyNum(0);
+                    studentExtracurricularExercisesSituation.setExercisesMessageNum(0);
+                    studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(0);
+                    results.add(studentExtracurricularExercisesSituation);
+                    continue;
+                }else{
+                    studentExtracurricularExercisesSituation.setActualExercisesNum(1);
+                    long replyNum = studentHomeworks.stream().filter(e -> YesOrNoEnum.YES.equals(e.getStatus())).count();
+                    Date lastSubmitTime = studentHomeworks.stream().max(Comparator.comparing(StudentServeCourseHomeworkDto::getSubmitTime)).get().getSubmitTime();
+                    studentExtracurricularExercisesSituation.setLastSubmitTime(lastSubmitTime);
+                    studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
+                    int exercisesMessageNum=0;
+                    int exercisesMessageTimelyNum=0;
+                    for (StudentServeCourseHomeworkDto studentHomework : studentHomeworks) {
+                        if(!new Integer(1).equals(studentHomework.getStatus())){
+                            continue;
+                        }
+                        if(!new Integer(1).equals(studentHomework.getIsReplied())){
+                            continue;
+                        }
+                        exercisesMessageNum+=1;
+                        if(new Integer(1).equals(studentHomework.getIsRepliedTimely())){
+                            exercisesMessageTimelyNum+=1;
+                        }
+                    }
+                    studentExtracurricularExercisesSituation.setExercisesMessageNum(exercisesMessageNum>0?1:0);
+                    studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
+                    results.add(studentExtracurricularExercisesSituation);
+                }
+            }
+
+            if(noClassStudentIds.contains(serviceStudent.getUserId())){
+                List<ExtracurricularExercisesReply> studentExercises = studentExercisesMap.get(serviceStudent.getUserId());
+                if(CollectionUtils.isEmpty(studentExercises)){
+                    studentExtracurricularExercisesSituation.setActualExercisesNum(0);
+                    studentExtracurricularExercisesSituation.setExercisesReplyNum(0);
+                    studentExtracurricularExercisesSituation.setExercisesMessageNum(0);
+                    studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(0);
+                    results.add(studentExtracurricularExercisesSituation);
+                    continue;
+                }
+                studentExtracurricularExercisesSituation.setActualExercisesNum(1);
+                long replyNum = studentExercises.stream().filter(e -> e.getStatus()==1).count();
+                Date lastSubmitTime = studentExercises.stream().max(Comparator.comparing(ExtracurricularExercisesReply::getSubmitTime)).get().getSubmitTime();
+                studentExtracurricularExercisesSituation.setLastSubmitTime(lastSubmitTime);
+                studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
+                int exercisesMessageNum=0;
+                int exercisesMessageTimelyNum=0;
+                for (ExtracurricularExercisesReply studentHomework : studentExercises) {
+                    if(!new Integer(1).equals(studentHomework.getStatus())){
+                        continue;
+                    }
+                    if(!new Integer(1).equals(studentHomework.getIsReplied())){
+                        continue;
+                    }
+                    exercisesMessageNum+=1;
+                    if(new Integer(1).equals(studentHomework.getIsRepliedTimely())){
+                        exercisesMessageTimelyNum+=1;
+                    }
+                }
+                studentExtracurricularExercisesSituation.setExercisesMessageNum(exercisesMessageNum>0?1:0);
+                studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
+                results.add(studentExtracurricularExercisesSituation);
+            }
+        }
+    }
+}

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -416,6 +416,26 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	}
 
 	@Override
+	public PageInfo queryTeacherAttendances(TeacherCloseQueryInfo queryInfo) {
+		PageInfo<TeacherAttendancesDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<TeacherAttendancesDto> dataList = null;
+		int count = teacherAttendanceDao.countTeacherAttendances(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = teacherAttendanceDao.queryTeacherAttendances(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	@Override
 	public boolean pushNoSignOutMessage() {
 
 		Integer minutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.SIGN_OUT_MESSAGE_PUSH_MINUTE));;

+ 13 - 0
mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesReplyMapper.xml

@@ -475,5 +475,18 @@
 				sch.user_id_=#{studentId} AND DATE_FORMAT( sch.create_time_, '%Y-%m-%d' ) BETWEEN #{monday} AND #{sunday})
 		) t
 	</select>
+	<select id="getStudentExercisesWithTimeZone" resultMap="ExtracurricularExercisesReply">
+		SELECT
+			eer.id_,
+			eer.user_id_,
+			eer.status_,
+			eer.submit_time_,
+			eer.is_replied_,
+			eer.is_replied_timely_
+		FROM
+			extracurricular_exercises_reply eer
+		WHERE
+			DATE_FORMAT( eer.create_time_, '%Y-%m-%d' ) BETWEEN #{startDate} AND #{endDate}
+	</select>
 
 </mapper>

+ 6 - 2
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -32,6 +32,7 @@
 		<result column="memo_" property="memo" />
 		<result column="repair_user_id_" property="repairUserId" />
         <result column="ownership_type_" property="ownershipType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="fee_type_" property="feeType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 	</resultMap>
 
 	<!-- 根据主键查询一条记录 -->
@@ -56,12 +57,12 @@
 		INSERT INTO music_group
 		(id_,name_,organ_id_,school_id_,apply_expire_date_,team_teacher_id_,educational_teacher_id_,charge_type_id_,course_form_,create_time_,update_time_,status_,
 		bill_start_date_,improvent_classes_num_,enroll_classes_,payment_expire_date_,is_extra_class_,settlement_type_,cooperation_organ_id_,enlightenment_course_time_,
-		parent_meeting_time_,img_,director_user_id_,is_classroom_lessons_,memo_,expect_start_group_date_,ownership_type_,repair_user_id_)
+		parent_meeting_time_,img_,director_user_id_,is_classroom_lessons_,memo_,expect_start_group_date_,ownership_type_,repair_user_id_,fee_type_)
 		VALUES(#{id},#{name},#{organId},#{schoolId},#{applyExpireDate},#{teamTeacherId},#{educationalTeacherId},#{chargeTypeId},#{courseForm},now(),now(),
 		#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{billStartDate},#{improventClassesNum},#{enrollClasses},#{paymentExpireDate},
 		#{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{settlementType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 		#{cooperationOrganId},#{enlightenmentCourseTime},#{parentMeetingTime},#{img},#{directorUserId},#{isClassroomLessons},#{memo},#{expectStartGroupDate},
-		#{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{repairUserId})
+		#{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{repairUserId},#{feeType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
 	</insert>
 
 	<!-- 根据主键查询一条记录 -->
@@ -71,6 +72,9 @@
 			<if test="ownershipType != null">
 				ownership_type_ = #{ownershipType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 			</if>
+			<if test="feeType != null">
+				fee_type_ = #{feeType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+			</if>
 			<if test="status != null">
 				status_ = #{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 			</if>

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

@@ -345,6 +345,26 @@
         </foreach>
     </select>
 
+    <resultMap id="StudentServeCourseHomeworkDto" type="com.ym.mec.biz.dal.dto.StudentServeCourseHomeworkDto" extends="StudentCourseHomework">
+        <result property="courseStartTime" column="course_start_time_"/>
+        <result property="homeworkCreateTime" column="homework_create_time_"/>
+    </resultMap>
+    <select id="findStudentHomeworkWithCourseDateRange" resultMap="StudentServeCourseHomeworkDto">
+        SELECT
+            sch.*,
+            DATE_FORMAT(sch.create_time_, '%Y-%m-%d') homework_create_time_,
+            cs.class_date_
+        FROM
+            student_course_homework sch
+            LEFT JOIN course_schedule cs ON sch.course_schedule_id_ = cs.id_
+        WHERE
+            cs.class_date_ BETWEEN #{startDate} AND #{endDate}
+            AND sch.user_id_ IN
+            <foreach collection="studentIds" item="studentId" separator="," open="(" close=")">
+                #{studentId}
+            </foreach>
+    </select>
+
     <delete id="delByCourseScheduleId">
 		DELETE FROM student_course_homework WHERE course_schedule_id_ = #{courseScheduleId} 
 	</delete>

+ 19 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -330,4 +330,23 @@
         LEFT JOIN student s ON s.user_id_=su.id_
         WHERE s.service_tag_=1 AND FIND_IN_SET('STUDENT', su.user_type_)
     </select>
+
+    <resultMap id="StudentServeDto" type="com.ym.mec.biz.dal.dto.StudentServeDto" extends="Student">
+            <result property="courseStartTime" column="course_start_time_"/>
+    </resultMap>
+    <select id="getBeServiceStudents" resultMap="StudentServeDto">
+        SELECT
+            s.*,
+            MIN( CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) ) course_start_time_
+        FROM
+            student s
+            LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = s.user_id_
+            LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+            AND CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &gt; #{monday}
+            AND cs.group_type_ IN ( 'MUSIC', 'PRACTICE' )
+        WHERE
+            s.service_tag_ = 1
+        GROUP BY
+            s.user_id_
+    </select>
 </mapper>

+ 74 - 0
mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml

@@ -166,6 +166,23 @@
         <result column="end_class_time_" property="endClassTime"/>
     </resultMap>
 
+    <resultMap id="TeacherAttendancesDto" type="com.ym.mec.biz.dal.dto.TeacherAttendancesDto">
+        <result column="class_date_" property="classDate"/>
+        <result column="start_class_time_" property="startClassTime"/>
+        <result column="end_class_time_" property="endClassTime"/>
+        <result column="course_schedule_type_" property="courseScheduleType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="course_schedule_status_" property="courseScheduleStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="course_schedule_name_" property="courseScheduleName"/>
+        <result column="teacher_name_" property="teacherName"/>
+        <result column="teacher_id_" property="teacherId"/>
+        <result column="sign_in_status_" property="signInStatus"/>
+        <result column="sign_out_status_" property="signOutStatus"/>
+        <result column="sign_in_time_" property="signInTime"/>
+        <result column="sign_out_time_" property="signOutTime"/>
+        <result column="remark_" property="remark"/>
+        <result column="course_schedule_id_" property="courseScheduleId"/>
+    </resultMap>
+
     <sql id="queryCondition">
         <where>
             (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
@@ -198,6 +215,38 @@
             </if>
         </where>
     </sql>
+    <sql id="queryTeacherAttendancesCondition">
+        <where>
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL) AND cs.actual_teacher_id_ = ta.teacher_id_
+            <if test="search != null and search != ''">
+                AND (su.id_ = #{search} OR su.real_name_ LIKE CONCAT('%',#{search},'%') OR cs.id_ = #{search} OR cs.name_ LIKE CONCAT('%',#{search},'%'))
+            </if>
+            <if test="courseStartDate != null">
+                AND cs.class_date_ &gt;= #{courseStartDate}
+            </if>
+            <if test="courseEndDate != null">
+                AND cs.class_date_ &lt;= #{courseEndDate}
+            </if>
+            <if test="signInStatus != null and signInStatus != '' and signInStatus != 3">
+                AND ta.sign_in_status_ = #{signInStatus}
+            </if>
+            <if test="signOutStatus != null and signOutStatus != '' and signOutStatus != 3">
+                AND ta.sign_out_status_ = #{signOutStatus}
+            </if>
+            <if test="signOutStatus != null and signOutStatus != '' and signOutStatus == 3">
+                AND ta.sign_out_status_ IS NULL
+            </if>
+            <if test="signInStatus != null and signInStatus != '' and signInStatus == 3">
+                AND ta.sign_in_status_ IS NULL
+            </if>
+            <if test="courseScheduleType != null">
+                AND cs.type_ = #{courseScheduleType}
+            </if>
+            <if test="organId != null and organId != ''">
+                AND FIND_IN_SET(t.organ_id_,#{organId})
+            </if>
+        </where>
+    </sql>
 
     <select id="getTeacherPersonalAttendances" parameterType="map" resultMap="teacherPersonalAttendance">
         SELECT
@@ -213,12 +262,37 @@
         <include refid="global.limit"/>
     </select>
 
+    <select id="queryTeacherAttendances" parameterType="map" resultMap="TeacherAttendancesDto">
+        SELECT su.real_name_ teacher_name_,su.id_ teacher_id_,ta.course_schedule_id_,cs.name_ course_schedule_name_,
+        cs.status_ course_schedule_status_,
+        cs.class_date_,cs.start_class_time_,cs.end_class_time_,cs.type_ course_schedule_type_,
+        IF(ta.sign_in_status_ IS NULL,3,ta.sign_in_status_) sign_in_status_,
+        IF(ta.sign_out_status_ IS NULL,3,ta.sign_out_status_) sign_out_status_,
+        ta.sign_in_time_,ta.sign_out_time_,ta.remark_
+        FROM course_schedule cs
+        LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
+        LEFT JOIN teacher t ON t.id_ = ta.teacher_id_
+        LEFT JOIN sys_user su ON su.id_ = t.id_
+        <include refid="queryTeacherAttendancesCondition"/>
+        ORDER BY cs.class_date_ ASC,cs.start_class_time_ ASC
+        <include refid="global.limit"/>
+    </select>
+
     <select id="getTeacherPersonalAttendancesCount" resultType="int">
         SELECT count(cs.id_) FROM course_schedule cs LEFT JOIN teacher_attendance ta
         ON ta.course_schedule_id_=cs.id_
         <include refid="queryCondition"/>
     </select>
 
+    <select id="countTeacherAttendances" resultType="int">
+        SELECT COUNT(DISTINCT cs.id_)
+        FROM course_schedule cs
+        LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
+        LEFT JOIN teacher t ON t.id_ = ta.teacher_id_
+        LEFT JOIN sys_user su ON su.id_ = t.id_
+        <include refid="queryTeacherAttendancesCondition"/>
+    </select>
+
     <select id="countClassTime" resultType="java.lang.Integer">
         SELECT COUNT(*) FROM teacher_attendance WHERE class_group_id_=#{classGroupId} FOR UPDATE
     </select>

+ 5 - 2
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -124,7 +124,9 @@ public class RoomServiceImpl implements RoomService {
         String userId = sysUser.getId().toString();
         Teacher teacher = teacherDao.get(Integer.parseInt(userId));
         CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId));
-
+        if(teacher != null && userId.equals(courseSchedule.getActualTeacherId())){
+            courseScheduleStudentPaymentDao.adjustPlayMidi(Long.parseLong(roomId),null,null);
+        }
         String continueCourseTime = sysConfigDao.findConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME);
         if(StringUtils.isEmpty(continueCourseTime)){
             continueCourseTime = "5";
@@ -374,6 +376,7 @@ public class RoomServiceImpl implements RoomService {
         CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId.substring(1)));
         try {
             if(teacher != null && teacher.getId().equals(courseSchedule.getActualTeacherId())){
+                courseScheduleStudentPaymentDao.adjustPlayMidi(Long.parseLong(roomId.substring(1)),null,null);
                 teacherAttendanceService.addTeacherAttendanceRecord(Integer.parseInt(roomId.substring(1)),user.getId(), SignStatusEnum.SIGN_OUT,true);
             }else {
                 studentAttendanceService.addStudentAttendanceRecord(Integer.parseInt(roomId.substring(1)),user.getId(), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_OUT);
@@ -1456,4 +1459,4 @@ public class RoomServiceImpl implements RoomService {
         }
         return result;
     }
-}
+}

+ 36 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TeacherAttendanceController.java

@@ -1,11 +1,16 @@
 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.entity.TeacherAttendance;
 import com.ym.mec.biz.dal.page.TeacherCloseQueryInfo;
 import com.ym.mec.biz.service.TeacherAttendanceService;
 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.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -13,6 +18,9 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Arrays;
+import java.util.List;
+
 @RequestMapping("teacherAttendance")
 @Api(tags = "教师签到服务")
 @RestController
@@ -20,6 +28,10 @@ public class TeacherAttendanceController extends BaseController {
 
     @Autowired
     private TeacherAttendanceService teacherAttendanceService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeDao employeeDao;
 
     @ApiOperation(value = "查询教师签到(上课)记录")
     @GetMapping("/getTeacherPersonalAttendances")
@@ -28,6 +40,30 @@ public class TeacherAttendanceController extends BaseController {
         return succeed(teacherAttendanceService.getTeacherPersonalAttendances(queryInfo));
     }
 
+    @ApiOperation(value = "获取教师考勤记录")
+    @PostMapping("/queryTeacherAttendances")
+    @PreAuthorize("@pcs.hasPermissions('teacherAttendance/queryTeacherAttendances')")
+    public Object queryTeacherAttendances(TeacherCloseQueryInfo 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(teacherAttendanceService.queryTeacherAttendances(queryInfo));
+    }
+
     @ApiOperation(value = "查询某节课教师签到记录")
     @GetMapping("/getTeacherPersonalAttendance")
     @PreAuthorize("@pcs.hasPermissions('teacherAttendance/getTeacherPersonalAttendance')")