| | |
| | | import com.ruoyi.sy.domain.ArdAccessFence; |
| | | import com.ruoyi.sy.domain.ArdOilWall; |
| | | import com.ruoyi.sy.domain.ArdSyCarLock; |
| | | import com.ruoyi.sy.service.impl.ArdOilWallServiceImpl; |
| | | import com.ruoyi.sy.service.impl.ArdSyCarDayServiceImpl; |
| | | import com.ruoyi.sy.service.impl.ArdSyCarLockServiceImpl; |
| | | import com.ruoyi.sy.service.impl.ArdSyCarServiceImpl; |
| | | import com.ruoyi.sy.service.impl.*; |
| | | import com.ruoyi.utils.gps.GeoTools; |
| | | import org.apache.commons.logging.Log; |
| | | import org.apache.commons.logging.LogFactory; |
| | |
| | | String carId = (String)gpsMap.get("carId"); |
| | | ((ArdSyCarDayServiceImpl)SpringUtils.getBean("ardSyCarDayServiceImpl")).insertArdSyCarDay(carId);//新增车辆上报时间 |
| | | Map<String,Object> result = ((ArdSyCarServiceImpl)SpringUtils.getBean("ardSyCarServiceImpl")).getArdSyCarAndDeptByCarId(carId);//查询车辆及部门 |
| | | // log.error("---------------------"+result); |
| | | if(result != null){ |
| | | //清淤定位 |
| | | //清淤入栏开始---------- |
| | | String lng = (String) gpsMap.get("lng");//获取经度 |
| | | String lat = (String) gpsMap.get("lat");//获取纬度 |
| | | String carName = (String) gpsMap.get("carName");//获取车牌号 |
| | | String time = (String) gpsMap.get("result");//定位时间 |
| | | String deptNum = (String) result.get("deptId");//获取部门ID |
| | | String deptName = (String) result.get("deptName");//获取部门名称 |
| | | // String carId = "13"; |
| | | // String lng = "124.74695492384757"; |
| | | // String lat = "46.09510768522894"; |
| | | // String carName = "黑E21397";//获取车牌号 |
| | | // String time = "20231019161815";//定位时间 |
| | | // String deptNum = "100";//获取部门ID |
| | | // String deptName = "厂级";//获取部门名称 |
| | | //定义2维空间 |
| | | Point2D.Double point = new Point2D.Double(Double.parseDouble(lng), Double.parseDouble(lat)); |
| | | List<Point2D.Double> pts = new ArrayList<Point2D.Double>(); |
| | | //匹配全部围栏 |
| | | List<ArdOilWall> ardOilWalls = ((ArdOilWallServiceImpl)SpringUtils.getBean("ArdOilWallServiceImpl")).all(); |
| | | for (int i = 0; i < ardOilWalls.size(); i++) { |
| | | pts.clear(); |
| | | ArdOilWall ardOilWall = ardOilWalls.get(i); |
| | | String[] coord = ardOilWall.getCoord().split(","); |
| | | for (int j = 0; j < coord.length; j = j + 3) { |
| | | pts.add(new Point2D.Double(Double.parseDouble(coord[j]), Double.parseDouble(coord[j+1]))); |
| | | //查询定位油车表中是否有该车辆 |
| | | ArdAccessFence ardAccessFence = ((ArdAccessFenceServiceImpl)SpringUtils.getBean("ArdAccessFenceServiceImpl")).queryAccess(carId); |
| | | //如果没有说明车辆未进入装油点,需要匹配所有装油点围栏 |
| | | if(ardAccessFence==null){ |
| | | //匹配全部装油点围栏 |
| | | List<ArdOilWall> ardOilWalls = ((ArdOilWallServiceImpl)SpringUtils.getBean("ArdOilWallServiceImpl")).accessAll(); |
| | | for (int i = 0; i < ardOilWalls.size(); i++) { |
| | | pts.clear(); |
| | | ArdOilWall ardOilWall = ardOilWalls.get(i); |
| | | String[] coord = ardOilWall.getCoord().split(","); |
| | | for (int j = 0; j < coord.length; j = j + 3) { |
| | | pts.add(new Point2D.Double(Double.parseDouble(coord[j]), Double.parseDouble(coord[j+1]))); |
| | | } |
| | | if(GeoTools.IsPtInPoly(point, pts)){ |
| | | //进入了围栏入库 |
| | | ArdAccessFence ardAccessFence1 = new ArdAccessFence(); |
| | | ardAccessFence1.setId(String.valueOf(UUID.randomUUID())); |
| | | ardAccessFence1.setCarId(carId); |
| | | ardAccessFence1.setCarName(carName); |
| | | ardAccessFence1.setDeptId(deptNum); |
| | | ardAccessFence1.setDeptName(deptName); |
| | | ardAccessFence1.setIntoShipment("进入装油点"); |
| | | ardAccessFence1.setIntoShipmentTime(time); |
| | | ardAccessFence1.setLng(lng); |
| | | ardAccessFence1.setLat(lat); |
| | | ((ArdAccessFenceServiceImpl)SpringUtils.getBean("ArdAccessFenceServiceImpl")).access(ardAccessFence1); |
| | | break; |
| | | } |
| | | } |
| | | if(GeoTools.IsPtInPoly(point, pts)){ |
| | | //进入了围栏入库 |
| | | ArdAccessFence ardAccessFence = new ArdAccessFence(); |
| | | ardAccessFence.setId(String.valueOf(UUID.randomUUID())); |
| | | ardAccessFence.setCarId(carId); |
| | | ardAccessFence.setCarName(carName); |
| | | ardAccessFence.setDeptId(deptNum); |
| | | ardAccessFence.setDeptName(deptName); |
| | | ardAccessFence.setIntoShipment("进入装油点"); |
| | | ardAccessFence.setIntoShipmentTime(time); |
| | | }else { |
| | | String unload = ardAccessFence.getIntoUnloadId(); |
| | | //如果unload为空,判断是否进入卸油点 |
| | | if(unload==null){ |
| | | //查询全部卸油点 |
| | | List<ArdOilWall> ardOilWalls = ((ArdOilWallServiceImpl) SpringUtils.getBean("ArdOilWallServiceImpl")).uploadAll(); |
| | | for (int i = 0; i < ardOilWalls.size(); i++) { |
| | | pts.clear(); |
| | | ArdOilWall ardOilWall = ardOilWalls.get(i); |
| | | String[] coord = ardOilWall.getCoord().split(","); |
| | | for (int j = 0; j < coord.length; j = j + 3) { |
| | | pts.add(new Point2D.Double(Double.parseDouble(coord[j]), Double.parseDouble(coord[j + 1]))); |
| | | } |
| | | if (GeoTools.IsPtInPoly(point, pts)) { |
| | | //进入卸油点,存入卸油点围栏ID |
| | | ardAccessFence.setIntoUnloadId(ardOilWall.getId()); |
| | | ardAccessFence.setIntoUnloadTime(time); |
| | | break; |
| | | } |
| | | } |
| | | ardAccessFence.setLng(lng); |
| | | ardAccessFence.setLat(lat); |
| | | ((ArdSyCarLockServiceImpl)SpringUtils.getBean("ArdSyCarLockServiceImpl")).access(ardAccessFence); |
| | | ((ArdAccessFenceServiceImpl)SpringUtils.getBean("ArdAccessFenceServiceImpl")).updAccess(ardAccessFence); |
| | | }else { |
| | | //如果unload有值,则继续判断是否出了卸油点,匹配卸油点的唯一ID |
| | | ArdOilWall ardOilWall = ((ArdOilWallServiceImpl) SpringUtils.getBean("ArdOilWallServiceImpl")).one(unload); |
| | | pts.clear(); |
| | | String[] coord = ardOilWall.getCoord().split(","); |
| | | for (int j = 0; j < coord.length; j = j + 3) { |
| | | pts.add(new Point2D.Double(Double.parseDouble(coord[j]), Double.parseDouble(coord[j + 1]))); |
| | | } |
| | | if (!GeoTools.IsPtInPoly(point, pts)) { |
| | | //开出了卸油点围栏,删除该条车辆数据 |
| | | ((ArdAccessFenceServiceImpl) SpringUtils.getBean("ArdAccessFenceServiceImpl")).delAccess(carId); |
| | | }else { |
| | | //未开出卸油点,更新经纬度保存 |
| | | ardAccessFence.setLng(lng); |
| | | ardAccessFence.setLat(lat); |
| | | ((ArdAccessFenceServiceImpl)SpringUtils.getBean("ArdAccessFenceServiceImpl")).updAccess(ardAccessFence); |
| | | } |
| | | } |
| | | |
| | | } |
| | | //清淤入栏结束------------ |
| | | |
| | | gpsMap.putAll(result); |
| | | String ancestors = (String) gpsMap.get("ancestors");//获取父级部门 |
| | | String[] ancestorsArray = ancestors.split(","); |