feat: 修改光芯OA审批的BUG与新增导出功能

This commit is contained in:
TianyangZhang 2026-03-23 09:50:20 +08:00
parent c5e545f5e5
commit 6d43b412b7
5 changed files with 60 additions and 0 deletions

View File

@ -388,6 +388,8 @@ class TransferSerializer(CustomModelSerializer):
belong_dept_name = serializers.CharField(source='employee.belong_dept.name', read_only=True)
new_post_name = serializers.CharField(source="new_post.name", read_only=True)
original_post_name = serializers.CharField(source="original_post.name", read_only=True)
new_dept_name = serializers.CharField(source="new_dept.name", read_only=True)
original_dept_name = serializers.CharField(source="original_dept.name", read_only=True)
class Meta:
model = EmployeeTransfer
fields = '__all__'

View File

@ -0,0 +1,16 @@
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ofm', '0005_alter_vehicleuse_end_km'),
]
operations = [
migrations.AddField(
model_name='publicity',
name='final_file',
field=models.CharField(blank=True, max_length=200, null=True, verbose_name='终版文件路径'),
),
]

View File

@ -0,0 +1,16 @@
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ofm', '0006_publicity_final_file'),
]
operations = [
migrations.AddField(
model_name='lendingseal',
name='final_file',
field=models.CharField(blank=True, max_length=200, null=True, verbose_name='终版文件路径'),
),
]

View File

@ -101,6 +101,7 @@ class LendingSeal(CommonBDModel):
return_date = models.DateField('拟归还日期', blank=True, null=True)
actual_return_date = models.DateField('实际归还日期', blank=True, null=True)
reason = models.CharField('借用理由', max_length=100, blank=True, null=True)
final_file = models.CharField('终版文件路径', max_length=200, null=True, blank=True)
ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
on_delete=models.SET_NULL, related_name='seal_ticket', null=True, blank=True, db_constraint=False)
note = models.TextField('备注', null=True, blank=True)
@ -151,6 +152,7 @@ class Publicity(CommonBDModel):
secret_period = models.CharField('秘密期限', max_length=50, blank=True, null=True)
dept_opinion_review = models.CharField('部门审查意见', max_length=100, blank=True, null=True)
publicity_opinion = models.CharField('宣传报道意见', max_length=100, blank=True, null=True)
final_file = models.CharField('终版文件路径', max_length=200, null=True, blank=True)
ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
on_delete=models.SET_NULL, related_name='publicity_ticket', null=True, blank=True, db_constraint=False)

View File

@ -464,6 +464,30 @@ class WfService(object):
cls.task_ticket(ticket=ticket)
# 自动跳过连续相同审批人:如果下一个节点的处理人与当前处理人相同,自动执行同意操作
if (handler is not None
and destination_state.type not in (State.STATE_TYPE_START, State.STATE_TYPE_END)
and transition.attribute_type == Transition.TRANSITION_ATTRIBUTE_TYPE_ACCEPT
and destination_participant_type == State.PARTICIPANT_TYPE_PERSONAL
and str(destination_participant) == str(handler.id)):
# 查找下一个状态的"同意"流转
next_transition = Transition.objects.filter(
is_deleted=False,
source_state=destination_state,
attribute_type=Transition.TRANSITION_ATTRIBUTE_TYPE_ACCEPT
).first()
if next_transition:
import logging
logger = logging.getLogger(__name__)
logger.info(f'工单{ticket.sn}: 连续节点审批人相同({handler.username}),自动跳过节点[{destination_state.name}]')
ticket = cls.handle_ticket(
ticket=ticket,
transition=next_transition,
new_ticket_data=ticket.ticket_data,
handler=handler,
suggestion='(系统自动审批:与上一节点审批人相同)',
)
return ticket
@classmethod