Bläddra i källkod

兼职老师在课程结束后的下个月5号之前可以提交考勤申述,后台可以帮兼职老师提交考勤申述

zouxuan 4 år sedan
förälder
incheckning
7ae2024b00

+ 12 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendancesDto.java

@@ -2,10 +2,7 @@ package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.TeacherAttendance;
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
-import com.ym.mec.biz.dal.enums.SignInStatusEnum;
-import com.ym.mec.biz.dal.enums.SignOutStatusEnum;
-import com.ym.mec.biz.dal.enums.TeachTypeEnum;
+import com.ym.mec.biz.dal.enums.*;
 
 import io.swagger.annotations.ApiModelProperty;
 
@@ -16,6 +13,9 @@ public class TeacherAttendancesDto {
     @ApiModelProperty(value = "老师名",required = false)
 	private String teacherName;
 
+    @ApiModelProperty(value = "工作性质(兼职 PART_JOB、全职FULL_JOB)", required = false)
+    private JobNatureEnum jobNature;
+
     private TeachTypeEnum teacherRole;
     
     private TeacherAttendance teacherAttendance = new TeacherAttendance();
@@ -70,6 +70,14 @@ public class TeacherAttendancesDto {
     @ApiModelProperty(value = "签退时间",required = false)
     private Date signOutTime;
 
+    public JobNatureEnum getJobNature() {
+        return jobNature;
+    }
+
+    public void setJobNature(JobNatureEnum jobNature) {
+        this.jobNature = jobNature;
+    }
+
     public String getOrganName() {
         return organName;
     }

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.page;
 
+import com.ym.mec.biz.dal.enums.JobNatureEnum;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -37,6 +38,17 @@ public class TeacherCloseQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "分部")
     private String organId;
 
+    @ApiModelProperty(value = "工作性质(兼职 PART_JOB、全职FULL_JOB)", required = false)
+    private JobNatureEnum jobNature;
+
+    public JobNatureEnum getJobNature() {
+        return jobNature;
+    }
+
+    public void setJobNature(JobNatureEnum jobNature) {
+        this.jobNature = jobNature;
+    }
+
     public String getTeacherAttendanceId() {
         return teacherAttendanceId;
     }

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

@@ -160,13 +160,13 @@ public interface TeacherAttendanceService extends BaseService<Long, TeacherAtten
 	 * @param courseScheduleId
 	 * @param content
 	 */
-	void addComplaints(Long courseScheduleId, String content,String url);
+	void addComplaints(Long courseScheduleId, String content,String url,Integer userId);
 
 	/**
 	 * 撤销考勤申述
 	 * @param courseScheduleId
 	 */
-	void repealComplaints(Long courseScheduleId);
+	void repealComplaints(Long courseScheduleId,Integer userId);
 
 	/**
 	 * 获取教师申述列表

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

@@ -29,6 +29,7 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 import static com.ym.mec.biz.dal.enums.ComplaintsStatusEnum.REPEAL;
+import static com.ym.mec.biz.dal.enums.JobNatureEnum.PART_TIME;
 import static com.ym.mec.biz.dal.enums.SignInStatusEnum.*;
 
 @Service
@@ -710,13 +711,8 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public synchronized void addComplaints(Long courseScheduleId, String content,String url) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		if(Objects.isNull(user)){
-			throw new BizException("请登录");
-		}
-		TeacherAttendance teacherAttendance = teacherAttendanceDao.findByTeacherAttendanceInfo(user.getId().longValue(), courseScheduleId);
-
+	public void addComplaints(Long courseScheduleId, String content,String url,Integer userId) {
+		TeacherAttendance teacherAttendance = teacherAttendanceDao.findByTeacherAttendanceInfo(userId.longValue(), courseScheduleId);
 		CourseSchedule courseSchedule = courseScheduleDao.get(courseScheduleId);
 		if(courseSchedule == null){
 			throw new BizException("课程不存在");
@@ -724,7 +720,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		if(teacherAttendance == null){
 			teacherAttendance = new TeacherAttendance();
 			teacherAttendance.setMusicGroupId(courseSchedule.getMusicGroupId());
-			teacherAttendance.setTeacherId(user.getId());
+			teacherAttendance.setTeacherId(userId);
 			teacherAttendance.setClassGroupId(courseSchedule.getClassGroupId());
 			teacherAttendance.setGroupType(courseSchedule.getGroupType());
 			teacherAttendance.setCourseScheduleId(courseScheduleId);
@@ -732,11 +728,21 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		}else if(teacherAttendance.getComplaintsStatus() != null && teacherAttendance.getComplaintsStatus() != REPEAL){
             throw new BizException("请勿重复提交考勤申述");
         }
-		//如果课程时间在两天前
+		Teacher teacher = teacherDao.get(userId);
 		Date date = new Date();
-        int i = DateUtil.daysBetween(courseSchedule.getClassDate(), DateUtil.stringToDate(DateUtil.format(date,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN));
-        if(i > 1){
-			throw new BizException("超出可申述时间");
+		if(teacher.getJobNature() == PART_TIME){
+			//获取上课时间下个月5号
+			date = DateUtil.addDays(DateUtil.getFirstDayOfMonth(DateUtil.addMonths(courseSchedule.getClassDate(), 1)), 5);
+			int i = DateUtil.daysBetween(date,new Date());
+			if(i > 0){
+				throw new BizException("超出可申述时间");
+			}
+		}else {
+			//如果课程时间在两天前
+			int i = DateUtil.daysBetween(courseSchedule.getClassDate(), DateUtil.stringToDate(DateUtil.format(date,DateUtil.DEFAULT_PATTERN),DateUtil.DEFAULT_PATTERN));
+			if(i > 1){
+				throw new BizException("超出可申述时间");
+			}
 		}
 		teacherAttendance.setIsComplaints(1);
 		teacherAttendance.setComplaintsStatus(ComplaintsStatusEnum.WAIT);
@@ -748,12 +754,8 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void repealComplaints(Long courseScheduleId) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		if(Objects.isNull(user)){
-			throw new BizException("请登录");
-		}
-		TeacherAttendance teacherAttendance = teacherAttendanceDao.findByTeacherAttendanceInfo(user.getId().longValue(), courseScheduleId);
+	public void repealComplaints(Long courseScheduleId,Integer userId) {
+		TeacherAttendance teacherAttendance = teacherAttendanceDao.findByTeacherAttendanceInfo(userId.longValue(), courseScheduleId);
 		if(teacherAttendance == null){
 			throw new BizException("考勤信息不存在");
 		}

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

@@ -233,6 +233,7 @@
         <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="job_nature_" property="jobNature" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="organ_name_" property="organName"/>
         <result column="teacher_id_" property="teacherId"/>
         <result column="sign_in_status_" property="signInStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
@@ -311,6 +312,9 @@
             <if test="teacherAttendanceId != null and teacherAttendanceId != ''">
                 AND FIND_IN_SET(ta.id_,#{teacherAttendanceId})
             </if>
+            <if test="jobNature != null">
+                AND t.job_ature_ = #{jobNature,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
         </where>
     </sql>
 
@@ -334,11 +338,12 @@
         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_,o.name_ organ_name_
+        ta.sign_in_time_,ta.sign_out_time_,ta.remark_,o.name_ organ_name_,t.job_nature_
         FROM course_schedule_teacher_salary csts
         LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
         LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = csts.course_schedule_id_ AND ta.teacher_id_ = csts.user_id_
         LEFT JOIN sys_user su ON su.id_ = csts.user_id_
+        LEFT JOIN teacher t ON t.id_ = csts.user_id_
         LEFT JOIN organization o ON o.id_ = cs.organ_id_
         <include refid="queryTeacherAttendancesCondition"/>
         ORDER BY cs.class_date_ ASC,cs.start_class_time_ ASC
@@ -357,6 +362,7 @@
         LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
         LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = csts.course_schedule_id_ AND ta.teacher_id_ = csts.user_id_
         LEFT JOIN sys_user su ON su.id_ = csts.user_id_
+        LEFT JOIN teacher t ON t.id_ = csts.user_id_
         <include refid="queryTeacherAttendancesCondition"/>
     </select>
 

+ 11 - 2
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherAttendanceController.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.biz.service.TeacherAttendanceService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.exception.BizException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -70,14 +71,22 @@ public class TeacherAttendanceController extends BaseController {
     @ApiOperation(value = "提交考勤申述")
     @PostMapping("/addComplaints")
     public Object addComplaints(Long courseScheduleId,String content,String url){
-        teacherAttendanceService.addComplaints(courseScheduleId,content,url);
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if(Objects.isNull(user)){
+            throw new BizException("请登录");
+        }
+        teacherAttendanceService.addComplaints(courseScheduleId,content,url,user.getId());
         return succeed();
     }
 
     @ApiOperation(value = "撤销考勤申述")
     @PostMapping("/repealComplaints")
     public Object repealComplaints(Long courseScheduleId){
-        teacherAttendanceService.repealComplaints(courseScheduleId);
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if(Objects.isNull(user)){
+            throw new BizException("请登录");
+        }
+        teacherAttendanceService.repealComplaints(courseScheduleId,user.getId());
         return succeed();
     }
 }

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -345,9 +345,9 @@ public class ExportController extends BaseController {
         List rows = teacherAttendanceService.queryTeacherAttendances(queryInfo).getRows();
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "老师编号", "老师姓名", "课程编号", "课程名称", "上课日期",
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "老师编号", "老师姓名", "工作性质", "课程编号", "课程名称", "上课日期",
                     "课程开始时间", "课程结束时间", "课程类型", "签到时间", "签到状态", "签退时间", "签退状态", "备注"}, new String[]{
-                    "organName", "teacherId", "teacherName", "courseScheduleId", "courseScheduleName", "classDate",
+                    "organName", "teacherId", "teacherName", "jobNature.msg", "courseScheduleId", "courseScheduleName", "classDate",
                     "startClassTime", "endClassTime", "courseScheduleType.msg", "signInTime", "signInStatus.msg", "signOutTime", "signOutStatus.msg",
                     "remark"}, rows);
             response.setContentType("application/octet-stream");

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

@@ -128,4 +128,20 @@ public class TeacherAttendanceController extends BaseController {
         teacherAttendanceService.rejectTeacherAttendanceComplaints(teacherAttendanceId,content);
         return succeed();
     }
+
+    @ApiOperation(value = "提交考勤申述")
+    @PostMapping("/addComplaints")
+    @PreAuthorize("@pcs.hasPermissions('teacherAttendance/addComplaints')")
+    public Object addComplaints(Long courseScheduleId,String content,String url,Integer userId){
+        teacherAttendanceService.addComplaints(courseScheduleId,content,url,userId);
+        return succeed();
+    }
+
+    @ApiOperation(value = "撤销考勤申述")
+    @PostMapping("/repealComplaints")
+    @PreAuthorize("@pcs.hasPermissions('teacherAttendance/addComplaints')")
+    public Object repealComplaints(Long courseScheduleId,Integer userId){
+        teacherAttendanceService.repealComplaints(courseScheduleId,userId);
+        return succeed();
+    }
 }