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
37149faa03

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -52,12 +52,12 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      * @param groupType
      * @return
      */
-    List<Student4operating> getBuyNums(@Param("teacherIds") String teacherIds, @Param("groupType") GroupType groupType);
+    List<Map<Integer,Integer>> getBuyNums(@Param("teacherIds") String teacherIds, @Param("groupType") GroupType groupType);
 
      /**
      * 根据同事存在vip和网管的转化
      * @param teacherIds
      * @return
      */
-    List<Student4operating> getPracticeAndVipNums(@Param("teacherIds") String teacherIds);
+    List<Map<Integer,Integer>> getPracticeAndVipNums(@Param("teacherIds") String teacherIds);
 }

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

@@ -7,6 +7,7 @@ import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.TeacherService;
@@ -65,6 +66,8 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	private SysConfigDao configDao;
 	@Autowired
 	private StudentExtracurricularExercisesSituationDao studentExtracurricularExercisesSituationDao;
+	@Autowired
+	private StudentDao studentDao;
 
 
 	@Override
@@ -451,6 +454,11 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 			List<TeacherExercisesServiceDto> teacherExercisesServiceSituations = studentExtracurricularExercisesSituationDao.findTeacherExercisesServiceSituations(monDayDate.toString(), new ArrayList<>(teachers));
 			Map<Integer, TeacherExercisesServiceDto> teacherServiceMap = teacherExercisesServiceSituations.stream().collect(Collectors.toMap(TeacherExercisesServiceDto::getTeacherId, t -> t));
 
+			Map<Integer,Integer> operatingStudentsNum = MapUtil.convertMybatisMap(studentDao.getTeacherOperatingStudentsNum(teacherIds));
+			Map<Integer,Integer> practiceStudentsNum = MapUtil.convertMybatisMap(studentDao.getBuyNums(teacherIds, GroupType.PRACTICE));
+			Map<Integer,Integer> vipStudentsNum = MapUtil.convertMybatisMap(studentDao.getBuyNums(teacherIds, GroupType.VIP));
+			Map<Integer,Integer> practiceAndVipStudentsNum = MapUtil.convertMybatisMap(studentDao.getPracticeAndVipNums(teacherIds));
+
 			rows.forEach(e->{
 //				e.setSubjectName(subjectDao.findBySubIds(e.getSubjectId()));
 				e.setOrganName(organNames.get(e.getTeacherOrganId()));
@@ -469,6 +477,19 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 				}else{
 					e.setServiceIndex(BigDecimal.ZERO);
 				}
+				//运营指标
+				Integer studentNum = operatingStudentsNum.get(e.getId());
+				if(studentNum != null){
+					Integer practiceNum = practiceStudentsNum.get(e.getId()) ==null ? 0 : practiceStudentsNum.get(e.getId());
+					Integer vipNum = vipStudentsNum.get(e.getId()) ==null ? 0 : vipStudentsNum.get(e.getId());
+					Integer practiceAndVipNum = practiceAndVipStudentsNum.get(e.getId()) ==null ? 0 : practiceAndVipStudentsNum.get(e.getId());
+					Integer allNum = practiceNum+vipNum+practiceAndVipNum;
+					BigDecimal operatingIndex = new BigDecimal(allNum).multiply(new BigDecimal(100)).divide(new BigDecimal(studentNum), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+					e.setOperatingIndex(operatingIndex);
+				}else {
+					e.setOperatingIndex(BigDecimal.ZERO);
+				}
+
 			});
 		}
 		return pageInfo;
@@ -516,7 +537,7 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 				&& StringUtils.isNotBlank(teacher.getIdcardHandImg())) {
 			throw new BizException("已实名认证,不能重复操作");
 		}
