初始化子任务方法
This commit is contained in:
parent
467c6df196
commit
1fe6226582
|
|
@ -85,6 +85,7 @@ class InspectRecord(CommonAModel):
|
|||
dept = models.ForeignKey(Organization, on_delete=models.CASCADE, verbose_name='受检查单位')
|
||||
result = models.CharField('检查结果', max_length=50, choices=result_choices, null=True, blank=True)
|
||||
note = models.TextField('检查说明', null=True, blank=True)
|
||||
subtask = models.ForeignKey(SubInspectTask, on_delete=models.CASCADE, verbose_name='关联子任务')
|
||||
|
||||
class Meta:
|
||||
verbose_name = '巡查记录'
|
||||
|
|
|
|||
|
|
@ -30,3 +30,9 @@ class InspectTaskSerializer(serializers.ModelSerializer):
|
|||
def get_subtask_count(self, obj):
|
||||
return SubInspectTask.objects.filter(inspecttask=obj, is_deleted=True).count()
|
||||
|
||||
class SubtaskListSerializer(serializers.ModelSerializer):
|
||||
leader_ = UserSimpleSerializer(source='leader', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = SubInspectTask
|
||||
fields = '__all__'
|
||||
|
|
@ -47,4 +47,47 @@ class SubtaskViewSet(ModelViewSet):
|
|||
perms_map = {'get': '*', 'post': 'inspecttask_create',
|
||||
'put': 'inspecttask_update', 'delete': 'inspecttask_delete'}
|
||||
queryset = SubInspectTask.objects.all()
|
||||
serializer_class = SubtaskListSerializer
|
||||
ordering = ['create_time']
|
||||
|
||||
def destroy(self, request, *args, **kwargs):
|
||||
instance = self.get_object()
|
||||
instance.delete(soft=False)
|
||||
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
obj = SubInspectTask()
|
||||
obj.inspecttask = InspectTask.objects.get(pk=request.data['inspecttask'])
|
||||
obj.name = request.data['name']
|
||||
obj.leader = User.objects.get(pk=request.data['leader'])
|
||||
obj.save()
|
||||
InspectTeam.objects.create(member=User.objects.get(pk=request.data['leader']), type='组长', subtask=obj)
|
||||
if request.data.get('members', False) and request.data.get('depts', False):
|
||||
members = []
|
||||
depts = []
|
||||
records = []
|
||||
for dept in request.data['depts']:
|
||||
mdept = Organization.objects.get(pk=dept)
|
||||
if not InspectRecord.objects.filter(dept=mdept, subtask=obj).exists():
|
||||
data = {}
|
||||
data['dept'] = mdept
|
||||
data['subtask'] = obj
|
||||
depts.append(InspectDept(**data))
|
||||
for i in InspectItem.objects.filter(is_deleted=False):
|
||||
r = {}
|
||||
r['dept'] = mdept
|
||||
r['item'] = i
|
||||
r['subtask'] = obj
|
||||
records.append(InspectRecord(**r))
|
||||
for member in request.data['members']:
|
||||
mmember = User.objects.get(pk=member)
|
||||
if not InspectTeam.objects.filter(member=mdept, subtask=obj).exists():
|
||||
data = {}
|
||||
data['member'] = mmember
|
||||
data['subtask'] = obj
|
||||
members.append(InspectTeam(**data))
|
||||
InspectTeam.objects.bulk_create(members)
|
||||
InspectDept.objects.bulk_create(depts)
|
||||
InspectRecord.objects.bulk_create(records)
|
||||
return Response(status=status.HTTP_201_CREATED)
|
||||
return Response('组织和成员不能为空', status=status.HTTP_400_BAD_REQUEST)
|
||||
|
|
|
|||
Loading…
Reference in New Issue