yonge 5 năm trước cách đây
mục cha
commit
39a90e61f7

+ 18 - 5
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1,18 +1,20 @@
 package com.ym.mec.biz.dal.dao;
 
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.dto.TeacherAttendanceDto;
 import com.ym.mec.biz.dal.dto.TeacherClassCourseSchudeleDto;
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.common.dal.BaseDAO;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
 
 public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
@@ -350,4 +352,15 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     List<CourseSchedule> findCourseScheduleByClassGroupIdAndDate(@Param("classGroupId") Integer classGroupId, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
+    
+    /**
+     * 根据时间范围查询老师指定类型的课程列表
+     * @param teacherId 老师编号
+     * @param type 课程类型 (如果为null,查询所有类型)
+     * @param startTime 开始时间
+     * @param endTime 结束时间
+     * @return
+     */
+	List<CourseSchedule> queryTeacherCourseScheduleListByTimeRangeAndType(@Param("teacherId") Integer teacherId, @Param("type") CourseScheduleType type,
+			@Param("startTime") Date startTime, @Param("endTime") Date endTime);
 }

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherLeaveRecord.java

@@ -168,4 +168,27 @@ public class TeacherLeaveRecord {
 		return ToStringBuilder.reflectionToString(this);
 	}
 
+
+	public class CoursesScheduleHistory{
+	
+	private CourseSchedule before;
+	
+	private CourseSchedule after;
+
+	public CourseSchedule getBefore() {
+		return before;
+	}
+
+	public void setBefore(CourseSchedule before) {
+		this.before = before;
+	}
+
+	public CourseSchedule getAfter() {
+		return after;
+	}
+
+	public void setAfter(CourseSchedule after) {
+		this.after = after;
+	}
+}
 }

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

@@ -1,8 +1,26 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.TeacherLeaveRecord;
+import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.common.service.BaseService;
 
 public interface TeacherLeaveRecordService extends BaseService<Long, TeacherLeaveRecord> {
 
+	/**
+	 * 请假
+	 * @param userId
+	 * @param teacherLeaveRecord
+	 * @return
+	 */
+	public boolean askForLeave(Integer userId, TeacherLeaveRecord teacherLeaveRecord);
+
+	/**
+	 * 审批
+	 * @param id 记录编号
+	 * @param userId 审批人编号
+	 * @param status 审批状态
+	 * @param remark 备注
+	 * @return
+	 */
+	public boolean approve(Long id, Integer userId, AuditStatusEnum status, String remark);
 }

+ 62 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherLeaveRecordServiceImpl.java

@@ -1,17 +1,28 @@
 package com.ym.mec.biz.service.impl;
 
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 import com.ym.mec.biz.dal.dao.TeacherLeaveRecordDao;
 import com.ym.mec.biz.dal.entity.TeacherLeaveRecord;
+import com.ym.mec.biz.dal.entity.TeacherLeaveRecord.CoursesScheduleHistory;
+import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.service.TeacherLeaveRecordService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.date.DateUtil;
+import com.ym.mec.util.json.JsonUtil;
 
 @Service
