| | |
| | | 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.EnergyConsumptionTypeDto; |
| | | import com.ruoyi.energy.dto.EnergyCostDto; |
| | | import com.ruoyi.energy.dto.EnergyStatisticsDto; |
| | | import com.ruoyi.energy.mapper.EnergyMapper; |
| | | import com.ruoyi.energy.pojo.Energy; |
| | |
| | | import com.ruoyi.energy.mapper.EnergyConsumptionDetailMapper; |
| | | import com.ruoyi.energy.service.EnergyConsumptionDetailService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.energy.vo.EnergyStatisticsVo; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.time.LocalDate; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Object statistics(EnergyStatisticsDto energyStatisticsDto) { |
| | | return null; |
| | | public EnergyStatisticsDto statistics(EnergyStatisticsVo energyStatisticsVo) { |
| | | EnergyStatisticsDto energyStatisticsDto = new EnergyStatisticsDto(); |
| | | //计算总耗用量+总能耗费用 |
| | | Map<String, BigDecimal> map=energyConsumptionDetailMapper.calculateEnergy(energyStatisticsVo); |
| | | energyStatisticsDto.setTotalEnergyConsumption(map.get("totalEnergyConsumption")); |
| | | energyStatisticsDto.setTotalEnergyCost(map.get("totalEnergyCost")); |
| | | //平均用量 |
| | | energyStatisticsDto.setAverageConsumption(energyStatisticsDto.getTotalEnergyConsumption().divide(new BigDecimal(energyStatisticsVo.getDays()),2, RoundingMode.HALF_UP)); |
| | | //环比变化=(本期值 - 上期值) / 上期值 * 100 |
| | | LocalDate minDays = energyStatisticsVo.getStartDate().minusDays(energyStatisticsVo.getDays()); |
| | | LocalDate masDays = energyStatisticsVo.getEndDate().minusDays(energyStatisticsVo.getDays()); |
| | | EnergyStatisticsVo oldenergyStatisticsVo = new EnergyStatisticsVo(); |
| | | BeanUtils.copyProperties(energyStatisticsVo,oldenergyStatisticsVo); |
| | | oldenergyStatisticsVo.setStartDate(minDays); |
| | | oldenergyStatisticsVo.setEndDate(masDays); |
| | | Map<String, BigDecimal> oldmap=energyConsumptionDetailMapper.calculateEnergy(oldenergyStatisticsVo); |
| | | if (ObjectUtils.isNotEmpty(oldmap)) { |
| | | BigDecimal changeVite = (map.get("totalEnergyConsumption").subtract(oldmap.get("totalEnergyConsumption"))).divide(oldmap.get("totalEnergyConsumption"), 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); |
| | | energyStatisticsDto.setChangeVite(changeVite); |
| | | } |
| | | //能耗类型占比 |
| | | List<EnergyConsumptionTypeDto> energyConsumptionTypeDtos=energyConsumptionDetailMapper.energyConsumptionTypeProportion(energyStatisticsVo); |
| | | energyStatisticsDto.setEnergyConsumptionTypeProportion(energyConsumptionTypeDtos); |
| | | //能耗明细 |
| | | List<EnergyCostDto> energyCostDtos=energyConsumptionDetailMapper.energyCostDtos(energyStatisticsVo); |
| | | energyStatisticsDto.setEnergyCostDtos(energyCostDtos); |
| | | return energyStatisticsDto; |
| | | } |
| | | } |