diff --git a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizDriverStateController.java b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizDriverStateController.java index ca85eae..6557962 100644 --- a/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizDriverStateController.java +++ b/cpxt-admin/src/main/java/com/cpxt/web/controller/biz/BizDriverStateController.java @@ -23,21 +23,19 @@ public class BizDriverStateController { * 查询司机定位信息 */ @GetMapping("/list") - public AjaxResult list() - { + public AjaxResult list() { return AjaxResult.success(bizDriverStateService.selectDriverLocation()); } /** * 查询司机轨迹信息 */ - @GetMapping("/track") + @GetMapping("/track") public AjaxResult list(@RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime, - @RequestParam Long driverId) - { + @RequestParam Long driverId) { String tableName = "track_driver_" + driverId; - return AjaxResult.success(bizDriverStateService.selectDriverTrack(startTime,endTime,tableName)); + return AjaxResult.success(bizDriverStateService.selectDriverTrack(startTime, endTime, tableName)); } /** @@ -45,8 +43,7 @@ public class BizDriverStateController { */ @PostMapping("/add") @Transactional - public AjaxResult add(@RequestBody BizDriverState bizDriverState) - { + public AjaxResult add(@RequestBody BizDriverState bizDriverState) { // 同步新增到司机对应的轨迹表中 bizDriverStateService.insertDriveDriveState(bizDriverState); bizDriverState.setId(null); diff --git a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCarState.java b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCarState.java index 1d7c249..a9574be 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCarState.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizCarState.java @@ -2,6 +2,8 @@ package com.cpxt.biz.domain; import java.math.BigDecimal; import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; @@ -31,6 +33,15 @@ public class BizCarState @Excel(name = "车牌号") private String carNo; + @TableField(exist = false) + private String orderSn; + + @TableField(exist = false) + private String driverName; + + @TableField(exist = false) + private String copilotName; + /** 定位设备ID */ @Excel(name = "定位设备ID") private String vin; diff --git a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizDriverState.java b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizDriverState.java index 48b3032..824657d 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizDriverState.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizDriverState.java @@ -34,6 +34,12 @@ public class BizDriverState implements Serializable { */ private String driverName; + @TableField(exist = false) + private String orderSn; + + @TableField(exist = false) + private String carNo; + /** * 定位设备ID */ diff --git a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrderTask.java b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrderTask.java index 3a56989..79ebfcc 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrderTask.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/domain/BizOrderTask.java @@ -107,4 +107,10 @@ public class BizOrderTask /** 更新者 */ private String updateBy; + private Integer execMode; + + private String execTimes; + + private String orderDateMode; + } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizDriverStateMapper.java b/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizDriverStateMapper.java index 76310a7..f380e16 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizDriverStateMapper.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/mapper/BizDriverStateMapper.java @@ -20,7 +20,7 @@ public interface BizDriverStateMapper extends BaseMapper { int insertBizDriverState(BizDriverState bizDriverState); - Map selectDriverTrack(@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("tableName") String tableName); + List selectDriverTrack(@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("tableName") String tableName); @Select("SELECT * FROM biz_driver_state WHERE id in (SELECT t.id FROM (SELECT id,MAX(gps_time) FROM biz_driver_state GROUP BY driver_id) t)") List selectDriverLocation(); diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/BizDriverStateService.java b/cpxt-system/src/main/java/com/cpxt/biz/service/BizDriverStateService.java index d4656e8..918aa9c 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/BizDriverStateService.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/BizDriverStateService.java @@ -15,7 +15,7 @@ public interface BizDriverStateService extends IService { public int insertDriveDriveState(BizDriverState bizDriverState); - Map selectDriverTrack(String startTime, String endTime, String tableName); + List selectDriverTrack(String startTime, String endTime, String tableName); List selectDriverLocation(); diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarStateServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarStateServiceImpl.java index a32f671..c5db61c 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarStateServiceImpl.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizCarStateServiceImpl.java @@ -1,13 +1,16 @@ package com.cpxt.biz.service.impl; import java.util.Arrays; +import java.util.Date; import java.util.List; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cpxt.biz.domain.BizCarState; +import com.cpxt.biz.domain.BizOrder; import com.cpxt.biz.mapper.BizCarStateMapper; +import com.cpxt.biz.mapper.BizOrderMapper; import com.cpxt.biz.service.IBizCarStateService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -24,6 +27,9 @@ public class BizCarStateServiceImpl implements IBizCarStateService @Autowired private BizCarStateMapper bizCarStateMapper; + @Autowired + private BizOrderMapper bizOrderMapper; + /** * 查询车辆实时状态列表(分页) * @@ -72,7 +78,24 @@ public class BizCarStateServiceImpl implements IBizCarStateService public List selectBizCarStateList(BizCarState bizCarState) { LambdaQueryWrapper queryWrapper = buildQueryWrapper(bizCarState); - return bizCarStateMapper.selectList(queryWrapper); + List bizCarStateList = bizCarStateMapper.selectList(queryWrapper); + for (BizCarState carState : bizCarStateList) { + Date gpsTime = carState.getGpsTime(); + String carNo = carState.getCarNo(); + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(BizOrder::getCarNo,carNo); + queryWrapper1.in(BizOrder::getOrderStatus,"1","2"); + queryWrapper1.le(BizOrder::getUpdateTime,gpsTime); + queryWrapper1.orderByDesc(BizOrder::getUpdateTime); + queryWrapper1.last("limit 1"); + BizOrder bizOrder = bizOrderMapper.selectOne(queryWrapper1); + if (bizOrder != null){ + carState.setOrderSn(bizOrder.getOrderSn()); + carState.setDriverName(bizOrder.getDriverName()); + carState.setCopilotName(bizOrder.getCopilotName()); + } + } + return bizCarStateList; } /** diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizDriverStateServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizDriverStateServiceImpl.java index dc2e8e6..61bab3c 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizDriverStateServiceImpl.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizDriverStateServiceImpl.java @@ -1,12 +1,16 @@ package com.cpxt.biz.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.cpxt.biz.domain.BizDriverState; +import com.cpxt.biz.domain.BizOrder; import com.cpxt.biz.mapper.BizDriverStateMapper; +import com.cpxt.biz.mapper.BizOrderMapper; import com.cpxt.biz.service.BizDriverStateService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; import java.util.Map; @@ -22,19 +26,38 @@ public class BizDriverStateServiceImpl extends ServiceImpl selectDriverTrack(String startTime, String endTime, String tableName) { return bizDriverStateMapper.selectDriverTrack(startTime,endTime,tableName); } @Override public List selectDriverLocation() { - return bizDriverStateMapper.selectDriverLocation(); + List bizDriverStateList = bizDriverStateMapper.selectDriverLocation(); + for (BizDriverState bizDriverState : bizDriverStateList) { + Integer driverId = bizDriverState.getDriverId(); + Date gpsTime = bizDriverState.getGpsTime(); + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(BizOrder::getDriverId,driverId); + queryWrapper1.in(BizOrder::getOrderStatus,"1","2"); + queryWrapper1.le(BizOrder::getUpdateTime,gpsTime); + queryWrapper1.orderByDesc(BizOrder::getUpdateTime); + queryWrapper1.last("limit 1"); + BizOrder bizOrder = bizOrderMapper.selectOne(queryWrapper1); + if (bizOrder != null){ + bizDriverState.setOrderSn(bizOrder.getOrderSn()); + bizDriverState.setCarNo(bizOrder.getCarNo()); + } + } + return bizDriverStateList; } } diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderServiceImpl.java index 63b8846..96b003d 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderServiceImpl.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderServiceImpl.java @@ -185,10 +185,10 @@ public class BizOrderServiceImpl implements IBizOrderService { queryWrapper.like(BizOrder::getCopilotName, bizOrder.getCopilotName()); } if (ObjectUtil.isNotEmpty(bizOrder.getSenderName())) { - queryWrapper.and(wq -> wq.like(BizOrder::getSenderName, bizOrder.getSenderName()).or().like(BizOrder::getSenderPhone,bizOrder.getSenderName()).or().like(BizOrder::getSenderAddress,bizOrder.getSenderName())); + queryWrapper.and(wq -> wq.like(BizOrder::getSenderName, bizOrder.getSenderName()).or().like(BizOrder::getSenderPhone,bizOrder.getSenderName()).or().like(BizOrder::getSenderAddress,bizOrder.getSenderName()).or().like(BizOrder::getSenderLinkman,bizOrder.getSenderName())); } if (ObjectUtil.isNotEmpty(bizOrder.getReceiverName())) { - queryWrapper.and(wq -> wq.like(BizOrder::getReceiverName, bizOrder.getReceiverName()).or().like(BizOrder::getReceiverPhone,bizOrder.getReceiverName()).or().like(BizOrder::getReceiverAddress,bizOrder.getReceiverName())); + queryWrapper.and(wq -> wq.like(BizOrder::getReceiverName, bizOrder.getReceiverName()).or().like(BizOrder::getReceiverPhone,bizOrder.getReceiverName()).or().like(BizOrder::getReceiverAddress,bizOrder.getReceiverName()).or().like(BizOrder::getReceiverLinkman,bizOrder.getReceiverName())); } if (ObjectUtil.isNotEmpty(bizOrder.getReceiverLinkman())) { queryWrapper.like(BizOrder::getReceiverLinkman, bizOrder.getReceiverLinkman()); diff --git a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderTaskServiceImpl.java b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderTaskServiceImpl.java index 4974675..8bf63b2 100644 --- a/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderTaskServiceImpl.java +++ b/cpxt-system/src/main/java/com/cpxt/biz/service/impl/BizOrderTaskServiceImpl.java @@ -71,6 +71,12 @@ public class BizOrderTaskServiceImpl implements IBizOrderTaskService { String uuid = UUID.randomUUID().toString(); + // 根据execTimes构建cron表达式 + String execTimes = bizOrderTask.getExecTimes(); // 16:24:30 + String[] split = execTimes.split(":"); + String cron = split[2] + " " + split[1] + " " + split[0] + " * * ?"; + bizOrderTask.setCronExpression(cron); + SysJob sysJob = new SysJob(); sysJob.setJobName(bizOrderTask.getName()); sysJob.setInvokeTarget("orderTask.generateOrder('" + uuid +"')"); @@ -87,6 +93,7 @@ public class BizOrderTaskServiceImpl implements IBizOrderTaskService bizOrderTask.setCode(uuid); bizOrderTask.setJobId(sysJob.getJobId()); + return bizOrderTaskMapper.insert(bizOrderTask); } @@ -100,6 +107,12 @@ public class BizOrderTaskServiceImpl implements IBizOrderTaskService @Transactional public int updateBizOrderTask(BizOrderTask bizOrderTask) { + // 根据execTimes构建cron表达式 + String execTimes = bizOrderTask.getExecTimes(); // 16:24:30 + String[] split = execTimes.split(":"); + String cron = split[2] + " " + split[1] + " " + split[0] + " * * ?"; + bizOrderTask.setCronExpression(cron); + // 同步修改订单任务 SysJob sysJob = sysJobMapper.selectJobById(bizOrderTask.getJobId()); sysJob.setJobName(bizOrderTask.getName()); diff --git a/cpxt-system/src/main/resources/mapper/biz/BizDriverStateMapper.xml b/cpxt-system/src/main/resources/mapper/biz/BizDriverStateMapper.xml index 6a0dc85..7bc703a 100644 --- a/cpxt-system/src/main/resources/mapper/biz/BizDriverStateMapper.xml +++ b/cpxt-system/src/main/resources/mapper/biz/BizDriverStateMapper.xml @@ -72,7 +72,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 1=1 - and gps_time >= #{createTime} + and gps_time >= #{startTime} and gps_time <= #{endTime}