|
@@ -2919,6 +2919,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ public List<ClassGroupTeachersDto> queryClassGroupPage(ClassGroupQueryInfo queryInfo) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
public Boolean addImGroup(ClassGroup classGroup, List<Integer> userIds) {
|
|
|
MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
|
|
|
List<Integer> userIdList = new ArrayList<>();
|
|
@@ -3527,19 +3532,39 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Object queryStudentPaymentCalenders(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
|
|
|
- ArrayList masterClassGroupId = new ArrayList();
|
|
|
- masterClassGroupId.add(mergeClassSplitClassAffirmDto.getMasterClassGroupId());
|
|
|
+ public Map<Integer, List<StudentPaymentCalenderDto>> queryStudentPaymentCalenders(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
|
|
|
//获取主班剩余时长
|
|
|
- Map<String, Long> masterMap = MapUtil.convertIntegerMap(courseScheduleDao.findClassMaxCourseNumMap(masterClassGroupId));
|
|
|
- //获取其他班级剩余时长
|
|
|
- Map<String, Long> subMap = MapUtil.convertIntegerMap(courseScheduleDao.findClassMaxCourseNumMap(mergeClassSplitClassAffirmDto.getClassGroupIds()));
|
|
|
+ Map<String, Long> masterMap = MapUtil.convertIntegerMap(courseScheduleDao.querySubCourseNumMap(mergeClassSplitClassAffirmDto.getMasterClassGroupId()));
|
|
|
+ if(masterMap.size() <= 0){
|
|
|
+ throw new BizException("所选主班没有剩余课程,请重新选择");
|
|
|
+ }
|
|
|
+ //获取学员列表
|
|
|
+ Map<Integer, String> userNames = MapUtil.convertMybatisMap(teacherDao.queryUsernameByIds(mergeClassSplitClassAffirmDto.getStudentIds()));
|
|
|
+ Map<Integer, String> phoneMaps = MapUtil.convertMybatisMap(teacherDao.queryPhoneByIds(StringUtils.join(mergeClassSplitClassAffirmDto.getStudentIds(),",")));
|
|
|
+
|
|
|
+ Map<Integer, Integer> studentCLassMap = new HashMap<>();
|
|
|
+ List<Map<Integer, BigDecimal>> surplusCourseFeeMapList = new ArrayList<>();
|
|
|
+ List<Map<Integer, String>> classGroupStudents = mergeClassSplitClassAffirmDto.getClassGroupStudents();
|
|
|
+ for (Map<Integer, String> classGroupStudent : classGroupStudents) {
|
|
|
+ for (Integer integer : classGroupStudent.keySet()) {
|
|
|
+ //获取学员剩余课程费用
|
|
|
+ surplusCourseFeeMapList.addAll(studentRegistrationDao.querySurplusCourseFeeByClassGroupId(integer,classGroupStudent.get(integer)));
|
|
|
+ String[] s = classGroupStudent.get(integer).split(",");
|
|
|
+ for (String s1 : s) {
|
|
|
+ studentCLassMap.put(Integer.parseInt(s1),integer);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //学员剩余课程费用
|
|
|
+ Map<Integer, BigDecimal> surplusCourseFeeMap = MapUtil.convertIntegerMap(surplusCourseFeeMapList);
|
|
|
//获取分布默认的课程类型单价
|
|
|
MusicGroup musicGroup = musicGroupDao.findByClassGroupId(mergeClassSplitClassAffirmDto.getMasterClassGroupId());
|
|
|
Map<String, BigDecimal> unitPriceMap = MapUtil.convertIntegerMap(organizationCourseUnitPriceSettingsDao.queryMapByOrganIdAndChargeTypeId(musicGroup.getChargeTypeId(), musicGroup.getOrganId()));
|
|
|
Set<String> masterKeySet = masterMap.keySet();
|
|
|
//计算主班课程类型剩余价值
|
|
|
Map<String, BigDecimal> masterTotalPriceMap = new HashMap<>(masterKeySet.size());
|
|
|
+ //学员缴费项目列表
|
|
|
+ List<StudentPaymentCalenderDto> studentPaymentCalenderDtos = new ArrayList<>();
|
|
|
for (String s : masterKeySet) {
|
|
|
BigDecimal unitPrice = unitPriceMap.get(s);
|
|
|
if (unitPrice == null) {
|
|
@@ -3551,13 +3576,46 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
masterTotalPriceMap.put(s,BigDecimal.ZERO);
|
|
|
}
|
|
|
//总价四舍五入取整
|
|
|
- masterTotalPriceMap.put(s,unitPrice.multiply(new BigDecimal(courseTime)).setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ BigDecimal totalPrice = unitPrice.multiply(new BigDecimal(courseTime)).setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
+ masterTotalPriceMap.put(s,totalPrice);
|
|
|
+ //课程余额转移
|
|
|
+ for (Integer studentId : studentCLassMap.keySet()) {
|
|
|
+ //学员剩余课程余额
|
|
|
+ BigDecimal bigDecimal = surplusCourseFeeMap.get(studentId);
|
|
|
+ //创建学员缴费项目
|
|
|
+ StudentPaymentCalenderDto calenderDto = new StudentPaymentCalenderDto();
|
|
|
+ calenderDto.setClassGroupId(studentCLassMap.get(studentId));
|
|
|
+ //如果剩余课程余额小于等于0
|
|
|
+ if(bigDecimal.doubleValue() <= 0d){
|
|
|
+ calenderDto.setCourseCurrentPrice(totalPrice);
|
|
|
+ calenderDto.setCourseOriginalPrice(totalPrice);
|
|
|
+ }else {
|
|
|
+ //如果剩余课程余额大于等于总价值,那么补交0元
|
|
|
+ if(bigDecimal.doubleValue() >= totalPrice.doubleValue()){
|
|
|
+ calenderDto.setCourseCurrentPrice(BigDecimal.ZERO);
|
|
|
+ calenderDto.setCourseOriginalPrice(BigDecimal.ZERO);
|
|
|
+ }else {
|
|
|
+ calenderDto.setCourseCurrentPrice(totalPrice.subtract(bigDecimal));
|
|
|
+ calenderDto.setCourseOriginalPrice(totalPrice.subtract(bigDecimal));
|
|
|
+ }
|
|
|
+ //剩余课程余额减去主班对应课程类型总的课程价值,负数就是需要补交的金额
|
|
|
+// bigDecimal = bigDecimal.subtract(totalPrice);
|
|
|
+ surplusCourseFeeMap.put(studentId,bigDecimal.subtract(totalPrice));
|
|
|
+ }
|
|
|
+ calenderDto.setCourseTime(courseTime);
|
|
|
+ calenderDto.setCourseType(s);
|
|
|
+
|
|
|
+ calenderDto.setPhone(phoneMaps.get(studentId));
|
|
|
+ calenderDto.setUserId(studentId);
|
|
|
+ calenderDto.setUsername(userNames.get(studentId));
|
|
|
+ studentPaymentCalenderDtos.add(calenderDto);
|
|
|
+ }
|
|
|
}
|
|
|
- return null;
|
|
|
+ return studentPaymentCalenderDtos.stream().collect(Collectors.groupingBy(e -> e.getClassGroupId()));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Map<String, Long> querySubCourseTime(List<Integer> classGroupIds) {
|
|
|
- return MapUtil.convertIntegerMap(courseScheduleDao.findClassMaxCourseNumMap(classGroupIds));
|
|
|
+ public Map<String, Long> querySubCourseTime(Integer classGroupId) {
|
|
|
+ return MapUtil.convertIntegerMap(courseScheduleDao.querySubCourseNumMap(classGroupId));
|
|
|
}
|
|
|
}
|