forked from dyf/fys-Multi-tenant
查询围栏进出记录列表
This commit is contained in:
@ -47,6 +47,7 @@ public class DeviceFenceAccessRecordController extends BaseController {
|
|||||||
return deviceFenceAccessRecordService.queryPageList(bo, pageQuery);
|
return deviceFenceAccessRecordService.queryPageList(bo, pageQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出围栏进出记录列表
|
* 导出围栏进出记录列表
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -50,6 +50,7 @@ public class DeviceGeoFenceController extends BaseController {
|
|||||||
return deviceGeoFenceService.queryPageList(bo, pageQuery);
|
return deviceGeoFenceService.queryPageList(bo, pageQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出电子围栏列表
|
* 导出电子围栏列表
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -301,7 +301,7 @@ file:
|
|||||||
mqtt:
|
mqtt:
|
||||||
username: admin
|
username: admin
|
||||||
password: #YtvpSfCNG
|
password: #YtvpSfCNG
|
||||||
url: tcp://47.120.79.150:2883
|
url: tcp://47.120.79.150:3883
|
||||||
subClientId: fys_subClient
|
subClientId: fys_subClient
|
||||||
subTopic: worker/location/#
|
subTopic: worker/location/#
|
||||||
pubTopic: B/#
|
pubTopic: B/#
|
||||||
|
|||||||
@ -52,12 +52,12 @@ public class DeviceFenceAccessRecord extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 纬度
|
* 纬度
|
||||||
*/
|
*/
|
||||||
private Long latitude;
|
private Double latitude;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 经度
|
* 经度
|
||||||
*/
|
*/
|
||||||
private Long longitude;
|
private Double longitude;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 定位精度
|
* 定位精度
|
||||||
|
|||||||
@ -74,6 +74,16 @@ public class DeviceFenceAccessRecordBo extends BaseEntity {
|
|||||||
@NotNull(message = "事件时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
@NotNull(message = "事件时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private Date eventTime;
|
private Date eventTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开始时间
|
||||||
|
*/
|
||||||
|
private String beginTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结束时间
|
||||||
|
*/
|
||||||
|
private String endTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 记录创建时间
|
* 记录创建时间
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -58,6 +58,7 @@ public class DeviceFenceAccessRecordServiceImpl implements IDeviceFenceAccessRec
|
|||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询符合条件的围栏进出记录列表
|
* 查询符合条件的围栏进出记录列表
|
||||||
*
|
*
|
||||||
@ -70,6 +71,7 @@ public class DeviceFenceAccessRecordServiceImpl implements IDeviceFenceAccessRec
|
|||||||
return baseMapper.selectVoPageWithFenceAndDeviceName(lqw);
|
return baseMapper.selectVoPageWithFenceAndDeviceName(lqw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private LambdaQueryWrapper<DeviceFenceAccessRecord> buildQueryWrapper(DeviceFenceAccessRecordBo bo) {
|
private LambdaQueryWrapper<DeviceFenceAccessRecord> buildQueryWrapper(DeviceFenceAccessRecordBo bo) {
|
||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
LambdaQueryWrapper<DeviceFenceAccessRecord> lqw = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<DeviceFenceAccessRecord> lqw = Wrappers.lambdaQuery();
|
||||||
@ -86,6 +88,7 @@ public class DeviceFenceAccessRecordServiceImpl implements IDeviceFenceAccessRec
|
|||||||
return lqw;
|
return lqw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增围栏进出记录
|
* 新增围栏进出记录
|
||||||
*
|
*
|
||||||
|
|||||||
@ -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.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.fuyuanshen.equipment.domain.DeviceGeoFence;
|
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.DeviceFenceStatusBo;
|
||||||
import com.fuyuanshen.equipment.domain.bo.DeviceGeoFenceBo;
|
import com.fuyuanshen.equipment.domain.bo.DeviceGeoFenceBo;
|
||||||
import com.fuyuanshen.equipment.domain.dto.FenceCheckResponse;
|
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.DeviceFenceStatusVo;
|
||||||
import com.fuyuanshen.equipment.domain.vo.DeviceGeoFenceVo;
|
import com.fuyuanshen.equipment.domain.vo.DeviceGeoFenceVo;
|
||||||
import com.fuyuanshen.equipment.mapper.DeviceGeoFenceMapper;
|
import com.fuyuanshen.equipment.mapper.DeviceGeoFenceMapper;
|
||||||
|
import com.fuyuanshen.equipment.service.IDeviceFenceAccessRecordService;
|
||||||
import com.fuyuanshen.equipment.service.IDeviceFenceStatusService;
|
import com.fuyuanshen.equipment.service.IDeviceFenceStatusService;
|
||||||
import com.fuyuanshen.equipment.service.IDeviceGeoFenceService;
|
import com.fuyuanshen.equipment.service.IDeviceGeoFenceService;
|
||||||
import com.fuyuanshen.equipment.utils.map.GeoFenceChecker;
|
import com.fuyuanshen.equipment.utils.map.GeoFenceChecker;
|
||||||
@ -41,6 +43,8 @@ public class DeviceGeoFenceServiceImpl implements IDeviceGeoFenceService {
|
|||||||
|
|
||||||
private final IDeviceFenceStatusService fenceStatusService; // 添加此行
|
private final IDeviceFenceStatusService fenceStatusService; // 添加此行
|
||||||
|
|
||||||
|
private final IDeviceFenceAccessRecordService fenceAccessRecordService; // 添加此行
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -96,6 +100,7 @@ public class DeviceGeoFenceServiceImpl implements IDeviceGeoFenceService {
|
|||||||
return lqw;
|
return lqw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增电子围栏
|
* 新增电子围栏
|
||||||
*
|
*
|
||||||
@ -213,9 +218,9 @@ public class DeviceGeoFenceServiceImpl implements IDeviceGeoFenceService {
|
|||||||
DeviceFenceStatusVo latestStatus = fenceStatusService.getLatestStatusByDeviceAndFence(
|
DeviceFenceStatusVo latestStatus = fenceStatusService.getLatestStatusByDeviceAndFence(
|
||||||
request.getDeviceId(), fence.getId());
|
request.getDeviceId(), fence.getId());
|
||||||
|
|
||||||
// 判断设备与围栏的关系变化
|
// 判断设备与围栏的关系变化 1=进入围栏,2=离开围栏
|
||||||
Long previousStatus = latestStatus != null ? latestStatus.getStatus() : 0L; // 默认在围栏外
|
Long previousStatus = latestStatus != null ? latestStatus.getStatus() : 2L; // 默认在围栏外
|
||||||
Long currentStatus = pointInFence ? 1L : 0L; // 当前状态:1-在围栏内,0-在围栏外
|
Long currentStatus = pointInFence ? 1L : 2L; // 当前状态:1-在围栏内,2-在围栏外
|
||||||
|
|
||||||
// 如果状态发生变化,则记录
|
// 如果状态发生变化,则记录
|
||||||
if (!previousStatus.equals(currentStatus)) {
|
if (!previousStatus.equals(currentStatus)) {
|
||||||
@ -229,6 +234,17 @@ public class DeviceGeoFenceServiceImpl implements IDeviceGeoFenceService {
|
|||||||
// 保存状态记录
|
// 保存状态记录
|
||||||
fenceStatusService.insertByBo(newStatus);
|
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) {
|
if (currentStatus == 1L) {
|
||||||
// 设备进入围栏
|
// 设备进入围栏
|
||||||
|
|||||||
@ -4,28 +4,25 @@
|
|||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.fuyuanshen.equipment.mapper.DeviceFenceAccessRecordMapper">
|
<mapper namespace="com.fuyuanshen.equipment.mapper.DeviceFenceAccessRecordMapper">
|
||||||
|
|
||||||
<!-- 分页查询围栏进出记录列表 -->
|
<!-- 修改后的分页查询围栏进出记录列表 -->
|
||||||
<select id="selectVoPageWithFenceAndDeviceName"
|
<select id="selectVoPageWithFenceAndDeviceName"
|
||||||
resultType="com.fuyuanshen.equipment.domain.vo.DeviceFenceAccessRecordVo">
|
resultType="com.fuyuanshen.equipment.domain.vo.DeviceFenceAccessRecordVo">
|
||||||
SELECT
|
SELECT r.id,
|
||||||
r.id,
|
r.fence_id,
|
||||||
r.fence_id,
|
f.name AS fence_name,
|
||||||
f.name AS fence_name,
|
r.device_id,
|
||||||
r.device_id,
|
d.device_name,
|
||||||
d.device_name,
|
r.user_id,
|
||||||
r.user_id,
|
r.event_type,
|
||||||
r.event_type,
|
r.latitude,
|
||||||
r.latitude,
|
r.longitude,
|
||||||
r.longitude,
|
r.accuracy,
|
||||||
r.accuracy,
|
r.event_time,
|
||||||
r.event_time,
|
r.create_time
|
||||||
r.create_time
|
|
||||||
FROM device_fence_access_record r
|
FROM device_fence_access_record r
|
||||||
LEFT JOIN device_geo_fence f ON r.fence_id = f.id
|
LEFT JOIN device_geo_fence f ON r.fence_id = f.id
|
||||||
LEFT JOIN device d ON r.device_id = d.id
|
LEFT JOIN device d ON r.device_id = d.id
|
||||||
<where>
|
|
||||||
${ew.customSqlSegment}
|
${ew.customSqlSegment}
|
||||||
</where>
|
|
||||||
ORDER BY r.id ASC
|
ORDER BY r.id ASC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user