WorkOrderDetailService.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace App\Services;
  3. use App\Traits\ServiceAppAop;
  4. use App\WorkOrder;
  5. use App\WorkOrderDetail;
  6. class WorkOrderDetailService
  7. {
  8. use ServiceAppAop;
  9. protected $modelClass=WorkOrderDetail::class;
  10. /**
  11. * @var WorkOrderCommoditiesService $commodityService
  12. * @var WorkOrderImageService $imageService
  13. * @var WorkOrderLogService $logService
  14. */
  15. private $commodityService;
  16. private $imageService;
  17. private $logService;
  18. public function __construct()
  19. {
  20. $this->commodityService = app(WorkOrderCommoditiesService::class);
  21. $this->imageService = app(WorkOrderImageService::class);
  22. $this->logService = app(WorkOrderLogService::class);
  23. }
  24. public function createWorkOrderDetail(WorkOrder $workOrder,$params): WorkOrderDetail
  25. {
  26. $param = (new WorkOrderDetail($params))->getAttributes();
  27. $param['order_issue_type_id'] = $workOrder['order_issue_type_id'];
  28. $param['remark'] = $workOrder['remark'];
  29. $detail = $workOrder->details()->create($param);
  30. $this->commodityService->createWorkOrderCommoditiesByJsonArray($detail, $params['commodities'] ?? []);
  31. $this->imageService->createWorkOrderImages($detail,$params);
  32. return $detail;
  33. }
  34. /**
  35. * 填充丢件工单信息
  36. * @param WorkOrderDetail $detail
  37. * @param $params
  38. */
  39. public function fillLossDetail(WorkOrderDetail $detail,$params)
  40. {
  41. $param = (new WorkOrderDetail($params))->getAttributes();
  42. $detail->update($param);
  43. $this->imageService->createWorkOrderImages($detail, $params); // 图片信息
  44. $this->commodityService->createWorkOrderCommoditiesByJsonArray($detail, $params['commodities'] ?? []); // 商品信息
  45. $this->logService->createLog($detail, '处理', '填充丢件信息'); // 创建日志
  46. }
  47. /**
  48. * @param $id
  49. * @return WorkOrderDetail
  50. */
  51. public function find($id):WorkOrderDetail
  52. {
  53. /** @var WorkOrderDetail $item */
  54. $item = WorkOrderDetail::query()->where('id', $id)->first();
  55. return $item;
  56. }
  57. /**
  58. * @param WorkOrderDetail $detail
  59. */
  60. public function undoneTag(WorkOrderDetail $detail)
  61. { // 标记为未完成历史标记
  62. $detail->undoneTag();
  63. $this->commodityService->undoneTag($detail);
  64. $this->imageService->undoneTag($detail);
  65. $this->logService->undoneTag($detail);
  66. }
  67. /**
  68. * @param WorkOrderDetail $detail
  69. */
  70. public function endDetail(WorkOrderDetail $detail)
  71. {
  72. // 标记为完成
  73. $detail->end();
  74. $this->commodityService->endDetail($detail);
  75. $this->imageService->endDetail($detail);
  76. $this->logService->endDetail($detail);
  77. }
  78. /**
  79. * @param WorkOrder $workOrder
  80. */
  81. public function undoneTagsByWorkOrder(WorkOrder $workOrder)
  82. {
  83. foreach ($workOrder->details ?? [] as $detail){
  84. if ($detail->tag !== '完成' && $detail->tag !== '标记'){
  85. $this->undoneTag($detail);
  86. }
  87. }
  88. }
  89. }