def get_workflow_init_state(cls, workflow_id): """ 获取工作的初始状态信息,包括允许的transition :param workflow_id: :return: """ init_state_obj = State.objects.filter(workflow_id=workflow_id, is_deleted=False, type_id=CONSTANT_SERVICE.STATE_TYPE_START).first() if not init_state_obj: return False, '该工作流尚未配置初始状态' transition_queryset, msg = WorkflowTransitionService.get_state_transition_queryset(init_state_obj.id) transition_info_list = [] for transition in transition_queryset: transition_info_list.append(dict(transition_id=transition.id, transition_name=transition.name)) # 工单基础字段及属性 field_list = [] field_list.append(dict(field_key='title', field_name=u'标题', field_value=None, order_id=20, field_type_id=CONSTANT_SERVICE.FIELD_TYPE_STR, field_attribute=CONSTANT_SERVICE.FIELD_ATTRIBUTE_RO, description='工单的标题', field_choice={}, boolean_field_display={}, default_value=None, field_template='', label={})) custom_field_dict, msg = WorkflowCustomFieldService.get_workflow_custom_field(workflow_id) for key, value in custom_field_dict.items(): field_list.append(dict(field_key=key, field_name=custom_field_dict[key]['field_name'], field_value=None, order_id=custom_field_dict[key]['order_id'], field_type_id=custom_field_dict[key]['field_type_id'], field_attribute=CONSTANT_SERVICE.FIELD_ATTRIBUTE_RO, default_value=custom_field_dict[key]['default_value'], description=custom_field_dict[key]['description'], field_template=custom_field_dict[key]['field_template'], boolean_field_display=json.loads(custom_field_dict[key]['boolean_field_display']) if custom_field_dict[key]['boolean_field_display'] else {}, # 之前model允许为空了,为了兼容先这么写, field_choice=json.loads(custom_field_dict[key]['field_choice']), label=json.loads(custom_field_dict[key]['label']) )) state_field_dict = json.loads(init_state_obj.state_field_str) state_field_key_list = state_field_dict.keys() new_field_list = [] for field0 in field_list: if field0['field_key'] in state_field_key_list: field0['field_attribute'] = state_field_dict[field0['field_key']] new_field_list.append(field0) # 字段排序 new_field_list = sorted(new_field_list, key=lambda r: r['order_id']) state_info_dict = dict(id=init_state_obj.id, name=init_state_obj.name, workflow_id=init_state_obj.workflow_id, sub_workflow_id=init_state_obj.sub_workflow_id, distribute_type_id=init_state_obj.distribute_type_id, is_hidden=init_state_obj.is_hidden, order_id=init_state_obj.order_id, type_id=init_state_obj.type_id, participant_type_id=init_state_obj.participant_type_id, participant=init_state_obj.participant, field_list=new_field_list, label=json.loads(init_state_obj.label), creator=init_state_obj.creator, gmt_created=str(init_state_obj.gmt_created)[:19], transition=transition_info_list ) return state_info_dict, ''
def get_workflow_init_state(cls, workflow_id): """ 获取工作的初始状态信息,包括允许的transition :param workflow_id: :return: """ init_state_obj = State.objects.filter( workflow_id=workflow_id, is_deleted=False, type_id=CONSTANT_SERVICE.STATE_TYPE_START).first() if not init_state_obj: return False, '该工作流尚未配置初始状态' transition_queryset, msg = WorkflowTransitionService.get_state_transition_queryset( init_state_obj.id) transition_info_list = [] for transition in transition_queryset: transition_info_list.append( dict(transition_id=transition.id, transition_name=transition.name)) state_info_dict = dict( id=init_state_obj.id, name=init_state_obj.name, workflow_id=init_state_obj.workflow_id, sub_workflow_id=init_state_obj.sub_workflow_id, distribute_type_id=init_state_obj.distribute_type_id, is_hidden=init_state_obj.is_hidden, order_id=init_state_obj.order_id, type_id=init_state_obj.type_id, participant_type_id=init_state_obj.participant_type_id, participant=init_state_obj.participant, state_field=json.loads(init_state_obj.state_field_str), label=json.loads(init_state_obj.label), creator=init_state_obj.creator, gmt_created=str(init_state_obj.gmt_created)[:19], transition=transition_info_list) return state_info_dict, ''