订单详情废品信息组装2

wxpay
LI-CCONG\李聪聪 7 months ago
parent 3f2d0be430
commit 40c9560aa5

@ -60,22 +60,12 @@ public class RecycleOrderController {
recycleOrderQuery.setUserId(userDTO.getId()).setUserType(userDTO.getUserType()); // 默认先从前端获取回收站Id todo
// 2.分页查询
Page<RecycleOrder> result = recycleOrderService.queryOrderByPage(recycleOrderQuery);
List<RecycleOrder> recycleOrders = result.getRecords();
// 回收员端计算距离信息
LocationDTO locationDTO = recycleOrderQuery.getLocation();
if (ObjectUtil.isNotEmpty(locationDTO)) {
for(RecycleOrder recycleOrder : recycleOrders) {
String longitude = locationDTO.getLongitude();
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);
PageDTO<RecycleOrderRespVO> recycleOrderPageVO = PageDTO.of(result, RecycleOrderRespVO.class, (s, t) -> {
t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
});
// 3.数据组装处理
this.computeOrderDetailsInfo(recycleOrderPageVO.getList(), recycleOrderQuery.getLocation());
return CommonResult.success(recycleOrderPageVO);
}
@ApiOperation("散户创建回收订单")
@ -93,15 +83,10 @@ public class RecycleOrderController {
@GetMapping("/info")
public CommonResult<RecycleOrderRespVO> findOrder(@RequestParam("orderId") String orderId, LocationDTO location) {
RecycleOrder recycleOrder = recycleOrderService.getOrderById(orderId);
// 回收员端计算距离信息
if (ObjectUtil.isNotEmpty(location)) {
String longitude = location.getLongitude();
String latitude = location.getLatitude();
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));
RecycleOrderRespVO recycleOrderRespVO = BeanUtils.copyBean(recycleOrder, RecycleOrderRespVO.class, (s, t) -> {
t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
});
this.computeOrderDetailsInfo(Collections.singletonList(recycleOrderRespVO), location);
return CommonResult.success(recycleOrderRespVO);
}
@ -169,21 +154,30 @@ public class RecycleOrderController {
/**
*
* @param orderIds
* @param orderRespVOList
* @param locationDTO
*/
private void computeOrderDetailsInfo(List<String> orderIds, List<RecycleOrderRespVO> orderRespVOList) {
if (CollUtils.isEmpty(orderIds) || CollUtils.isEmpty(orderRespVOList)) return;
private void computeOrderDetailsInfo(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) {
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());

@ -2,7 +2,9 @@ package cc.yunxi.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
@ -10,6 +12,8 @@ import javax.validation.constraints.Pattern;
@Data
@ApiModel(description = "当前位置实体")
@AllArgsConstructor
@NoArgsConstructor
public class LocationDTO {
private static final String LONGITUDE_REGEX = "^[\\-\\+]?(0?\\d{1,2}\\.\\d{1,6}|1[0-7]?\\d{1}\\.\\d{1,6}|180\\.0{1,6})$";

@ -1,5 +1,6 @@
package cc.yunxi.domain.vo.recycleorder;
import cc.yunxi.domain.dto.LocationDTO;
import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailResponseVO;
import cc.yunxi.enums.OrderStatusEnum;
import cc.yunxi.enums.OrderTypeEnum;
@ -24,7 +25,7 @@ import java.util.List;
@Data
public class RecycleOrderRespVO {
@ApiModelProperty("自然主键")
@ApiModelProperty("主键id")
private String id;
@ApiModelProperty("回收站id")
@ -54,6 +55,9 @@ public class RecycleOrderRespVO {
@ApiModelProperty("回收地址")
private String recycleAddress;
@ApiModelProperty("订单地理位置")
private LocationDTO location;
@ApiModelProperty("回收员id")
private String staffsId;
@ -79,19 +83,15 @@ public class RecycleOrderRespVO {
// private LocalDateTime consultTimeEnd;
@ApiModelProperty("接单时间")
@TableField("receive_time")
private LocalDateTime receiveTime;
@ApiModelProperty("到达时间")
@TableField("arrival_time")
private LocalDateTime arrivalTime;
@ApiModelProperty("完成时间")
@TableField("complete_time")
private LocalDateTime completeTime;
@ApiModelProperty("结算时间")
@TableField("settle_time")
private LocalDateTime settleTime;
@ApiModelProperty("备注")

Loading…
Cancel
Save