提交 944eb43a authored 作者: liuhaiquan's avatar liuhaiquan

新增已选车辆列表接口

上级 42333faf
package com.clx.performance.param.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
/**
* @ClassName OrderGoodsTruckListParam
* @Description
* @Author kavin
* @Date 2023/10/25 20:13
* @Version 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class OrderGoodsTruckListParam {
@ApiModelProperty(value = "货单编号", example = "100000000")
@NotBlank(message = "货单编号不能为空")
private String orderGoodsNo;
@ApiModelProperty(value = "车牌号", example = "")
private String truckNo;
}
package com.clx.performance.vo.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
/**
* @ClassName SeniorLogisticsManagerVO
* @Description
* @Author kavin
* @Date 2023/9/18 19:51
* @Version 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class OrderGoodsTruckListVO {
@ApiModelProperty("车牌号")
private String truckNo;
@ApiModelProperty(value = "空重车状态 1:空车 2:运单-空车 3:运单-重车", example = "1")
private Integer truckUseStatus;
@ApiModelProperty(value = "车辆等级", example = "A")
private String truckLevel;
@ApiModelProperty(value = "距货源地", example = "20")
private Double maxDistance;
@ApiModelProperty(value = "接单状态 0:未接单 1:已接单", example = "0")
private Integer orderedStatus;
}
package com.clx.performance.controller.pc;
import com.clx.performance.dto.zjxl.TruckTraceDTO;
import com.clx.performance.param.pc.OrderGoodsTruckListParam;
import com.clx.performance.param.pc.PageTruckListParam;
import com.clx.performance.param.pc.PageVicinityTruckListParam;
import com.clx.performance.service.TruckService;
import com.clx.performance.vo.pc.OrderGoodsTruckListVO;
import com.clx.performance.vo.pc.PageTruckListVO;
import com.msl.common.base.PageData;
import com.msl.common.result.Result;
......@@ -14,6 +16,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @ClassName GoodsOrderController
* @Description
......@@ -65,6 +69,14 @@ public class TruckController {
@ApiOperation(value = "获取货单选择的车辆列表", notes = "<br>By:刘海泉")
@PostMapping("/getOrderGoodsTruckList")
public Result<List<OrderGoodsTruckListVO>> getOrderGoodsTruckList(@RequestBody @Validated OrderGoodsTruckListParam param) {
List<OrderGoodsTruckListVO> list = truckService.getOrderGoodsTruckList(param);
return Result.ok(list);
}
......
......@@ -33,4 +33,8 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
List<OrderGoodsTruckBind> selectListByOrderGoodsNo(String orderGoodsNo);
void updateOrderGoodsBindStatusExpire(String orderGoodsNo);
List<OrderGoodsTruckBind> getTrucksBindByOrderGoodsNo(String orderGoodsNo,String truckNo);
}
package com.clx.performance.dao.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.mapper.OrderGoodsTruckBindMapper;
......@@ -8,6 +10,7 @@ import com.clx.performance.model.OrderGoodsTruckBind;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import com.msl.common.utils.DateUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
......@@ -97,4 +100,17 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
.set(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.EXPIRE.getCode())
);
}
@Override
public List<OrderGoodsTruckBind> getTrucksBindByOrderGoodsNo(String orderGoodsNo,String truckNo) {
LambdaQueryWrapper<OrderGoodsTruckBind> query = new LambdaQueryWrapper();
query.eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo);
if(StringUtils.isNotBlank(truckNo)){
query.eq(OrderGoodsTruckBind::getTruckNo, truckNo);
}
query.in(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.SUCCESS.getCode(),OrderGoodsTruckBindEnum.Status.GET.getCode());
query.orderByDesc(OrderGoodsTruckBind :: getCreateTime);
return baseMapper.selectList(query);
}
}
......@@ -2,8 +2,10 @@ package com.clx.performance.service;
import com.clx.performance.dto.zjxl.TruckCoordinateDTO;
import com.clx.performance.dto.zjxl.TruckTraceDTO;
import com.clx.performance.param.pc.OrderGoodsTruckListParam;
import com.clx.performance.param.pc.PageTruckListParam;
import com.clx.performance.param.pc.PageVicinityTruckListParam;
import com.clx.performance.vo.pc.OrderGoodsTruckListVO;
import com.clx.performance.vo.pc.PageTruckListVO;
import com.msl.common.base.PageData;
......@@ -29,4 +31,6 @@ public interface TruckService {
List<TruckCoordinateDTO> getAllTruckCoordinate();
List<OrderGoodsTruckListVO> getOrderGoodsTruckList(OrderGoodsTruckListParam param);
}
......@@ -5,14 +5,19 @@ import com.clx.order.enums.ResultEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.dto.zjxl.TruckCoordinateDTO;
import com.clx.performance.dto.zjxl.TruckTraceDTO;
import com.clx.performance.enums.DriverTruckEnum;
import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.job.TruckTraceJob;
import com.clx.performance.model.OrderGoodsTruckBind;
import com.clx.performance.param.pc.OrderGoodsTruckListParam;
import com.clx.performance.param.pc.PageTruckListParam;
import com.clx.performance.param.pc.PageVicinityTruckListParam;
import com.clx.performance.service.TruckService;
import com.clx.performance.utils.RedisGeoUntil;
import com.clx.performance.vo.pc.OrderGoodsTruckListVO;
import com.clx.performance.vo.pc.PageTruckListVO;
import com.clx.user.feign.UserClxFeign;
import com.clx.user.vo.feign.TruckUseStatusVO;
......@@ -65,6 +70,11 @@ public class TruckServiceImpl implements TruckService {
TruckTraceJob truckTraceJob;
@Autowired
OrderGoodsTruckBindDao orderGoodsTruckBindDao;
/**
* @Author kavin
* @Description geo 获取附近车辆
......@@ -309,4 +319,43 @@ public class TruckServiceImpl implements TruckService {
return list.stream().skip((currentPage-1)*pageSize).limit(pageSize).collect(Collectors.toList());
}
@Override
public List<OrderGoodsTruckListVO> getOrderGoodsTruckList(OrderGoodsTruckListParam param) {
List<OrderGoodsTruckBind> truckList = orderGoodsTruckBindDao.getTrucksBindByOrderGoodsNo(
param.getOrderGoodsNo(),param.getTruckNo());
if(CollectionUtils.isEmpty(truckList)){
return new ArrayList<>();
}
Map<String,Integer> truckStatusMap = this.getTruckStatusMap();
List<OrderGoodsTruckListVO> result = new ArrayList<>();
truckList.stream().forEach(item->{
Integer orderedStatus = Objects.equals(OrderGoodsTruckBindEnum.Status.GET.getCode(),item.getStatus())?1:0;
OrderGoodsTruckListVO vo = OrderGoodsTruckListVO.builder().truckNo(item.getTruckNo()).truckLevel("A").
truckUseStatus(truckStatusMap.get(item.getTruckNo())).orderedStatus(orderedStatus).build();
result.add(vo);
});
String orderNo = truckList.get(0).getOrderNo();
GeoResults<RedisGeoCommands.GeoLocation<String>> sortResult = this.vicinityTruckList(orderNo,Integer.MAX_VALUE,Integer.MAX_VALUE);
if(Objects.isNull(sortResult)){
return result;
}
Map<String,Double> truckDistanceMap= new HashMap<>();
List<GeoResult<RedisGeoCommands.GeoLocation<String>>> content = sortResult.getContent();
//车辆距离发货地由近及远的车辆列表信息
for(GeoResult<RedisGeoCommands.GeoLocation<String>> item : content){
String truckNo = item.getContent().getName();
double maxDistance = item.getDistance().getValue();
truckDistanceMap.put(truckNo,maxDistance);
}
result.stream().forEach(item->{ item.setMaxDistance(truckDistanceMap.get(item.getTruckNo()));});
return result;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论