views.py 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419
  1. # -*- coding: utf-8 -*-
  2. import array
  3. from django.shortcuts import render
  4. from django.views.generic.base import View
  5. from itertools import chain
  6. import requests
  7. from requests.auth import HTTPBasicAuth
  8. from django.core.exceptions import ObjectDoesNotExist
  9. from django.http import JsonResponse, HttpResponse
  10. from django.views.generic import ListView
  11. from django.core import serializers
  12. from datetime import datetime, date
  13. from PIL import Image
  14. import time
  15. import json
  16. from io import BytesIO
  17. from apps.AppInfoManage.models import MyUser, User_Log, Equip, SCDdata, SCDstatus, CBDdata, CBDstatus, YBQdata, YBQstatus, JKdata, BZYstatus, BZYdata, SCDstatus_all, CBDstatus_all,\
  18. QXZswitchstatus, QXZswitchdata, QXZAutoswitch, QXZstatus, QXZTimingswitch, Msg_Conf, CBDphoto, Equip_SimInfo
  19. # 引用查询流量接口
  20. from apps.SimInfo.views import get_siminfo
  21. # 引用全局变量
  22. from django.conf import settings
  23. from django.views.decorators.csrf import csrf_exempt
  24. # 测报灯管理视图:
  25. class CBDMsg_View(ListView):
  26. def get(self, request):
  27. # x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
  28. # if x_forwarded_for:
  29. # ip = x_forwarded_for.split(',')[0]#所以这里是真实的ip
  30. # print("------------real ip")
  31. # else:
  32. # ip = request.META.get('REMOTE_ADDR')#这里获得代理ip
  33. # print("------------unreal ip")
  34. # 获取主机名
  35. # hostname = socket.gethostname()
  36. # #获取IP
  37. # ip = socket.gethostbyname(hostname)
  38. # print("获取的IP为:",ip)
  39. current_user = request.session.get('username')
  40. current_user = MyUser.objects.get(username=current_user)
  41. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  42. print("---用户")
  43. role = "user"
  44. nums = CBDstatus.objects.filter(
  45. equip_id__equip_user=current_user).count()
  46. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  47. print("---代理商")
  48. role = "user"
  49. nums = CBDstatus.objects.filter(
  50. equip_id__equip_agency=current_user.user_agency).count()
  51. else:
  52. print("---管理员")
  53. role = "superuser"
  54. nums = CBDstatus.objects.all().count()
  55. return render(request, 'warnmanage/cbd_list.html', context={"nums": nums,"role": role})
  56. def post(self, request):
  57. if request.is_ajax():
  58. print("ajax-post!")
  59. req = request.POST.get('req')
  60. print("req:", req)
  61. # 请求数据:
  62. if req == "dat":
  63. print("---请求数据的post!")
  64. page = int(request.POST.get('page'))
  65. print("page:", page)
  66. current_user = request.session.get('username')
  67. print("current_user:", current_user)
  68. current_user = MyUser.objects.get(username=current_user)
  69. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  70. print("---不是管理员")
  71. # sta1 = CBDstatus.objects.filter(
  72. # equip_id__equip_user=current_user, equip_id__equip_type=3)[(10*(page-1)):(page*10)] # .order_by("-equip_id__equip_add_time")
  73. sta1 = CBDstatus.objects.filter(equip_id__equip_user=current_user)[(10*(page-1)):(page*10)]
  74. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  75. print("---代理商")
  76. # sta1 = CBDstatus.objects.filter(
  77. # equip_id__equip_agency=current_user.user_agency, equip_id__equip_type=3)[(10*(page-1)):(page*10)]
  78. sta1 = CBDstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)[(10*(page-1)):(page*10)]
  79. else:
  80. print("---管理员")
  81. # sta1 = CBDstatus.objects.filter(equip_id__equip_type=3)[(
  82. # 10*(page-1)):(page*10)] # .order_by("-equip_id__equip_add_time")
  83. sta1 = CBDstatus.objects.all()[(10*(page-1)):(page*10)]
  84. sta2 = [{"cbd_status": x.cbd_status, "upl_time": x.upl_time,
  85. "paramconf": x.paramconf, "serverconf": x.serverconf,
  86. "equip_name": x.equip_id.equip_name, "equip_desc": x.equip_id.equip_desc,
  87. "is_online": x.is_online, "off_time": x.off_time} for x in sta1]
  88. data = json.dumps(sta2, cls=CJSONEncoder, indent=4)
  89. # print("data:",data)
  90. return HttpResponse(data)
  91. elif req == "filter":
  92. f_name = request.POST.get('ename')
  93. print("f_name:", f_name)
  94. f_id = request.POST.get('f_id')
  95. print("f_id:", f_id)
  96. page = int(request.POST.get('page'))
  97. print("page:", page)
  98. dver = request.POST.get('dver')
  99. print("dver",dver)
  100. is_online = request.POST.get('is_online')
  101. print("is_online",is_online)
  102. # 读取当前用户:
  103. current_user = request.session.get('username')
  104. print("current_user:", current_user)
  105. current_user = MyUser.objects.get(username=current_user)
  106. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  107. print("---不是管理员")
  108. if f_name == "" and f_id == '':
  109. sta1 = CBDstatus.objects.filter(
  110. equip_id__equip_user=current_user)
  111. elif f_name == "" and f_id != '':
  112. sta1 = CBDstatus.objects.filter(
  113. equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id)
  114. elif f_name != "" and f_id == '':
  115. sta1 = CBDstatus.objects.filter(
  116. equip_id__equip_user=current_user, equip_id__equip_name__contains=f_name)
  117. elif f_name != "" and f_id != '':
  118. sta1 = CBDstatus.objects.filter(
  119. equip_id__equip_user=current_user, equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id)
  120. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  121. print("---代理商")
  122. if f_name == "" and f_id == '':
  123. sta1 = CBDstatus.objects.filter(
  124. equip_id__equip_agency=current_user.user_agency)
  125. elif f_name == "" and f_id != '':
  126. sta1 = CBDstatus.objects.filter(
  127. equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id)
  128. elif f_name != "" and f_id == '':
  129. sta1 = CBDstatus.objects.filter(
  130. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=f_name)
  131. elif f_name != "" and f_id != '':
  132. sta1 = CBDstatus.objects.filter(
  133. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id)
  134. else:
  135. print("---管理员")
  136. if f_name == "" and f_id == '':
  137. sta1 = CBDstatus.objects.all()
  138. elif f_name == "" and f_id != '':
  139. sta1 = CBDstatus.objects.filter(
  140. equip_id__equip_id__contains=f_id)
  141. elif f_name != "" and f_id == '':
  142. sta1 = CBDstatus.objects.filter(
  143. equip_id__equip_name__contains=f_name)
  144. elif f_name != "" and f_id != '':
  145. sta1 = CBDstatus.objects.filter(
  146. equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id)
  147. print("在线状态------------>",is_online)
  148. # -----------------------------------------------------------------------------------------
  149. # 版本号筛选设备
  150. if dver != "" and is_online == "":
  151. sta3 = []
  152. for i in sta1:
  153. fir_v = eval(i.cbd_status)["dver"].split(".")
  154. if fir_v[0] == dver:
  155. sta3.append({"cbd_status": i.cbd_status, "upl_time": i.upl_time,
  156. "paramconf": i.paramconf, "serverconf": i.serverconf,
  157. "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc,
  158. "is_online": i.is_online, "off_time": i.off_time})
  159. data = {"dat": sta3[(10*(page-1)):(page*10)],
  160. "nums": len(sta3)}
  161. print("-------------",len(sta3))
  162. data = json.dumps(data, cls=CJSONEncoder)
  163. # print("data:",data)
  164. return HttpResponse(data)
  165. # -----------------------------------------------------------------------------------------
  166. # 在线状态筛选设备
  167. elif is_online != "" and dver == "":
  168. sta4 = []
  169. for i in sta1:
  170. if is_online == i.is_online:
  171. sta4.append({"cbd_status": i.cbd_status, "upl_time": i.upl_time,
  172. "paramconf": i.paramconf, "serverconf": i.serverconf,
  173. "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc,
  174. "is_online": i.is_online, "off_time": i.off_time})
  175. data = {"dat": sta4[(10*(page-1)):(page*10)],
  176. "nums": len(sta4)}
  177. print("-------------",len(sta4))
  178. data = json.dumps(data, cls=CJSONEncoder)
  179. # print("data:",data)
  180. return HttpResponse(data)
  181. # -----------------------------------------------------------------------------------------
  182. # 版本号和在线状态同时筛选设备
  183. elif is_online != "" and dver != "":
  184. sta3 = []
  185. for i in sta1:
  186. fir_v = eval(i.cbd_status)["dver"].split(".")
  187. if fir_v[0] == dver and i.is_online == is_online:
  188. sta3.append({"cbd_status": i.cbd_status, "upl_time": i.upl_time,
  189. "paramconf": i.paramconf, "serverconf": i.serverconf,
  190. "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc,
  191. "is_online": i.is_online, "off_time": i.off_time})
  192. data = {"dat": sta3[(10*(page-1)):(page*10)],
  193. "nums": len(sta3)}
  194. print("-------------",len(sta3))
  195. data = json.dumps(data, cls=CJSONEncoder)
  196. # print("data:",data)
  197. return HttpResponse(data)
  198. # -----------------------------------------------------------------------------------------
  199. sta2 = [{"cbd_status": x.cbd_status, "upl_time": x.upl_time,
  200. "paramconf": x.paramconf, "serverconf": x.serverconf,
  201. "equip_name": x.equip_id.equip_name, "equip_desc": x.equip_id.equip_desc,
  202. "is_online": x.is_online, "off_time": x.off_time} for x in sta1]
  203. data = {"dat": sta2[(10*(page-1)):(page*10)],
  204. "nums": sta1.count()}
  205. data = json.dumps(data, cls=CJSONEncoder)
  206. # print("data:",data)
  207. return HttpResponse(data)
  208. elif req == "paramconf":
  209. equip_id = request.POST.get('id')
  210. print("equip_id:", equip_id)
  211. # 读取当前设备的参数配置信息:
  212. sta1 = CBDstatus.objects.filter(equip_id=equip_id)
  213. for x in sta1:
  214. sta2 = {"paramconf": x.paramconf}
  215. data = json.dumps(sta2, cls=CJSONEncoder)
  216. print("配置信息的data:", data)
  217. return HttpResponse(data)
  218. elif req == "change":
  219. equip_id = request.POST.get('id')
  220. print("equip_id:", equip_id)
  221. equip_desc = request.POST.get('desc')
  222. equip_obj = Equip.objects.get(equip_id=equip_id)
  223. try:
  224. equip_obj.equip_desc = equip_desc
  225. equip_obj.save()
  226. data = "0"
  227. except:
  228. data = "1"
  229. return HttpResponse(data)
  230. # 测报灯短信配置
  231. class CBDMsg_Conf(ListView):
  232. def get(self,request):
  233. pass
  234. def post(self,request):
  235. e_id = request.POST.get("e_id")
  236. try:
  237. msgconf = Msg_Conf.objects.get(equip_id=e_id)
  238. data = msgconf.conf
  239. except:
  240. data = ""
  241. return HttpResponse(data)
  242. # 测报灯短信配置保存
  243. class MsgConf_Save(ListView):
  244. def get(self,request):
  245. pass
  246. def post(self,request):
  247. e_id = request.POST.get("e_id")
  248. e_conf = request.POST.get("conf")
  249. equip_obj = Equip.objects.get(equip_id=e_id)
  250. if Msg_Conf.objects.filter(equip_id=equip_obj).exists():
  251. msgconf = Msg_Conf.objects.get(equip_id=equip_obj)
  252. msgconf.conf = e_conf
  253. msgconf.save()
  254. else:
  255. Msg_Conf.objects.create(equip_id=equip_obj,conf=e_conf)
  256. return HttpResponse("0")
  257. class AlarmRange_View(View):
  258. def get(self, request):
  259. e_id = request.GET.get("e_id")
  260. return render(request, 'warnmanage/alarm_range.html', context={"e_id":e_id})
  261. def post(self, request):
  262. e_id = request.POST.get("e_id")
  263. pest_num = 0
  264. pest_name = []
  265. pest_nums = []
  266. pest_dict = {}
  267. pest_dict_new = {}
  268. cbd_list = CBDphoto.objects.filter(equip_id=e_id)
  269. for x in cbd_list:
  270. if x.indentify_result == None or x.indentify_result == "":
  271. pass
  272. else:
  273. for a in x.indentify_result.split("#"):
  274. pest_num = pest_num + int(a.split(",")[1])
  275. pest_name.append(int(a.split(",")[0]))
  276. pest_nums.append(int(a.split(",")[1]))
  277. for xx in range(len(pest_name)):
  278. c = {pest_name[xx]:pest_nums[xx]}
  279. for d in c:
  280. if d in pest_dict:
  281. pest_dict[d] = pest_dict[d] + c[d]
  282. else:
  283. pest_dict.update(c)
  284. print(pest_dict)
  285. pest_list = []
  286. for i in pest_dict:
  287. pest_list.append(i)
  288. data = {"pest_list":pest_list}
  289. data = json.dumps(data)
  290. return HttpResponse(data)
  291. class AlarmHistory_View(View):
  292. def get(self, request):
  293. current_user = request.session.get('username')
  294. print("current_user:", current_user)
  295. current_user = MyUser.objects.get(username=current_user)
  296. if current_user.is_superuser != True and current_user.is_staff != True: # __username
  297. print("---不是管理员")
  298. alarm_record = Alarm_record.objects.filter(equip_id__equip_user=current_user)[0:10]
  299. else:
  300. print("---管理员")
  301. alarm_record = Alarm_record.objects.all()
  302. return render(request, 'warnmanage/alarm_history.html', context={'alarm_record':alarm_record})
  303. def alarm_map(request):
  304. return render(request, 'warnmanage/alarm_map.html', context={})
  305. # sim卡流量提醒
  306. class Sim_Flow(ListView):
  307. def get(self,request):
  308. return render(request, 'warnmanage/sim_list.html', context={})
  309. class Sim_Flow_View(ListView):
  310. def get(self,request):
  311. current_user = request.session.get('username')
  312. current_user = MyUser.objects.get(username=current_user)
  313. page = int(request.GET.get("page"))
  314. e_id = request.GET.get("e_id")
  315. iccid = request.GET.get("iccid")
  316. status = request.GET.get("status")
  317. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  318. print("---用户")
  319. if e_id:
  320. simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,equip_id__equip_id__contains=e_id)[(10*(page-1)):(page*10)]
  321. nums = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,equip_id__equip_id__contains=e_id).count()
  322. elif iccid:
  323. simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,iccid__contains=iccid)[(10*(page-1)):(page*10)]
  324. nums = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,iccid__contains=iccid).count()
  325. elif status:
  326. status = int(status)
  327. simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,account_status=status)[(10*(page-1)):(page*10)]
  328. nums = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user,account_status=status).count()
  329. else:
  330. simlist = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user)[(10*(page-1)):(page*10)]
  331. nums = Equip_SimInfo.objects.filter(equip_id__equip_user=current_user).count()
  332. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  333. print("---代理商")
  334. if e_id:
  335. simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,equip_id__equip_id__contains=e_id)[(10*(page-1)):(page*10)]
  336. nums = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,equip_id__equip_id__contains=e_id).count()
  337. elif iccid:
  338. simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,iccid__contains=iccid)[(10*(page-1)):(page*10)]
  339. nums = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,iccid__contains=iccid).count()
  340. elif status:
  341. status = int(status)
  342. simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,account_status=status)[(10*(page-1)):(page*10)]
  343. nums = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency,account_status=status).count()
  344. else:
  345. simlist = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency)[(10*(page-1)):(page*10)]
  346. nums = Equip_SimInfo.objects.filter(equip_id__equip_agency=current_user.user_agency).count()
  347. else:
  348. print("---管理员")
  349. if e_id:
  350. simlist = Equip_SimInfo.objects.filter(equip_id__equip_id__contains=e_id)[(10*(page-1)):(page*10)]
  351. nums = Equip_SimInfo.objects.filter(equip_id__equip_id__contains=e_id).count()
  352. elif iccid:
  353. simlist = Equip_SimInfo.objects.filter(iccid__contains=iccid)[(10*(page-1)):(page*10)]
  354. nums = Equip_SimInfo.objects.filter(iccid__contains=iccid).count()
  355. elif status:
  356. status = int(status)
  357. simlist = Equip_SimInfo.objects.filter(account_status=status)[(10*(page-1)):(page*10)]
  358. nums = Equip_SimInfo.objects.filter(account_status=status).count()
  359. else:
  360. simlist = Equip_SimInfo.objects.all()[(10*(page-1)):(page*10)]
  361. nums = Equip_SimInfo.objects.all().count()
  362. return render(request, 'warnmanage/siminfoList.html', context={"simlist":simlist,"nums":nums})
  363. # 手机号保存
  364. class Sim_Save(ListView):
  365. def get(self,request):
  366. pass
  367. def post(self,request):
  368. e_id = request.POST.get("e_id")
  369. mobile = request.POST.get("mobile")
  370. try:
  371. sim_obj = Equip_SimInfo.objects.get(equip_id=e_id)
  372. sim_obj.sim_alarm = mobile
  373. sim_obj.save()
  374. except Exception as e:
  375. print(e)
  376. return HttpResponse("1")
  377. return HttpResponse("0")