yonge 3 gadi atpakaļ
vecāks
revīzija
039ecce2b3

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

@@ -1984,9 +1984,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         
         musicGroupQuitDao.insert(musicGroupQuit);
         
-		if (reqMusicGroupQuit.getStatus() == PROCESSING) {
+		if (reqMusicGroupQuit.getStatus() == PROCESSING && (currentOperatorRoleIds == null || currentOperatorRoleIds.size() == 0)) {
 			Set<Integer> roleIds = new HashSet<>(1);
-			roleIds.add(SysUserRole.EDUCATIONAL_TEACHER);
 			roleIds.add(SysUserRole.SECTION_MANAGER);
 			Set<Integer> integers = musicGroupDao.queryUserIdByRoleId(roleIds, musicGroup.getOrganId());
 			integers.add(musicGroup.getEducationalTeacherId());
@@ -2351,23 +2350,46 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     					}
     				}
     			}
-            }
 
-            //退乐保费用
-            if (returnFeeDto.getIsReturnMaintenanceFee()) {
-                StudentInstrument studentMaintenance = studentInstrumentDao.getStudentMaintenance(userId, musicGroupId);
-                if (returnFeeDto.getMaintenanceFee().compareTo(BigDecimal.ZERO) > 0) {
-                    if (studentMaintenance == null) {
-                        throw new BizException("学生没有有效期内的乐保,不能退乐保费用");
-                    }
-                }
-                amount = amount.add(returnFeeDto.getMaintenanceFee());
-                if (returnFeeDto.getMaintenanceFee().compareTo(BigDecimal.ZERO) > 0 && studentMaintenance != null) {
-                    studentMaintenance.setStatus(0);
-                    studentMaintenance.setStartTime(null);
-                    studentMaintenance.setEndTime(null);
-                    studentInstrumentDao.update(studentMaintenance);
-                }
+                //退乐保费用
+				if (returnFeeDto.getIsReturnMaintenanceFee()) {
+
+					Map<Long, StudentPaymentOrderDetail> maintenanceMap = orderDetailList.stream()
+							.filter(t -> (t.getType() == OrderDetailTypeEnum.MAINTENANCE))
+							.collect(Collectors.toMap(t -> t.getStudentInstrumentId(), StudentPaymentOrderDetail -> StudentPaymentOrderDetail));
+
+					List<Long> instrumentIdList = new ArrayList<Long>(maintenanceMap.keySet());
+					List<StudentInstrument> updateStudentInstrumentList = new ArrayList<StudentInstrument>();
+
+					if (instrumentIdList != null && instrumentIdList.size() > 0) {
+						List<StudentInstrument> studentInstrumentList = studentInstrumentDao.queryById(instrumentIdList);
+
+						for (StudentInstrument si : studentInstrumentList) {
+							if (si.getDelFlag() == 1) {
+								continue;
+							}
+
+							if ((si.getStatus() == 0 && si.getStartTime() == null) || si.getEndTime().after(date)) {
+								updateStudentInstrumentList.add(si);
+							}
+						}
+					}
+
+					/*if (updateStudentInstrumentList.size() == 0) {
+						throw new BizException("学生没有有效期内的乐保,不能退乐保费用");
+					}*/
+					
+					amount = amount.add(returnFeeDto.getMaintenanceFee());
+					
+					if (updateStudentInstrumentList.size() > 0) {
+						for (StudentInstrument studentMaintenance : updateStudentInstrumentList) {
+							studentMaintenance.setStatus(0);
+							studentMaintenance.setStartTime(null);
+							studentMaintenance.setEndTime(null);
+							studentInstrumentDao.update(studentMaintenance);
+						}
+					}
+				}
             }
 
             if (amount.doubleValue() > 0) {