浏览代码

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

zouxuan 5 年之前
父节点
当前提交
d7aaabc3e8

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

@@ -241,10 +241,11 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @describe 获取在指定时间之后不存在网管课的学员编号列表
      * @author Joburgess
      * @date 2020/4/10
-     * @param date:
+     * @param monday:
      * @return java.util.List<java.lang.Integer>
      */
-    List<Integer> findNoPracticeStudentIdsAfterStartTime(@Param("date")String date);
+    List<Integer> findNoPracticeStudentIdsOnWeek(@Param("monday")String monday,
+                                                 @Param("sunday")String sunday);
 
     Integer findNoPracticeStudentTeacherId(@Param("studentId") Integer studentId);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/Practice4OrganDto.java

@@ -27,6 +27,7 @@ public class Practice4OrganDto {
     private Integer change4MonthNum = 0;
     @ApiModelProperty(value = "当月回款金额",required = false)
     private BigDecimal totalMoney = BigDecimal.ZERO;
+    private Double scale =  0.00;
 
     private String studentIds;
     public String getOrganName() {
@@ -124,4 +125,12 @@ public class Practice4OrganDto {
     public void setTotalNum(Integer totalNum) {
         this.totalNum = totalNum;
     }
+
+    public Double getScale() {
+        return scale;
+    }
+
+    public void setScale(Double scale) {
+        this.scale = scale;
+    }
 }

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

@@ -187,7 +187,7 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 		LocalDate nowDate = LocalDateTime.now(DateUtil.zoneId).toLocalDate();
 		LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
 		LocalDate sunDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.SUNDAY.getValue());
-		List<Integer> noPracticeStudentIds = courseScheduleStudentPaymentDao.findNoPracticeStudentIdsAfterStartTime(monDayDate.toString());
+		List<Integer> noPracticeStudentIds = courseScheduleStudentPaymentDao.findNoPracticeStudentIdsOnWeek(monDayDate.toString(),sunDayDate.toString());
 		if(CollectionUtils.isEmpty(noPracticeStudentIds)){
 			return;
 		}
@@ -212,9 +212,8 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 				results.add(studentExtracurricularExercisesSituation);
 				continue;
 			}
-			long exercisesNum = studentExercises.stream().map(ExtracurricularExercisesReply::getUserId).distinct().count();
 			studentExtracurricularExercisesSituation.setActualExercisesNum(1);
-			long replyNum = studentExercises.stream().filter(e -> StringUtils.isNotBlank(e.getAttachments())).count();
+			long replyNum = studentExercises.stream().filter(e -> e.getStatus()==1).count();
 			studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
 			int exercisesMessageNum=0;
 			int exercisesMessageTimelyNum=0;

+ 15 - 9
mec-biz/src/main/resources/config/mybatis/CourseScheduleEvaluateMapper.xml

@@ -348,7 +348,9 @@
                  LEFT JOIN vip_group vg ON cssp.music_group_id_ = vg.id_ AND cssp.group_type_ = 'VIP'
                  LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
                  LEFT JOIN student s ON s.user_id_ = cssp.user_id_
-        WHERE s.operating_tag_ = 0
+        WHERE vg.organ_id_ >= 1
+          AND s.operating_tag_ = 0
+          AND (cs.is_lock_ IS NULL OR cs.is_lock_=0)
           AND cs.teach_mode_ = 'ONLINE'
         GROUP BY vg.organ_id_
     </select>
@@ -356,29 +358,33 @@
     <select id="getVipBuyNums" resultMap="practice4Organ">
         SELECT vg.organ_id_, COUNT(DISTINCT cssp.user_id_) vip_num_, GROUP_CONCAT(DISTINCT cssp.user_id_) student_ids_
         FROM course_schedule_student_payment cssp
