TaskController.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512
  1. package com.ym.mec.web.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.ym.mec.biz.dal.dao.MusicGroupSchoolTermCourseDetailDao;
  5. import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermCourseDetail;
  6. import com.ym.mec.biz.dal.entity.TenantInfo;
  7. import com.ym.mec.biz.dal.enums.IndexDataType;
  8. import com.ym.mec.biz.event.source.CourseEventSource;
  9. import com.ym.mec.biz.service.*;
  10. import com.ym.mec.common.controller.BaseController;
  11. import com.ym.mec.common.entity.UploadReturnBean;
  12. import com.ym.mec.common.redis.service.RedisCache;
  13. import com.ym.mec.im.ImFeignService;
  14. import com.ym.mec.util.date.DateUtil;
  15. import com.yonge.log.service.HistoryMessageService;
  16. import io.swagger.annotations.ApiOperation;
  17. import org.apache.commons.io.FileUtils;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.web.bind.annotation.GetMapping;
  21. import org.springframework.web.bind.annotation.RequestMapping;
  22. import org.springframework.web.bind.annotation.RestController;
  23. import java.io.File;
  24. import java.net.URL;
  25. import java.util.*;
  26. import java.util.concurrent.TimeUnit;
  27. import java.util.stream.Collectors;
  28. @RequestMapping("task")
  29. @RestController
  30. public class TaskController extends BaseController {
  31. @Autowired
  32. private MusicGroupStudentFeeService musicGroupStudentFeeService;
  33. @Autowired
  34. private VipGroupService vipGroupService;
  35. @Autowired
  36. private CourseScheduleService courseScheduleService;
  37. @Autowired
  38. private TeacherAttendanceService teacherAttendanceService;
  39. @Autowired
  40. private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
  41. @Autowired
  42. private StudentCourseHomeworkService studentCourseHomeworkService;
  43. @Autowired
  44. private CourseHomeworkService courseHomeworkService;
  45. @Autowired
  46. private StudentPaymentOrderService studentPaymentOrderService;
  47. @Autowired
  48. private TenantPaymentOrderService tenantPaymentOrderService;
  49. @Autowired
  50. private TeacherCourseStatisticsService teacherCourseStatisticsService;
  51. @Autowired
  52. private PracticeGroupService practiceGroupService;
  53. @Autowired
  54. private CourseScheduleEvaluateService courseScheduleEvaluateService;
  55. @Autowired
  56. private CourseReviewService courseReviewService;
  57. @Autowired
  58. private CoursesGroupService coursesGroupService;
  59. @Autowired
  60. private ExtracurricularExercisesService extracurricularExercisesService;
  61. @Autowired
  62. private StudentService studentService;
  63. @Autowired
  64. private MusicGroupPaymentCalenderService musicGroupPaymentCalenderService;
  65. @Autowired
  66. private MusicGroupPaymentCalenderDetailService musicGroupPaymentCalenderDetailService;
  67. @Autowired
  68. private StudentServeService studentServeService;
  69. @Autowired
  70. private OperatingReportService operatingReportService;
  71. @Autowired
  72. private GoodsService goodsService;
  73. @Autowired
  74. private StudentGoodsSellService studentGoodsSellService;
  75. @Autowired
  76. private SysMessageService sysMessageService;
  77. @Autowired
  78. private CourseEventSource courseEventSource;
  79. @Autowired
  80. private RedisCache<String, Object> redisCache;
  81. @Autowired
  82. private IndexBaseMonthDataService indexBaseMonthDataService;
  83. @Autowired
  84. private InspectionItemPlanService inspectionItemPlanService;
  85. @Autowired
  86. private StudentInstrumentService studentInstrumentService;
  87. @Autowired
  88. private CloudTeacherOrderService cloudTeacherOrderService;
  89. @Autowired
  90. private HistoryMessageService historyMessageService;
  91. @Autowired
  92. private ImFeignService imFeignService;
  93. @Autowired
  94. private IndexErrDataRecordService indexErrDataRecordService;
  95. @Autowired
  96. private ClassGroupService classGroupService;
  97. @Autowired
  98. private MusicGroupSchoolTermCourseDetailDao musicGroupSchoolTermCourseDetailDao;
  99. @Autowired
  100. private MusicGroupSchoolTermCourseDetailService musicGroupSchoolTermCourseDetailService;
  101. @Autowired
  102. private SysMusicCompareRecordService sysMusicCompareRecordService;
  103. @Autowired
  104. private TenantInfoService tenantInfoService;
  105. @GetMapping(value = "/syncImHistoryMessageTask")
  106. // 同步即时通讯聊天记录
  107. public void syncImHistoryMessageTask(String date) throws Exception {
  108. if(date == null){
  109. date = DateUtil.format(DateUtil.addHours(new Date(),-2), DateUtil.YEAR_MONTH_DAY_HOUR);
  110. }
  111. Object o = imFeignService.historyGet(date);
  112. JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(o));
  113. if(jsonObject.get("code").equals(200)){
  114. Boolean success = redisCache.getRedisTemplate().opsForValue().setIfAbsent("syncImHistoryMessage" + date,date);
  115. if(!success){
  116. return;
  117. }
  118. String url = jsonObject.getString("url");
  119. if(StringUtils.isEmpty(url)){
  120. return;
  121. }
  122. File file = new File(FileUtils.getTempDirectoryPath() + url.substring(url.lastIndexOf("/")));
  123. URL url1 = new URL(url);
  124. FileUtils.copyURLToFile(url1,file);
  125. historyMessageService.saveImHistoryMessage(new File(file.getAbsolutePath()));
  126. }
  127. }
  128. @GetMapping(value = "/autoAffirmReceiveTask")
  129. // 自动确认收货
  130. public void affirmReceive(){
  131. studentGoodsSellService.affirmReceive(null);
  132. }
  133. @GetMapping(value = "/closeStudentServiceTag")
  134. // 关闭指定学员服务指标
  135. public void closeStudentServiceTag(){
  136. studentServeService.closeStudentServiceTag();
  137. }
  138. @GetMapping(value = "/pushWaitSendMessageTask")
  139. // 每天9点推送前一天22点之后的推送消息
  140. public void pushWaitSendMessageTask(){
  141. sysMessageService.pushWaitSendMessageTask();
  142. }
  143. @GetMapping(value = "/repertoryWarn")
  144. // 商品库存预警
  145. public void repertoryWarn(){
  146. List<TenantInfo> tenantInfos = tenantInfoService.list(new QueryWrapper<TenantInfo>().eq("state_",1));
  147. if(tenantInfos != null && tenantInfos.size() > 0){
  148. for (TenantInfo tenantInfo : tenantInfos) {
  149. goodsService.repertoryWarn(tenantInfo.getId());
  150. }
  151. }
  152. }
  153. @GetMapping(value = "/refreshUserMusicGroupPaymentStatusTask")
  154. // 刷新学员乐团付费状态
  155. public void refreshUserMusicGroupPaymentStatusTask(){
  156. musicGroupPaymentCalenderDetailService.refreshUserMusicGroupPaymentStatusTask();
  157. }
  158. @GetMapping("/refreshPaymentFeeStatus")
  159. // 刷新付费状态
  160. public void refreshPaymentFeeStatus() {
  161. musicGroupStudentFeeService.refreshPaymentFeeStatus();
  162. }
  163. @GetMapping("/vipGroupAwardedMonthlyRewards")
  164. // vip课月度奖励
  165. public void vipGroupAwardedMonthlyRewards() {
  166. vipGroupService.awardedMonthlyRewards();
  167. }
  168. @GetMapping("/vipGroupTeacherSalarySettlement")
  169. // vip课课酬结算
  170. public void vipGroupTeacherSalarySettlement() {
  171. List<TenantInfo> tenantInfos = tenantInfoService.list(new QueryWrapper<TenantInfo>().eq("state_",1));
  172. if(tenantInfos != null && tenantInfos.size() > 0){
  173. for (TenantInfo tenantInfo : tenantInfos) {
  174. courseScheduleTeacherSalaryService.teacherSalarySettlement(tenantInfo.getId());
  175. }
  176. }
  177. redisCache.getRedisTemplate().opsForSet().add(CourseScheduleTeacherSalaryService.TASK_KEY, "VIP");
  178. }
  179. @GetMapping("/practiceTeacherSalarySettlement")
  180. // 陪练课课酬结算
  181. public void practiceTeacherSalarySettlement() {
  182. List<TenantInfo> tenantInfos = tenantInfoService.list(new QueryWrapper<TenantInfo>().eq("state_",1));
  183. if(tenantInfos != null && tenantInfos.size() > 0){
  184. for (TenantInfo tenantInfo : tenantInfos) {
  185. courseScheduleTeacherSalaryService.practiceTeacherSalarySettlement(tenantInfo.getId());
  186. }
  187. }
  188. redisCache.getRedisTemplate().opsForSet().add(CourseScheduleTeacherSalaryService.TASK_KEY, "PRACTICE");
  189. }
  190. // 乐团课课酬结算
  191. @GetMapping("/musicGroupTeacherSalarySettlement")
  192. public void musicGroupTeacherSalarySettlement() {
  193. List<TenantInfo> tenantInfos = tenantInfoService.list(new QueryWrapper<TenantInfo>().eq("state_",1));
  194. if(tenantInfos != null && tenantInfos.size() > 0){
  195. for (TenantInfo tenantInfo : tenantInfos) {
  196. courseScheduleTeacherSalaryService.musicGroupTeacherSalarySettlement(tenantInfo.getId());
  197. }
  198. }
  199. redisCache.getRedisTemplate().opsForSet().add(CourseScheduleTeacherSalaryService.TASK_KEY, "MUSIC");
  200. }
  201. @GetMapping("/updateCourseScheduleToOverStatus")
  202. // 更新课程状态至已结束
  203. public void updateCourseScheduleToOverStatus() {
  204. courseScheduleService.updateCourseScheduleToOverStatus();
  205. courseScheduleService.updateCourseScheduleToUnderway();
  206. courseEventSource.courseStatusChange(null);
  207. }
  208. @GetMapping("/updateVipGroupToFinishedStatus")
  209. // 更新VIP课程状态至已结束
  210. public void updateVipGroupToFinishedStatus() {
  211. vipGroupService.updateVipGroupStatusToFinished();
  212. }
  213. @GetMapping("/stopVipGroupWithNoCreate")
  214. // 取消达到报名时间未达到报名人数的vip课
  215. public void stopVipGroupWithNoCreate() {
  216. vipGroupService.stopVipGroupWithNoCreate();
  217. }
  218. @GetMapping("/pushNoSignOutMessage")
  219. // 推送未签退消息提醒
  220. public void pushNoSignOutMessage() {
  221. List<TenantInfo> tenantInfos = tenantInfoService.list(new QueryWrapper<TenantInfo>().eq("state_",1));
  222. if(tenantInfos != null && tenantInfos.size() > 0){
  223. for (TenantInfo tenantInfo : tenantInfos) {
  224. teacherAttendanceService.pushNoSignOutMessage(tenantInfo.getId());
  225. }
  226. }
  227. }
  228. @GetMapping("/studentCoursesScheduleRemind")
  229. // 学生有课提醒
  230. public void studentCoursesScheduleRemind() {
  231. // courseScheduleService.studentCoursesScheduleRemind();
  232. }
  233. @GetMapping("/studentSignInRemind")
  234. // 学生上课提醒
  235. public void studentSignInRemind() {
  236. courseScheduleService.studentSignInRemind();
  237. }
  238. @GetMapping("/studentHomeworkRemind")
  239. // 学生作业提醒
  240. public void studentHomeworkRemind() {
  241. studentCourseHomeworkService.homeworkRemind();
  242. }
  243. @GetMapping("/teacherCoursesScheduleRemind")
  244. // 老师有课提醒
  245. public void teacherCoursesScheduleRemind() {
  246. courseScheduleService.teacherCoursesScheduleRemind();
  247. }
  248. @GetMapping("/teacherSignInRemind")
  249. // 老师上课提醒
  250. public void teacherSignInRemind() {
  251. // courseScheduleService.teacherSignInRemind();
  252. }
  253. @GetMapping("/homeworkNoReplyRemind")
  254. // 老师未回复作业提醒
  255. public void homeworkNoReplyRemind() {
  256. courseHomeworkService.homeworkNoReplyRemind();
  257. }
  258. // 查询订单状态
  259. @GetMapping("/queryOrderStatus")
  260. public void queryOrderStatus() throws Exception {
  261. try {
  262. studentPaymentOrderService.queryOrderStatus();
  263. } catch (Exception e) {
  264. e.printStackTrace();
  265. }
  266. tenantPaymentOrderService.queryOrderStatusFromRemote();
  267. }
  268. // 统计老师课酬
  269. @GetMapping("/teacherCourseStatistic")
  270. public void teacherCourseStatisticsService() throws Exception {
  271. teacherCourseStatisticsService.teacherCourseStatistic();
  272. }
  273. // 更新历史陪练课至已结束
  274. @GetMapping("/updateHistoryPracticeGroupStatus")
  275. public void updateHistoryPracticeGroupStatus() {
  276. practiceGroupService.updateHistoryPracticeGroupStatus();
  277. }
  278. // 练习报告定时推送
  279. @GetMapping("/pushStudyReport")
  280. public void pushStudyReport() {
  281. practiceGroupService.pushStudyReport(null, "JIGUANG");
  282. }
  283. // 新增待填写月报定时推送(推送老师)
  284. @GetMapping("/pushNeedPostReport")
  285. public void pushNeedPostReport() {
  286. courseScheduleEvaluateService.pushNeedPostReport();
  287. }
  288. // 定时预生成待提交月报
  289. @GetMapping("/createEvaluate")
  290. public void createEvaluate() {
  291. courseScheduleEvaluateService.createEvaluate(new Date());
  292. }
  293. // 新增待填写评论定时推送(推送老师)
  294. @GetMapping("/pushNeedReview2Teacher")
  295. public void pushNeedReview2Teacher() {
  296. courseReviewService.pushNeedReview2Teacher();
  297. }
  298. //对外无学生课程组提醒
  299. @GetMapping("/noStudentsCourseGroupRemind")
  300. public void noStudentsCourseGroupRemind(){
  301. coursesGroupService.noStudentsCourseGroupRemind();
  302. }
  303. //更新对外课程组状态至已结束
  304. @GetMapping("/finishCourseGroup")
  305. public void finishCourseGroup(){
  306. coursesGroupService.finishCourseGroup();
  307. }
  308. //学生服务信息统计
  309. @GetMapping("/exercisesSituationStatistics")
  310. public void exercisesSituationStatistics(String monday){
  311. studentServeService.exercisesSituationStatistics2(monday,null);
  312. // studentServeService.exercisesSituationStatistics2(null,new ArrayList<>(Arrays.asList(1095257)));
  313. // studentServeService.exercisesSituationStatistics(null);
  314. }
  315. //更新学生运营指标
  316. @GetMapping("/updateStudentOperatingTag")
  317. public void updateStudentOperatingTag(){
  318. studentService.updateOperatingTempTag();
  319. }
  320. // 更新乐团缴费日历的状态
  321. @GetMapping("/updateMusicGroupPaymentCalenderStatus")
  322. public void updateMusicGroupPaymentCalenderStatus() {
  323. musicGroupPaymentCalenderService.autoUpdateMusicGroupPaymentCalenderStatus();
  324. }
  325. // 更新乐团学员缴费状态
  326. @GetMapping("/updateMusicGroupStudentFeeStatus")
  327. public void updateMusicGroupStudentFeeStatus() {
  328. musicGroupPaymentCalenderService.autoUpdateMusicGroupStudentFeeStatus();
  329. }
  330. // 推送教师异常考勤
  331. @GetMapping("/pushTeacherExceptionAttendanceTask")
  332. public void pushTeacherExceptionAttendanceTask() {
  333. teacherAttendanceService.pushTeacherExceptionAttendanceTask();
  334. }
  335. //应布置课外训练提醒
  336. @GetMapping("/studentServeRemind")
  337. public void studentServeRemind(){
  338. extracurricularExercisesService.studentServeRemind();
  339. }
  340. //经营报表
  341. @GetMapping("/operatingReport")
  342. public void operatingReport(){
  343. List<TenantInfo> tenantInfos = tenantInfoService.list(new QueryWrapper<TenantInfo>().eq("state_",1));
  344. if(tenantInfos != null && tenantInfos.size() > 0){
  345. for (TenantInfo tenantInfo : tenantInfos) {
  346. operatingReportService.statistics(tenantInfo.getId());
  347. }
  348. }
  349. }
  350. @GetMapping("/updateCourseActualPrice")
  351. public void updateCourseActualPrice(){
  352. courseEventSource.courseStatusChange(null);
  353. }
  354. @GetMapping("/countIndexBaseData")
  355. public void countIndexBaseData(String month, String dataTypes){
  356. Set<IndexDataType> dataTypeSet = new HashSet<>();
  357. if(StringUtils.isNotBlank(dataTypes)){
  358. dataTypeSet = Arrays.stream(dataTypes.split(",")).map(s->IndexDataType.valueOf(s)).collect(Collectors.toSet());
  359. }
  360. indexBaseMonthDataService.indexBaseDataTask(month, dataTypeSet);
  361. }
  362. //乐团巡查计划当日9:00
  363. @GetMapping("/inspectionPlan")
  364. public void inspectionPlan(){
  365. inspectionItemPlanService.pushNotice();
  366. }
  367. //乐保到期提醒
  368. @GetMapping("/maintenanceNotice")
  369. public void maintenanceNotice(){
  370. studentInstrumentService.pushNotice();
  371. }
  372. //每年9.1升级学员的班级
  373. @GetMapping("/updateGrade")
  374. public void updateGrade(){
  375. studentService.updateGrade();
  376. }
  377. //乐保历史数据处理
  378. @GetMapping("/maintenanceOldDateAdd")
  379. public void maintenanceOldDateAdd(){
  380. studentInstrumentService.addOldStudentInstrument();
  381. }
  382. //更新学员指导老师和声部信息
  383. @GetMapping("/updateStudentTeacherAndSubject")
  384. public void updateStudentTeacherAndSubject(){
  385. studentService.updateStudentTeacherAndSubject();
  386. }
  387. //推送查看今日收入提醒
  388. @GetMapping("/todayIncomeRemind")
  389. public void todayIncomeRemind(){
  390. courseScheduleTeacherSalaryService.todayIncomeRemind();
  391. }
  392. //大雅基本工资标记
  393. @GetMapping("/salaryMarkNew")
  394. public void salaryMarkNew(Date startDay){
  395. List<TenantInfo> tenantInfos = tenantInfoService.list(new QueryWrapper<TenantInfo>().eq("state_",1));
  396. if(tenantInfos != null && tenantInfos.size() > 0){
  397. for (TenantInfo tenantInfo : tenantInfos) {
  398. courseScheduleTeacherSalaryService.salaryMarkNew(startDay,tenantInfo.getId());
  399. }
  400. }
  401. }
  402. //历史异常数据记录
  403. @GetMapping("/indexErrDataRecordTask")
  404. public void indexErrDataRecordTask(String date){
  405. indexErrDataRecordService.indexErrDataRecordTask(date);
  406. }
  407. //历史异常数据记录
  408. @GetMapping("/autoCleanPreCourseTask")
  409. public void autoCleanPreCourseTask(){
  410. //获取所有未确认的预排课数据
  411. List<MusicGroupSchoolTermCourseDetail> courseDetails = musicGroupSchoolTermCourseDetailDao.queryAllNoCourse();
  412. if(courseDetails.size() > 0){
  413. for (MusicGroupSchoolTermCourseDetail courseDetail : courseDetails) {
  414. classGroupService.cancelPreCourseSchedule(courseDetail.getId(),null);
  415. }
  416. }
  417. }
  418. @ApiOperation("每天10点推送排课、续费提醒")
  419. @GetMapping(value = "/musicSchoolTermPush")
  420. public void musicSchoolTermPush() {
  421. // Object o = redisCache.get("musicSchoolTermPush");
  422. // if(o != null){
  423. // return;
  424. // }
  425. List<TenantInfo> tenantInfos = tenantInfoService.list(new QueryWrapper<TenantInfo>().eq("state_",1));
  426. if(tenantInfos != null && tenantInfos.size() > 0){
  427. for (TenantInfo tenantInfo : tenantInfos) {
  428. musicGroupSchoolTermCourseDetailService.musicSchoolTermPush(tenantInfo.getId());
  429. }
  430. }
  431. redisCache.getRedisTemplate().opsForValue().set("musicSchoolTermPush","musicSchoolTermPush",
  432. 23,
  433. TimeUnit.HOURS);
  434. }
  435. @ApiOperation("会员到期后清空会员信息")
  436. @GetMapping(value = "/cleanStudentMember")
  437. public void cleanStudentMember() {
  438. studentServeService.cleanStudentMember();
  439. }
  440. @ApiOperation("清理学员云教练连续使用天数")
  441. @GetMapping(value = "/cleanStudentCloudStudySequenceDays")
  442. public void cleanStudentCloudStudySequenceDays(){
  443. studentService.cleanStudentCloudStudySequenceDays();
  444. }
  445. @ApiOperation("本周学员训练提醒")
  446. @GetMapping(value = "/curWeekStudentTrainRemind")
  447. public void curWeekStudentTrainRemind(){
  448. sysMusicCompareRecordService.curWeekStudentTrainRemind();
  449. }
  450. @ApiOperation("标记进行中乐团在读学员+VIP、网管有课学员总数(除弦乐声部、去重,去除在云教练的乐团的学员")
  451. @GetMapping(value = "/remarkCountFlag")
  452. public void remarkCountFlag(){
  453. // studentService.remarkCountFlag();
  454. }
  455. }