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
57ea6f7ba8

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherCourseStatisticsService.java

@@ -3,8 +3,15 @@ package com.ym.mec.biz.service;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.entity.TeacherCourseStatistics;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
+import com.ym.mec.util.date.DateUtil;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
 
 
 public interface TeacherCourseStatisticsService extends BaseService<Long, TeacherCourseStatistics> {
@@ -17,4 +24,9 @@ public interface TeacherCourseStatisticsService extends BaseService<Long, Teache
      */
     PageInfo<TeacherCourseStatistics> queryPageDetail(TeacherCourseStatisticsQueryInfo queryInfo);
 
+    /**
+     * 乐团课程统计
+     */
+    void teacherCourseStatistic();
+
 }

+ 4 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -425,6 +425,10 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		if(Objects.isNull(teacherAttendanceInfo.getSignOutStatus())){
 			throw new BizException("请指定签退状态");
 		}
+		CourseSchedule courseSchedule = courseScheduleDao.get(teacherAttendanceInfo.getCourseScheduleId());
+		if(Objects.isNull(courseSchedule)){
+			throw new BizException("课程不存在");
+		}
 		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(teacherAttendanceInfo.getTeacherId().longValue(),teacherAttendanceInfo.getCourseScheduleId());
 
 		Date date = new Date();
@@ -432,8 +436,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			teacherAttendance=new TeacherAttendance();
 			teacherAttendance.setTeacherId(teacherAttendanceInfo.getTeacherId());
 			teacherAttendance.setCreateTime(date);
-		}else if(teacherAttendance.getSignInTime() != null && teacherAttendance.getSignOutTime() != null){
-			throw new BizException("当前课程已签到");
 		}
 		teacherAttendance.setSignOutTime(date);
 		teacherAttendance.setSignInStatus(teacherAttendanceInfo.getSignInStatus());

+ 50 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherCourseStatisticsServiceImpl.java

@@ -1,6 +1,7 @@
 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;
@@ -11,9 +12,11 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 
+import com.ym.mec.util.date.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -22,6 +25,8 @@ public class TeacherCourseStatisticsServiceImpl extends BaseServiceImpl<Long, Te
 
     @Autowired
     private TeacherCourseStatisticsDao teacherCourseStatisticsDao;
+    @Autowired
+    private SysConfigDao sysConfigDao;
 
     @Override
     public BaseDAO<Long, TeacherCourseStatistics> getDAO() {
@@ -45,4 +50,49 @@ public class TeacherCourseStatisticsServiceImpl extends BaseServiceImpl<Long, Te
         }
         return pageInfo;
     }
+
+    @Override
+    public void teacherCourseStatistic() {
+        Date nextMonthDate = DateUtil.addMonths(new Date(), 1);
+        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);
+        if (teacherCourseStatisticsList.size() == 0) {
+            return;
+        }
+        List<Integer> userIds = teacherCourseStatisticsList.stream().map(TeacherCourseStatistics::getUserId).collect(Collectors.toList());
+        List<TeacherCourseStatistics> teCourseSalaryStatisAndTypes = teacherCourseStatisticsDao.findUserCourseSalaryByUserIds(userIds, startDate, endDate);
+
+        for (TeacherCourseStatistics teacherCourseStatistics : teacherCourseStatisticsList) {
+            int vipCourseNum = 0;
+            int musicCourseNum = 0;
+            BigDecimal expectVipCourseSalary = BigDecimal.ZERO;
+            BigDecimal expectMusicCourseSalary = BigDecimal.ZERO;
+
+            for (TeacherCourseStatistics teCourseSalaryStatisAndType : teCourseSalaryStatisAndTypes) {
+                if (!teacherCourseStatistics.getUserId().equals(teCourseSalaryStatisAndType.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();
+                }
+            }
+            teacherCourseStatistics.setExpectVipCourseSalary(expectVipCourseSalary);
+            teacherCourseStatistics.setExpectMusicCourseSalary(expectMusicCourseSalary);
+            teacherCourseStatistics.setVipCourseNum(vipCourseNum);
+            teacherCourseStatistics.setMusicCourseNum(musicCourseNum);
+
+            if (teacherCourseStatistics.getSubjectIdList() == null) {
+                teacherCourseStatistics.setSubjectIdList("");
+            }
+            teacherCourseStatistics.setMonth(startDate);
+        }
+
+        teacherCourseStatisticsDao.batchAdd(teacherCourseStatisticsList);
+    }
 }

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