-                 LEFT JOIN vip_group vg ON cssp.music_group_id_ = vg.id_ AND cssp.group_type_ = 'VIP'
-                 LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
-        WHERE CONCAT(cs.class_date_, ' ', cs.end_class_time_) >= #{classDate}
+        LEFT JOIN vip_group vg ON cssp.music_group_id_ = vg.id_ AND cssp.group_type_ = 'VIP'
+        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+        WHERE vg.organ_id_ >= 1
+        AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) >= #{classDate}
         <if test="endDate != null">
             <![CDATA[AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) < #{endDate}]]>
         </if>
-          AND cs.teach_mode_ = 'ONLINE'
+        AND (cs.is_lock_ IS NULL OR cs.is_lock_=0)
+        AND cs.teach_mode_ = 'ONLINE'
         GROUP BY vg.organ_id_
     </select>
 
     <select id="getPracticeBuyNums" resultMap="practice4Organ">
         SELECT pg.organ_id_, COUNT(DISTINCT cssp.user_id_) practice_num_
         FROM course_schedule_student_payment cssp
-                 LEFT JOIN practice_group pg ON cssp.music_group_id_ = pg.id_ AND cssp.group_type_ = 'PRACTICE'
-                 LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
-        WHERE CONCAT(cs.class_date_, ' ', cs.end_class_time_) >= #{classDate}
+        LEFT JOIN practice_group pg ON cssp.music_group_id_ = pg.id_ AND cssp.group_type_ = 'PRACTICE'
+        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+        WHERE pg.organ_id_ >= 1
+        AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) >= #{classDate}
         <if test="endDate != null">
             <![CDATA[AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) < #{endDate}]]>
         </if>
         <if test="studentIds != null">
             AND FIND_IN_SET(cssp.user_id_,#{studentIds})
         </if>
-          AND pg.buy_months_ >= 1
+        AND pg.buy_months_ >= 1
+        AND (cs.is_lock_  IS NULL OR cs.is_lock_=0)
         GROUP BY pg.organ_id_
     </select>
 </mapper>

+ 19 - 7
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -303,22 +303,34 @@
 		GROUP BY cssp.course_schedule_id_
 	</select>
 
-    <select id="findNoPracticeStudentIdsAfterStartTime" resultType="java.lang.Integer">
+    <select id="findNoPracticeStudentIdsOnWeek" resultType="java.lang.Integer">
 		SELECT
-			cssp.user_id_
+			DISTINCT cssp.user_id_
 		FROM
 			course_schedule_student_payment cssp
 			LEFT JOIN course_schedule cs ON cssp.course_schedule_id_ = cs.id_
-		WHERE cssp.group_type_='PRACTICE'
-		GROUP BY cssp.user_id_
-		HAVING MAX(cs.class_date_)&lt;#{date} ORDER BY cssp.user_id_
+			LEFT JOIN student s ON cssp.user_id_=s.user_id_
+		WHERE
+			cssp.group_type_ = 'PRACTICE'
+			AND s.service_tag_=1
+			AND cssp.user_id_ NOT IN (
+			SELECT
+				cssp1.user_id_
+			FROM
+				course_schedule_student_payment cssp1
+				LEFT JOIN course_schedule cs1 ON cssp1.course_schedule_id_ = cs1.id_
+			WHERE cssp1.group_type_ = 'PRACTICE'
+				AND cs1.class_date_ BETWEEN #{monday} AND #{sunday}
+			)
+		ORDER BY
+			cssp.user_id_
 	</select>
 	<select id="findNoPracticeStudentTeacherId" resultType="java.lang.Integer">
 		SELECT cs.actual_teacher_id_
 		FROM course_schedule_student_payment cssp
 		LEFT JOIN course_schedule cs ON cs.id_=cssp.course_schedule_id_
-		WHERE cssp.user_id_=#{studentId}
-		ORDER BY CONCAT(cs.class_date_, ' ', cs.start_class_time_) LIMIT 1;
+		WHERE cssp.group_type_='PRACTICE' AND cssp.user_id_=#{studentId} AND cs.actual_teacher_id_ IS NOT NULL
+		ORDER BY CONCAT(cs.class_date_, ' ', cs.start_class_time_) DESC LIMIT 1;
 	</select>
 
 	<delete id="deleteStudentCourseSchedule">

+ 11 - 4
mec-biz/src/main/resources/config/mybatis/StudentExtracurricularExercisesSituationMapper.xml

@@ -141,6 +141,9 @@
 			<if test="search!=null">
 				AND (stu.id_=#{search} OR stu.username_ LIKE CONCAT('%', #{search}, '%') OR tea.username_ LIKE CONCAT('%', #{search}, '%'))
 			</if>
+			<if test="organIdList != null">
+				AND FIND_IN_SET(stu.organ_id_,#{organIdList})
+			</if>
 			GROUP BY
 			student_id_
 			<trim prefix="HAVING" suffixOverrides="and">
@@ -177,17 +180,21 @@
 	<select id="countExercisesSituations" resultType="int">
 		SELECT COUNT(1) FROM (
 			SELECT
-			1
+				1
 			FROM
-			student_extracurricular_exercises_situation_ sees
-			LEFT JOIN sys_user stu ON stu.id_=sees.student_id_
-			LEFT JOIN sys_user tea ON tea.id_=sees.teacher_id_
+				student_extracurricular_exercises_situation_ sees
+				LEFT JOIN sys_user stu ON stu.id_=sees.student_id_
+				LEFT JOIN sys_user tea ON tea.id_=sees.teacher_id_
+				LEFT JOIN organization o ON stu.organ_id_=o.id_
 			WHERE
 			sees.monday_ &gt;= #{monday}
 			AND sees.sunday_ &lt;= #{sunday}
 			<if test="search!=null">
 				AND (stu.id_=#{search} OR stu.username_ LIKE CONCAT('%', #{search}, '%') OR tea.username_ LIKE CONCAT('%', #{search}, '%'))
 			</if>
+			<if test="organIdList != null">
+				AND FIND_IN_SET(stu.organ_id_, #{organIdList})
+			</if>
 			GROUP BY
 			student_id_
 			<trim prefix="HAVING" suffixOverrides="and">

+ 21 - 14
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -503,11 +503,14 @@ public class StudentOrderController extends BaseController {
         List<Practice4OrganDto> vipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(new Date(), null);
 
         List<Practice4OrganDto> practiceAndVipBuyNums = new ArrayList<>();
-        if(vipBuyNums.size() >0 ) {
-            studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
+
+        studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
+        if (!studentIds.isEmpty()) {
             practiceAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(new Date(), null, studentIds);
         }
         Date startTime = DateUtil.getFirstDayOfMonth(new Date());
+        Date endTime = DateUtil.addMonths(startTime, 1);
+
 
         //当月新增网管课人数
         List<PracticeGroupsDto> monthOrganPracticeBuyMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_BUY, startTime);
@@ -517,12 +520,13 @@ public class StudentOrderController extends BaseController {
         List<PracticeGroupsDto> monthOrganRenewMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_RENEW, startTime);
 
         //本月总人数
-        List<Practice4OrganDto> nowMonthPracticeBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(startTime, null, null);
-        List<Practice4OrganDto> nowMonthVipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(startTime, null);
+        List<Practice4OrganDto> nowMonthPracticeBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(startTime, endTime, null);
+        List<Practice4OrganDto> nowMonthVipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(startTime, endTime);
         List<Practice4OrganDto> nowMonthPracticeAndVipBuyNums = new ArrayList<>();
-        if(nowMonthVipBuyNums.size()>0) {
-            studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
-            nowMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(startTime, null, studentIds);
+
+        studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
+        if (!studentIds.isEmpty()) {
+            nowMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(startTime, endTime, studentIds);
         }
 
         //上月总人数
@@ -530,8 +534,9 @@ public class StudentOrderController extends BaseController {
         List<Practice4OrganDto> lastMonthPracticeBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(lastMonthStartTime, startTime, null);
         List<Practice4OrganDto> lastMonthVipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(lastMonthStartTime, startTime);
         List<Practice4OrganDto> lastMonthPracticeAndVipBuyNums = new ArrayList<>();
-        if(lastMonthVipBuyNums.size() >0) {
-            studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
+
+        studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
+        if (!studentIds.isEmpty()) {
             lastMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(lastMonthStartTime, startTime, studentIds);
         }
 
@@ -572,25 +577,23 @@ public class StudentOrderController extends BaseController {
             for (Practice4OrganDto practiceBuyNum : practiceBuyNums) {
                 if (organ.getId().equals(practiceBuyNum.getOrganId())) {
                     practice4OrganDto.setPracticeNum(practiceBuyNum.getPracticeNum());
-                    practice4OrganDto.setTotalNum(practice4OrganDto.getTotalNum() + practiceBuyNum.getPracticeNum());
+                    break;
                 }
-                break;
             }
             //VIP课转化人数
             for (Practice4OrganDto vipBuyNum : vipBuyNums) {
                 if (organ.getId().equals(vipBuyNum.getOrganId())) {
                     practice4OrganDto.setVipNum(vipBuyNum.getVipNum());
-                    practice4OrganDto.setTotalNum(practice4OrganDto.getTotalNum() + vipBuyNum.getVipNum());
                     break;
                 }
             }
             for (Practice4OrganDto practiceAndVipBuyNum : practiceAndVipBuyNums) {
                 if (organ.getId().equals(practiceAndVipBuyNum.getOrganId())) {
                     practice4OrganDto.setVipNum(practice4OrganDto.getVipNum() - practiceAndVipBuyNum.getPracticeNum());
-                    practice4OrganDto.setTotalNum(practice4OrganDto.getTotalNum() - practiceAndVipBuyNum.getVipNum());
                     break;
                 }
             }
+            practice4OrganDto.setTotalNum(practice4OrganDto.getPracticeNum() + practice4OrganDto.getVipNum());
 
             //当月新增网管课人数
             for (PracticeGroupsDto monthOrganPracticeBuyMoney : monthOrganPracticeBuyMoneys) {
@@ -656,11 +659,15 @@ public class StudentOrderController extends BaseController {
                 }
             }
 
+            if (practice4OrganDto.getTryNum() > 0) {
+                double scale = new BigDecimal(practice4OrganDto.getTotalNum()).multiply(new BigDecimal(100)).divide(new BigDecimal(practice4OrganDto.getTryNum()), 2, BigDecimal.ROUND_HALF_UP).doubleValue();
+                practice4OrganDto.setScale(scale);
+            }
 
             practice4Organs.add(practice4OrganDto);
         }
 
-        practice4Organs = practice4Organs.stream().sorted(Comparator.comparing(Practice4OrganDto::getTotalNum).reversed()).collect(Collectors.toList());
+        practice4Organs = practice4Organs.stream().sorted(Comparator.comparingDouble(Practice4OrganDto::getScale).reversed()).collect(Collectors.toList());
         return succeed(practice4Organs);
     }
 }