Browse Source

no message

USER-20250308PZ\Administrator 8 tháng trước cách đây
mục cha
commit
ad4f21dd9f

+ 2 - 2
bus-biz/src/main/java/bus/service/BBusInfoService.java

@@ -5,6 +5,7 @@ import bus.model.dto.page.BBusInfoPageDto;
 import bus.model.po.BBusInfoPo;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -51,6 +52,7 @@ public interface BBusInfoService extends IService<BBusInfoPo> {
      */
     void delete(String id);
 
+    public BTrackStationDto getPoint(String busId);
 
     /**
      * 获取车辆状态树型数据
@@ -65,6 +67,4 @@ public interface BBusInfoService extends IService<BBusInfoPo> {
      */
     BBusTrackInfoDto getTrackInfo(String busId);
 
-
-    BTrackStationDto getPoint(String var1);
 }

+ 67 - 5
bus-biz/src/main/java/bus/service/impl/BBusInfoServiceImpl.java

@@ -199,14 +199,76 @@ public class BBusInfoServiceImpl extends ServiceImpl<BBusInfoMapper,BBusInfoPo>
      */
     @Override
     public BBusTrackInfoDto getTrackInfo(String busId) {
-       QueryWrapper<BCourseBusPo> queryWrapper = new QueryWrapper<>();
-       queryWrapper.eq("bus_id", busId);
-       queryWrapper.eq("is_delete", 0);
-       BCourseBusPo one = bCourseBusService.getOne(queryWrapper);
+        BBusTrackInfoDto dto = new BBusTrackInfoDto();
+        // 1. 查询车辆所在路线,获取最新分配的路线
+        QueryWrapper<BCourseBusPo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("bus_id", busId)
+                .eq("is_delete", 0)
+                .orderByDesc("create_time")  // 按创建时间倒序
+                .last("LIMIT 1");  // 只取最新的一条记录
+        BCourseBusPo courseBus = bCourseBusService.getOne(queryWrapper);
+        if (courseBus == null) {
+            throw new BusinessException("该车辆未分配路线");
+        }
+
+        // 2. 获取路线信息
+        String courseId = courseBus.getCourseId();
+        BCourseInfoPo courseInfo = bCourseInfoService.getById(courseId);
+        if (courseInfo == null) {
+            throw new BusinessException("该路线不存在");
+        }
+
+        // 3. 获取车辆信息
+        BBusInfoPo busInfo = this.getById(busId);
+        if (busInfo == null) {
+            throw new BusinessException("车辆不存在");
+        }
+
+        // 4. 设置基本信息
+        dto.setBusId(busId);
+        dto.setBusNo(busInfo.getBusNo());
+        dto.setCourseName(courseInfo.getCourseName());
+        dto.setFirstStationName(courseInfo.getFirstStationName());
+        dto.setLastStationName(courseInfo.getLastStationName());
 
-        return null;
+        // 5. 设置车辆追踪信息
+        BBusTrackByBusDto trackByBusDto = new BBusTrackByBusDto();
+        trackByBusDto.setDriverName(busInfo.getDriverName());
+        trackByBusDto.setDriverPhone(busInfo.getDriverPhone());
+        trackByBusDto.setStatus(busInfo.getStatus());
+        trackByBusDto.setCourseName(courseInfo.getCourseName());
+        // TODO: 这里需要集成实时定位服务来获取车辆的当前位置信息
+        dto.setBBusTrackByBusDto(trackByBusDto);
+
+        // 6. 获取路线站点信息
+        List<BCourseStationPo> stationList = bCourseStationService.getListByCourse(courseId);
+        if (CollectionUtil.isNotEmpty(stationList)) {
+            List<BCourseNameInfoDto> courseNameInfoList = new ArrayList<>();
+            List<String> stationIds = stationList.stream()
+                    .map(BCourseStationPo::getStationId)
+                    .collect(Collectors.toList());
+
+            bStationInfoService.listByIds(stationIds).forEach(stationInfo -> {
+                BCourseNameInfoDto courseNameInfo = new BCourseNameInfoDto();
+                courseNameInfo.setId(stationInfo.getId());
+                List<BStationPointDto> pointList = new ArrayList<>();
+                BStationPointDto point = new BStationPointDto();
+                point.setId(stationInfo.getId());
+                point.setName(stationInfo.getName());
+                point.setLatitude(stationInfo.getLatitude());
+                point.setLongitude(stationInfo.getLongitude());
+                pointList.add(point);
+                courseNameInfo.setSlist(pointList);
+                courseNameInfoList.add(courseNameInfo);
+            });
+
+            dto.setBCourseNameInfoList(courseNameInfoList);
+        }
+
+        return dto;
     }
 
