package com.zhitan.energyMonitor.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhitan.common.constant.CommonConst; import com.zhitan.energyMonitor.domain.EnergyUnitToDevice; import com.zhitan.energyMonitor.domain.vo.ListElectricityMeterVO; import com.zhitan.energyMonitor.domain.vo.UnitToDeviceRelationVO; import com.zhitan.energyMonitor.mapper.EnergyUnitToDeviceMapper; import com.zhitan.energyMonitor.service.IEnergyUnitToDeviceService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; /** * @Description: 用能单元关联的平台模板中仪表的界面逻辑关系 不含有 采集、计算信息 * @Author: jeecg-boot * @Date: 2022-01-26 * @Version: V1.0 */ @Service public class EnergyUnitToDeviceServiceImpl extends ServiceImpl implements IEnergyUnitToDeviceService { // @Autowired // private IMeasuringInstrumentsService meterService; /** * 根据用能单元id获取租户下的其下的仪表列表 * * @param unitId * @return */ @Override public List queryTenantUnitDeviceByUnitId(String unitId) { QueryWrapper queryWrapper = new QueryWrapper(); // .eq(TableColumnConst.TABLE_COLUMN_ENERGY_UNIT_ID, unitId); return baseMapper.selectList(queryWrapper); } /** * 根据用能单元ID获取租户下所有有效的实体表集合 * * @param unitId * @return */ @Override public List queryTenantEntityMeterByUnitId(String unitId) { List unitToDeviceList = baseMapper.selectList(Wrappers.lambdaQuery() .eq(EnergyUnitToDevice::getEnergyUnitId, unitId) ); // if (CollectionUtils.isNotEmpty(unitToDeviceList)) { // List meterIds = unitToDeviceList.stream().map(EnergyUnitToDevice::getId).collect(Collectors.toList()); // // 过滤出实体表 // Integer applianceType = EquipmentInformationEnum.MEASURING_INSTRUMENT_TYPE.ENTITY.getValue(); // List meterList = meterService.list(Wrappers.lambdaQuery() // .select(Meter::getId).in(Meter::getId, meterIds) // .eq(Meter::getApplianceType, applianceType) // ); // List newMeterIds = meterList.stream().map(Meter::getId).collect(Collectors.toList()); // unitToDeviceList = unitToDeviceList.stream().filter(li -> newMeterIds.contains(li.getId())).collect(Collectors.toList()); // } return unitToDeviceList; } /** * 根据用能单元id获取租户下有效的仪表id集合 * * @param unitId 用能单元id * @return 仪表id集合 */ @Override // @Cacheable(value = CacheConstant.ENERGY_UNIT_DEVICE_ID_CACHE, key = "#unitId", unless = "#result == null") public List getEnergyUnitDeviceIdByUnitId(String unitId) { if (StringUtils.isEmpty(unitId)) { return Collections.emptyList(); } List energyUnitToDevices = baseMapper.selectList(Wrappers.lambdaQuery() .select(EnergyUnitToDevice::getId).eq(EnergyUnitToDevice::getEnergyUnitId, unitId) ); if (CollectionUtils.isEmpty(energyUnitToDevices)) { return Collections.emptyList(); } return energyUnitToDevices.stream().map(EnergyUnitToDevice::getId).collect(Collectors.toList()); } /** * 根据用能单元id集合获取租户下有效的仪表id集合 * * @param unitIds 用能单元id */ @Override public List getEnergyUnitDeviceIdByUnitIds(List unitIds) { if (CollectionUtils.isEmpty(unitIds)) { return Collections.emptyList(); } List deviceIdList = new ArrayList<>(); for (String unitId : unitIds) { List unitDeviceIdByUnitId = this.getEnergyUnitDeviceIdByUnitId(unitId); if (CollectionUtils.isNotEmpty(unitDeviceIdByUnitId)) { deviceIdList.addAll(unitDeviceIdByUnitId); } } return deviceIdList; } /** * 根据用能单元id集合+能源类型获取租户下有效的仪表id集合 * * @param unitIds 用能单元id集合 * @return */ @Override public List getDeviceIdByUnitIds(List unitIds) { if (CollectionUtils.isEmpty(unitIds)) { return Collections.emptyList(); } return baseMapper.listDeviceByTenantIds(unitIds); } /** * 更新能单元id获取租户下有效的仪表id集合 * * @param unitId 用能单元id * @return 仪表id集合 */ @Override // @CachePut(value = CacheConstant.ENERGY_UNIT_DEVICE_ID_CACHE, key = "#unitId", unless = "#result == null") public List updateEnergyUnitDeviceIdByUnitId(String unitId) { if (StringUtils.isEmpty(unitId)) { return Collections.emptyList(); } List energyUnitToDevices = baseMapper.selectList(Wrappers.lambdaQuery() .select(EnergyUnitToDevice::getId).eq(EnergyUnitToDevice::getEnergyUnitId, unitId) ); if (CollectionUtils.isEmpty(energyUnitToDevices)) { return Collections.emptyList(); } return energyUnitToDevices.stream().map(EnergyUnitToDevice::getId).collect(Collectors.toList()); } /** * 删除能单元id获取租户下有效的仪表id集合 * * @param unitId 用能单元id */ @Override // @CacheEvict(value = CacheConstant.ENERGY_UNIT_DEVICE_ID_CACHE, key = "#unitId") public void deleteEnergyUnitDeviceIdByUnitId(String unitId) { } @Override public List listElectricityMeter(String unitId) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(EnergyUnitToDevice::getEnergyUnitId, unitId); // .eq(EnergyUnitToDevice::getDeviceType, EnergyTypeConst.ELECTRICITY); List models = baseMapper.selectList(queryWrapper); List resultList = new ArrayList<>(); for (EnergyUnitToDevice model : models) { ListElectricityMeterVO temp = new ListElectricityMeterVO(); temp.setCode(model.getId()); temp.setLabel(model.getName()); resultList.add(temp); } return resultList; } @Override public List listAllMeter() { QueryWrapper queryWrapper = new QueryWrapper(); return baseMapper.selectList(queryWrapper); } @Override public EnergyUnitToDevice getEnergyUnitToDeviceById(String unitId, String id) { if (StringUtils.isEmpty(id)) { return null; } LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(EnergyUnitToDevice::getEnergyUnitId, unitId); lambdaQueryWrapper.eq(EnergyUnitToDevice::getId, id); List energyUnitToDevices = baseMapper.selectList(lambdaQueryWrapper); if (CollectionUtils.isNotEmpty(energyUnitToDevices)) { return energyUnitToDevices.get(CommonConst.DIGIT_0); } return null; } /** * 根据计量器具id集合查询与用能的关系 * * @param unitIds * @return */ @Override public List listDeviceByUnitIds(List unitIds) { List relationList = new ArrayList<>(); if (CollectionUtils.isEmpty(unitIds)) { return relationList; } List unitToDeviceList = baseMapper.selectList(Wrappers.lambdaQuery() .select(EnergyUnitToDevice::getId, EnergyUnitToDevice::getEnergyUnitId, EnergyUnitToDevice::getName) .in(EnergyUnitToDevice::getEnergyUnitId, unitIds) ); if (CollectionUtils.isNotEmpty(unitToDeviceList)) { unitToDeviceList.forEach(li -> { UnitToDeviceRelationVO vo = new UnitToDeviceRelationVO(); vo.setDeviceId(li.getId()); vo.setUnitId(li.getEnergyUnitId()); vo.setDeviceName(li.getName()); relationList.add(vo); }); } return relationList; } }