views.py 55 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498
  1. import datetime
  2. import hashlib
  3. # Create your views here.
  4. import json
  5. import os
  6. import random
  7. import re
  8. import subprocess
  9. import time
  10. import urllib
  11. import urllib.parse
  12. from datetime import date, datetime
  13. from io import BytesIO
  14. import requests
  15. import xlwt
  16. from django.contrib import auth
  17. from django.contrib.auth import authenticate
  18. from django.contrib.auth import login as auth_login
  19. from django.contrib.auth import logout
  20. from django.contrib.auth.decorators import login_required
  21. from django.contrib.auth.hashers import check_password, make_password
  22. from django.core import serializers
  23. from django.db.models import Q
  24. from django.http import HttpResponse, JsonResponse, StreamingHttpResponse
  25. from django.shortcuts import redirect, render
  26. from django.utils import timezone
  27. from django.views.generic import ListView
  28. from django.views.generic.base import View
  29. from PIL import Image
  30. from _io import StringIO
  31. from apps.AppInfoManage.models import *
  32. from apps.EquipManage.views import CJSONEncoder
  33. from yfwlw_pro import settings
  34. from yfwlw_pro.settings import get_client_ip
  35. from apps.ReportManage.all_dict import transpont_equip_scd,transpont_equip_cbd,transpont_equip_qxz,transpont_equip_ybq,transpont_equip_bzy
  36. # app登陆
  37. class app_log(View):
  38. def post(self, request):
  39. user_name = request.POST.get("username")
  40. pass_word = request.POST.get("password")
  41. #校验用户和密码
  42. if User_Reporter.objects.filter(name=user_name).exists():
  43. account = User_Reporter.objects.get(name=user_name)
  44. if Purchase.objects.filter(userid__username=account.user_id.username).exists():
  45. ret = check_password(pass_word, account.password)
  46. if ret:
  47. data = [{
  48. "name": account.name,
  49. "photo": account.photo.name,
  50. "phone": account.phone,
  51. "username": account.user_id.username,
  52. "addr": account.addr,
  53. "time": account.time.strftime("%Y-%m-%d %H:%M:%S"),
  54. "is_active":account.user_id.is_active,
  55. 'is_staff':account.user_id.is_staff,
  56. 'is_superuser':account.user_id.is_superuser,
  57. }]
  58. #将当前登录的用户名写入session
  59. request.session['username'] = user_name
  60. data = json.dumps(data)
  61. return HttpResponse(data)
  62. else:
  63. data = 2
  64. else:
  65. data = 2
  66. else:
  67. data = 1
  68. data = json.dumps(data)
  69. return HttpResponse(data)
  70. # 退出APP登录:
  71. @login_required
  72. def app_out(request):
  73. username = request.POST.get('username')
  74. print("用户退出")
  75. del request.session['username']
  76. auth.logout(request)
  77. data = "0"
  78. return HttpResponse(data)
  79. # 个人信息:
  80. class app_user_in(View):
  81. def get(self, request):
  82. user_name = request.session["username"]
  83. if user_name:
  84. user = User_Reporter.objects.filter(name=user_name)
  85. user_list = []
  86. for x in user:
  87. data = {"name": x.name,
  88. "name": x.name,
  89. "photo": x.photo.name,
  90. "phone": x.phone,
  91. "username": x.user_id.username,
  92. "addr": x.addr,
  93. "time": x.time.strftime("%Y-%m-%d %H:%M:%S"),
  94. "is_active":x.user_id.is_active,
  95. 'is_staff':x.user_id.is_staff,
  96. 'is_superuser':x.user_id.is_superuser,
  97. }
  98. data = json.dumps(data)
  99. else:
  100. data = 0
  101. print("用户未登陆")
  102. return HttpResponse(data)
  103. # 修改头像 未完成
  104. class app_user_head(View):
  105. def post(self, request):
  106. name = request.session['username']
  107. print("name", name)
  108. user_name = MyUser.objects.get(username=name)
  109. user_name = str(user_name)
  110. user_photo = request.FILES.get('file')
  111. print("APP修改用户头像:", user_photo)
  112. user_photo_dir = 'user_photo/'
  113. # 判断如果路径不存在,即创建路径
  114. if os.path.exists(user_photo_dir) == False:
  115. os.makedirs(user_photo_dir)
  116. img = Image.open(user_photo)
  117. img.save(user_photo_dir + user_name+".png")
  118. new_photo = user_photo_dir + user_name+".png"
  119. # 数据库关联设备,并在照片的表中存入路径:
  120. user.user_picture = new_photo
  121. user_name.save()
  122. data = "0"
  123. return HttpResponse(data)
  124. # 省市区
  125. class Citys(View):
  126. def get(self, request):
  127. city = []
  128. ret = Address_Province.objects.filter(parent_code__in=[1,2,3,4,5,6,7])
  129. for i in ret:
  130. city.append({"name": i.name, 'code': i.code,"id":i.id,
  131. "parent_code": i.parent_code})
  132. data = json.dumps(city)
  133. return HttpResponse(data)
  134. def post(self, request):
  135. name = request.session['username']
  136. user_name = User_Reporter.objects.get(name=name)
  137. ret = request.POST.get("ret")
  138. print("ret",ret)
  139. data = []
  140. if ret == "city": #月份查询
  141. city_id = request.POST.get("id")
  142. print("city_id",city_id)
  143. month_list = User_Month.objects.filter(addr_id=city_id)
  144. if month_list:
  145. for i in month_list:
  146. data.append({"month":i.month,"id":i.id})
  147. else:
  148. data = {"code":None}
  149. elif ret == "harm": #分类查询
  150. month_id = request.POST.get("month_id")
  151. pest_sort =request.POST.get("pest_sort")
  152. print("month_id",month_id)
  153. print("pest_sort",pest_sort)
  154. user_name = User_Reporter.objects.get(name=name)
  155. harm_list = Pest_Harm_New.objects.filter(Q(month_id=month_id, pest_sort=pest_sort) | Q(month_id=month_id, user_id=user_name,pest_sort=pest_sort))
  156. date = []
  157. if harm_list:
  158. for i in harm_list:
  159. date.append({"pest":i.pest,"crop_sort":i.crop_sort})
  160. for i in date: #去重
  161. if i not in data:
  162. data.append(i)
  163. else:
  164. data = {"code":None}
  165. elif ret == "details": #种类详情
  166. harm_name = request.POST.get("harm_name")
  167. print(harm_name)
  168. pest_sort = request.POST.get("pest_sort")
  169. print(pest_sort)
  170. month_id = request.POST.get("month_id")
  171. print(month_id)
  172. pest_harm = Pest_Harm_New.objects.filter(Q(pest=harm_name,pest_sort=pest_sort,month_id=month_id)| Q(pest=harm_name,pest_sort=pest_sort,user_id=user_name,month_id=month_id))
  173. if pest_harm:
  174. for i in pest_harm:
  175. data.append({"label":i.pest_name,"value":i.id})
  176. else:
  177. data = {"code":None}
  178. elif ret == "crea": #添加种类
  179. month_id = request.POST.get("month_id")
  180. pest = request.POST.get("pest")
  181. crop_sort = request.POST.get("crop_sort")
  182. pest_sort = request.POST.get("pest_sort")
  183. month = User_Month.objects.get(id=month_id)
  184. harm_list = Pest_Harm_New.objects.filter(user_id=user_name,month_id=month,pest=pest,pest_sort=pest_sort)
  185. if harm_list.exists():
  186. data = {"code":None}
  187. else:
  188. Pest_Harm_New.objects.create(pest=pest,month_id=month,user_id=user_name,crop_sort=crop_sort,pest_sort=pest_sort)
  189. data = {"code":200}
  190. elif ret == "add_harm": #添加病害
  191. month_id = request.POST.get("month_id")
  192. print("month_id",month_id)
  193. harm = request.POST.get("harm")
  194. print("harm",harm)
  195. pest_sort = request.POST.get("pest_sort")
  196. print("pest_sort",pest_sort)
  197. pest_name = request.POST.get("pest_name")
  198. print("pest_name",pest_name)
  199. month = User_Month.objects.get(id=month_id)
  200. try:
  201. pest_list = Pest_Harm_New.objects.filter(pest=harm,month_id=month_id,pest_sort=pest_sort)
  202. print(pest_list)
  203. for i in pest_list:
  204. if i.pest_name:
  205. if Pest_Harm_New.objects.filter(pest=i.pest,month_id=month_id,pest_sort=pest_sort,pest_name=pest_name,user_id=user_name).exists():
  206. data = {"code":201}
  207. data = json.dumps(data)
  208. return HttpResponse(data)
  209. else:
  210. Pest_Harm_New.objects.create(pest=i.pest,pest_sort=pest_sort,pest_name=pest_name,month_id=month,user_id=user_name,crop_sort=i.crop_sort)
  211. data = {"code":200}
  212. data = json.dumps(data)
  213. return HttpResponse(data)
  214. else:
  215. harm_list = Pest_Harm_New.objects.get(id=i.id)
  216. harm_list.pest_name = pest_name
  217. harm_list.save()
  218. data = {"code":200}
  219. data = json.dumps(data)
  220. return HttpResponse(data)
  221. except Exception as e:
  222. print(e)
  223. data = {"code":None}
  224. elif ret == "del_harm":
  225. month_id = request.POST.get("month_id")
  226. print("month_id",month_id)
  227. harm = request.POST.get("harm")
  228. print("harm",harm)
  229. pest_sort = request.POST.get("pest_sort")
  230. print("pest_sort",pest_sort)
  231. pest_name = request.POST.get("pest_name")
  232. print("pest_name",pest_name)
  233. month = User_Month.objects.get(id=month_id)
  234. try:
  235. pest_list = Pest_Harm_New.objects.filter(pest=harm,month_id=month_id,pest_sort=pest_sort,pest_name=pest_name,user_id=user_name).delete()
  236. pest_list.pest_name = ""
  237. pest_list.save()
  238. data = {"code":200}
  239. except Exception as e:
  240. print("error message:",e)
  241. data = {"code":400}
  242. data = json.dumps(data)
  243. return HttpResponse(data)
  244. else:
  245. data = {"code":ret,"test":"ret值不对"}
  246. data = json.dumps(data, ensure_ascii=False)
  247. print(data)
  248. return HttpResponse(data)
  249. #新建数据信息
  250. class Cate_Collector_User(View):
  251. '''保存地址数据'''
  252. def get(self,request):
  253. pest_sort = request.GET.get("pest_sort")
  254. print("pest_sort",pest_sort)
  255. name = request.session['username']
  256. # name = "demo"
  257. print("name", name)
  258. user_name = User_Reporter.objects.get(name=name)
  259. date = []
  260. data = []
  261. city_list = []
  262. city = []
  263. user_list = User_Data_Table_New.objects.filter(user_id=user_name,harm_id__pest_sort=pest_sort)
  264. if user_list:
  265. for i in user_list:
  266. months = i.harm_id.month_id.month + "月份"
  267. date.append({"value":months})
  268. city.append({"value":i.harm_id.month_id.addr_id.name})
  269. for i in date:
  270. if i not in data:
  271. data.append(i)
  272. for i in city:
  273. if i not in city_list:
  274. city_list.append(i)
  275. data = {"month":data,"city":city_list}
  276. else:
  277. data = {"code":200}
  278. data = json.dumps(data)
  279. return HttpResponse(data)
  280. def post(self, request):
  281. name = request.session['username']
  282. print("name", name)
  283. user_name = User_Reporter.objects.get(name=name)
  284. harm_id = request.POST.get("harm_id")
  285. growth_stages = request.POST.get("growth_stages")
  286. addr_photo = request.POST.get("addr_photo")
  287. area = request.POST.get("area")
  288. pestname = request.POST.get("pestname")
  289. cens_method = request.POST.get("cens_method")
  290. user_id = request.POST.get("user_id")
  291. data = []
  292. date = []
  293. pestname = json.loads(pestname)
  294. for x in pestname:
  295. keys = x.split(':')[:1]
  296. keys = " ".join(keys)
  297. data.append(keys)
  298. values = x.split(':')[1:]
  299. values = " ".join(values)
  300. date.append(values)
  301. pestname = dict(zip(data, date))
  302. print("user_id",user_id)
  303. print("harm_id",harm_id)
  304. print("growth_stages",growth_stages)
  305. print("addr_photo",addr_photo)
  306. print("area",area)
  307. print("pestname",pestname)
  308. print("cens_method",cens_method)
  309. harm_id = Pest_Harm_New.objects.get(id=harm_id)
  310. print("harm_id_list",harm_id.pest_sort)
  311. if user_id:
  312. print("修改")
  313. user_list = User_Data_Table_New.objects.get(id=user_id)
  314. user_list.harm_id=harm_id
  315. user_list.growth_stages=growth_stages
  316. user_list.addr_photo=addr_photo
  317. user_list.area = area
  318. user_list.pestname = pestname
  319. user_list.cens_method= cens_method
  320. user_list.save()
  321. data = {"code":200}
  322. else:
  323. print("新建")
  324. try:
  325. User_Data_Table_New.objects.create(
  326. harm_id=harm_id,growth_stages=growth_stages,addr_photo=addr_photo,
  327. area=area,pestname=pestname,cens_method=cens_method,user_id=user_name)
  328. data = {"code":200}
  329. except Exception as e:
  330. print(e)
  331. data = {"code":None}
  332. data = json.dumps(data)
  333. return HttpResponse(data)
  334. #添加用户上传的图片
  335. class Account_Photo(ListView):
  336. def post(self, request):
  337. harm_photos = request.FILES.get('file')
  338. print(harm_photos)
  339. if harm_photos:
  340. print("病虫害图片:", harm_photos)
  341. harm_photo_dir = 'harm_photos/'
  342. end_name = harm_photos.name.split('.')[-1]
  343. # 判断如果路径不存在,即创建路径
  344. if os.path.exists(harm_photo_dir) == False:
  345. os.makedirs(harm_photo_dir)
  346. img = Image.open(harm_photos)
  347. now_time = time.strftime(
  348. '%Y%m%d%H%M%S', time.localtime(time.time()))
  349. pic_name = now_time + '.' + end_name
  350. print("pic_name:", pic_name)
  351. #转换图片类型 因为用户的进行上传识别的图片格式不定,需要进行转换格式,mode=P 全部改成 mode=RGB这种格式进行保存
  352. img = img.convert('RGB')
  353. img.save(harm_photo_dir + pic_name)
  354. harm_photos = harm_photo_dir + pic_name
  355. print("harm_photos:", harm_photos)
  356. data = {"src": harm_photos}
  357. else:
  358. harm_photos = "0"
  359. data = {"src": harm_photos}
  360. data = json.dumps(data)
  361. return HttpResponse(data)
  362. #删除用户上传的图片
  363. class Del_Account_Photo(ListView):
  364. def post(self, request):
  365. pic_list = request.POST.get("pic_list")
  366. pest_id = request.POST.get("id")
  367. date = []
  368. if pest_id:
  369. user_list = User_Data_Table_New.objects.get(id=pest_id)
  370. user_list.addr_photo = pic_list
  371. if pic_list.find(",") != -1:
  372. pic_list = pic_list.split(",")
  373. for i in pic_list:
  374. date.append(i)
  375. else:
  376. date.append(pic_list)
  377. for i in date:
  378. if os.path.exists(i) == True:
  379. # 删除图片文件
  380. if pest_id:
  381. os.remove(i)
  382. user_list.addr_photo = ''
  383. user_list.save()
  384. else:
  385. os.remove(i)
  386. data = {"code":200}
  387. else:
  388. data = {"code":None}
  389. data = json.dumps(data)
  390. return HttpResponse(data)
  391. # 用户详情信息和植物病级查看
  392. # id 采集人的名id
  393. class SeeUser(View):
  394. def get(self, request):
  395. page = int(request.GET.get("page"))
  396. name = request.session.get("username")
  397. pest_sort = request.GET.get("pest_sort")
  398. print(pest_sort)
  399. name = User_Reporter.objects.get(name=name)
  400. data = []
  401. print("name",name)
  402. user_list = User_Data_Table_New.objects.filter(user_id=name,harm_id__pest_sort=pest_sort)
  403. if user_list.exists():
  404. for i in user_list:
  405. data.append({"user_name":i.user_id.name,"defa":i.defa,"pest":i.harm_id.pest,"month":i.harm_id.month_id.month,
  406. "city":i.harm_id.month_id.addr_id.name,"id":i.id,"upl_time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S'),"harm_id":i.harm_id.id,
  407. })
  408. num = len(user_list)
  409. print("num",num)
  410. dat = data[(6*(page-1)):(page*6)]
  411. data = {'dat': dat, 'num': num}
  412. data = json.dumps(data)
  413. return HttpResponse(data)
  414. def post(self, request):
  415. ret = request.POST.get("ret")
  416. print("ret",ret)
  417. name = request.session["username"]
  418. user_name = User_Reporter.objects.get(name=name)
  419. print(user_name)
  420. if ret == "see": #详情
  421. user_id = request.POST.get("user_id")
  422. print('user_id',user_id)
  423. user_list = User_Data_Table_New.objects.get(id=user_id)
  424. data = []
  425. date = []
  426. dats = []
  427. pestname = eval(user_list.pestname)
  428. key = list(pestname)
  429. valu = list(pestname.values())
  430. for x in range(len(key)):
  431. date.append(key[x] + ":" + valu[x])
  432. if user_list.addr_photo:
  433. #判断用户上传的图片是多张还是一张进行切割
  434. if user_list.addr_photo.find(",") != -1:
  435. prc_list = user_list.addr_photo.split(",")
  436. for y in prc_list:
  437. dats.append(y)
  438. else:
  439. dats.append(user_list.addr_photo)
  440. else:
  441. dats = "null"
  442. data.append({"user_name":user_name.name,"growth_stages":user_list.growth_stages,"addr_photo":dats,"pestname":date,"area":user_list.area,"pest_name":user_list.harm_id.pest_name,"month":user_list.harm_id.month_id.month,"defa":user_list.defa,
  443. "pest":user_list.harm_id.pest,"crop_sort":user_list.harm_id.crop_sort,"cens_method":user_list.cens_method,"city":user_list.harm_id.month_id.addr_id.name,"id":user_list.id,"upl_time":user_list.upl_time.strftime('%Y-%m-%d %H:%M:%S')
  444. ,"city_id":user_list.harm_id.month_id.addr_id.id,"harm_id":user_list.harm_id.id,"pest_sort":user_list.harm_id.pest_sort,
  445. })
  446. elif ret == "all_del": #删除
  447. date = []
  448. user_id = request.POST.get("user_id")
  449. userid_list = json.loads(user_id)
  450. for i in userid_list:
  451. user_list = User_Data_Table_New.objects.get(id=i)
  452. print(user_list.addr_photo)
  453. if user_list.addr_photo.find(",") != -1:
  454. pic_list = user_list.addr_photo.split(",")
  455. for x in pic_list:
  456. if os.path.exists(x):
  457. os.remove(x)
  458. else:
  459. print(user_list.addr_photo)
  460. if os.path.exists(user_list.addr_photo):
  461. os.remove(user_list.addr_photo)
  462. data = {"code":200}
  463. user_list.delete()
  464. elif ret == "screen": #
  465. data = []
  466. city = request.POST.get("city")
  467. month = request.POST.get("month")
  468. pest_sort = request.POST.get("pest_sort")
  469. print(user_name.id)
  470. if month:
  471. user_list = User_Data_Table_New.objects.filter(user_id=user_name.id,harm_id__month_id__month=month,harm_id__pest_sort=pest_sort)
  472. else:
  473. user_list = User_Data_Table_New.objects.filter(user_id=user_name.id,harm_id__month_id__addr_id__name=city,harm_id__pest_sort=pest_sort)
  474. nums = len(user_list)
  475. if user_list:
  476. for i in user_list:
  477. data.append({
  478. "user_name":i.user_id.name,
  479. "city":i.harm_id.month_id.addr_id.name,"id":i.id,"upl_time":i.upl_time.strftime('%Y-%m-%d %H:%M:%S')
  480. })
  481. data = {"date":data,"nums":nums}
  482. else:
  483. data = {"code":None,"nums":nums}
  484. elif ret == "def": #设置默认
  485. user_id = request.POST.get("user_id")
  486. name = request.session.get("username")
  487. print("user_id",user_id)
  488. user_li = User_Data_Table_New.objects.get(id=user_id)
  489. print("user_li",user_li)
  490. userid = User_Reporter.objects.get(name=name)
  491. user_list = User_Data_Table_New.objects.filter(user_id=userid,defa=1)
  492. if len(user_list):
  493. for i in user_list:
  494. i.defa = 0
  495. i.save()
  496. user_li.defa = 1
  497. user_li.save()
  498. else:
  499. user_li.defa = 1
  500. user_li.save()
  501. data = {"code":200}
  502. elif ret == "del": #取消默认
  503. user_id = request.POST.get("user_id")
  504. user_li = User_Data_Table_New.objects.get(id=user_id)
  505. user_li.defa = 0
  506. user_li.save()
  507. data = {"code":200}
  508. data = json.dumps(data)
  509. print(data)
  510. return HttpResponse(data)
  511. #饼状图病害展示
  512. class Count_Plant(ListView):
  513. def post(self, request):
  514. pest_sort = request.POST.get("pest_sort")
  515. name = request.session.get("username")
  516. user_name = User_Reporter.objects.get(name=name)
  517. user_list = User_Data_Table_New.objects.filter(user_id=user_name)
  518. date = []
  519. dats = []
  520. data = []
  521. userid_list = user_list.filter(harm_id__pest_sort=pest_sort)
  522. # print(len(userid_list))
  523. if userid_list:
  524. for i in userid_list:
  525. date.append({"pest":i.harm_id.pest,"crop_sort":i.harm_id.crop_sort,"dat":""})
  526. for i in date:
  527. if i not in dats:
  528. dats.append(i)
  529. for x in dats:
  530. data_list = []
  531. userid_lists = user_list.filter(harm_id__pest_sort=pest_sort,harm_id__pest=x["pest"])
  532. for harmid in userid_lists:#当前大分类下所有的小分类
  533. data_list.append(harmid.harm_id.pest_name)
  534. date_list = []
  535. for y in set(data_list): #统计小分类数量
  536. date_list.append({"pest_name":y,"num":data_list.count(y)})
  537. x["dat"] = date_list
  538. data.append({"data":x,})
  539. else:
  540. data = {"code":None}
  541. data = json.dumps(data)
  542. return HttpResponse(data)
  543. # 害虫识别接口
  544. class app_insect(View):
  545. def post(self, request):
  546. time_start = time.time()
  547. print("害虫识别")
  548. imageFile = request.FILES.get('img_addr')
  549. imageFile = {"imageFile": imageFile}
  550. username = 'yunfei'
  551. uniqueKey = '84e6eb40f3a616dd14b1fefc75425006'
  552. time1 = time.time()
  553. print('识别前', time1-time_start)
  554. url = 'http://47.99.110.100:8080/recognizationSys/api/recognization'
  555. data = {'imageType': '1', 'gis': '118.279643#31.221456',
  556. 'username': username, 'uniqueKey': uniqueKey}
  557. print("data", data)
  558. res = requests.post(url, data=data, files=imageFile)
  559. time_end = time.time()
  560. print('识别后', time_end-time_start)
  561. return HttpResponse(res.text)
  562. # 病害识别接口
  563. class app_plant(View):
  564. def post(self, request):
  565. print("病害识别")
  566. imageFile = request.FILES.get('img_addr')
  567. imageFile = {"imageFile": imageFile}
  568. username = 'yunfei'
  569. uniqueKey = '84e6eb40f3a616dd14b1fefc75425006'
  570. url = 'http://47.99.110.100:8080/recognizationSys/api/recognization'
  571. data = {'imageType': '2', 'gis': '118.279643#31.221456',
  572. 'username': username, 'uniqueKey': uniqueKey}
  573. res = requests.post(url, data=data, files=imageFile)
  574. return HttpResponse(res.text)
  575. # 害虫识别接口丨新 (测试用)
  576. class app_insect_plant(ListView):
  577. def post(self, request):
  578. img_addr = request.FILES.get('img_addr')
  579. print("img_addr", img_addr)
  580. imageFile = {"imageFile": img_addr}
  581. # url = 'http://60.166.14.184:9143/upload'
  582. url = 'http://60.166.14.184:9143/upload'
  583. # imageFile = {'imageFile':('pic.jpg',open("d:/dog.jpg",'rb'),'image/jpeg')}
  584. data = {'longitude': '118.279643', 'latitude': '31.221456'}
  585. print('data:', data)
  586. res = requests.post(url, data=data, files=imageFile)
  587. print("res:", res.text)
  588. try:
  589. resp = json.loads(res.text)
  590. except Exception as e:
  591. print(e)
  592. print("识别失败")
  593. data = "1"
  594. return HttpResponse(data)
  595. print(resp["returnResult"]["returnString"])
  596. data = {"image": resp["returnResult"]["returnImageUrl"],
  597. "result": resp["returnResult"]["returnString"]}
  598. if data["result"] == "":
  599. print("识别失败")
  600. data = "2"
  601. else:
  602. data = json.dumps(data, cls=CJSONEncoder)
  603. return HttpResponse(data)
  604. # 数据导出指定单条数据和多条数据或者病害、虫害全部数据
  605. class Exportes(ListView):
  606. def post(self, request):
  607. id_list = request.POST.get("user_id")
  608. name = request.POST.get("username")
  609. id_list = json.loads(id_list)
  610. print(id_list)
  611. print("name", name)
  612. # name = "admin"
  613. user_name = User_Reporter.objects.get(name=name)
  614. # 创建一个文件对象
  615. wb = xlwt.Workbook(encoding="utf8")
  616. # 创建一个sheet对象
  617. sheet = wb.add_sheet("sheet1",cell_overwrite_ok=True)
  618. # 设置文件头的样式,这个不是必须的可以根据自己的需求进行更改
  619. style_heading = xlwt.easyxf("""
  620. font:
  621. name Arial,
  622. colour_index white,
  623. bold on,
  624. height 0xA0;
  625. align:
  626. wrap off,
  627. vert center,
  628. horiz center;
  629. pattern:
  630. pattern solid,
  631. fore-colour 0x19;
  632. borders:
  633. left THIN,
  634. right THIN,
  635. top THIN,
  636. bottom THIN;
  637. """)
  638. # 写入文件标题
  639. sheet.write(0, 0, "测报员", style_heading)
  640. sheet.write(0, 1, "创建时间", style_heading)
  641. sheet.write(0, 2, "详细地址", style_heading)
  642. sheet.write(0, 3, "所属分类", style_heading)
  643. sheet.write(0, 4, "统计面积", style_heading)
  644. sheet.write(0, 5, "病害虫害名称", style_heading)
  645. sheet.write(0, 6, "病害值", style_heading)
  646. sheet.write(0, 7, "统计种类", style_heading)
  647. sheet.write(0, 8, "统计方法", style_heading)
  648. sheet.write(0, 9, "生育期", style_heading)
  649. sheet.write(0, 10, "月份", style_heading)
  650. data_row = 1
  651. date = []
  652. dats = []
  653. for x in id_list:
  654. user_list = User_Data_Table_New.objects.filter(id=x)
  655. for i in user_list:
  656. if i.harm_id.pest_sort == "1":
  657. pest_sort = "病害"
  658. elif i.harm_id.pest_sort == "2":
  659. pest_sort = "虫害"
  660. pestname = eval(i.pestname)
  661. key = list(pestname)
  662. valu = list(pestname.values())
  663. for x in range(len(key)):
  664. date.append(key[x] + ":" + valu[x])
  665. # date.append(i.pestname)
  666. pri_time = i.upl_time.strftime("%Y-%m-%d")
  667. sheet.write(data_row, 0, i.user_id.name)
  668. sheet.write(data_row, 1, pri_time)
  669. sheet.write(data_row, 2, i.harm_id.month_id.addr_id.name)
  670. sheet.write(data_row, 3, i.harm_id.pest)
  671. sheet.write(data_row, 4, i.area)
  672. sheet.write(data_row, 5, i.harm_id.pest_name)
  673. sheet.write(data_row, 6, date)
  674. sheet.write(data_row, 7, i.harm_id.pest_sort)
  675. sheet.write(data_row, 8, i.cens_method)
  676. sheet.write(data_row, 9, i.growth_stages)
  677. sheet.write(data_row, 10, i.harm_id.month_id.month)
  678. data_row = data_row + 1
  679. # 写入数据 保存到本地
  680. user_export = "sexport_file/"
  681. if os.path.exists(user_export) == False:
  682. os.makedirs(user_export)
  683. wb.save(user_export + user_name.name + ".xls")
  684. dat = []
  685. user_data = user_export + user_name.name + ".xls"
  686. dat.append({"file": user_data})
  687. data = json.dumps(dat)
  688. return HttpResponse(data)
  689. #app在线升级
  690. class App_Upgrade(ListView):
  691. def get(self, request):
  692. edition_obj = Insect_Edition.objects.all()
  693. edit = edition_obj.first()
  694. data = {"app_num": edit.app_num, "app_desc": edit.app_desc, "upl_time": edit.upl_time.strftime(
  695. "%Y-%m-%d %H:%M:%S"), "app_name": edit.app_name}
  696. data = json.dumps(data)
  697. return HttpResponse(data)
  698. # 版本更新历史
  699. class App_All(ListView):
  700. def get(self, request):
  701. page = int(request.GET.get('page'))
  702. app_list = Insect_Edition.objects.all()
  703. data = []
  704. for i in app_list:
  705. data.append({"app_name": i.app_name,"id":i.id,"app_num":i.app_num,
  706. "upl_time": i.upl_time.strftime("%Y-%m-%d %H:%M:%S")})
  707. num = app_list.count()
  708. dat = data[(10*(page-1)):(page*10)]
  709. data = {'dat': dat, "num": num}
  710. data = json.dumps(data)
  711. return HttpResponse(data)
  712. def post(self, request):
  713. datas = json.loads(request.body.decode())
  714. ids = datas["id"]
  715. app_list = Insect_Edition.objects.get(id=ids)
  716. data = []
  717. data.append({"app_desc": app_list.app_desc,
  718. "upl_time": app_list.upl_time.strftime("%Y-%m-%d %H:%M:%S")})
  719. data = json.dumps(data)
  720. return HttpResponse(data)
  721. #昆虫识别记录
  722. class Insect_Record(ListView):
  723. def post(self, request):
  724. imgs = request.FILES.get('filte')
  725. if not all([imgs]):
  726. return HttpResponse("没有传图片")
  727. names = request.POST.get("name")
  728. print("names:", names)
  729. prevention = request.POST.get("prevention")
  730. img_urls = request.POST.get("img_urls")
  731. course = request.POST.get("course")
  732. addr = request.POST.get("addr")
  733. lng = request.POST.get("lng")
  734. lat = request.POST.get("lat")
  735. name = request.session.get("username")
  736. uid = User_Reporter.objects.get(name=name)
  737. time_now = timezone.now().strftime('%Y-%m-%d %H:%M:%S')
  738. #有名字说明识别成功
  739. if names == "":
  740. news_photo_dir = 'insect_photos_fail/'
  741. data = "1"
  742. else:
  743. news_photo_dir = 'insect_photos/'
  744. data = "2"
  745. print("news_photo_dir:", news_photo_dir)
  746. end_name = imgs.name.split('.')[-1]
  747. # 判断如果路径不存在,即创建路径
  748. if os.path.exists(news_photo_dir) == False:
  749. os.makedirs(news_photo_dir)
  750. img = Image.open(imgs)
  751. now_time = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
  752. pic_name = now_time + '.' + end_name
  753. #保存图片,拼接路径
  754. #转换图片类型 因为用户的进行上传识别的图片格式不定,需要进行转换格式,mode=P 全部改成 mode=RGB这种格式进行保存
  755. img = img.convert('RGB')
  756. img.save(news_photo_dir + pic_name)
  757. news_photo = news_photo_dir + pic_name
  758. if data == "2":
  759. #如果两次识别出来的昆虫名字一样只保留最新的记
  760. if App_Insect.objects.filter(name=names, reporter_id=uid).exists():
  761. insect = App_Insect.objects.get(name=names, reporter_id=uid)
  762. insect.time = time_now
  763. insect.course = course
  764. insect.img_urls = img_urls
  765. insect.prevention = prevention
  766. insect.img = news_photo
  767. insect.addr = addr
  768. insect.lng = lng
  769. insect.lat = lat
  770. insect.userid = uid.user_id
  771. insect.save()
  772. data = 1
  773. else:
  774. #保存识别结果
  775. App_Insect.objects.create(addr=addr, lng=lng, lat=lat, userid=uid.user_id,
  776. name=names, course=course, img_urls=img_urls, prevention=prevention, reporter_id=uid, img=news_photo)
  777. data = 1
  778. #把识别成功的记录数据保存到知识库(虫害)
  779. if Diseases.objects.filter(name=names).exists():
  780. data = 1
  781. else:
  782. Diseases.objects.create(
  783. name=names, img_urls=img_urls, prevention=prevention, course=course, ret="insect")
  784. data = 1
  785. else:
  786. #保存识别失败的数据
  787. App_Insect.objects.create(
  788. reporter_id=uid, img=news_photo, userid=uid.user_id)
  789. data = 1
  790. return HttpResponse(data)
  791. #保存植物识别记录
  792. class Plant_Record(ListView):
  793. def post(self, request):
  794. imgs = request.FILES.get('filte')
  795. if not all([imgs]):
  796. return HttpResponse("没有传图片")
  797. names = request.POST.get("name")
  798. print("names:", names)
  799. prevention = request.POST.get("prevention")
  800. img_urls = request.POST.get("img_urls")
  801. course = request.POST.get("course")
  802. addr = request.POST.get("addr")
  803. lng = request.POST.get("lng")
  804. lat = request.POST.get("lat")
  805. name = request.session.get("username")
  806. uid = User_Reporter.objects.get(name=name)
  807. time_now = timezone.now().strftime('%Y-%m-%d %H:%M:%S')
  808. #有名字说明识别成功
  809. if names == "":
  810. news_photo_dir = 'plant_photos_fail/'
  811. data = "1"
  812. else:
  813. news_photo_dir = 'plant_photos/'
  814. data = "2"
  815. print("news_photo_dir:", news_photo_dir)
  816. end_name = imgs.name.split('.')[-1]
  817. # 判断如果路径不存在,即创建路径
  818. if os.path.exists(news_photo_dir) == False:
  819. os.makedirs(news_photo_dir)
  820. img = Image.open(imgs)
  821. now_time = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
  822. pic_name = now_time + '.' + end_name
  823. #保存图片,拼接路径
  824. #转换图片类型 因为用户的进行上传识别的图片格式不定,需要进行转换格式,mode=P 全部改成 mode=RGB这种格式进行保存
  825. img = img.convert('RGB')
  826. img.save(news_photo_dir + pic_name)
  827. news_photo = news_photo_dir + pic_name
  828. if data == "2":
  829. if App_Plant.objects.filter(name=names, reporter_id=uid).exists():
  830. plant = App_Plant.objects.get(name=names, reporter_id=uid)
  831. plant.time = time_now
  832. plant.course = course
  833. plant.img_urls = img_urls
  834. plant.prevention = prevention
  835. plant.img = news_photo
  836. plant.addr = addr
  837. plant.lng = lng
  838. plant.lat = lat
  839. plant.userid = uid.user_id
  840. #如果两次识别结果一样只保留最新的记录
  841. plant.save()
  842. data = 1
  843. else:
  844. #保存识别结果
  845. App_Plant.objects.create(addr=addr, lng=lng, lat=lat, userid=uid.user_id,
  846. name=names, course=course, img_urls=img_urls, prevention=prevention, reporter_id=uid, img=news_photo)
  847. data = 1
  848. # 把识别成功的记录数据保存到知识库(植物)如果知识库中有不做操作
  849. if Diseases.objects.filter(name=names).exists():
  850. data = 1
  851. else:
  852. # 把识别成功的记录数据保存到知识库(植物)
  853. Diseases.objects.create(
  854. name=names, img_urls=img_urls, prevention=prevention, course=course, ret="plant")
  855. data = 1
  856. else:
  857. #保存识别失败的数据
  858. App_Plant.objects.create(
  859. reporter_id=uid, img=news_photo, userid=uid.user_id)
  860. data = 1
  861. return HttpResponse(data)
  862. #虫害列表和详情查看
  863. class Insect_Details(ListView):
  864. def get(self, request):
  865. page = int(request.GET.get("page"))
  866. name = request.session.get("username")
  867. uid = User_Reporter.objects.get(name=name)
  868. dat = []
  869. insect = App_Insect.objects.filter(reporter_id=uid)
  870. num = insect.count()
  871. for i in insect:
  872. dat.append(
  873. {
  874. "time": i.time.strftime('%Y-%m-%d %H:%M:%S'),
  875. "coures": i.course,
  876. "name": i.name,
  877. "img": i.img.name,
  878. "img_urls": i.img_urls,
  879. "prevention": i.prevention,
  880. "id": i.id,
  881. "ret": "insect",
  882. "addr": i.addr,
  883. }
  884. )
  885. dat = dat[(6*(page-1)):(page*6)]
  886. data = {'dat': dat, 'pag': page, 'num': num}
  887. data = json.dumps(data)
  888. return HttpResponse(data)
  889. def post(self, request):
  890. datas = json.loads(request.body.decode())
  891. reporter_id = datas["id"]
  892. dat = []
  893. insect = App_Insect.objects.filter(id=reporter_id)
  894. for i in insect:
  895. dat.append(
  896. {
  897. "time": i.time.strftime('%Y-%m-%d %H:%M:%S'),
  898. "coures": i.course,
  899. "name": i.name,
  900. "img": i.img.name,
  901. "img_urls": i.img_urls,
  902. "prevention": i.prevention,
  903. "addr": i.addr,
  904. }
  905. )
  906. data = json.dumps(dat)
  907. return HttpResponse(data)
  908. #植物病害列表和详情查看
  909. class Plant_Details(ListView):
  910. def get(self, request):
  911. page = int(request.GET.get("page"))
  912. name = request.session.get("username")
  913. uid = User_Reporter.objects.get(name=name)
  914. dat = []
  915. plant = App_Plant.objects.filter(reporter_id=uid)
  916. num = plant.count()
  917. for i in plant:
  918. dat.append(
  919. {
  920. "time": i.time.strftime('%Y-%m-%d %H:%M:%S'),
  921. "coures": i.course,
  922. "name": i.name,
  923. "img": i.img.name,
  924. "img_urls": i.img_urls,
  925. "prevention": i.prevention,
  926. "id": i.id,
  927. "ret": "plant",
  928. "addr": i.addr,
  929. }
  930. )
  931. dat = dat[(6*(page-1)):(page*6)]
  932. data = {'dat': dat, 'pag': page, 'num': num}
  933. data = json.dumps(data)
  934. return HttpResponse(data)
  935. def post(self, request):
  936. datas = json.loads(request.body.decode())
  937. reporter_id = datas["id"]
  938. dat = []
  939. plant = App_Plant.objects.filter(id=reporter_id)
  940. for i in plant:
  941. dat.append(
  942. {
  943. "time": i.time.strftime('%Y-%m-%d %H:%M:%S'),
  944. "coures": i.course,
  945. "name": i.name,
  946. "img": i.img.name,
  947. "img_urls": i.img_urls,
  948. "prevention": i.prevention,
  949. "addr": i.addr
  950. }
  951. )
  952. data = json.dumps(dat)
  953. return HttpResponse(data)
  954. #识别失败用户自行补充数据
  955. class Make_Data(ListView):
  956. def post(self, request):
  957. datas = json.loads(request.body.decode())
  958. img_urls = datas["photo"]
  959. names = datas["name"]
  960. prevention = datas["prevention"]
  961. course = datas["course"]
  962. ids = datas["id"]
  963. ret = datas["ret"]
  964. addr = datas["addr"]
  965. lat = datas["lat"]
  966. lng = datas["lng"]
  967. name = request.session.get("username")
  968. uid = User_Reporter.objects.get(name=name)
  969. try:
  970. if ret == "insect":
  971. insect_plant = App_Insect.objects.get(id=ids, reporter_id=uid)
  972. elif ret == "plant":
  973. insect_plant = App_Plant.objects.get(id=ids, reporter_id=uid)
  974. img_urls = "http://120.27.222.26/" + img_urls
  975. # img_urls = "http://39.104.94.153/" + img_urls
  976. insect_plant.name = names
  977. insect_plant.course = course
  978. insect_plant.img_urls = img_urls
  979. insect_plant.prevention = prevention
  980. insect_plant.addr = addr
  981. insect_plant.lat = lat
  982. insect_plant.lng = lng
  983. insect_plant.save()
  984. data = 1
  985. except Exception as e:
  986. print(e)
  987. data = 0
  988. return HttpResponse(data)
  989. #保存识别失败用户上传的照片
  990. class Upload_Photos(ListView):
  991. def post(self, request):
  992. imgs = request.FILES.get('filter')
  993. print("imgs", imgs)
  994. ret = request.POST.get("ret")
  995. if ret == "insect":
  996. news_photo_dir = 'insect_photos/'
  997. elif ret == "plant":
  998. news_photo_dir = 'plant_photos/'
  999. if os.path.exists(news_photo_dir) == False:
  1000. os.makedirs(news_photo_dir)
  1001. img = Image.open(imgs)
  1002. end_name = imgs.name.split('.')[-1]
  1003. now_time = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
  1004. pic_name = now_time + '.' + end_name
  1005. img = img.convert('RGB')
  1006. img.save(news_photo_dir + pic_name)
  1007. news_photo = news_photo_dir + pic_name
  1008. data = {"news_photo": news_photo, "ret": ret}
  1009. data = json.dumps(data)
  1010. print("data", data)
  1011. return HttpResponse(data)
  1012. #删除识别记录用户上传的图片
  1013. class Del_Insect_Photo(ListView):
  1014. def post(self, request):
  1015. datas = json.loads(request.body.decode())
  1016. photos = datas["photos"]
  1017. ret = datas["ret"]
  1018. if os.path.exists(photos) == True:
  1019. # 删除图片文件
  1020. os.remove(photos)
  1021. data = 1
  1022. else:
  1023. data = 0
  1024. return HttpResponse(data)
  1025. #识别记录删除
  1026. class Del_Record(ListView):
  1027. def post(self, request):
  1028. datas = json.loads(request.body.decode())
  1029. reporter_id = datas["id"]
  1030. ret = datas["ret"]
  1031. if not all([reporter_id, ret]):
  1032. return HttpResponse("参数不正确")
  1033. name = request.session.get("username")
  1034. uid = User_Reporter.objects.get(name=name)
  1035. if ret == "insect":
  1036. insect = App_Insect.objects.get(id=reporter_id, reporter_id=uid)
  1037. elif ret == "plant":
  1038. insect = App_Plant.objects.get(id=reporter_id, reporter_id=uid)
  1039. if os.path.exists(str(insect.img)) == True:
  1040. # 删除图片文件
  1041. os.remove(str(insect.img))
  1042. insect.delete()
  1043. data = 1
  1044. else:
  1045. data = 0
  1046. return HttpResponse(data)
  1047. #知识库
  1048. class Insect_Base(ListView):
  1049. def get(self, request):
  1050. page = int(request.GET.get("page"))
  1051. dat = []
  1052. req = Diseases.objects.filter(ret="insect")
  1053. num = req.count()
  1054. for i in req:
  1055. dat.append({
  1056. "time": i.time.strftime('%Y-%m-%d %H:%M:%S'),
  1057. "course": i.course,
  1058. "name": i.name,
  1059. "img_urls": i.img_urls,
  1060. "prevention": i.prevention,
  1061. "id": i.id,
  1062. "ret": i.ret
  1063. })
  1064. dat = dat[(6*(page-1)):(page*6)]
  1065. data = {'dat': dat, 'pag': page, 'num': num}
  1066. data = json.dumps(data)
  1067. return HttpResponse(data)
  1068. def post(self, request):
  1069. datas = json.loads(request.body.decode())
  1070. reporter_id = datas["id"]
  1071. dat = []
  1072. req = Diseases.objects.filter(id=reporter_id)
  1073. for i in req:
  1074. dat.append({
  1075. "time": i.time.strftime('%Y-%m-%d %H:%M:%S'),
  1076. "course": i.course,
  1077. "name": i.name,
  1078. "img_urls": i.img_urls,
  1079. "prevention": i.prevention,
  1080. })
  1081. data = json.dumps(dat)
  1082. return HttpResponse(data)
  1083. #知识库(作物)
  1084. class Plant_Base(ListView):
  1085. def get(self, request):
  1086. page = int(request.GET.get("page"))
  1087. dat = []
  1088. req = Diseases.objects.filter(ret="plant")
  1089. num = req.count()
  1090. if num:
  1091. for i in req:
  1092. dat.append({
  1093. "time": i.time.strftime('%Y-%m-%d %H:%M:%S'),
  1094. "course": i.course,
  1095. "name": i.name,
  1096. "img_urls": i.img_urls,
  1097. "prevention": i.prevention,
  1098. "id": i.id,
  1099. "ret": i.ret
  1100. })
  1101. dat = dat[(6*(page-1)):(page*6)]
  1102. data = {'dat': dat, 'pag': page, 'num': num}
  1103. data = json.dumps(data)
  1104. else:
  1105. data = 0
  1106. return HttpResponse(data)
  1107. #知识库搜索
  1108. class Search(ListView):
  1109. def post(self, request):
  1110. datas = json.loads(request.body.decode())
  1111. name = datas["name"]
  1112. ret = datas["ret"]
  1113. page = int(datas["page"])
  1114. dat = []
  1115. if ret != "insect" and ret != "plant":
  1116. data = 0
  1117. return HttpResponse(data)
  1118. #包涵查询 name__contains
  1119. req = Diseases.objects.filter(name__contains=name, ret=ret)
  1120. num = req.count()
  1121. for i in req:
  1122. dat.append({
  1123. "time": i.time.strftime('%Y-%m-%d %H:%M:%S'),
  1124. "course": i.course,
  1125. "name": i.name,
  1126. "img_urls": i.img_urls,
  1127. "prevention": i.prevention,
  1128. "id": i.id,
  1129. "req": ret
  1130. })
  1131. dat = dat[(6*(page-1)):(page*6)]
  1132. data = {'dat': dat, 'pag': page, 'num': num}
  1133. data = json.dumps(data)
  1134. return HttpResponse(data)
  1135. #用户反馈
  1136. class User_Pro(ListView):
  1137. def post(self, request):
  1138. datas = json.loads(request.body.decode())
  1139. name = datas["name"]
  1140. phone = datas["phone"]
  1141. proposal = datas["proposal"]
  1142. count = datas["count"]
  1143. store = datas["store"]
  1144. if store == "1":
  1145. mobile = re.compile('^(13\d|14[5|7]|15\d|166|17\d|18\d)\d{8}$')
  1146. res = re.search(mobile, phone)
  1147. if res:
  1148. Feedback.objects.create(
  1149. name=name, phone=phone, proposal=proposal, count=count, store=store)
  1150. data = 1
  1151. else:
  1152. data = 0
  1153. elif store == "2":
  1154. Feedback.objects.create(
  1155. name=name, phone=phone, proposal=proposal, count=count, store=store)
  1156. data = 1
  1157. return HttpResponse(data)
  1158. #返回用户反馈(管理员可见)
  1159. class Check_Leaving(ListView):
  1160. def get(self, request):
  1161. name = request.session.get("username")
  1162. print("name:", name)
  1163. # name = "demo"
  1164. page = int(request.GET.get("page"))
  1165. uid = User_Reporter.objects.get(name=name)
  1166. dat = []
  1167. if uid.user_id.is_superuser == True and uid.user_id.is_staff == True and uid.user_id.is_active == True:
  1168. print("管理员")
  1169. ret = Feedback.objects.all()
  1170. num = ret.count()
  1171. for i in ret:
  1172. dat.append({
  1173. "time": time.strftime("%Y-%m-%d %H:%M:%S"),
  1174. "phone": i.phone,
  1175. "count": i.count,
  1176. "id": i.id,
  1177. "store": i.store,
  1178. "name": i.name,
  1179. "proposal": i.proposal,
  1180. "ret": "del"
  1181. })
  1182. dat = dat[(7*(page-1)):(page*7)]
  1183. data = {'dat': dat, 'page': page, 'num': num}
  1184. data = json.dumps(data)
  1185. else:
  1186. # print("普通用户")
  1187. data = 1
  1188. return HttpResponse(data)
  1189. def post(self, request):
  1190. datas = json.loads(request.body.decode())
  1191. reporter_id = datas["id"]
  1192. ret = datas["ret"]
  1193. dat = []
  1194. if ret == "del":
  1195. Feedback.objects.get(id=reporter_id).delete()
  1196. data = 1
  1197. else:
  1198. ret = Feedback.objects.filter(id=reporter_id)
  1199. for i in ret:
  1200. dat.append({
  1201. "time": i.time.strftime("%Y-%m-%d %H:%M:%S"),
  1202. "phone": i.phone,
  1203. "count": i.count,
  1204. "store": i.store,
  1205. "name": i.name,
  1206. "proposal": i.proposal,
  1207. })
  1208. data = json.dumps(dat)
  1209. return HttpResponse(data)
  1210. #获取随机6位数字进行加密
  1211. def verification_code():
  1212. num = ''
  1213. for x in range(6):
  1214. num += str(random.randint(0, 9))
  1215. return num
  1216. #生成32位激活验证码
  1217. class Census(ListView):
  1218. def get(self, request):
  1219. # word = verification_code().encode("utf-8")
  1220. word = request.GET.get("word").encode("utf-8")
  1221. password = hashlib.sha1(word).hexdigest()
  1222. print(password)
  1223. # pass_word = password[8:]
  1224. # print(pass_word)
  1225. # Encryption.objects.create(cipher=password)
  1226. data = 1
  1227. return HttpResponse(data)
  1228. def post(self, request):
  1229. datas = json.loads(request.body.decode())
  1230. num = datas["num"]
  1231. imei = datas["imei"]
  1232. print("原始imei", imei)
  1233. if not all([num, imei]):
  1234. data = 0
  1235. return HttpResponse(data)
  1236. imei = json.loads(imei)
  1237. imeid = imei["uuid"]
  1238. if imeid.find(",") != -1:
  1239. imeid = imeid.split(",")[0]
  1240. print("imeid", imeid)
  1241. #校验是否登录过
  1242. if Encryption.objects.filter(cipher=num, meid=imeid).exists():
  1243. data = 5
  1244. else:
  1245. #校验秘钥是否正确
  1246. if Encryption.objects.filter(cipher=num).exists():
  1247. #在秘钥正确的情况下校验手机imei是否正确
  1248. if Encryption.objects.filter(meid=imeid).exists():
  1249. data = 1
  1250. else:
  1251. #在imei没有进行绑定的情况下
  1252. cip = Encryption.objects.get(cipher=num)
  1253. if cip.meid:
  1254. data = 3
  1255. else:
  1256. cip.meid = imeid
  1257. cip.save()
  1258. data = 4
  1259. else:
  1260. data = 2
  1261. data = json.dumps(data)
  1262. return HttpResponse(data)
  1263. #判定是否已注册
  1264. class Decide(ListView):
  1265. def post(self, request):
  1266. datas = json.loads(request.body.decode())
  1267. imei = datas["imei"]
  1268. print("原始imei", imei)
  1269. data = []
  1270. if not all([imei]):
  1271. data = 0
  1272. return HttpResponse(data)
  1273. imei = json.loads(imei)
  1274. imeid = imei["uuid"]
  1275. if imeid.find(",") != -1:
  1276. imeid = imeid.split(",")[0]
  1277. print("imeid", imeid)
  1278. print("转换后的imei", imei)
  1279. if Encryption.objects.filter(meid=imeid).exists():
  1280. imei = Encryption.objects.get(meid=imeid)
  1281. data.append({
  1282. "cipher": imei.cipher
  1283. })
  1284. else:
  1285. data = 2
  1286. data = json.dumps(data)
  1287. return HttpResponse(data)
  1288. #往数据库中添加病虫害值接口
  1289. class Plus_Insect(ListView):
  1290. def post(self, request):
  1291. datas = json.loads(request.body.decode())
  1292. ret = datas["ret"]
  1293. course = datas["course"]
  1294. name = datas["name"]
  1295. img_urls = datas["img_urls"]
  1296. prevention = datas["prevention"]
  1297. try:
  1298. Diseases.objects.create(ret=ret, course=course,
  1299. name=name, img_urls=img_urls, prevention=prevention
  1300. )
  1301. data = 1
  1302. except Exception as e:
  1303. print(e)
  1304. data = 0
  1305. return HttpResponse(data)
  1306. #爬取数据的
  1307. class scrapy_insect(View):
  1308. def get(self,request):
  1309. # start_date = datetime.datetime.now() - datetime.timedelta(days=2)
  1310. # end_date = datetime.datetime.now()
  1311. page = int(request.GET.get("page"))
  1312. start_time = request.GET.get('start_time')
  1313. end_time = request.GET.get('end_time')
  1314. now_time = datetime.datetime.now()
  1315. print("当前日期为:",now_time)
  1316. print("当前月为:",now_time.month)
  1317. begindate = re.findall(r"\d+\.?\d*", start_time)
  1318. enddate = re.findall(r"\d+\.?\d*", end_time)
  1319. start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2]))
  1320. end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2]))
  1321. sta1 = RecentCBDdata.objects.all().values()[(20*(page-1)):(page*20)]
  1322. data = []
  1323. # upl_time__range=(start_date, end_date)
  1324. for x in sta1:
  1325. cbd_list = CBDphoto.objects.filter(equip_id_id=x['equip_id_id'],upl_time__range=(start_date,end_date))
  1326. if cbd_list.exists():
  1327. da = []
  1328. imei_list = []
  1329. for i in cbd_list:
  1330. if i.equip_id.equip_id not in imei_list:
  1331. imei_list.append({i.equip_id.equip_id:i.addr})
  1332. else:
  1333. imei_list = []
  1334. data.append(imei_list)
  1335. data = json.dumps(data)
  1336. return HttpResponse(data)
  1337. #数据导入接口
  1338. # class daoru(View):
  1339. # def post(self,request):
  1340. # # ret = request.POST.get("ret")
  1341. # # if ret == "scd":
  1342. # # equip_list = transpont_equip_scd
  1343. # # elif ret == "cbd":
  1344. # # equip_list = transpont_equip_cbd
  1345. # # elif ret == "qxz":
  1346. # # equip_list = transpont_equip_qxz
  1347. # # elif ret == "bzy":
  1348. # # equip_list = transpont_equip_bzy
  1349. # # elif ret == "ybq":
  1350. # # equip_list = transpont_equip_ybq
  1351. # # # print(equip_list.keys())
  1352. # # for i in equip_list.keys():
  1353. # # zhi = equip_list[i]
  1354. # # print(zhi)
  1355. # # Equip_Forward.objects.create(equip_id=i,equip_data_url=zhi,equip_data_between=1)
  1356. # # data = 0
  1357. # # return HttpResponse(data)
  1358. # ret = request.POST.get("ret")
  1359. # equip_list = Equip.objects.filter(~Q(ftp_addr=None),equip_type__type_id=ret)
  1360. # print(len(equip_list))
  1361. # for i in equip_list:
  1362. # if i.ftp_addr:
  1363. # try:
  1364. # equips = Equip_Forward.objects.get(equip_id=i.equip_id)
  1365. # equips.equip_img_url = i.ftp_addr
  1366. # equips.equip_img_between = 1
  1367. # equips.save()
  1368. # except:
  1369. # Equip_Forward.objects.create(equip_id=i.equip_id,equip_img_url=i.ftp_addr,equip_img_between=1)
  1370. # data = 0
  1371. # return HttpResponse(data)