zouxuan пре 2 година
родитељ
комит
5e3431e62b

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

@@ -282,4 +282,14 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
 	* @date 2023/5/10 11:55
 	*/
     List<TeacherAttendanceListDto> getClassTeacherAttendance(@Param("classGroupId") Integer classGroupId, @Param("teacherId") Integer teacherId);
+
+	/**
+	* @description: 获取课程关联的老师考勤
+	 * @param courseId
+	 * @param teacherId
+	* @return com.ym.mec.biz.dal.dto.TeacherAttendanceDto
+	* @author zx
+	* @date 2023/5/10 14:28
+	*/
+	com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto getCourseTeacherAttendance(@Param("courseId") Long courseId, @Param("teacherId") Integer teacherId);
 }

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

@@ -66,6 +66,8 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
      */
     void practiceTeacherSalarySettlement(Integer tenantId);
 
+    Boolean getSignRange(String schoolLongitudeLatitude, String longitudeLatitude, String gpsRange);
+
     /**
      * @describe 教师乐团课课酬结算
      * @author Joburgess
@@ -329,4 +331,7 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
     */
     void splitTeacherSalary(List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList, List<CourseScheduleTeacherSalary> teacherSalaries);
 
+    List<CourseScheduleTeacherSalary> findByCourseSchedule(Long courseScheduleId);
+
+    List<CourseScheduleTeacherSalary> findByCourseSchedules(List<Long> courseScheduleIds);
 }

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

@@ -191,7 +191,7 @@ public interface TeacherAttendanceService extends BaseService<Long, TeacherAtten
 	* @author zx
 	* @date 2023/5/5 09:55
 	*/
-	TeacherAttendanceDto getCourseTeacherAttendance(Long courseId);
+	TeacherAttendanceDto getCourseTeacherAttendance(Long courseId, Integer teacherId);
 
     Map<Long,TeacherAttendance> getMapByCourseIds(List<Long> courseIds);
 }

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

@@ -2,11 +2,9 @@ package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.entity.SalarySettlementDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.CourseSalaryQueryInfo4Web;
@@ -15,10 +13,8 @@ import com.ym.mec.biz.dal.page.ExportTeacherSalaryQueryInfo;
 import com.ym.mec.biz.dal.page.TeacherIncomeQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
-import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
-import com.ym.mec.common.filters.TenantIdThreadLocal;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.tenant.TenantContextHolder;
@@ -27,31 +23,24 @@ 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.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.DateFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoField;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
-import java.util.function.BiConsumer;
-import java.util.function.BiFunction;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Service
@@ -659,7 +648,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         return getCutAmount(cutSalary,cutSalaryUnit,salary);
     }
 
-    public Boolean getSignRange(String schoolLongitudeLatitude,String longitudeLatitude,String gpsRange){
+    @Override
+    public Boolean getSignRange(String schoolLongitudeLatitude, String longitudeLatitude, String gpsRange){
         if(StringUtils.isEmpty(gpsRange)){
             return true;
         }
@@ -2441,4 +2431,14 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
     }
 
+    @Override
+    public List<CourseScheduleTeacherSalary> findByCourseSchedule(Long courseScheduleId) {
+        return courseScheduleTeacherSalaryDao.findByCourseSchedule(courseScheduleId);
+    }
+
+    @Override
+    public List<CourseScheduleTeacherSalary> findByCourseSchedules(List<Long> courseScheduleIds) {
+        return courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
+    }
+
 }

+ 22 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -65,7 +65,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	@Autowired
 	private SendMessageSource sendMessageSource;
 	@Autowired
-	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
+	private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
 	@Autowired
 	private ClassGroupDao classGroupDao;
 	@Autowired
@@ -713,7 +713,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		List<CourseSchedule> courseSchedules = courseScheduleDao.findByCourseScheduleIds(courseScheduleIds);
 		Map<Long, CourseSchedule> idCourseMap = courseSchedules.stream().collect(Collectors.toMap(CourseSchedule::getId, c -> c, (c1, c2) -> c1));
 
-		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalarys = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
+		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalarys = courseScheduleTeacherSalaryService.findByCourseSchedules(courseScheduleIds);
 		Map<Long, List<CourseScheduleTeacherSalary>> courseTeacherSalaryMap = new HashMap<>();
 		if(!CollectionUtils.isEmpty(courseScheduleTeacherSalarys)){
 			courseTeacherSalaryMap = courseScheduleTeacherSalarys.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
@@ -785,7 +785,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			throw new BizException("课程不存在");
 		}
 
-		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedule(teacherAttendanceInfo.getCourseScheduleId());
+		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryService.findByCourseSchedule(teacherAttendanceInfo.getCourseScheduleId());
 		if(!CollectionUtils.isEmpty(courseScheduleTeacherSalaries)&&Objects.nonNull(courseScheduleTeacherSalaries.get(0).getSettlementTime())){
 			throw new BizException("此课程已结算");
 		}
