Commit d5810458ad09f925b7580597190b505582619f90

Authored by guzijian
1 parent d9491a6a

fix: 修复驾驶员接单报错,修复继续派发报错。

trash-garbage/src/main/java/com/trash/garbage/service/impl/GarOrderServiceImpl.java
... ... @@ -17,7 +17,6 @@ import org.apache.commons.lang3.StringUtils;
17 17 import org.springframework.beans.factory.annotation.Autowired;
18 18 import org.springframework.stereotype.Service;
19 19 import org.springframework.transaction.annotation.Transactional;
20   -
21 20 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
22 21 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
23 22 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
... ... @@ -30,7 +29,6 @@ import com.trash.driver.service.IDriverService;
30 29 import com.trash.garbage.global.GlobalStatus;
31 30 import com.trash.garbage.mapper.GarOrderMapper;
32 31 import com.trash.garbage.pojo.vo.OrderDetailVo;
33   -
34 32 import cn.hutool.core.collection.CollectionUtil;
35 33  
36 34 /**
... ... @@ -118,7 +116,7 @@ public class GarOrderServiceImpl extends ServiceImpl<GarOrderMapper, GarOrder>
118 116 || user.getGarUserType().equals(GlobalStatus.GarUserStatusEnum.NORMAL_USER.getDescription())) {
119 117 return getOrderDetailVoResponsible(id, user);
120 118 }
121   - // TODO 订单分发获取 处理人员
  119 + // 订单分发获取 处理人员
122 120 if (user.getGarUserType().equals(GlobalStatus.GarUserStatusEnum.DRIVER_USER.getDescription())) {
123 121 return getOrderDetailVoDriver(id, user);
124 122 }
... ... @@ -295,8 +293,8 @@ public class GarOrderServiceImpl extends ServiceImpl<GarOrderMapper, GarOrder>
295 293 || GlobalStatus.GarOrderStatus.NEW_ORDER.getValue().equals(dto.getHandleType())) {
296 294 LambdaUpdateWrapper<GarOrderMatchHandler> uw = new LambdaUpdateWrapper<>();
297 295 uw.eq(GarOrderMatchHandler::getGarOrderId, dto.getGarOrderId())
298   - .set(GarOrderMatchHandler::getGarOrderStatus, GlobalStatus.GarOrderStatus.ACTIVE_ORDER.getValue())
299   - .set(GarOrderMatchHandler::getGarOrderHandlerTel, user.getGarUserTel());
  296 + .eq(GarOrderMatchHandler::getGarOrderHandlerTel, user.getGarUserTel())
  297 + .set(GarOrderMatchHandler::getGarOrderStatus, GlobalStatus.GarOrderStatus.ACTIVE_ORDER.getValue());
300 298 handlerService.update(uw);
301 299 return "已接受派单";
302 300 }
... ... @@ -305,6 +303,7 @@ public class GarOrderServiceImpl extends ServiceImpl&lt;GarOrderMapper, GarOrder&gt;
305 303 && GlobalStatus.GarOrderStatus.SUCCESS_ORDER.getValue().equals(dto.getHandleType())) {
306 304 LambdaUpdateWrapper<GarOrderMatchHandler> uw = new LambdaUpdateWrapper<>();
307 305 uw.eq(GarOrderMatchHandler::getGarOrderId, dto.getGarOrderId())
  306 + .eq(GarOrderMatchHandler::getGarOrderHandlerTel, user.getGarUserTel())
308 307 .set(GarOrderMatchHandler::getGarOrderStatus, GlobalStatus.GarOrderStatus.SUCCESS_ORDER.getValue());
309 308 handlerService.update(uw);
310 309 }
... ... @@ -477,27 +476,45 @@ public class GarOrderServiceImpl extends ServiceImpl&lt;GarOrderMapper, GarOrder&gt;
477 476  
478 477 @Override
479 478 public void dispatchOrder(DispatchDto dto) {
480   - // TODO
481 479 GarOrder order = getById(dto.getGarOrderId());
482 480 List<GarOrderMatchHandler> handlerList = new ArrayList<>(dto.getDispatchList().size());
483   - for (DispatchDto.DispatchDetail detail : dto.getDispatchList()) {
484   - GarOrderMatchHandler handler = new GarOrderMatchHandler();
485   - handler.setGarOrderHandlerTel(detail.getTel());
486   - handler.setGarOrderHandlerName(detail.getName());
487   - handler.setGarHandlerCarCode(detail.getCarCode());
488   - handler.setGarCancelFlag(order.getGarCancelFlag());
489   - handler.setGarOrderId(order.getGarOrderId());
490   - handler.setGarOrderHandlerStatus(order.getGarOrderHandlerStatus());
491   - handler.setGarOrderHandlerCompanyName(order.getGarOrderCompanyName());
492   - handler.setGarOrderHandlerCompanyId(order.getGarOrderCompanyId());
493   - handler.setGarOrderStatus(GlobalStatus.GarOrderStatus.DISPATCH_HANDLE_NEW.getValue());
494   - handlerList.add(handler);
  481 + // 已分配 继续下发
  482 + if (order.getGarOrderMatchFlag().equals(GlobalStatus.GarOrderStatus.MATCH_YES.getValue())) {
  483 + LambdaQueryWrapper<GarOrderMatchHandler> qw = new LambdaQueryWrapper<>();
  484 + qw.eq(GarOrderMatchHandler::getGarOrderId, order.getGarOrderId());
  485 + Map<String, GarOrderMatchHandler> handlerMap = handlerService.list(qw).stream().collect(Collectors.toMap(item -> item.getGarOrderHandlerTel(), item -> item));
  486 + for (DispatchDto.DispatchDetail dispatchDetail : dto.getDispatchList()) {
  487 + if (handlerMap.containsKey(dispatchDetail.getTel())) {
  488 + continue;
  489 + }
  490 + GarOrderMatchHandler handler = getGarOrderMatchHandler(order, dispatchDetail);
  491 + handlerList.add(handler);
  492 + }
  493 + } else {
  494 + for (DispatchDto.DispatchDetail detail : dto.getDispatchList()) {
  495 + GarOrderMatchHandler handler = getGarOrderMatchHandler(order, detail);
  496 + handlerList.add(handler);
  497 + }
495 498 }
496 499 handlerService.saveBatch(handlerList);
497 500 order.setGarOrderMatchFlag(GlobalStatus.GarOrderStatus.MATCH_YES.getValue());
498 501 updateById(order);
499 502 }
500 503  
  504 + private GarOrderMatchHandler getGarOrderMatchHandler(GarOrder order, DispatchDto.DispatchDetail detail) {
  505 + GarOrderMatchHandler handler = new GarOrderMatchHandler();
  506 + handler.setGarOrderHandlerTel(detail.getTel());
  507 + handler.setGarOrderHandlerName(detail.getName());
  508 + handler.setGarHandlerCarCode(detail.getCarCode());
  509 + handler.setGarCancelFlag(order.getGarCancelFlag());
  510 + handler.setGarOrderId(order.getGarOrderId());
  511 + handler.setGarOrderHandlerStatus(order.getGarOrderHandlerStatus());
  512 + handler.setGarOrderHandlerCompanyName(order.getGarOrderCompanyName());
  513 + handler.setGarOrderHandlerCompanyId(order.getGarOrderCompanyId());
  514 + handler.setGarOrderStatus(GlobalStatus.GarOrderStatus.DISPATCH_HANDLE_NEW.getValue());
  515 + return handler;
  516 + }
  517 +
501 518 @Override
502 519 @Transactional(rollbackFor = Exception.class)
503 520 public List<DispatchDriverVo> queryDispatch(String orderId) {
... ...