From cd7bec2448443f88eee6f73df68df829fc95eed9 Mon Sep 17 00:00:00 2001
From: 罗元桥 <2376770955@qq.com>
Date: 星期二, 29 六月 2021 11:25:24 +0800
Subject: [PATCH] Merge branch 'test' into 'master'
---
springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventGridMemberWarnLogServiceImpl.java | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 102 insertions(+), 4 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 4c5749b..626a6d0 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,15 +1,16 @@
package com.panzhihua.service_grid.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.panzhihua.common.model.dtos.grid.EventGridMemberWarnLogAddDTO;
-import com.panzhihua.common.model.dtos.grid.EventGridMemberWarnLogDeleteDTO;
-import com.panzhihua.common.model.dtos.grid.EventGridMemberWarnLogEditDTO;
-import com.panzhihua.common.model.dtos.grid.PageEventGridMemberWarnLogDTO;
+import com.panzhihua.common.model.dtos.grid.*;
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.common.model.vos.grid.LatLngVO;
+import com.panzhihua.common.utlis.LngLatUtils;
+import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.service_grid.dao.*;
import com.panzhihua.service_grid.model.dos.*;
import com.panzhihua.service_grid.service.EventGridMemberWarnLogService;
@@ -19,6 +20,7 @@
import javax.annotation.Resource;
import java.util.Date;
+import java.util.List;
/**
* @auther lyq
@@ -31,6 +33,12 @@
@Resource
private EventGridMemberWarnLogMapper eventGridMemberWarnLogMapper;
+ @Resource
+ private EventGridMemberGpsLogMapper eventGridMemberGpsLogMapper;
+ @Resource
+ private EventGridDataMapper eventGridDataMapper;
+ @Resource
+ private EventGridMemberRelationMapper eventGridMemberRelationMapper;
/**
* 新增网格员定时上报地理预警记录
* @param eventGridMemberWarnLogAddDTO
@@ -101,4 +109,94 @@
return R.fail();
}
+ /**
+ * 后台获取网格员预警记录
+ * @param gridMemberWainDTO 请求参数
+ * @return 预警记录
+ */
+ @Override
+ public R gridMemberWorkWarning(EventGridMemberWainDTO gridMemberWainDTO){
+ return R.ok(this.baseMapper.gridMemberWorkWarning(new Page(gridMemberWainDTO.getPageNum(),gridMemberWainDTO.getPageSize()),gridMemberWainDTO));
+ }
+
+ /**
+ * 定时任务扫描网格员工作状态
+ * @return 定时任务扫描结果
+ */
+ @Override
+ public R timedTaskGridMember(){
+
+ //查询所有网格数据
+ 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()){
+ 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;
+ for (EventGridDataDO gridData:gridDataDOList) {
+ if(StringUtils.isNotEmpty(gridData.getData())){
+ List<LatLngVO> latLngList = LngLatUtils.getLatLngFromText(gridData.getData());
+ if(LngLatUtils.isInPolygon(latLngList,lng,lat)){//匹配通过
+ isOk = false;
+ memberGpsLog.setGridId(gridData.getId());
+ memberGpsLog.setGridCommunityId(gridData.getGridCommunityId());
+ memberGpsLog.setGridStreetId(gridData.getGridStreetId());
+ memberGpsLog.setGridName(gridData.getGridName());
+
+ Integer workStatus = 0;
+ //判断当前网格员与此网格是否有关系
+ Integer count = eventGridMemberRelationMapper.selectCount(new QueryWrapper<EventGridMemberRelationDO>()
+ .lambda().eq(EventGridMemberRelationDO::getGridMemberId,memberGpsLog.getGridMemberId())
+ .eq(EventGridMemberRelationDO::getGridId,memberGpsLog.getGridId()));
+ if(count > 0){
+ //有关系说明此网格员未脱岗
+ memberGpsLog.setPositionStation(EventGridMemberGpsLogDO.positionStation.normal);
+ workStatus = 1;
+ }else{
+ //没关系说明此网格员脱岗了,需要添加预警信息
+ 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);
+ break;
+ }
+ }
+ }
+ //判断这个网格员的点是否能匹配上所有的网格
+ if(isOk){
+ //新增网格员预警信息
+ EventGridMemberWarnLogDO memberWarnLogDO = new EventGridMemberWarnLogDO();
+ BeanUtils.copyProperties(memberGpsLog,memberWarnLogDO);
+ memberWarnLogDO.setId(null);
+ memberWarnLogDO.setContent("工作时间未在网格内预警");
+ memberWarnLogDO.setHappenAt(memberGpsLog.getCreateAt());
+ this.baseMapper.insert(memberWarnLogDO);
+ }
+ }
+ });
+ }
+ return R.ok();
+ }
+
}
--
Gitblit v1.7.1