Browse Source

feat:运营预警

Joburgess 4 years ago
parent
commit
9d444c36cc

+ 8 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherCourseStatisticsDao.java

@@ -10,9 +10,14 @@ import java.util.List;
 
 public interface TeacherCourseStatisticsDao extends BaseDAO<Long, TeacherCourseStatistics> {
 
-    List<TeacherCourseStatistics> findUserByWarringSalary(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("salary") BigDecimal salary);
+    int deleteByMonth(@Param("date") Date date);
 
-    List<TeacherCourseStatistics> findUserCourseSalaryByUserIds(@Param("userIds") List<Integer> userIds,@Param("startDate") Date startDate, @Param("endDate") Date endDate);
+    List<TeacherCourseStatistics> findUserByWarringSalary(@Param("startDate") Date startDate,
+                                                          @Param("endDate") Date endDate);
+
+    List<TeacherCourseStatistics> findUserCourseSalaryByUserIds(@Param("userIds") List<Integer> userIds,
+                                                                @Param("startDate") Date startDate,
+                                                                @Param("endDate") Date endDate);
 
     int batchAdd(@Param("lists") List<TeacherCourseStatistics> lists);
-}
+}

+ 27 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherCourseStatistics.java

@@ -38,6 +38,11 @@ public class TeacherCourseStatistics {
     private Integer musicCourseNum;
 
     /**
+     * 网管课节数
+     */
+    private Integer practiceCourseNum;
+
+    /**
     * 预计乐团课酬
     */
     private BigDecimal expectMusicCourseSalary;
@@ -48,6 +53,11 @@ public class TeacherCourseStatistics {
     private BigDecimal expectVipCourseSalary;
 
     /**
+     * 预计小课课酬
+     */
+    private BigDecimal expectPracticeCourseSalary;
+
+    /**
     * 预计合计课酬
     */
     private BigDecimal expectTotalSalary;
@@ -132,6 +142,22 @@ public class TeacherCourseStatistics {
         this.musicCourseNum = musicCourseNum;
     }
 
+    public Integer getPracticeCourseNum() {
+        return practiceCourseNum;
+    }
+
+    public void setPracticeCourseNum(Integer practiceCourseNum) {
+        this.practiceCourseNum = practiceCourseNum;
+    }
+
+    public BigDecimal getExpectPracticeCourseSalary() {
+        return expectPracticeCourseSalary;
+    }
+
+    public void setExpectPracticeCourseSalary(BigDecimal expectPracticeCourseSalary) {
+        this.expectPracticeCourseSalary = expectPracticeCourseSalary;
+    }
+
     public BigDecimal getExpectMusicCourseSalary() {
         return expectMusicCourseSalary;
     }
@@ -227,4 +253,4 @@ public class TeacherCourseStatistics {
     public void setSubjectListStr(String subjectListStr) {
         this.subjectListStr = subjectListStr;
     }
-}
+}

+ 19 - 17
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherCourseStatisticsServiceImpl.java

@@ -1,7 +1,5 @@
 package com.ym.mec.biz.service.impl;
 
-
-import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dao.TeacherCourseStatisticsDao;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.entity.TeacherCourseStatistics;
@@ -25,8 +23,6 @@ public class TeacherCourseStatisticsServiceImpl extends BaseServiceImpl<Long, Te
 
     @Autowired
     private TeacherCourseStatisticsDao teacherCourseStatisticsDao;
-    @Autowired
-    private SysConfigDao sysConfigDao;
 
     @Override
     public BaseDAO<Long, TeacherCourseStatistics> getDAO() {
@@ -53,39 +49,44 @@ public class TeacherCourseStatisticsServiceImpl extends BaseServiceImpl<Long, Te
 
     @Override
     public void teacherCourseStatistic() {
-        Date nextMonthDate = DateUtil.addMonths(new Date(), 1);
+        Date nextMonthDate = new Date();
         Date startDate = DateUtil.getFirstDayOfMonth(nextMonthDate);
         Date endDate = DateUtil.getLastDayOfMonth(nextMonthDate);
-        String salaryConfig = sysConfigDao.findConfigValue("warning_min_course_salary");
-        BigDecimal salary = new BigDecimal(salaryConfig);
-        List<TeacherCourseStatistics> teacherCourseStatisticsList = teacherCourseStatisticsDao.findUserByWarringSalary(startDate, endDate, salary);
+        List<TeacherCourseStatistics> teacherCourseStatisticsList = teacherCourseStatisticsDao.findUserByWarringSalary(startDate, endDate);
         if (teacherCourseStatisticsList.size() == 0) {
             return;
         }
         List<Integer> userIds = teacherCourseStatisticsList.stream().map(TeacherCourseStatistics::getUserId).collect(Collectors.toList());
-        List<TeacherCourseStatistics> teCourseSalaryStatisAndTypes = teacherCourseStatisticsDao.findUserCourseSalaryByUserIds(userIds, startDate, endDate);
+        List<TeacherCourseStatistics> teCourseSalaryStaticsAndTypes = teacherCourseStatisticsDao.findUserCourseSalaryByUserIds(userIds, startDate, endDate);
 
         for (TeacherCourseStatistics teacherCourseStatistics : teacherCourseStatisticsList) {
             int vipCourseNum = 0;
             int musicCourseNum = 0;
+            int practiceCourseNum = 0;
             BigDecimal expectVipCourseSalary = BigDecimal.ZERO;
             BigDecimal expectMusicCourseSalary = BigDecimal.ZERO;
+            BigDecimal expectPracticeCourseSalary = BigDecimal.ZERO;
 
-            for (TeacherCourseStatistics teCourseSalaryStatisAndType : teCourseSalaryStatisAndTypes) {
-                if (!teacherCourseStatistics.getUserId().equals(teCourseSalaryStatisAndType.getUserId())) continue;
+            for (TeacherCourseStatistics teCourseSalaryStaticsAndType : teCourseSalaryStaticsAndTypes) {
+                if (!teacherCourseStatistics.getUserId().equals(teCourseSalaryStaticsAndType.getUserId())) continue;
 
-                if (teCourseSalaryStatisAndType.getGroupType().equals("VIP")) {
-                    expectVipCourseSalary = teCourseSalaryStatisAndType.getExpectTotalSalary();
-                    vipCourseNum = teCourseSalaryStatisAndType.getMusicCourseNum();
-                } else if (teCourseSalaryStatisAndType.getGroupType().equals("MUSIC")) {
-                    expectMusicCourseSalary = teCourseSalaryStatisAndType.getExpectTotalSalary();
-                    musicCourseNum = teCourseSalaryStatisAndType.getMusicCourseNum();
+                if (teCourseSalaryStaticsAndType.getGroupType().equals("VIP")) {
+                    expectVipCourseSalary = teCourseSalaryStaticsAndType.getExpectTotalSalary();
+                    vipCourseNum = teCourseSalaryStaticsAndType.getMusicCourseNum();
+                } else if (teCourseSalaryStaticsAndType.getGroupType().equals("MUSIC")) {
+                    expectMusicCourseSalary = teCourseSalaryStaticsAndType.getExpectTotalSalary();
+                    musicCourseNum = teCourseSalaryStaticsAndType.getMusicCourseNum();
+                } else if (teCourseSalaryStaticsAndType.getGroupType().equals("PRACTICE")) {
+                    expectPracticeCourseSalary = teCourseSalaryStaticsAndType.getExpectTotalSalary();
+                    practiceCourseNum = teCourseSalaryStaticsAndType.getMusicCourseNum();
                 }
             }
             teacherCourseStatistics.setExpectVipCourseSalary(expectVipCourseSalary);
             teacherCourseStatistics.setExpectMusicCourseSalary(expectMusicCourseSalary);
+            teacherCourseStatistics.setExpectPracticeCourseSalary(expectPracticeCourseSalary);
             teacherCourseStatistics.setVipCourseNum(vipCourseNum);
             teacherCourseStatistics.setMusicCourseNum(musicCourseNum);
+            teacherCourseStatistics.setPracticeCourseNum(practiceCourseNum);
 
             if (teacherCourseStatistics.getSubjectIdList() == null) {
                 teacherCourseStatistics.setSubjectIdList("");
@@ -93,6 +94,7 @@ public class TeacherCourseStatisticsServiceImpl extends BaseServiceImpl<Long, Te
             teacherCourseStatistics.setMonth(startDate);
         }
 
+        teacherCourseStatisticsDao.deleteByMonth(startDate);
         teacherCourseStatisticsDao.batchAdd(teacherCourseStatisticsList);
     }
 }

+ 19 - 10
mec-biz/src/main/resources/config/mybatis/TeacherCourseStatisticsMapper.xml

@@ -9,8 +9,10 @@
         <result column="subject_id_list_" jdbcType="VARCHAR" property="subjectIdList"/>
         <result column="vip_course_num_" jdbcType="INTEGER" property="vipCourseNum"/>
         <result column="music_course_num_" jdbcType="INTEGER" property="musicCourseNum"/>
+        <result column="practice_course_num_" jdbcType="INTEGER" property="practiceCourseNum"/>
         <result column="expect_music_course_salary_" jdbcType="DECIMAL" property="expectMusicCourseSalary"/>
         <result column="expect_vip_course_salary_" jdbcType="DECIMAL" property="expectVipCourseSalary"/>
+        <result column="expect_practice_course_salary_" jdbcType="DECIMAL" property="expectPracticeCourseSalary"/>
         <result column="expect_total_salary_" jdbcType="DECIMAL" property="expectTotalSalary"/>
         <result column="average_class_minutes_" jdbcType="INTEGER" property="averageClassMinutes"/>
         <result column="statistics_date_time_" jdbcType="DATE" property="statisticsDateTime"/>
@@ -27,30 +29,36 @@
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.TeacherCourseStatistics" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
         INSERT INTO teacher_course_statistics (id_, user_id_, organ_id_, month_,
-        subject_id_list_, vip_course_num_, music_course_num_,
-        expect_music_course_salary_, expect_vip_course_salary_,
+        subject_id_list_, vip_course_num_, music_course_num_, practice_course_num_,
+        expect_music_course_salary_, expect_vip_course_salary_, expect_practice_course_salary_,
         expect_total_salary_, average_class_minutes_,
         statistics_date_time_)
         VALUES (#{id,jdbcType=BIGINT}, #{userId,jdbcType=INTEGER}, #{organId,jdbcType=INTEGER}, #{month,jdbcType=DATE},
-        #{subjectIdList,jdbcType=VARCHAR}, #{vipCourseNum,jdbcType=INTEGER}, #{musicCourseNum,jdbcType=INTEGER},
-        #{expectMusicCourseSalary,jdbcType=DECIMAL}, #{expectVipCourseSalary,jdbcType=DECIMAL},
+        #{subjectIdList,jdbcType=VARCHAR}, #{vipCourseNum,jdbcType=INTEGER}, #{musicCourseNum,jdbcType=INTEGER}, #{practiceCourseNum},
+        #{expectMusicCourseSalary,jdbcType=DECIMAL}, #{expectVipCourseSalary,jdbcType=DECIMAL}, #{expectPracticeCourseSalary},
         #{expectTotalSalary,jdbcType=DECIMAL}, #{averageClassMinutes,jdbcType=INTEGER},NOW())
     </insert>
 
     <insert id="batchAdd" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
         INSERT INTO teacher_course_statistics (id_, user_id_, organ_id_, month_,
-        subject_id_list_, vip_course_num_, music_course_num_,
-        expect_music_course_salary_, expect_vip_course_salary_,
+        subject_id_list_, vip_course_num_, music_course_num_, practice_course_num_,
+        expect_music_course_salary_, expect_vip_course_salary_, expect_practice_course_salary_,
         expect_total_salary_, average_class_minutes_,statistics_date_time_)
         VALUE
         <foreach collection="lists" item="list" separator=",">
         (#{list.id,jdbcType=BIGINT}, #{list.userId,jdbcType=INTEGER}, #{list.organId,jdbcType=INTEGER}, #{list.month,jdbcType=DATE},
         #{list.subjectIdList,jdbcType=VARCHAR}, #{list.vipCourseNum,jdbcType=INTEGER}, #{list.musicCourseNum,jdbcType=INTEGER},
+            #{list.practiceCourseNum},
         #{list.expectMusicCourseSalary,jdbcType=DECIMAL}, #{list.expectVipCourseSalary,jdbcType=DECIMAL},
+            #{list.expectPracticeCourseSalary},
         #{list.expectTotalSalary,jdbcType=DECIMAL}, #{list.averageClassMinutes,jdbcType=INTEGER},NOW())
         </foreach>
     </insert>
 
+    <delete id="deleteByMonth">
+        DELETE FROM teacher_course_statistics WHERE month_=#{date}
+    </delete>
+
     <!-- 查找下月排课小于基准课酬的老师-->
     <select id="findUserByWarringSalary" resultMap="TeacherCourseStatistics"><![CDATA[
         SELECT SUM(csts.expect_salary_) expect_total_salary_, csts.user_id_,t.organ_id_,t.subject_id_ subject_id_list_,
@@ -58,8 +66,9 @@
         FROM course_schedule_teacher_salary csts
         LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
         LEFT JOIN teacher t on t.id_ = csts.user_id_
-        WHERE cs.class_date_ >= #{startDate} AND cs.class_date_ <= #{endDate} AND csts.group_type_ IN ('VIP','MUSIC') AND cs.del_flag_ != 1
-        GROUP BY csts.user_id_ HAVING expect_total_salary_ <= #{salary}
+        WHERE cs.class_date_ >= #{startDate} AND cs.class_date_ <= #{endDate} AND csts.group_type_ IN ('VIP','MUSIC', 'PRACTICE')
+          AND cs.del_flag_ != 1 AND t.organ_id_ IS NOT NULL
+        GROUP BY csts.user_id_
         ]]>
   </select>
     <select id="findUserCourseSalaryByUserIds" resultMap="TeacherCourseStatistics">
@@ -69,7 +78,7 @@
         <foreach collection="userIds" item="userId" open="(" separator="," close=")">
             #{userId}
         </foreach>
-        <![CDATA[AND cs.class_date_ >= #{startDate} AND cs.class_date_ <= #{endDate} AND csts.group_type_ IN ('VIP','MUSIC') AND cs.del_flag_ != 1
+        <![CDATA[AND cs.class_date_ >= #{startDate} AND cs.class_date_ <= #{endDate} AND csts.group_type_ IN ('VIP', 'MUSIC', 'PRACTICE') AND cs.del_flag_ != 1
         GROUP BY csts.user_id_, csts.group_type_;
   ]]></select>
 
@@ -102,4 +111,4 @@
             </if>
         </where>
     </sql>
-</mapper>
+</mapper>