Procházet zdrojové kódy

提交车辆轨迹查询

chenxiaofei před 2 měsíci
rodič
revize
f0d6cb3f13

+ 43 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckRouteController.java

@@ -0,0 +1,43 @@
+package com.sckw.fleet.controller;
+
+import com.sckw.core.web.response.BaseResult;
+import com.sckw.core.web.response.result.PageDataResult;
+import com.sckw.fleet.model.request.DeleteTruckRoteReq;
+import com.sckw.fleet.model.request.QueryTruckRoteReq;
+import com.sckw.fleet.model.vo.QueryTruckRoteVo;
+import com.sckw.fleet.service.KwfTruckRouteService;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author PC
+ * 卡车线路管理
+ */
+@RestController
+@RequestMapping("/truckRoute")
+@RequiredArgsConstructor
+public class KwfTruckRouteController {
+    private final KwfTruckRouteService truckService;
+    /**
+     *  分页获取车辆信息
+     **/
+    @GetMapping("/pageTruckRoute")
+    public BaseResult<PageDataResult<QueryTruckRoteVo>> pageTruckRoute(@RequestBody QueryTruckRoteReq req) {
+        return BaseResult.success(truckService.pageTruckRoute(req));
+    }
+
+    /**
+     * 删除车辆信息
+     * @param req 请求参数
+     * @return 删除结果
+     */
+    @GetMapping("/deleteTruckRoute")
+    public BaseResult<Boolean> deleteTruckRoute(@Valid @RequestBody DeleteTruckRoteReq req) {
+        return BaseResult.success(truckService.deleteTruckRoute(req));
+    }
+
+}

+ 9 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfTruckRouteMapper.java

@@ -0,0 +1,9 @@
+package com.sckw.fleet.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sckw.fleet.model.KwfTruckRoute;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface KwfTruckRouteMapper extends BaseMapper<KwfTruckRoute> {
+}

+ 76 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/KwfTruckRoute.java

@@ -0,0 +1,76 @@
+package com.sckw.fleet.model;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import java.time.LocalDateTime;
+
+/**
+ * 车辆惯用线路信息表
+ * @author PC
+ */
+@Data
+@TableName("kwf_truck_route")
+public class KwfTruckRoute {
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.NONE)
+    private Long id;
+
+    /**
+     * 车队id
+     */
+    @TableField("fleet_id")
+    private Long fleetId;
+
+    /**
+     * 司机id
+     */
+    @TableField("driver_id")
+    private Long driverId;
+
+    /**
+     * 企业id
+     */
+    @TableField("ent_id")
+    private Long entId;
+
+    /**
+     * 起始点
+     */
+    @TableField("start_point")
+    private String startPoint;
+
+    /**
+     * 卸货地点
+     */
+    @TableField("unloading_Point")
+    private String unloadingPoint;
+
+    /**
+     * 最短时间
+     */
+    @TableField("shortest_time")
+    private String shortestTime;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time", fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    /**
+     * 是否删除(0未删除,1删除)
+     */
+    @TableField("del_flag")
+    @TableLogic
+    private Integer delFlag;
+
+}

+ 84 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/KwfTruckRouteDto.java

@@ -0,0 +1,84 @@
+package com.sckw.fleet.model.dto;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 车辆惯用线路信息表
+ * @author PC
+ */
+@Data
+@TableName("kwf_truck_route")
+public class KwfTruckRouteDto {
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 车队id
+     */
+
+    private Long fleetId;
+
+    /**
+     * 司机id
+     */
+
+    private Long driverId;
+
+    /**
+     * 企业id
+     */
+
+    private Long entId;
+
+    /**
+     * 起始点
+     */
+
+    private String startPoint;
+
+    /**
+     * 卸货地点
+     */
+
+    private String unloadingPoint;
+
+    /**
+     * 最短时间
+     */
+
+    private String shortestTime;
+
+    /**
+     * 创建时间
+     */
+
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+
+    private LocalDateTime updateTime;
+
+    /**
+     * 是否删除(0未删除,1删除)
+     */
+
+    private Integer delFlag;
+    /**
+     * 车队id列表
+     */
+    private Set<Long> fleetIds;
+    /**
+     * 司机id列表
+     */
+    private Set<Long> driverIds;
+}

