From 03bdeca4869e1403a2f8150fedb3df2d3090cce1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LI-CCONG=5C=E6=9D=8E=E8=81=AA=E8=81=AA?= <1441652193@qq.com> Date: Thu, 14 Mar 2024 18:21:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=B8=9A=E5=8A=A1=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91v12=20=20=E8=AE=A2=E5=8D=95=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E5=8A=9F=E8=83=BD=E5=85=B3=E8=81=94=20&=20=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E4=B8=8B=E5=8D=95=E4=B8=9A=E5=8A=A1=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ClientAddressController.java | 2 +- .../controller/RecycleOrderController.java | 17 ++++++++++- .../java/cc/yunxi/domain/po/RecycleOrder.java | 12 ++++---- .../vo/clientaddress/ClientAddressReqVO.java | 4 +-- .../vo/clientaddress/ClientAddressRespVO.java | 2 +- .../clientaddress/ClientAddressSimpleVO.java | 30 +++++++++++++++++++ .../vo/recycleorder/RecycleOrderCreateVO.java | 4 +-- .../vo/recycleorder/RecycleOrderRespVO.java | 8 +++-- .../yunxi/service/IClientAddressService.java | 11 +++++++ .../impl/ClientAddressServiceImpl.java | 18 ++++++++--- .../service/impl/RecycleOrderServiceImpl.java | 21 +++++++++---- 11 files changed, 104 insertions(+), 25 deletions(-) create mode 100644 nxhs-service/src/main/java/cc/yunxi/domain/vo/clientaddress/ClientAddressSimpleVO.java diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/ClientAddressController.java b/nxhs-service/src/main/java/cc/yunxi/controller/ClientAddressController.java index f4a0ee5..589b8c8 100644 --- a/nxhs-service/src/main/java/cc/yunxi/controller/ClientAddressController.java +++ b/nxhs-service/src/main/java/cc/yunxi/controller/ClientAddressController.java @@ -37,7 +37,7 @@ public class ClientAddressController { public CommonResult> queryAddressList(@RequestParam("clientId") String clientId) { List clientAddresses = addressService.queryAddressList(clientId); List addressRespVOList = BeanUtils.copyList(clientAddresses, ClientAddressReqVO.class, (s, t) -> { - t.setLocationDTO(new LocationDTO(s.getLongitude(), s.getLatitude())); + t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude())); }); return CommonResult.success(addressRespVOList); } diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java index c44a4a8..1df5c96 100644 --- a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java +++ b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java @@ -9,14 +9,17 @@ import cc.yunxi.common.utils.CollUtils; import cc.yunxi.common.utils.CommonUtil; import cc.yunxi.domain.dto.LocationDTO; import cc.yunxi.domain.dto.UserDTO; +import cc.yunxi.domain.po.ClientAddress; import cc.yunxi.domain.po.Product; import cc.yunxi.domain.po.RecycleOrderProduct; +import cc.yunxi.domain.vo.clientaddress.ClientAddressSimpleVO; import cc.yunxi.domain.vo.priceproduct.ProductSimpleVO; import cc.yunxi.domain.vo.recycleorder.*; import cc.yunxi.domain.po.RecycleOrder; import cc.yunxi.domain.query.RecycleOrderQuery; import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailResponseVO; import cc.yunxi.enums.UserTypeEnum; +import cc.yunxi.service.IClientAddressService; import cc.yunxi.service.IPriceProductService; import cc.yunxi.service.IRecycleOrderProductService; import cc.yunxi.service.IRecycleOrderService; @@ -52,6 +55,8 @@ public class RecycleOrderController { private final IPriceProductService priceProductService; + private final IClientAddressService clientAddressService; + @ApiOperation("分页查询回收订单") @PostMapping("/page") public CommonResult> queryOrderByPage(@RequestBody RecycleOrderQuery recycleOrderQuery) { @@ -154,22 +159,32 @@ public class RecycleOrderController { } /** - * 组装订单-废品关联信息 + * 组装订单关联信息 * @param orderRespVOList * @param locationDTO */ private void assembleOrderDetailsInfo(List orderRespVOList, LocationDTO locationDTO) { if (CollUtils.isEmpty(orderRespVOList)) return; + // 废品关联信息 List orderIds = orderRespVOList.stream().map(RecycleOrderRespVO::getId).collect(Collectors.toList()); List orderProducts = recycleOrderProductService.getOrderProductsByOrderIds(orderIds); List detailResponseVOList = BeanUtils.copyList(orderProducts, RecycleOrderDetailResponseVO.class); this.assembleProductInfo(detailResponseVOList); Map> orderProductsMap = detailResponseVOList.stream().collect(Collectors.groupingBy(RecycleOrderDetailResponseVO::getRecycleOrderId)); + // 地址关联信息 + Map orderAddressMap = orderRespVOList.stream().collect(Collectors.toMap( + RecycleOrderRespVO::getId, RecycleOrderRespVO::getClientAddressId)); + Set addressIds = new HashSet<>(orderAddressMap.values()); + List clientAddresses = clientAddressService.queryAddressList(addressIds); + List addressSimpleVOList = BeanUtils.copyList(clientAddresses, ClientAddressSimpleVO.class); + Map clientAddressMap = addressSimpleVOList.stream().collect(Collectors.toMap( + ClientAddressSimpleVO::getId, cas -> cas)); for (RecycleOrderRespVO orderRespVO : orderRespVOList) { this.computeOrderDistance(orderRespVO, locationDTO); List orderDetails = orderProductsMap.get(orderRespVO.getId()); orderRespVO.setOrderDetails(orderDetails); + orderRespVO.setAddressInfo(clientAddressMap.get(orderRespVO.getClientAddressId())); } } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleOrder.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleOrder.java index f07a905..cb06e34 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleOrder.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleOrder.java @@ -63,17 +63,13 @@ public class RecycleOrder { @TableField("client_name") private String clientName; - @ApiModelProperty(value = "废品预估重量", required = true) - @TableField("predict_weight") - private ProductWeightEnum predictWeight; - @ApiModelProperty("散户手机号") @TableField("client_mobile") private String clientMobile; @ApiModelProperty("散户下单地址") - @TableField("recycle_address") - private String recycleAddress; + @TableField("client_address_id") + private String clientAddressId; @ApiModelProperty("下单地址-经度") @TableField("longitude") @@ -83,6 +79,10 @@ public class RecycleOrder { @TableField("latitude") private String latitude; + @ApiModelProperty(value = "废品预估重量", required = true) + @TableField("predict_weight") + private ProductWeightEnum predictWeight; + @ApiModelProperty("回收员id") @TableField("staffs_id") private String staffsId; diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/clientaddress/ClientAddressReqVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/clientaddress/ClientAddressReqVO.java index a7a1cc9..067c3f6 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/clientaddress/ClientAddressReqVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/clientaddress/ClientAddressReqVO.java @@ -9,7 +9,7 @@ import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.groups.Default; -@ApiModel(description = "添加散户地址 Request VO") +@ApiModel(description = "散户地址 Request VO") @Data public class ClientAddressReqVO { @@ -47,7 +47,7 @@ public class ClientAddressReqVO { @ApiModelProperty(value = "位置信息",required = true) @NotNull(message = "位置信息不能为空") - private LocationDTO locationDTO; + private LocationDTO location; @ApiModelProperty(value = "是否默认:1是,0否",required = true) @NotNull(message = "默认地址不能为空", groups = AddAddressGroup.class) diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/clientaddress/ClientAddressRespVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/clientaddress/ClientAddressRespVO.java index d260ecb..e3444a8 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/clientaddress/ClientAddressRespVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/clientaddress/ClientAddressRespVO.java @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -@ApiModel(description = "添加散户地址 Request VO") +@ApiModel(description = "散户地址 Response VO") @Data public class ClientAddressRespVO { diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/clientaddress/ClientAddressSimpleVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/clientaddress/ClientAddressSimpleVO.java new file mode 100644 index 0000000..715539b --- /dev/null +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/clientaddress/ClientAddressSimpleVO.java @@ -0,0 +1,30 @@ +package cc.yunxi.domain.vo.clientaddress; + +import cc.yunxi.domain.dto.LocationDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(description = "散户地址 Simple VO") +@Data +public class ClientAddressSimpleVO { + + @ApiModelProperty("id") + private String id; + + @ApiModelProperty("散户id") + private String clientId; + + @ApiModelProperty("联系人姓名") + private String receiveUserName; + + @ApiModelProperty("联系人手机号") + private String receiveMobilePhone; + + @ApiModelProperty("地址") + private String receiveStreet; + + @ApiModelProperty("门牌号") + private String receiveHouseNumber; + +} diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleOrderCreateVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleOrderCreateVO.java index b318b66..8c5fcca 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleOrderCreateVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleOrderCreateVO.java @@ -34,9 +34,9 @@ public class RecycleOrderCreateVO { @NotNull(message = "废品预估重量不能为空") private ProductWeightEnum predictWeight; - @ApiModelProperty(value = "散户地址", required = true, example = "xxx市yyy区") + @ApiModelProperty(value = "散户地址", required = true, example = "1768203816228900865") @NotBlank(message = "散户地址不能为空") - private String recycleAddress; + private String clientAddressId; @ApiModelProperty(value = "当前位置", required = true) @NotNull(message = "位置定位信息未授权") diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleOrderRespVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleOrderRespVO.java index dacd16e..8b70d19 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleOrderRespVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/RecycleOrderRespVO.java @@ -1,6 +1,7 @@ package cc.yunxi.domain.vo.recycleorder; import cc.yunxi.domain.dto.LocationDTO; +import cc.yunxi.domain.vo.clientaddress.ClientAddressSimpleVO; import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailResponseVO; import cc.yunxi.enums.OrderStatusEnum; import cc.yunxi.enums.OrderTypeEnum; @@ -53,8 +54,8 @@ public class RecycleOrderRespVO { @ApiModelProperty("散户手机号") private String clientMobile; - @ApiModelProperty("散户地址") - private String recycleAddress; // todo + @ApiModelProperty("散户地址id") + private String clientAddressId; @ApiModelProperty("预估重量") private ProductWeightEnum predictWeight; @@ -125,6 +126,9 @@ public class RecycleOrderRespVO { @ApiModelProperty("订单距离(回收员专用)") private String distance; + @ApiModelProperty("散户地址信息") + private ClientAddressSimpleVO addressInfo; + @ApiModelProperty("订单明细详情") private List orderDetails; diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IClientAddressService.java b/nxhs-service/src/main/java/cc/yunxi/service/IClientAddressService.java index 6b6663d..15ef469 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/IClientAddressService.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/IClientAddressService.java @@ -1,11 +1,13 @@ package cc.yunxi.service; import cc.yunxi.domain.po.ClientAddress; +import cc.yunxi.domain.po.RecycleOrderProduct; import cc.yunxi.domain.vo.clientaddress.ClientAddressReqVO; import com.baomidou.mybatisplus.extension.service.IService; import org.springframework.validation.annotation.Validated; import javax.validation.Valid; +import java.util.Collection; import java.util.List; /** @@ -27,6 +29,15 @@ public interface IClientAddressService extends IService { List queryAddressList(String clientId); + /** + * 多地址id查询 + * @param addressIds + * @return List + */ + List queryAddressList(Collection addressIds); + + + /** * 地址详情 * @param addressId diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientAddressServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientAddressServiceImpl.java index 42b3de2..6020997 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientAddressServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientAddressServiceImpl.java @@ -15,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.time.LocalDateTime; +import java.util.Collection; import java.util.List; /** @@ -37,6 +38,7 @@ public class ClientAddressServiceImpl extends ServiceImpl queryAddressList(String clientId, String excludeId) { LambdaQueryWrapperX wrapperX = new LambdaQueryWrapperX<>(); wrapperX.eq(ClientAddress::getClientId, clientId).orderByDesc(ClientAddress::getIsDefault); @@ -44,6 +46,14 @@ public class ClientAddressServiceImpl extends ServiceImpl queryAddressList(Collection addressIds) { + LambdaQueryWrapperX wrapperX = new LambdaQueryWrapperX<>(); + wrapperX.in(ClientAddress::getId, addressIds); + return list(wrapperX); + } + @Override public ClientAddress getAddressInfo(String addressId) { if (StrUtil.isEmpty(addressId)) { @@ -60,8 +70,8 @@ public class ClientAddressServiceImpl extends ServiceImpl { - t.setLongitude(s.getLocationDTO().getLongitude()); - t.setLatitude(s.getLocationDTO().getLatitude()); + t.setLongitude(s.getLocation().getLongitude()); + t.setLatitude(s.getLocation().getLatitude()); }); List addressList = queryAddressList(addressCreateVO.getClientId()); if(addressList.size() > LIMIT) { @@ -94,8 +104,8 @@ public class ClientAddressServiceImpl extends ServiceImpl { - t.setLongitude(s.getLocationDTO().getLongitude()); - t.setLatitude(s.getLocationDTO().getLatitude()); + t.setLongitude(s.getLocation().getLongitude()); + t.setLatitude(s.getLocation().getLatitude()); }); clientAddress.setUpdateTime(LocalDateTime.now()); this.updateById(clientAddress); diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java index 0a4c3e4..5bbf4ff 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java @@ -6,10 +6,7 @@ import cc.yunxi.common.exception.ForbiddenException; import cc.yunxi.common.utils.BeanUtils; import cc.yunxi.common.utils.CommonUtil; import cc.yunxi.domain.dto.LocationDTO; -import cc.yunxi.domain.po.Client; -import cc.yunxi.domain.po.PriceProduct; -import cc.yunxi.domain.po.RecycleOrder; -import cc.yunxi.domain.po.RecycleOrderProduct; +import cc.yunxi.domain.po.*; import cc.yunxi.domain.query.RecycleOrderQuery; import cc.yunxi.domain.vo.recycleorder.*; import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailCreateVO; @@ -19,6 +16,7 @@ import cc.yunxi.mapper.RecycleOrderMapper; import cc.yunxi.service.IClientService; import cc.yunxi.service.IRecycleOrderProductService; import cc.yunxi.service.IRecycleOrderService; +import cc.yunxi.service.IRecycleStationService; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -53,6 +51,9 @@ public class RecycleOrderServiceImpl extends ServiceImpl queryOrderByPage(RecycleOrderQuery recycleOrderQuery) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); @@ -95,9 +96,17 @@ public class RecycleOrderServiceImpl extends ServiceImpl { target.setLatitude(source.getLocation().getLatitude());