Browse Source

Merge remote-tracking branch 'origin/reg_feature' into reg_feature

Joburgess 4 years ago
parent
commit
dd180e4957
17 changed files with 236 additions and 90 deletions
  1. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Goods.java
  2. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupSubjectGoodsGroup.java
  3. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentOrderDetail.java
  4. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java
  5. 50 38
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  6. 4 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java
  7. 7 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  8. 16 14
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java
  9. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java
  10. 26 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  11. 33 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentVisitServiceImpl.java
  12. 29 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultPracticeGroupSalaryServiceImpl.java
  13. 16 3
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  14. 5 3
      mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml
  15. 13 9
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  16. 2 1
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  17. 1 1
      mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Goods.java

@@ -111,6 +111,7 @@ public class Goods {
 	private String complementGoodsIdList;
 	private String complementGoodsIdList;
 
 
 	/** 辅件列表 */
 	/** 辅件列表 */
+	@ApiModelProperty(value = "辅件列表(子商品)",required = false)
 	private List<Goods> goodsList;
 	private List<Goods> goodsList;
 
 
 	/** 声部列表编号 */
 	/** 声部列表编号 */

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupSubjectGoodsGroup.java

@@ -64,6 +64,10 @@ public class MusicGroupSubjectGoodsGroup {
 	private String coursePurchaseTypeJson;
 	private String coursePurchaseTypeJson;
 
 
 
 
+	@ApiModelProperty(value = "子商品列表",required = false)
+	private List<Goods> childGoodsList;
+
+
 	/**  */
 	/**  */
 	private java.util.Date createTime;
 	private java.util.Date createTime;
 	
 	
@@ -215,4 +219,12 @@ public class MusicGroupSubjectGoodsGroup {
 	public void setGroupRemissionCourseFee(Integer groupRemissionCourseFee) {
 	public void setGroupRemissionCourseFee(Integer groupRemissionCourseFee) {
 		this.groupRemissionCourseFee = groupRemissionCourseFee;
 		this.groupRemissionCourseFee = groupRemissionCourseFee;
 	}
 	}
+
+	public List<Goods> getChildGoodsList() {
+		return childGoodsList;
+	}
+
+	public void setChildGoodsList(List<Goods> childGoodsList) {
+		this.childGoodsList = childGoodsList;
+	}
 }
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentOrderDetail.java

@@ -51,6 +51,9 @@ public class StudentPaymentOrderDetail {
 	//减免费用
 	//减免费用
 	private BigDecimal remitFee;
 	private BigDecimal remitFee;
 
 
+	@ApiModelProperty(value = "子商品列表",required = false)
+	private List<Goods> childGoodsList;
+
 	public void setId(Long id){
 	public void setId(Long id){
 		this.id = id;
 		this.id = id;
 	}
 	}
@@ -143,4 +146,12 @@ public class StudentPaymentOrderDetail {
 	public void setRemitFee(BigDecimal remitFee) {
 	public void setRemitFee(BigDecimal remitFee) {
 		this.remitFee = remitFee;
 		this.remitFee = remitFee;
 	}
 	}
+
+	public List<Goods> getChildGoodsList() {
+		return childGoodsList;
+	}
+
+	public void setChildGoodsList(List<Goods> childGoodsList) {
+		this.childGoodsList = childGoodsList;
+	}
 }
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java

@@ -139,4 +139,12 @@ public interface StudentPaymentOrderService extends BaseService<Long, StudentPay
 	 * @return
 	 * @return
 	 */
 	 */
 	List<StudentPaymentOrder> reConfirmOrder(Date startTime,Date endTime);
 	List<StudentPaymentOrder> reConfirmOrder(Date startTime,Date endTime);
+
+	/**
+	 * 获取学生报名的订单
+	 * @param studentId
+	 * @param musicGroupId
+	 * @return
+	 */
+	List<StudentPaymentOrderExportDto> getUserApplyOrders(Integer studentId,String musicGroupId);
 }
 }

+ 50 - 38
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -3,9 +3,7 @@ package com.ym.mec.biz.service.impl;
 import static com.ym.mec.biz.dal.enums.GroupType.MUSIC;
 import static com.ym.mec.biz.dal.enums.GroupType.MUSIC;
 import static com.ym.mec.biz.dal.enums.GroupType.PRACTICE;
 import static com.ym.mec.biz.dal.enums.GroupType.PRACTICE;
 import static com.ym.mec.biz.dal.enums.GroupType.VIP;
 import static com.ym.mec.biz.dal.enums.GroupType.VIP;
-import static com.ym.mec.biz.dal.enums.PracticeGroupType.CHARGE;
-import static com.ym.mec.biz.dal.enums.PracticeGroupType.FREE;
-import static com.ym.mec.biz.dal.enums.PracticeGroupType.TRIAL;
+import static com.ym.mec.biz.dal.enums.PracticeGroupType.*;
 
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
@@ -3325,6 +3323,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				// 删除课酬
 				// 删除课酬
 				List<Long> courseScheduleIdList = new ArrayList<Long>();
 				List<Long> courseScheduleIdList = new ArrayList<Long>();
 				courseScheduleIdList.add(courseScheduleId);
 				courseScheduleIdList.add(courseScheduleId);
+
+				List<CourseScheduleTeacherSalary> oldCourseScheduleTeacherSalaryList = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
+				Map<Long, List<CourseScheduleTeacherSalary>> courseSalaryListMap = new HashMap<>();
+				if(!CollectionUtils.isEmpty(oldCourseScheduleTeacherSalaryList)){
+					courseSalaryListMap = oldCourseScheduleTeacherSalaryList.stream().collect(Collectors.groupingBy(CourseScheduleTeacherSalary::getCourseScheduleId));
+				}
+
 				courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIdList);
 				courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIdList);
 
 
 				for (Integer teacherId : newTeacherIdList) {
 				for (Integer teacherId : newTeacherIdList) {
@@ -3357,12 +3362,20 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 						ts.setExpectSalary(teacherSalary);
 						ts.setExpectSalary(teacherSalary);
 
 
 					} else if (newCourseSchedule.getGroupType() == PRACTICE) {
 					} else if (newCourseSchedule.getGroupType() == PRACTICE) {
+						SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
+						BigDecimal freeTeacherSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
+
 						List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList = teacherDefaultPracticeGroupSalaryDao
 						List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaryList = teacherDefaultPracticeGroupSalaryDao
 								.queryByUserId(teacherId);
 								.queryByUserId(teacherId);
-						if (teacherDefaultPracticeGroupSalaryList != null && teacherDefaultPracticeGroupSalaryList.size() > 0) {
-							ts.setExpectSalary(teacherDefaultPracticeGroupSalaryList.get(0).getMainTeacherSalary());
-						} else {
-							throw new BizException("请设置老师 的网管课课酬");
+						List<CourseScheduleTeacherSalary> teacherSalaries = courseSalaryListMap.get(ts.getCourseScheduleId());
+						if(!CollectionUtils.isEmpty(teacherSalaries)&&freeTeacherSalary.compareTo(teacherSalaries.get(0).getExpectSalary())==0){
+							ts.setExpectSalary(freeTeacherSalary);
+						}else{
+							if (teacherDefaultPracticeGroupSalaryList != null && teacherDefaultPracticeGroupSalaryList.size() > 0) {
+								ts.setExpectSalary(teacherDefaultPracticeGroupSalaryList.get(0).getMainTeacherSalary());
+							} else {
+								throw new BizException("请设置老师 的网管课课酬");
+							}
 						}
 						}
 					}
 					}
 					if(ts.getExpectSalary() == null){
 					if(ts.getExpectSalary() == null){
@@ -4563,26 +4576,26 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         courseScheduleDao.update(oldCourseSchedule);
         courseScheduleDao.update(oldCourseSchedule);
 
 
         PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(oldCourseSchedule.getMusicGroupId()));
         PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(oldCourseSchedule.getMusicGroupId()));
