zouxuan 3 年之前
父节点
当前提交
069463b89a

+ 6 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -107,18 +107,12 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     String OFFLINE_SIGN_OUT_GPS_ERROR_CUT_SALARY_UNIT = "offline_sign_out_gps_error_cut_salary_unit";
     //试用期老师课酬发放百分比
     String PROBATION_TEACHER_SALARY = "probation_teacher_salary";
-    //兼职老师考勤申诉时间限制
-    String PARP_TEACHER_SALARY = "probation_teacher_salary";
-    //兼职老师考勤申诉时间限制方式(1、固定时间、2、固定日期)
-    String PARP_TEACHER_SALARY_TYPE = "parp_teacher_salary_type";
-    //全职老师考勤申诉时间限制
-    String FULL_TEACHER_SALARY = "full_teacher_salary";
-    //全职老师考勤申诉时间限制方式(1、固定时间、2、固定日期)
-    String FULL_TEACHER_SALARY_TYPE = "full_teacher_salary_type";
-    //劳务考勤申诉时间限制
-    String LABOUR_TEACHER_SALARY = "labour_teacher_salary";
-    //劳务考勤申诉时间限制方式(1、固定时间、2、固定日期)
-    String LABOUR_TEACHER_SALARY_TYPE = "labour_teacher_salary_type";
+
+    //老师端可申诉考勤时间限制(天)
+    String TEACHER_APP_SALARY_COMPLAINTS_TIME = "teacher_app_salary_complaints_time";
+    //后台老师考勤申诉时间限制
+    String WEB_TEACHER_COMPLAINTS_SALARY = "web_teacher_complaints_salary";
+
     //线下连堂课间隔时间
     String OFFLINE_CONTINUE_COURSE_MINUTES = "offline_continue_course_minutes";
     //学生允许请假的时间,为开课前{}小时

+ 5 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -217,10 +217,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		}
 
 		currentCourseDetail.setCurrentClassTimes(courseScheduleDao.countClassGroupOverCourseNum(currentCourseDetail.getClassId()));
-        SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
+//        SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
         String sysConfigVip = sysTenantConfigService.getTenantConfigValue(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP,user.getTenantId());
-        currentCourseDetail.setEnableStudentAttendanceTimeRange(sysConfig.getParanValue(Integer.class));
-        currentCourseDetail.setEnableStudentAttendanceTimeRangeVip(StringUtils.isEmpty(sysConfigVip)?0:Integer.parseInt(sysConfigVip));
+//        currentCourseDetail.setEnableStudentAttendanceTimeRange(sysConfig.getParanValue(Integer.class));
+        currentCourseDetail.setEnableStudentAttendanceTimeRangeVip(StringUtils.isEmpty(sysConfigVip)?20:Integer.parseInt(sysConfigVip));
         int studentNum = studentAttendanceDao.countByCourseSchedule(courseID);
         if (Objects.nonNull(studentNum)) {
             currentCourseDetail.setStudentAttendanceIsFirstTime(studentNum > 0 ? 0 : 1);
@@ -1055,7 +1055,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             throw new BizException("用户机构信息异常");
         }
         Date now = new Date();
-		String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP, user.getTenantId());
+//		String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP, user.getTenantId());
 		String courseBeforeBufferTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_BEFORE_BUFFER_TIME, user.getTenantId());
 		String courseAfterBufferTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_AFTER_BUFFER_TIME, user.getTenantId());
         Map<String, Object> result = new HashMap<>(7);
@@ -1067,6 +1067,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		}
 		result.put("advanceLeaveHours", advanceLeaveHours);
         result.put("earliestTimeForLeave", Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.EARLIEST_TIME_FOR_LEAVE)));
+		//网络教室可以提前进入时间:对内和对外开课时间 (对内:joinRoomBeforeTime 对外:courseBeforeBufferTime)
         result.put("joinRoomBeforeTime",StringUtils.isEmpty(courseBeforeBufferTime)?10:Integer.parseInt(courseBeforeBufferTime));
 		result.put("courseBeforeBufferTime", StringUtils.isEmpty(courseBeforeBufferTime)?10:Integer.parseInt(courseBeforeBufferTime));
 		result.put("courseAfterBufferTime", StringUtils.isEmpty(courseAfterBufferTime)?10:Integer.parseInt(courseAfterBufferTime));

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