+ 23 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/request/DeleteTruckRoteReq.java

@@ -0,0 +1,23 @@
+package com.sckw.fleet.model.request;
+
+import com.sckw.core.web.request.PageReq;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author PC
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Valid
+public class DeleteTruckRoteReq extends PageReq implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 2817549090778895464L;
+    @NotNull(message = "id不能为空")
+    private Long id;
+}

+ 38 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/request/QueryTruckRoteReq.java

@@ -0,0 +1,38 @@
+package com.sckw.fleet.model.request;
+
+import com.sckw.core.web.request.PageReq;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author PC
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class QueryTruckRoteReq extends PageReq implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 2817549090778895464L;
+    /**
+     * 车牌号
+     */
+    private String truckNo;
+    /**
+     * 起始点
+     */
+    private String startPoint;
+    /**
+     * 卸货点
+     */
+    private String unloadingPoint;
+    /**
+     * 车队id
+     */
+    private String fleetId;
+    /*
+    * 司机名称
+     */
+    private String driverName;
+}

+ 51 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/QueryTruckRoteVo.java

@@ -0,0 +1,51 @@
+package com.sckw.fleet.model.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author PC
+ */
+@Data
+public class QueryTruckRoteVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 2817549090778895464L;
+    /**
+     * 车牌号
+     */
+    private String truckNo;
+    /**
+     * 起始点
+     */
+    private String startPoint;
+    /**
+     * 卸货点
+     */
+    private String unloadingPoint;
+    /**
+     * 车队id
+     */
+    private String fleetId;
+    /**
+     * 车队名称
+     */
+    private String fleetName;
+    /*
+    * 司机名称
+     */
+    private String driverName;
+    /**
+     * 司机id
+     */
+    private String driverId;
+    /**
+     * 更新时间
+     */
+    private String updateTime;
+    /**
+     * 最快耗时
+     */
+    private String sortedTime;
+}

+ 15 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/repository/KwfDriverRepository.java

@@ -8,6 +8,9 @@ import com.sckw.fleet.dao.KwfDriverMapper;
 import com.sckw.fleet.model.KwfDriver;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+import java.util.Set;