-		if(practiceGroup.getType() != TRIAL){
-			if(practiceGroup.getType() != FREE){
+
+		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedule(courseScheduleId);
+		if(!CollectionUtils.isEmpty(courseScheduleTeacherSalaries)){
+			SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
+			BigDecimal teacherSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
+			for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
+				courseScheduleTeacherSalary.setUserId(teacherId);
+				if(teacherSalary.compareTo(courseScheduleTeacherSalary.getExpectSalary())==0){
+					continue;
+				}
 				List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
 				List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
 				if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
 				if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
 					throw new BizException("请设置老师默认课酬");
 					throw new BizException("请设置老师默认课酬");
 				}
 				}
-				courseScheduleTeacherSalaryDao.batchUpdateTeacher(courseScheduleIds,teacherId);
-			}else{
-				List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedule(courseScheduleId);
-				if(!CollectionUtils.isEmpty(courseScheduleTeacherSalaries)){
-					SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
-					BigDecimal teacherSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
-					for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
-						courseScheduleTeacherSalary.setUserId(teacherId);
-						courseScheduleTeacherSalary.setExpectSalary(teacherSalary);
-					}
-					courseScheduleTeacherSalaryDao.batchUpdate(courseScheduleTeacherSalaries);
-				}
+				courseScheduleTeacherSalary.setExpectSalary(teacherDefaultPracticeGroupSalaries.get(0).getMainTeacherSalary());
 			}
 			}
+			courseScheduleTeacherSalaryDao.batchUpdate(courseScheduleTeacherSalaries);
 		}
 		}
+
+
         teacherAttendanceDao.batchUpdateTeacher(courseScheduleIds,teacherId);
         teacherAttendanceDao.batchUpdateTeacher(courseScheduleIds,teacherId);
 		//删除申述
 		//删除申述
 		courseScheduleComplaintsDao.delByCourseScheduleId(courseScheduleId);
 		courseScheduleComplaintsDao.delByCourseScheduleId(courseScheduleId);
@@ -4667,25 +4680,24 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			courseScheduleDao.batchUpdate(courseSchedules);
 			courseScheduleDao.batchUpdate(courseSchedules);
 			Set<Long> courseScheduleIds = courseSchedules.stream().map(e -> e.getId()).collect(Collectors.toSet());
 			Set<Long> courseScheduleIds = courseSchedules.stream().map(e -> e.getId()).collect(Collectors.toSet());
 			if(practiceGroup.getType() != TRIAL){
 			if(practiceGroup.getType() != TRIAL){
-				if(CHARGE == practiceGroup.getType()){
-					List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
-					if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
-						throw new BizException("请设置老师默认课酬");
-					}
-					courseScheduleTeacherSalaryDao.batchUpdateTeacher(courseScheduleIds,teacherId);
-				}else{
-					List<CourseSchedule> groupNotStartCourses = courseScheduleDao.findGroupNotStartCourses(practiceGroupId, PRACTICE);
-					if(!CollectionUtils.isEmpty(groupNotStartCourses)){
-						SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
-						BigDecimal teacherSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
-						List<Long> courseIds = groupNotStartCourses.stream().map(CourseSchedule::getId).collect(Collectors.toList());
-						List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseIds);
-						for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
-							courseScheduleTeacherSalary.setUserId(teacherId);
-							courseScheduleTeacherSalary.setExpectSalary(teacherSalary);
+				List<CourseSchedule> groupNotStartCourses = courseScheduleDao.findGroupNotStartCourses(practiceGroupId, PRACTICE);
+				if(!CollectionUtils.isEmpty(groupNotStartCourses)){
+					SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
+					BigDecimal teacherSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
+					List<Long> courseIds = groupNotStartCourses.stream().map(CourseSchedule::getId).collect(Collectors.toList());
+					List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseIds);
+					for (CourseScheduleTeacherSalary courseScheduleTeacherSalary : courseScheduleTeacherSalaries) {
+						courseScheduleTeacherSalary.setUserId(teacherId);
+						if(teacherSalary.compareTo(courseScheduleTeacherSalary.getExpectSalary())==0){
+							continue;
+						}
+						List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
+						if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
+							throw new BizException("请设置老师默认课酬");
 						}
 						}
-						courseScheduleTeacherSalaryDao.batchUpdate(courseScheduleTeacherSalaries);
+						courseScheduleTeacherSalary.setExpectSalary(teacherDefaultPracticeGroupSalaries.get(0).getMainTeacherSalary());
 					}
 					}
