0
0

查询围栏进出记录列表

This commit is contained in:
2025-09-15 16:49:38 +08:00
parent b278a3087e
commit 07449e4a1e
8 changed files with 54 additions and 26 deletions

View File

@ -47,6 +47,7 @@ public class DeviceFenceAccessRecordController extends BaseController {
return deviceFenceAccessRecordService.queryPageList(bo, pageQuery);
}
/**
* 导出围栏进出记录列表
*/

View File

@ -50,6 +50,7 @@ public class DeviceGeoFenceController extends BaseController {
return deviceGeoFenceService.queryPageList(bo, pageQuery);
}
/**
* 导出电子围栏列表
*/

View File

@ -301,7 +301,7 @@ file:
mqtt:
username: admin
password: #YtvpSfCNG
url: tcp://47.120.79.150:2883
url: tcp://47.120.79.150:3883
subClientId: fys_subClient
subTopic: worker/location/#
pubTopic: B/#

View File

@ -52,12 +52,12 @@ public class DeviceFenceAccessRecord extends BaseEntity {
/**
* 纬度
*/
private Long latitude;
private Double latitude;
/**
* 经度
*/
private Long longitude;
private Double longitude;
/**
* 定位精度

View File

@ -74,6 +74,16 @@ public class DeviceFenceAccessRecordBo extends BaseEntity {
@NotNull(message = "事件时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date eventTime;
/**
* 开始时间
*/
private String beginTime;
/**
* 结束时间
*/
private String endTime;
/**
* 记录创建时间
*/

View File

@ -58,6 +58,7 @@ public class DeviceFenceAccessRecordServiceImpl implements IDeviceFenceAccessRec
return TableDataInfo.build(result);
}
/**
* 查询符合条件的围栏进出记录列表
*
@ -70,6 +71,7 @@ public class DeviceFenceAccessRecordServiceImpl implements IDeviceFenceAccessRec
return baseMapper.selectVoPageWithFenceAndDeviceName(lqw);
}
private LambdaQueryWrapper<DeviceFenceAccessRecord> buildQueryWrapper(DeviceFenceAccessRecordBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<DeviceFenceAccessRecord> lqw = Wrappers.lambdaQuery();
@ -86,6 +88,7 @@ public class DeviceFenceAccessRecordServiceImpl implements IDeviceFenceAccessRec
return lqw;
}
/**
* 新增围栏进出记录
*

View File

@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fuyuanshen.equipment.domain.DeviceGeoFence;
import com.fuyuanshen.equipment.domain.bo.DeviceFenceAccessRecordBo;
import com.fuyuanshen.equipment.domain.bo.DeviceFenceStatusBo;
import com.fuyuanshen.equipment.domain.bo.DeviceGeoFenceBo;
import com.fuyuanshen.equipment.domain.dto.FenceCheckResponse;
@ -16,6 +17,7 @@ import com.fuyuanshen.equipment.domain.query.FenceCheckRequest;
import com.fuyuanshen.equipment.domain.vo.DeviceFenceStatusVo;
import com.fuyuanshen.equipment.domain.vo.DeviceGeoFenceVo;
import com.fuyuanshen.equipment.mapper.DeviceGeoFenceMapper;
import com.fuyuanshen.equipment.service.IDeviceFenceAccessRecordService;
import com.fuyuanshen.equipment.service.IDeviceFenceStatusService;
import com.fuyuanshen.equipment.service.IDeviceGeoFenceService;
import com.fuyuanshen.equipment.utils.map.GeoFenceChecker;
@ -41,6 +43,8 @@ public class DeviceGeoFenceServiceImpl implements IDeviceGeoFenceService {
private final IDeviceFenceStatusService fenceStatusService; // 添加此行
private final IDeviceFenceAccessRecordService fenceAccessRecordService; // 添加此行
/**
@ -96,6 +100,7 @@ public class DeviceGeoFenceServiceImpl implements IDeviceGeoFenceService {
return lqw;
}
/**
* 新增电子围栏
*
@ -213,9 +218,9 @@ public class DeviceGeoFenceServiceImpl implements IDeviceGeoFenceService {
DeviceFenceStatusVo latestStatus = fenceStatusService.getLatestStatusByDeviceAndFence(
request.getDeviceId(), fence.getId());
// 判断设备与围栏的关系变化
Long previousStatus = latestStatus != null ? latestStatus.getStatus() : 0L; // 默认在围栏外
Long currentStatus = pointInFence ? 1L : 0L; // 当前状态1-在围栏内,0-在围栏外
// 判断设备与围栏的关系变化 1=进入围栏,2=离开围栏
Long previousStatus = latestStatus != null ? latestStatus.getStatus() : 2L; // 默认在围栏外
Long currentStatus = pointInFence ? 1L : 2L; // 当前状态1-在围栏内,2-在围栏外
// 如果状态发生变化,则记录
if (!previousStatus.equals(currentStatus)) {
@ -229,6 +234,17 @@ public class DeviceGeoFenceServiceImpl implements IDeviceGeoFenceService {
// 保存状态记录
fenceStatusService.insertByBo(newStatus);
// 添加围栏进出记录
DeviceFenceAccessRecordBo recordBo = new DeviceFenceAccessRecordBo();
recordBo.setDeviceId(request.getDeviceId());
recordBo.setFenceId(fence.getId());
recordBo.setLatitude(request.getLatitude());
recordBo.setLongitude(request.getLongitude());
recordBo.setEventTime(new Date());
// 1表示进入围栏2表示离开围栏
recordBo.setEventType(currentStatus);
fenceAccessRecordService.insertByBo(recordBo);
// 根据状态变化更新响应
if (currentStatus == 1L) {
// 设备进入围栏

View File

@ -4,11 +4,10 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fuyuanshen.equipment.mapper.DeviceFenceAccessRecordMapper">
<!-- 分页查询围栏进出记录列表 -->
<!-- 修改后的分页查询围栏进出记录列表 -->
<select id="selectVoPageWithFenceAndDeviceName"
resultType="com.fuyuanshen.equipment.domain.vo.DeviceFenceAccessRecordVo">
SELECT
r.id,
SELECT r.id,
r.fence_id,
f.name AS fence_name,
r.device_id,
@ -23,9 +22,7 @@
FROM device_fence_access_record r
LEFT JOIN device_geo_fence f ON r.fence_id = f.id
LEFT JOIN device d ON r.device_id = d.id
<where>
${ew.customSqlSegment}
</where>
ORDER BY r.id ASC
</select>