From 91275344f85d2777be0f276e9d9da3f6f3fa6728 Mon Sep 17 00:00:00 2001
From: tangxiaobao <303826152@qq.com>
Date: 星期五, 20 八月 2021 18:48:44 +0800
Subject: [PATCH] 实有人口和社区关系以及对应标签修改

---
 springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventGridMemberWarnLogServiceImpl.java |   61 ++++++++++++++++++++++++++----
 1 files changed, 52 insertions(+), 9 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..5fa8f5e 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
@@ -8,6 +8,9 @@
 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;
@@ -34,6 +37,8 @@
     private EventGridMemberGpsLogMapper eventGridMemberGpsLogMapper;
     @Resource
     private EventGridDataMapper eventGridDataMapper;
+    @Resource
+    private EventGridMemberRelationMapper eventGridMemberRelationMapper;
     /**
      * 新增网格员定时上报地理预警记录
      * @param eventGridMemberWarnLogAddDTO
@@ -131,20 +136,58 @@
         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;
 
-            memberGpsLogDOS.forEach(memberGpsLog -> {
-                //取出经纬度信息
+                    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