+					courseScheduleTeacherSalaryDao.batchUpdate(courseScheduleTeacherSalaries);
 				}
 				}
 			}
 			}
 			teacherAttendanceDao.batchUpdateTeacher(courseScheduleIds,teacherId);
 			teacherAttendanceDao.batchUpdateTeacher(courseScheduleIds,teacherId);

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

@@ -710,7 +710,10 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
         courseScheduleDao.batchAddCourseSchedules(practiceCourses);
         courseScheduleDao.batchAddCourseSchedules(practiceCourses);
         TeacherDefaultPracticeGroupSalary teacherDefaultPracticeGroupSalary = teacherDefaultPracticeGroupSalaryDao.findByTeacherAndCourseMinutes(practiceGroupBuyParams.getUserId(),practiceCourseMinutes);
         TeacherDefaultPracticeGroupSalary teacherDefaultPracticeGroupSalary = teacherDefaultPracticeGroupSalaryDao.findByTeacherAndCourseMinutes(practiceGroupBuyParams.getUserId(),practiceCourseMinutes);
         BigDecimal teacherDefaultSalary=null;
         BigDecimal teacherDefaultSalary=null;
-        if(Objects.nonNull(teacherDefaultPracticeGroupSalary)&&PracticeGroupType.COME_ON_PACKAGE.equals(practiceGroupBuyParams.getType())){
+        if(PracticeGroupType.COME_ON_PACKAGE.equals(practiceGroupBuyParams.getType())){
+            if(Objects.isNull(teacherDefaultPracticeGroupSalary)){
+                throw new BizException("请设置老师课酬");
+            }
             teacherDefaultSalary=teacherDefaultPracticeGroupSalary.getMainTeacherSalary();
             teacherDefaultSalary=teacherDefaultPracticeGroupSalary.getMainTeacherSalary();
         }else{
         }else{
             teacherDefaultSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
             teacherDefaultSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());

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

@@ -1,7 +1,6 @@
 package com.ym.mec.biz.service.impl;
 package com.ym.mec.biz.service.impl;
 
 
-import static com.ym.mec.biz.dal.enums.DealStatusEnum.CLOSE;
-import static com.ym.mec.biz.dal.enums.DealStatusEnum.SUCCESS;
+import static com.ym.mec.biz.dal.enums.DealStatusEnum.*;
 import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
 import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
 
 
 import java.io.IOException;
 import java.io.IOException;
@@ -2145,11 +2144,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             if (oldStudentPaymentOrder != null) {
             if (oldStudentPaymentOrder != null) {
                 if (oldStudentPaymentOrder.getStatus() == SUCCESS) {
                 if (oldStudentPaymentOrder.getStatus() == SUCCESS) {
                     throw new BizException("您已支付请勿重复提交");
                     throw new BizException("您已支付请勿重复提交");
-                }
-                oldStudentPaymentOrder.setStatus(CLOSE);
-                studentPaymentOrderService.update(oldStudentPaymentOrder);
-                if (oldStudentPaymentOrder.getBalancePaymentAmount() != null && oldStudentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
-                    sysUserCashAccountService.updateBalance(oldStudentPaymentOrder.getUserId(), oldStudentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "关闭订单");
+                }else if(oldStudentPaymentOrder.getStatus() == ING){
+                    oldStudentPaymentOrder.setStatus(CLOSE);
+                    studentPaymentOrderService.update(oldStudentPaymentOrder);
+                    if (oldStudentPaymentOrder.getBalancePaymentAmount() != null && oldStudentPaymentOrder.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
+                        sysUserCashAccountService.updateBalance(oldStudentPaymentOrder.getUserId(), oldStudentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "关闭订单");
+                    }
                 }
                 }
             }
             }
         }
         }

+ 16 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java

@@ -10,6 +10,7 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.MusicGroupGoodsAndDiscountDto;
 import com.ym.mec.biz.dal.dto.MusicGroupGoodsAndDiscountDto;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
@@ -107,24 +108,25 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
         //乐团乐器及辅件信息
         //乐团乐器及辅件信息
         List<MusicGroupSubjectGoodsGroup> goodsGroups = musicGroupSubjectGoodsGroupService.findGoodsGroup(musicGroupId, subjectId);
         List<MusicGroupSubjectGoodsGroup> goodsGroups = musicGroupSubjectGoodsGroupService.findGoodsGroup(musicGroupId, subjectId);
 
 
