weizong song 5 years ago
parent 0dbceac86f
commit 1b39d142f0

@ -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;
}
}

Loading…
Cancel
Save