Forráskód Böngészése

Merge branch 'contract_for_student'

Joburgess 4 éve
szülő
commit
ca7431554f
17 módosított fájl, 197 hozzáadás és 26 törlés
  1. 8 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  2. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java
  3. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassCourseSchudeleDto.java
  4. 34 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseScheduleQueryInfo.java
  5. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  6. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  7. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java
  9. 19 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  10. 10 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  11. 9 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  12. 18 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  13. 17 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  14. 14 0
      mec-student/src/main/java/com/ym/mec/student/controller/ContractsController.java
  15. 2 2
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java
  16. 36 1
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherAttendanceController.java
  17. 9 1
      mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

+ 8 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -300,7 +300,8 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @params [teacherId]
      * @describe 获取老师乐团班级
      */
-    List<TeacherClassGroupDto> findTeacherMusicClassGroup(@Param("teacherId") Long teacherId);
+    List<TeacherClassGroupDto> findTeacherMusicClassGroup(@Param("teacherId") Long teacherId,
+                                                          @Param("groupName") String groupName);
 
     /**
      * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassGroupDto>
@@ -309,7 +310,9 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @params [teacherId]
      * @describe 获取老师陪练课班级
      */
-    List<TeacherClassGroupDto> findTeacherPracticeClassGroup(@Param("teacherId") Long teacherId, @Param("status") String status);
+    List<TeacherClassGroupDto> findTeacherPracticeClassGroup(@Param("teacherId") Long teacherId,
+                                                             @Param("status") String status,
+                                                             @Param("groupName") String groupName);
 
     /**
      * 根据老师编号列表获取小课数量
@@ -326,7 +329,9 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @params [teacherId]
      * @describe 获取老师vip课班级
      */
-    List<TeacherClassGroupDto> findTeacherVipClassGroup(@Param("teacherId") Long teacherId, @Param("status") String status);
+    List<TeacherClassGroupDto> findTeacherVipClassGroup(@Param("teacherId") Long teacherId,
+                                                        @Param("status") String status,
+                                                        @Param("groupName") String groupName);
 
     /**
      * 根据合奏班编号列表,获取单技班名称列表

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleTeacherSalaryDao.java

@@ -152,6 +152,9 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	List<CourseScheduleTeacherSalary> findByCourseScheduleIdsAndTeacherRole(@Param("courseScheduleIds") List<Integer> courseScheduleIds,
 																			@Param("teacherRole") String teacherRole);
 
+	List<CourseScheduleTeacherSalary> findByCourseIdsAndTeacherRole(@Param("courseScheduleIds") List<Long> courseScheduleIds,
+																			@Param("teacherRole") String teacherRole);
+
 	/**
 	 * @param courseScheduleIds: 课程编号列表
 	 * @return java.util.List<java.util.Map < java.lang.String, java.lang.String>>

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassCourseSchudeleDto.java

@@ -67,6 +67,17 @@ public class TeacherClassCourseSchudeleDto {
 
     private String schoolName;
 
+    @ApiModelProperty(value = "助教名称")
+    private String teachingNames;
+
+    public String getTeachingNames() {
+        return teachingNames;
+    }
+
+    public void setTeachingNames(String teachingNames) {
+        this.teachingNames = teachingNames;
+    }
+
     public Integer getSchoolId() {
         return schoolId;
     }

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/CourseScheduleQueryInfo.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.page;
 
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -32,12 +33,45 @@ public class CourseScheduleQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "课程类型")
     private String type;
 
+    @ApiModelProperty(value = "课程状态")
+    private CourseStatusEnum status;
+
     @ApiModelProperty(value = "课程编号")
     private Integer courseScheduleId;
 
     @ApiModelProperty(value = "是否获取班级所有课程(不限制老师)")
     private boolean findTotal = false;
 
+    @ApiModelProperty(value = "开始上课日期")
+    private String startClassDate;
+
+    @ApiModelProperty(value = "结束上课日期")
+    private String endClassDate;
+
+    public CourseStatusEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(CourseStatusEnum status) {
+        this.status = status;
+    }
+
+    public String getStartClassDate() {
+        return startClassDate;
+    }
+
+    public void setStartClassDate(String startClassDate) {
+        this.startClassDate = startClassDate;
+    }
+
+    public String getEndClassDate() {
+        return endClassDate;
+    }
+
+    public void setEndClassDate(String endClassDate) {
+        this.endClassDate = endClassDate;
+    }
+
     public boolean getFindTotal() {
         return findTotal;
     }

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

@@ -234,7 +234,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassGroupDto>
      * @describe 获取老师所在班级列表
      */
