Procházet zdrojové kódy

Merge branch '20221010' of http://git.dayaedu.com/yonge/mec into 20221010

yonge před 2 roky
rodič
revize
f11e612603

+ 0 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentStudentCourseDetailService.java

@@ -1,13 +1,8 @@
 package com.ym.mec.biz.service;
 
-import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail;
 import com.ym.mec.common.service.BaseService;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
 
 public interface MusicGroupPaymentStudentCourseDetailService extends BaseService<Long, MusicGroupPaymentStudentCourseDetail> {
 
-    String getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes(String musicGroupId,Integer studentId,CourseSchedule.CourseScheduleType courseType,List<String> batchNos);
 }

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CooperationShareProfitServiceImpl.java

@@ -77,6 +77,9 @@ public class CooperationShareProfitServiceImpl extends BaseServiceImpl<Integer,
 		}
 		List<CourseSchedule> courseSchedules = courseScheduleDao.findByCourseScheduleIds(courseIds);
 		List<String> musicGroupIds = courseSchedules.stream().map(e -> e.getMusicGroupId()).distinct().collect(Collectors.toList());
+		if(CollectionUtils.isEmpty(musicGroupIds)){
+			return;
+		}
 		musicGroupIds.removeAll(cooperationShareProfitDao.queryNotShare(musicGroupIds));
 		musicGroupIds.removeAll(Collections.singleton(null));
 		if(CollectionUtils.isEmpty(musicGroupIds)){

+ 45 - 40
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupCalenderRefundPeriodServiceImpl.java

@@ -139,48 +139,53 @@ public class MusicGroupCalenderRefundPeriodServiceImpl extends BaseServiceImpl<I
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean calcRefundAmount(Long calenderId,String orderNo, BigDecimal amount) {
-        //获取回款周期
-        List<MusicGroupCalenderRefundPeriod> refundPeriods = musicGroupCalenderRefundPeriodDao.findByCalenderId(calenderId);
-        Date date = new Date();
-        BigDecimal subAmount = amount;
-        for (int i = 0; i < refundPeriods.size(); i++) {
-            MusicGroupCalenderRefundPeriod refundPeriod = refundPeriods.get(i);
-            if(i == refundPeriods.size() - 1 && refundPeriod.getRefundFlag()){
-                refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
-                if(StringUtils.isEmpty(refundPeriod.getOrderNos())){
-                    refundPeriod.setOrderNos(orderNo);
-                }else {
-                    refundPeriod.setOrderNos(refundPeriod.getOrderNos() + "," + orderNo);
+        if(calenderId != null){
+            //获取回款周期
+            List<MusicGroupCalenderRefundPeriod> refundPeriods = musicGroupCalenderRefundPeriodDao.findByCalenderId(calenderId);
+            if(CollectionUtils.isNotEmpty(refundPeriods)){
+                Date date = new Date();
+                BigDecimal subAmount = amount;
+                for (int i = 0; i < refundPeriods.size(); i++) {
+                    MusicGroupCalenderRefundPeriod refundPeriod = refundPeriods.get(i);
+                    if(i == refundPeriods.size() - 1 && refundPeriod.getRefundFlag()){
+                        refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
+                        if(StringUtils.isEmpty(refundPeriod.getOrderNos())){
+                            refundPeriod.setOrderNos(orderNo);
+                        }else {
+                            refundPeriod.setOrderNos(refundPeriod.getOrderNos() + "," + orderNo);
+                        }
+                        refundPeriod.setUpdateTime(date);
+                        break;
+                    }
+                    if(refundPeriod.getRefundFlag()){
+                        continue;
+                    }
+                    if(subAmount.compareTo(refundPeriod.getSubRefundAmount()) >= 0){
+                        if(i == refundPeriods.size() - 1){
+                            refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
+                            subAmount = BigDecimal.ZERO;
+                        }else {
+                            refundPeriod.setIncome(refundPeriod.getIncome().add(refundPeriod.getSubRefundAmount()));
+                            subAmount = subAmount.subtract(refundPeriod.getSubRefundAmount());
+                        }
+                        refundPeriod.setSubRefundAmount(BigDecimal.ZERO);
+                        refundPeriod.setRefundFlag(true);
+                    }else {
+                        refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
+                        refundPeriod.setSubRefundAmount(refundPeriod.getSubRefundAmount().subtract(subAmount));
+                        subAmount = BigDecimal.ZERO;
+                    }
+                    if(StringUtils.isEmpty(refundPeriod.getOrderNos())){
+                        refundPeriod.setOrderNos(orderNo);
+                    }else {
+                        refundPeriod.setOrderNos(refundPeriod.getOrderNos() + "," + orderNo);
+                    }
+                    refundPeriod.setUpdateTime(date);
                 }
-                refundPeriod.setUpdateTime(date);
-                break;
-            }
-            if(refundPeriod.getRefundFlag()){
-                continue;
-            }
-            if(subAmount.compareTo(refundPeriod.getSubRefundAmount()) >= 0){
-                if(i == refundPeriods.size() - 1){
-                    refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
-                    subAmount = BigDecimal.ZERO;
-                }else {
-                    refundPeriod.setIncome(refundPeriod.getIncome().add(refundPeriod.getSubRefundAmount()));
-                    subAmount = subAmount.subtract(refundPeriod.getSubRefundAmount());
-                }
-                refundPeriod.setSubRefundAmount(BigDecimal.ZERO);
-                refundPeriod.setRefundFlag(true);
-            }else {
-                refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
-                refundPeriod.setSubRefundAmount(refundPeriod.getSubRefundAmount().subtract(subAmount));
-                subAmount = BigDecimal.ZERO;
-            }
-            if(StringUtils.isEmpty(refundPeriod.getOrderNos())){
-                refundPeriod.setOrderNos(orderNo);
-            }else {
-                refundPeriod.setOrderNos(refundPeriod.getOrderNos() + "," + orderNo);
+                musicGroupCalenderRefundPeriodDao.batchUpdate(refundPeriods);
+                return refundPeriods.get(refundPeriods.size()-1).getRefundFlag();
             }
-            refundPeriod.setUpdateTime(date);
         }
-        musicGroupCalenderRefundPeriodDao.batchUpdate(refundPeriods);
-        return refundPeriods.get(refundPeriods.size()-1).getRefundFlag();
+        return false;
     }
 }

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

@@ -122,6 +122,10 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
     private OperatingReportCloudService operatingReportCloudService;
     @Autowired
     private MusicGroupCalenderRefundPeriodService musicGroupCalenderRefundPeriodService;
+    @Autowired
+    private ImGroupService imGroupService;
+    @Autowired
+    private ImGroupMemberService imGroupMemberService;
 
     @Override
     public BaseDAO<Long, MusicGroupPaymentCalender> getDAO() {
@@ -894,12 +898,12 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
             }
             if (calender.getPaymentType() == ADD_STUDENT || calender.getPaymentType() == SPAN_GROUP_CLASS_ADJUST) {
                 // 所有缴费项目已完成排课才能创建下一个缴费项目
-                List<String> batchNoList = new ArrayList<>();
-                batchNoList.add(batchNo);
-                String orignBatchNo = musicGroupPaymentStudentCourseDetailDao.getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes(calender.getMusicGroupId(), null, null, batchNoList);
-                if (StringUtils.isNoneBlank(orignBatchNo)) {
-                    throw new BizException("{} 存在未排课的缴费项目,请先完成排课再操作", musicGroup.getName());
-                }
+//                List<String> batchNoList = new ArrayList<>();
+//                batchNoList.add(batchNo);
+//                String orignBatchNo = musicGroupPaymentStudentCourseDetailDao.getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes(calender.getMusicGroupId(), null, null, batchNoList);
+//                if (StringUtils.isNoneBlank(orignBatchNo)) {
+//                    throw new BizException("{} 存在未排课的缴费项目,请先完成排课再操作", musicGroup.getName());
+//                }
                 List<Integer> userIds = Arrays.stream(calender.getStudentIds().split(",")).mapToInt(Integer::valueOf).boxed().collect(Collectors.toList());
                 //获取欠费学员列表
                 List<Integer> noPaymentUserIds = musicGroupPaymentCalenderDetailDao.queryNoPaymentUserIds(calender.getMusicGroupId(), userIds,null);
@@ -930,6 +934,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
                     }
                     //记录操作日志
                     musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroup.getId(), "报名缴费项目通过(费用审核中 -> 预报名)", sysUser.getId(), ""));
+                    this.createPreImGroup(musicGroup);
                 }
             } else if (calender.getPaymentType() == ADD_STUDENT) {
                 // 学生加到班级
@@ -968,6 +973,38 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
         }
     }
 
