ClassGroupService.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548
  1. package com.ym.mec.biz.service;
  2. import com.ym.mec.biz.dal.dto.*;
  3. import com.ym.mec.biz.dal.entity.*;
  4. import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
  5. import com.ym.mec.biz.dal.enums.GroupType;
  6. import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
  7. import com.ym.mec.biz.dal.page.*;
  8. import com.ym.mec.common.entity.HttpResponseResult;
  9. import com.ym.mec.common.entity.ImGroupModel;
  10. import com.ym.mec.common.entity.ImUserModel;
  11. import com.ym.mec.common.page.PageInfo;
  12. import com.ym.mec.common.page.QueryInfo;
  13. import com.ym.mec.common.service.BaseService;
  14. import java.lang.reflect.InvocationTargetException;
  15. import java.math.BigDecimal;
  16. import java.util.List;
  17. import java.util.Map;
  18. import java.util.Set;
  19. public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
  20. public PageInfo<ClassGroup> queryPage(ClassGroupQueryInfo queryInfo);
  21. boolean create(ClassGroup classGroup);
  22. /**
  23. * 查询老师乐团课课程
  24. *
  25. * @param teacherId
  26. * @return
  27. */
  28. List<ClassGroup> findClassGroup4Teacher(Integer teacherId);
  29. /**
  30. * 合奏班相关班级获取
  31. *
  32. * @param mixClassGroupId
  33. * @return
  34. */
  35. List<ClassGroup> findClassGroup(String musicGroupId, Integer mixClassGroupId);
  36. /**
  37. * 根据乐团编号查询单技班列表
  38. *
  39. * @param musicGroupId
  40. * @return
  41. */
  42. List<ClassGroup> findAllNormalClassGroupByMusicGroupId(String musicGroupId);
  43. /**
  44. * 根据乐团编号查询合奏班列表
  45. *
  46. * @param musicGroupId
  47. * @return
  48. */
  49. List<ClassGroup> findAllMixClassGroupByMusicGroupId(String musicGroupId);
  50. /**
  51. * @Author: Joburgess
  52. * @Date: 2019/10/8
  53. * @params [musicGroupId]
  54. * @return java.util.List<com.ym.mec.biz.dal.entity.ClassGroup>
  55. * @describe 获取乐团下所有班级
  56. */
  57. List<ClassGroup> findAllClassGroupByMusicGroup(String musicGroupId,String type);
  58. /**
  59. * 添加单技班
  60. *
  61. * @param classGroup
  62. * @return
  63. */
  64. ClassGroup addClassGroup(ClassGroup classGroup,GroupType groupType) throws Exception;
  65. /**
  66. * 添加合奏班
  67. *
  68. * @param classGroupIds
  69. * @return
  70. * @throws Exception
  71. */
  72. ClassGroup addMixClassGroup(String musicGroupId, String name, String classGroupIds) throws Exception;
  73. /**
  74. * 跟班级ids查询班级信息
  75. *
  76. * @param ids
  77. * @return
  78. */
  79. List<ClassGroup> findClassGroupByIds(String ids);
  80. /**
  81. * 提高班批量添加
  82. *
  83. * @param highClassGroupList
  84. * @return
  85. * @throws Exception
  86. */
  87. List<HighClassGroupDto> addHighClassGroup(List<HighClassGroupDto> highClassGroupList) throws Exception;
  88. /**
  89. * 获取老师乐团课程信息列表
  90. *
  91. * @param queryInfo
  92. * @return
  93. */
  94. PageInfo<TeacherMusicClassInfoDto> getTeacherMusicClass(TeacherMusicClassQueryInfo queryInfo);
  95. /**
  96. * 获取老师VIP课程信息列表
  97. *
  98. * @param queryInfo
  99. * @return
  100. */
  101. PageInfo<TeacherVipClassInfoDto> getTeacherVipClass(VipClassQueryInfo queryInfo);
  102. /**
  103. * 获取乐团班级老师课酬
  104. *
  105. * @param musicGroupId
  106. * @param type 班级类型(多种类型)
  107. * @return
  108. */
  109. List<ClassGroupTeachersDto> getClassGroupAndTeachers(String musicGroupId,String type,Integer classGroupId);
  110. /**
  111. * 获取乐团班级老师课酬
  112. *
  113. * @param musicGroupId
  114. * @return
  115. */
  116. List<ClassGroupTeachersDto> getClassGroupAndTeacherSalary(String musicGroupId, SalarySettlementTypeEnum type,Integer classGroupId) throws Exception;
  117. /**
  118. * 获取学生所购买课程列表
  119. *
  120. * @param userId
  121. * @param queryInfo
  122. * @return
  123. */
  124. PageInfo<CourseListDto> queryCoursePage(UserMusicGroupQueryInfo queryInfo,Integer userId);
  125. /**
  126. * 获取学员所在群组信息
  127. * @param userId
  128. * @param search
  129. * @return
  130. */
  131. List<ImGroupModel> queryUserGroups(Integer userId,String search);
  132. /**
  133. * 获取群组下用户基本信息
  134. * @param groupId
  135. * @return
  136. */
  137. List<ImUserModel> findGroupUsers(Integer groupId,String search);
  138. /**
  139. * 获取群组下学员基本信息
  140. * @param groupId
  141. * @return
  142. */
  143. List<ImUserModel> findGroupStudents(Integer groupId,String search);
  144. /**
  145. * 分页查询学生购买记录
  146. * @param studentPayLogQueryInfo
  147. * @return
  148. */
  149. PageInfo<StudentPayInfoDto> queryStudentPayLog(StudentPayLogQueryInfo studentPayLogQueryInfo);
  150. /**
  151. * 班级添加学生
  152. * @param classGroup
  153. * @param userId
  154. * @return
  155. */
  156. ClassGroup addStudent(ClassGroup classGroup, Integer userId, GroupType groupType);
  157. /**
  158. * 添加学生到指定班级并排课
  159. * @param studentId
  160. * @param classGroupIdListStr
  161. * @return
  162. */
  163. boolean addStudentToClassGroupAndCourseArranging(Integer studentId, String classGroupIdListStr, String batchNo, List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettingsList);
  164. /**
  165. * 获取未分配合奏的单技班列表
  166. * @param musicGroupId
  167. * @return
  168. */
  169. List<ClassGroup> findNoClassSubjects(String musicGroupId);
  170. /**
  171. * @Author: Joburgess
  172. * @Date: 2019/10/16
  173. * @params [classGroupId, num]
  174. * @return boolean
  175. * @describe 跟新班级人数
  176. */
  177. boolean updateClassStudentNum(Integer classGroupId,Integer num);
  178. boolean updateClassStudentNum(Integer classGroupId);
  179. /**
  180. * 删除单技班级
  181. * @param classGroupId
  182. */
  183. void delSingle(Integer classGroupId);
  184. /**
  185. * 删除合奏班级
  186. * @param classGroupId
  187. */
  188. void delMix(Integer classGroupId);
  189. /**
  190. * 成团确认,校验参数,并设置团长
  191. * @param teacherId
  192. * @param musicGroupId
  193. */
  194. void addMusicGroupTeam(Integer teacherId, String musicGroupId,Integer improventClassesNum) throws Exception;
  195. /**
  196. * @Author: Joburgess
  197. * @Date: 2019/10/17
  198. * @params [type]
  199. * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassGroupDto>
  200. * @describe 获取老师所在班级列表
  201. */
  202. List<TeacherClassGroupDto> findTeacherClassGroups(String type,String status);
  203. /**
  204. * @Author: Joburgess
  205. * @Date: 2019/10/18
  206. * @params @param classGroupId:班级编号
  207. * @return com.ym.mec.biz.dal.dto.TeacherClassHeadInfo
  208. * @describe 获取班级信息
  209. */
  210. TeacherClassHeadInfo findTeacherClassGroupInfo(Integer classGroupId);
  211. /**
  212. * @describe 获取班级对应学生列表
  213. * @author Joburgess
  214. * @date 2019/10/18
  215. * @param queryInfo:
  216. * @return org.snaker.engine.access.Page
  217. */
  218. PageInfo findTeacherClassStudents(CourseScheduleQueryInfo queryInfo);
  219. /**
  220. * @describe 根据班级获取点名列表
  221. * @author Joburgess
  222. * @date 2019/10/19
  223. * @param courseScheduleId:
  224. * @return java.util.List<com.ym.mec.biz.dal.dto.StudentAttendanceViewDto>
  225. */
  226. List<StudentAttendanceViewDto> findAttendanceStudentByCourse(Long courseScheduleId);
  227. /**
  228. * @describe 分页查询课程点名列表
  229. * @author Joburgess
  230. * @date 2020/1/17
  231. * @param queryInfo:
  232. * @return com.ym.mec.common.page.PageInfo
  233. */
  234. PageInfo findAttendanceStudentByCourseWithPage(CourseScheduleQueryInfo queryInfo);
  235. /**
  236. * 班级调整(新增班级)
  237. * @param classGroup4MixDto
  238. * @return
  239. */
  240. ClassGroup classGroupAdjust(List<ClassGroup4MixDto> classGroup4MixDto);
  241. /**
  242. * 合班拆班新建班级
  243. * @param classGroup4MixDtos
  244. * @return
  245. */
  246. ClassGroup classGroupAdjust2(ClassGroup4MixDto classGroup4MixDtos);
  247. /**
  248. * 班级调整(修改班级)
  249. * @param classGroup4MixDtos
  250. * @return
  251. */
  252. HttpResponseResult classGroupUpdate(List<ClassGroup4MixDto> classGroup4MixDtos) throws Exception;
  253. /**
  254. * 班级调整(增加临时班级)
  255. * @param classGroup4MixDtos
  256. * @return
  257. */
  258. ClassGroup classGroupSnap(List<ClassGroup4MixDto> classGroup4MixDtos) throws Exception;
  259. /**
  260. * 乐团详情--班级详情列表
  261. * @param queryInfo
  262. * @return
  263. */
  264. PageInfo<MusicGroupClassGroupDto> queryMusicGroupClassGroup(QueryInfo queryInfo);
  265. /**
  266. * 乐团详情-----课酬调整
  267. * @param queryInfo
  268. * @return
  269. */
  270. PageInfo<MusicGroupCourseScheduleDto> queryMusicGroupCourseSchedule(queryMusicGroupCourseScheduleQueryInfo queryInfo);
  271. /**
  272. * 乐团详情-----课表详情
  273. * @param queryInfo
  274. * @return
  275. */
  276. PageInfo<MusicGroupCourseScheduleDto> queryMusicGroupCourseScheduleDetail(queryMusicGroupCourseScheduleQueryInfo queryInfo);
  277. /**
  278. * 批量新增班级上的课次数
  279. * @param classGroupList
  280. * @return
  281. */
  282. boolean batchIncreaseClassTimes(List<Integer> classGroupList);
  283. List<ClassGroupTeachersDto> classGroupAndTeacher(Integer classGroupId);
  284. /**
  285. * 根据乐团跟声部获取提高班列表
  286. *
  287. * @param musicGroupId
  288. * @param subjectId
  289. * @return
  290. */
  291. List<HighClassGroupDto> findClassGroupByMusicGroupIdAndSubjectId(String musicGroupId,Integer subjectId);
  292. /**
  293. * @describe 批量更新指定班级人数
  294. * @author Joburgess
  295. * @date 2019/11/12
  296. * @param classGroupIds: 班级编号列表
  297. * @return int
  298. */
  299. int batchUpdateClassCourseTimes(List<Integer> classGroupIds);
  300. /*
  301. * @describe 将学生加入到班级
  302. * @author Joburgess
  303. * @date 2019/11/16
  304. * @param musicGroupId: 乐团或者VIP课编号
  305. * @param classGroupId: 班级编号
  306. * @param studentIds: 学生编号列表
  307. * @return void
  308. */
  309. void addStudentIntoClassGroup(String musicGroupId,Integer classGroupId,List<Integer> studentIds);
  310. /**
  311. * 根据乐团id,班级类型获取班级和老师
  312. * @param musicGroupId
  313. * @param type
  314. * @return
  315. */
  316. List<ClassGroupTeachersDto> getClassGroupAndTeacherByType(String musicGroupId, ClassGroupTypeEnum type);
  317. /**
  318. * 根据乐团id,班级类型获取班级和老师
  319. * @param queryInfo
  320. * @return
  321. */
  322. PageInfo<ClassGroupTeachersDto> queryClassGroupPage(ClassGroupQueryInfo queryInfo);
  323. /**
  324. * 添加IM群组
  325. * @param classGroup
  326. * @param userIds
  327. * @param teacherIdList
  328. * @return
  329. */
  330. Boolean addImGroup(ClassGroup classGroup,List<Integer> userIds, List<Integer> teacherIdList);
  331. /**
  332. * 检测是否设置课酬
  333. * @param musicGroupId
  334. * @return
  335. */
  336. Boolean checkSetSalary(String musicGroupId);
  337. boolean updateTotalClassTimes(Integer classGroupId, Integer num);
  338. /**
  339. * @describe 跟新班级相关信息
  340. * @author Joburgess
  341. * @date 2019/12/11
  342. * @param classGroupId: 班级编号
  343. * @return void
  344. */
  345. void updateClassGroupInfo(Integer classGroupId);
  346. /**
  347. * @describe 批量更新班级上的课次信息
  348. * @author Joburgess
  349. * @date 2020/2/20
  350. * @param classGroupIds: 班级编号列表
  351. * @return void
  352. */
  353. void updateClassGroupsCourseInfo(List<Integer> classGroupIds);
  354. /**
  355. * 清除班级未开始课程
  356. * @param classGroupId
  357. * @return
  358. */
  359. boolean delClassNoStartCourse(Integer classGroupId);
  360. /**
  361. * 根据群编号,获取群组基本信息
  362. * @param groupId
  363. * @return
  364. */
  365. ClassGroup findGroupById(Integer groupId);
  366. /**
  367. * @describe 终极班级信息获取
  368. * @author Joburgess
  369. * @date 2019/12/30
  370. * @param queryInfo: 查询条件
  371. * @return com.ym.mec.common.page.PageInfo
  372. */
  373. PageInfo endFindClassGroups(EndCourseScheduleQueryInfo queryInfo);
  374. /**
  375. *
  376. * @param groupId
  377. * @param userId
  378. * @return
  379. */
  380. Map<String,Object> getUserInfoWithUserId(Integer groupId, Integer userId);
  381. /**
  382. * 根据群编号,修改群名称
  383. * @param groupId
  384. * @param groupName
  385. */
  386. void updateGroupName(Integer groupId, String groupName);
  387. /**
  388. * @params @param courseId:课程编号
  389. * @return com.ym.mec.biz.dal.dto.TeacherClassHeadInfo
  390. * @describe 获取班级信息
  391. */
  392. TeacherClassHeadInfo findTeacherClassGroupInfoByCourseId(Integer courseId);
  393. /**
  394. * 查询指定班级剩余未上课程类型的时长
  395. * @param classGroupIdList
  396. * @return
  397. */
  398. List<RemainCourseTypeDurationDto> queryRemainCourseTypeDuration(String classGroupIdList);
  399. /**
  400. * 进行中乐团-修改-班级详情-学员班级调整详情
  401. * @author zouxuan
  402. * @param classGroupId
  403. * @return
  404. */
  405. Map<String,Integer> classGroupSubCourseNum(Integer classGroupId);
  406. /**
  407. * 进行中乐团-修改-班级详情-学员班级调整-获取所选班级最大可排课时长
  408. * @author zouxuan
  409. * @param classGroupIds
  410. * @return
  411. */
  412. Map<String,Object> getDefaultPaymentCalender(List<Integer> classGroupIds);
  413. /**
  414. * 进行中乐团-修改-班级详情-学员班级调整-合并结果确认
  415. * 保存新增班级的基本信息,冻结所选班级的课程,生成同一批次的缴费项目,保存调整详情
  416. * @author zouxuan
  417. * @param mergeClassSplitClassAffirmDto
  418. * @return
  419. */
  420. HttpResponseResult mergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) throws InvocationTargetException, IllegalAccessException, Exception;
  421. /**
  422. * 进行中乐团-修改-班级详情-学员班级调整-合并结果确认-获取新班级的可排课时长
  423. * @author zouxuan
  424. * @param classGroupIds
  425. * @return
  426. */
  427. Map<String,Long> findClassCourseMinuteMap(List<Integer> classGroupIds,Map<String,Long> classCourseMinuteMap);
  428. /**
  429. * 获取基础技能班/线上基础技能班数量和容许最大数量
  430. * @param musicGroupId
  431. * @param type
  432. * @return
  433. */
  434. HighClassGroupNumDto getSubjectMaxHighClassGroupNum(String musicGroupId,ClassGroupTypeEnum type);
  435. /**
  436. * 进行中乐团-修改-班级详情-班级合并-获取学员需要补交的费用以及需要退还的课程余额
  437. * @param masterClassGroupId
  438. * @param classGroupStudents
  439. * @param studentIds
  440. * @return
  441. */
  442. List<MusicGroupPaymentCalenderStudentDetail> queryStudentPaymentCalenders(Integer masterClassGroupId,String classGroupStudents,List<Integer> studentIds);
  443. /**
  444. * 获取主班课程类型剩余价值
  445. * @param masterClassGroupId
  446. * @return
  447. */
  448. BigDecimal getMasterTotalPrice(Integer masterClassGroupId);
  449. /**
  450. * 获取班级列表最大可排课时长
  451. * @param classGroupId
  452. * @return
  453. */
  454. Map<String,Long> querySubCourseTime(Integer classGroupId);
  455. /**
  456. * 跨团班级合并提交
  457. * @param mergeClassSplitClassAffirmDto
  458. * @return
  459. */
  460. HttpResponseResult spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto);
  461. /**
  462. * 跨团合班缴费项目审核通过后
  463. * @param masterClassGroupId
  464. * @param studentIds
  465. * @param courseIds
  466. * @param classGroupStudents
  467. */
  468. void spanGroupClassAdjustPass(Integer masterClassGroupId,List<Integer> studentIds,List<Long> courseIds,List<Map> classGroupStudents,List<Long> allLockCourseIds,String batchNo,BigDecimal masterTotalPrice);
  469. }