views.py 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  1. # -*- coding: utf-8 -*-
  2. from django.shortcuts import render
  3. from django.http.response import HttpResponse,HttpResponseBadRequest
  4. from django.views.generic import ListView
  5. from apps.AppInfoManage.models import Equip, MyUser, User_Log,SCDstatus,CBDstatus, RecentCBDdata, RecentSCDdata, QXZstatus, QXZ_Base_Info
  6. from django.http import JsonResponse
  7. from django.core.exceptions import ObjectDoesNotExist
  8. import json
  9. from django.core import serializers
  10. import datetime
  11. # from apps.AppInfoManage.common import CJSONEncoder
  12. from apps.EquipManage.views import CJSONEncoder
  13. # 设备列表:
  14. class EquipList(ListView):
  15. def get(self, request):
  16. current_user = request.session.get('username')
  17. current_user = MyUser.objects.get(username=current_user)
  18. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  19. print("---用户")
  20. nums = Equip.objects.filter(equip_user=current_user).count()
  21. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  22. print("---代理商")
  23. nums = Equip.objects.filter(equip_agency=current_user.user_agency).count()
  24. else:
  25. print("---管理员")
  26. nums = Equip.objects.all().count()
  27. User_Log.objects.create(log_user=request.user.username,
  28. log_ip=request.META['REMOTE_ADDR'], log_desc='设备列表')
  29. return render(request, 'equiplist/equiplist.html', context={'nums': nums})
  30. def post(self, request):
  31. if request.is_ajax():
  32. print("ajax-post!")
  33. req = request.POST.get('req')
  34. if req == "rename":
  35. print("修改名称")
  36. equip_id = request.POST.get('eid')
  37. print("equip_id:",equip_id)
  38. new_name = request.POST.get('ename')
  39. print("new_name:",new_name)
  40. equip = Equip.objects.get(equip_id=equip_id)
  41. # 如果输入的设备名,和当前的设备列表中已存在:
  42. try:
  43. Equip.objects.get(equip_name=new_name)
  44. data = "1"
  45. # 输入的设备名不存在,说明是新设备名称
  46. except ObjectDoesNotExist:
  47. equip.equip_name = new_name
  48. equip.save()
  49. if equip.equip_type_id == 2:
  50. scdobj = RecentSCDdata.objects.get(equip_id=equip.equip_id)
  51. scdobj.equip_name = new_name
  52. scdobj.save()
  53. elif equip.equip_type_id == 3:
  54. cbdobj = RecentCBDdata.objects.get(equip_id=equip.equip_id)
  55. cbdobj.equip_name = new_name
  56. cbdobj.save()
  57. data = "0"
  58. print("新设备名称为:", new_name)
  59. User_Log.objects.create(
  60. log_user=request.user.username, log_ip=request.META['REMOTE_ADDR'], log_desc='设备列表-修改设备名称')
  61. return HttpResponse(data)
  62. elif req == "addAddr":
  63. print("添加位置!")
  64. equip_id = request.POST.get('eid')
  65. print("equip_id:",equip_id)
  66. address = request.POST.get('address')
  67. print("address:",address)
  68. equip = Equip.objects.get(equip_id=equip_id)
  69. equip.equip_location = address
  70. equip.save()
  71. print("equip.equip_type:",equip.equip_type.type_id)
  72. if 2 == equip.equip_type.type_id:
  73. print("修改杀虫灯")
  74. SCDstatus.objects.filter(equip_id=equip_id).update(equip_location = address)
  75. elif 3 == equip.equip_type.type_id:
  76. print("修改测报灯")
  77. CBDstatus.objects.filter(equip_id=equip_id).update(equip_location = address)
  78. data = "2"
  79. User_Log.objects.create(
  80. log_user=request.user.username, log_ip=request.META['REMOTE_ADDR'], log_desc='设备列表-添加位置')
  81. return HttpResponse(data)
  82. elif req == "cbdscene":
  83. print("添加测报灯场景!")
  84. equip_id = request.POST.get('eid')
  85. print("equip_id:",equip_id)
  86. scene = request.POST.get('scene')
  87. print("scene:",scene)
  88. equip = Equip.objects.get(equip_id=equip_id)
  89. equip.scene = scene
  90. equip.save()
  91. cbd_obj = RecentCBDdata.objects.get(equip_id=equip)
  92. cbd_obj.scene = scene
  93. cbd_obj.save()
  94. return HttpResponse("0")
  95. else:
  96. print("unknown request!")
  97. return HttpResponseBadRequest()
  98. else:
  99. print("unknown request!")
  100. return HttpResponseBadRequest()
  101. # 数据接口:
  102. class EquipListData(ListView):
  103. def get(self, request):
  104. pass
  105. def post(self, request):
  106. print("数据!!!")
  107. if request.is_ajax():
  108. print("ajax-post!")
  109. if request.POST.get('req') == "reqdat":
  110. page = int(request.POST.get('page'))
  111. print("page:",page)
  112. current_user = request.session.get('username')
  113. print("current_user:",current_user)
  114. current_user = MyUser.objects.get(username=current_user)
  115. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  116. print("---不是管理员")
  117. equip_list = Equip.objects.filter(equip_user=current_user)[(10*(page-1)):(page*10)]
  118. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  119. print("---代理商")
  120. equip_list = Equip.objects.filter(equip_agency=current_user.user_agency)[(10*(page-1)):(page*10)]
  121. else:
  122. print("---管理员")
  123. equip_list = Equip.objects.all()[(10*(page-1)):(page*10)]
  124. data = []
  125. for i in equip_list:
  126. sta1 = Equip.objects.filter(equip_id=i.equip_id).select_related()
  127. for x in sta1:
  128. try:
  129. sta2 = {"equip_id": x.equip_id,
  130. "equip_user": x.equip_user.username,
  131. "scene":x.scene,
  132. "equip_name": x.equip_name,
  133. "equip_add_time": x.equip_add_time,
  134. "equip_type": x.equip_type.type_id,
  135. "equip_location": x.equip_location}
  136. except AttributeError:
  137. sta2 = {"equip_id": x.equip_id,
  138. "equip_user": "",
  139. "scene":x.scene,
  140. "equip_name": x.equip_name,
  141. "equip_add_time": x.equip_add_time,
  142. "equip_type": x.equip_type.type_id,
  143. "equip_location": x.equip_location}
  144. data.append(sta2)
  145. User_Log.objects.create(log_user=request.user.username,log_ip=request.META['REMOTE_ADDR'], log_desc='设备列表')
  146. # data = serializers.serialize("json", equip_list)
  147. data = json.dumps(data, cls=CJSONEncoder)
  148. # print("data:",data)
  149. return HttpResponse(data)
  150. else:
  151. print("unknown request!")
  152. return HttpResponseBadRequest()
  153. else:
  154. print("unknown request!")
  155. return HttpResponseBadRequest()
  156. # 筛选接口:
  157. import re
  158. class EquipListFilter(ListView):
  159. def get(self, request):
  160. pass
  161. def post(self, request):
  162. print("筛选!!!")
  163. f_type = request.POST.get('f_type')
  164. f_id = request.POST.get('f_id')
  165. f_tbegin = request.POST.get('f_tbegin')
  166. f_tend = request.POST.get('f_tend')
  167. page = int(request.POST.get('page'))
  168. print("f_type:", f_type)
  169. print("f_id:", f_id)
  170. print("f_tbegin:", f_tbegin)
  171. print("f_tend:", f_tend)
  172. print("page:", page)
  173. current_user = request.session.get('username')
  174. print("current_user:",current_user)
  175. current_user = MyUser.objects.get(username=current_user)
  176. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  177. print("---不是管理员")
  178. # 000
  179. if f_id == '' and f_type == '0' and f_tbegin == '' and f_tend == '':
  180. equip_list = Equip.objects.filter(equip_user=current_user)
  181. # 001
  182. elif f_id == '' and f_type == '0' and f_tbegin != '' and f_tend != '':
  183. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  184. enddate = re.findall(r"\d+\.?\d*", f_tend)
  185. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  186. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  187. equip_list = Equip.objects.filter(equip_user=current_user,equip_add_time__range=(start_date, end_date))
  188. # 010
  189. elif f_id == '' and f_type != '0' and f_tbegin == '' and f_tend == '':
  190. equip_list = Equip.objects.filter(equip_user=current_user,equip_type=f_type)
  191. # 011
  192. elif f_id == '' and f_type != '0' and f_tbegin != '' and f_tend != '':
  193. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  194. enddate = re.findall(r"\d+\.?\d*", f_tend)
  195. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  196. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  197. equip_list = Equip.objects.filter(equip_user=current_user,equip_type=f_type,equip_add_time__range=(start_date, end_date))
  198. # 100
  199. elif f_id != '' and f_type == '0' and f_tbegin == '' and f_tend == '':
  200. equip_list = Equip.objects.filter(equip_user=current_user,equip_id__contains=f_id)
  201. # 101
  202. elif f_id != '' and f_type == '0' and f_tbegin != '' and f_tend != '':
  203. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  204. enddate = re.findall(r"\d+\.?\d*", f_tend)
  205. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  206. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  207. equip_list = Equip.objects.filter(equip_user=current_user,equip_id__contains=f_id,equip_add_time__range=(start_date, end_date))
  208. # 110
  209. elif f_id != '' and f_type != '0' and f_tbegin == '' and f_tend == '':
  210. equip_list = Equip.objects.filter(equip_user=current_user,equip_id__contains=f_id,equip_type=f_type)
  211. # 111
  212. # elif f_id != '' and f_type != '0' and f_tbegin != '' and f_tend != '':
  213. else:
  214. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  215. enddate = re.findall(r"\d+\.?\d*", f_tend)
  216. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  217. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  218. equip_list = Equip.objects.filter(equip_user=current_user,equip_id__contains=f_id,equip_type=f_type,equip_add_time__range=(start_date, end_date))
  219. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  220. print("---代理商")
  221. # 000
  222. if f_id == '' and f_type == '0' and f_tbegin == '' and f_tend == '':
  223. equip_list = Equip.objects.filter(equip_agency=current_user.user_agency)
  224. # 001
  225. elif f_id == '' and f_type == '0' and f_tbegin != '' and f_tend != '':
  226. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  227. enddate = re.findall(r"\d+\.?\d*", f_tend)
  228. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  229. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  230. equip_list = Equip.objects.filter(equip_agency=current_user.user_agency, equip_add_time__range=(start_date, end_date))
  231. # 010
  232. elif f_id == '' and f_type != '0' and f_tbegin == '' and f_tend == '':
  233. equip_list = Equip.objects.filter(equip_agency=current_user.user_agency, equip_type=f_type)
  234. # 011
  235. elif f_id == '' and f_type != '0' and f_tbegin != '' and f_tend != '':
  236. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  237. enddate = re.findall(r"\d+\.?\d*", f_tend)
  238. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  239. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  240. equip_list = Equip.objects.filter(equip_agency=current_user.user_agency, equip_type=f_type, equip_add_time__range=(start_date, end_date))
  241. # 100
  242. elif f_id != '' and f_type == '0' and f_tbegin == '' and f_tend == '':
  243. equip_list = Equip.objects.filter(equip_agency=current_user.user_agency, equip_id__contains=f_id)
  244. # 101
  245. elif f_id != '' and f_type == '0' and f_tbegin != '' and f_tend != '':
  246. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  247. enddate = re.findall(r"\d+\.?\d*", f_tend)
  248. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  249. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  250. equip_list = Equip.objects.filter(equip_agency=current_user.user_agency, equip_id__contains=f_id, equip_add_time__range=(start_date, end_date))
  251. # 110
  252. elif f_id != '' and f_type != '0' and f_tbegin == '' and f_tend == '':
  253. equip_list = Equip.objects.filter(equip_agency=current_user.user_agency, equip_id__contains=f_id, equip_type=f_type)
  254. # 111
  255. # elif f_id != '' and f_type != '0' and f_tbegin != '' and f_tend != '':
  256. else:
  257. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  258. enddate = re.findall(r"\d+\.?\d*", f_tend)
  259. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  260. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  261. equip_list = Equip.objects.filter(equip_agency=current_user.user_agency, equip_id__contains=f_id,
  262. equip_type=f_type,equip_add_time__range=(start_date, end_date))
  263. else:
  264. print("---管理员")
  265. # 000
  266. if f_id == '' and f_type == '0' and f_tbegin == '' and f_tend == '':
  267. equip_list = Equip.objects.all()
  268. # 001
  269. elif f_id == '' and f_type == '0' and f_tbegin != '' and f_tend != '':
  270. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  271. enddate = re.findall(r"\d+\.?\d*", f_tend)
  272. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  273. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  274. equip_list = Equip.objects.filter(equip_add_time__range=(start_date, end_date))
  275. # 010
  276. elif f_id == '' and f_type != '0' and f_tbegin == '' and f_tend == '':
  277. equip_list = Equip.objects.filter(equip_type=f_type)
  278. # 011
  279. elif f_id == '' and f_type != '0' and f_tbegin != '' and f_tend != '':
  280. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  281. enddate = re.findall(r"\d+\.?\d*", f_tend)
  282. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  283. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  284. equip_list = Equip.objects.filter(equip_type=f_type,equip_add_time__range=(start_date, end_date))
  285. # 100
  286. elif f_id != '' and f_type == '0' and f_tbegin == '' and f_tend == '':
  287. equip_list = Equip.objects.filter(equip_id__contains=f_id)
  288. # 101
  289. elif f_id != '' and f_type == '0' and f_tbegin != '' and f_tend != '':
  290. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  291. enddate = re.findall(r"\d+\.?\d*", f_tend)
  292. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  293. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  294. equip_list = Equip.objects.filter(equip_id__contains=f_id,equip_add_time__range=(start_date, end_date))
  295. # 110
  296. elif f_id != '' and f_type != '0' and f_tbegin == '' and f_tend == '':
  297. equip_list = Equip.objects.filter(equip_id__contains=f_id,equip_type=f_type)
  298. # 111
  299. # elif f_id != '' and f_type != '0' and f_tbegin != '' and f_tend != '':
  300. else:
  301. begindate = re.findall(r"\d+\.?\d*", f_tbegin)
  302. enddate = re.findall(r"\d+\.?\d*", f_tend)
  303. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  304. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  305. equip_list = Equip.objects.filter(equip_id__contains=f_id).filter(equip_type=f_type,equip_add_time__range=(start_date, end_date))
  306. # data = []
  307. dat = []
  308. for i in equip_list[(10*(page-1)):(page*10)]:
  309. sta1 = Equip.objects.filter(equip_id=i.equip_id).select_related()
  310. try:
  311. for x in sta1:
  312. sta2 = {"equip_id": x.equip_id,
  313. "equip_user": x.equip_user.username,
  314. "scene":x.scene,
  315. "equip_name": x.equip_name,
  316. "equip_add_time": x.equip_add_time,
  317. "equip_type": x.equip_type.type_id,
  318. "equip_location": x.equip_location}
  319. dat.append(sta2)
  320. except AttributeError:
  321. for x in sta1:
  322. sta2 = {"equip_id": x.equip_id,
  323. "equip_user": "",
  324. "scene":x.scene,
  325. "equip_name": x.equip_name,
  326. "equip_add_time": x.equip_add_time,
  327. "equip_type": x.equip_type.type_id,
  328. "equip_location": x.equip_location}
  329. dat.append(sta2)
  330. # data = serializers.serialize("json", equip_list)
  331. data = {'dat':dat,'nums':equip_list.count()}
  332. data = json.dumps(data, cls=CJSONEncoder)
  333. # print("data:",data)
  334. return HttpResponse(data)
  335. # 气象站添加定位
  336. class QXZ_Location(ListView):
  337. def get(self, request):
  338. e_id = request.GET.get('e_id')
  339. imei = Equip.objects.get(equip_id=e_id)
  340. if QXZ_Base_Info.objects.filter(equip_id=imei).exists():
  341. equip_obj = QXZ_Base_Info.objects.get(equip_id=e_id)
  342. else:
  343. QXZ_Base_Info.objects.create(equip_id=imei, volt="",rssi="",iccid="",lng="",lat="",led="")
  344. equip_obj = QXZ_Base_Info.objects.get(equip_id=e_id)
  345. data = {"lat":equip_obj.lat,"lng":equip_obj.lng}
  346. print(data)
  347. data = json.dumps(data)
  348. return HttpResponse(data)
  349. def post(self, request):
  350. e_id = request.POST.get('e_id')
  351. lng = request.POST.get('lng')
  352. lat = request.POST.get('lat')
  353. try:
  354. equip_obj = QXZ_Base_Info.objects.get(equip_id=e_id)
  355. equip_obj.lng = lng
  356. equip_obj.lat = lat
  357. equip_obj.save()
  358. return HttpResponse("0")
  359. except:
  360. return HttpResponse("1")