feat: xscript相关调整

This commit is contained in:
caoqianming 2024-08-28 14:11:42 +08:00
parent 42cf64e9f7
commit 038e7f86cd
5 changed files with 29 additions and 18 deletions

View File

@ -7,6 +7,8 @@ from rest_framework.exceptions import ParseError
from django.core.cache import cache
from django.db import transaction
from django_celery_beat.models import PeriodicTask
from django_celery_results.models import TaskResult
from apps.system.serializers import PTaskResultSerializer
import json
from apps.utils.tools import CodeAnalyzer
@ -251,4 +253,7 @@ class XscriptDetailSerializer(XscriptSerializer):
last_run_data = serializers.SerializerMethodField()
def get_last_run_data(self, obj):
return {}
tr = TaskResult.objects.filter(task_kwargs__contains=obj.id).order_by('-date_done').first()
if tr:
return PTaskResultSerializer(instance=tr).data
return None

View File

@ -15,10 +15,18 @@ from server.settings import get_sysconfig
from apps.enm.models import EnStat
from django.db.models import Sum
from typing import Dict, Any
from decimal import Decimal
myLogger = logging.getLogger("log")
def db_insert_mplogx_batch(rows):
for row in rows:
_, tag_val, tag_code, tag_update = row
# if '散装' in tag_code or '袋装' in tag_code:
# myLogger.info(f"db_ins_mplogx tag_val: {tag_val} tag_code: {tag_code}-------{str(type(tag_val))}")
# mpoint = Mpoint.objects.get(code=tag_code)
# tag_val = float(tag_val)
# myLogger.info(f"db_ins_mpoint_id: {mpoint.id}-------db_ins_float_val: {tag_val}")
insert_mplogx_item(tag_code, tag_val, timezone.make_aware(tag_update), {})
def translate_eval_formula(exp_str: str, year: int, month: int, day: int, hour: int):
"""

View File

@ -25,10 +25,8 @@ from apps.enm.services import insert_mplogx_from_king_rest_chunk, MpointCache
from django.utils.timezone import localtime
from apps.wpm.tasks import get_total_sec_now, cal_exp_duration_sec
from apps.utils.sql import DbConnection
from apps.enm.services import insert_mplogx_item
from django.utils.timezone import make_aware
from apps.utils.thread import MyThread
from django.core.cache import cache
from apps.enm.services import db_insert_mplogx_batch
from apps.enm.xscript import main
myLogger = logging.getLogger("log")
@ -42,19 +40,9 @@ def insert_mplogx_from_xscript(xscript_id):
xscript = Xscript.objects.get(id=xscript_id)
mcodes_list = Mpoint.objects.filter(enabled=True).values_list('code', flat=True)
if mcodes_list:
exec(xscript.code)
main(xscript, mcodes_list)
def db_insert_mplogx_batch(rows):
for row in rows:
_, tag_val, tag_code, tag_update = row
# if '散装' in tag_code or '袋装' in tag_code:
# myLogger.info(f"db_ins_mplogx tag_val: {tag_val} tag_code: {tag_code}-------{str(type(tag_val))}")
# mpoint = Mpoint.objects.get(code=tag_code)
# tag_val = float(tag_val)
# myLogger.info(f"db_ins_mpoint_id: {mpoint.id}-------db_ins_float_val: {tag_val}")
insert_mplogx_item(tag_code, tag_val, make_aware(tag_update), {})
@shared_task(base=CustomTask)
def db_insert_mplogx(limit:bool=True):
"""

View File

@ -4,7 +4,7 @@ from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin, CustomListModelMixin
from apps.enm.serializers import (MpointSerializer, MpLogxSerializer, MpointStatSerializer,
EnStatSerializer, EnStat2Serializer, ReCalSerializer,
MpointStatCorrectSerializer, EnStatAnaSerializer, XscriptSerializer)
MpointStatCorrectSerializer, EnStatAnaSerializer, XscriptSerializer, XscriptDetailSerializer)
from apps.enm.filters import MpointStatFilter, EnStatFilter, EnStat2Filter
from apps.enm.tasks import cal_mpointstat_manual
from rest_framework.response import Response
@ -77,6 +77,7 @@ class XscriptViewSet(CustomModelViewSet):
queryset = Xscript.objects.all()
serializer_class = XscriptSerializer
select_related_fields = ["myschedule", "periodictask"]
retrieve_serializer_class = XscriptDetailSerializer
search_fields = ['name']
@action(methods=['put'], detail=True, perms_map={'put': 'xscript.update'})

9
apps/enm/xscript.py Normal file
View File

@ -0,0 +1,9 @@
from django.utils import timezone
from apps.utils.sql import DbConnection
from datetime import datetime, timedelta
from apps.enm.services import db_insert_mplogx_batch
import requests
def main(xscript, mcodes_list):
exec(xscript.code)