Explorar o código

Merge remote-tracking branch 'origin/master'

zouxuan %!s(int64=4) %!d(string=hai) anos
pai
achega
434eaee27c

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

@@ -46,6 +46,9 @@ public class MusicGroupSubjectGoodsGroup {
 	//团购减免课程费用
 	//团购减免课程费用
 	private BigDecimal remissionCourseFee;
 	private BigDecimal remissionCourseFee;
 
 
+	//团购减免课程费用 1-是 0-否
+	private Integer groupRemissionCourseFee;
+
 	//租赁押金
 	//租赁押金
 	private BigDecimal depositFee;
 	private BigDecimal depositFee;
 
 
@@ -205,4 +208,11 @@ public class MusicGroupSubjectGoodsGroup {
 		return ToStringBuilder.reflectionToString(this);
 		return ToStringBuilder.reflectionToString(this);
 	}
 	}
 
 
+	public Integer getGroupRemissionCourseFee() {
+		return groupRemissionCourseFee;
+	}
+
+	public void setGroupRemissionCourseFee(Integer groupRemissionCourseFee) {
+		this.groupRemissionCourseFee = groupRemissionCourseFee;
+	}
 }
 }

+ 25 - 22
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -229,12 +229,14 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
         someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
             List<String> deductReasons = new ArrayList<>();
             List<String> deductReasons = new ArrayList<>();
 
 
+            BigDecimal expectSalary = courseScheduleTeacherSalary.getExpectSalary();
+
             BigDecimal subsidy = courseSubsidyMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
             BigDecimal subsidy = courseSubsidyMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
             if (Objects.isNull(subsidy)) {
             if (Objects.isNull(subsidy)) {
                 subsidy = new BigDecimal(0);
                 subsidy = new BigDecimal(0);
             }
             }
             courseScheduleTeacherSalary.setSubsidy(subsidy);
             courseScheduleTeacherSalary.setSubsidy(subsidy);
-            courseScheduleTeacherSalary.setExpectSalary(courseScheduleTeacherSalary.getExpectSalary().add(subsidy));
+            expectSalary = expectSalary.add(subsidy);
 
 
             if(BigDecimal.ZERO.compareTo(subsidy)!=0){
             if(BigDecimal.ZERO.compareTo(subsidy)!=0){
                 deductReasons.add("教学点补贴:" + subsidy);
                 deductReasons.add("教学点补贴:" + subsidy);
@@ -242,7 +244,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
 
             Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
             Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
             if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0){
             if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0){
-                courseScheduleTeacherSalary.setExpectSalary(courseScheduleTeacherSalary.getExpectSalary().multiply(new BigDecimal("0.8")));
+                expectSalary = expectSalary.multiply(new BigDecimal("0.8"));
                 deductReasons.add("未转正");
                 deductReasons.add("未转正");
             }
             }
 
 
@@ -254,7 +256,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
             TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
             if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
             if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
                 //未签到扣除全部课酬
                 //未签到扣除全部课酬
-                deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                deductCost = deductCost.add(expectSalary);
                 deductReasons.add("未签到扣除全部课酬");
                 deductReasons.add("未签到扣除全部课酬");
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
                 //异常签到
                 //异常签到
@@ -262,18 +264,18 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
                 float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
                 if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
                 if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
                     //课程开始前1分钟至开始后3分钟进入教室
                     //课程开始前1分钟至开始后3分钟进入教室
-                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
+                    deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)));
                     deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
                     deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
                 }else if(signCourseTimeBetween<=-3){
                 }else if(signCourseTimeBetween<=-3){
                     //课程开始后3分钟后进入教室
                     //课程开始后3分钟后进入教室
-                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                    deductCost = deductCost.add(expectSalary);
                     deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
                     deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
                 }
                 }
             }
             }
 
 
             if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
             if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
                 //未签退扣除全部课酬
                 //未签退扣除全部课酬
-                deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                deductCost = deductCost.add(expectSalary);
                 deductReasons.add("未签退扣除全部课酬");
                 deductReasons.add("未签退扣除全部课酬");
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
                 //异常签退
                 //异常签退
@@ -282,16 +284,16 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
 
                 if(signOutCourseTimeBetween>3){
                 if(signOutCourseTimeBetween>3){
                     //课程开始前20分钟至开始后3分钟退出教室
                     //课程开始前20分钟至开始后3分钟退出教室
-                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                    deductCost = deductCost.add(expectSalary);
                     deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
                     deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
                 }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
                 }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
                     //课程结束前3分钟后至课程结束前退出教室
                     //课程结束前3分钟后至课程结束前退出教室
