|
|
@ -60,22 +60,12 @@ public class RecycleOrderController {
|
|
|
|
recycleOrderQuery.setUserId(userDTO.getId()).setUserType(userDTO.getUserType()); // 默认先从前端获取回收站Id todo
|
|
|
|
recycleOrderQuery.setUserId(userDTO.getId()).setUserType(userDTO.getUserType()); // 默认先从前端获取回收站Id todo
|
|
|
|
// 2.分页查询
|
|
|
|
// 2.分页查询
|
|
|
|
Page<RecycleOrder> result = recycleOrderService.queryOrderByPage(recycleOrderQuery);
|
|
|
|
Page<RecycleOrder> result = recycleOrderService.queryOrderByPage(recycleOrderQuery);
|
|
|
|
List<RecycleOrder> recycleOrders = result.getRecords();
|
|
|
|
PageDTO<RecycleOrderRespVO> recycleOrderPageVO = PageDTO.of(result, RecycleOrderRespVO.class, (s, t) -> {
|
|
|
|
// 回收员端计算距离信息
|
|
|
|
t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
|
|
|
|
LocationDTO locationDTO = recycleOrderQuery.getLocation();
|
|
|
|
});
|
|
|
|
if (ObjectUtil.isNotEmpty(locationDTO)) {
|
|
|
|
// 3.数据组装处理
|
|
|
|
for(RecycleOrder recycleOrder : recycleOrders) {
|
|
|
|
this.computeOrderDetailsInfo(recycleOrderPageVO.getList(), recycleOrderQuery.getLocation());
|
|
|
|
String longitude = locationDTO.getLongitude();
|
|
|
|
return CommonResult.success(recycleOrderPageVO);
|
|
|
|
String latitude = locationDTO.getLatitude();
|
|
|
|
|
|
|
|
BigDecimal distance = CommonUtil.getDistance(longitude, latitude, recycleOrder.getLongitude(), recycleOrder.getLatitude());
|
|
|
|
|
|
|
|
recycleOrder.setDistance(distance.toString().concat("km"));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 3.返回结果
|
|
|
|
|
|
|
|
PageDTO<RecycleOrderRespVO> recyclerPageVO = PageDTO.of(result, RecycleOrderRespVO.class);
|
|
|
|
|
|
|
|
List<String> orderIds = recycleOrders.stream().map(RecycleOrder::getId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
this.computeOrderDetailsInfo(orderIds, recyclerPageVO.getList());
|
|
|
|
|
|
|
|
return CommonResult.success(recyclerPageVO);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation("散户创建回收订单")
|
|
|
|
@ApiOperation("散户创建回收订单")
|
|
|
@ -93,15 +83,10 @@ public class RecycleOrderController {
|
|
|
|
@GetMapping("/info")
|
|
|
|
@GetMapping("/info")
|
|
|
|
public CommonResult<RecycleOrderRespVO> findOrder(@RequestParam("orderId") String orderId, LocationDTO location) {
|
|
|
|
public CommonResult<RecycleOrderRespVO> findOrder(@RequestParam("orderId") String orderId, LocationDTO location) {
|
|
|
|
RecycleOrder recycleOrder = recycleOrderService.getOrderById(orderId);
|
|
|
|
RecycleOrder recycleOrder = recycleOrderService.getOrderById(orderId);
|
|
|
|
// 回收员端计算距离信息
|
|
|
|
RecycleOrderRespVO recycleOrderRespVO = BeanUtils.copyBean(recycleOrder, RecycleOrderRespVO.class, (s, t) -> {
|
|
|
|
if (ObjectUtil.isNotEmpty(location)) {
|
|
|
|
t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
|
|
|
|
String longitude = location.getLongitude();
|
|
|
|
});
|
|
|
|
String latitude = location.getLatitude();
|
|
|
|
this.computeOrderDetailsInfo(Collections.singletonList(recycleOrderRespVO), location);
|
|
|
|
BigDecimal distance = CommonUtil.getDistance(longitude, latitude, recycleOrder.getLongitude(), recycleOrder.getLatitude());
|
|
|
|
|
|
|
|
recycleOrder.setDistance(distance.toString().concat("km"));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
RecycleOrderRespVO recycleOrderRespVO = BeanUtils.copyBean(recycleOrder, RecycleOrderRespVO.class);
|
|
|
|
|
|
|
|
this.computeOrderDetailsInfo(Collections.singletonList(recycleOrder.getId()), Collections.singletonList(recycleOrderRespVO));
|
|
|
|
|
|
|
|
return CommonResult.success(recycleOrderRespVO);
|
|
|
|
return CommonResult.success(recycleOrderRespVO);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -169,21 +154,30 @@ public class RecycleOrderController {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 组装订单废品重量、预估价信息
|
|
|
|
* 组装订单废品重量、预估价信息
|
|
|
|
* @param orderIds
|
|
|
|
|
|
|
|
* @param orderRespVOList
|
|
|
|
* @param orderRespVOList
|
|
|
|
|
|
|
|
* @param locationDTO
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private void computeOrderDetailsInfo(List<String> orderIds, List<RecycleOrderRespVO> orderRespVOList) {
|
|
|
|
private void computeOrderDetailsInfo(List<RecycleOrderRespVO> orderRespVOList, LocationDTO locationDTO) {
|
|
|
|
if (CollUtils.isEmpty(orderIds) || CollUtils.isEmpty(orderRespVOList)) return;
|
|
|
|
if (CollUtils.isEmpty(orderRespVOList)) return;
|
|
|
|
|
|
|
|
List<String> orderIds = orderRespVOList.stream().map(RecycleOrderRespVO::getId).collect(Collectors.toList());
|
|
|
|
// 查询订单-废品关联信息
|
|
|
|
// 查询订单-废品关联信息
|
|
|
|
List<RecycleOrderProduct> orderProducts = recycleOrderProductService.getOrderProductsByOrderIds(orderIds);
|
|
|
|
List<RecycleOrderProduct> orderProducts = recycleOrderProductService.getOrderProductsByOrderIds(orderIds);
|
|
|
|
List<RecycleOrderDetailResponseVO> detailResponseVOList = BeanUtils.copyList(orderProducts, RecycleOrderDetailResponseVO.class);
|
|
|
|
List<RecycleOrderDetailResponseVO> detailResponseVOList = BeanUtils.copyList(orderProducts, RecycleOrderDetailResponseVO.class);
|
|
|
|
this.assembleProductInfo(detailResponseVOList);
|
|
|
|
this.assembleProductInfo(detailResponseVOList);
|
|
|
|
Map<String, List<RecycleOrderDetailResponseVO>> orderProductsMap =
|
|
|
|
Map<String, List<RecycleOrderDetailResponseVO>> orderProductsMap =
|
|
|
|
detailResponseVOList.stream().collect(Collectors.groupingBy(RecycleOrderDetailResponseVO::getRecycleOrderId));
|
|
|
|
detailResponseVOList.stream().collect(Collectors.groupingBy(RecycleOrderDetailResponseVO::getRecycleOrderId));
|
|
|
|
// 组装废品重量回收价、计算预估值
|
|
|
|
// 组装废品重量回收价、计算订单距离、预估值
|
|
|
|
for (RecycleOrderRespVO orderRespVO : orderRespVOList) {
|
|
|
|
for (RecycleOrderRespVO orderRespVO : orderRespVOList) {
|
|
|
|
List<RecycleOrderDetailResponseVO> orderDetails = orderProductsMap.get(orderRespVO.getId());
|
|
|
|
List<RecycleOrderDetailResponseVO> orderDetails = orderProductsMap.get(orderRespVO.getId());
|
|
|
|
orderRespVO.setOrderDetails(orderDetails);
|
|
|
|
orderRespVO.setOrderDetails(orderDetails);
|
|
|
|
|
|
|
|
if (ObjectUtil.isNotEmpty(locationDTO)) {
|
|
|
|
|
|
|
|
String longitude = locationDTO.getLongitude();
|
|
|
|
|
|
|
|
String latitude = locationDTO.getLatitude();
|
|
|
|
|
|
|
|
String orderLongitude = orderRespVO.getLocation().getLongitude();
|
|
|
|
|
|
|
|
String orderLatitude = orderRespVO.getLocation().getLatitude();
|
|
|
|
|
|
|
|
BigDecimal distance = CommonUtil.getDistance(longitude, latitude, orderLongitude, orderLatitude);
|
|
|
|
|
|
|
|
orderRespVO.setDistance(distance.toString().concat("km"));
|
|
|
|
|
|
|
|
}
|
|
|
|
BigDecimal expectedPrice = new BigDecimal("0");
|
|
|
|
BigDecimal expectedPrice = new BigDecimal("0");
|
|
|
|
for (RecycleOrderDetailResponseVO orderDetail : orderDetails) {
|
|
|
|
for (RecycleOrderDetailResponseVO orderDetail : orderDetails) {
|
|
|
|
BigDecimal bigDecimal = new BigDecimal(orderDetail.getProductWeight().getCode());
|
|
|
|
BigDecimal bigDecimal = new BigDecimal(orderDetail.getProductWeight().getCode());
|
|
|
|