diff --git a/app/Http/Controllers/Admin/HomeController.php b/app/Http/Controllers/Admin/HomeController.php index ba499c9..8353064 100644 --- a/app/Http/Controllers/Admin/HomeController.php +++ b/app/Http/Controllers/Admin/HomeController.php @@ -2,11 +2,20 @@ namespace App\Http\Controllers\Admin; +use App\Models\AdminAreaLink; +use App\Models\Area; use App\Models\Bed; +use App\Models\FactorItems; use App\Models\OrderItems; use App\Models\Orders; use App\Models\Paramedic; +use App\Models\Product; +use App\Models\ProductItems; use App\Models\Project; +use App\Models\Refund; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; +use Spatie\Permission\Models\Role; class HomeController extends CommonController { @@ -14,27 +23,131 @@ class HomeController extends CommonController public function index() { -// $month = date("Y-m"); -// $order_items = OrderItems::whereHas("order")->whereRaw("DATE_FORMAT(`service_date`,'%Y-%m') = '{$month}'") -// ->where("total", ">", 0)->get(); -// $order_items_count = $order_items->count(); -// $total = $order_items->sum("total"); -// $orders_count = $order_items->groupBy("order_id")->count(); -// -// foreach ($order_items as &$item) { -// $item = $item->calculateFee(); -// } -// $total_paramedic = $order_items->sum("paramedic_total"); -// $fee = $total - $total_paramedic; -// $laravel_duration = microtime(true) - LARAVEL_START; + $project_id = request()->project_id; + if (empty($project_id)) { + $project_id = Project::first()->id; + } + $counts = []; + // 订单总数 + $counts["orders_all"] = (new Orders())->ofProject($project_id)->count(); + // 待处理 + $counts["orders_pending"] = (new Orders())->ofProject($project_id)->whereIn("status", [Orders::STATUS_UNCONFIRMED, Orders::STATUS_UNASSIGNED])->count(); + // 在陪患者 + $counts["orders_ongoing"] = (new Orders())->ofProject($project_id)->where("status", Orders::STATUS_ONGOING)->count(); + // 日派工 + $counts["orders_ongoing_in_today"] = (new Orders())->ofProject($project_id) + ->where("status", Orders::STATUS_ONGOING) + ->whereRaw("DATEDIFF(`from_date`,now()) = 0") + ->count(); + // 已完成 + $counts["orders_finished"] = (new Orders())->ofProject($project_id)->where("status", Orders::STATUS_FINISHED)->count(); + // 日结算 + $counts["orders_finished_in_today"] = (new Orders())->ofProject($project_id) + ->where("status", Orders::STATUS_FINISHED) + ->whereRaw("DATEDIFF(`to_date`,now()) = 0") + ->count(); + // 护工数量 + $counts["paramedics"] = (new Paramedic())->ofProject($project_id)->count(); + // 今日应收 + $counts["bill_today"] = (new OrderItems())->where("service_date", date("Y-m-d"))->whereHas("order", function ($query) use ($project_id) { + $query->ofProject($project_id); + })->sum("total"); + // 今日退款 + $counts["refund_today"] = (new Refund())->whereNotNull("paid_at")->whereRaw("DATEDIFF(`paid_at`,now()) = 0")->whereHas("order", function ($query) use ($project_id) { + $query->ofProject($project_id); + })->sum("money"); + // 在岗护工 + $counts["paramedic_has_order"] = (new Paramedic())->ofProject($project_id)->whereHas("orders", function ($query) { + $query->where("status", Orders::STATUS_ONGOING); + })->count(); + + // 各产品占比 - if(is_mobile()){ + $allMontn = [ + date("Y") . '-01', + date("Y") . '-02', + date("Y") . '-03', + date("Y") . '-04', + date("Y") . '-05', + date("Y") . '-06', + date("Y") . '-07', + date("Y") . '-08', + date("Y") . '-09', + date("Y") . '-10', + date("Y") . '-11', + date("Y") . '-12', + ]; + // 销售额 + $saleList = []; + foreach ($allMontn as $month) { + $saleList[] = [ + 'month' => $month, + 'total' => (new OrderItems())->where("service_date", $month)->whereHas("order", function ($query) use ($project_id) { + $query->ofProject($project_id); + })->sum("total") + ]; + } + // 订单量 + $orderList = []; + foreach ($allMontn as $month) { + $orderList[] = [ + 'month' => $month, + 'total' => (new Orders())->ofProject($project_id)->where('created_at', 'like', $month . '%')->count() + ]; + } + dd($this->huli()); + if (is_mobile()) { return view($this->bladePath . ".mobile_home"); - }else{ + } else { return view($this->bladePath . ".home"); } } + public function huli($project_id) + { + $data = Area::where('project_id', $project_id)->with('project', 'building')->get(); + $product = Product::where('project_id', $project_id)->first(); + $productItem = ProductItems::where('product_id', $product->id)->get(); + $factor = FactorItems::where('factor_id', $product->statistic_factor_id)->get(); + $sumOrderTotal = 0; + foreach ($data as $item) { + // 获取所有床位id + $bedIds = Bed::where('area_id', $item->id)->pluck('id'); + // 子项 + $item->lies = $this->getLies($bedIds, $productItem, $factor); + } + // 获取所有列 + $lie = []; + if(isset($data[0]->lies)){ + $lie = array_column($data[0]->lies, 'name'); + } + dd($data); + } + + /** + * 获取动态列 + */ + public function getLies($bedIds, $productItem, $factor) + { + $list = []; + foreach ($productItem as $item) { + foreach ($factor as $factor_item) { + $total = OrderItems::where('product_item_id', $item->id) + ->whereIn("bed_id", $bedIds) + ->whereRaw("factors like '%\"factor_item_id\": $factor_item->id%'") + ->sum('total'); + $list [] = [ + 'name' => $item->price + $factor_item->price . '元/天', + 'total_price' => $item->price + $factor_item->price, + 'product_item_id' => $item->id, + 'factor_item_id' => $factor_item->id, + 'total' => $total + ]; + } + } + return $list; + } + /** * 统计