zss
4 天以前 d7c626bbb83393550b63678a49d73a9ba44b1c85
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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.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;
 
/**
 * <p>
 * 能源类型-能耗抄表明细 服务实现类
 * </p>
 *
 * @author 芯导软件(江苏)有限公司
 * @since 2026-03-10 11:22:20
 */
@Service
public class EnergyConsumptionDetailServiceImpl extends ServiceImpl<EnergyConsumptionDetailMapper, EnergyConsumptionDetail> implements EnergyConsumptionDetailService {
 
    @Autowired
    private EnergyConsumptionDetailMapper energyConsumptionDetailMapper;
 
    @Autowired
    private EnergyMapper energyMapper;
 
    @Override
    public IPage<EnergyConsumptionDetailDto> pageEnergyConsumptionDetail(Page<EnergyConsumptionDetailDto> page, EnergyConsumptionDetailDto energyConsumptionDetailDto) {
        return energyConsumptionDetailMapper.pageEnergyConsumptionDetail(page,energyConsumptionDetailDto);
    }
 
    @Override
    public R importData(MultipartFile file) {
        try {
            ExcelUtil<EnergyConsumptionDetailDto> util = new ExcelUtil<EnergyConsumptionDetailDto>(EnergyConsumptionDetailDto.class);
            List<EnergyConsumptionDetailDto> energyConsumptionDetailDtoList = util.importExcel(file.getInputStream());
            if(CollectionUtils.isEmpty(energyConsumptionDetailDtoList)){
                return R.fail("模板错误或导入数据为空");
            }
            List<EnergyConsumptionDetail> 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> energy = energyMapper.selectList(Wrappers.<Energy>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<EnergyConsumptionDetailDto> list = energyConsumptionDetailMapper.pageEnergyConsumptionDetail(new Page<>(-1,-1),null).getRecords();
        if(CollectionUtils.isEmpty(list)){
            throw new RuntimeException("无导出数据");
        }
        ExcelUtil<EnergyConsumptionDetailDto> util = new ExcelUtil<>(EnergyConsumptionDetailDto.class);
        util.exportExcel(response, list, "能耗抄表");
    }
}