wenminjie
2026-07-15 999e0159112d9405bad7fcd839b339e006a3530d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package com.ruoyi.system.service.impl;
 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.system.mapper.TTrainLibraryMapper;
import com.ruoyi.system.model.TProjectTeam;
import com.ruoyi.system.model.TTrainLibrary;
import com.ruoyi.system.query.TTrainLibraryDetailQuery;
import com.ruoyi.system.query.TTrainLibraryQuery;
import com.ruoyi.system.service.TProjectTeamService;
import com.ruoyi.system.service.TTrainLibraryService;
import com.ruoyi.system.vo.TTrainLibraryDetailVO;
import com.ruoyi.system.vo.TTrainLibraryVO;
import com.ruoyi.system.vo.TTrainLibraryWarehousingVO;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
 
/**
 * <p>
 * 菌种库 服务实现类
 * </p>
 *
 * @author 无关风月
 * @since 2025-04-12
 */
@Service
public class TTrainLibraryServiceImpl extends ServiceImpl<TTrainLibraryMapper, TTrainLibrary> implements TTrainLibraryService {
    @Resource
    private TProjectTeamService projectTeamService;
 
    @Override
    public PageInfo<TTrainLibraryVO> pageList(TTrainLibraryQuery query, String roleType) {
        // 1. 查询所有符合条件的数据(不分页)
        List<TTrainLibraryVO> allList = this.baseMapper.listAll(query);
 
        // 2. 在内存中过滤 + 补充 projectName
        List<TTrainLibraryVO> filteredList = new ArrayList<>();
        for (TTrainLibraryVO vo : allList) {
            if (StringUtils.isNotEmpty(vo.getProjectId())) {
                TProjectTeam byId = projectTeamService.getById(vo.getProjectId());
                // 未封存的数据:roleType=2 或 status=1
                if (byId != null && ("2".equals(roleType) || byId.getStatus() == 1)) {
                    vo.setProjectName(byId.getTeamName());
                    filteredList.add(vo);
                }
            }
        }
 
        // 3. 手动分页(在内存中截取)
        int total = filteredList.size();
        int pageNum = query.getPageNum();
        int pageSize = query.getPageSize();
        int start = (pageNum - 1) * pageSize;
        int end = Math.min(start + pageSize, total);
 
        // 处理边界情况
        List<TTrainLibraryVO> pageList = new ArrayList<>();
        if (start < total) {
            pageList = filteredList.subList(start, end);
        }
 
        // 4. 构建 PageInfo 返回
        PageInfo<TTrainLibraryVO> pageInfo = new PageInfo<>();
        pageInfo.setRecords(pageList);
        pageInfo.setTotal(total);
        pageInfo.setPages((int) Math.ceil((double) total / pageSize));
        pageInfo.setHasNextPage(pageNum < (int) Math.ceil((double) total / pageSize));
 
        return pageInfo;
    }
 
    @Override
    public TTrainLibraryDetailVO getDetailById(TTrainLibraryDetailQuery query) {
        TTrainLibraryDetailVO tTrainLibraryDetailVO = new TTrainLibraryDetailVO();
        TTrainLibrary tTrainLibrary = this.baseMapper.selectById(query.getId());
        BeanUtils.copyProperties(tTrainLibrary,tTrainLibraryDetailVO);
        PageInfo<TTrainLibraryWarehousingVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<TTrainLibraryWarehousingVO> list = this.baseMapper.getDetailById(query,pageInfo);
        pageInfo.setRecords(list);
        tTrainLibraryDetailVO.setWarehousingList(pageInfo);
        return tTrainLibraryDetailVO;
    }
}