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