-        List<Goods> accessoriesList = goodsService.findGoodsBySubId(subjectId, GoodsType.ACCESSORIES.getCode());
-
-        goodsGroups.forEach(goodsGroup -> {
-            if (goodsGroup.getType().equals(GoodsType.INSTRUMENT)) {
-                goodsGroup.getGoodsList().forEach(goods -> {
-                    goods.setGoodsList(accessoriesList);
-                });
+        for (MusicGroupSubjectGoodsGroup goodsGroup : goodsGroups) {
+            String childGoodIds = "";
+            for (Goods goods : goodsGroup.getGoodsList()) {
+                if (StringUtils.isNotBlank(goods.getComplementGoodsIdList())) {
+                    childGoodIds += StringUtils.isNotBlank(childGoodIds) ? "," : "" + goods.getComplementGoodsIdList();
+                }
             }
             }
-        });
-        //获取声部(科目)下其他商品
-        List<Goods> otherGoods = goodsService.findTypeGoods("OTHER");
+            if(StringUtils.isNotBlank(childGoodIds)) {
+                goodsGroup.setChildGoodsList(goodsDao.findGoodsByIds(childGoodIds));
+            }
+        }
+
 
 
+        //获取声部(科目)下其他商品
         MusicGroupSubjectGoodsAndInfoDto musicGroupSubjectGoodsAndInfo = new MusicGroupSubjectGoodsAndInfoDto();
         MusicGroupSubjectGoodsAndInfoDto musicGroupSubjectGoodsAndInfo = new MusicGroupSubjectGoodsAndInfoDto();
         musicGroupSubjectGoodsAndInfo.setMusicGroupSubjectPlan(musicOneSubjectClassPlan);
         musicGroupSubjectGoodsAndInfo.setMusicGroupSubjectPlan(musicOneSubjectClassPlan);
         musicGroupSubjectGoodsAndInfo.setCourseScheduleInfo(courseForm);
         musicGroupSubjectGoodsAndInfo.setCourseScheduleInfo(courseForm);
         musicGroupSubjectGoodsAndInfo.setMusicGroupPaymentCalender(musicGroupRegCalender);
         musicGroupSubjectGoodsAndInfo.setMusicGroupPaymentCalender(musicGroupRegCalender);
         musicGroupSubjectGoodsAndInfo.setMusicGroupSubjectGoodsGroupList(goodsGroups);
         musicGroupSubjectGoodsAndInfo.setMusicGroupSubjectGoodsGroupList(goodsGroups);
-        musicGroupSubjectGoodsAndInfo.setOtherGoods(otherGoods);
         musicGroupSubjectGoodsAndInfo.setMusicGroup(musicGroup);
         musicGroupSubjectGoodsAndInfo.setMusicGroup(musicGroup);
         return musicGroupSubjectGoodsAndInfo;
         return musicGroupSubjectGoodsAndInfo;
     }
     }
@@ -145,14 +147,14 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
     }
     }
 
 
     @Override
     @Override
-    public void addApplyStudentNum(String musicGroupId, Integer subjectId, int num){
+    public void addApplyStudentNum(String musicGroupId, Integer subjectId, int num) {
         boolean flag = false;
         boolean flag = false;
         for (int i = 10; i >= 1; i--) {
         for (int i = 10; i >= 1; i--) {
             MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
             MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
-            if(musicOneSubjectClassPlan == null){
+            if (musicOneSubjectClassPlan == null) {
                 MusicGroup musicGroup = musicGroupService.get(musicGroupId);
                 MusicGroup musicGroup = musicGroupService.get(musicGroupId);
                 Subject subject = subjectService.get(subjectId);
                 Subject subject = subjectService.get(subjectId);
-                throw new BizException("操作失败:{}乐团缺少{}声部",musicGroup.getName(),subject.getName());
+                throw new BizException("操作失败:{}乐团缺少{}声部", musicGroup.getName(), subject.getName());
             }
             }
             int applyNum = musicOneSubjectClassPlan.getApplyStudentNum() == null ? 0 : musicOneSubjectClassPlan.getApplyStudentNum();
             int applyNum = musicOneSubjectClassPlan.getApplyStudentNum() == null ? 0 : musicOneSubjectClassPlan.getApplyStudentNum();
             musicOneSubjectClassPlan.setApplyStudentNum(applyNum + num);
             musicOneSubjectClassPlan.setApplyStudentNum(applyNum + num);

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

@@ -231,6 +231,8 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
                     goods.setSellCount(goods.getSellCount() + 1);
                     goods.setSellCount(goods.getSellCount() + 1);
                 }
                 }
             }
             }
+            if(StringUtils.isBlank(goods.getComplementGoodsIdList())) continue;
+            goods.setGoodsList(goodsService.findGoodsByIds(goodsIdsStr));
         }
         }
         return goodies;
         return goodies;
     }
     }

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

@@ -11,6 +11,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Lazy;
@@ -18,10 +20,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentRouteOrderDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
 import com.ym.mec.biz.dal.dto.PageInfoOrder;
 import com.ym.mec.biz.dal.dto.PageInfoOrder;
 import com.ym.mec.biz.dal.dto.SporadicChargeInfoDto;
 import com.ym.mec.biz.dal.dto.SporadicChargeInfoDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentOrderDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentOrderDto;
@@ -95,6 +93,8 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     private IdGeneratorService idGeneratorService;
     private IdGeneratorService idGeneratorService;
     @Autowired
     @Autowired
     private SysConfigDao sysConfigDao;
     private SysConfigDao sysConfigDao;
+    @Autowired
+    private GoodsDao goodsDao;
 
 
     @Override
     @Override
     public BaseDAO<Long, StudentPaymentOrder> getDAO() {
     public BaseDAO<Long, StudentPaymentOrder> getDAO() {
@@ -516,4 +516,26 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         }
         }
         return orders;
         return orders;
     }
     }
+
+    @Override
+    public List<StudentPaymentOrderExportDto> getUserApplyOrders(Integer studentId, String musicGroupId) {
+        List<StudentPaymentOrderExportDto> orders = studentPaymentOrderDao.getUserApplyOrders(studentId, musicGroupId);
+        for (StudentPaymentOrderExportDto order : orders) {
+            if(order.getOrderDetailList()==null) continue;
+            for (StudentPaymentOrderDetail studentPaymentOrderDetail : order.getOrderDetailList()) {
+                if(studentPaymentOrderDetail.getGoodsList()==null) continue;
+
+                String childGoodIds = "";
+                for (Goods goods : studentPaymentOrderDetail.getGoodsList()) {
+                    if (StringUtils.isNotBlank(goods.getComplementGoodsIdList())) {
+                        childGoodIds += StringUtils.isNotBlank(childGoodIds) ? "," : "" + goods.getComplementGoodsIdList();
+                    }
+                }
+                if(StringUtils.isNotBlank(childGoodIds)) {
+                    studentPaymentOrderDetail.setChildGoodsList(goodsDao.findGoodsByIds(childGoodIds));
+                }
+            }
+        }
+        return orders;
+    }
 }
 }

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

