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.core.cache import cache
from django.db import transaction from django.db import transaction
from django_celery_beat.models import PeriodicTask from django_celery_beat.models import PeriodicTask
from django_celery_results.models import TaskResult
from apps.system.serializers import PTaskResultSerializer
import json import json
from apps.utils.tools import CodeAnalyzer from apps.utils.tools import CodeAnalyzer
@ -251,4 +253,7 @@ class XscriptDetailSerializer(XscriptSerializer):
last_run_data = serializers.SerializerMethodField() last_run_data = serializers.SerializerMethodField()
def get_last_run_data(self, obj): 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 apps.enm.models import EnStat
from django.db.models import Sum from django.db.models import Sum
from typing import Dict, Any from typing import Dict, Any
from decimal import Decimal
myLogger = logging.getLogger("log") 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): 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 django.utils.timezone import localtime
from apps.wpm.tasks import get_total_sec_now, cal_exp_duration_sec from apps.wpm.tasks import get_total_sec_now, cal_exp_duration_sec
from apps.utils.sql import DbConnection from apps.utils.sql import DbConnection
from apps.enm.services import insert_mplogx_item from apps.enm.services import db_insert_mplogx_batch
from django.utils.timezone import make_aware from apps.enm.xscript import main
from apps.utils.thread import MyThread
from django.core.cache import cache
myLogger = logging.getLogger("log") myLogger = logging.getLogger("log")
@ -42,19 +40,9 @@ def insert_mplogx_from_xscript(xscript_id):
xscript = Xscript.objects.get(id=xscript_id) xscript = Xscript.objects.get(id=xscript_id)
mcodes_list = Mpoint.objects.filter(enabled=True).values_list('code', flat=True) mcodes_list = Mpoint.objects.filter(enabled=True).values_list('code', flat=True)
if mcodes_list: 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) @shared_task(base=CustomTask)
def db_insert_mplogx(limit:bool=True): 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.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin, CustomListModelMixin
from apps.enm.serializers import (MpointSerializer, MpLogxSerializer, MpointStatSerializer, from apps.enm.serializers import (MpointSerializer, MpLogxSerializer, MpointStatSerializer,
EnStatSerializer, EnStat2Serializer, ReCalSerializer, EnStatSerializer, EnStat2Serializer, ReCalSerializer,
MpointStatCorrectSerializer, EnStatAnaSerializer, XscriptSerializer) MpointStatCorrectSerializer, EnStatAnaSerializer, XscriptSerializer, XscriptDetailSerializer)
from apps.enm.filters import MpointStatFilter, EnStatFilter, EnStat2Filter from apps.enm.filters import MpointStatFilter, EnStatFilter, EnStat2Filter
from apps.enm.tasks import cal_mpointstat_manual from apps.enm.tasks import cal_mpointstat_manual
from rest_framework.response import Response from rest_framework.response import Response
@ -77,6 +77,7 @@ class XscriptViewSet(CustomModelViewSet):
queryset = Xscript.objects.all() queryset = Xscript.objects.all()
serializer_class = XscriptSerializer serializer_class = XscriptSerializer
select_related_fields = ["myschedule", "periodictask"] select_related_fields = ["myschedule", "periodictask"]
retrieve_serializer_class = XscriptDetailSerializer
search_fields = ['name'] search_fields = ['name']
@action(methods=['put'], detail=True, perms_map={'put': 'xscript.update'}) @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)