石墨消解仪后端服务
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.

99 lines
3.4 KiB

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.infrastructure.repository.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 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);
}
}