-                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
+                    deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)));
                     deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
                     deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
                 }
                 }
             }
             }
 
 
-            BigDecimal finalSalary = courseScheduleTeacherSalary.getExpectSalary().subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
+            BigDecimal finalSalary = expectSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
 
 
             if(BigDecimal.ZERO.compareTo(deductCost)<0){
             if(BigDecimal.ZERO.compareTo(deductCost)<0){
                 deductReasons.add("扣除总费用:" + deductCost);
                 deductReasons.add("扣除总费用:" + deductCost);
@@ -363,21 +365,23 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
 
         //处理课酬信息
         //处理课酬信息
         someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
         someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
-
             List<String> deductReasons = new ArrayList<>();
             List<String> deductReasons = new ArrayList<>();
+
+            BigDecimal expectSalary = courseScheduleTeacherSalary.getExpectSalary();
+
             BigDecimal subsidy = courseSubsidyMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
             BigDecimal subsidy = courseSubsidyMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
             if (Objects.isNull(subsidy)) {
             if (Objects.isNull(subsidy)) {
                 subsidy = new BigDecimal(0);
                 subsidy = new BigDecimal(0);
             }
             }
             courseScheduleTeacherSalary.setSubsidy(subsidy);
             courseScheduleTeacherSalary.setSubsidy(subsidy);
-            courseScheduleTeacherSalary.setExpectSalary(courseScheduleTeacherSalary.getExpectSalary().add(subsidy));
+            expectSalary = expectSalary.add(subsidy);
             if(BigDecimal.ZERO.compareTo(subsidy)!=0){
             if(BigDecimal.ZERO.compareTo(subsidy)!=0){
                 deductReasons.add("教学点补贴:" + subsidy);
                 deductReasons.add("教学点补贴:" + subsidy);
             }
             }
 
 
             Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
             Teacher teacher = idTeacherMap.get(courseScheduleTeacherSalary.getUserId());
             if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0){
             if(Objects.isNull(teacher)||Objects.isNull(teacher.getFormalStaffDate())||courseScheduleTeacherSalary.getCourseSchedule().getClassDate().compareTo(teacher.getFormalStaffDate())<0){
-                courseScheduleTeacherSalary.setExpectSalary(courseScheduleTeacherSalary.getExpectSalary().multiply(new BigDecimal("0.8")));
+                expectSalary = expectSalary.multiply(new BigDecimal("0.8"));
                 deductReasons.add("未转正");
                 deductReasons.add("未转正");
             }
             }
 
 
@@ -388,7 +392,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
             TeacherAttendance teacherAttendance = courseTeacherAttendances.get(0);
             if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
             if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignInStatus())){
                 //未签到扣除全部课酬
                 //未签到扣除全部课酬
-                deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                deductCost = deductCost.add(expectSalary);
                 deductReasons.add("未签到扣除全部课酬");
                 deductReasons.add("未签到扣除全部课酬");
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
                 //异常签到
                 //异常签到
@@ -396,24 +400,23 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
                 float signCourseTimeBetween = (float)signCourseTimeBetweenSeconds/(float)60;
                 if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
                 if(signCourseTimeBetween<=1&&signCourseTimeBetween>-3){
                     //课程开始前1分钟至开始后3分钟进入教室
                     //课程开始前1分钟至开始后3分钟进入教室
-                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
+                    deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)));
                     deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
                     deductReasons.add("课程开始前1分钟至开始后3分钟进入教室扣除一半课酬");
                 }else if(signCourseTimeBetween<=-3){
                 }else if(signCourseTimeBetween<=-3){
                     //课程开始后3分钟后进入教室
                     //课程开始后3分钟后进入教室
-                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                    deductCost = deductCost.add(expectSalary);
                     deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
                     deductReasons.add("课程开始后3分钟进入教室扣除全部课酬");
                 }
                 }
 
 
                 if(TeachModeEnum.OFFLINE.equals(courseScheduleTeacherSalary.getCourseSchedule().getTeachMode())){
                 if(TeachModeEnum.OFFLINE.equals(courseScheduleTeacherSalary.getCourseSchedule().getTeachMode())){
-                    deductCost = courseScheduleTeacherSalary.getExpectSalary();
-                    deductReasons.clear();
+                    deductCost = deductCost.add(expectSalary);
                     deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
                     deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
                 }
                 }
             }
             }
 
 
             if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
             if(CollectionUtils.isEmpty(courseTeacherAttendances)||Objects.isNull(teacherAttendance.getSignOutStatus())){
                 //未签退扣除全部课酬
                 //未签退扣除全部课酬
-                deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                deductCost = deductCost.add(expectSalary);
                 deductReasons.add("未签退扣除全部课酬");
                 deductReasons.add("未签退扣除全部课酬");
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
             }else if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
                 //异常签退
                 //异常签退
