提交 f2363240 authored 作者: 刘海泉's avatar 刘海泉

新增车辆人员轨迹信息

上级 a902ec90
package com.clx.performance.param.pc.trace;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
/**
* @ClassName QueryTraceParam
* @Description
* @Author kavin
* @Date 2024/5/13 18:07
* @Version 1.0
*/
@Getter
@Setter
public class QueryTraceParam {
@ApiModelProperty("运单编号")
private String childNo;
@NotBlank(message = "车牌号不能为空")
@ApiModelProperty("车牌号")
private String truckNo;
@NotBlank(message = "开始时间不能为空")
@ApiModelProperty("开始时间")
private String beginTime;
@NotBlank(message = "结束时间不能为空")
@ApiModelProperty("结束时间")
private String endTime;
}
package com.clx.performance.vo.pc.trace;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.List;
/**
* @Author: aiqinguo
* @Description: 车辆轨迹
* @Date: 2024/04/25 17:09:33
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
public class OrderChildTraceVO {
@ApiModelProperty(value = "车辆轨迹列表")
List<DriverTruckTraceVO> truckTraceList;
@ApiModelProperty(value = "司机轨迹列表")
List<DriverTraceVO> driverTraceList;
}
\ No newline at end of file
package com.clx.performance.controller.pc.trace;
import com.clx.performance.param.pc.trace.QueryTraceParam;
import com.clx.performance.service.trace.TraceMonitorService;
import com.clx.performance.service.trace.TruckTraceService;
import com.clx.performance.vo.pc.trace.OrderChildTraceVO;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
/**
* @ClassName TraceController
* @Description
* @Author kavin
* @Date 2024/5/13 17:54
* @Version 1.0
*/
@Slf4j
@RestController
@RequestMapping("/pc/carrier/trace/monitor")
@Validated
@Api(tags = "PC-承运轨迹监控")
@AllArgsConstructor
public class TraceController{
private final TraceMonitorService traceMonitorService;
@ApiOperation(value = "运单轨迹监控", notes = "<br>By:刘海泉")
@PostMapping("/getOrderChildTrace")
public Result<OrderChildTraceVO> getOrderChildTrace(@RequestBody @Validated QueryTraceParam param) {
return Result.ok(traceMonitorService.getOrderChildTrace(param));
}
@ApiOperation(value = "车辆轨迹监控", notes = "<br>By:刘海泉")
@PostMapping("/getTruckTrace")
public Result<OrderChildTraceVO> getTruckTrace(@RequestBody @Validated QueryTraceParam param) {
return Result.ok(traceMonitorService.getTruckTrace(param));
}
}
\ No newline at end of file
package com.clx.performance.service.impl.trace;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.enums.ResultEnum;
import com.clx.performance.esplus.mapper.DriverTraceESPlusMapper;
import com.clx.performance.esplus.mapper.TruckTraceESPlusMapper;
import com.clx.performance.esplus.model.DriverTraceESPlus;
import com.clx.performance.esplus.model.TruckTraceESPlus;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.pc.trace.QueryTraceParam;
import com.clx.performance.param.temp.DriverTraceAddParam;
import com.clx.performance.param.temp.TruckTraceAddParam;
import com.clx.performance.service.trace.TraceMonitorService;
import com.clx.performance.service.trace.TruckTraceService;
import com.clx.performance.struct.trace.DriverTraceStruct;
import com.clx.performance.struct.trace.TruckTraceStruct;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.vo.pc.trace.DriverTraceVO;
import com.clx.performance.vo.pc.trace.DriverTruckTraceVO;
import com.clx.performance.vo.pc.trace.OrderChildTraceVO;
import com.msl.common.exception.ServiceSystemException;
import com.msl.common.utils.DateUtils;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Service
@AllArgsConstructor
public class TraceMonitorServiceImpl implements TraceMonitorService {
private final TruckTraceService truckTraceService;
private final OrderChildDao orderChildDao;
private final int TRACE_DAY_MAX = 7;
@Override
public OrderChildTraceVO getOrderChildTrace(QueryTraceParam param) {
if(StringUtils.isBlank(param.getChildNo())){
throw new ServiceSystemException(ResultEnum.PARAM_ERROR,"运单编号不能为空");
}
checkParam(param);
OrderChild child = orderChildDao.getByChildNo(param.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND,
"运单数据不存在");
List<DriverTruckTraceVO> truckTrace = truckTraceService.listTruckTraceByTime(param.getTruckNo(),param.getBeginTime(),param.getEndTime());
List<DriverTraceVO> driverTrace = truckTraceService.listDriverTraceByTime(child.getDriverUserNo(),param.getBeginTime(),param.getEndTime());
OrderChildTraceVO result = new OrderChildTraceVO();
result.setDriverTraceList(driverTrace);
result.setTruckTraceList(truckTrace);
return result;
}
@Override
public OrderChildTraceVO getTruckTrace(QueryTraceParam param) {
checkParam(param);
List<DriverTruckTraceVO> truckTrace = truckTraceService.listTruckTraceByTime(param.getTruckNo(),param.getBeginTime(),param.getEndTime());
//查询车辆的车主信息
List<DriverTraceVO> driverTrace = truckTraceService.listDriverTraceByTime(,param.getBeginTime(),param.getEndTime());
OrderChildTraceVO result = new OrderChildTraceVO();
result.setDriverTraceList(driverTrace);
result.setTruckTraceList(truckTrace);
return result;
}
public void checkParam(QueryTraceParam param){
LocalDateTime beginTime = DateUtils.parseDateTime(param.getBeginTime()).get();
LocalDateTime endTime = DateUtils.parseDateTime(param.getEndTime()).get();
if (endTime.isAfter(beginTime.plusDays(TRACE_DAY_MAX)) ) { //最多查询7天
throw new ServiceSystemException(ResultEnum.PARAM_ERROR,"选择的时间范围需小于7天");
}
}
}
package com.clx.performance.service.trace;
import com.clx.performance.param.pc.trace.QueryTraceParam;
import com.clx.performance.vo.pc.trace.OrderChildTraceVO;
public interface TraceMonitorService {
OrderChildTraceVO getOrderChildTrace(QueryTraceParam param);
OrderChildTraceVO getTruckTrace(QueryTraceParam param);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论