Prechádzať zdrojové kódy

Merge branch 'Joburgess'

Joburgess 4 rokov pred
rodič
commit
c8ac480d7b

+ 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);
-}
+}

+ 37 - 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;
@@ -57,6 +67,8 @@ public class TeacherCourseStatistics {
     */
     private Integer averageClassMinutes;
 
+    private Boolean lowSalary;
+
     /**
     * 统计时间
     */
@@ -132,6 +144,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 +255,12 @@ public class TeacherCourseStatistics {
     public void setSubjectListStr(String subjectListStr) {
         this.subjectListStr = subjectListStr;
     }
-}
+
+    public Boolean getLowSalary() {
+        return lowSalary;
+    }
+
+    public void setLowSalary(Boolean lowSalary) {
+        this.lowSalary = lowSalary;
+    }
+}

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -211,6 +211,8 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
 
     String DAYA_BASE_SALARY_AMOUNT = "daya_base_salary_amount";
 
+    String WARNING_MIN_COURSE_SALARY = "warning_min_course_salary";
+
     /**
      * @return com.ym.mec.biz.dal.entity.SysConfig
      * @params paramName

+ 34 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherCourseStatisticsServiceImpl.java

@@ -1,11 +1,13 @@
 package com.ym.mec.biz.service.impl;
 
-
-import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.biz.dal.dao.TeacherCourseStatisticsDao;
 import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.dal.entity.TeacherCourseStatistics;
 import com.ym.mec.biz.dal.page.TeacherCourseStatisticsQueryInfo;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.TeacherCourseStatisticsService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.page.PageInfo;
@@ -26,7 +28,7 @@ public class TeacherCourseStatisticsServiceImpl extends BaseServiceImpl<Long, Te
     @Autowired
     private TeacherCourseStatisticsDao teacherCourseStatisticsDao;
     @Autowired
-    private SysConfigDao sysConfigDao;
+    private SysConfigService sysConfigService;
 
     @Override
     public BaseDAO<Long, TeacherCourseStatistics> getDAO() {
@@ -53,39 +55,54 @@ 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;
         }
+        SysConfig salaryConfig = sysConfigService.findByParamName(SysConfigService.WARNING_MIN_COURSE_SALARY);
+        JSONObject salaryConfigObject = JSON.parseObject(salaryConfig.getParanValue());
+
         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);
+
+            BigDecimal organWarningSalary = salaryConfigObject.getBigDecimal(teacherCourseStatistics.getOrganId().toString());
+            if(Objects.isNull(organWarningSalary)||teacherCourseStatistics.getExpectTotalSalary().compareTo(organWarningSalary)<=0){
+                teacherCourseStatistics.setLowSalary(true);
+            }else{
+                teacherCourseStatistics.setLowSalary(false);
+            }
 
             if (teacherCourseStatistics.getSubjectIdList() == null) {
                 teacherCourseStatistics.setSubjectIdList("");
@@ -93,6 +110,7 @@ public class TeacherCourseStatisticsServiceImpl extends BaseServiceImpl<Long, Te
             teacherCourseStatistics.setMonth(startDate);
         }
 
+        teacherCourseStatisticsDao.deleteByMonth(startDate);
         teacherCourseStatisticsDao.batchAdd(teacherCourseStatisticsList);
     }
 }

+ 24 - 14
mec-biz/src/main/resources/config/mybatis/TeacherCourseStatisticsMapper.xml

@@ -9,9 +9,12 @@
         <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="low_salary" jdbcType="DECIMAL" property="lowSalary"/>
         <result column="average_class_minutes_" jdbcType="INTEGER" property="averageClassMinutes"/>
         <result column="statistics_date_time_" jdbcType="DATE" property="statisticsDateTime"/>
         <result column="group_type_" jdbcType="VARCHAR" property="groupType"/>
@@ -27,30 +30,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_)
+        statistics_date_time_,low_salary)
         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},
-        #{expectTotalSalary,jdbcType=DECIMAL}, #{averageClassMinutes,jdbcType=INTEGER},NOW())
+        #{subjectIdList,jdbcType=VARCHAR}, #{vipCourseNum,jdbcType=INTEGER}, #{musicCourseNum,jdbcType=INTEGER}, #{practiceCourseNum},
+        #{expectMusicCourseSalary,jdbcType=DECIMAL}, #{expectVipCourseSalary,jdbcType=DECIMAL}, #{expectPracticeCourseSalary},
+        #{expectTotalSalary,jdbcType=DECIMAL}, #{averageClassMinutes,jdbcType=INTEGER},NOW(),#{lowSalary})
     </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_,
-        expect_total_salary_, average_class_minutes_,statistics_date_time_)
+        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_,low_salary)
         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.expectTotalSalary,jdbcType=DECIMAL}, #{list.averageClassMinutes,jdbcType=INTEGER},NOW())
+            #{list.expectPracticeCourseSalary},
+        #{list.expectTotalSalary,jdbcType=DECIMAL}, #{list.averageClassMinutes,jdbcType=INTEGER},NOW(),#{list.lowSalary})
         </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 +67,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 +79,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 +112,4 @@
             </if>
         </where>
     </sql>
-</mapper>
+</mapper>