|
@@ -3,17 +3,27 @@ package com.ym.mec.biz.service.impl;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
+import com.ym.mec.biz.dal.entity.SchoolActivityDetail;
|
|
|
+import com.ym.mec.biz.dal.entity.Student;
|
|
|
+import com.ym.mec.biz.dal.entity.Subject;
|
|
|
import com.ym.mec.biz.dal.enums.ESchoolActivityStatus;
|
|
|
+import com.ym.mec.biz.dal.wrapper.SchoolActivityDetailWrapper;
|
|
|
+import com.ym.mec.biz.service.*;
|
|
|
+import com.ym.mec.common.exception.BizException;
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.jetbrains.annotations.NotNull;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import com.ym.mec.biz.dal.entity.SchoolActivity;
|
|
|
import com.ym.mec.biz.dal.wrapper.SchoolActivityWrapper;
|
|
|
import com.ym.mec.biz.dal.mapper.SchoolActivityMapper;
|
|
|
-import com.ym.mec.biz.service.SchoolActivityService;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 学校活动
|
|
@@ -23,6 +33,17 @@ import java.util.List;
|
|
|
@Service
|
|
|
public class SchoolActivityServiceImpl extends ServiceImpl<SchoolActivityMapper, SchoolActivity> implements SchoolActivityService {
|
|
|
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SchoolActivityDetailService schoolActivityDetailService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SchoolActivityDetailUserService schoolActivityDetailUserService;
|
|
|
+
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysUserService sysUserService;
|
|
|
+
|
|
|
/**
|
|
|
* 查询详情
|
|
|
* @param id 详情ID
|
|
@@ -35,8 +56,21 @@ public class SchoolActivityServiceImpl extends ServiceImpl<SchoolActivityMapper,
|
|
|
return null;
|
|
|
SchoolActivityWrapper.SchoolActivityDetail schoolActivityDetail = new SchoolActivityWrapper.SchoolActivityDetail();
|
|
|
BeanUtils.copyProperties(schoolActivity, schoolActivityDetail);
|
|
|
+ Date now = new Date();
|
|
|
+ if (schoolActivity.getStartTime().after(now)) {
|
|
|
+ schoolActivityDetail.setStatus(ESchoolActivityStatus.NOT_START);
|
|
|
+ } else if (schoolActivity.getEndTime().before(now)) {
|
|
|
+ schoolActivityDetail.setStatus(ESchoolActivityStatus.END);
|
|
|
+ } else {
|
|
|
+ schoolActivityDetail.setStatus(ESchoolActivityStatus.PROCESSING);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置节目信息
|
|
|
+ List<SchoolActivityDetailWrapper.SchoolActivityDetail> schoolActivityDetails = schoolActivityDetailService.selectListByActivityId(id);
|
|
|
|
|
|
- return null;
|
|
|
+ schoolActivityDetail.setDetail(schoolActivityDetails);
|
|
|
+
|
|
|
+ return schoolActivityDetail;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -52,32 +86,82 @@ public class SchoolActivityServiceImpl extends ServiceImpl<SchoolActivityMapper,
|
|
|
|
|
|
// 设置状态
|
|
|
for (SchoolActivityWrapper.SchoolActivity schoolActivity : schoolActivities) {
|
|
|
- setStatus(schoolActivity);
|
|
|
+ Date now = new Date();
|
|
|
+ if (schoolActivity.getStartTime().after(now)) {
|
|
|
+ schoolActivity.setStatus(ESchoolActivityStatus.NOT_START);
|
|
|
+ } else if (schoolActivity.getEndTime().before(now)) {
|
|
|
+ schoolActivity.setStatus(ESchoolActivityStatus.END);
|
|
|
+ } else {
|
|
|
+ schoolActivity.setStatus(ESchoolActivityStatus.PROCESSING);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return page.setRecords(schoolActivities);
|
|
|
}
|
|
|
|
|
|
- private static void setStatus(SchoolActivityWrapper.SchoolActivity schoolActivity) {
|
|
|
- Date now = new Date();
|
|
|
- if (schoolActivity.getStartTime().after(now)) {
|
|
|
- schoolActivity.setStatus(ESchoolActivityStatus.NOT_START);
|
|
|
- } else if (schoolActivity.getEndTime().before(now)) {
|
|
|
- schoolActivity.setStatus(ESchoolActivityStatus.END);
|
|
|
- } else {
|
|
|
- schoolActivity.setStatus(ESchoolActivityStatus.PROCESSING);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 添加
|
|
|
* @param schoolActivity SchoolActivityWrapper.SchoolActivity
|
|
|
* @return Boolean
|
|
|
*/
|
|
|
@Override
|
|
|
- public Boolean add(SchoolActivityWrapper.SchoolActivity schoolActivity) {
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean add(SchoolActivityWrapper.SchoolActivityDetail schoolActivity) {
|
|
|
+
|
|
|
+ saveOrUpdate(schoolActivity,true);
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveOrUpdate(SchoolActivityWrapper.SchoolActivityDetail schoolActivity,Boolean create) {
|
|
|
+ Date now = new Date();
|
|
|
+ // 保存活动
|
|
|
+ SchoolActivity activity = JSON.parseObject(JSON.toJSONString(schoolActivity), SchoolActivity.class);
|
|
|
+ if (Boolean.TRUE.equals(create)) {
|
|
|
+ activity.setId(null);
|
|
|
+ activity.setCreateTime(now);
|
|
|
+ activity.setCreateBy(sysUserService.getUserId());
|
|
|
+ }
|
|
|
+ activity.setUpdateTime(now);
|
|
|
+ this.saveOrUpdate(activity);
|
|
|
+
|
|
|
+ // 查询已有的节目
|
|
|
+ List<SchoolActivityDetailWrapper.SchoolActivityDetail> oldDetails = schoolActivityDetailService
|
|
|
+ .selectListByActivityId(activity.getId().longValue());
|
|
|
+
|
|
|
+ if (CollectionUtils.isNotEmpty(oldDetails)) {
|
|
|
+ // 查询被删除的节目
|
|
|
+ List<SchoolActivityDetailWrapper.SchoolActivityDetail> deleteDetails = oldDetails.stream()
|
|
|
+ .filter(oldDetail -> schoolActivity.getDetail().stream()
|
|
|
+ .noneMatch(newDetail -> newDetail.getId() != null && newDetail.getId().equals(oldDetail.getId())))
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
- return this.save(JSON.parseObject(schoolActivity.jsonString(), SchoolActivity.class));
|
|
|
+ if (CollectionUtils.isNotEmpty(deleteDetails)) {
|
|
|
+ // 被删除的节目ID
|
|
|
+ List<Integer> deleteDetailIds = deleteDetails.stream().map(SchoolActivityDetailWrapper.SchoolActivityDetail::getId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ schoolActivityDetailService.removeByIds(deleteDetailIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 保存节目
|
|
|
+ List<SchoolActivityDetailWrapper.SchoolActivityDetail> details = schoolActivity.getDetail();
|
|
|
+ for (SchoolActivityDetailWrapper.SchoolActivityDetail detail : details) {
|
|
|
+ detail.setSchoolActivityId(activity.getId());
|
|
|
+ detail.setCooperationOrganId(activity.getCooperationOrganId());
|
|
|
+ detail.setStudentNum(detail.getStudentNum());
|
|
|
+ SchoolActivityDetail schoolActivityDetail = JSON.parseObject(detail.jsonString(), SchoolActivityDetail.class);
|
|
|
+ if (Boolean.TRUE.equals(create)) {
|
|
|
+ schoolActivityDetail.setCreateTime(now);
|
|
|
+ schoolActivityDetail.setId(null);
|
|
|
+ }
|
|
|
+ schoolActivityDetail.setUpdateTime(now);
|
|
|
+ schoolActivityDetailService.saveOrUpdate(schoolActivityDetail);
|
|
|
+
|
|
|
+ // 保存节目人员关联
|
|
|
+ schoolActivityDetailUserService.save(schoolActivityDetail.getId(), detail.getStudentList());
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -86,8 +170,31 @@ public class SchoolActivityServiceImpl extends ServiceImpl<SchoolActivityMapper,
|
|
|
* @return Boolean
|
|
|
*/
|
|
|
@Override
|
|
|
- public Boolean update(SchoolActivityWrapper.SchoolActivity schoolActivity){
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean update(SchoolActivityWrapper.SchoolActivityDetail schoolActivity){
|
|
|
+
|
|
|
+ SchoolActivity activity = getById(schoolActivity.getId());
|
|
|
+ if(activity == null){
|
|
|
+ throw new BizException("活动不存在");
|
|
|
+ }
|
|
|
+ if (!activity.getCooperationOrganId().equals(schoolActivity.getCooperationOrganId())) {
|
|
|
+ throw new BizException("活动不属于当前合作机构");
|
|
|
+ }
|
|
|
+ saveOrUpdate(schoolActivity,false);
|
|
|
+ return true;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取学生列表
|
|
|
+ *
|
|
|
+ * @param query 查询条件
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<SchoolActivityWrapper.SchoolActivitySubject> getUserList(SchoolActivityWrapper.SchoolActivityStudentQuery query) {
|
|
|
+
|
|
|
+ List<SchoolActivityWrapper.SchoolActivityStudent> schoolActivityStudents = baseMapper.getUserList(query);
|
|
|
|
|
|
- return this.updateById(JSON.parseObject(schoolActivity.jsonString(), SchoolActivity.class));
|
|
|
+ return schoolActivityDetailUserService.getSchoolActivitySubjects(schoolActivityStudents);
|
|
|
}
|
|
|
}
|