+
 /**
  * @author PC
  * 司机信息接口
@@ -20,4 +23,16 @@ public class KwfDriverRepository extends ServiceImpl<KwfDriverMapper, KwfDriver>
                 .eq(KwfDriver::getPhone,mobile)
                 .last("limit 1"));
     }
+
+    public List<KwfDriver> findDriverByName(String driverName) {
+        return list(Wrappers.<KwfDriver>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .like(KwfDriver::getName,driverName));
+    }
+
+    public List<KwfDriver> findByDriverIds(Set<Long> driveIdList) {
+        return list(Wrappers.<KwfDriver>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .in(KwfDriver::getId,driveIdList));
+    }
 }

+ 7 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/repository/KwfFleetRepository.java

@@ -11,6 +11,7 @@ import com.sckw.fleet.model.KwfFleet;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Set;
 
 
 /**
@@ -39,4 +40,10 @@ public class KwfFleetRepository extends ServiceImpl<KwfFleetMapper, KwfFleet> {
         return page(page,Wrappers.<KwfFleet>lambdaQuery()
                 .eq(BaseModel::getDelFlag,0));
     }
+
+    public List<KwfFleet> findByfleetIds(Set<Long> fleetIdList) {
+        return list(Wrappers.<KwfFleet>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .in(KwfFleet::getId, fleetIdList));
+    }
 }

+ 6 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/repository/KwfFleetTruckRepository.java

@@ -23,4 +23,10 @@ public class KwfFleetTruckRepository extends ServiceImpl<KwfFleetTruckMapper, Kw
                 .eq(BaseModel::getDelFlag,0)
                 .in(KwfFleetTruck::getFleetId,truckIds));
     }
+
+    public List<KwfFleetTruck> queryByTruckId(Long truckId) {
+        return list(Wrappers.<KwfFleetTruck>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0).
+                eq(KwfFleetTruck::getTruckId, truckId));
+    }
 }

+ 39 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/repository/KwfTruckRouteRepository.java

@@ -0,0 +1,39 @@
+package com.sckw.fleet.repository;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sckw.fleet.dao.KwfTruckRouteMapper;
+import com.sckw.fleet.model.KwfTruckRoute;
+import com.sckw.fleet.model.dto.KwfTruckRouteDto;
+import jakarta.validation.constraints.NotNull;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Repository;
+
+import java.util.Objects;
+
+/**
+ * @author PC
+ */
+@Repository
+public class KwfTruckRouteRepository extends ServiceImpl<KwfTruckRouteMapper, KwfTruckRoute> {
+    public IPage<KwfTruckRoute> pageTruckRoute(int pageNum, int pageSize, KwfTruckRouteDto kwfTruckRoute) {
+        Page<KwfTruckRoute> truckRoutePage = new Page<>(pageNum, pageSize);
+        return page(truckRoutePage, Wrappers.<KwfTruckRoute>lambdaQuery()
+                .in(CollectionUtils.isNotEmpty(kwfTruckRoute.getFleetIds()),KwfTruckRoute::getFleetId, kwfTruckRoute.getFleetIds())
+                .in(CollectionUtils.isNotEmpty(kwfTruckRoute.getDriverIds()),KwfTruckRoute::getDriverId, kwfTruckRoute.getDriverIds())
+                .eq(KwfTruckRoute::getDelFlag,0)
+                .like(StringUtils.isNotBlank(kwfTruckRoute.getStartPoint()),KwfTruckRoute::getStartPoint, kwfTruckRoute.getStartPoint())
+                .like(StringUtils.isNotBlank(kwfTruckRoute.getUnloadingPoint()),KwfTruckRoute::getUnloadingPoint, kwfTruckRoute.getUnloadingPoint()));
+    }
+
+    public Boolean deleteTruckRoute( Long id) {
+        KwfTruckRoute kwfTruckRoute = new KwfTruckRoute();
+        kwfTruckRoute.setId(id);
+        kwfTruckRoute.setDelFlag(1);
+
+        return updateById(kwfTruckRoute);
+    }
+}

+ 116 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckRouteService.java

