Browse Source

缴费项目优化

zouxuan 3 years ago
parent
commit
cfc30aefae

+ 14 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentStudentCourseDetailDao.java

@@ -113,4 +113,18 @@ public interface MusicGroupPaymentStudentCourseDetailDao extends BaseDAO<Long, M
     void updateByCourseType(@Param("courseType") String courseType,
                             @Param("musicGroupPaymentCalenderIds") String musicGroupPaymentCalenderIds,
                             @Param("courseCurrentPrice") BigDecimal courseCurrentPrice);
+
+    /**
+     * @description: 校验学员排课时长是否一致
+     * @param musicGroupId
+     * @param courseTypes
+     * @param studentIds
+     * @return void
+     * @author zx
+     * @date 2022/3/3 19:04
+     */
+    Integer checkCourseTimes(@Param("musicGroupId") String musicGroupId,
+                          @Param("courseTypes") List<CourseSchedule.CourseScheduleType> courseTypes,
+                          @Param("studentIds") List<Integer> studentIds);
+
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassGroup4MixDto.java

@@ -25,6 +25,9 @@ public class ClassGroup4MixDto implements Cloneable{
     @ApiModelProperty(value = "是否只生成班级")
     private Boolean onlyCreateClassGroup;
 
+    @ApiModelProperty(value = "是否继续提交")
+    private Boolean checkCourseTimesFlag = false;
+
     @ApiModelProperty(value = "学生ids", required = true)
     private List<Integer> students;
 
@@ -79,6 +82,14 @@ public class ClassGroup4MixDto implements Cloneable{
     @ApiModelProperty(value = "预排课学期编号")
     private Integer musicGroupSchoolTermCourseDetailId;
 
+    public Boolean getCheckCourseTimesFlag() {
+        return checkCourseTimesFlag;
+    }
+
+    public void setCheckCourseTimesFlag(Boolean checkCourseTimesFlag) {
+        this.checkCourseTimesFlag = checkCourseTimesFlag;
+    }
+
     public Integer getMusicGroupSchoolTermCourseDetailId() {
         return musicGroupSchoolTermCourseDetailId;
     }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -159,6 +159,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private MusicGroupSchoolTermStudentCourseDetailDao musicGroupSchoolTermStudentCourseDetailDao;
     @Autowired
     private MusicGroupSchoolTermCourseDetailDao musicGroupSchoolTermCourseDetailDao;
+    @Autowired
+    private MusicGroupPaymentStudentCourseDetailDao musicGroupPaymentStudentCourseDetailDao;
 
     @Override
     public BaseDAO<Integer, ClassGroup> getDAO() {
@@ -2364,6 +2366,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         Date date = new Date();
         Integer classGroupId = classGroup4MixDtos.get(0).getClassGroupId();
         String musicGroupId = classGroup4MixDtos.get(0).getMusicGroupId();
+        Boolean checkCourseTimesFlag = classGroup4MixDtos.get(0).getCheckCourseTimesFlag();
         ClassGroup classGroup = classGroupDao.get(classGroupId);
         if (classGroup == null) {
             throw new BizException("班级不存在");
@@ -2444,6 +2447,14 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //计算每节课的课酬
         List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
         List<CourseSchedule> courseScheduleList = new ArrayList<>();
+        List<CourseScheduleType> courseTypes = classGroup4MixDtos.stream().map(e -> e.getCourseType()).distinct().collect(Collectors.toList());
+        if(!checkCourseTimesFlag){
+            //校验剩余时长是否一致
+            Integer checkCourseTimes = musicGroupPaymentStudentCourseDetailDao.checkCourseTimes(musicGroupId, courseTypes, studentIds);
+            if(checkCourseTimes == null || checkCourseTimes == 0){
+                return BaseController.failed(HttpStatus.MULTI_STATUS,"班级剩余排课时长不一致,请再次确认");
+            }
+        }
 
         for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
             List<ClassGroupTeacherMapper> teacherMappers = classGroup4MixDto.getClassGroupTeacherMapperList();

+ 13 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentStudentCourseDetailMapper.xml

@@ -271,4 +271,17 @@
             AND user_id_ = #{userId}
         </if>
     </select>
+    <select id="checkCourseTimes" resultType="integer">
+        SELECT COUNT(DISTINCT mgpscd.course_type_) >= COUNT(mgpscd.total_course_minutes_) FROM music_group_payment_student_course_detail mgpscd
+        LEFT JOIN music_group_payment_calender mgpc ON mgpscd.music_group_payment_calender_id_ = mgpc.id_
+        WHERE mgpc.music_group_id_ = #{musicGroupId} AND mgpscd.used_course_minutes_ = 0
+        AND mgpscd.course_type_ IN
+        <foreach collection="courseTypes" item="courseType" open="(" close=")" separator=",">
+            #{studentId}
+        </foreach>
+        AND mgpscd.user_id_ IN
+        <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+            #{studentId}
+        </foreach>
+    </select>
 </mapper>