订单详情废品信息组装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 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());

@ -2,7 +2,9 @@ package cc.yunxi.domain.dto;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern; import javax.validation.constraints.Pattern;
@ -10,6 +12,8 @@ import javax.validation.constraints.Pattern;
@Data @Data
@ApiModel(description = "当前位置实体") @ApiModel(description = "当前位置实体")
@AllArgsConstructor
@NoArgsConstructor
public class LocationDTO { 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})$"; 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; package cc.yunxi.domain.vo.recycleorder;
import cc.yunxi.domain.dto.LocationDTO;
import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailResponseVO; import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailResponseVO;
import cc.yunxi.enums.OrderStatusEnum; import cc.yunxi.enums.OrderStatusEnum;
import cc.yunxi.enums.OrderTypeEnum; import cc.yunxi.enums.OrderTypeEnum;
@ -24,7 +25,7 @@ import java.util.List;
@Data @Data
public class RecycleOrderRespVO { public class RecycleOrderRespVO {
@ApiModelProperty("自然主键") @ApiModelProperty("主键id")
private String id; private String id;
@ApiModelProperty("回收站id") @ApiModelProperty("回收站id")
@ -54,6 +55,9 @@ public class RecycleOrderRespVO {
@ApiModelProperty("回收地址") @ApiModelProperty("回收地址")
private String recycleAddress; private String recycleAddress;
@ApiModelProperty("订单地理位置")
private LocationDTO location;
@ApiModelProperty("回收员id") @ApiModelProperty("回收员id")
private String staffsId; private String staffsId;
@ -79,19 +83,15 @@ public class RecycleOrderRespVO {
// private LocalDateTime consultTimeEnd; // private LocalDateTime consultTimeEnd;
@ApiModelProperty("接单时间") @ApiModelProperty("接单时间")
@TableField("receive_time")
private LocalDateTime receiveTime; private LocalDateTime receiveTime;
@ApiModelProperty("到达时间") @ApiModelProperty("到达时间")
@TableField("arrival_time")
private LocalDateTime arrivalTime; private LocalDateTime arrivalTime;
@ApiModelProperty("完成时间") @ApiModelProperty("完成时间")
@TableField("complete_time")
private LocalDateTime completeTime; private LocalDateTime completeTime;
@ApiModelProperty("结算时间") @ApiModelProperty("结算时间")
@TableField("settle_time")
private LocalDateTime settleTime; private LocalDateTime settleTime;
@ApiModelProperty("备注") @ApiModelProperty("备注")

Loading…
Cancel
Save