-		
+
 		IdcardValidator validator = new IdcardValidator();
 		if (validator.isValidatedAllIdcard(idcardNo) == false) {
 			throw new BizException("身份证校验失败");

+ 137 - 131
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -5,16 +5,16 @@
 不要修改此文件。所有改动将在下次重新自动生成时丢失。
 -->
 <mapper namespace="com.ym.mec.biz.dal.dao.StudentDao">
-	
-	<resultMap type="com.ym.mec.biz.dal.entity.Student" id="Student">
-		<result column="user_id_" property="userId" />
-		<result column="subject_id_list_" property="subjectIdList" />
-		<result column="service_tag_" property="serviceTag" />
-		<result column="operating_tag_" property="operatingTag" />
-		<result column="teacher_id_" property="teacherId" />
-		<result column="create_time_" property="createTime" />
-		<result column="update_time_" property="updateTime" />
-	</resultMap>
+
+    <resultMap type="com.ym.mec.biz.dal.entity.Student" id="Student">
+        <result column="user_id_" property="userId"/>
+        <result column="subject_id_list_" property="subjectIdList"/>
+        <result column="service_tag_" property="serviceTag"/>
+        <result column="operating_tag_" property="operatingTag"/>
+        <result column="teacher_id_" property="teacherId"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+    </resultMap>
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="Student">
@@ -29,120 +29,128 @@
         FROM student
     </select>
 
-	<select id="lockUser" resultType="int" useCache="false" flushCache="true">
-		SELECT id_ FROM sys_user WHERE id_=#{userId} FOR UPDATE
-	</select>
-	
-	<!-- 向数据库增加一条记录 -->
-	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.Student" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO student (user_id_,subject_id_list_,
-		<if test="serviceTag != null">
-			service_tag_,
-		</if>
-		<if test="operatingTag != null">
-			operating_tag_,
-		</if>
-		teacher_id_,create_time_,update_time_)
-		VALUES
-		(#{userId},#{subjectIdList},
-		<if test="serviceTag != null">
-			#{serviceTag},
-		</if>
-		<if test="operatingTag != null">
-			#{operatingTag},
-		</if>
-		#{teacherId},NOW(),NOW())
-	</insert>
+    <select id="lockUser" resultType="int" useCache="false" flushCache="true">
+        SELECT id_
+        FROM sys_user
+        WHERE id_ = #{userId} FOR
+        UPDATE
+    </select>
 
-	<update id="update" parameterType="com.ym.mec.biz.dal.entity.Student">
-		UPDATE student
-		<set>
-			<if test="subjectIdList != null">
-				subject_id_list_ = #{subjectIdList},
-			</if>
-			<if test="serviceTag != null">
-				service_tag_ = #{serviceTag},
-			</if>
-			<if test="operatingTag != null">
-				operating_tag_ = #{operatingTag},
-			</if>
-			<if test="teacherId != null">
-				teacher_id_=#{teacherId},
-			</if>
-			<if test="updateTime != null">
-				update_time_ = #{updateTime},
-			</if>
-			<if test="updateTime == null">
-				update_time_ = NOW()
-			</if>
-		</set>
-		WHERE user_id_ = #{userId}
-	</update>
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.Student" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        INSERT INTO student (user_id_,subject_id_list_,
+        <if test="serviceTag != null">
+            service_tag_,
+        </if>
+        <if test="operatingTag != null">
+            operating_tag_,
+        </if>
+        teacher_id_,create_time_,update_time_)
+        VALUES
+        (#{userId},#{subjectIdList},
+        <if test="serviceTag != null">
+            #{serviceTag},
+        </if>
+        <if test="operatingTag != null">
+            #{operatingTag},
+        </if>
+        #{teacherId},NOW(),NOW())
+    </insert>
 
-	<!-- 分页查询 -->
-	<select id="queryPage" resultMap="Student" parameterType="map">
-		SELECT * FROM student <include refid="global.limit"/>
-	</select>
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.Student">
+        UPDATE student
+        <set>
+            <if test="subjectIdList != null">
+                subject_id_list_ = #{subjectIdList},
+            </if>
+            <if test="serviceTag != null">
+                service_tag_ = #{serviceTag},
+            </if>
+            <if test="operatingTag != null">
+                operating_tag_ = #{operatingTag},
+            </if>
+            <if test="teacherId != null">
+                teacher_id_=#{teacherId},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = #{updateTime},
+            </if>
+            <if test="updateTime == null">
+                update_time_ = NOW()
+            </if>
+        </set>
+        WHERE user_id_ = #{userId}
+    </update>
 
-	<!-- 查询当前表的总记录数 -->
-	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM student
-	</select>
-	<select id="findStudents" resultMap="com.ym.mec.biz.dal.dao.TeacherDao.SysUser">
-		SELECT id_, username_, phone_,avatar_ FROM sys_user
-		<include refid="studentQueryCondition"/>
-		ORDER BY id_
-		<include refid="global.limit"/>
-	</select>
-	<select id="countStudents" resultType="int">
-		SELECT COUNT(id_) FROM sys_user
-		<include refid="studentQueryCondition"/>
-	</select>
-	<sql id="studentQueryCondition">
-		<where>
-			<if test="organIdList!=null">
-				organ_id_ IN
-				<foreach collection="organIdList" item="organId" open="(" close=")" separator=",">
-					#{organId}
-				</foreach>
-			</if>
-			<if test="search!=null">
-				AND (username_ LIKE CONCAT('%', #{search}, '%') OR phone_ LIKE CONCAT('%', #{search}, '%'))
-			</if>
-			AND FIND_IN_SET("STUDENT", user_type_)
-		</where>
-	</sql>
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="Student" parameterType="map">
+        SELECT * FROM student
+        <include refid="global.limit"/>
+    </select>
 
-	<select id="queryByOperatingTag" resultMap="Student">
-		SELECT * FROM student WHERE operating_tag_ = #{operatingTag}
-	</select>
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(*)
+        FROM student
+    </select>
+    <select id="findStudents" resultMap="com.ym.mec.biz.dal.dao.TeacherDao.SysUser">
+        SELECT id_, username_, phone_,avatar_ FROM sys_user
+        <include refid="studentQueryCondition"/>
+        ORDER BY id_
+        <include refid="global.limit"/>
+    </select>
+    <select id="countStudents" resultType="int">
+        SELECT COUNT(id_) FROM sys_user
+        <include refid="studentQueryCondition"/>
+    </select>
+    <sql id="studentQueryCondition">
+        <where>
+            <if test="organIdList!=null">
+                organ_id_ IN
+                <foreach collection="organIdList" item="organId" open="(" close=")" separator=",">
+                    #{organId}
+                </foreach>
+            </if>
+            <if test="search!=null">
+                AND (username_ LIKE CONCAT('%', #{search}, '%') OR phone_ LIKE CONCAT('%', #{search}, '%'))
+            </if>
+            AND FIND_IN_SET("STUDENT", user_type_)
+        </where>
+    </sql>
 
-	<update id="batchUpdate" parameterType="java.util.List">
-    	<foreach collection="studentList" item="item" index="index" open="" close="" separator=";">
-			UPDATE student
-			<set>
-				<if test="item.subjectIdList != null">
-					subject_id_list_ = #{item.subjectIdList},
-				</if>
-				<if test="item.serviceTag != null">
-					service_tag_ = #{item.serviceTag},
-				</if>
-				<if test="item.operatingTag != null">
-					operating_tag_ = #{item.operatingTag},
-				</if>
-				<if test="item.teacherId != null">
-					teacher_id_=#{item.teacherId},
-				</if>
-				<if test="item.updateTime != null">
-					update_time_ = #{item.updateTime},
-				</if>
-				<if test="item.updateTime == null">
-					update_time_ = NOW()
-				</if>
-			</set>
-			WHERE user_id_ = #{item.userId}
+    <select id="queryByOperatingTag" resultMap="Student">
+        SELECT *
+        FROM student
+        WHERE operating_tag_ = #{operatingTag}
+    </select>
+
+    <update id="batchUpdate" parameterType="java.util.List">
+        <foreach collection="studentList" item="item" index="index" open="" close="" separator=";">
+            UPDATE student
+            <set>
+                <if test="item.subjectIdList != null">
+                    subject_id_list_ = #{item.subjectIdList},
+                </if>
+                <if test="item.serviceTag != null">
+                    service_tag_ = #{item.serviceTag},
+                </if>
+                <if test="item.operatingTag != null">
+                    operating_tag_ = #{item.operatingTag},
+                </if>
+                <if test="item.teacherId != null">
+                    teacher_id_=#{item.teacherId},
+                </if>
+                <if test="item.updateTime != null">
+                    update_time_ = #{item.updateTime},
+                </if>
+                <if test="item.updateTime == null">
+                    update_time_ = NOW()
+                </if>
+            </set>
+            WHERE user_id_ = #{item.userId}
         </foreach>
-	</update>
+    </update>
 
     <resultMap id="student4operating" type="com.ym.mec.biz.dal.dto.Student4operating">
         <result column="organ_name_" property="organName"/>
@@ -219,7 +227,7 @@
 
     <sql id="student4OperatingQueryCondition">
         <where>
-            su.user_type_ LIKE '%STUDENT%' AND su.del_flag_ = 0
+            su.user_type_ LIKE '%STUDENT%'
             <if test="search != null and search != ''">
                 AND (su.phone_ LIKE CONCAT('%',#{search},'%') OR su.username_ LIKE CONCAT('%',#{search},'%') OR su.id_
                 LIKE CONCAT('%',#{search},'%'))
@@ -261,21 +269,21 @@
         GROUP BY teacher_id_
     </select>
 
-    <select id="getBuyNums" resultMap="student4operating">
-        SELECT s.teacher_id_, COUNT(DISTINCT cssp.user_id_) student_num_
+    <select id="getBuyNums" resultType="java.util.Map">
+        SELECT s.teacher_id_ 'key', COUNT(DISTINCT cssp.user_id_) 'value'
         FROM course_schedule_student_payment cssp
         LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.teach_mode_ = 'ONLINE'
         LEFT JOIN student s ON s.user_id_ = cssp.user_id_
-        WHERE cs.status_ IN ('NOT_START', 'UNDERWAY')
+        WHERE FIND_IN_SET(s.teacher_id_, #{teacherIds})
+        AND cs.status_ IN ('NOT_START', 'UNDERWAY')
         AND (cs.is_lock_ IS NULL OR cs.is_lock_ = 0)
         <if test="groupType != null">
             AND cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         </if>
-        AND FIND_IN_SET(s.teacher_id_, #{teacherIds})
         GROUP BY s.teacher_id_
     </select>
-    <select id="getPracticeAndVipNums" resultMap="student4operating">
-        SELECT s.teacher_id_, COUNT(DISTINCT pg.student_id_) student_num_
+    <select id="getPracticeAndVipNums" resultType="java.util.Map">
+        SELECT s.teacher_id_ 'key', COUNT(DISTINCT pg.student_id_) 'value'
         FROM practice_group pg
                  LEFT JOIN student s on s.user_id_ = pg.student_id_
                  LEFT JOIN course_schedule_student_payment vcssp
@@ -284,15 +292,13 @@
                            ON pcssp.user_id_ = pg.student_id_ AND pcssp.group_type_ = 'PRACTICE'
                  LEFT JOIN course_schedule vcs ON vcs.id_ = vcssp.course_schedule_id_ AND vcs.teach_mode_ = 'ONLINE'
                  LEFT JOIN course_schedule pcs ON pcs.id_ = pcssp.course_schedule_id_
-        WHERE pg.group_status_ IN ('NORMAL', 'FINISH')
-          AND vcs.id_ >= 1
-          AND pcs.id_ >= 1
-          AND (vcs.is_lock_ IS NULL OR vcs.is_lock_ = 0)
-          AND (pcs.is_lock_ IS NULL OR pcs.is_lock_ = 0)
+        WHERE FIND_IN_SET(s.teacher_id_, #{teacherIds})
+          AND pg.group_status_ IN ('NORMAL', 'FINISH')
           AND vcs.status_ IN ('NOT_START', 'UNDERWAY')
           AND pcs.status_ IN ('NOT_START', 'UNDERWAY')
+          AND (vcs.is_lock_ IS NULL OR vcs.is_lock_ = 0)
+          AND (pcs.is_lock_ IS NULL OR pcs.is_lock_ = 0)
           AND pg.buy_months_ >= 1
-          AND FIND_IN_SET(s.teacher_id_, #{teacherIds})
         GROUP BY s.teacher_id_
     </select>
 </mapper>