From cf695c6db30c07e2ea9783f31660936787f67eb9 Mon Sep 17 00:00:00 2001 From: aijinhui <aijinhui> Date: 星期六, 21 十月 2023 14:06:56 +0800 Subject: [PATCH] 推送入栏 --- ard-work/src/main/java/com/ruoyi/sy/mapper/ArdOilWallMapper.java | 4 ard-work/src/main/java/com/ruoyi/utils/gps/GeoTools.java | 69 +++++++++++++++++ ard-work/src/main/java/com/ruoyi/sy/mapper/ArdAccessFenceMapper.java | 7 + ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java | 17 ++++ ard-work/src/main/java/com/ruoyi/sy/domain/ArdOilWall.java | 2 ard-work/src/main/java/com/ruoyi/sy/param/OilWallParam.java | 2 ard-work/src/main/java/com/ruoyi/sy/service/ArdOilWallService.java | 7 + ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java | 38 ++++++++- ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarLockService.java | 2 ard-work/src/main/java/com/ruoyi/sy/domain/ArdAccessFence.java | 18 ++++ ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdOilWallServiceImpl.java | 15 ++- ard-work/src/main/java/com/ruoyi/sy/controller/OilWallController.java | 41 +++++++++- ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java | 4 + ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java | 9 ++ 14 files changed, 213 insertions(+), 22 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/oil/controller/OilWallController.java b/ard-work/src/main/java/com/ruoyi/sy/controller/OilWallController.java similarity index 60% rename from ard-work/src/main/java/com/ruoyi/oil/controller/OilWallController.java rename to ard-work/src/main/java/com/ruoyi/sy/controller/OilWallController.java index 76aa0ea..f69b2e9 100644 --- a/ard-work/src/main/java/com/ruoyi/oil/controller/OilWallController.java +++ b/ard-work/src/main/java/com/ruoyi/sy/controller/OilWallController.java @@ -1,10 +1,15 @@ -package com.ruoyi.oil.controller; +package com.ruoyi.sy.controller; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.uuid.UUID; -import com.ruoyi.oil.domain.ArdOilWall; -import com.ruoyi.oil.param.OilWallParam; -import com.ruoyi.oil.service.ArdOilWallService; +import com.ruoyi.sy.domain.ArdOilWall; +import com.ruoyi.sy.param.OilWallParam; +import com.ruoyi.sy.service.ArdOilWallService; +import com.ruoyi.sy.domain.ArdSyCar; +import com.ruoyi.sy.domain.ArdSyUser; +import com.ruoyi.sy.service.IArdSyCarService; +import com.ruoyi.sy.service.IArdSyUserService; +import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.utils.result.Results; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -12,6 +17,7 @@ import org.springframework.web.bind.annotation.*; import java.util.Date; +import java.util.List; /** * @author Administrator @@ -23,6 +29,15 @@ @Autowired private ArdOilWallService ardOilWallService; + + @Autowired + private IArdSyCarService carService; + + @Autowired + private IArdSyUserService iArdSyUserService; + + @Autowired + private ISysConfigService sysConfigService; @PostMapping("/add") @ApiOperation("娣诲姞鐢靛瓙鍥存爮") @@ -59,4 +74,22 @@ return Results.succeed(ardOilWallService.query(oilWallParam)); } + @GetMapping("/wallCar") + @ApiOperation("鎵�鏈夎繘鍏ュ洿鏍忕殑杞﹁締") + public Results wallCar(){ + //鏌ヨ鎵�鏈夊凡鎸傝浇鐨勮溅杈� + List<ArdSyCar> carList = carService.all(); + //鑾峰彇杞﹁締浣嶇疆 + String usersId = SecurityUtils.getUserId(); + ArdSyUser ardSyUser = iArdSyUserService.userById(usersId); + String syURL = sysConfigService.getSYURL(); + for (int i = 0; i < carList.size(); i++) { + String carId = carList.get(i).getCarId(); + carService.getCarGPSBycarId(usersId,carId,syURL,ardSyUser); + } + + return Results.succeed(); + } + + } diff --git a/ard-work/src/main/java/com/ruoyi/sy/domain/ArdAccessFence.java b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdAccessFence.java new file mode 100644 index 0000000..7d86125 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdAccessFence.java @@ -0,0 +1,18 @@ +package com.ruoyi.sy.domain; + +import lombok.Data; + +/** + * @author Administrator + */ +@Data +public class ArdAccessFence { + private String id; + private String carId; + private String carName; + private String deptId; + private String deptName; + private String lng; + private String lat; + private String time; +} diff --git a/ard-work/src/main/java/com/ruoyi/oil/domain/ArdOilWall.java b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdOilWall.java similarity index 96% rename from ard-work/src/main/java/com/ruoyi/oil/domain/ArdOilWall.java rename to ard-work/src/main/java/com/ruoyi/sy/domain/ArdOilWall.java index fb23a1a..4a0d146 100644 --- a/ard-work/src/main/java/com/ruoyi/oil/domain/ArdOilWall.java +++ b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdOilWall.java @@ -1,4 +1,4 @@ -package com.ruoyi.oil.domain; +package com.ruoyi.sy.domain; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java index 9be6f79..cf6e07b 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java +++ b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java @@ -13,15 +13,16 @@ import com.gps31.push.netty.client.TcpClient; import com.gps31.push.util.MapUtil; import com.ruoyi.common.utils.spring.SpringUtils; +import com.ruoyi.sy.domain.ArdOilWall; +import com.ruoyi.sy.service.impl.ArdOilWallServiceImpl; import com.ruoyi.sy.service.impl.ArdSyCarDayServiceImpl; import com.ruoyi.sy.service.impl.ArdSyCarServiceImpl; +import com.ruoyi.utils.gps.GeoTools; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; +import java.awt.geom.Point2D; +import java.util.*; /** * <p>Description: </p> @@ -72,12 +73,37 @@ Map<String,Object> gpsMap = pushMsg.getJsonMap(); /*String carName = MapUtil.getStrVal(gpsMap, "carName","");//鑾峰彇杞︾墝鍙� SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - System.out.println(sdf.format(new Date())); - log.error(String.format(" ---->鏀跺埌瀹氫綅鏁版嵁:%s",JSON.toJSONString(gpsMap)));*/ + System.out.println(sdf.format(new Date()));*/ +// log.error(String.format(" ---->鏀跺埌瀹氫綅鏁版嵁:%s",JSON.toJSONString(gpsMap))); 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");//鑾峰彇閮ㄩ棬鍚嶇О + //瀹氫箟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]))); + } + if(GeoTools.IsPtInPoly(point, pts)){ + //杩涘叆浜嗗洿鏍忓叆搴� + + } + } gpsMap.putAll(result); String ancestors = (String) gpsMap.get("ancestors");//鑾峰彇鐖剁骇閮ㄩ棬 String[] ancestorsArray = ancestors.split(","); diff --git a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdAccessFenceMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdAccessFenceMapper.java new file mode 100644 index 0000000..3c8ddb4 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdAccessFenceMapper.java @@ -0,0 +1,7 @@ +package com.ruoyi.sy.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.sy.domain.ArdAccessFence; + +public interface ArdAccessFenceMapper extends BaseMapper<ArdAccessFence> { +} diff --git a/ard-work/src/main/java/com/ruoyi/oil/mapper/ArdOilWallMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdOilWallMapper.java similarity index 69% rename from ard-work/src/main/java/com/ruoyi/oil/mapper/ArdOilWallMapper.java rename to ard-work/src/main/java/com/ruoyi/sy/mapper/ArdOilWallMapper.java index 61c8f58..dac48f3 100644 --- a/ard-work/src/main/java/com/ruoyi/oil/mapper/ArdOilWallMapper.java +++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdOilWallMapper.java @@ -1,7 +1,7 @@ -package com.ruoyi.oil.mapper; +package com.ruoyi.sy.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.ruoyi.oil.domain.ArdOilWall; +import com.ruoyi.sy.domain.ArdOilWall; /** * @author Administrator diff --git a/ard-work/src/main/java/com/ruoyi/oil/param/OilWallParam.java b/ard-work/src/main/java/com/ruoyi/sy/param/OilWallParam.java similarity index 78% rename from ard-work/src/main/java/com/ruoyi/oil/param/OilWallParam.java rename to ard-work/src/main/java/com/ruoyi/sy/param/OilWallParam.java index f88923a..0a0207c 100644 --- a/ard-work/src/main/java/com/ruoyi/oil/param/OilWallParam.java +++ b/ard-work/src/main/java/com/ruoyi/sy/param/OilWallParam.java @@ -1,4 +1,4 @@ -package com.ruoyi.oil.param; +package com.ruoyi.sy.param; import lombok.Data; diff --git a/ard-work/src/main/java/com/ruoyi/oil/service/ArdOilWallService.java b/ard-work/src/main/java/com/ruoyi/sy/service/ArdOilWallService.java similarity index 68% rename from ard-work/src/main/java/com/ruoyi/oil/service/ArdOilWallService.java rename to ard-work/src/main/java/com/ruoyi/sy/service/ArdOilWallService.java index 4b447a8..a68c36d 100644 --- a/ard-work/src/main/java/com/ruoyi/oil/service/ArdOilWallService.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/ArdOilWallService.java @@ -1,8 +1,8 @@ -package com.ruoyi.oil.service; +package com.ruoyi.sy.service; -import com.ruoyi.oil.domain.ArdOilWall; -import com.ruoyi.oil.param.OilWallParam; +import com.ruoyi.sy.domain.ArdOilWall; +import com.ruoyi.sy.param.OilWallParam; import java.util.List; @@ -15,4 +15,5 @@ int updOilWall(ArdOilWall ardOilWall); ArdOilWall one(String id); List<ArdOilWall> query(OilWallParam oilWallParam); + List<ArdOilWall> all(); } diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarLockService.java b/ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarLockService.java index 1bb5e26..ee2e272 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarLockService.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarLockService.java @@ -1,5 +1,6 @@ package com.ruoyi.sy.service; +import com.ruoyi.sy.domain.ArdAccessFence; import com.ruoyi.sy.domain.ArdSyCarLock; import com.ruoyi.sy.domain.ArdSyCarRtu; import com.ruoyi.sy.vo.CarLockVo; @@ -33,4 +34,5 @@ RtuVo updRtu(String carId); int updRtuCar(ArdSyCarRtu ardSyCarRtu); + int access(ArdAccessFence ardAccessFence); } diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java b/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java index e2d1987..3e2c167 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java @@ -4,6 +4,7 @@ import java.util.Map; import com.ruoyi.scheduling.domian.SchedulingParam; +import com.ruoyi.sy.domain.ArdAccessFence; import com.ruoyi.sy.domain.ArdSyCar; import com.ruoyi.sy.domain.ArdSyUser; import com.ruoyi.utils.result.Results; @@ -143,4 +144,7 @@ * 鑾峰彇闄勮繎鑼冨洿鍐呯殑杞﹁締淇℃伅(澶氳竟褰�) * */ List<Map<String, Object>> getNearCarWithPolygon(SchedulingParam param); + + List<ArdSyCar> all(); + } diff --git a/ard-work/src/main/java/com/ruoyi/oil/service/impl/ArdOilWallServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdOilWallServiceImpl.java similarity index 79% rename from ard-work/src/main/java/com/ruoyi/oil/service/impl/ArdOilWallServiceImpl.java rename to ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdOilWallServiceImpl.java index feef9fd..64e0b07 100644 --- a/ard-work/src/main/java/com/ruoyi/oil/service/impl/ArdOilWallServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdOilWallServiceImpl.java @@ -1,10 +1,10 @@ -package com.ruoyi.oil.service.impl; +package com.ruoyi.sy.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.ruoyi.oil.domain.ArdOilWall; -import com.ruoyi.oil.mapper.ArdOilWallMapper; -import com.ruoyi.oil.service.ArdOilWallService; -import com.ruoyi.oil.param.OilWallParam; +import com.ruoyi.sy.domain.ArdOilWall; +import com.ruoyi.sy.mapper.ArdOilWallMapper; +import com.ruoyi.sy.service.ArdOilWallService; +import com.ruoyi.sy.param.OilWallParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -46,4 +46,9 @@ .eq(oilWallParam.getType()!=null,"type",oilWallParam.getType()); return ardOilWallMapper.selectList(queryWrapper); } + + @Override + public List<ArdOilWall> all() { + return ardOilWallMapper.selectList(null); + } } diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java index 9af588b..7c1c0b2 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java @@ -2,9 +2,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.entity.SysDept; +import com.ruoyi.sy.domain.ArdAccessFence; import com.ruoyi.sy.domain.ArdSyCar; import com.ruoyi.sy.domain.ArdSyCarLock; import com.ruoyi.sy.domain.ArdSyCarRtu; +import com.ruoyi.sy.mapper.ArdAccessFenceMapper; import com.ruoyi.sy.mapper.ArdSyCarLockMapper; import com.ruoyi.sy.mapper.ArdSyCarMapper; import com.ruoyi.sy.mapper.ArdSyCarRtuMapper; @@ -34,6 +36,8 @@ private ArdSyCarRtuMapper rtuMapper; @Autowired private ArdSyCarLockMapper lockMapper; + @Autowired + private ArdAccessFenceMapper ardAccessFenceMapper; @Override public List<CarVo> car() { @@ -160,6 +164,19 @@ return ardSyCarMapper.updateById(ardSyCar); } + @Override + public int access(ArdAccessFence ardAccessFence) { + int num = 0; + String carId = ardAccessFence.getCarId(); + QueryWrapper<ArdAccessFence> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("car_id",carId); + ArdAccessFence ardAccessFence1 = ardAccessFenceMapper.selectOne(queryWrapper); + if(ardAccessFence1==null){ + num = ardAccessFenceMapper.insert(ardAccessFence); + } + return num; + } + public List<CarVo> carAnalysis(List<ArdSyCar> ardSyCars){ List<CarVo> list = new ArrayList<>(); for (int i = 0; i < ardSyCars.size(); i++) { diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java index cc5c32b..479655e 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java @@ -17,6 +17,7 @@ import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.uuid.IdUtils; +import com.ruoyi.sy.domain.ArdAccessFence; import com.ruoyi.utils.gis.GisUtil; import com.ruoyi.utils.gis.Point; import com.ruoyi.scheduling.domian.SchedulingParam; @@ -1163,4 +1164,12 @@ } return filteredList; } + + @Override + public List<ArdSyCar> all() { + QueryWrapper<ArdSyCar> queryWrapper = new QueryWrapper<>(); + queryWrapper.ne("reserved_1",""); + return ardSyCarMapper.selectList(queryWrapper); + } + } diff --git a/ard-work/src/main/java/com/ruoyi/utils/gps/GeoTools.java b/ard-work/src/main/java/com/ruoyi/utils/gps/GeoTools.java new file mode 100644 index 0000000..e9470aa --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/utils/gps/GeoTools.java @@ -0,0 +1,69 @@ +package com.ruoyi.utils.gps; + +import java.awt.geom.Point2D; +import java.util.List; + +public class GeoTools { + public static boolean IsPtInPoly(Point2D.Double point, List<Point2D.Double> pts){ + int N = pts.size(); + boolean boundOrVertex = true; //濡傛灉鐐逛綅浜庡杈瑰舰鐨勯《鐐规垨杈逛笂锛屼篃绠楀仛鐐瑰湪澶氳竟褰㈠唴锛岀洿鎺ヨ繑鍥瀟rue + int intersectCount = 0;//cross points count of x + double precision = 2e-10; //娴偣绫诲瀷璁$畻鏃跺�欎笌0姣旇緝鏃跺�欑殑瀹瑰樊 + Point2D.Double p1, p2;//neighbour bound vertices + Point2D.Double p = point; //褰撳墠鐐� + + p1 = pts.get(0);//left vertex + for(int i = 1; i <= N; ++i){//check all rays + if(p.equals(p1)){ + return boundOrVertex;//p is an vertex + } + + p2 = pts.get(i % N);//right vertex + if(p.x < Math.min(p1.x, p2.x) || p.x > Math.max(p1.x, p2.x)){//ray is outside of our interests + p1 = p2; + continue;//next ray left point + } + + if(p.x > Math.min(p1.x, p2.x) && p.x < Math.max(p1.x, p2.x)){//ray is crossing over by the algorithm (common part of) + if(p.y <= Math.max(p1.y, p2.y)){//x is before of ray + if(p1.x == p2.x && p.y >= Math.min(p1.y, p2.y)){//overlies on a horizontal ray + return boundOrVertex; + } + + if(p1.y == p2.y){//ray is vertical + if(p1.y == p.y){//overlies on a vertical ray + return boundOrVertex; + }else{//before ray + ++intersectCount; + } + }else{//cross point on the left side + double xinters = (p.x - p1.x) * (p2.y - p1.y) / (p2.x - p1.x) + p1.y;//cross point of y + if(Math.abs(p.y - xinters) < precision){//overlies on a ray + return boundOrVertex; + } + + if(p.y < xinters){//before ray + ++intersectCount; + } + } + } + }else{//special case when ray is crossing through the vertex + if(p.x == p2.x && p.y <= p2.y){//p crossing over p2 + Point2D.Double p3 = pts.get((i+1) % N); //next vertex + if(p.x >= Math.min(p1.x, p3.x) && p.x <= Math.max(p1.x, p3.x)){//p.x lies between p1.x & p3.x + ++intersectCount; + }else{ + intersectCount += 2; + } + } + } + p1 = p2;//next ray left point + } + + if(intersectCount % 2 == 0){//鍋舵暟鍦ㄥ杈瑰舰澶� + return false; + } else { //濂囨暟鍦ㄥ杈瑰舰鍐� + return true; + } + } +} -- Gitblit v1.9.3