@@ -422,16 +425,16 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
 
                 if(signOutCourseTimeBetween>3){
                 if(signOutCourseTimeBetween>3){
                     //课程开始前20分钟至开始后3分钟退出教室
                     //课程开始前20分钟至开始后3分钟退出教室
-                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                    deductCost = deductCost.add(expectSalary);
                     deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
                     deductReasons.add("课程结束前3分钟之前退出教室扣除全部课酬");
                 }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
                 }else if(signOutCourseTimeBetween<=3&&signOutCourseTimeBetween>0){
                     //课程结束前3分钟后至课程结束前退出教室
                     //课程结束前3分钟后至课程结束前退出教室
-                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary().divide(new BigDecimal(2)));
+                    deductCost = deductCost.add(expectSalary.divide(new BigDecimal(2)));
                     deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
                     deductReasons.add("课程结束前3分钟后至课程结束前退出教室扣除一半课酬");
                 }
                 }
 
 
                 if(TeachModeEnum.OFFLINE.equals(courseScheduleTeacherSalary.getCourseSchedule().getTeachMode())){
                 if(TeachModeEnum.OFFLINE.equals(courseScheduleTeacherSalary.getCourseSchedule().getTeachMode())){
-                    deductCost = deductCost.add(courseScheduleTeacherSalary.getExpectSalary());
+                    deductCost = deductCost.add(expectSalary);
                     deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
                     deductReasons.add("点名时经纬度不在范围内扣除全部课酬");
                 }
                 }
             }
             }
@@ -442,7 +445,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             if(!CollectionUtils.isEmpty(deductReasons))
             if(!CollectionUtils.isEmpty(deductReasons))
                 courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
                 courseScheduleTeacherSalary.setDeductionReason(StringUtils.join(deductReasons, ";"));
 
 
-            BigDecimal finalSalary = courseScheduleTeacherSalary.getExpectSalary().subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
+            BigDecimal finalSalary = expectSalary.subtract(deductCost).setScale(BigDecimal.ZERO.intValue(), BigDecimal.ROUND_HALF_UP);
 
 
             courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
             courseScheduleTeacherSalary.setActualSalary(finalSalary.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:finalSalary);
             courseScheduleTeacherSalary.setSettlementTime(now);
             courseScheduleTeacherSalary.setSettlementTime(now);

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

