From 1c601bd68e6d327331a38d456decb2fd68cfa926 Mon Sep 17 00:00:00 2001 From: zt Date: Fri, 24 Oct 2025 19:32:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/CCCET-JL-CX-25设计计划表.docx | Bin 0 -> 22931 bytes .../resources/template/设计更改通知单.docx | Bin 0 -> 127621 bytes .../template/设计项目负责人任命通知单.docx | Bin 0 -> 13891 bytes .../org/dromara/common/utils/AsyncUtil.java | 38 ++++ .../impl/SubConstructionUserServiceImpl.java | 9 + ...DesConstructionSchedulePlanController.java | 195 +++++++++++++++++- .../controller/DesDesignChangeController.java | 104 ++++++++++ .../design/controller/DesUserController.java | 88 +++++++- .../exportUtil/plan/AttachmentPersonnel.java | 25 +++ .../BusAttendanceMachineController.java | 12 ++ .../app/BusAttendanceAppController.java | 4 +- .../service/IBusAttendanceMachineService.java | 6 + .../service/IBusAttendanceService.java | 2 +- .../impl/BusAttendanceMachineServiceImpl.java | 66 +++++- .../impl/BusAttendanceServiceImpl.java | 3 +- .../impl/BusProjectTeamMemberServiceImpl.java | 7 + 16 files changed, 544 insertions(+), 15 deletions(-) create mode 100644 xinnengyuan/ruoyi-admin/src/main/resources/template/CCCET-JL-CX-25设计计划表.docx create mode 100644 xinnengyuan/ruoyi-admin/src/main/resources/template/设计更改通知单.docx create mode 100644 xinnengyuan/ruoyi-admin/src/main/resources/template/设计项目负责人任命通知单.docx create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/exportUtil/plan/AttachmentPersonnel.java diff --git a/xinnengyuan/ruoyi-admin/src/main/resources/template/CCCET-JL-CX-25设计计划表.docx b/xinnengyuan/ruoyi-admin/src/main/resources/template/CCCET-JL-CX-25设计计划表.docx new file mode 100644 index 0000000000000000000000000000000000000000..1b4009464d54e074f3ee6a0b61e9c5f072e405a6 GIT binary patch literal 22931 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 G^xzWbMTI)>ax2bP1yF-d(?Hha|U zo;BKDxMxOm`8cgt7jv`rTPMENQxRXFTraHrEa|zzLc90|z#_a?3WW+OM#NqT9AxQ4k+0oZAjO% z%bv!UMO4msDcXaJcc4IM-vng z1sRz6^!_ftesZ6l)hwREV8n3?4G_s%0i&rz5&FA@_mf^!jPFQq`oiZA8Nf;1}&r>~?kjt}2N=F~m`yI*~|3u&R;S zF@=O!g#xCM&n295J-CxseZ?^}ir+sGk!3v-NN-D<%MH&n)c2gh(kQy~=fRzaKWaQAhRj(m^>BnYMd%pSdz(O(!IB9S5kcsdh1oF>IlOf!;Dlww<$#B$!} zkxyvJz=y^aLjwlsCN*jZwX}nkHZg#v1r>{wz?K>_46$5hjTld^hEIc*AN4nBfTV3M zx1@?o4-h!*)q@_r*x^sh3#?K@UxBEQ zzv<8neD9L1yksG=rqsYkU+$7o#Yb0J90qmN#Bky6;GSi=HHdfJrLdLbxciVZ*c67?h(zbL$O+|bhK6Y zI%#CtC&`37NFMGe^GU>Ejyhxo*7#dMb0@AOcv30E2%hpa zB21?VXgRe@D%z$cj^OD}CHj|SnPhVl3Gd;} zU1YQipy|)9{=g)j+X(7H)nTO?a!skKlhAK-&8t?NQ6Z#S@{z43MkloAJt$s=Z3nkS z$>UL;%kMj?@vB4mm13DZh!H62eZoNd zFs)W_zs~iq*G6S%GE8_9xE7XinLaDSVx}c~H@ohg_7v3)9-I^68Y-$K8RF!K(Ym5e)o1yNIsV?>w+G!9|{(#P@~{P zHldMjVmWL!@@;d!K1UnbZ&G7rPiv2kWBsv~kie-Ubk=5Y-rP>y_}KY$hl!y&tbqy} zRwoz?icF`jfGjJO_W}QNF~m?+vvgo1BA~oHwIyCA%G-RH~-vqD0(1Q+ofmq^LE%Oriv#WKv^& z@8*I#GfW4B1#xHuu~iLX{1K_q`gf{u51N2zh~|EuJy3tj&;n6Q+{RDGng zT0Rg1I{4V#Gu&eH@R%a49E06SJez(FR_<8MlgSFJjT+Ww)(6e5x|J}y6&#iTV4FrC zZ^XgmaynctHwZ77Q0_DmvUOQX1s)UD%O@fUa7j+~RlY#AWxH|QRU_AXAgO`Rsr8}o zpEyvnZagLwN^?f34E`V4$$U}LQhk&!H0E>)83dfxvh&d>7U+zr1X7Sp`=tseX&kLN z;}T|p3`4GpRXO)hdq*R7xlU-p4h$masmH7n1=$6`$Hw~3a8fBW*I=3~1zFOFR&d|Q zY!(Ko=8~}rNX%Zt%5=zfQzF4C^kB;J0qGg(#6rMB9O3W|Bn9O~gl)eT`n5o2yyfz$ zKy=EnW|YGOW~F&$_WU<>j_%pqXg0{(%pgW(820DSRWmR?zeB8`pP7-oyqez>t|9TM zw(?QHUZ{p^!B_@i#0q#c6NOH6vAUFXsrn)=utf3O@1GRc+Woqi1Y$%Z42e!Tds1Iq7SB9~CAgJjc0Xf1t;BW&&4~d1+G`~{t`#lLv0}tDTi_dY!T^WBP8`o8l zUWz4gxFyJ2T2zpjC(KKyf$)qM>w+j4X9Um4J!QjSN|vrz?{^{+r8(5m9tppBG2-HSBYR2&< zX^XYU14$q}F^T1_q)?f|yv?LQH3JHUE3%b4)L0u6)vw(67 zE_5W+-W2mV;vEY!WoH2Z)dgN}nK|cVRj}-rV690~zO&~v*j+J}s|uz3>m_3oelRfN z_*~uX&;M%VtfQjp-aU>;cMXlyAl)HI2n<7qAf3`M3`%zh0uCU`P?FM!bc)0f0@5Yj zf*>IcQi9w;-uLG#_r1S$_a8Isth2v+pJ(s$JZqnG_Vcl20-Z3!1S*6;)nMIE6@!s> z9AjWVM}vdRf^KplOA0DJs%1{SHoZ|`2mFQa)MPmR!E=zG&g>Jiv3%TkX+QKuPNI3> zVj*P232iabr6;ok!y{Z>?!@xrtk3|Kq=5T)b5sO(lnlT+vf$!hABFX&!+z1;ZsD&(;=}dZ;S4>Al5zU%j-pq_c|i)2&j`uuT%6 zPnz|Zi8oVYT?m)TAdp$@6LH(w5MkE)nDDY4R$JN9Nrpy_a^p#I15$&dWTn%LuUdkT zWPN@zbI^cX*w>7Gye=ngwUI$y&zKo_|ceQ1GuV34-S%O@DiRm)}9`VB5 z&^3_N8V@{F4X)Yf0`>#MPIZpR8EW0t{K(iim^WU|CEN=mgOy&|FAh7FJ*HG;XNF67 zT2#t@d{k9Cc1)rmsFs2S7aKx((IjgymiiL>9H5 zM|D+%0}*`{=gCoH5T(?I1P;=pGZpl2zurZo?!*@B;$S^tY)qU;BpNbe`4&*Y)}|*6 zmp74IsED*X1r8mYA@6;PW+hM_EYbGBggn%V2!sIxmA6a9Ino=(^@Ae9qS<|(a`oH- zzqPbfIFRU8FKs`Nh_(`~zdr=t;QsP6o^vtM8vIN!8GN5HjqMAOnZ(>(j80nfIkMp`L?h}NTku!u1dMB;Lzav~WTfr5ctSd0eT5?oc zWidyu98>s^*9m#RB~Pzh$8HHs#B zVFmY~mUXL^wy%N;h$+^>U(~_AGqb52I_tVEs1nm+@3SjBElz z+fFjeFW56^K}66lL>rRdIoP9GTIJ6ch^ARh7Tc^z$3!DxB;r-q-;-|ImK&n1=vF_# zWfnQ~tRkx`A-|{J_(m+}qDnZ_k`$X#$^?cCFP+XA@o~gkn_2yOm;OX2=l2$smG^z} zMDlQTx4x*rxapvP4L7z4d?pso=Kb*{_9u5)_aFsw*zE{;tF9JvkyrWB+;Zpz1u{D- zaP)pH2C>XAM+ec0pwLt@ka~ue3S174(_uzxT+&pB-39!}6mEwq3F8_iKH;9Uk0DP< z$8TgwA>Y_Z=)BqUzJr(JX9+|g2vsa-Z6L(763!@hqdkUZSa3!HK_bbMN&D-So7v4WGaMMh~ zM%X+he$YOsV-@iLM_|~BKM`gn4Z>x+P2OlDV&obP-EpFV@@9Orc{iUH>wF7%FZvT) zO3STAM8NDs^W6jY)>P5hbRo+-H~GT#@|VaRj@5OB>sPPZJS>OvYe?=azQLsDsPWPB zb2fa%edwc(_B;#x+3eQ0(=@?U%1C-5q7~>$p~Gy`+{Id#qdKQLKP4RvL=Lf|;6*q> zlN}fnrynm=lo+0;+lpu*WLB*<4f<|~+{ARKBK>}pL{k*t>xtaa_5}PfMyPj5IM9D< zB+4Gw#6cFrjLUKOSt}b&4B&jfn+DT!dt36<=HhS^p+LVSSvOnz-SMcWW7gC2=oVty z`@-g^8*%xGXx6_W(Dn%V)s0{a`4G9EGCMDEyw=sXt$< ztz<)7Lz+V$nyovVpZ+Y?VX^$MiP6Mb`^^1u{n+a?y>fD%aitN;{Y2{6_gftrEjep5 zC*`i2zQ;!oj~=a@Vv;Ilno}yeD9?NkZ|JNQjm-d%^n;673-zYo zAS7rtay4x};17gMYN-|($s<0{-8+=^_!1AP$8%+d1%j#kWJ~n3yhyp!8aQ^o8D_hL z|0v%1>Ug`x_Tt{3IfLoLUK8s`T-7v^W<>ILTA0n_N65Vy7SLZXF+}{(qbWYJux-{& zI;Qy=XIVR~kt&WNxKCwd^=OHjQ?n6N!NcyO;09#McLO~S(dSWKGf|G88yC_tGD^&r zI)VA4C-A4M$8PwmIZ2&lC3x0nO6Hdl#_EZQd8=C@;>yu)9GGtB#0BTs$q3hp2A;1M zQITnlOg;TBOX&4F%fLkM=KT1{bC;}_)?joAuAIf3uyn|}YnD`hVYcyJ#0a!kS(o>W z=nH9;YW86lQ)KY+K~(QbYQ$8@5rCU9o6P4U2cmmyBeob0(PB?}P`uFF;C3QvzR0LX zxeg}+TC#*RE_3EPp zkvZ|M@G?>krkuPRy|t{?5l&d+*jo!yFFuogFbVOCWlty0wLj-0u6L3V<)kRgukhYH zix@qD0-9JOlA>yblhqblj9)rOe2)KoED#QlL}OQGu=prI@*!^q#d|^r@eGz0J1ya% z9BpkwAjdG^5K9GNlO}N*NmTS-#@gr{`$S=vW^(-`M7pHS+~4rXD;q z3KpGZ!OF&H(4?TkBNeJ&D~Oz*Z`vq{eDH9W#NB+}LbS?ylkXr#ll)~x&l}3%i~AJJ zVtUUxER*PxVJ-CP#njIY1ISfgIP5bWk2HT%dOxIw!RDrq67ETUTkB2IEl8Kak`N#hxsk|OlPX4`grg_V6Q z{ff`TYnVl~`MC*?Gw4l>kLUOt;1zwH7alj^my~{S-^~wp%exvTZjj7hWjvuDw&)&9Ou1K*dGAa+~?Z2SFOJAGW;o_b}* zIqu*j=->x85PUpUZ`t26cgAHB^mz)}$@wftCDOOtej1LkBoOCIQ_037#krdFB`wb2 zXo*jcF@`ry1o+Ijd!!5I^OCMh$7H_qVEAS-{LKV4y1he*%!Yb7^yjpARq?1B{Xq+S zB^=;V#MYm9*8;tik;+~QvoILXCE3PZs&D(1vchu=s$7C_a{l;KlIfU@JNM1Kxdu*5 z_%W*_=CiqQW$}I)UIFXJ;{_NLxJ>YF`eiAXdPWM*b!i2ud27bZ;qKwXeiO1wp!^QQDt33d-R>R16RKhl{ffJ}P90+1)J4r7Fr9?7PVB&0 z_~fu;f+XopHQr zQ`t*2vND|0V*1~n=;gE=Ysw1l2|ujd3M~jXlo0{&OX8|f8+(gINincyF8+vPPHrry zLhIJoFUWXe(}SaZi;cwMQ<>|}1aAM3;f3iJ$)l{K6p0OzX|*-xlONBBelBD~PPgjr z)_l7i1xa|KI6j?h@d_I1FiLr_}AIGYT*A4K$i_%CHC`c{vB$rcX~Y_T`I0R)%lO+m;3y;&Mxt=SLKo- za9REVi~ZBc>$up<%2)ld{!{iBJoft4UI&@}R`(!p?EiH7H`esJ{5o#)x7-RDKz_^r z1K<2_MqiR1ugay-9LU38(dWNOE+hU`xs>>7{SmOPU+neRb}76XshmHB|0~j6Z|Qmx z_r%^>wzpLh9ncEayoQ7Hcq{w68hS3$pA TG$7Y%%4C@7D0E|2~P{{E|i literal 0 HcmV?d00001 diff --git a/xinnengyuan/ruoyi-admin/src/main/resources/template/设计更改通知单.docx b/xinnengyuan/ruoyi-admin/src/main/resources/template/设计更改通知单.docx new file mode 100644 index 0000000000000000000000000000000000000000..48604063fee10c2cb81e378b2a6b8e6373fbe977 GIT binary patch literal 127621 zcma&N1yCi;vNehf?(Xh`ySu~S?(XgzcXuD$-JQV)cQ)?s?t=~R_|ARz#W^S5AMtlY z@2cLlA}hOAcUNUrrlKtPH&~E=j&S)sp?}K%Jz%~nrVb{G&JK<)jEY|{^shgl{{@?c zxJz>f1p$c%0|7z)cbJi*BLl$BHb;5Few_)q3+qG>x?`f4n$;xf`Ig#TV2jVL2YkrN^@nO&r4z8Jw9pd@lieHTCo|uJf zHTc!P-TVdG1Xo}h?lq`(E`B!Mqkq0f$y5GTMfuYSTP)HZm`8|JJdvr`sm#oBXa!x;=iolN_q;U54mBFtQI12dU2<6{7GI4M= z`-ddoqz3r`Cgd;=@-33P+!cAaP--U%p`7v%G34?rGlTVr!ARRSD-U%@j=?YhTrLz0 z04|9QL7aH_{&U;oa}_bXiq0)9UoNQ%S}C3wDrMBH&>W>BO7aTDIp$F2j!gr(fE}C7 z^v%0~8Z6PK9q0+VMroKGRs4fE3VN!B9xNvIr|5932Dd7Oyi1OgPO4WJ9E1G}e7(Xb z$#kFd82t!4ke-LsI#Jnm)VN?Ck{BWkokelU@J#9NWlKKmy@hDe1y|ExZM1b6#}$K4 zRP4$x4a(CPGc7N(x=5wNvS)K2zt!q9%E}&E(1=iFwtcXIK%E462xyM|)^WG%2RcHM zBQzO37Dr#)WMLs`p;7Wd9gTGZaL#JorZGN)>bbRfg2n4ZXOoe|c{#KMDw{tqch63r ze?MHG{=6dZZF^xc+jxIWoe;IBwEGECj<^l`IZ*9m_MM^Qrb)kN{Zz=R(A!iM{Dgl4 z`%hjv75+S=e(`ek#S7Yh@Z#p;>R|T|Gc8HN4p~g-BiG4)2okQptq+omC0GX{mk^9u zT9zKMkeHyV^g;8Uo-|(zNZM&X0w+od@;(#LBP)1M$@y!Q+5Cv;)P>Dtw3hzay9JXGSF*#{o>X4=l*%k)srtwpp=-wgyO2nW?$BH}r)NpLH{&Mw*6Uo4@Q|1srHG?eR&x21 zFqD}3VC1+Br4Vz$gm;6GFf5Yp+>}MT)QWqgCi~=^75bvWiEYou5A6%g#eqh2AC0Yo z=L()dfX2{a)W|Nq0V66pW7+^$w|~q8zZT=w8;1Pz@(!+2*CppRTF;Sey9^p?dP;RJ zAt3SjLvldtSOp-ka7y$Ki~s*0N{BBOJsg}(|LY@3>15C#1P220W)A{_^uG`nS5I3r zmw!m!)SI&3A4Tbb8s$aip@7m!qL*!D&K-*3n}#>$l{dARp>H&E3O8jXH(R}j<)-Wd zj3+H}F@Qs9&JMbUc*3lGj6 zAkzT&Jpg9C+k1JqF1f9SN#h|%_prLLa{u&rf1Vq3>*STK%J!*1ffPRQxiWf9&_&O@ zy)Wq9C6t7d9-;jGg)BYF@|?lNexZwRUu+9d78MewF6{bSaU=?VwiX;z0~_E#Vm zv@a)0g{J9Ul1qc;GXp2l3&xm0*Xy|KZmkHRSyV&b4TvqWQpdwSn(9%wXyULx%gelOx!D$!bW_b zZCsRQU^ed=;}fM;_yTrxktDmHkTY@}8DD~Gg6L8OlRF3hvh^;Eq((F@Xyr96JibS7 zbrXp&ZQr%rQ=zapUcLIfkjQL*gg3FhCA=Cw`ulyH_kKQddbVb%3%_1(KVtZQXf={C zRL@!1;UN5mDd3sshCDIGFvIFDVkW0XPhk82l-!*arV{}o(t1XE4em}z4hat$xt)eZ zKbx*Sb&uM(|J)oh+=_#(dd%|jvO?8`zNLCM!ADS3x+*7l<>l%TPVj-QEnc8O8 zxe?Q&RDz?xf!?aG;XUNnZ|*U0CtDxFpXSG(r+R|7JyE1d}Avk6IiOLLmhWBb$KOaeCwvxGs_6=Fh7QohVMaFF%~O-goX!84V)K zzuGcXWi>huNu^-9Arx4pHpiCS$+>QJcAM|L^Fv^P+jy7m?}!@MJ7SI?&&^3B)XmNr z(+oJ6Ojw8ouwm90C2B+ZIfx4AHlX9Eidqf_%%p?;8^JsKJzFKjXOi%=&+~w$h16AE zepVUTM%REGQ^!np6>dj`Tw^rlTN35W5gXsOw<-`WwRs!5}mn?P+)fJ)#t>S1DI zcK%SMBTQyBtjB^ckVZF1qN;x}QTWzSF|6#awIO%>6f$@GiN|Tw$6=@9|2<)R{I4y9 zv%+Lzf%4!a21%}YpRAwE#=rm@lO}uJ3@ngo0@)Rl{=E{iZBbW;TglySuBXe~GV3l~ zp=5sK@0*!H27fIVhY#5y01ygkZ@=Er^;qjAPL({$=+FK2OezMXDr3c zhl5hD3{C`WcIBvryBtvej4R~R$SlU+b0CQaZH{k|;_#4L_tHQK&wGH&1HZ2Xob#04 z_=W}-;)8ZYQ+D|J`bBzzbt4&cDs0oDd^4Wn=N&S*<9s@^^QrPUYobFzzsylE>N2g! zbH6T>WrZC1W#sg9;sF}NND`H$0L28LaO|*zU22y7!TILUb9}$;ew{V*#JM~Tb&?#Z zFY?{B(q7fD!{^PQYH+-EwJ6!%k3KUL3;QK-CnH*8L|JqC}~(0A80Z3^rU z)hL`GB}EF?px=tPdTyzxF$jzW$wQruIdofJs4iO9Mu5hN>1{1=Y)|j2;qA6$01M9Y z8f|Mt7T>hNV2^kL~UbJLTvi26`tJ_GwB;@8CQ(*LwTYVhLYFB|wf%i{^s0;ns`9o{e zhc$m)^J&}FJ@z@x$6cMnR)Hke`|2G)TYNnI4(GFbi&qAFKb5VBmbZswUTqFQ6EfE zyXr7xaiHrGL;wdVksy??cosCf8e&0o*wu#cCXB1{D*+~2wk;}DTbc|p0Fz(1(VS`J z4FHqKf3GB!X8=s3Z7UT|HqyQ@wrh%xsY7_Orpe(!<#bz8h3~u!cW;DuFg7!UF|Bm1 zu$57qU&UGlngbn{L|21u>=*c-ZpHq+BE9gVtAQN*cG!8fxd6D(_|>QFog(s=VCeoWN-Isbs!F&*fXOm2r!|Gh%4#CkiNWH^X7VKyHoqB5}; zOVKzcDy)j>K(6F+D-q{xMZKkosRQvp_ngD?CCBIsy!hWb{i9`~*wi4NY!HeAUAi0| ztQ`HG{)EE3SWEiR#4s_8q?q^?eLchQo|E<$MT1ud@e~kgmKV!gQ zN6pqkx1~v%#fL6tcB?K{f8*b?-`SaxTWM5ey5TeohTPN`1* zZy{zw`tq1jjN>#~upQL+#Hd4B?#w5_NuqmwYfqQ`rMEFX)C(o)3eP?iryvtny-Tou z(6%n*8^mZ;@0}QfSDmIDqu*-{mm#EM*>6ZZDS@Nhl;%t-h%=(Csv+ zc^yy7EARSl5ZNzVFa|UV2fu9G;PGeYxAb4m-)VLA_8TI#+j}pV*ONrE5_PQqIL3;e z(~mEhE_&GvW7tfRd$3!pYApG22rW#4>oMPmUq*v8k6%;P?%t$8{YFq}Nsq+-2&d;* z&~YSi+G3qg0W~mv-QE?V*1_SX=jhz)NxqOWCNre}GCQ{qb z$XxE!!groF90?ah|7|@Cdv&gX_Lvouutj4brcxD8tF9qQ+{U_UdO}GM?oeDL06Ba; zTG^&o=YdLdtTg5N+$O7>EPd{>ZzqM{!U^MZWK_L@C}<4I8<~x8UtY^?1n{yIt3ced zWMR>-;N1tni@K`qE$1-vaI+_Adkl}A*oK$v&pL*eB<~jyq~#LEx@*EBt{a^?GX1<@ za^vFST{k*+1VAPkxvkwmPi{Jm-Iq=@a z8M$|?+G?3_w6Efi&TMTh4`&z1==IQNlG@%eF?wLNiIWMJU+`B*DN1wA-vvSIoZ46m z2BqHLb+Lv2NmVJ5b2+SjVGEtv#C5z@F9A>ju(8t+ZXhI8QFG= zx<0)5oQFK!(#KaX9Lx|gQTKMFrTbBH1-nJylwVwd3*{(QqVf9S|DRS>awN!%93%*c z^Orl~A8Yqt>v0z|S63^0i+?S*OR(3S*SH>hE&dQ;Z=v}N^`*Gi$IiQoCZ!eU9LcSK zEvzI-CXpPRKS{OzLT6t;6(GrblRL)0y&8~B^x*gj*MHJ(W1zi>SV}Vitry!Fk2E%v zzm9@B3x621=j0JC{xtB``{~t207FNS5Q!L(Z>(Cpf2BR{yl@`r8Vg6xpcP3&oF0QE z)lX&c2s@Zpbw_F@9!aj1kUgq5(@^c#hB7d`88xp&wpU0@V-ZAOVvN&pm{i>UV#WP@ zeNw}1lBNz(s%&%NlpTx^6U9y=PFwS=Vzsl^fzjwW5h<70=Bl&q72W9MF#%{jekQm_ z7ah}z3Jv&%;dyBv2)!BI(9J6Rrf48i?%i^giwbekTA~0oA?`QqFzTK&gx9zev1}Cv z#?@Geu0%mjYfL_?zvbT9y^*%ZQWA?IsnxVen2-2lQ$8`SRwKo!d9;A9t##QKspVx{ zb9OaOW>Q6p6TQ{K%^S7>#6N${#C_tRYcE@k?JWYOFTf|buZj~IZTJAEAfXd~n=A@V z?+9ir-g0BGv6C3*@I`kPhDqGFZ0!>BTe>}OkoGqf1tIO`_R@GT-FYz^CJbdS5%DVH zz?T`t3NUApbd)$1Eu9L6D}s0B*`<7!1O7eBA*Ej*>|=ISzi!WTM}r#+F%pijZ-YO= zq#NhdaJZa>!YxI=y{tkM8_SX?t~KbWQm@MOHy+tUe(&PqL;)nA_ny3pWEu7+w9cZJOojGqB zHvcA($rFzo^eQY3mr#EJmlO-HhO|68m4#t7@1c}^fsn-p$;31h+{xWQjuJF()Sj@Z zJg-P2b7bij=2e$|*HcLGN>#QKLEAJ>GJaKm_}W75ZA=T%mb)jOW$)GqFSy zU0!eZ=(OFA_r}(>c{rU-?j4L=tS=vH-L86eczJ#3^Yu*Xt2F-QBc$aNzE2cb31z9# zBpLq^!kjam%lVirN1~LdV=8BF|iFwi;;C4~XMzj>X<~xpXw%J6-oPev^o~ z)`_#}{}ybBjQjYlzy?afN|YB`q(~4s*ocMg^u^6pWFoQ@98KYb%V^tD=KxaP@PP`p zdlzWwmI7!%%Xs(^?v9W1o+05ola~ods<3EN*(ERY9l3o=918;CKt`I?ul*^@AA*~C zToK0Z6gI8zBOHG3%fj9>R|xmrzK{L6@{}yhS`}C0UUSM85e~VoyY7*X2tVtz$>i$G z$=$Y=15o76C2`5UM9ObO$o1;sZ>C#D=G=};?zbZtzy=wW~Sd2R6yf8G{n%UtObr(pS zV!iveT|4RuFIO*tG=QtW15_Dkl-K{T=Tw`?FCilTEwHTr{FSsrZG(x`SwQ1jj!)D~ zt4=67mH+C<+60(Y98w3rmGf%S;EbDHBqsB$%=I3qd`PFr2_>#b6j;fPZ)gwag2V(+ zTXfw5J!)h61UYYG0zBDE);k;LqP@b~NPDZ^P)xYA4y}%0a$V&Ho)Mn}`pC_9jWeM` z|6m1hOj2}pxWx?Orec2=zU)@Cw=D)uFh>AMf&`oRexZ^x1>M`%6T?cn%RVGQPOIn% zc3J*Xg$YRQLo?@>^PhtX-TKhF`7roD`+~mwJ^wTJxLTUonf;eXD4-AFGwExRiogQ_ z!T3+$zu?UO_=PUD6ddrx(R;~m2_(E7OsL#(CEY4l8t^RVB^q=V_5mJUypI>t*5=s@ zoC}1B3CIvm`KX+T(B%sD??+RwXDv|7 zqTymv#sjKrVBD|w@G z8-GYk=B83HP6t@h(miER0USr9!>~P3jugnx&(;BV?%+Y*1OV1{G!wQD zoM$<@<}jv$4C7ZznJr<_jAI5m^}iNRT{CMYF=-b9E=GpI{EAw)R`lI&AWd(lAbg6N zHZN;=0pN|#j}SheGB(}2dkECVY#DUql+?5 z9(McPUY=vk0B;A5N09uv{2or8cc0V~nryJBj69dC>I7fj$HGtAEDXB6{%W!7r`-zr zKg}u#`e`GC{K?3=zq>E%<@0~Ni;nkyKXQWb(b-YL5h!L(Ji+7^f#QQ4`Jt*iF(#Gm zFv8T|+-1TGLm^+kq)gIVMhfL?6Q-3$FcOF8Lyqva7*py%ceAHab~99M`RMHp4%LXOy1sNgV>s!m~-mFLm8R$4MPhRO+pTR zU=<)K?(g(Y;c?n5>e)$($LNq$f|?&sfIl6rD19l_!xhyxR}&EJ$yvGB6epOj?Ajs; zXF%-$Yl7Vm58*cIiYtR1Q6mlKGCvI19{gU(;>?8RhqIgv%R+!Uti(vHtbX~6zHeK3 z&cV>Idc66%LF}8eqM{?ko`EM+DoTkH=OMh0ygwV5DZ{J-76@wNtnMrZr>L3Q79E`i z5maC9Ca5sndn;195y~{wW-fAx&&=ABA2tq2^Bn|uuXn5(74k_iy?}YGFMrDDq@=Movie5kMimSO zg#~N-hxqp*l&W|zbQx3gGCw_eO2&y|VTx=!UFM<8DlSrRZ==RkX-|meQG({>Z68D3 z>EYj6r3hyA&?Av7TJ3qT=}Oy68A^1YH`?*DwQ^RQD!h4k8lE-Sbhn795_}Q;cF1UP zHluQ3CRpK=<=xggwE;6IR@9UBb^JpsX07&7^f72C@`=Ph-prD2$;DmjnE11PE5<;q z5tTyqxurSd&#=}e@`~!(1~I+d?%w2*uApNrFe|F{M2f>BQy3m=@0ug)c~JrR^)2kH zu^VQ2l5^#m#Gj!znPVFLY3~(NwjDmXQ|ebg*T1;|9*y>UcIpSfD-x`sCPvf3JX2CZ zWSc2%KCRLEy_67D>t|Q1HP-`-pO>oxxH>8*_L*M>8?pKp{k4U2h8E}aTU5$RGS7Ovs2@!>s$ zTKeAf0Px}vb){3ELHK8%b~9Qyr8T>#6^ND*-$L)D#Dfxi^C?t(%b=?)EYdN?ScFRp zWsb%dGWkivLlD@ZYR{WCMNv{ZjFMv@;jc{Je{DA*;)Z&S(mZ7im=3Mlc<$0fZaFOsm&LnL z+{h~1!1RalB$DZ&LF4m@0J#^GAL~yRiW*z+wO8=}w6tO%X!0X5K|sPz|IO0++9!6i zGqZR7*969|T=$#L@7 zAC%9OZIfPK*=lKtRdBr{?|m(Do=tfHfbh?Q$H`*y6OKHvfF!Oyqts3Uvz+Of!# z&QrUsYfPQlzs0(xA@qb9ifSMF(F=aOEpS;%kCREGn9Gat^QpxZViavev-o)6XY@s z2fYJRY*+Vhbk2PeI|7c#nlys8a{!yij_+6sRbb#59s$Tu{s8!<8J$Ej-$LUU5Aic% zKF``dIYFs+#G4&XS~5J{wpe&tR4Jm)0yHa72(s<~Ddrv6V#ef$)IA5D!~+vp{c681 z8@8`Sb$%J-!hZ^<^oLnO0tTuS6Td1LyxHGv{$|pYOFzFk7-&}^VM+e(&XaRbz{s`j zNGic1=F8UkO%Q?bd%AY)cqqciV{8Y4%Q;ZDLiCgqR-YnOx zp#^`n{18WWY{6|{3h^W;=2R87yvh8dtQ;+L9euj+LcT-G!MZrI5Zj3IERqIfdf?)n z?R_I$6}TYk*K^Qgs*RUbe*v!m*EI>P`%9G*6jiPdego)^w=5Sx%V&bOZqM7bLtToH zUpzrE(7HKIk>Jz1TYv`$81t6lyir*{VFU}*xZUUz*?2EGch4fP9LZw#Q^x&{jlw016%((nslSH$RmQG&{3%TfcLiXq_c3xTfeeZas^D zeTS19^of-j_ye<02qz|WVzcA0fU(YKBv7{RkDdJ-*^a{JGexkByUA(mFi-4jxTYt= z1KAqcDKeAnaLcp<8=LC7-VRo-3g%@fmInTa1&lJnCRCNlhm$X*L3y5Z&aj{cHQ{|A zdNp5J5sR-ISeU(sMhN%oJ7?3xZMFtA-;g*Q?ufTQ`aS}^%=}$wC_I6wi`Z}FKG<>5 zRfpmMA`Mp}AboA616#}_GAmz+hXD*FX107q{tWUV@@nTc31zR2$&jxgA_!#-$zb3q zq`T-Eyf*$D22=6LOt#dNJcaJ6_nr9XQrY{A-{$+-?1#>^dtP_sFu~sJ%uGb25X7pW zBBuU2Us*K@2UZoyF6@uO&lleAHith~pVxfT;02(de(iIe{uZD6NF8m29^3v&xU_6w zsC@Y;i`c1Znix0SO74gn5qHQz*;?cwXpF#UneYc1CaHB4Q*73(r9DsQ z*3Ja=G^^#JnM)^RQyRZ5dxL&7!pWnx!Qu~e9@V~L{+c{mBcYR7Y~{eekd3Lw>qa7RA?1+I z^G`;hqRYe>eGAuO`{nU1TEI=%}ld(vAtRmkrM z0|;<=%x4o;^AaoqxY<%BP1if2U+A{H!;M3Y!cFd$KDsar}sLLAn?YCryB2bg`1s^X#<&(kNuHyr03j7 zbRz*9$E<2 z`NX0Zc)c^Bn#eE>`G(C1v*q#-*>4P7@AVw8>A!7uK*XNNg4vRoq37=ebUZ|%T@QWN zB-h-x!hb8)XCBE?dH+rIi6^sHYzt5CwKo_f!99rwao+4O;y_a@Y@eD46AVBHA#@2s zDVMAdFtCF4X>+oGQ71p=KY9U(kGKjA=fH>QQUapr2-x}&o>lA3AUCCy4=$uPOAaSH zMJ{k~t$s*q=5Sz>p~nrWnT#pY%rW3jK0mKHS~VU|np4D_p0*URE$V_`}_a+bKRorkbb3 z;6Kl7SXt=^5v;F2o~o`rD_Bye3Q~v(OLjTM;vtDB=}1Jb z58=Xfuhj?6Bx=aPTakhI>ibhBjx==&iEs}_w%w8?Yz7e`7Y@M^lW15uIJTPo3QQi3 zM(_q>PKQ6X1twIrkr49@o=S!x)+9s88;8Pi!^C->Y-*mcux{ilSTY4^YH9P-{V^`o zK5{Obmg^*_8S`Vr7^C>^N2Ay)20cCFR$nI;)iNd$-2Q82L^vh<0-k} z?nN+ceAIHu_Wej+GHN@E-_aYT6~s0<5i;8MOFT~^;be*wS!Q3q!kqARmQ<@e-)#A0MZr>cUR zjzX4|;ggPNY=UP{pL_WJqm`+B&S|E9XB?h|l&x|-@==l@Sx6IQp^rQb(K;f#P-KHC zl}oc-&WP$%dI*)+0KZ@R)bIB9$Mk$CtOj)B_wnr9^&I^Zb}I4wE-yJ?En}M5P$kQh zl&U@g&!2?s8WN&pPM_&2PeLS=ica!*pX)J)Ke-!ICSQFvqH?P%y;$paQF8$&xsWfQ z+u(UOrcXCB67`0bxK`YC-$=wy0wGM-)wJczT@x*R#fht+O~qHM6NXb$yCQ+*^;H~6 z&5gpfSlStrrp$3m5Z#n?0M)-S^Gc;Cqh8mb3!=iGhce0;;^sev)Z8+TmA%#DO@gqZ zrmN9&=v4zpbzNM}xGnO?N9t2bnY^rvW}Fmj>RTLpCZ4Cn!F8&h0A)`~xd#hc2V+hw z=(m;Pk#gL|r}u$a#4%7L5ad5c$jhcjd-65q3e03CY=G0dr14FRT%*ZVW7b9nF&7%N zdmJt{2Egiwd5ilC37jS*XSNm`4xsTZvoJPxE94NK5z7=@Vk*0IXpWhvbemH9?!vj- z57ZQ>;d-e^szLrW@zw#+73Zv75{TI(8Hl47T)3+-Rl90WNRY(Xq9#M?(S-C=)f6gk z%+N$;TC$?R30r;8(`z2GFv!Z%bA8Fw_PWAqKdF3S_KKS$U1i({1C7nh*>?FA`3>~} z?xnF`d9@%SVx(m>rIZ{)4l7-CfMjJy6`n2C8lWw z531B2xf#Paot*JSTqKfUCuHPgt#7Az@5i0VG?YQZDwU*3JRpfQ{`ohEQ$>XxP_#yo zx~c*t0l1X}MBLtn1yZ2TmQIKr{&z>#3HYjuu=#$!jOL*RJL4DLJVV4oa(67Yz5ROM zE`C34Z^+V2xkzcv2ck43Fuh(0z7hHUedp|5`+S<|Y}+P(EbwC^Ho?L*WppQWbJ!$x z-f`gkq!%}%2|wmCz!!Id)me-XqE6WoIn@IxNk4Sf2;=rPz%SRqJy0y;Ae}Cnl-Mwq z_dx9j7GgxJV01ccom~m!{5U*x)1P-0D7l+v1%X~Cd>oqH$;#hNh%VCW2xYWy?cq}W zz>9mvQKD@u7^h|rJ)H9tiVn{TBL1!x!HFN6b$@_>U&54IV8d5d$`XZzgjr1r#|Iwj zf<^w2EQdvhuA)+<`yIOnP`{(b^+V-Q`GqZ-6E1AuHBJL-a#>JjlTHmoTuG*6mY$G~ zx`495l?TT6*8Fz_3xu1x^oL}%t3<~!pK5KyqugK?u)fg~U9aX2zo?`#{0k3ID-qAs zbCs{6?kJ9|;DL*Vf{SPiMop@fYy&hI7Tm>Ai#F_s&Itt!D@hQ)f<#IBtH2QakgJqQ zQXdS9PGQIYGo}&u*Y=!hCOO?Uh@UyA->RAkW}BK1zvN)v~6tjrSz+)SUP$c5T--jk@x>y}ie5+=HZ)0Dtw~y1?tz)OpZ@3&xttf^dEC>yT zcIWJH#~8jn>Gnq0vaUNm9%7!xFjR}bQs13^rz(u63ctiGymL*@zMbb>y*WHx_ssS_ z6?>o06pIX4uIxjl$Qg0hTiL_Ky?n(CoSP$S)}op6%*87%lQ?Om0HOfJ(dF(ai@BfW z9QbB=oTc_n&xqZ=$+* zCyY*wl*b2-g-l}waI-iXXtqBxg$nZB6j!)8FyyK0zx-^>)eINDE?CH>eC{zWo(&x` zR@EY1525h%rYCv0rSHjE9@xg88^6<6IkUHfy4bYeppR28l7BDsWJqUrecjcP|OkloBgxZ`fjMralw(n zEj4Xt@TTZ8yJGKK(RpThQw4r57*%NuTK6{p_f)SZB76gBGt1I(ku^eh1xy+1g5v4k zB(I=NxRcSd;J*$$?%bkPg__`!a|uQMeJ7df$gk?%1QHf%lP=ohU9{rcmwyC&I-V|8 z0rs3rMxwHgJI})KTxxO|iCp65^DTs10vNyr6;bD~BQd8`C;{j{ zuzSy(k17?yuPj?CPh8nkJC>Z@&4)7;OJ0(5K zogm$-h{x*9#H8$~@OFlfVy?^$!SA9NWJyyiH`p|{gRT-D##|7WkvCKAn=iPGhJwk$ z<@_h;>Qe5Ici`bg0+*-@Wa62j;l6S6f1{BbtxM#ZncPjq235sD_55x-)UQrwD_$sK zuV%+}j*QJ)Yr+a7sn`D@GJJX$Mn}~Y)L-hl6qrC~J9Oal6@)#Wx;2oaT+!K?EX!ez zOJ8RFy)lYfT8%sPMd@c$0v9)d3JRjG3WgrFDw63fXlIl!^!#LJw&Dl~hRKij8=RGp z!u;~g+8C!zgy$Eeek@k-EM%Fcs+8#%X)SH!RHBd<@`7g^O;u7rZh_yRG2^ulZ_dci z4XT#%5M0Gjh9vT+{=)BcmHma|R!XzYm5MyJn>2+En}c3F81MF2bd_5JRB*;hPVi-l zG95dTMoMy1g@vi#>A&Kl_N$mm$RDwmz1&G2iG9b5^2=BDjI7#c=|z>GBj!P=gi^?3RUiR^&x%2O)`1B%Lq-H-Buw!AicKVk4Ir7C6q2>zY_S~`7nZ(BIDQx8yYRcwzy8SCl5C?AgH;M~_D~%+P$v$J z|24w5OK*&4OQ~EOGm`<+e4CPf4e$_p^vu(wb49j9ZOncWJ`NrhZfIWUykCvZF^Gkx zC2cwKMNkg#{vhhkQJ~yUg)dRB5;-V{dx*ig8CT)EG|E)v8%g3ILUEMR>wKrl?qlVO zJ?`B)6?m)veD?1k+PLz2hbQN_sp&qx?s>jI812OlR|{N)F6!RI(=Y%>sBF?L6^7n_ zRnEH6OX!mhSEF{=Hya4YEI2RV*r5-Av(-glIJd{{sQKMuR~zm)1jmvbdKt!t`2k1v#FIBKjtY$<#Ka2<4NC{v|3a+ zWC1;R27HWH0Cu-S2w_1C#YY4X^|z1M46TrjK0R(ULo%evM_(&-sO1BKwn^H|pExR` zZv%g7_{O*rs(gPSEx$c$u%~G!E-zpxCX^y1e*?sGMJu*s=+zW+q+^GTUBD1Ddx#Ft zVu!qWVDx&VuGi0RTl5qz#pM)@I%H4U(=WotzR^>JsmTNm4_ANj1Z^nLV)_D7pZFXn`mA6-540goCVTob6 zW-d1(7ZRS3G{P7sk#D49x5q*7n`n1pjlk?-QbRlB)^OqkFQyOQh0dc(b91 z`dVtS|1`$QDTZMPSB)$~7FS)2RkP;{rWTld5n7^>MDv1x1Y?R4#wPh2wb{|yDPb46 zvdoUCAxmbYfui3o@gO}78Fi^7X1!iogOnfJtyb9To2ySj-0e{%hCM{34l^IhSrx+k z)2Up>5ym1s$aFzj`0frd4yT^t5BY6c8b5?2-eos&en1!4U<|Gx-`{{dRr8CjSyGdS8? zeC4ct`bR3tOCrGH{*!ToAT1@P3<3g?4*~)n0{xXX1+u~j8v0d$x+qJEfYeUoe{Ds5 zj!TOPs{-^dav%(K+SbA@9kbAt&CTuSF@}M08P``oGj8K}wyxYqRxXL|J8Jgb&(oT9 zmfh{fCli!mr3ZFaJ}qdKObP03iSE7K(+G*+1o-C?YnJoKz2^m%*MkHu+-3UTdwo`3 z^sYVduA8tCuDw1M$rk_`R7eV2JPo+P93jAvWEV7LPUcbST?xDpWanIc2;_1cj2}pq zykyrbP8SF?nT~S>J4B9^MDNzd>}3{OWOBc709v(HFh{Mp4G-4vGJ$9J%$Cv!LyHbO zk0nc1Z<*#mO-*hZG9d(zgJbd0scITF)l|!DrHMZsi~-A@)VN7#mD<6p2Ua(wHJ^Rw zn){2`G1?hQ7Wo!=o+j*o{>eOk{+(Q~v-FX2a28lQRV)!n(tWnGnggg={Pqvwm_>4;hJmJ z2WwHlARAwdcJcJFtVzWqE3*&7WT)Dc2Na3hOU9z-L>24f9xa>xOOJFFC#k8bIqMG3 zHO+FUhRZ#b%RZxCtZybIKO>M5gIMqzkAi{XHfUE?R9wbuZ1t`u3}pLLvLVpv+s&_{ zc_EAr)Ryr41_?Lq_P)7dyahhkSl`6ibo4si*vup#u=|z!I<9fnmTZUey>m-tS04Bb zSHF=5y%5uZDfgjI4~*X`1dWi^18@r8iVB~Q%jN1Fc31-RT?GPT&ZhFwo^Cjvlg`xw z$~}!Nz$9NfmjANQG+iSYKZEpa0G8vF;%PahyBXwEeDCIw0)rpH_1R088$1O;UWpiD z3EF2zqJO`KSquPSudP|n0w1m?z6a~~YHxesbWtGBU2{FKLl*f>;n~P^KkL8X74oI3nCX9(MC_(gye5;bxIO3m zHe+J@Hw{D3`NW6qcE%*x-EQmMlIes^I7d=JYN414=(CXN1G@BEBd^hH8x)t0{Y++o z5bWiY*{h5F3GaLKJJ{)CR4>zCjNt>avCg2!#>I)rb!a&%E7hu3IX<6l&>xv8(xPk? zaKVV`UZZk`CL<=;Wk*<|;WwOLc2$d&l^$ z>s8L9#;Ui0xt_ay)&P>*;t~(-_qNSfkZ*_ztZbIunPqDSqC)e}xH<*;`&Ir}g!s-L zCJSyhUMNK$o6nqD07tgwj$sAS88yY;Eo^b~_s(TbFlL?PIzkaNrq`3FSGGm(ps8Mg z#dPi7hp3;{ae74uLg78URw<6tG>$xg1iPf`5FRwgCgr|q|enmxVK*~d* z@Q&f8#6DE#Mjrcv)!e=rWJ^!g>@h;%0ABkTn(>3M(L%yhz_}Z0|8eAoC+jCYWm`4vztf>Fw% zMnBH_P6mE=W}fwCocN9>sdS46t79)EUAjx4?Ep zq+@cOResYC^KpH+DZ*V!rqAXS#qoUS(3f za_y(AqP%wXQ&a`&VckGa?fLDxq|SHYA}o51z$K=tw6wO`XCk#tc<06^1h-jV4$Bx= z_VZ!5r)OjE0zFmEpI^r8-19{Af_Jo3ke?CBTk0wXSKlG~5!xTyi%38^yLT|CI*(iW z$?DX*n5vKp*s&4rHt@i^mcz@t^s&n%KG<&+avPc;)tpZ z!@0gk4+(CGH%MgP*@8292t@liZsU8Nx$vpLcHg}5o*q)Ws}w06_*7F}ckB{fd-?SKbF006BVpUn4G2H3IdO~5eV3;H zK5O4U#CJW@ORzr;*qrQ9d!3$2ISaP0z27B`>31gqAF($q+=@TV@(W%~MTasU7ZI!* z+0WPy-(oX_c6MeG%UXZ*uzNz-`V>6Dko)|-!CZD!=w%>wTnN4!wtDFE6r|9PVedQi zs*11DklcWDDHF*-FB*uRUuOc%-GDmnI$YH7ysc4Ct1Ivp;c!jznh70a zB~#5i%3$}3cz@h`I567qcxByMdO>EYKtpQF_d8&UWc2xNHLmVIP-s<2Nnj0<$IFAD zYU#+6S9C}3vZG%Ro0)Pp6712w(*u6;$N{O4IeQ#;1oP*L96=zd|7gf+F7NE8`2r2} zd-CrQNShaZ|1K};f;X&d&djpi^_woht?dOLLT0qm{<4>2!b83B7~dH7X1YqL{KUir zS>Qn3jqVOKu{vrS84X#HUG#;yKfP2%ZH0A`cDsqidA0c%&gq{Nbk5EcbZ@Ure*T<~ z$`tYdCWzUV^p`>oDAC49C1VMyjq`#AWZC6M*&%F2n} zJl4A~HNx~pM>y4dc+dH3dIm}GS7iA)d;U}M>HZNtcGhB{im+$~u$#|nsy7fKA-2Ub z`~PtD7Eo;kTib9IT3Voj6bY14pisQHmQvh`YY0*#xCXaU+=@FCcPI`CQrrpd5L^Pm zAz0wcz4yQJziZ9PIxENK%$C{vdG?&cNr2JBq=`TaMcGC&H>5awGBfqy6ZitAUJd}k z#c68T9g<2)@01?qvo2xFlV$@H_xLp!eSJUO#@U|$dePx1`7;SFU(oC|Tho_#`8*&0 z@FX?y@RRR$@Ph|$@BO>I5PlRG{)Qo)WNvD^jbj<3sYuCnGxZYJgpMxrE)#Zw-Y54u zmVs4s@?eBef5YykZxROP0fKGns=AsQb(h%`Nw`6fjmT2(Gf~@wGOu{;*-}xMaV|;K zw|y6x<=?GCxJ%58vbc{Xb2fhK=C+eoc!nVQs5~v#U=ZEWW74j_Wq}LyWJd2Z@HXer ztjgnC+I9|WbCSMag1cAU${}nHchbXA=Q;bPhAu2OY_M6HEgMMX z$JSc{k6HVgX@htL@MB<_N zW?S1M0x-_K#~cm_gG;Chfsz0d73JVDw@-t$=~#CPVz*+~e#Tm|h2pI1^hVs9a?r(} z+CMV>h8sy1{daV^Ul}w4JUzXg51{G(Lp#{9syUZJDj{HEthe5a=TC^Q0Gez0Dr0VjEuTkXZvN zN;j&19OvApn`?iVCt$3Vm0xvx+D?V}?_c$ewIq8RH>DMxHdy8z(O#Z6P=u7czg5A%71F}}!y}p74 zUgkVTYImS*mIO?=pT5_!Q8UF{J4`XvT5bnECXB@Klq{J|^)yHlQlz*1W*92#<&%99 zf@(1tBYh$qabxvH7%Z77*xnO$s_^%<_`&GO8?)_}-0>(^V#xx_Xi<^oR(eZW^AUK8 z=Px`=?9vw3L6r0J_-keS7dg-ot(`>~BV12kIU7@J%W>q5qG;kAB5fj z!(2MGBB&^b#y%mQEf1s|F#-jfI>>T%DJd$-DndZPSdn>_1^yn9bs(pUQzkhT;q<$)5iRkXS^4l3JX! zo3bRMe;QlfmK%}&Y+a05l~;P&U<}8jZvuaeJE^A43I9CN2|ubv3>tV%r^*Wr$0(6T z)l^!S3q8?fvqAe)8x*_=n85D~$?3@=oPx_A$t&Au22H~8vcmK;VpV1?wrKYqH86c+ z3+%fu;r!qZc{Jl}{%%{A^C~-f`5Pmfo3&jJei<&V424w!Uh8j5I1w?%{~s4LK0H!- z8c9+0?_GAF-C~N2=RxVGgE5(&^&DmPv`TIX*ym5nHd6bgT!3Ngajd$x-nPP@xmB&^ z`qhz;Am2tBSCuzce1daEcW=1CQ9nDDwFZhKLqX--(LE7ywAJ#30m!Z_-n8r%4P9~k zg7<6?ATTq~-N(3Rf?1E7POfQN;N5=f+|d~#&dkYgAIz2vUCBsW4~SRe~qJ_x{_0 zA4wN47vPc6Ticm@Epa*gO8z)Tsre z&^}T8W5iTNXXWzz{HD*x0kXL+z7M3E4K#r4wZK-B^|3%AWv7k9Wct*E_8&4xoJAT2 zg3X?`>9yaMEjU5boRm2HqeR5^386%xX?#i0Hf{pwrlnml6{Qr2$<>i7*I_X4ERsSb ztnb0ixlMCn)*F3_a7x~pK16m1lT~>?c4{4yA#H7PW=vU!h zX=>`JR9m`Ouh=+0a}p0l;ygANS*C~2Zc8evs_8s;YPC9CG?-=s9Lh_KDk>j=m9R7E zxrZWN-)$YaJ4L!vrLFcF(>?jMC&#}TnXD3ISKh(HH@vaewDYE*6*tC<|;G8F$nsJpmcUE%18Ib!s4f zt3IE_MoHV>U3&fffrs3D=F!Ub>B=1McE}|M?AS#KAOyLN@6yj&D4>#KM8qO;0l*Up z$y!CqxCi|9u9-@N;KRich0OfILv5zLlvb=*br=Xxk&r$NpSm1q6NT3r)EA-KR@bcJHfUYFzV^Cwc;cDm6wAq=i$;mV8 zqFo^WtwIZhO|ySROPhGi>mGUkcs^5awbnUv{f+=0%$2hwn_JkW&9Ck@(zV0OCM_!8 z8@?IFyg{dkwQ~0;#d!JTLHl;@gYlwQRED4LJ^D|3_48h4_Pb&A=>DY-cH!G2jiohC zy3Uhz6S-q^DJP12ed^l6cjvh1rgNGu#*CYtlxG!6S#C@aItBvT&Y>&B*8=y)Nmvz- zk+Kh!-OZ}6r!s9A^_P`=`Sdl`hvcUyDbMntL#!Pa7<8RFZeA1=I*G2gb?5Om<&2V3 zT0J8cAm1vcoZ?fK=$BX!4OluZvS&x&zgF$@!WxG#pJ#ljHyHt(l_>%j8&^0^hT~#| zbHm-~%-d<1lHK0Kqvh#s7{h&OIAkD(rzf~YVZB7{)A7Jp`xb)rwd!^4QY1zQ2j-S3<5)!=Mb99b6x2S=4 zGr4nA>G@6QC2lrh^r@1nwL}+@*}7xwRr8H&#TLV;^9raMJ(y-fkj}=|&vwBaKT}-R zjQ>gFVx7p_&`|8+INQ@9bf1}ck@BGiR;Llp3m9Mz3~sa5JT-7iHu~PT0SEW7F*$Z5 zvD#dB4_6c`px5d%fE=LOO_kJc8;!))$8g!OaO7roLs%$Jc_@|wB63k4&9BI|zvxoH zv*Hw$&+G9wY7q`YF^ z=kL#NKO&~8<~gilsH%1`Mv)PrM((1#qN?V4<$0d~Dz2*5G)0Er@GB#@)h&UXIC13( zt8m4PrxY=d++*DTP9(mcvtJsx2gw#)4ibTd2^ej1{vLHW*Kf6QHXb&^cW!n?qZFF= z>#A-{h};k6&Ma-cf7?ZRWX{K+^W&N@$+G8GL!+fvENW^-7cT=7$m2CA&Scu(~Ext>(m|#G&mkuJ=7| zYWer0E=HzPl?gs4v!bL#9qfOXHo>ZD+j+V6+xvN6EbXKR?Cj9^2`~tLr0;I~hj%R8 zOl3T>G#GW>aMPlOW*+SIYAo&8J!+oWZO^&=Y-1*NST%@M%_Wv}dpGx(j~Vxk{Eu-& zOPXR1(S;;a4+tZY&irOG_t8U2d$IqR{M&brzCgD=vPIYI2ZnTyez2oNkBxi51x!YW z@2D>S0*o`g4?8t80cc;3{%$|(d2H=d1Zr%2_1IBY&(V)=*?b3IRtnZz80XsIPI+Z% z_lJ%@RI^E%0qAP|y2OlbUM_%zQW-)` zQTEN$^5Ihr?11BLhJ{zHGpRi-v5vq0;`i%@Tu{r zWOep>`LlJjnHB}(&eQ+nhWfJPxY!l;aNhdk22WCAdqLusFuYcSfyiMDl0;zVhxO}$ z+nDY)teeN$lNcv%dQCtmgfzajwGgp8M@a)RoA{1T!11`Hx6o+Fj*uXho3AtX;$6?0N+wp@&2`xwSC?gRizvu3$0;yd*%xwLdt8bJ2Z3~Q!4}Xo(VD%us@Q?p9%3Mpk3VbO1JAsCjCoQq^ zrol&h*QsUmw9SrA0_zSMhRC)aVLGUT9oYZJNrc+hWdE{GF|5fj5J0#>0cXxy@UR4O zb*GJGiq5Kdz8P{#AuoG3Wo+0)vi#dB2^;$68P(hS`D?5$dsE6U8hBG;p$orkJ3sN1 zJfjKgiHFm)y}Rwk#rdBOp)^8~I1yT@4^gCY<&;i{t?tV8hBi&a@YgSl}?~aGZ*e6D@@VT$n zQvYecy~+2GBEB8VrMCJbQ*c0H)0ZfjrEsMh+fKnHps=PgFqu1vXWJJ6QhiEq7+@w{ z@HbE8gUZ~OdBDZdl}M~66Pdl5^if$%D^X?fkv7JG1+v8`^YdBe@phZ*k&<+Tgr>O4x??M2>oT}FGZ69GG%Wj0t_0J zug6;v7hQ6tPgd;5YMh!6?w#2?w?w&R?;oi@LV8o!W^$1 z;0rz-4=189-c8gcLMcVef5fr^U*?UFdp@G|jH&-gL*L17!iC+P=rYTD*^L#`^V?1> zlFrOR)q&1g)9uasZoKy&z7|doI(^P9BzZd>@Zd{2fpme((d0#hJddvmB9E+I>hUst znfycLlh1{d0r%~!l};=CbxO5XGgekkk~p1p^!4>^Y|23^6}Ja!va<+1tx`$9oXNr! z>qvnK=T29c8QY98>|ChS`P$^}=41lsGHpFGx4QZXmT9MF;?~GQYrGgREx!Cq0DZ-? zdlm)11)7JrM+LWy4?9fRdf_XF$DAN{ke~}TyFbA-b%hJRg=Z~KOdkZ{1}Pq_49OR; zy>bC zRv*>=?6T$Wa9E2=04|nr`M_B{x=ow6f*;nhkmUI~acT8I5CUW)-@nF4_mPQ|kIVUe zjb;w?aG&wH2p_%_FW%qB;sNv{hiygRA^oU~K4T<6@kuW_Ebj$_-pT#s;aq&k=jB6h zf&hK>ljPBFQeQq=G)!E3a_qo`@LxX&3d%q;M2tQ(JACs-_=P0(oO`C=8N75>Dkd@c zEdPy`#f7!@U8C(D`>Fgn*Xtrbyt-Z)ff?zek3k2*@oxI}_* zn)4Be`$AEr-V{YVJ;oits_J@rj>5>25mGS2tDwv^_2v%J(zJ`rGOYj%#I zcp&9Pf##AI6>&lOUym02X_@(Rw0la6Prt+Eo?gGMn_`*`UefP6!+GoSa1+sUT6X0A zHiF7hp^ly~D}#E+KE4PuPl= z0rY15gOe-jiTO*zrIjNR;4EQyK)!O{V;{kheJ^#V)ev1X$% zu{T=Of43CH&3HSlMa>A%Kg;7;F?zJH{qnR*GPcA8Ve$)tu|Duw&wVr_ z86i(-;Z=|gPen75Q*{$@F>?RlC{h!SJrhC5n-@F#=x43lRA$v5+BDGDt^®b2;x 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 Pk`fvc64Mqi&5`~Odxb=I literal 0 HcmV?d00001 diff --git a/xinnengyuan/ruoyi-admin/src/main/resources/template/设计项目负责人任命通知单.docx b/xinnengyuan/ruoyi-admin/src/main/resources/template/设计项目负责人任命通知单.docx new file mode 100644 index 0000000000000000000000000000000000000000..25e16e4f0f3b544cfd57c83d7a4a8c0e0a8b502c GIT binary patch literal 13891 zcma)j1y~(P(=P7r?(Xgq+%isdLCVB%)z^!Q0OYf{;HNu>p>-DV?PES>Y=Oxs>qR^-t$n3&liHE` z)I{5PAVbv^`M|TjzE7a7J&_n24tso!L)IPb1OGt&se_t>NCRb&laX4uArH%S65wn16&;)5W+{1}>=$#*bO!mPgs%2I)$dcdD+;Hx2d$h#8&D>dl^91X=T5#9D+f z@bV>eCo0!L1~D2}#j%bHe94N_P(jAD7!dYtB3kA})B7^oE7j5G{FRIO`-#G#o4yrW z0|v&y@l{|z^j*+2-8B2qi)+fuvr|oqD#HOgma%rk;co478%DFiq3Cz-s>ma=d8~{& zG|1}1!}Mw%>>H@1FKAQ!ZY2gmGJ~{0%EI{xx0Ei>f17ApuZYa=%|wlFCPMwEiA?Mq z&3@U)C%!|mmjxrljbfejGJ8cv7L*^%h1>4TS z@v#s-Imb^%iSc@PC#s@V#^1}*AK+SyF!@^3F|X7$tlA0=1=-Axmju_u19^0*&y?=$ znm<<~b2Cr6vHo1MlTvI{o5;IDh4Ov(Y#$r%4?sP+%ld3yh3V3IX+GW6-IIm4q%=%~ z=m+r;RAyJKS5(7bDy>A*)kV+e)p8j6-`1iKd*w@hv)1XGwb1`%Ef*(eJKJCOYK#}L z%V5D6JWIGGj6H)`eTPLRjY$$c6H~~+q3)Cx%NkC*1jGO1py5nk%9ih@X0(VX=ckhJ z>-yCdvoBYpLt&O_AT$Uf2@4H%zM(g^|JUOg0#LECOl%KE9>jM_lr5>=FIyYV`Cqb( z)$s7T%|LEt8%;*zO_efqk(|d|R3oZ}lbF6{QI5o;;=wyw(r97<>@DMh)bd$Z-3Z)w zqdy-S#D$Ph^S2H^Y8)v(bGzFmMjK0j`1XIo7-Vu*5V#^k7r{u+KJj7Sgb^j!I+)3r z@C7drU#7nZAXi$chQ}2t7*(%O^lsnxO#|0Ie8=0y~d?*WRqJfBs;x)h)c3UdA8*_a)zr8<@5OCq5JRd6Y|ZBZg!5Q zzq!uS)HssiH^hQ92nh0jNSvHKY|Nbgu(IB$<8}+?TCw%dfG_i7J;`QYcRy*C7q{)Y zw$V2Y;x4m)3=3w6kqPV%HM>JLjWgrYF4_aXgnr1NP=AQj6_8d*hJ{aQr_aFfK(Z$e z1%dHD^Ye}(KMSz%pot$gZ17__ci)O6kw2vhTFtoXXa;9y)*pDB zhcH8t=|q@q7mcj7RPHx}yfiHD6C+SxtaK&)5Y8aYzIi18ozoY`Neg4O#NqpBcyoJXFD{|i4>%+dm z>q~XlaQTZjzUlqui}Ho0AO5cNk?N1~Y)rgBbWxWgCxj`9G>nAqO&l}~x*=>oAx#fX zTs7)X31&Fw1}Orq;~pTbHcXipJkMxQpeYZw6KlR56QXeuCwtJze|V6(Gjp zbkP{Q-TP8G#cWFcP2Q4uC8PGyUlex`MP0~@SV{DUFD1cCY`R+HCJJ>t$oUS$_zvEV zCVU6n&QotkbiRXT=c%*DP^1KZVO5GKC@N`eMEO_-yi^i(4i=GoOT$2p>2DA+`2n!1 z;^62M(xl!I*ReGa!=y&As$xB86o6n#X?R$-iAuW(Kv5)Zs?xe)*03pv98`#@|1lbQ==E=Gq{H&yB4Uh>NgxjzsVQb`IK74okwQ zr=u`xAA>Zfj-Ssy8$z}cCi=aKGe#fQ>|%KTh%v1csA$Aa1a8!t3(P=M5By%7)v`pY zn+HfEhIYPZ&Irwx8cSxLO~$~3+t!|)XdCz>D$TX{E&wK6F#O#p+ zsO*tjK8GP2J7DQwA6OedbS#w=fNbQHA~~r+{B_Q2{W+7-l>d>c`C1DbGf4Z#UPf)|`)&8ns#hR7WUuYw3Y{J%z`{m&tH8-x79x)qNxK(#G+Wcm4Fh z!5~|LPm^s5{YVexCr3O)$l2Jjl03chUMoVl^B^ud6_>79f{JM7c_u~$FkoFNr6Nra zVoP4yh#(X;IC(_M4H2t+_B&zaH>E^c;dcX6YHzTf3^?vq9IML-8*)RUoO zFlJ6Vw3&LO-q|IxvmXt7HMM#@SVSG8A&p3!^kUJYynM8LZfp=A`}TO(b@_n&vbr}q zz8i9fDrpp7oC=p^4OC0=!BZ7L;%tC{$!>tdOTRY)3$hM0Y|%u04i_GW3|iLeKn|n7 z|A@1s<`fC1D8XvtAUh4Jw%Y|7V9;Gc)&H%I>^{US&zpO?`{y{V%DRG74VHsdJIv_l zgWY%P1M{-{AW>O2)ppj6Z`792wm@_aQ;we;#w=b5rn22splKmxc(EB_xy&EsDahg& zN5Yt7i!s5ou<4-qxWh`K5;EtcBm8G1BmBRMC&raozhgPff4})z8)wQxD=(o{GcVym zBQJqhBX8C-$q-77+#H5VlyeGpPt3}hQ%9CXusuK#>#Xe9^rC8NcuOxYq5rEWb);L! z+mCQr4C|jK1Uj|edF7n*t^-LTU!b71p@!TD1Qd-RRc`0T4Bqv8&9O#`0}1zLhW6#U-i*Rp9W{&o6vxl?WB1BT6ZL`H<3d7p{sxyM4BI0d zOFOv4XNm#xc^4Urv~yQj%U}e(TRR%qIP|pMHV;brgPMZSHV;OScOQ2(@0TviZweSm zt&a=NLa3tUQ|nId2?p;EP4i0j`&8qW`GB##`YolI&hU(=;%qF&->ahFQZLyZr*YO~%HW#Q6%3mSS0J*^7jhobZm*37$;fEx#~(Fznrd=4(Y9H) zLbqeUmTa%po!E+|bi}e_h^u!u3D4}um)l`jmnP%B7>Hj|%Ufu**oxk*vl1Jh$9N<8 z)nAc2dAKWaOG&oZ5Ya*mIgXyT4blphosHiAs!zi{{86)6fX@4jH@0=dVhVE@b`)`6 z-N_Al`69TJ`}cBfF9zzC+GnZOwV0yZOb;DZ$g_Ugr=9!z6tJjAvxjb@Fr~JxX9{Ov{|i3vBKLZaV`cN|3cS_|6|DH;otl4 zI#c|BW?c&_Bj^v^T`6X~NyPG|k>3^eOFT)m z)^P4*2=X_<-}Ilp^0&h1$(EivTcbO^Kj`^zfbEfE)<`?CNtf%{?_f|a&FOzywsS4j z#P(HxS{i-Y;gD?E3+PUPPUj!4cFU>u6`W!}G4%5B*q}q`lU2MN7r#D^*myqd)BQGx zf6er~$8~S&-~N}#1jRp-;Uuv9HES5IstfPj zww1dhzIe|F!~n-|dHuM6*54SaxAd{gxOPP{)Vld+QS=y=$GmAKZ;&0>v)W>RqCmh) zK$)sW{ivZy@L^(F?$7k_GhU@?5SdEJWN7S~Mw6c z`#sZfeDPi)icofniGY!y9JvQx=%wr_8xook(d{Ujm2y6M*X8xY|3m{@Orej;vu1SQU%w2uJuAL>=2Z{D%4i;x$Xh^ZPT3pRuo_zj zw?3^>Oj{cPY32Xy?D^LvFL%U#4;yEGcarNErqcV< zqc>pV75(j=u$4lW#P^^{NsPhSL`mw3`@}zy|GmB$pVK}C zK!JdKdRvPAT8;kkV(et*>}>VP;?MV9oYhaOT-QF|ev+Ph8OP-_aqS_sHPLQylxJX_ z;4@A);e}(+&{bXC@Xz%tS{LDP9S_g78h9YR4CV-zU2eq<7om8wifAtE1YXGRKyENm z-Q~>4`8iJ0j5z7QO<*N}f28v3e0XUVzP$p_LYj_4h5^UhN3asIRBycbZ0iWiEuAQ> z2S8g<>+<1*c3pK;9;Oyj(n_q$B3x9k4q5t>cNL*njajWIbCAiH%E=P)QSrZM?-|$A zvT;2}5nSdRobZ~&HDYd;&GIBwK;T2zxk{`>&6N4kBkF#S7A5lA?K4r2arQEOiEy-c zV>b2Oxu@Q<0_a3UaUxQb(0RGh>zo(hh)+Neiupk1W#6_H>tNK7m-A;a*p0CJiZwkk ztYdtXG0QQh@wd>JQ<&qDRby4Zrm^eVFgQ8dquUNbovZ^K)8;D5Cq&X^7}&MOI_rsg zoT8?+2dsFb<+m+OexzcT=EmTvrFtK&6(p>DQrm)QJugeElig*4VfgN+bT|DqpAlU! zAGyt3o~c`6eFObf15M8KQfUYkNm}x*>@25_khewFDmhI0C*e>Xi1!BmeADBcU3T9Z zV=SSIL}d+>FPe1NAK2A?__ybd!Vj~}e<;Pj1Akq*oX&OHAxv_nx9af9+Hsu|aCc$a zNoX?0h)s$bN%$Ec6TY&5>%R96JAW{r*4H)QaLExyZGVZevf-Gt{$Xm>4J|(LM<*bc z4Jk!wzFuj@g+?kXi1f7-p!TsI`lUK$aV zT%K+Yf+rKVeao4Mt)Ms4%TF3f-Hpk(jcx~)a%!}LBXM_Ku(Vj>z$~~b0$_s~$`t~` zR81_9_vx2y0X@~pE^WH903My{uOT2VRgT{NEILEfQO&N!Y*DQ{&(&hk8S)qMp>=FL z3UgfJ<&F}ni#119kjc=?l@bfJ8C8nM(i8A}CzbVFV&q@p+Ary23is(QCV6io5B3w> z#Comq*Y}I<^vU{)y)!!iBJuLJGhf|`#{h67$DwEA8L?2(It<=f+qsb~_k<{?gZT^v z_G<;D?7=+?2{1>px2SHKa*4P*&P0|TbQF+3I9Jo_ zb#Y?*VE>|rF?vtr^Kv=g7Tr8y>)r8+V&RTkypducB+O9Wb>7^(LDZ>nC!DOLUHkB{ zc8V2peDb%*O(?&(9G*s9{_}|! z5sC%}m~tsMZNYsJiY8lOwmHyCv5h7L%)sX%hb;#{du%ewVxwR}1H~=D7JeBv`7s|7 z*Bs5jkmM)pF#Oy0Z}34o--+@0*^SY~z8`;sli_ee5Xdw6K*MnnjCwmWWf(vx$&M{S z1;0g8i@q2vBXhj0X#WXRgonh{cnH~{VCu#@Xr7|GDI-;YQU(lZ9Ki*M!XNyJL#=&V zL{!k`d=Az;&qM<7(}5Im$q~_0m!GPSTRmS+^jM-#xuZ%9?Q<|-#X(Q_I?S$SGgPizSe0cR4!;7cUC8NOmL;Y1Eu1jCC&xa^KHn`^7 zfi;TijK0?U$A%tdAoAx-5Y!PU{nvR(#)POeZPdV7DU6PgRNUB zeH}f}aO#z3-jx-;U5;OH=>n^6wq&KfkzB02fa`R0zjh-&VkENHic~xQ;;;ri-cbKe zkbpzP529?-K5&_QOsE?uvpO4xK89;F0lOE&azAS%9O{!ZTn9w1;fj$$+z6|~@JjB& z4~QJbEkPD-X3@K0Y78coR)g*m$`CUgYqJ;^C-4%>_tp?Ia7`Y>(F5 zsb} zAQ6buw@&oARH?mE*XDD;vA9eJkezi(beN1Qb&gYX!ZZceIZS&M91&C)FCKbC3_%VO zc}0Kx*@OOrrslbMQ+O$*m)z6i9`kC7Eeut;WHF3X$c$&#bX(o~A#RW&EQb#L>eX`W zO9YT7A$MzA+EJTp?!zoyb68VhrjgTy^hQ7=^RU5(n%4Or&gqq7SoCxL$Abf4z6DL| zOZqP7P^K5-klqFLYbRCw?%;LzH;~@1vL8D(w-9NJIno$%T|}Q=3P`5pM!4P8}+wJhZI619aG8}r) zY+=yh`K-;UpL`+gcQ>sh?5l$qe4CbWb$M0XCE)jX8Tr}oWzPZ9`vXt~SE!IR?f{Ed z6j}gkP+m=UbXYpmZjhy?q1}WZmQt~1L6x+tm<-zIBS1Tua4-hRf!tja#77OZTIq}* z3Ym;my+QOUn#R@NE3+O6J4vM_&n2lxAd||d(UFyL8;M1zVrH#BJYi#<19E+AbjG0_ zA9Zld2Y?8 zXV%j3ngroQS^GL^C=*&6SUuc!XfUr)drUFhpgLJ7kNK|uMju@nnVqx?vmK-yXL5pK^(9b+e70Lb-T<_I z%baq$dm=Y}alcRjps7{cnd(;IlQUO~nAl*UN5BE~dzHA+qhS6U{?uAlDuA{B9AQI1NklyuCvoqT0jdC^e>QS7~AgVzH+Bt;qy5O@9bR~Fkt6Lsq!shym=wh|laZx&<2bFf<3PsEW7x-NLlT zI)k*ID6=_{rNZ!jq8~Y2DPjLujz5b)%eMlT z;u1Fgg+Nrl1u9a4!>B}r1x_S!akHsfz1Iwy9qpiHm0;J3Rl8*fV;BaSVl?j7i&e@c zp|D*8i(uM!$#@ET@O{3<%)*TEE1;>KqO_u_R$MQ;qbuP{d*Hq{m=*PE9OdqwDJ-A0 zSLL4dteBAE>N?Kp@Hwj@>5=MWTx!U9`mknC@=NKsO`CW2xW;MfDuj#sjnQ@|u%;Kh zG}an=bSN3%k(dM`*Fg30)f&CWQw2$_W_r0oYt`TQezC%zr>&H7oApAScliq@A^#I+ zfvS+YI6^)UCVEMYz)-r2N&TEU7fs&{M{>#lxRx2yZY7FBMdl_FV&L4;gMO9aOHoiW)msOm)#qgOBW;y4MyaIt~#n;6GKgGGfIepLO3;jY2Bzt!VB>nqP@%L zHSJ&i=mpHl_O@XUde4NM5kU3X&&ZgSXiQ1{>xRwbORpwPmV^kyX!kV2MsjlUKl>rM}1@0_1_9yg&FrBx#-^mp8VJtC7Gui!xD11;| zKv}0LG;$&A3{#AueO+WzY6H!YCKun2lHJf7NTs%rb#&UPW8nZfZ)A8+q?~>uFT&0HE5q7SwLuAR(7U_(mQZ%G8<{VFWOFB7Vk;sP6C)#bEz$}*_iZdCq+y4 zEG;RUQBJc}=meT*LHV&WifP#3uWKe=+YZNkUE>6JvCB(@y4m7rh&djs_m)xP#W&7# zXy&@TcbqFLE1f{P9uL#!mSkFQxUS&O#q@i35XXQU`?M)&gebzg)v+@i&kued4J$Wo zhyeIxS7weJ<>3X6!reh?s|05JHP7R&QJ#zUT8MbZ%3isy5Gyx-aZ}lioT@;Q$lB7B z2*uY+i}2VX9q9*AyDxrx*%NpM@>FN3ahgoRp(+%f^jT8R)DrasW9W~sXGv5wb4M&g zw4;{kKkemjZan!b?H+tcC$f!9qj(_F1>Zx9wRd&WrbP%7%rbG=4q7HsNL@bJHtLi! z&gv(*XvSVU5RXy=i`T_2w8SQ|tBwGa>YVtKqx*|ZqFpU=|OjkBS) zD_14Zq4=NyDt6K_iKPDw$!W9al3{&*dfFue@Ng#XKC5N+u-lio-V1)RzVF)>%jvbZ zPirShp0!!p1invV8`Xd_3MKEydho7GMHVDz*P?3&y$6mYIr62+KtmI&kDbit3t}z? zp=cGNqzklYXe3aY`#P4dN~9x*9YxSuKIaiINmAVt#hADzRGs9=zy{Rh|-d+2hFd^rrL~$;jFCi zDGgJ@Ua-~Ah?M#nzXGr`^Ho+cOpf&WY*5bopd@+&HeQ zW{iG;a$RSEfFTsz@bt-&wk>$s=C#B_*>2Us%0RG97&BmLvJShBggqjI82-JL+`O$x zc{n7?C6jOi1-bzaO7QYj)Iw_!6MsuT>v_3D?>lDIS=I$qM>#X^k7thzomFL=F6VJ8 zkmsfAnnxKERvmz|I+tMqyUaQ@$I?SicXP2u8|Z+{NHKJ}~)w!E4Ac_9OG(yCEQcEJTAbdtbTAJ5w$HTX$#<`RA z4f;YIINDZU@L>JH{zg;%3B}Z9bl!U+23EGFxXY8SS{Mz+2lL(MUN|`45KvT!E!8|q zL`38C$_g7xs0un@HgKjhF_K#4>&NU?JoWcn-bW@279!AMEzaxQABJdB?~H0J=F%@G zjs$;}KM+AbBgy-z^OK+8C_pG6`{0*tled&uu6Us#<@ozRHcu~A=_L+TGI0SllLIJO zs`+2t{00UE&c=VFA`K0_bjQl&@WjagN=lJ(By2?UKgG)|IuxfrBwA=Fk26dw zufoc?Hth0maEEz=0_B4ZrG~Y|tM!%GiX@hIv6eBHQw0GJb8)YqWw6F|grD02zAL0s z*le_UTHt@R(Kk_Q+zcJ2m@PLoE*nz26p6^bOZ#ReDyG&4(hSP;7ASlQteo=)k^0o$ z>T`5;8szu6#*l>$X8v=bPX##HN-;uNLY|M%a1EFy0~Ff=KG90fD53UOZ`>JKCYm}Y z4Qm==A92=^o*=xSqeciVpC~1XZm>f5PopaGpBdZ3eqevQCNKzoEqzx+YHyO} zix()KD5>@=ik&$4(V`GR=01Ka3}}BRAJ;v75mtbM|73}3!t7t0@B`*XWr1jvWwT*$Vblb3A}%bgcuT+G|8u+&8hcz6@R zS?m`cqO+XJbAp6@u(S_+>o|d}Fg16t{dYBGtIJO@bsjWEh;^RMOZ1K}p^K`Dfb%pp z(lmJ|T?y7vy$0mFm55cqHQJoYGY3h{qa+YW1Cf_x<=Nmr=;Xx}bs=v5MRQ z_@0t4T7sy&Ns%+?y4mFza0q5363Zb#p}b?!hKkc7&D`p3M>wx?<#$s7qjU(L&$XiJ zAYnQ9;$w|wyhTVhlW0DFo6L$PgC$R}M!{9*6s{0qn$(usMHP<={&6`9WRyYUFQSQIBx0}I6(v`iT6a2GMHNImY*2R8_~ECh zl4j9(w`9S4Y$k&R4A_|*8N~rZYxjAUrYR!EqZre?LS0N(?Qdohe1-NqTU~-?7!)3n zVcKWwY_}LgS*Djoz%d$pW0g$WWZ5LOHUYQ1;uPYb8R5@f2~ii1y!H$Sh%nCMI{PcL zx5U24A$v|Gg)}wwG(8p(m{n>>_?u63!`okVy)C@}+$zk|=`bP(8E*EhZ2ED=Evls2 z6NVY&5t`x`aLtBBO?X6n`ly)fv4Sw)jf1{Hk_LOXDKnUskU*4;k{f{_E_PGTE}2ST ze`<{|m=%KS=-g=kw$?3bdVddRb$HEbL#EdyiYo;l!zVwcMRBM;dae}+3)Ur9~4W6Z}kaf zjH;t*{qVcqB>?1VYiqn4jFth0LqO_W!s3n>M1(de)=}K+>?2$htqVCba92om^$dHv z0L^U)N#+jg)Ay0PlRJ#^Q@cx$48uGUif~TVm0%2|$v7kU9+IdGuFNPdg``XGI$hu+ z`K?_d*Nwz01eJtodz3^+9*i(T--ix-lWf&vY*pI2XF-Wj!XT?5h-IGK(Bw|;S*;91 zs-vQ(NoH_ad2}AkJdj(fd?>|4lp2;s!U!5TZ(4(h@4@J++upGVpRx3nnWudp8AICb zBWhTCcqK!tQ;(bMR}|_KP7SIE&k>d zNK$w?oe#w(c~MowQ%Wz}lPL`QKH1q~Ex6wGTpr2xgklSEHh*gZ1=xIn(zjgvfJM0?7+%ohR-GFD>^TP9fuJ+%cy_{e%?Nzr5Ml#br!Lq0dyz2Jv z0pok>9i`&a3S(n~T^cmW^ikg&)KGH$GW={{Zw}DVljOK zLqN-gL@t2NP^=mhSE)Nvi#!V4{wDIH!bCH68*MYb&ydQ3d3UELXDgrWT&nd>bi2TC zHC{@|2s6z^uM$b1_se$306B@Z|0Krb1$O1 zoCvS;yZ`jLyY-W-UzCogF1~Fvcy4uiE&p*ou6ZfZnTYzRS>;uv`>GES$-O6O;)<|V zBn~B=lE2E*(`^nsUU7^-<`-&_W$iU(3#c&445?C;*T>Kfn3He^)P5w+IR+hix1YKz z5cIvk3!f{13Y_KWsDuyy%RxP^^D%!WEyzYc#~A>AoR8oRv@&)lXmaWs5uBn}=qQJS z){qfVN6s)4<$85SOD8L~5=HlQ0a=VFvoy!K5I((SdmxG> z7PUry>IOkrhZRGR*kQrx1R<PvXzC;P95FT>Y(d0Su1;zm!MVvc(G8e<&2qKPxP}dH1%Lbd2 z0skDpax6;B^G`WgEx|DAN_{b$8AXI3oFurvJV8{JoGRi@9e?)!hp0FPoAFE z&N|{7rM0V!j3FK5?R8R7mi>e2cPwOXgGE=+K*?%3XQG_YuMk6CtCaaXyi=6NwCz98 zxC|EoattRuy3c=Pum1Ny`CAwq#K6(a=J%9wP%<*&m$&~m-=2wI!Sp|An0`@K#;?hO zv!aBYL2i(a`Eak&kM%HL2q?@WB% z9k(Bj=~zKCk;-QbSxt&-B?Mg_h~SuR?jkgPmLe+^1%>+sDIAM6DHClq{+L_Y$b(_> zL5~%>L4erO`&muE+4K@HCV)1;BjtRPBmNl6+v1UpJdPbt;4`*|_`le4_;2bQ!hllV ze^X=0n>q>J&VOvE|4I1In9X1MowV*{K^Qm->Ij>!(Zj)mIDD`aIiOsm)v3uM^rw!mBs7b)W1x23Vc!HmeAFZL&7~|_4nY;sM zM>{@T%{amL9K8$&u*RXKyn}+;yRP7D1*MjgkjE*U?HAC-O7qI9cxn(lRL~YW^gaZ= zNh@AyhPv$Z0hu3@iGRI|(c|Xx4nO_a^9`HK85^AYwznX4d!s<5?!$p4GG}#C@UehNTg8TQTwuz&kdRR~-?vfsnn-+L4kjW>wpj^e?^Q zNNEjd@dXl%A!#IgkIK7EF+th&PiisP^Y2M04{>=yB*K6mg-FA+TZ-H)A^fM@GXzB)U`T**1m<60Vs2L+6)vh!T0Oj)$SELE~ zKKuogOOia?2izL%yMcL%_aa;x;rdA?h}w{Xilq6bd0XxypySGmlHe9&gqq6l>UZJF z1RNwU zRd5}-KP@3B>$oX-U{Rb4eGxn3Cp-?fDNvFnL8%qceqXxo{EYp6RX2D3et5x5`( zuk*QO{*)K}Bet$%7O&-M%A&-^dX^t-UXJF#EDKQ&eQZ{Yvs(thvh_u%#4Jv|ZrCBi@Z_#OWH z%i7;?S^B@=|9W-%9shfJ)8BZlH#PiU$xgq+f3FGn8*cm`o&Q}S@F)0xqkTl|zj*&= p&-&l@>F>MNe{<#fH}LO0Y-KsfU-SE0%@+#D)Z6`}$M);${{V7!=@$S1 literal 0 HcmV?d00001 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/AsyncUtil.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/AsyncUtil.java index 3dc5eb45..0937b97c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/AsyncUtil.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/AsyncUtil.java @@ -1,12 +1,20 @@ package org.dromara.common.utils; +import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.utils.MessageUtils; import org.dromara.common.sse.dto.SseMessageDto; import org.dromara.common.sse.utils.SseMessageUtils; +import org.dromara.contractor.domain.SubConstructionUser; +import org.dromara.mobileAttendanceMachine.DeviceMessageSender; +import org.dromara.mobileAttendanceMachine.KqjEntity; +import org.dromara.project.domain.BusAttendanceMachine; +import org.dromara.project.service.IBusAttendanceMachineService; import org.dromara.sms4j.api.SmsBlend; import org.dromara.sms4j.api.entity.SmsResponse; import org.dromara.sms4j.core.factory.SmsFactory; +import org.dromara.system.domain.vo.SysOssVo; +import org.dromara.system.service.ISysOssService; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; @@ -17,6 +25,13 @@ import java.util.List; @Slf4j public class AsyncUtil { + @Resource + private DeviceMessageSender deviceMessageSender; + @Resource + private ISysOssService ossService; + @Resource + private IBusAttendanceMachineService attendanceMachineService; + //发送短信 @Async public void sendSms(List mobileList, String config) { @@ -39,4 +54,27 @@ public class AsyncUtil { } + //下发考勤人员 + @Async + public void sendPersonnel(Long teamId, SubConstructionUser constructionUser) { + SysOssVo byId = ossService.getById(Long.valueOf(constructionUser.getFacePic())); + List list = attendanceMachineService.lambdaQuery().apply("FIND_IN_SET({0}, teams)", teamId).list(); + for (BusAttendanceMachine machine : list) { + deviceMessageSender.sendPersonnelInformation(machine.getSn(), constructionUser.getSysUserId().toString(), constructionUser.getUserName(), byId.getUrl()); + } + } + + //删除考勤人员 + @Async + public void deletePersonnel(SubConstructionUser constructionUser) { + List list = attendanceMachineService.lambdaQuery().apply("FIND_IN_SET({0}, teams)", constructionUser.getTeamId()).list(); + for (BusAttendanceMachine machine : list) { + try { + deviceMessageSender.deleteUser(machine.getSn(), constructionUser.getSysUserId().toString()); + } catch (Exception e) { + log.error("删除考勤人员异常", e); + } + } + } + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/impl/SubConstructionUserServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/impl/SubConstructionUserServiceImpl.java index f7e489a2..8e76bc75 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/impl/SubConstructionUserServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/service/impl/SubConstructionUserServiceImpl.java @@ -26,6 +26,7 @@ import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.exception.OssException; import org.dromara.common.oss.factory.OssFactory; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.utils.AsyncUtil; import org.dromara.common.utils.IdCardEncryptorUtil; import org.dromara.common.utils.baiduUtil.BaiDuFace; import org.dromara.common.utils.baiduUtil.BaiDuOCR; @@ -46,6 +47,7 @@ import org.dromara.contractor.mapper.SubConstructionUserMapper; import org.dromara.contractor.service.ISubConstructionUserFileService; import org.dromara.contractor.service.ISubConstructionUserService; import org.dromara.contractor.service.ISubContractorService; +import org.dromara.mobileAttendanceMachine.DeviceMessageSender; import org.dromara.project.domain.*; import org.dromara.project.domain.enums.BusAttendanceClockStatusEnum; import org.dromara.project.domain.enums.BusAttendanceCommuterEnum; @@ -151,6 +153,11 @@ public class SubConstructionUserServiceImpl extends ServiceImpl 0; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesConstructionSchedulePlanController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesConstructionSchedulePlanController.java index 9388df81..9b2356cb 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesConstructionSchedulePlanController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesConstructionSchedulePlanController.java @@ -2,10 +2,13 @@ package org.dromara.design.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; + +import org.apache.poi.xwpf.usermodel.*; import org.dromara.common.core.domain.R; import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -13,18 +16,37 @@ import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.web.core.BaseController; import org.dromara.design.domain.DesConstructionSchedulePlan; +import org.dromara.design.domain.DesUser; import org.dromara.design.domain.dto.constructionscheduleplan.*; import org.dromara.design.domain.vo.DesConstructionSchedulePlanVo; +import org.dromara.design.exportUtil.plan.AttachmentPersonnel; import org.dromara.design.service.IDesConstructionSchedulePlanService; +import org.dromara.design.service.IDesUserService; +import org.dromara.system.domain.vo.SysDictDataVo; +import org.dromara.system.service.ISysDictDataService; +import org.dromara.system.service.ISysDictTypeService; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; -import java.util.List; +import java.io.*; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * 设计计划 * @@ -38,7 +60,10 @@ public class DesConstructionSchedulePlanController extends BaseController { @Resource private IDesConstructionSchedulePlanService desConstructionSchedulePlanService; - + @Resource + private IDesUserService desUserService; + @Resource + private ISysDictTypeService dictTypeService; /** * 查询设计计划列表 */ @@ -150,4 +175,168 @@ public class DesConstructionSchedulePlanController extends BaseController { desConstructionSchedulePlanService.exportSchedule(response,projectId); } + private static final String TEMPLATE_RESOURCE_PATH = "template/CCCET-JL-CX-25设计计划表.docx"; + // -------------------------- 2. 核心接口:修复单元格清空逻辑与数据填充 -------------------------- + @PostMapping("/downloadWord") + public void fillCccetTemplate(Long projectId, HttpServletResponse response) { + // 1. 基础参数校验(避免空数据) + + // 2. 读取resource中的模板+填充数据 + try ( + // 关键:通过ClassPathResource读取resource/template下的模板 + InputStream templateIs = new ClassPathResource(TEMPLATE_RESOURCE_PATH).getInputStream(); + XWPFDocument doc = new XWPFDocument(templateIs); // 加载模板 + OutputStream out = response.getOutputStream() // 响应流 + ) { + // -------------------------- + // 步骤1:填充第1页-主信息表(索引0,固定6列) + // -------------------------- +// XWPFTable mainTable = doc.getTables().get(0); +// // 工程名称(第1行第0列) +// if (mainTable.getRows().size() > 1 && mainTable.getRow(1).getCell(0) != null) { +// mainTable.getRow(1).getCell(0).setText(request.getProjectName() == null ? "" : request.getProjectName()); +// } +// // 工程号(第1行第1列) +// if (mainTable.getRows().size() > 1 && mainTable.getRow(1).getCell(1) != null) { +// mainTable.getRow(1).getCell(1).setText(request.getProjectNo()); +// } +// // 编制日期(第2行第3列) +// if (mainTable.getRows().size() > 2 && mainTable.getRow(2).getCell(3) != null) { +// mainTable.getRow(2).getCell(3).setText(request.getCompileDate() == null ? "" : request.getCompileDate()); +// } +// // 编制人(第3行第0列) +// if (mainTable.getRows().size() > 3 && mainTable.getRow(3).getCell(0) != null) { +// mainTable.getRow(3).getCell(0).setText(request.getCompiler() == null ? "" : request.getCompiler()); +// } +// // 批准人(第3行第2列) +// if (mainTable.getRows().size() > 3 && mainTable.getRow(3).getCell(2) != null) { +// mainTable.getRow(3).getCell(2).setText(request.getApprover() == null ? "" : request.getApprover()); +// } +// // 设计阶段(第3行第4列) +// if (mainTable.getRows().size() > 3 && mainTable.getRow(3).getCell(4) != null) { +// mainTable.getRow(3).getCell(4).setText(request.getDesignStage() == null ? "" : request.getDesignStage()); +// } +// // 设计规模(第4行第0列) +// if (mainTable.getRows().size() > 4 && mainTable.getRow(4).getCell(0) != null) { +// mainTable.getRow(4).getCell(0).setText(request.getDesignScale() == null ? "" : request.getDesignScale()); +// } + + // -------------------------- + // 步骤2:填充第3页-附件1人员配置表(索引2,固定11列) + // -------------------------- + XWPFTable staffTable = doc.getTables().get(2); + // 删除模板中附件1的空数据行(保留第0行表头) + while (staffTable.getRows().size() > 2) { + staffTable.removeRow(1); + } + + List list = getPersonnelDataByProjectId(projectId); + for (AttachmentPersonnel staff : list) { + XWPFTableRow newRow = staffTable.createRow(); + // 补全11列(避免POI默认列数不足导致null) + while (newRow.getTableCells().size() < 11) { + newRow.createCell(); + } + // 按附件1列顺序填充 + newRow.getCell(0).setText(staff.getProfessional() == null ? "" : staff.getProfessional()); + newRow.getCell(1).setText(staff.getLeaderName() == null ? "" : staff.getLeaderName()); + newRow.getCell(2).setText(staff.getLeaderTitle() == null ? "" : staff.getLeaderTitle()); + newRow.getCell(3).setText(staff.getDesignerName() == null ? "" : staff.getDesignerName()); + newRow.getCell(4).setText(staff.getDesignerTitle() == null ? "" : staff.getDesignerTitle()); + newRow.getCell(5).setText(staff.getReviewerName() == null ? "" : staff.getReviewerName()); + newRow.getCell(6).setText(staff.getReviewerTitle() == null ? "" : staff.getReviewerTitle()); + newRow.getCell(7).setText(staff.getCheckerName() == null ? "" : staff.getCheckerName()); + newRow.getCell(8).setText(staff.getCheckerTitle() == null ? "" : staff.getCheckerTitle()); + newRow.getCell(9).setText(staff.getApproverName() == null ? "" : staff.getApproverName()); + newRow.getCell(10).setText(staff.getApproverTitle() == null ? "" : staff.getApproverTitle()); + } + + // -------------------------- + // 步骤3:设置响应头(触发前端下载) + // -------------------------- + response.setContentType("application/octet-stream"); + // 文件名:填充后_工程号_CCCET-JL-CX-25设计计划表.docx + String fileName = "CCCET-JL-CX-25设计计划表.docx"; + response.setHeader("Content-Disposition", + "attachment;filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8)); + response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); // 允许前端获取文件名 + + // -------------------------- + // 步骤4:写出文件到前端 + // -------------------------- + doc.write(out); + out.flush(); + + } catch (Exception e) { + // 异常封装(前端可捕获具体错误) + throw new RuntimeException("CCCET-JL-CX-25模板填充失败:" + e.getMessage()); + } + } + + + + /** + * 根据projectId获取数据(仅针对CCCET-JL-CX-25设计计划表.docx附件1) + */ + private List getPersonnelDataByProjectId(Long projectId) { + // 模拟数据库查询(实际项目替换为真实Service调用) + List userList = desUserService.list(Wrappers.lambdaQuery() + .eq(DesUser::getProjectId, projectId) + ); + if (userList.isEmpty()) { + return Collections.emptyList(); + } + + // 专业字典映射(编码→名称) + List majorDict = dictTypeService.selectDictDataByType("des_user_major"); + Map majorMap = majorDict.stream() + .collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + + // 按角色分组(1-专业负责人,2-设计人,3-校审人,4-审定人,5-审核人) + DesUser leader = userList.stream().filter(u -> "1".equals(u.getUserType())).findFirst().orElse(null); + Map> designerMap = userList.stream() + .filter(u -> "2".equals(u.getUserType())) + .collect(Collectors.groupingBy(DesUser::getUserMajor)); + Map> reviewerMap = userList.stream() + .filter(u -> "3".equals(u.getUserType())) + .collect(Collectors.groupingBy(DesUser::getUserMajor)); + Map> checkerMap = userList.stream() + .filter(u -> "5".equals(u.getUserType())) + .collect(Collectors.groupingBy(DesUser::getUserMajor)); + Map> approverMap = userList.stream() + .filter(u -> "4".equals(u.getUserType())) + .collect(Collectors.groupingBy(DesUser::getUserMajor)); + + // 构建附件1数据(一个专业一行,避免重复) + List dataList = new ArrayList<>(); + for (Map.Entry> entry : designerMap.entrySet()) { + String majorCode = entry.getKey(); + String majorName = majorMap.getOrDefault(majorCode, majorCode); + List designers = entry.getValue(); + + // 获取对应专业的其他角色 + DesUser reviewer = reviewerMap.getOrDefault(majorCode, Collections.emptyList()).stream().findFirst().orElse(null); + DesUser checker = checkerMap.getOrDefault(majorCode, Collections.emptyList()).stream().findFirst().orElse(null); + DesUser approver = approverMap.getOrDefault(majorCode, Collections.emptyList()).stream().findFirst().orElse(null); + // 封装数据(多个设计人用顿号分隔) + AttachmentPersonnel data = new AttachmentPersonnel(); + data.setProfessional(majorName); + data.setLeaderName(leader != null ? leader.getUserName() : ""); + //data.setLeadeTitle(leader != null ? leader.getUserTitle() : ""); + data.setDesignerName(designers.stream().map(DesUser::getUserName).collect(Collectors.joining("、"))); + //data.setDesignerTitle(designers.stream().map(DesUser::getUserTitle).collect(Collectors.joining("、"))); + data.setReviewerName(reviewer != null ? reviewer.getUserName() : ""); + //data.setReviewerTitle(reviewer != null ? reviewer.getUserTitle() : ""); + data.setCheckerName(checker != null ? checker.getUserName() : ""); + //data.setCheckerTitle(checker != null ? checker.getUserTitle() : ""); + data.setApproverName(approver != null ? approver.getUserName() : ""); + //data.setApproverTitle(approver != null ? approver.getUserTitle() : ""); + + dataList.add(data); + } + + return dataList; + } + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesDesignChangeController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesDesignChangeController.java index cdb4d941..a3106579 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesDesignChangeController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesDesignChangeController.java @@ -2,6 +2,7 @@ package org.dromara.design.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepoove.poi.XWPFTemplate; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotEmpty; @@ -16,24 +17,36 @@ import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; +import org.dromara.design.domain.DesUser; import org.dromara.design.domain.DesVolumeCatalog; import org.dromara.design.domain.DesVolumeFile; import org.dromara.design.domain.dto.designchange.DesDesignChangeCreateReq; import org.dromara.design.domain.dto.designchange.DesDesignChangeQueryReq; import org.dromara.design.domain.dto.designchange.DesDesignChangeUpdateReq; +import org.dromara.design.domain.dto.designchange.DesDesignExtendDetailDto; import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogQueryReq; import org.dromara.design.domain.vo.designchange.DesDesignChangeVo; import org.dromara.design.domain.vo.volumecatalog.DesVolumeCatalogVo; import org.dromara.design.service.IDesDesignChangeService; import org.dromara.design.service.IDesVolumeCatalogService; import org.dromara.design.service.IDesVolumeFileService; +import org.dromara.project.domain.BusProject; import org.dromara.system.domain.vo.SysOssVo; +import org.dromara.system.service.ISysDictDataService; import org.dromara.system.service.ISysOssService; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -56,6 +69,9 @@ public class DesDesignChangeController extends BaseController { @Resource private IDesVolumeFileService desVolumeFileService; + @Resource + private ISysDictDataService dictDataService; + /** * 查询设计变更管理列表 */ @@ -146,4 +162,92 @@ public class DesDesignChangeController extends BaseController { return R.ok(list); } + private static final String TEMPLATE_PATH = "template/设计更改通知单.docx"; + + @PostMapping("/downloadWord") + public void generateDesignLeaderDoc(Long id, HttpServletResponse response) { + OutputStream outputStream = null; + try { + // 1. 调用Service生成目标模板的Word字节流 + byte[] docBytes = generateDocBytes(id); + + // 2. 配置响应头:确保前端正确下载(避免中文乱码、指定文件类型) + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); // 二进制流类型 + // 下载文件名:格式为“[项目名]-设计负责人任命通知单.docx”(此处用projectId拼接,真实场景可从数据中获取项目名) + String downloadFileName = URLEncoder.encode( + "设计更改通知单.docx", + "UTF-8" + ); + response.setHeader("Content-Disposition", "attachment;filename=" + downloadFileName); + response.setContentLength(docBytes.length); // 设置响应体长度(优化下载体验) + + // 3. 将Word字节流写入响应 + outputStream = response.getOutputStream(); + outputStream.write(docBytes); + outputStream.flush(); + + } catch (Exception e) { + e.printStackTrace(); + // 异常处理:返回500错误状态码 + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + } finally { + // 关闭流,避免资源泄漏 + if (outputStream != null) { + try { + outputStream.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + + public byte[] generateDocBytes(Long id) throws Exception { + // -------------------------- 步骤1:按projectId查询项目数据(模拟真实业务) -------------------------- + // 实际场景替换为数据库查询(如调用DAO获取项目名称、负责人等) + DesDesignChangeVo vo = desDesignChangeService.queryById(id); + DesDesignExtendDetailDto extendDetail = vo.getExtendDetail()==null?new DesDesignExtendDetailDto():vo.getExtendDetail(); + + Map placeholderData = new HashMap<>(); + placeholderData.put("projectName", vo.getProjectName()); + placeholderData.put("designPhase",extendDetail.getDesignPhase()); + placeholderData.put("subName",extendDetail.getSubName()); + String s = dictDataService.selectDictLabel("des_user_major", vo.getSpecialty()); + placeholderData.put("specialty",s); + placeholderData.put("volumeNo",vo.getVolumeNo()); + + String changeReason = vo.getChangeReason(); + List reasons = Arrays.asList("设计漏项", "设计改进", "设计差错", "接口差错", + "业主要求", "施工承包商要求", "外部资料与最终情况不符", "材料代用或其他"); + + String reason = reasons.stream() + .map(item -> changeReason.contains(String.valueOf(reasons.indexOf(item) + 1)) ? " ☑" + item : " □" + item) + .collect(Collectors.joining()); + + placeholderData.put("changeReason", reason); + placeholderData.put("designDisposal1", "1".equals(extendDetail.getDesignDisposal())?"☑" : "□"); + placeholderData.put("designDisposal2", "2".equals(extendDetail.getDesignDisposal())?"☑" : "□"); + placeholderData.put("designDisposal3", "3".equals(extendDetail.getDesignDisposal())?"☑" : "□"); + placeholderData.put("changeContent",vo.getChangeContent()); + placeholderData.put("changeCategory1", "1".equals(extendDetail.getChangeCategory())?"☑" : "□"); + placeholderData.put("changeCategory2", "2".equals(extendDetail.getChangeCategory())?"☑" : "□"); + placeholderData.put("involvingProfessions", extendDetail.getInvolvingProfessions()); + // -------------------------- 步骤2:用poi-tl加载目标模板并替换占位符 -------------------------- + // 读取resources下的“设计项目负责人任命通知单.docx”模板 + ClassPathResource templateResource = new ClassPathResource(TEMPLATE_PATH); + try (InputStream templateIs = templateResource.getInputStream(); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { + + // 1. 加载模板 2. 注入替换数据 3. 渲染生成新文档 + XWPFTemplate template = XWPFTemplate.compile(templateIs) + .render(placeholderData); // 自动匹配{{变量名}}占位符 + + // -------------------------- 步骤3:将生成的文档写入字节流 -------------------------- + template.write(outputStream); + template.close(); // 关闭模板资源 + return outputStream.toByteArray(); + } + } + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesUserController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesUserController.java index 6971b4ab..1e5358f4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesUserController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/DesUserController.java @@ -1,16 +1,18 @@ package org.dromara.design.controller; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; import java.rmi.ServerException; import java.time.LocalDate; import java.time.ZoneId; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; +import java.util.*; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.deepoove.poi.XWPFTemplate; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; @@ -22,8 +24,15 @@ import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; //import org.dromara.design.domain.DesUserExcelData; +import org.dromara.design.domain.DesUser; import org.dromara.design.domain.DesUserExcelData; import org.dromara.design.domain.dto.desUser.DesUserBatchDto; +import org.dromara.project.domain.BusProject; +import org.dromara.project.service.IBusProjectService; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -54,6 +63,7 @@ import org.springframework.web.multipart.MultipartFile; public class DesUserController extends BaseController { private final IDesUserService desUserService; + private final IBusProjectService projectService; /** * 查询设计人员列表 @@ -142,5 +152,75 @@ public class DesUserController extends BaseController { return toAjax(desUserService.batchAddOrUpdate(dto)); } + private static final String TEMPLATE_PATH = "template/设计项目负责人任命通知单.docx"; + @PostMapping("/downloadWord") + public void generateDesignLeaderDoc( Long projectId, + HttpServletResponse response + ) { + OutputStream outputStream = null; + try { + // 1. 调用Service生成目标模板的Word字节流 + byte[] docBytes = generateDocBytes(projectId); + + // 2. 配置响应头:确保前端正确下载(避免中文乱码、指定文件类型) + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); // 二进制流类型 + // 下载文件名:格式为“[项目名]-设计负责人任命通知单.docx”(此处用projectId拼接,真实场景可从数据中获取项目名) + String downloadFileName = URLEncoder.encode( + "设计负责人任命通知单.docx", + "UTF-8" + ); + response.setHeader("Content-Disposition", "attachment;filename=" + downloadFileName); + response.setContentLength(docBytes.length); // 设置响应体长度(优化下载体验) + + // 3. 将Word字节流写入响应 + outputStream = response.getOutputStream(); + outputStream.write(docBytes); + outputStream.flush(); + + } catch (Exception e) { + e.printStackTrace(); + // 异常处理:返回500错误状态码 + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + } finally { + // 关闭流,避免资源泄漏 + if (outputStream != null) { + try { + outputStream.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + + public byte[] generateDocBytes(Long projectId) throws Exception { + // -------------------------- 步骤1:按projectId查询项目数据(模拟真实业务) -------------------------- + // 实际场景替换为数据库查询(如调用DAO获取项目名称、负责人等) + BusProject byId = projectService.getById(projectId); + DesUser desUser = desUserService.lambdaQuery().eq(DesUser::getProjectId, projectId) + .eq(DesUser::getUserType, "1") + .last("limit 1").one(); + + + Map placeholderData = new HashMap<>(); + placeholderData.put("projectName", byId==null?"" :byId.getProjectName()); + placeholderData.put("leaderName",desUser==null?"": desUser.getUserName()); + + // -------------------------- 步骤2:用poi-tl加载目标模板并替换占位符 -------------------------- + // 读取resources下的“设计项目负责人任命通知单.docx”模板 + ClassPathResource templateResource = new ClassPathResource(TEMPLATE_PATH); + try (InputStream templateIs = templateResource.getInputStream(); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { + + // 1. 加载模板 2. 注入替换数据 3. 渲染生成新文档 + XWPFTemplate template = XWPFTemplate.compile(templateIs) + .render(placeholderData); // 自动匹配{{变量名}}占位符 + + // -------------------------- 步骤3:将生成的文档写入字节流 -------------------------- + template.write(outputStream); + template.close(); // 关闭模板资源 + return outputStream.toByteArray(); + } + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/exportUtil/plan/AttachmentPersonnel.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/exportUtil/plan/AttachmentPersonnel.java new file mode 100644 index 00000000..6e1b0aec --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/exportUtil/plan/AttachmentPersonnel.java @@ -0,0 +1,25 @@ +package org.dromara.design.exportUtil.plan; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AttachmentPersonnel { + String professional; // 专业及人员分工 + String leaderName; // 专业负责人姓名 + String leaderTitle; // 专业负责人职称 + String designerName; // 设计人姓名 + String designerTitle; // 设计人职称 + String reviewerName; // 校审人姓名 + String reviewerTitle; // 校审人职称 + String checkerName; // 审核人姓名 + String checkerTitle; // 审核人职称 + String approverName; // 审定人姓名 + String approverTitle; // 审定人职称 +} + + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusAttendanceMachineController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusAttendanceMachineController.java index 1a842e40..01fc1f6c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusAttendanceMachineController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusAttendanceMachineController.java @@ -91,4 +91,16 @@ public class BusAttendanceMachineController extends BaseController { @PathVariable Long[] ids) { return toAjax(busAttendanceMachineService.deleteWithValidByIds(List.of(ids), true)); } + + + /** + * 批量重新下发 + */ + @SaCheckPermission("project:attendanceMachine:reissue") + @RepeatSubmit() + @PostMapping("/reissue/{ids}") + public void reissue(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids){ + busAttendanceMachineService.reissue(List.of(ids)); + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusAttendanceAppController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusAttendanceAppController.java index ae06fd1a..12e89db6 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusAttendanceAppController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusAttendanceAppController.java @@ -128,8 +128,8 @@ public class BusAttendanceAppController extends BaseController { * 获取用户打卡异常记录 */ @GetMapping("/getAbnormalAttendance/{projectId}") - public TableDataInfo getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId, PageQuery pageQuery){ - return attendanceService.getAbnormalAttendance(projectId,pageQuery); + public TableDataInfo getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId,String handle, PageQuery pageQuery){ + return attendanceService.getAbnormalAttendance(projectId,handle,pageQuery); } /** diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceMachineService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceMachineService.java index 78eec5ce..7403c90a 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceMachineService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceMachineService.java @@ -1,12 +1,15 @@ package org.dromara.project.service; import com.baomidou.mybatisplus.extension.service.IService; +import jakarta.validation.constraints.NotEmpty; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.project.domain.BusAttendanceMachine; import org.dromara.project.domain.dto.attendancemachine.BusAttendanceMachineQueryReq; import org.dromara.project.domain.dto.attendancemachine.BusAttendanceMachineUpdateReq; import org.dromara.project.domain.vo.BusAttendanceMachineVo; +import org.springframework.scheduling.annotation.Async; +import org.springframework.web.bind.annotation.PathVariable; import java.util.Collection; import java.util.List; @@ -75,4 +78,7 @@ public interface IBusAttendanceMachineService extends IService ids, Boolean isValid); + + + void reissue(Collection ids); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java index 2d0ad545..0e390caa 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java @@ -131,7 +131,7 @@ public interface IBusAttendanceService extends IService{ /** * 获取用户打卡异常记录 */ - TableDataInfo getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId, PageQuery pageQuery); + TableDataInfo getAbnormalAttendance(Long projectId,String handle, PageQuery pageQuery); /** * 统计指定日期的打卡人员 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceMachineServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceMachineServiceImpl.java index 7fb23233..9a4ebc9c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceMachineServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceMachineServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.project.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -28,13 +29,13 @@ import org.dromara.project.service.IBusAttendanceMachineService; import org.dromara.project.service.IBusProjectService; import org.dromara.project.service.IBusProjectTeamMemberService; import org.dromara.project.service.IBusProjectTeamService; +import org.dromara.system.domain.vo.SysOssVo; +import org.dromara.system.service.ISysOssService; import org.springframework.beans.BeanUtils; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -63,6 +64,10 @@ public class BusAttendanceMachineServiceImpl extends ServiceImpl 0; } + + @Async + @Override + public void reissue(Collection ids) { + List busAttendanceMachines = baseMapper.selectByIds(ids); + + for (BusAttendanceMachine machine : busAttendanceMachines) { + String sn = machine.getSn(); + try { + deviceMessageSender.deleteAllUsers(sn); + } catch (Exception e) { + log.error("删除考勤人员异常", e); + } + + String teams = machine.getTeams(); + if (StrUtil.isBlank(teams)) { + continue; + } + List oldTeamIds = Arrays.stream(teams.split(",")) + .map(Long::parseLong) + .distinct() + .toList(); + + List userIds = projectTeamMemberService.lambdaQuery() + .select(BusProjectTeamMember::getMemberId) + .in(BusProjectTeamMember::getTeamId, oldTeamIds) + .list() + .stream().map(BusProjectTeamMember::getMemberId) + .toList(); + if (CollUtil.isEmpty(userIds)) { + continue; + } + + List users = constructionUserService.lambdaQuery() + .in(SubConstructionUser::getSysUserId, userIds) + .list(); + + Map faceMap = new HashMap<>(); + List list = users.stream().map(SubConstructionUser::getFacePic).filter(StrUtil::isNotBlank).toList(); + if (CollUtil.isNotEmpty(list)) { + //转成Long的集合 + List list1 = list.stream().map(Long::parseLong).toList(); + List sysOssVos = ossService.listByIds(list1); + faceMap = sysOssVos.stream().collect(Collectors.toMap(SysOssVo::getOssId, SysOssVo::getUrl)); + } + + for (SubConstructionUser user : users) { + String facePic = StrUtil.isBlank(user.getFacePic()) ? "" : faceMap.get(Long.valueOf(user.getFacePic())); + deviceMessageSender.sendPersonnelInformation(sn, user.getSysUserId().toString() + , user.getUserName(), facePic); + } + } + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java index 95ac6927..cdedb017 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java @@ -792,7 +792,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl getAbnormalAttendance(Long projectId, PageQuery pageQuery) { + public TableDataInfo getAbnormalAttendance(Long projectId,String handle, PageQuery pageQuery) { List abnormalList = Arrays.asList(BusAttendanceClockStatusEnum.LATE.getValue(), BusAttendanceClockStatusEnum.LEAVEEARLY.getValue(), @@ -809,6 +809,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl busAttendanceVoIPage = baseMapper.selectVoPage(pageQuery.build(), Wrappers.lambdaQuery(BusAttendance.class) .eq(BusAttendance::getUserId, userId) + .eq(StrUtil.isNotBlank(handle), BusAttendance::getHandle, handle) .eq(b, BusAttendance::getProjectId, projectId) .in(BusAttendance::getClockStatus, abnormalList) .ge(BusAttendance::getClockDate, LocalDate.now().minusDays(29)) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java index 7c36cab1..8f54b9c3 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java @@ -17,6 +17,7 @@ import org.dromara.common.enums.AppUserTypeEnum; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.utils.AsyncUtil; import org.dromara.common.utils.IdCardEncryptorUtil; import org.dromara.contractor.domain.SubConstructionUser; import org.dromara.contractor.service.ISubConstructionUserService; @@ -90,6 +91,8 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl