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.
100 lines
3.5 KiB
100 lines
3.5 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.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);
|
|
}
|
|
}
|