废品二级类目功能v2 订单结算页、订单详情页面数据调整

master
LI-CCONG\李聪聪 6 months ago
parent 673c73a3d3
commit a363dedef7

@ -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<List<RecycleOrderDetailResponseVO>> OrderProductList(@RequestParam("orderId") String orderId) {
public CommonResult<List<ProductRespVO>> OrderProductList(@RequestParam("orderId") String orderId) {
RecycleOrder recycleOrder = recycleOrderService.getOrderById(orderId, false);
// 查询回收站下的所有类目信息
String recycleStationId = recycleOrder.getRecycleStationId();
List<ProductRespVO> productList = recycleStationService.getStationProduct(recycleStationId);
List<ProductRespVO> productTreeList = CommonUtil.getChildrenList(null, productList);
// 查询订单关联的一级类目信息
List<RecycleOrderProduct> orderProducts = recycleOrderProductService.getOrderProductsByOrderId(orderId);
List<RecycleOrderDetailResponseVO> detailResponseVOList = BeanUtils.copyList(orderProducts, RecycleOrderDetailResponseVO.class);
Set<String> productIds = detailResponseVOList.stream().map(RecycleOrderDetailResponseVO::getProductId).collect(Collectors.toSet());
List<Product> productList = priceProductService.getProductListByIds(productIds);
if (CollUtils.isNotEmpty(productList)) {
Map<String, Product> 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<String> 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 <T extends RecycleOrderRespVO> void assembleProductInfo(List<T> orderRespVOList) {
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);
List<RecycleOrderDetailRespVO> detailResponseVOList = BeanUtils.copyList(orderProducts, RecycleOrderDetailRespVO.class);
// 查询废品信息
Set<String> productIds = detailResponseVOList.stream().map(RecycleOrderDetailResponseVO::getProductId).collect(Collectors.toSet());
Set<String> productIds = detailResponseVOList.stream().map(RecycleOrderDetailRespVO::getProductId).collect(Collectors.toSet());
List<Product> productList = priceProductService.getProductListByIds(productIds);
if (CollUtils.isNotEmpty(productList)) {
Map<String, Product> 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<String, List<RecycleOrderDetailResponseVO>> orderProductsMap =
detailResponseVOList.stream().collect(Collectors.groupingBy(RecycleOrderDetailResponseVO::getRecycleOrderId));
Map<String, List<RecycleOrderDetailRespVO>> orderProductsMap =
detailResponseVOList.stream().collect(Collectors.groupingBy(RecycleOrderDetailRespVO::getRecycleOrderId));
orderRespVOList.forEach(v -> {
CommonUtil.assignField(v, "orderDetails", orderProductsMap.get(v.getId()));
});

@ -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;
/**
* <p>

@ -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<RecycleOrderDetailResponseVO> orderDetails;
private List<RecycleOrderDetailRespVO> orderDetails;
}

@ -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<RecycleOrderDetailUpdateVO> orderDetails;
private List<RecycleOrderDetailSaveVO> orderDetails;
}

@ -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<RecycleOrderDetailResponseVO> orderDetails;
private List<RecycleOrderDetailRespVO> orderDetails;
// @ApiModelProperty("综合评分")

@ -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<RecycleOrderDetailResponseVO> orderDetails;
private List<RecycleOrderDetailRespVO> orderDetails;
}

@ -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;

@ -64,4 +64,19 @@ public interface IRecycleOrderProductService extends IService<RecycleOrderProduc
*/
void saveOrderProducts(Collection<RecycleOrderProduct> recycleOrderProducts);
/**
*
* @param
* @return List<RecycleOrderProduct>
*/
void createOrderCategories(Collection<RecycleOrderProduct> recycleOrderCategories);
/**
*
* @param
* @return orderId
*/
void deleteOrderCategories(String orderId);
}

@ -67,4 +67,18 @@ public class RecycleOrderProductServiceImpl extends ServiceImpl<RecycleOrderProd
public void saveOrderProducts(Collection<RecycleOrderProduct> recycleOrderProducts) {
this.saveOrUpdateBatch(recycleOrderProducts);
}
@Override
public void createOrderCategories(Collection<RecycleOrderProduct> recycleOrderProducts) {
this.saveBatch(recycleOrderProducts);
}
@Override
public void deleteOrderCategories(String orderId) {
LambdaQueryWrapperX<RecycleOrderProduct> wrapper = new LambdaQueryWrapperX<>();
wrapper.eq(RecycleOrderProduct::getRecycleOrderId, orderId);
this.remove(wrapper);
}
}

@ -200,7 +200,7 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
log.info("create recycleOrder info : {}", recycleOrder);
this.saveRecycleOrder(recycleOrder, recycleStation.getEnterpriseId());
// 创建订单明细
// 创建订单一级类目明细
String orderId = recycleOrder.getId();
List<RecycleOrderDetailCreateVO> recycleOrderProductVOList = orderCreateVO.getOrderDetails();
recycleOrderProductVOList.forEach(rp -> {
@ -208,7 +208,7 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
rp.setCreatorTime(now);
});
List<RecycleOrderProduct> 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<RecycleOrderMapper, Rec
LocationDTO location = orderReachVO.getLocation();
BigDecimal distance = CommonUtil.getDistance(recycleOrder.getLongitude(), recycleOrder.getLatitude(),
location.getLongitude(), location.getLatitude());
if (distance.compareTo(new BigDecimal("0.1")) > 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<RecycleOrderMapper, Rec
@Override
@Transactional(rollbackFor = Exception.class)
public void finishOrder(RecycleOrderFinishVO orderFinishVO) {
RecycleOrder recycleOrder = this.getOrderById(orderFinishVO.getId(), true);
String orderId = orderFinishVO.getId();
RecycleOrder recycleOrder = this.getOrderById(orderId, true);
String recyclerId = recycleOrder.getStaffsId();
if (StrUtil.isEmpty(recyclerId) || !recyclerId.equals(orderFinishVO.getStaffsId())) {
throw new BusinessLogicException("非法操作!");
@ -401,11 +402,16 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
if (recycleOrder.getOrderStatus().equals(OrderStatusEnum.FINISHED)) {
throw new BusinessLogicException("订单已完成结算!");
}
// 更新订单明细信息
List<RecycleOrderDetailUpdateVO> recycleOrderProductVOList = orderFinishVO.getOrderDetails();
// 删除一级类目信息 (订单详情不需要展示一级类目)
this.recycleOrderProductService.deleteOrderCategories(orderId);
// 保存订单明细信息
List<RecycleOrderDetailSaveVO> recycleOrderProductVOList = orderFinishVO.getOrderDetails();
List<RecycleOrderProduct> 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<RecycleOrderMapper, Rec
BigDecimal recoveryPrice = Optional.ofNullable(latestPriceProduct.getRecoveryPrice()).orElse(new BigDecimal("0.00"));
rp.setActualRecoveryPrice(recoveryPrice);
});
List<RecycleOrderProduct> 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<RecycleOrderMapper, Rec
if (recycleOrder.getOrderStatus().equals(OrderStatusEnum.FINISHED)) {
throw new BusinessLogicException("订单已完成结算!");
}
// 更新订单明细信息
// 保存订单明细信息
List<RecycleOrderDetailSaveVO> recycleOrderProductVOList = tmOrderFinishVO.getOrderDetails();
List<RecycleOrderProduct> recycleOrderProducts = BeanUtils.copyList(recycleOrderProductVOList, RecycleOrderProduct.class);
LocalDateTime now = LocalDateTime.now();

Loading…
Cancel
Save