guns-admin/src/main/java/com/stylefeng/guns/modular/api/PatrolTaskController.java
@@ -7,11 +7,13 @@ import com.stylefeng.guns.core.page.PageInfoBT; import com.stylefeng.guns.core.util.JwtTokenUtil; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.model.Vehicles; import com.stylefeng.guns.modular.system.model.enums.ImageModelEnum; import com.stylefeng.guns.modular.system.model.enums.VideoChannelEnum; import com.stylefeng.guns.modular.system.model.vo.*; import com.stylefeng.guns.modular.system.service.IPatrolTaskService; import com.stylefeng.guns.modular.system.service.ITaskDetailService; import com.stylefeng.guns.modular.system.service.IVehicleService; import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.util.videoGateway.VideoGateway; import com.stylefeng.guns.modular.system.util.videoGateway.model.Ship; @@ -42,6 +44,9 @@ @Resource private ITaskDetailService taskDetailService; @Resource private IVehicleService vehicleService; @@ -119,17 +124,14 @@ @GetMapping("/api/patrolTask/getVehicleList") @ApiOperation(value = "获取车辆列表", tags = {"任务管理"}) public ResultUtil<List<Vehicle>> getVehicleList(Integer year){ List<Vehicle> vehicleList = VideoGateway.getVehicleList(null, null, null, 0); List<Vehicles> vehicles = vehicleService.selectList(null); List<Vehicle> list = new ArrayList<>(); if(null != year){ for (Vehicle vehicle : vehicleList) { String vehicleGpsProtocol = vehicle.getVehicleGpsProtocol(); if(2023 == year && null != vehicleGpsProtocol && vehicleGpsProtocol.equals("2")){ list.add(vehicle); } } }else{ list = vehicleList; for (Vehicles vehicle : vehicles) { Vehicle vehicle1 = new Vehicle(); vehicle1.setId(vehicle.getId()); vehicle1.setVehicleNum(vehicle.getVehicleCode()); vehicle1.setCompanyName(vehicle.getCompanyName()); list.add(vehicle1); } return ResultUtil.success(list); } guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/VehicleMapper.java
New file @@ -0,0 +1,12 @@ package com.stylefeng.guns.modular.system.dao; import com.baomidou.mybatisplus.mapper.BaseMapper; import com.stylefeng.guns.modular.system.model.Vehicles; /** * @author zhibing.pu * @Date 2025/3/4 15:40 */ public interface VehicleMapper extends BaseMapper<Vehicles> { } guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/VehicleMapper.xml
New file @@ -0,0 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.stylefeng.guns.modular.system.dao.VehicleMapper"> </mapper> guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Vehicles.java
New file @@ -0,0 +1,31 @@ package com.stylefeng.guns.modular.system.model; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.enums.IdType; import lombok.Data; /** * @author zhibing.pu * @Date 2025/3/4 15:23 */ @Data @TableName("t_vehicle") public class Vehicles { /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 车牌号 */ @TableField("vehicleCode") private String vehicleCode; /** * 公司名 */ @TableField("companyName") private String companyName; } guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IVehicleService.java
New file @@ -0,0 +1,11 @@ package com.stylefeng.guns.modular.system.service; import com.baomidou.mybatisplus.service.IService; import com.stylefeng.guns.modular.system.model.Vehicles; /** * @author zhibing.pu * @Date 2025/3/4 15:41 */ public interface IVehicleService extends IService<Vehicles> { } guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PatrolTaskServiceImpl.java
@@ -1,5 +1,8 @@ package com.stylefeng.guns.modular.system.service.impl; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.stylefeng.guns.core.util.ToolUtil; @@ -190,12 +193,6 @@ taskDetailService.updateById(taskDetail); PatrolTask patrolTask = this.selectById(taskDetail.getPatrolTaskId()); if(!patrolTask.getImageModel().equals(ImageModelEnum.CONSTRUCTION_WASTE_LOAD.getCode())){ //获取所有在线车船 //2018年协议车辆在线 List<VehicleOnline> vehicleOnlines2018 = VideoGateway.queryRuntimeInfoByCache(0); //2023年协议车辆在线 List<VehicleOnline> vehicleOnlines203 = VideoGateway.locationRealTimeInfoCache(0); //获取当前任务中的车船信息 List<TaskDetailVehicles> taskDetailVehicles = taskDetailVehiclesService.selectList(new EntityWrapper<TaskDetailVehicles>().eq("task_detail_id", id)); //根据车辆数量,分组线程数 @@ -233,56 +230,26 @@ try { taskDetailVehicle.setStartExecutionTime(LocalDateTime.now()); Integer taskDetailVehicleId = taskDetailVehicle.getId(); //车船类型:1 车辆设备 2 船舶设备 Integer vehicleType = taskDetailVehicle.getVehicleType(); //车船id Integer vehicleId = taskDetailVehicle.getVehicleId(); VehicleOnline vehicleOnline1 = null; for (VehicleOnline vehicleOnline : vehicleOnlines2018) { if(null != vehicleOnline.getVehicleId() && vehicleOnline.getVehicleId().equals(vehicleId) && null != vehicleOnline.getVehicleType() && vehicleOnline.getVehicleType().equals(vehicleType)){ vehicleOnline1 = vehicleOnline; String vehicleGpsProtocol = vehicleOnline.getVehicleGpsProtocol(); vehicleOnline1.setVehicleGpsProtocol("808-guangzhou".equals(vehicleGpsProtocol) ? "1" : "2"); break; } } if(null == vehicleOnline1){ for (VehicleOnline vehicleOnline : vehicleOnlines203) { if(null != vehicleOnline.getVehicleId() && vehicleOnline.getVehicleId().equals(vehicleId) && null != vehicleOnline.getVehicleType() && vehicleOnline.getVehicleType().equals(vehicleType)){ vehicleOnline1 = vehicleOnline; vehicleOnline1.setVehicleGpsProtocol(vehicleOnline.getVehicleGpsProtocol()); break; } } } //不在线 if(null == vehicleOnline1){ taskDetailVehicle.setEndExecutionTime(LocalDateTime.now()); taskDetailVehicle.setStatus(4); taskDetailVehiclesService.updateById(taskDetailVehicle); continue; } taskDetailVehicle.setVehicleGpsProtocol(vehicleOnline1.getVehicleGpsProtocol()); taskDetailVehicle.setTerminalId(vehicleOnline1.getTerminalId()); taskDetailVehicle.setStatus(2); taskDetailVehiclesService.updateById(taskDetailVehicle); //成功 List<TaskDetailVehiclesChannel> taskDetailVehiclesChannels = taskDetailVehiclesChannelService.selectList(new EntityWrapper<TaskDetailVehiclesChannel>().eq("task_detail_vehicles_id", taskDetailVehicleId)); //开始发送拍照指令,获取照片地址 String vehicleGpsProtocol = vehicleOnline1.getVehicleGpsProtocol(); String terminalId = vehicleOnline1.getTerminalId(); for (TaskDetailVehiclesChannel taskDetailVehiclesChannel : taskDetailVehiclesChannels) { Integer videoChannel = taskDetailVehiclesChannel.getVideoChannel(); try { if("1".equals(vehicleGpsProtocol)){ //2018 协议 String fileId = VideoGateway.cameraShot2018(terminalId, videoChannel, 0); if(ToolUtil.isNotEmpty(fileId)){ String fileUrl = VideoGateway.getCameraShotByFileId2018(terminalId, fileId, 0); if(ToolUtil.isNotEmpty(fileUrl)){ Integer videoChannel = taskDetailVehiclesChannel.getVideoChannel(); String imageModel = patrolTask.getImageModel(); String fileUrl = null; if(imageModel.equals(ImageModelEnum.TOP_SEAL.getCode())){ fileUrl = "http://120.232.235.142/image/model1/" + taskDetailVehicle.getVehicleNum() + "_" + videoChannel + ".png"; } if(imageModel.equals(ImageModelEnum.CAMERA_FAULT.getCode())){ fileUrl = "http://120.232.235.142/image/model2/" + taskDetailVehicle.getVehicleNum() + "_" + videoChannel + ".png"; } HttpRequest get = HttpUtil.createGet(fileUrl); HttpResponse execute = get.execute(); if(200 == execute.getStatus()){ taskDetailVehiclesChannel.setImageUrl(fileUrl); taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now()); taskDetailVehiclesChannel.setArtificialStatus(1); @@ -293,26 +260,6 @@ taskDetailVehiclesChannel.setSysStatus(b ? 2 : 3); taskDetailVehiclesChannel.setResult(r); taskDetailVehiclesChannelService.updateById(taskDetailVehiclesChannel); } } }else{ //2023 协议 String fileId = VideoGateway.cameraShot2023(vehicleId, vehicleType, terminalId, videoChannel, 0); if(ToolUtil.isNotEmpty(fileId)){ String fileUrl = VideoGateway.getCameraShotByFileId2023(fileId, 0); if(ToolUtil.isNotEmpty(fileUrl)){ taskDetailVehiclesChannel.setImageUrl(fileUrl); taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now()); taskDetailVehiclesChannel.setArtificialStatus(1); //开始调模型接口得出结果 Map<String, Object> map = ImageModelUtil.modelCheck(fileUrl, ImageModelEnum.getImageModelEnum(patrolTask.getImageModel())); Boolean b = (Boolean) map.get("b"); String r = map.get("r").toString(); taskDetailVehiclesChannel.setSysStatus(b ? 2 : 3); taskDetailVehiclesChannel.setResult(r); taskDetailVehiclesChannelService.updateById(taskDetailVehiclesChannel); } } } }catch (Exception e){ taskDetailVehiclesChannel.setResult(e.getMessage()); guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/VehicleServiceImpl.java
New file @@ -0,0 +1,15 @@ package com.stylefeng.guns.modular.system.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.modular.system.dao.VehicleMapper; import com.stylefeng.guns.modular.system.model.Vehicles; import com.stylefeng.guns.modular.system.service.IVehicleService; import org.springframework.stereotype.Service; /** * @author zhibing.pu * @Date 2025/3/4 15:42 */ @Service public class VehicleServiceImpl extends ServiceImpl<VehicleMapper, Vehicles> implements IVehicleService { } guns-admin/src/main/resources/application.yml
@@ -45,11 +45,12 @@ --- # 岐济生数据库 spring: datasource: url: jdbc:mysql://1.95.72.12:3306/vehicle_inspection_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai url: jdbc:mysql://47.109.70.48:3306/vehicle_inspection_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai username: root password: tObIBDzw3Q3lw9bp password: Si8bnm5KPGSZkF3F db-name: vehicle_inspection #用来搜集数据库的所有表 filters: wall,mergeStat guns-admin/src/main/resources/logback-spring.xml
@@ -7,7 +7,7 @@ <contextName>logback</contextName> <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 --> <property name="log.path" value="/home/file/log"/> <property name="log.path" value="/home/yijing010/server/app/log"/> <!--0. 日志格式和颜色渲染 --> <!-- 彩色日志依赖的渲染类 -->