liyinglin 2 years ago
parent 01ac4f86b5
commit a34bacf2d7

@ -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;
}
/**
* 统计

Loading…
Cancel
Save