123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- package com.qxgmat.service.inline;
- import com.github.pagehelper.Page;
- import com.nuliji.tools.AbstractService;
- import com.nuliji.tools.exception.ParameterException;
- import com.nuliji.tools.exception.SystemException;
- import com.nuliji.tools.mybatis.Example;
- import com.qxgmat.data.dao.ExerciseStructMapper;
- import com.qxgmat.data.dao.entity.ExaminationStruct;
- import com.qxgmat.data.dao.entity.ExerciseStruct;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.cache.annotation.CacheEvict;
- import org.springframework.cache.annotation.Cacheable;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.Resource;
- import java.util.*;
- import java.util.stream.Collectors;
- @Service
- public class ExerciseStructService extends AbstractService {
- private static final Logger logger = LoggerFactory.getLogger(ExerciseStructService.class);
- @Resource
- private ExerciseStructMapper exerciseStructMapper;
- @Cacheable(value = "exercise_struct/main")
- public List<ExerciseStruct> main(){
- List<ExerciseStruct> list = all();
- return list.stream()
- .filter((ExerciseStruct b) -> b.getLevel()<=2)
- .collect(Collectors.toList());
- }
- @Cacheable(value = "exercise_struct/children", key="#id+ '_' +#children")
- public List<ExerciseStruct> children(Integer id, Integer children){
- List<ExerciseStruct> list = all();
- List<Integer> ids = new ArrayList<>();
- return list.stream()
- .filter((ExerciseStruct b) -> {
- if (b.getParentId().equals(id)){
- if (children>0) ids.add(b.getId());
- return true;
- }else if(ids.contains(b.getParentId())){
- if(children>0) ids.add(b.getId());
- return true;
- }
- return false;
- } )
- .collect(Collectors.toList());
- }
- @Cacheable(value = "exercise_struct/parent", key="#id")
- public List<ExerciseStruct> parent(Integer id){
- List<ExerciseStruct> list = all();
- Collections.reverse(list);
- List<Integer> ids = new ArrayList<>();
- list = list.stream()
- .filter((ExerciseStruct b) -> {
- if (b.getId().equals(id)){
- ids.add(b.getParentId());
- return true;
- }else if(ids.contains(b.getId())){
- ids.add(b.getParentId());
- return true;
- }
- return false;
- } )
- .collect(Collectors.toList());
- Collections.reverse(list);
- return list;
- }
- @Cacheable(value = "exercise_struct/all")
- public List<ExerciseStruct> all(){
- Example example = new Example(ExerciseStruct.class);
- example.setOrderByClause("level asc, id asc");
- return select(exerciseStructMapper);
- }
- @CacheEvict(value={"exercise_struct/children", "exercise_struct/parent", "exercise_struct/main", "exercise_struct/all"}, allEntries=true)
- public ExerciseStruct add(ExerciseStruct struct){
- if(struct.getParentId() > 0){
- ExerciseStruct parent = get(struct.getParentId());
- struct.setLevel(parent.getLevel()+1);
- struct.setExtend(parent.getExtend());
- }else{
- struct.setLevel(1);
- }
- int result = insert(exerciseStructMapper, struct);
- struct = one(exerciseStructMapper, struct.getId());
- if(struct == null){
- throw new SystemException("添加失败");
- }
- return struct;
- }
- @CacheEvict(value={"exercise_struct/children", "exercise_struct/paper", "exercise_struct/main", "exercise_struct/all"}, allEntries=true)
- public ExerciseStruct edit(ExerciseStruct struct){
- ExerciseStruct in = one(exerciseStructMapper, struct.getId());
- if(in == null){
- throw new ParameterException("层级不存在");
- }
- if (struct.getParentId() > 0){
- ExerciseStruct parent = get(struct.getParentId());
- struct.setLevel(parent.getLevel()+1);
- struct.setExtend(parent.getExtend());
- }else{
- struct.setLevel(1);
- }
- int result = update(exerciseStructMapper, struct);
- return struct;
- }
- @CacheEvict(value={"exercise_struct/children", "exercise_struct/paper", "exercise_struct/main", "exercise_struct/all"}, allEntries=true)
- public boolean delete(Number id){
- ExerciseStruct in = one(exerciseStructMapper, id);
- if(in == null){
- throw new ParameterException("层级不存在");
- }
- int result = delete(exerciseStructMapper, id);
- return result > 0;
- }
- public ExerciseStruct get(Number id){
- ExerciseStruct in = one(exerciseStructMapper, id);
- if(in == null){
- throw new ParameterException("层级不存在");
- }
- return in;
- }
- public Page<ExerciseStruct> select(int page, int pageSize){
- return select(exerciseStructMapper, page, pageSize);
- }
- public Page<ExerciseStruct> select(Integer[] ids){
- return page(()->select(exerciseStructMapper, ids), 1, ids.length);
- }
- public List<ExerciseStruct> select(Collection ids){
- return select(exerciseStructMapper, ids);
- }
- }
|