+    private void createPreImGroup(MusicGroup musicGroup){
+        // 创建群
+        imGroupService.create(musicGroup.getId(), null, "乐团预报名", null,
+                musicGroup.getName(), musicGroup.getName(), null, GroupType.MUSIC.getCode(), ImGroup.GroupTypeEnum.PARENT_MEETING);
+
+        Map<Integer, String> userRoleMap = new HashMap<Integer, String>();
+
+        if (musicGroup.getTeamTeacherId() != null) {
+            userRoleMap.put(musicGroup.getTeamTeacherId(), "运营主管");
+        }
+        if (musicGroup.getEducationalTeacherId() != null) {
+            userRoleMap.put(musicGroup.getEducationalTeacherId(), "乐团主管");
+        }
+        if (musicGroup.getDirectorUserId() != null) {
+            userRoleMap.put(musicGroup.getDirectorUserId(), "乐队指导");
+        }
+        if (musicGroup.getTransactionTeacherId() != null) {
+            userRoleMap.put(musicGroup.getTransactionTeacherId(), "衔接老师");
+        }
+        // 添加成员
+        imGroupMemberService.join(musicGroup.getId(), userRoleMap);
+        //缴费老师推送消息
+        sendSeoMessageSource.sendSeoMessage(musicGroup.getOrganId(), null,
+                null, musicGroup.getEducationalTeacherId(), MessageTypeEnum.BACKSTAGE_CREATE_MUSIC_GROUP_ADJUST_SUCCESS, musicGroup.getName());
+        Map<Integer, String> map = new HashMap<>(1);
+        map.put(musicGroup.getEducationalTeacherId(), musicGroup.getEducationalTeacherId().toString());
+        if (map != null && map.size() > 0) {
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.BACKSTAGE_CREATE_MUSIC_GROUP_ADJUST_SUCCESS,
+                    map, null, 0, null, "SYSTEM", musicGroup.getName());
+        }
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void auditRefuse(String batchNs, String auditMemo) {

+ 2 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentStudentCourseDetailServiceImpl.java

@@ -1,16 +1,12 @@
 package com.ym.mec.biz.service.impl;
 
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import com.ym.mec.biz.dal.dao.MusicGroupPaymentStudentCourseDetailDao;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail;
 import com.ym.mec.biz.service.MusicGroupPaymentStudentCourseDetailService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-
-import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 @Service
 public class MusicGroupPaymentStudentCourseDetailServiceImpl extends BaseServiceImpl<Long, MusicGroupPaymentStudentCourseDetail>  implements MusicGroupPaymentStudentCourseDetailService {
@@ -22,9 +18,4 @@ public class MusicGroupPaymentStudentCourseDetailServiceImpl extends BaseService
 	public BaseDAO<Long, MusicGroupPaymentStudentCourseDetail> getDAO() {
 		return musicGroupPaymentStudentCourseDetailDao;
 	}
-
-    @Override
-    public String getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes(String musicGroupId, Integer studentId, CourseSchedule.CourseScheduleType courseType, List<String> batchNos) {
-        return musicGroupPaymentStudentCourseDetailDao.getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes(musicGroupId, studentId, courseType, batchNos);
-    }
 }

+ 37 - 214
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1,200 +1,22 @@
 package com.ym.mec.biz.service.impl;
 
-import static com.ym.mec.biz.dal.entity.ApprovalStatus.PROCESSING;
-import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PayUserType.SCHOOL;
-import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED;
-import static com.ym.mec.biz.dal.enums.DealStatusEnum.ING;
-import static com.ym.mec.biz.dal.enums.DealStatusEnum.SUCCESS;
-import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.ACCESSORIES;
-import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.MAINTENANCE;
-import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.MUSICAL;
-import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.TEACHING;
-import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
-import static com.ym.mec.biz.dal.enums.SysUserRoleEnum.ORGAN_MANAGER;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Objects;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.ChargeTypeDao;
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
-import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
-import com.ym.mec.biz.dal.dao.CooperationOrganDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleDao;
-import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
-import com.ym.mec.biz.dal.dao.GoodsDao;
-import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao;
-import com.ym.mec.biz.dal.dao.MusicGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderCourseSettingsDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderStudentDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentStudentCourseDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupPurchaseListDao;
-import com.ym.mec.biz.dal.dao.MusicGroupQuitDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSchoolTermCourseDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSchoolTermStudentCourseDetailDao;
-import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao;
-import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
-import com.ym.mec.biz.dal.dao.OrganizationDao;
-import com.ym.mec.biz.dal.dao.SchoolDao;
-import com.ym.mec.biz.dal.dao.SporadicChargeInfoDao;
-import com.ym.mec.biz.dal.dao.StudentDao;
-import com.ym.mec.biz.dal.dao.StudentInstrumentDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
-import com.ym.mec.biz.dal.dao.StudentPreRegistrationDao;
-import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
-import com.ym.mec.biz.dal.dao.StudentVisitDao;
-import com.ym.mec.biz.dal.dao.SubjectChangeDao;
-import com.ym.mec.biz.dal.dao.SubjectDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
-import com.ym.mec.biz.dal.dao.SysUserCashAccountLogDao;
-import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.dto.BasicUserDto;
-import com.ym.mec.biz.dal.dto.CloseMusicGroupDto;
-import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
-import com.ym.mec.biz.dal.dto.HighClassGroupDto;
-import com.ym.mec.biz.dal.dto.MusicCardDto;
-import com.ym.mec.biz.dal.dto.MusicGroupApplyGoodsDto;
-import com.ym.mec.biz.dal.dto.MusicGroupBasicDto;
-import com.ym.mec.biz.dal.dto.MusicGroupGoodsAndDiscountDto;
-import com.ym.mec.biz.dal.dto.MusicGroupQuitDto;
-import com.ym.mec.biz.dal.dto.RegisterPayDto;
-import com.ym.mec.biz.dal.dto.SporadicPayDto;
-import com.ym.mec.biz.dal.dto.StudentApplyInstrumentDto;
-import com.ym.mec.biz.dal.dto.StudentImportDto;
-import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
-import com.ym.mec.biz.dal.dto.SubjectRegisterDto;
-import com.ym.mec.biz.dal.dto.UpdateExpectedNumDto;
-import com.ym.mec.biz.dal.entity.ApprovalStatus;
-import com.ym.mec.biz.dal.entity.ChargeType;
-import com.ym.mec.biz.dal.entity.ClassGroup;
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.dal.entity.CouponPayParam;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
-import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
-import com.ym.mec.biz.dal.entity.FinancialExpenditure;
-import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.entity.ImGroup;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.*;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PayUserType;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentType;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderStudentDetail;
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail;
-import com.ym.mec.biz.dal.entity.MusicGroupPurchaseList;
-import com.ym.mec.biz.dal.entity.MusicGroupQuit;
-import com.ym.mec.biz.dal.entity.MusicGroupReturnFeeDto;
-import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermCourseDetail;
-import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
-import com.ym.mec.biz.dal.entity.MusicMemberDto;
-import com.ym.mec.biz.dal.entity.Organization;
-import com.ym.mec.biz.dal.entity.School;
-import com.ym.mec.biz.dal.entity.SporadicChargeInfo;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.StudentInstrument;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
-import com.ym.mec.biz.dal.entity.StudentPreRegistration;
-import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.entity.Subject;
-import com.ym.mec.biz.dal.entity.SubjectChange;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
-import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
-import com.ym.mec.biz.dal.entity.SysUserCashAccountLog;
-import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
-import com.ym.mec.biz.dal.enums.CouponDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
-import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
-import com.ym.mec.biz.dal.enums.DealStatusEnum;
-import com.ym.mec.biz.dal.enums.FivePlusGradeEnum;
-import com.ym.mec.biz.dal.enums.GoodsType;
-import com.ym.mec.biz.dal.enums.GradeTypeEnum;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
-import com.ym.mec.biz.dal.enums.MessageTypeEnum;
-import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
-import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.OrderTypeEnum;
-import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
-import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
-import com.ym.mec.biz.dal.enums.ReturnFeeEnum;
-import com.ym.mec.biz.dal.enums.SixPlusGradeEnum;
-import com.ym.mec.biz.dal.enums.SporadicChargeTypeEnum;
-import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
-import com.ym.mec.biz.dal.enums.SysUserRoleEnum;
-import com.ym.mec.biz.dal.enums.TeachTypeEnum;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 import com.ym.mec.biz.dal.page.MusicMemberQueryInfo;
 import com.ym.mec.biz.event.source.GroupEventSource;
 import com.ym.mec.biz.event.source.SendSeoMessageSource;
-import com.ym.mec.biz.service.ClassGroupService;
-import com.ym.mec.biz.service.ClassGroupStudentMapperService;
-import com.ym.mec.biz.service.ContractService;
-import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
-import com.ym.mec.biz.service.GoodsService;
-import com.ym.mec.biz.service.ImGroupMemberService;
-import com.ym.mec.biz.service.ImGroupService;
-import com.ym.mec.biz.service.ImUserFriendService;
-import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
-import com.ym.mec.biz.service.MusicGroupService;
-import com.ym.mec.biz.service.MusicGroupSubjectGoodsGroupService;
-import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
-import com.ym.mec.biz.service.PayService;
-import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
-import com.ym.mec.biz.service.StudentPaymentRouteOrderService;
-import com.ym.mec.biz.service.StudentRegistrationService;
-import com.ym.mec.biz.service.StudentService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysCouponCodeService;
-import com.ym.mec.biz.service.SysEmployeePositionService;
-import com.ym.mec.biz.service.SysMessageService;
-import com.ym.mec.biz.service.SysTenantConfigService;
-import com.ym.mec.biz.service.SysUserCashAccountDetailService;
-import com.ym.mec.biz.service.SysUserCashAccountService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.HttpResponseResult;
@@ -210,6 +32,33 @@ import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
 import com.ym.mec.util.json.JsonUtil;
 import com.ym.mec.util.validator.CommonValidator;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.Map.Entry;
+import java.util.stream.Collectors;
+
+import static com.ym.mec.biz.dal.entity.ApprovalStatus.PROCESSING;
+import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PayUserType.SCHOOL;
+import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED;
+import static com.ym.mec.biz.dal.enums.DealStatusEnum.ING;
+import static com.ym.mec.biz.dal.enums.DealStatusEnum.SUCCESS;
+import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.*;
+import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
+import static com.ym.mec.biz.dal.enums.SysUserRoleEnum.ORGAN_MANAGER;
 
 @Service
 public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> implements MusicGroupService {
@@ -1602,7 +1451,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (musicGroup.getStatus() != MusicGroupStatusEnum.DRAFT && musicGroup.getStatus() != MusicGroupStatusEnum.AUDIT_FAILED) {
             throw new BizException("当前乐团状态不支持此操作");
         }
-        
+        List<MusicGroupSubjectPlan> musicSubjectClassPlan = musicGroupSubjectPlanDao.getMusicSubjectClassPlan(musicGroupId);
+        if(CollectionUtils.isEmpty(musicSubjectClassPlan)){
+            throw new BizException("请填写乐团声部信息");
+        }
+
         //记录操作日志
         musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "提交审核(草稿 -> 审核中)", sysUser.getId(), ""));
         musicGroup.setStatus(MusicGroupStatusEnum.AUDIT);
