提交 1c6ba5c2 authored 作者: liuhaiquan's avatar liuhaiquan

提交车辆列表代码

上级 d84325a5
......@@ -27,6 +27,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<dependency>
......
package com.clx.performance.param.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
/**
* @ClassName PageTruckListParam
* @Description
* @Author kavin
* @Date 2023/9/19 16:04
* @Version 1.0
*/
@Getter
@Setter
public class PageTruckListParam {
@NotNull(message = "需要车数不能为空")
@ApiModelProperty(value = "需要车辆数量", example = "5")
private Integer needTruckNum;
@ApiModelProperty(value = "空重车状态 1 空车 2 运单-空车 3 运单-重车", example = "1")
private Integer truckUserStatus;
@ApiModelProperty(value = "车辆等级", example = "A")
private String truckLevel;
@ApiModelProperty(value = "距离最大值", example = "20")
private Integer maxDistance;
@ApiModelProperty(value = "车牌号", example = "冀F12345")
private String truckNo;
}
package com.clx.performance.vo.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @ClassName SeniorLogisticsManagerVO
* @Description
* @Author kavin
* @Date 2023/9/18 19:51
* @Version 1.0
*/
@Getter
@Setter
public class PageTruckListVO {
@ApiModelProperty("车牌号")
private String truckNo;
@ApiModelProperty("状态")
private String userName;
@ApiModelProperty(value = "车辆等级", example = "A")
private String truckLevel;
@ApiModelProperty(value = "距货源地", example = "20")
private Integer maxDistance;
}
......@@ -38,6 +38,12 @@
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.clx.cy</groupId>
<artifactId>user-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.msl</groupId>
<artifactId>user-sdk</artifactId>
......
......@@ -4,4 +4,8 @@ public class RedisConstants {
public static final String ORDER_NO_BLOCK = "performance:order_no_block:";
public static final String ZJXL_TRUCK_TRACE_LIST = "performance:zjxl_truck_trace_list:";
}
package com.clx.performance.controller.pc;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.order.feign.OrderFeign;
import com.clx.order.params.OrderGoodsChildParams;
import com.clx.order.params.OrderGoodsParams;
import com.clx.order.params.PageCarrierOrderListParam;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.order.vo.feign.FeignPageOrderVO;
import com.clx.performance.component.OrderGoodsIdGenerate;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.PageTruckListParam;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.vo.pc.PageTruckListVO;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result;
import com.msl.common.utils.DateUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* @ClassName GoodsOrderController
* @Description
* @Author kavin
* @Date 2023/9/17 17:16
* @Version 1.0
*/
@Slf4j
@RestController
@RequestMapping("/pc/truck")
@Validated
@Api(tags = "PC-车辆")
public class TruckController {
@ApiOperation(value = "获取车辆列表", notes = "<br>By:刘海泉")
@PostMapping("/pageTruckList")
public Result<PageData<PageTruckListVO>> pageTruckList(@RequestBody @Validated PageTruckListParam param) {
IPage<PageTruckListVO> page = null;
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
}
package com.clx.performance.job;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.dto.zjxl.TruckTraceDTO;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.utils.zjxl.ZjxlGpsService;
import com.clx.user.feign.UserClxFeign;
import com.msl.common.enums.ResultCodeEnum;
import com.msl.common.job.JobLog;
import com.msl.common.result.Result;
import com.msl.user.feign.UserFeign;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
@Slf4j
@Component
public class TruckTraceJob {
@Resource
UserClxFeign userClxFeign;
@Autowired
ZjxlGpsService zjxlGpsService;
@Autowired
RedisTemplate redisTemplate;
/**
* 驾驶证过期
*/
@XxlJob("truckTrace")
public void truckTrace() {
try {
getPlatformTruckTrace();
} catch (Exception e) {
log.warn("定时任务获取平台车辆定位信息失败,异常原因:{}",e);
JobLog.error("定时任务获取平台车辆定位信息失败,异常原因=====================", e);
}
}
/**
* @Author kavin
* @Description 定时获取平台车辆的定位
* @Param []
* @return
**/
public void getPlatformTruckTrace(){
Result<List<String>> result = userClxFeign.getPlatformTruckList();
log.info("通过clx-user服务获取平台认证成功车辆,返回结果:{}",result);
LocalDateTime now = LocalDateTime.now();
LocalDateTime beginTime = now.plus(-5, ChronoUnit.MINUTES);
if(Objects.equals(result.getCode(), ResultCodeEnum.SUCCESS.getCode())){
List<String> truckNos = result.getData();
for(String truckNo : truckNos){
List<TruckTraceDTO> truckTrace = zjxlGpsService.getTruckTrace(truckNo,
LocalDateTimeUtils.formatTime(beginTime), LocalDateTimeUtils.formatTime(now));
if(CollectionUtils.isNotEmpty(truckTrace)){
//排序获取最新的定位位置
truckTrace.stream().sorted(Comparator.comparing(TruckTraceDTO::getGpsTime));
TruckTraceDTO truckTraceDTO = truckTrace.get(0);
redisTemplate.opsForHash().put(RedisConstants.ZJXL_TRUCK_TRACE_LIST,truckNo,truckTraceDTO);
}
}
}else{
log.info("通过clx-user服务获取平台认证成功车辆,获取失败");
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论