Browse Source

1、河北珠江啤酒项目整合数据(能效监测、数据分析(差同比环比))

dev
mh 2 months ago
parent
commit
450a3c01a2
  1. 81
      user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java
  2. 172
      user-service/src/main/java/com/mh/user/service/impl/EnergyDataServiceImpl.java
  3. 2
      user-service/src/main/java/com/mh/user/service/impl/MeterManageServiceImpl.java

81
user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java

@ -17,10 +17,12 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
@Slf4j @Slf4j
@Service @Service
@ -233,14 +235,69 @@ public class DataResultServiceImpl implements DataResultService {
@Override @Override
public List<DataResultChEntity> queryDataResultMi(String projectId, String startDate, String curDate, int page, int limit, int type, String registerAddr, String mtNum) { public List<DataResultChEntity> queryDataResultMi(String projectId, String startDate, String curDate, int page, int limit, int type, String registerAddr, String mtNum) {
if (type == 0) { if (type == 0 && !projectId.equals("20")) {
return dataResultOneMiMapper.queryDataResultOneMi(projectId, startDate, curDate, page, limit); return dataResultOneMiMapper.queryDataResultOneMi(projectId, startDate, curDate, page, limit);
} else if (type == 1) { } else if (type == 1 && !projectId.equals("20")) {
return dataResultFiveMiMapper.queryDataResultFiveMi(projectId, startDate, curDate, page, limit, registerAddr, mtNum); return dataResultFiveMiMapper.queryDataResultFiveMi(projectId, startDate, curDate, page, limit, registerAddr, mtNum);
} else if (type == 2) { } else if (type == 2 && !projectId.equals("20")) {
return dataResultFifteenMiMapper.queryDataResultFifteenMi(projectId, startDate, curDate, page, limit, registerAddr, mtNum); return dataResultFifteenMiMapper.queryDataResultFifteenMi(projectId, startDate, curDate, page, limit, registerAddr, mtNum);
} else if (projectId.equals("20") && (type == 1 || type == 2)) {
// 需要两个珠江啤酒整合起来
List<DataResultChEntity> data1 = new ArrayList<>();
List<DataResultChEntity> data2 = new ArrayList<>();
if (type == 1) {
data1 = dataResultFiveMiMapper.queryDataResultFiveMi("14", startDate, curDate, page, limit, registerAddr, mtNum);
data2 = dataResultFiveMiMapper.queryDataResultFiveMi("15", startDate, curDate, page, limit, registerAddr, mtNum);
} else { } else {
return dataResultOneMiMapper.queryDataResultOneMi(projectId, startDate, curDate, page, limit); data1 = dataResultFifteenMiMapper.queryDataResultFifteenMi("14", startDate, curDate, page, limit, registerAddr, mtNum);
data2 = dataResultFifteenMiMapper.queryDataResultFifteenMi("15", startDate, curDate, page, limit, registerAddr, mtNum);
}
if ("0006".equals(registerAddr)) {
// 合并两个列表并根据时间分组
Map<String, DataResultChEntity> mergedMap = Stream.concat(data1.stream(), data2.stream())
.collect(Collectors.toMap(
entity -> DateUtil.dateToString(entity.getCurDate(), "yyyy-MM-dd HH:mm:ss"),
entity -> entity,
(entity1, entity2) -> {
entity1.setCurValue(new BigDecimal(entity1.getCurValue()).add(new BigDecimal(entity2.getCurValue())
.setScale(2, RoundingMode.HALF_UP)).toString());
return entity1;
}
));
// 重新赋值项目名称并创建新的列表
return mergedMap.values().stream()
.map(entity -> {
entity.setProjectName("河北珠江啤酒"); // 根据需要重新赋值项目名称
return entity;
})
.collect(Collectors.toList());
} else {
// 合并两个列表并根据时间分组
Map<String, DataResultChEntity> mergedMap = Stream.concat(data1.stream(), data2.stream())
.collect(Collectors.toMap(
entity -> DateUtil.dateToString(entity.getCurDate(), "yyyy-MM-dd HH:mm:ss"),
entity -> entity,
(entity1, entity2) -> {
entity1.setCurValue((new BigDecimal(entity1.getCurValue()).add(new BigDecimal(entity2.getCurValue())))
.divide(new BigDecimal("2")).setScale(2, RoundingMode.FLOOR).toString());
return entity1;
}
));
// 重新赋值项目名称并创建新的列表
return mergedMap.values().stream()
.map(entity -> {
entity.setProjectName("河北珠江啤酒"); // 根据需要重新赋值项目名称
return entity;
})
.collect(Collectors.toList());
}
} else {
return dataResultFifteenMiMapper.queryDataResultFifteenMi(projectId, startDate, curDate, page, limit, registerAddr, mtNum);
} }
} }
@ -261,7 +318,7 @@ public class DataResultServiceImpl implements DataResultService {
String momentCoolingStr = Constant.MOMENT_COOLING; String momentCoolingStr = Constant.MOMENT_COOLING;
String outTempStr = Constant.OUT_TEMP; String outTempStr = Constant.OUT_TEMP;
String intTempStr = Constant.INT_TEMP; String intTempStr = Constant.INT_TEMP;
if (isHotCollection == 2) { if (isHotCollection == 2 || projectId.equals("20")) {
momentCoolingStr = Constant.MOMENT_HOT; momentCoolingStr = Constant.MOMENT_HOT;
outTempStr = Constant.TEMP; outTempStr = Constant.TEMP;
intTempStr = Constant.PRE; intTempStr = Constant.PRE;
@ -282,7 +339,7 @@ public class DataResultServiceImpl implements DataResultService {
int queryType = 1; int queryType = 1;
if (dateType.equals("8小时")) { if (dateType.equals("8小时")) {
startDate = ExchangeStringUtil.dateRoll(8, curDate); startDate = ExchangeStringUtil.dateRoll(8, curDate);
} else if (dateType.equals("12小时")){ } else if (dateType.equals("12小时")) {
startDate = ExchangeStringUtil.dateRoll(12, curDate); startDate = ExchangeStringUtil.dateRoll(12, curDate);
} else { } else {
startDate = ExchangeStringUtil.dateRoll(24, curDate); startDate = ExchangeStringUtil.dateRoll(24, curDate);
@ -299,17 +356,17 @@ public class DataResultServiceImpl implements DataResultService {
// 将数据按时间分组 // 将数据按时间分组
Map<String, DataResultChEntity> momentCoolingMap = records.stream() Map<String, DataResultChEntity> momentCoolingMap = records.stream()
.collect(Collectors.toMap(val -> { .collect(Collectors.toMap(val -> {
return DateUtil.dateToString(val.getCurDate(),"yyyy-MM-dd HH:mm:ss"); return DateUtil.dateToString(val.getCurDate(), "yyyy-MM-dd HH:mm:ss");
}, entity -> entity)); }, entity -> entity));
Map<String, DataResultChEntity> intTempMap = intTempRecords.stream() Map<String, DataResultChEntity> intTempMap = intTempRecords.stream()
.collect(Collectors.toMap(val -> { .collect(Collectors.toMap(val -> {
return DateUtil.dateToString(val.getCurDate(),"yyyy-MM-dd HH:mm:ss"); return DateUtil.dateToString(val.getCurDate(), "yyyy-MM-dd HH:mm:ss");
}, entity -> entity)); }, entity -> entity));
Map<String, DataResultChEntity> outTempMap = outTempRecords.stream() Map<String, DataResultChEntity> outTempMap = outTempRecords.stream()
.collect(Collectors.toMap(val -> { .collect(Collectors.toMap(val -> {
return DateUtil.dateToString(val.getCurDate(),"yyyy-MM-dd HH:mm:ss"); return DateUtil.dateToString(val.getCurDate(), "yyyy-MM-dd HH:mm:ss");
}, entity -> entity)); }, entity -> entity));
// 合并数据 // 合并数据
@ -384,11 +441,17 @@ public class DataResultServiceImpl implements DataResultService {
@Override @Override
public int dataResultFiveMiCount(String projectId, String startDate, String curDate, String registerAddr, String mtNum) { public int dataResultFiveMiCount(String projectId, String startDate, String curDate, String registerAddr, String mtNum) {
if ("20".equals(projectId)) {
projectId = "14";
}
return dataResultFiveMiMapper.dataResultFiveMiCount(projectId, startDate, curDate, registerAddr, mtNum); return dataResultFiveMiMapper.dataResultFiveMiCount(projectId, startDate, curDate, registerAddr, mtNum);
} }
@Override @Override
public int dataResultFifteenMiCount(String projectId, String startDate, String curDate, String registerAddr, String mtNum) { public int dataResultFifteenMiCount(String projectId, String startDate, String curDate, String registerAddr, String mtNum) {
if ("20".equals(projectId)) {
projectId = "14";
}
return dataResultFifteenMiMapper.dataResultFifteenMiCount(projectId, startDate, curDate, registerAddr, mtNum); return dataResultFifteenMiMapper.dataResultFifteenMiCount(projectId, startDate, curDate, registerAddr, mtNum);
} }

172
user-service/src/main/java/com/mh/user/service/impl/EnergyDataServiceImpl.java

@ -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";

2
user-service/src/main/java/com/mh/user/service/impl/MeterManageServiceImpl.java

@ -130,7 +130,7 @@ public class MeterManageServiceImpl implements MeterManageService {
if (meterManageMapper.queryIsHotCollection(systemId, projectId, "0077", Constant.COOLING_METER) > 0) { if (meterManageMapper.queryIsHotCollection(systemId, projectId, "0077", Constant.COOLING_METER) > 0) {
// 判断是否存在热量计 // 判断是否存在热量计
return 1; return 1;
} else if (meterManageMapper.queryIsHotCollection(systemId, projectId, "0002", Constant.FLOW_METER) > 0) { } else if (meterManageMapper.queryIsHotCollection(systemId, projectId, "0002", Constant.FLOW_METER) > 0 || projectId.equals("20")) {
// 判断是否包含蒸汽流量计 // 判断是否包含蒸汽流量计
return 2; return 2;
} else { } else {

Loading…
Cancel
Save