From c97045112a3926b6f0f586a72b97116728a4d56c Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 20 Aug 2021 10:29:11 +0800 Subject: [PATCH] =?UTF-8?q?state=20simple=20=E5=BA=8F=E5=88=97=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/wf/models.py | 19 +++++++++++++++++++ hb_server/apps/wf/serializers.py | 15 ++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/hb_server/apps/wf/models.py b/hb_server/apps/wf/models.py index 2dd66ee..16ec2eb 100644 --- a/hb_server/apps/wf/models.py +++ b/hb_server/apps/wf/models.py @@ -99,3 +99,22 @@ class CustomField(BaseModel): field_choice = models.JSONField('radio、checkbox、select的选项', default=dict, blank=True, help_text='radio,checkbox,select,multiselect类型可供选择的选项,格式为json如:{"1":"中国", "2":"美国"},注意数字也需要引号') label = models.JSONField('标签', blank=True, default=dict, help_text='自定义标签,json格式,调用方可根据标签自行处理特殊场景逻辑,loonflow只保存文本内容') + +class Ticket(CommonBModel): + """ + 工单 + """ + title = models.CharField('标题', max_length=500, blank=True, default='', help_text="工单标题") + workflow = models.ForeignKey(Workflow, on_delete=models.CASCADE, verbose_name='关联工作流') + sn = models.CharField('流水号', max_length=25, help_text="工单的流水号") + state = models.ForeignKey(State, on_delete=models.CASCADE, verbose_name='当前状态', related_name='ticket_state') + parent = models.ForeignKey('self', null=True, blank=True, on_delete=models.CASCADE, verbose_name='父工单') + parent_state = models.ForeignKey(State, null=True, blank=True, on_delete=models.CASCADE, verbose_name='父工单状态', related_name='ticket_parent_state') + formdata = models.JSONField('工单表单', default=dict, help_text='工单所有字段内容') + in_add_node = models.BooleanField('加签状态中', default=False, help_text='是否处于加签状态下') + add_node_man = models.CharField('加签人', max_length=50, default='', blank=True, help_text='加签操作的人,工单当前处理人处理完成后会回到该处理人,当处于加签状态下才有效') + +class TicketFlow(BaseModel): + """ + 工单流转日志 + """ diff --git a/hb_server/apps/wf/serializers.py b/hb_server/apps/wf/serializers.py index 3df6e29..77b5b2c 100644 --- a/hb_server/apps/wf/serializers.py +++ b/hb_server/apps/wf/serializers.py @@ -1,4 +1,4 @@ -from rest_framework.serializers import ModelSerializer +from rest_framework.serializers import ModelSerializer, SerializerMethodField, CharField from .models import State, Workflow, Transition, CustomField @@ -13,10 +13,23 @@ class StateSerializer(ModelSerializer): model = State fields = '__all__' +class StateSimpleSerializer(ModelSerializer): + class Meta: + model = State + fields = ['id', 'name'] + class TransitionSerializer(ModelSerializer): + source_state_ = StateSimpleSerializer(source='source_state', read_only=True) + destination_state_ = StateSimpleSerializer(source='destination_state', read_only=True) class Meta: model = Transition fields = '__all__' + @staticmethod + def setup_eager_loading(queryset): + """ Perform necessary eager loading of data. """ + queryset = queryset.select_related('source_state','destination_state') + return queryset + class CustomFieldSerializer(ModelSerializer): class Meta: