diff --git a/app/Actions/AttachAffectedOrders.php b/app/Actions/AttachAffectedOrders.php index f55e112..93dd129 100644 --- a/app/Actions/AttachAffectedOrders.php +++ b/app/Actions/AttachAffectedOrders.php @@ -3,6 +3,7 @@ namespace App\Actions; use App\Models\Orders; +use Illuminate\Support\Facades\DB; class AttachAffectedOrders { @@ -20,7 +21,6 @@ class AttachAffectedOrders public function __invoke(Orders $order, $from_paramedic = null) { $affected_orders = []; - //前置条件 if ($order->status != Orders::STATUS_ONGOING) { $order->affected_orders = $affected_orders; @@ -32,30 +32,9 @@ class AttachAffectedOrders return $order; } - $model = Orders::with([ - "project" => function ($query) { - $query->select("id", "name"); - }, - "bed" => function ($query) { - $query->select("bed.id", "bed.name") - ->leftJoin("building", "building.id", "=", "bed.building_id") - ->leftJoin("area", "area.id", "=", "bed.area_id") - ->leftJoin("room", "room.id", "=", "bed.room_id") - ->addSelect("room.name as room_name", "area.name as area_name", "building.name as building_name"); - }, - "patient" => function ($query) { - $query->select("id", "name", "sex", "age", "mobile"); - }, - "paramedic" => function ($query) { - $query->select("paramedic.id", "paramedic.name", "paramedic.mobile") - ->leftJoin("paramedic_level", "paramedic_level.id", "=", "paramedic.paramedic_level_id") - ->addSelect("paramedic_level.name as paramedic_level_name"); - } - ]); - //更换护工,查询从原护工手上退出订单后,原护工的其他订单是否变成了1对1 if ($from_paramedic) { - $last_orders = $model->where("paramedic_id", $from_paramedic) + $last_orders = $this->getOrderModel()->where("paramedic_id", $from_paramedic) ->where("status", Orders::STATUS_ONGOING) ->where("paramedic_id", "<>", $order->paramedic_id) //剔除未更换护工的情况 ->get(); @@ -69,7 +48,7 @@ class AttachAffectedOrders } //查询护工新接手一张单之后,是否有订单从1对1变成了1对多 - $new_same_paramedic_orders = $model->where("paramedic_id", $order->paramedic_id) + $new_same_paramedic_orders = $this->getOrderModel()->where("paramedic_id", $order->paramedic_id) ->where("status", Orders::STATUS_ONGOING) ->where("id", "<>", $order->id) //剔除订单本身 ->get(); @@ -89,4 +68,29 @@ class AttachAffectedOrders $order->affected_orders = collect($affected_orders); return $order; } + + public function getOrderModel() + { + $model = Orders::with([ + "project" => function ($query) { + $query->select("id", "name"); + }, + "bed" => function ($query) { + $query->select("bed.id", "bed.name") + ->leftJoin("building", "building.id", "=", "bed.building_id") + ->leftJoin("area", "area.id", "=", "bed.area_id") + ->leftJoin("room", "room.id", "=", "bed.room_id") + ->addSelect("room.name as room_name", "area.name as area_name", "building.name as building_name"); + }, + "patient" => function ($query) { + $query->select("id", "name", "sex", "age", "mobile"); + }, + "paramedic" => function ($query) { + $query->select("paramedic.id", "paramedic.name", "paramedic.mobile") + ->leftJoin("paramedic_level", "paramedic_level.id", "=", "paramedic.paramedic_level_id") + ->addSelect("paramedic_level.name as paramedic_level_name"); + } + ]); + return $model; + } }