zouxuan 4 سال پیش
والد
کامیت
39e4a8a5af

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1884,4 +1884,11 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @return
      */
     List<Map<Integer, Long>> countPreSubMinutesByClassGroupId(@Param("classGroupSet") List<Integer> classGroupSet, @Param("courseDetailId") Integer courseDetailId);
+
+    /**
+     * 获取进行中或已结束的预排课课程
+     * @param musicGroupId
+     * @return
+     */
+    int queryOverPreCourseListByMusicGroupId(String musicGroupId);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassGroupTeachersDto.java

@@ -21,8 +21,10 @@ public class ClassGroupTeachersDto extends ClassGroup {
 
 	private String bishopTeacherName;
 
+	/** 预排课时 */
 	private Integer preTotalClassTimes;
 
+	/** 剩余可排课时长 */
 	private Integer preSubMinutes;
 
 	public Integer getPreSubMinutes() {

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalender.java

@@ -120,7 +120,8 @@ public class MusicGroupPaymentCalender {
 
 	@ApiModelProperty(value = "缴费类型", required = false)
 	private PaymentType paymentType;
-	
+
+	@ApiModelProperty(value = "课程价格费用", required = false)
 	private BigDecimal paymentAmount = new BigDecimal(0);
 
 	@ApiModelProperty(value = "状态", required = false)

+ 1 - 24
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentStudentCourseDetail.java

@@ -1,8 +1,7 @@
 package com.ym.mec.biz.dal.entity;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
  * 对应数据库表(music_group_payment_student_course_detail):
@@ -27,12 +26,6 @@ public class MusicGroupPaymentStudentCourseDetail {
 	/**  */
 	private Integer totalCourseMinutes;
 
-	/**  用来标注当前缴费项目排了哪些类型的课以及课时数*/
-	private String courseDetail;
-
-	/**  会员可排课时长*/
-	private Integer memberCourseMinutes;
-	
 	/**  已消耗时长*/
 	private Integer usedCourseMinutes;
 	
@@ -42,22 +35,6 @@ public class MusicGroupPaymentStudentCourseDetail {
 	/**  */
 	private java.util.Date updateTime;
 
-	public String getCourseDetail() {
-		return courseDetail;
-	}
-
-	public void setCourseDetail(String courseDetail) {
-		this.courseDetail = courseDetail;
-	}
-
-	public Integer getMemberCourseMinutes() {
-		return memberCourseMinutes;
-	}
-
-	public void setMemberCourseMinutes(Integer memberCourseMinutes) {
-		this.memberCourseMinutes = memberCourseMinutes;
-	}
-
 	public void setId(Long id){
 		this.id = id;
 	}

+ 12 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupSchoolTermCourseDetail.java

@@ -35,7 +35,18 @@ public class MusicGroupSchoolTermCourseDetail {
 	
 	/**  */
 	private java.util.Date createTime;
-	
+
+	/** 是否清空预排课 */
+	private boolean cleanPreCourseFlag;
+
+	public boolean getCleanPreCourseFlag() {
+		return cleanPreCourseFlag;
+	}
+
+	public void setCleanPreCourseFlag(boolean cleanPreCourseFlag) {
+		this.cleanPreCourseFlag = cleanPreCourseFlag;
+	}
+
 	public void setId(Integer id){
 		this.id = id;
 	}

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupSchoolTermCourseDetailService.java

@@ -1,12 +1,13 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermCourseDetail;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.service.BaseService;
 
 public interface MusicGroupSchoolTermCourseDetailService extends BaseService<Integer, MusicGroupSchoolTermCourseDetail> {
 
     MusicGroupSchoolTermCourseDetail findByMusicGroupId(String musicGroupId);
 
-    MusicGroupSchoolTermCourseDetail upset(MusicGroupSchoolTermCourseDetail musicGroupSchoolTermCourseDetail);
+    HttpResponseResult upset(MusicGroupSchoolTermCourseDetail musicGroupSchoolTermCourseDetail);
 
 }

+ 6 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -2642,6 +2642,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         if(courseSchedules.size() == 0){
             throw new BizException("操作失败:请先预排课");
         }
+        //是否有进行中或者已结束的课程
+        int overCourseScheduleNum = courseScheduleDao.queryOverPreCourseListByMusicGroupId(termCourseDetail.getMusicGroupId());
+        if(overCourseScheduleNum > 0){
+            throw new BizException("操作失败:有进行中或已结束的课程,请重新排课");
+        }
+
         Map<Integer, List<CourseSchedule>> courseMap = courseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getClassGroupId));
         courseMap.keySet().forEach(e->{
             //更新班级课程数
@@ -2659,14 +2665,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         studentDao.updateStudentServiceTag(null, studentIds, YesOrNoEnum.YES.getCode());
         //初始化老师考勤表
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
-//        List<ClassGroup> byCourseSchedules = classGroupDao.findByCourseSchedules(courseScheduleIds);
-
-//        Map<Integer, ClassGroup> classGroupMap = new HashMap<Integer, ClassGroup>();
-//        for (ClassGroup classGroup : byCourseSchedules) {
-//            if (!classGroupMap.containsKey(classGroup.getId())) {
-//                classGroupMap.put(classGroup.getId(), classGroup);
-//            }
-//        }
         List<TeacherAttendance> teacherIdByCourseSchedule = teacherAttendanceDao.findTeacherIdByCourseSchedule(courseScheduleIds);
         Map<Long, List<TeacherAttendance>> courseScheduleTeacherAttendanceMap = teacherIdByCourseSchedule.stream()
                 .collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));

+ 9 - 21
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java

@@ -313,11 +313,13 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 
 		//总金额 = 会员费用 + 课程费用
 		BigDecimal totalPrice = musicGroupPaymentCalender.getMemberPaymentAmount();
-		if (musicGroupPaymentCalender.getPayUserType() == STUDENT) {
-			for (MusicGroupPaymentCalenderCourseSettings courseSettings : courseSettingsList) {
-				// 剔除可选课程
-				if (courseSettings.getIsStudentOptional() == false) {
-					totalPrice = totalPrice.add(courseSettings.getCourseCurrentPrice());
+		if(courseSettingsList.size() > 0){
+			if (musicGroupPaymentCalender.getPayUserType() == STUDENT) {
+				for (MusicGroupPaymentCalenderCourseSettings courseSettings : courseSettingsList) {
+					// 剔除可选课程
+					if (courseSettings.getIsStudentOptional() == false) {
+						totalPrice = totalPrice.add(courseSettings.getCourseCurrentPrice());
+					}
 				}
 			}
 		}
@@ -359,20 +361,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 
 		List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetailList = new ArrayList<MusicGroupPaymentStudentCourseDetail>();
 		MusicGroupPaymentStudentCourseDetail musicGroupPaymentStudentCourseDetail = null;
-		//如果是会员收费,按默认的6*4*4*45的课程时长来计算可排课时长(临时加课走原来的逻辑)
-		if(musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE && musicGroupPaymentCalender.getPaymentType() != MusicGroupPaymentCalender.PaymentType.ADD_COURSE){
-			for(Integer studentId : userIdList){
-				musicGroupPaymentStudentCourseDetail = new MusicGroupPaymentStudentCourseDetail();
-				musicGroupPaymentStudentCourseDetail.setCreateTime(date);
-				musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalenderId);
-				musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderDetailId(userMap.get(studentId).getId());
-				musicGroupPaymentStudentCourseDetail.setMemberCourseMinutes(6*4*4*45);
-				musicGroupPaymentStudentCourseDetail.setUpdateTime(date);
-				musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(0);
-				musicGroupPaymentStudentCourseDetail.setUserId(studentId);
-				musicGroupPaymentStudentCourseDetailList.add(musicGroupPaymentStudentCourseDetail);
-			}
-		}else {
+		if(courseSettingsList.size() > 0){
 			//创建学生课排课分钟数
 			for(Integer studentId : userIdList){
 				for(MusicGroupPaymentCalenderCourseSettings courseSettings : courseSettingsList){
@@ -388,12 +377,11 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 					musicGroupPaymentStudentCourseDetail.setUpdateTime(date);
 					musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(0);
 					musicGroupPaymentStudentCourseDetail.setUserId(studentId);
-
 					musicGroupPaymentStudentCourseDetailList.add(musicGroupPaymentStudentCourseDetail);
 				}
 			}
 		}
-		
+
 		if(musicGroupPaymentStudentCourseDetailList.size() > 0){
 			musicGroupPaymentStudentCourseDetailDao.batchInsert(musicGroupPaymentStudentCourseDetailList);
 		}

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

@@ -324,7 +324,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			musicGroupPaymentCalender.setMusicGroupId(musicGroupId);
 			musicGroupPaymentCalender.setMusicGroupOrganizationCourseSettingId(musicGroupPaymentCalenderDto.getMusicGroupOrganizationCourseSettingId());
 
-			BigDecimal totalPaymentAmount = musicGroupPaymentCalenderDto.getMemberPaymentAmount();
+			BigDecimal totalPaymentAmount = BigDecimal.ZERO;
 			if(musicGroupPaymentCalenderCourseSettingsList != null){
 				List<MusicGroupPaymentCalenderCourseSettings> newCSList = new ArrayList<MusicGroupPaymentCalenderCourseSettings>(
 						musicGroupPaymentCalenderCourseSettingsList.size());
@@ -713,7 +713,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			musicGroupPaymentCalender.setMemo(musicGroupPaymentCalenderDto.getMemo());
 			musicGroupPaymentCalender.setMusicGroupId(musicGroupId);
 			musicGroupPaymentCalender.setMusicGroupOrganizationCourseSettingId(musicGroupPaymentCalenderDto.getMusicGroupOrganizationCourseSettingId());
-			BigDecimal totalPaymentAmount = musicGroupPaymentCalenderDto.getMemberPaymentAmount();
+			BigDecimal totalPaymentAmount = BigDecimal.ZERO;
 			if(musicGroupPaymentCalenderCourseSettingsList != null){
 				List<MusicGroupPaymentCalenderCourseSettings> newCSList = new ArrayList<MusicGroupPaymentCalenderCourseSettings>(
 						musicGroupPaymentCalenderCourseSettingsList.size());

+ 28 - 20
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSchoolTermCourseDetailServiceImpl.java

@@ -5,11 +5,14 @@ import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentMemberCourseDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermCourseDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermStudentCourseDetail;
 import com.ym.mec.biz.service.MusicGroupSchoolTermCourseDetailService;
+import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.date.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -44,7 +47,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public MusicGroupSchoolTermCourseDetail upset(MusicGroupSchoolTermCourseDetail musicGroupSchoolTermCourseDetail) {
+	public HttpResponseResult upset(MusicGroupSchoolTermCourseDetail musicGroupSchoolTermCourseDetail) {
 		Date startCourseDate = musicGroupSchoolTermCourseDetail.getStartCourseDate();
 		String musicGroupId = musicGroupSchoolTermCourseDetail.getMusicGroupId();
 		//校验当前乐团是否所有学员都在班
@@ -62,25 +65,30 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 			if(startCourseDate != null){
 				//如果是重新选择的预排课时间
 				if(DateUtil.daysBetween(startCourseDate, courseDetail.getStartCourseDate()) != 0){
-					//删除乐团预排的课程
-					courseScheduleStudentPaymentDao.deletePreCourse(musicGroupId);
-					courseScheduleTeacherSalaryDao.deletePreCourse(musicGroupId);
-					courseScheduleDao.deletePreCourse(musicGroupId);
-					courseDetail.setStartCourseDate(startCourseDate);
-					getCourseDetail(courseDetail);
-					musicGroupSchoolTermCourseDetailDao.update(courseDetail);
-					//删除学员排课时长
-					musicGroupSchoolTermStudentCourseDetailDao.deleteByDetailId(courseDetail.getId());
-					//生成学员可排课时长
-					MusicGroupSchoolTermStudentCourseDetail studentCourseDetail = new MusicGroupSchoolTermStudentCourseDetail();
-					studentCourseDetail.setMusicGroupSchoolTermCourseDetailId(courseDetail.getId());
-					studentCourseDetail.setMemberCourseMinutes(courseDetail.getTotalCourseTime());
-					//获取乐团所有在读学员
-					List<Integer> studentIds = studentRegistrationDao.queryNormalUser(musicGroupId);
-					if(studentIds == null || studentIds.size() == 0){
-						throw new BizException("操作失败:该乐团没有在读学员");
+					//清空预排课
+					if(musicGroupSchoolTermCourseDetail.getCleanPreCourseFlag()){
+						//删除乐团预排的课程
+						courseScheduleStudentPaymentDao.deletePreCourse(musicGroupId);
+						courseScheduleTeacherSalaryDao.deletePreCourse(musicGroupId);
+						courseScheduleDao.deletePreCourse(musicGroupId);
+						courseDetail.setStartCourseDate(startCourseDate);
+						getCourseDetail(courseDetail);
+						musicGroupSchoolTermCourseDetailDao.update(courseDetail);
+						//删除学员排课时长
+						musicGroupSchoolTermStudentCourseDetailDao.deleteByDetailId(courseDetail.getId());
+						//生成学员可排课时长
+						MusicGroupSchoolTermStudentCourseDetail studentCourseDetail = new MusicGroupSchoolTermStudentCourseDetail();
+						studentCourseDetail.setMusicGroupSchoolTermCourseDetailId(courseDetail.getId());
+						studentCourseDetail.setMemberCourseMinutes(courseDetail.getTotalCourseTime());
+						//获取乐团所有在读学员
+						List<Integer> studentIds = studentRegistrationDao.queryNormalUser(musicGroupId);
+						if(studentIds == null || studentIds.size() == 0){
+							throw new BizException("操作失败:该乐团没有在读学员");
+						}
+						musicGroupSchoolTermStudentCourseDetailDao.init(studentCourseDetail,studentIds);
+					}else {
+						return BaseController.failed(HttpStatus.MULTI_STATUS, "修改开课日期会清空预排课,请再次确认");
 					}
-					musicGroupSchoolTermStudentCourseDetailDao.init(studentCourseDetail,studentIds);
 				}
 			}else {
 				//如果所选时间小于当前时间
@@ -108,7 +116,7 @@ public class MusicGroupSchoolTermCourseDetailServiceImpl extends BaseServiceImpl
 				musicGroupSchoolTermStudentCourseDetailDao.init(studentCourseDetail,studentIds);
 			}
 		}
-		return courseDetail;
+		return BaseController.succeed(courseDetail);
 	}
 
 	private MusicGroupSchoolTermCourseDetail getCourseDetail(MusicGroupSchoolTermCourseDetail courseDetail){

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

@@ -3899,4 +3899,8 @@
         AND mgst.music_group_school_term_course_detail_id_ = #{courseDetailId}
         GROUP BY cgsm.class_group_id_
     </select>
+    <select id="queryOverPreCourseListByMusicGroupId" resultType="int">
+        SELECT count(id_) FROM course_schedule WHERE music_group_id_ = #{musicGroupId} AND group_type_ = 'MUSIC' AND is_lock_ = 1 AND pre_course_flag_ = 1
+                                        AND CONCAT(class_date_,' ', start_class_time_) &lt;= NOW()
+    </select>
 </mapper>

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

@@ -37,20 +37,18 @@
     <insert id="insert"
             parameterType="com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail"
             useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-        <!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval
-            AS ID FROM DUAL </selectKey> -->
         INSERT INTO music_group_payment_student_course_detail
-        (id_,music_group_payment_calender_id_,music_group_payment_calender_detail_id_,user_id_,course_type_,total_course_minutes_,used_course_minutes_,create_time_,update_time_)
-        VALUES(#{id},#{musicGroupPaymentCalenderId},#{musicGroupPaymentCalenderDetailId},#{userId},#{courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{totalCourseMinutes},#{usedCourseMinutes},NOW(),NOW())
+        (music_group_payment_calender_id_,music_group_payment_calender_detail_id_,user_id_,course_type_,total_course_minutes_,used_course_minutes_,create_time_,update_time_)
+        VALUES(#{musicGroupPaymentCalenderId},#{musicGroupPaymentCalenderDetailId},#{userId},#{courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{totalCourseMinutes},#{usedCourseMinutes},NOW(),NOW())
     </insert>
 
     <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id"
             keyProperty="id">
         INSERT INTO music_group_payment_student_course_detail
-        (id_,music_group_payment_calender_id_,music_group_payment_calender_detail_id_,user_id_,course_type_,total_course_minutes_,used_course_minutes_,create_time_,update_time_)
+        (music_group_payment_calender_id_,music_group_payment_calender_detail_id_,user_id_,course_type_,total_course_minutes_,used_course_minutes_,create_time_,update_time_)
         VALUES
         <foreach collection="list" item="item" separator=",">
-            (#{item.id},#{item.musicGroupPaymentCalenderId},#{item.musicGroupPaymentCalenderDetailId},#{item.userId},#{item.courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{item.totalCourseMinutes},#{item.usedCourseMinutes},NOW(),NOW())
+            (#{item.musicGroupPaymentCalenderId},#{item.musicGroupPaymentCalenderDetailId},#{item.userId},#{item.courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{item.totalCourseMinutes},#{item.usedCourseMinutes},NOW(),NOW())
         </foreach>
     </insert>
 
@@ -71,9 +69,6 @@
             <if test="musicGroupPaymentCalenderDetailId != null">
                 music_group_payment_calender_detail_id_ = #{musicGroupPaymentCalenderDetailId},
             </if>
-            <if test="id != null">
-                id_ = #{id},
-            </if>
             <if test="musicGroupPaymentCalenderId != null">
                 music_group_payment_calender_id_ = #{musicGroupPaymentCalenderId},
             </if>

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

@@ -3,6 +3,7 @@ package com.ym.mec.web.controller;
 import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermCourseDetail;
 import com.ym.mec.biz.service.MusicGroupSchoolTermCourseDetailService;
 import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,7 +21,7 @@ public class MusicGroupSchoolTermCourseDetailController extends BaseController {
 
 	@ApiOperation("新增、修改乐团预排课详情")
 	@GetMapping(value = "upset")
-	public Object upset(MusicGroupSchoolTermCourseDetail musicGroupSchoolTermCourseDetail) {
-		return succeed(musicGroupSchoolTermCourseDetailService.upset(musicGroupSchoolTermCourseDetail));
+	public HttpResponseResult upset(MusicGroupSchoolTermCourseDetail musicGroupSchoolTermCourseDetail) {
+		return musicGroupSchoolTermCourseDetailService.upset(musicGroupSchoolTermCourseDetail);
 	}
 }