package com.sandu.ximon.admin.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.sandu.common.service.impl.BaseServiceImpl;
|
import com.sandu.common.util.SpringContextHolder;
|
import com.sandu.ximon.admin.security.SecurityUtils;
|
import com.sandu.ximon.dao.domain.LightEnergyData;
|
import com.sandu.ximon.dao.domain.LightTaskPoleRelation;
|
import com.sandu.ximon.dao.mapper.LightEnergyDataMapper;
|
import lombok.AllArgsConstructor;
|
import org.springframework.stereotype.Service;
|
|
import java.math.BigDecimal;
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.LinkedHashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @author LHN
|
* @date 2022/05/20
|
**/
|
@Service
|
@AllArgsConstructor
|
public class LightEnergyDataService extends BaseServiceImpl<LightEnergyDataMapper, LightEnergyData> {
|
|
|
public List energy(int flag) {
|
Long userId = null;
|
if (SecurityUtils.getClientId() != null) {
|
userId = SecurityUtils.getUserId();
|
}
|
LambdaQueryWrapper<LightEnergyData> lightEnergyDataLambdaQueryWrapper = Wrappers.lambdaQuery(LightEnergyData.class);
|
if (userId != null) {
|
Long finalUserId = userId;
|
lightEnergyDataLambdaQueryWrapper.eq(LightEnergyData::getUserId, finalUserId).or(w -> {
|
w.eq(LightEnergyData::getClientId, finalUserId);
|
});
|
}
|
|
LocalDateTime now = LocalDateTime.now();
|
List<Map> listResult = new ArrayList<>();
|
|
for (int i = 1; i < 8; i++) {
|
|
String format = now.minusDays(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
lightEnergyDataLambdaQueryWrapper.eq(LightEnergyData::getYtdTime, format);
|
List<LightEnergyData> list = list(lightEnergyDataLambdaQueryWrapper);
|
|
BigDecimal[] energyAll = {new BigDecimal(0.00)};
|
BigDecimal[] energySavingAll = {new BigDecimal(0.00)};
|
list.forEach(
|
bean -> {
|
int lightSize = SpringContextHolder.getBean(LightTaskPoleRelationService.class)
|
.list(Wrappers.lambdaQuery(LightTaskPoleRelation.class)
|
.eq(LightTaskPoleRelation::getTaskId, bean.getTaskId()).eq(LightTaskPoleRelation::getIssueStatus, 0)).size();
|
|
BigDecimal energy;
|
BigDecimal energySaving;
|
if (lightSize == 0) {
|
energy = new BigDecimal(0);
|
energySaving = new BigDecimal(1);
|
} else {
|
if (bean.getEnergy().equals(0.00)) {
|
energy = new BigDecimal(0);
|
energySaving = new BigDecimal(1);
|
} else if (bean.getEnergySaving().equals(0.00)) {
|
energy = new BigDecimal(0);
|
energySaving = new BigDecimal(1);
|
} else {
|
|
energy = bean.getEnergy().multiply(new BigDecimal(lightSize)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
energySaving = bean.getEnergySaving().divide(new BigDecimal(lightSize)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
}
|
|
}
|
|
energyAll[0] = energyAll[0].add(energy);
|
energySavingAll[0] = energySavingAll[0].add(energySaving);
|
});
|
Map map = new LinkedHashMap();
|
|
//0为能耗,1为节能率
|
if (flag == 0) {
|
map.put("time", format);
|
map.put("value", energyAll[0]);
|
listResult.add(map);
|
} else {
|
map.put("time", format);
|
map.put("value", energySavingAll[0]);
|
listResult.add(map);
|
}
|
|
}
|
return listResult;
|
}
|
}
|