Browse Source

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

zouxuan 5 năm trước cách đây
mục cha
commit
c319f65433

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -73,6 +73,15 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     List<ClassGroup> findClassGroupByIds(@Param("ids") String ids);
 
     /**
+     * @describe 获取班级列表
+     * @author Joburgess
+     * @date 2020/2/20
+     * @param classGroupIds: 班级编号列表
+     * @return java.util.List<com.ym.mec.biz.dal.entity.ClassGroup>
+     */
+    List<ClassGroup> findClassGroupWithIds(@Param("classGroupIds") List<Integer> classGroupIds);
+
+    /**
      * 根据教师编号获取教师所在乐团,带了哪些班级
      *
      * @param params
@@ -478,6 +487,15 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     int batchUpdateClassGroupCourseTimes(@Param("classGroupCourseTimes") Map<Integer, Integer> classGroupCourseTimes);
 
     /**
+     * @describe
+     * @author Joburgess
+     * @date 2020/2/20
+     * @param classGroups:
+     * @return int
+     */
+    int batchUpdate(@Param("classGroups") List<ClassGroup> classGroups);
+
+    /**
      * 批量软删除班级
      *
      * @param classGroupIds

+ 9 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -6,7 +6,6 @@ import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.common.dal.BaseDAO;
-import com.ym.mec.common.page.PageInfo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
@@ -1190,4 +1189,13 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     int countCurrentCourseTime(Long courseScheduleId);
+
+    /**
+     * @describe 获取班级课程列表
+     * @author Joburgess
+     * @date 2020/2/20
+     * @param classGroupIds: 班级编号列表
+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+     */
+    List<CourseSchedule> findCourseSchedulesByClassGroups(@Param("classGroupIds") List<Integer> classGroupIds);
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -108,7 +108,8 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     BACKSTAGE_STUDENT_APPEAL("BACKSTAGE_STUDENT_APPEAL", "学员申述"),
     BACKSTAGE_STUDENT_APPLY_QUIT_GROUP("BACKSTAGE_STUDENT_APPLY_QUIT_GROUP", "学员申请退团"),
     BACKSTAGE_STUDENT_APPLY_QUIT_COURSE("BACKSTAGE_STUDENT_APPLY_QUIT_COURSE", "学员申请退课"),
