From c3811d01d1929a98a0f34f70ca187d82ee312dbb Mon Sep 17 00:00:00 2001
From: manailin <261030956@qq.com>
Date: 星期三, 03 十一月 2021 17:26:50 +0800
Subject: [PATCH] Merge branch 'test' of http://gitlab.nhys.cdnhxx.com/root/zhihuishequ into test

---
 springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventGridMemberWarnLogServiceImpl.java |  163 ++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 138 insertions(+), 25 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..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,24 +1,35 @@
 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;
 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.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 lombok.extern.slf4j.Slf4j;
 
 /**
  * @auther lyq
@@ -27,20 +38,29 @@
  */
 @Slf4j
 @Service
-public class EventGridMemberWarnLogServiceImpl extends ServiceImpl<EventGridMemberWarnLogMapper, EventGridMemberWarnLogDO> implements EventGridMemberWarnLogService {
+public class EventGridMemberWarnLogServiceImpl extends
+    ServiceImpl<EventGridMemberWarnLogMapper, EventGridMemberWarnLogDO> implements EventGridMemberWarnLogService {
 
     @Resource
     private EventGridMemberWarnLogMapper eventGridMemberWarnLogMapper;
+    @Resource
+    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();
@@ -48,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();
@@ -63,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));
@@ -79,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);
@@ -101,4 +126,92 @@
         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;
+
+                    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