Browse Source

1、能耗逻辑优化;

dev
mh 3 weeks ago
parent
commit
e25eae94e5
  1. 16
      mh-common/src/main/java/com/mh/common/core/domain/dto/ProProfileDTO.java
  2. 8
      mh-common/src/main/java/com/mh/common/core/domain/vo/CollectionParamsManageVO.java
  3. 4
      mh-common/src/main/java/com/mh/common/core/page/TableSupport.java
  4. 4
      mh-common/src/main/java/com/mh/common/model/request/AdvantechDatas.java
  5. 2
      mh-common/src/main/java/com/mh/common/utils/PageUtils.java
  6. 23
      mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java
  7. 26
      mh-quartz/src/main/java/com/mh/quartz/task/DealDataTask.java
  8. 12
      mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java
  9. 7
      mh-system/src/main/java/com/mh/system/mapper/energy/EnergyAnalyzeMapper.java
  10. 6
      mh-system/src/main/java/com/mh/system/mapper/energy/EnergyMapper.java
  11. 6
      mh-system/src/main/java/com/mh/system/mapper/energy/EnergyQueryMapper.java
  12. 4
      mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java
  13. 4
      mh-system/src/main/java/com/mh/system/service/device/impl/CoolingSystemMonitorServiceImpl.java
  14. 74
      mh-system/src/main/java/com/mh/system/service/energy/impl/EnergyServiceImpl.java
  15. 131
      mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java
  16. 40
      mh-system/src/main/resources/mapper/system/EnergyMapper.xml

16
mh-common/src/main/java/com/mh/common/core/domain/dto/ProProfileDTO.java

@ -61,14 +61,14 @@ public class ProProfileDTO {
}
public ProProfileDTO(BigDecimal totalEle, BigDecimal totalCold, BigDecimal totalWater, BigDecimal totalGas, BigDecimal yearEle, BigDecimal yearCold, BigDecimal yearWater, BigDecimal yearGas) {
this.totalEle = totalEle.setScale(2, BigDecimal.ROUND_HALF_UP);
this.totalCold = totalCold.setScale(2, BigDecimal.ROUND_HALF_UP);
this.totalWater = totalWater.setScale(2, BigDecimal.ROUND_HALF_UP);
this.totalGas = totalGas.setScale(2, BigDecimal.ROUND_HALF_UP);
this.yearEle = yearEle.setScale(2, BigDecimal.ROUND_HALF_UP);
this.yearCold = yearCold.setScale(2, BigDecimal.ROUND_HALF_UP);
this.yearWater = yearWater.setScale(2, BigDecimal.ROUND_HALF_UP);
this.yearGas = yearGas.setScale(2, BigDecimal.ROUND_HALF_UP);
this.totalEle = totalEle == null ? new BigDecimal("0") : totalEle.setScale(2, BigDecimal.ROUND_HALF_UP);
this.totalCold = totalCold == null ? new BigDecimal("0") : totalCold.setScale(2, BigDecimal.ROUND_HALF_UP);
this.totalWater = totalWater == null ? new BigDecimal("0") : totalWater.setScale(2, BigDecimal.ROUND_HALF_UP);
this.totalGas = totalGas == null ? new BigDecimal("0") : totalGas.setScale(2, BigDecimal.ROUND_HALF_UP);
this.yearEle = yearEle == null ? new BigDecimal("0") : yearEle.setScale(2, BigDecimal.ROUND_HALF_UP);
this.yearCold = yearCold == null ? new BigDecimal("0") : yearCold.setScale(2, BigDecimal.ROUND_HALF_UP);
this.yearWater = yearWater == null ? new BigDecimal("0") : yearWater.setScale(2, BigDecimal.ROUND_HALF_UP);
this.yearGas = yearGas == null ? new BigDecimal("0") : yearGas.setScale(2, BigDecimal.ROUND_HALF_UP);
}
@Override

8
mh-common/src/main/java/com/mh/common/core/domain/vo/CollectionParamsManageVO.java

@ -44,6 +44,14 @@ public class CollectionParamsManageVO {
*/
private int cpmOrderNum;
public BigDecimal getCurValue() {
return curValue;
}
public void setCurValue(BigDecimal curValue) {
this.curValue = curValue.setScale(1, BigDecimal.ROUND_HALF_UP);
}
@Override
public String toString() {
return new ToStringBuilder(this)

4
mh-common/src/main/java/com/mh/common/core/page/TableSupport.java

@ -41,6 +41,10 @@ public class TableSupport
public static PageDomain getPageDomain()
{
PageDomain pageDomain = new PageDomain();
if ((null == Convert.toInt(ServletUtils.getParameter(PAGE_NUM)))
|| (null == Convert.toInt(ServletUtils.getParameter(PAGE_SIZE)))) {
return pageDomain;
}
pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1));
pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10));
pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));

4
mh-common/src/main/java/com/mh/common/model/request/AdvantechDatas.java

