获取设备使用数据

This commit is contained in:
2025-09-09 16:06:34 +08:00
parent 7e87971c0b
commit 832234269d
5 changed files with 32 additions and 26 deletions

View File

@ -61,13 +61,15 @@ public class HomePageController {
/** /**
* 获取设备使用数据 * 获取设备使用数据
* *
* @param deviceId 设备ID * @param deviceTypeId 设备ID (可选)
* @param range 时间范围 1:半年 2:一年 * @param range 时间范围 1:半年 2:一年
* @return 每月使用数据列表 * @return 每月使用数据列表
*/ */
@GetMapping("/getEquipmentUsageData/{deviceId}/{range}") @GetMapping("/getEquipmentUsageData/{range}")
public R<List<Map<String, Object>>> getEquipmentUsageData(@PathVariable Long deviceId, @PathVariable Integer range) { public R<List<Map<String, Object>>> getEquipmentUsageData(@PathVariable Integer range,
return R.ok(deviceService.getEquipmentUsageData(deviceId, range)); @RequestParam(required = false) Long deviceTypeId) {
return R.ok(deviceService.getEquipmentUsageData(deviceTypeId, range));
} }
} }

View File

@ -99,11 +99,11 @@ public interface DeviceMapper extends BaseMapper<Device> {
/** /**
* 获取设备使用数据 * 获取设备使用数据
* *
* @param deviceId 设备ID * @param deviceTypeId 设备ID
* @param range 时间范围 1:半年 2:一年 * @param range 时间范围 1:半年 2:一年
* @return 每月使用数据列表 * @return 每月使用数据列表
*/ */
List<Map<String, Object>> getEquipmentUsageData(Long deviceId, Integer range); List<Map<String, Object>> getEquipmentUsageData(@Param("deviceTypeId") Long deviceTypeId, @Param("range") Integer range);
// 在DeviceMapper.java中添加方法 // 在DeviceMapper.java中添加方法
int getUsageDataForMonth(@Param("deviceId") Long deviceId, int getUsageDataForMonth(@Param("deviceId") Long deviceId,

View File

@ -139,9 +139,9 @@ public interface DeviceService extends IService<Device> {
/** /**
* 获取设备使用数据 * 获取设备使用数据
* *
* @param deviceId * @param deviceTypeId
* @param range * @param range
* @return * @return
*/ */
List<Map<String, Object>> getEquipmentUsageData(Long deviceId, Integer range); List<Map<String, Object>> getEquipmentUsageData(Long deviceTypeId, Integer range);
} }

View File

@ -654,8 +654,8 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
* @return 每月使用数据列表 * @return 每月使用数据列表
*/ */
@Override @Override
public List<Map<String, Object>> getEquipmentUsageData(Long deviceId, Integer range) { public List<Map<String, Object>> getEquipmentUsageData(Long deviceTypeId, Integer range) {
List<Map<String, Object>> equipmentUsageData = deviceMapper.getEquipmentUsageData(deviceId, range); List<Map<String, Object>> equipmentUsageData = deviceMapper.getEquipmentUsageData(deviceTypeId, range);
return equipmentUsageData; return equipmentUsageData;
} }

View File

@ -376,26 +376,30 @@
<!-- 获取设备使用数据 --> <!-- 获取设备使用数据 -->
<select id="getEquipmentUsageData" resultType="map"> <select id="getEquipmentUsageData" resultType="map">
SELECT COUNT(CASE WHEN MONTH (dl.create_time) = 1 THEN 1 END) AS m1, SELECT COUNT(CASE WHEN MONTH (dl.create_time) = 1 THEN 1 END) AS m1,
COUNT(CASE WHEN MONTH (dl.create_time) = 2 THEN 1 END) AS m2, COUNT(CASE WHEN MONTH (dl.create_time) = 2 THEN 1 END) AS m2,
COUNT(CASE WHEN MONTH (dl.create_time) = 3 THEN 1 END) AS m3, COUNT(CASE WHEN MONTH (dl.create_time) = 3 THEN 1 END) AS m3,
COUNT(CASE WHEN MONTH (dl.create_time) = 4 THEN 1 END) AS m4, COUNT(CASE WHEN MONTH (dl.create_time) = 4 THEN 1 END) AS m4,
COUNT(CASE WHEN MONTH (dl.create_time) = 5 THEN 1 END) AS m5, COUNT(CASE WHEN MONTH (dl.create_time) = 5 THEN 1 END) AS m5,
COUNT(CASE WHEN MONTH (dl.create_time) = 6 THEN 1 END) AS m6, COUNT(CASE WHEN MONTH (dl.create_time) = 6 THEN 1 END) AS m6,
COUNT(CASE WHEN MONTH (dl.create_time) = 7 THEN 1 END) AS m7, COUNT(CASE WHEN MONTH (dl.create_time) = 7 THEN 1 END) AS m7,
COUNT(CASE WHEN MONTH (dl.create_time) = 8 THEN 1 END) AS m8, COUNT(CASE WHEN MONTH (dl.create_time) = 8 THEN 1 END) AS m8,
COUNT(CASE WHEN MONTH (dl.create_time) = 9 THEN 1 END) AS m9, COUNT(CASE WHEN MONTH (dl.create_time) = 9 THEN 1 END) AS m9,
COUNT(CASE WHEN MONTH (dl.create_time) = 10 THEN 1 END) AS m10, COUNT(CASE WHEN MONTH (dl.create_time) = 10 THEN 1 END) AS m10,
COUNT(CASE WHEN MONTH (dl.create_time) = 11 THEN 1 END) AS m11, COUNT(CASE WHEN MONTH (dl.create_time) = 11 THEN 1 END) AS m11,
COUNT(CASE WHEN MONTH (dl.create_time) = 12 THEN 1 END) AS m12 COUNT(CASE WHEN MONTH (dl.create_time) = 12 THEN 1 END) AS m12
FROM device_log dl FROM device_log dl
LEFT JOIN device d ON dl.device_id = d.id LEFT JOIN device d ON dl.device_id = d.id
LEFT JOIN device_type dt ON d.device_type = dt.id LEFT JOIN device_type dt ON d.device_type = dt.id
WHERE dt.id = #{deviceId} <where>
AND ( <if test="deviceTypeId != null">
dt.id = #{deviceTypeId}
</if>
AND (
(#{range} = 1 AND dl.create_time >= DATE_SUB(NOW(), INTERVAL 6 MONTH)) OR (#{range} = 1 AND dl.create_time >= DATE_SUB(NOW(), INTERVAL 6 MONTH)) OR
(#{range} = 2 AND dl.create_time >= DATE_SUB(NOW(), INTERVAL 12 MONTH)) (#{range} = 2 AND dl.create_time >= DATE_SUB(NOW(), INTERVAL 12 MONTH))
) )
</where>
</select> </select>
<select id="getUsageDataForMonth" resultType="java.lang.Integer"> <select id="getUsageDataForMonth" resultType="java.lang.Integer">