mirror of
				https://github.com/suyiiyii/SIMS.git
				synced 2025-11-04 15:54:52 +08:00 
			
		
		
		
	实现记录的过滤
This commit is contained in:
		
							parent
							
								
									b04a347c33
								
							
						
					
					
						commit
						b8b14f7af9
					
				@ -2,7 +2,6 @@ package top.suyiiyii.sims.controller;
 | 
			
		||||
 | 
			
		||||
import io.swagger.v3.oas.annotations.Operation;
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import jakarta.servlet.http.HttpSession;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import org.modelmapper.ModelMapper;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
@ -18,7 +17,6 @@ import top.suyiiyii.sims.service.CategoryService;
 | 
			
		||||
import top.suyiiyii.sims.service.RecordService;
 | 
			
		||||
import top.suyiiyii.sims.service.RoleService;
 | 
			
		||||
import top.suyiiyii.sims.service.UserService;
 | 
			
		||||
import top.suyiiyii.sims.utils.JwtUtils;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
@ -53,7 +51,7 @@ RecordController {
 | 
			
		||||
            recordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId()));
 | 
			
		||||
            recordDtos.add(recordDto);
 | 
			
		||||
        }
 | 
			
		||||
        return Result.success(recordDtos);
 | 
			
		||||
        return Result.success(recordService.filterRecordsDtos(recordDtos));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @AuthAccess(allowRoles = {"user"})
 | 
			
		||||
@ -72,7 +70,7 @@ RecordController {
 | 
			
		||||
            recordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId()));
 | 
			
		||||
            recordDtos.add(recordDto);
 | 
			
		||||
        }
 | 
			
		||||
        return Result.success(recordDtos);
 | 
			
		||||
        return Result.success(recordService.filterRecordsDtos(recordDtos));
 | 
			
		||||
    }
 | 
			
		||||
    @AuthAccess(allowRoles = {"admin"})
 | 
			
		||||
    @Operation(summary = "更新单个奖惩记录")
 | 
			
		||||
@ -132,7 +130,7 @@ RecordController {
 | 
			
		||||
            studentIds.add(studentId);
 | 
			
		||||
        }
 | 
			
		||||
       String roleName = searchRequest.getRoleName();
 | 
			
		||||
        if(roleName!="") {
 | 
			
		||||
        if(!roleName.isEmpty()) {
 | 
			
		||||
            //rolename查用户id
 | 
			
		||||
            Integer userId = roleService.getIdByrolename(roleName);
 | 
			
		||||
         //     用户id查记录
 | 
			
		||||
@ -140,7 +138,7 @@ RecordController {
 | 
			
		||||
            studentIds.add(s1);
 | 
			
		||||
        }
 | 
			
		||||
       String username = searchRequest.getUsername();
 | 
			
		||||
        if(username!="") {
 | 
			
		||||
        if(!username.isEmpty()) {
 | 
			
		||||
            //username查用户StudentId
 | 
			
		||||
            s1= roleService.getStudentIdByUsername(username);
 | 
			
		||||
            studentIds.add(s1);
 | 
			
		||||
@ -155,7 +153,7 @@ RecordController {
 | 
			
		||||
            RecordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId()));
 | 
			
		||||
            RecordDtos.add(RecordDto);
 | 
			
		||||
        }
 | 
			
		||||
        return Result.success(RecordDtos);
 | 
			
		||||
        return Result.success(recordService.filterRecordsDtos(RecordDtos));
 | 
			
		||||
    }
 | 
			
		||||
    @AuthAccess(allowRoles = {"admin"})
 | 
			
		||||
    @Operation(summary = "筛选查询奖惩记录")
 | 
			
		||||
@ -189,7 +187,7 @@ RecordController {
 | 
			
		||||
            RecordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId()));
 | 
			
		||||
            RecordDtos.add(RecordDto);
 | 
			
		||||
        }
 | 
			
		||||
        return Result.success(RecordDtos);
 | 
			
		||||
        return Result.success(recordService.filterRecordsDtos(RecordDtos));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @AuthAccess(allowRoles = {"user","admin"})
 | 
			
		||||
