package com.iflytop.gd.app.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.iflytop.gd.app.model.vo.OresCraftsListVO; import com.iflytop.gd.system.common.base.BasePageQuery; import com.iflytop.gd.app.mapper.CraftsMapper; import com.iflytop.gd.app.mapper.OresMapper; import com.iflytop.gd.app.model.entity.Crafts; import com.iflytop.gd.app.model.entity.Ores; import com.iflytop.gd.system.model.entity.User; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 矿石业务实现类 */ @Service @RequiredArgsConstructor public class OresService extends ServiceImpl { private final CraftsMapper craftsMapper; public IPage getPage(BasePageQuery pageQuery) { // 构建分页对象 Page oresPage = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()); // 分页查询矿石数据 IPage oresIPage = this.baseMapper.selectPage(oresPage, new QueryWrapper()); // 获取矿石ID列表 List oresIds = oresIPage.getRecords().stream() .map(Ores::getId) .collect(Collectors.toList()); // 查询对应的工艺数据 QueryWrapper craftsQueryWrapper = new QueryWrapper<>(); craftsQueryWrapper.in("ores_id", oresIds); List craftsList = craftsMapper.selectList(craftsQueryWrapper); // 将工艺数据按矿石ID分组 Map> craftsMap = craftsList.stream() .collect(Collectors.groupingBy(Crafts::getOresId)); // 转换成 OresCraftsListVO List oresCraftsList = oresIPage.getRecords().stream().map(ores -> { OresCraftsListVO oresCraftsListVO = new OresCraftsListVO(); oresCraftsListVO.setId(ores.getId()); oresCraftsListVO.setOresName(ores.getName()); oresCraftsListVO.setCreateTime(ores.getCreateTime()); oresCraftsListVO.setUpdateTime(ores.getUpdateTime()); // 设置该矿石的工艺列表 List crafts = craftsMap.get(ores.getId()); oresCraftsListVO.setCraftsList(crafts); return oresCraftsListVO; }).collect(Collectors.toList()); // 将转换后的分页数据放入新的分页对象 Page resultPage = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()); resultPage.setTotal(oresIPage.getTotal()); resultPage.setRecords(oresCraftsList); return resultPage; } public Ores findByName(String name) { return this.getOne(new LambdaQueryWrapper().eq(Ores::getName, name)); } public boolean addOres(Ores ores) { return this.save(ores); } public boolean updateOres(Ores ores) { return this.updateById(ores); } public boolean deleteOres(String idsStr) { List ids = Arrays.stream(idsStr.split(",")) .map(Long::parseLong) .collect(Collectors.toList()); return this.removeByIds(ids); } }