@@ -1162,12 +1162,29 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		//计算考勤范围
 		//定位范围
 		String attendanceRange = sysTenantConfigService.getTenantConfigValue(SysConfigService.ATTENDANCE_RANGE,tenantId);
+		if(CollectionUtils.isNotEmpty(attendanceDtos)){
+			for (TeacherAttendanceListDto attendanceDto : attendanceDtos) {
+				boolean signRange = courseScheduleTeacherSalaryService.getSignRange(attendanceDto.getSchoolLongitudeLatitude(), attendanceDto.getSignInLongitudeLatitude(), attendanceRange);
+				attendanceDto.setSignInAddressStatus(signRange?YesOrNoEnum.YES:YesOrNoEnum.NO);
+				boolean signRange1 = courseScheduleTeacherSalaryService.getSignRange(attendanceDto.getSchoolLongitudeLatitude(), attendanceDto.getSignOutLongitudeLatitude(), attendanceRange);
+				attendanceDto.setSignOutAddressStatus(signRange1?YesOrNoEnum.YES:YesOrNoEnum.NO);
+			}
+		}
 		return attendanceDtos;
 	}
 
 	@Override
-	public com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto getCourseTeacherAttendance(Long courseId) {
-		return null;
+	public com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto getCourseTeacherAttendance(Long courseId, Integer teacherId) {
+		com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto attendanceDto = teacherAttendanceDao.getCourseTeacherAttendance(courseId,teacherId);
+		Integer tenantId = TenantContextHolder.getTenantId();
+		//计算考勤范围
+		//定位范围
+		String attendanceRange = sysTenantConfigService.getTenantConfigValue(SysConfigService.ATTENDANCE_RANGE,tenantId);
+		boolean signRange = courseScheduleTeacherSalaryService.getSignRange(attendanceDto.getSchoolLongitudeLatitude(), attendanceDto.getSignInLongitudeLatitude(), attendanceRange);
+		attendanceDto.setSignInAddressStatus(signRange?YesOrNoEnum.YES:YesOrNoEnum.NO);
+		boolean signRange1 = courseScheduleTeacherSalaryService.getSignRange(attendanceDto.getSchoolLongitudeLatitude(), attendanceDto.getSignOutLongitudeLatitude(), attendanceRange);
+		attendanceDto.setSignOutAddressStatus(signRange1?YesOrNoEnum.YES:YesOrNoEnum.NO);
+		return attendanceDto;
 	}
 
     @Override

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

@@ -677,6 +677,15 @@
         where cs.class_group_id_ = #{classGroupId} and cs.actual_teacher_id_ = #{teacherId}
         AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.new_course_id_ IS NULL
     </select>
+    <select id="getCourseTeacherAttendance" resultType="com.ym.mec.biz.dal.school.dto.TeacherAttendanceDto">
+        select ta.sign_in_time_ signInTime,ta.sign_in_status_ signInStatus,ta.sign_in_longitude_latitude_ signInLongitudeLatitude,
+               ta.sign_out_time_ signOutTime,ta.sign_out_status_ signOutStatus,ta.sign_out_longitude_latitude_ signOutLongitudeLatitude,
+               s.longitude_latitude_ schoolLongitudeLatitude,cs.teach_mode_ teachMode
+        from course_schedule cs
+                 left join teacher_attendance ta ON cs.id_ = ta.course_schedule_id_ AND ta.teacher_id_ = cs.actual_teacher_id_
+                 left join school s ON s.id_ = cs.schoole_id_
+        where cs.id_ = #{courseId} and cs.actual_teacher_id_ = #{teacherId}
+    </select>
     <update id="updateViPSignOutStatus" parameterType="string">
     	UPDATE teacher_attendance SET sign_out_status_ = 1,sign_out_time_= now()
     	WHERE FIND_IN_SET(course_schedule_id_,#{courseScheduleIdList}) AND sign_in_status_ = 1

+ 3 - 2
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolTeacherAttendanceController.java

@@ -49,11 +49,12 @@ public class SchoolTeacherAttendanceController extends BaseController {
 
     @ApiImplicitParams({
             @ApiImplicitParam(name = "courseId", dataType = "Long", required = true, value = "课程编号"),
+            @ApiImplicitParam(name = "teacherId", dataType = "Integer", required = true, value = "老师编号"),
     })
     @ApiOperation(value = "课时获取单节课老师考勤详情----获取课程老师考勤")
     @GetMapping("/getCourseTeacherAttendance")
-    public HttpResponseResult<TeacherAttendanceDto> getCourseTeacherAttendance(Long courseId) {
-        return succeed(teacherAttendanceService.getCourseTeacherAttendance(courseId));
+    public HttpResponseResult<TeacherAttendanceDto> getCourseTeacherAttendance(Long courseId, Integer teacherId) {
+        return succeed(teacherAttendanceService.getCourseTeacherAttendance(courseId,teacherId));
     }