:art: rscreen

huangqimin001 3 years ago
parent
commit
21340c7c05
3 changed files with 46 additions and 12 deletions
  1. 33 12
      api/eqpt_views.py
  2. 1 0
      utils/redis/rkeys.py
  3. 12 0
      utils/redis/rscreen.py

+ 33 - 12
api/eqpt_views.py

@@ -17,6 +17,7 @@ from equipment.models import (IsolationPointInfo, IsolationPointUserInfo, Thermo
17 17
                               ThermometerMeasureInfo, ThermometerMeasureLogInfo)
18 18
 from utils.age import stamp2age
19 19
 from utils.error.errno_utils import IsolationPointStatusCode, ThermometerEquipmentStatusCode
20
+from utils.redis.rscreen import get_screen_info, set_screen_info
20 21
 
21 22
 
22 23
 @logit
@@ -174,16 +175,14 @@ def eqpt_result(request):
174 175
     })
175 176
 
176 177
 
177
-@logit
178
-def screen_eqpt_result(request):
179
-    point_id = request.POST.get('point_id', '')
180
-
181
-    try:
182
-        point = IsolationPointInfo.objects.get(point_id=point_id, status=True)
183
-    except IsolationPointInfo.DoesNotExist:
184
-        return response(IsolationPointStatusCode.ISOLATIONPOINT_NOT_FOUND)
178
+def get_screen_data(point=None, point_id=None):
179
+    if not point:
180
+        try:
181
+            point = IsolationPointInfo.objects.get(point_id=point_id, status=True)
182
+        except IsolationPointInfo.DoesNotExist:
183
+            return {}
185 184
 
186
-    eqpts = ThermometerEquipmentInfo.objects.filter(point_id=point_id, active_status=ThermometerEquipmentInfo.ONLINE, status=True)
185
+    eqpts = ThermometerEquipmentInfo.objects.filter(point_id=point.point_id, active_status=ThermometerEquipmentInfo.ONLINE, status=True)
187 186
     macids = eqpts.values_list('macid', flat=True)
188 187
 
189 188
     logs = ThermometerMeasureInfo.objects.filter(
@@ -195,7 +194,7 @@ def screen_eqpt_result(request):
195 194
     ).values('macid', 'temperature')
196 195
     logs = {log.get('macid'): log.get('temperature') for log in logs}
197 196
 
198
-    infos = IsolationPointUserInfo.objects.filter(point_id=point_id, status=True).values('pk', 'fields')
197
+    infos = IsolationPointUserInfo.objects.filter(point_id=point.point_id, status=True).values('pk', 'fields')
199 198
     infos = {info.get('pk'): info.get('fields') for info in infos}
200 199
 
201 200
     total_active_eqpt_num = eqpts.count()
@@ -234,14 +233,34 @@ def screen_eqpt_result(request):
234 233
         'observed_days': 1,
235 234
     } for eqpt in eqpts]
236 235
 
237
-    return response(data={
236
+    return {
238 237
         'eqpts': eqpts,
239 238
         'reminds': reminds,
240 239
         'total_active_eqpt_num': total_active_eqpt_num,
241 240
         'has_upload_temperature_num': has_upload_temperature_num,
242 241
         'not_upload_temperature_num': total_active_eqpt_num - has_upload_temperature_num,
243 242
         'fever_num': fever_num,
244
-    })
243
+        'update_time': tc.local_string(),
244
+    }
245
+
246
+
247
+@logit
248
+def screen_eqpt_result(request):
249
+    point_id = request.POST.get('point_id', '')
250
+
251
+    screen_info = get_screen_info(point_id)
252
+
253
+    if screen_info:
254
+        return response(data=screen_info)
255
+
256
+    try:
257
+        point = IsolationPointInfo.objects.get(point_id=point_id, status=True)
258
+    except IsolationPointInfo.DoesNotExist:
259
+        return response(IsolationPointStatusCode.ISOLATIONPOINT_NOT_FOUND)
260
+
261
+    screen_data = get_screen_data(point)
262
+
263
+    return response(data=screen_data)
245 264
 
246 265
 
247 266
 @logit
@@ -355,3 +374,5 @@ def mqtt_upload_temperature(payload):
355 374
         if temperature > measure_info.temperature:
356 375
             measure_info.temperature = temperature
357 376
             measure_info.save()
377
+
378
+    set_screen_info(point.point_id, get_screen_data(point))

+ 1 - 0
utils/redis/rkeys.py

@@ -2,3 +2,4 @@
2 2
 
3 3
 HY_QRCODE_URL_HASH = 'twjc:qrcode:url:hash'  # scene:qrcode_url
4 4
 TWJC_POINT_INFO = 'twjc:point:info:%s'  # uuid:point_id
5
+TWJC_SCREEN_INFO = 'twjc:screen:info:%s'  # point_id:screen_info

+ 12 - 0
utils/redis/rscreen.py

@@ -0,0 +1,12 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from utils.redis.connect import r
4
+from utils.redis.rkeys import TWJC_SCREEN_INFO
5
+
6
+
7
+def set_screen_info(point_id, screen_info):
8
+    r.setjson(TWJC_SCREEN_INFO % point_id, screen_info)
9
+
10
+
11
+def get_screen_info(point_id):
12
+    return r.getjson(TWJC_SCREEN_INFO % point_id)