电表逻辑修改

This commit is contained in:
2025-06-30 18:14:24 +08:00
parent 337599d1c6
commit fbab6ea631
7 changed files with 45 additions and 25 deletions

View File

@ -4,7 +4,7 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
* 表详细数据 * 表详细数据
*/ */
public class AmmeterDataDetailInfo public class AmmeterDataDetailInfo
{ {

View File

@ -10,6 +10,9 @@ import java.util.List;
*/ */
public class AmmeterDataVo { public class AmmeterDataVo {
/** 电表名称 */
private String deviceName;
/** 通信状态 */ /** 通信状态 */
private String emsCommunicationStatus; private String emsCommunicationStatus;
@ -19,6 +22,14 @@ public class AmmeterDataVo {
private List<AmmeterDataDetailInfo> ammeterDataDetailInfos; private List<AmmeterDataDetailInfo> ammeterDataDetailInfos;
public String getDeviceName() {
return deviceName;
}
public void setDeviceName(String deviceName) {
this.deviceName = deviceName;
}
public String getEmsCommunicationStatus() { public String getEmsCommunicationStatus() {
return emsCommunicationStatus; return emsCommunicationStatus;
} }

View File

@ -3,6 +3,7 @@ package com.xzzn.ems.mapper;
import java.util.List; import java.util.List;
import com.xzzn.ems.domain.EmsAmmeterData; import com.xzzn.ems.domain.EmsAmmeterData;
import com.xzzn.ems.domain.vo.AmmeterDataDetailInfo; import com.xzzn.ems.domain.vo.AmmeterDataDetailInfo;
import org.apache.ibatis.annotations.Param;
/** /**
* 总数据Mapper接口 * 总数据Mapper接口
@ -65,5 +66,5 @@ public interface EmsAmmeterDataMapper
* @param siteId * @param siteId
* @return * @return
*/ */
public List<AmmeterDataDetailInfo> getAmmeterDetailInfo(String siteId); public List<AmmeterDataDetailInfo> getAmmeterDetailInfo(@Param("siteId")String siteId,@Param("deviceId") String deviceId);
} }

View File

@ -74,11 +74,10 @@ public interface EmsDevicesSettingMapper
* @return * @return
*/ */
public List<Map<String, Object>> getAllClusterInfoByStackId(String stackDeviceId); public List<Map<String, Object>> getAllClusterInfoByStackId(String stackDeviceId);
/** /**
* 获取设备通信状态 * 获取设备下的所有电表
* @param deviceId * @param siteId
* @return * @return
*/ */
public Map<String, Object> getDeviceStatus(String deviceId); public List<EmsDevicesSetting> getAllBatteryDeviceBySiteId(String siteId);
} }

View File

@ -3,6 +3,7 @@ package com.xzzn.ems.service.impl;
import com.xzzn.common.utils.StringUtils; import com.xzzn.common.utils.StringUtils;
import com.xzzn.ems.domain.EmsBatteryData; import com.xzzn.ems.domain.EmsBatteryData;
import com.xzzn.ems.domain.EmsCoolingData; import com.xzzn.ems.domain.EmsCoolingData;
import com.xzzn.ems.domain.EmsDevicesSetting;
import com.xzzn.ems.domain.vo.*; import com.xzzn.ems.domain.vo.*;
import com.xzzn.ems.mapper.*; import com.xzzn.ems.mapper.*;
import com.xzzn.ems.service.ISingleSiteService; import com.xzzn.ems.service.ISingleSiteService;
@ -255,20 +256,26 @@ public class SingleSiteServiceImpl implements ISingleSiteService {
@Override @Override
public List<AmmeterDataVo> getAmmeterDataList(String siteId) { public List<AmmeterDataVo> getAmmeterDataList(String siteId) {
List<AmmeterDataVo> ammeterDataVos = new ArrayList<>(); List<AmmeterDataVo> ammeterDataVos = new ArrayList<>();
AmmeterDataVo ammeterDataVo = new AmmeterDataVo();
if (!StringUtils.isEmpty(siteId)) { if (!StringUtils.isEmpty(siteId)) {
List<AmmeterDataDetailInfo> ammeterDataDetailInfos = emsAmmeterDataMapper.getAmmeterDetailInfo(siteId); // 先获取所有电表设备
List<EmsDevicesSetting> devicesList = emsDevicesSettingMapper.getAllBatteryDeviceBySiteId(siteId);
if (!CollectionUtils.isEmpty(devicesList)) {
for (EmsDevicesSetting devicesSetting : devicesList) {
AmmeterDataVo ammeterDataVo = new AmmeterDataVo();
ammeterDataVo.setDeviceName(devicesSetting.getDeviceName());
ammeterDataVo.setEmsCommunicationStatus(devicesSetting.getCommunicationStatus());
String deviceId = devicesSetting.getDeviceId();
// 获取类别数据
List<AmmeterDataDetailInfo> ammeterDataDetailInfos = emsAmmeterDataMapper.getAmmeterDetailInfo(siteId,deviceId);
ammeterDataVo.setAmmeterDataDetailInfos(ammeterDataDetailInfos); ammeterDataVo.setAmmeterDataDetailInfos(ammeterDataDetailInfos);
if (!CollectionUtils.isEmpty(ammeterDataDetailInfos)) {
// 获取通信状态
String deviceId = ammeterDataDetailInfos.get(0).getDeviceId();
Map<String,Object> map = emsDevicesSettingMapper.getDeviceStatus(deviceId);
ammeterDataVo.setEmsCommunicationStatus(map.get("communication_status").toString());
// 数据更新时间 // 数据更新时间
ammeterDataVo.setDataUpdateTime(ammeterDataDetailInfos.get(0).getUpdateTime()); ammeterDataVo.setDataUpdateTime(ammeterDataDetailInfos.get(0).getUpdateTime());
}
}
ammeterDataVos.add(ammeterDataVo); ammeterDataVos.add(ammeterDataVo);
}
}
}
return ammeterDataVos; return ammeterDataVos;
} }

View File

@ -114,23 +114,23 @@
</foreach> </foreach>
</delete> </delete>
<select id="getAmmeterDetailInfo" parameterType="String" resultType="com.xzzn.ems.domain.vo.AmmeterDataDetailInfo"> <select id="getAmmeterDetailInfo" resultType="com.xzzn.ems.domain.vo.AmmeterDataDetailInfo">
SELECT t.category as category, SELECT t.category as category,
t.total_kwh as totalKwh, t.total_kwh as totalKwh,
t.sharp_kwh as sharpKwh, t.sharp_kwh as sharpKwh,
t.flat_kwh as flatKwh, t.flat_kwh as flatKwh,
t.peak_kwh as peakKwh, t.peak_kwh as peakKwh,
t.valley_kwh as valleyKwh,
t.device_id as deviceId, t.device_id as deviceId,
t.valley_kwh as valleyKwh,
Max(t.data_update_time) as updateTime Max(t.data_update_time) as updateTime
FROM ems_ammeter_data t FROM ems_ammeter_data t
INNER JOIN ( INNER JOIN (
SELECT p.site_id, p.device_id,p.category,MAX(p.data_update_time) AS max_update_time SELECT p.site_id, p.device_id,p.category,MAX(p.data_update_time) AS max_update_time
FROM ems_ammeter_data p FROM ems_ammeter_data p
WHERE p.site_id = #{siteId} WHERE p.site_id = #{siteId} and p.device_id = #{deviceId}
GROUP BY p.site_id,p.device_id,p.category GROUP BY p.site_id,p.device_id,p.category
) latest on t.device_id = latest.device_id and t.data_update_time = latest.max_update_time ) latest on t.device_id = latest.device_id and t.data_update_time = latest.max_update_time
WHERE t.site_id = #{siteId} WHERE t.site_id = #{siteId} and t.device_id = #{deviceId}
group by t.category,t.total_kwh,t.sharp_kwh,t.flat_kwh,t.peak_kwh,t.valley_kwh,t.device_id group by t.category,t.total_kwh,t.sharp_kwh,t.flat_kwh,t.peak_kwh,t.valley_kwh,t.device_id
order by updateTime desc order by updateTime desc
</select> </select>

View File

@ -151,9 +151,11 @@
where device_id in (select distinct eb.device_id from ems_battery_cluster eb where eb.stack_device_id = #{stackDeviceId}) where device_id in (select distinct eb.device_id from ems_battery_cluster eb where eb.stack_device_id = #{stackDeviceId})
</select> </select>
<select id="getDeviceStatus" parameterType="String" resultType="java.util.Map"> <select id="getAllBatteryDeviceBySiteId" parameterType="String" resultType="com.xzzn.ems.domain.EmsDevicesSetting">
select device_id as id,communication_status select distinct e.device_id as deviceId,
from ems_devices_setting t.device_name as deviceName,
where device_id = #{deviceId} t.communication_status as communicationStatus
from ems_devices_setting t INNER JOIN ems_ammeter_data e on t.site_id = e.site_id and t.device_id = e.device_id
where t.site_id = #{siteId}
</select> </select>
</mapper> </mapper>