maintenance_tracking_info_update 增加状态流转校验

FFIB лет %!s(int64=3): %!d(string=назад)
Родитель
Сommit
dfbf9a0928
1 измененных файлов с 12 добавлено и 7 удалено
  1. 12 7
      api/maintenance_views.py

+ 12 - 7
api/maintenance_views.py

@@ -275,21 +275,26 @@ def is_maintenance_tracking_signed(tracking_info):
275 275
 def maintenance_tracking_info_update(maintenance, type_, tracking_info):
276 276
     old_maintenance_status = maintenance.maintenance_status
277 277
     is_tracking_signed = is_maintenance_tracking_signed(tracking_info)
278
+
279
+    # 状态流转,TRACKING_TO_DESPATCH -> TRACKING_SIGNED_FIXING -> TRACKING_FIXED_BACK -> TRACKING_BACK_SIGNED
280
+    # 需判断快递签收再更新维修状态
278 281
     if type_ == 'tracking':
279 282
         maintenance.tracking_info = tracking_info
280 283
         maintenance.tracking_signed = is_tracking_signed
281
-        if is_tracking_signed:
284
+        if is_tracking_signed and old_maintenance_status == MaintenaceInfo.TRACKING_TO_DESPATCH:
282 285
             maintenance_status = MaintenaceInfo.TRACKING_SIGNED_FIXING
283 286
     else:
284 287
         maintenance.back_tracking_info = tracking_info
285 288
         maintenance.back_tracking_signed = is_tracking_signed
286
-        if is_tracking_signed:
289
+        if is_tracking_signed and old_maintenance_status == MaintenaceInfo.TRACKING_FIXED_BACK:
287 290
             maintenance_status = MaintenaceInfo.TRACKING_BACK_SIGNED
288
-    maintenance.maintenance_status = maintenance_status
289
-    maintenance_status_at = maintenance.maintenance_status_at
290
-    if maintenance_status not in maintenance_status_at:
291
-        maintenance_status_at[maintenance_status] = tc.utc_datetime()
292
-    maintenance.maintenance_status_at = maintenance_status_at
291
+    
292
+    if maintenance_status:
293
+        maintenance.maintenance_status = maintenance_status
294
+        maintenance_status_at = maintenance.maintenance_status_at
295
+        if maintenance_status not in maintenance_status_at:
296
+            maintenance_status_at[maintenance_status] = tc.utc_datetime()
297
+        maintenance.maintenance_status_at = maintenance_status_at
293 298
     maintenance.save()
294 299
 
295 300
     if maintenance_status != old_maintenance_status: