From a1b0e368d8b486a86c7b702ae0ae9a5ee50319dd Mon Sep 17 00:00:00 2001 From: liwenxuan <1298531568@qq.com> Date: Wed, 7 Aug 2024 11:48:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E8=81=94=E8=A1=A8=E5=8D=95=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=8C=83=E5=9B=B4=E6=95=88=E6=9E=9C-=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=8B=A5=E6=9C=89=E8=80=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logs/zxxy-ERROR-2024-03-21_1.log.gz | Bin 1958 -> 0 bytes logs/zxxy-ERROR-2024-03-22_1.log.gz | Bin 5466 -> 0 bytes logs/zxxy-ERROR-2024-03-25_1.log.gz | Bin 1911 -> 0 bytes logs/zxxy-ERROR-2024-03-26_1.log.gz | Bin 1461 -> 0 bytes logs/zxxy-ERROR-2024-03-27_1.log.gz | Bin 1460 -> 0 bytes logs/zxxy-ERROR-2024-03-28_1.log.gz | Bin 1661 -> 0 bytes logs/zxxy-INFO-2024-03-20_1.log.gz | Bin 1283 -> 0 bytes logs/zxxy-INFO-2024-03-21_1.log.gz | Bin 5280 -> 0 bytes logs/zxxy-INFO-2024-03-22_1.log.gz | Bin 10832 -> 0 bytes logs/zxxy-INFO-2024-03-25_1.log.gz | Bin 4976 -> 0 bytes logs/zxxy-INFO-2024-03-26_1.log.gz | Bin 2322 -> 0 bytes logs/zxxy-INFO-2024-03-27_1.log.gz | Bin 2092 -> 0 bytes logs/zxxy-INFO-2024-03-28_1.log.gz | Bin 7781 -> 0 bytes logs/zxxy-WARN-2024-03-21_1.log.gz | Bin 1958 -> 0 bytes logs/zxxy-WARN-2024-03-22_1.log.gz | Bin 5466 -> 0 bytes logs/zxxy-WARN-2024-03-25_1.log.gz | Bin 1911 -> 0 bytes logs/zxxy-WARN-2024-03-26_1.log.gz | Bin 1461 -> 0 bytes logs/zxxy-WARN-2024-03-27_1.log.gz | Bin 1460 -> 0 bytes logs/zxxy-WARN-2024-03-28_1.log.gz | Bin 1661 -> 0 bytes .../controller/AssociatedFormsController.java | 2 +- .../lowcode/mapper/FieldRecordMapper.java | 3 + .../com/hxgk/lowcode/mapper/UserMapper.java | 6 +- .../CustomerFormTableSingleFieldValue.java | 51 ++ .../hxgk/lowcode/model/entity/FieldBean.java | 10 + .../lowcode/service/CustomerFormService.java | 2 +- .../com/hxgk/lowcode/service/UserService.java | 2 + .../service/impl/CustomerFormServiceImpl.java | 512 ++++++++++++++++-- .../lowcode/service/impl/UserServiceImpl.java | 9 +- .../resources/mapper/FieldRecordMapper.xml | 11 + src/main/resources/mapper/UserMapper.xml | 8 +- 30 files changed, 570 insertions(+), 46 deletions(-) delete mode 100644 logs/zxxy-ERROR-2024-03-21_1.log.gz delete mode 100644 logs/zxxy-ERROR-2024-03-22_1.log.gz delete mode 100644 logs/zxxy-ERROR-2024-03-25_1.log.gz delete mode 100644 logs/zxxy-ERROR-2024-03-26_1.log.gz delete mode 100644 logs/zxxy-ERROR-2024-03-27_1.log.gz delete mode 100644 logs/zxxy-ERROR-2024-03-28_1.log.gz delete mode 100644 logs/zxxy-INFO-2024-03-20_1.log.gz delete mode 100644 logs/zxxy-INFO-2024-03-21_1.log.gz delete mode 100644 logs/zxxy-INFO-2024-03-22_1.log.gz delete mode 100644 logs/zxxy-INFO-2024-03-25_1.log.gz delete mode 100644 logs/zxxy-INFO-2024-03-26_1.log.gz delete mode 100644 logs/zxxy-INFO-2024-03-27_1.log.gz delete mode 100644 logs/zxxy-INFO-2024-03-28_1.log.gz delete mode 100644 logs/zxxy-WARN-2024-03-21_1.log.gz delete mode 100644 logs/zxxy-WARN-2024-03-22_1.log.gz delete mode 100644 logs/zxxy-WARN-2024-03-25_1.log.gz delete mode 100644 logs/zxxy-WARN-2024-03-26_1.log.gz delete mode 100644 logs/zxxy-WARN-2024-03-27_1.log.gz delete mode 100644 logs/zxxy-WARN-2024-03-28_1.log.gz diff --git a/logs/zxxy-ERROR-2024-03-21_1.log.gz b/logs/zxxy-ERROR-2024-03-21_1.log.gz deleted file mode 100644 index 54f7cd8c0d9ac3d282579dc8159956e0af31389e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1958 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 diff --git a/logs/zxxy-ERROR-2024-03-22_1.log.gz b/logs/zxxy-ERROR-2024-03-22_1.log.gz deleted file mode 100644 index d74f9c4cbb1ba5d90fc10f0fc72ba9002fd16168..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5466 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 diff --git a/logs/zxxy-ERROR-2024-03-25_1.log.gz b/logs/zxxy-ERROR-2024-03-25_1.log.gz deleted file mode 100644 index 30d970a0bde124f8bcfaad34378315f539f2474f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1911 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 POZ>k9O)4j`||A?H+=l zU?|3BBadvMSjbOO}vgx>i~>$J(4 zXhvap(4;F$n&E{vo=m<@JRzqDruag2zN6paMem~ko(v7+ewo0x6r)m znRkBS>6xTA9$gWdY9_dMKB0dusM2041))kYKJ~6JOKAL~$3afx4P&OfKkyQx1oJ8S zvPhCs!2m;!bBhZLCWX)*!3#y-zS%us;Bk82oKB13&1r-g$qWlLRY8)%(GRizfg!8pl}ak@0bO zdzMNF)aaK_Cx?v&X?01r+r2`JFU2+Wf0|NQW(=YGxfIr>P1q%Z zHCWxE&s5Jue40Hwmz$z&Mh9VJd|Nk7lVHsbYN3NRsO7*u?tsH0MeA=P13nb#CZt95 zi>eH|6?HeD!BcI>n3xP~1VK=S8+Bd=wsCaJ@tl!iykv^TCni5lb_$7D{#?eV7qlNq zXwN(w^BLv@3Pmx^q7cUc!R@Nde<Se&%FwH=Eq+jnuNE9hdX-S3(HE@Q(q;HC%Q+#l3E0#Rd~4uY z3*+v?AVd)gesA@{{r&ls`iyY*;9-O#n$RhD;nQlAoi-U#yH$>~F3~xj^-!!n&PP8g zcT)D&-Ox)kw}aIpO@-9x1Y8n)nb41z$FOM5cPvgUR)yXcyTb0uoFC!l-tJ9d`WVGm~)}A*&vbI(RWfE^4N;~-PV?H*eenS+?qMNxP8WH3L_nd zVT@BKr;c)gn7?y?t^WPaKgxQRea$upj+4g_4x$$!JiJs|VxkKHEVA@>+E{iq=D^YR z=@Z`OT;|_b+9V8m;ma~`8&eg5ez#p8{&6nNA>3g)uOIjHE(SsO1v$jxR8(U3gZ|^8 z&4|?K2_so8I%WyHs-qb+jP?);HRniJsb67dx5$IugKX^M6WPR%VG-Ih z&68NzL1x+En0M_W4`u7SvM_4~can`BuK;=Hqqf=awH9IYaAy2V*P`qtyt2V|HEm=s z7q-@9dw(oiOi5Crg^&J(TJ! zey^^hPLAPrt5W=e&K9g1;PFDwpbnZ43yFrC-?E0%n#4Ptn+zL(ewmfez zic))}*$tkKo4L#SnJ~;cnlL=I-Kmg;u4Ys2ZgQVdW-M%e5pn1F6PwQN+GD>$ZJWnu zWY|4$Er>`OBO7`sX6|C7j7Vmh-#I<~{c>&0LbC*M=wiMwG3IeF~c@fqICOh zO)F5%qG2gyv8bZa?bI9#tgbCqBiq*CFaZg`&3&!qai@3qdj?^BpYOb^C+F&zy|XS} O;{OeNVS&ix9smG3Hq}S~ diff --git a/logs/zxxy-ERROR-2024-03-28_1.log.gz b/logs/zxxy-ERROR-2024-03-28_1.log.gz deleted file mode 100644 index c4c40ce793d1962eb69ef38328122177d2a847a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1661 zcmaiwc{~#e9KcmCp&rdyJbai4!}B`ien=&os~mGCgyhJz+zEvgbIqLPXb9yDYb@Gf z88d*m z+5+ASJM$01sUcEv^G>c(_)ttVjR-Uw#f(-luQ8jYrhD$YA*c|m^UuxLZI4MkHl z!{1-EyIMbxV^FFeDR2fw3-%h?pFUU6L*!7`Hv5l`I5lppb8?292gWn#ouphfTFQK0 z%rw;1(j95j`Mxr%N9L+^?Bk{~w_%+M^JgP^pc4od{_-;wTW3&rOfpH}-3Ep>NUMj#m*UR zvdetxlYa*h`LVGO$?HT-X(z*Iu2Gys&KoY);SI&5s0t>&Ab(+*D8r!(_hkr0NVLhmq6>}{WqcDarroTcUa zP?c~Ir@e)2=*h(Unn_y9GW_}^Cn&2WyNfm9uG=aRnf5Gm=EL<*T%&uRGiEK;cw)-X zfh)bTW+5(`N4;T+Z2Hl?pPy_mt9tAg6flPCN zrSF&PJD&SCwXdfRbeeMnt`qBXD~@IlBTM<2zEdfH!Fe*+M!xZ$_?zg-uP1be=nI>f zc>*@4JnLe*jzJE-wpt2MEVOkhNPYESrc&Tr8>iUrrI9mF%n$g~>W{-Eb*UTD_CzFam;OW?{^dT>EIL zoy`3NR&eFQfJvbQdV0|dVfqBs9FBxTjk|3%kDJ15IW6}Y?qBL#Blv4)@s;^j4Prpi+!N|?Xt1XHdZ6) za($@4XmA6wV(JrDG=YFO6n=)-CabioV2Z-xG3*Cr94G}ETC*02#PrSFKD7j*+(}Rs z0J5D4ocA|dk?zFaJ-p>!>lj=d{(835z4`JIT0@=!s+6~UCUzqy7*BMO1HevvQKBxw z2=jJUU4|xRz=5upMIzRbzv_EE(P-yft{pk&*wGsm&*eEQ`4wx~iA&-(DKE|lMw0&1(zXXJhzdVhmgZG2Q3{)KXdrAJKq$bikxnXKoa_k zzdVw=f}xE27q5ic0!LYMShu6x>LENfq(?6(Hnc-LI{*@{9xe2N-^cjWP1f5~o)lf- z@!N`H=1FmsH_&kJIpZDddRpIElLQAcGyc!8AJc8J4`$`Y@^HI}Ryl)Z{*$dd^v}B| zM4tnePed5-r`a+Q1{1=tJ>MZg(Qnu4?RP?7P5;&;hpjFOo96y;-;2!jj4=2yo|S26 z70{Lr2+KSO{I-}k#N?(X2z#dG83%0VQ$5uh;BrNx7rq+7C&Z z(iE)ag84HD*&~gfRwM!}0&lPU<>#N!HdgnbST7e8-11PKlf{LA#N4uw0+s^e3-&-g za1zjmlM-n_%{CNBp4>qa6MsRW&!4%Va3MsD5IoC2zB7K2aKU{ZO7iE32}VNpcLv_H zpOGjCX#!>^*_Gpn@v(!Desa^8PlW6{B2q{~p&ZdDAW1N#$piCgb&S(>)9jKjQn-l-&O+{!aKY2; z`-hv?_kJ2D*#}+DX%NT>_$QrL=1A5jeG(gC7(-LXHB(OZIwx}igJi`57;_%NN%nOj zl}`C8$?yI@LHTQpMhkgQo}>iA@2Q~a4>{|Z?751>W}8TTv`8ZQxC`WHZGw!EV8NV4 zA|VkKB$l_8h+Cd4cc3j~w~5B1^>Z)psMv|CTR7%~FIm7>FnEs0lKC*}In8^9lcMPl zzRD){3jyo1$J?`IW5`JW2&lBlljJ;`<%4ho(v|PiG#!|>mveHUDl0=gP=$*5zf&!? z+E~|l9IMxLCtF!vTLn6XKfsRDjXx-2byQiT3x6PyCd7_v)^+X=8t@PE2L;GgC5w*z zK~6VaRT@5?KX5#3LCa}1S^tMW$dR_@bnXudkb&Cu2g)S9#?@J^qb2FVXsb=qLs6+t z(!DBV#WS7j%w!oi6|E!rj4w&@yvI#0rQ1;MZQEGs%QbNCRX$@obx-1+NnFOaK%2C`iHkFIV3{vWlWirSvZ{YfE!wWr^1GG(8(eWXfTDA$Lrls6W=bU6m&+ zjfs$*CYuEEE_mJaZX?sQA+~ieE3U1CJYB3rz#pSC&hNXKefc;6KjgVTg7WW$D6@g6 z=F9nyD!9sZa1Y#kMehlT)S+5Ea9@SmDbi4fYWKi>6{>TTr;3E(TFfS~jONd@5N3Fq z26ea281=o?L7HK;zt!2qYG`%7v(>Fmfz+YaP6BMa)!FhJ?*W=^by@%&u+`bnk*ONl zBW-nZVbUY$sJBvRi8Shp7cFdcN>FW;q?1zU25o4qR$*18&@HacN*-sIH6(57UDkk9 zDt1|0g>~-)hf)eH)hgd$wp0q0AnaiiX745k;}3KVNq5|ZKPX~7uXr^9Q}EeO)ugd)ACqp;SU}v{v2{HmV($Y@_a9 zEe@?6JJ7AE9J|oA^1`w0X_{xa@?>K;71>f$W?Xu#$d+8Ik4kX9y7z>9Q<2?rJ1tY9 touPJ$#L7_ZPG=L|6>7K0H^t{Ix5@jJgNo1p57~Y3`CqWLrL2f6001&Aeue-5 diff --git a/logs/zxxy-INFO-2024-03-21_1.log.gz b/logs/zxxy-INFO-2024-03-21_1.log.gz deleted file mode 100644 index c7c59a0ee5a713850b38a73d5005faae7f4a674d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5280 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 diff --git a/logs/zxxy-INFO-2024-03-25_1.log.gz b/logs/zxxy-INFO-2024-03-25_1.log.gz deleted file mode 100644 index 864839608b21cda9f7c9a314dfc9e97e376cb1b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4976 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 U&uUW=grCT}Cs7hKO-@esKSfWSsQ>@~ diff --git a/logs/zxxy-INFO-2024-03-26_1.log.gz b/logs/zxxy-INFO-2024-03-26_1.log.gz deleted file mode 100644 index 2c839a9abbfa4f9126db9b8dc1ddf240e2b76d1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2322 zcmV+t3GMbDiwFP!000000PS0CZ`-;R{=5s^|3DN5t_#GhWW8AShF!RMS##GWM$)w( z++d(3#?~T}9wp^v!`*M+p-9=XEje)_yV=lwiA+-GdCuX{d7)Ip>zUnN+r?JfK|?{~ zgouO&pGe5A(COL9IYK_4;>rE^21oqP=K;kZ)!+VX7KJ`ZLe5YNUCJ9nHby10X)Gsx zBew*Z*u%!(t&WLc{OI`dubi7DPbsNX#LK&KmTORRkh6*srq?B(KU}?ja17-0COEi z6ooM&eiGi&9(ohd+c$Ga4_jTY0+Nd{CNttsDE9dSPbi)w$;>qIhwRT;$OnQa+~*M> zpRzCsNfiD|0_Wo&2n!-A(D04Cv&BN*@=UY+=4xwvl7MVRfQXiaZ~Ul+F} z^Sx4zD^JcVWm)kId{4Ha3V<1BNzuM4@IHWmI3?m?3srIzYy&$+RS4NCJ$ud3E9#xYLF0RQaVK z>vEDN0l#A(IKSD=_GSh^e#En44a2_zDbKLCAhmsR`Mn5S#FYts=eUayzk5i#T2*Hc zxGSpe6w<6#wX+A@6;*c%X;rJb&C~o`+!a;7PXHlNq{-w->R|Lh=frH>Y1a^G>uNDg z&-Lsb^_WsuYg6@Ie~;<7xb0Nc0ek2%pN#*~9#aCjRkq!Ej|u3OYrn!C)9GNdvi06g zj|q@%tJc=9qQ{g#P(yu>9#cYhYi->h=`jJ&sw{@TbC3BtxNYt+UkAs>dd%0s@~J)M z9@*}y$8?}1=+u%Px9>3l+cexA_Lvs-K)1>kQx;yfs!iHP&xVGy4H;~SY>VDgzt!Gt zB0CD>8A(8>$aC&5!RpX2bD9pe<>6jA&Et!U^NW|##KSdsNnKxJU4S&-W=4!P<+6KV z3w)K0Re1^X6EwU+$wbgQMDKk%%eHEGLI0V86UbstK3~}e5vb~dKOzR>u)&MPQ0V;w zs#zQnHpXXZ6b(2yI2FhFiYo;sIESvCq%l<5n{VhL2BSa!^aqlxyPeh+htpYv{}wCl zVBl2#hH_XA9l^5|Mkj(#FDRIyxw=fk_Z;gj`p-}o&+mG_UOfY_(KsP-awuiIe^B0Y z_?M5T?;8!@a(&lzuW`t3A+|REG^Vi41WfnmQdsFCaVFqeK%}_i;s*O;$k`b7;Qj%B zqRE5@gX~(1EDmKFwM|dTR$^Mx!CDTsaNCAy(NmWj;0T}L#jisN-siI-q(W>iPi4@S z=N6zrQf!eMwLRD9`j%bg`H#8XW)_EOobV|XCy=359<$=q$1nzCRIF9*(R~`aj7|cYNh)wZ zj=3L7=2BvOxR@zJuU@V2jZ*wLWmwSbi24aWBeGdl9^TJt5q8^;BOK9)j)_e1)hHX+WJtDEjBRo|% z$LVawMS@R3q)$c>)g_9S9q?0yRWYxEo>2?|AbhJ3@N_atZSXFg8#j_N9pi)Q3HJs@mw8q=yD}J&)U6`olbXqB}+TRLI-^kM)0T} zPM~2_MJU9aBd$i973)-rY!+`McG4mt&FW>nm+1Z*^|}$xV$QldM~V(G?8=Ykp?uc z(N>+KbhfRev#|Y;QR)N4}NvVtg!wJZX^!GE2~F9lRHH(I#klCV&hU?U93liTbtVWjBpqKy$VDh|H@tDtR z{4I^JIM3Ho7Ru>3rp~OF5An@T&oFw9gFVN6H6ME~NXhT(_V=-O0k^%UkG=N=x%#p9 so^ki7>gvbdd&b?Ts;eJ+7jSp_Uk9vGRkwlM{m0(_1-%F+e^5LC00H}tmH+?% diff --git a/logs/zxxy-INFO-2024-03-27_1.log.gz b/logs/zxxy-INFO-2024-03-27_1.log.gz deleted file mode 100644 index 8237b16757229292af5ccf3723eb54751135a125..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2092 zcmV+{2-Ei;iwFP!000000PR{^Z`(K)e%=E84@6;LTp(tpSia6;2X35fGutLc(rF*u zU_nca&5cZYDJgb#G4tE!@FH8bB{xo#rn_ifB9qklzH@kVE|i>3*K2mYI(AzvG?X-o ziHvFRfiQlBPR~xx5%R?pPZr}F9E!Ow0*c?8|Gn8PWIlE$ATxn?0n zEJDPO*)8p&R{_0!wS;V7(5L`X$T21};!h~{#hr*Lp2YFYb@4m>?~I9o6tVC{2*{_L z#f*gPKMFVI@SFF*Co#z81c*qAVMlpDWN=C4E%Rx1 zk0U!Y{3xbyQ%OL_e9ZV7j)D$pjHsUJqG3Sk7z&?+6A`KFH&>gsznn?+k4{H42*3e9(^1ApluWvam&BU5-YPPSaygJXA|rwW znXmxQga~n8UG{0h=s<0ueVfrqS=<^$a9uAU)S96Y}t2A~~Js z0ePhY)emA8j2Mq4;WQ>QFe{0#g`DO=w|70sdqaB%(OneNDV@&5oXT9lA_r4|BO<0O z5D5h6c zUvr-}k@Z>rKDeY+hr=Zy~l;|2n3y%>+#Mw_I4|B9RtwEg@3Og}lN37;-j-Jy_h~ z4>X>LV4$z9$n22T=+JE|*+xuFIasZM>-f-vY1uWGJK%_z;nlAr1>O_0ETloKu1{&` zdb^o{21%tM6CL3zj^pIvwi{0aTd~=o7u>Rl2B*qDm3In>S$dtvr{#F}B($fW9rFp{ zJ_L$&H*32jaD3twdH&bjZa0ggB#On9$`i;?8;@Cb>OG6V7zJyMdvxxHuA-BKW|B(W ziz4AO#au~@j#e{y=*6oIzLSd|B^*n79a2BWXGArt#>0Es=Y-S>7}s~IW&tuQl(=8I z%LaabdDX&sO}KgZb%Z_*>6oY#UyQPIjYjh7`ADk}o#Gh@>(R%`=(O{NJ+P zbCk?xLdN(MMEYbDQd^=}*?~AUSOxPY=sDRC0K)eQ0rw|k)CTXexp5~cx8XdJluhG! zdh4eI3Fji#wG_4)eJ9l(56p0N_i97fZLJdq+>$w4yM2JF7w)tidI6b1IJK15h*fvq zV4{Dg@vN*T`ln6~oP_rw?6jYRaBmbrOX0_B23%)Z-MPlFE71qGYG`A zqX{&OrU-?Y(-&s6TCmQf$ivoG*({HbAHpWM4-41SG!J57Zc^J0W!{aoJcO;!k%3t; zSdL_Ryfw(BjMB8zp*Eq`Eh+!8ucDoFIghz&?60K zTBB_`NA7HX{j-z65AWE^J5)=iH=P%{#`Y4Ek?KF(;{VnyK(wkysXXS;{KKju=O|ie z`#<-GkNj`@$j%qxpCz$W?zeVQgP-JRbR0$&2u@lx*2avs0$lZQW4`-m`O zVAF$$rR4W)JXyBK)q-i$JU+t1w!rmE(aMoAJp?m*Fp@_^FHO&!9{zmUHYSN#h&gmI zXG|RPV5VMwRW5Z?va)s{E)rhNtVjb~+ba!!15*bP38;DF_Mo>EZ1uj81QGtI{||%+ zj~CQWl>Y<#XGqMDW^yKNzAb47idj?)1#OEW8qG$@wjj}s!K&!A2E_z809WU=hR1T= z;_qpM)p@>^vQo~*F>_|Ueu(e3x{lLz+PK~J(9pbk%H;pcNfHNQ&ff`f^EBUC=r0kF z9}4{v8pGd%N$vlY*Y8>2Z;q?Jwfa_&-ZQD{eS1~iXHwPu_NvyON!9wJRV^=okTA4l W(yzr1MtAh(i$4KCabZ>MEdT)KK@EHW diff --git a/logs/zxxy-INFO-2024-03-28_1.log.gz b/logs/zxxy-INFO-2024-03-28_1.log.gz deleted file mode 100644 index 8ce13f419cb5810a601d7b5b4f05d19c1e52940e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7781 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 diff --git a/logs/zxxy-WARN-2024-03-21_1.log.gz b/logs/zxxy-WARN-2024-03-21_1.log.gz deleted file mode 100644 index 54f7cd8c0d9ac3d282579dc8159956e0af31389e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1958 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 diff --git a/logs/zxxy-WARN-2024-03-22_1.log.gz b/logs/zxxy-WARN-2024-03-22_1.log.gz deleted file mode 100644 index d74f9c4cbb1ba5d90fc10f0fc72ba9002fd16168..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5466 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 diff --git a/logs/zxxy-WARN-2024-03-25_1.log.gz b/logs/zxxy-WARN-2024-03-25_1.log.gz deleted file mode 100644 index 30d970a0bde124f8bcfaad34378315f539f2474f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1911 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 POZ>k9O)4j`||A?H+=l zU?|3BBadvMSjbOO}vgx>i~>$J(4 zXhvap(4;F$n&E{vo=m<@JRzqDruag2zN6paMem~ko(v7+ewo0x6r)m znRkBS>6xTA9$gWdY9_dMKB0dusM2041))kYKJ~6JOKAL~$3afx4P&OfKkyQx1oJ8S zvPhCs!2m;!bBhZLCWX)*!3#y-zS%us;Bk82oKB13&1r-g$qWlLRY8)%(GRizfg!8pl}ak@0bO zdzMNF)aaK_Cx?v&X?01r+r2`JFU2+Wf0|NQW(=YGxfIr>P1q%Z zHCWxE&s5Jue40Hwmz$z&Mh9VJd|Nk7lVHsbYN3NRsO7*u?tsH0MeA=P13nb#CZt95 zi>eH|6?HeD!BcI>n3xP~1VK=S8+Bd=wsCaJ@tl!iykv^TCni5lb_$7D{#?eV7qlNq zXwN(w^BLv@3Pmx^q7cUc!R@Nde<Se&%FwH=Eq+jnuNE9hdX-S3(HE@Q(q;HC%Q+#l3E0#Rd~4uY z3*+v?AVd)gesA@{{r&ls`iyY*;9-O#n$RhD;nQlAoi-U#yH$>~F3~xj^-!!n&PP8g zcT)D&-Ox)kw}aIpO@-9x1Y8n)nb41z$FOM5cPvgUR)yXcyTb0uoFC!l-tJ9d`WVGm~)}A*&vbI(RWfE^4N;~-PV?H*eenS+?qMNxP8WH3L_nd zVT@BKr;c)gn7?y?t^WPaKgxQRea$upj+4g_4x$$!JiJs|VxkKHEVA@>+E{iq=D^YR z=@Z`OT;|_b+9V8m;ma~`8&eg5ez#p8{&6nNA>3g)uOIjHE(SsO1v$jxR8(U3gZ|^8 z&4|?K2_so8I%WyHs-qb+jP?);HRniJsb67dx5$IugKX^M6WPR%VG-Ih z&68NzL1x+En0M_W4`u7SvM_4~can`BuK;=Hqqf=awH9IYaAy2V*P`qtyt2V|HEm=s z7q-@9dw(oiOi5Crg^&J(TJ! zey^^hPLAPrt5W=e&K9g1;PFDwpbnZ43yFrC-?E0%n#4Ptn+zL(ewmfez zic))}*$tkKo4L#SnJ~;cnlL=I-Kmg;u4Ys2ZgQVdW-M%e5pn1F6PwQN+GD>$ZJWnu zWY|4$Er>`OBO7`sX6|C7j7Vmh-#I<~{c>&0LbC*M=wiMwG3IeF~c@fqICOh zO)F5%qG2gyv8bZa?bI9#tgbCqBiq*CFaZg`&3&!qai@3qdj?^BpYOb^C+F&zy|XS} O;{OeNVS&ix9smG3Hq}S~ diff --git a/logs/zxxy-WARN-2024-03-28_1.log.gz b/logs/zxxy-WARN-2024-03-28_1.log.gz deleted file mode 100644 index c4c40ce793d1962eb69ef38328122177d2a847a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1661 zcmaiwc{~#e9KcmCp&rdyJbai4!}B`ien=&os~mGCgyhJz+zEvgbIqLPXb9yDYb@Gf z88d*m z+5+ASJM$01sUcEv^G>c(_)ttVjR-Uw#f(-luQ8jYrhD$YA*c|m^UuxLZI4MkHl z!{1-EyIMbxV^FFeDR2fw3-%h?pFUU6L*!7`Hv5l`I5lppb8?292gWn#ouphfTFQK0 z%rw;1(j95j`Mxr%N9L+^?Bk{~w_%+M^JgP^pc4od{_-;wTW3&rOfpH}-3Ep>NUMj#m*UR zvdetxlYa*h`LVGO$?HT-X(z*Iu2Gys&KoY);SI&5s0t>&Ab(+*D8r!(_hkr0NVLhmq6>}{WqcDarroTcUa zP?c~Ir@e)2=*h(Unn_y9GW_}^Cn&2WyNfm9uG=aRnf5Gm=EL<*T%&uRGiEK;cw)-X zfh)bTW+5(`N4;T+Z2Hl?pPy_mt9tAg6flPCN zrSF&PJD&SCwXdfRbeeMnt`qBXD~@IlBTM<2zEdfH!Fe*+M!xZ$_?zg-uP1be=nI>f zc>*@4JnLe*jzJE-wpt2MEVOkhNPYESrc&Tr8>iUrrI9mF%n$g~>W{-Eb*UTD_CzFam;OW?{^dT>EIL zoy`3NR&eFQfJvbQdV0|dVfqBs9FBxTjk|3%kDJ15IW6}Y?qBL#Blv4)@s;^j4Prpi+!N|?Xt1XHdZ6) za($@4XmA6wV(JrDG=YFO6n=)-CabioV2Z-xG3*Cr94G}ETC*02#PrSFKD7j*+(}Rs z0J5D4ocA|dk?zFaJ-p>!>lj=d{(835z4`JIT0@=!s+6~UCUzqy7*BMO1HevvQKBxw z2=jJUU4|xRz=5upMIzRbzv_EE(P-yft{pk&*wGsm&*eEQ`4wx~iA&-(DKE|lMw0&1(zXXJhzdVhmgZG2Q3{)KXdrAJKq$bikxnXKoa_k zzdVw=f}xE27q5ic0!LYMShu6x>LENfq(?6(Hnc-LI{*@{9xe2N-^cjWP1f5~o)lf- z@!N`H=1FmsH_&kJIpZDddRpIElLQAcGyc!8AJc8J4`$`Y@^HI}Ryl)Z{*$dd^v}B| zM4tnePed5-r`a+Q1{1=tJ>MZg(Qnu4?RP?7P5;&;hpjFOo96y;-;2!jj4=2yo|S26 z70{Lr2+KSO{I-}k#N?( dataTitles = customerFormService.getAsfDataTitles(formId,dataTitle,rangeFormula,rangeString,hideFormula,hideString); + ArrayList dataTitles = customerFormService.getAsfDataTitles(key,token,formId,dataTitle,rangeFormula,rangeString,hideFormula,hideString); return JsonData.buildSuccess(dataTitles); diff --git a/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java b/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java index dc53a97..baf20b8 100644 --- a/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java +++ b/src/main/java/com/hxgk/lowcode/mapper/FieldRecordMapper.java @@ -19,4 +19,7 @@ public interface FieldRecordMapper { List> getDataTitles(@Param("asfFormName") String asfFormName, @Param("fields") List toSelectDataTitles); List> getDataTitlesByIds(@Param("asfFormName") String asfFormName, @Param("fields") List toSelectDataTitles,@Param("ids") ArrayList ids); + + // 检查表中是否包含指定字段 + boolean checkFieldExists(@Param("tableName")String tableName, @Param("fieldName")String fieldName); } diff --git a/src/main/java/com/hxgk/lowcode/mapper/UserMapper.java b/src/main/java/com/hxgk/lowcode/mapper/UserMapper.java index b228c27..80b13e3 100644 --- a/src/main/java/com/hxgk/lowcode/mapper/UserMapper.java +++ b/src/main/java/com/hxgk/lowcode/mapper/UserMapper.java @@ -1,6 +1,7 @@ package com.hxgk.lowcode.mapper; +import com.baomidou.dynamic.datasource.annotation.DS; import com.hxgk.lowcode.model.entity.ManCont; import com.hxgk.lowcode.model.entity.Tree; import org.apache.ibatis.annotations.Mapper; @@ -8,9 +9,12 @@ import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper +@DS("hrnew") public interface UserMapper { - ManCont getManContByKey(@Param("key") String key); + ManCont getManContById(@Param("key") String key); List getManContListByAdminOrg(@Param("adminOrg")String adminOrg); + + ManCont getManContByKey(@Param("key") String key); } diff --git a/src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java b/src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java index 707cde1..166f347 100644 --- a/src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java +++ b/src/main/java/com/hxgk/lowcode/model/entity/CustomerFormTableSingleFieldValue.java @@ -13,6 +13,19 @@ public class CustomerFormTableSingleFieldValue { private String field; + private String owner; + + private String org; + + private String creater; + + public String getCreater() { + return creater; + } + + public void setCreater(String creater) { + this.creater = creater; + } public String getValue() { return value; @@ -55,6 +68,41 @@ public class CustomerFormTableSingleFieldValue { public CustomerFormTableSingleFieldValue() { } + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public String getOrg() { + return org; + } + + public void setOrg(String org) { + this.org = org; + } + + public CustomerFormTableSingleFieldValue(String value, String label, String asfMasterId, String field, String owner, String org) { + this.value = value; + this.label = label; + this.asfMasterId = asfMasterId; + this.field = field; + this.owner = owner; + this.org = org; + } + + public CustomerFormTableSingleFieldValue(String value, String label, String asfMasterId, String field, String owner, String org, String creater) { + this.value = value; + this.label = label; + this.asfMasterId = asfMasterId; + this.field = field; + this.owner = owner; + this.org = org; + this.creater = creater; + } + @Override public String toString() { return "CustomerFormTableSingleFieldValue{" + @@ -62,6 +110,9 @@ public class CustomerFormTableSingleFieldValue { ", label='" + label + '\'' + ", asfMasterId='" + asfMasterId + '\'' + ", field='" + field + '\'' + + ", owner='" + owner + '\'' + + ", org='" + org + '\'' + + ", creater='" + creater + '\'' + '}'; } } diff --git a/src/main/java/com/hxgk/lowcode/model/entity/FieldBean.java b/src/main/java/com/hxgk/lowcode/model/entity/FieldBean.java index 0de0a84..74ecbd7 100644 --- a/src/main/java/com/hxgk/lowcode/model/entity/FieldBean.java +++ b/src/main/java/com/hxgk/lowcode/model/entity/FieldBean.java @@ -20,6 +20,16 @@ public class FieldBean { private String comment; private String pattern; private String classify; + private String auxiliary; + + + public String getAuxiliary() { + return auxiliary; + } + + public void setAuxiliary(String auxiliary) { + this.auxiliary = auxiliary; + } public String getField() { return field; diff --git a/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java b/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java index 2cb9a56..b1b82a4 100644 --- a/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java +++ b/src/main/java/com/hxgk/lowcode/service/CustomerFormService.java @@ -16,7 +16,7 @@ public interface CustomerFormService { ArrayList getFieldRecord(String key, String token, String[] optionsValue3FieldArray); - ArrayList getAsfDataTitles(String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString); + ArrayList getAsfDataTitles(String key, String token,String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString); ArrayList getAsfDataTitlesByIds(String AsfFormId,ArrayList> ids); Boolean queryIfOrgOrPersonContainsCurrentUser(String key, String token, String targetOrgOrPerson, String condition, String currentUser); diff --git a/src/main/java/com/hxgk/lowcode/service/UserService.java b/src/main/java/com/hxgk/lowcode/service/UserService.java index 3ef8471..66de025 100644 --- a/src/main/java/com/hxgk/lowcode/service/UserService.java +++ b/src/main/java/com/hxgk/lowcode/service/UserService.java @@ -14,6 +14,8 @@ public interface UserService { */ UserDetail getUserDetailFromRedis (Map userInfo); + ManCont getManContById(String id); + ManCont getManContByKey(String key); List getManContListByAdminOrg(String adminOrg); diff --git a/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java b/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java index 459f44d..f3bef96 100644 --- a/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java +++ b/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java @@ -21,6 +21,8 @@ import org.apache.commons.lang3.StringUtils; import org.apache.http.protocol.HTTP; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.io.IOException; @@ -42,6 +44,8 @@ public class CustomerFormServiceImpl implements CustomerFormService { @Autowired private HrService hrService; + private static final Logger logger = LogManager.getLogger(); + @Override //根据用户权限查询表单列表 public Tree getCustomerFormList(String key, String token) { @@ -580,13 +584,48 @@ public class CustomerFormServiceImpl implements CustomerFormService { TreeMap treeMapx = new TreeMap<>(); treeMapx.putAll(treeMap); String lastValue = treeMapx.get("value").toString(); + String org = ""; + String owner = ""; + String creater = ""; treeMap.remove("value"); + boolean containsOrg = false; + boolean containsOwner = false; + boolean containsCreater= true; + for (String key : treeMap.keySet()) { + if (key.equals("org")) { + containsOrg = true; + break; + } + } + for (String key : treeMap.keySet()) { + if (key.equals("owner")) { + containsOwner = true; + break; + } + } + if(containsOrg){ + org = treeMapx.get("org").toString(); + } + if(containsOwner){ + owner = treeMapx.get("owner").toString(); + } + if(containsCreater){ + creater = treeMapx.get("creater").toString(); + } + StringBuilder labelBuilder = new StringBuilder(); - for (Object value : treeMap.values()) { - labelBuilder.append(value.toString()).append(" "); + for (Map.Entry entry : treeMap.entrySet()) { + Object value = entry.getValue(); + Object key = entry.getKey(); + if(key.toString().equals("org")||key.toString().equals("owner")||key.toString().equals("creater")){ + + }else{ + labelBuilder.append(value.toString()).append(" "); + } + } String label = labelBuilder.toString().substring(0, labelBuilder.length() - 1); - return new CustomerFormTableSingleFieldValue(lastValue, label,""); + return new CustomerFormTableSingleFieldValue(lastValue, label,"","",owner,org,creater); } //数据标题截取最后一个空格 public static String removeAfterLastSpace(String str) { @@ -600,7 +639,7 @@ public class CustomerFormServiceImpl implements CustomerFormService { 关联表单组件下拉数据标题选项获取(所有) */ @Override - public ArrayList getAsfDataTitles(String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString) { + public ArrayList getAsfDataTitles(String key, String token,String formId, String dataTitle,String rangeFormula, String rangeString, String hideFormula, String hideString) { //关联表单的id String AsfFormId = formId; //根据formId(cfid)查询关联表单表名 @@ -622,11 +661,319 @@ public class CustomerFormServiceImpl implements CustomerFormService { String[] titleArr = title.split(":"); toSelectDataTitles.add(titleArr[2]); } + toSelectDataTitles.add("creater"); //如果被关联的表单暂未配置dataTitle,则默认id if(toSelectDataTitles.size()==0){ toSelectDataTitles.add("id"); } - List> dataTitleMapList = fieldRecordMapper.getDataTitles(asfFormName,toSelectDataTitles); + //开始处理数据范围的编辑条件 + List> dataTitleMapList = new ArrayList<>(); + if(StringUtils.isBlank(rangeFormula)){//没有配置数据范围条件,直接返回全部数据标题 + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + }else{ + HashMap leftOperatorsAndRight = splitString(rangeFormula); + if(null!=leftOperatorsAndRight){ + String left = leftOperatorsAndRight.get("left"); + //System.out.println(left); + String operator = leftOperatorsAndRight.get("operator"); + //System.out.println(operator); + String right = leftOperatorsAndRight.get("right"); + //System.out.println(right); + if(operator.equals("包含")){ + if(right.equals("数据拥有者")){ + try { + // 可能抛出异常的代码 + String[] leftArr = left.split(":"); + if(leftArr.length==2){//orgOrPerson:102 组织机构条件 例:企管部包含数据拥有者 + String targetOrgOrPerson = leftArr[1]; + + + List> filteredDataTitleMapList = new ArrayList<>(); + //此时条件为数据拥有者owner需判断关联表单是否含有owner字段,若不存在,则不过滤 + boolean owner = fieldRecordMapper.checkFieldExists(asfFormName, "owner"); + if(owner){//有owner字段 也就是数据拥有者 + //增加owner条件 + toSelectDataTitles.add("owner"); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + for(TreeMap map :dataTitleMapList){ + if(StringUtils.isBlank(map.get("owner").toString())){//本条数据owner为空 + //filteredDataTitleMapList.add(map); + }else{//owner有值 + //本条数据的owner 值为hr系统某个用户的key + String ownerValue = map.get("owner").toString(); + ownerValue = "owner:"+ownerValue; + /*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 + * 1.获取ownerValue的maindeparment(主部门), + * 2.从1获取到的主部门id向上查询到所有祖先部门数组, + * 3.查看targetOrgOrPerson是否在2查询到的数组中 + * 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 + * */ + Boolean ownerInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, operator, ownerValue);//有效参数: targetOrgOrPerson + if(ownerInOrg){ + filteredDataTitleMapList.add(map); + } + } + } + dataTitleMapList = filteredDataTitleMapList; + + }else{//返回所有数据标题 + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//全部数据标题 + } + for(TreeMap item : dataTitleMapList){ + System.out.println(item); + } + }else if(leftArr.length==3){// roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件 + if(leftArr[0].equals("roleid")){ + }else if(leftArr[0].equals("formField")){ + + }else{//不应该存在的东西 + logger.error("数据范围条件查询出现异常直接返回全部数据标题--不应该存在的东西" + leftOperatorsAndRight); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + } + }else if(leftArr.length==4){// formField:44:table1722576832462:input1722576838785 子表字段条件 + + } + + } catch (Exception e) { + e.printStackTrace(); + logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + } + }else if(right.equals("数据所属部门")){ + try { + // 可能抛出异常的代码 + } catch (Exception e) { + logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题d + } + }else{//无法处理的情况,直接返回全部数据标题 + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + } + }else if(operator.equals("不包含")){ + if(right.equals("数据拥有者")){ + try { + // 可能抛出异常的代码 + String[] leftArr = left.split(":"); + if(leftArr.length==2){//orgOrPerson:102 组织机构条件 例:企管部不包含数据拥有者 + String targetOrgOrPerson = leftArr[1]; + + + List> filteredDataTitleMapList = new ArrayList<>(); + //此时条件为数据拥有者owner需判断关联表单是否含有owner字段,若不存在,则不过滤 + boolean owner = fieldRecordMapper.checkFieldExists(asfFormName, "owner"); + if(owner){//有owner字段 也就是数据拥有者 + //增加owner条件 + toSelectDataTitles.add("owner"); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + for(TreeMap map :dataTitleMapList){ + if(StringUtils.isBlank(map.get("owner").toString())){//本条数据owner为空 + filteredDataTitleMapList.add(map); + }else{//owner有值 + //本条数据的owner 值为hr系统某个用户的key + String ownerValue = map.get("owner").toString(); + ownerValue = "owner:"+ownerValue; + /*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 + * 1.获取ownerValue的maindeparment(主部门), + * 2.从1获取到的主部门id向上查询到所有祖先部门数组, + * 3.查看targetOrgOrPerson是否在2查询到的数组中 + * 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 + * */ + Boolean ownerInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, operator, ownerValue);//有效参数: targetOrgOrPerson + if(!ownerInOrg){ + filteredDataTitleMapList.add(map); + } + } + } + dataTitleMapList = filteredDataTitleMapList; + + }else{//返回所有数据标题 + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//全部数据标题 + } + for(TreeMap item : dataTitleMapList){ + System.out.println(item); + } + }else if(leftArr.length==3){// roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件 + if(leftArr[0].equals("roleid")){ + }else if(leftArr[0].equals("formField")){ + + }else{//不应该存在的东西 + logger.error("数据范围条件查询出现异常直接返回全部数据标题--不应该存在的东西" + leftOperatorsAndRight); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + } + }else if(leftArr.length==4){// formField:44:table1722576832462:input1722576838785 子表字段条件 + + } + + } catch (Exception e) { + e.printStackTrace(); + logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + } + }else if(right.equals("数据所属部门")){ + try { + // 可能抛出异常的代码 + } catch (Exception e) { + logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + } + }else{//无法处理的情况,直接返回全部数据标题 + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + } + }else{// == != > < 等符号的情况 + if(right.equals("数据拥有者")){ + if(operator.equals("==")){ + try { + // 可能抛出异常的代码 + String[] leftArr = left.split(":"); + if(leftArr.length==2){//orgOrPerson:102 组织机构条件 例:企管部不包含数据拥有者 + String targetOrgOrPerson = leftArr[1]; + + + List> filteredDataTitleMapList = new ArrayList<>(); + //此时条件为数据拥有者owner需判断关联表单是否含有owner字段,若不存在,则不过滤 + boolean owner = fieldRecordMapper.checkFieldExists(asfFormName, "owner"); + if(owner){//有owner字段 也就是数据拥有者 + //增加owner条件 + toSelectDataTitles.add("owner"); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + for(TreeMap map :dataTitleMapList){ + if(StringUtils.isBlank(map.get("owner").toString())){//本条数据owner为空 + //filteredDataTitleMapList.add(map); + }else{//owner有值 + //本条数据的owner 值为hr系统某个用户的key + String ownerValue = map.get("owner").toString(); + ownerValue = "owner:"+ownerValue; + /*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 + * 1.获取ownerValue的maindeparment(主部门), + * 2.从1获取到的主部门id向上查询到所有祖先部门数组, + * 3.查看targetOrgOrPerson是否在2查询到的数组中 + * 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 + * */ + Boolean ownerIsTarget = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, operator, ownerValue);//有效参数: targetOrgOrPerson + if(ownerIsTarget){ + filteredDataTitleMapList.add(map); + } + } + } + dataTitleMapList = filteredDataTitleMapList; + + }else{//返回所有数据标题 + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//全部数据标题 + } + for(TreeMap item : dataTitleMapList){ + System.out.println(item); + } + }else if(leftArr.length==3){// roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件 + if(leftArr[0].equals("roleid")){ + }else if(leftArr[0].equals("formField")){ + + }else{//不应该存在的东西 + logger.error("数据范围条件查询出现异常直接返回全部数据标题--不应该存在的东西" + leftOperatorsAndRight); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + } + }else if(leftArr.length==4){// formField:44:table1722576832462:input1722576838785 子表字段条件 + + } + + } catch (Exception e) { + e.printStackTrace(); + logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + } + }else if(operator.equals("!=")){ + try { + // 可能抛出异常的代码 + String[] leftArr = left.split(":"); + if(leftArr.length==2){//orgOrPerson:102 组织机构条件 例:企管部不包含数据拥有者 + String targetOrgOrPerson = leftArr[1]; + + + List> filteredDataTitleMapList = new ArrayList<>(); + //此时条件为数据拥有者owner需判断关联表单是否含有owner字段,若不存在,则不过滤 + boolean owner = fieldRecordMapper.checkFieldExists(asfFormName, "owner"); + if(owner){//有owner字段 也就是数据拥有者 + //增加owner条件 + toSelectDataTitles.add("owner"); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + for(TreeMap map :dataTitleMapList){ + if(StringUtils.isBlank(map.get("owner").toString())){//本条数据owner为空 + filteredDataTitleMapList.add(map); + }else{//owner有值 + //本条数据的owner 值为hr系统某个用户的key + String ownerValue = map.get("owner").toString(); + ownerValue = "owner:"+ownerValue; + /*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 + * 1.获取ownerValue的maindeparment(主部门), + * 2.从1获取到的主部门id向上查询到所有祖先部门数组, + * 3.查看targetOrgOrPerson是否在2查询到的数组中 + * 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 + * */ + Boolean ownerIsTarget = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, operator, ownerValue);//有效参数: targetOrgOrPerson + if(!ownerIsTarget){ + filteredDataTitleMapList.add(map); + } + } + } + dataTitleMapList = filteredDataTitleMapList; + + }else{//返回所有数据标题 + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//全部数据标题 + } + for(TreeMap item : dataTitleMapList){ + System.out.println(item); + } + }else if(leftArr.length==3){// roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件 + if(leftArr[0].equals("roleid")){ + }else if(leftArr[0].equals("formField")){ + + }else{//不应该存在的东西 + logger.error("数据范围条件查询出现异常直接返回全部数据标题--不应该存在的东西" + leftOperatorsAndRight); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + } + }else if(leftArr.length==4){// formField:44:table1722576832462:input1722576838785 子表字段条件 + + } + + } catch (Exception e) { + e.printStackTrace(); + logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + } + }else{//无法处理的情况,直接返回全部数据标题 + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + } + }else if(right.equals("数据所属部门")){ + if(operator.equals("==")){ + try { + // 可能抛出异常的代码 + } catch (Exception e) { + logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + } + }else if(operator.equals("!=")){ + try { + // 可能抛出异常的代码 + } catch (Exception e) { + logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + } + }else{//无法处理的情况,直接返回全部数据标题 + logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + } + }else{//这边对于数字的情况>,>=,<,<=是生效的,文字的情况则不生效,==和!=条件必定生效 + try { + // 可能抛出异常的代码 + int a = 1/0; + } catch (Exception e) { + logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + } + } + } + } + } + // 自定义比较器用以排序dataTitleMapList Comparator customComparator = new Comparator() { @@ -674,7 +1021,43 @@ public class CustomerFormServiceImpl implements CustomerFormService { return toReturnSortedDataTitleList; } + public static HashMap splitString(String str) { + List operators = Arrays.asList("==", ">", ">=", "<", "<=", "!=", "不包含", "包含"); + for (String operator : operators) { + if (str.contains(operator)) { + int index = str.indexOf(operator); + String left = str.substring(0, index).trim(); + String right = str.substring(index + operator.length()).trim(); + HashMap resultMap = new HashMap<>(); + resultMap.put("left", left); + resultMap.put("operator", operator); + resultMap.put("right", right); + return resultMap; + } + } + return null; + } + private List> getDataTitles(String asfFormName,ArrayList toSelectDataTitles){ + List> newDataTitles = new ArrayList<>(); + List> dataTitles = fieldRecordMapper.getDataTitles(asfFormName, toSelectDataTitles); + //没有owner的,creater的key改为owner,有owner但owner为空的,creater的value给owner + processDataTitles(dataTitles); + return dataTitles; + } + + public static void processDataTitles(List> dataTitles) { + for (TreeMap map : dataTitles) { + if (!map.containsKey("owner")) { + Object creatorValue = map.get("creater"); + map.put("owner", creatorValue); + } else if (map.get("owner") == null) { + map.put("owner", map.get("creater")); + } else if(map.get("owner") != null&&StringUtils.isBlank(map.get("owner").toString())){ + map.put("owner", map.get("creater")); + } + } + } /* @@ -703,6 +1086,7 @@ public class CustomerFormServiceImpl implements CustomerFormService { String[] titleArr = title.split(":"); toSelectDataTitles.add(titleArr[2]); } + toSelectDataTitles.add("creater"); //如果被关联的表单暂未配置dataTitle,则默认id if(toSelectDataTitles.size()==0){ toSelectDataTitles.add("id"); @@ -797,49 +1181,97 @@ public class CustomerFormServiceImpl implements CustomerFormService { } } } - + //返回boolean currentUser的maindeparment是否在targetOrgOrPerson及其直接父级组织列表中 @Override - public Boolean queryIfOrgOrPersonContainsCurrentUser(String key, String token, String targetOrgOrPerson, String condition, String currentUser) { - //获取用户信息 从redis中根据userkey和usertoken拿到userdetail - Map keytokenmap = new HashMap<>(); - keytokenmap.put("userkey",key); - keytokenmap.put("usertoken",token); - UserDetail userDetail = userService.getUserDetailFromRedis(keytokenmap); - - String[] targetOrgOrPersonArr = targetOrgOrPerson.split(":"); - Tree orgAndManTree = hrService.getOrgAndManTree(); - if(condition.equals("==")){ - if(targetOrgOrPersonArr[1].equals(userDetail.getWmKey().toString())){ - return true; - }else{ - return false; - } - }else if(condition.equals("!=")){ - if(!targetOrgOrPersonArr[1].equals(userDetail.getWmKey().toString())){ - return true; - }else{ - return false; - } - }else{ - //条件设置的组织机构人员范围 - List ancestorIds = orgAndManTree.getAncestorIds(targetOrgOrPersonArr[1]); - //人员所在地主部门 - if(userDetail.getMaindeparment().toString().equals(targetOrgOrPersonArr[1])){ - return true; - }else{ - int count = 0; - for(String id : ancestorIds){ - if(id.equals(targetOrgOrPersonArr[1])){ - count++; - } + public Boolean queryIfOrgOrPersonContainsCurrentUser(String key, String token, String targetOrgOrPerson, String condition, String right) { + if(right.equals("当前用户")){ + //获取当前用户信息 从redis中根据userkey和usertoken拿到userdetail + Map keytokenmap = new HashMap<>(); + keytokenmap.put("userkey",key); + keytokenmap.put("usertoken",token); + UserDetail userDetail = userService.getUserDetailFromRedis(keytokenmap); + + String[] targetOrgOrPersonArr = targetOrgOrPerson.split(":"); + Tree orgAndManTree = hrService.getOrgAndManTree(); + if(condition.equals("==")){// + if(targetOrgOrPersonArr[1].equals(userDetail.getWmKey().toString())){ + return true; + }else{ + return false; } - if(count > 0){ + }else if(condition.equals("!=")){ + if(!targetOrgOrPersonArr[1].equals(userDetail.getWmKey().toString())){ return true; }else{ return false; } + }else{ + //条件设置的组织机构人员范围 + List ancestorIds = orgAndManTree.getAncestorIds(targetOrgOrPersonArr[1]); + //人员所在地主部门 + if(userDetail.getMaindeparment().toString().equals(targetOrgOrPersonArr[1])){ + return true; + }else{ + int count = 0; + for(String id : ancestorIds){ + if(id.equals(targetOrgOrPersonArr[1])){ + count++; + } + } + if(count > 0){ + return true; + }else{ + return false; + } + } + } + }else{// 1.ownValue + String[] rightArr = right.split(":"); + if(rightArr[0].equals("owner")){ + if(condition.equals("==")){//李文轩==数据拥有者 + String ownerKey = rightArr[1]; + System.out.println(targetOrgOrPerson); + return targetOrgOrPerson.equals(ownerKey); + }else{ + String ownerKey = rightArr[1]; + //targetOrgOrPerson + //根据ownerKey先获取用户的maindepartment + ManCont manContById = userService.getManContByKey(ownerKey); + String maindepartment = manContById.getMaindeparment().toString(); + //调用方法判断 + + /* 1.获取ownerValue的maindepartment(主部门), + * 2.从1获取到的主部门id向上查询到所有祖先部门数组, + * 3.查看targetOrgOrPerson是否在2查询到的数组中 + */ + Tree orgAndManTree = hrService.getOrgAndManTree(); + //所有祖先部门 + List ancestorIds = orgAndManTree.getAncestorIds(maindepartment); + ancestorIds.add(maindepartment); + int count = 0; + for(String str : ancestorIds){ + if(str.equals(targetOrgOrPerson)){ + count++; + } + } + //count=0代表owner不在指定的部门内 + if(count==0){ + return false; + }else{ + return true; + } + } + + + }/*else if(){ + + }*/else{ + logger.error("queryIfOrgOrPersonContainsCurrentUser的参数right的值走到了else分支"); + return false; } + } + } @Override diff --git a/src/main/java/com/hxgk/lowcode/service/impl/UserServiceImpl.java b/src/main/java/com/hxgk/lowcode/service/impl/UserServiceImpl.java index 06823de..d9e9924 100644 --- a/src/main/java/com/hxgk/lowcode/service/impl/UserServiceImpl.java +++ b/src/main/java/com/hxgk/lowcode/service/impl/UserServiceImpl.java @@ -100,12 +100,17 @@ public class UserServiceImpl implements UserService { } @DS("hrnew") + @Override + public ManCont getManContById(String key) { + return userMapper.getManContById(key); + + } + @Override public ManCont getManContByKey(String key) { - System.out.println("1"); return userMapper.getManContByKey(key); - } + @DS("hrnew") @Override public List getManContListByAdminOrg(String adminOrg) { diff --git a/src/main/resources/mapper/FieldRecordMapper.xml b/src/main/resources/mapper/FieldRecordMapper.xml index 0067ab2..a3a5a57 100644 --- a/src/main/resources/mapper/FieldRecordMapper.xml +++ b/src/main/resources/mapper/FieldRecordMapper.xml @@ -36,4 +36,15 @@ + + \ No newline at end of file diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml index d56c255..36616c8 100644 --- a/src/main/resources/mapper/UserMapper.xml +++ b/src/main/resources/mapper/UserMapper.xml @@ -3,7 +3,7 @@ - select * from man_cont where id=#{key} and state = 1 @@ -15,4 +15,10 @@ + + \ No newline at end of file