326 lines
14 KiB
Python
326 lines
14 KiB
Python
from django.shortcuts import render
|
|
from rest_framework.views import APIView
|
|
from rest_framework.authentication import BaseAuthentication
|
|
from safesite.models import User
|
|
from rest_framework.exceptions import AuthenticationFailed
|
|
from .models import DWasteHandleRecord, DWasteKeepRecord, DWasteMakeList, DWasteMakeRecord, Drain, GasEmit, NormalWasteRecord, Waste
|
|
from safesite.views import transjson, fenye, MyEncoder
|
|
from django.http import HttpResponse, JsonResponse
|
|
import json
|
|
# Create your views here.
|
|
def myAuthentication(BaseAuthentication):
|
|
def authenticate(self, request):
|
|
user = User.objects.get(userid=request.session['userid'])
|
|
if user:
|
|
return (user, None)
|
|
raise AuthenticationFailed()
|
|
|
|
|
|
def HtmlWaste(request):
|
|
return render(request, 'waste.html')
|
|
|
|
def HtmlDangerousWaste(request):
|
|
return render(request, 'dangerousWaste.html')
|
|
|
|
def HtmlWgas(request):
|
|
return render(request, 'wgas.html')
|
|
|
|
def HtmlWwater(request):
|
|
return render(request, 'wwater.html')
|
|
|
|
def HtmlGasPredict(request):
|
|
return render(request, 'gaspredict.html')
|
|
|
|
def ApiWaste(request, action):
|
|
user = User.objects.get(userid=request.session['userid'])
|
|
if action == 'list':
|
|
objs = Waste.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
|
objs = objs.filter(type=request.GET.get('type', 1))
|
|
total = objs.count()
|
|
startnum, endnum = fenye(request)
|
|
objs = objs.order_by('id')[startnum:endnum].values('id', 'number', 'name', 'type')
|
|
return HttpResponse(transjson(total, objs), content_type="application/json")
|
|
elif action == 'combobox':
|
|
objs = Waste.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
|
objs = objs.filter(type=request.GET.get('type', 1)).order_by('id')
|
|
data = objs.values('id', 'number', 'name')
|
|
return JsonResponse(list(data), safe=False)
|
|
elif action == 'create':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj= Waste()
|
|
obj.number = data['number']
|
|
obj.name = data['name']
|
|
obj.type = data['type']
|
|
obj.create_by = user
|
|
obj.update_by = user
|
|
obj.usecomp = user.usecomp
|
|
obj.save()
|
|
return JsonResponse({"code":1})
|
|
elif action == 'delete':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = Waste.objects.get(id=data['id'])
|
|
obj.delete()
|
|
return JsonResponse({"code":1})
|
|
elif action == 'update':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = Waste.objects.get(id=data['id'])
|
|
obj.number = data['number']
|
|
obj.name = data['name']
|
|
obj.update_by=user
|
|
obj.save()
|
|
return JsonResponse({"code":1})
|
|
|
|
def ApiNormalWasteRecord(request, action):
|
|
user = User.objects.get(userid=request.session['userid'])
|
|
if action == 'list':
|
|
objs = NormalWasteRecord.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
|
if request.GET.get('waste', None):
|
|
objs = objs.filter(waste=request.GET.get('waste'))
|
|
total = objs.count()
|
|
startnum, endnum = fenye(request)
|
|
objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'gen_date', 'dis_date', 'gen_count', 'dis_count', 'operator__name', 'waste__name', 'waste', 'operator', 'inv_count')
|
|
return HttpResponse(transjson(total, objs), content_type="application/json")
|
|
elif action == 'create':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = NormalWasteRecord()
|
|
obj.waste = Waste.objects.get(id=data['waste'])
|
|
obj.operator = User.objects.get(userid=data['operator'])
|
|
obj.create_by = user
|
|
obj.update_by = user
|
|
obj.usecomp = user.usecomp
|
|
obj.gen_date = data['gen_date']
|
|
obj.dis_date = data['dis_date']
|
|
obj.gen_count = data['gen_count']
|
|
obj.dis_count = data['dis_count']
|
|
obj.inv_count = data['inv_count']
|
|
obj.save()
|
|
return JsonResponse({"code":1})
|
|
elif action == 'delete':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = NormalWasteRecord.objects.get(id=data['id'])
|
|
obj.delete()
|
|
return JsonResponse({"code":1})
|
|
|
|
def ApiDWasteMakeList(request,action):
|
|
user = User.objects.get(userid=request.session['userid'])
|
|
if action == 'list':
|
|
objs = DWasteMakeList.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
|
if request.GET.get('waste', None):
|
|
objs = objs.filter(waste=request.GET.get('waste'))
|
|
total = objs.count()
|
|
startnum, endnum = fenye(request)
|
|
objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'waste', 'process', 'source', 'goto', 'companyname', 'gen_count', 'license', 'waste__name', 'waste__number', 'create_time')
|
|
return HttpResponse(transjson(total, objs), content_type="application/json")
|
|
elif action == 'create':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = DWasteMakeList()
|
|
obj.waste = Waste.objects.get(id=data['waste'])
|
|
obj.create_by = user
|
|
obj.update_by = user
|
|
obj.usecomp = user.usecomp
|
|
obj.process = data['process']
|
|
obj.source = data['source']
|
|
obj.goto = data['goto']
|
|
obj.companyname = data['companyname']
|
|
obj.gen_count = data['gen_count']
|
|
obj.license = data['license']
|
|
obj.save()
|
|
return JsonResponse({"code":1})
|
|
elif action == 'delete':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = DWasteMakeList.objects.get(id=data['id'])
|
|
obj.delete()
|
|
return JsonResponse({"code":1})
|
|
|
|
def ApiDWasteMakeRecord(request,action):
|
|
user = User.objects.get(userid=request.session['userid'])
|
|
if action == 'list':
|
|
objs = DWasteMakeRecord.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
|
if request.GET.get('waste', None):
|
|
objs = objs.filter(waste=request.GET.get('waste'))
|
|
total = objs.count()
|
|
startnum, endnum = fenye(request)
|
|
objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'waste', 'gen_time', 'gen_count', 'container', 'container_count', 'trans_time', 'trans_count', 'waste__name', 'waste__number', 'goto')
|
|
return HttpResponse(transjson(total, objs), content_type="application/json")
|
|
elif action == 'create':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = DWasteMakeRecord()
|
|
obj.waste = Waste.objects.get(id=data['waste'])
|
|
obj.create_by = user
|
|
obj.update_by = user
|
|
obj.usecomp = user.usecomp
|
|
obj.gen_time = data['gen_time']
|
|
obj.gen_count = data['gen_count']
|
|
obj.goto = data['goto']
|
|
obj.container = data['container']
|
|
obj.container_count = data['container_count']
|
|
obj.trans_time = data['trans_time']
|
|
obj.trans_count = data['trans_count']
|
|
obj.save()
|
|
return JsonResponse({"code":1})
|
|
elif action == 'delete':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = DWasteMakeRecord.objects.get(id=data['id'])
|
|
obj.delete()
|
|
return JsonResponse({"code":1})
|
|
|
|
def ApiDWasteKeepRecord(request,action):
|
|
user = User.objects.get(userid=request.session['userid'])
|
|
if action == 'list':
|
|
objs = DWasteKeepRecord.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
|
if request.GET.get('waste', None):
|
|
objs = objs.filter(waste=request.GET.get('waste'))
|
|
total = objs.count()
|
|
startnum, endnum = fenye(request)
|
|
objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'waste', 'in_time', 'in_count', 'source', 'container', 'container_count', 'place', 'out_time', 'out_count', 'waste__name', 'waste__number', 'goto')
|
|
return HttpResponse(transjson(total, objs), content_type="application/json")
|
|
elif action == 'create':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = DWasteKeepRecord()
|
|
obj.waste = Waste.objects.get(id=data['waste'])
|
|
obj.create_by = user
|
|
obj.update_by = user
|
|
obj.usecomp = user.usecomp
|
|
obj.in_time = data['in_time']
|
|
obj.in_count = data['in_count']
|
|
obj.source = data['source']
|
|
obj.place = data['place']
|
|
obj.goto = data['goto']
|
|
obj.container = data['container']
|
|
obj.container_count = data['container_count']
|
|
obj.out_time = data['out_time']
|
|
obj.out_count = data['out_count']
|
|
obj.save()
|
|
return JsonResponse({"code":1})
|
|
elif action == 'delete':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = DWasteKeepRecord.objects.get(id=data['id'])
|
|
obj.delete()
|
|
return JsonResponse({"code":1})
|
|
|
|
def ApiDWasteHandleRecord(request,action):
|
|
user = User.objects.get(userid=request.session['userid'])
|
|
if action == 'list':
|
|
objs = DWasteHandleRecord.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
|
if request.GET.get('waste', None):
|
|
objs = objs.filter(waste=request.GET.get('waste'))
|
|
total = objs.count()
|
|
startnum, endnum = fenye(request)
|
|
objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'waste', 'accept_time', 'accept_count', 'source', 'container', 'container_count', 'handle_time', 'handle_method', 'waste__name', 'waste__number')
|
|
return HttpResponse(transjson(total, objs), content_type="application/json")
|
|
elif action == 'create':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = DWasteHandleRecord()
|
|
obj.waste = Waste.objects.get(id=data['waste'])
|
|
obj.create_by = user
|
|
obj.update_by = user
|
|
obj.usecomp = user.usecomp
|
|
obj.accept_time = data['accept_time']
|
|
obj.accept_count = data['accept_count']
|
|
obj.source = data['source']
|
|
obj.container = data['container']
|
|
obj.container_count = data['container_count']
|
|
obj.handle_time = data['handle_time']
|
|
obj.handle_method = data['handle_method']
|
|
obj.save()
|
|
return JsonResponse({"code":1})
|
|
elif action == 'delete':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = DWasteHandleRecord.objects.get(id=data['id'])
|
|
obj.delete()
|
|
return JsonResponse({"code":1})
|
|
|
|
def ApiDrain(request, action):
|
|
user = User.objects.get(userid=request.session['userid'])
|
|
if action == 'list':
|
|
objs = Drain.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
|
total = objs.count()
|
|
startnum, endnum = fenye(request)
|
|
objs = objs.order_by('id')[startnum:endnum].values('id', 'number', 'name')
|
|
return HttpResponse(transjson(total, objs), content_type="application/json")
|
|
elif action == 'combobox':
|
|
objs = Drain.objects.filter(usecomp=user.usecomp, is_deleted=False).order_by('id')
|
|
data = objs.values('id', 'number', 'name')
|
|
return JsonResponse(list(data), safe=False)
|
|
elif action == 'create':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj= Drain()
|
|
obj.number = data['number']
|
|
obj.name = data['name']
|
|
obj.create_by = user
|
|
obj.update_by = user
|
|
obj.usecomp = user.usecomp
|
|
obj.save()
|
|
return JsonResponse({"code":1})
|
|
elif action == 'delete':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = Drain.objects.get(id=data['id'])
|
|
obj.delete()
|
|
return JsonResponse({"code":1})
|
|
elif action == 'update':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = Drain.objects.get(id=data['id'])
|
|
obj.number = data['number']
|
|
obj.name = data['name']
|
|
obj.update_by=user
|
|
obj.save()
|
|
return JsonResponse({"code":1})
|
|
|
|
def ApiGasEmit(request,action):
|
|
user = User.objects.get(userid=request.session['userid'])
|
|
if action == 'list':
|
|
objs = GasEmit.objects.filter(usecomp=user.usecomp, is_deleted=False)
|
|
if request.GET.get('drain', None):
|
|
objs = objs.filter(drain=request.GET.get('drain'))
|
|
total = objs.count()
|
|
startnum, endnum = fenye(request)
|
|
objs = objs.order_by('-create_time')[startnum:endnum].values('id', 'drain', 'watch_time', 'out_smoke', 'out_o2', 'out_so2', 'out_so2_s', 'out_particle', 'out_particle_s', 'drain__name', 'drain__number'
|
|
, 'out_nox', 'out_nox_s', 'in_smoke', 'in_o2', 'in_so2', 'in_so2_s', 'in_particle', 'in_particle_s'
|
|
, 'in_nox', 'in_nox_s')
|
|
return HttpResponse(transjson(total, objs), content_type="application/json")
|
|
elif action == 'create':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = GasEmit()
|
|
obj.drain = Drain.objects.get(id=data['drain'])
|
|
obj.create_by = user
|
|
obj.update_by = user
|
|
obj.usecomp = user.usecomp
|
|
obj.watch_time = data['watch_time']
|
|
obj.out_smoke = data['out_smoke']
|
|
obj.out_o2 = data['out_o2']
|
|
obj.out_so2 = data['out_so2']
|
|
obj.out_so2_s = data['out_so2_s']
|
|
obj.out_particle = data['out_particle']
|
|
obj.out_particle_s = data['out_particle_s']
|
|
obj.out_nox = data['out_nox']
|
|
obj.out_nox_s = data['out_nox_s']
|
|
obj.in_smoke = data['in_smoke']
|
|
obj.in_o2 = data['in_o2']
|
|
obj.in_so2 = data['in_so2']
|
|
obj.in_so2_s = data['in_so2_s']
|
|
obj.in_particle = data['in_particle']
|
|
obj.in_particle_s = data['in_particle_s']
|
|
obj.in_nox = data['in_nox']
|
|
obj.in_nox_s = data['in_nox_s']
|
|
obj.save()
|
|
return JsonResponse({"code":1})
|
|
elif action == 'delete':
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
obj = GasEmit.objects.get(id=data['id'])
|
|
obj.delete()
|
|
return JsonResponse({"code":1})
|
|
|
|
import numpy as np
|
|
from .predict import GM11
|
|
def ApiGasPredict(request, element, drainId):
|
|
element_list = list(GasEmit.objects.filter(is_deleted=False, drain__id=drainId)\
|
|
.order_by('-create_time')[0:5].values_list(element, flat=True))
|
|
element_list.reverse()
|
|
if len(element_list)>=3:
|
|
result = GM11(np.array(element_list), 3)
|
|
element_list.extend(result['predict']['value'])
|
|
ret = {"code":1, "data":[round(i,2) for i in element_list]}
|
|
return JsonResponse(ret)
|
|
else:
|
|
return JsonResponse({"code":0, "msg":'至少需要三条记录'})
|
|
|