订单定时任务优化

master
luojian 2025-01-07 10:28:45 +08:00
parent 8d2b0ea864
commit 5e9e830180
11 changed files with 95 additions and 16 deletions

View File

@ -23,8 +23,7 @@ public class BizDriverStateController {
* *
*/ */
@GetMapping("/list") @GetMapping("/list")
public AjaxResult list() public AjaxResult list() {
{
return AjaxResult.success(bizDriverStateService.selectDriverLocation()); return AjaxResult.success(bizDriverStateService.selectDriverLocation());
} }
@ -34,8 +33,7 @@ public class BizDriverStateController {
@GetMapping("/track") @GetMapping("/track")
public AjaxResult list(@RequestParam(required = false) String startTime, public AjaxResult list(@RequestParam(required = false) String startTime,
@RequestParam(required = false) String endTime, @RequestParam(required = false) String endTime,
@RequestParam Long driverId) @RequestParam Long driverId) {
{
String tableName = "track_driver_" + 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") @PostMapping("/add")
@Transactional @Transactional
public AjaxResult add(@RequestBody BizDriverState bizDriverState) public AjaxResult add(@RequestBody BizDriverState bizDriverState) {
{
// 同步新增到司机对应的轨迹表中 // 同步新增到司机对应的轨迹表中
bizDriverStateService.insertDriveDriveState(bizDriverState); bizDriverStateService.insertDriveDriveState(bizDriverState);
bizDriverState.setId(null); bizDriverState.setId(null);

View File

@ -2,6 +2,8 @@ package com.cpxt.biz.domain;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
@ -31,6 +33,15 @@ public class BizCarState
@Excel(name = "车牌号") @Excel(name = "车牌号")
private String carNo; private String carNo;
@TableField(exist = false)
private String orderSn;
@TableField(exist = false)
private String driverName;
@TableField(exist = false)
private String copilotName;
/** 定位设备ID */ /** 定位设备ID */
@Excel(name = "定位设备ID") @Excel(name = "定位设备ID")
private String vin; private String vin;

View File

@ -34,6 +34,12 @@ public class BizDriverState implements Serializable {
*/ */
private String driverName; private String driverName;
@TableField(exist = false)
private String orderSn;
@TableField(exist = false)
private String carNo;
/** /**
* ID * ID
*/ */

View File

@ -107,4 +107,10 @@ public class BizOrderTask
/** 更新者 */ /** 更新者 */
private String updateBy; private String updateBy;
private Integer execMode;
private String execTimes;
private String orderDateMode;
} }

View File

@ -20,7 +20,7 @@ public interface BizDriverStateMapper extends BaseMapper<BizDriverState> {
int insertBizDriverState(BizDriverState bizDriverState); int insertBizDriverState(BizDriverState bizDriverState);
Map selectDriverTrack(@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("tableName") String tableName); List<Map> 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)") @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<BizDriverState> selectDriverLocation(); List<BizDriverState> selectDriverLocation();

View File

@ -15,7 +15,7 @@ public interface BizDriverStateService extends IService<BizDriverState> {
public int insertDriveDriveState(BizDriverState bizDriverState); public int insertDriveDriveState(BizDriverState bizDriverState);
Map selectDriverTrack(String startTime, String endTime, String tableName); List<Map> selectDriverTrack(String startTime, String endTime, String tableName);
List<BizDriverState> selectDriverLocation(); List<BizDriverState> selectDriverLocation();

View File

@ -1,13 +1,16 @@
package com.cpxt.biz.service.impl; package com.cpxt.biz.service.impl;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date;
import java.util.List; import java.util.List;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cpxt.biz.domain.BizCarState; import com.cpxt.biz.domain.BizCarState;
import com.cpxt.biz.domain.BizOrder;
import com.cpxt.biz.mapper.BizCarStateMapper; import com.cpxt.biz.mapper.BizCarStateMapper;
import com.cpxt.biz.mapper.BizOrderMapper;
import com.cpxt.biz.service.IBizCarStateService; import com.cpxt.biz.service.IBizCarStateService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -24,6 +27,9 @@ public class BizCarStateServiceImpl implements IBizCarStateService
@Autowired @Autowired
private BizCarStateMapper bizCarStateMapper; private BizCarStateMapper bizCarStateMapper;
@Autowired
private BizOrderMapper bizOrderMapper;
/** /**
* *
* *
@ -72,7 +78,24 @@ public class BizCarStateServiceImpl implements IBizCarStateService
public List<BizCarState> selectBizCarStateList(BizCarState bizCarState) public List<BizCarState> selectBizCarStateList(BizCarState bizCarState)
{ {
LambdaQueryWrapper<BizCarState> queryWrapper = buildQueryWrapper(bizCarState); LambdaQueryWrapper<BizCarState> queryWrapper = buildQueryWrapper(bizCarState);
return bizCarStateMapper.selectList(queryWrapper); List<BizCarState> bizCarStateList = bizCarStateMapper.selectList(queryWrapper);
for (BizCarState carState : bizCarStateList) {
Date gpsTime = carState.getGpsTime();
String carNo = carState.getCarNo();
LambdaQueryWrapper<BizOrder> 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;
} }
/** /**

View File

@ -1,12 +1,16 @@
package com.cpxt.biz.service.impl; package com.cpxt.biz.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cpxt.biz.domain.BizDriverState; import com.cpxt.biz.domain.BizDriverState;
import com.cpxt.biz.domain.BizOrder;
import com.cpxt.biz.mapper.BizDriverStateMapper; import com.cpxt.biz.mapper.BizDriverStateMapper;
import com.cpxt.biz.mapper.BizOrderMapper;
import com.cpxt.biz.service.BizDriverStateService; import com.cpxt.biz.service.BizDriverStateService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -22,19 +26,38 @@ public class BizDriverStateServiceImpl extends ServiceImpl<BizDriverStateMapper,
@Autowired @Autowired
private BizDriverStateMapper bizDriverStateMapper; private BizDriverStateMapper bizDriverStateMapper;
@Autowired
private BizOrderMapper bizOrderMapper;
@Override @Override
public int insertDriveDriveState(BizDriverState bizDriverState) { public int insertDriveDriveState(BizDriverState bizDriverState) {
return bizDriverStateMapper.insertBizDriverState(bizDriverState); return bizDriverStateMapper.insertBizDriverState(bizDriverState);
} }
@Override @Override
public Map selectDriverTrack(String startTime, String endTime, String tableName) { public List<Map> selectDriverTrack(String startTime, String endTime, String tableName) {
return bizDriverStateMapper.selectDriverTrack(startTime,endTime,tableName); return bizDriverStateMapper.selectDriverTrack(startTime,endTime,tableName);
} }
@Override @Override
public List<BizDriverState> selectDriverLocation() { public List<BizDriverState> selectDriverLocation() {
return bizDriverStateMapper.selectDriverLocation(); List<BizDriverState> bizDriverStateList = bizDriverStateMapper.selectDriverLocation();
for (BizDriverState bizDriverState : bizDriverStateList) {
Integer driverId = bizDriverState.getDriverId();
Date gpsTime = bizDriverState.getGpsTime();
LambdaQueryWrapper<BizOrder> 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;
} }
} }

View File

@ -185,10 +185,10 @@ public class BizOrderServiceImpl implements IBizOrderService {
queryWrapper.like(BizOrder::getCopilotName, bizOrder.getCopilotName()); queryWrapper.like(BizOrder::getCopilotName, bizOrder.getCopilotName());
} }
if (ObjectUtil.isNotEmpty(bizOrder.getSenderName())) { 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())) { 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())) { if (ObjectUtil.isNotEmpty(bizOrder.getReceiverLinkman())) {
queryWrapper.like(BizOrder::getReceiverLinkman, bizOrder.getReceiverLinkman()); queryWrapper.like(BizOrder::getReceiverLinkman, bizOrder.getReceiverLinkman());

View File

@ -71,6 +71,12 @@ public class BizOrderTaskServiceImpl implements IBizOrderTaskService
{ {
String uuid = UUID.randomUUID().toString(); 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 sysJob = new SysJob();
sysJob.setJobName(bizOrderTask.getName()); sysJob.setJobName(bizOrderTask.getName());
sysJob.setInvokeTarget("orderTask.generateOrder('" + uuid +"')"); sysJob.setInvokeTarget("orderTask.generateOrder('" + uuid +"')");
@ -87,6 +93,7 @@ public class BizOrderTaskServiceImpl implements IBizOrderTaskService
bizOrderTask.setCode(uuid); bizOrderTask.setCode(uuid);
bizOrderTask.setJobId(sysJob.getJobId()); bizOrderTask.setJobId(sysJob.getJobId());
return bizOrderTaskMapper.insert(bizOrderTask); return bizOrderTaskMapper.insert(bizOrderTask);
} }
@ -100,6 +107,12 @@ public class BizOrderTaskServiceImpl implements IBizOrderTaskService
@Transactional @Transactional
public int updateBizOrderTask(BizOrderTask bizOrderTask) 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 sysJob = sysJobMapper.selectJobById(bizOrderTask.getJobId());
sysJob.setJobName(bizOrderTask.getName()); sysJob.setJobName(bizOrderTask.getName());

View File

@ -72,7 +72,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<where> <where>
1=1 1=1
<if test="null != startTime and startTime != ''"> <if test="null != startTime and startTime != ''">
and gps_time &gt;= #{createTime} and gps_time &gt;= #{startTime}
</if> </if>
<if test="null != endTime and endTime != ''"> <if test="null != endTime and endTime != ''">
and gps_time &lt;= #{endTime} and gps_time &lt;= #{endTime}