-public class TeacherLeaveRecordServiceImpl extends BaseServiceImpl<Long, TeacherLeaveRecord>  implements TeacherLeaveRecordService {
-	
+public class TeacherLeaveRecordServiceImpl extends BaseServiceImpl<Long, TeacherLeaveRecord> implements TeacherLeaveRecordService {
+
 	@Autowired
 	private TeacherLeaveRecordDao teacherLeaveRecordDao;
 
@@ -19,5 +30,53 @@ public class TeacherLeaveRecordServiceImpl extends BaseServiceImpl<Long, Teacher
 	public BaseDAO<Long, TeacherLeaveRecord> getDAO() {
 		return teacherLeaveRecordDao;
 	}
-	
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean askForLeave(Integer userId, TeacherLeaveRecord teacherLeaveRecord) {
+
+		Date date = new Date();
+
+		teacherLeaveRecord.setUserId(userId);
+		teacherLeaveRecord.setUpdateTime(date);
+		teacherLeaveRecord.setCreateTime(date);
+		teacherLeaveRecord.setStatus(AuditStatusEnum.ING);
+		teacherLeaveRecord.setDays(DateUtil.hoursBetween(teacherLeaveRecord.getStartTime(), teacherLeaveRecord.getEndTime()) / 8d);
+
+		teacherLeaveRecordDao.insert(teacherLeaveRecord);
+		return true;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean approve(Long id, Integer userId, AuditStatusEnum status, String remark) {
+
+		TeacherLeaveRecord teacherLeaveRecord = teacherLeaveRecordDao.get(id);
+		if (teacherLeaveRecord == null) {
+			throw new BizException("请假记录不存在");
+		}
+
+		if (teacherLeaveRecord.getStatus() != AuditStatusEnum.ING || status == AuditStatusEnum.ING) {
+			throw new BizException("审批状态不正确");
+		}
+
+		teacherLeaveRecord.setStatus(status);
+		teacherLeaveRecord.setRemark(remark);
+
+		teacherLeaveRecordDao.update(teacherLeaveRecord);
+
+		if (StringUtils.isNotBlank(teacherLeaveRecord.getCoursesScheduleJson())) {
+			List<CoursesScheduleHistory> coursesScheduleHistoryList = JsonUtil.parseArray(teacherLeaveRecord.getCoursesScheduleJson(),
+					CoursesScheduleHistory.class);
+
+			if (coursesScheduleHistoryList != null && coursesScheduleHistoryList.size() > 0) {
+				for (CoursesScheduleHistory his : coursesScheduleHistoryList) {
+					//课时调整
+					
+				}
+			}
+		}
+
+		return true;
+	}
 }

+ 1 - 1
mec-biz/src/main/resources/config/contracts/courses.ftl

@@ -94,7 +94,7 @@
                     <span>所在声部:${studentInfo.subject.name!}</span>
                 </div>
             </div>
-        </div>
+        
             (本协议中“乙方“指学员及家长;”乙方学员“仅指参加甲方课程的学员;”乙方家长“仅指乙方学员的法定监护人。)
         </div>
         为进一步提升器乐教学质量和服务品质,保证学员学习进度,明确培训各方的权责,经甲、乙双方协商一致,特订立本协议,以便共同遵守。

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -883,4 +883,11 @@
     <select id="findCourseScheduleByClassGroupIdAndDate" resultMap="CourseSchedule">
         <![CDATA[ SELECT * FROM course_schedule WHERE class_group_id_=#{classGroupId} AND class_date_ >= #{startDate} AND  class_date_ <=#{endDate} ]]>
     </select>
+    
+    <select id="queryTeacherCourseScheduleListByTimeRangeAndType" resultMap="CourseSchedule" parameterType="map">
+        SELECT * FROM course_schedule WHERE teacher_id_=#{teacherId} and CONCAT( class_date_, ' ', start_class_time_ ) between #{startTime} and #{endTime}
+        <if test="type != null">
+        and type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        </if>
+    </select>
 </mapper>

+ 58 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherLeaveRecordController.java

@@ -0,0 +1,58 @@
+package com.ym.mec.teacher.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.util.Date;
+import java.util.Objects;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.entity.TeacherLeaveRecord;
+import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import com.ym.mec.biz.service.TeacherLeaveRecordService;
+import com.ym.mec.common.controller.BaseController;
+
+@Api(tags = "老师请假服务")
+@RequestMapping("teacherLeaveRecord")
+@RestController
+public class TeacherLeaveRecordController extends BaseController {
+
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+	@Autowired
+	private CourseScheduleDao courseScheduleDao;
+
+	@Autowired
+	private TeacherLeaveRecordService teacherLeaveRecordService;
+
+	@ApiOperation(value = "查询vip课列表")
+	@GetMapping("/queryVipCourseScheduleList")
+	public Object queryVipCourseScheduleList(Date startTime, Date endTime) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (Objects.isNull(sysUser)) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		return succeed(courseScheduleDao.queryTeacherCourseScheduleListByTimeRangeAndType(sysUser.getId(), CourseScheduleType.VIP, startTime, endTime));
+	}
+
+	@ApiOperation(value = "请假")
+	@PostMapping("/askForLeave")
+	public Object askForLeave(TeacherLeaveRecord teacherLeaveRecord) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (Objects.isNull(sysUser)) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		teacherLeaveRecordService.askForLeave(sysUser.getId(), teacherLeaveRecord);
+		return succeed();
+	}
+}