huanghongfa
2021-06-07 6d6f2463bc1d50e236e270d834431e775b2b5ee5
网格综治管理定时任务
6个文件已修改
87 ■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/LngLatUtils.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/dao/EventGridMemberWarnLogMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/model/dos/EventGridMemberWarnLogDO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/service/impl/EventGridMemberWarnLogServiceImpl.java 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/mapper/EventGridMemberWarnLogMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/GridMemberJobHandler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/LngLatUtils.java
@@ -27,6 +27,13 @@
        return peneralPath.contains(_point);
    }
    /**
     *
     * @param bound 经纬度数组
     * @param pointlng  短
     * @param pointLat  长
     * @return
     */
    public static  boolean isInPolygon(List<LatLngVO> bound, double pointlng, double pointLat)
    {
        Point2D.Double point = new Point2D.Double(pointlng, pointLat);
@@ -59,6 +66,7 @@
    public static void main(String[] args) {
        String latLngTxt = "[[104.065958,30.662621],[104.06419,30.663172],[104.06315,30.660648],[104.065548,30.661036]]";
        List<LatLngVO> latLngList = getLatLngFromText(latLngTxt);
        System.out.println(isInPolygon(latLngList, 104.0612, 30.6608));
    }
springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/dao/EventGridMemberWarnLogMapper.java
@@ -38,4 +38,6 @@
     */
    IPage<EventGridMemberWarnLogAdminVO> gridMemberWorkWarning(Page page, @Param("gridMemberWainDTO") EventGridMemberWainDTO gridMemberWainDTO);
    void setUserWorkStatus(@Param("userId") Long userId,@Param("workStatus") Integer workStatus);
}
springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/java/com/panzhihua/service_grid/model/dos/EventGridMemberWarnLogDO.java
@@ -70,4 +70,8 @@
     * 定位地址信息   列:position_address
     */
    private String positionAddress;
    /**
     * 发生时间     列:happen_at
     */
    private Date happenAt;
}
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,66 @@
        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();
    }
springcloud_k8s_panzhihuazhihuishequ/service_grid/src/main/resources/mapper/EventGridMemberWarnLogMapper.xml
@@ -83,4 +83,8 @@
        </if>
    </select>
    <update id="setUserWorkStatus">
        update sys_user set work_status = #{workStatus} where user_id = #{userId}
    </update>
</mapper>
springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/GridMemberJobHandler.java
@@ -22,7 +22,7 @@
    @XxlJob("timedTaskGridMemberJobHandler")
    public ReturnT<String> timedTaskGridMemberJobHandler(String param) throws Exception {
        log.info("定时任务判断网格员是否在岗开始");
        R r=gridService.getGridMemberListsByGrid(null);
        R r=gridService.timedTaskGridMember();
        log.info("执行结果【{}】",r.toString());
        return ReturnT.SUCCESS;
    }