@@ -5,9 +5,8 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.PageInfoDegree;
 import com.ym.mec.biz.dal.dto.PageInfoDegree;
 import com.ym.mec.biz.dal.dto.StudentVisitDto;
 import com.ym.mec.biz.dal.dto.StudentVisitDto;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.entity.StudentVisit;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.StudentVisitQueryInfo;
 import com.ym.mec.biz.dal.page.StudentVisitQueryInfo;
 import com.ym.mec.biz.service.StudentVisitService;
 import com.ym.mec.biz.service.StudentVisitService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
@@ -18,6 +17,7 @@ import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.date.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -35,6 +35,10 @@ public class StudentVisitServiceImpl extends BaseServiceImpl<Integer, StudentVis
     private StudentRepairDao studentRepairDao;
     private StudentRepairDao studentRepairDao;
     @Autowired
     @Autowired
     private TeacherDao teacherDao;
     private TeacherDao teacherDao;
+    @Autowired
+    private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
+    @Autowired
+    private StudentAttendanceDao studentAttendanceDao;
 
 
 
 
     @Override
     @Override
@@ -43,10 +47,35 @@ public class StudentVisitServiceImpl extends BaseServiceImpl<Integer, StudentVis
     }
     }
 
 
     @Override
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public StudentVisit addVisit(StudentVisit studentVisit) {
     public StudentVisit addVisit(StudentVisit studentVisit) {
+        Date now = new Date();
         SysUser user = teacherDao.getUser(studentVisit.getStudentId());
         SysUser user = teacherDao.getUser(studentVisit.getStudentId());
         studentVisit.setOrganId(user.getOrganId());
         studentVisit.setOrganId(user.getOrganId());
-        studentVisit.setCreateTime(new Date());
+        studentVisit.setCreateTime(now);
+        if(Objects.nonNull(studentVisit.getObjectId()) && "考勤申诉".equals(studentVisit.getPurpose())){
+            CourseScheduleStudentPayment courseScheduleStudentPayment = courseScheduleStudentPaymentDao.get(studentVisit.getObjectId());
+            if(Objects.isNull(courseScheduleStudentPayment)){
+                throw new BizException("学员课程信息不存在");
+            }
+            StudentAttendance studentAttendance = studentAttendanceDao.findByStatusAndCourseScheduleId(courseScheduleStudentPayment.getUserId(), courseScheduleStudentPayment.getCourseScheduleId().intValue());
+            if (studentAttendance == null) {
+                studentAttendance = new StudentAttendance();
+                studentAttendance.setClassGroupId(courseScheduleStudentPayment.getClassGroupId());
+                studentAttendance.setCourseScheduleId(courseScheduleStudentPayment.getCourseScheduleId());
+                studentAttendance.setGroupType(courseScheduleStudentPayment.getGroupType());
+                studentAttendance.setMusicGroupId(courseScheduleStudentPayment.getMusicGroupId());
+                studentAttendance.setUserId(courseScheduleStudentPayment.getUserId());
+                studentAttendance.setCreateTime(now);
+                studentAttendance.setUpdateTime(now);
+                studentAttendance.setVisitFlag(YesOrNoEnum.YES);
+                studentAttendanceDao.insert(studentAttendance);
+            } else {
+                studentAttendance.setVisitFlag(YesOrNoEnum.YES);
+                studentAttendance.setUpdateTime(now);
+                studentAttendanceDao.update(studentAttendance);
+            }
+        }
         studentVisitDao.insert(studentVisit);
         studentVisitDao.insert(studentVisit);
         return studentVisit;
         return studentVisit;
     }
     }

+ 29 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherDefaultPracticeGroupSalaryServiceImpl.java

@@ -1,10 +1,14 @@
 package com.ym.mec.biz.service.impl;
 package com.ym.mec.biz.service.impl;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 
