初始化子任务方法

This commit is contained in:
caoqianming 2021-04-12 15:45:24 +08:00
parent 467c6df196
commit 1fe6226582
3 changed files with 52 additions and 2 deletions

View File

@ -85,7 +85,8 @@ class InspectRecord(CommonAModel):
dept = models.ForeignKey(Organization, on_delete=models.CASCADE, verbose_name='受检查单位') dept = models.ForeignKey(Organization, on_delete=models.CASCADE, verbose_name='受检查单位')
result = models.CharField('检查结果', max_length=50, choices=result_choices, null=True, blank=True) result = models.CharField('检查结果', max_length=50, choices=result_choices, null=True, blank=True)
note = models.TextField('检查说明', null=True, blank=True) note = models.TextField('检查说明', null=True, blank=True)
subtask = models.ForeignKey(SubInspectTask, on_delete=models.CASCADE, verbose_name='关联子任务')
class Meta: class Meta:
verbose_name = '巡查记录' verbose_name = '巡查记录'
verbose_name_plural = verbose_name verbose_name_plural = verbose_name

View File

@ -30,3 +30,9 @@ class InspectTaskSerializer(serializers.ModelSerializer):
def get_subtask_count(self, obj): def get_subtask_count(self, obj):
return SubInspectTask.objects.filter(inspecttask=obj, is_deleted=True).count() 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__'

View File

@ -47,4 +47,47 @@ class SubtaskViewSet(ModelViewSet):
perms_map = {'get': '*', 'post': 'inspecttask_create', perms_map = {'get': '*', 'post': 'inspecttask_create',
'put': 'inspecttask_update', 'delete': 'inspecttask_delete'} 'put': 'inspecttask_update', 'delete': 'inspecttask_delete'}
queryset = SubInspectTask.objects.all() queryset = SubInspectTask.objects.all()
ordering = ['create_time'] 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)