-    List<TeacherClassGroupDto> findTeacherClassGroups(String type,String status);
+    List<TeacherClassGroupDto> findTeacherClassGroups(String type,String status, String groupName);
 
     /**
      * @Author: Joburgess

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

@@ -575,7 +575,7 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
 	 * @param practiceGroupId
 	 * @param coursesExpireDate
 	 */
-	void updatePracticeGroupInDate(String practiceGroupId, Date courseStartDate, Date coursesExpireDate);
+	void updatePracticeGroupInDate(String practiceGroupId, Date courseStartDate, Date coursesExpireDate, Boolean onlyNormal);
 
 	/**
 	 * 获取当前班级列表的所有未开始的课程

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

@@ -1455,7 +1455,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public List<TeacherClassGroupDto> findTeacherClassGroups(String type,String status) {
+    public List<TeacherClassGroupDto> findTeacherClassGroups(String type,String status, String groupName) {
         SysUser user = sysUserFeignService.queryUserInfo();
         if (Objects.isNull(user)) {
             throw new BizException("请登录");
@@ -1468,13 +1468,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<TeacherClassGroupDto> teacherMusicClassGroup;
         switch (type) {
             case "VIP":
-                teacherMusicClassGroup = classGroupDao.findTeacherVipClassGroup(user.getId().longValue(),status);
+                teacherMusicClassGroup = classGroupDao.findTeacherVipClassGroup(user.getId().longValue(),status,groupName);
                 break;
             case "MUSIC_GROUP":
-                teacherMusicClassGroup = classGroupDao.findTeacherMusicClassGroup(user.getId().longValue());
+                teacherMusicClassGroup = classGroupDao.findTeacherMusicClassGroup(user.getId().longValue(),groupName);
                 break;
             case "PRACTICE":
-                teacherMusicClassGroup = classGroupDao.findTeacherPracticeClassGroup(user.getId().longValue(),status);
+                teacherMusicClassGroup = classGroupDao.findTeacherPracticeClassGroup(user.getId().longValue(),status, groupName);
                 break;
             default:
                 throw new BizException("课程类型错误");

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

@@ -1156,7 +1156,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		}
 
 		if(StringUtils.isBlank(user.getRealName())||StringUtils.isBlank(user.getIdCardNo())){
-			return BaseController.failed(HttpStatus.PARTIAL_CONTENT, "");
+			return BaseController.failed(HttpStatus.PARTIAL_CONTENT, user, "");
 		}
 
 		SysUserTsign sysUserTsign = sysUserTsignService.get(userId);

+ 19 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -4152,7 +4152,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			List<Map<Long, Integer>> courseLeaveStudentNumMaps = studentAttendanceDao.countCourseLeaveStudentNumWithFourHoursAgo(allCourseScheduleIds, advanceLeaveHours);
 			Map<Long,Long> courseLeaveStudentNumMap = MapUtil.convertIntegerMap((courseLeaveStudentNumMaps));
 
-			dataList.forEach(e -> {
+			List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseIdsAndTeacherRole(allCourseScheduleIds, null);
+			Map<Long, Map<TeachTypeEnum, Set<String>>> cttnMap = new HashMap<>();
+			if(!CollectionUtils.isEmpty(courseScheduleTeacherSalaries)){
+				cttnMap = courseScheduleTeacherSalaries.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId, Collectors.groupingBy(CourseScheduleTeacherSalary::getTeacherRole, Collectors.mapping(CourseScheduleTeacherSalary::getUserName, Collectors.toSet()))));
+			}
+
+			for (TeacherClassCourseSchudeleDto e : dataList) {
 				e.setCurrentClassTimes(courseScheduleDao.countCurrentTimes(e.getClassGroupId().intValue(),new Date()));
 				e.setTotalClassTimes(courseScheduleDao.countCurrentCourseTime(e.getCourseScheduleId()));
 
@@ -4161,7 +4167,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				if(Objects.nonNull(leaveStudentNum)&&Objects.nonNull(normalStudentNum)&&leaveStudentNum.intValue()==normalStudentNum.intValue()){
 					e.setEnableAdjustInToday(1);
 				}
-			});
+
+				if(cttnMap.containsKey(e.getCourseScheduleId())&&cttnMap.get(e.getCourseScheduleId()).containsKey(TeachTypeEnum.TEACHING)){
+					e.setTeachingNames(StringUtils.join(cttnMap.get(e.getCourseScheduleId()).get(TeachTypeEnum.TEACHING), ","));
+				}
+			}
 		}
 		if (count == 0) {
 			dataList = new ArrayList<>();
@@ -4964,7 +4974,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public void updatePracticeGroupInDate(String practiceGroupId, Date courseStartDate, Date coursesExpireDate) {
+	public void updatePracticeGroupInDate(String practiceGroupId, Date courseStartDate, Date coursesExpireDate, Boolean onlyNormal) {
 		SysUser user = sysUserFeignService.queryUserInfo();
 		if (null == user) {
 			throw new BizException("获取用户信息失败");
@@ -4976,6 +4986,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     	if(practiceGroup == null){
 			throw new BizException("课程组不存在");
 		}
+		if(onlyNormal&&!GroupStatusEnum.NORMAL.equals(practiceGroup.getGroupStatus())){
+			throw new BizException("非正常状态课程组不可编辑");
+		}
 		if(!GroupStatusEnum.NORMAL.equals(practiceGroup.getGroupStatus())&&!GroupStatusEnum.FINISH.equals(practiceGroup.getGroupStatus())){
 			throw new BizException("非正常状态课程组不可编辑");
 		}
@@ -5318,6 +5331,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 //			throw new BizException("课程合并仅支持同课程类型");
 //		}
 		for (CourseSchedule courseSchedule : allCourses) {
+			if(Objects.nonNull(courseSchedule.getIsLock())&&courseSchedule.getIsLock()==1){
+				throw new BizException("存在审核中的课程");
+			}
 			if(Objects.nonNull(courseSchedule.getNewCourseId())){
 				throw new BizException("存在已合并课程");
 			}

+ 10 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -202,15 +202,16 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
             }
         });
         //获取正常签到的学生信息
-        List<StudentAttendance> normal = studentAttendances.stream().filter(studentAttendance -> studentAttendance.getStatus() == StudentAttendanceStatusEnum.NORMAL).collect(Collectors.toList());
-        if (normal != null && normal.size() > 0) {
-            Map<Integer, String> receivers = new HashMap<>();
-            normal.forEach(e -> {
-                receivers.put(e.getUserId(), e.getUserId().toString());
-            });
-            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_NAMES_ACHIEVE,
-                    receivers, null, 0, "2", "STUDENT", DateUtil.format(new Date(), DateUtil.DATE_FORMAT_MIN));
-        }
+//        List<StudentAttendance> normal = studentAttendances.stream().filter(studentAttendance -> studentAttendance.getStatus() == StudentAttendanceStatusEnum.NORMAL).collect(Collectors.toList());
+//        if (normal != null && normal.size() > 0) {
+//            Map<Integer, String> receivers = new HashMap<>();
+//            normal.forEach(e -> {
+//                receivers.put(e.getUserId(), e.getUserId().toString());
+//            });
+//            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_NAMES_ACHIEVE,
+//                    receivers, null, 0, "2", "STUDENT", DateUtil.format(new Date(), DateUtil.DATE_FORMAT_MIN));
+//        }
+
         Map<StudentAttendanceStatusEnum, List<StudentAttendance>> studentAttendanceGroupByStatus = studentAttendances.stream().collect(Collectors.groupingBy(StudentAttendance::getStatus));
         Integer studentNum = studentAttendanceGroupByStatus.get(StudentAttendanceStatusEnum.NORMAL) == null ? 0 : studentAttendanceGroupByStatus.get(StudentAttendanceStatusEnum.NORMAL).size();
         Integer leaveStudentNum = studentAttendanceGroupByStatus.get(StudentAttendanceStatusEnum.LEAVE) == null ? 0 : studentAttendanceGroupByStatus.get(StudentAttendanceStatusEnum.LEAVE).size();

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

@@ -629,6 +629,9 @@
             AND cg.del_flag_ = 0
             AND cs.del_flag_ = 0
             AND mg.status_ = 'PROGRESS'
+            <if test="groupName!=null and groupName!=''">
+                AND mg.name_ LIKE CONCAT('%', #{groupName}, '%')
+            </if>
         GROUP BY cg.id_
     </select>
     <select id="findTeacherPracticeClassGroup" resultMap="TeacherClassGroupDto">
@@ -662,6 +665,9 @@
             <if test="status == 'FINISH'">
                 AND pg.group_status_ = 'FINISH'
             </if>
+            <if test="groupName!=null and groupName!=''">
+                AND pg.name_ LIKE CONCAT('%', #{groupName}, '%')
+            </if>
     </select>
     <select id="findTeacherVipClassGroup" resultMap="TeacherClassGroupDto">
         SELECT
@@ -697,6 +703,9 @@
             <if test="status == 'FINISH'">
                 AND vg.group_status_ = 4
             </if>
+            <if test="groupName!=null and groupName!=''">
+                AND vg.name_ LIKE CONCAT('%', #{groupName}, '%')
+            </if>
         GROUP BY
         vg.id_,cg.id_
     </select>

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

@@ -1484,6 +1484,15 @@
         <if test="userId != null">
             AND sa.teacher_id_=#{userId}
         </if>
+        <if test="status!=null">
+            AND cs.status_ = #{status}
+        </if>
+        <if test="startClassDate!=null">
+            AND cs.class_date_ &gt;= #{startClassDate}
+        </if>
+        <if test="endClassDate!=null">
+            AND cs.class_date_ &lt;= #{endClassDate}
+        </if>
         GROUP BY sa.course_schedule_id_
         ORDER BY cs.id_
         <include refid="global.limit"/>
@@ -1509,6 +1518,15 @@
         <if test="userId != null">
             AND sa.teacher_id_=#{userId}
         </if>
+        <if test="status!=null">
+            AND cs.status_ = #{status}
+        </if>
+        <if test="startClassDate!=null">
+            AND cs.class_date_ &gt;= #{startClassDate}
+        </if>
+        <if test="endClassDate!=null">
+            AND cs.class_date_ &lt;= #{endClassDate}
+        </if>
     </select>
     <select id="countClassCourseNumByMusicGroup" resultType="java.util.Map">
         SELECT cg.id_        as 'key',

+ 17 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -340,6 +340,23 @@
 		</foreach>
 		AND csts.teacher_role_=#{teacherRole}
 	</select>
+
+	<select id="findByCourseIdsAndTeacherRole" resultMap="CourseScheduleTeacherSalary">
+		SELECT
+		csts.*,
+		su.real_name_ username_
+		FROM
+		course_schedule_teacher_salary csts
+		LEFT JOIN sys_user su ON csts.user_id_=su.id_
+		WHERE csts.course_schedule_id_ IN
+		<foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+			#{courseScheduleId}
+		</foreach>
+		<if test="teacherRole!=null and teacherRole!=''">
+			AND csts.teacher_role_=#{teacherRole}
+		</if>
+	</select>
+
 	<select id="findMusicGroupSettlementTypeByCourse" resultType="map">
 		SELECT
 			cs.id_ AS 'key',

+ 14 - 0
mec-student/src/main/java/com/ym/mec/student/controller/ContractsController.java

@@ -103,12 +103,26 @@ public class ContractsController extends BaseController {
 	@ApiOperation(value = "生成学生课程协议")
 	@GetMapping("/transferProduceContractOnlyWithCourseList")
 	public HttpResponseResult transferProduceContractOnlyWithCourseList(Integer userId){
+		if(Objects.isNull(userId)){
+			SysUser sysUser = sysUserFeignService.queryUserInfo();
+			if (sysUser == null) {
+				return failed("获取用户信息失败");
+			}
+			userId = sysUser.getId();
+		}
 		return contractService.transferProduceContractOnlyWithCourseList(userId);
 	}
 
 	@ApiOperation(value = "查询学生最新协议")
 	@GetMapping("/getLatest")
 	public HttpResponseResult<List<SysUserContracts>> getLatest(Integer userId) {
+		if(Objects.isNull(userId)){
+			SysUser sysUser = sysUserFeignService.queryUserInfo();
+			if (sysUser == null) {
+				return failed("获取用户信息失败");
+			}
+			userId = sysUser.getId();
+		}
 		List<SysUserContracts> sysUserContracts = sysUserContractsService.getUserAllContracts(userId);
 
 		if(CollectionUtils.isEmpty(sysUserContracts)){

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

@@ -45,8 +45,8 @@ public class ClassGroupController extends BaseController {
 
     @ApiOperation(value = "教师关联班级获取")
     @GetMapping("/findTeacherClassGroups")
-    public Object findTeacherClassGroups(String type,String status){
-        return succeed(classGroupService.findTeacherClassGroups(type,status));
+    public Object findTeacherClassGroups(String type,String status, String groupName){
+        return succeed(classGroupService.findTeacherClassGroups(type,status,groupName));
     }
 
     @ApiOperation(value = "获取教师班级详情界面头部信息")

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

@@ -2,22 +2,32 @@ package com.ym.mec.teacher.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
 import com.ym.mec.biz.dal.dto.StudentAttendanceDto;
 import com.ym.mec.biz.dal.dto.TeacherSignOutDto;
+import com.ym.mec.biz.dal.entity.StudentAttendance;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.dal.page.TeacherAttendanceQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.StudentAttendanceService;
+import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.biz.service.TeacherAttendanceService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
+import com.ym.mec.util.date.DateUtil;
 import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @RequestMapping("teacherAttendance")
 @Api(tags = "教师签到服务")
@@ -31,9 +41,14 @@ public class TeacherAttendanceController extends BaseController {
     private StudentAttendanceService studentAttendanceService;
 
     @Autowired
+    private StudentAttendanceDao studentAttendanceDao;
+
+    @Autowired
     private ClassGroupService classGroupService;
     @Autowired
     private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SysMessageService sysMessageService;
 
     @ApiOperation(value = "新增教师签到")
     @PostMapping("/add")
@@ -61,6 +76,26 @@ public class TeacherAttendanceController extends BaseController {
         return succeed(studentAttendanceService.addStudentAttendances(studentAttendanceInfo));
     }
 
+    @ApiOperation(value = "学员到课提醒")
+    @PostMapping("/studentAttendanceNormalRemind")
+    public HttpResponseResult studentAttendanceNormalRemind(Long courseId){
+        //获取正常签到的学生信息
+        List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseId(courseId);
+        if(CollectionUtils.isEmpty(studentAttendances)){
+            return succeed();
+        }
+        List<StudentAttendance> normal = studentAttendances.stream().filter(studentAttendance -> studentAttendance.getStatus() == StudentAttendanceStatusEnum.NORMAL).collect(Collectors.toList());
+        if (normal != null && normal.size() > 0) {
+            Map<Integer, String> receivers = new HashMap<>();
+            normal.forEach(e -> {
+                receivers.put(e.getUserId(), e.getUserId().toString());
+            });
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_NAMES_ACHIEVE,
+                    receivers, null, 0, "2", "STUDENT", DateUtil.format(new Date(), DateUtil.DATE_FORMAT_MIN));
+        }
+        return succeed();
+    }
+
     @ApiOperation(value = "获取签退详情")
     @GetMapping("/getTeacherSignDetail")
     public Object getTeacherSignDetail(Integer courseScheduleId){

+ 9 - 1
mec-web/src/main/java/com/ym/mec/web/controller/CourseScheduleController.java

@@ -427,7 +427,15 @@ public class CourseScheduleController extends BaseController {
     @PostMapping("/updateCoursesExpireDate")
     @PreAuthorize("@pcs.hasPermissions('courseSchedule/updateCoursesExpireDate')")
     public Object updateCoursesExpireDate(String practiceGroupId, Date coursesStartDate,Date coursesExpireDate){
-        courseScheduleService.updatePracticeGroupInDate(practiceGroupId, coursesStartDate,coursesExpireDate);
+        courseScheduleService.updatePracticeGroupInDate(practiceGroupId, coursesStartDate,coursesExpireDate, false);
+        return succeed();
+    }
+
+    @ApiOperation(value = "陪练课课程组有效期调整-仅进行中可调整")
+    @PostMapping("/updateCoursesExpireDateOnlyNormal")
+    @PreAuthorize("@pcs.hasPermissions('courseSchedule/updateCoursesExpireDateOnlyNormal')")
+    public Object updateCoursesExpireDateOnlyNormal(String practiceGroupId, Date coursesStartDate,Date coursesExpireDate){
+        courseScheduleService.updatePracticeGroupInDate(practiceGroupId, coursesStartDate,coursesExpireDate, true);
         return succeed();
     }