Browse Source

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

zouxuan 5 years ago
parent
commit
5abda8bb7a

+ 2 - 2
codegen/src/main/resources/generateConfigration.xml

@@ -8,10 +8,10 @@
 		<catalog>mec_data_online</catalog>
 		<schema>mec_data_online</schema>
 	</dbConfiguration>
-	<srcBase>d:/javabean</srcBase>
+	<srcBase>e:/javabean</srcBase>
 	<pojoPackageName>com.ym.mec.biz.dal.entity</pojoPackageName>
 	<daoPackageName>com.ym.mec.biz.dal.dao</daoPackageName>
 	<servicePackageName>com.ym.mec.biz.service</servicePackageName>
 	<sqlmapPackageName>resources</sqlmapPackageName>
 	<sqlmapConfigPackageName>resources/config</sqlmapConfigPackageName>
-</GenerateConfiguration>
+</GenerateConfiguration>

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -7,8 +7,8 @@ import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImUserModel;
 import org.apache.ibatis.annotations.Param;
+
 import java.math.BigDecimal;
-import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -54,6 +54,8 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      */
     List<Map<Integer, String>> queryNameByIds(@Param("userIds") String userIds);
 
+    List<Map<Integer, String>> queryNameByIdList(@Param("userIds") List<Integer> userIds);
+
     /**
      * 根据用户编号列表获取手机号
      *

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

@@ -8,6 +8,7 @@ import io.swagger.annotations.ApiModelProperty;
  * @Date 2019/12/30
  */
 public class Group {
+
     @ApiModelProperty(value = "编号")
     private String id;
 
@@ -23,6 +24,12 @@ public class Group {
     @ApiModelProperty(value = "团体类型")
     private GroupType groupType;
 
+    @ApiModelProperty(value = "班级编号")
+    private Integer classGroupId;
+
+    @ApiModelProperty(value = "班级名称")
+    private String classGroupName;
+
     public Group() {
     }
 
@@ -31,6 +38,22 @@ public class Group {
         this.groupType = groupType;
     }
 
+    public String getClassGroupName() {
+        return classGroupName;
+    }
+
+    public void setClassGroupName(String classGroupName) {
+        this.classGroupName = classGroupName;
+    }
+
+    public Integer getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Integer classGroupId) {
+        this.classGroupId = classGroupId;
+    }
+
     public Integer getOrganId() {
         return organId;
     }

+ 39 - 54
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -3590,21 +3590,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Map<String, Object> params = new HashMap<>(16);
         MapUtil.populateMap(params, queryInfo);
-        if(StringUtils.isNotBlank(queryInfo.getTeacherName())){
-            List<TeacherBasicDto> teachers = teacherDao.searchTeachers(params);
-            if(!CollectionUtils.isEmpty(teachers)){
-                List<Integer> teacherIds = teachers.stream().map(TeacherBasicDto::getId).collect(Collectors.toList());
-                params.put("teacherIdList",StringUtils.join(teacherIds.toArray(),","));
-            }
-        }
-        Set<Integer> courseScheduleIdSet = new HashSet<>();
-        courseScheduleIdSet.addAll(courseScheduleDao.queryMusicCourseScheduleIds(params));
-        courseScheduleIdSet.addAll(courseScheduleDao.queryVipCourseScheduleIds(params));
-        courseScheduleIdSet.addAll(courseScheduleDao.queryPracticeCourseScheduleIds(params));
-        if(courseScheduleIdSet.size() == 0){
+
+		List<Group> groups = groupDao.searchGroups(params);
+
+        if(groups.size() <= 0){
             return pageInfo;
         }
-        params.put("courseScheduleIds", courseScheduleIdSet);
+        params.put("classGroupIds", groups.stream().map(Group::getClassGroupId).collect(Collectors.toSet()));
         List<CourseScheduleEndDto> results = new ArrayList<>();
         int count = courseScheduleDao.endCountCourseSchedules(params);
         if(queryInfo.getIsExport() && count > 50000){
@@ -3619,52 +3611,45 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             Map<Long, List<TeacherAttendance>> courseTeacherAttendanceMap = teacherAttendances.stream().collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));
             Map<Integer, Long> studentNumCourseMap = MapUtil.convertIntegerMap(studentAttendanceDao.countStudentAttendancesByCourses(courseScheduleIds));
             Map<Long, String> studentIdMap = MapUtil.convertIntegerMap(courseScheduleStudentPaymentDao.getStudentIdMap(courseScheduleIds));
-            List<Group> groups=new ArrayList<>();
-            groups.add(null);
-            List<Integer> teacherIds=new ArrayList<>();
-            for (CourseScheduleEndDto courseScheduleEndDto : results) {
-                Group group=new Group(courseScheduleEndDto.getMusicGroupId(),courseScheduleEndDto.getGroupType());
-                groups.add(group);
-                teacherIds.add(courseScheduleEndDto.getActualTeacherId());
-            }
-            List<Map<Integer, String>> nameIdMaps = teacherDao.queryNameByIds(StringUtils.join(teacherIds,","));
+            List<Integer> teacherIds=results.stream().filter(t->Objects.nonNull(t.getActualTeacherId())).map(CourseSchedule::getActualTeacherId).collect(Collectors.toList());
+
+            List<Map<Integer, String>> nameIdMaps = teacherDao.queryNameByIdList(teacherIds);
             Map<Integer, String> nameIdMap=MapUtil.convertIntegerMap(nameIdMaps);
-            groups = groupDao.findByGroupIds(groups);
-            Map<String, Map<GroupType, List<Group>>> groupsGroupByGroup = groups.stream().collect(Collectors.groupingBy(Group::getId, Collectors.groupingBy(Group::getGroupType)));
-            //获取班级声部名称
+
+			Map<Integer, Group> classGroupIdGroupMap = groups.stream().collect(Collectors.toMap(Group::getClassGroupId, e -> e));
+
+			//获取班级声部名称
             List<Map<Integer, String>> classGroupSubjectNameMaps = classGroupDao.findClassGroupSubjectNameMaps(courseScheduleIds);
             Map<Integer, String> classGroupSubjectNameMap = MapUtil.convertIntegerMap(classGroupSubjectNameMaps);
-            results.forEach(result -> {
-                Map<GroupType, List<Group>> groupsTypeMap = groupsGroupByGroup.get(result.getMusicGroupId());
-                result.setTeacher(null);
-                if(Objects.nonNull(groupsTypeMap)){
-                    List<Group> groupTemps = groupsTypeMap.get(result.getGroupType());
-                    if(!CollectionUtils.isEmpty(groupTemps)){
-                        result.setGroupName(groupTemps.get(0).getGroupName());
-                        result.setOrganName(groupTemps.get(0).getOrganName());
-                    }
-                }
-                result.setTeacherName(nameIdMap.get(result.getActualTeacherId()));
-                result.setSubjectName(classGroupSubjectNameMap.get(result.getId()));
-                result.setStudentId(studentIdMap.get(result.getId()));
-                List<TeacherAttendance> courseTeacherAttendances = courseTeacherAttendanceMap.get(result.getId());
-                if(!CollectionUtils.isEmpty(courseTeacherAttendances)){
-                    TeacherAttendance teacherAttendance=courseTeacherAttendances.get(0);
-                    result.setIsSignIn(Objects.isNull(teacherAttendance.getSignInStatus())?3:teacherAttendance.getSignInStatus().getCode());
-                    result.setIsSignOut(Objects.isNull(teacherAttendance.getSignOutStatus())?3:teacherAttendance.getSignOutStatus().getCode());
+			for (CourseScheduleEndDto result : results) {
+				Group group = classGroupIdGroupMap.get(result.getClassGroupId());
+				result.setTeacher(null);
+				if(Objects.nonNull(group)){
+					result.setGroupName(group.getGroupName());
+					result.setOrganName(group.getOrganName());
+					result.setClassGroupName(group.getClassGroupName());
+				}
+				result.setTeacherName(nameIdMap.get(result.getActualTeacherId()));
+				result.setSubjectName(classGroupSubjectNameMap.get(result.getId()));
+				result.setStudentId(studentIdMap.get(result.getId()));
+				List<TeacherAttendance> courseTeacherAttendances = courseTeacherAttendanceMap.get(result.getId());
+				if(!CollectionUtils.isEmpty(courseTeacherAttendances)){
+					TeacherAttendance teacherAttendance=courseTeacherAttendances.get(0);
+					result.setIsSignIn(Objects.isNull(teacherAttendance.getSignInStatus())?3:teacherAttendance.getSignInStatus().getCode());
+					result.setIsSignOut(Objects.isNull(teacherAttendance.getSignOutStatus())?3:teacherAttendance.getSignOutStatus().getCode());
 					result.setSignInStatusEnum(result.getIsSignIn() == 1?NORMAL:result.getIsSignIn() == 0?UNUSUAL:NO);
 					result.setSignOutStatusEnum(result.getIsSignOut() == 1?SignOutStatusEnum.NORMAL:result.getIsSignOut() == 0? SignOutStatusEnum.UNUSUAL: SignOutStatusEnum.NO);
-                    result.setSignInTime(teacherAttendance.getSignInTime());
-                    result.setSignOutTime(teacherAttendance.getSignOutTime());
-                    result.setRemark(teacherAttendance.getRemark());
-                }
-                Long studentNum = studentNumCourseMap.get(result.getId());
-                if (Objects.nonNull(studentNum)) {
-                    result.setIsCallNames(studentNum > 0 ? YesOrNoEnum.YES : YesOrNoEnum.NO);
-                } else {
-                    result.setIsCallNames(YesOrNoEnum.NO);
-                }
-            });
+					result.setSignInTime(teacherAttendance.getSignInTime());
+					result.setSignOutTime(teacherAttendance.getSignOutTime());
+					result.setRemark(teacherAttendance.getRemark());
+				}
+				Long studentNum = studentNumCourseMap.get(result.getId());
+				if (Objects.nonNull(studentNum)) {
+					result.setIsCallNames(studentNum > 0 ? YesOrNoEnum.YES : YesOrNoEnum.NO);
+				} else {
+					result.setIsCallNames(YesOrNoEnum.NO);
+				}
+			}
         }
         pageInfo.setRows(results);
         return pageInfo;

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