+    @Override
     public BTrackStationDto getPoint(String busId) {
         BTrackStationDto dto = new BTrackStationDto();
         QueryWrapper<BCourseBusPo> queryWrapper = new QueryWrapper();

+ 7 - 1
bus-biz/src/main/java/bus/service/impl/BCourseStationServiceImpl.java

@@ -13,6 +13,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.BeanUtils;
+
+import javax.management.Query;
 import java.util.List;
 
 /**
@@ -73,7 +75,11 @@ public class BCourseStationServiceImpl extends ServiceImpl<BCourseStationMapper,
     }
     @Override
     public List<BCourseStationPo> getListByCourse(String courseId) {
-        List<BCourseStationPo> list = this.bCourseStationMapper.selectList((Wrapper)(new QueryWrapper()).eq("course_id", courseId));
+
+        QueryWrapper<BCourseStationPo> query = new QueryWrapper();
+            query.eq("course_id", courseId);
+            query.orderByAsc("sort");
+        List<BCourseStationPo> list = this.bCourseStationMapper.selectList(query);
         return list;
     }
 

+ 33 - 0
bus-common/src/main/java/bus/model/dto/BBusTrackByBusDto.java

@@ -0,0 +1,33 @@
+package bus.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+* @Program: bus
+* @Description: 描述
+* @Author: zy
+* @Date: 2025-03-01 09:44:24
+**/
+@Data
+public class BBusTrackByBusDto {
+
+    @ApiModelProperty("驾驶员姓名")
+    private String driverName;
+    @ApiModelProperty("驾驶员号码")
+    private String driverPhone;
+    @ApiModelProperty("当前经度")
+    private BigDecimal localLongitude;
+    @ApiModelProperty("当前纬度")
+    private BigDecimal localLatitude;
+    @ApiModelProperty("详细地址")
+    private String detailAddress;
+    @ApiModelProperty("车辆状态 0正常 1维护 2警用")
+    private String status;
+    @ApiModelProperty("线路名称")
+    private String courseName;
+
+}

+ 3 - 15
bus-common/src/main/java/bus/model/dto/BBusTrackInfoDto.java

@@ -25,22 +25,10 @@ public class BBusTrackInfoDto {
     private String firstStationName;
     @ApiModelProperty("最后站点名称")
     private String lastStationName;
-    @ApiModelProperty("驾驶员姓名")
-    private String driverName;
-    @ApiModelProperty("驾驶员号码")
-    private String driverPhone;
-    @ApiModelProperty("经度")
-    private BigDecimal longitude;
-    @ApiModelProperty("纬度")
-    private BigDecimal latitude;
-    @ApiModelProperty("详细地址")
-    private String detailAddress;
 
-    @ApiModelProperty("标记点名称")
-    private String stationName;
-    @ApiModelProperty("距离")
-    private String distance;
+    @ApiModelProperty("车辆追踪信息")
+    BBusTrackByBusDto bBusTrackByBusDto;
 
-    @ApiModelProperty("路线LIST")
+    @ApiModelProperty("路线站点LIST")
     List<BCourseNameInfoDto> bCourseNameInfoList;
 }

+ 3 - 4
bus-common/src/main/java/bus/model/dto/BCourseNameInfoDto.java

@@ -16,8 +16,7 @@ import java.util.List;
 public class BCourseNameInfoDto {
     @ApiModelProperty("id")
     private String id;
-    @ApiModelProperty("线路名称")
-    private String courseName;
-    @ApiModelProperty("线路编号")
-    private String courseCode;
+
+    @ApiModelProperty("站点经纬度信息")
+    List<BStationPointDto> slist;
 }

+ 21 - 0
bus-common/src/main/java/bus/model/dto/BTrackLocalDto.java

@@ -0,0 +1,21 @@
+package bus.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class BTrackLocalDto
+{
+    @ApiModelProperty("上一个标记点id")
+    private String upStationId;
+    @ApiModelProperty("上一个标记点名称")
+    private String upStationName;
+    @ApiModelProperty("下个标记点id")
+    private String downStationId;
+    @ApiModelProperty("上一个标记点名称")
+    private String downStationName;
+    @ApiModelProperty("当前")
+    private BigDecimal localSpeed;
+}

+ 17 - 0
bus-common/src/main/java/bus/model/dto/req/BTrackLocalReqDto.java

@@ -0,0 +1,17 @@
+package bus.model.dto.req;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class BTrackLocalReqDto
+{
+    @ApiModelProperty("当前经度")
+    private BigDecimal localLongitude;
+    @ApiModelProperty("当前纬度")
+    private BigDecimal localLatitude;
+    @ApiModelProperty("当前速度")
+    private BigDecimal localSpeed; 
+}

+ 12 - 2
bus-common/src/main/java/bus/model/po/BBusInfoPo.java

@@ -6,7 +6,7 @@ import lombok.Data;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.util.Date;
-import java.util.Date;
+import java.math.BigDecimal;
 
 /**
 * @Program: bus
@@ -23,10 +23,20 @@ public class BBusInfoPo{
     private String busNo;
     private String busUrl;
     private String busType;
-    @ApiModelProperty("车辆状态 0禁用 1维护 2正常")
+    @ApiModelProperty("车辆状态 0正常 1维护 2警用")
     private String status;
     private String driverName;
     private String driverPhone;
+    
+    @ApiModelProperty("当前经度")
+    private BigDecimal localLongitude;
+    @ApiModelProperty("当前纬度")
+    private BigDecimal localLatitude;
+    @ApiModelProperty("详细地址")
+    private String detailAddress;
+    @ApiModelProperty("最后更新位置时间")
+    private Date locationUpdateTime;
+    
     private Date createTime;
     private Date updateTime;
     private String creatorId;

+ 45 - 0
bus-web/src/main/java/bus/controller/biz/BBusLocationController.java

@@ -0,0 +1,45 @@
+package bus.controller.biz;
+
+import bus.model.dto.BBusTrackByBusDto;
+import bus.service.BBusInfoService;
+import com.qzwisdom.qzframework.core.tool.base.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.math.BigDecimal;
+
+/**
+ * @Program: bus
+ * @Description: 车辆位置追踪接口
+ * @Author: zy
+ * @Date: 2025-03-01 10:04:08
+ **/
+@Slf4j
+@CrossOrigin
+@RestController
+@Api(tags = "车辆位置追踪接口")
+@RequestMapping(value="/bBusLocation")
+public class BBusLocationController implements BaseController {
+
+    @Autowired
+    private BBusInfoService bBusInfoService;
+
+//    @ApiOperation("更新车辆实时位置")
+//    @PostMapping(value = "updateLocation")
+//    public void updateLocation(
+//            @RequestParam String busId,
+//            @RequestParam BigDecimal longitude,
+//            @RequestParam BigDecimal latitude,
+//            @RequestParam(required = false) String address) {
+//        bBusInfoService.updateLocation(busId, longitude, latitude, address);
+//    }
+//
+//    @ApiOperation("获取车辆当前位置信息")
+//    @GetMapping(value = "getCurrentLocation")
+//    public BBusTrackByBusDto getCurrentLocation(@RequestParam String busId) {
+//        return bBusInfoService.getCurrentLocation(busId);
+//    }
+} 

+ 0 - 1
bus-web/src/main/java/bus/controller/biz/BBusTrackController.java

@@ -47,7 +47,6 @@ public class BBusTrackController implements BaseController {
         return treeList;
     }
 
-
     /**
      * 根据车辆ID获取车辆追踪信息
      * @return