瀏覽代碼

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan 5 年之前
父節點
當前提交
1edf20e181

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1332,6 +1332,17 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
                                                         @Param("groupType") GroupType groupType);
 
     /**
+     * @describe 获取课程组有效期
+     * @author Joburgess
+     * @date 2020/3/18
+     * @param groupIds:
+     * @param groupType:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.GroupValidDateDto>
+     */
+    List<GroupValidDateDto> findGroupsValidate(@Param("groupIds") List<String> groupIds,
+                                               @Param("groupType") GroupType groupType);
+
+    /**
      * 获取当前课程声部
      * @param courseScheduleId
      * @return

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CoursesGroupDao.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.CoursesGroup;
+import com.ym.mec.biz.dal.enums.GroupStatusEnum;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
@@ -58,5 +59,25 @@ public interface CoursesGroupDao extends BaseDAO<Long, CoursesGroup> {
      */
     List<CoursesGroup> findNoStudentsGroups(@Param("startDate")Date startDate);
 
+    /**
+     * @describe 获取无课时的课程组
+     * @author Joburgess
+     * @date 2020/3/18
+     * @param :
+     * @return java.util.List<com.ym.mec.biz.dal.entity.CoursesGroup>
+     */
+    List<CoursesGroup> findNoCoursesGroups();
+
     CoursesGroup lockGroup(@Param("groupId") Long groupId);
+
+    /**
+     * @describe 更新课程组状态
+     * @author Joburgess
+     * @date 2020/3/18
+     * @param groupIds:
+     * @param status:
+     * @return int
+     */
+    int updateGroupStatus(@Param("groupIds") List<Long> groupIds,
+                          @Param("status")GroupStatusEnum status);
 }

+ 40 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/GroupValidDateDto.java

@@ -0,0 +1,40 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/3/18
+ */
+public class GroupValidDateDto {
+
+    private String groupId;
+
+    private Date startDate;
+
+    private Date endDate;
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+}

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CoursesGroupService.java

@@ -69,4 +69,13 @@ public interface CoursesGroupService extends BaseService<Long, CoursesGroup> {
      * @return void
      */
     void noStudentsCourseGroupRemind();
+
+    /**
+     * @describe 结束已完成的课程组
+     * @author Joburgess
+     * @date 2020/3/18
+     * @param :
+     * @return void
+     */
+    void finishCourseGroup();
 }

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

@@ -1140,6 +1140,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             String[] studentNums = classGroupStudentMapperDao.findStudentNumByClassGroupId(classGroupId);
             teacherClassHeadInfo.setStudentNames(StringUtils.join(studentNums, ","));
         }
+        if (classGroup.getType() == ClassGroupTypeEnum.COMM) {
+            String[] studentNums = classGroupStudentMapperDao.findStudentNumByClassGroupId(classGroupId);
+            teacherClassHeadInfo.setStudentNames(StringUtils.join(studentNums, ","));
+        }
         return teacherClassHeadInfo;
     }
 

+ 19 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java

@@ -140,6 +140,9 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
         courseScheduleService.checkNewCourseSchedules(newCourses,false);
 
         CourseSchedule firstCourseSchedule = newCourses.stream().min(Comparator.comparing(CourseSchedule::getStartClassTime)).get();
+        if(firstCourseSchedule.getStartClassTime().before(now)){
+            throw new BizException("开课时间不可小于当前时间");
+        }
         CourseSchedule latestCourseSchedule = newCourses.stream().max(Comparator.comparing(CourseSchedule::getEndClassTime)).get();
         courseGroup.setCoursesStartDate(firstCourseSchedule.getStartClassTime());
         courseGroup.setCoursesEndDate(latestCourseSchedule.getEndClassTime());
@@ -247,6 +250,9 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
             List<GroupCourseTimesDto> groupsCourseTimesInfo = courseScheduleDao.findGroupsCourseTimesInfo(groupIds, GroupType.COMM);
             Map<String, GroupCourseTimesDto> groupCourseTimesInfoMap = groupsCourseTimesInfo.stream().collect(Collectors.toMap(GroupCourseTimesDto::getGroupId, e -> e));
 
