|
|
@@ -7,6 +7,7 @@ import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
import com.xjrsoft.common.enums.DeleteMark;
|
|
|
import com.xjrsoft.common.enums.StudentChangeTypeEnum;
|
|
|
+import com.xjrsoft.common.exception.MyException;
|
|
|
import com.xjrsoft.common.page.ConventPage;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
import com.xjrsoft.module.base.dto.BaseClassMergeStudentPageDto;
|
|
|
@@ -27,6 +28,7 @@ import lombok.AllArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
@@ -52,11 +54,15 @@ public class BaseClassMergeServiceImpl extends MPJBaseServiceImpl<BaseClassMerge
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean add(BaseClassMerge baseClassMerge) {
|
|
|
+ Set<Long> collect = baseClassMerge.getBaseClassMergeStudentList().stream().map(BaseClassMergeStudent::getClassId).collect(Collectors.toSet());
|
|
|
+ if(collect.contains(baseClassMerge.getTargetClassId())){
|
|
|
+ throw new MyException("原有班级中不能包含目标班级,请重新选择原有班级");
|
|
|
+ }
|
|
|
baseClassMerge.setStudentCount(baseClassMerge.getBaseClassMergeStudentList().size());
|
|
|
this.baseMapper.insert(baseClassMerge);
|
|
|
BaseClass baseClass = baseClassMapper.selectById(baseClassMerge.getTargetClassId());
|
|
|
|
|
|
- Set<Long> collect = baseClassMerge.getBaseClassMergeStudentList().stream().map(BaseClassMergeStudent::getClassId).collect(Collectors.toSet());
|
|
|
+
|
|
|
List<BaseClass> classList = baseClassMapper.selectBatchIds(collect);
|
|
|
Map<Long, String> classMap = classList.stream().collect(Collectors.toMap(BaseClass::getId, BaseClass::getName));
|
|
|
|
|
|
@@ -131,7 +137,6 @@ public class BaseClassMergeServiceImpl extends MPJBaseServiceImpl<BaseClassMerge
|
|
|
.select(BaseClass::getId)
|
|
|
.select(BaseClass.class, x -> VoToColumnUtil.fieldsToColumns(BaseClass.class).contains(x.getProperty()))
|
|
|
.innerJoin(BaseClassMergeStudent.class, BaseClassMergeStudent::getClassId, BaseClass::getId)
|
|
|
- .innerJoin(BaseClassMergeStudent.class, BaseClassMergeStudent::getClassId, BaseClass::getId)
|
|
|
.eq(BaseClassMergeStudent::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
.eq(BaseClassMergeStudent::getBaseClassMergeId, id)
|
|
|
.orderByAsc(BaseClass::getName)
|
|
|
@@ -169,4 +174,22 @@ public class BaseClassMergeServiceImpl extends MPJBaseServiceImpl<BaseClassMerge
|
|
|
IPage<BaseClassMergeStudentVo> page = mergeStudentMapper.selectJoinPage(ConventPage.getPage(dto), BaseClassMergeStudentVo.class, queryWrapper);
|
|
|
return page;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Long> getClassIdsByClassName(String className) {
|
|
|
+ List<BaseClassMergeStudent> classList = mergeStudentMapper.selectList(
|
|
|
+ new MPJLambdaWrapper<BaseClassMergeStudent>()
|
|
|
+ .distinct()
|
|
|
+ .select(BaseClassMergeStudent::getId)
|
|
|
+ .select(BaseClassMergeStudent.class, x -> VoToColumnUtil.fieldsToColumns(BaseClassMergeStudent.class).contains(x.getProperty()))
|
|
|
+ .innerJoin(BaseClass.class, BaseClass::getId, BaseClassMergeStudent::getClassId)
|
|
|
+ .eq(BaseClassMergeStudent::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ .like(BaseClass::getName, className)
|
|
|
+ );
|
|
|
+ if(!classList.isEmpty()){
|
|
|
+ Set<Long> collect = classList.stream().map(BaseClassMergeStudent::getBaseClassMergeId).collect(Collectors.toSet());
|
|
|
+ return new ArrayList<>(collect);
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
}
|