瀏覽代碼

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

zouxuan 5 年之前
父節點
當前提交
ab6c19b3de
共有 19 個文件被更改,包括 382 次插入124 次删除
  1. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleComplaintsDao.java
  2. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleReviewDao.java
  3. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseReviewService.java
  4. 37 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseReviewServiceImpl.java
  5. 4 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  6. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  7. 9 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  8. 2 33
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java
  9. 59 53
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java
  10. 18 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  11. 25 12
      mec-biz/src/main/resources/config/mybatis/CourseScheduleComplaintsMapper.xml
  12. 1 2
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  13. 80 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleReviewMapper.xml
  14. 1 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  15. 4 5
      mec-biz/src/main/resources/config/mybatis/ExtracurricularExercisesMapper.xml
  16. 2 1
      mec-biz/src/main/resources/config/mybatis/StudentMapper.xml
  17. 2 2
      mec-web/src/main/java/com/ym/mec/web/controller/CourseReviewController.java
  18. 87 0
      mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java
  19. 17 0
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherAttendanceController.java

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleComplaintsDao.java

@@ -68,4 +68,12 @@ public interface CourseScheduleComplaintsDao extends BaseDAO<Long, CourseSchedul
      * @param courseScheduleIds
      */
     void delByCourseScheduleIds(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+    /**
+     * 获取课程用户的评价
+     *
+     * @param courseScheduleId
+     * @return
+     */
+    List<CourseScheduleComplaintsDto> findCourseIdComplaints(@Param("courseScheduleId") Long courseScheduleId);
 }

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleReviewDao.java

@@ -120,6 +120,7 @@ public interface CourseScheduleReviewDao extends BaseDAO<Integer, CourseSchedule
 
     /**
      * 线上课评价列表
+     *
      * @param params
      * @return
      */
@@ -127,8 +128,23 @@ public interface CourseScheduleReviewDao extends BaseDAO<Integer, CourseSchedule
 
     /**
      * 线上课评价统计
+     *
      * @param params
      * @return
      */
     Integer countOnlineCourseReviews(Map<String, Object> params);
+
+    /**
+     * vip课评价列表
+     * @param params
+     * @return
+     */
+    List<CourseReviewDto> getVipCourseReviewList(Map<String, Object> params);
+
+    /**
+     * vip课评价统计
+     * @param params
+     * @return
+     */
+    Integer countVipCourseReviews(Map<String, Object> params);
 }

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseReviewService.java

@@ -107,5 +107,11 @@ public interface CourseReviewService extends BaseService<Integer, CourseSchedule
 	 */
 	CourseHomework addHomeWork(Integer courseScheduleId,String content, Date expiryDate);
 
+	/**
+	 * 获取网管课列表
+	 * @param queryInfo
+	 * @return
+	 */
+	PageInfo<CourseReviewDto> getVipCourseReviews(CourseReviewQueryInfo queryInfo);
 
 }

+ 37 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseReviewServiceImpl.java

@@ -274,7 +274,7 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
         TeacherClassHeadInfo teacherClassGroupInfo = getCourseInfoHead(courseScheduleReview.getCourseScheduleId());
         courseScheduleReview.setTeacherName(teacherClassGroupInfo.getBishopTeacher());
 
-        if (courseScheduleReview.getEducationalTeacherId() != null) {
+        if (courseScheduleReview.getEducationalTeacherId() != null && !courseScheduleReview.getEducationalTeacherId().equals(0)) {
             SysUser user = teacherDao.getUser(courseScheduleReview.getEducationalTeacherId());
             courseScheduleReview.setEduTeacherName(user.getRealName());
         }
@@ -282,11 +282,18 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
         ReviewInfoDto reviewInfoDto = new ReviewInfoDto();
         reviewInfoDto.setCourseScheduleReview(courseScheduleReview);
         reviewInfoDto.setTeacherClassHeadInfo(teacherClassGroupInfo);
+        Long studentId = null;
+        if (courseScheduleReview.getStudentId() != null) {
+            studentId = courseScheduleReview.getStudentId().longValue();
+        }
         //学生评价
-        CourseScheduleComplaintsDto courseScheduleComplaint = courseScheduleComplaintsDao.findByUserIdAndCourseId(courseScheduleReview.getStudentId().longValue(), courseScheduleReview.getCourseScheduleId().longValue());
+        CourseScheduleComplaintsDto courseScheduleComplaint = courseScheduleComplaintsDao.findByUserIdAndCourseId(studentId, courseScheduleReview.getCourseScheduleId().longValue());
         if (courseScheduleComplaint != null) {
             List<CourseScheduleComplaintsDto> courseScheduleComplaints = new ArrayList<>();
             courseScheduleComplaints.add(courseScheduleComplaint);
+            if (courseScheduleReview.getStudentId() == null || courseScheduleReview.getStudentId().equals(0)) {
+                courseScheduleComplaints = courseScheduleComplaintsDao.findCourseIdComplaints(courseScheduleReview.getCourseScheduleId().longValue());
+            }
             reviewInfoDto.setCourseScheduleComplaints(courseScheduleComplaints);
         }
         return reviewInfoDto;
@@ -603,4 +610,32 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
 
         return courseHomework;
     }