@@ -1748,36 +1601,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             });
             
             musicGroupPaymentCalenderDao.batchUpdate(musicGroupPaymentCalenderList);
-            
-            // 创建群
-            imGroupService.create(musicGroupId, null, "乐团预报名", null,
-                    musicGroup.getName(), musicGroup.getName(), null, GroupType.MUSIC.getCode(), ImGroup.GroupTypeEnum.PARENT_MEETING);
-            
-            Map<Integer, String> userRoleMap = new HashMap<Integer, String>();
-
-            if (musicGroup.getTeamTeacherId() != null) {
-                userRoleMap.put(musicGroup.getTeamTeacherId(), "运营主管");
-            }
-            if (musicGroup.getEducationalTeacherId() != null) {
-                userRoleMap.put(musicGroup.getEducationalTeacherId(), "乐团主管");
-            }
-            if (musicGroup.getDirectorUserId() != null) {
-                userRoleMap.put(musicGroup.getDirectorUserId(), "乐队指导");
-            }
-            if (musicGroup.getTransactionTeacherId() != null) {
-                userRoleMap.put(musicGroup.getTransactionTeacherId(), "衔接老师");
-            }
-            // 添加成员
-            imGroupMemberService.join(musicGroupId, userRoleMap);
-            //缴费老师推送消息
-            sendSeoMessageSource.sendSeoMessage(musicGroup.getOrganId(), null,
-                    null, musicGroup.getEducationalTeacherId(), MessageTypeEnum.BACKSTAGE_CREATE_MUSIC_GROUP_ADJUST_SUCCESS, musicGroup.getName());
-            Map<Integer, String> map = new HashMap<>(1);
-            map.put(musicGroup.getEducationalTeacherId(), musicGroup.getEducationalTeacherId().toString());
-            if (map != null && map.size() > 0) {
-                sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.BACKSTAGE_CREATE_MUSIC_GROUP_ADJUST_SUCCESS,
-                        map, null, 0, null, "SYSTEM", musicGroup.getName());
-            }
         }
         musicGroup.setUpdateTime(date);
         musicGroupDao.update(musicGroup);

