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));
}
/**
*
* @param energyType
* @return
*/
@PostMapping("/getEnergyTypeCount/{energyType}")
public int getEnergyTypeCount(@PathVariable("energyType")String energyType){
return emsBaseMonitorInfoService.getEnergyTypeCount(energyType);
}
}

@ -5,15 +5,15 @@ import com.ruoyi.ems.base.domain.EmsBaseMonitorInfo;
/**
* Mapper
*
*
* @author Yinq
* @date 2024-05-08
*/
public interface EmsBaseMonitorInfoMapper
public interface EmsBaseMonitorInfoMapper
{
/**
*
*
*
* @param objId
* @return
*/
@ -21,7 +21,7 @@ public interface EmsBaseMonitorInfoMapper
/**
*
*
*
* @param emsBaseMonitorInfo
* @return
*/
@ -29,7 +29,7 @@ public interface EmsBaseMonitorInfoMapper
/**
*
*
*
* @param emsBaseMonitorInfo
* @return
*/
@ -37,7 +37,7 @@ public interface EmsBaseMonitorInfoMapper
/**
*
*
*
* @param emsBaseMonitorInfo
* @return
*/
@ -45,7 +45,7 @@ public interface EmsBaseMonitorInfoMapper
/**
*
*
*
* @param objId
* @return
*/
@ -53,7 +53,7 @@ public interface EmsBaseMonitorInfoMapper
/**
*
*
*
* @param objIds
* @return
*/
@ -65,4 +65,11 @@ public interface EmsBaseMonitorInfoMapper
* @return
*/
public String selectEmsBaseMonitorTypeByMonitorCode(String monitorCode);
/**
*
* @param energyType
* @return
*/
public int getEnergyTypeCount(String energyType);
}

@ -6,15 +6,15 @@ import com.ruoyi.ems.base.domain.TreeSelects;
/**
* Service
*
*
* @author Yinq
* @date 2024-05-08
*/
public interface IEmsBaseMonitorInfoService
public interface IEmsBaseMonitorInfoService
{
/**
*
*
*
* @param objId
* @return
*/
@ -36,7 +36,7 @@ public interface IEmsBaseMonitorInfoService
/**
*
*
*
* @param emsBaseMonitorInfo
* @return
*/
@ -44,7 +44,7 @@ public interface IEmsBaseMonitorInfoService
/**
*
*
*
* @param emsBaseMonitorInfo
* @return
*/
@ -52,7 +52,7 @@ public interface IEmsBaseMonitorInfoService
/**
*
*
*
* @param objIds
* @return
*/
@ -60,7 +60,7 @@ public interface IEmsBaseMonitorInfoService
/**
*
*
*
* @param objId
* @return
*/
@ -86,4 +86,11 @@ public interface IEmsBaseMonitorInfoService
* @return
*/
public List<EmsBaseMonitorInfo> buildMonitorInfoTree(List<EmsBaseMonitorInfo> baseMonitorInfos);
/**
*
* @param energyType
* @return
*/
public int getEnergyTypeCount(String energyType);
}

@ -16,19 +16,19 @@ import com.ruoyi.ems.base.service.IEmsBaseMonitorInfoService;
/**
* Service
*
*
* @author Yinq
* @date 2024-05-08
*/
@Service
public class EmsBaseMonitorInfoServiceImpl implements IEmsBaseMonitorInfoService
public class EmsBaseMonitorInfoServiceImpl implements IEmsBaseMonitorInfoService
{
@Autowired
private EmsBaseMonitorInfoMapper emsBaseMonitorInfoMapper;
/**
*
*
*
* @param objId
* @return
*/
@ -40,7 +40,7 @@ public class EmsBaseMonitorInfoServiceImpl implements IEmsBaseMonitorInfoService
/**
*
*
*
* @param emsBaseMonitorInfo
* @return
*/
@ -62,7 +62,7 @@ public class EmsBaseMonitorInfoServiceImpl implements IEmsBaseMonitorInfoService
/**
*
*
*
* @param emsBaseMonitorInfo
* @return
*/
@ -75,7 +75,7 @@ public class EmsBaseMonitorInfoServiceImpl implements IEmsBaseMonitorInfoService
/**
*
*
*
* @param emsBaseMonitorInfo
* @return
*/
@ -88,7 +88,7 @@ public class EmsBaseMonitorInfoServiceImpl implements IEmsBaseMonitorInfoService
/**
*
*
*
* @param objIds
* @return
*/
@ -100,7 +100,7 @@ public class EmsBaseMonitorInfoServiceImpl implements IEmsBaseMonitorInfoService
/**
*
*
*
* @param objId
* @return
*/
@ -200,4 +200,14 @@ public class EmsBaseMonitorInfoServiceImpl implements IEmsBaseMonitorInfoService
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);
}
/**
*
* @param tWTempertureData
* @return
*/
@PostMapping("/selectLastTWTempertureData")
public List<TWTempertureData> selectLastTWTempertureData(@RequestBody TWTempertureData tWTempertureData){
return tWTempertureDataService.selectLastTWTempertureData(tWTempertureData) ;
}
}