+            List<GroupValidDateDto> groupsValidate = courseScheduleDao.findGroupsValidate(groupIds, GroupType.COMM);
+            Map<String, GroupValidDateDto> groupValidateMap = groupsValidate.stream().collect(Collectors.toMap(GroupValidDateDto::getGroupId, e -> e));
+
             groupCards=new ArrayList<>();
             for (CoursesGroup teacherCourseGroup : teacherCourseGroups) {
                 CourseGroupTeacherCardDto groupCard=new CourseGroupTeacherCardDto();
@@ -257,8 +263,9 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
                 groupCard.setSubjectId(teacherCourseGroup.getSubjectId());
                 groupCard.setSubjectName(idSubjectMap.get(teacherCourseGroup.getSubjectId()).getName());
                 GroupCourseTimesDto groupCourseTimesInfo = groupCourseTimesInfoMap.get(String.valueOf(teacherCourseGroup.getId()));
-                groupCard.setCoursesStartDate(groupCourseTimesInfo.getStartDate());
-                groupCard.setCoursesEndDate(groupCourseTimesInfo.getEndDate());
+                GroupValidDateDto groupValidDate = groupValidateMap.get(String.valueOf(teacherCourseGroup.getId()));
+                groupCard.setCoursesStartDate(groupValidDate.getStartDate());
+                groupCard.setCoursesEndDate(groupValidDate.getEndDate());
                 groupCard.setClassGroupId(groupCourseTimesInfo.getClassGroupId());
                 groupCard.setTotalCourseTimes(groupCourseTimesInfo.getTotalCourseTimes());
                 groupCard.setSurplusClassTimes(groupCourseTimesInfo.getSurplusClassTimes());
@@ -607,4 +614,14 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
                     userMap, null, 0, null, "TEACHER", noStudentsGroup.getName());
         }
     }
+
+    @Override
+    public void finishCourseGroup() {
+        List<CoursesGroup> noCoursesGroups = coursesGroupDao.findNoCoursesGroups();
+        if(CollectionUtils.isEmpty(noCoursesGroups)){
+            return;
+        }
+        List<Long> groupIds = noCoursesGroups.stream().map(CoursesGroup::getId).collect(Collectors.toList());
+        coursesGroupDao.updateGroupStatus(groupIds, GroupStatusEnum.FINISH);
+    }
 }

+ 2 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/GroupClassServiceImpl.java

@@ -147,9 +147,6 @@ public class GroupClassServiceImpl implements GroupClassService {
             if(Objects.isNull(coursesGroup)){
                 throw new BizException("指定的课程组不存在");
             }
-            if(coursesGroup.getCoursesEndDate().before(now)){
-                throw new BizException("当前课程组不可关闭");
-            }
             if(coursesGroup.getStatus().equals(GroupStatusEnum.CANCEL)){
                 throw new BizException("此课程组已关闭");
             }
@@ -158,6 +155,8 @@ public class GroupClassServiceImpl implements GroupClassService {
                 //剩余课程时长
                 Integer totalCourseTime=groupNotStartCourses.size()*coursesGroup.getSingleClassMinutes();
                 sysTenantAccountService.update(coursesGroup.getTeacherId(), totalCourseTime, "", SysTenantAccountDetail.TransType.CONSUME, "",BigDecimal.ZERO,"关闭课程组");
+            }else{
+                throw new BizException("此课程组已结束");
             }
             cleanGroupInfo(groupId.toString(), GroupType.COMM);
             coursesGroup.setMemo("主动关闭课程组");

+ 21 - 6
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -664,7 +664,6 @@
         <if test="type!=null and type!=''">
             AND cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         </if>
-        AND cg.del_flag_ = 0
         ORDER BY start_class_time_
     </select>
 
@@ -2788,18 +2787,34 @@
             MIN( CONCAT( class_date_, ' ', start_class_time_ ) ) start_date_,
             MAX( CONCAT( class_date_, ' ', end_class_time_ ) ) end_date_
         FROM
-            course_schedule cs
-            LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
+            class_group cg
+            LEFT JOIN course_schedule cs ON cs.class_group_id_ = cg.id_ AND CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) > NOW( )
         WHERE
