From 96ff2e6b0583775e54e8c9c36c8c9a1cbf690e3b Mon Sep 17 00:00:00 2001
From: huanghongfa <huanghongfa123456>
Date: 星期三, 13 十月 2021 18:18:48 +0800
Subject: [PATCH] 大屏网格员运动轨迹接口开发
---
springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventGridMemberWarnLogServiceImpl.java | 152 ++++++++++++++++++++++++++++++++++++--------------
1 files changed, 109 insertions(+), 43 deletions(-)
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventGridMemberWarnLogServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventGridMemberWarnLogServiceImpl.java
index 2d8259e..1694d3a 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventGridMemberWarnLogServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventGridMemberWarnLogServiceImpl.java
@@ -1,5 +1,13 @@
package com.panzhihua.service_grid.service.impl;
+import java.util.Date;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -8,16 +16,20 @@
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.grid.EventGridMemberWarnLogDetailsVO;
import com.panzhihua.common.model.vos.grid.EventGridMemberWarnLogVO;
-import com.panzhihua.service_grid.dao.*;
-import com.panzhihua.service_grid.model.dos.*;
+import com.panzhihua.common.model.vos.grid.LatLngVO;
+import com.panzhihua.common.utlis.LngLatUtils;
+import com.panzhihua.common.utlis.StringUtils;
+import com.panzhihua.service_grid.dao.EventGridDataMapper;
+import com.panzhihua.service_grid.dao.EventGridMemberGpsLogMapper;
+import com.panzhihua.service_grid.dao.EventGridMemberRelationMapper;
+import com.panzhihua.service_grid.dao.EventGridMemberWarnLogMapper;
+import com.panzhihua.service_grid.model.dos.EventGridDataDO;
+import com.panzhihua.service_grid.model.dos.EventGridMemberGpsLogDO;
+import com.panzhihua.service_grid.model.dos.EventGridMemberRelationDO;
+import com.panzhihua.service_grid.model.dos.EventGridMemberWarnLogDO;
import com.panzhihua.service_grid.service.EventGridMemberWarnLogService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.beans.BeanUtils;
-import javax.annotation.Resource;
-import java.util.Date;
-import java.util.List;
+import lombok.extern.slf4j.Slf4j;
/**
* @auther lyq
@@ -26,7 +38,8 @@
*/
@Slf4j
@Service
-public class EventGridMemberWarnLogServiceImpl extends ServiceImpl<EventGridMemberWarnLogMapper, EventGridMemberWarnLogDO> implements EventGridMemberWarnLogService {
+public class EventGridMemberWarnLogServiceImpl extends
+ ServiceImpl<EventGridMemberWarnLogMapper, EventGridMemberWarnLogDO> implements EventGridMemberWarnLogService {
@Resource
private EventGridMemberWarnLogMapper eventGridMemberWarnLogMapper;
@@ -34,16 +47,20 @@
private EventGridMemberGpsLogMapper eventGridMemberGpsLogMapper;
@Resource
private EventGridDataMapper eventGridDataMapper;
+ @Resource
+ private EventGridMemberRelationMapper eventGridMemberRelationMapper;
+
/**
* 新增网格员定时上报地理预警记录
+ *
* @param eventGridMemberWarnLogAddDTO
* @return 新增结果
*/
- public R add(EventGridMemberWarnLogAddDTO eventGridMemberWarnLogAddDTO){
+ public R add(EventGridMemberWarnLogAddDTO eventGridMemberWarnLogAddDTO) {
EventGridMemberWarnLogDO eventGridMemberWarnLogDO = new EventGridMemberWarnLogDO();
BeanUtils.copyProperties(eventGridMemberWarnLogAddDTO, eventGridMemberWarnLogDO);
eventGridMemberWarnLogDO.setCreateAt(new Date());
- if(eventGridMemberWarnLogMapper.insert(eventGridMemberWarnLogDO)>0){
+ if (eventGridMemberWarnLogMapper.insert(eventGridMemberWarnLogDO) > 0) {
return R.ok();
}
return R.fail();
@@ -51,14 +68,15 @@
/**
* 修改网格员定时上报地理预警记录
+ *
* @param eventGridMemberWarnLogEditDTO
* @return 维护结果
*/
- public R edit(EventGridMemberWarnLogEditDTO eventGridMemberWarnLogEditDTO){
+ public R edit(EventGridMemberWarnLogEditDTO eventGridMemberWarnLogEditDTO) {
EventGridMemberWarnLogDO eventGridMemberWarnLogDO = new EventGridMemberWarnLogDO();
BeanUtils.copyProperties(eventGridMemberWarnLogEditDTO, eventGridMemberWarnLogDO);
- //eventGridMemberWarnLogDO.setUpdateAt(new Date());
- if(eventGridMemberWarnLogMapper.updateById(eventGridMemberWarnLogDO)>0){
+ // eventGridMemberWarnLogDO.setUpdateAt(new Date());
+ if (eventGridMemberWarnLogMapper.updateById(eventGridMemberWarnLogDO) > 0) {
return R.ok();
}
return R.fail();
@@ -66,15 +84,16 @@
/**
* 分页查找网格员定时上报地理预警记录
+ *
* @param pageEventGridMemberWarnLogDTO
* @return 维护结果
*/
- public R<IPage<EventGridMemberWarnLogVO>> query(PageEventGridMemberWarnLogDTO pageEventGridMemberWarnLogDTO){
- Page page = new Page(1,10);
- if(pageEventGridMemberWarnLogDTO.getPageNum()!=null) {
+ public R<IPage<EventGridMemberWarnLogVO>> query(PageEventGridMemberWarnLogDTO pageEventGridMemberWarnLogDTO) {
+ Page page = new Page(1, 10);
+ if (pageEventGridMemberWarnLogDTO.getPageNum() != null) {
page.setCurrent(pageEventGridMemberWarnLogDTO.getPageNum());
}
- if(pageEventGridMemberWarnLogDTO.getPageSize()!=null) {
+ if (pageEventGridMemberWarnLogDTO.getPageSize() != null) {
page.setSize(pageEventGridMemberWarnLogDTO.getPageSize());
}
return R.ok(eventGridMemberWarnLogMapper.findByPage(page, pageEventGridMemberWarnLogDTO));
@@ -82,21 +101,24 @@
/**
* 删除网格员定时上报地理预警记录
+ *
* @param EventGridMemberWarnLogDeleteDTO
* @return 平台用户信息
*/
- public R delete(EventGridMemberWarnLogDeleteDTO EventGridMemberWarnLogDeleteDTO){
+ public R delete(EventGridMemberWarnLogDeleteDTO EventGridMemberWarnLogDeleteDTO) {
return R.fail();
}
/**
* 查询网格员定时上报地理预警记录详细信息
- * @param id 网格员定时上报地理预警记录 id
+ *
+ * @param id
+ * 网格员定时上报地理预警记录 id
* @return 查找结果
*/
- public R<EventGridMemberWarnLogDetailsVO> eventGridMemberWarnLogDetails(Long id){
+ public R<EventGridMemberWarnLogDetailsVO> eventGridMemberWarnLogDetails(Long id) {
EventGridMemberWarnLogDO eventGridMemberWarnLogDO = eventGridMemberWarnLogMapper.selectById(id);
- if(eventGridMemberWarnLogDO!=null) {
+ if (eventGridMemberWarnLogDO != null) {
EventGridMemberWarnLogDetailsVO eventGridMemberWarnLogDetailsVO = new EventGridMemberWarnLogDetailsVO();
BeanUtils.copyProperties(eventGridMemberWarnLogDO, eventGridMemberWarnLogDetailsVO);
return R.ok(eventGridMemberWarnLogDetailsVO);
@@ -106,45 +128,89 @@
/**
* 后台获取网格员预警记录
- * @param gridMemberWainDTO 请求参数
- * @return 预警记录
+ *
+ * @param gridMemberWainDTO
+ * 请求参数
+ * @return 预警记录
*/
@Override
- public R gridMemberWorkWarning(EventGridMemberWainDTO gridMemberWainDTO){
- return R.ok(this.baseMapper.gridMemberWorkWarning(new Page(gridMemberWainDTO.getPageNum(),gridMemberWainDTO.getPageSize()),gridMemberWainDTO));
+ public R gridMemberWorkWarning(EventGridMemberWainDTO gridMemberWainDTO) {
+ return R.ok(this.baseMapper.gridMemberWorkWarning(
+ new Page(gridMemberWainDTO.getPageNum(), gridMemberWainDTO.getPageSize()), gridMemberWainDTO));
}
/**
* 定时任务扫描网格员工作状态
- * @return 定时任务扫描结果
+ *
+ * @return 定时任务扫描结果
*/
@Override
- public R timedTaskGridMember(){
+ public R timedTaskGridMember() {
- //查询所有网格数据
- List<EventGridDataDO> gridDataDOList = eventGridDataMapper.selectList(new QueryWrapper<EventGridDataDO>()
- .lambda().eq(EventGridDataDO::getType,EventGridDataDO.type.sq));
- if(gridDataDOList.isEmpty()){
+ // 查询所有网格数据
+ List<EventGridDataDO> gridDataDOList = eventGridDataMapper.selectList(
+ new QueryWrapper<EventGridDataDO>().lambda().eq(EventGridDataDO::getType, EventGridDataDO.type.sq));
+ if (gridDataDOList.isEmpty()) {
return R.fail("未查询到网格数据");
}
- List<EventGridMemberGpsLogDO> memberGpsLogDOS = eventGridMemberGpsLogMapper.selectList(new QueryWrapper<EventGridMemberGpsLogDO>()
- .lambda().eq(EventGridMemberGpsLogDO::getPositionStation,EventGridMemberGpsLogDO.positionStation.no));
- if(!memberGpsLogDOS.isEmpty()){
-
+ List<EventGridMemberGpsLogDO> memberGpsLogDOS =
+ eventGridMemberGpsLogMapper.selectList(new QueryWrapper<EventGridMemberGpsLogDO>().lambda()
+ .eq(EventGridMemberGpsLogDO::getPositionStation, EventGridMemberGpsLogDO.positionStation.no));
+ if (!memberGpsLogDOS.isEmpty()) {
memberGpsLogDOS.forEach(memberGpsLog -> {
- //取出经纬度信息
+ if (StringUtils.isNotEmpty(memberGpsLog.getLngLat())) {
+ String[] lngLat = memberGpsLog.getLngLat().split(",");
+ Double lat = Double.valueOf(lngLat[0]);
+ Double lng = Double.valueOf(lngLat[1]);
+ // 遍历所有网格信息匹配网格员的坐标点是否在网格内
+ Boolean isOk = true;
+ Integer workStatus = 2;
+ for (EventGridDataDO gridData : gridDataDOList) {
+ if (StringUtils.isNotEmpty(gridData.getData())) {
+ List<LatLngVO> latLngList = LngLatUtils.getLatLngFromText(gridData.getData());
+ if (LngLatUtils.isInPolygon(latLngList, lng, lat)) {// 匹配通过
+ // 判断当前网格员与此网格是否有关系
+ Integer count = eventGridMemberRelationMapper
+ .selectCount(new QueryWrapper<EventGridMemberRelationDO>().lambda()
+ .eq(EventGridMemberRelationDO::getGridMemberId, memberGpsLog.getGridMemberId())
+ .eq(EventGridMemberRelationDO::getGridId, memberGpsLog.getGridId()));
+ if (count > 0) {
+ isOk = false;
+ workStatus = 1;
+ memberGpsLog.setGridId(gridData.getId());
+ memberGpsLog.setGridCommunityId(gridData.getGridCommunityId());
+ memberGpsLog.setGridStreetId(gridData.getGridStreetId());
+ memberGpsLog.setGridName(gridData.getGridName());
+ memberGpsLog.setPositionStation(EventGridMemberGpsLogDO.positionStation.normal);
+ eventGridMemberGpsLogMapper.updateById(memberGpsLog);
+ // 修改用户工作状态
+ this.baseMapper.setUserWorkStatus(memberGpsLog.getGridMemberId(), workStatus);
+ break;
+ }
+ }
+ }
+ }
+ if (isOk) {// 此网格员脱岗
+ memberGpsLog.setPositionStation(EventGridMemberGpsLogDO.positionStation.abnormal);
+ workStatus = 2;
+ // 新增网格员预警信息
+ EventGridMemberWarnLogDO memberWarnLogDO = new EventGridMemberWarnLogDO();
+ BeanUtils.copyProperties(memberGpsLog, memberWarnLogDO);
+ memberWarnLogDO.setId(null);
+ memberWarnLogDO.setContent("工作时间未在网格内预警");
+ memberWarnLogDO.setHappenAt(memberGpsLog.getCreateAt());
+ this.baseMapper.insert(memberWarnLogDO);
-
+ eventGridMemberGpsLogMapper.updateById(memberGpsLog);
+ // 修改用户工作状态
+ this.baseMapper.setUserWorkStatus(memberGpsLog.getGridMemberId(), workStatus);
+ }
+ }
});
}
-
-
-
-
-
return R.ok();
}
--
Gitblit v1.7.1