@@ -252,7 +252,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				if(dtoStatus != null && dtoStatus == AUDITING){
 				if(dtoStatus != null && dtoStatus == AUDITING){
 					status = AUDITING;
 					status = AUDITING;
 				}else {
 				}else {
-					// 如果是临时加课,是否审核是根据单价判断
+					// 如果是临时加课,判断是否审核
 					for (MusicGroupPaymentCalenderCourseSettings courseSettings : musicGroupPaymentCalenderCourseSettingsList) {
 					for (MusicGroupPaymentCalenderCourseSettings courseSettings : musicGroupPaymentCalenderCourseSettingsList) {
 						OrganizationCourseUnitPriceSettings defaultUnitPrice = organizationCourseUnitPriceSettingsDao.queryByOrganIdAndCourseTypeAndChargeType(
 						OrganizationCourseUnitPriceSettings defaultUnitPrice = organizationCourseUnitPriceSettingsDao.queryByOrganIdAndCourseTypeAndChargeType(
 								musicGroup.getOrganId(), courseSettings.getCourseType(), musicGroup.getChargeTypeId());
 								musicGroup.getOrganId(), courseSettings.getCourseType(), musicGroup.getChargeTypeId());
@@ -260,10 +260,10 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 							throw new BizException("请先设置分部课程类型单价");
 							throw new BizException("请先设置分部课程类型单价");
 						}
 						}
 						if (courseSettings.getCourseTotalMinuties() != 0) {
 						if (courseSettings.getCourseTotalMinuties() != 0) {
-							if (courseSettings
-									.getCourseCurrentPrice()
-									.divide(new BigDecimal(courseSettings.getCourseTotalMinuties()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN)
-									.compareTo(defaultUnitPrice.getUnitPrice()) != 0) {
+							
+							if (defaultUnitPrice.getUnitPrice().multiply(new BigDecimal(courseSettings.getCourseTotalMinuties()))
+									.compareTo(courseSettings.getCourseCurrentPrice()) != 0) {
+
 								status = AUDITING;
 								status = AUDITING;
 								break;
 								break;
 							}
 							}
@@ -319,17 +319,17 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 						tempPccs.setCourseTotalMinuties(pccs.getCourseTotalMinuties());
 						tempPccs.setCourseTotalMinuties(pccs.getCourseTotalMinuties());
 					} else {
 					} else {
 						tempPccs.setCourseCurrentPrice(pccs.getCourseCurrentPrice().subtract(
 						tempPccs.setCourseCurrentPrice(pccs.getCourseCurrentPrice().subtract(
-								pccs.getCourseCurrentPrice().divide(new BigDecimal(times), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(times - 1))
-										.setScale(2, BigDecimal.ROUND_DOWN)));
+								pccs.getCourseCurrentPrice().divide(new BigDecimal(times), 0, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(times - 1))
+										.setScale(0, BigDecimal.ROUND_DOWN)));
 						tempPccs.setCourseOriginalPrice(pccs.getCourseOriginalPrice().subtract(
 						tempPccs.setCourseOriginalPrice(pccs.getCourseOriginalPrice().subtract(
-								pccs.getCourseOriginalPrice().divide(new BigDecimal(times), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(times - 1))
-										.setScale(2, BigDecimal.ROUND_DOWN)));
+								pccs.getCourseOriginalPrice().divide(new BigDecimal(times), 0, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(times - 1))
+										.setScale(0, BigDecimal.ROUND_DOWN)));
 						tempPccs.setCourseTotalMinuties(pccs.getCourseTotalMinuties() - pccs.getCourseTotalMinuties() / times * (times - 1));
 						tempPccs.setCourseTotalMinuties(pccs.getCourseTotalMinuties() - pccs.getCourseTotalMinuties() / times * (times - 1));
 					}
 					}
 				} else {
 				} else {
 					if (!pccs.getIsStudentOptional()) {
 					if (!pccs.getIsStudentOptional()) {
-						tempPccs.setCourseCurrentPrice(pccs.getCourseCurrentPrice().divide(new BigDecimal(times), 2, BigDecimal.ROUND_DOWN));
-						tempPccs.setCourseOriginalPrice(pccs.getCourseOriginalPrice().divide(new BigDecimal(times), 2, BigDecimal.ROUND_DOWN));
+						tempPccs.setCourseCurrentPrice(pccs.getCourseCurrentPrice().divide(new BigDecimal(times), 0, BigDecimal.ROUND_DOWN));
+						tempPccs.setCourseOriginalPrice(pccs.getCourseOriginalPrice().divide(new BigDecimal(times), 0, BigDecimal.ROUND_DOWN));
 						tempPccs.setCourseTotalMinuties(pccs.getCourseTotalMinuties() / times);
 						tempPccs.setCourseTotalMinuties(pccs.getCourseTotalMinuties() / times);
 					} else {
 					} else {
 						continue;
 						continue;
@@ -563,7 +563,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 					}
 					}
 				}
 				}
 			} else if (paymentType == PaymentType.ADD_COURSE || paymentType == PaymentType.ADD_STUDENT) {
 			} else if (paymentType == PaymentType.ADD_COURSE || paymentType == PaymentType.ADD_STUDENT) {
-				// 如果是临时加课,是否审核是根据单价判断
+				// 如果是临时加课,判断是否审核
 				for (MusicGroupPaymentCalenderCourseSettings courseSettings : musicGroupPaymentCalenderCourseSettingsList) {
 				for (MusicGroupPaymentCalenderCourseSettings courseSettings : musicGroupPaymentCalenderCourseSettingsList) {
 					OrganizationCourseUnitPriceSettings defaultUnitPrice = organizationCourseUnitPriceSettingsDao.queryByOrganIdAndCourseTypeAndChargeType(
 					OrganizationCourseUnitPriceSettings defaultUnitPrice = organizationCourseUnitPriceSettingsDao.queryByOrganIdAndCourseTypeAndChargeType(
 							musicGroup.getOrganId(), courseSettings.getCourseType(), musicGroup.getChargeTypeId());
 							musicGroup.getOrganId(), courseSettings.getCourseType(), musicGroup.getChargeTypeId());
@@ -571,9 +571,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 						throw new BizException("请先设置分部课程类型单价");
 						throw new BizException("请先设置分部课程类型单价");
 					}
 					}
 					if (courseSettings.getCourseTotalMinuties() != 0) {
 					if (courseSettings.getCourseTotalMinuties() != 0) {
-						if (courseSettings.getCourseCurrentPrice()
-								.divide(new BigDecimal(courseSettings.getCourseTotalMinuties()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN)
-								.compareTo(defaultUnitPrice.getUnitPrice()) != 0) {
+						if (defaultUnitPrice.getUnitPrice().multiply(new BigDecimal(courseSettings.getCourseTotalMinuties()))
+								.compareTo(courseSettings.getCourseCurrentPrice()) != 0) {
+
 							status = AUDITING;
 							status = AUDITING;
 							break;
 							break;
 						}
 						}
@@ -628,17 +628,17 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 						tempPccs.setCourseTotalMinuties(pccs.getCourseTotalMinuties());
 						tempPccs.setCourseTotalMinuties(pccs.getCourseTotalMinuties());
 					} else {
 					} else {
 						tempPccs.setCourseCurrentPrice(pccs.getCourseCurrentPrice().subtract(
 						tempPccs.setCourseCurrentPrice(pccs.getCourseCurrentPrice().subtract(
-								pccs.getCourseCurrentPrice().divide(new BigDecimal(times), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(times - 1))
-										.setScale(2, BigDecimal.ROUND_DOWN)));
+								pccs.getCourseCurrentPrice().divide(new BigDecimal(times), 0, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(times - 1))
+										.setScale(0, BigDecimal.ROUND_DOWN)));
 						tempPccs.setCourseOriginalPrice(pccs.getCourseOriginalPrice().subtract(
 						tempPccs.setCourseOriginalPrice(pccs.getCourseOriginalPrice().subtract(
-								pccs.getCourseOriginalPrice().divide(new BigDecimal(times), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(times - 1))
-										.setScale(2, BigDecimal.ROUND_DOWN)));
+								pccs.getCourseOriginalPrice().divide(new BigDecimal(times), 0, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(times - 1))
+										.setScale(0, BigDecimal.ROUND_DOWN)));
 						tempPccs.setCourseTotalMinuties(pccs.getCourseTotalMinuties() - pccs.getCourseTotalMinuties() / times * (times - 1));
 						tempPccs.setCourseTotalMinuties(pccs.getCourseTotalMinuties() - pccs.getCourseTotalMinuties() / times * (times - 1));
 					}
 					}
 				} else {
 				} else {
 					if (!pccs.getIsStudentOptional()) {
 					if (!pccs.getIsStudentOptional()) {
-						tempPccs.setCourseCurrentPrice(pccs.getCourseCurrentPrice().divide(new BigDecimal(times), 2, BigDecimal.ROUND_DOWN));
-						tempPccs.setCourseOriginalPrice(pccs.getCourseOriginalPrice().divide(new BigDecimal(times), 2, BigDecimal.ROUND_DOWN));
+						tempPccs.setCourseCurrentPrice(pccs.getCourseCurrentPrice().divide(new BigDecimal(times), 0, BigDecimal.ROUND_DOWN));
+						tempPccs.setCourseOriginalPrice(pccs.getCourseOriginalPrice().divide(new BigDecimal(times), 0, BigDecimal.ROUND_DOWN));
 						tempPccs.setCourseTotalMinuties(pccs.getCourseTotalMinuties() / times);
 						tempPccs.setCourseTotalMinuties(pccs.getCourseTotalMinuties() / times);
 					}
 					}
 				}
 				}
