|
@@ -1,22 +1,196 @@
|
|
|
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.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.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.*;
|
|
|
-import com.ym.mec.biz.dal.dto.*;
|
|
|
-import com.ym.mec.biz.dal.entity.*;
|
|
|
+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.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.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.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.enums.*;
|
|
|
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail;
|
|
|
+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.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.*;
|
|
|
+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.common.controller.BaseController;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
import com.ym.mec.common.entity.HttpResponseResult;
|
|
@@ -32,30 +206,7 @@ import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
import com.ym.mec.util.http.HttpUtil;
|
|
|
import com.ym.mec.util.json.JsonUtil;
|
|
|
-
|
|
|
-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.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.stream.Collectors;
|
|
|
-
|
|
|
-import static com.ym.mec.biz.dal.entity.ApprovalStatus.PROCESSING;
|
|
|
-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;
|
|
|
+import com.ym.mec.util.validator.CommonValidator;
|
|
|
|
|
|
@Service
|
|
|
public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> implements MusicGroupService {
|
|
@@ -83,6 +234,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
@Autowired
|
|
|
private MusicGroupSubjectPlanDao musicGroupSubjectPlanDao;
|
|
|
@Autowired
|
|
|
+ private MusicGroupSubjectPlanService musicGroupSubjectPlanService;
|
|
|
+ @Autowired
|
|
|
private MusicGroupBuildLogDao musicGroupBuildLogDao;
|
|
|
@Autowired
|
|
|
private MusicGroupPurchaseListDao musicGroupPurchaseListDao;
|
|
@@ -189,6 +342,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
private SendSeoMessageSource sendSeoMessageSource;
|
|
|
@Autowired
|
|
|
private SysEmployeePositionService employeePositionService;
|
|
|
+ @Autowired
|
|
|
+ private SysUserCashAccountDao sysUserCashAccountDao;
|
|
|
+ @Autowired
|
|
|
+ private StudentDao studentDao;
|
|
|
|
|
|
private SimpleDateFormat sdf_ymd = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
@@ -204,6 +361,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public boolean importStudentToMusicGroup(String musicGroupId, Map<String, List<Map<String, Object>>> excelData) {
|
|
|
|
|
|
MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
|
|
@@ -216,10 +374,234 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
throw new BizException("只有[缴费中]状态的乐团才能导入数据");
|
|
|
}
|
|
|
|
|
|
- //查询缴费金额是否是0
|
|
|
+ Integer tenantId = musicGroup.getTenantId();
|
|
|
+
|
|
|
+ List<StudentImportDto> studentBasicList = new ArrayList<StudentImportDto>();
|
|
|
+ List<Map<String, Object>> sheet = null;
|
|
|
+ StudentImportDto dto = null;
|
|
|
+ for (String sheetName : excelData.keySet()) {
|
|
|
+ sheet = excelData.get(sheetName);
|
|
|
+ for(Map<String,Object> row : sheet){
|
|
|
+ dto = new StudentImportDto();
|
|
|
+ if(row.get("学生姓名") == null || StringUtils.isBlank(row.get("学生姓名").toString())){
|
|
|
+ throw new BizException("学生姓名不能为空");
|
|
|
+ }
|
|
|
+ dto.setName(row.get("学生姓名").toString());
|
|
|
+ if(!CommonValidator.isUserName(dto.getName())){
|
|
|
+ throw new BizException("学生姓名[{}]填写错误", dto.getName());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(row.get("性别") == null || StringUtils.isBlank(row.get("性别").toString())){
|
|
|
+ throw new BizException("性别不能为空");
|
|
|
+ }
|
|
|
+ dto.setSex(row.get("性别").toString());
|
|
|
+
|
|
|
+ if(row.get("手机号码") == null || StringUtils.isBlank(row.get("手机号码").toString())){
|
|
|
+ throw new BizException("手机号码不能为空");
|
|
|
+ }
|
|
|
+ dto.setMobileNo(row.get("手机号码").toString());
|
|
|
+ if(!CommonValidator.isMobileNo(dto.getMobileNo())){
|
|
|
+ throw new BizException("手机号码[{}]填写错误", dto.getMobileNo());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(row.get("学习声部") == null || StringUtils.isBlank(row.get("学习声部").toString())){
|
|
|
+ throw new BizException("学习声部不能为空");
|
|
|
+ }
|
|
|
+ dto.setSubjectName(row.get("学习声部").toString());
|
|
|
+
|
|
|
+ if(row.get("所在年级") == null || StringUtils.isBlank(row.get("所在年级").toString())){
|
|
|
+ throw new BizException("所在年级不能为空");
|
|
|
+ }
|
|
|
+ dto.setGradeName(row.get("所在年级").toString());
|
|
|
+
|
|
|
+ studentBasicList.add(dto);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Date nowDate = new Date();
|
|
|
+
|
|
|
+ //查询导入的声部是否正确
|
|
|
+ List<String> subjectNameList = studentBasicList.stream().distinct().map(t->t.getSubjectName()).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<MusicGroupSubjectPlan> musicGroupSubjectPlanList = musicGroupSubjectPlanDao.getMusicSubjectClassPlan(musicGroupId);
|
|
|
+
|
|
|
+ Map<String,Integer> subjectMap = musicGroupSubjectPlanList.stream().collect(Collectors.toMap(MusicGroupSubjectPlan :: getSubName, MusicGroupSubjectPlan :: getSubjectId));
|
|
|
+
|
|
|
+ List<String> allSubjectNameList = musicGroupSubjectPlanList.stream().map(t -> t.getSubName()).collect(Collectors.toList());
|
|
|
+
|
|
|
+ for(String subName : subjectNameList){
|
|
|
+ if(!allSubjectNameList.contains(subName)){
|
|
|
+ throw new BizException("当前乐团不支持[{}]声部", subName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询课程费用是否是0
|
|
|
+ MusicGroupPaymentCalender musicGroupPaymentCalender = musicGroupPaymentCalenderDao.findByMusicGroupRegCalender(musicGroupId);
|
|
|
+ if(musicGroupPaymentCalender == null){
|
|
|
+ throw new BizException("请先创建乐团报名缴费");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettingsList = musicGroupPaymentCalenderCourseSettingsDao.queryCalenderCourseSettings(musicGroupPaymentCalender.getId());
|
|
|
+ double d = musicGroupPaymentCalenderCourseSettingsList.stream().mapToDouble(t -> t.getCourseCurrentPrice().doubleValue()).sum();
|
|
|
|
|
|
+ if(d > 0){
|
|
|
+ throw new BizException("缴费项目中的课程费用为[{}]元,不能导入", d);
|
|
|
+ }
|
|
|
+
|
|
|
+ //检查用户是否已入团或在其他机构已注册
|
|
|
+ for(StudentImportDto si : studentBasicList){
|
|
|
+ SysUser sysUser = studentRegistrationDao.getSysUserByPhone(si.getMobileNo());
|
|
|
+ if (sysUser != null) {
|
|
|
+ throw new BizException("该手机号[{}]已注册", si.getMobileNo());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ SysUser sysUser = null;
|
|
|
+ Integer userId = null;
|
|
|
+ Student student = null;
|
|
|
+ StudentRegistration studentRegistration = null;
|
|
|
+ List<StudentRegistration> insertList = new ArrayList<StudentRegistration>();
|
|
|
+ Organization organization = organizationDao.get(musicGroup.getOrganId());
|
|
|
+ //插入记录
|
|
|
+ for (StudentImportDto si : studentBasicList) {
|
|
|
+ sysUser = new SysUser();
|
|
|
+ sysUser.setPhone(si.getMobileNo());
|
|
|
+ sysUser.setUsername(si.getName());
|
|
|
+ sysUser.setGender(si.getGradeName().equals("男") ? 1 : 0);
|
|
|
+ sysUser.setUserType("STUDENT");
|
|
|
+ sysUser.setOrganId(musicGroup.getOrganId());
|
|
|
+ sysUser.setCreateTime(nowDate);
|
|
|
+ sysUser.setUpdateTime(nowDate);
|
|
|
+ teacherDao.addSysUser(sysUser);
|
|
|
+ userId = sysUser.getId();
|
|
|
+
|
|
|
+ si.setUserId(userId);
|
|
|
+
|
|
|
+ student = new Student(userId, subjectMap.get(si.getSubjectName()) + "");
|
|
|
+ student.setCurrentGradeNum(FivePlusGradeEnum.get(si.getGradeName()).getCode());
|
|
|
+ studentDao.insert(student);
|
|
|
+ // 添加用户现金账户
|
|
|
+ sysUserCashAccountDao.insert(new SysUserCashAccount(userId, "CNY"));
|
|
|
+
|
|
|
+ studentRegistration = new StudentRegistration();
|
|
|
+ String studentGrade = studentService.getStudentGrade(organization.getGradeType(), student.getCurrentGradeNum());
|
|
|
+ studentRegistration.setCurrentGrade(studentGrade);
|
|
|
+ studentRegistration.setActualSubjectId(subjectMap.get(si.getSubjectName()));
|
|
|
+ studentRegistration.setIsAllowAdjust(YesOrNoEnum.YES);
|
|
|
+ studentRegistration.setSubjectId(subjectMap.get(si.getSubjectName()));
|
|
|
+ studentRegistration.setUserId(userId);
|
|
|
+ studentRegistration.setName(si.getName());
|
|
|
+ studentRegistration.setGender(student.getCurrentGradeNum());
|
|
|
+ studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
|
|
|
+ studentRegistration.setMusicGroupStatus(StudentMusicGroupStatusEnum.NORMAL);
|
|
|
+ studentRegistration.setTemporaryCourseFee(BigDecimal.ZERO);
|
|
|
+ studentRegistration.setMusicGroupPaymentCalenderId(null);
|
|
|
+ studentRegistration.setTenantId(musicGroup.getTenantId());
|
|
|
+ studentRegistration.setMusicGroupId(musicGroupId);
|
|
|
+ studentRegistration.setCreateTime(nowDate);
|
|
|
+ studentRegistration.setUpdateTime(nowDate);
|
|
|
+
|
|
|
+ insertList.add(studentRegistration);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (insertList.size() > 0) {
|
|
|
+ studentRegistrationService.batchInsert(insertList);
|
|
|
+
|
|
|
+ Map<Integer, Long> subjectCountMap = insertList.stream().collect(
|
|
|
+ Collectors.groupingBy(StudentRegistration::getActualSubjectId, Collectors.counting()));
|
|
|
+
|
|
|
+ MusicGroupSubjectPlan musicOneSubjectClassPlan = null;
|
|
|
+ int totalStudentNum = 0;
|
|
|
+ for (Entry<Integer, Long> entry : subjectCountMap.entrySet()) {
|
|
|
+
|
|
|
+ musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, entry.getKey());
|
|
|
+ if (musicOneSubjectClassPlan == null) {
|
|
|
+ throw new BizException("系统数据[乐团声部设置]异常");
|
|
|
+ }
|
|
|
+ int applyNum = musicOneSubjectClassPlan.getApplyStudentNum() == null ? 0 : musicOneSubjectClassPlan.getApplyStudentNum();
|
|
|
+ musicOneSubjectClassPlan.setApplyStudentNum(applyNum + entry.getValue().intValue());
|
|
|
+ musicOneSubjectClassPlan.setPaidStudentNum((musicOneSubjectClassPlan.getPaidStudentNum() == null ? 0 : musicOneSubjectClassPlan
|
|
|
+ .getPaidStudentNum()) + entry.getValue().intValue());
|
|
|
+ musicOneSubjectClassPlan.setPaidZeroNum((musicOneSubjectClassPlan.getPaidZeroNum() == null ? 0 : musicOneSubjectClassPlan.getPaidZeroNum())
|
|
|
+ + entry.getValue().intValue());
|
|
|
+ musicOneSubjectClassPlan.setUpdateTime(nowDate);
|
|
|
+ musicGroupSubjectPlanDao.update(musicOneSubjectClassPlan);
|
|
|
+
|
|
|
+ totalStudentNum += entry.getValue().intValue();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 缴费相关
|
|
|
+ // 更新实际缴费人数
|
|
|
+ if (musicGroupPaymentCalender.getActualNum() == null) {
|
|
|
+ musicGroupPaymentCalender.setActualNum(totalStudentNum);
|
|
|
+ } else {
|
|
|
+ musicGroupPaymentCalender.setActualNum(musicGroupPaymentCalender.getActualNum() + totalStudentNum);
|
|
|
+ }
|
|
|
+ if (musicGroupPaymentCalender.getPaymentType() == MusicGroupPaymentCalender.PaymentType.MUSIC_APPLY) {
|
|
|
+ if (musicGroupPaymentCalender.getExpectNum() == null) {
|
|
|
+ musicGroupPaymentCalender.setExpectNum(totalStudentNum);
|
|
|
+ } else {
|
|
|
+ musicGroupPaymentCalender.setExpectNum(musicGroupPaymentCalender.getExpectNum() + totalStudentNum);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ musicGroupPaymentCalender.setUpdateTime(nowDate);
|
|
|
+ musicGroupPaymentCalenderDao.update(musicGroupPaymentCalender);
|
|
|
+
|
|
|
+ MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = null;
|
|
|
+ List<MusicGroupPaymentCalenderDetail> insertMusicGroupPaymentCalenderDetailList = new ArrayList<MusicGroupPaymentCalenderDetail>();
|
|
|
+
|
|
|
+ List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetails = new ArrayList<>();
|
|
|
+
|
|
|
+ List<MusicGroupPaymentCalenderCourseSettings> courseSettingsList = musicGroupPaymentCalenderCourseSettingsDao
|
|
|
+ .getWithPaymentCalender(musicGroupPaymentCalender.getId());
|
|
|
+
|
|
|
+ for (StudentImportDto si : studentBasicList) {
|
|
|
+ musicGroupPaymentCalenderDetail = new MusicGroupPaymentCalenderDetail();
|
|
|
+ musicGroupPaymentCalenderDetail.setTenantId(tenantId);
|
|
|
+ musicGroupPaymentCalenderDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalender.getId());
|
|
|
+ musicGroupPaymentCalenderDetail.setUserId(si.getUserId());
|
|
|
+ musicGroupPaymentCalenderDetail.setResponsibleUserId(musicGroupPaymentCalender.getOperator());
|
|
|
+ musicGroupPaymentCalenderDetail.setPaymentStatus(PAID_COMPLETED);
|
|
|
+ musicGroupPaymentCalenderDetail.setPayTime(nowDate);
|
|
|
+ musicGroupPaymentCalenderDetail.setPaymentOrderId(null);
|
|
|
+ musicGroupPaymentCalenderDetail.setUseInCourse(0);
|
|
|
+ musicGroupPaymentCalenderDetail.setOpen(1);
|
|
|
+ musicGroupPaymentCalenderDetail.setUserStatus(null);
|
|
|
+ musicGroupPaymentCalenderDetail.setDeadlinePaymentDate(musicGroupPaymentCalender.getDeadlinePaymentDate());
|
|
|
+ musicGroupPaymentCalenderDetail.setStartPaymentDate(musicGroupPaymentCalender.getStartPaymentDate());
|
|
|
+ musicGroupPaymentCalenderDetail.setCreateTime(nowDate);
|
|
|
+ musicGroupPaymentCalenderDetail.setUpdateTime(nowDate);
|
|
|
+
|
|
|
+ insertMusicGroupPaymentCalenderDetailList.add(musicGroupPaymentCalenderDetail);
|
|
|
+
|
|
|
+ for (MusicGroupPaymentCalenderCourseSettings courseSetting : courseSettingsList) {
|
|
|
+ if (courseSetting.getCourseTotalMinuties() == null || courseSetting.getCourseTotalMinuties() == 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ MusicGroupPaymentStudentCourseDetail musicGroupPaymentStudentCourseDetail = new MusicGroupPaymentStudentCourseDetail();
|
|
|
+ musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderId(musicGroupPaymentCalender.getId());
|
|
|
+ musicGroupPaymentStudentCourseDetail.setMusicGroupPaymentCalenderDetailId(musicGroupPaymentCalenderDetail.getId());
|
|
|
+ musicGroupPaymentStudentCourseDetail.setUserId(si.getUserId());
|
|
|
+ musicGroupPaymentStudentCourseDetail.setCourseType(courseSetting.getCourseType());
|
|
|
+ musicGroupPaymentStudentCourseDetail.setTotalCourseMinutes(courseSetting.getCourseTotalMinuties());
|
|
|
+ musicGroupPaymentStudentCourseDetail.setCourseOriginalPrice(courseSetting.getCourseOriginalPrice());
|
|
|
+ musicGroupPaymentStudentCourseDetail.setCourseCurrentPrice(courseSetting.getCourseCurrentPrice());
|
|
|
+ musicGroupPaymentStudentCourseDetail.setUsedCourseMinutes(0);
|
|
|
+ musicGroupPaymentStudentCourseDetail.setCreateTime(nowDate);
|
|
|
+ musicGroupPaymentStudentCourseDetail.setUpdateTime(nowDate);
|
|
|
+ musicGroupPaymentStudentCourseDetail.setTenantId(tenantId);
|
|
|
+ musicGroupPaymentStudentCourseDetails.add(musicGroupPaymentStudentCourseDetail);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (insertMusicGroupPaymentCalenderDetailList.size() > 0) {
|
|
|
+ musicGroupPaymentCalenderDetailDao.batchInsert(insertMusicGroupPaymentCalenderDetailList);
|
|
|
+ }
|
|
|
+ if (musicGroupPaymentStudentCourseDetails.size() > 0) {
|
|
|
+ musicGroupPaymentStudentCourseDetailDao.batchInsert(musicGroupPaymentStudentCourseDetails);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- return false;
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
@Override
|