AoBuZ5DET~tJYI;LmY5vKGjv-tAB*K5xUn(hj06mm^ghMFkrNZd!HDSofU)7(5-6QJ z>&dj*keM?gtlD8WwXbxQZe$EgJ|*iG-R9DU7Y}6?)s=gKTi@ExC+EnBw&g#nOi=2m zquMr6n(L6Q59&W<1G4arm#@YDbjpRZ2nF^+cNPeNRY-9v7p7HC8Plx?S2^`?op7NW zClo(}VPu3yM#4JRl+@9|pc^JTAf_e_*NgWIFYwYlfW{)E#mW!Z ^H&^JTR?7U>H__VbzL2^lk+(9$B6^BJZ>Q zsiQ~Is6j!DS5z4}LwcB(mbfh8xhC@B1J^ldfgX@;{u^pRiD8N8h^9!fA>6~aRknOt zx tu#;ATlBx&7%MT?mhn%y2mQ}5$$wq$q5E%L z@t<{`|Lu&?Dsytkf+*dAvrq*D5CIW20+yB7&r2YzMzcdj;lIT6d Qy4vb$d<+h1}xJAZtA{e}go%~J|eLS%zLfo}_IIY{f% zDc0gH8ey@(#sg=qnL_g~htG~94Ux`|R3Kx}Jb@LI)n)|BOl9k;2_}+AD0BA05@`@^ zhd3|6Wi)KrCR)2+X<_IZc56R=XWT#&!a8q*v{@{&0%6HFOa%48ALPozBq(c43vMY4 zH^yqM|6SmQcoXcNXEL#1iEEP4gxr0z9Na`(g8NH_r4Dsi)VMNZhs6KfLhYt#4CSFI zZX4VF3g(6v2z06pDidT`T&=z6s1v)dMlBAd#zuY??ZL=zsLRRn^D@j;z9_=0xPd&m zRFj-NSox^PCb*lSMC*hwp#-H}G%+oteN3Wa887yJK17qcEZ!2R621B{m?~?F!L?tx z*qZ0aZLc5YeG$ZN4&qy#>aA2^t9!dLH^^)}=N0~14G&!m4!+VTcB~bAU;FG+#+YAq zLEiNN9O@02wj$@Dr=}`fGbSfi&IH$8Sa^No=NKOcU2C0<+uTXx1fOwj1Y69kGT2U8 zu;N!&e;c Q|#5nkPslaNy|WB%J;zM{IG#qbKMrzQNDW&@$55gi_me|N@o95 zJCAIQV)!cmxgc?WF>Geb4oK*p1`#W}qVobE=@TAF)3|!Xw5jQ j2BvpL9rL>!rt)*=0~X}27O}@o-lHvM5 !(X=Gbr@Wg2(VuhKGUnXY(WcoLtuy2RubP{RSXqOR#du~x0__yfD3n)~jCAYD zii-K~<04`d2NqQ)LnNey5?Mr~sJtV#5+P8XgZ5bPqmo71CVOcqYjUT~iPpJYYiuHi zZw@-Y_06>tn7i2fDxt$a=&3*^!52mR<=H;PTKtD2S*B{gs_3G*XH|q-P+B!3Lf1RM zJd}C%-J3H om`vP@I>H zU^AtbDs*Q!`t8rn*d0GsWoaK2w?hz9p3Nn8=JWmM6I&!eljG$JIY88Ef1gszE7DNU zQ-`d#<)iBdS4T;@+?)L1=4nCXf!+Ay$2i_WJ~!XM&-RF8F8*xYiQMG#8hDT$?e%_s zBpu{sYs0_Dq{Qd4MWwgvgCnPhMI(jfC!+wyZXo+k@+3q`YMRcX2FFv?1)xlB${f^3S^{(p&X{1*nphd{q!?J zDM0*#d05*9r9ftBcl{0yJU|CHdSu(!CsXsH=5(XT?)aZz!~88pwn8vPj?1_)q6uqa zb8z!c5Pac}YxCaAf&tI@c=|T?G05;biu{Lpbc7;IJ%WaR*uQ!Vg~; {0 zCeYPd8}6#OG58SKdU{<}^o|9ex#~_?owZ-D*5!7vq(g5$?SsXfT*}ldUU2N;=BwfG z+i>e12QIzx3VXDbbWAXO{%%pi)+=B(dG=HhhBcF-mcnE<{OHazDg-jt*v-sYG?!04 z3+F|H1Di@(q)|E7yiublwC`{U*K|~0f#3&kWJnE!H{bzBW=IdDWb$NMFqs~ZfrDZg zGjJMwDP(}UoL0ueeU;
aYrO`qlRz0RafN1yfR#e=OuK2{_RrFbkbvXF|8G1+n@toPJig4^v- z2>duO`b=bVjQ@QTgR951OFi$H*>CindC~n0-wqQ##(rgX2yPGiinZgo^#UKu1>?jz zb0F9peDA _TZR0H$85-%h|9&S=%J*YqFXA@!>2NEDE0adCS-Uy}+mYuG zF0lB=@UPv0_k&%e*&SLuJQxYZ@BLh>2rZ2$Wv9srN3EFEX(O7jH ZmALR;Od05jBP zIyE}8jy!E 13I04t zKOtjDBp_o&B%otWW`o3qOoGIfP6vn?VJ3SZpzleNb5ME(&r|UV=+Nk?P1}Ml9Phcr zkblyVNI-dlI;V&R3*jtr2hqXz?-FaM{47c&NI^1zY*qMcwZc%!1Qf(l6rGw(poMhU zfmBokHkUxa&Ums65l0ExPyjMUB6v+9NW&^Y2H6n9`6B-FkaV;HNkl%thC*=M3V|20 zA)GT-?5B)$T&0KqAi=L0$T)JTI4B<;5T;mrCdh_h&JALL)6dyoxfH03i4m6+f;E+Y z76hGX4@Mvof>ch0;7aH-nEF(_`d*xiO^fs{szpeEJ%!(yBu5i~;}cG?EIw2Pe8QYz zp@yI4w |zV|aB*8)+A0Tm!5~|w4GO#rdg~@+H#X?)JqdSCvQ@z-XY3ro z4o3Kv2VyR+4q8q6^b;O^z}5&Z`J6M{5Evv{v3o`=ZPwvpytZzdaui{B4_g*?alzJU zSDXi3S?FmmjnX3YN3xAoR}MC|mho;bSG{EsSKTj Iik~##5@e z_)*7BgD(79hwF7P#EZ0K{LF^tM=N!bmsf76wnnCqrJyI!8NqKo6;cs67neF(Im#ac z!@F6JdA<1xO3W6g1!AG)puWLsrv}4Nlwj2`@M{oqGR&_}hAx-s24(YBiy%g B)D9?dgrlueKL> @*i_A;J!<{%piHOUy(k53QyjF{`4yG7mp-hhtDhy4O_Fk9WW zX7#HH%RU~tT@oF&bFHeKaD=4S+~G{Wo-xhyg|F=={3oTsEuRUYpgPdb2gnu_queMX z{YU^#q*GSXK@yHEBibzfHbauRV@m+>Afs(J*mLHp8=NVexPUmN3sYbQqHVwfLnJY0 z8v*V|Ft_s~z8GB9Fdj)&F&;_v1h0gqSw(2hlnXq|#G+T8cFA^Nl&P6lT=S$2ywhOX z#4Vl_vay_ThdIMpW7 ))!3Edg&z6ix;0f7K1v0l!kSP_{fF%+c zxG9?HO)LO~bZAT(h6lc;7NDaTc ^n@SxPKG zMmqWj+iY+S!AVC;t^O=b;BB)I36zlzGmuEo!98n0+H1hZh6Ukfj~zh5C -ha|eEVlW@;AOsCF$EEizD=zf1X@tVPvh!^)(&o zKa8}4$UxZ&LjoE>NLmZ^DO#wKbkwWg#ZP1(b&8Ox@{8*K2K)`ERjx*g_h&IgUcuGa zx;kAi=4*{_XXa*S{@mKw_`b4J`wjAw)PoC1vn}3V@il44oP>|OUSyvvoL*v+s6J~X zt&?n%*>EX{DllllB(ApmP`qp3$-Y(zo;#-1JyLM|06ajD>DCAA%x&TY#4?p#A@(wY zcf@<{kPwb$k2N`+*9nN+XAZGHADf9G1$PEgok7~u4qRF7lT2=W2}j-r5AQN!nr+7w z6z~=H`ua9T*!V~$n3mkYp=SA(>dNim{op`qfqyqfeJx+~15W5m#Si_n_i2`I!JBBa zuLEtuxnsN}@bo1JEN4I#W+!QwJ+L*!zlSS32$5n?XhzM2N^O>X3_CmiQS6xVu?8+{ zwS4!`1Ld3l6nEc(fn$8HHygP$19~5i`jOc0GOFXps%02!XbeN8+&R@1Gqm}x4Vs)V z9kemYFUdnm6bTebnYgqdoWOe39r(by!Hrmv)%#4r>7VatJfj0xJSGlq8tMiny%n+U z`VnA2XvGtE)UN)#$6O=K* zyx|Mxc2x;xVqvCnZhaM>y20RcISrw!2@dtbbiXFPYvXrZ({D*teHT|1KW<)1 zOetU3EyCIO%{K9KP-7!mFMf#QZ!|>50W?G>lv<)o1&XK)Nz+<%$FWl&Gc+k$RmZV& z0g_%!m 2CEhQ~&uBoLER zQ%H)dE2h@f6|)A`6>}EW74xEeY4$c3YAyXbe8oZJdGZExnyr9(jJT=HSH*@o2d#$c zVmtAjk+e~AxY2cke(?$2ohnppxF3}XU*Xs9Qx;RW8WtdZA#Y(lUJ2_UH1%LO4iPe# zT6c1q0B=9?U>OP#HkjJHZ~Qgh0qdYvcryzyQ6=w}Iy_;l&mAbe^L}Wr)7WcR8lb!^ z-jzBW1C0EPFV#NZDC;0fKPNh%yds`T9iB3lfd-VF60BYyUq^qkb)dH-S#&505#sBF z1kzjxHq^`4(SybfY#{GLb;H~6xfPI3;0#<#w}orAX_mo3Q<2=)T}nnbUGZ)7c(G&b zo%U4O(YYx7yE{mn9rC12=19|e }3bgoyB`*E+1>abYk{YcE=VNIrH?nGw06RICYTDq2FvEoyU4x zL) $QvJOIII5Cc?`!#L^5CI_(TdGx+ zmG j #W{-wH&I%(~&mQY#p&?XLf zV^UWQ6N#eMri^P$YN$;x%9P&TP%XF~lF|@T9;QLfqx>d&R!AukbGM2^Six>Ro`94y zW6RiSeFixsmAuZNu4Be^RF+f)k`1NQMVy4%(XXMI6$ciY=BzOYB@v}Tk6A&=XU-9L z8t54jN!PO!8`9bY@|sPla!U!CXZD=1C0Wdczb6Vgv{kCrQ; z$O5|FeFpvb#tRAdIUfMXt6%5sBeEBwuw7?FC+1y{&6C38BkDTcxwRS&LgLG2mCuLs zia h6 esJMR1LRrVE0Of^;4$4!nD{1Yitdn|HVt<(sU!?tM!-x7fm0*;}t zF2x^ubZu}Hz8Z~aZXwlJjF=W+Rz8c8yFw-8v3Lz3s$IL4?go 5T=)i8WoHKk zd-V#t +2`)s@l8fQ)jq zYZ38PTf%YOA# xazIOq(cL)-LmniK(WO#n$EF{s8Ea+;Azv5=Y8(4jY?DyI&TfSw@=a*rXqAw- z8`)?z@?3#jU|ul=>nZ_~AyP?$s9|dPePI}lQYCawm1Q3o6I0sB@}Rjq4`Gv|$y{N8 zyh<=}j;isj w+eC&Z6S|f!%sNHbBfVH+R7c|>G$jItkBR+ z-W&I9k6VV*UCy }jETK80Wm#k zBHE3j6hHaq?fML`>L6rZMs`88Wl2#f%5RObUuv7c6WQiB=aSGYhQ@TdYBpB+?aFDh z%zLGhI7Vj&!dX)c35Rz|T=&}i>L$0TAM+fzO)MUmQ%Nj*DYryRMBBz-XlFU78j_<* z+orPt_8E&a!j>shyz`4XsZm?=T#F8@GtB9y=8yfT=l71wXgWKTDRAd^*Dhkf4TJ&Q zVY%M4Qt8RP QGCCPJ;Eh0;yvd6X-UAqJV%TL`hZHmJ zquJk 9Z+gs(<| (C zd>@`V+(7$~nkSp4U>0MzBZ690X0)fWf}^Ty>JrY4IaK?yx@dasKu(4bG|WS#_$CK7 zsrvRYoIDcPQd%#b`5kIusoTLAh8da42R*{_=9HM)W+ So00Rll0`}@cC) mkRe*nSuvZ|HOa^6)|7t=ik=8Un-PJZvq`wp0Ii@{8%0fbxqJ6~F_R)| zw5>536gE+x&TOAX5w<9IMG 1eH>eaDU~5Y zsSUA&2~^mN8C7>Z)%g+Y`^r7CPM;N5La==)D*v<$UCm589)|FR!bXm$0()w1>C!m4 zJqtUUk_AIRFJf$G35xR }-%kq>@)9yDyl~HffFuxGQ?i-Vt0s12iLU&BIljQL1;t!~HbP-stP&aZ zyJh5KGCPyFlehtBV4`KwcvR)bPud&|M=!9qF965-16{^oI^YH7mcBdLdC*&K?FX1F zV!o}~6VTg{)BPt3U=d=#Iqt4|_Ii#MEierbb9|daI<$E1r7YI7<#vRI{0j_;0@549 z_V>?Z1ZA^al@|u%Ws$3er|R(W>g 2*}Q4ck+H8wzUVu^iR z6A>CnCWPzkDV)*u=B#U99@<6@WaeTJI#I4PnCD11O^~wVSR++;GgNx> <_k#p&Hrdc9bQsr)Ut2)%);58>tyC)C)Tpaeay%ULBnxMyO%Hm^pR z+q#x|tdBtZpKPV9k# SOB;)S7&u)29^~iIBle2=`v^)<*0RA=L4H=| z(N >IoO ^Ms)0 zcspYQN(9`BD1gA hXTS=+3kEYby#EXsN$H< zq}6VU)u|Q(+1T~W JWWr}-Rj8Nv_sgG1|%04C_&vwP?OJO!-=0TMc2Bz3Ui#62_ zzcH6*kemp57OVw=&>d6IUeF|J`9M;Ns;Oi6DB2xbGp1ELl PjWp-U&3L%icM#9WhOP-3Rk!8;aolmtqe$ltw`k{)@>u8ONFtMd|y2i+{Rr*?j z4CEB9w%&O`pYp-TgQXBK)u4wG@~uemz3IqL$1;jlPHM`TN`&e;4yz7I+t(PqQXJ|| z+n(i{3*1mk^T)@k(^$Ir)<#Ha%O#S5oH-Mh?BVKUGLilbt||3%?aUgg$BmgUq%s^y zyVC>wbtvNF7rsp8D+tPwhtktTe!MNr WhYv{H0&kD<9Gv;p5y9aKT(HoRZ#P_XK^Mphi9Y=Kg6?KHd!^o+12;y^ Gfv@I&)!Chi`jF3b8YxxL}S+7d3~Io{YBe|X}in)=$J~yT5=lc)tAz! zr=4!L>XfvHhcjBrJGONL-^6Zala=MN;0#}nCPl*;sBB-I&7`um{@wgd6=#hu!?wK5 z1>Z;E=no(+ut^4*@JXpEHcB=qHW5AbYBfTiD=6=%arEqIueM@r%-anLCbzZLpc0H( zN;_I?KAx#uXp8L+tH&J{Z-plWD!sEA`0CErIOn&zeq@Dyk(;+P&i4W1L$iKkGt3dm z`r3QXvWhg#baE>nY&7_|JCmIyCygs|)sPPHEOOO`TV6N62rsBRE8wNa !=(cGQmfGG14>hY?Hh9 zTH+C=$tL2xz;)G1>ZjA*_t3{Q$HJ2VT!II93k}eil?3jB-n7|5A3xn}SI04fYCY1( zbcAmNaxES$TkpJGkvJfh&~cJG-OVIi=o~yv4I6wj3;M!cQDUeQ=+_3}kpF6@s1O)| z;mHEyk*=RCzn+A(pG$;jSLJ+I+uj2Dys?>VUD(5d2)!v2>|a6P#6|`l 91sieP1r?ekSx&;fdWeD8bc5& zw%lUU639hiSk0leA?c#XdkQKSrt~WxnXDyl9RpEq+yF#yV8u{*T<_SKja?tU*anFn zAv-{!(zf!!>#hdP<;&PDX6h-+FlfqD>rYhqW(uPir`#Glvj;)321z(4GH3Sa*y4EQ zt%5nfdFc(iL)ErZumOiZ%;>Uh5KQ(vf^O*3Ue-;1s{6W0i$+qBJm4i5sf1tH@3_AT z5`x?ZZq6ati+8kwC*ChpPU=-h#Ul+Nw~+zvE~uc34uOtHfB9Gi^U@PeWytL<)@UW! z_@eh&?GYvPuK(qA#{dTI{b>_9_SI!C`IYGW?+s-<|9 0RPqCrm5S7BatmPY9*@oI>vuf9@C4Kd{ sDZs9BNZCZ* rsSnZY|ltQ}YbD%*D-!)qZdggX$Uw#m_DpdOjfC%_*a(Kke2KW7DRd-@LIofQOx zNR6SRLO0%8A`9_7$$HK432Lfhmoa&U>kmB$dW3 {`s?hx?8)>6zA9)xI|MPpwG` zIBO`B4v_L6x>V`42#aMgV) 34; zl2h-g-?V+4L!PY;HP3iw!8JkmSs^e5mlB0|H4y{%Od@OEh^c-XLx{ 2EN zfo*JLH7~ub4NXxJ*8+V9VGf}_lH^$VqI+X$L`+P7Z&|ES@`61kPJtf`d{@V}@F9X@ z$vKCxRJH8rLE|QCN5_T{c(Wm8>W0}VCJq*AT`+w!;|5|S7vU`9-Aja )g{=)rAU!^d!}S^acM QQ*cP3j3uQ>WP8_r2#EPRz-yf>uH8A-ys7utD4#S!lF9e>s}IF}h%0ihvnmrP*ms ze+pNsw!eQ0Jg>`fto{J01yRxfb $Zw)M-8O)!UN=1SFsDtGkcSbvvM;Cunq516!2X&01y0T5nvnHCq67W8#Gul(H-!S zjaBSOiR*6rIpc}AyYu6K!{!Cxy=~gkup}`}tu|-JZ@$30%L)@Z9uLDov{XtPTA%f= zBP8Z_!(QEDR6V{?-8S9#pH*gXoRyF*WO^R??d~2{u9tV%M_$?F_3Ag2kA<;QKKi#I zffp!SfY9z3BQRIYGscWk`rLL+!38`tzb@d({vB!Dg9xq~hJJbrGv|8cS-i|NtUTSZ zO7c*F99k*zeHZETVTNnUq@p;NqVvPHOe-1ZH0G5b=v5ZbVNeLq4L1)Y>e&oF)N|#P z-$tf+#rKd~dFiYmiu;6f?;&na_lrqNY80Nv2}vQ5@LhTvCP`y_Tkf&d8j%VUOz^!; z;7Fk~i`? #tkWuhz-q#+f;Eg?!mLujMt*jAU~f3$WDDk%Y5|1&4HqG; zH;WoOzgg8E$Xz~!c-!Q~P_&Z-z8g<>RKH>XE=L~mlQg8?SDIBR@*GZaEQIMNpiZIv zK&S2 9n{yxpE&t+d8Azw?mi4ZJ%4V1Jf0 z&f{|`2-tR}Z!JMItA1SCt6G{hT=CD02jFaO?~c{b@jbGVe9rICdE%tE%-=&y$@ mai9(}U0+Sk1oylsE{az%10VN;V6GTdjt% zG9pl+P1N9CJr{C21Wa-&$Muq0wV-m|lqR2AF+HJGH-sLjKSmTrZL5yeef@B$3R{v# z`HU00WOF$$$sF589T!2eU|3WA`Cd|4+G@~XXDA}YLWOEcfQ*#IaQb?P+YThHHmQ2o z iM+e49Gm*(?w~s6bbnpto8_Ee9khug&Y4wijq&4`8CxJ zoc>xn|9Q_v9cJ4SCzMN1D<7s)uJv5Sz-HBaGV20lTs# NsW}6aWAp=Ks^8`iBq7|1PR38umy^aL-28wM2eIl)%2(d?3sabj~8YbgM)d{0?-w zLf~<0x(rn*YR1MuU6^F+LTz}(qPl9toT~C Ds%vVEyzeBgP zh%*q$YG?blSGP}hASUTT5c+URBMb=(9i+O2K9tGiQ#Kw4$P)2jG+rx+i+pquu#5UW z58=)d2BU5io|_>j>5dBolb=zSgQanTl|=G-Ov9`@cdhxY6;s}d*@xXF1c>T_Lc^93 zBLBFtH3S06lW=@p`5;sDj6NUko~7*DT{1C;MN_U<|B1rIhwk7NYZRioNI){Q@$3|4 zMSHv~Oup&i8mG`;*6R07YkA#iDQ&Lq1o{0Up|2s@X#A41%p)~gYfP45gJJ9zq@^gA zk*0=?Z1>*PGfqy$9)VWKvzD%@+JTDgdf5%gT5d%LXy}3P^9(7~n>XH8>V$VVO~<5m zk|=(mqqm1zri5o8#QL~n4Jpcn)Jbu4Y)k9wtJPY#vvaxTUuI!yH>dGp7iuN5XQdn7 zpOSF!G1MlWqF`S_m7-C%vp>_z4fy789C$+5n`khP9Vjc$X~v`xEAdBvKogKu5uSBQ z@9;-n_`KJdJG`XUx-XubhILjN`oW0PfIhcL*U*)rWkgdmiD}h|Qpcf0e;){;kmLzZ zQUm*%H-7eXg=XtsDi5pjY{e?S&y-k!f0jvWs^Lw8ZuXI#z~Uz?#` z*?sn4gHMLeXtBA~?#~qu_HnFev7Y>6p@Jqf*&m4;QKPabGd2{K60;K5S(Vu@;UzqY z!z?57U_%rsR6`elF5<6B-t(+S)18<(%Gm%|Q#eaRH-fl`MEm)+Q4Zqs!9dw@tV7*F zIE4%@JwS2;1o2)m$;d)T?Kt|G5e{6BE2c=6sZ}NTioAWR{YDSASZ(Hn_NGKn`5Lpi zZL3(zV8NA&RJm&oyKw~5Kx)0Wr3IRUG^UK+->RG*^<(kHZZA;)8zhmWSmbE`CUjIN zUkp5AWApNL;SS?)xsS#Y>`qj#c@H{cKmy@|8 zv;e*FFk^Sdv8WI}O~cV}uGD1bcls*pPMV|Jx4}d2rSBj@N_)@H=v~&Srj1S&D-ae; zM$|;J;vjMY7{5SZPKtkwN2Y_lY8F@J&5Jf}3pW=vX{_@Mm_$CpkYV>@X5fN_Hl*J0 z+Y}^oC;uke=;G mZUe5LF|oz|A^vJP^h$j-q;>z)>Jq-<_PiGS zmf*PA(|=jF!jWb44kHHV4PAJ#zk>cFt-7m*=$Md*l~K)o@~M@k8g8B-sbZX^+e# z!_P@Op18IQ#PAi@DsX$SgeVwb&GFH
Tx{#!VPvup(}$DeKY9l;B!6TQCVVr*D4zR9jF7n6+kl _B%KyKAp>_-i~jn~=>bdOxYZz?xu{81$X@cdv|q(^pFvHoA&F;B!Et&8 z+SE&JF|aKHgGJkPY69+{k5nB(R6E~u#qbM0LcqpB&B%m5RZi*od07vuM=95}ECF!2 z&j(K$0ty U|m`0L5=KV}6jiEddm&&U)B%G%juzwFXvmWq*2;0TbwIbnRLYZ(nQ?DP}; zP9$Gsj&gA)qe9mUikHej{WA8BJe Az(8Tp!%0h4%{PpTQ`W3%7xo0K zh}G|vW%^sjWLwbL2xjSJt9=LqbE&!d91$P_uilOrPRJ>vwd7qa+WEan8m@8NhAdc7 zK~j<2bJVs#rmGtbS=bvUlp{)5u&QWaK+@|X+)LRC2Q_x_sylm>xD(l9I&FDN`o&D? z%4fK_8#UFbAoE(|mPnL8smNC+PE_^A|MVl>lmUwSr%Ae^2*dZ(a0dsAd _l-1WmbGS%jZoKNZSDX zI_wtl3WE{w83LoFEDTK=L&)`w#WcE35o&@C5#$9t;B!8_P*z_+d_UCZ7gu-4znTTM zU!#-${!st#dhOS(#~-~WCneFt3+JJ*(m!8mR>}pD$=Ke66A+r6ElcJM{ _KgYHts?fNLD(fYcM_8ZOIlkDBi=qh|aZ=2&A55icYWXU3e zU=exDcatd%w#z4P!LM6GDiKQc yywn%lLDc;fZR?Mex!7E(?S%rapj z>Rdj8qk_biZah`6wWpG&+)wx`jAs-HPy2V*mN4r!emcL=>F%`1V-2^LV72#}rzjqe zTY^qFNg-+sCubw5TMH S$Sjhb?G6zgA?Q?_kd=fRk1}F|_A*pM%FJ zWyZk?8s4)?qcmwQqVSRJK2{uVGm2-cuwis74QE|6@C?cB??gBpwa{(#UeYx}b=&yJ zSk)PM&UL5A!t>j<@Z(x-3Bzl*nElZ$e{HS7`^S&T(ZST>=L~dzW(T1D7qz7XnUr2( z{^(03H3cLUr03Hrhl$C-#hT)5TRsDL5m_V R3PPiozbTd(#y7pwqG`e^YP zx3hhn!QWuL%>fJ|V!<0y;KRw9CpRWTdy60JADRQ_s{0WwaSvWhcsGJr33g;B**AZ6 zKxy%ES}r>Ffe%^ab0$o804hJIh!SU|9)Dkcs6ItxsWV?+7=^a{MNO!RV%x`DsXlWG zZ53PoK1|40R$P&>kc|1@-DbcrP*)gCkqFW0DiMNrw3bVRmVf~#iIy%aAeUxGH&CBH zun83MibWZwwWnP0F{~NCC2`5SWrZMY-VoKeOm82(6{c3#o{p;`ESa6`t=5kTHzr;a zbugCTL0_iDPX9WJeNgvqY47+QY2g!O`~r-_{BAcPRfSarpU)@WBJWh@HOc9)i?%zQ zfbr4us+2-?+ffDteL2DeA!UNK@e5UDjwpe9IOYs!Cb8+!eE26CjxEyM`Wx*GH)}f# zm~dDKs h zY2mJ*rkyOS6tZzZmeLmAb^;xSDL%_aTfWa1QC)0{A3>YF5u{%s%1MqBBOP5!9IZ|) zzjQU_?*XOr*=?rG--17$JV#ldKZlVvRgDVfZJM#=T#lDL#l`7qAk;Ust-w44iR} z&pK-$_Gpt){93vN *wLDrM z5C#IT(fqao7*&BhnfV a55bP3a{PA;Q9i6A5B8)tSf1FK1p?qWz-l zCwlCpmX1Ma09p=qiR7_58l<@X-8n04G1kFt 8)fWYvHCE%YW{|pSmt$J{!k<5g;bo$WU(ZY@s0sXk3Fe1!hbKH z6j>ARGtL0|NIomaT7#6PSdXKjiScPTp1Hm&$qm|#?6gB^5wd+7*A@AVRN*MrHW1si zdu0d>VM@4K=2GFNu@4ihztsD0PrFsIFD4O>K}f0;xBzyLE*+TpW1K=w_Jwk?UdY=B zDFDo|DECQx7QX2pbO5LqN4bawxJum-Tpr&rEx-rs2x-e`izq!sT#;E8S1z*#JW`Ue z+7RH;Jl=ljK}OQfH^{VZPoK}%dc9!Qe?!q+NkrOSo*n*(xgKiS%fDhG!0`cjWXk8{ z>tofcV`D&cH-3wlIsUg~lo*lCq%i1n5T^lmq`pW1qq#UC1E3^V7W+ZC!?hz#K z!c58aLB$Vh!!_Bs6yM{c#A$5re9USPXUy
TTr z=d7FdT%Yq#u!Ccv?z-Z0H&GHP!728&Y!KCp_#3|th_GX-BN7{?kzKnkAq~^6&xuKW zaEOg{MCnCzrZ43dHH9#^a8#^{L%C(dnoN?^HT_CYfo?TtVSMNb+F0Yfl6=OjT;fq^ zT^yCX@tLCYM7Q%2gkWP2EH~Gy@FeO%*;|nH5tA~eh&HV6>Uy`@+2>i7O1ro+xDVOG zkgDRaRPVwjrz2Hys#HwL1KL!!5+C}&TrBLXy1Y~+A@%%`80tQBKJk6aVx=t2w;7hS zP!zzmvmko_o;x678yuc3H|AvqZU-OZ=FErRf&dSPCQ)u*gO`DS2?FGh|23y6_Ft?h z26{9$cGfnAb`GY7_Dtbjkll1}f@i*+TVsM`!N9&?C%ChSnv;}*Nb$s9T=)#Tg_`f!` z==JBvuBTu6*Vn=Oi`TKRHfA*Y>5a-`*37% *T3N8 zw$F#tkc+jb^*`SdKV8-e^xq>auU~QOWjeeM!N`ZhU{=(pGJq*D;HS^ OjWCg+oGvrL=?I?Hl|a+Dnhkve(%xNu=uH6< zLWAN=Z*zA|9&{-b-`)O%U&@X{=$&hjw`LyW5VG&o0Etd*6vUxSCTSP6Tl_q+H#j hu^4#2SMT42pJ_Ip7l3b*7|GO$=}uJeeej3PG2cWg>aM{?${68PLv~F`+{94R(Z* z_v>=LcH3_katXzJ+T*jDo@pACamkPo+vHuWzB1_q-tIhaVy>>Mc877G#dL{wrY^`q zo>s{OK0!CR?fX1*Y&RqwejInZQ1cC A-}C71 zDr+dL2qSsIFg$`OMWw_DE+@g%XPBC%#PY9@n=Utws%vAi)#OiA(0+!XkJd0fNtupD ziVfrkk3-RPg?< -MuQLTgYcp}2@N8!P$djPKo}uG=nDcg#3Bnr>Y|1SO{mc9!cc|n zLy=mB!k{`xLD5Gdf(q@8CpAM}Dv1V&+|%2e25B?F@PQPdrzH$gK*WXIM(*&0uxiIA z**J8sLaN?V^Fp9nyKy10=g61L_@tuFtTE%B=Vpr9ZO6K(*~*f82vMsRhFQJyG^67Y zd$WiZ_89DgbX1hOOwtNw&`B1qT@Ffd_t3d7f4`!*>Jdx?rK~rlz}M9lpA>Kvq7qRY zHfAt3H6j16kzpD%dSI`V*hx?C;PyD@6yAhInHnuazf#b(4w`1u4#nl_?&GDW^q_-i z1-y^brUO+%=6^Ux>-3)`kjC$kMYg^dwYpo6LyZ=rld6%+ismfgCdub!Mv&k9z^QI= z|MhK7tk|WR;6AcVuCcQ(p1_+BQKf0J2tm|MSL%D8i#%HCtfKuFv^{?ZD<-#N?KQXt zO}Fcn`6Ge7Z 7~Pf z(} *eC50Knf+{JOoMVNV#wK;#?*r+6nK2D+#lJ{*fQdz_T@!_e!_P*X zr6ZBPid _t6n9we}MMQBZ&E+T8Ds+`MNT_3*y282x zI_EcI4_O{KE4)?VJ|^w=UF WXc{MWZ&Wd0gSKH zTacADFRxoIYTO>5Wvb0#t0<21edW+Azs@>tWje~9XE#&5*55P143 xUL8W{)Z{x)J=D3wM zd!`HbrR_TH+Ih%R-O}WPDw_F}E+3ycOxQ@2_r;M5uxe3UV1G-G zzUpLIrb3-ApJHdlO}`^g2m6`EZT)U1kC2fy2^9tRoH0`-bsK|2_i|59+^pC4wdwk4 zJv{F<0E`^=_qFM-kAAP0EdNbOZf0-ulQ-VH%da_if1Vh>|D~Owv8la-j??c1%QUaQ zs#mqNUKNCUj_mbXOl=@SXrN636}OAzr4|*!i%#_vHg`K~8@dlzbBxW4m@WSJv6x!O z3}jo%ThKYigm)VVAL(9yuwV<(%V(+Hqp?GiA0ai&?jq87&&9}zlR^3@+>+ qpS&(&o3wY>E@sbJiY9WWMcE}f#x49uD2lli_ zhM~UTq}aX&f*`R(<7gK0D3eF=@D9*gB=Xbwgq!jbU&OKBcsF<$-7Fca8*B5SgJSYQ z`XjI{j0GEu)ljX8_FI6$HQ`OS(%-gttn M4$*mtJ;Qss)7F zO?Oo$GGsn!5nq6J*# +?&D@T!bbU;l+9a7 zRx$o=h(-!rPV I;@_eLt Iy89*=%q(( zi1LX(o`3u8Ef`duRJ{U@zG;wPEblbqJ10KZSSoSEZQ_z@HTj{z<8joZR?Mg@_sfUV z{t4>F=mf|j3(P*a_QrMP$8_G{&Wg%$D1(&*(7YkQZGV?UBMJikO~%i7SMQ?&2nLBK z*gcdC_dtZq)Y#M8k`VDTvQ<0%4C`|1w4jrfy_K`5u|UT1O*MA)@av;DyK>;Z1aQFW zt=E%gK-{IE&RdL7mvL$l1-AO5Zjc58KDWuxr?A5{#09(?H$;jYNA`H2H_*V7VHJBz zltChJiql6sgXG*GQ!LD$p0BcRD4b)IQPwJ!s*qz_SL-LD8UrVx2nwJ7b;xeNXBJnY z&)e4y^Q%lEZvZ_3Fl&zNgF_c93E12^@YhB>$u9wjRgADJZ|!p*urdcmXc&dIFnCY% z8Fm?^#P~k$CYHm}JTV^Udh6nIQeKg!7Dou!k(b;BD$kMQ`-n3s^-By*ODK@BM=i%e zlkHON(h_v)A5o_96Kx(SSs`~UCQnJzM*x!D`A;ZL2%K#-%HX)0Cf >1 zL3s`fFi8_negehZvZZQn 64s p35*6Ua&8 z&x@Fb1CW2irs%NRRC=t8hcTE>kVbZu_QleJU}Npf!}&H#Bx}B}y!(XDPCX%`pd<-i zp0^=)P(it?)Ea84s>PQMj7S_Ec%;_prER0NS=(Dpbc`dM2pcV;ETn&PYif`t8s}0s z`Krg-?bg!+BRv3v7s=4$4Rv2_AywaaZED06jmhy#;Uli@hFWX;)wlT>8$MY10L0y0 z@cGtK*v!YvhjEe4Yn-)*m(>N_Yi6sHU7AqgRvz6kxtJsSg)sc9W#!b8ARubJM8EaZ z`v_Uwrt(#!?cm3((pKf0+vME03l zCeOTC=Np(lup88a8?h(5nK(JX-B?}zw)^k|nIZ?3YouR{75~+Z#cOrFMN1KEZGU}N z@N?P5{9%o&?TYi`?Eq#wY{#+3&D_>VY8?>LNQthDS^dI9f#O-2DFPh^)u+O*{DQs# z)fY87pF2)Q@^vz|)IYe~nHysjlB0RC!I;vJV33*T7L*8YY-PCNT3LH2g!4SqS~XLs zyLwalmoK+%j3aXKWOKi>7gp=l6oGZw|C)TAZZ)_Avl$h^fv_JDF)^Ev^ODf=5fP{O zW2 ;LgH@p=qjJ-64w3O&tyX1cCe_4IXud8>yy866 zOV>p2Sbp2k3!wu>@qFDF;T1x~;2wU&xi%FJ`D^m^b^R%HH&3^#)6)o^2A0OmM*#ia zjI}IJYWAm_oyrf&UUpb}E)1-PJt3oP2INM*XpPF@ORUhBXrN9-$wb(qm&wDP@e)$V z`!gzP%VPH5Xl(e3hVL@C!lWahKkve`(M oPetVEusvRHtp=f&}=;b$WbsY$7zNlAYf)VofMeq$E62R}ferFE_SqU NB!guxkoSgFKe))cx{&PCVU*#OUs`OvU`O74jf0pxeLb>nBA%7Ig*U#f$ z$@%M4k$)ESa}JO1`RRTXc=UfM=nu=?|E0RcpSX{Il>|ogFD3n9ZTc%ofA_(D-wOXI zY_$I*$>29; h(L@-jCw=e`5VMqW()&`De}lOo{oOpW&y%@PD=P50(Ed z_Rr*lzhcwB+V%c^_ iO`|q@i|5Kv@0EpQB5&J)6hQBKKXRfhd6|Dbn;C|Eb z@3yKxEBI%YpI?=*`5LbD4@&q8=CVIy|4iBOEA}V;e}Vmnj(@cK?-cy&@RbqyC+y!T zKz`Nk&tZeVwlnPi#QHNO$afw5T|2)A9{woy3jfqj`~QX^{@T``!_~eABK|0~{|fKt zz_R~av!p-ZU!RJU{!NSj2!i{y*+2Wpe-DHEQI7vT=+ABc;T8YqQTMaw;CH9{ALT&n zU$_5PM~lA~_Oo-xufn(u|Fy6`2KxWFCjR-&e)dWD?s@Q|fLr_ vjKktiS7x@3&_^imb;Etl#g_erW#tZQ9R=kzZTk`lp)zd$%Sl0rI-%{Jw7| P0cd{}tMuLM1n~a=Ko@U| diff --git a/src/main/java/cn/ppdxzz/controller/DormController.java b/src/main/java/cn/ppdxzz/controller/DormController.java new file mode 100644 index 0000000..8256525 --- /dev/null +++ b/src/main/java/cn/ppdxzz/controller/DormController.java @@ -0,0 +1,197 @@ +package cn.ppdxzz.controller; + +import cn.ppdxzz.domain.Dorm; +import cn.ppdxzz.service.DormService; +import com.github.pagehelper.PageInfo; +import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; +import java.util.List; + +/** + * Description: + * + * @Date: 2020/2/19 21:01 + * @Author: PeiChen + */ +@RequestMapping("/dorm") +@Controller +public class DormController { + + private DormService dormService; + + @Autowired + public void setDormService(DormService dormService) { + this.dormService = dormService; + } + + /** + * 查询所有宿舍信息 + * @param page + * @param size + * @param request + * @param response + * @return + * @throws Exception + */ + @RequestMapping("/findAll") + public ModelAndView findAll(@RequestParam(name = "page", required = true, defaultValue = "1")int page, @RequestParam(name = "size", required = true, defaultValue = "4") int size, HttpServletRequest request, HttpServletResponse response) throws Exception { + request.setCharacterEncoding("utf-8"); + response.setCharacterEncoding("utf-8"); + ModelAndView mv = new ModelAndView(); + List dorms = null; + String keyword = request.getParameter("keyword"); + if (keyword == null || "".trim().equals(keyword)) { + dorms = dormService.findAll(page,size); + }else { + dorms = dormService.search(page,size,keyword); + } + PageInfo pageInfo = new PageInfo(dorms); + mv.addObject("pageInfo",pageInfo); + mv.setViewName("dorm-list"); + + return mv; + } + + /** + * 转发到宿舍添加页面 + * @return + * @throws Exception + */ + @RequestMapping("/toAdd") + public String addDorm() throws Exception { + return "dorm-add"; + } + /** + * 添加宿舍 + * @param dorm + * @param response + * @throws Exception + */ + @RequestMapping("/add") + public void add(Dorm dorm,HttpServletResponse response) throws Exception { + response.setCharacterEncoding("utf-8"); + PrintWriter writer = response.getWriter(); + if (dorm == null || dorm.getDorm_id() == null || dorm.getDorm_intro() == null || dorm.getDorm_rps() == null + || dorm.getDorm_leader() == null || dorm.getTeacher() == null) { + writer.write("false"); + return; + } + Dorm isNull = dormService.findByDormId(dorm.getDorm_id()); + if (isNull != null) { + writer.write("false"); + return; + } + dormService.add(dorm); + writer.write("true"); + } + + /** + * 通过宿舍号判断该宿舍是否存在,存在返回true + * @param request + * @param response + * @throws Exception + */ + @RequestMapping("/isExist") + public void isExist(HttpServletRequest request,HttpServletResponse response) throws Exception { + request.setCharacterEncoding("utf-8"); + response.setCharacterEncoding("utf-8"); + PrintWriter writer = response.getWriter(); + String dorm_id = request.getParameter("dorm_id"); + Dorm isNull = dormService.findByDormId(dorm_id); + if (isNull == null) { + writer.write("true"); + return; + } + } + + /** + * 通过id查询宿舍信息用以修改宿舍信息操作之前的信息回显 + * @param request + * @return + * @throws Exception + */ + @RequestMapping("/toUpdate") + public ModelAndView toUpdate(HttpServletRequest request) throws Exception { + request.setCharacterEncoding("utf-8"); + ModelAndView mv = new ModelAndView(); + String id = request.getParameter("id"); + if (id == null) { + return mv; + } + Dorm dorm = dormService.findById(id); + mv.addObject("dorm",dorm); + mv.setViewName("dorm-edit"); + + return mv; + } + + /** + * 修改宿舍信息 + * @param dorm + * @param response + * @throws Exception + */ + @RequestMapping("/update") + public void update(Dorm dorm,HttpServletResponse response) throws Exception { + response.setCharacterEncoding("utf-8"); + PrintWriter writer = response.getWriter(); + if (dorm == null ||dorm.getId() == null || dorm.getDorm_id() == null || dorm.getDorm_intro() == null || dorm.getDorm_rps() == null + || dorm.getDorm_leader() == null || dorm.getTeacher() == null) { + writer.write("false"); + return; + } + dormService.update(dorm); + writer.write("true"); + } + + /** + * 导出宿舍信息 + * @param response + * @throws Exception + */ + @RequestMapping("/export") + public void export(HttpServletResponse response) throws Exception { + InputStream is = dormService.getInputStream(); + response.setContentType("application/vnd.ms-excel"); + response.setHeader("contentDisposition","attachment;filename=dormInfo.xls"); + ServletOutputStream outputStream = response.getOutputStream(); + IOUtils.copy(is,outputStream); + + } + + /** + * 转发到详情页 + * @param request + * @return + * @throws Exception + */ + @RequestMapping("/look") + public ModelAndView look(HttpServletRequest request) throws Exception { + String id = request.getParameter("id"); + ModelAndView mv = new ModelAndView(); + Dorm dorm = dormService.findById(id); + mv.addObject("dorm",dorm); + mv.setViewName("look-dorm"); + + return mv; + } + + + + + + + +} diff --git a/src/main/java/cn/ppdxzz/dao/DormDao.java b/src/main/java/cn/ppdxzz/dao/DormDao.java new file mode 100644 index 0000000..75cb84b --- /dev/null +++ b/src/main/java/cn/ppdxzz/dao/DormDao.java @@ -0,0 +1,64 @@ +package cn.ppdxzz.dao; + +import cn.ppdxzz.domain.Dorm; +import org.apache.ibatis.annotations.*; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * Description: + * + * @Date: 2020/2/19 18:28 + * @Author: PeiChen + */ +@Repository +public interface DormDao { + + /** + * 查询所有宿舍信息 + * @return + * @throws Exception + */ + @Select("select * from dorms") + List findAll() throws Exception; + + /** + * 模糊查询宿舍信息 + * @param keyword + * @return + * @throws Exception + */ + @Select("select * from dorms where dorm_id like '%${keyword}%' or dorm_intro like '%${keyword}%' or dorm_rps like '%${keyword}%' or dorm_leader like '%${keyword}%' or teacher like '%${keyword}%' ") + List search(@Param(value = "keyword") String keyword) throws Exception; + + /** + * 添加宿舍 + * @param dorm + * @throws Exception + */ + @Insert("insert into dorms(dorm_id,dorm_intro,dorm_rps,dorm_leader,teacher) values(#{dorm_id},#{dorm_intro},#{dorm_rps},#{dorm_leader},#{teacher})") + void add(Dorm dorm) throws Exception; + + /** + * 更新宿舍信息 + * @param dorm + * @throws Exception + */ + @Update("update dorms set dorm_id = #{dorm_id},dorm_intro = #{dorm_intro},dorm_rps = #{dorm_rps},dorm_leader = #{dorm_leader},teacher = #{teacher} where id = #{id}") + void update(Dorm dorm) throws Exception; + + /** + * 删除宿舍信息,一般不用此极端操作,更新宿舍信息即可 + * @param id + * @throws Exception + */ + @Delete("delete from dorms where id = #{id}") + void delete(String id) throws Exception; + + @Select("select * from dorms where dorm_id = #{dorm_id}") + Dorm findByDormId(String dorm_id) throws Exception; + + @Select("select * from dorms where id = #{id}") + Dorm findById(String id) throws Exception; +} diff --git a/src/main/java/cn/ppdxzz/domain/Dorm.java b/src/main/java/cn/ppdxzz/domain/Dorm.java new file mode 100644 index 0000000..e6b45d3 --- /dev/null +++ b/src/main/java/cn/ppdxzz/domain/Dorm.java @@ -0,0 +1,90 @@ +package cn.ppdxzz.domain; + +import java.io.Serializable; + +/** + * Description:宿舍实体类 + * + * @Date: 2020/2/19 17:51 + * @Author: PeiChen + */ +public class Dorm implements Serializable { + private Integer id;//ID + private String dorm_id;//宿舍号 + private String dorm_intro;//宿舍简介 + private String dorm_rps;//宿舍荣誉 + private String dorm_leader;//宿舍长 + private String teacher;//管辖育人导师 + + public Dorm() { + } + + public Dorm(Integer id, String dorm_id, String dorm_intro, String dorm_rps, String dorm_leader, String teacher) { + this.id = id; + this.dorm_id = dorm_id; + this.dorm_intro = dorm_intro; + this.dorm_rps = dorm_rps; + this.dorm_leader = dorm_leader; + this.teacher = teacher; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getDorm_id() { + return dorm_id; + } + + public void setDorm_id(String dorm_id) { + this.dorm_id = dorm_id; + } + + public String getDorm_intro() { + return dorm_intro; + } + + public void setDorm_intro(String dorm_intro) { + this.dorm_intro = dorm_intro; + } + + public String getDorm_rps() { + return dorm_rps; + } + + public void setDorm_rps(String dorm_rps) { + this.dorm_rps = dorm_rps; + } + + public String getDorm_leader() { + return dorm_leader; + } + + public void setDorm_leader(String dorm_leader) { + this.dorm_leader = dorm_leader; + } + + public String getTeacher() { + return teacher; + } + + public void setTeacher(String teacher) { + this.teacher = teacher; + } + + @Override + public String toString() { + return "Dorm{" + + "id=" + id + + ", dorm_id='" + dorm_id + '\'' + + ", dorm_intro='" + dorm_intro + '\'' + + ", dorm_rps='" + dorm_rps + '\'' + + ", dorm_leader='" + dorm_leader + '\'' + + ", teacher='" + teacher + '\'' + + '}'; + } +} diff --git a/src/main/java/cn/ppdxzz/service/DormService.java b/src/main/java/cn/ppdxzz/service/DormService.java new file mode 100644 index 0000000..3bf55f6 --- /dev/null +++ b/src/main/java/cn/ppdxzz/service/DormService.java @@ -0,0 +1,29 @@ +package cn.ppdxzz.service; + +import cn.ppdxzz.domain.Dorm; + +import java.io.InputStream; +import java.util.List; + +/** + * Description: + * + * @Date: 2020/2/19 19:52 + * @Author: PeiChen + */ +public interface DormService { + + List findAll(int page,int size) throws Exception; + + List search(int page,int size,String keyword) throws Exception; + + void add(Dorm dorm) throws Exception; + + void update(Dorm dorm) throws Exception; + + InputStream getInputStream() throws Exception; + + Dorm findByDormId(String dorm_id) throws Exception; + + Dorm findById(String id) throws Exception; +} diff --git a/src/main/java/cn/ppdxzz/service/StudentService.java b/src/main/java/cn/ppdxzz/service/StudentService.java index fa736ad..9e43b51 100644 --- a/src/main/java/cn/ppdxzz/service/StudentService.java +++ b/src/main/java/cn/ppdxzz/service/StudentService.java @@ -28,4 +28,5 @@ public interface StudentService { //返回一个携带所有学生信息数据的InputStream输入流 InputStream getInputStream() throws Exception; + } diff --git a/src/main/java/cn/ppdxzz/service/impl/DormServiceImpl.java b/src/main/java/cn/ppdxzz/service/impl/DormServiceImpl.java new file mode 100644 index 0000000..a956ec7 --- /dev/null +++ b/src/main/java/cn/ppdxzz/service/impl/DormServiceImpl.java @@ -0,0 +1,114 @@ +package cn.ppdxzz.service.impl; + +import cn.ppdxzz.dao.DormDao; +import cn.ppdxzz.domain.Dorm; +import cn.ppdxzz.poi.WriteExcel; +import cn.ppdxzz.service.DormService; +import com.github.pagehelper.PageHelper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +/** + * Description: + * + * @Date: 2020/2/19 20:22 + * @Author: PeiChen + */ +@Transactional +@Service("dormService") +public class DormServiceImpl implements DormService { + + private DormDao dormDao; + + @Autowired + public void setDormDao(DormDao dormDao) { + this.dormDao = dormDao; + } + + /** + * 查询所有宿舍信息 + * @param page + * @param size + * @return + * @throws Exception + */ + @Override + public List findAll(int page, int size) throws Exception { + PageHelper.startPage(page,size); + return dormDao.findAll(); + } + + /** + * 根据keyword关键字模糊查询宿舍信息 + * @param page + * @param size + * @param keyword + * @return + * @throws Exception + */ + @Override + public List search(int page, int size, String keyword) throws Exception { + PageHelper.startPage(page,size); + return dormDao.search(keyword); + } + + /** + * 添加宿舍信息 + * @param dorm + * @throws Exception + */ + @Override + public void add(Dorm dorm) throws Exception { + dormDao.add(dorm); + } + + /** + * 更新宿舍信息 + * @param dorm + * @throws Exception + */ + @Override + public void update(Dorm dorm) throws Exception { + dormDao.update(dorm); + } + + /** + * 导出宿舍信息 + * @return + * @throws Exception + */ + @Override + public InputStream getInputStream() throws Exception { + //Excel中的每列列名,依次对应数据库的字段 + String[] title = new String[]{"ID","宿舍号","宿舍简介","宿舍荣誉","宿舍长","育人导师"}; + List dorms = dormDao.findAll(); + List