Commit 2a9d3c9e by liuyingkang

refactor(CovenantReceivePayment): 优化日期范围查询逻辑并添加日志记录

重构了日期范围查询条件,简化了逻辑并提高了可读性。同时,在关键步骤添加了日志记录以便于调试和追踪数据导出过程。
parent b0c2fb23
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
use App\Admin\Actions\CovenantReceivePaymentExcel; use App\Admin\Actions\CovenantReceivePaymentExcel;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
use App\Command\Log;
class CovenantReceivePaymentController extends AdminController class CovenantReceivePaymentController extends AdminController
{ {
...@@ -121,12 +122,12 @@ protected function grid() ...@@ -121,12 +122,12 @@ protected function grid()
$params['principal'] = request()->input('principal', ''); $params['principal'] = request()->input('principal', '');
$received_at = []; $received_at = [];
$received_at['start'] = request()->input('received_at.start') ? request()->input('received_at.start') . "-01" : ''; $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') . "-31" : ''; $received_at['end'] = request()->input('received_at.end') ? request()->input('received_at.end') : '';
$invoiced_at = []; $invoiced_at = [];
$invoiced_at['start'] = request()->input('invoiced_at.start') ? request()->input('invoiced_at.start') . "-01" : ''; $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') . "-31" : ''; $invoiced_at['end'] = request()->input('invoiced_at.end') ? request()->input('invoiced_at.end') : '';
// 导出按钮参数 // 导出按钮参数
$param = [ $param = [
...@@ -153,16 +154,18 @@ public function export(Request $request) ...@@ -153,16 +154,18 @@ public function export(Request $request)
{ {
$filename = $request->get('filename'); $filename = $request->get('filename');
$param = json_decode($request->get('param'), true); $param = json_decode($request->get('param'), true);
Log::add('debug2', '导出数据:'.json_encode($param));
//获取筛选参数 // 如果参数中没有时间,再从GET请求中获取
$received_at = $invoiced_at = []; if (empty($param['received_at']['start'])) {
$received_at['start'] = isset($_GET['received_at']['start']) && $_GET['received_at']['start'] ? $_GET['received_at']['start'] . "-01" : ''; $param['received_at']['start'] = isset($_GET['received_at']['start']) && $_GET['received_at']['start'] ? $_GET['received_at']['start'] : '';
$received_at['end'] = isset($_GET['received_at']['end']) && $_GET['received_at']['end'] ? $_GET['received_at']['end'] . "-31" : ''; $param['received_at']['end'] = isset($_GET['received_at']['end']) && $_GET['received_at']['end'] ? $_GET['received_at']['end'] : '';
$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" : '';
$param['received_at'] = $received_at; if (empty($param['invoiced_at']['start'])) {
$param['invoiced_at'] = $invoiced_at; $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()) { while (ob_get_level()) {
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
use Maatwebsite\Excel\Concerns\WithHeadings; use Maatwebsite\Excel\Concerns\WithHeadings;
use App\Models\CovenantReceivePayment as ModelsCovenantReceivePayment; use App\Models\CovenantReceivePayment as ModelsCovenantReceivePayment;
use App\Models\Covenant as ModelsCovenant; use App\Models\Covenant as ModelsCovenant;
use App\Command\Log;
class CovenantReceivePaymentExportExten implements FromCollection, WithHeadings class CovenantReceivePaymentExportExten implements FromCollection, WithHeadings
{ {
...@@ -62,6 +63,8 @@ public function getList($param) ...@@ -62,6 +63,8 @@ public function getList($param)
$received_at = $param['received_at'] ?? []; $received_at = $param['received_at'] ?? [];
$invoiced_at = $param['invoiced_at'] ?? []; $invoiced_at = $param['invoiced_at'] ?? [];
Log::add('debug3', '导出数据:'.json_encode($param));
// 构建基础SQL // 构建基础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, $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, SUM(CASE WHEN rp.rtype = 2 THEN rp.invoiced_money ELSE 0 END) as invoice_amount,
...@@ -85,21 +88,51 @@ public function getList($param) ...@@ -85,21 +88,51 @@ public function getList($param)
$sql .= " AND c.principal LIKE '%".$search['principal']."%'"; $sql .= " AND c.principal LIKE '%".$search['principal']."%'";
} }
// 日期筛选 // 处理日期范围查询条件
if (!empty($received_at)) { if ($invoiced_at['start'] && $received_at['start']) {
if (!empty($received_at['start'])) { $in_start = $invoiced_at['start'] ?? '';
$sql .= " AND rp.received_at >= '".$received_at['start']."'"; $in_end = $invoiced_at['end'] ?? '';
} $re_start = $received_at['start'] ?? '';
if (!empty($received_at['end'])) { $re_end = $received_at['end'] ?? '';
$sql .= " AND rp.received_at <= '".$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')";
}
}
} }
} } elseif ($invoiced_at['start'] && !$received_at['start']) {
if (!empty($invoiced_at)) { $start = $invoiced_at['start'] ?? '';
if (!empty($invoiced_at['start'])) { $end = $invoiced_at['end'] ?? '';
$sql .= " AND rp.invoiced_at >= '".$invoiced_at['start']."'";
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'])) { } elseif ($received_at['start'] && !$invoiced_at['start']) {
$sql .= " AND rp.invoiced_at <= '".$invoiced_at['end']."'"; $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) ...@@ -107,6 +140,8 @@ public function getList($param)
$records = DB::select($sql); $records = DB::select($sql);
Log::add('debug4', '导出数据:'.$sql);
// 计算合计 // 计算合计
$total_invoice_amount = 0; $total_invoice_amount = 0;
$total_receipt_money = 0; $total_receipt_money = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment