|
# -*- 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.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', '用户个人信息更新成功')
|