package com.ruoyi.energy.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.energy.dto.EnergyConsumptionDetailDto; import com.ruoyi.energy.dto.EnergyStatisticsDto; import com.ruoyi.energy.mapper.EnergyMapper; import com.ruoyi.energy.pojo.Energy; import com.ruoyi.energy.pojo.EnergyConsumptionDetail; import com.ruoyi.energy.mapper.EnergyConsumptionDetailMapper; import com.ruoyi.energy.service.EnergyConsumptionDetailService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.framework.web.domain.R; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.stream.Collectors; /** *

* 能源类型-能耗抄表明细 服务实现类 *

* * @author 芯导软件(江苏)有限公司 * @since 2026-03-10 11:22:20 */ @Service public class EnergyConsumptionDetailServiceImpl extends ServiceImpl implements EnergyConsumptionDetailService { @Autowired private EnergyConsumptionDetailMapper energyConsumptionDetailMapper; @Autowired private EnergyMapper energyMapper; @Override public IPage pageEnergyConsumptionDetail(Page page, EnergyConsumptionDetailDto energyConsumptionDetailDto) { return energyConsumptionDetailMapper.pageEnergyConsumptionDetail(page,energyConsumptionDetailDto); } @Override public R importData(MultipartFile file) { try { ExcelUtil util = new ExcelUtil(EnergyConsumptionDetailDto.class); List energyConsumptionDetailDtoList = util.importExcel(file.getInputStream()); if(CollectionUtils.isEmpty(energyConsumptionDetailDtoList)){ return R.fail("模板错误或导入数据为空"); } List list = energyConsumptionDetailDtoList.stream().map(energyConsumptionDetailDto -> { if (ObjectUtils.isEmpty(energyConsumptionDetailDto)) { throw new RuntimeException("使用模板进行导入"); } if (ObjectUtils.isEmpty(energyConsumptionDetailDto.getEnergyTyep()) && ObjectUtils.isEmpty(energyConsumptionDetailDto.getEnergyName())) { throw new RuntimeException("能源类型不能为空"); } List energy = energyMapper.selectList(Wrappers.lambdaQuery() .eq(Energy::getEnergyTyep, energyConsumptionDetailDto.getEnergyTyep()) .eq(Energy::getEnergyName, energyConsumptionDetailDto.getEnergyName())); if (CollectionUtils.isEmpty(energy)) { throw new RuntimeException("导入数据中的能源类型在系统中不存在,请先前往能源类型中配置!"); } EnergyConsumptionDetail energyConsumptionDetail = new EnergyConsumptionDetail(); BeanUtils.copyProperties(energyConsumptionDetailDto, energyConsumptionDetail); energyConsumptionDetail.setEnergyId(energy.get(0).getId()); return energyConsumptionDetail; }).collect(Collectors.toList()); this.saveOrUpdateBatch(list); return R.ok(true); }catch (Exception e){ e.printStackTrace(); return R.fail(e.getMessage()); } } @Override public void export(HttpServletResponse response) { List list = energyConsumptionDetailMapper.pageEnergyConsumptionDetail(new Page<>(-1,-1),new EnergyConsumptionDetailDto()).getRecords(); if(CollectionUtils.isEmpty(list)){ throw new RuntimeException("无导出数据"); } ExcelUtil util = new ExcelUtil<>(EnergyConsumptionDetailDto.class); util.exportExcel(response, list, "能耗抄表"); } @Override public Object statistics(EnergyStatisticsDto energyStatisticsDto) { return null; } }