From 2a9d3c9e290d989e16148a2b6ae743537ef67a72 Mon Sep 17 00:00:00 2001 From: liuyingkang <liuyingkang@163.com> Date: Thu, 24 Apr 2025 10:02:35 +0800 Subject: [PATCH] refactor(CovenantReceivePayment): 优化日期范围查询逻辑并添加日志记录 重构了日期范围查询条件,简化了逻辑并提高了可读性。同时,在关键步骤添加了日志记录以便于调试和追踪数据导出过程。 --- app/Admin/Controllers/CovenantReceivePaymentController.php | 27 +++++++++++++++------------ app/Admin/Extensions/CovenantReceivePaymentExportExten.php | 61 ++++++++++++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 63 insertions(+), 25 deletions(-) diff --git a/app/Admin/Controllers/CovenantReceivePaymentController.php b/app/Admin/Controllers/CovenantReceivePaymentController.php index 61de25f..13ab02d 100644 --- a/app/Admin/Controllers/CovenantReceivePaymentController.php +++ b/app/Admin/Controllers/CovenantReceivePaymentController.php @@ -15,6 +15,7 @@ use App\Admin\Actions\CovenantReceivePaymentExcel; use Illuminate\Http\Request; use Maatwebsite\Excel\Facades\Excel; +use App\Command\Log; class CovenantReceivePaymentController extends AdminController { @@ -121,12 +122,12 @@ protected function grid() $params['principal'] = request()->input('principal', ''); $received_at = []; - $received_at['start'] = request()->input('received_at.start') ? request()->input('received_at.start') . "-01" : ''; - $received_at['end'] = request()->input('received_at.end') ? request()->input('received_at.end') . "-31" : ''; + $received_at['start'] = request()->input('received_at.start') ? request()->input('received_at.start') : ''; + $received_at['end'] = request()->input('received_at.end') ? request()->input('received_at.end') : ''; $invoiced_at = []; - $invoiced_at['start'] = request()->input('invoiced_at.start') ? request()->input('invoiced_at.start') . "-01" : ''; - $invoiced_at['end'] = request()->input('invoiced_at.end') ? request()->input('invoiced_at.end') . "-31" : ''; + $invoiced_at['start'] = request()->input('invoiced_at.start') ? request()->input('invoiced_at.start') : ''; + $invoiced_at['end'] = request()->input('invoiced_at.end') ? request()->input('invoiced_at.end') : ''; // 导出按钮参数 $param = [ @@ -153,16 +154,18 @@ public function export(Request $request) { $filename = $request->get('filename'); $param = json_decode($request->get('param'), true); + Log::add('debug2', '导出数据:'.json_encode($param)); - //获取筛选参数 - $received_at = $invoiced_at = []; - $received_at['start'] = isset($_GET['received_at']['start']) && $_GET['received_at']['start'] ? $_GET['received_at']['start'] . "-01" : ''; - $received_at['end'] = isset($_GET['received_at']['end']) && $_GET['received_at']['end'] ? $_GET['received_at']['end'] . "-31" : ''; - $invoiced_at['start'] = isset($_GET['invoiced_at']['start']) && $_GET['invoiced_at']['start'] ? $_GET['invoiced_at']['start'] . "-01" : ''; - $invoiced_at['end'] = isset($_GET['invoiced_at']['end']) && $_GET['invoiced_at']['end'] ? $_GET['invoiced_at']['end'] . "-31" : ''; + // 如果参数中没有时间,再从GET请求中获取 + if (empty($param['received_at']['start'])) { + $param['received_at']['start'] = isset($_GET['received_at']['start']) && $_GET['received_at']['start'] ? $_GET['received_at']['start'] : ''; + $param['received_at']['end'] = isset($_GET['received_at']['end']) && $_GET['received_at']['end'] ? $_GET['received_at']['end'] : ''; + } - $param['received_at'] = $received_at; - $param['invoiced_at'] = $invoiced_at; + if (empty($param['invoiced_at']['start'])) { + $param['invoiced_at']['start'] = isset($_GET['invoiced_at']['start']) && $_GET['invoiced_at']['start'] ? $_GET['invoiced_at']['start'] : ''; + $param['invoiced_at']['end'] = isset($_GET['invoiced_at']['end']) && $_GET['invoiced_at']['end'] ? $_GET['invoiced_at']['end'] : ''; + } // 检查是否有输出缓冲区 while (ob_get_level()) { diff --git a/app/Admin/Extensions/CovenantReceivePaymentExportExten.php b/app/Admin/Extensions/CovenantReceivePaymentExportExten.php index a073811..78749ba 100644 --- a/app/Admin/Extensions/CovenantReceivePaymentExportExten.php +++ b/app/Admin/Extensions/CovenantReceivePaymentExportExten.php @@ -7,6 +7,7 @@ use Maatwebsite\Excel\Concerns\WithHeadings; use App\Models\CovenantReceivePayment as ModelsCovenantReceivePayment; use App\Models\Covenant as ModelsCovenant; +use App\Command\Log; class CovenantReceivePaymentExportExten implements FromCollection, WithHeadings { @@ -62,6 +63,8 @@ public function getList($param) $received_at = $param['received_at'] ?? []; $invoiced_at = $param['invoiced_at'] ?? []; + Log::add('debug3', '导出数据:'.json_encode($param)); + // 构建基础SQL $sql = "SELECT rp.cid, c.cname as covenant_name, c.ctype as covenant_type, c.number as covenant_num, c.principal, l.name as lname, SUM(CASE WHEN rp.rtype = 2 THEN rp.invoiced_money ELSE 0 END) as invoice_amount, @@ -85,21 +88,51 @@ public function getList($param) $sql .= " AND c.principal LIKE '%".$search['principal']."%'"; } - // 日期筛选 - if (!empty($received_at)) { - if (!empty($received_at['start'])) { - $sql .= " AND rp.received_at >= '".$received_at['start']."'"; - } - if (!empty($received_at['end'])) { - $sql .= " AND rp.received_at <= '".$received_at['end']."'"; + // 处理日期范围查询条件 + if ($invoiced_at['start'] && $received_at['start']) { + $in_start = $invoiced_at['start'] ?? ''; + $in_end = $invoiced_at['end'] ?? ''; + $re_start = $received_at['start'] ?? ''; + $re_end = $received_at['end'] ?? ''; + + if ($in_start && $re_start) { + if ($in_end && $re_end) { + $sql .= " AND (rp.received_at BETWEEN '$re_start' AND '$re_end 23:59:59' + OR rp.invoiced_at BETWEEN '$in_start' AND '$in_end 23:59:59')"; + } else { + if ($in_end) { + $sql .= " AND (rp.received_at >= '$re_start' + OR rp.invoiced_at BETWEEN '$in_start' AND '$in_end 23:59:59')"; + } elseif ($re_end) { + $sql .= " AND (rp.invoiced_at >= '$in_start' + OR rp.received_at BETWEEN '$re_start' AND '$re_end 23:59:59')"; + } else { + $sql .= " AND (rp.invoiced_at >= '$in_start' + OR rp.received_at >= '$re_start')"; + } + } } - } - if (!empty($invoiced_at)) { - if (!empty($invoiced_at['start'])) { - $sql .= " AND rp.invoiced_at >= '".$invoiced_at['start']."'"; + } elseif ($invoiced_at['start'] && !$received_at['start']) { + $start = $invoiced_at['start'] ?? ''; + $end = $invoiced_at['end'] ?? ''; + + if ($start) { + if ($end) { + $sql .= " AND rp.received_at BETWEEN '$start' AND '$end 23:59:59'"; + } else { + $sql .= " AND rp.received_at >= '$start'"; + } } - if (!empty($invoiced_at['end'])) { - $sql .= " AND rp.invoiced_at <= '".$invoiced_at['end']."'"; + } elseif ($received_at['start'] && !$invoiced_at['start']) { + $start = $received_at['start'] ?? ''; + $end = $received_at['end'] ?? ''; + + if ($start) { + if ($end) { + $sql .= " AND rp.received_at BETWEEN '$start' AND '$end 23:59:59'"; + } else { + $sql .= " AND rp.received_at >= '$start'"; + } } } @@ -107,6 +140,8 @@ public function getList($param) $records = DB::select($sql); + Log::add('debug4', '导出数据:'.$sql); + // 计算合计 $total_invoice_amount = 0; $total_receipt_money = 0; -- libgit2 0.26.0