processLogs()->create([ 'work_order_detail_id' => $detail->id, 'work_order_id' => $detail->work_order_id, 'content' => $params['content'], 'user_id' => Auth::id(), 'tag' => $params['tag'] ?? 0, ]); /** @var WorkOrder $work_order */ $work_order = $detail->workOrder; if (in_array($work_order->status, ['宝时处理', '宝时终审']) && $work_order->bao_shi_tag != WorkOrder::$NO_STATE_TAG) { $detail->workOrder()->whereIn('status', [1, 4])->update(['bao_shi_tag' => WorkOrder::$NO_STATE_TAG]); } else if (in_array($work_order->status, ['承运商处理']) && $work_order->logistic_tag != WorkOrder::$NO_STATE_TAG) { $detail->workOrder()->where('status', 3)->update(['logistic_tag' => WorkOrder::$NO_STATE_TAG]); } else if (in_array($work_order->status, ['货主处理', '待货主完结']) && $work_order->owner_tag != WorkOrder::$NO_STATE_TAG) { $detail->workOrder()->whereIn('status', [2, 6])->update(['owner_tag' => 1]); } $process_log->setAttribute('user', $user); SyncOrderIssueOrWorkOrderBySWMS::dispatch($work_order,SyncOrderIssueOrWorkOrderBySWMS::$WORK_ORDER_TYPE); return $process_log; } /** * 批量创建处理日志 * @param $workOrders * @param $params * @return array */ public function batchCreateProcessLog($workOrders, $params): array { $user = Auth::user(); $process_logs = []; /** @var WorkOrder $workOrder */ foreach ($workOrders as $workOrder) { /** @var WorkOrderDetail $detail */ $detail = $workOrder->details()->where('order_issue_type_id',$workOrder->order_issue_type_id)->orderByDesc('created_at')->first(); if (!$detail) continue; $process_logs[] = $this->createProcessLog($detail, $params, $user); SyncOrderIssueOrWorkOrderBySWMS::dispatch($workOrder,SyncOrderIssueOrWorkOrderBySWMS::$WORK_ORDER_TYPE); } return $process_logs; } /** * 将工单的处理结果同步到问题件的处理结果 * @param OrderIssue $orderIssue * @param WorkOrderDetail $detail */ public function syncOrderIssue(OrderIssue $orderIssue, WorkOrderDetail $detail) { $logs = $detail->processLogs()->where('status', '未同步')->get(); $orderIssue->logs()->insert($logs->map(function ($log) use ($orderIssue) { return [ 'order_issue_id' => $orderIssue->id, 'context' => $log->context, 'user_id' => $log->user_id, 'create_at' => $log->created_at, ]; })->toArray()); } }