Browse Source

问题一大堆

zouxuan 2 years ago
parent
commit
5183dc4cbf
20 changed files with 277 additions and 683 deletions
  1. 5 1
      mec-biz/src/main/java/com/ym/mec/biz/annotation/PushSchoolCourseChange.java
  2. 13 7
      mec-biz/src/main/java/com/ym/mec/biz/aspect/PushSchoolCourseChangeAspect.java
  3. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java
  4. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  5. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/CourseStudentDto.java
  6. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/TeacherAttendanceDto.java
  7. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/TeacherAttendanceSumDto.java
  8. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/page/TeacherAttendanceQueryDto.java
  9. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/page/TeacherAttendanceQueryInfo.java
  10. 29 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/TeacherAttendanceWrapper.java
  11. 14 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleModifyLogService.java
  12. 1 8
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  13. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  14. 85 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleModifyLogServiceImpl.java
  15. 42 646
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  16. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java
  17. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  18. 49 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  19. 5 5
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  20. 1 0
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolTeacherAttendanceController.java

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/annotation/PushSchoolCourseChange.java

@@ -9,5 +9,9 @@ import java.lang.annotation.Target;
 @Target(ElementType.METHOD)
 public @interface PushSchoolCourseChange {
 
-    long value();
+    //课程编号
+    long courseId();
+
+    //事件、1创建,2修改
+    int event();
 }

+ 13 - 7
mec-biz/src/main/java/com/ym/mec/biz/aspect/PushSchoolCourseChangeAspect.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.aspect;
 
+import com.ym.mec.biz.annotation.PushSchoolCourseChange;
 import com.ym.mec.biz.service.CourseScheduleModifyLogService;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.AfterReturning;
