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 e198d17..c1d9d9f 100644 --- a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java +++ b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java @@ -12,6 +12,7 @@ import cc.yunxi.domain.dto.UserDTO; import cc.yunxi.domain.po.*; import cc.yunxi.domain.vo.clientaddress.ClientAddressSimpleVO; import cc.yunxi.domain.vo.housingestate.HousingEstateSimpleVO; +import cc.yunxi.domain.vo.priceproduct.ProductRespVO; import cc.yunxi.domain.vo.priceproduct.ProductSimpleVO; import cc.yunxi.domain.query.RecycleOrderQuery; import cc.yunxi.domain.vo.recycleorder.RecycleOrderRespVO; @@ -21,9 +22,8 @@ import cc.yunxi.domain.vo.recycleorder.shorder.*; import cc.yunxi.domain.vo.recycleorder.tmorder.TMRecycleOrderCreateVO; import cc.yunxi.domain.vo.recycleorder.tmorder.TMRecycleOrderFinishVO; import cc.yunxi.domain.vo.recycleorder.tmorder.TMRecycleOrderRespVO; -import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailResponseVO; +import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailRespVO; import cc.yunxi.domain.vo.recycler.RecyclerSimpleVO; -import cc.yunxi.domain.vo.recyclestation.RecycleStationRespVO; import cc.yunxi.domain.vo.recyclestation.RecycleStationSimpleVO; import cc.yunxi.enums.OrderTypeEnum; import cc.yunxi.enums.UserTypeEnum; @@ -138,22 +138,19 @@ public class RecycleOrderController { return CommonResult.success(CollUtils.getFirst(recycleOrderRespVO)); } - @ApiOperation("回收订单明细详情") + @ApiOperation("预约回收订单结算页") @GetMapping("/product-info") - public CommonResult> OrderProductList(@RequestParam("orderId") String orderId) { + public CommonResult> OrderProductList(@RequestParam("orderId") String orderId) { + RecycleOrder recycleOrder = recycleOrderService.getOrderById(orderId, false); + // 查询回收站下的所有类目信息 + String recycleStationId = recycleOrder.getRecycleStationId(); + List productList = recycleStationService.getStationProduct(recycleStationId); + List productTreeList = CommonUtil.getChildrenList(null, productList); + // 查询订单关联的一级类目信息 List orderProducts = recycleOrderProductService.getOrderProductsByOrderId(orderId); - List detailResponseVOList = BeanUtils.copyList(orderProducts, RecycleOrderDetailResponseVO.class); - Set productIds = detailResponseVOList.stream().map(RecycleOrderDetailResponseVO::getProductId).collect(Collectors.toSet()); - List productList = priceProductService.getProductListByIds(productIds); - if (CollUtils.isNotEmpty(productList)) { - Map productMap = productList.stream().collect(Collectors.toMap(Product::getId, p -> p, (k1, k2) -> k1)); - for (RecycleOrderDetailResponseVO detailVO : detailResponseVOList) { - Product product = productMap.get(detailVO.getProductId()); - detailVO.setProduct(BeanUtils.copyBean(product, ProductSimpleVO.class)); - } - } - // 是否展示最新价格? todo - return CommonResult.success(detailResponseVOList); + List categoryIdList = orderProducts.stream().map(RecycleOrderProduct::getProductId).collect(Collectors.toList()); + productTreeList = productTreeList.stream().filter(v -> categoryIdList.contains(v.getProductId())).collect(Collectors.toList()); + return CommonResult.success(productTreeList); } @@ -306,18 +303,18 @@ public class RecycleOrderController { private void assembleProductInfo(List orderRespVOList) { List orderIds = orderRespVOList.stream().map(RecycleOrderRespVO::getId).collect(Collectors.toList()); List orderProducts = recycleOrderProductService.getOrderProductsByOrderIds(orderIds); - List detailResponseVOList = BeanUtils.copyList(orderProducts, RecycleOrderDetailResponseVO.class); + List detailResponseVOList = BeanUtils.copyList(orderProducts, RecycleOrderDetailRespVO.class); // 查询废品信息 - Set productIds = detailResponseVOList.stream().map(RecycleOrderDetailResponseVO::getProductId).collect(Collectors.toSet()); + Set productIds = detailResponseVOList.stream().map(RecycleOrderDetailRespVO::getProductId).collect(Collectors.toSet()); List productList = priceProductService.getProductListByIds(productIds); if (CollUtils.isNotEmpty(productList)) { Map productMap = productList.stream().collect(Collectors.toMap(Product::getId, p -> p, (k1, k2) -> k1)); - for (RecycleOrderDetailResponseVO detailVO : detailResponseVOList) { + for (RecycleOrderDetailRespVO detailVO : detailResponseVOList) { Product product = productMap.get(detailVO.getProductId()); detailVO.setProduct(BeanUtils.copyBean(product, ProductSimpleVO.class)); } - Map> orderProductsMap = - detailResponseVOList.stream().collect(Collectors.groupingBy(RecycleOrderDetailResponseVO::getRecycleOrderId)); + Map> orderProductsMap = + detailResponseVOList.stream().collect(Collectors.groupingBy(RecycleOrderDetailRespVO::getRecycleOrderId)); orderRespVOList.forEach(v -> { CommonUtil.assignField(v, "orderDetails", orderProductsMap.get(v.getId())); }); 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 64a0d8f..4a42b21 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,20 +1,13 @@ package cc.yunxi.domain.vo.recycleorder; -import cc.yunxi.domain.dto.LocationDTO; -import cc.yunxi.domain.vo.clientaddress.ClientAddressSimpleVO; -import cc.yunxi.domain.vo.housingestate.HousingEstateSimpleVO; -import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailResponseVO; -import cc.yunxi.domain.vo.recycler.RecyclerSimpleVO; import cc.yunxi.enums.OrderStatusEnum; import cc.yunxi.enums.OrderTypeEnum; -import cc.yunxi.enums.ProductWeightEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.List; /** *

diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/dzorder/DZRecycleOrderRespVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/dzorder/DZRecycleOrderRespVO.java index c3d9d46..5676b23 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/dzorder/DZRecycleOrderRespVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/dzorder/DZRecycleOrderRespVO.java @@ -2,7 +2,7 @@ package cc.yunxi.domain.vo.recycleorder.dzorder; import cc.yunxi.domain.vo.recycleorder.RecycleOrderRespVO; -import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailResponseVO; +import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailRespVO; import cc.yunxi.domain.vo.recycler.RecyclerSimpleVO; import cc.yunxi.domain.vo.recyclestation.RecycleStationSimpleVO; import io.swagger.annotations.ApiModel; @@ -22,6 +22,6 @@ public class DZRecycleOrderRespVO extends RecycleOrderRespVO { private RecycleStationSimpleVO recycleStationInfo; @ApiModelProperty("订单明细详情") - private List orderDetails; + private List orderDetails; } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/shorder/RecycleOrderFinishVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/shorder/RecycleOrderFinishVO.java index f835ffd..913a0bd 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/shorder/RecycleOrderFinishVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/shorder/RecycleOrderFinishVO.java @@ -1,6 +1,7 @@ package cc.yunxi.domain.vo.recycleorder.shorder; +import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailSaveVO; import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailUpdateVO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -25,5 +26,5 @@ public class RecycleOrderFinishVO { @ApiModelProperty(value = "订单明细", required = true) @NotNull(message = "订单明细未提交") @Valid - private List orderDetails; + private List orderDetails; } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/shorder/SHRecycleOrderRespVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/shorder/SHRecycleOrderRespVO.java index fc60507..d4d2dc1 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/shorder/SHRecycleOrderRespVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/shorder/SHRecycleOrderRespVO.java @@ -2,19 +2,15 @@ package cc.yunxi.domain.vo.recycleorder.shorder; import cc.yunxi.domain.dto.LocationDTO; import cc.yunxi.domain.vo.clientaddress.ClientAddressSimpleVO; -import cc.yunxi.domain.vo.housingestate.HousingEstateSimpleVO; import cc.yunxi.domain.vo.recycleorder.RecycleOrderRespVO; -import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailResponseVO; +import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailRespVO; import cc.yunxi.domain.vo.recycler.RecyclerSimpleVO; import cc.yunxi.domain.vo.recyclestation.RecycleStationSimpleVO; -import cc.yunxi.enums.OrderStatusEnum; -import cc.yunxi.enums.OrderTypeEnum; import cc.yunxi.enums.ProductWeightEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -70,7 +66,7 @@ public class SHRecycleOrderRespVO extends RecycleOrderRespVO { private RecycleStationSimpleVO recycleStationInfo; @ApiModelProperty("订单明细详情") - private List orderDetails; + private List orderDetails; // @ApiModelProperty("综合评分") diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/tmorder/TMRecycleOrderRespVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/tmorder/TMRecycleOrderRespVO.java index 95ff4b1..946a344 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/tmorder/TMRecycleOrderRespVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorder/tmorder/TMRecycleOrderRespVO.java @@ -3,7 +3,7 @@ package cc.yunxi.domain.vo.recycleorder.tmorder; import cc.yunxi.domain.vo.housingestate.HousingEstateSimpleVO; import cc.yunxi.domain.vo.recycleorder.RecycleOrderRespVO; -import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailResponseVO; +import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailRespVO; import cc.yunxi.domain.vo.recycler.RecyclerSimpleVO; import cc.yunxi.domain.vo.recyclestation.RecycleStationSimpleVO; @@ -30,6 +30,6 @@ public class TMRecycleOrderRespVO extends RecycleOrderRespVO { private RecycleStationSimpleVO recycleStationInfo; @ApiModelProperty("订单明细详情") - private List orderDetails; + private List orderDetails; } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorderdetail/RecycleOrderDetailResponseVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorderdetail/RecycleOrderDetailRespVO.java similarity index 71% rename from nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorderdetail/RecycleOrderDetailResponseVO.java rename to nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorderdetail/RecycleOrderDetailRespVO.java index 6e6bda2..7c4976a 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorderdetail/RecycleOrderDetailResponseVO.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/recycleorderdetail/RecycleOrderDetailRespVO.java @@ -1,18 +1,10 @@ package cc.yunxi.domain.vo.recycleorderdetail; import cc.yunxi.domain.vo.priceproduct.ProductSimpleVO; -import cc.yunxi.enums.OrderStatusEnum; -import cc.yunxi.enums.OrderTypeEnum; -import cc.yunxi.enums.ProductWeightEnum; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -26,7 +18,7 @@ import java.time.LocalDateTime; */ @ApiModel(description = "回收订单明细 Response VO") @Data -public class RecycleOrderDetailResponseVO { +public class RecycleOrderDetailRespVO { @ApiModelProperty("主键id") private String id; diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IRecycleOrderProductService.java b/nxhs-service/src/main/java/cc/yunxi/service/IRecycleOrderProductService.java index ca16168..60fc3de 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/IRecycleOrderProductService.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/IRecycleOrderProductService.java @@ -64,4 +64,19 @@ public interface IRecycleOrderProductService extends IService recycleOrderProducts); + + + /** + * 订单废品一级类目批量添加 + * @param + * @return List + */ + void createOrderCategories(Collection recycleOrderCategories); + + /** + * 订单废品一级类目批量删除 + * @param + * @return orderId + */ + void deleteOrderCategories(String orderId); } diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderProductServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderProductServiceImpl.java index 46734d3..a09f2d9 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderProductServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderProductServiceImpl.java @@ -67,4 +67,18 @@ public class RecycleOrderProductServiceImpl extends ServiceImpl recycleOrderProducts) { this.saveOrUpdateBatch(recycleOrderProducts); } + + + @Override + public void createOrderCategories(Collection recycleOrderProducts) { + this.saveBatch(recycleOrderProducts); + } + + + @Override + public void deleteOrderCategories(String orderId) { + LambdaQueryWrapperX wrapper = new LambdaQueryWrapperX<>(); + wrapper.eq(RecycleOrderProduct::getRecycleOrderId, orderId); + this.remove(wrapper); + } } 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 9bebb9b..9205fdb 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 @@ -200,7 +200,7 @@ public class RecycleOrderServiceImpl extends ServiceImpl recycleOrderProductVOList = orderCreateVO.getOrderDetails(); recycleOrderProductVOList.forEach(rp -> { @@ -208,7 +208,7 @@ public class RecycleOrderServiceImpl extends ServiceImpl recycleOrderProducts = BeanUtils.copyList(recycleOrderProductVOList, RecycleOrderProduct.class); - this.recycleOrderProductService.createOrderProducts(recycleOrderProducts); + this.recycleOrderProductService.createOrderCategories(recycleOrderProducts); return orderId; } @@ -375,7 +375,7 @@ public class RecycleOrderServiceImpl extends ServiceImpl 0) { // 大于0.1km + if (distance.compareTo(new BigDecimal("0.2")) > 0) { // 大于0.2km throw new BusinessLogicException("未到达!"); } recycleOrder = BeanUtils.copyBean(orderReachVO, RecycleOrder.class); @@ -390,7 +390,8 @@ public class RecycleOrderServiceImpl extends ServiceImpl recycleOrderProductVOList = orderFinishVO.getOrderDetails(); + // 删除一级类目信息 (订单详情不需要展示一级类目) + this.recycleOrderProductService.deleteOrderCategories(orderId); + // 保存订单明细信息 + List recycleOrderProductVOList = orderFinishVO.getOrderDetails(); + List recycleOrderProducts = BeanUtils.copyList(recycleOrderProductVOList, RecycleOrderProduct.class); LocalDateTime now = LocalDateTime.now(); String enterpriseId = recycleOrder.getCompanyId(); - recycleOrderProductVOList.forEach(rp -> { + recycleOrderProducts.forEach(rp -> { + rp.setRecycleOrderId(orderId); + rp.setCreatorTime(now); rp.setUpdateTime(now); PriceProduct latestPriceProduct = this.recycleOrderProductService.getLatestPriceProduct(rp.getProductId(), enterpriseId); log.info("latest price product: {}", latestPriceProduct); @@ -415,8 +421,7 @@ public class RecycleOrderServiceImpl extends ServiceImpl recycleOrderProducts = BeanUtils.copyList(recycleOrderProductVOList, RecycleOrderProduct.class); - this.recycleOrderProductService.updateOrderProducts(recycleOrderProducts); + this.recycleOrderProductService.saveOrderProducts(recycleOrderProducts); // 记录关键信息 String clientId = recycleOrder.getClientId(); @@ -460,7 +465,7 @@ public class RecycleOrderServiceImpl extends ServiceImpl recycleOrderProductVOList = tmOrderFinishVO.getOrderDetails(); List recycleOrderProducts = BeanUtils.copyList(recycleOrderProductVOList, RecycleOrderProduct.class); LocalDateTime now = LocalDateTime.now();