WorkOrderInterceptService.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace App\Services;
  3. use App\WorkOrder;
  4. use App\WorkOrderDetail;
  5. /**
  6. * 处理 拦截 工单
  7. * Class WorkOrderInterceptService
  8. * @package App\Services
  9. */
  10. class WorkOrderInterceptService extends WorkOrderService
  11. {
  12. /**
  13. * @var WorkOrderLogService $logService
  14. * @var WorkOrderDetailService $detailService
  15. * @var OrderIssueTypeService $issueTypeService
  16. * @var OrderService $orderService
  17. */
  18. private $logService;
  19. private $detailService;
  20. private $issueTypeService;
  21. private $orderService;
  22. private $workOrderService;
  23. public function __construct()
  24. {
  25. parent::__construct();
  26. $this->logService = app('WorkOrderLogService');
  27. $this->detailService = app('WorkOrderDetailService');
  28. $this->issueTypeService = app('OrderIssueTypeService');
  29. $this->orderService = app('OrderService');
  30. $this->workOrderService = app('WorkOrderService');
  31. }
  32. /*
  33. * 拦截工单处理流程
  34. * 1:创建
  35. * 2:承运商处理完结
  36. */
  37. public function store($params)
  38. {
  39. $issueType = $this->issueTypeService->firstOrCreate(['name' => '拦截']);
  40. $order = $this->orderService->first(['code' => $params['orderNos']]);
  41. $workOrder = $this->workOrderService->createAndNotification($order, $issueType, $param['remark'] ?? '');
  42. $workOrder->changeStatus('承运商处理');
  43. $detail = $this->detailService->createWorkOrderDetail($workOrder, $params);
  44. $this->logService->createLog($detail, '创建', '创建');
  45. $workOrder->changeStatus('承运商处理');
  46. }
  47. // 完结拦截工单
  48. public function endIntercept(WorkOrderDetail $detail)
  49. {
  50. $this->logService->createLog($detail, '完结', '承运商完结');
  51. $detail->changeStatus('完成');
  52. $detail->workOrder->clearWorkOrderStatus();
  53. $detail->workOrder->changeStatus('完成');
  54. $this->detailService->endDetail($detail);
  55. }
  56. }