From 26ff678b46dcfd13fb39543ce6bc770e92eeab89 Mon Sep 17 00:00:00 2001 From: shaowenhao <3121640096@qq.com> Date: Sun, 26 Nov 2023 19:33:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A6=E8=BE=86=E5=AE=9E=E6=97=B6=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../god/base/server/common/domain/Car.java | 9 + .../server/common/domain/VehicleMessage.java | 214 ++++++++++++++++++ .../common/domainConstants/RedisConstant.java | 26 +++ .../base/server/controller/CarController.java | 18 +- .../controller/DrivingRecordController.java | 37 +++ .../com/god/base/server/mapper/CarMapper.java | 6 + .../god/base/server/service/CarService.java | 10 + .../server/service/impl/CarServiceImpl.java | 30 +++ .../webSocket/config/WebSocketConfig.java | 18 ++ .../controller/WebSocketBatchSever.java | 29 +++ .../webSocket/controller/WebSocketServer.java | 31 +++ .../server/webSocket/entity/SocketData.java | 21 ++ .../webSocket/entity/VehicleAllData.java | 17 ++ .../webSocket/handler/SocketBatchHandler.java | 57 +++++ .../webSocket/handler/SocketHandler.java | 42 ++++ .../src/main/resources/mapper/CarMapper.xml | 15 ++ 16 files changed, 576 insertions(+), 4 deletions(-) create mode 100644 car-base-common/src/main/java/com/god/base/server/common/domain/VehicleMessage.java create mode 100644 car-base-common/src/main/java/com/god/base/server/common/domainConstants/RedisConstant.java create mode 100644 car-base-server/src/main/java/com/god/base/server/webSocket/config/WebSocketConfig.java create mode 100644 car-base-server/src/main/java/com/god/base/server/webSocket/controller/WebSocketBatchSever.java create mode 100644 car-base-server/src/main/java/com/god/base/server/webSocket/controller/WebSocketServer.java create mode 100644 car-base-server/src/main/java/com/god/base/server/webSocket/entity/SocketData.java create mode 100644 car-base-server/src/main/java/com/god/base/server/webSocket/entity/VehicleAllData.java create mode 100644 car-base-server/src/main/java/com/god/base/server/webSocket/handler/SocketBatchHandler.java create mode 100644 car-base-server/src/main/java/com/god/base/server/webSocket/handler/SocketHandler.java diff --git a/car-base-common/src/main/java/com/god/base/server/common/domain/Car.java b/car-base-common/src/main/java/com/god/base/server/common/domain/Car.java index b701f5b..bcf5f50 100644 --- a/car-base-common/src/main/java/com/god/base/server/common/domain/Car.java +++ b/car-base-common/src/main/java/com/god/base/server/common/domain/Car.java @@ -124,6 +124,15 @@ public class Car { @Excel(name = "车辆状态") private int status; + /** + * 电子围栏名称 + */ + private String fenceName; + /** + * 车辆类型名称 + */ + private String carTypeName; + public static Car carBuildAdd(CarRequest carRequest){ return Car.builder() .carVinId(carRequest.getCarVinId()) diff --git a/car-base-common/src/main/java/com/god/base/server/common/domain/VehicleMessage.java b/car-base-common/src/main/java/com/god/base/server/common/domain/VehicleMessage.java new file mode 100644 index 0000000..29c6254 --- /dev/null +++ b/car-base-common/src/main/java/com/god/base/server/common/domain/VehicleMessage.java @@ -0,0 +1,214 @@ +package com.god.base.server.common.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 报文信息实体类 + * VehicleMessage + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("vehicle_message") +public class VehicleMessage { + /** + * 消息标识 + */ + private String identifier; + /** + * VIN码 + */ + private String vin; + /** + * 经度 + */ + private String longitude; + /** + * 维度 + */ + private String latitude; + /** + * 车速 + */ + private String speed; + /** + * 总里程 + */ + private String totalDistance; + /** + * 总电压 + */ + private String totalVoltage; + /** + * 总电流 + */ + private String joinCurrent; + /** + * 绝缘电阻 + */ + private String insulationResistance; + /** + * 档位 + */ + private String gears; + /** + * 加速踏板行程值 + */ + private String acceleratorPedal; + /** + * 制动踏板行程值 + */ + private String brakePedal; + /** + * 燃料消耗率 + */ + private String fuelRate; + /** + * 电机控制器温度 + */ + private String motorControllerTemperature; + /** + * 电机转速 + */ + private String motorSpeed; + /** + * 电机转矩 + */ + private String motorTorque; + /** + * 电机温度 + */ + private String motorTemperature; + /** + * 电机电压 + */ + private String motorVoltage; + /** + * 电机电流 + */ + private String motorCurrent; + /** + * 动力电池剩余电量SOC + */ + private String dumpEnergy; + /** + * 当前状态允许的最大反馈功率 + */ + private String maximumFeedbackPower; + /** + * 当前状态允许最大放电功率 + */ + private String maximumDischargePower; + /** + * BMS自检计数器 + */ + private String selfCheckingCounter; + /** + * 动力电池充放电电流 + */ + private String chargingAndDischargingCurrent; + /** + * 动力电池负载端总电压V3 + */ + private String totalVoltageAtLoadEnd; + /** + * 单次最大电压 + */ + private String maximumVoltage; + /** + * 单体电池最低电压 + */ + private String lowestVoltageBattery; + /** + * 单体电池最高温度 + */ + private String maximumTemperatureBattery; + /** + * 单体电池最低温度 + */ + private String lowestTemperatureBattery; + /** + * 动力电池可用容量 + */ + private String availableBatteryCapacity; + /** + * 车辆状态 + */ + private Integer vehicleState; + /** + * 充电状态 + */ + private Integer chargingState; + /** + * 运行状态 + */ + private Integer runningStatus; + /** + * SOC + */ + private Integer socStatus; + /** + * 可充电储能装置工作状态 + */ + private Integer energyStorageDeviceState; + /** + * 驱动电机状态 + */ + private Integer driveMotorCondition; + /** + * 定位是否有效 + */ + private Integer positioningState; + /** + * 电子防窃系统状态 + */ + private Integer easStatus; + /** + * 传动系统状态 + */ + private Integer ptcStatus; + /** + * 蓄电池状态 + */ + private Integer epsStatus; + /** + * 防滑刹车系统状态 + */ + private Integer absStatus; + /** + * 微处理器状态 + */ + private Integer mcuStatus; + /** + * 动力电池加热状态 + */ + private Integer batteryHeatingCondition; + /** + * 动力电池当前状态 + */ + private Integer currentBatteryStatus; + /** + * 动力电池保温状态 + */ + private Integer batteryInsulationStatus; + /** + * 电力交换系统状态 + */ + private Integer dcdcStatus; + /** + * 充电机状态 + */ + private Integer chgStatus; + /** + * 时间 + */ + private Integer time; + + + + + +} diff --git a/car-base-common/src/main/java/com/god/base/server/common/domainConstants/RedisConstant.java b/car-base-common/src/main/java/com/god/base/server/common/domainConstants/RedisConstant.java new file mode 100644 index 0000000..2544a3e --- /dev/null +++ b/car-base-common/src/main/java/com/god/base/server/common/domainConstants/RedisConstant.java @@ -0,0 +1,26 @@ +package com.god.base.server.common.domainConstants; + +/** + * 数据解析端 + */ +public class RedisConstant { + /** + * 实时信息 + */ + public static final String CURRENT_INFO = "current_info"; + + /** + * 当日告警数 + */ + public static final String CURRENT_DAY_FAULT = "current_day_fault"; + + /** + * 当月告警数 + */ + public static final String CURRENT_MONTH_FAULT = "current_month_fault"; + + /** + * 车辆有关信息标识 + */ + public static final String VEHICLE_INFO_TOKEN = "vehicle_info_token:"; +} diff --git a/car-base-server/src/main/java/com/god/base/server/controller/CarController.java b/car-base-server/src/main/java/com/god/base/server/controller/CarController.java index 521866a..5c26bc3 100644 --- a/car-base-server/src/main/java/com/god/base/server/controller/CarController.java +++ b/car-base-server/src/main/java/com/god/base/server/controller/CarController.java @@ -2,6 +2,7 @@ package com.god.base.server.controller; import com.alibaba.fastjson.JSONObject; import com.god.base.server.common.domain.Car; +import com.god.base.server.common.domain.VehicleMessage; import com.god.base.server.common.domain.request.CarRequest; import com.god.base.server.service.CarService; import com.god.base.server.util.AopConfig; @@ -143,12 +144,21 @@ public class CarController extends BaseController { util.exportExcel(response,list,"车辆信息管理"); } + /** - * 实时轨迹 + * 获取所有在线车辆 */ - @PostMapping - public Result sSgj(){ - return null; + @GetMapping("/onlineVehicle") + public Result> onlineVehicle(){ + return carService.onlineVehicle(); + } + + /** + * 统计车辆 + */ + @GetMapping("/countData") + public Result countData(){ + return carService.countData(); } diff --git a/car-base-server/src/main/java/com/god/base/server/controller/DrivingRecordController.java b/car-base-server/src/main/java/com/god/base/server/controller/DrivingRecordController.java index 267d8b4..3b61b83 100644 --- a/car-base-server/src/main/java/com/god/base/server/controller/DrivingRecordController.java +++ b/car-base-server/src/main/java/com/god/base/server/controller/DrivingRecordController.java @@ -1,6 +1,7 @@ package com.god.base.server.controller; import com.god.base.server.common.domain.DrivingRecord; +import com.god.base.server.common.domain.VehicleMessage; import com.god.base.server.service.IDrivingRecordService; import com.god.common.core.domain.Result; import com.god.common.core.utils.poi.ExcelUtil; @@ -13,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.util.Date; import java.util.List; /** @@ -110,6 +112,41 @@ public class DrivingRecordController extends BaseController { return Result.success(drivingRecordService.deleteDrivingRecordByIds(ids)); } + /** + * 添加车辆行驶记录 + * @param vin + * @return + */ + @PostMapping("/strtVehocle/{vin}") + public Result startVehicle(@PathVariable("vin") String vin){ + DrivingRecord drivingRecord = new DrivingRecord(); + drivingRecord.setVin(vin); + drivingRecord.setStartTime(new Date()); + drivingRecordService.insertDrivingRecord(drivingRecord); + return Result.success(); + } + + /** + * 获取单条记录 + * @param id + * @return + */ + @GetMapping("/findOne/{id}") + public Result findOne(@PathVariable("id") Long id){ + DrivingRecord drivingRecord = drivingRecordService.selectDrivingRecordById(id); + return Result.success(drivingRecord); + } + + /** + * 回显历史轨迹 + * @param id + * @return + */ + @GetMapping("trackHistory/{id}") + public Result> trackHistory(@PathVariable Long id){ + return null; + } + } diff --git a/car-base-server/src/main/java/com/god/base/server/mapper/CarMapper.java b/car-base-server/src/main/java/com/god/base/server/mapper/CarMapper.java index 7104319..b2c9675 100644 --- a/car-base-server/src/main/java/com/god/base/server/mapper/CarMapper.java +++ b/car-base-server/src/main/java/com/god/base/server/mapper/CarMapper.java @@ -50,4 +50,10 @@ public interface CarMapper extends BaseMapper { * @return */ List selectVehicleInfoList(CarRequest carRequest); + + List getOnlineCarIds(); + + Integer getOnlineCarCount(); + + Integer getUnOnlineCount(); } diff --git a/car-base-server/src/main/java/com/god/base/server/service/CarService.java b/car-base-server/src/main/java/com/god/base/server/service/CarService.java index 7d62751..31fca05 100644 --- a/car-base-server/src/main/java/com/god/base/server/service/CarService.java +++ b/car-base-server/src/main/java/com/god/base/server/service/CarService.java @@ -2,6 +2,7 @@ package com.god.base.server.service; import com.baomidou.mybatisplus.extension.service.IService; import com.god.base.server.common.domain.Car; +import com.god.base.server.common.domain.VehicleMessage; import com.god.base.server.common.domain.request.CarRequest; import com.god.common.core.domain.Result; import org.apache.ibatis.annotations.Param; @@ -18,6 +19,15 @@ public interface CarService extends IService { List selectCarInfoList(CarRequest carRequest); + + Result> onlineVehicle(); + + /** + * 响应信息主题 + * @return + */ + Result countData(); + } diff --git a/car-base-server/src/main/java/com/god/base/server/service/impl/CarServiceImpl.java b/car-base-server/src/main/java/com/god/base/server/service/impl/CarServiceImpl.java index 3e10608..9004cd6 100644 --- a/car-base-server/src/main/java/com/god/base/server/service/impl/CarServiceImpl.java +++ b/car-base-server/src/main/java/com/god/base/server/service/impl/CarServiceImpl.java @@ -3,17 +3,21 @@ package com.god.base.server.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.god.base.server.common.domain.Car; +import com.god.base.server.common.domain.VehicleMessage; import com.god.base.server.common.domain.request.CarRequest; +import com.god.base.server.common.domainConstants.RedisConstant; import com.god.base.server.mapper.CarMapper; import com.god.base.server.service.CarService; import com.god.common.core.domain.Result; import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.io.Serializable; import java.util.List; +import java.util.stream.Collectors; /** * 车辆管理业务层 @@ -25,6 +29,9 @@ public class CarServiceImpl extends ServiceImpl implements CarSe @Autowired private CarMapper carMapper; + @Autowired + private RedisTemplate redisTemplate; + /** * 车辆信息 @@ -129,5 +136,28 @@ public class CarServiceImpl extends ServiceImpl implements CarSe return true; } + /** + * 获取所有在线车辆 + * @return + */ + @Override + public Result> onlineVehicle() { + List ids = carMapper.getOnlineCarIds(); + List messages = ids.stream().map(id -> { + VehicleMessage message = (VehicleMessage) redisTemplate.opsForValue().get(RedisConstant.CURRENT_INFO + ":" + id); + return message; + }).collect(Collectors.toList());Collectors.toList(); + return Result.success(messages); + } + + @Override + public Result countData() { + Integer day = (Integer) redisTemplate.opsForValue().get(RedisConstant.VEHICLE_INFO_TOKEN+RedisConstant.CURRENT_DAY_FAULT); + Integer month = (Integer) redisTemplate.opsForValue().get(RedisConstant.VEHICLE_INFO_TOKEN+RedisConstant.CURRENT_MONTH_FAULT); + Integer onlineCount = carMapper.getOnlineCarCount(); + Integer unOnlineCount = carMapper.getUnOnlineCount(); + return Result.success(day + ":" + month + ":" + onlineCount + ":" + unOnlineCount ); + } + } diff --git a/car-base-server/src/main/java/com/god/base/server/webSocket/config/WebSocketConfig.java b/car-base-server/src/main/java/com/god/base/server/webSocket/config/WebSocketConfig.java new file mode 100644 index 0000000..bf3589a --- /dev/null +++ b/car-base-server/src/main/java/com/god/base/server/webSocket/config/WebSocketConfig.java @@ -0,0 +1,18 @@ +//package com.god.base.server.webSocket.config; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.web.server.ServerWebInputException; +// +///** +// * WebSocketConfig +// * 开始webSocket +// * WenHao.Sao +// */ +//@Configuration +//public class WebSocketConfig { +// +// @Bean +// public ServerEndpointExporter serverEndpointExporter(){ +// return new ServerEndpointExporter(); +// } +//} diff --git a/car-base-server/src/main/java/com/god/base/server/webSocket/controller/WebSocketBatchSever.java b/car-base-server/src/main/java/com/god/base/server/webSocket/controller/WebSocketBatchSever.java new file mode 100644 index 0000000..03738fd --- /dev/null +++ b/car-base-server/src/main/java/com/god/base/server/webSocket/controller/WebSocketBatchSever.java @@ -0,0 +1,29 @@ +package com.god.base.server.webSocket.controller; + +import com.god.base.server.webSocket.handler.SocketBatchHandler; +import lombok.extern.log4j.Log4j2; +import org.springframework.stereotype.Component; + +import javax.websocket.OnOpen; +import javax.websocket.Session; +import javax.websocket.server.ServerEndpoint; + +/** + * @ClassName WebSocketBatchSever + * @Author WenHao.Sao + */ +@ServerEndpoint("/car/batch") +@Component +@Log4j2 +public class WebSocketBatchSever { + + /** + * 连接建立成功方法 + */ + @OnOpen + public void onOpen(Session session){ + log.info("车辆大屏新连接" + session.getId()); + SocketBatchHandler.sessions.add(session); + } + +} diff --git a/car-base-server/src/main/java/com/god/base/server/webSocket/controller/WebSocketServer.java b/car-base-server/src/main/java/com/god/base/server/webSocket/controller/WebSocketServer.java new file mode 100644 index 0000000..e488eeb --- /dev/null +++ b/car-base-server/src/main/java/com/god/base/server/webSocket/controller/WebSocketServer.java @@ -0,0 +1,31 @@ +package com.god.base.server.webSocket.controller; +import com.god.base.server.webSocket.entity.SocketData; +import com.god.base.server.webSocket.handler.SocketHandler; +import lombok.extern.log4j.Log4j2; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.PathVariable; +import javax.websocket.OnOpen; +import javax.websocket.Session; +import javax.websocket.server.ServerEndpoint; + + +/** + * WebSocketServer服务类 + */ +@ServerEndpoint("/vehicle/realTime/{vin}") +@Component +@Log4j2 +public class WebSocketServer { + /** + * 连接建立成功调用的方法 + */ + @OnOpen + public void onOpen(Session session , @PathVariable("vin") String vin){ + log.info("车辆实时轨迹,新连接:{}" , session.getId()); + SocketData socketData = new SocketData(); + socketData.setVin(vin); + socketData.setSession(session); + SocketHandler.socketList.add(socketData); + } + +} diff --git a/car-base-server/src/main/java/com/god/base/server/webSocket/entity/SocketData.java b/car-base-server/src/main/java/com/god/base/server/webSocket/entity/SocketData.java new file mode 100644 index 0000000..b6a50b8 --- /dev/null +++ b/car-base-server/src/main/java/com/god/base/server/webSocket/entity/SocketData.java @@ -0,0 +1,21 @@ +package com.god.base.server.webSocket.entity; + +import lombok.Data; + +import javax.websocket.Session; + +/** + * @ClassName SocketData + * @Author WenHao.Sao + */ +@Data +public class SocketData { + /** + * vin + */ + private String vin; + /** + *连接对象 + */ + private Session session; +} diff --git a/car-base-server/src/main/java/com/god/base/server/webSocket/entity/VehicleAllData.java b/car-base-server/src/main/java/com/god/base/server/webSocket/entity/VehicleAllData.java new file mode 100644 index 0000000..dff9389 --- /dev/null +++ b/car-base-server/src/main/java/com/god/base/server/webSocket/entity/VehicleAllData.java @@ -0,0 +1,17 @@ +package com.god.base.server.webSocket.entity; + +import com.god.base.server.common.domain.VehicleMessage; +import lombok.Data; + +import java.util.List; + +/** + * @ClassName VehicleAllData + * @Author WenHao.Sao + */ +@Data +public class VehicleAllData { + private List messages; + + private String info; +} diff --git a/car-base-server/src/main/java/com/god/base/server/webSocket/handler/SocketBatchHandler.java b/car-base-server/src/main/java/com/god/base/server/webSocket/handler/SocketBatchHandler.java new file mode 100644 index 0000000..cf17ff3 --- /dev/null +++ b/car-base-server/src/main/java/com/god/base/server/webSocket/handler/SocketBatchHandler.java @@ -0,0 +1,57 @@ +package com.god.base.server.webSocket.handler; + +import com.alibaba.fastjson.JSON; +import com.god.base.server.common.domain.VehicleMessage; +import com.god.base.server.common.domainConstants.RedisConstant; +import com.god.base.server.mapper.CarMapper; +import com.god.base.server.webSocket.entity.VehicleAllData; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.websocket.Session; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.stream.Collectors; + +/** + * @author swh的mac + * @Date 2023/11/20 14:37 + */ +@Log4j2 +@Component +public class SocketBatchHandler { + public static CopyOnWriteArrayList sessions = new CopyOnWriteArrayList<>(); + + @Autowired + private CarMapper carMapper; + + @Autowired + private RedisTemplate redisTemplate; + + @Scheduled(cron = "0/1 * * * * ?") + public void sendMessageFlush(){ + for (Session session : sessions) { + List ids = carMapper.getOnlineCarIds(); + List messages = ids.stream().map(id -> { + VehicleMessage message = (VehicleMessage) redisTemplate.opsForValue().get(RedisConstant.CURRENT_INFO + ":" + id); + return message; + }).collect(Collectors.toList()); + Integer day = (Integer) redisTemplate.opsForValue().get(RedisConstant.VEHICLE_INFO_TOKEN+RedisConstant.CURRENT_DAY_FAULT); + Integer month = (Integer) redisTemplate.opsForValue().get(RedisConstant.VEHICLE_INFO_TOKEN+RedisConstant.CURRENT_MONTH_FAULT); + Integer onlineCount = carMapper.getOnlineCarCount(); + Integer unOnlineCount = carMapper.getUnOnlineCount(); + VehicleAllData vehicleAllData = new VehicleAllData(); + vehicleAllData.setMessages(messages); + vehicleAllData.setInfo(day+":"+month+":"+onlineCount+":"+unOnlineCount); + try { + session.getBasicRemote().sendText(JSON.toJSONString(vehicleAllData)); + } catch (Exception e) { + log.info("{}:连接中断",session.getId()); + sessions.remove(session); + } + } + } +} diff --git a/car-base-server/src/main/java/com/god/base/server/webSocket/handler/SocketHandler.java b/car-base-server/src/main/java/com/god/base/server/webSocket/handler/SocketHandler.java new file mode 100644 index 0000000..834abcd --- /dev/null +++ b/car-base-server/src/main/java/com/god/base/server/webSocket/handler/SocketHandler.java @@ -0,0 +1,42 @@ +package com.god.base.server.webSocket.handler; + +import com.alibaba.fastjson.JSON; +import com.god.base.server.common.domain.VehicleMessage; +import com.god.base.server.common.domainConstants.RedisConstant; +import com.god.base.server.webSocket.entity.SocketData; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.websocket.Session; +import java.util.concurrent.CopyOnWriteArrayList; + +/** + * @author swh的mac + * @Date 2023/11/20 15:51 + */ +@Log4j2 +@Component +public class SocketHandler { + //存放每个客户端对应的MyWebSocket + public static CopyOnWriteArrayList socketList = new CopyOnWriteArrayList<>(); + + @Autowired + private RedisTemplate redisTemplate; + + @Scheduled(cron = "0/1 * * * * ?") + public void sendMessageFlush(){ + for (SocketData socketData : socketList) { + Session session = socketData.getSession(); + VehicleMessage msg = (VehicleMessage) redisTemplate.opsForValue().get(RedisConstant.CURRENT_INFO + ":" + socketData.getVin()); + try { + session.getBasicRemote().sendText(JSON.toJSONString(msg)); + } catch (Exception e) { + log.info("{}:连接中断",socketData.getSession().getId()); + socketList.remove(socketData); + } + } + } +} diff --git a/car-base-server/src/main/resources/mapper/CarMapper.xml b/car-base-server/src/main/resources/mapper/CarMapper.xml index ec922b6..42de0c8 100644 --- a/car-base-server/src/main/resources/mapper/CarMapper.xml +++ b/car-base-server/src/main/resources/mapper/CarMapper.xml @@ -40,4 +40,19 @@ + + + + + +