huanghongfa
2021-09-02 177249c76aeea0b4bf8d8816d4994e3b445b45ce
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;
@@ -11,16 +19,17 @@
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.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
@@ -29,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;
@@ -39,16 +49,18 @@
    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();
@@ -56,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();
@@ -71,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));
@@ -87,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);
@@ -111,50 +128,56 @@
    /**
     * 后台获取网格员预警记录
     * @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()){
            memberGpsLogDOS.forEach(memberGpsLog ->{
                if(StringUtils.isNotEmpty(memberGpsLog.getLngLat())){
                    String []lngLat = memberGpsLog.getLngLat().split(",");
        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())){
                    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){
                            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());
@@ -163,27 +186,27 @@
                                    memberGpsLog.setGridName(gridData.getGridName());
                                    memberGpsLog.setPositionStation(EventGridMemberGpsLogDO.positionStation.normal);
                                    eventGridMemberGpsLogMapper.updateById(memberGpsLog);
                                    //修改用户工作状态
                                    this.baseMapper.setUserWorkStatus(memberGpsLog.getGridMemberId(),workStatus);
                                    // 修改用户工作状态
                                    this.baseMapper.setUserWorkStatus(memberGpsLog.getGridMemberId(), workStatus);
                                    break;
                                }
                            }
                        }
                    }
                    if(isOk){//此网格员脱岗
                    if (isOk) {// 此网格员脱岗
                        memberGpsLog.setPositionStation(EventGridMemberGpsLogDO.positionStation.abnormal);
                        workStatus = 2;
                        //新增网格员预警信息
                        // 新增网格员预警信息
                        EventGridMemberWarnLogDO memberWarnLogDO = new EventGridMemberWarnLogDO();
                        BeanUtils.copyProperties(memberGpsLog,memberWarnLogDO);
                        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);
                        // 修改用户工作状态
                        this.baseMapper.setUserWorkStatus(memberGpsLog.getGridMemberId(), workStatus);
                    }
                }
            });