@@ -1259,9 +1259,6 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		if (calender == null) {
 		if (calender == null) {
 			throw new BizException("缴费信息不存在");
 			throw new BizException("缴费信息不存在");
 		}
 		}
-		if(calender.getPaymentType() == MUSIC_APPLY){
-			throw new BizException("报名的缴费记录不能删除");
-		}
 		if (calender.getStatus() != PaymentCalenderStatusEnum.AUDITING && calender.getStatus() != PaymentCalenderStatusEnum.NO
 		if (calender.getStatus() != PaymentCalenderStatusEnum.AUDITING && calender.getStatus() != PaymentCalenderStatusEnum.NO
 				&& calender.getStatus() != PaymentCalenderStatusEnum.REJECT) {
 				&& calender.getStatus() != PaymentCalenderStatusEnum.REJECT) {
 			throw new BizException("删除失败,只有[审核中]、[拒绝]或[未开启缴费]状态才能删除");
 			throw new BizException("删除失败,只有[审核中]、[拒绝]或[未开启缴费]状态才能删除");

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

@@ -516,7 +516,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         orderAmount = orderAmount.add(courseFee);
         orderAmount = orderAmount.add(courseFee);
 
 
         BigDecimal remitFee = BigDecimal.ZERO;
         BigDecimal remitFee = BigDecimal.ZERO;
-        BigDecimal courseRemitFee = BigDecimal.ZERO;
+        BigDecimal courseRemitFee = BigDecimal.ZERO; //课程减免费用
+        boolean remitCourseRFeeFlag = false; //减免课程费用标识
 
 
         //乐器及打包辅件
         //乐器及打包辅件
         List<MusicGroupSubjectGoodsGroup> goodsGroups = new ArrayList<>();
         List<MusicGroupSubjectGoodsGroup> goodsGroups = new ArrayList<>();
@@ -560,8 +561,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 Map<String, BigDecimal> groupType = JSONObject.parseObject(goodsGroup.getKitGroupPurchaseTypeJson(), new TypeReference<Map<String, BigDecimal>>() {
                 Map<String, BigDecimal> groupType = JSONObject.parseObject(goodsGroup.getKitGroupPurchaseTypeJson(), new TypeReference<Map<String, BigDecimal>>() {
                 });
                 });
 
 
-                Map<String, BigDecimal> coursePurchase = JSONObject.parseObject(goodsGroup.getCoursePurchaseTypeJson(), new TypeReference<Map<String, BigDecimal>>() {
-                });
                 if (goodsGroup.getType().equals(GoodsType.INSTRUMENT)) {
                 if (goodsGroup.getType().equals(GoodsType.INSTRUMENT)) {
                     String kitGroupPurchaseType = registerPayDto.getGoodsGroups().get(goodsGroup.getId());
                     String kitGroupPurchaseType = registerPayDto.getGoodsGroups().get(goodsGroup.getId());
                     if (!groupType.containsKey(kitGroupPurchaseType)) {
                     if (!groupType.containsKey(kitGroupPurchaseType)) {
@@ -569,17 +568,16 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                     }
                     }
                     if (!kitGroupPurchaseType.equals("GROUP")) {
                     if (!kitGroupPurchaseType.equals("GROUP")) {
                         goodsGroup.setPrice(kitGroupPurchaseType.equals("FREE") ? new BigDecimal(0) : goodsGroup.getDepositFee());
                         goodsGroup.setPrice(kitGroupPurchaseType.equals("FREE") ? new BigDecimal(0) : goodsGroup.getDepositFee());
+                    }else{
+                        remitCourseRFeeFlag  = goodsGroup.getGroupRemissionCourseFee().equals(1);
                     }
                     }
                     goodsGroup.setKitGroupPurchaseType(KitGroupPurchaseTypeEnum.valueOf(kitGroupPurchaseType));
                     goodsGroup.setKitGroupPurchaseType(KitGroupPurchaseTypeEnum.valueOf(kitGroupPurchaseType));
                     remitFee = groupType.get(kitGroupPurchaseType) == null ? BigDecimal.ZERO : groupType.get(kitGroupPurchaseType);
                     remitFee = groupType.get(kitGroupPurchaseType) == null ? BigDecimal.ZERO : groupType.get(kitGroupPurchaseType);
-                    if (coursePurchase != null) {
-                        courseRemitFee = coursePurchase.get(kitGroupPurchaseType) == null ? BigDecimal.ZERO : coursePurchase.get(kitGroupPurchaseType);
-                    }
                 }
                 }
                 orderAmount = orderAmount.add(goodsGroup.getPrice());
                 orderAmount = orderAmount.add(goodsGroup.getPrice());
                 goodsGroup.setGoodsList(goodsService.findGoodsByIds(goodsGroup.getGoodsIdList()));
                 goodsGroup.setGoodsList(goodsService.findGoodsByIds(goodsGroup.getGoodsIdList()));
             }
             }
