From 5a7cdb05d0832221d3ea83285c47540eb3498786 Mon Sep 17 00:00:00 2001 From: llllon Date: Tue, 9 Sep 2025 13:19:35 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E9=87=87=E8=B4=ADsql=E4=BC=98?= =?UTF-8?q?=E5=8C=96=202=E3=80=81=E9=94=80=E5=94=AE=EF=BC=9A=E5=BA=94?= =?UTF-8?q?=E6=94=B6=E8=B4=A6=E6=AC=BE=E5=8F=96=E5=89=8D=E4=B8=80=E5=A4=A9?= =?UTF-8?q?=E7=9A=84=E5=BA=94=E6=94=B6=E4=BD=99=E9=A2=9D=E5=90=84=E6=9D=BF?= =?UTF-8?q?=E5=9D=97=E6=B1=87=E6=80=BB=EF=BC=88=E5=8F=96=E4=B8=8D=E5=90=AB?= =?UTF-8?q?=E7=A8=8E=E9=87=91=E9=A2=9D=EF=BC=89=20=E4=B8=A4=E9=87=91?= =?UTF-8?q?=E5=BA=94=E6=94=B6=E5=8F=96=E5=90=84=E5=8C=BA=E5=9F=9F=E5=89=8D?= =?UTF-8?q?=E4=B8=80=E5=A4=A9=E5=BA=94=E6=94=B6=E4=BD=99=E9=A2=9D=E6=B1=87?= =?UTF-8?q?=E6=80=BB=20=E5=9B=9E=E6=AC=BE=E7=8E=87=E5=8F=96=E5=90=84?= =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E8=BF=98=E6=AC=BE/=E5=BA=94=E6=94=B6*100=20?= =?UTF-8?q?=E9=94=80=E5=94=AE=E9=87=91=E9=A2=9D=E4=BF=AE=E6=94=B9=E5=8F=96?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=E7=A8=8E=E7=9A=84=E5=80=BC=20=E7=9F=B3?= =?UTF-8?q?=E8=86=8F=E6=9D=BF=E8=A3=85=E9=A5=B0=E6=9D=BF=E9=B2=81=E7=8F=AD?= =?UTF-8?q?=E4=B8=87=E8=83=BD=E6=9D=BF=3D=E5=B9=B3=E7=B1=B3=E5=8D=95?= =?UTF-8?q?=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PurchaseDataSummaryServiceImpl.class | Bin 28498 -> 33139 bytes .../impl/PurchaseDataSyncServiceImpl.class | Bin 29131 -> 29196 bytes .../service/impl/SaleCountDimensionImpl.class | Bin 34515 -> 35229 bytes .../impl/SaleDataSyncServiceImpl.class | Bin 25471 -> 25775 bytes .../compileJava/previous-compilation-data.bin | Bin 9392467 -> 9392467 bytes .../impl/ProductionDataSyncServiceImpl.java | 18 ++- .../impl/PurchaseDataSummaryServiceImpl.java | 140 +++++++++++++++++- .../impl/PurchaseDataSyncServiceImpl.java | 18 ++- .../service/impl/SaleCountDimensionImpl.java | 36 +++-- .../service/impl/SaleDataSyncServiceImpl.java | 25 +++- 10 files changed, 209 insertions(+), 28 deletions(-) diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/classes/java/main/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSummaryServiceImpl.class b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/classes/java/main/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSummaryServiceImpl.class index 292c28e01f6f2bdd8b5ccd14d64333105242c1db..535ba6efd0f5756e60e3d05cb1d15cfadc541e67 100644 GIT binary patch literal 33139 zcmeHwd0~p z?z!g;FCE_VBoUpgHhO5N*cVHK#S{E^(iBg5XuNpZL(hq4xa3(=JQpW^A)fajv)?0L z5WnQdi>7#qi(mGLUx{Dy;}ui9>JhJr*E#bWhJJ$|Z<^vQ2K+5|_O^%qC4R@nzvssv zO!1Ce{Lw>w#k)Qt@gW0#)+>G0K!=N?}TAN@YsJlrB@on9^-Z)0DBM^q4ZvlwMQzz?d?g2Y!ZA z2_Bg!lQ`w`$euFUlqsf6^~hc_El&Dnx+!~`vJb|UeLb?D?C$~rhpk7EccODR+@5!DOZ|ul_{${bhkXm!V0NFoLlXd)%>o(gK4uWj;@uprmQn%y(!n2 zvcZ&%rff20vnkj5s0U9jp2tbxaT0mhB+mLc+mo}&oK4|us$3E??V4$t3Z}fsls`7* z#iqQ(lpB21i+f6ASUc0MNq#5 zCG%%2E-5G~C|*JmS7w(sHB{BEM5`V% z>S`OCg0)Sj2CJJZ1r0oUFH7_D$^;FVo4@qvaDo!1&tF=wcZ@D=k<$za+n)WNGQ*qN2Q#GE+V$DAj72za-zTESZ!RcCVv+QpVut*i|;H8%h&gF97E>Wa!KXp&wXY>eo5aeW1bSyWYnKEzx> zX_#<9$(+2xrG;}!7cHHUH)D3e(nWKM3P9XRRkc-3Qv|8u8K(*|X4F-nQ9@x=ZDnzD z&GO2IMZx9OC;{!ugVm=7F?ZzcLZfL_RimKN!t%PB?BKe_`e3jzyScHlAv;)K-o2r`DXEQ-cz;~6WSnbN2s=#)2E1I&G*VkZvb=j4*E3wk->GMzF z)yIM*8=ANkFtL2~O03Q65Y8f)S=rD~*HF~B5{Ly*N*F;3&MmL3=K+|AShY2>pb6h} z&VoEO!Kzy9loeGNZ{V@l049zk)B1XcR6R=_-&=r%S8O1DRthDyu8Ohij^_VVd>k>NK#fN(`S0 z^ELWjUI!)`XJIUapGi??7{QLbucsbYv+fo)O#w4}y}zW;P>O4dx26o;221 z1{;75z2mU(iXb>UmJ2oKg6lb5$da5n8F`lKWgYd-`mH&IYYr~K2osMz&8SOfq9%tH zuSc(5Z?W&U5V&2Gei&M`s^ek3T66Jwfhmamh$ZVHQ;TGsi~%aGGL1u>T=UH}!m%dU zEv|g!j$+CWRyml80X_AMdh5wmub&PX(^Z_FHGIw-3lZV=(6=dxWWl%yk((4kZ{FIK z3mTw%p|T=y+)-|@Py}DDt^{A2!4Q0Gqotgu&krY;7POJ%(nYQnRh89{rkZ&*D_M-B zXA)v&t1LotLlj4DdP_EUFo*_-98ni72;(ahM4?(#VcWgb6tw31BT|& z8iac88KoG!)5P-(0rjomz0>__Cx8a_PSG5$Wn6drBytZVH3nBycA9EJsLWZdy8==Z z1`U{fO>-rTPgd@*+d@0qv}XvuEc`~3>6X^Lbk9qI4VA0vnj3K-vgHJ(Qc>B28Sq|< zsavt4ku{-NA6%)eWato1qNJQHDm~#ioh;FM6ZWFU@eIq}((Nq!#VTKb#;l0z8|um{ z8yg+m7YF&6Ff@wtu(f%(q!Ki&I#{#3A~^V{^cy_pBte(kvbmGh-QCVRp>3LRLeM~2 z<+<8qfgK&!P+4CcEU&ce+jytK;ftiOYNssG0qWR#J;T5{N{YnE0*Yk+3_?3$&LpM)H)t85bAiqK%?UU19^@I z43se^mBYEA9VnjCI=D0{XI8PhWYE#w8>4s=d4*5(^ols)^@;?M2=P9B-mFru{H56B zl`qPdyz~`)Eok(CU3)*?aMi&lwj9{?2typ$wddf2dp_NFW&15ZZQp*=p{H&?boZ6* z+b(PW(cVK_?moEX7PoxaD}N<_?G-abzFWTHm9NUzyz+JVnxL`mn;&Yw=Gp^K-rm0X z^7flHw%^kF@hv+JU3qca?K`;3D=%+*;)b@%uWG;L{`SpxS^atCZ{)At@(r(iQ@-Vu zzm;!8)vU*#teTpviVC;a-W_dweilCKPxnPkCO2^Yg@HqtZO1EvC-AOUctk9Z@t#+l zDbDhW3ULH6yCiJ6j5dkSrcW*qRvCsL>aQE^N{GN%aG_PqD*t+ za7L+3OpRjr+Zo?F0#>V#OXnp--1?(DLex;Ao|Tw5})w9sl8K2l}}dvK>r@ysyZ z;4+KsJQw~Gwof|W1y}%hM%gyZfV^YE-2TILx^(gM;ZrjMbBf`DKQ*r~Fk0_0=G7r( zSwm{FhExp82z5NGWd7m>f$3#7$92p-GY~#$hR+C;^Q*96=Ayvd`E!Z`|0~$!A^A_o z%#MlGV<7bVz~%9wF(XjDJ}|!+n_BPl$;etM7K4s7(51FuKrukH(3lJWoyY<~|33{% zy7KdJ)1W4j1~nE9z++5?;ep`}C8hw=7G-P-RM*%7Jd#{Bwj3WB7@ZNAUlM9Rxx4lN z)E%Qgi_m}^laXODrcLI_7ROJ`&=-fiL#>KThf%!pFY>RBm7yIHc?}K0_3Y~O%Kwp{ zc;%-s>Ez$!XM#p*HGh2PVwi=@oq__<8in5(c;(;a=kQ_h*3`lRPM2_fhiv=yt!>-3 z9lUG%p-Zpv%74gzdgZ_5zgf5b$1A^(Ut+KsvraFtUWIrqn46FL!VPaN(gnO zp}J1mg1vy@x)7#BXZ6HIoz#aj8b;Tnh0AhhG+oz8qj=?ic{yLnuif&nR~}L1RYFO( zQeI^!7aU%lY#;dIgB3MZwQd#TRc>XvRjgNeR2(dB*o$pf+;!loJK7$()iOi6x8H2b z?PM50ArsFs0o(4|c4)`_!)+s2+u4(cG-g_6A5s~)fgz1BXqDHkdU#d5N)VJ2rVWp- zi6XWaZm6}DrulAmuyGZxOx!BbtCExt*I5^MRZmXHGm%PGDPEPTd|uT{etYZ)Z+#IE) zUN_tCY&yT|R_R{VTjYCHAJrGvfE^Qszg*vrcvU~uAB;QXq;VBlLrxk~0a~g6?)^GI z+5N|J9pDu!#7eK&ATITatMO0+)gUmw3V79E)!(az$j`iLsQf1!8x|G9>0()vJhQCx zFZ^`h?FV*Ufoe@bD+fci?b<7G@X=*nHH?o;1MQA(xj#hUh>p+~EcZy`A02^lHg60! zf!nUVr0uRfZJW1tol^AEz|^RgJAxpJ%Z_clYukOTW1#DCyR*}yP4@Wa*p0m|5S2x7 zfevd9wA8tf0cWb=rpoZD5o%;YjLJ+@SqW}6DpB0;RoUt!6pc<4_i}nnq8f|rxI}R~ zXUDr$j#r(mCb-o^ugX=p_Uh5WCGh{Fn@ND5jK5Qmo{IN0{LO3kR|U%~++rHnp;b(Jrn zQ@90v{)OM1*n%cSWys^^#yW=^qaPQ)`OLauLsQKL3(Nue=i=`?qzmyb!rx+~=i|Kq ze;2aA?^bwsi`Mv%w9+E$=*Ryqq9gi-&*=ugCEaaz969tpZ-~Gwd^cUr;@<;uOMt{u zAaD`>E{^aMSaBlQV5hCcyBF`XJrn@#AycSN4gSTDMeoITl_}V8X zC~|v*LueFy=M)rlYRHkYxOmZUSj&9sW`pafrbn~`8{?VbIUDS5pB|s5;uW)SI%h#w0uf@hW zv~&BRr!MoV)72T=ul6y*a{2h~$E^;+o3dnJ;{}z>c8}cKw)p`I>fpl<>*CJP7hQ9( zW$(wAU1M7SXUca4{nf@3pYbyT`EzGy+UN5nh0}{N1G8qGh7wjUc!oP7*dqbw%G|>I zC7FTQrD#|-(*l`W;P^3g3VoE77UvZeWCmu;%Fjn{>;*ZxFXEVF2n0elqMkU_N`~o(->MV6O(ukErsHZ}I z$S_v$VzfX8%!0B-eJPA~nGd!w7#+HZj}~qlExKT??iMRYxos+-Q=kTU8$p1}&!3Kd zT^doSo;L&4t8Fr#z=qBYgqEqfto@qn(TSy?9kzi7G7};J>;UJwW+aq&)tT@@(#g=J z-AED32o*@v zPWqxESk8PKV2W7BabHvf$33LtiTRs3Zo|H-wqrFBHf4$T4p$k|1#z_MTka*yXgQ0pcgO&wH2HLt5(&nK!~Ds^T1aI2%ARmkX5N_>(&8% zPIy{mHSF40oK2e>^MmUf5x_fqu6-Hb1#F-;O?B}K9eb>!UKe37D-;=sMqhO+76hA+ ztVKL(G_+We6-Vs_Q;M-h=;-6<4Wh;mbRVTw%@N|(6~ifEksfvlhl>rir`{0}5_Jfs zK@lPxbg)FSgJ9jg#YU%iRD}Y42H0kjwg1Cz(5#J^8xSB+O>lK3VsOiYO-rf}r)I~k zgD4}SATn&;i&i1Fk%Ogmd{4h<-WzKj({&`r@F=~7hfF$Xm?P}7zFyCq+NMgx;bW_> zu4YzR>Act-%D-HbsUlNl}kH`=tUh3f_B=ssMHR)zL>szU=^@9cd{ z$&Co`Vg%4*tJLaOB(>}{W3TH-nAuTK6ozmILs3IR!X0JI$(3uGgVi8ngphE0fLvjj z!u%!IIz=*9g7If3xc=2 zp%Ma>)enb86-ODeGkQ9&x4Ri+oB{kqlS$n(dAJ~n&|jtN5uR6r{TUXiTvSzE&EH6X z2g_GgW@F*FW^B|S#*DSUj9H8iK>!RTHyxv_7Sua@sWVmu8%n{rm9^y% zDqvCsg4H5ktQJjNjrG-4Ak47v1`e-=uf;BdrmAWzu4}T#G4NpyX70CJ>wP+-uDTl6 zz5GQ33*TrxN7;RVOzH5*bo7Ba##XZCws<-Y+&M>o0>nY7kpjZ;3xYiqz_4u~(m*D? zGtj>QZOB3jLV@)h6m0mkwIb&FM6}H-Z^Aw=3Z7e4(~R}G%B$;Y(ZCg4q4grmIjf7S z!yK=UEiXdnAuAB9lXV~ELbJ0iWPL&u^>E17g@tqG6~OWind$ltR39W@D~llzQ;kjF zd`!G|gaoxpnP*T5Wwt^gt}P;h&yi$Z354&x6l9GHU+7fBifTCC0BV*3$NTY4xUgE$ zjIW-+L)kO!1U?@etf~a{k62PyunsFjZ#a8JT^AHCf^8rk;T%CjqK`1Wsumv`&9ApC zP%v5V4t}*UYqM=#1MjS+Ivr?yemIkLoo<)_I=;$I(+I~|=UHHmy}HcNqCU1kxwTIP zofJO9E`4-^r`3!sd@eay;d9Bss+J#h{HVw76Bob&ie@l|kpc7IZ~DT!w~JVwI2y8( z?-VQYhiuxebukrHYpeJ}G-pYjK|%_#bA_NwB6ji#?co!4dxUM`$X(0`T*HqBel+r< zi671USj&%f{5Y2%*o8m*=5s#U?Rqp90Z$n|ny%A5kLPkeKQ4gafnd~JzsTmPaHSWn zPC|mFlOEUl)=_a4P~7}^LB}^&+&?VSPWG3>N|5zNd1X~Ki~4-Fo?I1`%bOwNSYBJF zC+8>-KCkdCq_qGzxV{;K9D{>HYtVZvT-spYbv|Ft43^{E3YxKnXnh6Ck|u0J%s~8m zBlbh*mZ!KCZp8kiE^@0Md)3A260g{W3lFgqHyxrC_Z#AI&hFsscFu0&>{iY`%GoWP zeT1_QbN1()eTcIUa`pkvws7`moV|~;_i*+$aXSo;j-^%AuB}^LX&W5Y!Ny*bTfzAj zQ&?Ark2PU*&8e-0#m9@`u<={NmuUB4Ma#_&)>c$kHV(ELo)U%$o1S4M5e*mN^Ta6N zQQ51@{9zF#4YDA@lz;H}NRBJSa zi&wiggaNm@3@q3ML(!;%@3oH(M+0au4aN1{f5}Vf9D#~2-P7qX9lGy_D%QTFF(MwVym$trW9~;vXZo&)kilCZKI2TFH}ZjNDI2BU>pB zAb5FSpwSG{V>fxU6&_)apU;@njB{4`02BQo?nrUkF z5l@B~ijp*Pe?>kwJ?Hs~db!20tS@NVbT{=KfEI{X#uE$_QviDR1os_eybc}jEDCbF~aYzzGqx!M2s^P3YnzquXRd6-~f zN45yrVkc|*v2*83TGDcOwja`AfxuQ+n4}Kn#Ht)miigW^9eNKN_3olYzQsVzsk>;&ZaU4NB^o}*({khq=DM;_%M6P{TWCVA;X6H&8Ck&e z1Am>7%dF~m`Hc=~fJ}!tXq4Nq)tlrN{kFtGJ59u<`2jZ4MU+SvV>4X>>3S&@(B0V7 z_fjJ^coVkdh4dh8ribW$`Z;Z(hiNB0LeC)e8a+zCr>)dR+vuP47zFlqkwiPNl^+)) zsZ~s*ouZI-i_>VYSV{ZDT6#jPrzgb*dP>|xPm81}xp@|)-#xrIK& z>fV*x={@-hy)XYjAINt4h{X{!Q99;%9Tdh$>Ver_Br-)7#beIRVid{}G4o21jj|-n z&xXS+9k{zgaN8U>x?gM(CqZn*(H3#77!ASXrOmL$#)z@_DVuugFUE=S_&u8o$tQ9k z=)AI&W{Q(h=D`}~hzUr=;&*871g2Q{4U#_*xhQi{fvggzpe%-J}x8Z6EnafuWQU5HDhSkyutAjP6qX~8)HzsY0GX$od+jW9Jd!W1%X zcqmd9s}PzgN5BZCn+8L+^8aEOp2A8IY=bf27$htsuk&J z7js<=n;)2MtpSUtZY#K~FTFu;;%Uj0(}~TkL%_qwP{)5p`KL6D{zfO!XH-morzP|` z42plkc=#7giht7v`VZYmU(zkGMDGJ9wSZrDfOU6cXTB;Fy$PH0E!dI=@cTU6a|yV! z89S>$%tUGl73m%5M&GB3S=e_m80`@;n|U2$-iM$2n2Wi*MLk1i#UXp280d4JU^|nI ziB#+otL4;C%R<|%7)|C^)Ymvn>6(j+!0BI8hQ-UHlfe}Rad$<=19#xukoK|t6RLZ?~w@+unr4BuT3pS`Y|(v?R_zh zTp&ig$e|Q50cX95F#U5O-6nw$Q)q^mO7p}tS}bNzJ@)W=Z@x zM{F7cBuy5liQXVtKXJO?y?-^xF^^u;4B*E3biZZ*69nO-6`*4Ajtu2w#+7c^C7t7Grz&czah?EO9Q@dD> zR7?jOX?R;(QWD9-G|^3KtpEQDF=KI8Irs`6Gg{mQW5|tZ65SZdU7gs@QI z4w72?dl?WB1WC&wMk}a~SV2Q!(2WwSXo9GsY2qB3C90`L)Y18(5&L{CT`Shn4dPr) zwiQ_CC|a(`7DE&0G)*=)O@r;s`_`mcFot+%vg*9iAq-N^sqaRIFetMLL)YMkxtK6L z!9JQW9punZ4mq&9zotG8E!Kw70ukmGEj&*{b_^nN6)_TjY$36?g~LAjeE)C0KQewFm>&Unv*W=6Oy^4dH$9HM2rv+nP#s|JVv=N8; zIDcGt_j@3~NFN|^VyMG$4vGP~y>A4R-{=7A!C>)z98$Z2xjMk&`51Erq8s+mPl)!= zmHfDhpwzG4P1i^qLa)tD@WZuX!Cc4H*Yo3sNSH)_yaRJ1SKq{snx>aJp}k zKgCXs^{47os_!=7_crR~PxaldQ$3K{tZ{xe`nC?hcO=uDyXdEGSVZ@<(!CRVqvk#w zODFb4r_<9wN9*X@m(RQd(t7hNJ+1F9x`XTPa5?SLS||pSYoWPz*Wb1$3_k(eQ!g&h zo|HWqRLw|Bb25qkUc2djCf1nT-u~YEsV#nDAFT9ftM47T`p_!+`FmTd4`7U&MS*s85>QUFR`aXK~c+N!!jM$0avL_5b)1Hg7&UD|;(y$RNw?tCdqWk#!=tcKE z#-jUlv*`Z*KGvcKVAOeO(DW9`2Uv^lZ!LNNFB)|ni|(rzjptl+pcnlud&2Pf_FSBG zru$l$*{ntT{OPvW;j0(?zHqNYPnDCLlFVhc*C9Ej=Q2CXUWXLFFC{r8#qv6&ve)4O zAS=x4!0oN~nb!X$8*N_2On)CvJrTxs5Incfv_{ zH{B!dA>4exGtfdWiU;U*@gV&L_ahP)B?;nrF;wgqW5plw)0gjxCE^Qc>Mz9)#ec;{ z@s+qvd@VMM!{RP+L_8o#JSK(MC#Bdgl{g>`@tJgq!!ky?@k74Jl7B=uPG(52oG9bv zB>XVzRGB1aOP^eb+OuVJm9s-7Kf6du6`bCJR)noT+xpS?X;$TOE*d)Ms+8`cf7eZdq)k$oWPexxmPj zB}TSfWQ>uEjZ@^QM!r1FSSU|7mdZ1X74l4DtvuUUFN4NURjOXMz#+!1r@u93XK1cp*S?B60n_a1LjVnzyxW>sw*EHGWDwJzkp^M)^h99OW zFyFJNHx51H#VVxw!eDmF7KX~cvdj7@mt7W6Gec!?JL|Rq`3rgEzaR_#YUAbR>Q7K5!b0CeI85|n^g=<5}e(|T}p`>z@>o?z7(}$ zFn+IhpJ*3#I4$127J*yRL2)V22i+5<&c(0Mqgf1}2ZcZ$bUU~BdPEmG=)~7_ z2B6@#>Qw$E_4}H}c2{)-=ZcP2^A zY}Nk!s8;R6-CMPfd~2(A%m0a0`zRZtTls<0OgC2TV_dzRA3Gvp!mQfIxw@4fJ0oF^ zV%5s}PFAfpW?|LtKk~k9&&A(z8@usdi=UY4ShZ>XG{^2s!wrvR)H=rMlw7~xzn|j# ze%#cwkP$yIy~8rh)pk&vzmHSb*PjwH0#iaJaEfgLpOTi&hK)BZJ(+gZ>CXCN?CBl$ zk2ZXg(zNC4N$Z=|ziwhG?jAKzx??2iPQrlF0R)J=4yz>%#wtt>%Y;ev!w9jB)&Bne z`{{arf7>jZk{j>`cyR$|0RvFSwm2H+4)PD;x0j`Gy9eQEV&>8H97;&Lw#< z4Um`85V?^i%FAiFyp~qT>!@B{PwV83biTZqE|Is<9r6ykN8U*f$-C$m@?KmK-G}R- z`{^(8AtB|@MFN!iQ2B%yD_;?F<*Q-|e(`CU8V&qZK36$12`1WLH9?MsnKo6O0@G_UOs*;NR5eXjs64q^707d8x@}N% zeXSj#z;^NMjzE^j8gT+ z1hvj6Ru>uz)q0~;ooCdk^NsV>1;%CS2ih>(Lz!|g4HW0Y-02VeT#UfJkra?Ss8L*q zvH|jGS}A^jvO)4SS^{G^3vpmG0rw-64N#{7?jn>8RLcSPW0WDX4R9BuY>3z>7i;4x zMcgH)Xp<@xCe?UtQl*I(WGb%DMv`B=En~E4m@fVVgZvVd^%0+oKifv)4KUZ)^y;t1 z(*xS{3Wy)dvu)EWA!K^>aZE4ucgOTnpN5%U86ndv#WB6qA;S4$9 zQX3r8OHB=#UcDXDOa9w2z2qmB>1EV8rk7FLVR{)G9n%Xb+w?+;ebO+!kg`oLq-@g* zDckfy$~L`_iZs2fb!*d0&t02ddhXiv(sS3Qm!7+2dhy(~>80ncO)ounZF=buY|~54 zri|~;^!l1__xOVEF#hcr*iX2in+8)Uov-+&;fk-nN|>ew$pK$e0mF5vJpyOmfNx+X z;XcM1*B+F|Ly||(NxqmFk7*r&d+~eeUylo$G1kkLUf=I<32Xt5>=s!Azr&Hb!PoaS zL?p`keYXqYQ$Xtfn#GMDDY5*>u8&}G_k~7#%(pk1xeafQbw%f9i+mq0+gw)c(Gy|j zw~JjY?hdc=lTqz&Kt=H?<7yy^SNW+3`#aQsCWjO`zT2nSzYFesoAm7x+CA(a@ibQ43CZlZ1Jo|Kl%_7xnm5guK1zKN17 zkFF;zHLZ6YyKjeRpk&+D;u$bdGQSuo89;!@>#%4ee6j422L3Uj_>iye@Z0Pi?}!je zP&tVy`fOqQ>Jn2DmN5vj?5j)i$EPHwBw4;XAN%T__xr+qbqt@AX#48+hgxRXjMPH8 zxo+PJ7Vr5D<|L3Cx4MqA&SYnu4n1?6b;yLAb#k3N&#}$u50ryT-mBo%yP8I+>u~73 zfo7>2sb1YqO=>g!K;1zb)LnGBx|^<7_fv~{fSyzj(#vWOy{Y!n=Wt;N^@NC3Pm2`w zj2NJv6{FR25Xt++JoQUatX_nh<0TPPFN@Xc*Wz;Z3fwoZiaXWo;$ih0v0c3>TGd

