Commit 2a9d3c9e by liuyingkang

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

重构了日期范围查询条件,简化了逻辑并提高了可读性。同时,在关键步骤添加了日志记录以便于调试和追踪数据导出过程。
parent b0c2fb23
......@@ -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()) {
......
......@@ -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;
......
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