fast()获取实时信息,重构电子围栏

car-ser
王熙朝 2024-06-18 16:15:57 +08:00
parent fe2ae95a94
commit f878804bf7
17 changed files with 220 additions and 60 deletions

View File

@ -26,6 +26,7 @@
<groupId>com.muyu</groupId> <groupId>com.muyu</groupId>
<artifactId>muyu-common-system</artifactId> <artifactId>muyu-common-system</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -0,0 +1,21 @@
package com.business.common.dev;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class LongitudeAndLatitude {
/**
*
*/
private String longitude;
/**
*
*/
private String latitude;
}

View File

@ -11,10 +11,6 @@ public class Fence {
* *
*/ */
private Long fenceId; private Long fenceId;
/**
*
*/
private Long groupId;
/** /**
* *
*/ */

View File

@ -13,14 +13,8 @@ public class FenceGroups {
* id * id
*/ */
private Long groupsId; private Long groupsId;
private Long carId;
/** /**
* *
*/ */
private String groupsName; private String groupsName;
/**
*
*/
private List<Fence> fenceList;
} }

View File

@ -1,8 +0,0 @@
package com.business.common.domain;
import lombok.Data;
@Data
public class LongitudeAndLatitude {
private String polygonItem;
}

View File

@ -0,0 +1,14 @@
package com.business.common.pojo;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class AppConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

View File

@ -0,0 +1,49 @@
package com.business.common.pojo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
@Service
public class HttpCar {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Autowired
private RestTemplate restTemplate;
public static void http(String name) {
//创建HttpClient实例
java.net.http.HttpClient httpClient = java.net.http.HttpClient.newHttpClient();
//创建httpRequest
HttpRequest builder = HttpRequest.newBuilder()
.uri(URI.create("http://129.211.23.219:9100/manage/"+ name +"/JAV0VJUJYOTOK9KSY/1"))
.header("Content-Type", "application/x-www-form-urlencoded")// 根据需要设置Content-Type如果服务期望其他类型的空请求体
.POST(HttpRequest.BodyPublishers.noBody())// 使用 POST 方法并设置请求体,没有设置为空
.build();
//发送请求并获取响应
try {
HttpResponse<String> send = httpClient.send(builder, HttpResponse.BodyHandlers.ofString());
int statusCode = send.statusCode();
String responseBody = send.body();
//处理响应
System.out.println("状态码: " + statusCode);
System.out.println("响应: " + responseBody);
} catch (IOException | InterruptedException e) {
throw new RuntimeException(e);
}
}
}

View File

@ -11,6 +11,6 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class Pences { public class Pences {
private Long groupsId; private Long pences;
private List<Path> list; private List<Path> list;
} }

View File

@ -112,6 +112,13 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId> <artifactId>spring-boot-starter</artifactId>
</dependency> </dependency>
<!-- http调用框架 -->
<dependency>
<groupId>com.dtflys.forest</groupId>
<artifactId>forest-spring-boot-starter</artifactId>
<version>1.5.36</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -0,0 +1,24 @@
package com.muyu.goods.client;
import com.dtflys.forest.annotation.BaseRequest;
import com.dtflys.forest.annotation.Post;
/**
* webhook
* @author GuanTieLin
* @Date 2024/4/11 10:49
*/
@BaseRequest(
baseURL = "http://129.211.23.219:9100",
connectTimeout = 5000,
readTimeout = 5000
)
public interface ManageApi {
@Post("/manage/open/JAV0VJUJYOTOK9KSY/1")
void open();
@Post("/manage/close/JAV0VJUJYOTOK9KSY/1")
void close();
}

View File

@ -3,7 +3,9 @@ package com.muyu.goods.controller;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.business.common.dev.LongitudeAndLatitude;
import com.business.common.domain.Car; import com.business.common.domain.Car;
import com.business.common.domain.VehicleInfo;
import com.muyu.goods.service.ICarService; import com.muyu.goods.service.ICarService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
@ -139,4 +141,30 @@ public class CarController extends BaseController
String s = redisTemplate.opsForValue().get("01"); String s = redisTemplate.opsForValue().get("01");
return Result.success(s); return Result.success(s);
} }
/**
*
* @param
* @return
*/
@PostMapping("read")
public Result<VehicleInfo> read() {
return success(carService.read());
}
/**
*
*/
@PostMapping("open")
public void open() {
carService.open();
}
/**
*
*/
@PostMapping("close")
public void close() {
carService.close();
}
} }