ZUeN^6J9?4VqNd{F&G zu2X-L=c&KS3)KI}P3jYQzxq^eQ=e&DX%zJn*V(pGZy|8K$KeA>xYhm)*2_p(9|Ncj zHp@udd5uO0!ey|5k`cA?Jlu;}h*vD8UA9|k2|a4LmFRQPQ(H)ha)NEgB*_BXj`7Lf zwjGlw(`-8?0k+u^I79iydWc!WWv>ChlkUI0fKJBi#Zj~q({Dce#(%C=OH;#)X4iIC!3I1VOy zOxq`L5+TL*iFMhDt6h6NY*|<{Vf)0I$+@AKOyPTT-7+36;qswhlJ5v&J>s;Shg+wa zJv;2Zc@F<0{~UPj2$fP|w*XFqYq^=2W-CTCAM-WBl0=?1C%&S1#g;}K%#O*dVlw1_ zBZvb@IIeCZ-7W4;ZM3H)$M&>b1&NQ}rLyFH%x%CjB5PI2vE;t*mo6RN5q?LgV>VbJ zyx5@-UgEG&3zT=TqYyj{_A*C~A|{8^zv^B&csi~ee;szI80zg69Z~vfE4`MZg8*Jn z!Ofu+?UT~uHY@n~H#+Ee8wWSWr}VfiCH^u*e7Ter~?czAEV))J0|fLWdGWc{hv?}Z?BMA>gAijw>D5v$$W!mg|I&F zPqr1*ELJz4z^Bx4HN<52G>lv}MOdStl|>XL95YVoZu*;|OA%m(a-2F1{y=eEMurxZe)nn#t3nRF;d)MWQu!?EV0cPC7w32#f!#C;tgZ8_{bO| zJ~PHjWsH+PW4!ER)`@e_5t>UWC)5X@U5XG;%QqNDnItL+VUsRC zGjkMcSKu!C3O^`=U`Jquehd!<^gRt7X@!&eHf$YfN0TOv)WM`hnL2QEE5h4W!HI51 z`=#T2L&j<3Hp<9joIyQ}Gb!CTiv}1=nI{Q!K$x{#2WP?uf+!(7$Or&=7dFeu`8Kad`OMNST;FKD)E$pNV!L2SR8&<`Bar>gReaE7nlzeTjH) z{%X%|$-$9SXrvfa5&^X=+27M7`ObHQMtsb8EHuj3qoNVtLLN67@e7~Kq1~eqUsrywXnY1}d=_YY z4rqKHXxtApz5q17_#L5<10}58-7PoDr=p?}Uzi?08lOA{8u88Q_lm|xfyS*sBfe(A z*AGMB+Rl=X1C2YsBQ)Z}+hd~fk*H|Ice}@r#)prAMtlkUeWFpcLrNdSwf!OLEB*}M z{$CIq{Z~Y6fASrn5uY<33ytDHR5apiXuIVF5P8u4)Xx%)MI*JOn&>?|D^ z*dZ?QPfa7Z;C-y@1B51gh;R`7=?~%5%Dsd{XFp4HLelrrT1mosNz?%(ic%<6JO)i= zK(OND?C+HZuVSXJfd;RG25*1{Z-NGIfd+4XM>N0}=EtPLucOicAE9}bvlg$$b~k= ztdFtNIYtTwc`gjeJ*bnoe*F>N9un#YYJ>VA46OH%{|`PMc^@r5;HR9UpL1m){vr7y zSuE$IL*tWfRQq1vUP+GU~IV5oMvJXQB!p`YvQe$EX+t`9+;7wYHy jQ0)bw+6zOqKM2+SFjV^^dz4G<{x1u`Yz)C%E>Hb`w&>X} literal 28498 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 ZZr;+u(sR=a6uaDgv*Qs}T9}=L{{b~7O=tiB delta 2481 zcma)-d3;V+8pogC?>RRTv4%+AEW{F$G_luCEU`;cyb?63NFu~mJHcx!Vz1k=#;CR< zb}A{g6`es_bf!A3Wu{cMV{ENi+RxCcIg-?0^T)h@ywCUEbMAT0`91gkp5@=*+)eE7 zK>t7qW*vXJMcvpq(ywAvr<9~9cUr9(wL==jMs@D$P4C(@CCZyRG^vxfYfNH%R0Bvg zJ7TA~5m5~T{C^!P>JgO~8!$@BNi7j4%U#{`4m!Gdy;70jp6gXBV5`UPpmg6T8{8(z zo&Z!%czOkYx3G7;%0UYc%ABCZ_AlKN7PQ2@-#fHbzP<7Ul-*id62miVZDOpUWc|1YO-Cez-{?~%h|JQ=<_sJ1O-TK4>OWZTb(OBwkNREHT_mcmC zBkr}7q~K(G%HvKi=V>%(BEqJ!+-;e<$F~dhupiMVMhs3O78ekQtBA+fNWeWb#6vWu zK{HlBb5_OktbrB`M@vSb6{FFbacILvXv=13&qQ=!A0%=RI&l~}GZ$Sr9o;w|-MJKf zxB|&sgA^9v1#X9zM=-$0lSt=ZF_5<~SQSGw2rp}G4A%sV(ALP*j>u9kvNatebue;t z2uAC0Nt$oJWSMun56lbtSd1^*I>GC#ti)(X6ioVX%S}Wam?1!@aaX&)$5qA zcd$@@z!F3F@{J#snkrakLb2RLV})soRi-`GnC@^*D%P2PSZ^}0(d6K_W+t|nx!7t7 z@TMum+vfKuG#9bc+`w*gAA8J0>~#eDoa)%`gy0<~3SW@$ySQ(p?}{jVNR&vGXOtjun2Q*xsb2BJJam$ZERa)}j|7R(An9HD z1d>=23$Rc;R^nj1YAFn9wrGp&df_@m{7auT8_HG=Hz%Lb{n8vhiEyg_n#5$3B?&VZ z%aVj!xrR{c3zNp&5u}RH&{)^m}~H@wl}LgsS=FVXk#bZ&l1hhT=>gghtyW_XFN+ER~60AmL?_Z?aS>`BN&@ z)KZxSo2>>j7G--E6U*H1(qgkdvW5Iuf^gpIeL-sD zPZEt!B^DQ@AwHAl_*`1!3+aGMl7!2)ZdYXh{vt#1rR3m-jKkM55jSNzzLoj-n=Ha@ zDZpLXhI_ID-^(66kp1}QTeH#;hDX*Yev(RfZ0qrhMBs_kwW7xn?%IJX>~`u6I`0b< z!wOQ46{QL*Nf;|j1cM}+)g*@1r7?r08AGH!L!}ozlFSH6W2C&yD4EJSvY2(nWj%S9 z(Q=Hja)J%y6l3I~edaRbB}B6h<#)jlVucB@SPxmGvATTbU-im@dT} zD2JFKA8?3V;4t|&N62GlLYR#}jzkD^P}4eEJjbFD$6NQCU|nw_lCn9;+S?TCU{jG{ z?JkS6k;54n&6$|ZJS?+uHD_Tn=im+cu#VxQbz1%^0rXbGF}|cxjXI6-XdAO9`GoISVGqc47RhZE%L5*?=R7PAtrL?+t2M!)Oh ze?ZAP&e zqj8w3&)EhNk43gQt<;8Cr;V^hn_!zZ#U5>jVr`D2`aI5S3tZ8bxT&r1K-=P9wvqjy zZ5XU=8LI6WuN~P|JF|l(v4?h}SG#kV_TV_}$vo}FCEApEy=>QGYG!55uZJ`6Tn+~#9gLSmNsAKgdovuT5kq*<>bhs91mKN$r zJ)}8$*3P)3xq3^-=#M(ql+y{Os=i{X>m*ZOC!6Lv#iZKk)#zy^N2i-yona>E95YF0 knkkxR@^zNkXyX>0ZQfR25yvi4Y3gf{)_P9W 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 NDD#y}(`Ekke*i0*wd4Q* literal 34515 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 W)gN__JAbbWSGn*$7yiYC8~+=|69;tw delta 7896 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 s7hokzU-zY-3;VlpK$L*gqP}rS$R diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/tmp/compileJava/previous-compilation-data.bin b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/tmp/compileJava/previous-compilation-data.bin index 6739ffedd4572cdf22f50ebed64717a0bb784f77..0b48f0906c04843f323e83b2fd11e2735709d497 100644 GIT binary patch delta 814 zcmZY6Z&1r|0LSrbn}voS78TXB{%93``lGVO3M)~vF!`^wZ26PrPh_IWFIK2I?(Bi; zVV>~7ee16BXiq$n?GDKu=gzsyGY>rV_S7D{?(_6>pHF0TN)y2&zf?5y`u8i@;py_| zrxWIcX)u@}x$D%b$uG6@PVImm}ZP*U0 zFb-Ghvtpi6Y~e~&VFz|%7i_3T4R)gzd$1REsK-7uU_b0=!~q<{AvkatO*n$1IELdm zfs;6e(`behEpVX~XW)hhZ8(c_IFAcx$3=M2flIiIE4YeIT*GyA;RbxTiEiA&ZS=s8 XJLtt-DComI+(!WY7!bDb16}`Ld`x4j delta 814 zcmZY6TS$`u7{>9O=ApE{%<@p1UoOj>9oAZ!&DGRg(@wTBOFNjk4t8>_JZ;XJ?pw|y zLN|-BAOs~My7=lMLUhngS0aQVI0%A@ZtOy#)4$tx@#DFCAD(ye$(yK2^m~N-sesP= zyJK}B!kkjmFy1pO)*37Y zR-;vwlA0!TPE<|jJRMuK@IEqY-q1Eb7>IZvIG>yMVT{usl@u!54y7K=D6!BWH{0n4yl zcG(2whp_w7h;aoHu@XsGh1Ez#3R01VHCPKJR7i)2b;yuMjOte*;r}@#ySN^i*no}5 z!X{)xgB)ze7Hq{fXt7ZsR;5P1{5lv`D3tHiX3vF= TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) - .append("') AND TO_DATE(?, '") + .append("') AND TO_DATE(") + .append(timeField) + .append(", '") + .append(ORACLE_DATE_FORMAT) + .append("') < TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) .append("')"); @@ -278,9 +282,13 @@ public class ProductionDataSyncServiceImpl implements DataSyncService { .append(timeField) .append(", '") .append(ORACLE_DATE_FORMAT) - .append("') BETWEEN TO_DATE(?, '") + .append("') >= TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) - .append("') AND TO_DATE(?, '") + .append("') AND TO_DATE(") + .append(timeField) + .append(", '") + .append(ORACLE_DATE_FORMAT) + .append("') < TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) .append("')"); // 构建排序子句 diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSummaryServiceImpl.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSummaryServiceImpl.java index 78249bb..232e3e3 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSummaryServiceImpl.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSummaryServiceImpl.java @@ -13,6 +13,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -50,6 +53,10 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService { */ private static final String BO_EU_DWD_ORDER_RKD_HZ = "BO_EU_DWD_ORDER_RKD_HZ"; + // 日期格式化 + private static final SimpleDateFormat YEAR_MONTH_FORMAT = new SimpleDateFormat("yyyy-MM"); + private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); + // 缓存物料分类列表 private List distinctMaterialList = null; @@ -71,11 +78,27 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService { if (dateRange == null || dateRange.getStartDate() == null || dateRange.getEndDate() == null) { LOGGER.info("未提供有效时间范围,按当前日期计算"); + String startDate = LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern("yyyy-mm-dd")); + // 1. 计算并保存各板块物料采购总额、总量、单价(按月存储) +// monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); + newmonthlyMaterialSummaryBySegment(startDate, bkgs, distinctList); + + // 2. 根据年月汇总板块、基地、年月、当期、上期、同期数据 +// monthlyBaseSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); + + // 3. 计算并保存各板块物料采购总额、总量、单价(按日存储) +// dailyMaterialSummaryBySegment(year, month, day, currentDate, bkgs, distinctList); + + // 4. 根据日期、入库单号、物料名称分页查询 日期、入库单号、物料编码、物料名称、规格型号、 + // (汇总)入库数量、单位、入库单价、(汇总)入库金额、供应商、订单编号、库存数 +// dailyWarehousingSummary(year, month, day, currentDate, bkgs, distinctList); calculateForCurrentDate(bkgs, distinctList); } else { LOGGER.info("开始执行采购数据多维度汇总计算(时间范围: {} 至 {})", dateRange.getStartDate(), dateRange.getEndDate()); - + String startDate = DATE_FORMAT.format(dateRange.getStartDate()); + //计算并保存各板块物料采购总额、总量、单价(按月存储) + newmonthlyMaterialSummaryBySegment(startDate, bkgs, distinctList); // 计算月度维度数据(按月遍历) calculateMonthlyData(dateRange, bkgs, distinctList); @@ -91,6 +114,117 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService { } } + /** + * 计算并保存各板块物料采购总额、总量、单价(按月存储) + * 逻辑:按物料名称(WLMC)分组,计算月度采购总额(SUM(JSHJ))、采购总量(SUM(YSSL))和平均单价(采购总额/采购总量) + * @param startDate + * @param bkgs + * @param distinctList + */ + private void newmonthlyMaterialSummaryBySegment(String startDate, String bkgs, List distinctList) { + try { + LOGGER.info("开始计算{}物料采购月度汇总数据,板块公司:{}", startDate, bkgs); + + // 1. 删除该月份已存在的汇总数据(避免重复) + String deleteSql = "DELETE FROM " + PROCUREMENT_DETAILS_YEAR_MONTH + + " WHERE BKGS = ? AND YEARMONTH >= ?"; + int update = DBSql.update(deleteSql, new Object[]{bkgs, startDate}); + LOGGER.info("采购_年月采购明细:{}物料采购月度汇总数据,板块公司:{},删除了{}条数据",startDate, bkgs, update); + + String currentMonthSql = "SELECT CONCAT(YEAR(DJRQ), '-', LPAD(MONTH(DJRQ), 2, '0')) ASyear_month,c.Year AS year,c.Month AS month,c.WLMC AS WLMC," + + " c.tstotalAmount AS tstotalAmount,c.lptotalAmount AS lptotalAmount,c.totalQuantity AS totalQuantity," + + " ly.tstotalAmount AS LY_tstotalAmount,ly.lptotalAmount AS LY_lptotalAmount,ly.totalQuantity AS LY_totalQuantity," + + " lm.tstotalAmount AS LM_tstotalAmount,lm.lptotalAmount AS LM_lptotalAmount,lm.totalQuantity AS LM_totalQuantity" + + " FROM (" + + " SELECT WLMC,SUM(DHJE) AS tstotalAmount,SUM(JSHJHYF) AS lptotalAmount,SUM(RKSL) AS totalQuantity,YEAR(DJRQ) AS Year,MONTH(DJRQ) AS Month" + + " FROM BO_EU_DWD_ORDER_RKD_HZ" + + " WHERE BKGS = ? AND DJRQ >= DATE_FORMAT(DATE_SUB(?, INTERVAL 1 YEAR), '%Y-%m-%d')" + + " GROUP BY WLMC, YEAR(DJRQ), MONTH(DJRQ)" + + " ) c" + + " LEFT JOIN (" + + " SELECT WLMC,SUM(DHJE) AS tstotalAmount,SUM(JSHJHYF) AS lptotalAmount,SUM(RKSL) AS totalQuantity," + + " YEAR(DJRQ) AS Year,MONTH(DJRQ) AS Month" + + " FROM BO_EU_DWD_ORDER_RKD_HZ" + + " WHERE BKGS = ? AND DJRQ >= DATE_FORMAT(DATE_SUB(?, INTERVAL 1 YEAR), '%Y-%m-%d')" + + " GROUP BY WLMC, YEAR(DJRQ), MONTH(DJRQ)" + + ") ly ON c.WLMC = ly.WLMC AND c.Month = ly.Month AND ly.Year = c.Year - 1" + + " LEFT JOIN (" + + " SELECT WLMC,SUM(DHJE) AS tstotalAmount,SUM(JSHJHYF) AS lptotalAmount,SUM(RKSL) AS totalQuantity," + + " YEAR(DJRQ) AS Year,MONTH(DJRQ) AS Month" + + " FROM BO_EU_DWD_ORDER_RKD_HZ" + + " WHERE BKGS = ? AND DJRQ >= DATE_FORMAT(DATE_SUB(?, INTERVAL 1 YEAR), '%Y-%m-%d')" + + " GROUP BY WLMC, YEAR(DJRQ), MONTH(DJRQ)" + + ") lm ON c.WLMC = lm.WLMC" + + " AND ( (c.Month > 1 AND c.Year = lm.Year AND c.Month = lm.Month + 1) OR(c.Month = 1 AND c.Year = lm.Year + 1 AND lm.Month = 12))" + + "WHERE c.Year = YEAR(?)" + + "ORDER BY c.Year, c.Month"; + List currentMonthData = DBSql.getMaps(currentMonthSql, bkgs, startDate,bkgs,startDate,bkgs,startDate,startDate); + + if (currentMonthData==null){ + return; + } + + // 4. 批量插入 + List bos = new ArrayList<>(); + for (RowMap currentMonthRow : currentMonthData) { + String wlmc = currentMonthRow.getString("WLMC"); + BO bo = new BO(); + bo.set("BKGS",bkgs);//板块 + bo.set("WLMC",wlmc);//物料名称 + bo.set("YEARMONTH",currentMonthRow.getString("ASyear_month"));//年月(YYYYMM) + if (bkgs.equals("泰山石膏")) { + Double tstotalAmount = currentMonthRow.getDouble("tstotalAmount"); + double tstotalAmount1 = tstotalAmount==null?0.0: tstotalAmount; + Double totalQuantity = currentMonthRow.getDouble("totalQuantity"); + double totalQuantity1 = totalQuantity==null?0.0: totalQuantity; + bo.set("CGZE", tstotalAmount1);//采购总额 + bo.set("CGZL",totalQuantity1);//采购总量 + if (tstotalAmount1!=0 && totalQuantity1!=0) { + bo.set("PJDJ", tstotalAmount1/totalQuantity1);//平均单价 + }else { + bo.set("PJDJ", 0);//平均单价 + } + bo.set("TQCGZE",currentMonthRow.getString("LY_tstotalAmount"));//同期采购总额 + bo.set("SQCGZE",currentMonthRow.getString("LM_tstotalAmount"));//上期采购总额 + }else { + Double tstotalAmount = currentMonthRow.getDouble("lptotalAmount"); + double tstotalAmount1 = tstotalAmount==null?0.0: tstotalAmount; + Double totalQuantity = currentMonthRow.getDouble("totalQuantity"); + double totalQuantity1 = totalQuantity==null?0.0: totalQuantity; + bo.set("CGZE", tstotalAmount1);//采购总额 + bo.set("CGZL",totalQuantity1);//采购总量 + if (tstotalAmount1!=0 && totalQuantity1!=0) { + bo.set("PJDJ", tstotalAmount1/totalQuantity1);//平均单价 + }else { + bo.set("PJDJ", 0);//平均单价 + } + bo.set("TQCGZE",currentMonthRow.getString("LY_lptotalAmount"));//同期采购总额 + bo.set("SQCGZE",currentMonthRow.getString("LM_lptotalAmount"));//上期采购总额 + } + bo.set("TQCGZL",currentMonthRow.getString("LY_totalQuantity"));//同期采购总量 + bo.set("SQCGZL",currentMonthRow.getString("LM_totalQuantity"));//上期采购总量 + bos.add(bo); + } + + if (!bos.isEmpty()) { + // 批量插入数据 + int batchSize = 1000; + for (int i = 0; i < bos.size(); i += batchSize) { + int end = Math.min(i + batchSize, bos.size()); + List batch = bos.subList(i, end); + SDK.getBOAPI().createDataBO(PROCUREMENT_DETAILS_YEAR_MONTH, batch, UserContext.fromUID("admin")); + } + } + + LOGGER.info("成功保存{}条月度汇总数据,板块:{}", bos.size(), bkgs); + + } catch (Exception e) { + String errorMsg = String.format("月度汇总计算失败(开始时间=%s,板块=%s): %s", startDate, bkgs, e.getMessage()); + LOGGER.error(errorMsg, e); + throw new RuntimeException(errorMsg, e); + } + } + /** * 获取物料分类列表(带缓存) */ @@ -153,7 +287,7 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService { Date currentDate = new Date(System.currentTimeMillis()); // 1. 计算并保存各板块物料采购总额、总量、单价(按月存储) - monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); +// monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); // 2. 根据年月汇总板块、基地、年月、当期、上期、同期数据 monthlyBaseSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); @@ -201,7 +335,7 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService { LOGGER.info("计算月度汇总数据: {}-{};上月:{};上年同期:{}", year, month, yearLastMonth, lastYearMonth); // 1. 计算并保存各板块物料采购总额、总量、单价(按月存储) - monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); +// monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); // 2. 根据年月汇总板块、基地、年月、当期、上期、同期数据 monthlyBaseSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList); diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSyncServiceImpl.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSyncServiceImpl.java index d847e5d..7838fa1 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSyncServiceImpl.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/PurchaseDataSyncServiceImpl.java @@ -282,13 +282,17 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService { // 如果时间字段存在,添加时间范围条件 if (timeField != null && !timeField.isEmpty()) { - conditionBuilder.append(" AND TO_DATE(") + conditionBuilder.append("TO_DATE(") .append(timeField) .append(", '") .append(ORACLE_DATE_FORMAT) - .append("') BETWEEN TO_DATE(?, '") + .append("') >= TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) - .append("') AND TO_DATE(?, '") + .append("') AND TO_DATE(") + .append(timeField) + .append(", '") + .append(ORACLE_DATE_FORMAT) + .append("') < TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) .append("')"); @@ -308,9 +312,13 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService { .append(timeField) .append(", '") .append(ORACLE_DATE_FORMAT) - .append("') BETWEEN TO_DATE(?, '") + .append("') >= TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) - .append("') AND TO_DATE(?, '") + .append("') AND TO_DATE(") + .append(timeField) + .append(", '") + .append(ORACLE_DATE_FORMAT) + .append("') < TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) .append("')"); // 构建排序子句 diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleCountDimensionImpl.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleCountDimensionImpl.java index f5fab24..ec0ca73 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleCountDimensionImpl.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleCountDimensionImpl.java @@ -86,7 +86,7 @@ public class SaleCountDimensionImpl implements DataSummaryService { cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); dateRange.setEndDate(cal.getTime()); // calculateForCurrentDate(bkgs); - calculateMonthlyData(dateRange, bkgs); +// calculateMonthlyData(dateRange, bkgs); // 处理营业收入数据 newProcessRevenueData(dateRange,bkgs); // 处理销量销额数据(分页查询) @@ -138,7 +138,13 @@ public class SaleCountDimensionImpl implements DataSummaryService { try { // 第一个SQL:查询应收账款数据 - String receivableSql = "SELECT t1.QYGS AS QYGS, t1.BKGS AS BKGS, DATE_FORMAT( t1.RQ, '%Y-%m' ) ASyear_month, t1.RQ AS max_rq, SUM( t1.YSYE ) AS YSZK" + + String receivableSql = "SELECT t1.XSZZ AS XSZZ, t1.QYGS AS QYGS, t1.BKGS AS BKGS," + + " DATE_FORMAT( t1.RQ, '%Y-%m' ) ASyear_month, t1.RQ AS max_rq, SUM( t1.YSYE ) AS YSZK," + + " SUM(t1.LJHK) AS LJHK,SUM(t1.LJXS) AS LJXS," + + " CASE " + + " WHEN SUM(t1.LJXS) != 0 THEN SUM(t1.LJHK) / SUM(t1.LJXS)" + + " ELSE NULL " + + " END AS hkl" + " FROM BO_EU_BNBM_DATALINKUP_XS_YSL t1" + " INNER JOIN (" + " SELECT QYGS, BKGS, DATE_FORMAT( RQ, '%Y-%m' ) ASyear_month, MAX( RQ ) AS max_rq" + @@ -149,11 +155,12 @@ public class SaleCountDimensionImpl implements DataSummaryService { " WHERE t1.RQ >= ? AND t1.RQ < ? AND t1.BKGS = ?" + " GROUP BY t1.QYGS,t1.BKGS,DATE_FORMAT ( t1.RQ, '%Y-%m' ),t1.RQ"; + String startDate = DATE_FORMAT.format(dateRange.getStartDate()); String endDate = DATE_FORMAT.format(dateRange.getEndDate()); LOGGER.info("应收账款数据查SQL: {}", receivableSql); - List receivableMaps = DBSql.getMaps(receivableSql, startDate, endDate, bkgs, startDate, endDate, bkgs); + List receivableMaps = DBSql.getMaps(receivableSql, startDate, endDate, bkgs,startDate, endDate, bkgs); if (receivableMaps.isEmpty()) { LOGGER.info("{}应收账款数据无数据,停止分页查询", bkgs); @@ -212,7 +219,10 @@ public class SaleCountDimensionImpl implements DataSummaryService { bo.set("BKGS", bkgs); bo.set("QYGS", receivable.getString("QYGS")); bo.set("YSZK", yszk); - bo.set("KCJE", kcje); + bo.set("CCJE", kcje); + bo.set("LJHK", receivable.getString("LJHK")); + bo.set("LJXS", receivable.getString("LJXS")); + bo.set("HKL", receivable.getString("HKL")); bos.add(bo); } @@ -265,7 +275,7 @@ public class SaleCountDimensionImpl implements DataSummaryService { )); String querySql = "SELECT QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, SUM(ZSSL) AS XL," + - " SUM(SSJERMB) AS XE, SUM(XSSL) AS TSXL, YEARMONTH" + + " SUM(SSJERMB) AS XE, SUM(XSSL) AS TSXL, NMNY ,YEARMONTH" + " FROM " + SALES_DETAIL_TABLE + " WHERE DZRQ >= ? AND DZRQ < ? AND BKGS = ?" + " GROUP BY QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, YEARMONTH"; @@ -302,7 +312,9 @@ public class SaleCountDimensionImpl implements DataSummaryService { }else { bo.set("XL", map.getDouble("XL")); } - bo.set("XE", map.getDouble("XE")); + Double ssjermb = map.getDouble("SSJERMB"); + Double xe = map.getDouble("XE"); + bo.set("XE", ssjermb!=null?ssjermb:xe!=null?(xe*0.13):0.00); bo.set("MC_JC", Math.random()%2==0?"面材":"基材"); bo.set("JZ_GZ", Math.random()%2==0?"家装":"工装"); bos.add(bo); @@ -354,7 +366,7 @@ public class SaleCountDimensionImpl implements DataSummaryService { (existing, replacement) -> existing )); - String querySql = "SELECT QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, SUM(SSJERMB) as YYSR, YEARMONTH" + + String querySql = "SELECT QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, SUM(NMNY) as YYSR, YEARMONTH" + " FROM " + SALES_DETAIL_TABLE + " WHERE DZRQ >= ? AND DZRQ < ? AND BKGS = ?" + " GROUP BY QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, YEARMONTH"; @@ -682,8 +694,8 @@ public class SaleCountDimensionImpl implements DataSummaryService { String querySql = "SELECT QYGS, XSZZ, SHENGQU, SHIQU, QX, QCYE, LJXS, LJHK, YSYE, " + "ZLFX0_60, ZLFX60_1, ZLFX1_2, ZLFX2_3, ZLFX3_4, ZLFX4_5, ZLFX5 " + "FROM " + RECEIVABLE_DETAIL_TABLE + " " + - "WHERE DATE(RQ) = ? AND BKGS = ? "; -// +"LIMIT " + PAGE_SIZE + " OFFSET " + offset; + "WHERE DATE(RQ) = ? AND BKGS = ? " + + "LIMIT " + PAGE_SIZE + " OFFSET " + offset; LOGGER.info("应收账款数据查询第{}页,SQL: {}", page + 1, querySql); List maps = DBSql.getMaps(conn, querySql, lastDayOfMonth, bkgs); @@ -724,7 +736,11 @@ public class SaleCountDimensionImpl implements DataSummaryService { // 批量新增BO if (!bos.isEmpty()) { - SDK.getBOAPI().createDataBO(BO_EU_XS_YSZK, bos, UserContext.fromUID("admin")); + for (int i = 0; i < bos.size(); i += BATCH_SIZE) { + int end = Math.min(bos.size(), i + BATCH_SIZE); + List batchList = bos.subList(i, end); + SDK.getBOAPI().createDataBO(BO_EU_XS_YSZK, batchList, UserContext.fromUID("admin")); + } totalCount += bos.size(); LOGGER.info("应收账款数据第{}页处理完成,本页{}条记录,累计{}条", page + 1, bos.size(), totalCount); } diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.java index c2b8779..ba1238e 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.java @@ -218,13 +218,17 @@ public class SaleDataSyncServiceImpl implements DataSyncService { // 如果时间字段存在,添加时间范围条件 if (timeField != null && !timeField.isEmpty()) { - conditionBuilder.append(" AND TO_DATE(") + conditionBuilder.append("TO_DATE(") .append(timeField) .append(", '") .append(ORACLE_DATE_FORMAT) - .append("') BETWEEN TO_DATE(?, '") + .append("') >= TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) - .append("') AND TO_DATE(?, '") + .append("') AND TO_DATE(") + .append(timeField) + .append(", '") + .append(ORACLE_DATE_FORMAT) + .append("') < TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) .append("')"); @@ -244,9 +248,13 @@ public class SaleDataSyncServiceImpl implements DataSyncService { .append(timeField) .append(", '") .append(ORACLE_DATE_FORMAT) - .append("') BETWEEN TO_DATE(?, '") + .append("') >= TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) - .append("') AND TO_DATE(?, '") + .append("') AND TO_DATE(") + .append(timeField) + .append(", '") + .append(ORACLE_DATE_FORMAT) + .append("') < TO_DATE(?, '") .append(ORACLE_DATE_FORMAT) .append("')"); // 构建排序子句 @@ -801,6 +809,13 @@ public class SaleDataSyncServiceImpl implements DataSyncService { bo.set(key, map.get(key)); } } + //修改产量类型1 + if ("龙牌".equals(map.getString("BKGS")) + && ("装饰石膏板".equals(map.getString("LB_1")) || "鲁班装饰万能板".equals(map.getString("LB_1")))){ + bo.set("LB_1","石膏板"); + } else if ("泰山石膏".equals(map.getString("BKGS")) && ("装饰板".equals(map.getString("LB_1")))) { + bo.set("LB_1","石膏板"); + } bos.add(bo); }