add(ems and moudle): 新增能源类型设备数量统计和能源数据查询功能

- 在 EmsBaseMonitorInfoController 中添加了获取指定能源类型设备数量的接口
- 在 EmsBaseMonitorInfoMapper 和 XML 中添加了相应的 SQL 查询方法
- 在 EmsBaseMonitorInfoServiceImpl 和 IEmsBaseMonitorInfoService 中实现了获取能源类型设备数量的方法
- 在 RecordBusbarAlarmController 中添加了记录母排近七天巡检记录次数的接口
- 新增 RecordBusbarAlarmCountResult 类用于记录母排报警统计结果- 在 RecordBusbarAlarmMapper.xml 中添加了记录母排报警统计的 SQL 查询
- 在 TWTempertureDataController 中添加了查询最新温度数据的接口
- 在 TWTempertureDataMapper 和 TWTempertureDataServiceImpl 中实现了查询最新温度数据的方法
IOT
zch 1 year ago
parent 2f49f9639e
commit cbc287cc6a

@ -112,4 +112,15 @@ public class EmsBaseMonitorInfoController extends BaseController
{ {
return toAjax(emsBaseMonitorInfoService.deleteEmsBaseMonitorInfoByObjIds(objIds)); return toAjax(emsBaseMonitorInfoService.deleteEmsBaseMonitorInfoByObjIds(objIds));
} }
/**
*
* @param energyType
* @return
*/
@PostMapping("/getEnergyTypeCount/{energyType}")
public int getEnergyTypeCount(@PathVariable("energyType")String energyType){
return emsBaseMonitorInfoService.getEnergyTypeCount(energyType);
}
} }

@ -65,4 +65,11 @@ public interface EmsBaseMonitorInfoMapper
* @return * @return
*/ */
public String selectEmsBaseMonitorTypeByMonitorCode(String monitorCode); public String selectEmsBaseMonitorTypeByMonitorCode(String monitorCode);
/**
*
* @param energyType
* @return
*/
public int getEnergyTypeCount(String energyType);
} }

@ -86,4 +86,11 @@ public interface IEmsBaseMonitorInfoService
* @return * @return
*/ */
public List<EmsBaseMonitorInfo> buildMonitorInfoTree(List<EmsBaseMonitorInfo> baseMonitorInfos); public List<EmsBaseMonitorInfo> buildMonitorInfoTree(List<EmsBaseMonitorInfo> baseMonitorInfos);
/**
*
* @param energyType
* @return
*/
public int getEnergyTypeCount(String energyType);
} }

@ -200,4 +200,14 @@ public class EmsBaseMonitorInfoServiceImpl implements IEmsBaseMonitorInfoService
return getChildList(list, t).size() > 0; return getChildList(list, t).size() > 0;
} }
/**
*
* @param energyType
* @return
*/
public int getEnergyTypeCount(String energyType){
return emsBaseMonitorInfoMapper.getEnergyTypeCount(energyType);
}
} }

@ -207,4 +207,13 @@ public class TWTempertureDataController extends BaseController
return getDataTable(list); return getDataTable(list);
} }
/**
*
* @param tWTempertureData
* @return
*/
@PostMapping("/selectLastTWTempertureData")
public List<TWTempertureData> selectLastTWTempertureData(@RequestBody TWTempertureData tWTempertureData){
return tWTempertureDataService.selectLastTWTempertureData(tWTempertureData) ;
}
} }

@ -78,5 +78,5 @@ public interface TWTempertureDataMapper
* @param tWTempertureData * @param tWTempertureData
* @return * @return
*/ */
List<TWTempertureData> selectLastTWTempertureDataList(TWTempertureData tWTempertureData); public List<TWTempertureData> selectLastTWTempertureDataList(TWTempertureData tWTempertureData);
} }

