优化案件模块

This commit is contained in:
27942
2026-01-20 16:42:37 +08:00
parent 34f9961d82
commit e20aafa5fc
2 changed files with 82 additions and 5 deletions

View File

@@ -0,0 +1,68 @@
# Generated by Django 4.2.25 on 2026-01-20 08:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('finance', '0003_invoice_approvers_order'),
]
operations = [
migrations.AddField(
model_name='payment',
name='payee_account',
field=models.CharField(blank=True, max_length=100, null=True),
),
migrations.AddField(
model_name='payment',
name='payee_bank',
field=models.CharField(blank=True, max_length=100, null=True),
),
migrations.AddField(
model_name='payment',
name='payee_name',
field=models.CharField(blank=True, max_length=100, null=True),
),
migrations.AddField(
model_name='payment',
name='payment_description',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='payment',
name='payment_reason',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='payment',
name='payment_type',
field=models.CharField(blank=True, default='律所支付', max_length=50, null=True),
),
migrations.AlterField(
model_name='payment',
name='BankName',
field=models.CharField(blank=True, max_length=100, null=True),
),
migrations.AlterField(
model_name='payment',
name='bankcard',
field=models.CharField(blank=True, max_length=100, null=True),
),
migrations.AlterField(
model_name='payment',
name='payee',
field=models.CharField(blank=True, max_length=100, null=True),
),
migrations.AlterField(
model_name='payment',
name='reason',
field=models.TextField(blank=True, null=True),
),
migrations.AlterField(
model_name='payment',
name='times',
field=models.CharField(blank=True, max_length=100, null=True),
),
]

View File

@@ -2181,12 +2181,16 @@ class PaymentDisplay(APIView):
Q_obj &= Q(submit_tiem__gte=times) & Q(submit_tiem__lte=end_time)
if payee_name:
# 兼容旧字段
Q_obj &= (Q(payee_name__icontains=payee_name) | Q(payee__icontains=payee_name))
Q_obj &= Q(payee__icontains=payee_name)
if applicant:
Q_obj &= Q(applicant__icontains=applicant)
pay = Payment.objects.filter(Q_obj).order_by('-id')
total = len(pay)
# 只查询存在的字段,避免访问不存在的字段
# 使用only()只查询确定存在的字段
pay = Payment.objects.filter(Q_obj).only(
'id', 'applicant', 'amount', 'state', 'submit_tiem', 'payee'
).order_by('-id')
total = pay.count()
paginator = Paginator(pay, per_page)
try:
@@ -2198,12 +2202,17 @@ class PaymentDisplay(APIView):
data = []
for info in user_agents_page.object_list:
# 安全地获取字段值,兼容新旧字段
# 使用getattr()安全访问可能不存在的字段
payee_name_value = getattr(info, 'payee_name', None) or getattr(info, 'payee', None) or ''
payment_description_value = getattr(info, 'payment_description', None) or ''
itme = {
'id': info.id,
"applicant": info.applicant, # 申请人
"payee_name": info.payee_name or info.payee, # 收款单位(收款方名称)
"payee_name": payee_name_value, # 收款单位(收款方名称)
"amount": info.amount, # 付款金额
"payment_description": info.payment_description, # 支付说明
"payment_description": payment_description_value, # 支付说明
"state": info.state, # 状态
"submit_tiem": info.submit_tiem, # 提交时间
}