View File

@ -8,18 +8,14 @@ import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface MapMapper { public interface MapMapper {
void indexFenceGroups(@Param("carId") Long carId, @Param("groupsName") String groupsName);
List<FenceGroups> selectFenceGroups(); List<FenceGroups> selectFenceGroups();
List<Fence> selectFence(); List<Fence> selectFence();
int indexFence(Fence fence);
int deleteFence(@Param("fenceId") Long fenceId); int deleteFence(@Param("fenceId") Long fenceId);
Fence queryFence(@Param("fenceId") Long fenceId); Fence queryFence(@Param("fenceId") Long fenceId);
int updateFence(@Param("fenceId") Long fenceId, @Param("status") String status); int updateFence(@Param("fenceId") Long fenceId, @Param("status") String status);
} }

View File

@ -1,6 +1,8 @@
package com.muyu.goods.service; package com.muyu.goods.service;
import com.business.common.dev.LongitudeAndLatitude;
import com.business.common.domain.Car; import com.business.common.domain.Car;
import com.business.common.domain.VehicleInfo;
import java.util.List; import java.util.List;
@ -67,4 +69,10 @@ public interface ICarService
Car query(Long carId); Car query(Long carId);
VehicleInfo read();
void open();
void close();
} }

View File

@ -2,14 +2,21 @@ package com.muyu.goods.service.impl;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.business.common.domain.Car; import com.alibaba.fastjson.JSON;
import com.business.common.domain.Enterprise; import com.business.common.dev.LongitudeAndLatitude;
import com.business.common.domain.*;
import com.business.common.pojo.HttpCar;
import com.muyu.goods.client.ManageApi;
import com.muyu.goods.mapper.CarMapper; import com.muyu.goods.mapper.CarMapper;
import com.muyu.goods.mapper.MapMapper; import com.muyu.goods.mapper.MapMapper;
import com.muyu.goods.service.ICarService; import com.muyu.goods.service.ICarService;
import com.muyu.goods.timer.Timer;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
@ -19,6 +26,7 @@ import org.springframework.stereotype.Service;
* @date 2024-05-27 * @date 2024-05-27
*/ */
@Service @Service
@Log4j2
public class CarServiceImpl implements ICarService public class CarServiceImpl implements ICarService
{ {
@Autowired @Autowired
@ -27,6 +35,8 @@ public class CarServiceImpl implements ICarService
private BusinessServiceImpl businessService; private BusinessServiceImpl businessService;
@Autowired @Autowired
private MapMapper mapMapper; private MapMapper mapMapper;
@Autowired
private RedisTemplate<String,String> redisTemplate;
/** /**
* *
@ -84,8 +94,6 @@ public class CarServiceImpl implements ICarService
int i = carMapper.insertCar(car); int i = carMapper.insertCar(car);
if (i>0) { if (i>0) {
Car car1 = carMapper.carByCar(); Car car1 = carMapper.carByCar();
System.out.println(car1);
mapMapper.indexFenceGroups(car1.getCarId(),"car"+car1.getCarId());
} }
return i; return i;
} }
@ -130,4 +138,50 @@ public class CarServiceImpl implements ICarService
public Car query(Long carId) { public Car query(Long carId) {
return carMapper.query(carId); return carMapper.query(carId);
} }
@Autowired
private Timer timer;
@Override
public VehicleInfo read() {
String rightPopAndLeftPush = null;
try {
rightPopAndLeftPush = redisTemplate.opsForList().leftPop("event_handler:realtime_data:JAV0VJUJYOTOK9KSY"
, 3, TimeUnit.SECONDS);
if (rightPopAndLeftPush != null) {
log.info("处理消息: {}", rightPopAndLeftPush);
}
} catch (Exception e) {
log.error(e.getMessage());
}
if (rightPopAndLeftPush != null){
String parse = JSON.parse(rightPopAndLeftPush).toString();
VehicleInfo vehicleInfo = JSON.parseObject(parse, VehicleInfo.class);
// LongitudeAndLatitude longitudeAndLatitude = LongitudeAndLatitude.builder()
// .latitude(latitude)
// .longitude(longitude)
// .build();
return vehicleInfo;
}else{
return null;
}
}
@Autowired
private ManageApi manageApi;
@Override
public void open() {
// manageApi.open();
HttpCar.http("open");
}
@Override
public void close() {
HttpCar.http("close");
// manageApi.close();
}
} }

View File

@ -29,13 +29,6 @@ public class MapService implements IMapService {
@Override @Override
public List<FenceGroups> selectFenceGroups() { public List<FenceGroups> selectFenceGroups() {
List<FenceGroups> fenceGroupsList = mapMapper.selectFenceGroups(); List<FenceGroups> fenceGroupsList = mapMapper.selectFenceGroups();
for (FenceGroups fenceGroups : fenceGroupsList) {
if (selectFence() == null){
continue;
}
List<Fence> fenceList = selectFence().stream().filter(fa -> fa.getGroupId() == fenceGroups.getGroupsId()).collect(Collectors.toList());
fenceGroups.setFenceList(fenceList);
}
return fenceGroupsList; return fenceGroupsList;
} }
@ -56,8 +49,7 @@ public class MapService implements IMapService {
*/ */
@Override @Override
public FenceGroups selectFenceGroupsById(Long carId) { public FenceGroups selectFenceGroupsById(Long carId) {
List<FenceGroups> groups = selectFenceGroups().stream().filter(car -> car.getCarId() == carId).collect(Collectors.toList()); return null;
return groups.get(0);
} }
/** /**
@ -67,23 +59,7 @@ public class MapService implements IMapService {
*/ */
@Override @Override
public String getSel(Pences pences) { public String getSel(Pences pences) {
System.out.println(pences); return null;
if (pences.getGroupsId() == null){
return "数据不全";
}
FenceGroups fenceGroups = selectFenceGroups().stream().filter(g -> g.getGroupsId() == pences.getGroupsId()).collect(Collectors.toList()).get(0);
Fence fence = new Fence();
fence.setGroupId(pences.getGroupsId());
List<Path> list = pences.getList();
String jsonString = JSONArray.toJSONString(list);
fence.setPolygonPoints(jsonString);
List<Path> paths = JSONArray.parseArray(jsonString, Path.class);
fence.setFenceName("围栏"+ (fenceGroups.getFenceList().size()+1));
int i = mapMapper.indexFence(fence);
if (i> 0) {
return "传入电子围栏";
}
return "传入电子围栏失败";
} }
/** /**

View File

@ -1,5 +1,6 @@
package com.muyu.goods.timer; package com.muyu.goods.timer;
import com.muyu.goods.controller.CarController;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.apache.kafka.common.protocol.types.Field; import org.apache.kafka.common.protocol.types.Field;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
@ -20,10 +21,9 @@ public class Timer {
private RedisTemplate<String,String> redisTemplate; private RedisTemplate<String,String> redisTemplate;
@Scheduled(fixedDelay = 1000) @Scheduled(fixedDelay = 1000)
public void generateRandomNumber() { public String generateRandomNumber() {
// Random random = new Random(); Random random = new Random();
// int i = random.nextInt(100); int i = random.nextInt(100);
// System.out.println(i);
String rightPopAndLeftPush = null; String rightPopAndLeftPush = null;
try { try {
rightPopAndLeftPush = redisTemplate.opsForList().leftPop("event_handler:realtime_data:JAV0VJUJYOTOK9KSY" rightPopAndLeftPush = redisTemplate.opsForList().leftPop("event_handler:realtime_data:JAV0VJUJYOTOK9KSY"
@ -38,6 +38,8 @@ public class Timer {
// } // }
log.error(e.getMessage()); log.error(e.getMessage());
} }
rightPopAndLeftPush = String.valueOf(i);
return rightPopAndLeftPush;
} }
} }

View File

@ -6,13 +6,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="com.business.common.domain.FenceGroups" id="FenceGroupsResult"> <resultMap type="com.business.common.domain.FenceGroups" id="FenceGroupsResult">
<result property="groupsId" column="groups_id" /> <result property="groupsId" column="groups_id" />
<result property="carId" column="car_id" />
<result property="groupsName" column="groups_name" /> <result property="groupsName" column="groups_name" />
</resultMap> </resultMap>
<resultMap type="com.business.common.domain.Fence" id="FenceResult"> <resultMap type="com.business.common.domain.Fence" id="FenceResult">
<result property="fenceId" column="fence_id" /> <result property="fenceId" column="fence_id" />
<result property="groupId" column="group_id" />
<result property="fenceName" column="fence_name" /> <result property="fenceName" column="fence_name" />
<result property="fenceType" column="fence_type" /> <result property="fenceType" column="fence_type" />
<result property="eventType" column="event_type" /> <result property="eventType" column="event_type" />