package com.huimv.admin.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.huimv.admin.common.utils.Result; import com.huimv.admin.common.utils.ResultCode; import com.huimv.admin.entity.CameraFunctionArea; import com.huimv.admin.entity.vo.TreeBasePigpen; import com.huimv.admin.entity.vo.TreeCameraFuntionArea; import com.huimv.admin.mapper.CameraFunctionAreaMapper; import com.huimv.admin.mapper.CameraFunctionMapper; import com.huimv.admin.service.ICameraFunctionAreaService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author author * @since 2023-02-17 */ @Service public class CameraFunctionAreaServiceImpl extends ServiceImpl implements ICameraFunctionAreaService { @Autowired private CameraFunctionAreaMapper cameraFunctionAreaMapper; @Autowired private CameraFunctionMapper cameraFunctionMapper; @Override public Result cameraList(Map params) { String functionaName = (String) params.get("functionaName"); String farmId = (String) params.get("farmId"); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("farm_id",farmId); wrapper.like(StringUtils.isNotBlank(functionaName),"function_name",functionaName); List list = this.list(wrapper); //将结果List改为树 List treeBasePigpens = parseBizBaseArea(list); return new Result(ResultCode.SUCCESS,treeBasePigpens); } private List parseBizBaseArea(List list) { //构建需要展示的树形节点结构 Map nodeMap = list.stream().map(cameraFunctionArea -> { TreeCameraFuntionArea baseVo = new TreeCameraFuntionArea(); baseVo.setId(cameraFunctionArea.getId()+""); baseVo.setFarmId(cameraFunctionArea.getFarmId()); baseVo.setParentId(cameraFunctionArea.getParentId()); baseVo.setCamearIds(cameraFunctionArea.getCamearIds()); baseVo.setFunctionName(cameraFunctionArea.getFunctionName()); baseVo.setFunctionIds(cameraFunctionArea.getFunctionIds()); baseVo.setFunctionType(cameraFunctionArea.getFunctionType()); baseVo.setRemark(cameraFunctionArea.getRemark()); baseVo.setChildNode(new ArrayList<>()); return baseVo; }).collect(Collectors.toMap(TreeCameraFuntionArea::getId, b -> b,(k1, k2)->k1)); //创建数组存父亲节点 ArrayList roots = new ArrayList<>(); //构建树形 nodeMap.values().forEach(item->{ String parentCode = item.getParentId()+""; if (nodeMap.get(parentCode) == null){ //父节点为空,说明当前节点就已经是父节点了 将该节点存起来 roots.add(item); }else { //父节点 不为空,说明有父节点,拿到该节点的父节点的孩子节点(就是我自己),将该节点存起来 nodeMap.get(parentCode).getChildNode().add(item); } }); return roots; } @Override @Transactional public Result removeIds(List ids) { for (Integer id : ids) { CameraFunctionArea byId = this.getById(id); if (StringUtils.isNotBlank(byId.getFunctionIds()) ) { return new Result(10001, "删除失败," + byId.getFunctionName() + "仍然存在区域", false); } } this.removeByIds(ids); return new Result(10000, "删除成功", true); } @Override public Result addFunction(Map params) { String functionAreaId = params.get("functionAreaId"); String functionIds = params.get("functionIds"); CameraFunctionArea cameraFunctionArea = new CameraFunctionArea(); cameraFunctionArea.setId(Integer.parseInt(functionAreaId)); cameraFunctionArea.setFunctionIds(functionIds); this.updateById(cameraFunctionArea); return new Result(10000, "添加成功", true); } }