@@ -1686,7 +1686,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             BigDecimal signInDeductCost = getSignInDeduce(teacherSalary, signInStatus, teachMode,tenantId);
             if(signInDeductCost.compareTo(BigDecimal.ZERO) > 0){
                 deductCost = deductCost.add(signInDeductCost);
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, teacherSalary.subtract(signInDeductCost)));
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, signInDeductCost));
             }
         }
         if(teacherAttendance.getSignOutStatus() == null || teacherAttendance.getSignOutStatus() == YesOrNoEnum.NO){
@@ -1694,7 +1694,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             BigDecimal signOutDeductCost = getSignInDeduce(teacherSalary, signOutStatus, teachMode,tenantId);
             if(signOutDeductCost.compareTo(BigDecimal.ZERO) > 0){
                 deductCost = deductCost.add(signOutDeductCost);
-                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, teacherSalary.subtract(signOutDeductCost)));
+                deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, signOutDeductCost));
             }
         }
 
@@ -1714,7 +1714,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     String c1 = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_SIGN_IN_GPS_ERROR_CUT_SALARY_UNIT, tenantId);
                     BigDecimal signInGpsCutAmount = getCutAmount(c, c1, teacherSalary);
                     if(signInGpsCutAmount.compareTo(BigDecimal.ZERO) > 0){
-                        deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR_IN, teacherSalary.subtract(signInGpsCutAmount)));
+                        deductCost = deductCost.add(signInGpsCutAmount);
+                        deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR_IN, signInGpsCutAmount));
                     }
                 }
                 if(!signOutRange){
@@ -1722,7 +1723,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     String c1 = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_SIGN_OUT_GPS_ERROR_CUT_SALARY_UNIT, tenantId);
                     BigDecimal signOutGpsCutAmount = getCutAmount(c, c1, teacherSalary);
                     if(signOutGpsCutAmount.compareTo(BigDecimal.ZERO) > 0){
-                        deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR_OUT, teacherSalary.subtract(signOutGpsCutAmount)));
+                        deductCost = deductCost.add(signOutGpsCutAmount);
+                        deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR_OUT, signOutGpsCutAmount));
                     }
                 }
             }
@@ -1782,7 +1784,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 String c1 = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_SIGN_IN_GPS_ERROR_CUT_SALARY_UNIT, tenantId);
                 BigDecimal signInGpsCutAmount = getCutAmount(c, c1, expectSalary);
                 if(signInGpsCutAmount.compareTo(BigDecimal.ZERO) > 0){
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR_IN, expectSalary.subtract(signInGpsCutAmount)));
+                    deductCost = deductCost.add(signInGpsCutAmount);
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR_IN, signInGpsCutAmount));
                 }
             }
             if(true){
@@ -1790,7 +1793,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 String c1 = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_SIGN_OUT_GPS_ERROR_CUT_SALARY_UNIT, tenantId);
                 BigDecimal signOutGpsCutAmount = getCutAmount(c, c1, expectSalary);
                 if(signOutGpsCutAmount.compareTo(BigDecimal.ZERO) > 0){
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR_OUT, expectSalary.subtract(signOutGpsCutAmount)));
+                    deductCost = deductCost.add(signOutGpsCutAmount);
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.GPS_ERR_OUT, signOutGpsCutAmount));
                 }
             }
         }else {
@@ -1806,7 +1810,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 BigDecimal signInDeductCost = getSignInDeduce(expectSalary, signInStatus, teachMode,tenantId);
                 if(signInDeductCost.compareTo(BigDecimal.ZERO) > 0){
                     deductCost = deductCost.add(signInDeductCost);
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, expectSalary.subtract(signInDeductCost)));
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_IN_TIME_ERR, signInDeductCost));
                 }
             }
             if(teacherAttendance.getSignOutStatus() == null || teacherAttendance.getSignOutStatus() == YesOrNoEnum.NO){
@@ -1814,7 +1818,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 BigDecimal signOutDeductCost = getSignInDeduce(expectSalary, signOutStatus, teachMode,tenantId);
                 if(signOutDeductCost.compareTo(BigDecimal.ZERO) > 0){
                     deductCost = deductCost.add(signOutDeductCost);
-                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, expectSalary.subtract(signOutDeductCost)));
+                    deductReasons.add(new TeacherSalaryDeductReasonDto(DeductReasonEnum.SIGN_OUT_TIME_ERR, signOutDeductCost));
                 }
             }
         }