+ 23 - 4
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentStudentCourseDetailMapper.xml

@@ -218,6 +218,27 @@
         where tenant_id_ = #{tenantId}
     </select>
 
+    <select id="getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes" resultType="string">
+        SELECT
+        mgpc.batch_no_
+        FROM music_group_payment_calender mgpc
+        LEFT JOIN music_group_payment_student_course_detail mgpscd ON mgpscd.music_group_payment_calender_id_ = mgpc.id_
+        WHERE mgpc.music_group_id_ = #{musicGroupId} AND mgpscd.sub_course_minutes_ > 0
+        <if test="studentId != null">
+            AND mgpscd.user_id_ = #{studentId}
+        </if>
+        <if test="batchNos != null">
+            AND mgpc.batch_no_ NOT IN
+            <foreach collection="batchNos" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="courseType != null">
+            AND mgpscd.course_type_ = #{courseType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        </if>
+        GROUP BY mgpc.batch_no_ ORDER BY MIN(mgpc.id_) LIMIT 1;
+    </select>
+
     <select id="getUnUseWithStudentAndCourseTypeAndCourseMinutes" resultMap="MusicGroupPaymentStudentCourseDetail">
         SELECT mgpscd.*
         FROM music_group_payment_student_course_detail mgpscd
@@ -273,9 +294,7 @@
         SELECT mgpscd.user_id_,
                su.username_,
                su.phone_,