@@ -2222,10 +2222,11 @@
 
     <sql id="endFindCourseSchedulesCondition">
         <where>
-            <if test="courseScheduleIds != null">
-                AND cs.id_ IN
-                <foreach collection="courseScheduleIds" item="courseId" open="(" close=")" separator=",">
-                    #{courseId}
+            <include refid="queryVipCourseScheduleIds"/>
+            <if test="classGroupIds != null">
+                AND cs.class_group_id_ IN
+                <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
+                    #{classGroupId}
                 </foreach>
             </if>
         </where>
@@ -2245,11 +2246,9 @@
         cs.teach_mode_,
         cs.type_,
         cs.schoole_id_,
-        cg.name_ class_group_name_,
         s.name_ schoole_name_
         FROM
         course_schedule cs
-        LEFT JOIN class_group cg ON cg.id_=cs.class_group_id_
         LEFT JOIN school s ON cs.schoole_id_=s.id_
         <include refid="endFindCourseSchedulesCondition"/>
         ORDER BY course_start_time_
@@ -2260,7 +2259,6 @@
         COUNT(cs.id_)
         FROM
         course_schedule cs
-        LEFT JOIN class_group cg ON cg.id_=cs.class_group_id_
         <include refid="endFindCourseSchedulesCondition"/>
     </select>
     <select id="findCourseIdsByStudent" resultType="int">
