| | |
| | | List<EventGridMemberGpsLogDO> memberGpsLogDOS = eventGridMemberGpsLogMapper.selectList(new QueryWrapper<EventGridMemberGpsLogDO>() |
| | | .lambda().eq(EventGridMemberGpsLogDO::getPositionStation,EventGridMemberGpsLogDO.positionStation.no)); |
| | | if(!memberGpsLogDOS.isEmpty()){ |
| | | memberGpsLogDOS.forEach(memberGpsLog -> { |
| | | //取出经纬度信息 |
| | | 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)){//匹配通过 |
| | | isOk = false; |
| | | memberGpsLog.setGridId(gridData.getId()); |
| | | memberGpsLog.setGridCommunityId(gridData.getGridCommunityId()); |
| | | memberGpsLog.setGridStreetId(gridData.getGridStreetId()); |
| | | memberGpsLog.setGridName(gridData.getGridName()); |
| | | |
| | | Integer workStatus = 0; |
| | | 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){ |
| | | //有关系说明此网格员未脱岗 |
| | | memberGpsLog.setPositionStation(EventGridMemberGpsLogDO.positionStation.normal); |
| | | isOk = false; |
| | | 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); |
| | | 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; |
| | | } |
| | | eventGridMemberGpsLogMapper.updateById(memberGpsLog); |
| | | //修改用户工作状态 |
| | | this.baseMapper.setUserWorkStatus(memberGpsLog.getGridMemberId(),workStatus); |
| | | }else{ |
| | | memberGpsLog.setPositionStation(EventGridMemberGpsLogDO.positionStation.abnormal); |
| | | |
| | | //新增网格员预警信息 |
| | | 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(),2); |
| | | } |
| | | } |
| | | } |
| | | //判断这个网格员的点是否能匹配上所有的网格 |
| | | if(isOk){ |
| | | if(isOk){//此网格员脱岗 |
| | | memberGpsLog.setPositionStation(EventGridMemberGpsLogDO.positionStation.abnormal); |
| | | workStatus = 2; |
| | | //新增网格员预警信息 |
| | | EventGridMemberWarnLogDO memberWarnLogDO = new EventGridMemberWarnLogDO(); |
| | | BeanUtils.copyProperties(memberGpsLog,memberWarnLogDO); |
| | |
| | | memberWarnLogDO.setContent("工作时间未在网格内预警"); |
| | | memberWarnLogDO.setHappenAt(memberGpsLog.getCreateAt()); |
| | | this.baseMapper.insert(memberWarnLogDO); |
| | | |
| | | eventGridMemberGpsLogMapper.updateById(memberGpsLog); |
| | | //修改用户工作状态 |
| | | this.baseMapper.setUserWorkStatus(memberGpsLog.getGridMemberId(),workStatus); |
| | | } |
| | | } |
| | | }); |