feat: enm/task view 修改校正测试 增加能修改 天和月的时间类型

This commit is contained in:
zty 2025-02-17 15:35:21 +08:00
parent 5ecb3341e0
commit 095a6f9d51
2 changed files with 88 additions and 52 deletions

View File

@ -424,53 +424,75 @@ def cal_mpointstat_manual(mpointId: str, sflogId: str, mgroupId: str, year: int,
手动录入的测点数据进行往上统计一级一级往上
"""
mpoint = Mpoint.objects.get(id=mpointId)
mgroup = Mgroup.objects.get(id=mgroupId)
if sflogId:
params_day_s = {"type": "day_s", "mpoint": mpoint, "year_s": year_s, "month_s": month_s, "day_s": day_s, "mgroup": mgroup}
ms_day_s, _ = MpointStat.safe_get_or_create(**params_day_s, defaults=params_day_s)
if ms_day_s.val_correct is not None:
ms_day_s.val = ms_day_s.val_correct
else:
sum_dict_day_s = MpointStat.objects.filter(type="sflog", mpoint=mpoint, year_s=year_s, month_s=month_s, day_s=day_s, mgroup=mgroup).aggregate(sum=Sum("val"))
ms_day_s.val = sum_dict_day_s['sum'] if sum_dict_day_s['sum'] is not None else 0
ms_day_s.val_origin = ms_day_s.val
ms_day_s.save()
mgroup = Mgroup.objects.filter(id=mgroupId).first()
if not mgroup:
if day:
params_month = {"type": "month", "mpoint": mpoint, "year": year, "month": month}
ms_month, _ = MpointStat.safe_get_or_create(**params_month, defaults=params_month)
if ms_month.val_correct is not None:
ms_month.val = ms_month.val_correct
else:
sum_dict_month = MpointStat.objects.filter(type="day", mpoint=mpoint, year=year, month=month).aggregate(sum=Sum("val"))
ms_month.val = sum_dict_month['sum'] if sum_dict_month['sum'] is not None else 0
ms_month.val_origin = ms_month.val
ms_month.save()
elif month:
params_year = {"type": "year", "mpoint": mpoint, "year": year}
ms_year, _ = MpointStat.safe_get_or_create(**params_year, defaults=params_year)
if ms_year.val_correct is not None:
ms_year.val = ms_year.val_correct
else:
sum_dict_year = MpointStat.objects.filter(type="month", mpoint=mpoint, year=year).aggregate(sum=Sum("val"))
ms_year.val = sum_dict_year['sum'] if sum_dict_year['sum'] is not None else 0
ms_year.val_origin = ms_year.val
ms_year.save()
else:
if sflogId:
params_day_s = {"type": "day_s", "mpoint": mpoint, "year_s": year_s, "month_s": month_s, "day_s": day_s, "mgroup": mgroup}
ms_day_s, _ = MpointStat.safe_get_or_create(**params_day_s, defaults=params_day_s)
if ms_day_s.val_correct is not None:
ms_day_s.val = ms_day_s.val_correct
else:
sum_dict_day_s = MpointStat.objects.filter(type="sflog", mpoint=mpoint, year_s=year_s, month_s=month_s, day_s=day_s, mgroup=mgroup).aggregate(sum=Sum("val"))
ms_day_s.val = sum_dict_day_s['sum'] if sum_dict_day_s['sum'] is not None else 0
ms_day_s.val_origin = ms_day_s.val
ms_day_s.save()
if day_s:
params_month_s = {"type": "month_s", "mpoint": mpoint, "year_s": year_s, "month_s": month_s, "mgroup": mgroup}
ms_month_s, _ = MpointStat.safe_get_or_create(**params_month_s, defaults=params_month_s)
if ms_month_s.val_correct is not None:
ms_month_s.val = ms_month_s.val_correct
else:
sum_dict_month_s = MpointStat.objects.filter(type="day_s", mpoint=mpoint, year_s=year_s, month_s=month_s, mgroup=mgroup).aggregate(sum=Sum("val"))
ms_month_s.val = sum_dict_month_s['sum'] if sum_dict_month_s['sum'] is not None else 0
ms_month_s.val_origin = ms_month_s.val
ms_month_s.save()
if month_s:
params_year_s = {"type": "year_s", "mpoint": mpoint, "year_s": year_s, "mgroup": mgroup}
ms_year_s, _ = MpointStat.safe_get_or_create(**params_year_s, defaults=params_year_s)
if ms_year_s.val_correct is not None:
ms_year_s.val = ms_year_s.val_correct
else:
sum_dict_year_s = MpointStat.objects.filter(type="month_s", mpoint=mpoint, year_s=year_s, mgroup=mgroup).aggregate(sum=Sum("val"))
ms_year_s.val = sum_dict_year_s['sum'] if sum_dict_year_s['sum'] is not None else 0
ms_year_s.val_origin = ms_year_s.val
ms_year_s.save()
if day_s:
params_month_s = {"type": "month_s", "mpoint": mpoint, "year_s": year_s, "month_s": month_s, "mgroup": mgroup}
ms_month_s, _ = MpointStat.safe_get_or_create(**params_month_s, defaults=params_month_s)
if ms_month_s.val_correct is not None:
ms_month_s.val = ms_month_s.val_correct
else:
sum_dict_month_s = MpointStat.objects.filter(type="day_s", mpoint=mpoint, year_s=year_s, month_s=month_s, mgroup=mgroup).aggregate(sum=Sum("val"))
ms_month_s.val = sum_dict_month_s['sum'] if sum_dict_month_s['sum'] is not None else 0
ms_month_s.val_origin = ms_month_s.val
ms_month_s.save()
if month_s:
params_year_s = {"type": "year_s", "mpoint": mpoint, "year_s": year_s, "mgroup": mgroup}
ms_year_s, _ = MpointStat.safe_get_or_create(**params_year_s, defaults=params_year_s)
if ms_year_s.val_correct is not None:
ms_year_s.val = ms_year_s.val_correct
else:
sum_dict_year_s = MpointStat.objects.filter(type="month_s", mpoint=mpoint, year_s=year_s, mgroup=mgroup).aggregate(sum=Sum("val"))
ms_year_s.val = sum_dict_year_s['sum'] if sum_dict_year_s['sum'] is not None else 0
ms_year_s.val_origin = ms_year_s.val
ms_year_s.save()
if next_cal: # 计算工段级数据,手动录入时调用
start_cal_type = 'hour_s'
if hour:
if next_cal: # 计算工段级数据,手动录入时调用
start_cal_type = 'hour_s'
elif sflogId:
start_cal_type = 'sflog'
elif day_s:
start_cal_type = 'day_s'
elif month_s:
start_cal_type = 'month_s'
elif year_s:
start_cal_type = 'year_s'
cal_enstat(start_cal_type, sflogId, mgroupId, year, month, day, hour, year_s, month_s, day_s)
if hour:
start_cal_type = 'hour_s'
elif sflogId:
start_cal_type = 'sflog'
elif day_s:
start_cal_type = 'day_s'
elif month_s:
start_cal_type = 'month_s'
elif year_s:
start_cal_type = 'year_s'
cal_enstat(start_cal_type, sflogId, mgroupId, year, month, day, hour, year_s, month_s, day_s)

View File

@ -193,12 +193,22 @@ class MpointStatViewSet(BulkCreateModelMixin, BulkDestroyModelMixin, CustomListM
instance: MpointStat = self.get_object()
sr = MpointStatCorrectSerializer(data=request.data)
sr.is_valid(raise_exception=True)
last_record = MpointStat.objects.filter(mpoint=instance.mpoint,
type=instance.type,
mgroup=instance.mgroup,
year_s=instance.year_s,
month_s=instance.month_s,
).order_by(instance.type).values("id").last()
last_record = None
if instance.type in ['month_s', 'month']:
last_record = MpointStat.objects.filter(mpoint=instance.mpoint,
type=instance.type,
mgroup=instance.mgroup,
year_s=instance.year_s,
year = instance.year
).order_by(instance.type).values("id").last()
elif instance.type in ['day_s', 'day']:
last_record = MpointStat.objects.filter(mpoint=instance.mpoint,
type=instance.type,
year = instance.year,
year_s=instance.year_s,
month_s=instance.month_s,
month = instance.month
).order_by(instance.type).values("id").last()
last_id = last_record["id"] if last_record else None
if str(last_id) == str(instance_id):
raise ParseError("不能修正当日或当月数据")
@ -208,13 +218,17 @@ class MpointStatViewSet(BulkCreateModelMixin, BulkDestroyModelMixin, CustomListM
instance.val = val_correct
instance.update_by = request.user
instance.save()
mpoint, sflog, mgroup, year_s, month_s, day_s = instance.mpoint, instance.sflog, instance.mgroup, instance.year_s, instance.month_s, instance.day_s
mpoint, sflog, mgroup, year_s, month_s, day_s, year, month, day = instance.mpoint, instance.sflog, instance.mgroup, instance.year_s, instance.month_s, instance.day_s, instance.year, instance.month, instance.day
# sflog 可能为None
if sflog is None:
sflogId = None
else:
sflogId = sflog.id
cal_mpointstat_manual.delay(mpoint.id, sflogId, mgroup.id, None, None, None, None, year_s, month_s, day_s, next_cal=1)
if mgroup is None:
mgroupId = None
else:
mgroupId = mgroup.id
cal_mpointstat_manual.delay(mpoint.id, sflogId, mgroupId, year, month, day, None, year_s, month_s, day_s, next_cal=1)
return Response()
@action(methods=["post"], detail=False, perms_map={"post": "mpointstat.correct"}, serializer_class=ReCalSerializer)