BasePigpenServiceImpl.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package com.huimv.admin.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.convert.Convert;
  4. import cn.hutool.core.util.NumberUtil;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  7. import com.huimv.admin.common.utils.Result;
  8. import com.huimv.admin.common.utils.ResultCode;
  9. import com.huimv.admin.common.utils.ResultUtil;
  10. import com.huimv.admin.entity.BasePigpen;
  11. import com.huimv.admin.entity.dto.BasePigpenDto;
  12. import com.huimv.admin.entity.vo.TreeBasePigpen;
  13. import com.huimv.admin.mapper.BasePigpenMapper;
  14. import com.huimv.admin.service.IBasePigpenService;
  15. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import org.springframework.transaction.annotation.Transactional;
  19. import java.util.ArrayList;
  20. import java.util.List;
  21. import java.util.Map;
  22. import java.util.stream.Collectors;
  23. /**
  24. * <p>
  25. * 服务实现类
  26. * </p>
  27. *
  28. * @author author
  29. * @since 2023-02-13
  30. */
  31. @Service
  32. public class BasePigpenServiceImpl extends ServiceImpl<BasePigpenMapper, BasePigpen> implements IBasePigpenService {
  33. @Autowired
  34. private BasePigpenMapper basePigpenMapper;
  35. @Override
  36. @Transactional
  37. public Result addPigpen(BasePigpenDto basePigpenDto) {
  38. BasePigpen basePigpen = new BasePigpen();
  39. BeanUtil.copyProperties(basePigpen,basePigpenDto);
  40. basePigpen.setParentId(0);
  41. basePigpen.setFType(1);
  42. int insert = basePigpenMapper.insert(basePigpen);
  43. Integer floorNum = basePigpenDto.getFloorNum();
  44. for (Integer integer = 1; integer <= floorNum; integer++) {
  45. BasePigpen basePigpen1 = new BasePigpen();
  46. basePigpen1.setFType(2);
  47. basePigpen1.setParentId(insert);
  48. basePigpen1.setBuildName(Convert.numberToChinese(integer,false));
  49. basePigpen1.setFarmId(basePigpen.getFarmId());
  50. basePigpen1.setStageCode(basePigpen.getStageCode());
  51. }
  52. return ResultUtil.addResult(insert);
  53. }
  54. @Override
  55. public Result list(String farmCode, String pigpenName, String stageCode) {
  56. QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
  57. queryWrapper.like(StringUtils.isNotBlank(pigpenName),"pigpen_name", pigpenName);
  58. queryWrapper.like(StringUtils.isNotBlank(stageCode),"stage_code", stageCode);
  59. queryWrapper.eq(StringUtils.isNotBlank(farmCode),"farm_code", farmCode);
  60. //创建排序
  61. List<BasePigpen> basePigpens = basePigpenMapper.selectList(queryWrapper);
  62. //将结果List改为树
  63. List<TreeBasePigpen> treeBasePigpens = parseBizBaseArea(basePigpens);
  64. return new Result(ResultCode.SUCCESS,treeBasePigpens);
  65. }
  66. /**
  67. * 查询结果 转换成树形结构
  68. * @param bizBaseAreas 原始数据
  69. * @return 树
  70. */
  71. private List<TreeBasePigpen> parseBizBaseArea(List<BasePigpen> bizBaseAreas){
  72. //构建需要展示的树形节点结构
  73. Map<String, TreeBasePigpen> nodeMap = bizBaseAreas.stream().map(basePigpen -> {
  74. TreeBasePigpen baseVo = new TreeBasePigpen();
  75. baseVo.setId(basePigpen.getId()+"");
  76. baseVo.setFarmCode(basePigpen.getFarmId());
  77. baseVo.setParentId(basePigpen.getParentId());
  78. baseVo.setSort(basePigpen.getSort());
  79. baseVo.setPigpenName(basePigpen.getBuildName());
  80. baseVo.setType(basePigpen.getFType());
  81. baseVo.setChildNode(new ArrayList<>());
  82. return baseVo;
  83. }).collect(Collectors.toMap(TreeBasePigpen::getId, b -> b,(k1, k2)->k1));
  84. //创建数组存父亲节点
  85. ArrayList<TreeBasePigpen> roots = new ArrayList<>();
  86. //构建树形
  87. nodeMap.values().forEach(item->{
  88. String parentCode = item.getParentId()+"";
  89. if (nodeMap.get(parentCode) == null){
  90. //父节点为空,说明当前节点就已经是父节点了 将该节点存起来
  91. roots.add(item);
  92. }else {
  93. //父节点 不为空,说明有父节点,拿到该节点的父节点的孩子节点(就是我自己),将该节点存起来
  94. nodeMap.get(parentCode).getChildNode().add(item);
  95. }
  96. });
  97. return roots;
  98. }
  99. }