WorkOrderDetailService.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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. }
  46. /**
  47. * 更新详情
  48. * @param WorkOrderDetail $detail
  49. * @param $params
  50. */
  51. public function updateLossDetail(WorkOrderDetail $detail,$params)
  52. {
  53. $param = (new WorkOrderDetail($params))->getAttributes();
  54. $detail->update($param);
  55. $this->commodityService->updateWorkOrderCommoditiesByJsonArray($detail,$params['commodities'] ?? []);
  56. }
  57. public function updateDetail(WorkOrderDetail $detail,$params)
  58. {
  59. $param = (new WorkOrderDetail($params))->getAttributes();
  60. $detail->update($param);
  61. $this->commodityService->updateWorkOrderCommoditiesByJsonArray($detail,$params['commodities'] ?? []);
  62. }
  63. /**
  64. * @param $id
  65. * @return WorkOrderDetail
  66. */
  67. public function find($id):WorkOrderDetail
  68. {
  69. /** @var WorkOrderDetail $item */
  70. $item = WorkOrderDetail::query()->where('id', $id)->first();
  71. return $item;
  72. }
  73. /**
  74. * @param WorkOrderDetail $detail
  75. */
  76. public function undoneTag(WorkOrderDetail $detail)
  77. { // 标记为未完成历史标记
  78. $detail->undoneTag();
  79. $this->commodityService->undoneTag($detail);
  80. $this->imageService->undoneTag($detail);
  81. $this->logService->undoneTag($detail);
  82. }
  83. /**
  84. * @param WorkOrderDetail $detail
  85. */
  86. public function endDetail(WorkOrderDetail $detail)
  87. {
  88. // 标记为完成
  89. $detail->end();
  90. $this->commodityService->endDetail($detail);
  91. $this->imageService->endDetail($detail);
  92. $this->logService->endDetail($detail);
  93. }
  94. /**
  95. * @param WorkOrder $workOrder
  96. */
  97. public function undoneTagsByWorkOrder(WorkOrder $workOrder)
  98. {
  99. foreach ($workOrder->details ?? [] as $detail){
  100. // 判断是否为完成
  101. if($detail->status == '完成' || $detail->status == 5){
  102. continue;
  103. } else {
  104. $this->undoneTag($detail);
  105. }
  106. }
  107. }
  108. }