@ -199,12 +197,7 @@ RecordController {
 | 
			
		||||
            @RequestParam(defaultValue = "0") int page,
 | 
			
		||||
            @RequestParam(defaultValue = "10") int size,
 | 
			
		||||
            String categoryName,HttpServletRequest request) {
 | 
			
		||||
        HttpSession session = request.getSession();
 | 
			
		||||
        String token = (String) session.getAttribute("token");
 | 
			
		||||
        String userId = JwtUtils.extractUserId(token);
 | 
			
		||||
        if (userId==null){
 | 
			
		||||
            throw new RuntimeException("请先登录");
 | 
			
		||||
        }
 | 
			
		||||
        int userId = JwtInterceptor.getUserIdFromReq(request);
 | 
			
		||||
        List<Integer> studentIds = new ArrayList<>();
 | 
			
		||||
        //CategoryName不是奖励或者惩罚
 | 
			
		||||
        if (!categoryName.equals("奖励")
 | 
			
		||||
@ -221,7 +214,7 @@ RecordController {
 | 
			
		||||
        List<Record> records=new ArrayList<>();
 | 
			
		||||
        HashSet<Integer> studentIds1= new HashSet<>(studentIds);
 | 
			
		||||
        for (Integer Sid : studentIds1) {
 | 
			
		||||
            Integer studentId1 =userService.getStudentIdByUserId(Integer.valueOf(userId));
 | 
			
		||||
            Integer studentId1 =userService.getStudentIdByUserId(userId);
 | 
			
		||||
            if (studentId1!= null && studentId1.equals(Sid)) {
 | 
			
		||||
                records.addAll(recordService.getRecordsById(page, size, Sid));
 | 
			
		||||
            }
 | 
			
		||||
@ -233,7 +226,7 @@ RecordController {
 | 
			
		||||
            RecordDto.setSubCategoryName(categoryService.getsubCategoryName(record.getCategoryId()));
 | 
			
		||||
            RecordDtos.add(RecordDto);
 | 
			
		||||
        }
 | 
			
		||||
        return Result.success(RecordDtos);
 | 
			
		||||
        return Result.success(recordService.filterRecordsDtos(RecordDtos));
 | 
			
		||||
    }
 | 
			
		||||
    @Data
 | 
			
		||||
    public static class SearchRequest {
 | 
			
		||||
 | 
			
		||||
@ -17,6 +17,8 @@ public class RecordDto {
 | 
			
		||||
    private String categoryName;
 | 
			
		||||
 | 
			
		||||
    private String subCategoryName;
 | 
			
		||||
    // 类别id
 | 
			
		||||
    private Integer categoryId;
 | 
			
		||||
    // 奖惩日期
 | 
			
		||||
    private Long date;
 | 
			
		||||
    // 奖惩内容
 | 
			
		||||
 | 
			
		||||
@ -36,7 +36,7 @@ public class RewardPunishmentCategory {
 | 
			
		||||
    // 类别说明
 | 
			
		||||
    private String description;
 | 
			
		||||
 | 
			
		||||
    // 类别状态
 | 
			
		||||
    // 类别状态 null:正常 "disable":删除
 | 
			
		||||
    private String status;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -45,4 +45,9 @@ public class CategoryService {
 | 
			
		||||
        mpCategoryMapper.selectPage(pageObj, new LambdaQueryWrapper<>());
 | 
			
		||||
        return pageObj.getRecords();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public List<RewardPunishmentCategory> getCateByIds(List<Integer> ids) {
 | 
			
		||||
        return mpCategoryMapper.selectBatchIds(ids);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -4,14 +4,17 @@ package top.suyiiyii.sims.service;
 | 
			
		||||
import org.modelmapper.ModelMapper;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import top.suyiiyii.sims.dto.RecordDto;
 | 
			
		||||
import top.suyiiyii.sims.entity.Record;
 | 
			
		||||
import top.suyiiyii.sims.entity.RewardPunishmentCategory;
 | 
			
		||||
import top.suyiiyii.sims.mapper.CategoryMapper;
 | 
			
		||||
import top.suyiiyii.sims.mapper.MpCategoryMapper;
 | 
			
		||||
import top.suyiiyii.sims.mapper.RecordMapper;
 | 
			
		||||
import top.suyiiyii.sims.mapper.UserMapper;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @Author tortoise
 | 
			
		||||
@ -31,6 +34,9 @@ public class RecordService {
 | 
			
		||||
    ModelMapper modelMapper;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    CategoryMapper categoryMapper;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    MpCategoryMapper mpCategoryMapper;
 | 
			
		||||
 | 
			
		||||
    public List<Record> getAllRecords(Integer page, Integer size) {
 | 
			
		||||
 | 
			
		||||
        return recordMapper.getAllRecords(page, size);
 | 
			
		||||
@ -57,7 +63,7 @@ public class RecordService {
 | 
			
		||||
 | 
			
		||||
        //查看数据库里面是否有这个类别
 | 
			
		||||
        String subCategoryName = categoryMapper.IsSubCategoryName(recordDto.getSubCategoryName());
 | 
			
		||||
        if(subCategoryName == null) {
 | 
			
		||||
        if (subCategoryName == null) {
 | 
			
		||||
            //没有这个类别就加上
 | 
			
		||||
            categoryMapper.addsubcategory(recordDto.getCategoryName(), recordDto.getSubCategoryName());
 | 
			
		||||
        }
 | 
			
		||||
@ -69,12 +75,11 @@ public class RecordService {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public List<Record> getRecordsLike(int page, int size, Integer studentId, String userGroup, String grade) {
 | 
			
		||||
        return recordMapper.getRecordsLike(page, size, studentId, userGroup,grade);
 | 
			
		||||
        return recordMapper.getRecordsLike(page, size, studentId, userGroup, grade);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public  List<Integer> getSidByCategoryId(Integer i) {
 | 
			
		||||
    public List<Integer> getSidByCategoryId(Integer i) {
 | 
			
		||||
        return recordMapper.getSidByCategoryId(i);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -85,4 +90,20 @@ public class RecordService {
 | 
			
		||||
    public Integer IsRecord(Integer id) {
 | 
			
		||||
        return recordMapper.IsRecord(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public List<Record> filterRecords(List<Record> records) {
 | 
			
		||||
        List<Integer> catIds = records.stream().map(Record::getCategoryId).distinct().toList();
 | 
			
		||||
        List<RewardPunishmentCategory> categories = mpCategoryMapper.selectBatchIds(catIds);
 | 
			
		||||
        Map<Integer, RewardPunishmentCategory> catMap = categories.stream().collect(Collectors.toMap(RewardPunishmentCategory::getId, c -> c));
 | 
			
		||||
        List<Integer> availableCatIds = catIds.stream().filter(c -> (catMap.containsKey(c) && catMap.get(c).getStatus() == null)).toList();
 | 
			
		||||
        return records.stream().filter(r -> availableCatIds.contains(r.getCategoryId())).toList();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public List<RecordDto> filterRecordsDtos(List<RecordDto> recordDtos) {
 | 
			
		||||
        List<Integer> catIds = recordDtos.stream().map(RecordDto::getCategoryId).distinct().toList();
 | 
			
		||||
        List<RewardPunishmentCategory> categories = mpCategoryMapper.selectBatchIds(catIds);
 | 
			
		||||
        Map<Integer, RewardPunishmentCategory> catMap = categories.stream().collect(Collectors.toMap(RewardPunishmentCategory::getId, c -> c));
 | 
			
		||||
        List<Integer> availableCatIds = catIds.stream().filter(c -> (catMap.containsKey(c) && catMap.get(c).getStatus() == null)).toList();
 | 
			
		||||
        return recordDtos.stream().filter(r -> availableCatIds.contains(r.getCategoryId())).toList();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user