This commit is contained in:
Your Name
2026-08-06 10:57:35 +08:00
parent 2c0b9c5afa
commit 079e50006d
400 changed files with 3046 additions and 714 deletions
@@ -1068,7 +1068,9 @@ class ConversionLogic
->leftJoin('tcm_diagnosis dg', 'dg.id = po.diagnosis_id')
->whereNull('po.delete_time')
->where('po.payment_slip_audit_status', 1)
->where('po.create_time', 'between', [$startTimestamp, $endTimestamp])
->where('po.create_time', 'between', [$startTimestamp, $endTimestamp]);
YejiStatsLogic::applyPrescriptionOrderEffectiveAmountQuery($completedQuery, 'po');
$completedQuery
->fieldRaw("{$completedSourceExpr} AS source_admin_id, SUM(CASE WHEN po.prescription_audit_status = 1 THEN 1 ELSE 0 END) AS order_count, SUM(CASE WHEN po.prescription_audit_status = 1 THEN po.amount ELSE 0 END) AS total_amount")
->group($completedSourceExpr);
@@ -1104,7 +1106,7 @@ class ConversionLogic
->leftJoin('tcm_diagnosis dg', 'dg.id = po.diagnosis_id')
->whereNull('po.delete_time')
->where('po.create_time', 'between', [$startTimestamp, $endTimestamp]);
YejiStatsLogic::applyPrescriptionOrderNotCancelledForPerformanceQuery($businessQuery, 'po');
YejiStatsLogic::applyPrescriptionOrderEffectiveAmountQuery($businessQuery, 'po');
$businessQuery
->fieldRaw("{$businessSourceExpr} AS source_admin_id, SUM(po.amount) AS total_amount")
->group($businessSourceExpr);
@@ -433,7 +433,7 @@ class DoctorDailyStatsLogic
->join('tcm_prescription rx', 'rx.id = o.prescription_id AND rx.delete_time IS NULL', 'INNER')
->whereNull('o.delete_time')
->whereBetween('o.create_time', [$startTs, $endTs]);
YejiStatsLogic::applyPrescriptionOrderNotCancelledForPerformanceQuery($q, 'o');
YejiStatsLogic::applyPrescriptionOrderEffectiveAmountQuery($q, 'o');
$q->whereIn('rx.creator_id', $doctorIds)
->where('o.diagnosis_id', '>', 0);
@@ -3893,6 +3893,18 @@ class YejiStatsLogic
}
}
/**
* 有效金额统计:在业绩履约状态口径上,再排除任何已发生退款(含部分退款)的订单。
*
* @param \think\db\BaseQuery|\think\Model $query
*/
public static function applyPrescriptionOrderEffectiveAmountQuery($query, string $tableAlias = ''): void
{
self::applyPrescriptionOrderNotCancelledForPerformanceQuery($query, $tableAlias);
$refundField = $tableAlias !== '' ? "{$tableAlias}.refund_amount" : 'refund_amount';
$query->whereRaw("({$refundField} IS NULL OR {$refundField} <= 0)");
}
/**
* @param \think\db\BaseQuery|\think\Model $query
*/