You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
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<OresMapper, Ores> {
private final CraftsMapper craftsMapper;
public IPage<OresCraftsListVO> getPage(BasePageQuery pageQuery) { // 构建分页对象
Page<Ores> oresPage = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
// 分页查询矿石数据
IPage<Ores> oresIPage = this.baseMapper.selectPage(oresPage, new QueryWrapper<Ores>());
// 获取矿石ID列表
List<Long> oresIds = oresIPage.getRecords().stream() .map(Ores::getId) .collect(Collectors.toList());
// 查询对应的工艺数据
QueryWrapper<Crafts> craftsQueryWrapper = new QueryWrapper<>(); craftsQueryWrapper.in("ores_id", oresIds); List<Crafts> craftsList = craftsMapper.selectList(craftsQueryWrapper);
// 将工艺数据按矿石ID分组
Map<Long, List<Crafts>> craftsMap = craftsList.stream() .collect(Collectors.groupingBy(Crafts::getOresId));
// 转换成 OresCraftsListVO
List<OresCraftsListVO> 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> crafts = craftsMap.get(ores.getId()); oresCraftsListVO.setCraftsList(crafts);
return oresCraftsListVO; }).collect(Collectors.toList());
// 将转换后的分页数据放入新的分页对象
Page<OresCraftsListVO> 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<Ores>().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<Long> ids = Arrays.stream(idsStr.split(",")) .map(Long::parseLong) .collect(Collectors.toList()); return this.removeByIds(ids); } }
|