@@ -2358,7 +2356,7 @@
             AND cs.schoole_id_ = #{schoolId}
         </if>
         <if test="teacherIdList != null">
-            AND FIND_IN_SET(cs.actual_teacher_id_,#{teacherIdList})
+            AND cs.actual_teacher_id_=#{teacherIdList}
         </if>
     </sql>
     <select id="queryPracticeCourseScheduleIds" resultType="java.lang.Integer">

+ 50 - 15
mec-biz/src/main/resources/config/mybatis/GroupMapper.xml

@@ -9,9 +9,11 @@
     <resultMap type="com.ym.mec.biz.dal.entity.Group" id="Group">
         <result column="organ_id_" property="organId"/>
         <result column="organ_name_" property="organName"/>
-        <result column="id_" property="id"/>
+        <result column="group_id_" property="id"/>
         <result column="group_name_" property="groupName"/>
         <result column="group_type_" property="groupType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="class_group_id_" property="classGroupId"/>
+        <result column="class_group_name_" property="classGroupName"/>
     </resultMap>
 
     <sql id="searchMusicGroupsCondition">
@@ -68,20 +70,53 @@
     </delete>
 
     <select id="searchGroups" resultMap="Group">
-        ( SELECT o.id_ organ_id_,o.name_ organ_name_,g.id_, g.name_ group_name_, 'MUSIC' group_type_
-        FROM music_group g
-        LEFT JOIN organization o ON g.organ_id_ = o.id_
-        <include refid="searchMusicGroupsCondition"/> )
-        UNION
-        ( SELECT o.id_ organ_id_,o.name_ organ_name_,g.id_, g.name_ group_name_, 'VIP' group_type_
-        FROM vip_group g
-        LEFT JOIN organization o ON g.organ_id_ = o.id_
-        <include refid="searchVipGroupsCondition"/> )
-        UNION
-        ( SELECT o.id_ organ_id_,o.name_ organ_name_,g.id_, g.name_ group_name_, 'PRACTICE' group_type_
-        FROM practice_group g
-        LEFT JOIN organization o ON g.organ_id_ = o.id_
-        <include refid="searchPracticeGroupsCondition"/> );
+        SELECT cg.music_group_id_ group_id_,cg.group_type_,cg.id_ class_group_id_,g.name_ group_name_,g.organ_id_,o.name_ organ_name_,cg.name_ class_group_name_
+        FROM	music_group g
+        LEFT JOIN class_group cg ON cg.music_group_id_=g.id_
+        LEFT JOIN organization o ON o.id_=g.organ_id_
+        WHERE cg.group_type_='MUSIC'
+        <if test="search!=null">
+            AND (g.name_ LIKE CONCAT( '%', #{search}, '%' ) OR g.id_ LIKE CONCAT( '%', #{search}, '%' ))
+        </if>
+        <if test="organIdList!=null">
+            AND FIND_IN_SET(g.organ_id_,#{organIdList})
+        </if>
+        UNION ALL
+        SELECT cg.music_group_id_ group_id_,cg.group_type_,cg.id_ class_group_id_,cg.name_ group_name_,g.organ_id_,o.name_ organ_name_,cg.name_ class_group_name_
+        FROM	vip_group g
+        LEFT JOIN class_group cg ON cg.music_group_id_=g.id_
+        LEFT JOIN organization o ON o.id_=g.organ_id_
+        WHERE cg.group_type_='VIP'
+        <if test="search!=null">
+            AND (g.name_ LIKE CONCAT( '%', #{search}, '%' ) OR g.id_ LIKE CONCAT( '%', #{search}, '%' ))
+        </if>
+        <if test="organIdList!=null">
+            AND FIND_IN_SET(g.organ_id_,#{organIdList})
+        </if>
+        UNION ALL
+        SELECT cg.music_group_id_ group_id_,cg.group_type_,cg.id_ class_group_id_,cg.name_ group_name_,g.organ_id_,o.name_ organ_name_,cg.name_ class_group_name_
+        FROM	practice_group g
+        LEFT JOIN class_group cg ON cg.music_group_id_=g.id_
+        LEFT JOIN organization o ON o.id_=g.organ_id_
+        WHERE cg.group_type_='PRACTICE'
+        <if test="search!=null">
+            AND (g.name_ LIKE CONCAT( '%', #{search}, '%' ) OR g.id_ LIKE CONCAT( '%', #{search}, '%' ))
+        </if>
+        <if test="organIdList!=null">
+            AND FIND_IN_SET(g.organ_id_,#{organIdList})
+        </if>
+        UNION ALL
+        SELECT cg.music_group_id_ group_id_,cg.group_type_,cg.id_ class_group_id_,cg.name_ group_name_,g.organ_id_,o.name_ organ_name_,cg.name_ class_group_name_
+        FROM courses_group g
+        LEFT JOIN class_group cg ON cg.music_group_id_=g.id_
+        LEFT JOIN organization o ON o.id_=g.organ_id_
+        WHERE cg.group_type_='COMM'
+        <if test="search!=null">
+            AND (g.name_ LIKE CONCAT( '%', #{search}, '%' ) OR g.id_ LIKE CONCAT( '%', #{search}, '%' ))
+        </if>
+        <if test="organIdList!=null">
+            AND FIND_IN_SET(g.organ_id_,#{organIdList})
+        </if>
     </select>
     <select id="findByGroupIds" resultMap="Group">
       ( SELECT o.id_ organ_id_,o.name_ organ_name_,g.id_, g.name_ group_name_, 'MUSIC' group_type_

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -294,6 +294,12 @@
     <select id="queryNameByIds" resultType="java.util.Map" parameterType="list">
         select id_ `key`,IF(real_name_ IS NUll,'',real_name_) `value` FROM sys_user s WHERE FIND_IN_SET(id_,#{userIds})
     </select>
+    <select id="queryNameByIdList" resultType="java.util.Map">
+        select id_ `key`,IF(real_name_ IS NUll,'',real_name_) `value` FROM sys_user s WHERE id_ IN
+        <foreach collection="userIds" item="userId" separator="," open="(" close=")">
+            #{userId}
+        </foreach>
+    </select>
 
     <select id="queryPhoneByIds" resultType="java.util.Map" parameterType="list">
         select id_ `key`,phone_ `value` FROM sys_user s WHERE FIND_IN_SET(id_,#{userIds}) AND s.phone_ IS NOT NULL

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

@@ -16,10 +16,8 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.excel.POIUtil;
-
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,9 +28,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
-
-import java.io.IOException;
-import java.io.OutputStream;
+import java.io.*;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -302,8 +298,11 @@ public class ExportController extends BaseController {
                     "signOutTime","signInStatusEnum.msg","signOutStatusEnum.msg", "remark"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
+
             ouputStream = response.getOutputStream();
-			workbook.write(ouputStream);
+
+            byte[] bytes = workbook.getBytes();
+            ouputStream.write(bytes);
 			ouputStream.flush();
         } catch (Exception e) {
             e.printStackTrace();