@ -10,7 +10,7 @@ import lombok.Data;
* @date 2025-01-22 14:47:25
*/
@Data
public class AdvantechDatas {
public class AdvantechDatas<T extends Number> {
/**
* 对应研华的标签值
@ -20,6 +20,6 @@ public class AdvantechDatas {
/**
* 上报值
*/
private Integer value;
private T value;
}

2
mh-common/src/main/java/com/mh/common/utils/PageUtils.java

@ -19,7 +19,7 @@ public class PageUtils extends PageHelper
{
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
if (pageNum == 0) {
if (null == pageNum || pageNum == 0) {
return;
}
Integer pageSize = pageDomain.getPageSize();

23
mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java

@ -21,10 +21,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.*;
@ -95,16 +92,22 @@ public class DataProcessServiceImpl implements DataProcessService {
}
String timeString = data.getTs();
OffsetDateTime offsetDateTime;
OffsetDateTime utcDateTime;
try {
offsetDateTime = OffsetDateTime.parse(timeString, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"));
utcDateTime = OffsetDateTime.parse(timeString, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"));
} catch (DateTimeParseException e) {
log.error("时间格式解析异常", e);
return;
}
LocalDateTime localDateTime = offsetDateTime.toLocalDateTime();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedTime = localDateTime.format(formatter);
// 2. 转换为中国时区(UTC+8)
OffsetDateTime chinaDateTime = utcDateTime.withOffsetSameInstant(
ZoneOffset.ofHours(8)
);
// 3. 格式化为目标字符串
String formattedTime = chinaDateTime.format(
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
);
// 假设 data 是一个包含 JSON 数据的对象
List<AdvantechDatas> list = JSON.parseObject(data.getD().toString(), new TypeReference<List<AdvantechDatas>>() {});
@ -126,7 +129,7 @@ public class DataProcessServiceImpl implements DataProcessService {
log.error("数值格式解析异常", e);
continue;
}
Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
Date date = DateUtils.stringToDate(formattedTime, "yyyy-MM-dd HH:mm:ss");
collectionParamsManage.setCurTime(date);
entities.add(collectionParamsManage);
break;

26
mh-quartz/src/main/java/com/mh/quartz/task/DealDataTask.java

@ -70,11 +70,19 @@ public class DealDataTask {
for (Map.Entry<String, List<CollectionParamsManage>> entry : groupMap.entrySet()) {
String mtType = entry.getKey();
List<CollectionParamsManage> dataList = entry.getValue();
// 进行数据处理入库操作等
try {
dealAndInsert(dataList, mtType);
} catch (Exception e) {
throw new RuntimeException(e);
// 再根据mtNum分组
Map<String, List<CollectionParamsManage>> groupMap1 = dataList
.stream()
.collect(Collectors.groupingBy(CollectionParamsManage::getMtNum));
// 开始进行数据遍历
for (Map.Entry<String, List<CollectionParamsManage>> entry1 : groupMap1.entrySet()) {
List<CollectionParamsManage> dataList1 = entry1.getValue();
// 进行数据处理入库操作等
try {
dealAndInsert(dataList1, mtType);
} catch (Exception e) {
log.error("处理主机参数异常:{}", e);
}
}
}
}
@ -101,7 +109,8 @@ public class DealDataTask {
int deviceGrade = entity.getGrade();
//从数据库取值,当前的年表,当前年表没有,查询上一次年表
DeviceReport lastData = dataProcessService.queryLastValue(entity.getMtNum(), "min");
int ratio = dataProcessService.queryRatio(entity.getMtNum()) == null ? 1 : dataProcessService.queryRatio(entity.getMtNum());
// int ratio = dataProcessService.queryRatio(entity.getMtNum()) == null ? 1 : dataProcessService.queryRatio(entity.getMtNum());
int ratio = entity.getMtRatio();
if (ObjectUtils.isEmpty(lastData) || ObjectUtils.isEmpty(lastData.getLastValue())) {
//从device_manage取出初始值
String initValue = dataProcessService.queryInitValue(entity.getMtNum());
@ -270,11 +279,12 @@ public class DealDataTask {
return;
}
dataProcessService.batchInsertOrUpdate(hourList, "hour");
//TODO 修改分钟表的状态,grade=1
dataProcessService.batchUpdateGrade(idMap, "min");
} catch (Exception e) {
log.error("小时数据表处理异常:" + e);
}
//TODO 修改分钟表的状态,grade=1
dataProcessService.batchUpdateGrade(idMap, "min");
}
/**

12
mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java

@ -131,19 +131,19 @@ public interface DataProcessMapper {
" 0)")
void insertTable(@Param("data") DeviceReport data, @Param("tableName") String tableName);
@Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue},calc_value = (#{data.curValue} - last_value)*ratio,used_value = #{data.curValue} - last_value " +
@Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue}::numeric,calc_value = (#{data.curValue}::numeric - last_value)*ratio,used_value = #{data.curValue}::numeric - last_value " +
"where device_num = #{data.deviceNum} and EXTRACT(MONTH FROM AGE(cur_time, #{data.curTime})) = 0 ")
void updateTableMM(@Param("data") DeviceReport data, @Param("tableName") String tableName);
@Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue},calc_value = (#{data.curValue} - last_value)*ratio,used_value = #{data.curValue} - last_value " +
@Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue}::numeric,calc_value = (#{data.curValue}::numeric - last_value)*ratio,used_value = #{data.curValue}::numeric - last_value " +
"where device_num = #{data.deviceNum} and EXTRACT(YEAR FROM AGE(cur_time, #{data.curTime})) = 0 ")
void updateTableYY(@Param("data") DeviceReport data, @Param("tableName") String tableName);
@Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue},calc_value = (#{data.curValue} - last_value)*ratio,used_value = #{data.curValue} - last_value " +
@Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue}::numeric,calc_value = (#{data.curValue}::numeric - last_value)*ratio,used_value = #{data.curValue}::numeric - last_value " +
"where device_num = #{data.deviceNum} and EXTRACT(DAY FROM AGE(cur_time, #{data.curTime})) = 0 ")
void updateTableDD(@Param("data") DeviceReport data, @Param("tableName") String tableName);
@Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue},calc_value = (#{data.curValue} - last_value)*ratio,used_value = #{data.curValue} - last_value " +
@Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue}::numeric,calc_value = (#{data.curValue}::numeric - last_value)*ratio,used_value = #{data.curValue}::numeric - last_value " +
"where device_num = #{data.deviceNum} and EXTRACT(HOUR FROM AGE(cur_time, #{data.curTime})) = 0 ")
void updateTableHH(@Param("data") DeviceReport data, @Param("tableName") String tableName);
@ -169,8 +169,8 @@ public interface DataProcessMapper {
* @param deviceNum
* @return
*/
@Select("select mt_init_value from collection_params_manage where mt_num = #{deviceNum}")
String queryInitValue(String deviceNum);
@Select("select mt_init_value from collection_params_manage where mt_num = #{deviceNum} and is_use = '0'")
String queryInitValue(@Param("deviceNum") String deviceNum);
@Select("select * from ${tableName} where register_id = #{registerId} and cur_time >= CURRENT_TIMESTAMP - INTERVAL '24 hours' ")
List<ChillersEntity> selectLineDataByCodeAndRegisterAddr(@Param("tableName") String tableName,

7
mh-system/src/main/java/com/mh/system/mapper/energy/EnergyAnalyzeMapper.java

@ -108,7 +108,6 @@ public interface EnergyAnalyzeMapper {
" on " +
" cpm.mt_num = dm.device_num " +
" and cpm.mt_code = dm.device_code " +
" and cpm.register_addr = dm.register_addr " +
"join device_ledger dl " +
" on " +
" cpm.device_ledger_id = dl.id " +
@ -153,7 +152,7 @@ public interface EnergyAnalyzeMapper {
"WHERE " +
" dh.cur_time &gt;= #{startTime}::timestamp " +
" AND dh.cur_time &lt;= #{endTime}::timestamp " +
" AND dh.device_num IN " +
" AND dm.id IN " +
" <foreach collection='params' item='item' open='(' separator=',' close=')'>" +
" #{item} " +
" </foreach> " +
@ -203,7 +202,7 @@ public interface EnergyAnalyzeMapper {
"WHERE " +
" dh.cur_time &gt;= #{startTime}::timestamp " +
" AND dh.cur_time &lt;= #{endTime}::timestamp " +
" AND dh.device_num IN " +
" AND dm.id IN " +
" <foreach collection='params' item='item' open='(' separator=',' close=')'>" +
" #{item} " +
" </foreach> " +
@ -244,7 +243,7 @@ public interface EnergyAnalyzeMapper {
"WHERE " +
" dh.cur_time &gt;= #{startTime}::timestamp " +
" AND dh.cur_time &lt;= #{endTime}::timestamp " +
" AND dh.device_num IN " +
" AND dm.id IN " +
" <foreach collection='params' item='item' open='(' separator=',' close=')'>" +
" #{item} " +
" </foreach> " +

6
mh-system/src/main/java/com/mh/system/mapper/energy/EnergyMapper.java

@ -30,7 +30,7 @@ public interface EnergyMapper {
" sum(dm.calc_value) as curValue, " +
" CASE dm.device_type " +
" WHEN '5' THEN 'meter' " +
" WHEN '6' THEN 'cloud' " +
" WHEN '2' THEN 'cloud' " +
" ELSE 'Unknown' " +
" END as deviceType," +
" TO_CHAR(dm.cur_time, " +
@ -81,7 +81,7 @@ public interface EnergyMapper {
" sum(dm.calc_value) as curValue, " +
" CASE dm.device_type " +
" WHEN '5' THEN 'meter' " +
" WHEN '6' THEN 'cloud' " +
" WHEN '2' THEN 'cloud' " +
" ELSE 'Unknown' " +
" END as deviceType," +
" TO_CHAR(dm.cur_time, " +
@ -149,7 +149,7 @@ public interface EnergyMapper {
" sum(dm.calc_value) as curValue, " +
" CASE dm.device_type " +
" WHEN '5' THEN 'meter' " +
" WHEN '6' THEN 'cloud' " +
" WHEN '2' THEN 'cloud' " +
" ELSE 'Unknown' " +
" END as deviceType," +
" TO_CHAR(dm.cur_time, " +

6
mh-system/src/main/java/com/mh/system/mapper/energy/EnergyQueryMapper.java

@ -30,7 +30,7 @@ public interface EnergyQueryMapper {
" sum(dm.calc_value) as curValue, " +
" CASE dm.device_type " +
" WHEN '5' THEN 'meter' " +
" WHEN '6' THEN 'cloud' " +
" WHEN '2' THEN 'cloud' " +
" ELSE 'Unknown' " +
" END as deviceType," +
" TO_CHAR(dm.cur_time, " +
@ -81,7 +81,7 @@ public interface EnergyQueryMapper {
" sum(dm.calc_value) as curValue, " +
" CASE dm.device_type " +
" WHEN '5' THEN 'meter' " +
" WHEN '6' THEN 'cloud' " +
" WHEN '2' THEN 'cloud' " +
" ELSE 'Unknown' " +
" END as deviceType," +
" TO_CHAR(dm.cur_time, " +
@ -151,7 +151,7 @@ public interface EnergyQueryMapper {
" sum(dm.calc_value) as curValue, " +
" CASE dm.device_type " +
" WHEN '5' THEN 'meter' " +
" WHEN '6' THEN 'cloud' " +
" WHEN '2' THEN 'cloud' " +
" ELSE 'Unknown' " +
" END as deviceType," +
" TO_CHAR(dm.cur_time, " +

4
mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java

@ -58,6 +58,10 @@ public class CollectionParamsManageServiceImpl implements ICollectionParamsManag
return List.of();
}
QueryWrapper<CollectionParamsManage> queryWrapper = new QueryWrapper<>();
// 是否启用
if (communicationParams.getIsUse() != null) {
queryWrapper.eq("is_use", communicationParams.getIsUse());
}
// 仪表类型
if (communicationParams.getMtType() != null) {
queryWrapper.eq("mt_type", communicationParams.getMtType());

4
mh-system/src/main/java/com/mh/system/service/device/impl/CoolingSystemMonitorServiceImpl.java

@ -68,7 +68,7 @@ public class CoolingSystemMonitorServiceImpl implements ICoolingSystemMonitorSer
// 如果是当天值,判断grade,40:累计值,140:瞬时值
if (value.getGrade() == 40) {
// 累计值
sysPerformanceDTO.setYearPower(value.getCurValue());
sysPerformanceDTO.setYearPower(value.getCurValue().subtract(value.getMtInitValue()));
} else if (value.getGrade() == 140) {
// 瞬时值
sysPerformanceDTO.setRealPower(value.getCurValue());
@ -91,7 +91,7 @@ public class CoolingSystemMonitorServiceImpl implements ICoolingSystemMonitorSer
// 如果是当天值,判断grade,40:累计值,140:瞬时值
if (value.getGrade() == 40) {
// 累计值
sysPerformanceDTO.setYearCold(value.getCurValue());
sysPerformanceDTO.setYearCold(value.getCurValue().subtract(value.getMtInitValue()));
} else if (value.getGrade() == 140) {
// 瞬时值
sysPerformanceDTO.setRealCold(value.getCurValue());

74
mh-system/src/main/java/com/mh/system/service/energy/impl/EnergyServiceImpl.java

@ -7,6 +7,7 @@ import com.mh.common.core.domain.vo.EnergyConsumptionVO;
import com.mh.common.utils.DateUtils;
import com.mh.common.utils.EnergyThreadPoolService;
import com.mh.common.utils.StringUtils;
import com.mh.common.utils.bean.BeanUtils;
import com.mh.system.mapper.energy.EnergyMapper;
import com.mh.system.service.energy.IEnergyService;
import jakarta.annotation.Resource;
@ -351,7 +352,7 @@ public class EnergyServiceImpl implements IEnergyService {
String deviceType = vo.getParamType();
if ("meter".equals(deviceType)) {
deviceType = "5";
} else if ("cold".equals(deviceType)){
} else if ("cloud".equals(deviceType)) {
deviceType = "6";
}
if ("cop".equalsIgnoreCase(vo.getParamType())) {
@ -391,7 +392,7 @@ public class EnergyServiceImpl implements IEnergyService {
consumptionAnalyzeEntities = energyMapper.queryOneTableYoy(vo.getStartTime(), vo.getEndTime(), lastTableName, curTableName,
startTime, endTime, getTimeLen(vo.getTimeType()), deviceType, vo.getTimeType(), vo.getSystemType());
}
return getConsumptionDTOHttpResult(consumptionAnalyzeEntities, "yoy");
return getConsumptionDTOHttpResult(consumptionAnalyzeEntities, "yoy", getTimeLen(vo.getTimeType()));
}
private AjaxResult calcCopYoyData(EnergyConsumptionVO vo) {
@ -410,46 +411,48 @@ public class EnergyServiceImpl implements IEnergyService {
return AjaxResult.error();
}
// 计算COP值
return getEnergyConsumptionDTOHttpResult(meterEnergyData, cloudEnergyData);
return getEnergyConsumptionDTOHttpResult(meterEnergyData, cloudEnergyData, "yoy");
}
private static AjaxResult getEnergyConsumptionDTOHttpResult(EnergyConsumptionDTO meterEnergyData, EnergyConsumptionDTO cloudEnergyData) {
private static AjaxResult getEnergyConsumptionDTOHttpResult(EnergyConsumptionDTO meterEnergyData, EnergyConsumptionDTO cloudEnergyData, String type) {
// 计算COP值
EnergyConsumptionDTO energyConsumptionDTO = new EnergyConsumptionDTO();
//
// 获取冷量数据
List<Map<String, Object>> cloudListData = cloudEnergyData.getData();
String[] cloudCurData = new String[cloudListData.size()];
String[] cloudLastData = new String[cloudListData.size()];
String[] curStr = (String[]) cloudListData.getFirst().get("curValue");
String[] cloudCurData = new String[curStr.length];
String[] cloudLastData = new String[curStr.length];
for (Map<String, Object> cloudListDatum : cloudListData) {
if (cloudListDatum.get("curValue") != null) {
cloudCurData = (String[]) cloudListDatum.get("curValue");
if (cloudCurData == null) {
cloudCurData = new String[cloudListData.size()];
cloudCurData = new String[curStr.length];
}
}
if (cloudListDatum.get("lastValue") != null) {
cloudLastData = (String[]) cloudListDatum.get("curValue");
if (cloudLastData == null) {
cloudLastData = new String[cloudListData.size()];
cloudLastData = new String[curStr.length];
}
}
}
// 获取电量数据
List<Map<String, Object>> meterListData = meterEnergyData.getData();
String[] meterCurData = new String[meterListData.size()];
String[] meterLastData = new String[meterListData.size()];
String[] meterCurStr = (String[]) meterListData.getFirst().get("curValue");
String[] meterCurData = new String[meterCurStr.length];
String[] meterLastData = new String[meterCurStr.length];
for (Map<String, Object> meterListDatum : meterListData) {
if (meterListDatum.get("curValue") != null) {
meterCurData = (String[]) meterListDatum.get("curValue");
if (meterCurData == null) {
meterCurData = new String[meterListData.size()];
meterCurData = new String[meterCurStr.length];
}
}
if (meterListDatum.get("lastValue") != null) {
meterLastData = (String[]) meterListDatum.get("curValue");
if (meterLastData == null) {
meterLastData = new String[meterListData.size()];
meterLastData = new String[meterCurStr.length];
}
}
}
@ -523,13 +526,24 @@ public class EnergyServiceImpl implements IEnergyService {
copLastMap[i] = lastCop;
yoyMap[i] = yoy;
}
energyConsumptionDTO.setData(Arrays.asList(
new HashMap<String, Object>() {{
put("curValue", copMap);
put("lastValue", copLastMap);
put("yoy", yoyMap);
}}
));
// energyConsumptionDTO.setData(Arrays.asList(
// new HashMap<String, Object>() {{
// put("curValue", copMap);
// put("lastValue", copLastMap);
// put("yoy", yoyMap);
// }}
// ));
List<Map<String, Object>> listData = new ArrayList<>();
Map<String, Object> cur = new HashMap<>();
cur.put("curValue",copMap);
listData.add(cur);
Map<String, Object> last = new HashMap<>();
last.put("lastValue",copLastMap);
listData.add(last);
Map<String, Object> yoy = new HashMap<>();
yoy.put(type,yoyMap);
listData.add(yoy);
energyConsumptionDTO.setData(listData);
}
return AjaxResult.success(energyConsumptionDTO);
}
@ -543,7 +557,7 @@ public class EnergyServiceImpl implements IEnergyService {
String deviceType = vo.getParamType();
if ("meter".equals(deviceType)) {
deviceType = "5";
} else if ("cold".equals(deviceType)){
} else if ("cloud".equals(deviceType)){
deviceType = "6";
}
// 判断查询时间类型是month,year
@ -575,26 +589,26 @@ public class EnergyServiceImpl implements IEnergyService {
consumptionAnalyzeEntities = energyMapper.queryManyTableMom(vo.getStartTime(), vo.getEndTime(), startTime, endTime, tableName1, tableName2, getTimeLen(vo.getTimeType()), deviceType, vo.getTimeType(), vo.getSystemType());
}
}
return getConsumptionDTOHttpResult(consumptionAnalyzeEntities, "mom");
return getConsumptionDTOHttpResult(consumptionAnalyzeEntities, "mom", getTimeLen(vo.getTimeType()));
}
private AjaxResult calcCopMomData(EnergyConsumptionVO vo) {
// 获取冷量读数
vo.setParamType("cloud");
vo.setParamType("6");
AjaxResult cloudData = mom(vo);
EnergyConsumptionDTO cloudEnergyData = (EnergyConsumptionDTO) cloudData.get("data");
if (cloudEnergyData == null) {
return AjaxResult.error();
}
// 获取电量读数
vo.setParamType("meter");
vo.setParamType("5");
AjaxResult meterData = mom(vo);
EnergyConsumptionDTO meterEnergyData = (EnergyConsumptionDTO) meterData.get("data");
if (meterEnergyData == null) {
return AjaxResult.error();
}
return getEnergyConsumptionDTOHttpResult(meterEnergyData, cloudEnergyData);
return getEnergyConsumptionDTOHttpResult(meterEnergyData, cloudEnergyData, "mom");
}
@Override
@ -605,13 +619,17 @@ public class EnergyServiceImpl implements IEnergyService {
List<Future<Map<String, Object>>> futures = new ArrayList<>();
futures.add(executor.submit(() -> {
Map<String, Object> map = new HashMap<>();
map.put("yoy", yoy(vo));
EnergyConsumptionVO vo1 = new EnergyConsumptionVO();
BeanUtils.copyProperties(vo, vo1);
map.put("yoy", yoy(vo1));
latch.countDown();
return map;
}));
futures.add(executor.submit(() -> {
Map<String, Object> map = new HashMap<>();
map.put("mom", mom(vo));
EnergyConsumptionVO vo1 = new EnergyConsumptionVO();
BeanUtils.copyProperties(vo, vo1);
map.put("mom", mom(vo1));
latch.countDown();
return map;
}));
@ -681,7 +699,7 @@ public class EnergyServiceImpl implements IEnergyService {
return AjaxResult.success(null);
}
private static AjaxResult getConsumptionDTOHttpResult(List<ConsumptionAnalyze> consumptionAnalyzeEntities, String compareType) {
private static AjaxResult getConsumptionDTOHttpResult(List<ConsumptionAnalyze> consumptionAnalyzeEntities, String compareType, String len) {
EnergyConsumptionDTO energyConsumptionDTO = new EnergyConsumptionDTO();
if (null == consumptionAnalyzeEntities || consumptionAnalyzeEntities.size() == 0) {
return AjaxResult.success(energyConsumptionDTO);
@ -701,7 +719,7 @@ public class EnergyServiceImpl implements IEnergyService {
if ("mom".equalsIgnoreCase(compareType)) {
yoyValue[i] = entity.getMom();
}
timeStrArr[i] = entity.getTimeStr();
timeStrArr[i] = entity.getTimeStr().substring(0, Integer.parseInt(len));
}
energyConsumptionDTO.setTitles(titleArr);
energyConsumptionDTO.setTimes(timeStrArr);

131
mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java

@ -55,7 +55,7 @@ public class ProOverviewServiceImpl implements IProOverviewService {
case 0:
// 查询冷源系统的EER
// 查询实时功率
List<CollectionParamsManage> realEleParams = queryCollectionParams("16", "0", 140);
List<CollectionParamsManage> realEleParams = queryCollectionParams("16", "0", 140, "15");
BigDecimal realEle = null;
if (realEleParams != null && !realEleParams.isEmpty()) {
realEle = realEleParams.stream()
@ -64,7 +64,7 @@ public class ProOverviewServiceImpl implements IProOverviewService {
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
// 查询冷源系统的产冷量
List<CollectionParamsManage> realColdParams = queryCollectionParams("17", "0", 140);
List<CollectionParamsManage> realColdParams = queryCollectionParams("17", "0", 140, "15");
BigDecimal realCold = null;
if (realColdParams != null && !realColdParams.isEmpty()) {
// realColdParams stream流得出cur_value总和
@ -91,7 +91,7 @@ public class ProOverviewServiceImpl implements IProOverviewService {
case 1:
// 热泵生活热水系统
// 查询供回水温度
List<CollectionParamsManage> realInAndOutTempParams = queryCollectionParams("12", "1", 140);
List<CollectionParamsManage> realInAndOutTempParams = queryCollectionParams("12", "1", 140, null);
BigDecimal avgInTemp = new BigDecimal("0.00");
BigDecimal avgOutTemp = new BigDecimal("0.00");
if (null != realInAndOutTempParams && !realInAndOutTempParams.isEmpty()) {
@ -124,7 +124,7 @@ public class ProOverviewServiceImpl implements IProOverviewService {
case 2:
// 空调风柜系统
// 查询风柜运行状态
List<CollectionParamsManage> windCabinetRunParams = queryCollectionParams("1", "2", 140);
List<CollectionParamsManage> windCabinetRunParams = queryCollectionParams("1", "2", 140, null);
if (windCabinetRunParams != null && !windCabinetRunParams.isEmpty()) {
// 查询风柜正在运行设备,判断cur_value=1的
long runCount = windCabinetRunParams.stream().filter(param -> param != null
@ -144,7 +144,7 @@ public class ProOverviewServiceImpl implements IProOverviewService {
break;
case 4:
// 室内温度监测系统
List<CollectionParamsManage> tempParams = queryCollectionParams("12", "4", 140);
List<CollectionParamsManage> tempParams = queryCollectionParams("12", "4", 140, null);
// stream流判断时间cur_time是否是今天,如果是今天则判断在线,不是则判断离线
if (tempParams != null && !tempParams.isEmpty()) {
long onlineCount = tempParams.stream()
@ -189,7 +189,7 @@ public class ProOverviewServiceImpl implements IProOverviewService {
for (SysDictData sysDictData : sysTypeData) {
String sysType = sysDictData.getDictValue();
// 查询采集参数
List<CollectionParamsManage> collectionParamsManages = queryCollectionParams(paramType, sysType, 40);
List<CollectionParamsManage> collectionParamsManages = queryCollectionParams(paramType, sysType, 40, null);
// 合并数据
if (collectionParamsManages != null && !collectionParamsManages.isEmpty()) {
List<ColumnFilter> columnFilters = overviewMapper.energyAnalysis(collectionParamsManages);
@ -203,12 +203,16 @@ public class ProOverviewServiceImpl implements IProOverviewService {
return result.isEmpty() ? List.of() : result;
}
private List<CollectionParamsManage> queryCollectionParams(String paramType, String sysType, int grade) {
private List<CollectionParamsManage> queryCollectionParams(String paramType, String sysType, int grade, String terminalDeviceType) {
QueryWrapper<CollectionParamsManage> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("param_type", paramType)
.eq("system_type", sysType)
.eq("grade", grade);
if (terminalDeviceType != null && !terminalDeviceType.isEmpty()) {
queryWrapper.eq("terminal_device_type", terminalDeviceType);
}
// 先查询总表
queryWrapper.eq("mt_is_sum", 0);
Long count = collectionParamsManageMapper.selectCount(queryWrapper);
@ -220,8 +224,10 @@ public class ProOverviewServiceImpl implements IProOverviewService {
queryWrapper = new QueryWrapper<>();
queryWrapper.eq("param_type", paramType)
.eq("system_type", sysType)
.eq("grade", grade)
.eq("mt_is_sum", 1);
.eq("grade", grade);
if (terminalDeviceType != null && !terminalDeviceType.isEmpty()) {
queryWrapper.eq("terminal_device_type", terminalDeviceType);
}
return collectionParamsManageMapper.selectList(queryWrapper);
}
@ -317,16 +323,10 @@ public class ProOverviewServiceImpl implements IProOverviewService {
queryWrapper.eq("grade", 40);
queryWrapper.eq("mt_is_sum", 0);
Long count = collectionParamsManageMapper.selectCount(queryWrapper);
HashMap<String, BigDecimal> totalData = new HashMap<>();
if (count > 0) {
// 查询总表
getTotalData(paramType, queryWrapper, totalEle,
totalCold,
totalWater,
totalGas,
yearEle,
yearCold,
yearWater,
yearGas);
totalData = getTotalData(paramType, queryWrapper);
} else {
// 查询分表综合
queryWrapper = new QueryWrapper<>();
@ -335,15 +335,29 @@ public class ProOverviewServiceImpl implements IProOverviewService {
queryWrapper.eq("grade", 40);
queryWrapper.eq("mt_is_sum", 1);
// 查询分表总和
getTotalData(paramType, queryWrapper,
totalEle,
totalCold,
totalWater,
totalGas,
yearEle,
yearCold,
yearWater,
yearGas);
totalData = getTotalData(paramType, queryWrapper);
}
BigDecimal totalValue = totalData.get("totalValue")==null ? BigDecimal.ZERO : totalData.get("totalValue");
BigDecimal yearValue = totalData.get("yearValue")==null ? BigDecimal.ZERO : totalData.get("yearValue");
switch (Integer.parseInt(paramType)) {
case 16:
totalEle = totalEle.add(totalValue);
yearEle = yearEle.add(yearValue);
break;
case 17:
totalCold = totalCold.add(totalValue);
yearCold = yearCold.add(yearValue);
break;
case 18:
totalWater = totalWater.add(totalValue);
yearWater = yearWater.add(yearValue);
break;
case 19:
totalGas = totalGas.add(totalValue);
yearGas = yearGas.add(yearValue);
break;
default:
break;
}
}
@ -354,17 +368,10 @@ public class ProOverviewServiceImpl implements IProOverviewService {
return proProfileDTOS;
}
private void getTotalData(String paramType,
QueryWrapper<CollectionParamsManage> queryWrapper,
BigDecimal totalEle,
BigDecimal totalCold,
BigDecimal totalWater,
BigDecimal totalGas,
BigDecimal yearEle,
BigDecimal yearCold,
BigDecimal yearWater,
BigDecimal yearGas) {
private HashMap<String, BigDecimal> getTotalData(String paramType,
QueryWrapper<CollectionParamsManage> queryWrapper) {
List<CollectionParamsManage> collectionParamsManages = collectionParamsManageMapper.selectList(queryWrapper);
HashMap<String, BigDecimal> result = new HashMap<>();
// 遍历计算得出总用电量
collectionParamsManages.forEach(collectionParamsManage -> {
BigDecimal curValue = collectionParamsManage.getCurValue() == null ? BigDecimal.ZERO : collectionParamsManage.getCurValue();
@ -372,42 +379,28 @@ public class ProOverviewServiceImpl implements IProOverviewService {
BigDecimal mtRatio = collectionParamsManage.getMtRatio() == null ? BigDecimal.ZERO : BigDecimal.valueOf(collectionParamsManage.getMtRatio());
BigDecimal multiply = (curValue.subtract(mtInitValue)).multiply(mtRatio);
// TODO
switch (Integer.parseInt(paramType)) {
case 16:
totalEle.add(multiply);
break;
case 17:
totalCold.add(multiply);
break;
case 18:
totalWater.add(multiply);
break;
case 19:
totalGas.add(multiply);
break;
default:
break;
}
result.put("totalValue", multiply);
});
// 计算得出今年的各个参数用量
BigDecimal yearValue = overviewMapper.queryByDeviceNum(collectionParamsManages);
switch (Integer.parseInt(paramType)) {
case 16:
yearEle = yearValue;
break;
case 17:
yearCold = yearValue;
break;
case 18:
yearWater = yearValue;
break;
case 19:
yearGas = yearValue;
break;
default:
break;
}
result.put("yearValue", yearValue == null ? BigDecimal.ZERO : yearValue);
// switch (Integer.parseInt(paramType)) {
// case 16:
// yearEle = yearValue;
// break;
// case 17:
// yearCold = yearValue;
// break;
// case 18:
// yearWater = yearValue;
// break;
// case 19:
// yearGas = yearValue;
// break;
// default:
// break;
// }
return result;
}

40
mh-system/src/main/resources/mapper/system/EnergyMapper.xml

@ -701,9 +701,9 @@
where
dm.cur_time >= #{startTime}::timestamp
and dm.cur_time &lt;= #{endTime}::timestamp
and dm.device_type in(
and dm.device_num in(
select
cpm.mt_type
cpm.mt_num
from
collection_params_manage cpm
join
@ -713,8 +713,10 @@
where
dl.device_type = '5'
and cpm.terminal_device_type = #{deviceType}
and cpm.is_use = '0'
and cpm.grade = 40
group by
cpm.mt_type
cpm.mt_num
)
group by
TO_CHAR(dm.cur_time,
@ -748,9 +750,9 @@
where
dm.cur_time >= #{startTime}::timestamp
and dm.cur_time &lt;= #{endTime}::timestamp
and dm.device_type in(
and dm.device_num in(
select
cpm.mt_type
cpm.mt_num
from
collection_params_manage cpm
join
@ -763,8 +765,10 @@
<if test="systemType != null and systemType != ''">
and cpm.system_type = #{systemType}
</if>
and cpm.is_use = '0'
and cpm.grade = 40
group by
cpm.mt_type
cpm.mt_num
)
group by
TO_CHAR(dm.cur_time,
@ -796,9 +800,9 @@
where
dm.cur_time >= #{startTime}::timestamp
and dm.cur_time &lt;= #{endTime}::timestamp
and dm.device_type in(
and dm.device_num in(
select
cpm.mt_type
cpm.mt_num
from
collection_params_manage cpm
join
@ -811,8 +815,10 @@
<if test="systemType != null and systemType != ''">
and cpm.system_type = #{systemType}
</if>
and cpm.is_use = '0'
and cpm.grade = 40
group by
cpm.mt_type
cpm.mt_num
)
group by
TO_CHAR(dm.cur_time,
@ -997,9 +1003,9 @@
where
dm.cur_time >= #{startTime}::timestamp
and dm.cur_time &lt;= #{endTime}::timestamp
and dm.device_type in(
and dm.device_num in(
select
cpm.mt_type
cpm.mt_num
from
collection_params_manage cpm
join
@ -1012,8 +1018,10 @@
<if test="systemType != null and systemType != ''">
and cpm.system_type = #{systemType}
</if>
and cpm.is_use = '0'
and cpm.grade = 40
group by
cpm.mt_type
cpm.mt_num
)
group by
dm.cur_time
@ -1027,9 +1035,9 @@
where
dm.cur_time >= #{startTime}::timestamp
and dm.cur_time &lt;= #{endTime}::timestamp
and dm.device_type in(
and dm.device_num in(
select
cpm.mt_type
cpm.mt_num
from
collection_params_manage cpm
join
@ -1042,8 +1050,10 @@
<if test="systemType != null and systemType != ''">
and cpm.system_type = #{systemType}
</if>
and cpm.is_use = '0'
and cpm.grade = 40
group by
cpm.mt_type
cpm.mt_num
)
group by
dm.cur_time

Loading…
Cancel
Save