@ -78,5 +78,12 @@ public interface ITWTempertureDataService
* @param tWTempertureData * @param tWTempertureData
* @return * @return
*/ */
List<TWTempertureData> selectLastTWTempertureDataList(TWTempertureData tWTempertureData); public List<TWTempertureData> selectLastTWTempertureDataList(TWTempertureData tWTempertureData);
/**
*
* @param tWTempertureData
* @return
*/
public List<TWTempertureData> selectLastTWTempertureData(TWTempertureData tWTempertureData);
} }

@ -1,6 +1,10 @@
package com.ruoyi.ems.record.service.impl; package com.ruoyi.ems.record.service.impl;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.ListIterator;
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 com.ruoyi.ems.record.mapper.TWTempertureDataMapper; import com.ruoyi.ems.record.mapper.TWTempertureDataMapper;
@ -120,4 +124,103 @@ public class TWTempertureDataServiceImpl implements ITWTempertureDataService
// 按monitorName分组并获取每个分组的最新记录 // 按monitorName分组并获取每个分组的最新记录
return tWTempertureDataMapper.selectLastTWTempertureDataList(tWTempertureData); return tWTempertureDataMapper.selectLastTWTempertureDataList(tWTempertureData);
} }
/**
*
* @param tWTempertureData
* @return
*/
public List<TWTempertureData> selectLastTWTempertureData(TWTempertureData tWTempertureData) {
try {
// 从数据库中查询温度数据列表
List<TWTempertureData> twlist = tWTempertureDataMapper.selectTWTempertureDataList(tWTempertureData);
if (twlist == null || twlist.isEmpty()) {
// 如果查询结果为空或列表为空,返回一个空列表
return Collections.emptyList();
}
// 创建一个新的TWTempertureData对象用于存储最终的数据
TWTempertureData data = new TWTempertureData();
// 获取列表的反向迭代器,从最后一个元素开始遍历
ListIterator<TWTempertureData> iterator = twlist.listIterator(twlist.size());
while (iterator.hasPrevious()) {
// 获取当前元素
TWTempertureData t = iterator.previous();
// 如果当前元素的tempreture属性不为空则设置到data对象中
setIfNotNull(t, data, "tempreture");
// 如果当前元素的humidity属性不为空则设置到data对象中
setIfNotNull(t, data, "humidity");
// 如果当前元素的illuminance属性不为空则设置到data对象中
setIfNotNull(t, data, "illuminance");
// 如果当前元素的noise属性不为空则设置到data对象中
setIfNotNull(t, data, "noise");
// 设置PM值到data对象中
setPmValues(t, data);
}
// 返回包含最终数据的单元素列表
return Collections.singletonList(data);
} catch (Exception e) {
// 异常处理,打印堆栈跟踪并返回空列表
e.printStackTrace();
return Collections.emptyList();
}
}
/**
*
*
* @param source
* @param target
* @param fieldName
*/
private void setIfNotNull(TWTempertureData source, TWTempertureData target, String fieldName) {
try {
// 获取源对象中指定字段的getter方法
Method getMethod = TWTempertureData.class.getMethod("get" + capitalize(fieldName));
// 获取目标对象中指定字段的setter方法参数类型与getter方法返回类型一致
Method setMethod = TWTempertureData.class.getMethod("set" + capitalize(fieldName), getMethod.getReturnType());
// 调用getter方法获取源对象中的字段值
Object value = getMethod.invoke(source);
// 如果字段值不为空且目标对象中的对应字段值为空则调用setter方法将值设置到目标对象中
if (value != null && getMethod.invoke(target) == null) {
setMethod.invoke(target, value);
}
} catch (Exception e) {
// 捕获并打印异常信息
e.printStackTrace();
}
}
/**
* PM
* @param source TWTempertureDataPM
* @param target TWTempertureDataPM
*/
private void setPmValues(TWTempertureData source, TWTempertureData target) {
setIfNotNull(source, target, "pm1");
if (target.getPm1() == null) {
setIfNotNull(source, target, "pm2");
}
if (target.getPm2() == null) {
setIfNotNull(source, target, "pm10");
}
}
/**
*
*
* @param str
* @return 0
*/
private String capitalize(String str) {
// 如果字符串为null或者长度为0直接返回原字符串
if (str == null || str.length() == 0) {
return str;
}
// 将字符串的第一个字符转换为大写,并与剩余部分拼接后返回
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
} }

