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