部分信息非必填项
This commit is contained in:
parent
2c993ce910
commit
b4a5bb2373
|
@ -31,12 +31,12 @@ class AreaViewSet(CustomModelViewSet):
|
||||||
third_info = obj.third_info
|
third_info = obj.third_info
|
||||||
if 'xx_rail' in third_info:
|
if 'xx_rail' in third_info:
|
||||||
data['id'] = third_info['xx_rail']['id']
|
data['id'] = third_info['xx_rail']['id']
|
||||||
_, res = xxClient.request(**xxapis['rail_update'], json=data)
|
_, res = xxClient.request(**xxapis['rail_update'], json={'rail': data})
|
||||||
third_info['xx_rail']['detail'] = data
|
third_info['xx_rail']['detail'] = data
|
||||||
obj.third_info = third_info
|
obj.third_info = third_info
|
||||||
obj.save()
|
obj.save()
|
||||||
else:
|
else:
|
||||||
_, res = xxClient.request(**xxapis['rail_create'], json=data)
|
_, res = xxClient.request(**xxapis['rail_create'], json={'rail': data})
|
||||||
rail_info = {'id': res, 'detail': data}
|
rail_info = {'id': res, 'detail': data}
|
||||||
third_info['xx_rail'] = rail_info
|
third_info['xx_rail'] = rail_info
|
||||||
obj.third_info = third_info
|
obj.third_info = third_info
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
# Generated by Django 3.2.12 on 2022-07-11 08:24
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('vm', '0003_visit_ticket'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='visitor',
|
||||||
|
name='id_number',
|
||||||
|
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='身份证号'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='visitor',
|
||||||
|
name='phone',
|
||||||
|
field=models.CharField(blank=True, max_length=11, null=True, verbose_name='手机号'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='visitor',
|
||||||
|
name='photo',
|
||||||
|
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='证件照'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -54,9 +54,9 @@ class Visitor(CommonAModel):
|
||||||
"""
|
"""
|
||||||
employee = models.ForeignKey(Employee, verbose_name='成员信息', on_delete=models.CASCADE, null=True, blank=True)
|
employee = models.ForeignKey(Employee, verbose_name='成员信息', on_delete=models.CASCADE, null=True, blank=True)
|
||||||
name = models.CharField('姓名', max_length=20)
|
name = models.CharField('姓名', max_length=20)
|
||||||
phone = models.CharField('手机号', max_length=11)
|
phone = models.CharField('手机号', max_length=11, null=True, blank=True)
|
||||||
photo = models.CharField('证件照', max_length=1000)
|
photo = models.CharField('证件照', max_length=1000, null=True, blank=True)
|
||||||
id_number = models.CharField('身份证号', max_length=100)
|
id_number = models.CharField('身份证号', max_length=100, null=True, blank=True)
|
||||||
visit = models.ForeignKey(Visit, verbose_name='最近所属访问项目', on_delete=models.CASCADE,
|
visit = models.ForeignKey(Visit, verbose_name='最近所属访问项目', on_delete=models.CASCADE,
|
||||||
null=True, blank=True)
|
null=True, blank=True)
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,8 @@ class VisitorCreateSerializer(CustomModelSerializer):
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
# 校验上传的证件照
|
# 校验上传的证件照
|
||||||
dhClient.request(**dhapis['person_img_upload'], file_path_rela=validated_data['photo'])
|
if validated_data['photo']:
|
||||||
|
dhClient.request(**dhapis['person_img_upload'], file_path_rela=validated_data['photo'])
|
||||||
return super().create(validated_data)
|
return super().create(validated_data)
|
||||||
|
|
||||||
|
|
||||||
|
@ -53,6 +54,12 @@ class VpeopleCreateSerializer(CustomModelSerializer):
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
if validated_data['visit'].state != Visit.V_CREATE:
|
if validated_data['visit'].state != Visit.V_CREATE:
|
||||||
raise ParseError('项目非创建状态不可新增成员')
|
raise ParseError('项目非创建状态不可新增成员')
|
||||||
|
if validated_data['visit'].level == 10:
|
||||||
|
visitor = validated_data['visitor']
|
||||||
|
if visitor.id_number and visitor.photo:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
raise ParseError('访客信息不全,请完善后再试')
|
||||||
ins = super().create(validated_data)
|
ins = super().create(validated_data)
|
||||||
if ins.is_main:
|
if ins.is_main:
|
||||||
Vpeople.objects.filter(visit=validated_data['visit']).exclude(id=ins.id).update(is_main=False)
|
Vpeople.objects.filter(visit=validated_data['visit']).exclude(id=ins.id).update(is_main=False)
|
||||||
|
|
|
@ -338,7 +338,7 @@ class WfService(object):
|
||||||
ticket.act_state = Ticket.TICKET_ACT_STATE_BACK
|
ticket.act_state = Ticket.TICKET_ACT_STATE_BACK
|
||||||
|
|
||||||
# 只更新必填和可选的字段
|
# 只更新必填和可选的字段
|
||||||
if not created:
|
if not created and transition.field_require_check:
|
||||||
for key, value in source_state.state_fields.items():
|
for key, value in source_state.state_fields.items():
|
||||||
if value in (State.STATE_FIELD_REQUIRED, State.STATE_FIELD_OPTIONAL):
|
if value in (State.STATE_FIELD_REQUIRED, State.STATE_FIELD_OPTIONAL):
|
||||||
if key in new_ticket_data:
|
if key in new_ticket_data:
|
||||||
|
@ -387,7 +387,7 @@ class WfService(object):
|
||||||
f = getattr(m, func)
|
f = getattr(m, func)
|
||||||
f(ticket=ticket) # 同步执行
|
f(ticket=ticket) # 同步执行
|
||||||
else:
|
else:
|
||||||
# wf默认发送通知
|
# wf默认只发送通知
|
||||||
last_log = TicketFlow.objects.filter(ticket=ticket).order_by('-create_time').first()
|
last_log = TicketFlow.objects.filter(ticket=ticket).order_by('-create_time').first()
|
||||||
if (last_log.state != state or
|
if (last_log.state != state or
|
||||||
last_log.intervene_type == Transition.TRANSITION_INTERVENE_TYPE_DELIVER or
|
last_log.intervene_type == Transition.TRANSITION_INTERVENE_TYPE_DELIVER or
|
||||||
|
|
|
@ -181,6 +181,8 @@ class TicketViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, R
|
||||||
save_ticket_data[key] = ticket_data[key]
|
save_ticket_data[key] = ticket_data[key]
|
||||||
elif int(value) == State.STATE_FIELD_OPTIONAL:
|
elif int(value) == State.STATE_FIELD_OPTIONAL:
|
||||||
save_ticket_data[key] = ticket_data[key]
|
save_ticket_data[key] = ticket_data[key]
|
||||||
|
else:
|
||||||
|
save_ticket_data = ticket_data
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
ticket = serializer.save(state=start_state,
|
ticket = serializer.save(state=start_state,
|
||||||
create_by=request.user,
|
create_by=request.user,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
celery==5.2.3
|
celery==5.2.3
|
||||||
Django==3.2.12
|
Django==3.2.12
|
||||||
django-celery-beat==2.2.1
|
django-celery-beat==2.2.1
|
||||||
django-celery-results==2.3.1
|
django-celery-results==2.4.0
|
||||||
django-cors-headers==3.11.0
|
django-cors-headers==3.11.0
|
||||||
django-filter==21.1
|
django-filter==21.1
|
||||||
djangorestframework==3.13.1
|
djangorestframework==3.13.1
|
||||||
|
|
Loading…
Reference in New Issue