-            orderAmount = orderAmount.subtract(remitFee).subtract(courseRemitFee);
+            orderAmount = orderAmount.subtract(remitFee);
         }
         }
 
 
         //单独辅件
         //单独辅件
@@ -625,6 +623,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (registerPayDto.getNewCourse() != null && registerPayDto.getNewCourse().size() > 0) {
         if (registerPayDto.getNewCourse() != null && registerPayDto.getNewCourse().size() > 0) {
             newCourses = musicGroupPaymentCalenderCourseSettingsDao.getCalenderCourseSettings(registerPayDto.getNewCourse());
             newCourses = musicGroupPaymentCalenderCourseSettingsDao.getCalenderCourseSettings(registerPayDto.getNewCourse());
             for (MusicGroupPaymentCalenderCourseSettings calenderCourseSetting : newCourses) {
             for (MusicGroupPaymentCalenderCourseSettings calenderCourseSetting : newCourses) {
+                if(remitCourseRFeeFlag && !calenderCourseSetting.getIsStudentOptional()){
+                    courseRemitFee = courseRemitFee.add(calenderCourseSetting.getCourseCurrentPrice());
+                    continue;
+                }
                 orderAmount = orderAmount.add(calenderCourseSetting.getCourseCurrentPrice());
                 orderAmount = orderAmount.add(calenderCourseSetting.getCourseCurrentPrice());
             }
             }
         }
         }
