|
|
|
@ -65,7 +65,7 @@ public class RecycleOrderController {
|
|
|
|
|
t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
|
|
|
|
|
});
|
|
|
|
|
// 3.数据组装处理
|
|
|
|
|
this.computeOrderDetailsInfo(recycleOrderPageVO.getList(), recycleOrderQuery.getLocation());
|
|
|
|
|
this.assembleOrderDetailsInfo(recycleOrderPageVO.getList(), recycleOrderQuery.getLocation());
|
|
|
|
|
return CommonResult.success(recycleOrderPageVO);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -87,7 +87,7 @@ public class RecycleOrderController {
|
|
|
|
|
RecycleOrderRespVO recycleOrderRespVO = BeanUtils.copyBean(recycleOrder, RecycleOrderRespVO.class, (s, t) -> {
|
|
|
|
|
t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
|
|
|
|
|
});
|
|
|
|
|
this.computeOrderDetailsInfo(Collections.singletonList(recycleOrderRespVO), location);
|
|
|
|
|
this.assembleOrderDetailsInfo(Collections.singletonList(recycleOrderRespVO), location);
|
|
|
|
|
return CommonResult.success(recycleOrderRespVO);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -154,43 +154,43 @@ public class RecycleOrderController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 组装订单废品重量、预估价信息
|
|
|
|
|
* 组装订单-废品关联信息
|
|
|
|
|
* @param orderRespVOList
|
|
|
|
|
* @param locationDTO
|
|
|
|
|
*/
|
|
|
|
|
private void computeOrderDetailsInfo(List<RecycleOrderRespVO> orderRespVOList, LocationDTO locationDTO) {
|
|
|
|
|
private void assembleOrderDetailsInfo(List<RecycleOrderRespVO> orderRespVOList, LocationDTO locationDTO) {
|
|
|
|
|
if (CollUtils.isEmpty(orderRespVOList)) return;
|
|
|
|
|
List<String> orderIds = orderRespVOList.stream().map(RecycleOrderRespVO::getId).collect(Collectors.toList());
|
|
|
|
|
// 查询订单-废品关联信息
|
|
|
|
|
List<RecycleOrderProduct> orderProducts = recycleOrderProductService.getOrderProductsByOrderIds(orderIds);
|
|
|
|
|
List<RecycleOrderDetailResponseVO> detailResponseVOList = BeanUtils.copyList(orderProducts, RecycleOrderDetailResponseVO.class);
|
|
|
|
|
this.assembleProductInfo(detailResponseVOList);
|
|
|
|
|
Map<String, List<RecycleOrderDetailResponseVO>> orderProductsMap =
|
|
|
|
|
detailResponseVOList.stream().collect(Collectors.groupingBy(RecycleOrderDetailResponseVO::getRecycleOrderId));
|
|
|
|
|
// 组装废品重量回收价、计算订单距离、预估值
|
|
|
|
|
for (RecycleOrderRespVO orderRespVO : orderRespVOList) {
|
|
|
|
|
this.computeOrderDistance(orderRespVO, locationDTO);
|
|
|
|
|
List<RecycleOrderDetailResponseVO> orderDetails = orderProductsMap.get(orderRespVO.getId());
|
|
|
|
|
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");
|
|
|
|
|
for (RecycleOrderDetailResponseVO orderDetail : orderDetails) {
|
|
|
|
|
BigDecimal bigDecimal = new BigDecimal(orderDetail.getProductWeight().getCode());
|
|
|
|
|
BigDecimal recoveryPrice = orderDetail.getRecoveryPrice();
|
|
|
|
|
expectedPrice = expectedPrice.add(bigDecimal.multiply(recoveryPrice));
|
|
|
|
|
}
|
|
|
|
|
orderRespVO.setExpectedPrice(expectedPrice);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 组装订单废品基本信息
|
|
|
|
|
* 计算订单距离
|
|
|
|
|
* @param orderRespVO
|
|
|
|
|
* @param locationDTO
|
|
|
|
|
*/
|
|
|
|
|
private void computeOrderDistance(RecycleOrderRespVO orderRespVO, LocationDTO locationDTO) {
|
|
|
|
|
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"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 组装废品信息
|
|
|
|
|
* @param detailVOList
|
|
|
|
|
*/
|
|
|
|
|
private void assembleProductInfo(List<RecycleOrderDetailResponseVO> detailVOList) {
|
|
|
|
|