@@ -1313,7 +1313,7 @@
         SELECT DISTINCT cgsm.music_group_id_ FROM class_group_student_mapper cgsm
         LEFT JOIN music_group mg ON mg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'MUSIC'
         LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'VIP'
-        WHERE cgsm.user_id_ = #{userId} AND cgsm.status_ != 'QUIT' AND (mg.status_ = 'PROGRESS' OR vg.status_ = 2 OR vg.status_=5 OR vg.status_=1)
+        WHERE cgsm.user_id_ = #{userId} AND cgsm.status_ != 'QUIT' AND (mg.status_ = 'PROGRESS' OR vg.group_status_  = 2 OR vg.group_status_ =5 OR vg.group_status_ =1)
         ORDER BY cgsm.music_group_id_
         <include refid="global.limit"/>
     </select>
@@ -1329,7 +1329,7 @@
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         WHERE spo.type_ != 'OTHER' AND spo.music_group_id_ IS NOT NULL
         AND spo.user_id_ = #{userId} AND spo.status_='SUCCESS' AND cgsm.status_ != 'QUIT'
-        AND IF(spo.group_type_ = 'VIP', (vg.status_ = 4 OR vg.status_ = 3 ),0)=0 AND cg.del_flag_ = 0
+        AND IF(spo.group_type_ = 'VIP', (vg.group_status_  = 4 OR vg.group_status_  = 3 ),0)=0 AND cg.del_flag_ = 0
         <include refid="global.limit"/>
     </select>
 
@@ -1340,7 +1340,7 @@
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         WHERE spo.type_ != 'OTHER' AND spo.music_group_id_ IS NOT NULL
         AND spo.user_id_ = #{userId} AND spo.status_='SUCCESS' AND cgsm.status_ != 'QUIT'
-        AND IF(spo.group_type_ = 'VIP', (vg.status_ = 4 OR vg.status_ = 3),0)=0 AND cg.del_flag_ = 0
+        AND IF(spo.group_type_ = 'VIP', (vg.group_status_  = 4 OR vg.group_status_  = 3),0)=0 AND cg.del_flag_ = 0
     </select>
     <select id="countExistRepeatInDateZone" resultType="int">
         SELECT
@@ -2066,7 +2066,7 @@
         SELECT cs.id_ FROM course_schedule cs
         LEFT JOIN vip_group vg ON cs.music_group_id_ = vg.id_
         LEFT JOIN class_group cg ON cs.class_group_id_ = cg.id_
-        WHERE cs.group_type_ = 'VIP' AND vg.status_ = '2' AND cs.del_flag_ = 0 AND cg.del_flag_ = 0
+        WHERE cs.group_type_ = 'VIP' AND vg.group_status_  = '2' AND cs.del_flag_ = 0 AND cg.del_flag_ = 0
         <if test="search != null and search != ''">
             AND (vg.id_ = #{search} OR vg.name_ LIKE CONCAT('%',#{search},'%')
             OR cs.id_ = #{search} OR cs.name_ LIKE CONCAT('%',#{search},'%')

+ 4 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -67,4 +67,8 @@ public interface TaskRemoteService {
 	@GetMapping("task/stopVipGroupWithNoCreate")
 	// 取消达到报名时间未达到报名人数的vip课
 	public void stopVipGroupWithNoCreate();
+
+	@GetMapping("task/teacherCourseStatistic")
+	// 老师课酬统计
+	public void teacherCourseStatistic();
 }

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -85,4 +85,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 	public void stopVipGroupWithNoCreate() {
 		logger.info("取消达到报名时间未达到报名人数的vip课失败");
 	}
+
+	@Override
+	public void teacherCourseStatistic() {
+		logger.info("统计老师课酬失败");
+	}
 }

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/TeacherCourseStatisticsTask.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TeacherCourseStatisticsTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.teacherCourseStatistic();
+	}
+}

+ 9 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -36,6 +36,9 @@ public class TaskController extends BaseController {
 	@Autowired
 	private StudentPaymentOrderService studentPaymentOrderService;
 
+	@Autowired
+	private TeacherCourseStatisticsService teacherCourseStatisticsService;
+
 	@GetMapping("/refreshPaymentFeeStatus")
 	// 刷新付费状态
 	public void refreshPaymentFeeStatus() {
@@ -126,4 +129,10 @@ public class TaskController extends BaseController {
 		studentPaymentOrderService.queryOrderStatus();
 	}
 
+	//统计老师课酬
+	@GetMapping("/teacherCourseStatistic")
+	public void  teacherCourseStatisticsService() throws Exception {
+		teacherCourseStatisticsService.teacherCourseStatistic();
+	}
+
 }