|
|
@ -14,9 +14,12 @@ import cc.yunxi.domain.vo.clientaddress.ClientAddressSimpleVO;
|
|
|
|
import cc.yunxi.domain.vo.housingestate.HousingEstateSimpleVO;
|
|
|
|
import cc.yunxi.domain.vo.housingestate.HousingEstateSimpleVO;
|
|
|
|
import cc.yunxi.domain.vo.priceproduct.ProductSimpleVO;
|
|
|
|
import cc.yunxi.domain.vo.priceproduct.ProductSimpleVO;
|
|
|
|
import cc.yunxi.domain.query.RecycleOrderQuery;
|
|
|
|
import cc.yunxi.domain.query.RecycleOrderQuery;
|
|
|
|
|
|
|
|
import cc.yunxi.domain.vo.recycleorder.RecycleOrderRespVO;
|
|
|
|
import cc.yunxi.domain.vo.recycleorder.dzorder.DZRecycleOrderCreateVO;
|
|
|
|
import cc.yunxi.domain.vo.recycleorder.dzorder.DZRecycleOrderCreateVO;
|
|
|
|
|
|
|
|
import cc.yunxi.domain.vo.recycleorder.dzorder.DZRecycleOrderRespVO;
|
|
|
|
import cc.yunxi.domain.vo.recycleorder.shorder.*;
|
|
|
|
import cc.yunxi.domain.vo.recycleorder.shorder.*;
|
|
|
|
import cc.yunxi.domain.vo.recycleorder.tmorder.TMRecycleOrderCreateVO;
|
|
|
|
import cc.yunxi.domain.vo.recycleorder.tmorder.TMRecycleOrderCreateVO;
|
|
|
|
|
|
|
|
import cc.yunxi.domain.vo.recycleorder.tmorder.TMRecycleOrderRespVO;
|
|
|
|
import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailResponseVO;
|
|
|
|
import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailResponseVO;
|
|
|
|
import cc.yunxi.domain.vo.recycler.RecyclerSimpleVO;
|
|
|
|
import cc.yunxi.domain.vo.recycler.RecyclerSimpleVO;
|
|
|
|
import cc.yunxi.enums.OrderTypeEnum;
|
|
|
|
import cc.yunxi.enums.OrderTypeEnum;
|
|
|
@ -24,7 +27,6 @@ import cc.yunxi.enums.UserTypeEnum;
|
|
|
|
import cc.yunxi.service.*;
|
|
|
|
import cc.yunxi.service.*;
|
|
|
|
import cc.yunxi.utils.UserContext;
|
|
|
|
import cc.yunxi.utils.UserContext;
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
@ -32,6 +34,7 @@ import lombok.RequiredArgsConstructor;
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
@ -63,7 +66,7 @@ public class RecycleOrderController {
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation("分页查询回收订单")
|
|
|
|
@ApiOperation("分页查询回收订单")
|
|
|
|
@PostMapping("/page")
|
|
|
|
@PostMapping("/page")
|
|
|
|
public CommonResult<PageDTO<RecycleOrderRespVO>> queryOrderByPage(@RequestBody RecycleOrderQuery recycleOrderQuery) {
|
|
|
|
public CommonResult<PageDTO<? extends RecycleOrderRespVO>> queryOrderByPage(@RequestBody RecycleOrderQuery recycleOrderQuery) {
|
|
|
|
if (ObjectUtil.isEmpty(recycleOrderQuery.getOrderType())) {
|
|
|
|
if (ObjectUtil.isEmpty(recycleOrderQuery.getOrderType())) {
|
|
|
|
throw new BizIllegalException("请确定要查询的订单类型");
|
|
|
|
throw new BizIllegalException("请确定要查询的订单类型");
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -73,14 +76,15 @@ public class RecycleOrderController {
|
|
|
|
// recycleOrderQuery.setUserId(userDTO.getId()).setUserType(userDTO.getUserType()); // 测试时从前端获取回收站Id
|
|
|
|
// recycleOrderQuery.setUserId(userDTO.getId()).setUserType(userDTO.getUserType()); // 测试时从前端获取回收站Id
|
|
|
|
// 2.分页查询
|
|
|
|
// 2.分页查询
|
|
|
|
Page<RecycleOrder> result = recycleOrderService.queryOrderByPage(recycleOrderQuery);
|
|
|
|
Page<RecycleOrder> result = recycleOrderService.queryOrderByPage(recycleOrderQuery);
|
|
|
|
PageDTO<RecycleOrderRespVO> recycleOrderPageVO = PageDTO.of(result, RecycleOrderRespVO.class, (s, t) -> {
|
|
|
|
|
|
|
|
t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
// 3.数据组装处理
|
|
|
|
// 3.数据组装处理
|
|
|
|
List<RecycleOrderRespVO> orderRespVOList = recycleOrderPageVO.getList();
|
|
|
|
List<RecycleOrder> recycleOrderList = result.getRecords();
|
|
|
|
if (CollUtils.isNotEmpty(orderRespVOList)) {
|
|
|
|
List<? extends RecycleOrderRespVO> recycleOrderRespVOList = new ArrayList<>();
|
|
|
|
this.perfectOrderAttributes(recycleOrderQuery.getOrderType(), orderRespVOList, recycleOrderQuery.getLocation());
|
|
|
|
if (CollUtils.isNotEmpty(recycleOrderList)) {
|
|
|
|
|
|
|
|
OrderTypeEnum orderType = recycleOrderQuery.getOrderType();
|
|
|
|
|
|
|
|
LocationDTO location = recycleOrderQuery.getLocation();
|
|
|
|
|
|
|
|
recycleOrderRespVOList = this.buildOrderAttributes(orderType, recycleOrderList, location);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
PageDTO<? extends RecycleOrderRespVO> recycleOrderPageVO = PageDTO.of(result, recycleOrderRespVOList);
|
|
|
|
return CommonResult.success(recycleOrderPageVO);
|
|
|
|
return CommonResult.success(recycleOrderPageVO);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -117,24 +121,14 @@ public class RecycleOrderController {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation("回收订单详情")
|
|
|
|
@ApiOperation("回收订单详情") // todo
|
|
|
|
|
|
|
|
@GetMapping("/info")
|
|
|
|
@GetMapping("/info")
|
|
|
|
public CommonResult<RecycleOrderRespVO> findOrder(@RequestParam("orderId") String orderId, LocationDTO location) {
|
|
|
|
public CommonResult<? extends 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) -> {
|
|
|
|
OrderTypeEnum orderType = recycleOrder.getOrderType();
|
|
|
|
t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
|
|
|
|
List<? extends RecycleOrderRespVO> recycleOrderRespVO =
|
|
|
|
});
|
|
|
|
this.buildOrderAttributes(orderType, CollUtils.singletonList(recycleOrder), location);
|
|
|
|
this.perfectOrderAttributes(recycleOrder.getOrderType(), CollUtils.singletonList(recycleOrderRespVO), location);
|
|
|
|
return CommonResult.success(CollUtils.getFirst(recycleOrderRespVO));
|
|
|
|
// 接单后展示回收员信息
|
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(recycleOrder.getStaffsId())) {
|
|
|
|
|
|
|
|
Recycler recycler = recyclerService.getRecyclerById(recycleOrder.getStaffsId());
|
|
|
|
|
|
|
|
RecyclerSimpleVO recyclerSimpleVO = BeanUtils.copyBean(recycler, RecyclerSimpleVO.class);
|
|
|
|
|
|
|
|
recycleOrderRespVO.setRecyclerInfo(recyclerSimpleVO);
|
|
|
|
|
|
|
|
// 计算预计上门时间
|
|
|
|
|
|
|
|
recycleOrderRespVO.setEstimateArrivalTime(recycleOrderRespVO.getAppointmentTimeStart().plusHours(1));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return CommonResult.success(recycleOrderRespVO);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -201,48 +195,57 @@ public class RecycleOrderController {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 完善扩展属性
|
|
|
|
* 完善扩展属性
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param orderType
|
|
|
|
* @param orderType
|
|
|
|
* @param orderRespVOList
|
|
|
|
* @param recycleOrderList
|
|
|
|
* @param locationDTO
|
|
|
|
* @param locationDTO
|
|
|
|
|
|
|
|
* @return List<RecycleOrderRespVO>
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private void perfectOrderAttributes(OrderTypeEnum orderType, List<RecycleOrderRespVO> orderRespVOList, LocationDTO locationDTO) {
|
|
|
|
private List<? extends RecycleOrderRespVO> buildOrderAttributes(OrderTypeEnum orderType,
|
|
|
|
|
|
|
|
List<RecycleOrder> recycleOrderList, LocationDTO locationDTO) {
|
|
|
|
switch (orderType) {
|
|
|
|
switch (orderType) {
|
|
|
|
case SH_ORDER:
|
|
|
|
case SH_ORDER:
|
|
|
|
this.computeOrderDistance(orderRespVOList, locationDTO);
|
|
|
|
List<SHRecycleOrderRespVO> shOrderRespVOList = BeanUtils.copyList(recycleOrderList, SHRecycleOrderRespVO.class, (s, t) -> {
|
|
|
|
this.assembleProductInfo(orderRespVOList);
|
|
|
|
t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
|
|
|
|
this.assembleClientAddressInfo(orderRespVOList);
|
|
|
|
});
|
|
|
|
this.assembleRecyclerInfo(orderRespVOList);
|
|
|
|
this.computeOrderDistance(shOrderRespVOList, locationDTO);
|
|
|
|
break;
|
|
|
|
this.assembleProductInfo(shOrderRespVOList);
|
|
|
|
|
|
|
|
this.assembleClientAddressInfo(shOrderRespVOList);
|
|
|
|
|
|
|
|
this.assembleRecyclerInfo(shOrderRespVOList);
|
|
|
|
|
|
|
|
return shOrderRespVOList;
|
|
|
|
case TM_RECOVERY:
|
|
|
|
case TM_RECOVERY:
|
|
|
|
this.assembleProductInfo(orderRespVOList);
|
|
|
|
List<TMRecycleOrderRespVO> tmOrderRespVOList = BeanUtils.copyList(recycleOrderList, TMRecycleOrderRespVO.class);
|
|
|
|
this.assembleRecyclerInfo(orderRespVOList);
|
|
|
|
this.assembleProductInfo(tmOrderRespVOList);
|
|
|
|
this.assembleHousingEstateInfo(orderRespVOList);
|
|
|
|
this.assembleRecyclerInfo(tmOrderRespVOList);
|
|
|
|
break;
|
|
|
|
this.assembleHousingEstateInfo(tmOrderRespVOList);
|
|
|
|
|
|
|
|
return tmOrderRespVOList;
|
|
|
|
case DZ_RECOVERY:
|
|
|
|
case DZ_RECOVERY:
|
|
|
|
this.assembleProductInfo(orderRespVOList);
|
|
|
|
List<DZRecycleOrderRespVO> dzOrderRespVOList = BeanUtils.copyList(recycleOrderList, DZRecycleOrderRespVO.class);
|
|
|
|
this.assembleRecyclerInfo(orderRespVOList);
|
|
|
|
this.assembleProductInfo(dzOrderRespVOList);
|
|
|
|
break;
|
|
|
|
this.assembleRecyclerInfo(dzOrderRespVOList);
|
|
|
|
|
|
|
|
return dzOrderRespVOList;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
return BeanUtils.copyList(recycleOrderList, RecycleOrderRespVO.class);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 计算订单 -> 回收员距离(km)
|
|
|
|
* 计算订单 -> 回收员距离(km)
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param orderRespVOList
|
|
|
|
* @param orderRespVOList
|
|
|
|
* @param locationDTO
|
|
|
|
* @param locationDTO
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private void computeOrderDistance(List<RecycleOrderRespVO> orderRespVOList, LocationDTO locationDTO) {
|
|
|
|
private <T extends RecycleOrderRespVO> void computeOrderDistance(List<T> orderRespVOList, LocationDTO locationDTO) {
|
|
|
|
if (ObjectUtil.isNotEmpty(locationDTO) && locationDTO.isValid()) {
|
|
|
|
if (ObjectUtil.isNotEmpty(locationDTO) && locationDTO.isValid()) {
|
|
|
|
String longitude = locationDTO.getLongitude();
|
|
|
|
String longitude = locationDTO.getLongitude();
|
|
|
|
String latitude = locationDTO.getLatitude();
|
|
|
|
String latitude = locationDTO.getLatitude();
|
|
|
|
orderRespVOList.forEach(orderRespVO -> {
|
|
|
|
orderRespVOList.forEach(orderRespVO -> {
|
|
|
|
String orderLongitude = orderRespVO.getLocation().getLongitude();
|
|
|
|
LocationDTO location = (LocationDTO) CommonUtil.obtainField(orderRespVO, "location");
|
|
|
|
String orderLatitude = orderRespVO.getLocation().getLatitude();
|
|
|
|
if (location != null) {
|
|
|
|
BigDecimal distance = CommonUtil.getDistance(longitude, latitude, orderLongitude, orderLatitude);
|
|
|
|
BigDecimal distance = CommonUtil.getDistance(longitude, latitude, location.getLongitude(), location.getLatitude());
|
|
|
|
// orderRespVO.setDistance(distance.toString().concat("km"));
|
|
|
|
CommonUtil.assignField(orderRespVO, "distance2", distance);
|
|
|
|
orderRespVO.setDistance2(distance.doubleValue());
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -250,9 +253,10 @@ public class RecycleOrderController {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 组装订单废品信息
|
|
|
|
* 组装订单废品信息
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param orderRespVOList
|
|
|
|
* @param orderRespVOList
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private void assembleProductInfo(List<RecycleOrderRespVO> orderRespVOList) {
|
|
|
|
private <T extends RecycleOrderRespVO> void assembleProductInfo(List<T> orderRespVOList) {
|
|
|
|
List<String> orderIds = orderRespVOList.stream().map(RecycleOrderRespVO::getId).collect(Collectors.toList());
|
|
|
|
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);
|
|
|
@ -266,31 +270,41 @@ public class RecycleOrderController {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Map<String, List<RecycleOrderDetailResponseVO>> orderProductsMap =
|
|
|
|
Map<String, List<RecycleOrderDetailResponseVO>> orderProductsMap =
|
|
|
|
detailResponseVOList.stream().collect(Collectors.groupingBy(RecycleOrderDetailResponseVO::getRecycleOrderId));
|
|
|
|
detailResponseVOList.stream().collect(Collectors.groupingBy(RecycleOrderDetailResponseVO::getRecycleOrderId));
|
|
|
|
orderRespVOList.forEach(v -> v.setOrderDetails(orderProductsMap.get(v.getId())));
|
|
|
|
orderRespVOList.forEach(v -> {
|
|
|
|
|
|
|
|
CommonUtil.assignField(v, "orderDetails", orderProductsMap.get(v.getId()));
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 组装订单散户地址信息
|
|
|
|
* 组装订单散户地址信息
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param orderRespVOList
|
|
|
|
* @param orderRespVOList
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private void assembleClientAddressInfo(List<RecycleOrderRespVO> orderRespVOList) {
|
|
|
|
private <T extends RecycleOrderRespVO> void assembleClientAddressInfo(List<T> orderRespVOList) {
|
|
|
|
Map<String, String> orderAddressMap = orderRespVOList.stream().collect(Collectors.toMap(
|
|
|
|
Map<String, String> orderAddressMap = orderRespVOList.stream().collect(Collectors.toMap(
|
|
|
|
RecycleOrderRespVO::getId, v -> Optional.ofNullable(v.getClientAddressId()).orElse(""), (k1, k2) -> k1));
|
|
|
|
RecycleOrderRespVO::getId, v -> {
|
|
|
|
|
|
|
|
String clientAddressId = (String) CommonUtil.obtainField(v, "clientAddressId");
|
|
|
|
|
|
|
|
return Optional.ofNullable(clientAddressId).orElse("");
|
|
|
|
|
|
|
|
}, (k1, k2) -> k1));
|
|
|
|
Set<String> addressIds = new HashSet<>(CollUtils.removeEmpty(orderAddressMap.values()));
|
|
|
|
Set<String> addressIds = new HashSet<>(CollUtils.removeEmpty(orderAddressMap.values()));
|
|
|
|
List<ClientAddress> clientAddresses = clientAddressService.queryAddressList(addressIds);
|
|
|
|
List<ClientAddress> clientAddresses = clientAddressService.queryAddressList(addressIds);
|
|
|
|
List<ClientAddressSimpleVO> addressSimpleVOList = BeanUtils.copyList(clientAddresses, ClientAddressSimpleVO.class);
|
|
|
|
List<ClientAddressSimpleVO> addressSimpleVOList = BeanUtils.copyList(clientAddresses, ClientAddressSimpleVO.class);
|
|
|
|
Map<String, ClientAddressSimpleVO> clientAddressMap = addressSimpleVOList.stream().collect(
|
|
|
|
Map<String, ClientAddressSimpleVO> clientAddressMap = addressSimpleVOList.stream().collect(
|
|
|
|
Collectors.toMap(ClientAddressSimpleVO::getId, v -> v, (k1, k2) -> k1));
|
|
|
|
Collectors.toMap(ClientAddressSimpleVO::getId, v -> v, (k1, k2) -> k1));
|
|
|
|
orderRespVOList.forEach(v -> v.setAddressInfo(clientAddressMap.get(v.getClientAddressId())));
|
|
|
|
orderRespVOList.forEach(v -> {
|
|
|
|
|
|
|
|
String clientAddressId = (String) CommonUtil.obtainField(v, "clientAddressId");
|
|
|
|
|
|
|
|
CommonUtil.assignField(v, "clientAddressId", clientAddressId);
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 组装订单回收员信息
|
|
|
|
* 组装订单回收员信息
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param orderRespVOList
|
|
|
|
* @param orderRespVOList
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private void assembleRecyclerInfo(List<RecycleOrderRespVO> orderRespVOList) {
|
|
|
|
private <T extends RecycleOrderRespVO> void assembleRecyclerInfo(List<T> orderRespVOList) {
|
|
|
|
Map<String, String> orderRecyclerMap = orderRespVOList.stream().collect(Collectors.toMap(
|
|
|
|
Map<String, String> orderRecyclerMap = orderRespVOList.stream().collect(Collectors.toMap(
|
|
|
|
RecycleOrderRespVO::getId, v -> Optional.ofNullable(v.getStaffsId()).orElse(""), (k1, k2) -> k1));
|
|
|
|
RecycleOrderRespVO::getId, v -> Optional.ofNullable(v.getStaffsId()).orElse(""), (k1, k2) -> k1));
|
|
|
|
Set<String> recyclerIds = new HashSet<>(CollUtils.removeEmpty(orderRecyclerMap.values()));
|
|
|
|
Set<String> recyclerIds = new HashSet<>(CollUtils.removeEmpty(orderRecyclerMap.values()));
|
|
|
@ -299,25 +313,35 @@ public class RecycleOrderController {
|
|
|
|
Map<String, RecyclerSimpleVO> recyclerMap = recyclerSimpleVOList.stream().collect(
|
|
|
|
Map<String, RecyclerSimpleVO> recyclerMap = recyclerSimpleVOList.stream().collect(
|
|
|
|
Collectors.toMap(RecyclerSimpleVO::getId, v -> v, (k1, k2) -> k1));
|
|
|
|
Collectors.toMap(RecyclerSimpleVO::getId, v -> v, (k1, k2) -> k1));
|
|
|
|
orderRespVOList.forEach(v -> {
|
|
|
|
orderRespVOList.forEach(v -> {
|
|
|
|
v.setRecyclerInfo(recyclerMap.get(v.getStaffsId()));
|
|
|
|
CommonUtil.assignField(v, "recyclerInfo", recyclerMap.get(v.getStaffsId()));
|
|
|
|
v.setEstimateArrivalTime(v.getAppointmentTimeStart().plusHours(1)); // 预计上门时间
|
|
|
|
LocalDateTime appointmentTimeStart = (LocalDateTime) CommonUtil.obtainField(v, "appointmentTimeStart");
|
|
|
|
|
|
|
|
if (ObjectUtil.isNotEmpty(appointmentTimeStart)) {
|
|
|
|
|
|
|
|
CommonUtil.assignField(v, "estimateArrivalTime", appointmentTimeStart.plusHours(1));
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 组装小区地址信息
|
|
|
|
* 组装小区地址信息
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param orderRespVOList
|
|
|
|
* @param orderRespVOList
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private void assembleHousingEstateInfo(List<RecycleOrderRespVO> orderRespVOList) {
|
|
|
|
private <T extends RecycleOrderRespVO> void assembleHousingEstateInfo(List<T> orderRespVOList) {
|
|
|
|
Map<String, String> orderHousingEstateMap = orderRespVOList.stream().collect(Collectors.toMap(
|
|
|
|
Map<String, String> orderHousingEstateMap = orderRespVOList.stream().collect(Collectors.toMap(
|
|
|
|
RecycleOrderRespVO::getId, v -> Optional.ofNullable(v.getHousingEstateId()).orElse(""), (k1, k2) -> k1));
|
|
|
|
RecycleOrderRespVO::getId, v -> {
|
|
|
|
|
|
|
|
String housingEstateId = (String) CommonUtil.obtainField(v, "housingEstateId");
|
|
|
|
|
|
|
|
return Optional.ofNullable(housingEstateId).orElse("");
|
|
|
|
|
|
|
|
}, (k1, k2) -> k1));
|
|
|
|
Set<String> housingEstateIds = new HashSet<>(CollUtils.removeEmpty(orderHousingEstateMap.values()));
|
|
|
|
Set<String> housingEstateIds = new HashSet<>(CollUtils.removeEmpty(orderHousingEstateMap.values()));
|
|
|
|
List<HousingEstate> housingEstateList = housingEstateService.getHousingListByIds(housingEstateIds);
|
|
|
|
List<HousingEstate> housingEstateList = housingEstateService.getHousingListByIds(housingEstateIds);
|
|
|
|
List<HousingEstateSimpleVO> housingSimpleVOList = BeanUtils.copyList(housingEstateList, HousingEstateSimpleVO.class);
|
|
|
|
List<HousingEstateSimpleVO> housingSimpleVOList = BeanUtils.copyList(housingEstateList, HousingEstateSimpleVO.class);
|
|
|
|
Map<String, HousingEstateSimpleVO> housingEstateMap = housingSimpleVOList.stream().collect(
|
|
|
|
Map<String, HousingEstateSimpleVO> housingEstateMap = housingSimpleVOList.stream().collect(
|
|
|
|
Collectors.toMap(HousingEstateSimpleVO::getId, v -> v, (k1, k2) -> k1));
|
|
|
|
Collectors.toMap(HousingEstateSimpleVO::getId, v -> v, (k1, k2) -> k1));
|
|
|
|
orderRespVOList.forEach(v -> v.setHousingEstateInfo(housingEstateMap.get(v.getHousingEstateId())));
|
|
|
|
orderRespVOList.forEach(v -> {
|
|
|
|
|
|
|
|
String housingEstateId = (String) CommonUtil.obtainField(v, "housingEstateId");
|
|
|
|
|
|
|
|
CommonUtil.assignField(v, "housingEstateInfo", housingEstateMap.get(housingEstateId));
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|