-               mgpscd.course_type_ 'key', SUM(CASE
-                                                  WHEN mgpscd.used_course_minutes_ = 0 THEN mgpscd.total_course_minutes_
-                                                  ELSE 0 END) 'value'
+               mgpscd.course_type_ 'key', SUM(mgpscd.sub_course_minutes_) 'value'
         FROM music_group_payment_student_course_detail mgpscd
                  LEFT JOIN sys_user su ON su.id_ = mgpscd.user_id_
         WHERE mgpscd.music_group_id_ = #{musicGroupId}
@@ -327,7 +346,7 @@
             SELECT
                 mgpscd.user_id_,su.username_,su.phone_,
                 mgpscd.course_type_ 'key',
-                SUM(CASE WHEN mgpscd.used_course_minutes_ = 0 THEN mgpscd.total_course_minutes_ ELSE 0 END) 'value'
+                SUM(mgpscd.sub_course_minutes_) 'value'
             FROM music_group_payment_student_course_detail mgpscd
             LEFT JOIN sys_user su ON su.id_ = mgpscd.user_id_
             left join (

+ 4 - 0
mec-web/src/main/java/com/ym/mec/web/controller/CooperationShareProfitController.java

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.entity.CooperationShareProfit;
 import com.ym.mec.biz.dal.entity.CooperationShareProfitDto;
 import com.ym.mec.biz.dal.page.CooperationShareProfitQueryInfo;
 import com.ym.mec.biz.service.CooperationShareProfitService;
+import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
@@ -23,11 +24,14 @@ public class CooperationShareProfitController extends BaseController {
 
     @Autowired
     private CooperationShareProfitService cooperationShareProfitService;
+    @Autowired
+    private OrganizationService organizationService;
 
     @ApiOperation(value = "获取合作单位分润列表")
     @PostMapping("/queryPage")
     @PreAuthorize("@pcs.hasPermissions('cooperationShareProfit/queryPage')")
     public HttpResponseResult<PageInfo<CooperationShareProfitDto>> queryPage(@RequestBody CooperationShareProfitQueryInfo queryInfo) throws Exception {
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(queryInfo.getOrganId()));
         return succeed(cooperationShareProfitService.queryDtoPage(queryInfo));
     }