@ -171,4 +171,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{objId} #{objId}
</foreach> </foreach>
</delete> </delete>
<select id="getEnergyTypeCount" parameterType="String" resultType="java.lang.Integer">
select count(1) from ems_base_monitor_info where monitor_type = #{energyType}
</select>
</mapper> </mapper>

@ -115,4 +115,11 @@ public class RecordBusbarAlarmController extends BaseController
List<RecordBusbarAlarm> list = recordBusbarAlarmService.selectRecordBusbarAlarmList(recordBusbarAlarm); List<RecordBusbarAlarm> list = recordBusbarAlarmService.selectRecordBusbarAlarmList(recordBusbarAlarm);
return success(list); return success(list);
} }
//记录母排近七天每天一天的巡检记录次数。
@PostMapping("/recordBusbarAlarmCount")
public AjaxResult recordBusbarAlarmCount(@RequestBody RecordBusbarAlarm recordBusbarAlarm) {
return AjaxResult.success(recordBusbarAlarmService.recordBusbarAlarmCount(recordBusbarAlarm));
}
} }

@ -0,0 +1,36 @@
package com.ruoyi.record.domain.VO;
import com.ruoyi.record.domain.RecordBusbarAlarm;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
public class RecordBusbarAlarmCountResult extends RecordBusbarAlarm {
private Date recordDate;
private int alarmCount;
public Date getRecordDate() {
return recordDate;
}
public void setRecordDate(Date recordDate) {
this.recordDate = recordDate;
}
public int getAlarmCount() {
return alarmCount;
}
public void setAlarmCount(int alarmCount) {
this.alarmCount = alarmCount;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("recordDate", getRecordDate())
.append("alarmCount", getAlarmCount())
.toString();
}
}

@ -58,4 +58,6 @@ public interface IRecordBusbarAlarmService
* @return * @return
*/ */
public int deleteRecordBusbarAlarmByObjId(Long objId); public int deleteRecordBusbarAlarmByObjId(Long objId);
int recordBusbarAlarmCount(RecordBusbarAlarm recordBusbarAlarm);
} }

@ -19,6 +19,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="recordTime" column="record_time" /> <result property="recordTime" column="record_time" />
</resultMap> </resultMap>
<resultMap type="RecordBusbarAlarmCountResult" id="RecordBusbarAlarmCountResult">
<result property="recordDate" column="record_date" />
<result property="alarmCount" column="alarm_count" />
</resultMap>
<sql id="selectRecordBusbarAlarmVo"> <sql id="selectRecordBusbarAlarmVo">
select objId, busbar_code, cabinet_code, temp_max, temp_min, temp_avg, temp_diff, file_path, alarm_type, alarm_value, is_flag, record_time from record_busbar_alarm select objId, busbar_code, cabinet_code, temp_max, temp_min, temp_avg, temp_diff, file_path, alarm_type, alarm_value, is_flag, record_time from record_busbar_alarm
</sql> </sql>
@ -106,4 +111,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{objId} #{objId}
</foreach> </foreach>
</delete> </delete>
<select id="selectRecordBusbarAlarmListByDay" parameterType="RecordBusbarAlarm" resultMap="RecordBusbarAlarmCountResult">
SELECT
DATE(record_time) AS record_date,
COUNT(*) AS alarm_count
FROM
record_busbar_alarm
WHERE
record_time >= date_sub(CURDATE(), INTERVAL 7 DAY)
GROUP BY
DATE(record_time)
</select>
</mapper> </mapper>
Loading…
Cancel
Save