@@ -0,0 +1,116 @@
+package com.sckw.fleet.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.sckw.core.model.base.BaseModel;
+import com.sckw.core.utils.DateUtils;
+import com.sckw.core.utils.StringUtils;
+import com.sckw.core.web.response.result.PageDataResult;
+import com.sckw.fleet.model.*;
+import com.sckw.fleet.model.dto.KwfTruckRouteDto;
+import com.sckw.fleet.model.request.DeleteTruckRoteReq;
+import com.sckw.fleet.model.request.QueryTruckRoteReq;
+
+import com.sckw.fleet.model.vo.QueryTruckRoteVo;
+import com.sckw.fleet.repository.*;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * @author PC
+ */
+@Service
+@RequiredArgsConstructor
+public class KwfTruckRouteService {
+
+    private final KwfTruckRouteRepository truckRouteRepository;
+    private final KwfDriverRepository driverRepository;
+    private final KwfFleetTruckRepository fleetTruckRepository;
+    private final KwfTruckRepository truckRepository;
+    private final KwfFleetRepository fleetRepository;
+
+
+    public PageDataResult<QueryTruckRoteVo> pageTruckRoute(QueryTruckRoteReq req) {
+        Set<Long> driveIds = null;
+        Set<Long> fleetIds = null;
+        if (StringUtils.isNotBlank(req.getDriverName())) {
+            //查询司机信息
+            List<KwfDriver> drivers = driverRepository.findDriverByName(req.getDriverName());
+            if (CollectionUtils.isNotEmpty(drivers)) {
+                //司机ids
+                driveIds = drivers.stream()
+                        .map(BaseModel::getId)
+                        .collect(Collectors.toSet());
+            }
+        }
+
+        if (StringUtils.isNotBlank(req.getTruckNo())) {
+            KwfTruck kwfTruck = truckRepository.queryByTruckNo(req.getTruckNo());
+            if (Objects.nonNull(kwfTruck)) {
+                List<KwfFleetTruck> kwfFleetTrucks = fleetTruckRepository.queryByTruckId(kwfTruck.getId());
+                fleetIds = kwfFleetTrucks.stream()
+                        .map(KwfFleetTruck::getFleetId)
+                        .collect(Collectors.toSet());
+            }
+        }
+        KwfTruckRouteDto kwfTruckRoute = new KwfTruckRouteDto();
+        kwfTruckRoute.setFleetIds(fleetIds);
+        kwfTruckRoute.setDriverIds(driveIds);
+        kwfTruckRoute.setStartPoint(req.getStartPoint());
+        kwfTruckRoute.setUnloadingPoint(req.getUnloadingPoint());
+        IPage<KwfTruckRoute> truckRoutePage = truckRouteRepository.pageTruckRoute(req.getPageNum(), req.getPageSize(), kwfTruckRoute);
+        List<KwfTruckRoute> records = truckRoutePage.getRecords();
+        if (CollectionUtils.isEmpty(records)){
+            return PageDataResult.empty(req.getPageNum(), req.getPageSize());
+        }
+        Set<Long> fleetIdList = records.stream()
+                .map(KwfTruckRoute::getFleetId)
+                .collect(Collectors.toSet());
+        //查询车队信息
+        List<KwfFleet> fleets =  fleetRepository.findByfleetIds(fleetIdList);
+        //车队id映射车队
+        Map<Long, KwfFleet> fleetIdAndFleetMap = fleets.stream().collect(Collectors.toMap(KwfFleet::getId, Function.identity(), (k1, k2) -> k1));
+        Set<Long> driveIdList = records.stream()
+                .map(KwfTruckRoute::getDriverId)
+                .collect(Collectors.toSet());
+        //查询司机信息
+        List<KwfDriver> drivers = driverRepository.findByDriverIds(driveIdList);
+        //司机id映射司机
+        Map<Long, KwfDriver> driverIdAndDriverMap = drivers.stream()
+                .collect(Collectors.toMap(BaseModel::getId, Function.identity(), (k1, k2) -> k1));
+        //组织返回数据
+        List<QueryTruckRoteVo> queryTruckRoteVos = records.stream()
+                .map(r -> getQueryTruckRoteVo(r, fleetIdAndFleetMap, driverIdAndDriverMap))
+                .collect(Collectors.toList());
+        return PageDataResult.of(truckRoutePage, queryTruckRoteVos);
+    }
+
+
+    private static QueryTruckRoteVo getQueryTruckRoteVo(KwfTruckRoute r, Map<Long, KwfFleet> fleetIdAndFleetMap, Map<Long, KwfDriver> driverIdAndDriverMap) {
+        QueryTruckRoteVo queryTruckRoteVo = new QueryTruckRoteVo();
+        queryTruckRoteVo.setTruckNo("");
+        queryTruckRoteVo.setStartPoint(r.getStartPoint());
+        queryTruckRoteVo.setUnloadingPoint(r.getUnloadingPoint());
+        queryTruckRoteVo.setFleetId(String.valueOf(r.getFleetId()));
+        KwfFleet fleet = fleetIdAndFleetMap.getOrDefault(r.getFleetId(), new KwfFleet());
+        queryTruckRoteVo.setFleetName(fleet.getName());
+        KwfDriver driver = driverIdAndDriverMap.getOrDefault(r.getDriverId(), new KwfDriver());
+        queryTruckRoteVo.setDriverName(driver.getName());
+        queryTruckRoteVo.setDriverId(String.valueOf(r.getDriverId()));
+        queryTruckRoteVo.setUpdateTime(DateUtils.format(r.getUpdateTime(),DateUtils.DATE_TIME_PATTERN));
+        queryTruckRoteVo.setSortedTime(r.getShortestTime());
+        return queryTruckRoteVo;
+    }
+
+    public Boolean deleteTruckRoute(DeleteTruckRoteReq req) {
+        return truckRouteRepository.deleteTruckRoute(req.getId());
+
+    }
+}