@ -5,15 +5,15 @@ import com.ruoyi.ems.record.domain.TWTempertureData;
/**
* Mapper
*
*
* @author Caoql
* @date 2024-08-21
*/
public interface TWTempertureDataMapper
public interface TWTempertureDataMapper
{
/**
*
*
*
* @param objid
* @return
*/
@ -21,7 +21,7 @@ public interface TWTempertureDataMapper
/**
*
*
*
* @param tWTempertureData
* @return
*/
@ -29,7 +29,7 @@ public interface TWTempertureDataMapper
/**
*
*
*
* @param tWTempertureData
* @return
*/
@ -37,7 +37,7 @@ public interface TWTempertureDataMapper
/**
*
*
*
* @param tWTempertureData
* @return
*/
@ -45,7 +45,7 @@ public interface TWTempertureDataMapper
/**
*
*
*
* @param objid
* @return
*/
@ -53,7 +53,7 @@ public interface TWTempertureDataMapper
/**
*
*
*
* @param objids
* @return
*/
@ -78,5 +78,5 @@ public interface TWTempertureDataMapper
* @param tWTempertureData
* @return
*/
List<TWTempertureData> selectLastTWTempertureDataList(TWTempertureData tWTempertureData);
public List<TWTempertureData> selectLastTWTempertureDataList(TWTempertureData tWTempertureData);
}

@ -5,15 +5,15 @@ import com.ruoyi.ems.record.domain.TWTempertureData;
/**
* Service
*
*
* @author Caoql
* @date 2024-08-21
*/
public interface ITWTempertureDataService
public interface ITWTempertureDataService
{
/**
*
*
*
* @param objid
* @return
*/
@ -21,7 +21,7 @@ public interface ITWTempertureDataService
/**
*
*
*
* @param tWTempertureData
* @return
*/
@ -29,7 +29,7 @@ public interface ITWTempertureDataService
/**
*
*
*
* @param tWTempertureData
* @return
*/
@ -37,7 +37,7 @@ public interface ITWTempertureDataService
/**
*
*
*
* @param tWTempertureData
* @return
*/
@ -45,7 +45,7 @@ public interface ITWTempertureDataService
/**
*
*
*
* @param objids
* @return
*/
@ -53,7 +53,7 @@ public interface ITWTempertureDataService
/**
*
*
*
* @param objid
* @return
*/
@ -78,5 +78,12 @@ public interface ITWTempertureDataService
* @param tWTempertureData
* @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;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.List;
import java.util.ListIterator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.ems.record.mapper.TWTempertureDataMapper;
@ -9,19 +13,19 @@ import com.ruoyi.ems.record.service.ITWTempertureDataService;
/**
* Service
*
*
* @author Caoql
* @date 2024-08-21
*/
@Service
public class TWTempertureDataServiceImpl implements ITWTempertureDataService
public class TWTempertureDataServiceImpl implements ITWTempertureDataService
{
@Autowired
private TWTempertureDataMapper tWTempertureDataMapper;
/**
*
*
*
* @param objid
* @return
*/
@ -33,7 +37,7 @@ public class TWTempertureDataServiceImpl implements ITWTempertureDataService
/**
*
*
*
* @param tWTempertureData
* @return
*/
@ -45,7 +49,7 @@ public class TWTempertureDataServiceImpl implements ITWTempertureDataService
/**
*
*
*
* @param tWTempertureData
* @return
*/
@ -57,7 +61,7 @@ public class TWTempertureDataServiceImpl implements ITWTempertureDataService
/**
*
*
*
* @param tWTempertureData
* @return
*/
@ -69,7 +73,7 @@ public class TWTempertureDataServiceImpl implements ITWTempertureDataService
/**
*
*
*
* @param objids
* @return
*/
@ -81,7 +85,7 @@ public class TWTempertureDataServiceImpl implements ITWTempertureDataService
/**
*
*
*
* @param objid
* @return
*/
@ -120,4 +124,103 @@ public class TWTempertureDataServiceImpl implements ITWTempertureDataService
// 按monitorName分组并获取每个分组的最新记录
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);
}
}

