AlexP077 3 years ago
parent 6de29d039f
commit b2961ba766

@ -136,11 +136,12 @@ class PointService:
origin = point.geometry origin = point.geometry
qs = models.PlacementPoint.objects.filter(status=PointStatus.Working.name).annotate( qs = models.PlacementPoint.objects.filter(status=PointStatus.Working.name).annotate(
dist=Dist('geometry', origin)).order_by('dist') dist=Dist('geometry', origin)).order_by('dist')
point.target_dist = qs[0].dist.m if qs:
point.target_post_cnt = qs.filter( point.target_dist = qs[0].dist.m
dist__lt=Distance(m=DEFAULT_PLACEMENT_POINT_UPDATE_RADIUS) point.target_post_cnt = qs.filter(
).count() dist__lt=Distance(m=DEFAULT_PLACEMENT_POINT_UPDATE_RADIUS)
point.target_cnt_ao_mean = qs[0].target_cnt_ao_mean ).count()
point.target_cnt_ao_mean = qs[0].target_cnt_ao_mean
point.rival_post_cnt = models.Post_and_pvz.objects.filter( point.rival_post_cnt = models.Post_and_pvz.objects.filter(
category__name="Постамат", include_in_ml=True, category__name="Постамат", include_in_ml=True,
wkt__distance_lt=(origin, Distance(m=DEFAULT_PLACEMENT_POINT_UPDATE_RADIUS))).count() wkt__distance_lt=(origin, Distance(m=DEFAULT_PLACEMENT_POINT_UPDATE_RADIUS))).count()
@ -232,8 +233,10 @@ class PointService:
param1__sum=Sum('param1'))['param1__sum'] param1__sum=Sum('param1'))['param1__sum']
point.age_day = AGE_DAY_LIMIT point.age_day = AGE_DAY_LIMIT
placement_point = models.PlacementPoint.objects.annotate( placement_point = models.PlacementPoint.objects.annotate(
dist=Dist('geometry', origin)).order_by('dist')[0] dist=Dist('geometry', origin)).order_by('dist')
point.target_cnt_ao_mean = placement_point.target_cnt_ao_mean if placement_point:
placement_point = placement_point[0]
point.target_cnt_ao_mean = placement_point.target_cnt_ao_mean
point.save() point.save()
for group in groups: for group in groups:
self.calculate_dist_for_group(point, group, instance_type=models.PrePlacementPointPVZDistance) self.calculate_dist_for_group(point, group, instance_type=models.PrePlacementPointPVZDistance)
@ -302,7 +305,7 @@ class PointService:
data = pd.DataFrame(serializer.data) data = pd.DataFrame(serializer.data)
if not data.empty: if not data.empty:
if data['start_date'].any(): if data['start_date'].any():
data['start_date'] = data.get('start_date').dt.tz_localize(None) data['start_date'] = data['start_date'].apply(lambda x : pd.to_datetime(x).tz_localize(None) if x else None)
if data['sample_trn'].any(): if data['sample_trn'].any():
data['sample_trn'] = data['sample_trn'].astype(int) data['sample_trn'] = data['sample_trn'].astype(int)
data.rename(columns={'district_id': 'district', 'area_id': 'area'}, inplace=True) data.rename(columns={'district_id': 'district', 'area_id': 'area'}, inplace=True)

@ -410,8 +410,12 @@ class PrePlacementPointViewSet(PlacementPointViewSet):
@action(detail=False, methods=['delete']) @action(detail=False, methods=['delete'])
def delete_points(self, request): def delete_points(self, request):
ids = request.POST['ids'].split(',') ids = request.POST.get('ids')
PointService.delete_preplacement_points(ids) if ids:
ids = ids.split(',')
PointService.delete_preplacement_points(ids)
else:
models.PrePlacementPoint.objects.all().delete()
return Response(status=HTTPStatus.OK, ) return Response(status=HTTPStatus.OK, )
@action(detail=False, methods=['get']) @action(detail=False, methods=['get'])

Loading…
Cancel
Save