@@ -1921,7 +1925,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         if(BigDecimal.ZERO.compareTo(teacherSalaryOverview.getThisMonthExpectIncome())>0){
             teacherSalaryOverview.setThisMonthExpectIncome(BigDecimal.ZERO);
         }
-
+        String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.TEACHER_APP_SALARY_COMPLAINTS_TIME, tenantId);
+        if(StringUtils.isNotEmpty(configValue)){
+            teacherSalaryOverview.setComplaintsDaysRange(Integer.parseInt(configValue));
+        }
         List<CourseSchedule> teacherCourses = courseScheduleDao.getTeacherCourseWithClassDate(queryInfo.getTeacherId(), queryInfo.getStartDay(), queryInfo.getEndDay(), CourseStatusEnum.OVER, queryInfo.getTeachIncomeType());
         if(CollectionUtils.isEmpty(teacherCourses)){
             return teacherSalaryOverview;

+ 29 - 24
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -791,36 +791,32 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	}
 
 	//校验考勤申诉
-	void checkComplaints(JobNatureEnum jobNatureEnum,Integer tenantId,Date classDate){
-		String salary = null;
-		String type = null;
-		if(jobNatureEnum == PART_TIME){
-			salary = sysTenantConfigService.getTenantConfigValue(SysConfigService.PARP_TEACHER_SALARY,tenantId);
-			type = sysTenantConfigService.getTenantConfigValue(SysConfigService.PARP_TEACHER_SALARY_TYPE,tenantId);
-		}else if (jobNatureEnum == FULL_TIME){
-			salary = sysTenantConfigService.getTenantConfigValue(SysConfigService.FULL_TEACHER_SALARY,tenantId);
-			type = sysTenantConfigService.getTenantConfigValue(SysConfigService.FULL_TEACHER_SALARY_TYPE,tenantId);
-		}else if (jobNatureEnum == LABOUR){
-			salary = sysTenantConfigService.getTenantConfigValue(SysConfigService.LABOUR_TEACHER_SALARY,tenantId);
-			type = sysTenantConfigService.getTenantConfigValue(SysConfigService.LABOUR_TEACHER_SALARY_TYPE,tenantId);
-		}
-		if(StringUtils.isNotEmpty(salary) && StringUtils.isNotEmpty(type)){
-			Integer day = Integer.parseInt(salary);
-			if(day <= 0){
-				return;
-			}
-			Date date = new Date();
-			if(type.equals("2")){
+	void checkComplaints(Integer tenantId,Date classDate,Boolean isWeb){
+		Date date = new Date();
+		if(isWeb){
+			String salary = sysTenantConfigService.getTenantConfigValue(SysConfigService.WEB_TEACHER_COMPLAINTS_SALARY,tenantId);
+			if(StringUtils.isNotEmpty(salary)){
+				Integer day = Integer.parseInt(salary);
+				if(day <= 0){
+					return;
+				}
 				//获取上课时间下个月5号
 				date = DateUtil.addDays(DateUtil.getFirstDayOfMonth(DateUtil.addMonths(classDate, 1)), day);
 				int i = DateUtil.daysBetween(date,new Date());
 				if(i > 0){
 					throw new BizException("超出可申述时间");
 				}
-			}else {
+			}
+		}else {
+			String salary = sysTenantConfigService.getTenantConfigValue(SysConfigService.TEACHER_APP_SALARY_COMPLAINTS_TIME,tenantId);
+			if(StringUtils.isNotEmpty(salary)) {
+				Integer day = Integer.parseInt(salary);
+				if (day <= 0) {
+					return;
+				}
 				//如果课程时间在两天前
-				int i = DateUtil.daysBetween(classDate, DateUtil.stringToDate(DateUtil.format(date,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN));
-				if(i > --day){
+				int i = DateUtil.daysBetween(classDate, DateUtil.stringToDate(DateUtil.format(date, DateUtil.DEFAULT_PATTERN), DateUtil.DEFAULT_PATTERN));
+				if (i > --day) {
 					throw new BizException("超出可申述时间");
 				}
 			}
@@ -830,6 +826,15 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void addComplaints(Long courseScheduleId, String content,String url,Integer userId, UpdateAttendanceEnum complaintsType) {
+		Boolean isWeb = true;
+		if(userId == null){
+			isWeb = false;
+			SysUser user = sysUserFeignService.queryUserInfo();
+			if(Objects.isNull(user)){
+				throw new BizException("请登录");
+			}
+			userId = user.getId();
+		}
 		TeacherAttendance teacherAttendance = teacherAttendanceDao.findByTeacherAttendanceInfo(userId.longValue(), courseScheduleId);
 		CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId);
 		if(courseSchedule == null){
@@ -853,7 +858,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		if(teacher.getTenantId() == null){
 			throw new BizException("用户机构信息异常");
 		}
-		checkComplaints(teacher.getJobNature(),teacher.getTenantId(),courseSchedule.getClassDate());
+		checkComplaints(teacher.getTenantId(),courseSchedule.getClassDate(),isWeb);
 		if(complaintsType == null){
 			complaintsType = UpdateAttendanceEnum.ALL;
 		}

+ 1 - 5
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherAttendanceController.java

@@ -151,11 +151,7 @@ public class TeacherAttendanceController extends BaseController {
     @ApiOperation(value = "提交考勤申述")
     @PostMapping("/addComplaints")
     public Object addComplaints(Long courseScheduleId, String content, String url, UpdateAttendanceEnum complaintsType){
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if(Objects.isNull(user)){
-            throw new BizException("请登录");
-        }
-        teacherAttendanceService.addComplaints(courseScheduleId,content,url,user.getId(),complaintsType);
+        teacherAttendanceService.addComplaints(courseScheduleId,content,url,null,complaintsType);
         return succeed();
     }
 

+ 5 - 4
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -88,18 +88,19 @@ public class TeacherCourseScheduleController extends BaseController {
         if(null == user.getTenantId()){
             return failed("用户机构信息异常,请联系管理员");
         }
-        SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
+//        SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
         String offlineSignInEarlyForwardTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_SIGN_IN_EARLY_FORWARD_TIME, user.getTenantId());
         String configValue1 = sysTenantConfigService.getTenantConfigValue(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP, user.getTenantId());
         String courseBeforeBufferTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_BEFORE_BUFFER_TIME, user.getTenantId());
         String courseAfterBufferTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_AFTER_BUFFER_TIME, user.getTenantId());
         List<CourseScheduleDto> teacherCourseSchedulesWithDate = scheduleService.getTeacherCourseSchedulesWithDate(user.getId(),date,type,user.getTenantId());
-        Map<String,Object> result = new HashMap<>();
+        Map<String,Object> result = new HashMap<>(7);
         result.put("rows",teacherCourseSchedulesWithDate);
         result.put("appealHoursRange",4);
         result.put("offlineSignInEarlyForwardTime", StringUtils.isEmpty(offlineSignInEarlyForwardTime)?60:Integer.parseInt(offlineSignInEarlyForwardTime));
-        result.put("enableStudentAttendanceTimeRange",sysConfig.getParanValue(Integer.class));
-        result.put("enableStudentAttendanceTimeRangeVip",StringUtils.isEmpty(configValue1)?0:Integer.parseInt(configValue1));
+//        result.put("enableStudentAttendanceTimeRange",sysConfig.getParanValue(Integer.class));
+        result.put("enableStudentAttendanceTimeRangeVip",StringUtils.isEmpty(configValue1)?20:Integer.parseInt(configValue1));
+        //网络教室可以提前进入时间:对内和对外开课时间 (对内:joinRoomBeforeTime 对外:courseBeforeBufferTime)
         result.put("joinRoomBeforeTime",StringUtils.isEmpty(courseBeforeBufferTime)?10:Integer.parseInt(courseBeforeBufferTime));
         result.put("courseBeforeBufferTime", StringUtils.isEmpty(courseBeforeBufferTime)?10:Integer.parseInt(courseBeforeBufferTime));
         result.put("courseAfterBufferTime", StringUtils.isEmpty(courseAfterBufferTime)?10:Integer.parseInt(courseAfterBufferTime));