From d62c484c324305a3e69dc204250ffd61dc599ced Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sun, 5 Sep 2021 17:40:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=A3=80=E6=9F=A5=E8=AE=B0?= =?UTF-8?q?=E5=BD=95excel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- safesite/export.py | 53 ++++++++++++++---- safesite/exportemp/checkjob.xlsx | Bin 9369 -> 9451 bytes .../migrations/0388_auto_20210905_1611.py | 18 ++++++ .../migrations/0389_auto_20210905_1612.py | 18 ++++++ safesite/models.py | 2 +- safesite/templates/checkjob.html | 15 +++-- safesite/urls.py | 1 + safesite/views.py | 16 ++++-- 8 files changed, 102 insertions(+), 21 deletions(-) create mode 100644 safesite/migrations/0388_auto_20210905_1611.py create mode 100644 safesite/migrations/0389_auto_20210905_1612.py diff --git a/safesite/export.py b/safesite/export.py index 15f93f08..d562c156 100644 --- a/safesite/export.py +++ b/safesite/export.py @@ -256,6 +256,14 @@ def exportdoc(a,id): import re ILLEGAL_CHARACTERS_RE = re.compile(r'[\000-\010]|[\013-\014]|[\016-\037]') +def placeImg(sheet, imgp, place): + try: + img = Image(dirname + imgp) + if img.format!='mpo': + img.width, img.height = (90, 90) #这两个属性分别是对应添加图片的宽高 + sheet.add_image(img, place) + except: + pass def exportxlsx(a,objs,pic=1): if a =='yh': wb = load_workbook(dirname + 'safesite/exportemp/yhdc.xlsx') @@ -735,21 +743,44 @@ def exportxlsx(a,objs,pic=1): res['Content-Disposition'] = 'attachment;filename='+filename+'.xlsx' res.write(output.getvalue()) return res - elif a == 'chekjob': + elif a == 'checkjob': #查询数据 wb = load_workbook(dirname + 'safesite/exportemp/checkjob.xlsx') sheet = wb.active for i, x in enumerate(objs): num = str(i+3) - sheet['a'+num] = x.num - sheet['b'+num] = x.name - if x.cate: - sheet['c'+num] = x.cate.dickeyname - sheet['d'+num] = x.type - if x.area: - sheet['e'+num] = x.area.name - sheet['f'+num] = '正常' if x.state==1 else '异常' - sheet['g'+num] = 'https://safeyun.ctcshe.com/miniprogram/equipment?id='+str(x.id) + sheet['a'+num] = x.checktask.checktype.checktitle + sheet['b'+num] = x.checktask.get_tasktype_display() + sheet['c'+num] = x.checktask.checkplace + sheet['d'+num] = x.checktask.checktype.checkcontent + sheet['e'+num] = x.starttime + sheet['f'+num] = x.endtime + sheet['g'+num] = x.checkname.name + sheet['h'+num] = x.checkquestion + sheet['i'+num] = x.get_taskstate_display() + sheet['j'+num] = x.zguser.name if x.zguser else None + sheet['k'+num] = x.zgyq + sheet['l'+num] = x.zgjg + sheet['m'+num] = x.yanshouren.name if x.yanshouren else None + sheet['n'+num] = x.yanshou + if x.yhtp: + x1 = x.yhtp.split('?') + lenx1 = len(x1) + if lenx1>=1: + placeImg(sheet, x1[0], 'o'+num) + if lenx1>=2: + placeImg(sheet, x1[1], 'p'+num) + if lenx1>=3: + placeImg(sheet, x1[2], 'q'+num) + if x.zghtp: + x1 = x.zghtp.split('?') + lenx1 = len(x1) + if lenx1>=1: + placeImg(sheet, x1[0], 'r'+num) + if lenx1>=2: + placeImg(sheet, x1[1], 's'+num) + if lenx1>=3: + placeImg(sheet, x1[2], 't'+num) #开始生成excel sheet['b1'] = datetime.now().strftime('%Y%m%d%H%M%S') @@ -762,6 +793,8 @@ def exportxlsx(a,objs,pic=1): res.write(output.getvalue()) return res + + def exportyjdoc(vl): doc = DocxTemplate(dirname + "safesite/exportemp/fxbg.docx") #整理数据 diff --git a/safesite/exportemp/checkjob.xlsx b/safesite/exportemp/checkjob.xlsx index 01755d330c1a085f489930ba3e668a97268fcb0a..d5ce33924eccbff0a2ccb1a38bf8cd47a2bb9dab 100644 GIT binary patch delta 4862 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 Nm*oYfv5eaDtffbSX zeBbY$bI(2J&N(wbp6B^B^URN#!dH3VJHh^I$&^4twY zohu5Nc24>hVL~VqL%LlsP=9y;JrlV>bO-E0vTJo8JPYwuEYpE9;kf0}lz|@(MGF_{ie2UyGPbND3<36QKm2yJNpb^sR4^ z8c9y|sl)8}+&*)2*-}KH|M%E#*rKN{sX@X};b!OZch9Hxu)QDkpm&a)g{eJUwcyvFGT4MtM z3itp39RS%0p+_X>sk!G0k#%{O--k>~o53w`lUysBwjgy#ubiMf>SQN1fYwX#mx#bO z6zr`22Rmfht$zx<-i*cWM`g1A!h{o|(V&PsfN$w5eWfwA(4YX*0%LZK7e>|+Hk>b~ zc**w$j&3{cCazkRDA=Vnc@#rY+ImP-OlH&gU>&?K9wy*%OJukK@{t}gENvzuH%o!f-~qQ%CAA)Kh4A^cyzUxx`s!kv5SMtLj?HACUMB%L*w0^x{ zvlk~`F}9g)T^A26b1rT8GB!eg;wEYHTQFzT2@z^x+2m5&&FRsSPWE-GM~-=QG%v$a z5d*<3iKTB=)hDSwUFWT|_uHnvQf&C3MKpXzw^Suy&=O}wPZHiB*=X>2inIiQj3ma_ zQ>Cxrxo?{ERS22a-lU`=n=9(Ge^{ckA5TwGn?d=fgmOQgfuff9VeAbhV-}Z`1dQJ% z0MYCW@67?#aDKWwy}}3Yz&&}Zyb9GMYozJGaCEgGE0ia`vXNeY1M)GLMlJo8LxKly zMM@rP>ef++7&8@Xx8-UjtxNb2{RK=T0CxiHrRs?u#R=3!QFpn97}B=6hiC|#E`#+1 z;3rt50;grzAk6_(^1+0(whWjX&!7`AA$nlrH(%G^=#uO0v>Uiu?9jQlTHlG%T1OqN z35MI-cV2klL9gr`^4gWpQ;SXcZBFGdtNSR0RE6_~eyR&~WQa zlHbu^`h=L2(Y@DtFQ>JfHK4@i!>Klk*L;`lBPGB6ahyY&;DwRL>1)xDXt_nlzICNQ zhhTZ54dV9U00q^J@9@Iju8pKkABna`giuD?gF|ILIN`%cdR&cH{ronCsM99-Z(>YW zQ|S&vrGde{a|KDz<3|ns)Eh|`qyekF0p@xAHW7C@FEl^3ZD*;Z$B-M^Q@?J+oZDb% zTSD;8almAO`jJqiFDU~eX%$9&mpF)MH0q0r&A#GCwmr?B8I9*G1=r27vjMB0#XNpH z+7vZdWlh6I-C<>>m7+;YP?HYxdX2`F>J5EofLfECEzQ=r0e=o`I_VnqJUZq|tl;o` zmN+RnDY@Ie+by-asBsM@*1dTfEF!k zYjhR)1@6|EE;A2Rgm|BioLhi(!v`|_sD_6Z?LV0BjvRIlOzbTYZXiuW_d11dBqeHz zlW+@Gnb?bhG#`sP)hu}5YOXDlCz3BGOIS5t#H$Smu6yY?t&*NBP(cfp^3aS{`w1emu?nCy0)C zYJ$E={!Ug-gL5GVHc3!dmLbuD6NSq^?|Ov7xlsnV<P;b1!MC zFc%whL+_r8v3!aQ3({j!JjmbAQh!_ZkbxgVLRT!w`zz7SvdRwWnxaGwYY@!jz0t9Nj z_-#RnVJjGsgzvts7id1ZypxxiUr1;MXPjN;RTDT5aK|~*t)59d=$9BF4fVKk$g#Bq zd3&Lf)+8`EMc4?Qi|d7b;rO`cbcq~yb0hAO8Z0D;FFI?z^VM0sLIgJg&s~>>wn|FF zqLgNwIXZDKuw{?@xS5G2TTk(7hkybE0<(IZ(_c-S_*ayBD`ha#;|i;eOQ^NE)|`oQ zr)(*&YAVxJlyPDMXLcWU8MRWPwR44OvRTbs>{Nfc89Y)$TQ$yNdv zrb_0N$ zOw&UnXKIeS^bN({11bC@+DlR4XC-kcRg^Q=mUjL4vs^dDpKEzhn2v6=!Gwi|J7ni} zoIKelo1m!BO1+^UH$yYKpR6K(-;sw-yl^S~!ezer7U_=yWw zCu8^j?W-N@AHbL=^^WO~3lRduED9W(F0DVox)(a~|JZ97#)FX(mRWxX^m*b7V)Bo^ zC0X%44h~lqkJIpbtSNavg_5|`h+6#^20HLoy2W<+_Kky-NVlEUd^0CF{0xK`!29M3 z_)hnROo9+?BlGxC%3DH~(zZd5@DzqIQB8OG@-Zt8sTPG?BC^Kkbo>EB-uYC1Y`sUBs|(rGhQ<1+)hp77C=cYzN=<5A`$5*0KcR*YL4oR#g{0BO^~|J~w?`h>F=%$Yj%`LBfi>#x20`MH*hw^><<#4GX%_giMG8ZDN6mN<+V3)fsa0bxmThPi?CH`Jd;@3PJ? zKH5v~%a97fI9_iv38dn3$OgA6%+!t(yt==%yg8~^Uku6`LA-M%L-s|zu(2Zg;ed`5 zxjUNOUq4X`@)i%e-rFo8E$_L30@aaJ#eQRHS=(zLxA|}*qyo?20r#%#AvxH{;B>~* zpap@xoEPuhMj@xar}RV4!u$mbW$ErWcWF<0hTEe%__$)$DRR=^yBR~%lOGD7J;iS^ z7`m6#m?|z}K=?E2i9_zr;FOY;U3rYY3Z7iahV3vddCMVwU-*6C{pLp8Xv1v$w{y-{ zDmeph5I(@^{F@(LAc25DEEfV6l7b{O_w4zkAaj0?-+lgm-s=>pnMU=y-eJ-pc`JF(qC#ZLJ5>CtA%IQc8u6=PONv(y;e&d?-a^aHgpJCN%~3@dmTif&92g%9S7wK$^u| zEe&t&q1}B3F;F$GoHT**ktaVrX8`TZ)IQ!HNK^_YMaA3wDQ%val=W?WI z-ryF03UKzBnLRY9KSnnuXWU0fjNN7fmJLl9%ulP^W2IlL=d+W0?D`MPZwGsf7!%at za9ckvH2UeOhyP z`9+ItT}9Th>gam)$_n^SIPie~UY+VKHGjHsPmGBp+ZxK7qDM0Pm*%%t5&A3s%i%wr z#QrYp!s0nA&h7&uUDuJu>ualsO2Z#(UDCq~M0K~6l{S01^Y!_A3tw7mE^j}x(kpfO zv|yi%LAwgp&vtrDC+e3+pVWq=It%~`=rwH~UgaK{sD8g=Jtfa}0OZ~zf{}U4oD8;@0@D$#K~Mp6`^MTudBEFcQ5!zn3@^{gFCN@Yi76KmHD@a_qXp)LlDf zrJ*`dIekN8ExaOa6GU7L!7G(DCcGGPc0+E?VMPhl zDoqf$g=-V%xqK+*@+mYDOx8Kl&vUre5;gh0Js_o!QcxtTClmwz zzrDtIyiVpp8Z$gZyjOg0uZ<5Zrk%r1Yl(T1@Vdvcv-Czf7g{FmW-xhlZ0q&WpfKKg zovzpo6&{cZR4{y6b<`c6^eeLy*Gw3nH^PfX^{Nl=@Bm{y-wwZWJMMkaJ4CUPc9VJz zYqf>uNhD=RB@ik>Ld_>jNO>$B$&u3^N1FYe!<&U3@eLplqDHfo^o2%&qPDX<6q<2R z%-foPaQk_lgw8W|u8#=H$bdpoA$|+Lj7LR$<|E*{3In=#1Jshne za)=-5=CpzVr1}-L9%~h;Rs2P;?FUv8ZViTn#0jj=BO~!zUa`&Ebsx2O^dHE3)km+?OQCQ7Kpy3jZqGSwatvYW|alL zLQ1hc2EvifY{>uqdBE($z%1khyEs-46Ox~qkyld{h(-0Ud;fn=|Fty$2w?qN6Opet zxEcOEum}JES#;z09M2p8kOBm27^tACU9zsmoS{-Q@d UhZqz5@5cmL1$l-O!1|BqKet2m=>Px# diff --git a/safesite/migrations/0388_auto_20210905_1611.py b/safesite/migrations/0388_auto_20210905_1611.py new file mode 100644 index 00000000..c1ca3770 --- /dev/null +++ b/safesite/migrations/0388_auto_20210905_1611.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.8 on 2021-09-05 16:11 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('safesite', '0387_auto_20210826_2028'), + ] + + operations = [ + migrations.AlterField( + model_name='checktask', + name='tasktype', + field=models.IntegerField(choices=[(1, '每天一次'), (2, '每周一次'), (3, '每月一次'), (4, '每季度一次'), (5, '每半年一次'), (6, '每年一次')], default=1), + ), + ] diff --git a/safesite/migrations/0389_auto_20210905_1612.py b/safesite/migrations/0389_auto_20210905_1612.py new file mode 100644 index 00000000..1c0219c3 --- /dev/null +++ b/safesite/migrations/0389_auto_20210905_1612.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.8 on 2021-09-05 16:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('safesite', '0388_auto_20210905_1611'), + ] + + operations = [ + migrations.AlterField( + model_name='checkjob', + name='taskstate', + field=models.IntegerField(choices=[(1, '正在整改中'), (2, '已整改完成'), (3, '任务关闭'), (4, '待执行')], default=1), + ), + ] diff --git a/safesite/models.py b/safesite/models.py index 0cbfc044..7a61c4ed 100644 --- a/safesite/models.py +++ b/safesite/models.py @@ -1402,7 +1402,7 @@ class Checkjob(models.Model): createdate = models.DateTimeField(default = timezone.now)#创建时间 usecomp = models.ForeignKey(Partment,related_name='taskcomps',on_delete=models.CASCADE,null=True,blank=True)#创建公司 deletemark = models.IntegerField(default=1)#是否删除 - taskstate = models.IntegerField(default=1)#执行状态,1正在检查,2检查完毕,3,已关闭,4,未执行 + taskstate = models.IntegerField(default=1, choices=taskstate_choice)#执行状态,1正在检查,2检查完毕,3,已关闭,4,未执行 starttime=models.DateTimeField(null=True, blank=True)#任务开始时间 endtime=models.DateTimeField(null=True, blank=True)#任务结束时间 jobstate = models.IntegerField(default=1)#检查任务状态,1可执行,2过期 diff --git a/safesite/templates/checkjob.html b/safesite/templates/checkjob.html index 851b4aa0..80366891 100644 --- a/safesite/templates/checkjob.html +++ b/safesite/templates/checkjob.html @@ -22,6 +22,7 @@ {% if request|has_permission:'b_checkjob_del' %} 删除 {% endif %} + 导出Excel @@ -32,7 +33,7 @@ data-options="iconCls:'fa-search',resizable:true,modal:true,closed:true,border:false">
-
+
@@ -53,7 +54,7 @@ \ No newline at end of file diff --git a/safesite/urls.py b/safesite/urls.py index 216a31e2..eaf88d51 100644 --- a/safesite/urls.py +++ b/safesite/urls.py @@ -232,6 +232,7 @@ urlpatterns = [ path('api/safeitem/', views.apisafeitem), path('api/safefeedback/', views.apisafefeedback), path('api/countsafe/', viewsn.apicountsafe), # 安全数据统计 + path('api/checkjob/', views.apicheckjob), path('api/examtestrate',views.apiexamtestrate), diff --git a/safesite/views.py b/safesite/views.py index c38c0ffe..9bb1cdba 100644 --- a/safesite/views.py +++ b/safesite/views.py @@ -9098,12 +9098,16 @@ def apicheckjob(req): res = HttpResponse() res.write('数量超过200,请筛选后导出!') return res - objs = objs.order_by('-starttime').values('id','checktask__checktaskname','jobstate', - 'starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','yanshouren__name' - 'checktask__checktype__checktitle','checkname__username','checkname__name', - 'taskstate','checktask__checktime','createuser__username','createdate', 'taskstate__display', 'checktask__tasktype__display') - # res = exportxlsx('checkjob', objs) - # return res + objs = objs.order_by('-starttime') + # .values('id', + # 'checktask__checktaskname','jobstate', + # 'starttime','endtime','yanshou','checkquestion','zguser__name','zgtime','yanshouren__name', + # 'checktask__checktype__checktitle','checkname__username','checkname__name', + # 'taskstate','checktask__checktime','createuser__username','createdate', 'taskstate', + # 'checktask__tasktype', 'checktask__checkplace', 'checktask__checktype__checkcontent', 'yhtp', 'zghtp' + # ) + res = exportxlsx('checkjob', objs) + return res