@@ -10,17 +11,22 @@ import org.springframework.beans.factory.annotation.Autowired;
 @Aspect
 public class PushSchoolCourseChangeAspect {
 
-    @Pointcut("@annotation(com.ym.mec.biz.annotation.PushSchoolCourseChange)")
-    public void courseChange(){}
+    @Pointcut("@annotation(pushSchoolCourseChange)")
+    public void courseChange(PushSchoolCourseChange pushSchoolCourseChange){}
 
     @Autowired
     private CourseScheduleModifyLogService courseScheduleModifyLogService;
 
-    @AfterReturning(pointcut = "courseChange()",returning = "courseId")
-    public void afterPush(JoinPoint joinPoint,long courseId){
-        if(courseId == 0L){
-            return;
+    @AfterReturning(pointcut = "courseChange(pushSchoolCourseChange)")
+    public void afterPush(JoinPoint joinPoint, PushSchoolCourseChange pushSchoolCourseChange){
+        long courseId = pushSchoolCourseChange.courseId();
+        int event = pushSchoolCourseChange.event();
+        //事件、1创建,2修改
+        if(event == 1){
+            courseScheduleModifyLogService.pushSchoolCourseCreate(courseId);
+        }else {
+            courseScheduleModifyLogService.pushSchoolCourseChange(courseId);
         }
-        courseScheduleModifyLogService.pushSchoolCourseChange(courseId);
+
     }
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.school.dto.TeacherAttendanceListDto;
 import com.ym.mec.biz.dal.school.dto.TeacherAttendanceSumDto;
 import com.ym.mec.biz.dal.school.page.TeacherAttendanceQueryInfo;
+import com.ym.mec.biz.dal.wrapper.TeacherAttendanceWrapper;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
@@ -271,7 +272,7 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
 
     List<TeacherAttendanceSumDto> queryTeacherAttendance(@Param("queryInfo") TeacherAttendanceQueryInfo queryInfo);
 
-	List<Map<Integer,Integer>> queryTeacherAttendanceForWeek(@Param("queryInfo") TeacherAttendanceQueryInfo queryInfo);
+	List<TeacherAttendanceWrapper.CourseTeacherAttendance> queryTeacherAttendanceForWeek(@Param("queryInfo") TeacherAttendanceQueryInfo queryInfo);
 
 	/**
 	* @description: 获取班级老师考勤列表

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -283,6 +283,12 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
 
     // 学校端注册短信通知
     SMS_SCHOOL_ACCOUNT_REGISTER("SMS_SCHOOL_ACCOUNT_REGISTER","学校端注册短信通知-极光推送"),
+
+    // 学校端注册短信通知
+    JIGUANG_SCHOOL_COURSE_CHANGE("JIGUANG_SCHOOL_COURSE_CHANGE","课程信息变更"),
+
+    // 学校端注册短信通知
+    JIGUANG_SCHOOL_COURSE_CREATE("JIGUANG_SCHOOL_COURSE_CREATE","课程创建"),
     ;
 
     MessageTypeEnum(String code, String msg) {

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/CourseStudentDto.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.school.dto;
 
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -23,4 +24,7 @@ public class CourseStudentDto {
 
     @ApiModelProperty(value = "课后评价是否达标",required = false)
     private Boolean qualifiedFlag;
+
+    @ApiModelProperty(value = "课程状态",required = false)
+    private CourseStatusEnum courseStatus;
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/TeacherAttendanceDto.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.school.dto;
 
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
@@ -39,4 +40,7 @@ public class TeacherAttendanceDto {
     @ApiModelProperty(value = "教学点签到经纬度")
     private String schoolLongitudeLatitude;
 
+    @ApiModelProperty(value = "课程状态")
+    private CourseStatusEnum courseStatus;
+
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/TeacherAttendanceSumDto.java

@@ -23,7 +23,7 @@ public class TeacherAttendanceSumDto {
     private Integer teacherId;
 
     @ApiModelProperty(value = "本周课程考勤状态")
-    private TeacherAttendanceQueryInfo.TeacherAttendanceEnum teacherAttendanceStatus;
+    private TeacherAttendanceQueryInfo.TeacherAttendanceEnum teacherAttendanceStatus = TeacherAttendanceQueryInfo.TeacherAttendanceEnum.NO_COURSE;
 
     @ApiModelProperty(value = "本学期异常考勤课程数")
     private Integer errCourseNum;

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/page/TeacherAttendanceQueryDto.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.school.page;
 
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -14,4 +15,7 @@ public class TeacherAttendanceQueryDto {
 
     @ApiModelProperty(value = "老师编号",required = true)
     private Integer teacherId;
+
+    @ApiModelProperty(value = "课程状态",required = true)
+    private CourseStatusEnum courseStatus;
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/page/TeacherAttendanceQueryInfo.java

@@ -1,7 +1,9 @@
 package com.ym.mec.biz.dal.school.page;
 
 import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.common.enums.BaseEnum;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -57,4 +59,9 @@ public class TeacherAttendanceQueryInfo{
 
     @ApiModelProperty(value = "(不用传)",required = false)
     private List<String> musicGroupIds;
+
+    @ApiModelProperty(value = "课程状态",required = true)
+    private CourseStatusEnum courseStatus;
+
+    private Integer tenantId = TenantContextHolder.getTenantId();
 }

+ 29 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/TeacherAttendanceWrapper.java

@@ -0,0 +1,29 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
+import lombok.Data;
+
+public class TeacherAttendanceWrapper {
+
+    @Data
+    public static class CourseTeacherAttendance{
+        private Long courseScheduleId;
+
+        private Long actualTeacherId;
+
+        private CourseStatusEnum courseStatus;
+
+        private Integer signInStatus;
+
+        private Integer signOutStatus;
+
+        private String signInLongitudeLatitude;
+
+        private String signOutLongitudeLatitude;
+
+        private Integer schoolId;
+
+        private TeachModeEnum teachMode;
+    }
+}

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleModifyLogService.java

@@ -1,9 +1,23 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dao.CourseScheduleModifyLogDao;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseScheduleModifyLog;
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.common.service.BaseService;
 
 public interface CourseScheduleModifyLogService extends BaseService<Integer, CourseScheduleModifyLog> {
+    CourseScheduleModifyLogDao getDao();
 
     void pushSchoolCourseChange(long courseId);
+
+    void pushSchoolCourseChange(CourseSchedule courseSchedule, MusicGroup musicGroup);
+
+    void pushSchoolCourseChange(CourseSchedule courseSchedule);
+
+    void pushSchoolCourseCreate(long courseId);
+
+    void pushSchoolCourseCreate(CourseSchedule courseSchedule, MusicGroup musicGroup);
+
+    void pushSchoolCourseCreate(CourseSchedule courseSchedule);
 }

+ 1 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -18,6 +18,7 @@ import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.Date;
@@ -232,14 +233,6 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	HttpResponseResult courseAdjust(List<CourseSchedule> newCourseSchedules, Boolean allowZeroSalary);
 
 	/**
-	 * @Author: Joburgess
-	 * @Date: 2019/9/23
-	 * 课时调整
-	 */
-	@Deprecated
-	void classStartDateAdjust(List<CourseSchedule> newCourseSchedules);
-
-	/**
 	 * @describe 小课课程批量调整
 	 * @author Joburgess
 	 * @date 2019/12/11

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

@@ -84,6 +84,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private ClassGroupTeacherMapperService classGroupTeacherMapperService;
     @Autowired
+    private CourseScheduleDao courseScheduleDao;
+    @Autowired
     private TeacherDefaultMusicGroupSalaryService teacherDefaultMusicGroupSalaryService;
     @Autowired
     private StudentRegistrationDao studentRegistrationDao;
@@ -94,8 +96,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private SubjectService subjectService;
     @Autowired
-    private CourseScheduleDao courseScheduleDao;
-    @Autowired
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
     @Autowired
     private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;

+ 85 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleModifyLogServiceImpl.java

@@ -1,18 +1,29 @@
 package com.ym.mec.biz.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import com.ym.mec.biz.dal.dao.CourseScheduleModifyLogDao;
 import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseScheduleModifyLog;
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.wrapper.SchoolStaffWrapper;
 import com.ym.mec.biz.service.CourseScheduleModifyLogService;
+import com.ym.mec.biz.service.SchoolStaffService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 @Service
@@ -26,6 +37,8 @@ public class CourseScheduleModifyLogServiceImpl extends BaseServiceImpl<Integer,
 	private MusicGroupDao musicGroupDao;
 	@Autowired
 	private SysMessageService sysMessageService;
+	@Autowired
+	private SchoolStaffService schoolStaffService;
 
 	@Override
 	public BaseDAO<Integer, CourseScheduleModifyLog> getDAO() {
@@ -33,6 +46,11 @@ public class CourseScheduleModifyLogServiceImpl extends BaseServiceImpl<Integer,
 	}
 
 	@Override
+	public CourseScheduleModifyLogDao getDao() {
+		return courseScheduleModifyLogDao;
+	}
+
+	@Override
 	public void pushSchoolCourseChange(long courseId) {
 		CourseSchedule courseSchedule = courseScheduleDao.get(courseId);
 		if(Objects.isNull(courseSchedule)){
@@ -41,8 +59,73 @@ public class CourseScheduleModifyLogServiceImpl extends BaseServiceImpl<Integer,
 		if(courseSchedule.getGroupType() != GroupType.MUSIC){
 			return;
 		}
+		MusicGroup musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId());
+		this.pushSchoolCourseChange(courseSchedule,musicGroup);
+	}
+
+	@Override
+	public void pushSchoolCourseChange(CourseSchedule courseSchedule, MusicGroup musicGroup) {
+		if(musicGroup.getCooperationOrganId() != null){
+			IPage<SchoolStaffWrapper.SchoolStaff> page = schoolStaffService.selectPage(new Page<>(1, -1),
+					SchoolStaffWrapper.SchoolStaffQuery.builder().schoolId(musicGroup.getCooperationOrganId().longValue()).build());
+			List<SchoolStaffWrapper.SchoolStaff> records = page.getRecords();
+			if (CollectionUtils.isNotEmpty(records)) {
+				Map<Integer, String> usersMap = new HashMap<>(records.size());
+				records.stream().forEach(o -> usersMap.put(o.getUserId().intValue(), o.getUserId().toString()));
+
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_SCHOOL_COURSE_CHANGE,
+						usersMap, null, 0, null,
+						"SCHOOL",musicGroup.getName(),courseSchedule.getType().getMsg());
+			}
+		}
+	}
+
+	@Override
+	public void pushSchoolCourseChange(CourseSchedule courseSchedule) {
+		if(courseSchedule.getGroupType() != GroupType.MUSIC){
+			return;
+		}
+		MusicGroup musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId());
+		this.pushSchoolCourseChange(courseSchedule,musicGroup);
+	}
+
+	@Override
+	public void pushSchoolCourseCreate(long courseId) {
+		CourseSchedule courseSchedule = courseScheduleDao.get(courseId);
+		if(Objects.isNull(courseSchedule)){
+			return;
+		}
+		if(courseSchedule.getGroupType() != GroupType.MUSIC){
+			return;
+		}
 		String musicGroupId = courseSchedule.getMusicGroupId();
-		musicGroupDao.get(musicGroupId);
-		//TODO
+		MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+		this.pushSchoolCourseChange(courseSchedule,musicGroup);
+	}
+
+	@Override
+	public void pushSchoolCourseCreate(CourseSchedule courseSchedule, MusicGroup musicGroup) {
+		if(musicGroup.getCooperationOrganId() != null){
+			IPage<SchoolStaffWrapper.SchoolStaff> page = schoolStaffService.selectPage(new Page<>(1, -1),
+					SchoolStaffWrapper.SchoolStaffQuery.builder().schoolId(musicGroup.getCooperationOrganId().longValue()).build());
+			List<SchoolStaffWrapper.SchoolStaff> records = page.getRecords();
+			if (CollectionUtils.isNotEmpty(records)) {
+				Map<Integer, String> usersMap = new HashMap<>(records.size());
+				records.stream().forEach(o -> usersMap.put(o.getUserId().intValue(), o.getUserId().toString()));
+
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_SCHOOL_COURSE_CREATE,
+						usersMap, null, 0, null,
+						"SCHOOL",musicGroup.getName(),courseSchedule.getType().getMsg());
+			}
+		}
+	}
+
+	@Override
+	public void pushSchoolCourseCreate(CourseSchedule courseSchedule) {
+		if(courseSchedule.getGroupType() != GroupType.MUSIC){
+			return;
+		}
+		MusicGroup musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId());
+		this.pushSchoolCourseChange(courseSchedule,musicGroup);
 	}
 }

File diff suppressed because it is too large
+ 42 - 646
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java


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

@@ -83,6 +83,8 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
     @Autowired
     private ImGroupMemberService imGroupMemberService;
     @Autowired
+    private CourseScheduleModifyLogService courseScheduleModifyLogService;
+    @Autowired
     private ImUserFriendService imUserFriendService;
     @Autowired
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;

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

@@ -1702,7 +1702,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     @Override
     public List<OperatingTotalIncomeDto> queryOperatingSummaryIncome(Map<String, Object> params) {
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentOrderDao.ExportQueryPage1(params);
-        studentPaymentOrderExportDtos.addAll(studentPaymentOrderDao.ExportQueryPage2(params));
+//        studentPaymentOrderExportDtos.addAll(studentPaymentOrderDao.ExportQueryPage2(params));
         long i = 1;
         //获取机构费率
         List<Long> otherOrderIds = studentPaymentOrderExportDtos.stream().filter(e -> e.getGroupType() != GroupType.GOODS_SELL

+ 49 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -16,6 +16,7 @@ import com.ym.mec.biz.dal.school.dto.TeacherAttendanceListDto;
 import com.ym.mec.biz.dal.school.dto.TeacherAttendanceSumDto;
 import com.ym.mec.biz.dal.school.page.TeacherAttendanceQueryInfo;
 import com.ym.mec.biz.dal.wrapper.SchoolStaffWrapper;
+import com.ym.mec.biz.dal.wrapper.TeacherAttendanceWrapper;
 import com.ym.mec.biz.event.source.SendMessageSource;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
@@ -36,6 +37,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -1197,21 +1199,57 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			info.setStartTerm(monday);
 			info.setEndTerm(sunday);
 			info.setMusicGroupIds(queryInfo.getMusicGroupIds());
-			Map<Integer,Long> weekCount = MapUtil.convertIntegerMap(teacherAttendanceDao.queryTeacherAttendanceForWeek(info));
+			List<TeacherAttendanceWrapper.CourseTeacherAttendance> courseTeacherAttendances = teacherAttendanceDao.queryTeacherAttendanceForWeek(info);
+			Map<Long, List<TeacherAttendanceWrapper.CourseTeacherAttendance>> attendanceMap = new HashMap<>(dtoList.size());
+			Map<Integer, School> idSchoolMap = new HashMap<>();
+			if(CollectionUtils.isNotEmpty(courseTeacherAttendances)){
+				attendanceMap = courseTeacherAttendances.stream().collect(Collectors.groupingBy(e -> e.getActualTeacherId()));
+				Set<Integer> schoolIds = courseTeacherAttendances.stream().map(TeacherAttendanceWrapper.CourseTeacherAttendance::getSchoolId).collect(Collectors.toSet());
+				if(schoolIds != null && schoolIds.size() > 0){
+					List<School> schools = schoolDao.getSchools(new ArrayList<>(schoolIds));
+					if(!org.springframework.util.CollectionUtils.isEmpty(schools)){
+						idSchoolMap = schools.stream().collect(Collectors.toMap(School::getId, s->s, (s1, s2)->s1));
+					}
+				}
+			}
+			//定位范围
+			String attendanceRange = sysTenantConfigService.getTenantConfigValue(SysConfigService.ATTENDANCE_RANGE,queryInfo.getTenantId());
+
 			for (TeacherAttendanceSumDto dto : dtoList) {
 				SimpleUserDto userDto = simpleUserDtoMap.get(dto.getTeacherId());
 				if(Objects.nonNull(userDto)){
 					dto.setTeacherName(userDto.getUserName());
 					dto.setTeacherAvatar(userDto.getAvatar());
 				}
-				Long errCourseNum = weekCount.get(dto.getTeacherId());
-				if(errCourseNum == null){
-					dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.NO_COURSE);
-				}else {
-					if(errCourseNum > 0L){
-						dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
-					}else {
-						dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.NORMAL);
+				List<TeacherAttendanceWrapper.CourseTeacherAttendance> attendances = attendanceMap.get(dto.getTeacherId());
+				if(CollectionUtils.isNotEmpty(attendances)){
+					dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.NORMAL);
+					att:for (TeacherAttendanceWrapper.CourseTeacherAttendance attendance : attendances) {
+						if(attendance.getCourseStatus() == CourseStatusEnum.NOT_START){
+							continue att;
+						}
+						if(attendance.getSignInStatus() == 0 || attendance.getSignOutStatus() == 0){
+							dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
+							break att;
+						}
+						if(attendance.getTeachMode() == TeachModeEnum.OFFLINE){
+							if(StringUtils.isEmpty(attendance.getSignInLongitudeLatitude()) || StringUtils.isEmpty(attendance.getSignOutLongitudeLatitude())){
+								//计算考勤范围
+								School school = idSchoolMap.get(attendance.getSchoolId());
+								if(school != null){
+									Boolean signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignInLongitudeLatitude(), attendanceRange);
+									if(!signRange){
+										dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
+										break att;
+									}
+									signRange = courseScheduleTeacherSalaryService.getSignRange(school.getLongitudeLatitude(), attendance.getSignOutLongitudeLatitude(), attendanceRange);
+									if(!signRange){
+										dto.setTeacherAttendanceStatus(TeacherAttendanceQueryInfo.TeacherAttendanceEnum.ERR);
+										break att;
+									}
+								}
+							}
+						}
 					}
 				}
 			}
@@ -1261,6 +1299,8 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 				attendanceDto.setSignOutAddressStatus(signRange1);
 			}
 		}
+		CourseSchedule courseSchedule = courseScheduleDao.get(courseId);
+		attendanceDto.setCourseStatus(courseSchedule.getStatus());
 		return attendanceDto;
 	}
 

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

@@ -657,12 +657,12 @@
             </if>
         </where>
     </sql>
-    <select id="queryTeacherAttendanceForWeek" resultType="java.util.Map">
-        select cs.actual_teacher_id_ 'key',
-               COUNT(CASE WHEN ta.sign_in_status_ = 0 or ta.sign_in_status_ = 0
-                   or ta.sign_in_status_ IS NULL or ta.sign_in_status_ IS NULL THEN 1 ELSE 1 END) 'value'
+    <select id="queryTeacherAttendanceForWeek" resultType="com.ym.mec.biz.dal.wrapper.TeacherAttendanceWrapper$CourseTeacherAttendance">
+        select cs.actual_teacher_id_ actualTeacherId,cs.id_ course_schedule_id_ courseScheduleId,
+        cs.status_ courseStatus,ta.sign_in_status_ signInStatus,ta.sign_out_status_ signOutStatus,cs.teach_mode_ teachMode,
+               ta.sign_in_longitude_latitude_ signInLongitudeLatitude,ta.sign_out_longitude_latitude_ signOutLongitudeLatitude,cs.schoole_id_ schoolId
         from course_schedule cs
-                 left join teacher_attendance ta ON ta.course_schedule_id_ = cs.id_ AND ta.teacher_id_ = cs.actual_teacher_id_
+        left join teacher_attendance ta ON ta.course_schedule_id_ = cs.id_ AND ta.teacher_id_ = cs.actual_teacher_id_
         <include refid="queryTeacherAttendanceSql"/>
         group by cs.actual_teacher_id_
     </select>

+ 1 - 0
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolTeacherAttendanceController.java

@@ -40,6 +40,7 @@ public class SchoolTeacherAttendanceController extends BaseController {
         queryInfo.setCoopId(coopId);
         queryInfo.setTeacherId(queryDto.getTeacherId());
         queryInfo.setClassGroupId(queryDto.getClassGroupId());
+        queryInfo.setCourseStatus(queryDto.getCourseStatus());
         List<TeacherAttendanceSumDto> sumDtos = teacherAttendanceService.queryTeacherAttendance(queryInfo);
         return succeed(CollectionUtils.isEmpty(sumDtos)?new TeacherAttendanceSumDto():sumDtos.get(0));
     }

Some files were not shown because too many files changed in this diff