|
|
@ -7,19 +7,27 @@ import com.mh.common.page.PageRequest; |
|
|
|
import com.mh.common.page.PageResult; |
|
|
|
import com.mh.common.page.PageResult; |
|
|
|
import com.mh.common.utils.StringUtils; |
|
|
|
import com.mh.common.utils.StringUtils; |
|
|
|
import com.mh.user.dto.EnergyMomYoyDataDTO; |
|
|
|
import com.mh.user.dto.EnergyMomYoyDataDTO; |
|
|
|
|
|
|
|
import com.mh.user.entity.DataResultChEntity; |
|
|
|
import com.mh.user.entity.EnergyDataEntity; |
|
|
|
import com.mh.user.entity.EnergyDataEntity; |
|
|
|
import com.mh.user.mapper.EnergyDataMapper; |
|
|
|
import com.mh.user.mapper.EnergyDataMapper; |
|
|
|
import com.mh.user.model.EnergyModel; |
|
|
|
import com.mh.user.model.EnergyModel; |
|
|
|
import com.mh.user.service.EnergyDataService; |
|
|
|
import com.mh.user.service.EnergyDataService; |
|
|
|
|
|
|
|
import com.mh.user.utils.DateUtil; |
|
|
|
import com.mh.user.utils.ExchangeStringUtil; |
|
|
|
import com.mh.user.utils.ExchangeStringUtil; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
|
|
|
|
import java.math.RoundingMode; |
|
|
|
import java.time.LocalDate; |
|
|
|
import java.time.LocalDate; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.time.YearMonth; |
|
|
|
import java.time.YearMonth; |
|
|
|
import java.time.format.DateTimeFormatter; |
|
|
|
import java.time.format.DateTimeFormatter; |
|
|
|
|
|
|
|
import java.util.Comparator; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
import java.util.stream.Stream; |
|
|
|
|
|
|
|
|
|
|
|
@Service |
|
|
|
@Service |
|
|
|
public class EnergyDataServiceImpl implements EnergyDataService { |
|
|
|
public class EnergyDataServiceImpl implements EnergyDataService { |
|
|
@ -29,61 +37,117 @@ public class EnergyDataServiceImpl implements EnergyDataService { |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public List<EnergyDataEntity> queryEnergyData(EnergyModel energyModel) { |
|
|
|
public List<EnergyDataEntity> queryEnergyData(EnergyModel energyModel) { |
|
|
|
String projectId=energyModel.getProjectId(); |
|
|
|
String projectId = energyModel.getProjectId(); |
|
|
|
String startDate=energyModel.getStartDate(); |
|
|
|
String startDate = energyModel.getStartDate(); |
|
|
|
String endDate=energyModel.getEndDate(); |
|
|
|
String endDate = energyModel.getEndDate(); |
|
|
|
int page=energyModel.getPage(); |
|
|
|
int page = energyModel.getPage(); |
|
|
|
int limit=energyModel.getLimit(); |
|
|
|
int limit = energyModel.getLimit(); |
|
|
|
int type=energyModel.getType(); |
|
|
|
int type = energyModel.getType(); |
|
|
|
int queryType=energyModel.getQueryType(); |
|
|
|
int queryType = energyModel.getQueryType(); |
|
|
|
|
|
|
|
|
|
|
|
if (type==1){ //按十分钟
|
|
|
|
if (type == 1) { //按十分钟
|
|
|
|
return energyDataMapper.queryEnergyDataMi(projectId,startDate,page,limit); |
|
|
|
return energyDataMapper.queryEnergyDataMi(projectId, startDate, page, limit); |
|
|
|
}else if(type==2){ //按小时
|
|
|
|
} else if (type == 2) { //按小时
|
|
|
|
return energyDataMapper.queryEnergyDataHour(projectId,startDate,page,limit); |
|
|
|
// 如果项目是20,则查询两个projectId 14和15
|
|
|
|
}else if(type==3){ //按天
|
|
|
|
if (projectId.equals("20")) { |
|
|
|
return energyDataMapper.queryEnergyDataDay(projectId,startDate,queryType,page,limit); |
|
|
|
List<EnergyDataEntity> data1 = energyDataMapper.queryEnergyDataHour("14", startDate, page, limit); |
|
|
|
}else if(type==4){ //按月
|
|
|
|
List<EnergyDataEntity> data2 = energyDataMapper.queryEnergyDataHour("15", startDate, page, limit); |
|
|
|
return energyDataMapper.queryEnergyDataMonth(projectId,startDate,queryType,page,limit); |
|
|
|
return getEnergyDataEntities(data1, data2); |
|
|
|
}else if(type==5){ //按年
|
|
|
|
|
|
|
|
return energyDataMapper.queryEnergyDataYear(projectId,startDate,endDate,queryType,page,limit); |
|
|
|
|
|
|
|
}else{ //按天,默认
|
|
|
|
|
|
|
|
return energyDataMapper.queryEnergyDataDay(projectId,startDate,queryType,page,limit); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return energyDataMapper.queryEnergyDataHour(projectId, startDate, page, limit); |
|
|
|
|
|
|
|
} else if (type == 3) { //按天
|
|
|
|
|
|
|
|
if (projectId.equals("20")) { |
|
|
|
|
|
|
|
List<EnergyDataEntity> data1 = energyDataMapper.queryEnergyDataDay("14", startDate, queryType, page, limit); |
|
|
|
|
|
|
|
List<EnergyDataEntity> data2 = energyDataMapper.queryEnergyDataDay("15", startDate, queryType, page, limit); |
|
|
|
|
|
|
|
// 两个列表根据时间分组合并数据
|
|
|
|
|
|
|
|
// 合并两个列表并根据时间分组
|
|
|
|
|
|
|
|
return getEnergyDataEntities(data1, data2); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return energyDataMapper.queryEnergyDataDay(projectId, startDate, queryType, page, limit); |
|
|
|
|
|
|
|
} else if (type == 4) { //按月
|
|
|
|
|
|
|
|
if (projectId.equals("20")) { |
|
|
|
|
|
|
|
List<EnergyDataEntity> data1 = energyDataMapper.queryEnergyDataMonth("14", startDate, queryType, page, limit); |
|
|
|
|
|
|
|
List<EnergyDataEntity> data2 = energyDataMapper.queryEnergyDataMonth("15", startDate, queryType, page, limit); |
|
|
|
|
|
|
|
// 两个列表根据时间分组合并数据
|
|
|
|
|
|
|
|
// 合并两个列表并根据时间分组
|
|
|
|
|
|
|
|
return getEnergyDataEntities(data1, data2); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return energyDataMapper.queryEnergyDataMonth(projectId, startDate, queryType, page, limit); |
|
|
|
|
|
|
|
} else if (type == 5) { //按年
|
|
|
|
|
|
|
|
if (projectId.equals("20")) { |
|
|
|
|
|
|
|
List<EnergyDataEntity> data1 = energyDataMapper.queryEnergyDataYear("14", startDate, endDate, queryType, page, limit); |
|
|
|
|
|
|
|
List<EnergyDataEntity> data2 = energyDataMapper.queryEnergyDataYear("15", startDate, endDate, queryType, page, limit); |
|
|
|
|
|
|
|
// 两个列表根据时间分组合并数据
|
|
|
|
|
|
|
|
// 合并两个列表并根据时间分组
|
|
|
|
|
|
|
|
return getEnergyDataEntities(data1, data2); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return energyDataMapper.queryEnergyDataYear(projectId, startDate, endDate, queryType, page, limit); |
|
|
|
|
|
|
|
} else { //按天,默认
|
|
|
|
|
|
|
|
return energyDataMapper.queryEnergyDataDay(projectId, startDate, queryType, page, limit); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static List<EnergyDataEntity> getEnergyDataEntities(List<EnergyDataEntity> data1, List<EnergyDataEntity> data2) { |
|
|
|
|
|
|
|
// 两个列表根据时间分组合并数据
|
|
|
|
|
|
|
|
// 合并两个列表并根据时间分组
|
|
|
|
|
|
|
|
Map<String, EnergyDataEntity> mergedMap = Stream.concat(data1.stream(), data2.stream()) |
|
|
|
|
|
|
|
.collect(Collectors.toMap( |
|
|
|
|
|
|
|
entity -> entity.getCurDate(), |
|
|
|
|
|
|
|
entity -> entity, |
|
|
|
|
|
|
|
(entity1, entity2) -> { |
|
|
|
|
|
|
|
entity1.setCl(BigDecimal.valueOf(entity1.getCl()).add(BigDecimal.valueOf(entity2.getCl()) |
|
|
|
|
|
|
|
.setScale(2, RoundingMode.HALF_UP)).doubleValue()); |
|
|
|
|
|
|
|
return entity1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 重新赋值项目名称并创建新的列表
|
|
|
|
|
|
|
|
List<EnergyDataEntity> mergedList = mergedMap.values().stream() |
|
|
|
|
|
|
|
.map(entity -> { |
|
|
|
|
|
|
|
entity.setProjectName("河北珠江啤酒"); // 根据需要重新赋值项目名称
|
|
|
|
|
|
|
|
entity.setProjectId("20"); |
|
|
|
|
|
|
|
return entity; |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 按照时间字符“yyyy-MM-dd HH”进行排序
|
|
|
|
|
|
|
|
mergedList.sort(Comparator.comparing(EnergyDataEntity::getCurDate)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return mergedList; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public int getEnergyDataCount(EnergyModel energyModel) { |
|
|
|
public int getEnergyDataCount(EnergyModel energyModel) { |
|
|
|
String projectId=energyModel.getProjectId(); |
|
|
|
String projectId = energyModel.getProjectId(); |
|
|
|
String startDate=energyModel.getStartDate(); |
|
|
|
String startDate = energyModel.getStartDate(); |
|
|
|
String endDate=energyModel.getEndDate(); |
|
|
|
String endDate = energyModel.getEndDate(); |
|
|
|
int type=energyModel.getType(); |
|
|
|
int type = energyModel.getType(); |
|
|
|
int queryType=energyModel.getQueryType(); |
|
|
|
int queryType = energyModel.getQueryType(); |
|
|
|
|
|
|
|
|
|
|
|
if (type==1){ //按十分钟
|
|
|
|
if (type == 1) { //按十分钟
|
|
|
|
return energyDataMapper.getEnergyDataMiCount(projectId,startDate); |
|
|
|
return energyDataMapper.getEnergyDataMiCount(projectId, startDate); |
|
|
|
}else if(type==2) { //按小时
|
|
|
|
} else if (type == 2) { //按小时
|
|
|
|
return energyDataMapper.getEnergyDataHourCount(projectId,startDate); |
|
|
|
return energyDataMapper.getEnergyDataHourCount(projectId, startDate); |
|
|
|
}else if(type==3) { //按天
|
|
|
|
} else if (type == 3) { //按天
|
|
|
|
return energyDataMapper.getEnergyDataDayCount(projectId,startDate,queryType); |
|
|
|
return energyDataMapper.getEnergyDataDayCount(projectId, startDate, queryType); |
|
|
|
}else if(type==4) { //按月
|
|
|
|
} else if (type == 4) { //按月
|
|
|
|
return energyDataMapper.getEnergyDataMonthCount(projectId,startDate,queryType); |
|
|
|
return energyDataMapper.getEnergyDataMonthCount(projectId, startDate, queryType); |
|
|
|
}else if(type==5) { //按年
|
|
|
|
} else if (type == 5) { //按年
|
|
|
|
return energyDataMapper.getEnergyDataYearCount(projectId,startDate,endDate,queryType); |
|
|
|
return energyDataMapper.getEnergyDataYearCount(projectId, startDate, endDate, queryType); |
|
|
|
}else { //按天,默认
|
|
|
|
} else { //按天,默认
|
|
|
|
return energyDataMapper.getEnergyDataDayCount(projectId,startDate,queryType); |
|
|
|
return energyDataMapper.getEnergyDataDayCount(projectId, startDate, queryType); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public PageResult queryMomEnergyData(EnergyModel energyModel) { |
|
|
|
public PageResult queryMomEnergyData(EnergyModel energyModel) { |
|
|
|
String projectId=energyModel.getProjectId(); |
|
|
|
String projectId = energyModel.getProjectId(); |
|
|
|
String startDate=energyModel.getStartDate(); |
|
|
|
String startDate = energyModel.getStartDate(); |
|
|
|
String endDate=energyModel.getEndDate(); |
|
|
|
String endDate = energyModel.getEndDate(); |
|
|
|
int page=energyModel.getPage(); |
|
|
|
int page = energyModel.getPage(); |
|
|
|
int limit=energyModel.getLimit(); |
|
|
|
int limit = energyModel.getLimit(); |
|
|
|
int type=energyModel.getType(); |
|
|
|
int type = energyModel.getType(); |
|
|
|
int queryType=energyModel.getQueryType(); |
|
|
|
int queryType = energyModel.getQueryType(); |
|
|
|
|
|
|
|
|
|
|
|
String lastStartDate = ""; |
|
|
|
String lastStartDate = ""; |
|
|
|
String lastEndDate = ""; |
|
|
|
String lastEndDate = ""; |
|
|
@ -216,13 +280,13 @@ public class EnergyDataServiceImpl implements EnergyDataService { |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public PageResult queryYoyEnergyData(EnergyModel energyModel) { |
|
|
|
public PageResult queryYoyEnergyData(EnergyModel energyModel) { |
|
|
|
String projectId=energyModel.getProjectId(); |
|
|
|
String projectId = energyModel.getProjectId(); |
|
|
|
String startDate=energyModel.getStartDate(); |
|
|
|
String startDate = energyModel.getStartDate(); |
|
|
|
String endDate=energyModel.getEndDate(); |
|
|
|
String endDate = energyModel.getEndDate(); |
|
|
|
int page=energyModel.getPage(); |
|
|
|
int page = energyModel.getPage(); |
|
|
|
int limit=energyModel.getLimit(); |
|
|
|
int limit = energyModel.getLimit(); |
|
|
|
int type=energyModel.getType(); |
|
|
|
int type = energyModel.getType(); |
|
|
|
int queryType=energyModel.getQueryType(); |
|
|
|
int queryType = energyModel.getQueryType(); |
|
|
|
|
|
|
|
|
|
|
|
String lastStartDate = ""; |
|
|
|
String lastStartDate = ""; |
|
|
|
String lastEndDate = ""; |
|
|
|
String lastEndDate = ""; |
|
|
@ -304,8 +368,8 @@ public class EnergyDataServiceImpl implements EnergyDataService { |
|
|
|
endDate = year + "-" + ExchangeStringUtil.addZeroForNum(String.valueOf(currentMonth), 2); |
|
|
|
endDate = year + "-" + ExchangeStringUtil.addZeroForNum(String.valueOf(currentMonth), 2); |
|
|
|
|
|
|
|
|
|
|
|
// 环比时间
|
|
|
|
// 环比时间
|
|
|
|
lastStartDate = year-1 + "-" + ExchangeStringUtil.addZeroForNum(String.valueOf(startMonth), 2); |
|
|
|
lastStartDate = year - 1 + "-" + ExchangeStringUtil.addZeroForNum(String.valueOf(startMonth), 2); |
|
|
|
lastEndDate = year-1 + "-" + ExchangeStringUtil.addZeroForNum(String.valueOf(currentMonth), 2); |
|
|
|
lastEndDate = year - 1 + "-" + ExchangeStringUtil.addZeroForNum(String.valueOf(currentMonth), 2); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case 5: |
|
|
|
case 5: |
|
|
|
tableName = "energy_data_year"; |
|
|
|
tableName = "energy_data_year"; |
|
|
|