@@ -734,7 +736,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         orderAmount = orderAmount.add(courseFee);
         orderAmount = orderAmount.add(courseFee);
 
 
         BigDecimal remitFee = BigDecimal.ZERO;
         BigDecimal remitFee = BigDecimal.ZERO;
-        BigDecimal courseRemitFee = BigDecimal.ZERO;
+        BigDecimal courseRemitFee = BigDecimal.ZERO; //课程减免费用
+        boolean remitCourseRFeeFlag = false; //减免课程费用标识
+
 
 
         //乐器及打包辅件
         //乐器及打包辅件
         List<MusicGroupSubjectGoodsGroup> goodsGroups = new ArrayList<>();
         List<MusicGroupSubjectGoodsGroup> goodsGroups = new ArrayList<>();
@@ -777,8 +781,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             for (MusicGroupSubjectGoodsGroup goodsGroup : goodsGroups) {
             for (MusicGroupSubjectGoodsGroup goodsGroup : goodsGroups) {
                 Map<String, BigDecimal> groupType = JSONObject.parseObject(goodsGroup.getKitGroupPurchaseTypeJson(), new TypeReference<Map<String, BigDecimal>>() {
                 Map<String, BigDecimal> groupType = JSONObject.parseObject(goodsGroup.getKitGroupPurchaseTypeJson(), new TypeReference<Map<String, BigDecimal>>() {
                 });
                 });
-                Map<String, BigDecimal> coursePurchase = JSONObject.parseObject(goodsGroup.getCoursePurchaseTypeJson(), new TypeReference<Map<String, BigDecimal>>() {
-                });
                 if (goodsGroup.getType().equals(GoodsType.INSTRUMENT)) {
                 if (goodsGroup.getType().equals(GoodsType.INSTRUMENT)) {
                     String kitGroupPurchaseType = registerPayDto.getGoodsGroups().get(goodsGroup.getId());
                     String kitGroupPurchaseType = registerPayDto.getGoodsGroups().get(goodsGroup.getId());
                     if (!groupType.containsKey(kitGroupPurchaseType)) {
                     if (!groupType.containsKey(kitGroupPurchaseType)) {
@@ -786,12 +788,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                     }
                     }
                     if (!kitGroupPurchaseType.equals("GROUP")) {
                     if (!kitGroupPurchaseType.equals("GROUP")) {
                         goodsGroup.setPrice(kitGroupPurchaseType.equals("FREE") ? new BigDecimal(0) : goodsGroup.getDepositFee());
                         goodsGroup.setPrice(kitGroupPurchaseType.equals("FREE") ? new BigDecimal(0) : goodsGroup.getDepositFee());
+                    }else {
+                        remitCourseRFeeFlag = goodsGroup.getGroupRemissionCourseFee().equals(1);
                     }
                     }
                     goodsGroup.setKitGroupPurchaseType(KitGroupPurchaseTypeEnum.valueOf(kitGroupPurchaseType));
                     goodsGroup.setKitGroupPurchaseType(KitGroupPurchaseTypeEnum.valueOf(kitGroupPurchaseType));
                     remitFee = groupType.get(kitGroupPurchaseType);
                     remitFee = groupType.get(kitGroupPurchaseType);
-                    if (coursePurchase != null) {
-                        courseRemitFee = coursePurchase.get(kitGroupPurchaseType) == null ? BigDecimal.ZERO : coursePurchase.get(kitGroupPurchaseType);
-                    }
                 }
                 }
                 orderAmount = orderAmount.add(goodsGroup.getPrice());
                 orderAmount = orderAmount.add(goodsGroup.getPrice());
                 goodsGroup.setGoodsList(goodsService.findGoodsByIds(goodsGroup.getGoodsIdList()));
                 goodsGroup.setGoodsList(goodsService.findGoodsByIds(goodsGroup.getGoodsIdList()));
@@ -842,6 +843,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (registerPayDto.getNewCourse() != null && registerPayDto.getNewCourse().size() > 0) {
         if (registerPayDto.getNewCourse() != null && registerPayDto.getNewCourse().size() > 0) {
             newCourses = musicGroupPaymentCalenderCourseSettingsDao.getCalenderCourseSettings(registerPayDto.getNewCourse());
             newCourses = musicGroupPaymentCalenderCourseSettingsDao.getCalenderCourseSettings(registerPayDto.getNewCourse());
             for (MusicGroupPaymentCalenderCourseSettings calenderCourseSetting : newCourses) {
             for (MusicGroupPaymentCalenderCourseSettings calenderCourseSetting : newCourses) {
+                if(remitCourseRFeeFlag && !calenderCourseSetting.getIsStudentOptional()){
+                    courseRemitFee = courseRemitFee.add(calenderCourseSetting.getCourseCurrentPrice());
+                    continue;
+                }
                 orderAmount = orderAmount.add(calenderCourseSetting.getCourseCurrentPrice());
                 orderAmount = orderAmount.add(calenderCourseSetting.getCourseCurrentPrice());
             }
             }
         }
         }

+ 3 - 2
mec-biz/src/main/resources/config/mybatis/MusicGroupSubjectGoodsGroupMapper.xml

@@ -17,6 +17,7 @@
         <result column="price_" property="price"/>
         <result column="price_" property="price"/>
         <result column="deposit_fee_" property="depositFee"/>
         <result column="deposit_fee_" property="depositFee"/>
         <result column="remission_course_fee_" property="remissionCourseFee"/>
         <result column="remission_course_fee_" property="remissionCourseFee"/>
+        <result column="group_remission_course_fee_" property="groupRemissionCourseFee"/>
         <result column="kit_group_purchase_type_json_" property="kitGroupPurchaseTypeJson"/>
         <result column="kit_group_purchase_type_json_" property="kitGroupPurchaseTypeJson"/>
         <result column="course_purchase_type_json_" property="coursePurchaseTypeJson"/>
         <result column="course_purchase_type_json_" property="coursePurchaseTypeJson"/>
     </resultMap>
     </resultMap>
@@ -45,10 +46,10 @@
 
 
     <insert id="batchInsert" parameterType="java.util.List">
     <insert id="batchInsert" parameterType="java.util.List">
         INSERT INTO music_group_subject_goods_group
         INSERT INTO music_group_subject_goods_group
-        (name_,type_,music_group_id_,subject_id_,goods_id_list_,create_time_,update_time_,price_,deposit_fee_,remission_course_fee_,kit_group_purchase_type_json_,course_purchase_type_json_) VALUES
+        (name_,type_,music_group_id_,subject_id_,goods_id_list_,create_time_,update_time_,price_,deposit_fee_,remission_course_fee_,group_remission_course_fee_,kit_group_purchase_type_json_,course_purchase_type_json_) VALUES
         <foreach collection="lists" item="item" index="index" separator=",">
         <foreach collection="lists" item="item" index="index" separator=",">
             (#{item.name},#{item.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             (#{item.name},#{item.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-            #{musicGroupId},#{item.subjectId},#{item.goodsIdList},now(),now(),#{item.price},#{item.depositFee},#{item.remissionCourseFee},#{item.kitGroupPurchaseTypeJson},#{item.coursePurchaseTypeJson})
+            #{musicGroupId},#{item.subjectId},#{item.goodsIdList},now(),now(),#{item.price},#{item.depositFee},#{item.remissionCourseFee},#{item.groupRemissionCourseFee},#{item.kitGroupPurchaseTypeJson},#{item.coursePurchaseTypeJson})
         </foreach>
         </foreach>
     </insert>
     </insert>