From 2e6cee7f4905f3511114f5f604a9a84cfec961e6 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 3 Feb 2026 15:03:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=89=E4=BC=8F=E6=94=B6=E7=9B=8A=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EarningsCalculateController.java | 37 ++++++++++++++++++ .../template/earningsPvTemplate.xlsx | Bin 0 -> 10643 bytes 2 files changed, 37 insertions(+) create mode 100644 business-service/src/main/resources/template/earningsPvTemplate.xlsx diff --git a/business-service/src/main/java/com/ho/business/controller/EarningsCalculateController.java b/business-service/src/main/java/com/ho/business/controller/EarningsCalculateController.java index 65d1a5a..13c3461 100644 --- a/business-service/src/main/java/com/ho/business/controller/EarningsCalculateController.java +++ b/business-service/src/main/java/com/ho/business/controller/EarningsCalculateController.java @@ -199,6 +199,43 @@ public class EarningsCalculateController { } return betweenList; } + @TokenIgnore + @PostMapping("/exportPv") + @ApiOperation(value = "pv导出") + public void exportPv(HttpServletRequest req, HttpServletResponse response, @RequestBody EarningsCalculateReq earningsCalculateReq){ + String lang = req.getHeader(CommonConstant.LANG); + earningsCalculateReq.setLang(lang); + EarningsCalculateResp total = earningsCalculateService.getTotal(earningsCalculateReq,PAGE_LIST_TYPE); + ServletOutputStream out = null; + try { + out = response.getOutputStream(); + response.setContentType("multipart/form-data"); + response.setCharacterEncoding("UTF-8"); + //文件名字 + String fileName = "demo.xlsx"; + response.setHeader("Content-disposition", "attachment;filename=" +fileName); + String path="template/earningsPvTemplate.xlsx"; + //文件模板输入流 + InputStream inputStream = new ClassPathResource(path).getInputStream(); + ExcelWriter writer = EasyExcel.write(out).withTemplate(inputStream).build(); + WriteSheet sheet = EasyExcel.writerSheet().build(); + FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build(); + + List pvList = earningsCalculateService.getPvMonthData(earningsCalculateReq); + for (PowerGenerateRespVO pcsElecData : pvList) { + bigDecimalUtil.keepTwoDecimalPlaces(pcsElecData); + bigDecimalUtil.ifIsNUll(pcsElecData); + } + writer.fill(new FillWrapper("vo", pvList), fillConfig, sheet); + //填充数据 + writer.fill(total,fillConfig,sheet); + //填充完成 + writer.finish(); + out.flush(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } @TokenIgnore @PostMapping("/export") diff --git a/business-service/src/main/resources/template/earningsPvTemplate.xlsx b/business-service/src/main/resources/template/earningsPvTemplate.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a66f06722c1289059e9d6063ce44e45c043e1f05 GIT binary patch literal 10643 zcmeHtWmFv7(kQNz;I6?TxCD0z?hxD|xH}}c4-hoCORzw2cPF?W+$A^!w{IXvx#!*W zy`OKbw|{g`PnUJouG+P0m%J1t6av`e2$EeDc)b5H;6Xo(Yz*b?ZEPJFxnArf+LY?`mb48a*i4$%r0s;d_W&o^J9{*~pYTn7}(@(cvF3Z zf_FGg+FF1J>f>Igwz$zxqc2>!1}-kf>R2%GC6CBNOw&i%vQn8hyKrd^Vu*J$V!KuF zJ4QKiHiH_YXFQh>%A(5Qlg`GUp zzg}|0oiIrM+93U-{9XTsHulDk2KW%IE7ie>-n9hXBHZVZoa2=2Ukw@8v@Kwpb%`0> zP*N-*g}Q&fFY{2WO2N08=HPWPFEzHI5Z8u4IsLBSOX3#*PjVs58bX;5rP+W;YG#uITgOZ&FO@av;fT(>s+iqYx=D}) z{Yy_+4ho|P3=aCbwOZ)FGjS0}#ZVM=ucUHFai2^m=vj4X(onC)m%wtbH;(_zQ0}f!%p#Srj`4m$&FGrRh5LDjh;KHK^Vv$_Nwy+joh#V0qMzp_IAj zp5!&w`wUHV0*k39J#9_}uBuo~u)Y9K?5Vf>uWkD7I!ppi5;`TsOOT zd7ag)T>Ij7Kggv7k-d~Cf92p@q1R_1!~=PPuIm|mi}%kN|C9M_R0yPTe~`w}{-JRv z2S*#LN1aziYs>jDq6Z$z+#=;%j3{p7BbJHlha3xKJJjS+8Gjn+H>ZY7xL693o9#Yr16CWLdxIWUG}Wz97j-BLsl&4?b{vOWQ=? z$N)2ku*T`nj5DJ?$3V>LNlC`y6BZ|h%PVfO;4~w&z)FXeyP1vNF9aL`oQ$f`-QAUXO4u@Z5P5HHytv54B23n5v_ScxsVPAStL_O2leinnobgGisB6 zo_u|Dy=DmD>B_OVyT0$%-;J6xuxxNAg$Y`m6P@PA;amx_GUQmnAHxX=xyn=B7Qj6(>TBvSt;gV3==aCt-|L4|eHLAR{5 zy;Vx~Mft(e2biNv!SU;Ln@5%Zdn|$ksod4_$qW7+;N>p>7aMyE2UBBX$LA5t7_68* z3`FGzD5_!q2ka9H)1wi?Rkb5m-=Kdeop?aL`fw^Egj_b(%2+ZXStQ$Vvj-1TEU`Ml zWK`YK+%p7ACP=DdYwvKtyY*4eS5%Eeey z1{YYQ)PLQtFW##(RhdWc4I{{Vvn3hgDTP74o4eD>zEk|!BZB6~lx8%6>Uy7UBN>#l z-{p|H_5zP)Xme9JFgJ9ciKcUm^oXLf0p|W?Opzg;cZ9f77lUO-xus|t?{}56(pRIy z8Mf{bb6XKM@4GjXE6?`?h7)Il_h6Tb#zV<+D(=XCEMfDfp?5-^1JzcGnRUweX9A3E z)uP1Fa!G`hZ#6i3f^RzecY@S+DYCF;9b7PLCGh=O7~q2AlFY08b?|cRdfu%?R5@LI zm~$XyfY0tc%f@l^TqUeNP~&zPJ}9{3xJ@Bwd%-;=>uE5&nTgk6hZ+zSw#TO*so_#g zaP$5ARxb_83YyO;QuFb7{$-;Z!?N{(>^RuCHLv$>E_zh}KV{{Q#j7u(*>#5$Cb>E8 za>rOqCNz`Vl&$)0Gi~|4XXVbHhoC!Rs)J>MMr5Yx=f17DSz?O1^`HQ3 z26E#6g99@^IdIH?^&BIz=mqpO64V9CMxNOZ0Y&*4##vFHj2%N6Dbf(eKK(w0*q^&n z3Q=qA+D5rP+u~7E1>YBzv)1ntdkw*~UTooZWUyRE3pB)~?=tGn4KrA0x7B;=Vu+K*^MR;1TJXfUBDny@dwHIx)VU z2uz2a@tz84Z$CuK;6N=}CD++*sC?y;#x~L~I1Y2hFe$Hl!lrA!WP1xJ+@=1yZS3r% z%!v~kn!2}K^fR^G$INt1*Ufn_F}V$mFOx6MV! z7ZIF0txHAx$Iv1w+bUYkl@8=C+kH}^F<)@1rD798*GLQQA^xxJ&GP^4{r|eX|9vrk z+lxwwsb{f>x?m7_}wIsQ%iSQiz*mdl7VS{8R@|KmlwH8xzx z7)lmxSGaA2sH@Y%-Nn}oUYs>3SmN|h-U&EE>WZdR0w#ZbGWv2r{*l#pS6{NmlfI$g zY?hJakyLy1NoQ1%F-CC(2=l|VpY3-6LocDb3ee5<#NFh~I$yVrR_5@9)tM>~rjX3S z30?%Jo*hHtz@Wp!6XELTc&!ZG#}QP1MpUR1oQmH4p-cZ65twJpOPLM`m3SRzp6e{X zJq<=PZI|kvKUIKn%?kD+XgTj&*Jzz)X=M`U6hz|N$b%v4x_PIg_$WrPV7*m=vhD zMyOJ3u(KV#*Vci723F!SSi!F-6D|FTOyCgo3(h7_4|RCGa2wt4*Kb!UPJ{T<_}v}v zk6^P0Pt)OIR zzFn`eA@W#;#eZSxnogz$#eSr28%DmI{1RxvNq96Jv)vQSfl39lKsZT&!`+JKAo8J> z!r9LyNciChymat@yZYRKFQ${_^o+yKy9YQ*v9<`N_0B;ZuhjA zs32x`h}Q3`geQ$Alk<0;OsY6jUnN?|vv3)vb61y0WXi8SM!ku8hB))2f@ml<;@3vY z$Y#`z;;6j?^Y4jsW2~t>mzHBR7JTm?aMU-yzFZpjb9aRA){H;zv{TexB9AZiZ7>twZzkia!07Km z`%$db--v>#<t`U>2_RtH6w9xE@q3zm2Wi`P5fg3=wa{nf+eV> ziIae|xB=kkl&?!kwlLc`2soT|CgoY~)Z__zJ?M^h;5CyqXBwZT_a*d<{D*eX$LY+D znr2~}!VRxx1_n(gN3$v%);X)DE7@C*L#E71$}Myv_@+C|vTI;H;}`#*f@oN<-)IBh zs&r>8w8?PL7*UW+v!V!gL*XNJgcnZ0a!FZ7^lZAS7rx6jW%A*RZufVu58*4ISC0Q4 z;*hOlm=z5!h3Kb8irjjhi4wmnMkos#yc)&K^ttS=EM0dz-!%|1oj$h67X2ZzHrMo9 zv~AMtPQIBfj0-xAkUpb`Iw^jK4}dTRuu3*z0zC?^We6Z=cl&_WY^2ru2K8HCeO|OW z0V)X-5|sq*%GbUq34jcn$|B9$z3eClRFUaNIu5Ogy%u?Pa=C>@1#6$r^hn39z@Rac zJhrS_J)Kk44ikZ79Ud-37{_j#R~hEiG?VB-Z$(;z zxiE-ri|dGw2r$JY71mBL5H`l5*kM(h@-5PNS6OP2X2+9<3|GtP|GFJ=BRC290O{?K zJ+&8)f|aUA)lp4xiq_e??|3T#jZT{?Jl+m7g@<{oi!-b3$Hw%9XNpzgqC56RIy#gX z=aZ?SU>x~E#_u6~6=J=8c6+flEeHIPKc}eqg=ipH;d1TjC|Cr(z?<&b7wX5Wy@(bY zHI6eGM}dy+u`~*la$o4T_?n=}z4^UtoAz}9-A)3=z={FWLc8-op=hxFSxpIZ3e;?? zD^QH%LXgdN4U+a)iil*gq>-=IqH(k^j@}uEdpj%-sG6yPG z`klmb83_dZ&L5!unLo@do;rqt@#7W?T#hhZ+SxjBtTUnz>01dMY!%%xO z4E3mrWaX%Vb`rMm1H^s~lyn2qEUn$Nf&|16eG1dvT09Gl-|?}^h5%sJnkSyjb;NTs zWa49{KDJCQ@Dk7lgy?$4%JLW{g$VDY40x~(-h6vuEV@}p5+nfi(qmY#;gF5NcdE5i zxoMVo3dLQT1=gayfw8TX4ni@ghF#}jw#db=`?o!5nz~!c_@%lF?yb?X74_2=k(M*` z%H0?>^P|h7sl)JCLu?Xod*6<<{ij(R#0GINPlhC4Qy;Io>D$# zZJT69^bhHk4|-R;OrJ)`6~r-;GE~e9X$Hsk&FovDiu6e5a1!(GF0_R+Qki9V7Ca&& zBM-5@+YF0Fd}Pe6LkD*bdMPH|$-J_Pz0A;H%Gf53M}wLq)dq1JW9Hd#d8w}>apwN% z1jEOB1bhfc{oa3@!w`B>Se+T1vOpP{4Y`nXG}nN26vr^HH)M;0JtsqJSxi6g+O(H- zgGsaRQkhX77p2SIocKfPv0{yRU*^XzhG^4Yqz!FCB;91O{fst=Z{$|47SM4~6E5p! z^24W&PT&Da*>Qmj1uSqK$;Yj_qNEQo4fUEgqleDG_eBZLN|rT6%ip3k@=UM?d|9RJ zs&o(hCu(rmD4{JH64=dI!o;vDA;)2AE6++{P3Ge0HtcV_I^SPf+E2yc?|Yyg60$eQ z$Q^XJUx11LQaaY{ljZzgbqn+@`%}7el)e0Tl6sqEwfpN5H~DI};QyQ{v^hh~U7&Q) zP!J64#qVD3=w@mB(+;D(DRb3iFBY86@uE=Nle(AteZ{6qRH` zRw7&4YT`Yt8z|ZBA$?nGc!f6SFqc(M8s@uk-q^hVa&8sL1}83%N*ZE(KRIGc!|J#* zDR`QD>0Z?WHHBkpkaPe6%G;LG>X-_yyCIr&hd`awp?ocz4l517<7EVMG)g2H^UWsl z4jvVkGn!_A&CF=_D>lhqgu9!7Sl&a$PVLyKm?29Ul2y-3S;lxOpnF3plJ+n=5&`4c zj7@j1Z5kUT>sSS9d?BIk?4$HbMv3{FC*B z0l>s>8={XGmn|Z0;?V{yi6kzjx=;PhV zmGJFU)Q((+xR9XC+Y8$e5t|50V%mD@04_|{f^7vIEf|APbUVO#P>|IqqtWGi?7EQ+ z&o}R>EWO)d0{a~)^V=~N1MV?)7G4ny!3de0lx~dWt`D}zSY*#&l9yU%q-)VQbVu8j zYE*jw-{99X`}LV-`{Kk|w-so%Ne+$x-Csc0d_fg=pj(Ak{1VrLMiU<;v?lgJm%g%> zg@^U1g+#cX#4GvqK(R@32vv6l8`v3ZFkUUBUV+Ffn5j~xs9vJc{9d6Rft+u+z`)EW z2oVi?ekLLYXvX&9h0C&RKJ?md>xnibAKd6!NemOfSt|h{BRZ!2f_ahfdNU+zm5)5V zwbNmbuiRj!OSrh!%180gIcl+E+h_m0#1OH2o{gtCn#%7K_j6&<3j!qV^Vi$TW_1-vVgF9R^7V(1}U&fe9rE)y7#NaGhv*TQT44PDAPT+=%DNV-? z?w0!A=S`VTDKiSwCl?OfTVyorl)NdFRGN${Pxcmn2%Iktos(h7^?GfV_tS=a&~-%V zBinR!iizZd>X`J-l4Q~@`GuQ8w!)Hq67`*?#1mw9n83z67TQ*uDw`*y*!z+kH(_D0 znW7o zKFr~}f8A-#MVIPqi6YwzZrgmP35d`;rO|yNe_{!U6+z*PRykS<;Vc(LansX#$3AbT23U9tB*53XliItm5^g1gVr9gz|W|wm%`P?z32+woz5Jvj@s{ z;rSgk@(hs{qBh#&%Qs-1k*vfoma{k303!BZcuHHRX-fpG9puv11{CXjyHci zUTe|uJ_TmY2(*#t#DYoLVF4)TReTOVZ_pdl8EC>!wMWb2l$Aj#z|cy&)s>kJn}pA_ zqZa|xl=~WEGYyq2)RJMsx-TqR+i!`Puq6GEYw9WJ&0Vt?!9w7ztz@(c)%9$rt3I1! zWpD*Iow4o96fJir)tZq5xn`U$1tuA_qB)8OSPFwz$~m+OL!YjT%jJw(afR&49vfi7 z#~3hx20;n(*V0SX^yH>`dHd>U2_a15;^^?-D^V>VSeWQ5_qMUI)Lo>3VYECjwY~k> zhQQcZMPggaY7RXvbn~dV9xyC*H_+?ir`Lu;3Pu}Dt)i-gXrUypBf;s*PqyVvL64AH zMjNAt*pup@2o4SdL`s&|wZ_5M%BRHRrRjTUQ*^|ss(QQV?Z|hq zMiRHGIXuqyZu>lxd64p}A-Q$+h4j^JC6?QoJ`WRpUwoMCdfO7#h1?OM=IYI(V;J@` zFvmUL+|SzPkEt8Y^;0=fls%t1KRK zU1n=K>fL$A6_M-~(F1S1uoV?KRvMmend5!m zPFKDcko*Yfjk*%}aNGA@Z~pcGO%>0RH%Rr}#tEr1C7H1=?9W&s>nV~~dP+0+RJ3o= zt!GJIxw4@e>}1-WV#2o-MIjF$nZ~H&JtIBy1u zD&B^`4Zvfk+KFtYFQh(P9q+XrzP~se>#9R>kAM08LRM?Ad{rnU%w8*5KR{I%o01EANMnV73i+Sc(AP2 zVMkdY6-SPlVzvdABS!AiCd?|7a5SJ9<}VSB;G;iB8a@}FD;Ch&iqYj7F4trHmFxwQ zzYqBG2@4wyRNzK&_lBjpG8|w)D|}#n;tMi%d>z;4I{dF>bVc3vn9a=|IA1~kRg}?n z`aID~L`-(UPnh^Z#)u5VHOW=uv@QZ|k9y9&t@$1OH%I#SN_9edYC}J?hVno>%f3(6 zeU|}=;d416YnM0>f*?;DiXbow_WSFU5_`^MTnvZ~=9+$E>nAbhX-w!7tJ_BS1a!aj z;LY^S5MEB!z-&&yTazQrk<@)eOE2)*du!8VymSl!7{%;6!`r^a04jN}P1zlFL%oz~ zv(f)CXLXDP>v6Vu?~|#Dd!mz_WuaO%R(!DkuF&1Z#%sy6zi|GJ+z96G%xA$+v}Kn4 zb|Y^B@PGjRT?FHU%WCTq_z~%Q(lwiC538tar&#ik$UVHwm68Bs}TMv)<-oIA~ zVL0=5z8JlKQ=A zvX-~*KN0IrCzO}r=~|=-_Go~y;|OTHvau=L9a`p1%oZMIdA+V2mFi^q2?OZonLX2j zd?pG5!#Qm4#5Zv0A{kU%VnX*qR4X7sDRh2AtHq8su}4dmD3m;7@Je8Oe5<`JYE-jw zK%C2;JZtxXjJcHFvO;_Chgs$jmm-X+u{JrA(Z|W3v4R*Q#sc{0dk;VnxK^y5` zV2@|5e{9K~wA&QZX5PUF2t4#__8a|R7j11E%hd!FEY&;*qfl5K>3kVq&1S|=7g#0@9tL5e>7 zv3ST=BSGsAP1-7K(9QL$MZyE@BxJ`Ufv~|^H@NC;=@Ag5y>rLIVcmH9-){AY^0;#o z;geXANR0Tu>;oakH=JT*GN${7);|>UD=A&qHoeA&x*O?Y53cTQ_0) z1b*yK{lvlqy?E$+SX)Wq4WBA+QMR%SZ_iXJbkdl!WI;(tW7N0iu0PnHVEdIO7j8Y4 z0XUoO_{Kk$W(}8CGKk&C@7T}Zebc2i?;t$uIM>&R*3%Uu$Q!VIM z6Vr1mfeZx(4n_>Rijn@S&3+O1cL#b5M!&{mKU4r z?9p3)jYnpW<8OUh|K#_)Q|l4<7eC6sqy65u^;|{I`;7j=&Ie8JKbii~b@UwldDF~a z=s2KY@)!D_Ej0h_qd^$IkH?P&f=WZ6Nc7(j{;8$CSAPp#&jo!R;~p9P(h?fU-_ZUe z;ytJHyy*BBoqp6OI{#6Ed`{tcLE|q9WthJx{8`@k-+#M1;0g7Q^R$1?kmo0Ae{szG zJKA68YtKb~Uak9!Kp?2_3Nq5))%M?ne(d4-H6ATo^2@@H$bWY9{8RGhJw1=OzpVD# zf8hSr;qzSl=Zyt_QAvXPQ~cj0c)C5c8T{|5gn|Ob?@IVPm8ZjNc`4|pz<~x@CSpJ` J{~&wh{y!tjg$@7! literal 0 HcmV?d00001