Commit aec88f6d authored by lining's avatar lining

feat: 超时不能派单逻辑

parent a24e44db
......@@ -30,9 +30,4 @@ public class DispatchServiceOrderDTO {
@ApiModelProperty(value = "派单备注")
private String remark;
@ApiModelProperty(value = "期望维修工上门时间", required = true)
@NotNull(message = "请选择上门时间")
@Future(message = "上门时间必须为将来的某个时间点")
private Date expectArrivalTime;
}
......@@ -187,12 +187,16 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> {
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());
if (Objects.isNull(serviceWorker)) {
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.setModifyBy(userId);
......@@ -222,6 +226,10 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> {
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());
if (Objects.isNull(serviceWorker)) {
throw new ServiceException(BizCodeEnum.SERVICE_WORKER_NOT_EXIST);
......@@ -229,7 +237,7 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> {
disableServiceWorkerAssign(serviceOrder, userId, false);
int result = serviceWorkerAssignMapper.insertSelective(buildServiceWorkerAssign(dto, userId));
int result = serviceWorkerAssignMapper.insertSelective(buildServiceWorkerAssign(dto, serviceOrder, userId));
// TODO 短信 "您的订单已为您重新指派维修工,请保持手机畅通!"
......@@ -319,14 +327,14 @@ public class ServiceOrderService extends AbstractMapper<ServiceOrder> {
return serviceValuatorAssign;
}
private ServiceWorkerAssign buildServiceWorkerAssign(DispatchServiceOrderDTO dto, Long userId) {
private ServiceWorkerAssign buildServiceWorkerAssign(DispatchServiceOrderDTO dto, ServiceOrder serviceOrder, Long userId) {
ServiceWorkerAssign serviceWorkerAssign = new ServiceWorkerAssign();
// 维修工id
serviceWorkerAssign.setWorkerId(dto.getHostId());
// 订单id
serviceWorkerAssign.setOrderId(dto.getId());
// 维修工上门时间
serviceWorkerAssign.setAssignTime(dto.getExpectArrivalTime());
serviceWorkerAssign.setAssignTime(serviceOrder.getExpectArrivalTime());
// 创建人
serviceWorkerAssign.setCreateBy(userId);
......
......@@ -22,6 +22,7 @@ public enum BizCodeEnum {
SERVICE_ORDER_CANNOT_CANCEL("订单不能取消"),
SERVICE_ORDER_CANNOT_REFUND("订单不能申请退款"),
SERVICE_ORDER_CANNOT_DISPATCH("订单未支付,不能派维修工"),
SERVICE_ORDER_TIMEOUT_CANNOT_DISPATCH("已过上门维修时间,不能派维修工"),
SERVICE_ORDER_CANNOT_REDISPATCH("订单未指派维修工,不能修改"),
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