-    BACKSTAGE_STUDENT_APPLY_WITHDRAW("BACKSTAGE_STUDENT_APPLY_WITHDRAW", "学员申请提现");
+    BACKSTAGE_STUDENT_APPLY_WITHDRAW("BACKSTAGE_STUDENT_APPLY_WITHDRAW", "学员申请提现"),
+    PUSH_STUDY_REPORT("PUSH_STUDY_REPORT", "陪练报告");
 
     MessageTypeEnum(String code, String msg) {
         this.code = code;

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

@@ -373,6 +373,15 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
     void updateClassGroupInfo(Integer classGroupId);
 
     /**
+     * @describe 批量更新班级上的课次信息
+     * @author Joburgess
+     * @date 2020/2/20
+     * @param classGroupIds: 班级编号列表
+     * @return void
+     */
+    void updateClassGroupsCourseInfo(List<Integer> classGroupIds);
+
+    /**
      * 清除班级未开始课程
      * @param classGroupId
      * @return

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

@@ -2332,6 +2332,40 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
+    public void updateClassGroupsCourseInfo(List<Integer> classGroupIds) {
+        if(CollectionUtils.isEmpty(classGroupIds)){
+            return;
+        }
+        List<ClassGroup> classGroups = classGroupDao.findClassGroupWithIds(classGroupIds);
+        if(CollectionUtils.isEmpty(classGroups)){
+            return;
+        }
+        Map<Integer, ClassGroup> idClassGroupMap = classGroups.stream().collect(Collectors.toMap(ClassGroup::getId, classGroup -> classGroup));
+        List<CourseSchedule> classGroupsCourseSchedules = courseScheduleDao.findCourseSchedulesByClassGroups(classGroupIds);
+        Map<Integer, List<CourseSchedule>> classGroupCourseMap = classGroupsCourseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getClassGroupId));
+        Date now=new Date();
+        for (Map.Entry<Integer, ClassGroup> classGroupEntry : idClassGroupMap.entrySet()) {
+            List<CourseSchedule> courseSchedules = classGroupCourseMap.get(classGroupEntry.getKey());
+            if(CollectionUtils.isEmpty(courseSchedules)){
+                classGroupEntry.getValue().setTotalClassTimes(0);
+                classGroupEntry.getValue().setCurrentClassTimes(0);
+                continue;
+            }
+            int totalClassTimes=courseSchedules.size();
+            int currentClassTimes=0;
+            for (CourseSchedule courseSchedule : courseSchedules) {
+                if(courseSchedule.getEndClassTime().before(now)){
+                    currentClassTimes+=1;
+                }
+            }
+            classGroupEntry.getValue().setTotalClassTimes(totalClassTimes);
+            classGroupEntry.getValue().setCurrentClassTimes(currentClassTimes);
+        }
+        classGroupDao.batchUpdate(classGroups);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean delClassNoStartCourse(Integer classGroupId) {
         Date date = new Date();
         ClassGroup classGroup = classGroupDao.get(classGroupId);

+ 24 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleEvaluateServiceImpl.java

@@ -2,25 +2,27 @@ package com.ym.mec.biz.service.impl;
 
 
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleEvaluateDao;
-import com.ym.mec.biz.dal.dao.PracticeGroupDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
-import com.ym.mec.biz.dal.dto.PracticeGroupDto;
 import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
 import com.ym.mec.biz.dal.entity.PracticeGroup;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.service.CourseScheduleEvaluateService;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.SysMessageService;
 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.thirdparty.message.MessageSenderPluginContext.MessageSender;
+import com.ym.mec.util.http.HttpUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
+
 
 @Service
 public class CourseScheduleEvaluateServiceImpl extends BaseServiceImpl<Long, CourseScheduleEvaluate> implements CourseScheduleEvaluateService {
@@ -33,6 +35,10 @@ public class CourseScheduleEvaluateServiceImpl extends BaseServiceImpl<Long, Cou
     private TeacherDao teacherDao;
     @Autowired
     private PracticeGroupDao practiceGroupDao;
+    @Autowired
+    private SysConfigDao sysConfigDao;
+    @Autowired
+    private SysMessageService sysMessageService;
 
     @Override
     public BaseDAO<Long, CourseScheduleEvaluate> getDAO() {
@@ -56,6 +62,17 @@ public class CourseScheduleEvaluateServiceImpl extends BaseServiceImpl<Long, Cou
         if (num <= 0) {
             throw new BizException("报告添加失败,请重试");
         }
+        long practiceGroupId = Long.parseLong(classGroup.getMusicGroupId());
+        PracticeGroup practiceGroup = practiceGroupDao.get(practiceGroupId);
+
+        Map<Integer, String> push = new HashMap<>(1);
+        push.put(practiceGroup.getStudentId(), practiceGroup.getStudentId().toString());
+        String baseUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
+        String memo = baseUrl + "/#/study?classGroupId=" + classGroup.getId();
+        BasicUserDto teacherInfo = teacherDao.findTeacherInfo(courseScheduleEvaluate.getTeacherId());
+
+        sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.PUSH_STUDY_REPORT, push, null, 0, memo, "STUDENT",
+                teacherInfo.getName(),HttpUtil.getSortUrl(memo));
         return true;
     }
 

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

@@ -1975,7 +1975,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		
 		if(newCourseSchedules.size() > 0){
 			courseScheduleDao.batchUpdate(newCourseSchedules);
-		}
+            List<Integer> classGroupIds = newCourseSchedules.stream().filter(courseSchedule -> Objects.nonNull(courseSchedule.getClassGroupId())).map(CourseSchedule::getClassGroupId).collect(Collectors.toList());
+            if(!CollectionUtils.isEmpty(classGroupIds)){
+                classGroupService.updateClassGroupsCourseInfo(classGroupIds);
+            }
+        }
 		
 		if(insertCourseScheduleStudentPaymentList.size() > 0){
 			courseScheduleStudentPaymentDao.batchInsert(insertCourseScheduleStudentPaymentList);

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

@@ -1009,6 +1009,49 @@
       where id_=1
     </update>
 
+    <update id="batchUpdate">
+        <foreach collection="classGroups" item="classGroup" separator=";">
+            UPDATE class_group
+            <set>
+                <if test="classGroup.subjectIdList != null">
+                    subject_id_list_ = #{classGroup.subjectIdList},
+                </if>
+                <if test="classGroup.studentNum != null">
+                    student_num_ = #{classGroup.studentNum},
+                </if>
+                update_time_ = NOW(),
+                <if test="classGroup.musicGroupId != null">
+                    music_group_id_ = #{classGroup.musicGroupId},
+                </if>
+                <if test="classGroup.type != null">
+                    type_ = #{classGroup.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                </if>
+                <if test="classGroup.groupType != null">
+                    group_type_ = #{classGroup.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+                </if>
+                <if test="classGroup.name != null">
+                    name_ = #{classGroup.name},
+                </if>
+                <if test="classGroup.expectStudentNum != null">
+                    expect_student_num_ = #{classGroup.expectStudentNum},
+                </if>
+                <if test="classGroup.totalClassTimes != null">
+                    total_class_times_ = #{classGroup.totalClassTimes},
+                </if>
+                <if test="classGroup.currentClassTimes!=null">
+                    current_class_times_=#{classGroup.currentClassTimes},
+                </if>
+                <if test="classGroup.img!=null">
+                    img_=#{classGroup.img},
+                </if>
+                <if test="classGroup.delFlag != null">
+                    del_flag_ = #{classGroup.delFlag},
+                </if>
+            </set>
+            WHERE id_ = #{classGroup.id}
+        </foreach>
+    </update>
+
     <resultMap id="SuperClassGroupInfo" type="com.ym.mec.biz.dal.dto.SuperClassGroupDto" extends="ClassGroup">
 
     </resultMap>
@@ -1115,4 +1158,10 @@
         </foreach>
         AND cg.group_type_ = 'VIP'
     </select>
+    <select id="findClassGroupWithIds" resultMap="ClassGroup">
+        SELECT * FROM class_group WHERE id_ IN
+        <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
+            #{classGroupId}
+        </foreach>
+    </select>
 </mapper>

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

@@ -2373,4 +2373,37 @@
         (SELECT CONCAT(class_date_," ",start_class_time_) class_date_,class_group_id_ FROM course_schedule WHERE id_ = #{courseScheduleId} AND del_flag_ = 0) c
         WHERE cs.class_group_id_ = c.class_group_id_ AND CONCAT(cs.class_date_," ",cs.start_class_time_) &lt;= c.class_date_ AND cs.del_flag_ = 0
     </select>
+    <select id="findCourseSchedulesByClassGroups" resultMap="CourseSchedule">
+        SELECT
+            cs.id_,
+            cs.group_type_,
+            cs.music_group_id_,
+            cs.class_group_id_,
+            cs.status_,
+            cs.subsidy_,
+            cs.class_date_,
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+            cs.start_class_time_ start_class_time_str_,
+            cs.end_class_time_ end_class_time_str_,
+            cs.teacher_id_,
+            cs.actual_teacher_id_,
+            cs.create_time_,
+            cs.update_time_,
+            cs.teach_mode_,
+            cs.type_,
+            cs.name_,
+            cs.student_num_,
+            cs.leave_student_num_,
+            cs.schoole_id_
+        FROM
+        	course_schedule cs
+        WHERE
+          cs.class_group_id_ IN
+          <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
+              #{classGroupId}
+          </foreach>
+          AND ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL )
+        ORDER BY start_class_time_
+    </select>
 </mapper>

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

@@ -55,7 +55,7 @@
           #{studentAttendance.musicGroupId},#{studentAttendance.classGroupId},#{studentAttendance.courseScheduleId},
           #{studentAttendance.userId},#{studentAttendance.teacherId},
           #{studentAttendance.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),#{studentAttendance.updateTime},
-          #{studentAttendance.remark},#{studentAttendance.currentClassTimes}),
+          #{studentAttendance.remark},#{studentAttendance.currentClassTimes},
           #{studentAttendance.signInTime},#{studentAttendance.signOutTime})
       </foreach>
     </insert>