+
+    @Override
+    public PageInfo<CourseReviewDto> getVipCourseReviews(CourseReviewQueryInfo queryInfo) {
+        PageInfo<CourseReviewDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<CourseReviewDto> dataList = null;
+        int count = courseScheduleReviewDao.countVipCourseReviews(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = courseScheduleReviewDao.getVipCourseReviewList(params);
+            if (dataList != null && dataList.size() > 0) {
+                Set<Integer> organIds = dataList.stream().map(CourseReviewDto::getOrganId).collect(Collectors.toSet());
+                Map<Integer, String> organNames = MapUtil.convertMybatisMap(organizationDao.findOrganNameMapList(organIds));
+                dataList.forEach(e -> {
+                    e.setOrganName(organNames.get(e.getOrganId()));
+                });
+            }
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+
+    }
 }

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -202,7 +202,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void practiceTeacherSalarySettlement() {
-        int days = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.VIP_APPEAL_DAYS_RANGE).getParanValue());
+//        int days = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.VIP_APPEAL_DAYS_RANGE).getParanValue());
+        int days = 0;
         //获取教师未结算课程记录
         Date now = new Date();
         List<CourseScheduleTeacherSalary> someDayAgoTeacherCourseSalaryNoSettlement = courseScheduleTeacherSalaryDao.findTeacherCourseSalaryNoSettlement(days,GroupType.PRACTICE.getCode());
@@ -282,8 +283,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void teacherSalarySettlement() {
-        int days = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.VIP_APPEAL_DAYS_RANGE).getParanValue());
-
+//        int days = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.VIP_APPEAL_DAYS_RANGE).getParanValue());
+        int days = 0;
         BigDecimal percent = new BigDecimal(10);
 
         //获取教师未结算课程记录

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

@@ -99,9 +99,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = null;
 				// 创建缴费明细
 				for (MusicGroupStudentFee mgsf : musicGroupStudentFeeList) {
-					if (mgsf.getPaymentStatus() != PaymentStatus.PAID_COMPLETED) {
+					/*if (mgsf.getPaymentStatus() != PaymentStatus.PAID_COMPLETED) {
 						continue;
-					}
+					}*/
 					musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
 					musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalender.getId());
 					musicGroupPaymentCalenderDetail.setCreateTime(date);
@@ -227,9 +227,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				Set<Integer> studentIds = new HashSet<Integer>();
 				// 创建缴费明细
 				for (MusicGroupStudentFee mgsf : musicGroupStudentFeeList) {
-					if (mgsf.getPaymentStatus() != PaymentStatus.PAID_COMPLETED) {
+					/*if (mgsf.getPaymentStatus() != PaymentStatus.PAID_COMPLETED) {
 						continue;
-					}
+					}*/
 					musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
 					musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(mgpc.getId());
 					musicGroupPaymentCalenderDetail.setCreateTime(date);

+ 9 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -287,7 +287,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
 
         OrderTypeEnum type = OrderTypeEnum.SPORADIC;
-        String receiver = "c419";
+        String receiver = "sdaya";
 
         Integer userId = sporadicPayDto.getUserId();
         String orderNo = idGeneratorService.generatorId("payment") + "";
@@ -581,8 +581,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
 
         String orderSubject = "乐团报名";
+        String receiver = "daya";
         if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType().equals(CooperationOrgan.OwnershipType.COOPERATION)) {
             orderSubject = "乐团相关费用";
+            receiver = "tq";
         }
         String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
         Map payMap = payService.getPayMap(
@@ -594,7 +596,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 orderSubject,
                 userId,
                 classFee,
-                musicGroup.getOrganId()
+                musicGroup.getOrganId(),
+                receiver
         );
 
         Map<String, BigDecimal> routingFee = (Map<String, BigDecimal>) payMap.get("routingFee");
@@ -819,8 +822,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             }
         }
         String orderSubject = "乐团报名";
+        String receiver = "daya";
         if (musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType().equals(CooperationOrgan.OwnershipType.COOPERATION)) {
             orderSubject = "乐团相关费用";
+            receiver = "tq";
         }
         String baseApiUrl = sysConfigDao.findConfigValue("base_api_url");
         Map payMap = payService.getPayMap(
@@ -832,7 +837,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 orderSubject,
                 userId,
                 classFee,
-                musicGroup.getOrganId()
+                musicGroup.getOrganId(),
+                receiver
         );
 
         Map<String, BigDecimal> routingFee = (Map<String, BigDecimal>) payMap.get("routingFee");

