From 4c9ff6ff054c93ccc39dc14a36bce82d4214c3b4 Mon Sep 17 00:00:00 2001 From: shaowenhao <3121640096@qq.com> Date: Sat, 25 Nov 2023 08:38:52 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E8=BD=A6=E8=BE=86=E5=AE=9E=E6=97=B6?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constants/VehicleConstant.java | 32 ++++ .../god/base/server/common/domain/Car.java | 5 +- .../server/common/domain/DrivingRecord.java | 66 ++++++++ .../src/main/resources/bootstrap.yml | 2 +- .../base/server/controller/CarController.java | 13 +- .../controller/DrivingRecordController.java | 145 ++++++++++++++++++ .../server/mapper/DrivingRecordMapper.java | 68 ++++++++ .../server/service/IDrivingRecordService.java | 65 ++++++++ .../impl/IDrivingRecordServiceImpl.java | 97 ++++++++++++ .../com/god/base/server/util/AopConfig.java | 67 ++++++++ .../resources/mapper/DrivingRecordMapper.xml | 93 +++++++++++ 11 files changed, 641 insertions(+), 12 deletions(-) create mode 100644 car-base-common/src/main/java/com/god/base/server/common/constants/VehicleConstant.java create mode 100644 car-base-common/src/main/java/com/god/base/server/common/domain/DrivingRecord.java create mode 100644 car-base-server/src/main/java/com/god/base/server/controller/DrivingRecordController.java create mode 100644 car-base-server/src/main/java/com/god/base/server/mapper/DrivingRecordMapper.java create mode 100644 car-base-server/src/main/java/com/god/base/server/service/IDrivingRecordService.java create mode 100644 car-base-server/src/main/java/com/god/base/server/service/impl/IDrivingRecordServiceImpl.java create mode 100644 car-base-server/src/main/java/com/god/base/server/util/AopConfig.java create mode 100644 car-base-server/src/main/resources/mapper/DrivingRecordMapper.xml diff --git a/car-base-common/src/main/java/com/god/base/server/common/constants/VehicleConstant.java b/car-base-common/src/main/java/com/god/base/server/common/constants/VehicleConstant.java new file mode 100644 index 0000000..53f4924 --- /dev/null +++ b/car-base-common/src/main/java/com/god/base/server/common/constants/VehicleConstant.java @@ -0,0 +1,32 @@ +package com.god.base.server.common.constants; + + +/** + * 车辆信息 + */ +public class VehicleConstant { + + /** + * 车辆启动 + */ + public static final Integer VEHICLE_START = 1; + /** + * 车辆停止 + */ + public static final Integer VEHICLE_END = 0 ; + /** + * 车辆状态更改队列 + */ + public static final String VEHICLE_STATUS_UPDATE_QUEUE = "vehicle_status_update_queue"; + /** + * 车辆信息前缀 + */ + public static final String VEHICLE_INFO_MAP = "vehicle_info_map"; + + + + + + + +} 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 e91cfbb..b701f5b 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 @@ -12,8 +12,7 @@ import lombok.NoArgsConstructor; import java.util.Date; /** - * @ClassName Car - * @Author WenHao.Sao + * 车辆信息管理对象 */ @Data @AllArgsConstructor @@ -22,6 +21,8 @@ import java.util.Date; @TableName(value = "t_car") public class Car { + private static final long serialVersionUID = 1L; + /** * 车辆Vin 主键 */ diff --git a/car-base-common/src/main/java/com/god/base/server/common/domain/DrivingRecord.java b/car-base-common/src/main/java/com/god/base/server/common/domain/DrivingRecord.java new file mode 100644 index 0000000..495a536 --- /dev/null +++ b/car-base-common/src/main/java/com/god/base/server/common/domain/DrivingRecord.java @@ -0,0 +1,66 @@ +package com.god.base.server.common.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.god.common.core.annotation.Excel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.Date; + +/** + * 车辆行驶记录对象 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("driving_record") +@Builder +public class DrivingRecord { + private static final long serialVersionUID = 1L; + + /** + * id + */ + private long id; + /** + * vin + */ + private String vin; + /** + * 开始时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "开始时间" , width = 30 , dateFormat = "yyyy-MM-dd") + private Date startTime; + /** + * 结束时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "结束时间" , width = 30 , dateFormat = "yyyy-MM-dd") + private Date endTime; + /** + * 开始表示 + */ + private String startKey; + /** + * 结束标识 + */ + private String endKey; + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("id",getId()) + .append("vin",getVin()) + .append("startTime",getStartTime()) + .append("endTime",getEndKey()) + .append("startKey",getStartKey()) + .append("endKey",getEndKey()) + .toString(); + } +} diff --git a/car-base-common/src/main/resources/bootstrap.yml b/car-base-common/src/main/resources/bootstrap.yml index a68864d..403a368 100644 --- a/car-base-common/src/main/resources/bootstrap.yml +++ b/car-base-common/src/main/resources/bootstrap.yml @@ -6,7 +6,7 @@ server: spring: application: # 应用名称 - name: god-car-management + name: god-car-base profiles: # 环境配置 active: dev 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 af98c20..521866a 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 @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.god.base.server.common.domain.Car; import com.god.base.server.common.domain.request.CarRequest; import com.god.base.server.service.CarService; +import com.god.base.server.util.AopConfig; import com.god.common.core.domain.Result; import com.god.common.core.utils.poi.ExcelUtil; import com.god.common.core.web.controller.BaseController; @@ -34,6 +35,9 @@ public class CarController extends BaseController { @Autowired private CarService carService; + @Autowired + private AopConfig aopConfig; + /** * 查询车辆信息管理列表 @@ -41,19 +45,10 @@ public class CarController extends BaseController { @RequiresPermissions @GetMapping("/list") public Result> list(@RequestBody CarRequest carRequest){ - log.info("功能介绍车辆信息列表查看,请求方式:{},请求路径:{},请求参数:{}", - request.getMethod(), - request.getRequestURL(), - JSONObject.toJSONString(carRequest)); startPage();//设置请求分页数据 List list = carService.selectCarInfoList(carRequest); - log.info("功能介绍车辆信息列表查看,响应方式:{},响应路径:{},响应参数:{}", - request.getMethod(), - request.getRequestURL(), - JSONObject.toJSONString(list)); - return getDataTable(list); } 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 new file mode 100644 index 0000000..267d8b4 --- /dev/null +++ b/car-base-server/src/main/java/com/god/base/server/controller/DrivingRecordController.java @@ -0,0 +1,145 @@ +package com.god.base.server.controller; + +import com.god.base.server.common.domain.DrivingRecord; +import com.god.base.server.service.IDrivingRecordService; +import com.god.common.core.domain.Result; +import com.god.common.core.utils.poi.ExcelUtil; +import com.god.common.core.web.controller.BaseController; +import com.god.common.core.web.page.TableDataInfo; +import com.god.common.log.annotation.Log; +import com.god.common.log.enums.BusinessType; +import com.god.common.security.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 车辆行驶记录 DrivingRecordController + */ +@RestController +@RequestMapping("/record") +public class DrivingRecordController extends BaseController { + + @Autowired + private IDrivingRecordService drivingRecordService; + + /** + * 查询车辆行驶记录 + * + * @param drivingRecord + * @return + */ + @RequiresPermissions("record:record:list") + @GetMapping("list") + public Result> list(DrivingRecord drivingRecord){ + //设置请求分页数据 + startPage(); + List list = drivingRecordService.selectDrivingRecordList(drivingRecord); + return getDataTable(list); + } + + + /** + * 导出车辆行驶记录列表 + * @param response + * @param drivingRecord + */ + @RequiresPermissions("record:record:export") + @Log(title = "车辆行驶记录" , businessType = BusinessType.EXPORT) // 导出 + @PostMapping("export") + public void export(HttpServletResponse response , DrivingRecord drivingRecord) + { + List list = drivingRecordService.selectDrivingRecordList(drivingRecord); + ExcelUtil util = new ExcelUtil<>(DrivingRecord.class); + //对list数据源将其里面的数据导入到excel表中 + util.exportExcel(response , list , "车辆行驶记录数据"); + } + + /** + * 获取车辆行驶记录详细信息 + * @param id + * @return + */ + @GetMapping(value = "/{id}") + public Result getInfo(@PathVariable("id") Long id){ //操作信息提醒 + //返回成功数据 | 查询车辆行驶记录 + return Result.success(drivingRecordService.selectDrivingRecordById(id)); + } + + /** + * 新增车辆行驶记录 + * @param drivingRecord + * @return + */ + @RequiresPermissions("record:record:add") + @Log(title = "车辆行驶记录" , businessType = BusinessType.INSERT) // 新增 + @PostMapping + public Result add(@RequestBody DrivingRecord drivingRecord){ + //响应返回结果 | 新增车辆行驶记录 + return Result.success(drivingRecordService.insertDrivingRecord(drivingRecord)); + } + + /** + * 修改车辆行驶记录 + * @param drivingRecord + * @return + */ + @RequiresPermissions("record:record:edit") + @Log(title = "车辆行驶记录" , businessType = BusinessType.UPDATE) // 修改 + @PutMapping + public Result edit(@RequestBody DrivingRecord drivingRecord) + { + //响应返回结果 | 修改车辆行驶记录 + return Result.success(drivingRecordService.updateDrivingRecord(drivingRecord)); + } + + + /** + * 车辆行驶记录的批量删除 + * @param ids + * @return + */ + @RequiresPermissions("record:record:remove") + @Log(title = "车辆行驶记录" , businessType = BusinessType.DELETE) // 删除 + @DeleteMapping("/{ids}") + public Result remove(@PathVariable Long[] ids) + { + //响应返回结果 | 批量删除车辆行驶记录 + return Result.success(drivingRecordService.deleteDrivingRecordByIds(ids)); + } + + +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/car-base-server/src/main/java/com/god/base/server/mapper/DrivingRecordMapper.java b/car-base-server/src/main/java/com/god/base/server/mapper/DrivingRecordMapper.java new file mode 100644 index 0000000..b27767e --- /dev/null +++ b/car-base-server/src/main/java/com/god/base/server/mapper/DrivingRecordMapper.java @@ -0,0 +1,68 @@ +package com.god.base.server.mapper; + +import com.god.base.server.common.domain.DrivingRecord; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 车辆行驶轨迹 mapper 层 + */ +@Mapper +public interface DrivingRecordMapper { + /** + * 查询车辆行驶记录列表 + * @param drivingRecord + * @return + */ + List selectDrivingRecordList(DrivingRecord drivingRecord); + + /** + * 查询车辆行驶记录 + * @param id 车辆行驶主键 + * @return 车辆行驶记录 + */ + DrivingRecord selectDrivingRecordById(@Param("id") Long id); + + /** + * 新增车辆行驶记录 + * @param drivingRecord + * @return 结果 + */ + int insertDrivingRecord(DrivingRecord drivingRecord); + + /** + * 修改车辆行驶记录 + * @param drivingRecord + * @return 结果 + */ + int updateDrivingRecord(DrivingRecord drivingRecord); + + /** + * 批量删除车辆行驶记录 + * @param ids + * @return + */ + int deleteDrivingRecordByIds(@Param("ids") Long[] ids); +} + + + + + + + + + + + + + + + + + + + + diff --git a/car-base-server/src/main/java/com/god/base/server/service/IDrivingRecordService.java b/car-base-server/src/main/java/com/god/base/server/service/IDrivingRecordService.java new file mode 100644 index 0000000..0d592b9 --- /dev/null +++ b/car-base-server/src/main/java/com/god/base/server/service/IDrivingRecordService.java @@ -0,0 +1,65 @@ +package com.god.base.server.service; + + +import com.god.base.server.common.domain.DrivingRecord; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 车辆行驶记录Service接口 + */ +public interface IDrivingRecordService { + + /** + * 查询车辆行驶记录列表 + * @param drivingRecord + * @return + */ + List selectDrivingRecordList(DrivingRecord drivingRecord); + + /** + * 车辆行驶记录主键 + * @param id + * @return + */ + DrivingRecord selectDrivingRecordById(@Param("id") Long id); + + /** + * 新增车辆行驶记录 + * @param drivingRecord 车辆行驶记录 + * @return 结果 + */ + int insertDrivingRecord(DrivingRecord drivingRecord); + + /** + * 修改车辆行驶记录 + * @param drivingRecord 车辆行驶记录 + * @return 结果 + */ + int updateDrivingRecord(DrivingRecord drivingRecord); + + int deleteDrivingRecordByIds(Long[] ids); +} + + + + + + + + + + + + + + + + + + + + + + diff --git a/car-base-server/src/main/java/com/god/base/server/service/impl/IDrivingRecordServiceImpl.java b/car-base-server/src/main/java/com/god/base/server/service/impl/IDrivingRecordServiceImpl.java new file mode 100644 index 0000000..d6b3640 --- /dev/null +++ b/car-base-server/src/main/java/com/god/base/server/service/impl/IDrivingRecordServiceImpl.java @@ -0,0 +1,97 @@ +package com.god.base.server.service.impl; + +import com.god.base.server.common.domain.DrivingRecord; +import com.god.base.server.mapper.DrivingRecordMapper; +import com.god.base.server.service.IDrivingRecordService; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.List; + +/** + * @ClassName IDrivingRecordServiceImpl + * @Author WenHao.Sao + */ + +/** + * 车辆行驶记录Service业务层处理 + */ +public class IDrivingRecordServiceImpl implements IDrivingRecordService { + + @Autowired + private DrivingRecordMapper drivingRecordMapper; + + @Override + public List selectDrivingRecordList(DrivingRecord drivingRecord) { + return drivingRecordMapper.selectDrivingRecordList(drivingRecord); + } + + /** + * 查询车辆行驶记录 + * @param id 车辆行驶记录主键 + * @return 车辆行驶记录 + */ + @Override + public DrivingRecord selectDrivingRecordById(Long id) { + return drivingRecordMapper.selectDrivingRecordById(id); + } + + + /** + * 新增车辆行驶记录 + * @param drivingRecord 车辆行驶记录 + * @return 结果 + */ + @Override + public int insertDrivingRecord(DrivingRecord drivingRecord) { + return drivingRecordMapper.insertDrivingRecord(drivingRecord); + } + + /** + * 修改车辆行驶记录 + * @param drivingRecord 车辆行驶记录 + * @return 结果 + */ + @Override + public int updateDrivingRecord(DrivingRecord drivingRecord) { + //修改车辆行驶记录 + return drivingRecordMapper.updateDrivingRecord(drivingRecord); + } + + /** + * 批量删除车辆行驶记录 + * @param ids + * @return 结果 + */ + @Override + public int deleteDrivingRecordByIds(Long[] ids) { + //批量删除车辆行驶记录 + return drivingRecordMapper.deleteDrivingRecordByIds(ids); + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/car-base-server/src/main/java/com/god/base/server/util/AopConfig.java b/car-base-server/src/main/java/com/god/base/server/util/AopConfig.java new file mode 100644 index 0000000..e15dbec --- /dev/null +++ b/car-base-server/src/main/java/com/god/base/server/util/AopConfig.java @@ -0,0 +1,67 @@ +package com.god.base.server.util; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; + + +/** + * aop切面 工具类 + */ +@Aspect +@Component +public class AopConfig { + //日志打印 + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + ThreadLocal threadLocal = new ThreadLocal<>(); + + /** + * @Description: 定义切面的那个类 + */ + @Pointcut("execution(* com.god.base.server.controller.*.*(..))") + public void print(){} + + + @Around("print()") + public Object LogStart(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { + threadLocal.set(System.currentTimeMillis()); + //使用ServletRequestAttributes请求上下文获取更多 + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletRequest request = attributes.getRequest(); + String typeName = proceedingJoinPoint.getSignature().getDeclaringTypeName(); + String name = proceedingJoinPoint.getSignature().getName(); + //使用数据来获取参数 + Object[] pointArgs = proceedingJoinPoint.getArgs(); + ObjectMapper objectMapper = new ObjectMapper(); + logger.info("—_—方—_—_—法_—_—_—启—_—_—动—_—_—开—_—_—始—_—_—希—_—_—望—_—_—无—_—_—B—_—_—U—_—_—G—_—"); + logger.info("|调用前是: 【{}】", typeName); + logger.info("|方法名称: 【{}】", name); + logger.info("|传递参数: 【{}】", objectMapper.writeValueAsString(objectMapper)); + logger.info("|URL: 【{}】", request.getRequestURI().toString()); + logger.info("IP: 【{}】", request.getRemoteAddr()); + logger.info("______________________________________________________________________"); + + + Object proceed = proceedingJoinPoint.proceed(); + logger.info("|调用前是: 【{}】", typeName); + logger.info("|方法名称: 【{}】", name); + logger.info("|传递参数: 【{}】", objectMapper.writeValueAsString(objectMapper)); + logger.info("|URL: 【{}】", request.getRequestURI().toString()); + logger.info("IP: 【{}】", request.getRemoteAddr()); + logger.info("|耗时: 【{}】", System.currentTimeMillis() - threadLocal.get()); + + return proceed; + } + + +} diff --git a/car-base-server/src/main/resources/mapper/DrivingRecordMapper.xml b/car-base-server/src/main/resources/mapper/DrivingRecordMapper.xml new file mode 100644 index 0000000..9fb4379 --- /dev/null +++ b/car-base-server/src/main/resources/mapper/DrivingRecordMapper.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + select id , vin ,start_time ,end_time , start_key , end_key , from driving_record + + + + + + + + + + + insert into driving_record + + vin, + start_time, + end_time, + start_time, + end_key, + + + #{vin}, + #{startTime}, + #{endTime}, + #{startKey}, + #{endKey}, + + + + + + update driving_record + + vin = #{vin}, + start_time = #{startTime}, + end_time = #{endTime}, + start_time = #{startKey}, + end_key = #{endKey}, + + where id = #{id} + + + + + delete from drving_record where id in + + #{ids} + + + + + + + + + + + + + + + + + + + + + + + From 8b2b84f1582fd80e5cec24bc0c66c0183499e6dd Mon Sep 17 00:00:00 2001 From: shaowenhao <3121640096@qq.com> Date: Sat, 25 Nov 2023 08:48:24 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E8=BD=A6=E8=BE=86=E5=AE=9E=E6=97=B6?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../god/base/server/service/impl/IDrivingRecordServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/car-base-server/src/main/java/com/god/base/server/service/impl/IDrivingRecordServiceImpl.java b/car-base-server/src/main/java/com/god/base/server/service/impl/IDrivingRecordServiceImpl.java index d6b3640..4dbc0a7 100644 --- a/car-base-server/src/main/java/com/god/base/server/service/impl/IDrivingRecordServiceImpl.java +++ b/car-base-server/src/main/java/com/god/base/server/service/impl/IDrivingRecordServiceImpl.java @@ -4,6 +4,7 @@ import com.god.base.server.common.domain.DrivingRecord; import com.god.base.server.mapper.DrivingRecordMapper; import com.god.base.server.service.IDrivingRecordService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; import java.util.List; @@ -15,6 +16,7 @@ import java.util.List; /** * 车辆行驶记录Service业务层处理 */ +@Service public class IDrivingRecordServiceImpl implements IDrivingRecordService { @Autowired From 062629d9a15fb3db8adcfbe644ce2cb8043592a0 Mon Sep 17 00:00:00 2001 From: ZhiShuo_Lou <13209945+zhishuo-lou@user.noreply.gitee.com> Date: Sat, 25 Nov 2023 19:31:24 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9B=B4=E6=A0=8FAop?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/controller/FenceController.java | 30 ++++--------------- 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/car-base-server/src/main/java/com/god/base/server/controller/FenceController.java b/car-base-server/src/main/java/com/god/base/server/controller/FenceController.java index 69e9e25..cf12117 100644 --- a/car-base-server/src/main/java/com/god/base/server/controller/FenceController.java +++ b/car-base-server/src/main/java/com/god/base/server/controller/FenceController.java @@ -15,6 +15,8 @@ import com.god.base.common.domain.request.FenceAddRequest; import com.god.base.common.domain.request.FenceQueryRequest; import com.god.base.server.service.FenceService; import com.god.common.core.web.page.TableDataInfo; +import com.god.common.log.annotation.Log; +import com.god.common.log.enums.BusinessType; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -42,15 +44,10 @@ public class FenceController { * @return */ @PostMapping("/insertFence") + @Log(title = "添加围栏", businessType = BusinessType.INSERT) public Result insertFence(@RequestBody @Validated FenceAddRequest fenceAddRequest){ - log.info("功能介绍新增电子围栏,请求方式;{},请求路径:{},请求参数:{}", - request.getMethod(), - request.getRequestURL(), - JSONObject.toJSONString(fenceAddRequest)); - //围栏添加 fenceService.save(Fence.fenceBuildAdd(fenceAddRequest)); - return Result.success(); } @@ -61,15 +58,10 @@ public class FenceController { * @return */ @PostMapping("/updateFence") + @Log(title = "编辑围栏",businessType = BusinessType.UPDATE) public Result updateFence(@RequestBody @Validated Fence fence){ - log.info("功能介绍:编辑围栏信息,请求方式:{},请求路径:{},请求参数:{}", - request.getMethod(), - request.getRequestURL(), - JSONObject.toJSONString(fence)); - //编辑电子围栏信息 fenceService.updateById(fence); - return Result.success(); } @@ -80,12 +72,8 @@ public class FenceController { * @return */ @GetMapping("/deleteFence") + @Log(title = "根据围栏编号删除围栏",businessType = BusinessType.DELETE) public Result deleteFence(@RequestParam("fenceId") Integer fenceId){ - log.info("功能介绍:通过围栏编号删除围栏,请求方式:{},请求路径:{},请求参数:{}", - request.getMethod(), - request.getRequestURL(), - JSONObject.toJSONString(fenceId)); - //根据围栏编号删除围栏 fenceService.removeById(fenceId); return Result.success(); @@ -98,16 +86,10 @@ public class FenceController { * @return */ @PostMapping("/fenceListAndPage") + @Log(title = "查询围栏信息",businessType = BusinessType.FORCE) public Result> fenceListAndPage(@RequestBody FenceQueryRequest fenceQueryRequest){ - log.info("功能介绍:查询围栏列表,请求方式:{},请求路径:{},请求参数:{}", - request.getMethod(), - request.getRequestURL(), - JSONObject.toJSONString(fenceQueryRequest)); - //分页查询围栏列表 TableDataInfo dataInfo = fenceService.fenceListAndPage(fenceQueryRequest); - return Result.success(dataInfo); - } } From c686243244ac271bd741fbb149495eab4f78bf01 Mon Sep 17 00:00:00 2001 From: ZhiShuo_Lou <13209945+zhishuo-lou@user.noreply.gitee.com> Date: Sat, 25 Nov 2023 19:33:08 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9B=B4=E6=A0=8FAop?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/god/base/server/controller/FenceController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/car-base-server/src/main/java/com/god/base/server/controller/FenceController.java b/car-base-server/src/main/java/com/god/base/server/controller/FenceController.java index cf12117..e0b0d4e 100644 --- a/car-base-server/src/main/java/com/god/base/server/controller/FenceController.java +++ b/car-base-server/src/main/java/com/god/base/server/controller/FenceController.java @@ -62,6 +62,7 @@ public class FenceController { public Result updateFence(@RequestBody @Validated Fence fence){ //编辑电子围栏信息 fenceService.updateById(fence); + return Result.success(); } 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 5/5] =?UTF-8?q?=E8=BD=A6=E8=BE=86=E5=AE=9E=E6=97=B6?= =?UTF-8?q?=E8=BD=A8=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 @@ + + + + + +