-            cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-            AND CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) > NOW( )
-            AND cs.music_group_id_ IN
+            cg.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            AND cg.music_group_id_ IN
             <foreach collection="groupIds" item="groupId" separator="," open="(" close=")">
                 #{groupId}
             </foreach>
         GROUP BY
             cg.id_
     </select>
+
+    <select id="findGroupsValidate" resultType="com.ym.mec.biz.dal.dto.GroupValidDateDto">
+        SELECT
+            cs.music_group_id_ groupId,
+            MIN( CONCAT( class_date_, ' ', start_class_time_ ) ) startDate,
+            MAX( CONCAT( class_date_, ' ', end_class_time_ ) ) endDate
+        FROM
+            course_schedule cs
+        WHERE
+          cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+          AND cs.music_group_id_ IN
+        <foreach collection="groupIds" item="groupId" separator="," open="(" close=")">
+            #{groupId}
+        </foreach>
+        GROUP BY
+        cs.music_group_id_
+    </select>
     <select id="findCourseByGroupId" resultMap="CourseSchedule">
         SELECT * FROM course_schedule cs
         WHERE cs.music_group_id_ = #{groupId} AND cs.group_type_ = #{groupType} AND cs.del_flag_ = 0

+ 22 - 1
mec-biz/src/main/resources/config/mybatis/CoursesGroupMapper.xml

@@ -118,7 +118,13 @@
 			update_time_ = NOW()
 		</set> WHERE id_ = #{id}
 	</update>
-	
+	<update id="updateGroupStatus">
+		UPDATE courses_group SET status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} WHERE id_ IN
+		<foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
+			#{groupId}
+		</foreach>
+	</update>
+
 	<!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
 		DELETE FROM courses_group WHERE id_ = #{id} 
@@ -186,4 +192,19 @@
 			AND cg.student_num_ = 0
 		GROUP BY csg.id_ HAVING MAX(cs.class_date_)&lt;=DATE_FORMAT(#{startDate}, '%Y-%m-%d')
     </select>
+    <select id="findNoCoursesGroups" resultMap="CoursesGroup">
+		SELECT
+			cg.*
+		FROM
+			courses_group cg
+			LEFT JOIN course_schedule cs ON cs.music_group_id_ = cg.id_
+			AND cs.group_type_ = 'COMM'
+			AND CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) > NOW( )
+		WHERE
+			cg.status_ = 'NORMAL'
+			GROUP BY
+			cg.id_
+			HAVING
+			COUNT( cs.id_ ) &lt;=0
+	</select>
 </mapper>

+ 2 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -100,4 +100,6 @@ public interface TaskRemoteService {
 	@GetMapping("task/noStudentsCourseGroupRemind")
 	void noStudentsCourseGroupRemind();
 
+	@GetMapping("task/finishCourseGroup")
+	void finishCourseGroup();
 }

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -125,4 +125,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 	public void noStudentsCourseGroupRemind() {
 		logger.info("对外课程组无学生推送失败");
 	}
+
+	@Override
+	public void finishCourseGroup() {
+		logger.info("更新对外课程组至已结束失败");
+	}
 }

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/UpdateCourseGroupToFinishTask.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UpdateCourseGroupToFinishTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.finishCourseGroup();
+	}
+}

+ 5 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -199,4 +199,9 @@ public class TaskController extends BaseController {
 		coursesGroupService.noStudentsCourseGroupRemind();
 	}
 
+	//更新对外课程组状态至已结束
+	@GetMapping("/finishCourseGroup")
+	public void finishCourseGroup(){
+		coursesGroupService.finishCourseGroup();
+	}
 }