@ -3,7 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.ems.base.mapper.EmsBaseMonitorInfoMapper">
<resultMap type="EmsBaseMonitorInfo" id="EmsBaseMonitorInfoResult">
<result property="objId" column="obj_id" />
<result property="parentId" column="parent_id" />
@ -36,7 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectEmsBaseMonitorInfoList" parameterType="EmsBaseMonitorInfo" resultMap="EmsBaseMonitorInfoResult">
<include refid="selectEmsBaseMonitorInfoVo"/>
<where>
<where>
<if test="parentId != null "> and parent_id = #{parentId}</if>
<if test="monitorCode != null and monitorCode != ''"> and monitor_code = #{monitorCode}</if>
<if test="monitorName != null and monitorName != ''"> and monitor_name like concat('%', #{monitorName}, '%')</if>
@ -67,7 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="monitorHierarchy != null "> and monitor_hierarchy = #{monitorHierarchy}</if>
</where>
</select>
<select id="selectEmsBaseMonitorInfoByObjId" parameterType="Long" resultMap="EmsBaseMonitorInfoResult">
<include refid="selectEmsBaseMonitorInfoVo"/>
where obj_id = #{objId}
@ -166,9 +166,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete>
<delete id="deleteEmsBaseMonitorInfoByObjIds" parameterType="String">
delete from ems_base_monitor_info where obj_id in
delete from ems_base_monitor_info where obj_id in
<foreach item="objId" collection="array" open="(" separator="," close=")">
#{objId}
</foreach>
</delete>
</mapper>
<select id="getEnergyTypeCount" parameterType="String" resultType="java.lang.Integer">
select count(1) from ems_base_monitor_info where monitor_type = #{energyType}
</select>
</mapper>

@ -115,4 +115,11 @@ public class RecordBusbarAlarmController extends BaseController
List<RecordBusbarAlarm> list = recordBusbarAlarmService.selectRecordBusbarAlarmList(recordBusbarAlarm);
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
*/
public int deleteRecordBusbarAlarmByObjId(Long objId);
int recordBusbarAlarmCount(RecordBusbarAlarm recordBusbarAlarm);
}

@ -3,7 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.record.mapper.RecordBusbarAlarmMapper">
<resultMap type="RecordBusbarAlarm" id="RecordBusbarAlarmResult">
<result property="objId" column="objId" />
<result property="busbarCode" column="busbar_code" />
@ -19,13 +19,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="recordTime" column="record_time" />
</resultMap>
<resultMap type="RecordBusbarAlarmCountResult" id="RecordBusbarAlarmCountResult">
<result property="recordDate" column="record_date" />
<result property="alarmCount" column="alarm_count" />
</resultMap>
<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
</sql>
<select id="selectRecordBusbarAlarmList" parameterType="RecordBusbarAlarm" resultMap="RecordBusbarAlarmResult">
<include refid="selectRecordBusbarAlarmVo"/>
<where>
<where>
<if test="objId != null "> and objId = #{objId}</if>
<if test="busbarCode != null "> and busbar_code = #{busbarCode}</if>
<if test="cabinetCode != null "> and cabinet_code = #{cabinetCode}</if>
@ -40,7 +45,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="params.beginRecordTime != null and params.beginRecordTime != '' and params.endRecordTime != null and params.endRecordTime != ''"> and record_time between #{params.beginRecordTime} and #{params.endRecordTime}</if>
</where>
</select>
<select id="selectRecordBusbarAlarmByObjId" parameterType="Long" resultMap="RecordBusbarAlarmResult">
<include refid="selectRecordBusbarAlarmVo"/>
where objId = #{objId}
@ -101,9 +106,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete>
<delete id="deleteRecordBusbarAlarmByObjIds" parameterType="String">
delete from record_busbar_alarm where objId in
delete from record_busbar_alarm where objId in
<foreach item="objId" collection="array" open="(" separator="," close=")">
#{objId}
</foreach>
</delete>
</mapper>
<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>

Loading…
Cancel
Save