暂无描述

antigen_views.py 4.2KB

    # -*- coding: utf-8 -*- from __future__ import division import datetime from django.conf import settings from django.db.models import Q from django_logit import logit from django_response import response from TimeConvert import TimeConvert as tc from account.models import UserInfo from equipment.models import AntigenMeasureLogInfo, IsolationPointUserInfo, IsolationPointInfo from utils.error.errno_utils import IsolationPointStatusCode @logit(body=True) def upload_antigen(request): unionid = request.POST.get('unionid', '') macid = request.POST.get('macid', '') device_id = request.POST.get('device_id', '') sn = request.POST.get('sn', '') user_name = request.POST.get('user_name', '') phone = request.POST.get('phone', 1) result = request.POST.get('result', 2) detect_at = request.POST.get('detect_at', '') detect_at = tc.string_to_datetime(detect_at, format='%Y-%m-%d %H:%M:%S') try: user = IsolationPointUserInfo.objects.get(Q(fields__icontains=phone, member_id='') | Q(unionid=unionid), status=True) user.detect_at = detect_at user.antigen_result = result user.antigen_observed_ymds = list(set(user.antigen_observed_ymds + [tc.local_string(format='%Y-%m-%d')])) user.antigen_observed_days = len(user.antigen_observed_ymds) user.save() except IsolationPointUserInfo.DoesNotExist: user = None AntigenMeasureLogInfo.objects.create( unionid=unionid, point_id=user.point_id if user else '', user_id=user.user_id if user else '', macid=macid, device_id=device_id, sn=sn, user_name=user_name, phone=phone, result=result, detect_at=detect_at ) return response(200, '', 'Antigen Upload Success', '抗原检测上传成功') def get_antigen_screen_data(point_id): try: point = IsolationPointInfo.objects.get(point_id=point_id, status=True) except IsolationPointInfo.DoesNotExist: return response(IsolationPointStatusCode.ISOLATIONPOINT_NOT_FOUND) now_dt = datetime.datetime.now() zero_dt = now_dt - datetime.timedelta(hours=now_dt.hour, minutes=now_dt.minute, seconds=now_dt.second, microseconds=now_dt.microsecond) ipuis = IsolationPointUserInfo.objects.filter(point_id=point_id, status=True).order_by('-detect_at') total_active_eqpt_num = ipuis.count() antigen_negative_num = ipuis.filter(antigen_result=IsolationPointUserInfo.NEGATIVE, detect_at__gte=zero_dt).count() antigen_positive_num = ipuis.filter(antigen_result=IsolationPointUserInfo.POSITIVE, detect_at__gte=zero_dt).count() temperature_normal_num = ipuis.filter(temperature__lte=settings.FEVER_TEMPERATURE, last_submit_at__gte=zero_dt).count() temperature_fever_num = ipuis.filter(temperature__gt=settings.FEVER_TEMPERATURE, last_submit_at__gte=zero_dt).count() ipuis = [ipui.antigen_screen_data for ipui in ipuis] return { 'eqpts': ipuis, 'total_active_eqpt_num': total_active_eqpt_num, 'antigen_negative_num': antigen_negative_num, 'antigen_positive_num': antigen_positive_num, 'temperature_normal_num': temperature_normal_num, 'temperature_fever_num': temperature_fever_num, 'update_time': tc.local_string(), } @logit(body=True) def get_antigen_screen_result(request): point_id = request.POST.get('point_id', '') screen_data = get_antigen_screen_data(point_id) return response(data=screen_data) @logit(body=True) def userinfo_update(request): unionid = request.POST.get('unionid', '') phone = request.POST.get('phone', '') identify_card_number = request.POST.get('identify_card_number', '') identify_card_name = request.POST.get('identify_card_name', '') if not unionid: return response(40001, 'Unionid Cannot Be Empty', 'Unionid 不能为空') user, _ = UserInfo.objects.get_or_create(unionid=unionid) user.phone = phone user.identify_card_name = identify_card_name user.identify_card_number = identify_card_number user.save() IsolationPointUserInfo.objects.filter(unionid=unionid).update(phone=phone, name=identify_card_name) return response(200, '', 'UserInfo Update Success', '用户个人信息更新成功')