Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

Joburgess 4 rokov pred
rodič
commit
691b4bbb2d

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -791,7 +791,7 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      *
      * @return
      */
-    Integer getMusicGroupHighClassNumBySubject(@Param("musicGroupId") String musicGroupId, @Param("subjectIds") String subjectIds, @Param("type") ClassGroupTypeEnum type);
+    Integer getMusicGroupHighClassNumBySubject(@Param("musicGroupId") String musicGroupId, @Param("type") ClassGroupTypeEnum type);
 
     /**
      * count班级数量

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

@@ -501,10 +501,9 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * 获取基础技能班/线上基础技能班数量和容许最大数量
      * @param musicGroupId
      * @param type
-     * @param subjectIds
      * @return
      */
-    HighClassGroupNumDto getSubjectMaxHighClassGroupNum(String musicGroupId,ClassGroupTypeEnum type,String subjectIds);
+    HighClassGroupNumDto getSubjectMaxHighClassGroupNum(String musicGroupId,ClassGroupTypeEnum type);
 
     /**
      * 进行中乐团-修改-班级详情-班级合并-获取学员需要补交的费用以及需要退还的课程余额

+ 21 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -217,11 +217,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
         //基础技能班和线上基础技能班,可分班原则为声部人数/6向上取整
         if (classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) || classGroup.getType().equals(ClassGroupTypeEnum.HIGH)) {
-            String subjectIds = classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) ? classGroup.getMemo() : classGroup.getSubjectIdList();
-            HighClassGroupNumDto highClassGroupNumDto = getSubjectMaxHighClassGroupNum(classGroup.getMusicGroupId(), classGroup.getType(), subjectIds);
+            HighClassGroupNumDto highClassGroupNumDto = getSubjectMaxHighClassGroupNum(classGroup.getMusicGroupId(), classGroup.getType());
             if (highClassGroupNumDto.getNowHighClassGroupNum() >= highClassGroupNumDto.getMaxHighClassGroupNum()) {
                 String errMsg = classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) ? "线上基础技能班" : "基础技能班";
-                throw new BizException("此乐团所选声部," + errMsg + "数量不能大于" + highClassGroupNumDto.getMaxHighClassGroupNum());
+                throw new BizException("此乐团," + errMsg + "数量不能大于" + highClassGroupNumDto.getMaxHighClassGroupNum());
             }
         }
 
@@ -3553,18 +3552,27 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
-    public HighClassGroupNumDto getSubjectMaxHighClassGroupNum(String musicGroupId, ClassGroupTypeEnum type, String subjectIds) {
+    public HighClassGroupNumDto getSubjectMaxHighClassGroupNum(String musicGroupId, ClassGroupTypeEnum type) {
         //基础技能班和线上基础技能班,可分班原则为声部人数/6向上取整
-        String[] subjectIdArr = subjectIds.split(",");
-        List<String> subjectIdList = Arrays.asList(subjectIdArr);
-        if (subjectIdList.contains("14") || subjectIdList.contains("15")) {
-            subjectIds += ",14,15";
-        }
+        List<StudentRegistration> musicGroupStudents = studentRegistrationDao.findMusicGroupStudent(musicGroupId, null);
+        Map<Integer, List<StudentRegistration>> regMap = musicGroupStudents.stream().collect(Collectors.groupingBy(StudentRegistration::getActualSubjectId));
+        int maxClassGroupNum = 0;
+        int otherSubjectRegNum = 0;
+        for (Map.Entry<Integer, List<StudentRegistration>> regEntry : regMap.entrySet()) {
+            //上低音号、长号 合并计算
+            if (regEntry.getKey().equals(14) || regEntry.getKey().equals(15)) {
+                otherSubjectRegNum += regEntry.getValue().size();
+            }
+            int classNum = regEntry.getValue().size() / 6;
+            classNum += (regEntry.getValue().size() % 6) > 0 ? 1 : 0;
+            maxClassGroupNum += classNum;
+        }
+        maxClassGroupNum += otherSubjectRegNum / 6;
+        maxClassGroupNum += (otherSubjectRegNum % 6) > 0 ? 1 : 0;
+
         HighClassGroupNumDto highClassGroupNumDto = new HighClassGroupNumDto();
-        int nowClassGroupNum = classGroupDao.getMusicGroupHighClassNumBySubject(musicGroupId, subjectIds, type);
-        int subjectStudentNum = studentRegistrationDao.getMusicGroupSubjectStudentNum(musicGroupId, subjectIds);
-        int maxClassGroupNum = subjectStudentNum / 6;
-        maxClassGroupNum += (subjectStudentNum % 6) > 0 ? 1 : 0;
+        int nowClassGroupNum = classGroupDao.getMusicGroupHighClassNumBySubject(musicGroupId, type);
+
         highClassGroupNumDto.setNowHighClassGroupNum(nowClassGroupNum);
         highClassGroupNumDto.setMaxHighClassGroupNum(maxClassGroupNum);
         return highClassGroupNumDto;

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

@@ -1158,7 +1158,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 					continue;
 				}
 				//如果乐团还在审核中
-				if(musicGroup.getStatus() == MusicGroupStatusEnum.DRAFT || musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT|| musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT_FAILED){
+				if(musicGroup.getStatus() == MusicGroupStatusEnum.DRAFT || musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT|| musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT_FAILED || musicGroup.getStatus() == MusicGroupStatusEnum.CLOSE){
 					continue;
 				}
 				// “未开始”更新至“进行中”

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

@@ -402,8 +402,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         studentPaymentOrder.setVersion(0);
         BigDecimal balance = BigDecimal.ZERO;
         if (sporadicPayDto.getUseBalancePayment() && amount.compareTo(BigDecimal.ZERO) > 0) {
-            if (chargeInfo.getChargeType().getCode().equals(9)||chargeInfo.getChargeType().getCode().equals(13)) {
-                throw new BizException(chargeInfo.getChargeType().getMsg()+"不支持余额支付");
+            if (chargeInfo.getChargeType().getCode().equals(9) || chargeInfo.getChargeType().getCode().equals(13)) {
+                throw new BizException(chargeInfo.getChargeType().getMsg() + "不支持余额支付");
             }
             SysUserCashAccount userCashAccount = sysUserCashAccountService.get(userId);
 
@@ -919,22 +919,47 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         String musicGroupId = subFeeSettingDto.getMusicGroupId();
         //乐团状态是否正确
         MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
-        if (musicGroup != null) {
-            if (subFeeSettingDto.getMusicGroupStatus() == null) {
-                throw new BizException("参数校验异常");
-            }
-            if (musicGroup.getStatus() == MusicGroupStatusEnum.DRAFT || musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT_FAILED) {
-                musicGroup.setStatus(subFeeSettingDto.getMusicGroupStatus());
-                musicGroup.setUpdateTime(new Date());
-                musicGroupDao.update(musicGroup);
-            }
-            //记录日志信息
-            musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "修改乐团计划声部、乐器", sysUser.getId(), JSONObject.toJSONString(subFeeSettingDto)));
-            //删除原有的乐团声部规划
-            musicGroupSubjectPlanDao.delByMusicGroupId(musicGroupId);
-            //删除原有的声部商品组合
-            musicGroupSubjectGoodsGroupDao.delByMusicGroupId(subFeeSettingDto.getMusicGroupId());
-            //如果是进行中,补充缴费信息
+        if (musicGroup == null) {
+            throw new BizException("乐团信息不存在");
+        }
+        if (subFeeSettingDto.getMusicGroupStatus() == null) {
+            throw new BizException("参数校验异常");
+        }
+        //声部存在学生不容许删除声部
+        List<StudentRegistration> registrations = studentRegistrationDao.findClassGroupStu(musicGroupId, null);
+        Map<Integer, List<StudentRegistration>> regMap = registrations.stream().collect(Collectors.groupingBy(StudentRegistration::getActualSubjectId));
+        List<MusicGroupSubjectPlan> musicGroupSubjectPlans = subFeeSettingDto.getMusicGroupSubjectPlans();
+        List<Integer> waringSubjectIds = new ArrayList<>();
+        regMap.forEach((subjectId, regs) -> {
+            boolean hasSubject = false;
+            for (MusicGroupSubjectPlan musicGroupSubjectPlan : musicGroupSubjectPlans) {
+                if (musicGroupSubjectPlan.getSubjectId().equals(subjectId)) {
+                    hasSubject = true;
+                    musicGroupSubjectPlan.setApplyStudentNum(regs.size());
+                }
+            }
+            if (!hasSubject) {
+                waringSubjectIds.add(subjectId);
+            }
+        });
+        if (waringSubjectIds.size() > 0) {
+            List<Subject> waringSubjects = subjectDao.findBySubjectIds(waringSubjectIds);
+            String waringSubjectStr  = waringSubjects.stream().map(Subject::getName).collect(Collectors.joining(","));
+            throw new BizException(waringSubjectStr+"存在学生,不能删除");
+        }
+
+        if (musicGroup.getStatus() == MusicGroupStatusEnum.DRAFT || musicGroup.getStatus() == MusicGroupStatusEnum.AUDIT_FAILED) {
+            musicGroup.setStatus(subFeeSettingDto.getMusicGroupStatus());
+            musicGroup.setUpdateTime(new Date());
+            musicGroupDao.update(musicGroup);
+        }
+        //记录日志信息
+        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "修改乐团计划声部、乐器", sysUser.getId(), JSONObject.toJSONString(subFeeSettingDto)));
+        //删除原有的乐团声部规划
+        musicGroupSubjectPlanDao.delByMusicGroupId(musicGroupId);
+        //删除原有的声部商品组合
+        musicGroupSubjectGoodsGroupDao.delByMusicGroupId(subFeeSettingDto.getMusicGroupId());
+        //如果是进行中,补充缴费信息
 //            if(musicGroup.getStatus() == MusicGroupStatusEnum.PROGRESS){
 //                List<MusicGroupStudentFee> musicGroupStudentFees = musicGroupStudentFeeDao.initMusicGroupStudentFee(musicGroupId);
 //                if(musicGroupStudentFees != null && musicGroupStudentFees.size() > 0){
@@ -942,30 +967,26 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 //                    musicGroupStudentFeeDao.batchInsert(musicGroupStudentFees,nextPaymentDate,"PAID_COMPLETED");
 //                }
 //            }
-            List<MusicGroupSubjectPlan> musicGroupSubjectPlans = subFeeSettingDto.getMusicGroupSubjectPlans();
-            if (musicGroupSubjectPlans != null && musicGroupSubjectPlans.size() > 0) {
-                musicGroupSubjectPlans.forEach(e -> {
-                    //修改课程费用
-                    musicGroupStudentFeeDao.updateCourseFee(musicGroupId, e.getSubjectId(), e.getFee());
-                });
-                musicGroupSubjectPlanDao.batchAdd(musicGroupSubjectPlans, musicGroupId);
-            }
-            if (subFeeSettingDto.getMusicGroupSubjectGoodsGroups() != null && subFeeSettingDto.getMusicGroupSubjectGoodsGroups().size() > 0) {
-                for (MusicGroupSubjectGoodsGroup musicGroupSubjectGoodsGroup : subFeeSettingDto.getMusicGroupSubjectGoodsGroups()) {
-                    if (musicGroupSubjectGoodsGroup.getType().equals(GoodsType.INSTRUMENT) && (musicGroupSubjectGoodsGroup.getKitGroupPurchaseTypeJson() == null
-                            || musicGroupSubjectGoodsGroup.getKitGroupPurchaseTypeJson().isEmpty()
-                            || musicGroupSubjectGoodsGroup.getKitGroupPurchaseTypeJson().equals("{}"))) {
-                        throw new BizException(musicGroupSubjectGoodsGroup.getName() + " 请选择提供方式");
-                    }
-                    if (musicGroupSubjectGoodsGroup.getGroupRemissionCourseFee() == null) {
-                        musicGroupSubjectGoodsGroup.setGroupRemissionCourseFee(0);
-                    }
+        if (musicGroupSubjectPlans != null && musicGroupSubjectPlans.size() > 0) {
+            musicGroupSubjectPlans.forEach(e -> {
+                //修改课程费用
+                musicGroupStudentFeeDao.updateCourseFee(musicGroupId, e.getSubjectId(), e.getFee());
+            });
+            musicGroupSubjectPlanDao.batchAdd(musicGroupSubjectPlans, musicGroupId);
+        }
+        if (subFeeSettingDto.getMusicGroupSubjectGoodsGroups() != null && subFeeSettingDto.getMusicGroupSubjectGoodsGroups().size() > 0) {
+            for (MusicGroupSubjectGoodsGroup musicGroupSubjectGoodsGroup : subFeeSettingDto.getMusicGroupSubjectGoodsGroups()) {
+                if (musicGroupSubjectGoodsGroup.getType().equals(GoodsType.INSTRUMENT) && (musicGroupSubjectGoodsGroup.getKitGroupPurchaseTypeJson() == null
+                        || musicGroupSubjectGoodsGroup.getKitGroupPurchaseTypeJson().isEmpty()
+                        || musicGroupSubjectGoodsGroup.getKitGroupPurchaseTypeJson().equals("{}"))) {
+                    throw new BizException(musicGroupSubjectGoodsGroup.getName() + " 请选择提供方式");
+                }
+                if (musicGroupSubjectGoodsGroup.getGroupRemissionCourseFee() == null) {
+                    musicGroupSubjectGoodsGroup.setGroupRemissionCourseFee(0);
                 }
-
-                musicGroupSubjectGoodsGroupDao.batchInsert(subFeeSettingDto.getMusicGroupSubjectGoodsGroups(), musicGroupId);
             }
-        } else {
-            throw new BizException("乐团信息不存在");
+
+            musicGroupSubjectGoodsGroupDao.batchInsert(subFeeSettingDto.getMusicGroupSubjectGoodsGroups(), musicGroupId);
         }
     }
 

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

@@ -1401,7 +1401,6 @@
     <select id="getMusicGroupHighClassNumBySubject" resultType="int">
         SELECT COUNT(*) FROM class_group WHERE music_group_id_=#{musicGroupId}
         AND type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} AND del_flag_ = '0'
-        AND INTE_ARRAY(subject_id_list_,#{subjectIds})
     </select>
 
     <sql id="queryClassGroupPageSql">

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

@@ -865,6 +865,6 @@
     </select>
 
     <select id="getAdaPayOrdersByTime" resultMap="StudentPaymentOrder"><![CDATA[
-        SELECT * FROM student_payment_order WHERE create_time_ >= #{startTime} AND create_time_ <= #{endTime} AND payment_channel_='ADAPAY' AND status_ ='SUCCESS']]>
+        SELECT * FROM student_payment_order WHERE pay_time_ >= #{startTime} AND pay_time_ <= #{endTime} AND payment_channel_='ADAPAY' AND status_ ='SUCCESS']]>
     </select>
 </mapper>

+ 0 - 7
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupController.java

@@ -419,11 +419,4 @@ public class ClassGroupController extends BaseController {
 //        return succeed(classGroupService.findClassCourseMinuteMap(classGroupIds));
 //    }
 
-    @ApiOperation(value = "获取乐团声部现有及容许的最大班级数量")
-    @PostMapping("/getSubjectNowAndMaxHighClassGroupNum")
-    @PreAuthorize("@pcs.hasPermissions('classGroup/getSubjectNowAndMaxHighClassGroupNum')")
-    public HttpResponseResult<HighClassGroupNumDto> getSubjectNowAndMaxHighClassGroupNum(String musicGroupId, ClassGroupTypeEnum type, String subjectIds) {
-        return succeed(classGroupService.getSubjectMaxHighClassGroupNum(musicGroupId, type, subjectIds));
-    }
-
 }