|
|
|
@ -18,6 +18,7 @@ import cc.yunxi.mapper.RecycleOrderMapper;
|
|
|
|
|
import cc.yunxi.service.*;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
@ -59,6 +60,7 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
|
|
|
|
|
@Resource
|
|
|
|
|
private IHousingEstateService housingEstateService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Page<RecycleOrder> queryOrderByPage(RecycleOrderQuery recycleOrderQuery) {
|
|
|
|
|
LambdaQueryWrapperX<RecycleOrder> wrapper = new LambdaQueryWrapperX<>();
|
|
|
|
|
// 订单类型首要条件
|
|
|
|
@ -109,6 +111,7 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
|
|
|
|
|
return page(pageDO, wrapper);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public RecycleOrder getOrderById(String id) {
|
|
|
|
|
if (StrUtil.isEmpty(id)) {
|
|
|
|
|
throw new BizIllegalException("请求参数缺失");
|
|
|
|
@ -121,11 +124,24 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public RecycleOrder limitOrder(String clientId, OrderTypeEnum orderType) {
|
|
|
|
|
LambdaQueryWrapper<RecycleOrder> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
wrapper.eq(RecycleOrder::getClientId, clientId)
|
|
|
|
|
.eq(RecycleOrder::getOrderType, orderType)
|
|
|
|
|
.notIn(RecycleOrder::getOrderStatus, OrderStatusEnum.CANCELED, OrderStatusEnum.FINISHED);
|
|
|
|
|
return this.getOne(wrapper);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public String createOrder(RecycleOrderCreateVO orderCreateVO) {
|
|
|
|
|
// 查询散户是否存在
|
|
|
|
|
Client client = clientService.getClientById(orderCreateVO.getClientId());
|
|
|
|
|
RecycleOrder limitOrder = this.limitOrder(client.getId(), OrderTypeEnum.SH_ORDER);
|
|
|
|
|
if (ObjectUtil.isNotEmpty(limitOrder)) {
|
|
|
|
|
throw new BizIllegalException("您有一笔正在进行中的预约回收订单!");
|
|
|
|
|
}
|
|
|
|
|
// 判断下单地址和回收站的距离
|
|
|
|
|
LocationDTO location = orderCreateVO.getLocation();
|
|
|
|
|
RecycleStation recycleStation = recycleStationService.getStationById(orderCreateVO.getRecycleStationId());
|
|
|
|
@ -171,16 +187,23 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
|
|
|
|
|
public String createOrderByHousing(TMRecycleOrderCreateVO tmOrderCreateVO) {
|
|
|
|
|
// 查询散户是否存在
|
|
|
|
|
Client client = clientService.getClientById(tmOrderCreateVO.getClientId());
|
|
|
|
|
RecycleOrder limitOrder = this.limitOrder(client.getId(), OrderTypeEnum.TM_RECOVERY);
|
|
|
|
|
if (ObjectUtil.isNotEmpty(limitOrder)) {
|
|
|
|
|
throw new BizIllegalException("您有一笔正在进行中的定点回收订单!");
|
|
|
|
|
}
|
|
|
|
|
String idNumber = CommonUtil.getIdNumber(BusinessCodeEnum.ORDER.getCode());
|
|
|
|
|
String housingEstateId = tmOrderCreateVO.getHousingEstateId();
|
|
|
|
|
HousingEstate housingInfo = housingEstateService.getHousingInfo(housingEstateId);
|
|
|
|
|
if (housingInfo.getHasSchedule() != 1 || StrUtil.isEmpty(housingInfo.getStationId())) {
|
|
|
|
|
throw new BizIllegalException("该小区不支持定点回收或未绑定回收站点!");
|
|
|
|
|
}
|
|
|
|
|
// 创建订单
|
|
|
|
|
RecycleOrder recycleOrder = BeanUtils.copyBean(tmOrderCreateVO, RecycleOrder.class);
|
|
|
|
|
recycleOrder.setRecycleStationId(housingInfo.getStationId());
|
|
|
|
|
recycleOrder.setClientId(client.getId());
|
|
|
|
|
recycleOrder.setClientName(client.getNickName());
|
|
|
|
|
recycleOrder.setClientMobile(client.getMobilePhone());
|
|
|
|
|
recycleOrder.setHousingEstateId(housingEstateId);
|
|
|
|
|
recycleOrder.setOrderNumber(idNumber);
|
|
|
|
|
recycleOrder.setOrderType(OrderTypeEnum.TM_RECOVERY);
|
|
|
|
|
recycleOrder.setOrderStatus(OrderStatusEnum.UNPROCESSED);
|
|
|
|
@ -195,6 +218,10 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
|
|
|
|
|
public String createOrderByStation(DZRecycleOrderCreateVO dzOrderCreateVO) {
|
|
|
|
|
// 查询散户、回收员信息
|
|
|
|
|
Client client = clientService.getClientByMobile(dzOrderCreateVO.getClientMobile());
|
|
|
|
|
RecycleOrder limitOrder = this.limitOrder(client.getId(), OrderTypeEnum.DZ_RECOVERY);
|
|
|
|
|
if (ObjectUtil.isNotEmpty(limitOrder)) {
|
|
|
|
|
throw new BizIllegalException("您有一笔正在进行中的到站回收订单!");
|
|
|
|
|
}
|
|
|
|
|
Recycler recycler = recyclerService.getRecyclerById(dzOrderCreateVO.getRecyclerId());
|
|
|
|
|
if (StrUtil.isEmpty(recycler.getStationId())) {
|
|
|
|
|
throw new BizIllegalException("警告,该回收员未绑定回收站点!");
|
|
|
|
@ -203,6 +230,7 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
|
|
|
|
|
String orderNo = CommonUtil.getIdNumber(BusinessCodeEnum.ORDER.getCode());
|
|
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
|
|
RecycleOrder recycleOrder = new RecycleOrder();
|
|
|
|
|
recycleOrder.setRecycleStationId(recycler.getStationId());
|
|
|
|
|
recycleOrder.setClientId(client.getId());
|
|
|
|
|
recycleOrder.setClientName(client.getNickName());
|
|
|
|
|
recycleOrder.setClientMobile(client.getMobilePhone());
|
|
|
|
@ -291,7 +319,8 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
|
|
|
|
|
if (recycleOrder.getOrderStatus().equals(OrderStatusEnum.FINISHED)) {
|
|
|
|
|
throw new BizIllegalException("订单已完成!");
|
|
|
|
|
}
|
|
|
|
|
recycleOrder = BeanUtils.copyBean(orderCancelVO, RecycleOrder.class);;
|
|
|
|
|
recycleOrder = BeanUtils.copyBean(orderCancelVO, RecycleOrder.class);
|
|
|
|
|
;
|
|
|
|
|
recycleOrder.setOrderStatus(OrderStatusEnum.CANCELED);
|
|
|
|
|
recycleOrder.setUpdateTime(LocalDateTime.now());
|
|
|
|
|
log.info("recycleOrder cancelVO: {}", recycleOrder);
|
|
|
|
@ -314,7 +343,8 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
|
|
|
|
|
if (distance.compareTo(new BigDecimal("0.1")) > 0) { // 大于0.1km
|
|
|
|
|
throw new BizIllegalException("未到达!");
|
|
|
|
|
}
|
|
|
|
|
recycleOrder = BeanUtils.copyBean(orderReachVO, RecycleOrder.class);;
|
|
|
|
|
recycleOrder = BeanUtils.copyBean(orderReachVO, RecycleOrder.class);
|
|
|
|
|
;
|
|
|
|
|
recycleOrder.setOrderStatus(OrderStatusEnum.RECYCLING);
|
|
|
|
|
recycleOrder.setArrivalTime(LocalDateTime.now());
|
|
|
|
|
log.info("recycleOrder orderReachVO: {}", recycleOrder);
|
|
|
|
@ -378,8 +408,6 @@ public class RecycleOrderServiceImpl extends ServiceImpl<RecycleOrderMapper, Rec
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 校验订单是否存在
|
|
|
|
|
private void validateOrderExists(String id) {
|
|
|
|
|
if (this.getOrderById(id) == null) {
|
|
|
|
|