@@ -2,6 +2,9 @@ |
||
| 2 | 2 |
|
| 3 | 3 |
from __future__ import division |
| 4 | 4 |
|
| 5 |
+import datetime |
|
| 6 |
+ |
|
| 7 |
+from django.conf import settings |
|
| 5 | 8 |
from django.db.models import Q |
| 6 | 9 |
from django_logit import logit |
| 7 | 10 |
from django_response import response |
@@ -50,10 +53,26 @@ def get_antigen_screen_data(point_id): |
||
| 50 | 53 |
except IsolationPointInfo.DoesNotExist: |
| 51 | 54 |
return response(IsolationPointStatusCode.ISOLATIONPOINT_NOT_FOUND) |
| 52 | 55 |
|
| 56 |
+ now_dt = datetime.datetime.now() |
|
| 57 |
+ zero_dt = now_dt - datetime.timedelta(hours=now_dt.hour, minutes=now_dt.minute, seconds=now_dt.second, microseconds=now_dt.microsecond) |
|
| 58 |
+ |
|
| 53 | 59 |
ipuis = IsolationPointUserInfo.objects.filter(point_id=point_id, status=True).order_by('-detect_at')
|
| 60 |
+ total_active_eqpt_num = ipuis.count() |
|
| 61 |
+ antigen_negative_num = ipuis.filter(antigen_result=IsolationPointUserInfo.NEGATIVE, detect_at__gte=zero_dt).count() |
|
| 62 |
+ antigen_positive_num = ipuis.filter(antigen_result=IsolationPointUserInfo.POSITIVE, detect_at__gte=zero_dt).count() |
|
| 63 |
+ temperature_normal_num = ipuis.filter(temperature__lte=settings.FEVER_TEMPERATURE, last_submit_at__gte=zero_dt).count() |
|
| 64 |
+ temperature_fever_num = ipuis.filter(temperature__gt=settings.FEVER_TEMPERATURE, last_submit_at__gte=zero_dt).count() |
|
| 54 | 65 |
ipuis = [ipui.antigen_screen_data for ipui in ipuis] |
| 55 | 66 |
|
| 56 |
- return ipuis |
|
| 67 |
+ return {
|
|
| 68 |
+ 'eqpts': ipuis, |
|
| 69 |
+ 'total_active_eqpt_num': total_active_eqpt_num, |
|
| 70 |
+ 'antigen_negative_num': antigen_negative_num, |
|
| 71 |
+ 'antigen_positive_num': antigen_positive_num, |
|
| 72 |
+ 'temperature_normal_num': temperature_normal_num, |
|
| 73 |
+ 'temperature_fever_num': temperature_fever_num, |
|
| 74 |
+ 'update_time': tc.local_string(), |
|
| 75 |
+ } |
|
| 57 | 76 |
|
| 58 | 77 |
|
| 59 | 78 |
@logit(body=True) |
@@ -251,6 +251,29 @@ class IsolationPointUserInfo(BaseModelMixin): |
||
| 251 | 251 |
return u'今日未检测' |
| 252 | 252 |
|
| 253 | 253 |
@property |
| 254 |
+ def get_temperature_result(self): |
|
| 255 |
+ today = datetime.date.today() |
|
| 256 |
+ if not self.last_submit_at: |
|
| 257 |
+ return u'今日未测温' |
|
| 258 |
+ |
|
| 259 |
+ if today.day == self.last_submit_at.day and today.month == self.last_submit_at.month and today.year == self.last_submit_at.year: |
|
| 260 |
+ return self.temperature |
|
| 261 |
+ else: |
|
| 262 |
+ return u'今日未测温' |
|
| 263 |
+ |
|
| 264 |
+ @property |
|
| 265 |
+ def get_protected_name(self): |
|
| 266 |
+ name = list(self.name) |
|
| 267 |
+ name[1] = '*' |
|
| 268 |
+ return ''.join(name) |
|
| 269 |
+ |
|
| 270 |
+ @property |
|
| 271 |
+ def get_protected_phone(self): |
|
| 272 |
+ phone = list(self.phone) |
|
| 273 |
+ phone[3:7] = '****' |
|
| 274 |
+ return ''.join(phone) |
|
| 275 |
+ |
|
| 276 |
+ @property |
|
| 254 | 277 |
def data(self): |
| 255 | 278 |
return {
|
| 256 | 279 |
'pk': self.pk, |
@@ -308,8 +331,9 @@ class IsolationPointUserInfo(BaseModelMixin): |
||
| 308 | 331 |
'observed_days': self.antigen_observed_days, |
| 309 | 332 |
'last_report_time': tc.local_string(utc_dt=self.detect_at, format='%m-%d %H:%M') if self.detect_at else '', |
| 310 | 333 |
'remark': self.remark or '', |
| 311 |
- 'name': self.name, |
|
| 312 |
- 'phone': self.phone, |
|
| 334 |
+ 'name': self.get_protected_name, |
|
| 335 |
+ 'phone': self.get_protected_phone, |
|
| 336 |
+ 'temperature': self.get_temperature_result, |
|
| 313 | 337 |
'antigen_result': self.get_antigen_result, |
| 314 | 338 |
} |
| 315 | 339 |
|