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

  1. package com.iflytop.gd.app.service;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  7. import com.iflytop.gd.app.model.vo.OresCraftsListVO;
  8. import com.iflytop.gd.system.common.base.BasePageQuery;
  9. import com.iflytop.gd.app.mapper.CraftsMapper;
  10. import com.iflytop.gd.app.mapper.OresMapper;
  11. import com.iflytop.gd.app.model.entity.Crafts;
  12. import com.iflytop.gd.app.model.entity.Ores;
  13. import com.iflytop.gd.system.model.entity.User;
  14. import lombok.RequiredArgsConstructor;
  15. import org.springframework.stereotype.Service;
  16. import java.util.Arrays;
  17. import java.util.List;
  18. import java.util.Map;
  19. import java.util.stream.Collectors;
  20. /**
  21. * 矿石业务实现类
  22. */
  23. @Service
  24. @RequiredArgsConstructor
  25. public class OresService extends ServiceImpl<OresMapper, Ores> {
  26. private final CraftsMapper craftsMapper;
  27. public IPage<OresCraftsListVO> getPage(BasePageQuery pageQuery) {
  28. // 构建分页对象
  29. Page<Ores> oresPage = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
  30. // 分页查询矿石数据
  31. IPage<Ores> oresIPage = this.baseMapper.selectPage(oresPage, new QueryWrapper<Ores>());
  32. // 获取矿石ID列表
  33. List<Long> oresIds = oresIPage.getRecords().stream()
  34. .map(Ores::getId)
  35. .collect(Collectors.toList());
  36. // 查询对应的工艺数据
  37. QueryWrapper<Crafts> craftsQueryWrapper = new QueryWrapper<>();
  38. craftsQueryWrapper.in("ores_id", oresIds);
  39. List<Crafts> craftsList = craftsMapper.selectList(craftsQueryWrapper);
  40. // 将工艺数据按矿石ID分组
  41. Map<Long, List<Crafts>> craftsMap = craftsList.stream()
  42. .collect(Collectors.groupingBy(Crafts::getOresId));
  43. // 转换成 OresCraftsListVO
  44. List<OresCraftsListVO> oresCraftsList = oresIPage.getRecords().stream().map(ores -> {
  45. OresCraftsListVO oresCraftsListVO = new OresCraftsListVO();
  46. oresCraftsListVO.setId(ores.getId());
  47. oresCraftsListVO.setOresName(ores.getName());
  48. oresCraftsListVO.setCreateTime(ores.getCreateTime());
  49. oresCraftsListVO.setUpdateTime(ores.getUpdateTime());
  50. // 设置该矿石的工艺列表
  51. List<Crafts> crafts = craftsMap.get(ores.getId());
  52. oresCraftsListVO.setCraftsList(crafts);
  53. return oresCraftsListVO;
  54. }).collect(Collectors.toList());
  55. // 将转换后的分页数据放入新的分页对象
  56. Page<OresCraftsListVO> resultPage = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
  57. resultPage.setTotal(oresIPage.getTotal());
  58. resultPage.setRecords(oresCraftsList);
  59. return resultPage;
  60. }
  61. public Ores findByName(String name) {
  62. return this.getOne(new LambdaQueryWrapper<Ores>().eq(Ores::getName, name));
  63. }
  64. public boolean addOres(Ores ores) {
  65. return this.save(ores);
  66. }
  67. public boolean updateOres(Ores ores) {
  68. return this.updateById(ores);
  69. }
  70. public boolean deleteOres(String idsStr) {
  71. List<Long> ids = Arrays.stream(idsStr.split(","))
  72. .map(Long::parseLong)
  73. .collect(Collectors.toList());
  74. return this.removeByIds(ids);
  75. }
  76. }