Commit aec88f6d authored by lining's avatar lining

feat: 超时不能派单逻辑

parent a24e44db
...@@ -30,9 +30,4 @@ public class DispatchServiceOrderDTO { ...@@ -30,9 +30,4 @@ public class DispatchServiceOrderDTO {
@ApiModelProperty(value = "派单备注") @ApiModelProperty(value = "派单备注")
private String remark; private String remark;
@ApiModelProperty(value = "期望维修工上门时间", required = true)
@NotNull(message = "请选择上门时间")
@Future(message = "上门时间必须为将来的某个时间点")
private Date expectArrivalTime;
} }
...@@ -187,12 +187,16 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> { ...@@ -187,12 +187,16 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> {
throw new ServiceException(BizCodeEnum.SERVICE_ORDER_CANNOT_DISPATCH); throw new ServiceException(BizCodeEnum.SERVICE_ORDER_CANNOT_DISPATCH);
} }
if (System.currentTimeMillis() >= serviceOrder.getExpectArrivalTime().getTime()) {
throw new ServiceException(BizCodeEnum.SERVICE_ORDER_TIMEOUT_CANNOT_DISPATCH);
}
ServiceWorker serviceWorker = serviceWorkerMapper.selectByPrimaryKey(dto.getHostId()); ServiceWorker serviceWorker = serviceWorkerMapper.selectByPrimaryKey(dto.getHostId());
if (Objects.isNull(serviceWorker)) { if (Objects.isNull(serviceWorker)) {
throw new ServiceException(BizCodeEnum.SERVICE_WORKER_NOT_EXIST); throw new ServiceException(BizCodeEnum.SERVICE_WORKER_NOT_EXIST);
} }
serviceWorkerAssignMapper.insertSelective(buildServiceWorkerAssign(dto, userId)); serviceWorkerAssignMapper.insertSelective(buildServiceWorkerAssign(dto, serviceOrder, userId));
serviceOrder.setOrderStatus(ServiceOrderStatusEnum.DISPATCH.getStatus()); serviceOrder.setOrderStatus(ServiceOrderStatusEnum.DISPATCH.getStatus());
serviceOrder.setModifyBy(userId); serviceOrder.setModifyBy(userId);
...@@ -222,6 +226,10 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> { ...@@ -222,6 +226,10 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> {
throw new ServiceException(BizCodeEnum.SERVICE_ORDER_CANNOT_REDISPATCH); throw new ServiceException(BizCodeEnum.SERVICE_ORDER_CANNOT_REDISPATCH);
} }
if (System.currentTimeMillis() >= serviceOrder.getExpectArrivalTime().getTime()) {
throw new ServiceException(BizCodeEnum.SERVICE_ORDER_TIMEOUT_CANNOT_DISPATCH);
}
ServiceWorker serviceWorker = serviceWorkerMapper.selectByPrimaryKey(dto.getHostId()); ServiceWorker serviceWorker = serviceWorkerMapper.selectByPrimaryKey(dto.getHostId());
if (Objects.isNull(serviceWorker)) { if (Objects.isNull(serviceWorker)) {
throw new ServiceException(BizCodeEnum.SERVICE_WORKER_NOT_EXIST); throw new ServiceException(BizCodeEnum.SERVICE_WORKER_NOT_EXIST);
...@@ -229,7 +237,7 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> { ...@@ -229,7 +237,7 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> {
disableServiceWorkerAssign(serviceOrder, userId, false); disableServiceWorkerAssign(serviceOrder, userId, false);
int result = serviceWorkerAssignMapper.insertSelective(buildServiceWorkerAssign(dto, userId)); int result = serviceWorkerAssignMapper.insertSelective(buildServiceWorkerAssign(dto, serviceOrder, userId));
// TODO 短信 "您的订单已为您重新指派维修工,请保持手机畅通!" // TODO 短信 "您的订单已为您重新指派维修工,请保持手机畅通!"
...@@ -319,14 +327,14 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> { ...@@ -319,14 +327,14 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> {
return serviceValuatorAssign; return serviceValuatorAssign;
} }
private ServiceWorkerAssign buildServiceWorkerAssign(DispatchServiceOrderDTO dto, Long userId) { private ServiceWorkerAssign buildServiceWorkerAssign(DispatchServiceOrderDTO dto, ServiceOrder serviceOrder, Long userId) {
ServiceWorkerAssign serviceWorkerAssign = new ServiceWorkerAssign(); ServiceWorkerAssign serviceWorkerAssign = new ServiceWorkerAssign();
// 维修工id // 维修工id
serviceWorkerAssign.setWorkerId(dto.getHostId()); serviceWorkerAssign.setWorkerId(dto.getHostId());
// 订单id // 订单id
serviceWorkerAssign.setOrderId(dto.getId()); serviceWorkerAssign.setOrderId(dto.getId());
// 维修工上门时间 // 维修工上门时间
serviceWorkerAssign.setAssignTime(dto.getExpectArrivalTime()); serviceWorkerAssign.setAssignTime(serviceOrder.getExpectArrivalTime());
// 创建人 // 创建人
serviceWorkerAssign.setCreateBy(userId); serviceWorkerAssign.setCreateBy(userId);
......
...@@ -22,6 +22,7 @@ public enum BizCodeEnum { ...@@ -22,6 +22,7 @@ public enum BizCodeEnum {
SERVICE_ORDER_CANNOT_CANCEL("订单不能取消"), SERVICE_ORDER_CANNOT_CANCEL("订单不能取消"),
SERVICE_ORDER_CANNOT_REFUND("订单不能申请退款"), SERVICE_ORDER_CANNOT_REFUND("订单不能申请退款"),
SERVICE_ORDER_CANNOT_DISPATCH("订单未支付,不能派维修工"), SERVICE_ORDER_CANNOT_DISPATCH("订单未支付,不能派维修工"),
SERVICE_ORDER_TIMEOUT_CANNOT_DISPATCH("已过上门维修时间,不能派维修工"),
SERVICE_ORDER_CANNOT_REDISPATCH("订单未指派维修工,不能修改"), SERVICE_ORDER_CANNOT_REDISPATCH("订单未指派维修工,不能修改"),
SERVICE_ORDER_CANNOT_FINISH("订单未派单,不能完成本次服务"), SERVICE_ORDER_CANNOT_FINISH("订单未派单,不能完成本次服务"),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment