|
|
|
|
@ -477,8 +477,6 @@ class StatisticsController extends CommonController
|
|
|
|
|
$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();
|
|
|
|
|
// 护工等级加价:取该产品下最小的护工级别加价,作为统计时的基础护工价
|
|
|
|
|
$min_paramedic_price = (float) ProductParamedicLevel::where('product_id', $product->id)->min('price');
|
|
|
|
|
|
|
|
|
|
$sumOrderTotal = 0;
|
|
|
|
|
foreach ($data as $item) {
|
|
|
|
|
@ -491,7 +489,7 @@ class StatisticsController extends CommonController
|
|
|
|
|
->sum('total');
|
|
|
|
|
$sumOrderTotal += $item->order_total;
|
|
|
|
|
// 子项
|
|
|
|
|
$item->lies = $this->getLies($bedIds, $productItem, $factor, $month, $min_paramedic_price);
|
|
|
|
|
$item->lies = $this->getLies($bedIds, $productItem, $factor, $month);
|
|
|
|
|
}
|
|
|
|
|
// 获取所有列(包含价格和 factor_item 名称)
|
|
|
|
|
$lie = [];
|
|
|
|
|
@ -506,7 +504,7 @@ class StatisticsController extends CommonController
|
|
|
|
|
/**
|
|
|
|
|
* 获取动态列
|
|
|
|
|
*/
|
|
|
|
|
public function getLies($bedIds, $productItem, $factor, $month, $min_paramedic_price = 0)
|
|
|
|
|
public function getLies($bedIds, $productItem, $factor, $month)
|
|
|
|
|
{
|
|
|
|
|
$list = [];
|
|
|
|
|
|
|
|
|
|
@ -534,13 +532,14 @@ class StatisticsController extends CommonController
|
|
|
|
|
// - '$[*].factor_item_id': JSON 路径表达式,匹配数组中所有元素的 factor_item_id 字段
|
|
|
|
|
$query->whereRaw("JSON_SEARCH(factors, 'one', ?, NULL, '$[*].factor_item_id') IS NOT NULL", [$factorItemId]);
|
|
|
|
|
|
|
|
|
|
$total = $query->sum('total');
|
|
|
|
|
// 使用真实订单子项数据:
|
|
|
|
|
// 1. 总收入:该列下所有子订单的 total 求和
|
|
|
|
|
// 2. 列表头价格:取该列下任意一条子订单的 total 作为真实单价
|
|
|
|
|
$totalQuery = clone $query;
|
|
|
|
|
$total = (float) $totalQuery->sum('total');
|
|
|
|
|
|
|
|
|
|
// 价格逻辑与下单保持一致(近似):
|
|
|
|
|
// 基础价 = 产品子项价格 + 最低护工级别加价
|
|
|
|
|
// 列对应的因子价 = 当前统计因子的价格
|
|
|
|
|
// 最终表头价格 = 基础价 + 当前因子价
|
|
|
|
|
$totalPrice = (float) $item->price + (float) $min_paramedic_price + (float) $factor_item->price;
|
|
|
|
|
$sampleItem = $query->first();
|
|
|
|
|
$totalPrice = $sampleItem ? (float) $sampleItem->total : 0;
|
|
|
|
|
|
|
|
|
|
$list[] = [
|
|
|
|
|
'name' => $totalPrice . '元/天',
|
|
|
|
|
|