You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
2.3 KiB

5 years ago
<?php
namespace App\Http\Controllers\Manager;
use App\Models\Area;
use App\Models\Bed;
use Illuminate\Http\Request;
5 years ago
use Illuminate\Support\Facades\DB;
5 years ago
class StatisticsController extends CommonController
{
/**
* @OA\Get(
* path="/manager/statistics/beds",
5 years ago
* summary="V2-获取项目中的床位陪护一览",
* description="获取项目中的床位陪护一览",
5 years ago
* @OA\Parameter(name="project_id", in="query", @OA\Schema(type="integer"), required=true, description="医院ID"),
* @OA\Parameter(name="has_ongoing_order", in="query", @OA\Schema(type="integer"), required=false, description="是否包含正在服务的订单,默认为不筛选"),
5 years ago
* @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"),
5 years ago
* @OA\Response(
* response="200",
5 years ago
* description="获取项目中的床位陪护一览"
5 years ago
* )
* )
*/
public function beds(Request $request)
{
5 years ago
DB::enableQueryLog();
$areas = Area::with([
"beds" => function ($query) use ($request) {
if ($request->has_ongoing_order) {
$query->has("onGoingOrder");
}
$query->with(["onGoingOrder" => function ($query) {
$query->leftJoin("paramedic", "orders.paramedic_id", "=", "paramedic.id")
->select("orders.id", "orders.bed_id", "orders.paramedic_id", "orders.status", "paramedic.name as paramedic_name");
5 years ago
}])->select("bed.id", "bed.name", "bed.room_id", "bed.area_id", "bed.myindex")
5 years ago
->leftJoin("room", "bed.room_id", "=", "room.id")
5 years ago
->addSelect("room.name as room_name")
5 years ago
->orderBy("room.name")
->orderBy("bed.name");
5 years ago
}])
->whereRaw("`area`.`project_id` = '{$request->project_id}'")
->orderBy("building.myindex")
->orderBy("area.myindex")
->select("area.id", "area.name", "area.building_id", "area.project_id")
->leftJoin("building", "area.building_id", "=", "building.id")
->addSelect("building.name as building_name")
5 years ago
->withCount("beds")
5 years ago
->get();
5 years ago
5 years ago
return response()->json($areas->toArray());
}
}