zhangnaisong
2024-07-26 b468cde8bfd9d6e1d7ae7ccc535fc7e8ffb9f818
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
@@ -87,7 +87,7 @@
            Map<String,Object> result = ((ArdSyCarServiceImpl)SpringUtils.getBean("ardSyCarServiceImpl")).getArdSyCarAndDeptByCarId(carId);//查询车辆及部门
            if(result != null){
                //清淤开始----------
                try{
                /*try{
                    String lng = (String) gpsMap.get("lng").toString();//获取经度
                    String lat = (String) gpsMap.get("lat").toString();//获取纬度
                    String carName = (String) gpsMap.get("carName");//获取车牌号
@@ -109,7 +109,7 @@
                        //无锁
                        rtuType = false;
                    }
    //                    log.debug("定位数据:车辆carId:"+carId+"经度lng:"+lng+"纬度lat:"+lat);
                    //log.debug("定位数据:车辆carId:"+carId+"经度lng:"+lng+"纬度lat:"+lat);
                    //定义2维空间
                    Point2D.Double point = new Point2D.Double(Double.parseDouble(lng), Double.parseDouble(lat));
                    List<Point2D.Double> pts = new ArrayList<Point2D.Double>();
@@ -177,42 +177,7 @@
                            }
                        }
                        //车辆有值优先判断是否为手动添加车辆
                        if(ardAccessFence.getIsAlarm()==1){
                            //1为手动添加车辆无需报警信息,更新位置即可
                            ardAccessFence.setLng(lng);
                            ardAccessFence.setLat(lat);
                            ardAccessFenceService.updAccess(ardAccessFence);
                        }else if(ardAccessFence.getIsAlarm() == 2){
                            //2为手动添加报警车辆有报警,所在围栏名称赋null,排查报警信息,只需处理路上情况
                            ardAccessFence.setNowWallName(null);
                            //如果在路上判断坐标是否与上次一样
                            if(ardAccessFence.getLng().equals(lng) && ardAccessFence.getLat().equals(lat)){
                                if(timeType){
                                    Date nowTime = sdf.parse(time);
                                    Date lastTime = sdf.parse(ardAccessFence.getLastTime());
                                    Long diff = (nowTime.getTime() - lastTime.getTime())/1000;
                                    ArdAccessNum list = accessNumService.queryNum();
                                    if(list!=null){
                                        int alarm = list.getAlarm();
                                        if(diff>=alarm){
                                            //报警字段为1提示报警
                                            ardAccessFence.setIsWarning(1);
                                            ardAccessFence.setAlarmLat(lat);
                                            ardAccessFence.setAlarmLng(lng);
                                            ardAccessFenceService.updAccess(ardAccessFence);
                                        }
                                    }
                                }else {
                                    log.debug(carId+"号车定位时间为空");
                                }
                            }else {
                                //如果不一样更新坐标
                                ardAccessFence.setLat(lat);
                                ardAccessFence.setLng(lng);
                                ardAccessFence.setLastTime(time);
                                ardAccessFenceService.updAccess(ardAccessFence);
                            }
                        }else if(ardAccessFence.getIsAlarm() == 0 || ardAccessFence.getIsAlarm() == null){
                        if(ardAccessFence.getIsAlarm() == 0 || ardAccessFence.getIsAlarm() == null){
                            //车辆非手动添加数据,判断是否有进入围栏ID
                            if(ardAccessFence.getIntoShipmentId()==null){
                                //没有进入装油点,赋值经纬度
@@ -368,13 +333,69 @@
                                    }
                                }
                            }
                        }else
                        if(ardAccessFence.getIsAlarm()==1){
                            //1为手动添加车辆无需报警信息,更新位置即可
                            ardAccessFence.setLng(lng);
                            ardAccessFence.setLat(lat);
                            ardAccessFenceService.updAccess(ardAccessFence);
                        }else if(ardAccessFence.getIsAlarm() == 2){
                            //2为手动添加报警车辆有报警,所在围栏名称赋null,排查报警信息,只需处理路上情况
                            ardAccessFence.setNowWallName(null);
                            //如果在路上判断坐标是否与上次一样
                            if(ardAccessFence.getLng().equals(lng) && ardAccessFence.getLat().equals(lat)){
                                if(timeType){
                                    Date nowTime = sdf.parse(time);
                                    Date lastTime = sdf.parse(ardAccessFence.getLastTime());
                                    Long diff = (nowTime.getTime() - lastTime.getTime())/1000;
                                    ArdAccessNum list = accessNumService.queryNum();
                                    if(list!=null){
                                        int alarm = list.getAlarm();
                                        if(diff>=alarm){
                                            //报警字段为1提示报警
                                            ardAccessFence.setIsWarning(1);
                                            ardAccessFence.setAlarmLat(lat);
                                            ardAccessFence.setAlarmLng(lng);
                                            ardAccessFenceService.updAccess(ardAccessFence);
                                        }
                                    }
                                }else {
                                    log.debug(carId+"号车定位时间为空");
                                }
                            }else {
                                //如果不一样更新坐标
                                ardAccessFence.setLat(lat);
                                ardAccessFence.setLng(lng);
                                ardAccessFence.setLastTime(time);
                                ardAccessFenceService.updAccess(ardAccessFence);
                            }
                        }
                    }
                    //清淤结束------------
                }catch(Exception e){
                }*/
                if(PositionContainer.getTankCarParkingAlarmTHread().get(carId) == null){
                    Thread tankCarParkingAlarmThread = new Thread(){//创建线程判断罐车异常停车报警
                        @Override
                        public void run() {
                            ((ArdTankAbnormalParkAlarmServiceImpl)SpringUtils.getBean("ardTankAbnormalParkAlarmServiceImpl")).insertArdTankAbnormalParkAlarm(gpsMap);
                        }
                    };
                    PositionContainer.getTankCarParkingAlarmTHread().put(carId,tankCarParkingAlarmThread);
                    tankCarParkingAlarmThread.start();
                }
                /*Thread autoProcessThread = new Thread(){//自动操控线程
                    @Override
                    public void run() {
                        ((ArdTankLockProcessLogServiceImpl)SpringUtils.getBean("ardTankLockProcessLogServiceImpl")).autoProcessArdTankLockByLockId(ip, userId, password, gpsMap);
                    }
                };
                autoProcessThread.start();*/
                gpsMap.putAll(result);
                String ancestors = (String) gpsMap.get("ancestors");//获取父级部门
                String[] ancestorsArray = ancestors.split(",");