views.py 64 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538
  1. # -*- coding: utf-8 -*-
  2. from django.shortcuts import render, redirect
  3. from django.conf.urls import url
  4. from django.http import HttpResponse
  5. from django.views.generic.base import View
  6. from django.views.generic import ListView
  7. from django.contrib import auth
  8. from django.contrib.auth.hashers import make_password, check_password
  9. from django.contrib.auth import authenticate, login as auth_login, logout
  10. from yfwlw_pro.settings import get_client_ip
  11. # from apps.AppInfoManage.models import Help, MyUser, User_Group,User_Log
  12. from apps.AppInfoManage.models import *
  13. from django.contrib.auth.decorators import login_required
  14. from django.db.models import Q
  15. import json
  16. from apps.EquipManage.views import CJSONEncoder
  17. from apps.SimInfo.views import get_simsinfo, get_siminfo
  18. import re
  19. import time
  20. import datetime,os
  21. from PIL import Image
  22. from apps.ReportManage.all_dict import qxz_dict
  23. # app登录:
  24. class app_login(View):
  25. def get(self, request):
  26. pass
  27. def post(self, request):
  28. user_name = request.POST.get('username')
  29. pass_word = request.POST.get('password')
  30. print('输入的用户名:', user_name)
  31. print('输入的密码:', pass_word)
  32. user = MyUser.objects.extra(
  33. where=['binary username=%s'], params=[user_name])
  34. print("user.exists():", user.exists())
  35. data = {"role":"","code":"0"}
  36. if user.exists() == False:
  37. data = {"role":"","code":"1"}
  38. data = json.dumps(data)
  39. return HttpResponse(data)
  40. else:
  41. user = MyUser.objects.get(username=user_name)
  42. if user.is_active != True:
  43. data = {"role":"","code":"2"}
  44. data = json.dumps(data)
  45. return HttpResponse(data)
  46. else:
  47. if check_password(pass_word, user.password) != True:
  48. data = {"role":"","code":"3"}
  49. print('密码错误')
  50. data = json.dumps(data)
  51. return HttpResponse(data)
  52. else:
  53. print('登陆成功')
  54. auth_user = authenticate(
  55. username=user_name, password=pass_word)
  56. auth_login(request, auth_user)
  57. # 将当前登录的用户名写入session
  58. request.session['username'] = user_name
  59. if user.is_superuser:
  60. role = "superuser"
  61. elif user.is_staff:
  62. role = "staff"
  63. elif user.is_agency:
  64. role = "agency"
  65. else:
  66. role = "user"
  67. # 记录用户操作记录:
  68. User_Log.objects.create(
  69. log_user=request.user.username, log_ip=get_client_ip(request), log_desc='app登录')
  70. data = {"role":role,"code":"0"}
  71. data = json.dumps(data)
  72. print("data:",data)
  73. return HttpResponse(data)
  74. # 退出APP登录:
  75. @login_required
  76. def app_logout(request):
  77. username = request.POST.get('username')
  78. print("用户退出")
  79. # 删除session
  80. del request.session['username']
  81. auth.logout(request)
  82. data = "0"
  83. return HttpResponse(data)
  84. # 个人信息:
  85. class app_user_info(View):
  86. def get(self, request):
  87. pass
  88. def post(self, request):
  89. req = request.POST.get('req')
  90. user_name = request.user.username
  91. if req == "info":
  92. user = MyUser.objects.filter(username=user_name)
  93. for x in user:
  94. data = {"username": x.username,
  95. "email": x.email,
  96. "user_phone": x.user_phone,
  97. "user_pro": x.user_pro,
  98. "user_city": x.user_city,
  99. "user_area": x.user_area,
  100. "user_picture":str(x.user_picture)
  101. }
  102. data = json.dumps(data)
  103. print("data:",data)
  104. return HttpResponse(data)
  105. elif req == "change_info":
  106. user = MyUser.objects.get(username=user_name)
  107. user.user_phone = request.POST.get('phone')
  108. user.user_pro = request.POST.get('province')
  109. user.user_city = request.POST.get('city')
  110. user.user_area = request.POST.get('area')
  111. print("phone:", request.POST.get('phone'))
  112. print("province:", request.POST.get('province'))
  113. print("city:", request.POST.get('city'))
  114. print("area:", request.POST.get('area'))
  115. try:
  116. user.save()
  117. User_Log.objects.create(log_user=request.user.username,
  118. log_ip=request.META['REMOTE_ADDR'], log_desc='修改个人信息')
  119. data = "0"
  120. return HttpResponse(data)
  121. except:
  122. data = "1"
  123. return HttpResponse(data)
  124. # 修改头像:
  125. elif req == "change_photo":
  126. user = MyUser.objects.get(username=user_name)
  127. user_photo = request.FILES.get('file')
  128. print("APP修改用户头像:", user_photo)
  129. user_photo_dir = 'user_photo/'
  130. # 判断如果路径不存在,即创建路径
  131. if os.path.exists(user_photo_dir) == False:
  132. os.makedirs(user_photo_dir)
  133. img = Image.open(user_photo)
  134. img.save(user_photo_dir + user_name+".png")
  135. new_photo = user_photo_dir + user_name+".png"
  136. # 数据库关联设备,并在照片的表中存入路径:
  137. user.user_picture = new_photo
  138. user.save()
  139. data = "0"
  140. return HttpResponse(data)
  141. # 设备列表:
  142. class app_equip_list(View):
  143. def get(self, request):
  144. pass
  145. def post(self, request):
  146. filt = request.POST.get('filter')
  147. print("filt:", filt)
  148. page = int(request.POST.get('page'))
  149. print("page:", page)
  150. current_user = request.session.get('username')
  151. print("current_user:", current_user)
  152. current_user = MyUser.objects.get(username=current_user)
  153. if filt == "":
  154. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  155. print("---不是管理员")
  156. equip_list = Equip.objects.filter(equip_user=current_user)
  157. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  158. print("---经销商")
  159. equip_list = Equip.objects.filter(equip_agency=current_user.user_agency)
  160. else:
  161. print("---管理员")
  162. equip_list = Equip.objects.all()
  163. else:
  164. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  165. print("---不是管理员")
  166. equip_list = Equip.objects.filter(Q(equip_user=current_user, equip_id__contains=filt) | Q(
  167. equip_user=current_user, equip_name__contains=filt))
  168. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  169. print("---经销商")
  170. equip_list = Equip.objects.filter(Q(equip_agency=current_user.user_agency, equip_id__contains=filt) | Q(
  171. equip_agency=current_user.user_agency, equip_name__contains=filt))
  172. else:
  173. print("---管理员")
  174. equip_list = Equip.objects.filter(
  175. Q(equip_id__contains=filt) | Q(equip_name__contains=filt))
  176. nums = equip_list.count()
  177. equip_list = equip_list[(10*(page-1)):(page*10)]
  178. data = {'nums': nums, 'dat': ""}
  179. dat = []
  180. for i in equip_list:
  181. sta1 = Equip.objects.filter(equip_id=i.equip_id).select_related()
  182. for x in sta1:
  183. try:
  184. sta2 = {"equip_id": x.equip_id,
  185. "equip_user": x.equip_user.username,
  186. "equip_name": x.equip_name,
  187. "equip_type": x.equip_type.type_id}
  188. except AttributeError:
  189. sta2 = {"equip_id": x.equip_id,
  190. "equip_user": "",
  191. "equip_name": x.equip_name,
  192. "equip_type": x.equip_type.type_id}
  193. dat.append(sta2)
  194. User_Log.objects.create(log_user=request.user.username,
  195. log_ip=request.META['REMOTE_ADDR'], log_desc='设备列表')
  196. data['dat'] = dat
  197. data = json.dumps(data, cls=CJSONEncoder)
  198. print("data:", data)
  199. return HttpResponse(data)
  200. # 设备列表详情:
  201. class app_equip_list_detail(View):
  202. def post(self, request):
  203. equip_id = request.POST.get('equip_id')
  204. x = Equip.objects.get(equip_id=equip_id)
  205. try:
  206. dat = {"equip_id": x.equip_id,
  207. "equip_user": x.equip_user.username,
  208. "equip_name": x.equip_name,
  209. "equip_add_time": x.equip_add_time,
  210. "equip_type": x.equip_type.type_id,
  211. "equip_location": x.equip_location}
  212. except AttributeError:
  213. dat = {"equip_id": x.equip_id,
  214. "equip_user": "",
  215. "equip_name": x.equip_name,
  216. "equip_add_time": x.equip_add_time,
  217. "equip_type": x.equip_type.type_id,
  218. "equip_location": x.equip_location}
  219. # User_Log.objects.create(
  220. # log_user=request.user.username, log_ip=request.META['REMOTE_ADDR'], log_desc='设备列表')
  221. data = json.dumps(dat, cls=CJSONEncoder)
  222. print("data:", data)
  223. return HttpResponse(data)
  224. # 设备管理:
  225. class app_equipmanage(View):
  226. def post(self, request):
  227. etype = request.POST.get('etype')
  228. print("etype:", etype)
  229. if etype == "scd":
  230. etype = SCDstatus
  231. elif etype == "cbd":
  232. etype = CBDstatus
  233. elif etype == "qxz":
  234. etype = QXZstatus
  235. elif etype == "bzy":
  236. etype = BZYstatus
  237. elif etype == "xycb":
  238. etype = YBQstatus
  239. filt = request.POST.get('filter')
  240. print("filt:", filt)
  241. page = int(request.POST.get('page'))
  242. print("page:", page)
  243. # 读取当前用户:
  244. current_user = request.session.get('username')
  245. print("current_user:", current_user)
  246. current_user = MyUser.objects.get(username=current_user)
  247. data = {'nums': "", 'dat': ""}
  248. if filt == "":
  249. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  250. print("---不是管理员")
  251. sta1 = etype.objects.filter(
  252. equip_id__equip_user=current_user)
  253. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  254. print("---经销商")
  255. sta1 = etype.objects.filter(
  256. equip_id__equip_agency=current_user.user_agency)
  257. else:
  258. print("---管理员")
  259. sta1 = etype.objects.all()
  260. else:
  261. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  262. print("---不是管理员")
  263. sta1 = etype.objects.filter(Q(equip_id__equip_user=current_user, equip_id__equip_id__contains=filt) | Q(
  264. equip_id__equip_user=current_user, equip_id__equip_name__contains=filt))
  265. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  266. print("---经销商")
  267. sta1 = etype.objects.filter(Q(equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=filt) | Q(
  268. equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=filt))
  269. else:
  270. print("---管理员")
  271. sta1 = etype.objects.filter(
  272. Q(equip_id__equip_id__contains=filt) | Q(equip_id__equip_name__contains=filt))
  273. nums = sta1.count()
  274. sta1 = sta1[(10*(page-1)):(page*10)]
  275. # if etype == "qxz":
  276. # sta2 = [{"equip_id": x.equip_id.equip_id, "upl_time": x.upl_time,
  277. # "equip_name": x.equip_id.equip_name} for x in sta1]
  278. # data['nums'] = nums
  279. # data['dat'] = sta2
  280. # data = json.dumps(data, cls=CJSONEncoder, indent=4)
  281. # # print("data:",data)
  282. # return HttpResponse(data)
  283. if request.POST.get('etype') == "xycb":
  284. try:
  285. sta2 = [{"equip_id": x.equip_id.equip_id, "upl_time": x.upl_time,
  286. "equip_name": x.equip_id.equip_name,"equip_code":x.equip_code,"type":x.sex_type,
  287. "is_online": x.is_online, "off_time": x.off_time} for x in sta1]
  288. except:
  289. sta2 = [{"equip_id": x.equip_id.equip_id, "upl_time": x.upl_time,
  290. "equip_name": x.equip_id.equip_name,"equip_code":x.equip_code,"type":x.sex_type} for x in sta1]
  291. data['nums'] = nums
  292. data['dat'] = sta2
  293. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  294. # print("data:",data)
  295. return HttpResponse(data)
  296. try:
  297. sta2 = [{"equip_id": x.equip_id.equip_id, "upl_time": x.upl_time,
  298. "equip_name": x.equip_id.equip_name,
  299. "is_online": x.is_online, "off_time": x.off_time} for x in sta1]
  300. except:
  301. sta2 = [{"equip_id": x.equip_id.equip_id, "upl_time": x.upl_time,
  302. "equip_name": x.equip_id.equip_name} for x in sta1]
  303. data['nums'] = nums
  304. data['dat'] = sta2
  305. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  306. # print("data:",data)
  307. return HttpResponse(data)
  308. # 设备管理详情:
  309. class app_equipmanage_detail(View):
  310. def post(self, request):
  311. etype = request.POST.get('etype')
  312. print("etype:", etype)
  313. equip_id = request.POST.get('equip_id')
  314. print("equip_id:", equip_id)
  315. if etype == "scd":
  316. x = SCDstatus.objects.get(equip_id__equip_id=equip_id)
  317. sta2 = {"scd_status": x.scd_status, "ds": x.ds, "upl_time": x.upl_time,
  318. "equip_name": x.equip_id.equip_name,
  319. "is_online": x.is_online, "off_time": x.off_time}
  320. elif etype == "cbd":
  321. x = CBDstatus.objects.get(equip_id__equip_id=equip_id)
  322. sta2 = {"cbd_status": x.cbd_status, "upl_time": x.upl_time,
  323. "paramconf": x.paramconf, "equip_name": x.equip_id.equip_name,
  324. "is_online": x.is_online, "off_time": x.off_time}
  325. elif etype == "qxz":
  326. sta2 = []
  327. try:
  328. sta = QXZstatus.objects.get(equip_id=equip_id)
  329. for i in range(len((eval(sta.qxz_status)["data"]))):
  330. sta2.append({"unit": qxz_dict[eval(sta.qxz_status)['data'][i]["eNum"]],"equip_name": sta.equip_id.equip_name,
  331. "upl_time": sta.upl_time, "equip_id": sta.equip_id_id, "eValue": eval(sta.qxz_status)["data"][i]["eValue"],
  332. "eKey": eval(sta.qxz_status)["data"][i]["eKey"]})
  333. except Exception as exc:
  334. print(exc)
  335. elif etype == "bzy":
  336. x = BZYstatus.objects.get(equip_id__equip_id=equip_id)
  337. # sta2 = {"bzy_status": x.bzy_status, "upl_time": x.upl_time,
  338. # "equip_name": x.equip_id.equip_name,"is_online": x.is_online, "off_time": x.off_time}
  339. sta2 = {"bzy_status": x.bzy_status, "upl_time": x.upl_time,
  340. "equip_name": x.equip_id.equip_name,
  341. "glass": x.glass, "liquid":x.liquid, "is_online": x.is_online,
  342. "off_time": x.off_time}
  343. elif etype == "xycb":
  344. x = YBQstatus.objects.get(equip_id__equip_id=equip_id)
  345. sta2 = {"ybq_status": x.ybq_status, "upl_time": x.upl_time,
  346. "equip_name": x.equip_id.equip_name,"type":x.sex_type,
  347. "is_online": x.is_online,"off_time": x.off_time}
  348. data = json.dumps(sta2, cls=CJSONEncoder, indent=4)
  349. # print("data:",data)
  350. return HttpResponse(data)
  351. # 报表管理:
  352. class app_reportmanage(View):
  353. def post(self, request):
  354. etype = request.POST.get('etype')
  355. print("etype:", etype)
  356. filt = request.POST.get('filter')
  357. print("filt:", filt)
  358. page = int(request.POST.get('page'))
  359. print("page:", page)
  360. # 读取当前用户:
  361. current_user = request.session.get('username')
  362. print("current_user:", current_user)
  363. current_user = MyUser.objects.get(username=current_user)
  364. data = {'nums': "", 'dat': ""}
  365. if filt == "":
  366. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  367. print("---不是管理员")
  368. if etype == "scd":
  369. equip_list = Equip.objects.filter(
  370. equip_type=2, equip_user=current_user).values()
  371. elif etype == "cbd":
  372. equip_list = Equip.objects.filter(
  373. equip_type=3, equip_user=current_user).values()
  374. elif etype == "qxz":
  375. equip_list = Equip.objects.filter(
  376. equip_type=5, equip_user=current_user).values()
  377. elif etype == "bzy":
  378. equip_list = Equip.objects.filter(
  379. equip_type=7, equip_user=current_user).values()
  380. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  381. print("---经销商")
  382. if etype == "scd":
  383. equip_list = Equip.objects.filter(
  384. equip_type=2, equip_agency=current_user.user_agency).values()
  385. elif etype == "cbd":
  386. equip_list = Equip.objects.filter(
  387. equip_type=3, equip_agency=current_user.user_agency).values()
  388. elif etype == "qxz":
  389. equip_list = Equip.objects.filter(
  390. equip_type=5, equip_agency=current_user.user_agency).values()
  391. elif etype == "bzy":
  392. equip_list = Equip.objects.filter(
  393. equip_type=7, equip_agency=current_user.user_agency).values()
  394. else:
  395. print("---管理员")
  396. if etype == "scd":
  397. equip_list = Equip.objects.filter(equip_type=2).values()
  398. elif etype == "cbd":
  399. equip_list = Equip.objects.filter(equip_type=3).values()
  400. elif etype == "qxz":
  401. equip_list = Equip.objects.filter(equip_type=5).values()
  402. elif etype == "bzy":
  403. equip_list = Equip.objects.filter(equip_type=7).values()
  404. else:
  405. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  406. print("---不是管理员")
  407. if etype == "scd":
  408. equip_list = Equip.objects.filter(Q(equip_type=2, equip_user=current_user, equip_id__contains=filt) | Q(
  409. equip_type=2, equip_user=current_user, equip_name__contains=filt)).values()
  410. elif etype == "cbd":
  411. equip_list = Equip.objects.filter(Q(equip_type=3, equip_user=current_user, equip_id__contains=filt) | Q(
  412. equip_type=3, equip_user=current_user, equip_name__contains=filt)).values()
  413. elif etype == "qxz":
  414. equip_list = Equip.objects.filter(Q(equip_type=5, equip_user=current_user, equip_id__contains=filt) | Q(
  415. equip_type=5, equip_user=current_user, equip_name__contains=filt)).values()
  416. elif etype == "bzy":
  417. equip_list = Equip.objects.filter(Q(equip_type=7, equip_user=current_user, equip_id__contains=filt) | Q(
  418. equip_type=7, equip_user=current_user, equip_name__contains=filt)).values()
  419. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  420. print("---经销商")
  421. if etype == "scd":
  422. equip_list = Equip.objects.filter(Q(equip_type=2, equip_agency=current_user.user_agency, equip_id__contains=filt) | Q(
  423. equip_type=2, equip_agency=current_user.user_agency, equip_name__contains=filt)).values()
  424. elif etype == "cbd":
  425. equip_list = Equip.objects.filter(Q(equip_type=3, equip_agency=current_user.user_agency, equip_id__contains=filt) | Q(
  426. equip_type=3, equip_agency=current_user.user_agency, equip_name__contains=filt)).values()
  427. elif etype == "qxz":
  428. equip_list = Equip.objects.filter(Q(equip_type=5, equip_agency=current_user.user_agency, equip_id__contains=filt) | Q(
  429. equip_type=5, equip_agency=current_user.user_agency, equip_name__contains=filt)).values()
  430. elif etype == "bzy":
  431. equip_list = Equip.objects.filter(Q(equip_type=7, equip_agency=current_user.user_agency, equip_id__contains=filt) | Q(
  432. equip_type=7, equip_agency=current_user.user_agency, equip_name__contains=filt)).values()
  433. else:
  434. print("---管理员")
  435. if etype == "scd":
  436. equip_list = Equip.objects.filter(Q(equip_type=2, equip_id__contains=filt) | Q(
  437. equip_type=2, equip_name__contains=filt)).values()
  438. elif etype == "cbd":
  439. equip_list = Equip.objects.filter(Q(equip_type=3, equip_id__contains=filt) | Q(
  440. equip_type=3, equip_name__contains=filt)).values()
  441. elif etype == "qxz":
  442. equip_list = Equip.objects.filter(Q(equip_type=5, equip_id__contains=filt) | Q(
  443. equip_type=5, equip_name__contains=filt)).values()
  444. elif etype == "bzy":
  445. equip_list = Equip.objects.filter(Q(equip_type=7, equip_id__contains=filt) | Q(
  446. equip_type=7, equip_name__contains=filt)).values()
  447. dat = []
  448. for i in equip_list:
  449. # if etype == "scd":
  450. # sta1 = RecentSCDdata.objects.filter(
  451. # equip_id=i.equip_id)
  452. # # 关键步骤:从测报灯数据列表模型中,筛选出当前用户所拥有的设备的设备id的数据记录,然后进行倒叙排列,最后切片操作,只取第一条数据,即为最新
  453. # elif etype == "cbd":
  454. # sta1 = CBDdata.objects.filter(
  455. # equip_id=i.equip_id).order_by('-upl_time')[:1]
  456. # elif etype == "qxz":
  457. # sta1 = QXZstatus.objects.filter(
  458. # equip_id=i.equip_id)
  459. # elif etype == "bzy":
  460. # sta1 = BZYstatus.objects.filter(
  461. # equip_id=i.equip_id)
  462. # for x in sta1:
  463. # sta2 = {"equip_id": x.equip_id.equip_id, "upl_time": x.upl_time,
  464. # "equip_name": x.equip_id.equip_name}
  465. sta2 = {"equip_id": i["equip_id"],"equip_name": i["equip_name"]}
  466. dat.append(sta2)
  467. nums = len(dat)
  468. data['nums'] = nums
  469. data['dat'] = dat[(10*(page-1)):(page*10)]
  470. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  471. # print("data:",data)
  472. return HttpResponse(data)
  473. # 单个设备的报表展开:
  474. class app_reportmanage_unflod(View):
  475. def post(self, request):
  476. etype = request.POST.get('etype')
  477. print("etype:", etype)
  478. equip_id = request.POST.get('equip_id')
  479. print("equip_id:", equip_id)
  480. if etype == "scd":
  481. sta1 = SCDdata.objects.filter(
  482. equip_id__equip_id=equip_id).order_by("-upl_time")[:1]
  483. for x in sta1:
  484. sta2 = {"equip_name": x.equip_id.equip_name,
  485. "scd_data": x.scd_data, "ds": x.ds, "upl_time": x.upl_time}
  486. elif etype == "cbd":
  487. sta1 = RecentCBDdata.objects.filter(
  488. equip_id__equip_id=equip_id)
  489. for x in sta1:
  490. sta2 = {"equip_name": x.equip_id.equip_name,"discern":x.disc,
  491. "cbd_data": x.cbd_data, "upl_time": x.upl_time}
  492. elif etype == "qxz":
  493. sta1 = QXZstatus.objects.filter(
  494. equip_id__equip_id=equip_id)
  495. for x in sta1:
  496. sta2 = {"equip_name": x.equip_id.equip_name,
  497. "qxz_data": x.qxz_status, "upl_time": x.upl_time}
  498. elif etype == "bzy":
  499. sta1 = BZYstatus.objects.filter(
  500. equip_id__equip_id=equip_id)
  501. for x in sta1:
  502. sta2 = {"equip_name": x.equip_id.equip_name,
  503. "bzy_data": x.bzy_status, "upl_time": x.upl_time}
  504. data = json.dumps(sta2, cls=CJSONEncoder, indent=4)
  505. # print("data:",data)
  506. return HttpResponse(data)
  507. # 单个设备的详情报表:
  508. class app_reportmanage_detail(View):
  509. def post(self, request):
  510. filter_begin = request.POST.get('filter_begin')
  511. print("filter_begin:", filter_begin)
  512. filter_end = request.POST.get('filter_end')
  513. print("filter_end:", filter_end)
  514. equip_id = request.POST.get('equip_id')
  515. print("equip_id:", equip_id)
  516. page = int(request.POST.get('page'))
  517. print("page:", page)
  518. etype = request.POST.get('etype')
  519. print("etype:", etype)
  520. if filter_begin == "":
  521. if etype == "scd":
  522. sta1 = SCDdata.objects.filter(equip_id=equip_id).values()
  523. elif etype == "cbd":
  524. sta1 = CBDdata.objects.filter(equip_id=equip_id)
  525. elif etype == "qxz":
  526. sta1 = QXZdata.objects.filter(equip_id=equip_id)
  527. elif etype == "bzy":
  528. sta1 = BZYdata.objects.filter(equip_id=equip_id)
  529. elif etype == "xycb":
  530. sta1 = YBQdata.objects.filter(equip_id=equip_id)
  531. else:
  532. begindate = re.findall(r"\d+\.?\d*", filter_begin)
  533. enddate = re.findall(r"\d+\.?\d*", filter_end)
  534. start_date = datetime.date(
  535. int(begindate[0]), int(begindate[1]), int(begindate[2]))
  536. end_date = datetime.date(
  537. int(enddate[0]), int(enddate[1]), int(enddate[2]))
  538. if etype == "scd":
  539. sta1 = SCDdata.objects.filter(
  540. equip_id=equip_id, upl_time__range=(start_date, end_date)).values()
  541. elif etype == "cbd":
  542. sta1 = CBDdata.objects.filter(
  543. equip_id=equip_id, upl_time__range=(start_date, end_date))
  544. elif etype == "qxz":
  545. sta1 = QXZdata.objects.filter(
  546. equip_id=equip_id, upl_time__range=(start_date, end_date))
  547. elif etype == "bzy":
  548. sta1 = BZYdata.objects.filter(
  549. equip_id=equip_id, upl_time__range=(start_date, end_date))
  550. elif etype == "xycb":
  551. sta1 = YBQdata.objects.filter(
  552. equip_id=equip_id, upl_time__range=(start_date, end_date))
  553. if etype == "scd":
  554. sta2 = [{# "equip_name": x.equip_id.equip_name,
  555. "scd_data": x["scd_data"],
  556. "ds": x["ds"], "upl_time": x["upl_time"]}for x in sta1]
  557. elif etype == "cbd":
  558. sta2 = [{"equip_name": x.equip_id.equip_name,
  559. "cbd_data": x.cbd_data,
  560. "upl_time": x.upl_time}for x in sta1]
  561. elif etype == "qxz":
  562. sta2 = [{"equip_name": x.equip_id.equip_name,
  563. "qxz_data": x.qxz_data,
  564. "upl_time": x.upl_time}for x in sta1]
  565. elif etype == "bzy":
  566. sta2 = [{"equip_name": x.equip_id.equip_name,
  567. "bzy_data": x.bzy_data,
  568. "upl_time": x.upl_time}for x in sta1]
  569. elif etype == "xycb":
  570. sta2 = [{"equip_name": x.equip_id.equip_name,
  571. "ybq_data": x.ybq_data,
  572. "upl_time": x.upl_time}for x in sta1]
  573. data = {'nums': "", 'dat': ""}
  574. nums = len(sta2)
  575. data['nums'] = nums
  576. data['dat'] = sta2[(10*(page-1)):(page*10)]
  577. data = json.dumps(data, cls=CJSONEncoder, indent=4)
  578. # print("data:",data)
  579. return HttpResponse(data)
  580. # :
  581. class app_cbd_img(View):
  582. def post(self, request):
  583. imei = request.POST.get('equip_id')
  584. print("imei:", imei)
  585. # 获得当前页:
  586. page = int(request.POST.get('page'))
  587. print("page:", page)
  588. # 从数据库中取出照片在服务器存放路径:
  589. img = CBDphoto.objects.filter(equip_id=imei)
  590. nums = img.count()
  591. img = img[(10*(page-1)):(page*10)]
  592. equip_name = Equip.objects.get(equip_id=imei).equip_name
  593. disc = RecentCBDdata.objects.get(equip_id=imei)
  594. # 当前用户:返回用户,前端判断是否显示删除图片按钮
  595. current_user = request.session.get('username')
  596. print("current_user:", current_user)
  597. img_dat = [{"upl_time": x.upl_time,
  598. "addr": x.addr}for x in img]
  599. dat = {'img':img_dat,
  600. 'nums':nums,
  601. 'equip_name':equip_name,
  602. 'disc':disc.disc,
  603. 'equip_id':imei
  604. }
  605. data = json.dumps(dat, cls=CJSONEncoder, indent=4)
  606. print("data:",data)
  607. return HttpResponse(data)
  608. # :
  609. class app_ybq_img(View):
  610. def post(self, request):
  611. imei = request.POST.get('equip_id')
  612. print("imei:", imei)
  613. # 获得当前页:
  614. page = int(request.POST.get('page'))
  615. print("page:", page)
  616. # 从数据库中取出照片在服务器存放路径:
  617. img = YBQphoto.objects.filter(equip_id=imei)
  618. nums = img.count()
  619. img = img[(10*(page-1)):(page*10)]
  620. equip_name = Equip.objects.get(equip_id=imei).equip_name
  621. # 当前用户:返回用户,前端判断是否显示删除图片按钮
  622. current_user = request.session.get('username')
  623. print("current_user:", current_user)
  624. img_dat = [{"upl_time": x.upl_time,
  625. "addr": x.addr}for x in img]
  626. dat = {'img':img_dat,
  627. 'nums':nums,
  628. 'equip_name':equip_name,
  629. 'equip_id':imei
  630. }
  631. data = json.dumps(dat, cls=CJSONEncoder, indent=4)
  632. print("data:",data)
  633. return HttpResponse(data)
  634. # 孢子仪图片接口
  635. class app_bzy_img(View):
  636. def post(self, request):
  637. imei = request.POST.get('equip_id')
  638. print("imei:", imei)
  639. # 获得当前页:
  640. page = int(request.POST.get('page'))
  641. print("page:", page)
  642. # 从数据库中取出照片在服务器存放路径:
  643. img = BZYphoto.objects.filter(equip_id=imei)
  644. nums = img.count()
  645. img = img[(5*(page-1)):(page*5)]
  646. equip_name = Equip.objects.get(equip_id=imei).equip_name
  647. # 当前用户:返回用户,前端判断是否显示删除图片按钮
  648. current_user = request.session.get('username')
  649. print("current_user:", current_user)
  650. img_dat = [{"upl_time": x.upl_time,
  651. "addr": x.addr}for x in img]
  652. dat = {'img':img_dat,
  653. 'nums':nums,
  654. 'equip_name':equip_name,
  655. 'equip_id':imei
  656. }
  657. data = json.dumps(dat, cls=CJSONEncoder, indent=4)
  658. print("data:",data)
  659. return HttpResponse(data)
  660. # 用户页面
  661. class app_usermanage_list(View):
  662. def post(self,request):
  663. current_user = request.session.get('username')
  664. current_user = MyUser.objects.get(username=current_user)
  665. nums = MyUser.objects.all().count()
  666. print("筛选")
  667. user_name = request.POST.get("username")
  668. page = int(request.POST.get('page'))
  669. print("user_name:",user_name)
  670. print("page:", page)
  671. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  672. pass
  673. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  674. print("----代理商")
  675. # 搜索条件为空,获取所有用户
  676. if user_name == '':
  677. user_list = MyUser.objects.filter(user_agency=current_user.user_agency)
  678. # 搜索条件存在,根据用户名搜索用户
  679. elif user_name != '':
  680. user_list = MyUser.objects.filter(user_agency=current_user.user_agency,username__contains=user_name)
  681. else:
  682. print("----管理员")
  683. # 搜索条件为空,获取所有用户
  684. if user_name == '':
  685. user_list = MyUser.objects.all()
  686. # 搜索条件存在,根据用户名搜索用户
  687. elif user_name != '':
  688. user_list = MyUser.objects.filter(username__contains=user_name)
  689. dat = []
  690. for i in user_list[(10*(page-1)):(page*10)]:
  691. sta1 = MyUser.objects.filter(username=i.username)
  692. try:
  693. for x in sta1:
  694. if x.is_superuser == 1 and x.is_staff == 1:
  695. role = "超级管理员"
  696. elif x.is_superuser == 0 and x.is_staff == 1:
  697. role = "管理员"
  698. elif x.is_superuser == 0 and x.is_staff == 0:
  699. role = "用户"
  700. sta2 = {"userId": x.id, "user_name": x.username, "user_email": x.email,
  701. "user_type": role}
  702. except AttributeError:
  703. for x in sta1:
  704. if x.is_superuser == 1 and x.is_staff == 1:
  705. role = "超级管理员"
  706. elif x.is_superuser == 0 and x.is_staff == 1:
  707. role = "管理员"
  708. elif x.is_superuser == 0 and x.is_staff == 0:
  709. role = "用户"
  710. sta2 = {"userId": x.id, "user_name": x.username, "user_email": x.email,
  711. "user_type": role}
  712. dat.append(sta2)
  713. data = {"nums":nums,"dat":dat}
  714. data = json.dumps(data, cls=CJSONEncoder)
  715. # print("++++++++++++++++++",data)
  716. return HttpResponse(data)
  717. # 用户详情页面
  718. class app_usermanage_detail(View):
  719. def post(self,request):
  720. current_user = request.user.username
  721. userId = request.POST.get("userId")
  722. x = MyUser.objects.get(id=userId)
  723. groups = User_Group.objects.all()
  724. group_list = []
  725. for i in groups:
  726. group_list.append(i.name)
  727. group = Group.objects.filter(user=x)
  728. print("dskfsadfjkd",type(group))
  729. if group.count() == 0:
  730. group_name = ""
  731. else:
  732. group_name = group[0].name
  733. try:
  734. if x.is_superuser == 1 and x.is_staff == 1:
  735. # 超级管理员
  736. role = 0
  737. elif x.is_superuser == 0 and x.is_staff == 1:
  738. # 管理员
  739. role = 1
  740. elif x.is_superuser == 0 and x.is_staff == 0:
  741. # 普通用户
  742. role = 2
  743. dat = {"userId":x.id,
  744. "username":x.username,
  745. "email":x.email,
  746. "tel":x.user_phone,
  747. "province":x.user_pro, # 省
  748. "city":x.user_city, # 市
  749. "area":x.user_area, # 县/区
  750. "usertype":role,
  751. "latestTime":x.last_login,
  752. "creatTime":x.date_joined,
  753. "user_groups":group_list,
  754. "user_group":group_name,
  755. "user_remark":x.user_remark,
  756. "active":x.is_active}
  757. except AttributeError:
  758. if x.is_superuser == 1 and x.is_staff == 1:
  759. role = 0
  760. elif x.is_superuser == 0 and x.is_staff == 1:
  761. role = 1
  762. elif x.is_superuser == 0 and x.is_staff == 0:
  763. role = 2
  764. dat = {"userId":x.id,
  765. "username":x.username,
  766. "email":x.email,
  767. "tel":x.user_phone,
  768. "province":x.user_pro,
  769. "city":x.user_city,
  770. "area":x.user_area,
  771. "usertype":role,
  772. "latestTime":x.last_login,
  773. "creatTime":x.date_joined,
  774. "user_groups":group_list,
  775. "user_group":group_name,
  776. "user_remark":x.user_remark,
  777. "active":x.is_active}
  778. data = json.dumps(dat,cls=CJSONEncoder)
  779. print("data:",data)
  780. return HttpResponse(data)
  781. # 用户编辑页面
  782. class app_usermanage_edit(View):
  783. def post(self,request):
  784. # current_user = request.user.username
  785. postname = request.POST.get('username')
  786. uname = MyUser.objects.get(username=postname)
  787. uname.user_phone = request.POST.get('userphone')
  788. post_type = request.POST.get('user_type')
  789. # 角色:即用户组;
  790. post_groups = request.POST.get('user_groups')
  791. print("post_groups:", post_groups)
  792. if post_groups != '0':
  793. # 获取当前用户的组:
  794. post_groups = User_Group.objects.get(id=post_groups)
  795. print("post_groups:", post_groups)
  796. groups = Group.objects.filter(user=uname)
  797. uname.groups.clear()
  798. uname.groups.add(post_groups)
  799. # 省市区:
  800. uname.user_pro = request.POST.get('province')
  801. print(request.POST.get('province'))
  802. uname.user_city = request.POST.get('city')
  803. print(request.POST.get('city'))
  804. uname.user_area = request.POST.get('area')
  805. print(request.POST.get('area'))
  806. uname.user_remark = request.POST.get('user_remarks')
  807. print("post_type", post_type)
  808. if post_type == '0':
  809. uname.is_superuser = True
  810. uname.is_staff = True
  811. print("post_type")
  812. elif post_type == '1':
  813. uname.is_superuser = False
  814. uname.is_staff = True
  815. print("post_type")
  816. elif post_type == '2':
  817. uname.is_superuser = False
  818. uname.is_staff = False
  819. print("post_type")
  820. try:
  821. uname.save()
  822. except Exception as e:
  823. print("数据保存失败:",e)
  824. data = "1"
  825. return HttpResponse(data)
  826. # User_Log.objects.create(log_user=request.user.username,
  827. # log_ip=request.META['REMOTE_ADDR'], log_desc='系统管理-用户管理--编辑用户:修改用户'+username+"的信息")
  828. data = "0"
  829. return HttpResponse(data)
  830. # 用户组列表管理
  831. class app_user_group(View):
  832. def post(self,request):
  833. f_name = request.POST.get('fName')
  834. page = int(request.POST.get('page'))
  835. # 如果搜索名存在
  836. if f_name:
  837. sta = User_Group.objects.filter(name__contains=f_name)[(10*(page-1)):(page*10)]
  838. nums = len(User_Group.objects.filter(name__contains=f_name))
  839. else:
  840. sta = User_Group.objects.all()[(10*(page-1)):(page*10)]
  841. nums = len(User_Group.objects.all())
  842. dat = []
  843. try:
  844. for x in sta:
  845. sta1 = {"group_name":x.name}
  846. dat.append(sta1)
  847. except AttributeError:
  848. for x in sta:
  849. sta1 = {"group_name":x.name}
  850. dat.append(sta1)
  851. data = {"nums":nums,"dat":dat}
  852. print("data:",data)
  853. data = json.dumps(data,cls=CJSONEncoder)
  854. return HttpResponse(data)
  855. # 用户组列表详情
  856. class app_user_group_details(View):
  857. def post(self,request):
  858. group_name = request.POST.get('name')
  859. x = User_Group.objects.get(name=group_name)
  860. data = {"logo":"%s"%x.role_logo,
  861. "username":x.name,
  862. "userremark":x.role_describe,
  863. "creatTime":x.role_cre_time,
  864. "copyright":x.role_footer}
  865. # print("data:",data)
  866. data = json.dumps(data,cls=CJSONEncoder)
  867. return HttpResponse(data)
  868. # 用户组列表编辑
  869. class app_user_group_edit(View):
  870. def post(self,request):
  871. current_group = request.POST.get('group')
  872. print("current_group:", current_group)
  873. group = User_Group.objects.get(name=current_group)
  874. footer = request.POST.get('footer')
  875. group_logo = request.FILES.get('upicture')
  876. if group_logo:
  877. group_logo_dir = 'home_logo/'
  878. # group_logo_dir = 'F:\\YFWLW\\yfwlw\\home_logo/'
  879. # 判断如果路径不存在,即创建路径
  880. if os.path.exists(group_logo_dir) == False:
  881. os.makedirs(group_logo_dir)
  882. img = Image.open(group_logo)
  883. img.save(group_logo_dir + current_group+".png")
  884. new_logo = group_logo_dir + current_group+".png"
  885. # new_logo = 'home_logo/' + current_group+".png"
  886. print("组页logo路径:", new_logo)
  887. # 数据库关联设备,并在照片的表中存入路径:
  888. group.role_logo = new_logo
  889. group.role_footer = footer
  890. try:
  891. group.save()
  892. except Exception as e:
  893. print("保存失败:",e)
  894. data = "1"
  895. return HttpResponse(data)
  896. data = "0"
  897. return HttpResponse(data)
  898. # 设备分配页面
  899. class app_equip_allot(View):
  900. def post(self,request):
  901. uname = request.POST.get('uname')
  902. page = int(request.POST.get('page'))
  903. print("page=",page)
  904. if uname:
  905. user_list = MyUser.objects.filter(username__contains=uname)
  906. else:
  907. # 接收当前用户
  908. current_user = request.session.get('username')
  909. print("current_user:", current_user)
  910. current_user = MyUser.objects.get(username=current_user)
  911. # 判断是经销商还是超级管理员
  912. if current_user.is_superuser == True or current_user.is_staff == True:
  913. user_list = MyUser.objects.all().order_by(
  914. "-date_joined")[(10*(page-1)):(page*10)]
  915. elif current_user.is_agency:
  916. user_list = MyUser.objects.filter(user_agency=current_user.user_agency).order_by(
  917. "-date_joined")[(10*(page-1)):(page*10)]
  918. # user_list = MyUser.objects.all()
  919. nums = user_list.count()
  920. user_list = user_list[(10*(page-1)):(page*10)]
  921. dat = []
  922. for x in user_list:
  923. try:
  924. sta = {"userid":x.id,"username":x.username,"email":x.email}
  925. except AttributeError:
  926. sta = {"userid":x.id,"username":x.username,"email":x.email}
  927. dat.append(sta)
  928. data = {'nums':nums,'dat':dat}
  929. data = json.dumps(data, cls=CJSONEncoder)
  930. User_Log.objects.create(log_user=request.user.username,
  931. log_ip=request.META['REMOTE_ADDR'], log_desc='设备分配')
  932. return HttpResponse(data)
  933. # 未分配设备列表
  934. class app_equip_allot_list(View):
  935. def post(self,request):
  936. userid = request.POST.get('userid')
  937. user_obj = MyUser.objects.get(id=userid)
  938. f_id = request.POST.get('f_id')
  939. page = int(request.POST.get('page'))
  940. print("page=",page)
  941. if f_id:
  942. equip_list = Equip.objects.filter(
  943. Q(equip_user=None, equip_id__contains=f_id) | Q(equip_user=user_obj, equip_id__contains=f_id))
  944. else:
  945. # 接收当前用户
  946. current_user = request.session.get('username')
  947. print("current_user:", current_user)
  948. current_user = MyUser.objects.get(username=current_user)
  949. # 判断是经销商还是超级管理员
  950. if current_user.is_superuser == True or current_user.is_staff == True:
  951. equip_list = Equip.objects.filter(
  952. Q(equip_user=None) | Q(equip_user=user_obj))
  953. elif current_user.is_agency:
  954. equip_list = Equip.objects.filter(
  955. Q(equip_agency=current_user.user_agency, equip_user=None) | Q(equip_agency=current_user.user_agency,
  956. equip_user=user_obj))
  957. # equip_list = Equip.objects.filter(
  958. # Q(equip_user=None) | Q(equip_user=user_obj))
  959. nums = equip_list.count()
  960. equip_list = equip_list[(10*(page-1)):(page*10)]
  961. dat = []
  962. for x in equip_list:
  963. if x.equip_user == user_obj:
  964. checked = "1"
  965. else:
  966. checked = "0"
  967. try:
  968. sta = {"checked":checked,
  969. "equipid":x.equip_id,
  970. "equipname":x.equip_name,
  971. "equiptype":'%s'%x.equip_type,
  972. "equip_add_time":x.equip_add_time,
  973. "equip_user":'%s'%x.equip_user}
  974. except AttributeError:
  975. sta = {"checked":checked,
  976. "equipid":x.equip_id,
  977. "equipname":x.equip_name,
  978. "equiptype":'%s'%x.equip_type,
  979. "equip_add_time":x.equip_add_time,
  980. "equip_user":'%s'%x.equip_user}
  981. dat.append(sta)
  982. data = {'nums':nums,'dat':dat}
  983. data = json.dumps(data, cls=CJSONEncoder)
  984. return HttpResponse(data)
  985. class app_equip_allot_confirm(View):
  986. def post(self,request):
  987. userid = request.POST.get('userid')
  988. user_obj = MyUser.objects.get(id=userid)
  989. equip_ids = request.POST.get('equip_ids')
  990. print("equip_ids=", equip_ids)
  991. equip_ids = json.loads(equip_ids)
  992. # equip_ids = equip_ids.split(',')
  993. # print("当前页的所有设备id:equip_ids=", equip_ids)
  994. # 获得选中的复选框:
  995. check_box_list = request.POST.get('check_box_list')
  996. print('check_box_list:', check_box_list)
  997. check_box_list = json.loads(check_box_list)
  998. no_check_box_list = []
  999. for i in equip_ids:
  1000. if i in check_box_list:
  1001. pass
  1002. else:
  1003. no_check_box_list.append(i)
  1004. print('no_check_box_list=', no_check_box_list)
  1005. try:
  1006. for checked_id in check_box_list:
  1007. choose_equip = Equip.objects.get(equip_id=checked_id)
  1008. # 如果选中的设备没有用户:即选中的设备 设备用户为None:
  1009. if choose_equip.equip_user == None: # 只有当选中的设备id对应的设备 没有用户时才分配
  1010. choose_equip.equip_user = user_obj
  1011. choose_equip.save() # 保存到数据库
  1012. # 取消分配:给当前用户取消已分配的设备;
  1013. for a in no_check_box_list:
  1014. choose_equip = Equip.objects.get(equip_id=a)
  1015. choose_equip.equip_user = None # 把设备的设备用户改为None,表示取消分配
  1016. choose_equip.save()
  1017. except Exception as e:
  1018. print(e)
  1019. data = "1"
  1020. data = "0"
  1021. User_Log.objects.create(log_user=request.user.username,
  1022. log_ip=request.META['REMOTE_ADDR'], log_desc='设备分配--分配设备')
  1023. return HttpResponse(data)
  1024. # 害虫识别接口
  1025. import requests
  1026. class app_insect_discern(View):
  1027. def post(self,request):
  1028. imageFile = request.FILES.get('imagefile')
  1029. imageFile = {"imageFile":imageFile}
  1030. username = 'yunfei'
  1031. uniqueKey = '84e6eb40f3a616dd14b1fefc75425006'
  1032. url = 'http://47.99.110.100:8080/recognizationSys/api/recognization'
  1033. data = {'imageType':'1','gis':'118.279643#31.221456','username':username,'uniqueKey':uniqueKey}
  1034. res = requests.post(url,data=data,files=imageFile)
  1035. return HttpResponse(res.text)
  1036. # 监控设备分页接口
  1037. class app_moni_page(View):
  1038. def post(self,request):
  1039. current_user = request.user.username
  1040. print("current_user:", current_user)
  1041. current_user = MyUser.objects.get(username=current_user)
  1042. page = request.POST.get('page')
  1043. page = int(page)
  1044. f_id = request.POST.get('f_id')
  1045. print("f_id:", f_id)
  1046. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  1047. # 用户
  1048. if f_id != "":
  1049. # equip_list = Equip.objects.filter(equip_type=6, equip_user=current_user, equip_id__contains=f_id)
  1050. equip_list = JKdata.objects.filter(equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id)
  1051. else:
  1052. # equip_list = Equip.objects.filter(equip_type=6, equip_user=current_user)
  1053. equip_list = JKdata.objects.filter(equip_id__equip_user=current_user)
  1054. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  1055. # 代理商
  1056. if f_id != "":
  1057. # equip_list = Equip.objects.filter(equip_type=6, equip_agency=current_user.user_agency, equip_id__contains=f_id)
  1058. equip_list = JKdata.objects.filter(equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id)
  1059. else:
  1060. # equip_list = Equip.objects.filter(equip_type=6, equip_agency=current_user.user_agency)
  1061. equip_list = JKdata.objects.filter(equip_id__equip_agency=current_user.user_agency)
  1062. else:
  1063. # 管理员
  1064. if f_id != "":
  1065. # equip_list = Equip.objects.filter(equip_type=6, equip_id__contains=f_id)
  1066. equip_list = JKdata.objects.filter(equip_id__equip_id__contains=f_id)
  1067. else:
  1068. # equip_list = Equip.objects.filter(equip_type=6)
  1069. equip_list = JKdata.objects.all()
  1070. e_ids = []
  1071. for x in equip_list:
  1072. n_d = {"equip_name":x.equip_id.equip_name, "equip_id":x.equip_id_id,"is_online":x.is_online}
  1073. e_ids.append(n_d)
  1074. nums = len(e_ids)
  1075. # print(nums)
  1076. ids = e_ids[(10*(page-1)):(page*10)]
  1077. data = {'ids': ids, 'nums': nums}
  1078. data = json.dumps(data)
  1079. return HttpResponse(data)
  1080. # 监控设备接口
  1081. class app_moni(View):
  1082. def post(self,request):
  1083. e_id = request.POST.get('id')
  1084. x = JKdata.objects.get(equip_id=e_id)
  1085. live_list = []
  1086. live_url = 'https://open.ys7.com/api/lapp/live/address/get'
  1087. live_data = {"accessToken":x.jk_token,
  1088. "source":"%s:1"%x.equip_id}
  1089. print("=================live_data:",live_data)
  1090. live_res = requests.post(live_url,data=live_data)
  1091. # print("-------------------------------:",type(live_res.text))
  1092. live_res = eval(live_res.text)
  1093. print("live_res:",live_res)
  1094. # 如果返回200 则返回直播地址
  1095. if live_res['code'] == "200":
  1096. print("token获取成功___APP")
  1097. live_list.append(live_res)
  1098. # 如果返回其他 则调用获取token之后重新获取直播地址并返回
  1099. else:
  1100. print("token过期重新获取___APP")
  1101. token_url = 'https://open.ys7.com/api/lapp/token/get'
  1102. token_data = {"appKey":"e8ec0d52b4b14628a3daf4b88cbcca2a",
  1103. "appSecret":"d4565abea1cd0b90b59917111dcb37bd"}
  1104. token_res = requests.post(token_url,data=token_data)
  1105. print("token_res1:",token_res.text)
  1106. token_res = eval(token_res.text)
  1107. if token_res["code"] == "200":
  1108. token_res["data"]["accessToken"]
  1109. x.jk_token = token_res["data"]["accessToken"]
  1110. x.upl_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
  1111. x.save()
  1112. token = x.jk_token
  1113. print("-----------------token保存成功___APP")
  1114. live_url = 'https://open.ys7.com/api/lapp/live/address/get'
  1115. live_data = {"accessToken":x.jk_token,
  1116. "source":"%s:1"%x.equip_id}
  1117. live_res = requests.post(live_url,data=live_data)
  1118. live_res = eval(live_res.text)
  1119. print("live_res2:",live_res)
  1120. live_list.append(live_res)
  1121. print("APP直播地址列表:",live_list)
  1122. data = live_list
  1123. print("-----------============data:",data)
  1124. data = json.dumps(data, cls=CJSONEncoder)
  1125. return HttpResponse(data)
  1126. class app_download(View):
  1127. def get(self,request):
  1128. return render(request, 'home/download.html')
  1129. # return redirect('app_download/yfApp.apk')
  1130. class app_download2(View):
  1131. def get(self,request):
  1132. return render(request, 'home/commonDownload.html')
  1133. # return redirect('app_download/yfApp.apk')
  1134. class user_etype(View):
  1135. def get(self,request):
  1136. pass
  1137. def post(self,request):
  1138. current_user = request.session.get('username')
  1139. current_user = MyUser.objects.get(username=current_user)
  1140. equip_type_list = []
  1141. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  1142. print("普通用户")
  1143. user_equip_list = Equip.objects.filter(equip_user=current_user)
  1144. for i in user_equip_list:
  1145. equip_type_list.append(i.equip_type.type_id)
  1146. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  1147. print("代理商")
  1148. user_equip_list = Equip.objects.filter(equip_agency=current_user.user_agency)
  1149. for i in user_equip_list:
  1150. equip_type_list.append(i.equip_type.type_id)
  1151. else:
  1152. print("管理员")
  1153. user_equip_list = Equip.objects.all()
  1154. for i in user_equip_list:
  1155. equip_type_list.append(i.equip_type.type_id)
  1156. # 去除列表中重复的元素
  1157. # equip_type_list = {}.fromkeys(equip_type_list).keys()
  1158. equip_type_list = list(set(equip_type_list))
  1159. print(equip_type_list)
  1160. print(type(equip_type_list))
  1161. data = {'dat':equip_type_list}
  1162. data = json.dumps(data)
  1163. return HttpResponse(data)
  1164. # 版本号判断
  1165. class edition(View):
  1166. def get(self,request):
  1167. pass
  1168. def post(self,request):
  1169. edition_obj = App_Edition.objects.all()
  1170. edition = edition_obj.first()
  1171. print(edition.edition_num)
  1172. print(edition.edition_desc)
  1173. data = {"edition_num":edition.edition_num,"edition_desc":edition.edition_desc,"upl_time":edition.upl_time}
  1174. data = json.dumps(data, cls=CJSONEncoder)
  1175. return HttpResponse(data)
  1176. # 版本更新历史
  1177. class edition_all(View):
  1178. def get(self,request):
  1179. pass
  1180. def post(self,request):
  1181. edition_list = App_Edition.objects.all()
  1182. data = []
  1183. for i in edition_list:
  1184. data.append({"edition_num":i.edition_num,"edition_desc":i.edition_desc,"upl_time":i.upl_time})
  1185. data = json.dumps(data, cls=CJSONEncoder)
  1186. return HttpResponse(data)
  1187. # APP轮播图
  1188. class Display_Photo(ListView):
  1189. def get(self,request):
  1190. pass
  1191. def post(self,request):
  1192. current_user = request.session.get('username')
  1193. current_user = MyUser.objects.get(username=current_user)
  1194. img_list = APP_Img.objects.filter(user=current_user)
  1195. if img_list.count() == 0:
  1196. data = [{"imgUrl":"app_file/app_img/banner1.jpg",
  1197. "path":""},
  1198. {"imgUrl":"app_file/app_img/banner2.jpg",
  1199. "path":""},
  1200. {"imgUrl":"app_file/app_img/banner4.jpg",
  1201. "path":""},
  1202. {"imgUrl":"app_file/app_img/autoDiscern.jpg",
  1203. "path":"autoDiscern.html"}]
  1204. else:
  1205. data = []
  1206. for i in img_list:
  1207. data.append({"imgUrl":i.img,
  1208. "path":""})
  1209. data = json.dumps(data)
  1210. return HttpResponse(data)
  1211. # 中性APP轮播图
  1212. class Display_Photo_Common(ListView):
  1213. def get(self,request):
  1214. pass
  1215. def post(self,request):
  1216. current_user = request.session.get('username')
  1217. current_user = MyUser.objects.get(username=current_user)
  1218. img_list = APP_Img.objects.filter(user=current_user)
  1219. if img_list.count() == 0:
  1220. data = [{"imgUrl":"app_file/app_img/banner1.jpg",
  1221. "path":""},
  1222. {"imgUrl":"app_file/app_img/banner2.jpg",
  1223. "path":""},
  1224. {"imgUrl":"app_file/app_img/banner4.jpg",
  1225. "path":""},
  1226. {"imgUrl":"app_file/app_img/autoDiscern.jpg",
  1227. "path":"autoDiscern.html"}]
  1228. else:
  1229. data = []
  1230. for i in img_list:
  1231. data.append({"imgUrl":i.img,
  1232. "path":""})
  1233. data = json.dumps(data)
  1234. return HttpResponse(data)
  1235. # SIM卡列表:
  1236. class APP_SimInfo(ListView):
  1237. def get(self, request):
  1238. pass
  1239. def post(self, request):
  1240. req = request.POST.get('req')
  1241. print("req:", req)
  1242. simid = request.POST.get('simid')
  1243. if simid:
  1244. res = get_siminfo(simid)
  1245. return HttpResponse(res.text)
  1246. if req == "reqdat":
  1247. page = int(request.POST.get('page'))
  1248. print("page:", page)
  1249. current_user = request.session.get('username')
  1250. print("current_user:", current_user)
  1251. current_user = MyUser.objects.get(username=current_user)
  1252. if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True:
  1253. sta1 = SCDstatus.objects.filter(equip_id__equip_user=current_user)
  1254. sta2 = CBDstatus.objects.filter(equip_id__equip_user=current_user)
  1255. elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True:
  1256. sta1 = SCDstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  1257. sta2 = CBDstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)
  1258. else:
  1259. sta1 = SCDstatus.objects.all()
  1260. sta2 = CBDstatus.objects.all()
  1261. # 获取设备列表中的SIM卡的iccid号码:
  1262. iccids = []
  1263. # 获取设备的id:
  1264. equip_ids = []
  1265. # 获取设备的名称:
  1266. equip_names = []
  1267. # 遍历查询流量信息:
  1268. siminfos = []
  1269. for i in sta1:
  1270. try:
  1271. iccid = eval(i.scd_status)['iccid']
  1272. except:
  1273. iccid = ""
  1274. iccids.append(iccid)
  1275. equip_ids.append(str(i.equip_id))
  1276. equip_names.append(str(i.equip_id.equip_name))
  1277. for i in sta2:
  1278. try:
  1279. iccid = eval(i.cbd_status)['iccid']
  1280. except:
  1281. iccid = ""
  1282. iccids.append(iccid)
  1283. equip_ids.append(str(i.equip_id))
  1284. equip_names.append(str(i.equip_id.equip_name))
  1285. nums = len(equip_ids)
  1286. iccids=iccids[(10*(page-1)):(page*10)]
  1287. equip_ids=equip_ids[(10*(page-1)):(page*10)]
  1288. equip_names=equip_names[(10*(page-1)):(page*10)]
  1289. # 调用api查到的iccid号:
  1290. equip_iccids = []
  1291. iccids_str = ",".join(iccids)
  1292. print("iccids_str:",iccids_str)
  1293. res = get_simsinfo(iccids_str).content
  1294. print('res',res)
  1295. siminfo_str=str(res, encoding = "utf-8")
  1296. siminfo_dict=eval(siminfo_str)
  1297. # 保存调用查询流量的api返回的数据;
  1298. dat = []
  1299. for j in list(range(0,siminfo_dict['data']['count'])):
  1300. equip_iccids.append(siminfo_dict['data']['card_list'][j]['iccid'])
  1301. # print('equip_iccids:',equip_iccids)
  1302. for j in list(range(0,len(iccids))):
  1303. siminfo_dict=eval(siminfo_str)
  1304. if (iccids[j] in equip_iccids) == True:
  1305. dat.append(siminfo_dict['data']['card_list'][equip_iccids.index(iccids[j])])
  1306. else:
  1307. dat.append({})
  1308. dat[j]['equip_id']=equip_ids[j]
  1309. dat[j]['equip_name']=equip_names[j]
  1310. # print("dat[%d]=%s" %(j,dat[j]))
  1311. iccids[j] = ""# 每次判断完将该值清空,防止多个设备用一个SIM卡测试时显示异常;
  1312. # print('----- iccids :',iccids)
  1313. print("------------------------",dat)
  1314. data = {"dat":dat,"nums":nums}
  1315. data = json.dumps(data)
  1316. print("data:",data)
  1317. return HttpResponse(data)
  1318. # 性诱设备查看图片
  1319. class trap_photo(ListView):
  1320. def get(self,request):
  1321. pass
  1322. def post(self,request):
  1323. imei = request.POST.get('imei')
  1324. page = int(request.POST.get('page'))
  1325. print("imei:", imei)
  1326. trap_photo = Trapphoto.objects.filter(equip_id=imei)
  1327. nums = Trapphoto.objects.filter(equip_id=imei).count()
  1328. print("nums:", nums)
  1329. dat = []
  1330. for i in trap_photo:
  1331. dat.append({"addr":i.addr,"upl_time":i.upl_time})
  1332. dat = dat[(5*(page-1)):(page*5)]
  1333. data = {"dat":dat,"nums":nums}
  1334. data = json.dumps(data, cls=CJSONEncoder)
  1335. return HttpResponse(data)
  1336. # 性诱设备温湿度和虫子
  1337. class trap_pest(ListView):
  1338. def get(self,request):
  1339. pass
  1340. def post(self,request):
  1341. imei = request.POST.get('imei')
  1342. page = int(request.POST.get('page'))
  1343. print("imei:", imei)
  1344. trap_data = Trapdata.objects.filter(equip_id=imei)
  1345. nums = Trapdata.objects.filter(equip_id=imei).count()
  1346. print("nums:", nums)
  1347. dat = []
  1348. for i in trap_data:
  1349. dat.append({"pestnum":i.pestnum,"at":i.tem,"ah":i.hum,"upl_time":i.upl_time})
  1350. dat = dat[(10*(page-1)):(page*10)]
  1351. data = {"dat":dat,"nums":nums}
  1352. data = json.dumps(data, cls=CJSONEncoder)
  1353. return HttpResponse(data)
  1354. # 产品介绍
  1355. class product_view(ListView):
  1356. def get(self,request):
  1357. pass
  1358. def post(self,request):
  1359. current_user = request.session.get('username')
  1360. print("current_user:", current_user)
  1361. current_user = MyUser.objects.get(username=current_user)
  1362. equip_list = Equip.objects.filter(equip_user=current_user)
  1363. data = []
  1364. for i in equip_list:
  1365. if i.equip_type_id in data:
  1366. continue
  1367. data.append(i.equip_type_id)
  1368. if current_user.is_superuser:
  1369. data = []
  1370. type_list = Equip_type.objects.all()
  1371. for x in type_list:
  1372. data.append(x.type_id)
  1373. elif current_user.is_agency:
  1374. data = []
  1375. equip_list = Equip.objects.filter(equip_agency=current_user.user_agency)
  1376. for i in equip_list:
  1377. if i.equip_type_id in data:
  1378. continue
  1379. data.append(i.equip_type_id)
  1380. data = json.dumps(data)
  1381. return HttpResponse(data)
  1382. # 监控设备查看图片
  1383. class app_jk_img(View):
  1384. def post(self, request):
  1385. imei = request.POST.get('equip_id')
  1386. print("imei:", imei)
  1387. # 获得当前页:
  1388. page = int(request.POST.get('page'))
  1389. print("page:", page)
  1390. # 从数据库中取出照片在服务器存放路径:
  1391. img = JKphoto.objects.filter(equip_id=imei)
  1392. nums = img.count()
  1393. img = img[(10*(page-1)):(page*10)]
  1394. equip_name = Equip.objects.get(equip_id=imei).equip_name
  1395. # 当前用户:返回用户,前端判断是否显示删除图片按钮
  1396. current_user = request.session.get('username')
  1397. print("current_user:", current_user)
  1398. img_dat = [{"upl_time": x.upl_time,
  1399. "addr": x.addr}for x in img]
  1400. dat = {'img':img_dat,
  1401. 'nums':nums,
  1402. 'equip_name':equip_name,
  1403. 'equip_id':imei
  1404. }
  1405. data = json.dumps(dat, cls=CJSONEncoder, indent=4)
  1406. print("data:",data)
  1407. return HttpResponse(data)