+ 2 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckService.java

@@ -1443,7 +1443,8 @@ public class KwfTruckService {
         //获取车辆信息
         List<KwfTruck> truckList = kwfTruckRepository.queryByEntIds(entIds);
         //将车辆信息按照企业id进行分组
-        Map<Long, List<KwfTruck>> entIdAndTruckMap = truckList.stream().collect(Collectors.groupingBy(KwfTruck::getEntId));
+        Map<Long, List<KwfTruck>> entIdAndTruckMap = truckList.stream()
+                .collect(Collectors.groupingBy(KwfTruck::getEntId));
 
         //遍历所有企业
         List<TruckInfoVo> ents = enterpriseResDtoList.stream()

+ 17 - 0
sql/2025/10/30/2025_10_30_cxf_alert.sql

@@ -9,3 +9,20 @@ ALTER TABLE kwf_truck ADD drive_mode varchar(255)    NOT NULL default ''      co
 
 ALTER TABLE kwt_waybill_order ADD task_start_time datetime NOT NULL default '1000-01-01 00:00:00' comment '任务开始时间';
 ALTER TABLE kwt_waybill_order ADD task_end_time datetime NOT NULL default '1000-01-01 00:00:00' comment '任务结束时间';
+
+
+create table kwf_truck_route
+(
+    id          bigint        not null comment '主键'
+        primary key,
+    fleet_id    bigint        null comment '车队id',
+    driver_id   bigint        null comment '司机id',
+    ent_id      bigint        not null comment '企业id',
+    start_point      varchar(400)  null comment '起始点',
+    unloading_Point      int default 0 not null comment '卸货地点',
+    shortest_time varchar(10)        not null  comment '最短时间',
+    create_time datetime      not null default current_timestamp comment '创建时间',
+    update_time datetime      not null default current_timestamp on update current_timestamp comment '更新时间',
+    del_flag    tinyint       not null default 0 comment '是否删除(0未删除,1删除)'
+)
+    comment '车辆惯用线路信息表';

+ 17 - 0
sql/2025/10/30/2025_10_30_cxf_create.sql

@@ -0,0 +1,17 @@
+
+
+create table kwf_truck_route
+(
+    id          bigint        not null comment '主键'
+        primary key,
+    fleet_id    bigint        not null default 0 comment '车队id',
+    driver_id   bigint        not null default 0 comment '司机id',
+    ent_id      bigint        not null default 0 comment '企业id',
+    start_point      varchar(400)  not null default '' comment '起始点',
+    unloading_Point   varchar(400)  not null default '' comment '卸货地点',
+    shortest_time varchar(10)        not null  comment '最短时间',
+    create_time datetime      not null default current_timestamp comment '创建时间',
+    update_time datetime      not null default current_timestamp on update current_timestamp comment '更新时间',
+    del_flag    tinyint       not null default 0 comment '是否删除(0未删除,1删除)'
+)
+    comment '车辆惯用线路信息表';