diff --git a/apps/third/migrations/0004_auto_20220707_0957.py b/apps/third/migrations/0004_auto_20220707_0957.py new file mode 100644 index 00000000..f829b85e --- /dev/null +++ b/apps/third/migrations/0004_auto_20220707_0957.py @@ -0,0 +1,42 @@ +# Generated by Django 3.2.12 on 2022-07-07 01:57 + +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('hrm', '0003_employee_post'), + ('third', '0003_alter_tdevice_type'), + ] + + operations = [ + migrations.AlterField( + model_name='tdevice', + name='code', + field=models.CharField(db_index=True, max_length=50, unique=True, verbose_name='设备唯一标识'), + ), + migrations.AlterField( + model_name='tdevice', + name='employee', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='td_employee', to='hrm.employee', verbose_name='当前绑定人员'), + ), + migrations.CreateModel( + name='BltBind', + fields=[ + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), + ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), + ('type', models.PositiveSmallIntegerField(choices=[(10, '绑定'), (20, '解绑')], default=10, help_text='10(绑定)/20(解绑)', verbose_name='绑定类型')), + ('obj_cate', models.CharField(blank=True, help_text='people/...', max_length=20, null=True, verbose_name='绑定对象')), + ('blt', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='third.tdevice', verbose_name='关联标签')), + ('employee', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='hrm.employee', verbose_name='关联人员')), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/apps/vm/migrations/0002_visit_visitors.py b/apps/vm/migrations/0002_visit_visitors.py new file mode 100644 index 00000000..03ca8d76 --- /dev/null +++ b/apps/vm/migrations/0002_visit_visitors.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-07-07 01:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('vm', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='visit', + name='visitors', + field=models.ManyToManyField(related_name='v_visitors', through='vm.Vpeople', to='vm.Visitor'), + ), + ] diff --git a/apps/wf/migrations/0002_auto_20220707_0957.py b/apps/wf/migrations/0002_auto_20220707_0957.py new file mode 100644 index 00000000..11636c58 --- /dev/null +++ b/apps/wf/migrations/0002_auto_20220707_0957.py @@ -0,0 +1,35 @@ +# Generated by Django 3.2.12 on 2022-07-07 01:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('wf', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='state', + options={'verbose_name': '工作流节点', 'verbose_name_plural': '工作流节点'}, + ), + migrations.AlterModelOptions( + name='transition', + options={'verbose_name': '工作流流转', 'verbose_name_plural': '工作流流转'}, + ), + migrations.AlterModelOptions( + name='workflow', + options={'verbose_name': '工作流', 'verbose_name_plural': '工作流'}, + ), + migrations.AlterField( + model_name='state', + name='state_fields', + field=models.JSONField(blank=True, default=dict, help_text='json格式字典存储,包括读写属性1:只读,2:必填,3:可选, 4:隐藏 示例:{"create_time":1,"title":2, "sn":1}, 内置特殊字段participant_info.participant_name:当前处理人信息(部门名称、角色名称),state.state_name:当前状态的状态名,workflow.workflow_name:工作流名称', verbose_name='表单字段'), + ), + migrations.AlterField( + model_name='transition', + name='condition_expression', + field=models.JSONField(blank=True, default=list, help_text='流转条件表达式,根据表达式中的条件来确定流转的下个状态,格式为[{"expression":"{days} > 3 and {days}<10", "target_state":11}] 其中{}用于填充工单的字段key,运算时会换算成实际的值,当符合条件下个状态将变为target_state_id中的值,表达式只支持简单的运算或datetime/time运算.loonflow会以首次匹配成功的条件为准,所以多个条件不要有冲突', verbose_name='条件表达式'), + ), + ] diff --git a/apps/wf/models.py b/apps/wf/models.py index 4c2ac1e3..74dabb0d 100755 --- a/apps/wf/models.py +++ b/apps/wf/models.py @@ -99,7 +99,7 @@ class State(CommonAModel): help_text='可以为空(无处理人的情况,如结束状态)、userid、userid列表\部门id\角色id\变量(create_by,create_by_tl)\脚本记录的id等,包含子工作流的需要设置处理人为loonrobot') # json格式存储,包括读写属性1:只读,2:必填,3:可选,4:不显示, 字典的字典 state_fields = models.JSONField( - '表单字段', default=dict, help_text='json格式字典存储,包括读写属性1:只读,2:必填,3:可选, 4:隐藏 示例:{"create_time":1,"title":2, "sn":1}, 内置特殊字段participant_info.participant_name:当前处理人信息(部门名称、角色名称),state.state_name:当前状态的状态名,workflow.workflow_name:工作流名称') + '表单字段', blank=True, default=dict, help_text='json格式字典存储,包括读写属性1:只读,2:必填,3:可选, 4:隐藏 示例:{"create_time":1,"title":2, "sn":1}, 内置特殊字段participant_info.participant_name:当前处理人信息(部门名称、角色名称),state.state_name:当前状态的状态名,workflow.workflow_name:工作流名称') distribute_type = models.IntegerField('分配方式', default=1, choices=state_distribute_choices, help_text='1.主动接单(如果当前处理人实际为多人的时候,需要先接单才能处理) 2.直接处理(即使当前处理人实际为多人,也可以直接处理) 3.随机分配(如果实际为多人,则系统会随机分配给其中一个人) 4.全部处理(要求所有参与人都要处理一遍,才能进入下一步)') filter_policy = models.IntegerField('参与人过滤策略', default=0, choices=state_filter_choices) @@ -160,7 +160,7 @@ class Transition(CommonAModel): verbose_name='源状态', related_name='sstate_transition') destination_state = models.ForeignKey(State, on_delete=models.CASCADE, verbose_name='目的状态', related_name='dstate_transition') - condition_expression = models.JSONField('条件表达式', max_length=1000, default=list, + condition_expression = models.JSONField('条件表达式', default=list, blank=True, help_text='流转条件表达式,根据表达式中的条件来确定流转的下个状态,格式为[{"expression":"{days} > 3 and {days}<10", "target_state":11}] 其中{}用于填充工单的字段key,运算时会换算成实际的值,当符合条件下个状态将变为target_state_id中的值,表达式只支持简单的运算或datetime/time运算.loonflow会以首次匹配成功的条件为准,所以多个条件不要有冲突') attribute_type = models.IntegerField( '属性类型', default=1, choices=attribute_type_choices, help_text='属性类型,1.同意,2.拒绝,3.其他')