|
@@ -2,14 +2,18 @@ package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
import com.ym.mec.biz.dal.dao.ExtracurricularExercisesDao;
|
|
|
import com.ym.mec.biz.dal.dao.ExtracurricularExercisesReplyDao;
|
|
|
+import com.ym.mec.biz.dal.dao.TeacherDao;
|
|
|
import com.ym.mec.biz.dal.entity.ExtracurricularExercises;
|
|
|
import com.ym.mec.biz.dal.entity.ExtracurricularExercisesReply;
|
|
|
+import com.ym.mec.biz.dal.entity.Teacher;
|
|
|
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
|
|
|
import com.ym.mec.biz.dal.page.ExtraExercilseQueryInfo;
|
|
|
import com.ym.mec.biz.service.ExtracurricularExercisesService;
|
|
|
+import com.ym.mec.biz.service.SysMessageService;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
import com.ym.mec.common.exception.BizException;
|
|
|
-import com.ym.mec.common.page.PageInfo;
|
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
|
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -17,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Isolation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
@@ -30,6 +35,10 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
|
|
|
private ExtracurricularExercisesDao extracurricularExercisesDao;
|
|
|
@Autowired
|
|
|
private ExtracurricularExercisesReplyDao extracurricularExercisesReplyDao;
|
|
|
+ @Autowired
|
|
|
+ private SysMessageService sysMessageService;
|
|
|
+ @Autowired
|
|
|
+ private TeacherDao teacherDao;
|
|
|
|
|
|
@Override
|
|
|
public BaseDAO<Long, ExtracurricularExercises> getDAO() {
|
|
@@ -55,7 +64,8 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
|
|
|
exercises.setBatchNo(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
|
|
|
exercises.setExpectNum(studentIds.size());
|
|
|
extracurricularExercisesDao.insert(exercises);
|
|
|
- List<ExtracurricularExercisesReply> studentExtraExerises=new ArrayList<>();
|
|
|
+ String dateStr = DateUtil.dateToString(exercises.getExpireDate(), "MM月dd日HH点");
|
|
|
+ Teacher teacher = teacherDao.get(exercises.getTeacherId());
|
|
|
for (Integer studentId : studentIds) {
|
|
|
ExtracurricularExercisesReply studentExtraExercise=new ExtracurricularExercisesReply();
|
|
|
studentExtraExercise.setExtracurricularExercisesId(exercises.getId());
|
|
@@ -63,32 +73,60 @@ public class ExtracurricularExercisesServiceImpl extends BaseServiceImpl<Long, E
|
|
|
studentExtraExercise.setStatus(0);
|
|
|
studentExtraExercise.setIsReplied(0);
|
|
|
studentExtraExercise.setIsView(0);
|
|
|
- studentExtraExerises.add(studentExtraExercise);
|
|
|
+ extracurricularExercisesReplyDao.insert(studentExtraExercise);
|
|
|
+
|
|
|
+ String notifyUrl = "3?courseScheduleID=" + studentExtraExercise.getId() + "&studentCourseHomeworkId=" + studentExtraExercise.getId();
|
|
|
+ sysMessageService.batchSendImMessage(MessageTypeEnum.EXTRA_REMIND_IM,exercises.getTeacherId().toString(),
|
|
|
+ new String[]{studentId.toString()},
|
|
|
+ null, exercises.getTitle(), dateStr,exercises.getContent());
|
|
|
+
|
|
|
+ Map<Integer, String> userMap = new HashMap<>();
|
|
|
+ userMap.put(studentId, studentId.toString());
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.EXTRA_REMIND_PUSH,
|
|
|
+ userMap, null, 0, notifyUrl, "STUDENT",
|
|
|
+ teacher.getRealName(),exercises.getTitle(), dateStr);
|
|
|
}
|
|
|
- extracurricularExercisesReplyDao.batchInsert(studentExtraExerises);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<Map<String, Object>> findExtraExercilses(ExtraExercilseQueryInfo queryInfo) {
|
|
|
- PageInfo<ExtracurricularExercises> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
MapUtil.populateMap(params, queryInfo);
|
|
|
+ List<Map<String, Object>> result = new ArrayList<>();
|
|
|
|
|
|
List<ExtracurricularExercises> dataList = extracurricularExercisesDao.findExtraExercises(params);
|
|
|
- Map<String, List<ExtracurricularExercises>> collect = dataList.stream().collect(Collectors.groupingBy(e -> DateUtil.dateToString(e.getCreateTime(), "yyyy-MM-dd")));
|
|
|
+ if(!CollectionUtils.isEmpty(dataList)){
|
|
|
+ List<Long> extraExerciseIds = dataList.stream().map(ExtracurricularExercises::getId).collect(Collectors.toList());
|
|
|
+ List<ExtracurricularExercisesReply> extraExerciseStudentsByExtraExercises = extracurricularExercisesReplyDao.findExtraExerciseStudentsByExtraExercises(extraExerciseIds);
|
|
|
+ Map<Long, List<ExtracurricularExercisesReply>> idStudentsMap = extraExerciseStudentsByExtraExercises.stream().collect(Collectors.groupingBy(ExtracurricularExercisesReply::getExtracurricularExercisesId));
|
|
|
+ for (ExtracurricularExercises extracurricularExercises : dataList) {
|
|
|
+ List<ExtracurricularExercisesReply> extracurricularExercisesReplies = idStudentsMap.get(extracurricularExercises.getId());
|
|
|
+ if(CollectionUtils.isEmpty(extracurricularExercisesReplies)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ long repliedNum = extracurricularExercisesReplies.stream().filter(e -> e.getIsReplied() == 0).count();
|
|
|
+ if(repliedNum<=0){
|
|
|
+ extracurricularExercises.setIsReplied(1);
|
|
|
+ }
|
|
|
+ long submitNum = extracurricularExercisesReplies.stream().filter(e -> e.getIsView() == 1).count();
|
|
|
+ if(submitNum>0){
|
|
|
+ extracurricularExercises.setIsSubmit(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- List<Map<String, Object>> result = new ArrayList<>();
|
|
|
- List<Date> dates=new ArrayList<>();
|
|
|
- collect.keySet().forEach(ds-> dates.add(DateUtil.stringToDate(ds,"yyyy-MM-dd")));
|
|
|
- dates.sort(Comparator.comparing(Date::getTime));
|
|
|
- dates.sort(Comparator.reverseOrder());
|
|
|
- for (Date date : dates) {
|
|
|
- String key=DateUtil.dateToString(date, "yyyy-MM-dd");
|
|
|
- Map<String, Object> r = new HashMap<>();
|
|
|
- r.put("day", key);
|
|
|
- collect.get(key).sort(Comparator.comparing(ExtracurricularExercises::getCreateTime).reversed());
|
|
|
- r.put("list", collect.get(key));
|
|
|
- result.add(r);
|
|
|
+ Map<String, List<ExtracurricularExercises>> collect = dataList.stream().collect(Collectors.groupingBy(e -> DateUtil.dateToString(e.getCreateTime(), "yyyy-MM-dd")));
|
|
|
+ List<Date> dates=new ArrayList<>();
|
|
|
+ collect.keySet().forEach(ds-> dates.add(DateUtil.stringToDate(ds,"yyyy-MM-dd")));
|
|
|
+ dates.sort(Comparator.comparing(Date::getTime));
|
|
|
+ dates.sort(Comparator.reverseOrder());
|
|
|
+ for (Date date : dates) {
|
|
|
+ String key=DateUtil.dateToString(date, "yyyy-MM-dd");
|
|
|
+ Map<String, Object> r = new HashMap<>();
|
|
|
+ r.put("day", key);
|
|
|
+ collect.get(key).sort(Comparator.comparing(ExtracurricularExercises::getCreateTime).reversed());
|
|
|
+ r.put("list", collect.get(key));
|
|
|
+ result.add(r);
|
|
|
+ }
|
|
|
}
|
|
|
return result;
|
|
|
}
|