From 780daadbfad6fc9411efc4121dc6a94017709d0a Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 16 Oct 2019 15:36:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E7=88=AC=E8=99=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- safesite/daoru.py | 104 +++++++++++--- safesite/safespider.py | 33 +++-- safesite/templates/question.html | 33 +++++ safesite/templates/risk.html | 4 +- safesite/templates/riskas.html | 186 ++++++++++++++++++++++++++ safesite/templates/safecert.html | 4 +- safesite/templates/troubleashtml.html | 6 + safesite/urls.py | 1 + safesite/views.py | 23 +++- 9 files changed, 357 insertions(+), 37 deletions(-) create mode 100644 safesite/templates/riskas.html diff --git a/safesite/daoru.py b/safesite/daoru.py index 898337bb..a51befa2 100644 --- a/safesite/daoru.py +++ b/safesite/daoru.py @@ -53,20 +53,31 @@ def makeqr_area(data): img.save(filepath) return filepath -def drquestions(companyid,path): +def drquestions(companyid,path,userid): wb = load_workbook(path) sheet = wb.worksheets[0] i = 4 + user = User.objects.get(userid=userid) + qlist = ['A','B','C','D','E','F'] + leveldict = {'低':1,'中':2,'高':3} + notinlist = [] while sheet['c'+str(i)].value!=None: type = sheet['a'+str(i)].value.replace(' ', '') cate = sheet['b'+str(i)].value.replace(' ', '') title = sheet['c'+str(i)].value - answerA = sheet['d'+str(i)].value - answerB = sheet['e'+str(i)].value - answerC = sheet['f'+str(i)].value - answerD = sheet['g'+str(i)].value - answerE = sheet['h'+str(i)].value - answerF = sheet['i'+str(i)].value + answer = {} + if sheet['d'+str(i)].value: + answer['A'] = sheet['d'+str(i)].value + if sheet['e'+str(i)].value: + answer['B'] = sheet['e'+str(i)].value + if sheet['f'+str(i)].value: + answer['C'] = sheet['f'+str(i)].value + if sheet['g'+str(i)].value: + answer['D'] = sheet['g'+str(i)].value + if sheet['h'+str(i)].value: + answer['E'] = sheet['h'+str(i)].value + if sheet['i'+str(i)].value: + answer['F'] = sheet['i'+str(i)].value right = sheet['j'+str(i)].value.replace(' ', '') resolution = sheet['k'+str(i)].value level = sheet['l'+str(i)].value @@ -78,19 +89,74 @@ def drquestions(companyid,path): if objs.exists(): cateobj = objs[0] else: - cateobj = Questioncat.objects.create(usecomp__partid=companyid,name=cate) + cateobj = Questioncat.objects.create(usecomp=Partment.objects.get(partid=companyid),name=cate) + print(cateobj) if type == '单选': - obj = Question() - obj.type = 1 - obj.cate = cateobj - obj.title = title - obj.answerA = answerA - obj.answerB = answerB - obj.answerC = answerC - obj.answerD = answerD - obj.answerE = answerE - obj.answerF = answerF - pass + if Question.objects.filter(type=1,title=title,right=right,deletemark=1).exists(): + notinlist.append(i) + else: + if right in ['A','B','C','D','E','F']: + obj = Question() + obj.type = 1 + obj.questioncat = cateobj + obj.title = title + obj.answer=answer + obj.right = right + obj.resolution = resolution if resolution else '' + if level in leveldict: + obj.level = leveldict[level] + else: + obj.level = 1 + obj.usecoms = ','+companyid+',' + obj.createuser = user + obj.save() + elif type == '多选': + right = list(right) + if Question.objects.filter(type=2,title=title,right=right,deletemark=1).exists(): + notinlist.append(i) + else: + if [False for c in right if c not in qlist]: + pass + else: + obj = Question() + obj.type = 2 + obj.questioncat = cateobj + obj.title = title + obj.answer=answer + obj.right = right + obj.resolution = resolution if resolution else '' + if level in leveldict: + obj.level = leveldict[level] + else: + obj.level = 1 + obj.usecoms = ','+companyid+',' + obj.createuser = user + obj.save() + elif type == '判断': + if right == 'A' or right == '对': + right = 'A' + else: + right = 'B' + if Question.objects.filter(type=3,title=title,right=right,deletemark=1).exists(): + notinlist.append(i) + else: + obj = Question() + obj.type = 3 + obj.questioncat = cateobj + obj.title = title + obj.answer={'A':'对','B':'错'} + obj.right = right + obj.resolution = resolution if resolution else '' + if level in leveldict: + obj.level = leveldict[level] + else: + obj.level = 1 + obj.usecoms = ','+companyid+',' + obj.createuser = user + obj.save() + i = i +1 + print(notinlist) + return notinlist diff --git a/safesite/safespider.py b/safesite/safespider.py index c8fe86d5..5c7bc66f 100644 --- a/safesite/safespider.py +++ b/safesite/safespider.py @@ -1,21 +1,24 @@ import requests from urllib import parse from lxml import etree -'''headers = { +headers = { 'Host': 'cx.saws.org.cn', - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0', - 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', - 'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0', + 'Accept': 'text/plain, */*; q=0.01', + 'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', 'Accept-Encoding': 'gzip, deflate', + 'Content-Type':'application/x-www-form-urlencoded', 'Connection': 'keep-alive', - 'Cache-Control': 'max-age=0, no-cache',}''' + 'Referer':'http://cx.saws.org.cn/cms/html/certQuery/certQuery.do?method=getCertQueryIndex&ref=ch', + 'X-Requested-With':'XMLHttpRequest'} def getTzzs(certnum,stu_name):#特种证书(身份证号,姓名,均是字符) certtype_code='720' stu_name=parse.quote(parse.quote(stu_name)) - url = "http://cx.saws.org.cn/cms/html/certQuery/certQuery.do?method=getCertQueryResult&ref=ch&certtype_code="+certtype_code+"&certnum="+certnum+"&stu_name="+stu_name - data = requests.get(url).text + sessionId = eval(requests.post('http://cx.saws.org.cn/cms/html/certQuery/certQuery.do?method=getServerTime',headers=headers).text)['time'] + url = "http://cx.saws.org.cn/cms/html/certQuery/certQuery.do?method=getCertQueryResult&ref=ch&certtype_code="+certtype_code+"&certnum="+certnum+"&stu_name="+stu_name+'&passcode=1234'+'&sessionId='+sessionId + data = requests.get(url,headers=headers).text tree = etree.HTML(data) e1 = tree.xpath("//th[text()='姓名']/following-sibling::td[1]/text()") e2 = tree.xpath("//th[text()='性别']/following-sibling::td[1]/text()") @@ -35,19 +38,25 @@ def getTzzs(certnum,stu_name):#特种证书(身份证号,姓名,均是字符) def getAqzs(certnum,stu_name):#安全证书(身份证号,姓名,均是字符) certtype_code='720' stu_name=parse.quote(parse.quote(stu_name)) - url = "http://cx.saws.org.cn/cms/html/certQuery/certQuery.do?method=getCertQueryResult2&ref=ch&certtype_code="+certtype_code+"&certnum="+certnum+"&stu_name="+stu_name - data = requests.get(url).text + sessionId = eval(requests.post('http://cx.saws.org.cn/cms/html/certQuery/certQuery.do?method=getServerTime',headers=headers).text)['time'] + url = "http://cx.saws.org.cn/cms/html/certQuery/certQuery.do?method=getCertQueryResult2&ref=ch&certtype_code="+certtype_code+"&certnum="+certnum+"&stu_name="+stu_name+'&passcode=1234'+'&sessionId='+sessionId + data = requests.get(url,headers=headers).text tree = etree.HTML(data) - print(data) e1 = tree.xpath("//th[text()='姓名']/following-sibling::td[1]/text()") e2 = tree.xpath("//th[text()='性别']/following-sibling::td[1]/text()") e3 = tree.xpath("//th[text()='资格类型']/following-sibling::td[1]/text()") e4 = tree.xpath("//th[text()='单位类型']/following-sibling::td[1]/text()") - e5 = tree.xpath("//th[text()='发证机关']/following-sibling::td[1]/text()") + e5 = tree.xpath("//th[text()='发证机关']/following-sibling::td[1]") + e6 = tree.xpath("//th[text()='初领日期']/following-sibling::td[1]/text()") e7 = tree.xpath("//th[text()='应复审日期']/following-sibling::td[1]/text()") e8 = tree.xpath("//th[text()='有效期开始时间']/following-sibling::td[1]/text()") e9 = tree.xpath("//th[text()='有效期结束时间']/following-sibling::td[1]/text()") cdata = [] + x5=[] + for i in e5: + x5.append(i.xpath("string(.)")) + print(e6) for i in range(len(e1)): - cdata.append({'姓名':e1[i],'性别':e2[i],'资格类型':e3[i],'单位类型':e4[i],'发证机关':e5[i],'应复审日期':e7[i].strip(),'有效期开始时间':e8[i].strip(),'有效期结束时间':e9[i].strip(),'url':url}) + cdata.append({'姓名':e1[i],'性别':e2[i],'资格类型':e3[i],'单位类型':e4[i],'发证机关':x5[i],'应复审日期':e7[i].strip(),'有效期开始时间':e8[i].strip(),'有效期结束时间':e9[i].strip(),'初领日期':e6[i].strip(),'url':url}) + return cdata \ No newline at end of file diff --git a/safesite/templates/question.html b/safesite/templates/question.html index 60ca4455..41f97059 100644 --- a/safesite/templates/question.html +++ b/safesite/templates/question.html @@ -237,4 +237,37 @@ $.messager.alert('提示', '请选择一道题目!'); } } + document.getElementById('drfile').onchange = function () { + var fileObj = this.files[0]; + var url = 'drapi?a=question' + var form = new FormData(); + form.append("upfile", fileObj); // 文件对象 + xhr = new XMLHttpRequest(); // XMLHttpRequest 对象 + xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。 + xhr.send(form) + $('#drtmdg').dialog('close') + loading('导入中。。'); + xhr.onload = function (evt) { //服务断接收完文件返回的结果 + var data = JSON.parse(evt.target.responseText); + removeLoading(); + if (data.code == 1) { + $.messager.alert('提示', '上传成功!', 'info', function () { + $("#main").panel({ href: 'html/question', title: '题库管理' }); + }); + } + else if (data.code == 2) { + msg = '' + msg += '因重复部分未成功' + $.messager.alert('提示', msg, 'info', function () { + $("#main").panel({ href: 'html/question', title: '题库管理' }); + }); + } + else { + $.messager.alert('提示', '失败!文件内容有误'); + } + document.getElementById('drfile').value = ''; + + }; //请求完成 + xhr.onerror = function (evt) { $.messager.alert('提示', '失败!文件内容有误'); document.getElementById('drfile').value = ''; }; //请求失败 + } \ No newline at end of file diff --git a/safesite/templates/risk.html b/safesite/templates/risk.html index 0da74485..3bc549b9 100644 --- a/safesite/templates/risk.html +++ b/safesite/templates/risk.html @@ -213,12 +213,12 @@ xhr.onload = function (evt) { //服务断接收完文件返回的结果 var data = JSON.parse(evt.target.responseText); removeLoading(); - if (data.code = 1) { + if (data.code == 1) { $.messager.alert('提示', '上传成功!', 'info', function () { $("#main").panel({ href: 'html/risk', title: '风险辨识' }); }); } - else if (data.code = 2) { + else if (data.code == 2) { msg = '' msg += '因重复未成功,其余成功!' $.messager.alert('提示', msg, 'info', function () { diff --git a/safesite/templates/riskas.html b/safesite/templates/riskas.html new file mode 100644 index 00000000..09f0f186 --- /dev/null +++ b/safesite/templates/riskas.html @@ -0,0 +1,186 @@ +
+
+
+ + + + 查询
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ + + + + + + + + +
用户ID姓名所属部门填报隐患数
+
+
+ 查询 + 导出 +
+ + + +
+ +
+
+
+ + + + + + + + + +
用户ID姓名所属部门整改隐患数
+ +
+
+ 查询 + 导出 +
+ + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/safesite/templates/safecert.html b/safesite/templates/safecert.html index 2b1b799b..3b3aabfb 100644 --- a/safesite/templates/safecert.html +++ b/safesite/templates/safecert.html @@ -55,9 +55,7 @@ }}, { field: 'yxqkssj', title: '有效期开始时间', width: 80 }, { field: 'yxqjssj', title: '有效期结束时间', width: 80 }, - { field: 'url', title: '官网地址', width: 80 ,formatter: function(value,row,index){ - return '官网地址'; - } }, + ]] }); function addaqzs(){ diff --git a/safesite/templates/troubleashtml.html b/safesite/templates/troubleashtml.html index 09f0f186..f267bfd0 100644 --- a/safesite/templates/troubleashtml.html +++ b/safesite/templates/troubleashtml.html @@ -50,6 +50,12 @@ + diff --git a/safesite/urls.py b/safesite/urls.py index 5777f6bd..4ecde179 100644 --- a/safesite/urls.py +++ b/safesite/urls.py @@ -85,6 +85,7 @@ urlpatterns = [ path('html/riskcheck',views.riskcheck),#风险点排查记录 path('html/risk/edit//',views.riskedit), path('html/report/edit',views.reportedit), + path('riskas',views.riskas), #html页面 diff --git a/safesite/views.py b/safesite/views.py index 297ec103..6badac57 100644 --- a/safesite/views.py +++ b/safesite/views.py @@ -14,7 +14,7 @@ from django.db.models import F,Count,Sum import requests from .tasks import send_wechatmsgs,send_wechatmsg,yjjs,gettime,yjjs_px,yjjs_yl,updateTzzs,updateAqzs,yjjs_gc,yjjs_ws from .export import exportdoc,exportxlsx,exportyjdoc,exportsimplexlsx,exportdoc2 -from .daoru import drusers,drequipments,drrisks,cal_riskact_level,cal_area_risk_level,makeqr,makeqr_train,makeqr_riskact,makeqr_examtest,makeqr_area +from .daoru import drusers,drequipments,drrisks,drquestions,cal_riskact_level,cal_area_risk_level,makeqr,makeqr_train,makeqr_riskact,makeqr_examtest,makeqr_area from django.forms.models import model_to_dict from .safespider import getTzzs,getAqzs from duibiao import calsim @@ -80,6 +80,8 @@ def transstr(obj,str1,str2): return keystr #html页面 +def riskas(req): + return render(req,'riskas.html') def reportedit(req): return render(req,'reportedit.html',{'year':req.GET.get('year'),'month':req.GET.get('month'),'part':req.GET.get('part')}) def riskedit(req,id): @@ -1972,6 +1974,8 @@ def fxhandle(req): objs = objs.filter(fxsj__gte=req.GET.get('qssj')) if req.GET.get('jssj'): objs = objs.filter(fxsj__lte=req.GET.get('jssj')) + if req.GET.get('jclx'): + objs = objs.filter(jclx = Dickey.objects.filter(dickeyid=req.GET.get('jclx'))) # yhnum = yhnum.count() # objs.append({'fxr__userid':i.userid,'fxr__name':i.name,'fxbm__partname':i.ubelongpart.partname,'number':yhnum}) # objs.sort(key=takeSecond,reverse=True) @@ -2991,6 +2995,23 @@ def drapi(req): return JsonResponse({"code":1}) except: return JsonResponse({"code":0}) + elif a == 'question': + userid = req.session['userid'] + companyid = getcompany(userid) + file_name = 'c'+str(companyid)+'_'+req.FILES['upfile'].name + upload_folder = 'media/temp' + if not os.path.exists(upload_folder): + os.mkdir(upload_folder) + filepath = os.path.join(upload_folder, file_name) + filepath = filepath.replace('\\','/') + with open( filepath, 'wb') as f: + f.write(req.FILES['upfile'].read()) + msg = drquestions(companyid,filepath,userid) + if msg: + return JsonResponse({"code":2,"msg":msg}) + else: + return JsonResponse({"code":1}) +