+ 2 - 33
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -58,12 +58,6 @@ public class PayServiceImpl implements PayService {
     public Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, Integer userId) throws Exception {
 
         String company = "daya";
-        if (userId != null) {
-            MusicGroup musicGroup = musicGroupDao.findUserMusicGroup(userId);
-            if (musicGroup != null && musicGroup.getOwnershipType().equals(CooperationOrgan.OwnershipType.COOPERATION)) {
-                company = "yaming";
-            }
-        }
 
         //支付通道决策
         Map<String, Object> unionPay = new HashMap<>();
@@ -92,26 +86,6 @@ public class PayServiceImpl implements PayService {
     @Override
     public Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, Integer userId, Map<String, BigDecimal> fee, Integer organId) throws Exception {
         String company = "daya";
-        if (userId != null) {
-            MusicGroup musicGroup = musicGroupDao.findUserMusicGroup(userId);
-            if (musicGroup != null && musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType().equals(CooperationOrgan.OwnershipType.COOPERATION)) {
-                company = "yaming";
-            }
-        }
-        //深圳收到深圳大雅
-        Set<Integer> sDaYaOrganIds = new HashSet<>();
-        sDaYaOrganIds.add(16);
-        if(sDaYaOrganIds.contains(organId)){
-            company = "sdaya";
-        }
-        //广州,上海分部收到武汉大雅
-        Set<Integer> wDaYaOrganIds = new HashSet<>();
-        wDaYaOrganIds.add(3);
-        wDaYaOrganIds.add(15);
-        if(wDaYaOrganIds.contains(organId)){
-            company = "daya";
-        }
-
         //支付通道决策
         Map<String, Object> unionPay = new HashMap<>();
         Map<String, BigDecimal> routingFee = getRoutingFee(company, amount, fee, organId);
@@ -153,15 +127,10 @@ public class PayServiceImpl implements PayService {
     @Override
     public Map<String, Object> getPayMap(BigDecimal amount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, Integer userId, Map<String, BigDecimal> fee, Integer organId, String receiver) throws Exception {
         String company = "daya";
-        if (userId != null) {
-            MusicGroup musicGroup = musicGroupDao.findUserMusicGroup(userId);
-            if (musicGroup != null && musicGroup.getOwnershipType() != null && musicGroup.getOwnershipType().equals(CooperationOrgan.OwnershipType.COOPERATION)) {
-                company = "yaming";
-            }
-        }
+        //指定收款方
         Set<String> companies = new HashSet<>();
         companies.add("sdaya");
-        companies.add("c419");
+        companies.add("tq");
         if (companies.contains(receiver)) {
             company = receiver;
             receiver = null;

+ 59 - 53
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServeServiceImpl.java

@@ -56,6 +56,7 @@ public class StudentServeServiceImpl implements StudentServeService {
         if(StringUtils.isNotBlank(monday)){
             nowDate=LocalDate.parse(monday, DateUtil.dateFormatter);
         }
+
         LocalDate monDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue());
         LocalDate sunDayDate = nowDate.with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.SUNDAY.getValue());
         Date nextMonday = Date.from(sunDayDate.plusDays(1).atStartOfDay(DateUtil.zoneId).toInstant());
@@ -74,6 +75,7 @@ public class StudentServeServiceImpl implements StudentServeService {
         //本周无课学员编号集合
         Set<Integer> noClassStudentIds=new HashSet<>();
         for (Map.Entry<Integer, List<StudentServeDto>> studentCoursesEntry : studentCoursesMap.entrySet()) {
+
             List<StudentServeDto> haveCourseStudents = studentCoursesEntry.getValue().stream().filter(e -> Objects.nonNull(e.getCourseStartTime())).collect(Collectors.toList());
             if(CollectionUtils.isEmpty(haveCourseStudents)){
                 noClassStudentIds.add(studentCoursesEntry.getKey());
@@ -84,7 +86,7 @@ public class StudentServeServiceImpl implements StudentServeService {
                 noClassStudentIds.add(studentCoursesEntry.getKey());
                 continue;
             }
-            if(studentServeDto.getCourseStartTime().after(nextMonday)){
+            if(!studentServeDto.getCourseStartTime().before(nextMonday)){
                 dontServeInCurrentWeekStudentIds.add(studentCoursesEntry.getKey());
                 continue;
             }
@@ -98,16 +100,20 @@ public class StudentServeServiceImpl implements StudentServeService {
             }
         }
 
+        Set<Integer> allServeStudentIds=new HashSet<>();
+        allServeStudentIds.addAll(haveClassStudentIds);
+        allServeStudentIds.addAll(noClassStudentIds);
+
         Map<Integer, List<StudentServeCourseHomeworkDto>> studentHomeworkMap=new HashMap<>();
         Map<Integer, List<ExtracurricularExercisesReply>> studentExercisesMap=new HashMap<>();
 
-        if (!CollectionUtils.isEmpty(haveClassStudentIds)){
-            List<StudentServeCourseHomeworkDto> studentHomeworks = studentCourseHomeworkDao.findStudentHomeworkWithCourseDateRange(monDayDate.toString(), sunDayDate.toString(), new ArrayList<>(haveClassStudentIds));
+        if (!CollectionUtils.isEmpty(allServeStudentIds)){
+            List<StudentServeCourseHomeworkDto> studentHomeworks = studentCourseHomeworkDao.findStudentHomeworkWithCourseDateRange(monDayDate.toString(), sunDayDate.toString(), new ArrayList<>(allServeStudentIds));
             studentHomeworkMap = studentHomeworks.stream().filter(h -> DateUtil.daysBetween(h.getCourseStartTime(), h.getHomeworkCreateTime())<3).collect(Collectors.groupingBy(StudentServeCourseHomeworkDto::getUserId));
         }
 
-        if(!CollectionUtils.isEmpty(noClassStudentIds)){
-            List<ExtracurricularExercisesReply> studentExercises = extracurricularExercisesReplyDao.getStudentExercisesWithTimeZone(monDayDate.toString(), sunDayDate.toString(), new ArrayList<>(noClassStudentIds));
+        if(!CollectionUtils.isEmpty(allServeStudentIds)){
+            List<ExtracurricularExercisesReply> studentExercises = extracurricularExercisesReplyDao.getStudentExercisesWithTimeZone(monDayDate.toString(), sunDayDate.toString(), new ArrayList<>(allServeStudentIds));
             studentExercisesMap = studentExercises.stream().collect(Collectors.groupingBy(ExtracurricularExercisesReply::getUserId));
         }
 
@@ -122,67 +128,63 @@ public class StudentServeServiceImpl implements StudentServeService {
             studentExtracurricularExercisesSituation.setStudentId(studentCoursesEntry.getKey());
             studentExtracurricularExercisesSituation.setTeacherId(studentCoursesEntry.getValue().get(0).getTeacherId());
             studentExtracurricularExercisesSituation.setExpectExercisesNum(1);
+            studentExtracurricularExercisesSituation.setActualExercisesNum(0);
+            studentExtracurricularExercisesSituation.setExercisesReplyNum(0);
+            studentExtracurricularExercisesSituation.setExercisesMessageNum(0);
+            studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(0);
             studentExtracurricularExercisesSituation.setWeekOfYear(nowDate.get(DateUtil.weekFields.weekOfYear()));
             studentExtracurricularExercisesSituation.setMonday(DateUtil.stringToDate(monDayDate.toString(), "yyyy-MM-dd"));
             studentExtracurricularExercisesSituation.setSunday(DateUtil.stringToDate(sunDayDate.toString(), "yyyy-MM-dd"));
 
             if(haveClassStudentIds.contains(studentCoursesEntry.getKey())){
                 studentExtracurricularExercisesSituation.setServeType("HOMEWORK");
-                List<StudentServeCourseHomeworkDto> studentHomeworks = studentHomeworkMap.get(studentCoursesEntry.getKey());
-                if(CollectionUtils.isEmpty(studentHomeworks)){
-                    studentExtracurricularExercisesSituation.setActualExercisesNum(0);
-                    studentExtracurricularExercisesSituation.setExercisesReplyNum(0);
-                    studentExtracurricularExercisesSituation.setExercisesMessageNum(0);
-                    studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(0);
-                    results.add(studentExtracurricularExercisesSituation);
-                    continue;
-                }else{
-                    studentExtracurricularExercisesSituation.setActualExercisesNum(1);
-                    long replyNum = studentHomeworks.stream().filter(e -> YesOrNoEnum.YES.equals(e.getStatus())).count();
-                    studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
-                    long haveSubmitTimes = studentHomeworks.stream().filter(e -> Objects.nonNull(e.getSubmitTime())).count();
-                    if(replyNum>0&&haveSubmitTimes>0){
-                        Date lastSubmitTime = studentHomeworks.stream().filter(e->Objects.nonNull(e.getSubmitTime())).max(Comparator.comparing(StudentServeCourseHomeworkDto::getSubmitTime)).get().getSubmitTime();
-                        studentExtracurricularExercisesSituation.setLastSubmitTime(lastSubmitTime);
-                    }
-                    int exercisesMessageNum=0;
-                    int exercisesMessageTimelyNum=0;
-                    for (StudentServeCourseHomeworkDto studentHomework : studentHomeworks) {
-                        if(!YesOrNoEnum.YES.equals(studentHomework.getStatus())){
-                            continue;
-                        }
-                        if(!YesOrNoEnum.YES.equals(studentHomework.getIsReplied())){
-                            continue;
-                        }
-                        exercisesMessageNum+=1;
-                        if(new Integer(1).equals(studentHomework.getIsRepliedTimely())){
-                            exercisesMessageTimelyNum+=1;
-                        }
-                    }
-                    studentExtracurricularExercisesSituation.setExercisesMessageNum(exercisesMessageNum>0?1:0);
-                    studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
-                    results.add(studentExtracurricularExercisesSituation);
-                }
             }
 
             if(noClassStudentIds.contains(studentCoursesEntry.getKey())){
                 studentExtracurricularExercisesSituation.setServeType("EXERCISE");
-                List<ExtracurricularExercisesReply> studentExercises = studentExercisesMap.get(studentCoursesEntry.getKey());
-                if(CollectionUtils.isEmpty(studentExercises)){
-                    studentExtracurricularExercisesSituation.setActualExercisesNum(0);
-                    studentExtracurricularExercisesSituation.setExercisesReplyNum(0);
-                    studentExtracurricularExercisesSituation.setExercisesMessageNum(0);
-                    studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(0);
-                    results.add(studentExtracurricularExercisesSituation);
-                    continue;
+            }
+
+            List<StudentServeCourseHomeworkDto> studentHomeworks = studentHomeworkMap.get(studentCoursesEntry.getKey());
+            if(!CollectionUtils.isEmpty(studentHomeworks)){
+                studentExtracurricularExercisesSituation.setActualExercisesNum(1);
+                long replyNum = studentHomeworks.stream().filter(e -> YesOrNoEnum.YES.equals(e.getStatus())).count();
+                studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
+                long haveSubmitTimes = studentHomeworks.stream().filter(e -> Objects.nonNull(e.getSubmitTime())).count();
+                if(replyNum>0&&haveSubmitTimes>0){
+                    Date lastSubmitTime = studentHomeworks.stream().filter(e->Objects.nonNull(e.getSubmitTime())).max(Comparator.comparing(StudentServeCourseHomeworkDto::getSubmitTime)).get().getSubmitTime();
+                    studentExtracurricularExercisesSituation.setLastSubmitTime(lastSubmitTime);
                 }
+                int exercisesMessageNum=0;
+                int exercisesMessageTimelyNum=0;
+                for (StudentServeCourseHomeworkDto studentHomework : studentHomeworks) {
+                    if(!YesOrNoEnum.YES.equals(studentHomework.getStatus())){
+                        continue;
+                    }
+                    if(!YesOrNoEnum.YES.equals(studentHomework.getIsReplied())){
+                        continue;
+                    }
+                    exercisesMessageNum+=1;
+                    if(new Integer(1).equals(studentHomework.getIsRepliedTimely())){
+                        exercisesMessageTimelyNum+=1;
+                    }
+                }
+                studentExtracurricularExercisesSituation.setExercisesMessageNum(exercisesMessageNum>0?1:0);
+                studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
+            }
+
+            List<ExtracurricularExercisesReply> studentExercises = studentExercisesMap.get(studentCoursesEntry.getKey());
+            if(!CollectionUtils.isEmpty(studentExercises)){
                 studentExtracurricularExercisesSituation.setActualExercisesNum(1);
                 long replyNum = studentExercises.stream().filter(e -> e.getStatus()==1).count();
-                studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
+                if(studentExtracurricularExercisesSituation.getExercisesReplyNum()<=0){
+                    studentExtracurricularExercisesSituation.setExercisesReplyNum(replyNum>0?1:0);
+                }
                 long haveSubmitTimes = studentExercises.stream().filter(e->Objects.nonNull(e.getSubmitTime())).count();
                 if(replyNum>0&&haveSubmitTimes>0){
                     Date lastSubmitTime = studentExercises.stream().filter(e->Objects.nonNull(e.getSubmitTime())).max(Comparator.comparing(ExtracurricularExercisesReply::getSubmitTime)).get().getSubmitTime();
-                    studentExtracurricularExercisesSituation.setLastSubmitTime(lastSubmitTime);
+                    if(Objects.isNull(studentExtracurricularExercisesSituation.getLastSubmitTime())||lastSubmitTime.after(studentExtracurricularExercisesSituation.getLastSubmitTime())){
+                        studentExtracurricularExercisesSituation.setLastSubmitTime(lastSubmitTime);
+                    }
                 }
                 int exercisesMessageNum=0;
                 int exercisesMessageTimelyNum=0;
@@ -198,10 +200,14 @@ public class StudentServeServiceImpl implements StudentServeService {
                         exercisesMessageTimelyNum+=1;
                     }
                 }
-                studentExtracurricularExercisesSituation.setExercisesMessageNum(exercisesMessageNum>0?1:0);
-                studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
-                results.add(studentExtracurricularExercisesSituation);
+                if(studentExtracurricularExercisesSituation.getExercisesMessageNum()<=0){
+                    studentExtracurricularExercisesSituation.setExercisesMessageNum(exercisesMessageNum>0?1:0);
+                }
+                if(studentExtracurricularExercisesSituation.getExercisesMessageTimelyNum()<=0){
+                    studentExtracurricularExercisesSituation.setExercisesMessageTimelyNum(exercisesMessageTimelyNum>0?1:0);
+                }
             }
+            results.add(studentExtracurricularExercisesSituation);
         }
 
         studentExtracurricularExercisesSituationDao.deleteByMonday(monDayDate.toString());

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

@@ -662,7 +662,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		PageInfo<TeacherAttendanceComplaintsDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
-
 		List<TeacherAttendanceComplaintsDto> dataList = null;
 		int count = teacherAttendanceDao.countTeacherAttendanceComplaints(params);
 		if (count > 0) {
@@ -689,17 +688,32 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			throw new BizException("考勤信息不存在");
 		}
 		if(teacherAttendance.getComplaintsStatus() == ComplaintsStatusEnum.WAIT){
-			if(signInStatus != null){
+			StringBuffer remark = new StringBuffer("同意异常考勤申述");
+			CourseSchedule courseSchedule = courseScheduleDao.get(teacherAttendance.getCourseScheduleId());
+			String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
+			if(signInStatus != null && teacherAttendance.getSignInStatus() != YesOrNoEnum.YES){
+				if(teacherAttendance.getSignInTime() != null){
+					remark.append("  原签到时间: ").append(DateUtil.format(teacherAttendance.getSignInTime(),DateUtil.EXPANDED_DATE_TIME_FORMAT));
+				}
+				String startTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+				Date date = DateUtil.stringToDate(classDate + ' ' + startTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+				teacherAttendance.setSignInTime(DateUtil.addMinutes(date,-1));
 				teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
 			}
-			if(signOutStatus != null){
+			if(signOutStatus != null && teacherAttendance.getSignOutStatus() != YesOrNoEnum.YES){
+				if(teacherAttendance.getSignOutTime() != null){
+					remark.append("  原签退时间: ").append(DateUtil.format(teacherAttendance.getSignOutTime(),DateUtil.EXPANDED_DATE_TIME_FORMAT));
+				}
+				String endTime = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+				Date date = DateUtil.stringToDate(classDate + ' ' + endTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+				teacherAttendance.setSignOutTime(date);
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
 			}
 			teacherAttendance.setDisposeContent(content);
 			teacherAttendance.setOperator(user.getId());
 			teacherAttendance.setComplaintsStatus(ComplaintsStatusEnum.PASS);
+			teacherAttendance.setRemark(remark.toString());
 			teacherAttendanceDao.update(teacherAttendance);
-			CourseSchedule courseSchedule = courseScheduleDao.get(teacherAttendance.getCourseScheduleId());
 			String format = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
 			Map<Integer, String> receivers = new HashMap<>(1);
 			receivers.put(user.getId(),user.getId().toString());

+ 25 - 12
mec-biz/src/main/resources/config/mybatis/CourseScheduleComplaintsMapper.xml

@@ -5,7 +5,7 @@
 不要修改此文件。所有改动将在下次重新自动生成时丢失。
 -->
 <mapper namespace="com.ym.mec.biz.dal.dao.CourseScheduleComplaintsDao">
-	
+
 	<resultMap type="com.ym.mec.biz.dal.entity.CourseScheduleComplaints" id="CourseScheduleComplaints">
 		<result column="id_" property="id" />
 		<result column="user_id_" property="userId" />
@@ -20,27 +20,27 @@
 		<result column="update_time_" property="updateTime" />
 		<result column="score_" property="score" />
 	</resultMap>
-	
+
 	<!-- 根据主键查询一条记录 -->
 	<select id="get" resultMap="CourseScheduleComplaints" >
-		SELECT * FROM course_schedule_complaints WHERE id_ = #{id} 
+		SELECT * FROM course_schedule_complaints WHERE id_ = #{id}
 	</select>
-	
+
 	<!-- 全查询 -->
 	<select id="findAll" resultMap="CourseScheduleComplaints">
 		SELECT * FROM course_schedule_complaints ORDER BY id_
 	</select>
-	
+
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleComplaints" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		<!--
-		<selectKey resultClass="int" keyProperty="id" > 
-		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
+		<selectKey resultClass="int" keyProperty="id" >
+		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
 		</selectKey>
 		-->
 		INSERT INTO course_schedule_complaints (id_,user_id_,course_schedule_id_,reason_,status_,wf_process_id_,wf_order_id_,create_time_,update_time_,teacher_liability_ratio_,student_liability_ratio_,score_) VALUES(#{id},#{userId},#{courseScheduleId},#{reason},#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{wfProcessId},#{wfOrderId},now(),now(),#{teacherLiabilityRatio},#{studentLiabilityRatio},#{score})
 	</insert>
-	
+
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.ym.mec.biz.dal.entity.CourseScheduleComplaints">
 		UPDATE course_schedule_complaints
@@ -80,10 +80,10 @@
 			</if>
 		</set> WHERE id_ = #{id}
 	</update>
-	
+
 	<!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
-		DELETE FROM course_schedule_complaints WHERE id_ = #{id} 
+		DELETE FROM course_schedule_complaints WHERE id_ = #{id}
 	</delete>
     <delete id="delByCourseScheduleId">
 		DELETE FROM course_schedule_complaints WHERE course_schedule_id_ = #{courseScheduleId}
@@ -99,7 +99,7 @@
 	<select id="queryPage" resultMap="CourseScheduleComplaints" parameterType="map">
 		SELECT * FROM course_schedule_complaints WHERE score_ &lt;= 2 ORDER BY id_ <include refid="global.limit"/>
 	</select>
-	
+
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM course_schedule_complaints
@@ -131,7 +131,15 @@
 	<select id="findByUserIdAndCourseId" resultMap="CourseScheduleComplaintsDtoMap">
 		SELECT su.username_,csc.reason_,csc.score_,su.avatar_ FROM course_schedule_complaints csc
 		LEFT JOIN sys_user su on csc.user_id_ = su.id_
-		WHERE user_id_=#{userId} AND course_schedule_id_=#{courseScheduleId} LIMIT 1
+		<where>
+			<if test="userId != null">
+				user_id_=#{userId}
+			</if>
+			<if test="courseScheduleId != null">
+				AND course_schedule_id_=#{courseScheduleId}
+			</if>
+		</where>
+		LIMIT 1
 	</select>
 
 	<select id="findByCourseIdAndUserId" resultMap="CourseScheduleComplaints">
@@ -147,4 +155,9 @@
 			#{id}
 		</foreach>
 	</select>
+	<select id="findCourseIdComplaints" resultMap="CourseScheduleComplaintsDtoMap">
+		SELECT su.username_,csc.reason_,csc.score_,su.avatar_ FROM course_schedule_complaints csc
+		LEFT JOIN sys_user su on csc.user_id_ = su.id_ WHERE
+		course_schedule_id_=#{courseScheduleId}
+	</select>
 </mapper>

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

@@ -68,7 +68,7 @@
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="attendance_status_" property="attendanceStatus"
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
-        <result column="complaint_status_" property="complaintStatus"/>
+        <result column="complaint_status_" property="complaintsStatus"/>
         <result column="student_id_" property="studentId"/>
     </resultMap>
 
@@ -721,7 +721,6 @@
         WHERE (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
           AND cs.class_date_ = DATE_FORMAT(#{classDate}, '%Y%m%d')
           AND csts.user_id_ = #{teacherId}
-          AND cg.del_flag_ = 0
           AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) &lt; NOW()
         ORDER BY start_class_time_
     </select>

+ 80 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleReviewMapper.xml

@@ -132,6 +132,7 @@
     <resultMap id="CourseReviewDto" type="com.ym.mec.biz.dal.dto.CourseReviewDto">
         <id column="id_" jdbcType="INTEGER" property="id"/>
         <result column="subject_id_" jdbcType="INTEGER" property="subjectId"/>
+        <result column="subject_name_" jdbcType="INTEGER" property="subjectName"/>
         <result column="organ_id_" jdbcType="INTEGER" property="organId"/>
         <result column="class_date_" jdbcType="DATE" property="classDate"/>
         <result column="course_name_" jdbcType="VARCHAR" property="courseName"/>
@@ -474,4 +475,83 @@
             </if>
         </where>
     </sql>
+
+    <select id="getVipCourseReviewList" resultMap="CourseReviewDto">
+        SELECT cs.id_,cs.actual_teacher_id_ teacher_id ,cs.class_date_, (SELECT group_concat(name_) FROM subject sb WHERE FIND_IN_SET(id_,cg.subject_id_list_)) AS
+        subject_name_ ,vg.organ_id_,cs.name_
+        course_name_,su.real_name_ teacher_name_,edsu.real_name_
+        edu_teacher_name_,csr.id_ review_id_,csr.hand_homework_,csr.course_review_,csr.teaching_material_,csr.pronunciation_,csr.tempo_,
+        csr.music_theory_,csr.song_,csr.memo_,csr.create_time_,csr.has_liaison_,csr.update_time_,
+        CASE WHEN ch.id_ IS NULL THEN 0 ELSE 1 END assign_homework_
+        FROM course_schedule cs
+        LEFT JOIN vip_group vg ON cs.music_group_id_ = vg.id_ AND cs.group_type_='VIP'
+        LEFT JOIN class_group cg ON cg.music_group_id_=vg.id_ AND cg.group_type_ = 'VIP'
+        LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_
+        LEFT JOIN sys_user edsu ON vg.educational_teacher_id_ = edsu.id_
+        LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
+        LEFT JOIN course_homework ch on ch.course_schedule_id_ = cs.id_
+        <include refid="vipGroupReviewsQueryCondition"/>
+        ORDER BY cs.class_date_ DESC
+        <include refid="global.limit"/>
+    </select>
+
+    <select id="countVipCourseReviews" resultType="java.lang.Integer">
+        SELECT count(*) FROM course_schedule cs
+        LEFT JOIN vip_group vg ON cs.music_group_id_ = vg.id_ AND cs.group_type_='VIP'
+        LEFT JOIN class_group cg ON cg.music_group_id_=vg.id_ AND cg.group_type_ = 'VIP'
+        LEFT JOIN course_schedule_review csr on cs.id_ = csr.course_schedule_id_
+        LEFT JOIN course_homework ch on ch.course_schedule_id_ = cs.id_
+        <include refid="vipGroupReviewsQueryCondition"/>
+    </select>
+
+    <sql id="vipGroupReviewsQueryCondition">
+        <where>
+            AND vg.id_ > 0 AND cs.group_type_='VIP' AND cs.status_='OVER' AND (cs.del_flag_ = 0 OR cs.del_flag_ IS NULL)
+            <if test="search!=null and search!=''">
+                AND (cs.name_ LIKE CONCAT('%',#{search},'%') OR cs.id_= #{search})
+            </if>
+            <if test="organId != null">
+                AND FIND_IN_SET(vg.organ_id_,#{organId})
+            </if>
+            <if test="teacherId != null">
+                AND cs.actual_teacher_id_=#{teacherId}
+            </if>
+            <if test="eduTeacherId != null">
+                AND vg.educational_teacher_id_=#{eduTeacherId}
+            </if>
+            <if test='hasReview !=null and hasReview=="1"'>
+                AND csr.id_ > 0
+            </if>
+            <if test='hasReview !=null and hasReview=="0"'>
+                AND csr.id_ IS NULL
+            </if>
+            <if test='hasHandHomework !=null and hasHandHomework=="1"'>
+                AND csr.hand_homework_ = 1
+            </if>
+            <if test='hasHandHomework !=null and hasHandHomework=="0"'>
+                AND csr.hand_homework_ IS NULL
+            </if>
+            <if test="assignHomework != null and assignHomework == 1">
+                AND ch.id_>0
+            </if>
+            <if test="assignHomework != null and assignHomework ==0">
+                AND ch.id_ IS NULL
+            </if>
+            <if test='hasLiaison !=null and hasLiaison=="1"'>
+                AND csr.has_liaison_ = 1
+            </if>
+            <if test='hasLiaison !=null and hasLiaison=="0"'>
+                AND (csr.has_liaison_ = 0 OR csr.has_liaison_ IS NULL)
+            </if>
+            <if test="courseReview != null">
+                AND csr.course_review_=#{courseReview}
+            </if>
+            <if test="startTime !=null">
+                <![CDATA[AND cs.class_date_ >= #{startTime} ]]>
+            </if>
+            <if test="endTime !=null">
+                <![CDATA[AND cs.class_date_ <= #{endTime} ]]>
+            </if>
+        </where>
+    </sql>
 </mapper>

+ 1 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -895,6 +895,7 @@
 			AND csts.settlement_time_ IS NOT NULL
 			AND csts.user_id_ = #{teacherId}
 			AND DATE_FORMAT( cs.class_date_, '%Y' ) = #{year}
+			AND csts.confirm_status_ IS NOT NULL
 		GROUP BY DATE_FORMAT( cs.class_date_, '%Y-%m' )
 	</select>
 	<select id="findTeacherSalaryIdsWithMonth" resultType="java.lang.Long">

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

@@ -161,7 +161,7 @@
 		ORDER BY create_time_ DESC LIMIT 1
 	</select>
     <select id="findNoExercisesStudentsInThisWeekWithTeacher"
-            resultType="com.ym.mec.biz.dal.dto.SimpleUserDto">
+            resultType="com.ym.mec.biz.dal.dto.BasicUserDto">
 		SELECT
 			su.id_ userId,
 			su.username_ name,
@@ -169,16 +169,15 @@
 			GROUP_CONCAT(sub.name_) subjectName
 		FROM
 			student_extracurricular_exercises_situation_ sees
-			LEFT JOIN extracurricular_exercises_reply eer ON sees.student_id_ = eer.user_id_
-			AND DATE_FORMAT( eer.create_time_, '%Y-%m-%d' ) &gt;= #{startDate}
 			LEFT JOIN student stu ON stu.user_id_ = sees.student_id_
 			LEFT JOIN sys_user su ON su.id_ = sees.student_id_
 			LEFT JOIN `subject` sub ON FIND_IN_SET( sub.id_, stu.subject_id_list_ )
 		WHERE
 			sees.monday_ = #{startDate}
 			AND sees.teacher_id_ = #{teacherId}
-			AND eer.id_ IS NULL
-			<if test="search!=null">
+			AND sees.actual_exercises_num_ = 0
+			AND sees.serve_type_ = 'EXERCISE'
+		<if test="search!=null">
 				AND (su.username_ LIKE CONCAT('%', #{search}, '%') OR su.phone_ LIKE CONCAT(#{search}, '%'))
 			</if>
 		GROUP BY su.id_

+ 2 - 1
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -395,10 +395,11 @@
             s.teacher_id_,
             cs.group_type_,
             cs.teach_mode_,
-            CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) course_start_time_
+            IF(CONCAT( cs.class_date_, ' ', cs.end_class_time_ )&lt;NOW() AND (sa.status_ != 'NORMAL' OR sa.status_ IS NULL), NULL, cs.class_date_) course_start_time_
         FROM
             student s
             LEFT JOIN course_schedule_student_payment cssp ON cssp.user_id_ = s.user_id_
+	        LEFT JOIN student_attendance sa ON cssp.course_schedule_id_=sa.course_schedule_id_ AND sa.user_id_=cssp.user_id_
             LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
             AND cs.group_type_ IN ('VIP', 'PRACTICE')
             AND CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) > #{monday}

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/CourseReviewController.java

@@ -82,7 +82,7 @@ public class CourseReviewController extends BaseController {
         return succeed(courseReviewService.getStuAndTeaReview(courseId));
     }
 
-    @ApiOperation(value = "网管课课程评论管理")
+    @ApiOperation(value = "VIP课课程评论管理")
     @GetMapping("getVipGroup")
     @PreAuthorize("@pcs.hasPermissions('courseReview/getVipGroup')")
     public Object getVipGroup(CourseReviewQueryInfo queryInfo) {
@@ -103,7 +103,7 @@ public class CourseReviewController extends BaseController {
                 }
             }
         }
-        return succeed(courseReviewService.findPracticeGroupReviews(queryInfo));
+        return succeed(courseReviewService.getVipCourseReviews(queryInfo));
     }
 
 }

+ 87 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -1449,4 +1449,91 @@ public class ExportController extends BaseController {
             }
         }
     }
+
+    @ApiOperation(value = "vip评论列表导出")
+    @RequestMapping("export/vipCourseReviews")
+    @PreAuthorize("@pcs.hasPermissions('export/vipCourseReviews')")
+    public void vipCourseReviews(CourseReviewQueryInfo queryInfo, HttpServletResponse response) throws IOException {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            queryInfo.setOrganId(employee.getOrganIdList());
+        }
+        queryInfo.setIsExport(1);
+        queryInfo.setRows(99999);
+        PageInfo<CourseReviewDto> practiceGroupReviews = courseReviewService.getVipCourseReviews(queryInfo);
+        if (practiceGroupReviews.getTotal() <= 0) {
+            response.setStatus(500);
+            response.setContentType("Content-Type: application/json;charset=UTF-8");
+            response.getOutputStream().write("{\"data\": null, \"code\": 500, \"status\": false, \"msg\": \"没有可导出的记录\"}".getBytes());
+            response.flushBuffer();
+            return;
+        }
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            for (CourseReviewDto row : practiceGroupReviews.getRows()) {
+                row.setClassDateStr(DateUtil.dateToString(row.getClassDate(), "yyyy-MM-dd"));
+                if (row.getHandHomework() != null && row.getHandHomework() > 0) {
+                    row.setHandHomeworkStr("是");
+                } else {
+                    row.setHandHomeworkStr("否");
+                }
+                if (row.getHasLiaison() != null && row.getHasLiaison().equals("1")) {
+                    row.setHasLiaison("是");
+                } else {
+                    row.setHasLiaison("否");
+                }
+                if (row.getCreateTime() != null) {
+                    row.setCreateTimeStr(DateUtil.dateToString(row.getCreateTime(), "yyyy-MM-dd"));
+                }
+                if (row.getPronunciation() != null) {
+                    row.setPronunciationStr(row.getPronunciation() + "星");
+                }
+                if (row.getTempo() != null) {
+                    row.setTempoStr(row.getTempo() + "星");
+                }
+                if (row.getMusicTheory() != null) {
+                    row.setMusicTheoryStr(row.getMusicTheory() + "星");
+                }
+                if (row.getHomeWorkReplied() != null && row.getHomeWorkReplied().equals("1")) {
+                    row.setHomeWorkReplied("已回复");
+                } else if (row.getHandHomework() != null && row.getHandHomework() > 0) {
+                    row.setHomeWorkReplied("未回复");
+                } else {
+                    row.setHomeWorkReplied(null);
+                }
+                if (row.getAttendanceId() != null) {
+                    row.setAttendanceStr("是");
+                } else {
+                    row.setAttendanceStr("否");
+                }
+                if(new Integer(1).equals(row.getAssignHomework())){
+                    row.setAssignHomeworkStr("是");
+                }else{
+                    row.setAssignHomeworkStr("否");
+                }
+            }
+
+            String[] header = {"分部", "上课日期", "课程编号", "课程班名称", "老师", "教材内容", "发音", "节奏", "乐理", "曲目", "评价备注", "回访日期(布置作业)", "是否布置作业", "是否提交作业", "教务老师", "教务评价"};
+            String[] body = {"organName", "classDateStr", "id", "courseName", "teacherName", "teachingMaterial", "pronunciationStr", "tempoStr", "musicTheoryStr", "song", "memo", "createTimeStr", "assignHomeworkStr", "handHomeworkStr", "eduTeacherName", "courseReview"};
+            HSSFWorkbook workbook = POIUtil.exportExcel(header, body, practiceGroupReviews.getRows());
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
 }

+ 17 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TeacherAttendanceController.java

@@ -91,6 +91,23 @@ public class TeacherAttendanceController extends BaseController {
     @PostMapping("/queryTeacherAttendanceComplaints")
     @PreAuthorize("@pcs.hasPermissions('teacherAttendance/queryTeacherAttendanceComplaints')")
     public Object queryTeacherAttendanceComplaints(TeacherAttendanceComplaintsQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if(!sysUser.getIsSuperAdmin()){
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+                queryInfo.setOrganId(employee.getOrganIdList());
+            }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+                return failed("用户所在分部异常");
+            }else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
+                    return failed("非法请求");
+                }
+            }
+        }
         return succeed(teacherAttendanceService.queryTeacherAttendanceComplaints(queryInfo));
     }