+import com.ym.mec.biz.dal.dao.PracticeGroupDao;
+import com.ym.mec.biz.dal.entity.PracticeGroup;
+import com.ym.mec.biz.dal.entity.SysConfig;
+import com.ym.mec.biz.dal.enums.PracticeGroupType;
+import com.ym.mec.biz.service.SysConfigService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Propagation;
@@ -18,6 +22,7 @@ import com.ym.mec.biz.dal.entity.TeacherDefaultPracticeGroupSalary;
 import com.ym.mec.biz.service.TeacherDefaultPracticeGroupSalaryService;
 import com.ym.mec.biz.service.TeacherDefaultPracticeGroupSalaryService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.util.CollectionUtils;
 
 
 @Service
 @Service
 public class TeacherDefaultPracticeGroupSalaryServiceImpl extends BaseServiceImpl<Long, TeacherDefaultPracticeGroupSalary>  implements TeacherDefaultPracticeGroupSalaryService {
 public class TeacherDefaultPracticeGroupSalaryServiceImpl extends BaseServiceImpl<Long, TeacherDefaultPracticeGroupSalary>  implements TeacherDefaultPracticeGroupSalaryService {
@@ -28,6 +33,12 @@ public class TeacherDefaultPracticeGroupSalaryServiceImpl extends BaseServiceImp
 	@Autowired
 	@Autowired
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
 
 
+	@Autowired
+	private PracticeGroupDao practiceGroupDao;
+
+	@Autowired
+	private SysConfigService sysConfigService;
+
 	@Override
 	@Override
 	public BaseDAO<Long, TeacherDefaultPracticeGroupSalary> getDAO() {
 	public BaseDAO<Long, TeacherDefaultPracticeGroupSalary> getDAO() {
 		return teacherDefaultPracticeGroupSalaryDao;
 		return teacherDefaultPracticeGroupSalaryDao;
@@ -67,7 +78,17 @@ public class TeacherDefaultPracticeGroupSalaryServiceImpl extends BaseServiceImp
 						userId, typeList, startDate);
 						userId, typeList, startDate);
 				
 				
 				if (updateTeacherSalaryList != null && updateTeacherSalaryList.size() > 0) {
 				if (updateTeacherSalaryList != null && updateTeacherSalaryList.size() > 0) {
-					
+
+					Set<Long> groupIds = updateTeacherSalaryList.stream().map(c -> Long.valueOf(c.getMusicGroupId())).collect(Collectors.toSet());
+					List<PracticeGroup> practiceGroups = practiceGroupDao.getWithIds(new ArrayList<>(groupIds));
+					Map<Long, PracticeGroup> idGroupMap = new HashMap<>();
+					if(!CollectionUtils.isEmpty(practiceGroups)){
+						idGroupMap = practiceGroups.stream().collect(Collectors.toMap(PracticeGroup::getId, p->p, (p1, p2)->p1));
+					}
+
+					SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
+					BigDecimal freeTeacherSalary = new BigDecimal(practiceCourseSalaryConfig.getParanValue());
+
 					Date date = new Date();
 					Date date = new Date();
 
 
 					List<CourseScheduleTeacherSalary> list = new ArrayList<CourseScheduleTeacherSalary>();
 					List<CourseScheduleTeacherSalary> list = new ArrayList<CourseScheduleTeacherSalary>();
@@ -75,6 +96,9 @@ public class TeacherDefaultPracticeGroupSalaryServiceImpl extends BaseServiceImp
 					for (CourseScheduleTeacherSalary ts : updateTeacherSalaryList) {
 					for (CourseScheduleTeacherSalary ts : updateTeacherSalaryList) {
 						if (origSalary != null && origSalary.getMainTeacherSalary().compareTo(ts.getExpectSalary()) == 0
 						if (origSalary != null && origSalary.getMainTeacherSalary().compareTo(ts.getExpectSalary()) == 0
 								&& origSalary.getMainTeacherSalary().compareTo(salary) != 0) {
 								&& origSalary.getMainTeacherSalary().compareTo(salary) != 0) {
+							if(freeTeacherSalary.compareTo(ts.getExpectSalary())==0){
+								continue;
+							}
 							ts.setExpectSalary(salary);
 							ts.setExpectSalary(salary);
 							ts.setUpdateTime(date);
 							ts.setUpdateTime(date);
 							list.add(ts);
 							list.add(ts);
@@ -92,4 +116,4 @@ public class TeacherDefaultPracticeGroupSalaryServiceImpl extends BaseServiceImp
 		return false;
 		return false;
 	}
 	}
 	
 	
-}
+}

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

@@ -2353,7 +2353,13 @@
             LEFT JOIN organization o ON cs.organ_id_=o.id_
             LEFT JOIN organization o ON cs.organ_id_=o.id_
             LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
             LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
             left join teacher_attendance ta on ta.course_schedule_id_ = cs.id_
             left join teacher_attendance ta on ta.course_schedule_id_ = cs.id_
-            LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_
+            <if test="searchType == 'ERR_ATTENDANCE'">
+                LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
+                LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_ AND cssp.user_id_ = sa.user_id_
+            </if>
+            <if test="searchType != 'ERR_ATTENDANCE'">
+                LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_
+            </if>
             <include refid="endFindCourseSchedulesCondition"/>
             <include refid="endFindCourseSchedulesCondition"/>
         GROUP BY
         GROUP BY
             cs.class_date_,
             cs.class_date_,
@@ -2371,7 +2377,13 @@
         COUNT(DISTINCT cs.id_)
         COUNT(DISTINCT cs.id_)
         FROM
         FROM
         course_schedule cs
         course_schedule cs
-        LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_
+        <if test="searchType == 'ERR_ATTENDANCE'">
+            LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
+            LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_ AND cssp.user_id_ = sa.user_id_
+        </if>
+        <if test="searchType != 'ERR_ATTENDANCE'">
+            LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_
+        </if>
         LEFT JOIN teacher_attendance ta on ta.course_schedule_id_ = cs.id_
         LEFT JOIN teacher_attendance ta on ta.course_schedule_id_ = cs.id_
         LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
         LEFT JOIN course_schedule_teacher_salary csts ON csts.course_schedule_id_ = cs.id_
         <include refid="endFindCourseSchedulesCondition"/>
         <include refid="endFindCourseSchedulesCondition"/>
@@ -2493,7 +2505,8 @@
         <if test="searchType == 'ERR_ATTENDANCE'">
         <if test="searchType == 'ERR_ATTENDANCE'">
             AND ta.teacher_id_ = cs.actual_teacher_id_
             AND ta.teacher_id_ = cs.actual_teacher_id_
             AND cs.status_ = 'OVER'
             AND cs.status_ = 'OVER'
-            AND (ta.sign_in_status_ != 1 OR ta.sign_out_status_ != 1 OR sa.status_ != 'NORMAL') AND ta.dispose_content_ IS NULL
+            AND ta.sign_in_status_ IS NOT NULL AND ta.sign_out_status_ IS NOT NULL
+            AND (((ta.sign_in_status_ = 0 OR ta.sign_out_status_ = 0) AND ta.dispose_content_ IS NULL) OR (sa.id_ IS NULL OR (sa.status_ != 'NORMAL' AND sa.visit_flag_ = 0)))
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
             AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
         </if>
         </if>
         <if test="searchType == 'NO_ATTENDANCE'">
         <if test="searchType == 'NO_ATTENDANCE'">

+ 5 - 3
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -588,10 +588,12 @@
     <select id="getAttendanceError" resultType="int">
     <select id="getAttendanceError" resultType="int">
 		SELECT COUNT(DISTINCT c.id_) FROM (SELECT cs.id_ FROM course_schedule cs
 		SELECT COUNT(DISTINCT c.id_) FROM (SELECT cs.id_ FROM course_schedule cs
 		LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
 		LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
-		LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_
+		LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
+		LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cssp.course_schedule_id_ AND cssp.user_id_ = sa.user_id_
 		WHERE ta.teacher_id_ = cs.actual_teacher_id_
 		WHERE ta.teacher_id_ = cs.actual_teacher_id_
-		AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_>='2021-02-01'
-		AND (ta.sign_in_status_ != 1 OR ta.sign_out_status_ != 1 OR sa.status_ != 'NORMAL') AND ta.dispose_content_ IS NULL
+		AND cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND cs.class_date_ >= '2021-02-01'
+		AND ta.sign_in_status_ IS NOT NULL AND ta.sign_out_status_ IS NOT NULL
+		AND (((ta.sign_in_status_ = 0 OR ta.sign_out_status_ = 0) AND ta.dispose_content_ IS NULL) OR (sa.id_ IS NULL OR (sa.status_ != 'NORMAL' AND sa.visit_flag_ = 0)))
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
 		<if test="organIds != null and organIds != ''">
 		<if test="organIds != null and organIds != ''">
 			AND FIND_IN_SET(cs.organ_id_,#{organIds})
 			AND FIND_IN_SET(cs.organ_id_,#{organIds})

+ 13 - 9
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -56,15 +56,15 @@
             keyColumn="id" keyProperty="id">
             keyColumn="id" keyProperty="id">
         INSERT INTO student_attendance
         INSERT INTO student_attendance
         (group_type_,music_group_id_,class_group_id_,course_schedule_id_,user_id_,teacher_id_,status_,create_time_,
         (group_type_,music_group_id_,class_group_id_,course_schedule_id_,user_id_,teacher_id_,status_,create_time_,
-        update_time_,remark_,current_class_times_,sign_in_time_,sign_out_time_,current_schedule_id_)
+        update_time_,remark_,current_class_times_,sign_in_time_,sign_out_time_,current_schedule_id_,visit_flag_)
         VALUES(#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{classGroupId},
         VALUES(#{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{musicGroupId},#{classGroupId},
         #{courseScheduleId},#{userId},#{teacherId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),now(),
         #{courseScheduleId},#{userId},#{teacherId},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),now(),
-        #{remark},#{currentClassTimes},#{signInTime},#{signOutTime},#{currentScheduleId})
+        #{remark},#{currentClassTimes},#{signInTime},#{signOutTime},#{currentScheduleId},#{visitFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
     </insert>
     </insert>
 
 
     <insert id="addStudentAttendances" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
     <insert id="addStudentAttendances" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
       INSERT INTO student_attendance (group_type_, music_group_id_, class_group_id_, course_schedule_id_,
       INSERT INTO student_attendance (group_type_, music_group_id_, class_group_id_, course_schedule_id_,
-      user_id_, teacher_id_, status_, create_time_,update_time_, remark_ ,current_class_times_,sign_in_time_,sign_out_time_,current_schedule_id_)
+      user_id_, teacher_id_, status_, create_time_,update_time_, remark_ ,current_class_times_,sign_in_time_,sign_out_time_,current_schedule_id_,visit_flag_)
       VALUES
       VALUES
 	  <foreach collection="list" item="studentAttendance" separator=",">
 	  <foreach collection="list" item="studentAttendance" separator=",">
           (#{studentAttendance.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
           (#{studentAttendance.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
@@ -72,7 +72,7 @@
           #{studentAttendance.userId},#{studentAttendance.teacherId},
           #{studentAttendance.userId},#{studentAttendance.teacherId},
           #{studentAttendance.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),#{studentAttendance.updateTime},
           #{studentAttendance.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),#{studentAttendance.updateTime},
           #{studentAttendance.remark},#{studentAttendance.currentClassTimes},
           #{studentAttendance.remark},#{studentAttendance.currentClassTimes},
-          #{studentAttendance.signInTime},#{studentAttendance.signOutTime},#{studentAttendance.currentScheduleId})
+          #{studentAttendance.signInTime},#{studentAttendance.signOutTime},#{studentAttendance.currentScheduleId},#{studentAttendance.visitFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
       </foreach>
       </foreach>
     </insert>
     </insert>
 
 
@@ -83,6 +83,9 @@
             <if test="status != null">
             <if test="status != null">
                 status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
                 status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
             </if>
+            <if test="visitFlag != null">
+                visit_flag_ = #{visitFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
             <if test="currentScheduleId != null">
             <if test="currentScheduleId != null">
                 current_schedule_id_ = #{currentScheduleId},
                 current_schedule_id_ = #{currentScheduleId},
             </if>
             </if>
@@ -125,6 +128,9 @@
     	<foreach collection="list" item="item" index="index" open="" close="" separator=";">
     	<foreach collection="list" item="item" index="index" open="" close="" separator=";">
 	        update student_attendance
 	        update student_attendance
 	        <set>
 	        <set>
+	            <if test="item.visitFlag != null">
+	                visit_flag_ = #{item.visitFlag,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+	            </if>
 	            <if test="item.status != null">
 	            <if test="item.status != null">
 	                status_ = #{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 	                status_ = #{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 	            </if>
 	            </if>
@@ -490,13 +496,12 @@
                CASE WHEN sa.status_ IS NULL THEN 'TRUANT' ELSE sa.status_ END status_,
                CASE WHEN sa.status_ IS NULL THEN 'TRUANT' ELSE sa.status_ END status_,
         su.username_,su.phone_,su.avatar_,cs.teach_mode_,cs.type_ course_type_,o.name_ organ_name_,tu.real_name_ teacher_name_,cs.name_ course_schedule_name_,cs.status_ course_status_,
         su.username_,su.phone_,su.avatar_,cs.teach_mode_,cs.type_ course_type_,o.name_ organ_name_,tu.real_name_ teacher_name_,cs.name_ course_schedule_name_,cs.status_ course_status_,
         cs.actual_teacher_id_ teacher_id_,cs.class_date_ ,cs.start_class_time_,cs.end_class_time_ ,cs.new_course_id_,
         cs.actual_teacher_id_ teacher_id_,cs.class_date_ ,cs.start_class_time_,cs.end_class_time_ ,cs.new_course_id_,
-        CASE WHEN MAX(sv.id_) IS NULL THEN 0 ELSE 1 END visitFlag
+        CASE WHEN sa.visit_flag_ IS NULL THEN 0 ELSE sa.visit_flag_ END visitFlag
         FROM course_schedule_student_payment cssp left join course_schedule cs on cs.id_ = cssp.course_schedule_id_
         FROM course_schedule_student_payment cssp left join course_schedule cs on cs.id_ = cssp.course_schedule_id_
         left join student_attendance sa on cssp.course_schedule_id_ = sa.course_schedule_id_ and cssp.user_id_ = sa.user_id_
         left join student_attendance sa on cssp.course_schedule_id_ = sa.course_schedule_id_ and cssp.user_id_ = sa.user_id_
         LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
         LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
         left join sys_user tu on tu.id_ = cs.actual_teacher_id_
         left join sys_user tu on tu.id_ = cs.actual_teacher_id_
         left join organization o on o.id_ = cs.organ_id_
         left join organization o on o.id_ = cs.organ_id_
-        LEFT JOIN student_visit sv ON cssp.id_ = sv.object_id_
         <include refid="findStudentAttendanceSql"/>
         <include refid="findStudentAttendanceSql"/>
         GROUP BY cssp.id_
         GROUP BY cssp.id_
         ORDER BY CONCAT(cs.class_date_, ' ', cs.start_class_time_) ASC
         ORDER BY CONCAT(cs.class_date_, ' ', cs.start_class_time_) ASC
@@ -507,10 +512,10 @@
             cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
             cs.status_ = 'OVER' AND cs.del_flag_ = 0 AND (cs.new_course_id_ IS NULL OR cs.new_course_id_ = cs.id_)
             <if test="visitFlag != null">
             <if test="visitFlag != null">
                 <if test="visitFlag == 1">
                 <if test="visitFlag == 1">
-                    AND sv.id_ IS NOT NULL
+                    AND sa.visit_flag_ = 1
                 </if>
                 </if>
                 <if test="visitFlag == 0">
                 <if test="visitFlag == 0">
-                    AND sv.id_ IS NULL
+                    AND (sa.visit_flag_ = 0 OR sa.visit_flag_ IS NULL)
                 </if>
                 </if>
             </if>
             </if>
             <if test="courseScheduleId != null">
             <if test="courseScheduleId != null">
@@ -564,7 +569,6 @@
         FROM course_schedule_student_payment cssp
         FROM course_schedule_student_payment cssp
         left join course_schedule cs on cs.id_ = cssp.course_schedule_id_
         left join course_schedule cs on cs.id_ = cssp.course_schedule_id_
         left join student_attendance sa on cssp.course_schedule_id_ = sa.course_schedule_id_ and cssp.user_id_ = sa.user_id_
         left join student_attendance sa on cssp.course_schedule_id_ = sa.course_schedule_id_ and cssp.user_id_ = sa.user_id_
-        LEFT JOIN student_visit sv ON cssp.id_ = sv.object_id_
         <include refid="findStudentAttendanceSql"/>
         <include refid="findStudentAttendanceSql"/>
     </select>
     </select>
     <select id="findByCourseId" resultMap="StudentAttendance">
     <select id="findByCourseId" resultMap="StudentAttendance">

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

@@ -854,13 +854,14 @@
             <collection property="goodsList" ofType="com.ym.mec.biz.dal.entity.Goods">
             <collection property="goodsList" ofType="com.ym.mec.biz.dal.entity.Goods">
                 <result column="goods_id" property="id"/>
                 <result column="goods_id" property="id"/>
                 <result column="goods_name" property="name"/>
                 <result column="goods_name" property="name"/>
+                <result column="complementGoodsIdList" property="complementGoodsIdList"/>
             </collection>
             </collection>
         </collection>
         </collection>
     </resultMap>
     </resultMap>
     <select id="getUserApplyOrders" resultMap="applyOrderAndDetail" parameterType="map">
     <select id="getUserApplyOrders" resultMap="applyOrderAndDetail" parameterType="map">
         SELECT spo.*,spod.id_ detail_id_,spod.type_ detail_type_,spod.price_
         SELECT spo.*,spod.id_ detail_id_,spod.type_ detail_type_,spod.price_
         detail_price_,spod.kit_group_purchase_type_ detail_kit_group_purchase_type_,
         detail_price_,spod.kit_group_purchase_type_ detail_kit_group_purchase_type_,
-        g.id_ goods_id, g.name_ goods_name
+        g.id_ goods_id, g.name_ goods_name,g.complement_goods_id_list_ complementGoodsIdList
         FROM student_payment_order spo
         FROM student_payment_order spo
         LEFT JOIN student_payment_order_detail spod on spo.id_ = spod.payment_order_id_
         LEFT JOIN student_payment_order_detail spod on spo.id_ = spod.payment_order_id_
         LEFT JOIN goods g on FIND_IN_SET(g.id_,spod.goods_id_list_)
         LEFT JOIN goods g on FIND_IN_SET(g.id_,spod.goods_id_list_)

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

@@ -776,7 +776,7 @@ public class StudentOrderController extends BaseController {
         if (sysUser == null) {
         if (sysUser == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
         }
-        return succeed(studentPaymentOrderDao.getUserApplyOrders(sysUser.getId(), musicGroupId));
+        return succeed(studentPaymentOrderService.getUserApplyOrders(sysUser.getId(), musicGroupId));
     }
     }
 
 
     @GetMapping("/reConfirmOrder")
     @GetMapping("/reConfirmOrder")