From ce3ab7e749113f5936a226d534ed211a21b5765c Mon Sep 17 00:00:00 2001 From: shilei <798989044@qq.com> Date: Thu, 24 Apr 2025 16:02:16 +0800 Subject: [PATCH] =?UTF-8?q?#EC=5FHJ158#=20=E6=9C=80=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WEB-INF/lib/jsdk22.jar | Bin 45438 -> 0 bytes src/com/api/dito/hrm/HrmConvertActionApi.java | 10 + .../at/SendForword2CurrentOperatorCmd.java | 224 +++ .../at/SendWithdRaw2CurrentOperatorCmd.java | 212 +++ .../BatchRequestSubmitSendPortalCmd.java | 80 + .../dito/card/SendRemark2CardCmd.java | 79 + .../dito/card/SendRequest2CardCmd.java | 172 +++ .../dito/sendtodo/RequestBaseInfoUtil.java | 180 +++ .../dito/sendtodo/SendPortalAtAddTodoCmd.java | 200 +-- .../dito/sendtodo/SendPortalErrorUtil.java | 43 + .../sendtodo/SendPortalErrorUtilRunnable.java | 45 + .../dito/sendtodo/SendPortalForwardCmd.java | 99 +- .../dito/sendtodo/SendPortalRemarkCmd.java | 207 ++- .../dito/sendtodo/SendPortalToReadUtil.java | 348 ++--- .../dito/sendtodo/SendPortalTodoCmd.java | 145 +- .../sendtodo/SendPortalTodoDeleteUtil.java | 326 +++- .../dito/sendtodo/SendPortalTodoUtil.java | 669 +++----- .../sendtodo/SendPortalWithAddDoneCmd.java | 214 +-- .../sendtodo/SendPortalWithAddTodoCmd.java | 2 +- .../withdraw/SendPortalWithDrawCmd.java | 255 ++++ .../customization/wfTodoCard/ButtonInfo.java | 70 + .../customization/wfTodoCard/CardInfo.java | 65 + .../customization/wfTodoCard/ContentInfo.java | 39 + .../customization/wfTodoCard/TitleInfo.java | 35 + .../customization/wfTodoCard/ViewDetail.java | 35 + .../action/WFMessageRemindAction.java | 48 + .../wfTodoCard/entity/NodeOperator.java | 196 +++ .../wfTodoCard/handle/CardInfoHandler.java | 911 +++++++++++ .../wfTodoCard/impl/ReplaceZhuanBan.java | 145 ++ .../service/CardUserInfoService.java | 28 + .../service/CheckSendCardService.java | 1227 +++++++++++++++ .../service/ListenSendRequestInfo.java | 222 +++ .../wfTodoCard/service/TodoCardService.java | 216 +++ src/com/engine/dito/hrm/HrmConvertAction.java | 197 +++ .../cmd/requestForm/FunctionManageCmd.java | 344 +++++ .../cmd/requestForm/RequestSubmitCmd.java | 1353 +++++++++++++++++ .../communication/DoSaveContentCmd.java | 131 +- .../communication/DoSaveReply.java | 133 ++ .../DoHandle_CommonProcessCmd.java | 28 +- .../workflow/web/RequestFormAction.java | 61 +- .../web/RequestMonitorListAction.java | 492 ++---- .../engine/workflow/web/WorkflowPAAction.java | 1030 +++++++++++++ .../RequestForceRecycle2PortalAction.java | 253 +++ .../dito/forceback/RequestForceBackUtil.java | 802 ++++++++++ .../SendPortalMonitorArchvingUtil.java | 13 +- .../monitor/SendPortalMonitorDeleteUtil.java | 303 ++-- .../SendPortalMonitorRepossessedUtil.java | 209 +++ .../dito/monitor/SendPortalMonitorUtil.java | 585 ++----- .../dito/mq/HrmRocketmqRunnable.java | 15 +- .../interfaces/dito/mq/HrmRocketmqUtil.java | 213 ++- .../interfaces/dito/mq/RocketmqUtil.java | 13 +- .../SendPortalOverTimeSubmitUtil.java | 214 +-- .../remark/completeRequestRemark8AtUtil.java | 27 +- .../dito/robot/SendPortalRobotSubmitUtil.java | 218 +-- 54 files changed, 11042 insertions(+), 2339 deletions(-) delete mode 100644 WEB-INF/lib/jsdk22.jar create mode 100644 src/com/api/dito/hrm/HrmConvertActionApi.java create mode 100644 src/com/customization/dito/at/SendForword2CurrentOperatorCmd.java create mode 100644 src/com/customization/dito/at/SendWithdRaw2CurrentOperatorCmd.java create mode 100644 src/com/customization/dito/batch/BatchRequestSubmitSendPortalCmd.java create mode 100644 src/com/customization/dito/card/SendRemark2CardCmd.java create mode 100644 src/com/customization/dito/card/SendRequest2CardCmd.java create mode 100644 src/com/customization/dito/sendtodo/RequestBaseInfoUtil.java create mode 100644 src/com/customization/dito/sendtodo/withdraw/SendPortalWithDrawCmd.java create mode 100644 src/com/customization/wfTodoCard/ButtonInfo.java create mode 100644 src/com/customization/wfTodoCard/CardInfo.java create mode 100644 src/com/customization/wfTodoCard/ContentInfo.java create mode 100644 src/com/customization/wfTodoCard/TitleInfo.java create mode 100644 src/com/customization/wfTodoCard/ViewDetail.java create mode 100644 src/com/customization/wfTodoCard/action/WFMessageRemindAction.java create mode 100644 src/com/customization/wfTodoCard/entity/NodeOperator.java create mode 100644 src/com/customization/wfTodoCard/handle/CardInfoHandler.java create mode 100644 src/com/customization/wfTodoCard/impl/ReplaceZhuanBan.java create mode 100644 src/com/customization/wfTodoCard/service/CardUserInfoService.java create mode 100644 src/com/customization/wfTodoCard/service/CheckSendCardService.java create mode 100644 src/com/customization/wfTodoCard/service/ListenSendRequestInfo.java create mode 100644 src/com/customization/wfTodoCard/service/TodoCardService.java create mode 100644 src/com/engine/dito/hrm/HrmConvertAction.java create mode 100644 src/com/engine/workflow/cmd/requestForm/FunctionManageCmd.java create mode 100644 src/com/engine/workflow/cmd/requestForm/RequestSubmitCmd.java create mode 100644 src/com/engine/workflow/web/WorkflowPAAction.java create mode 100755 src/weaver/interfaces/dito/action/RequestForceRecycle2PortalAction.java create mode 100644 src/weaver/interfaces/dito/forceback/RequestForceBackUtil.java create mode 100644 src/weaver/interfaces/dito/monitor/SendPortalMonitorRepossessedUtil.java diff --git a/WEB-INF/lib/jsdk22.jar b/WEB-INF/lib/jsdk22.jar deleted file mode 100644 index 4ef6fd9e5a232053e9e8907a597cfcc96506fcc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45438 zcma&M19+s{wly5vPCB-2+qOEkZFJJHZL^bfY}@SEHY-j#`m*;v_y6xX=bn9U)l;eD z$$YEUJJ(!eObkUCP%s#vKOWq6{PchR@{b?TpYL*FszP*9^5P7NpJr%4P@m6#HADOF zW^zLEQsQDNs`PT=w{jEXvNCk^zu;x)sHY~T>y;VjS+)1<>{#=)cy}h-iDZR0cp|f+e##aYaHMDoTIw|&(*%C{YykauJVq0Y>5Ov#p&9T@8 z<-E$^ra&8xH5Zw8N%rDx#2-($B@8hn{haRzEC?)wt8U_|n+`*e1ilL#1ip^qxdYDb z9G1&=X1Hcke2?c`M}9{ zoHWFvOI-8~Kt5@hjyXKVEt1ahJH+E+F_Eym?wg^3h+aT)ln^yJ5_DlLltxMeWXP$W zZK+}%#Jg$)dbc|fh#J`IM+-7=`8%GTLNTTLvdsJ?M~$*|vAy+#r4iKM6-G+3BpYVZJKfg44-ls5`3=#u0I>iKi#Aw}Eyh0LAzcrmbuQYY0(!~L8Zn_3~_L$+FrT1W{&?R5O!f-^Z zE_-!Fcz#vBzoSESeCen1%A1fz|n$V~6<`Ol1_s+XiBHh5LwBR5)|37S*nXpXv} z^F?`ldPBq#G8ZChL(BsH4*Gmd39^m=4l>@D4LBW*SZwLy`JybG5sJtTIa3!nxhc&b zYZ=(6N>L&tK6&0GC{;Uj(4~w$z_@v3b^J6=B_gqCE?m_T^j5!hiwZkM3f8*53PWOM z>khPrIsS^qLm6V6ntAuvG_lZg{X%EvLRXn0Anox5bYP=FN+D>qJ{N+!ubPa?XrLpg z=r@Urz59rit3dT09!{L(^K6dcvgUmtBiMyX&y0bH-DXo>wqjtxj4i>;By_3HL9#O! zTcW|STbt5C>G#+(rbflM=LL&=-38s+;LSc;LMP;Ju(5_bogMU>P{tPx>Nxnu(OTYC z5w({M502IwrcdBcs=rnRJs%AiMk#;}zXLI7F^FsQ6jYJ56kL+E7>^_U)(IAkbwC|9 zHZ;V}!B<#D?YO}%Y6pbyc~=!);QJ?SQg5WvtDh6Gxr5LFs%_&V8sfaTXX;GMPT z{7BKMhDPk~iw<=!tRKEW&ohS82Aq&9`h~C$Jou^#4%J=q zx^0N-3^Z$DzK>YX;dImAI zE}u{kM|4)(N7Q=m40-~W#d=mq)--Zee_vZ1=fb7o%b&dSxxt@Bv0}QY+2xNn&de)`6?4PiZSL>pDDsRGW`Oy?xJK42+}LPgAXGKcYu zO&prI{x!B@3wEpL%lfSQ+|!^X#!z(t8)UW5Zvew8MEk~`&xvzvbyIuvdn9mEcwA#a zN@ITfqIwhd1#KYKnht&ej%d_T?&GBx$?pmOKlrg>L;d*-90+I=?k|4)pLv7yf94Iz zPf}C)iwyrFk4kkN7u5yq_lNbV^w9v>5EIgQ1df2X38b14G9gA%5vW6T6hXnk{(VyH zjESIhXu^iPK#Yb;3n8*^iZpnU2KftuKvef2V^#!S^%tkwz9*6VF85LdGTpw16G(lO zye4LqogZ&k9}gFAA0PZnAMQKM-?UmTh4|d4my5Tl5L0$eK$Zbf5gYjH-}$I>k|&P# z0U})IYPAZ|ybPEOlIaAaJHy~Ldlb}qN!~BnjQ$VPY8^$}rc?kGDhI(qA+GL%UA3~0 zj0h1Yd__miDG62Fj{V)E6gApW6x2FVxsITHsCNxUo{E!hTN^D}OeGTh+>}KFmeXnvFGSGL znAME+@zIVI<>L1czLQV%b=YRTwu0!vsu8#H#;>BDq9M887`{5DvywI^Ov=d{WvcoI zP6)Qx;*H;k9}AFAc~#kkS5dSrZ7w+y%1*1-S8OLs^9n9v; z+H+J~diDXIWatedz;W@KW3!;l6`P49zcebUyxwL|R;67;;beYuc}ohL1jEpeZXt1~ zqjkLyP7JIOwmk~@VeIO`z>L{MLxLA{bOpJZBMr++pExH%VwcZlBlDb@OnZ;nl=9aq z0~zo)$AbJbd1sr8|0I&s}>v zAAF^UY(I9E>H7VS8+`YWy@%p>KbtEKJ4rqf6}Ym8tbweE`42997GXIr>eDb&< z7z%O`4-fZPo#M1)llncOI7VUCPm=h7{w5YOFFZW(`2E8z)QpSs3J;I>gQz7BY`5Eo z6B&g&s6J!wfXQKchpS4Ed*;x>_;t716Mmf3N#gQH(Ps1CdW7~Aqv#wmq!mju%u#1% z2^?CNMsWz|dYxPt~ zHs}118U?Y513#9>sf}?UMpiJx*@Z7tuY<>VQk7Rn+s6d{pF9o3B`kI@zfnzY!V)x6v)PEy^RKm>ap ziLGb>(QyXAoU6s$D3%!`#blQFI5?c=V}c9xrk^NWag5{+AqEM-&wJ_ci3RRj?yc*eyoE>W&E(ijko2!Haxs%MPI zle_02;rea1U+GJaQWOJ`3{5o@LSJIY8Y#?F1a)y=DZF76yqZ;+7dp-B)Gd}yanh{p z4zGK7yK1WsuF7MJeGyZaDxD)@pH6vF%Mt!}nrM(4nRN*}pI+eL-t7!xCT}P)_N+?4 za|q*9$g^E{J=S2SUo$Qu+&Z;dx$gJj8?3u$hTWXT;xVo$0^u?|p)Ig(XQ(YFLj7Y) z8<^)yvc>bo<~a}2eOS0XSy^MP5e`c%b0-{UkuIu!PL;Vdl$#BXC>A>SYV5t#t`m_o z!{Ny@Jkc;?0R{_LUYj!170J?i?~rBItKmnb=*~(1beZ@V7Ddj5AFixO7zG7%0jZ9>?c$2&5M=Fh6gNU>b7;H%}(UbJJ zH%4hV2=Mn1`;6$_AXnTQt8cLhzXc(_mUdj8dEj(&ATBEC1O?;wrB)hKczMdQukNu} z1`up3NtX=?GMQa!_toz9Afq`ToOtW=54I+p2~Rn@Tw-Hyy3=lg?yDVofI4{6$a~T# z94ID@R}2z(p8NM{zNRC;1yjCDznhC*a}>Ptc<%}EMd8oNOK#pBmaIeNwDKAflQ0fQxgW^TDCN^>eLVN$9B zd{w-mM|EmYs^ZI1EjYaiY)4pm_s|?E@ie zt51s^SXScL{hUUWG0mkoGV`2GOSb>EhJENcG z64?D9Mw*gvY6FULaEP=02}=Dnd<-FNN<#ofCRP*?R3=tb5gMkSxNLAdH%3sg%pt>* zOSW|$fmkj^VMyPZq_M#C{Z1|*KOq0ea%wE9;gX<$fG$4k?Ek<2@UPV|&HtL^D4ROE znmW7uqf%B~Q=bz=;{z=YR^BH@hYf=XER)=O3*k>vCarR+#Uua(ps&rbr;)Rz*BnznNRIM=H_+-5rPsJ0jMFWjR7G-J~TSaPQxqGo~gaE zI|ICIu4^thUg6#;bIT@-@y>X;nFt?7tH3dRIuMDi!hYR8S>u@F!dx&{SW)(02yTmS z!JvoT5F)&(eH08qpYd->bc`7*ieKo(l8E1-W{#2z9I5CT)2>L?U`}1{Bz?Y*m?ZCE z3$S{skV_wDul_*UgMT*TbWQDTh#1Q`d1@N1B`3=Tz2kPWv-HB8#PNb#Y^cb2u_M_; ze}-FxtN^iF@!EveK2BeE!fS-4+ThTUyh&nD%Ob4Xad{(qsVpjQk$Y)Rd6Zh6YQ1!) z(RG)S@kei9*+^xZ&&+Cel~T;4&A&=ShoD(iY9sJYeMbu?9bfg2OTaXbVM}H|wop#- zXOp9|{Iy(@!cRQ@hQ*V!mXL!@3r8Gw2-8mTMNzhg=ip}ZVqLH7W*(@j5h4O>llH`cMVoV>_TFI^36edhjjv~qik0zSSq*~ zZHlTxu0Dhl5f%h2ddbndcnMl7 zhx|-V{{1rLe29{Zpa0^jy11fT=H|k`>m?`5%+fY#6Tf(qvXXf<{VDzErK8HDCk$E~ z)vvi;o0Uhbu(cz_UTnZtynUPf2wZDW#b;CJ+t~ZEqOl*_nzxeXJ}obp6G!^~K06oTMR>e;$R4hr+wSPoQlyzjUL?oeISkth;C()x;J6}D1e zu|za_e182Avrx%4KE5l`cgO-qQ>{FQ%_Hl0K3-KTVeyQ)X{o*&8!sd=3@w&~VFCre zpJUIF*4XxAaueg`M?rasKJwbgwCxUCRXHsI%P8`w1{*u=->lnK!iCmyHT0 z1t(84uR>_)&1<|F6rSn*1cNw5d#SLkx}-afa)-O+6NhZ1Is_mNl(0SZxoO279DvVJ z^ab0e4o==M6_NnX>`hBL(bz@DXzz9-P99}+HhKnEaul%eoM7y%&DfFaDhj3viXQaO@yhylelVkES)_lPDVkcW^iN{ADA6!Q&D+cOf}xFT1IVYPiRE2cL|A? z2^MlwPU&3ebwTkmvhd34YfNTV;`FX>W(x zO4`QPv8ydGb;A6<@`r`wwMa+p!xy!&3Yo)$(yORW8k1aTOLrOJs_GfHSAhb$rwwTe z%Ls9cFYlW%(ObfW+updF!1&G{6dvn4&;a^S_wSFKywICx0Dgd9DB?FnZXYP0sQi zyVG!r{43j$(T9za-4w^m5nG$x6gyq|t@wv(NrWk}h`rE8-W0^nc?Q1vJNO@fw&8g` z;tmD`1o)g5{AWP>+fIbDv!%V=U*znoJnl3nh;$AwZ-WatOo|XBfkFs9OZFQ`z6>b% z2NFVw&$l`89Oldf)6@p$cXk9HAOf*pdgG!)5O_`QZYADcC3m+=j|4zd4%&l`=oBz# zzO{x5hD)~$_IH|)wer7(hD*p#x{X#%G;ZW}VvhXPE$W_#(QPLgpG_ckH@9fc0dLCY z54;hi<3$|f7p6u6$5Ls>BN??p;mIyPje{dFe}6rE`4~}QRkdLBwX@vkZdT>FPkBqG z^Y7@2ADMNkm}s8`9YuRMnmbq==*=W0kUT9h@FmeXzI77IJz!V)m{f)6uT5&XP{Y^K z;(&%^;j=ZTIh)dTYoYaO!E(9@R|CMNCKB$E8`bt|SWEQs;71m_eD$X*R3)Z2o0s9o5Nhs2FPenKx5Q71 z`mna_sDo-iltXW7f zF%v(geX`)1?~4arg5sRc7E6mMS1yMnqw$@_116Jex%3?k{@zo1uu*TKRk(o=Lyi?XRZuwqIv%_ zcP%3LFz)%Jal%jM{O5DQ{C^<&KXX?NCqoAZQ>VZDlbo!hf-8nL{LyJ6m|~b{5QdTj zX4I!goC)gzii%2KXF}8iqJ+ZGZ&xp?X~xb{54F`3yWL)`U96@DQ_cpEXUrNN1`hwBw1&;W zB}~vSaiZc+z%rVDvzXBLO7l5MHs zhl8AMi{Cmsg8Rg{$K}D51)V2QSutKTRhHhabEyjsW6CORFGM`7d^D5gF5vX$yE)00 zq_)l!oQQ+ z>>Wp}Sapk7&g(m#02x}%$67k%GEcy215sz^LC{clXCQ&p`^;?{MSUywBNS|HdrwXa zdw8t0v0uczS9Ts1TJ!gbP9S0xe%T=C7eS&|7%o~~QLO3yXEz6qc0JSi>eW@Kh0 zz-y@Y8ObMSm*~W^U@)-e`L0NKFoBAUV7Gh|0@d0FqsKezVsrqn#&MxbL~~f^VYB;c z-rCDN#yoU`qsIZj7=oAGwgu&I9Pi<2vE4=>hnF>66^!3IbXXD$H_b5(7{08fH5wJf zrh!m*)Yu;TXr2B672B3oKnXW{;g9daekTLao53v2T@`7O{0(!zS$qxl=6-OqC9;3B zMSRWXirONYA^zorRbEjOroKhCv)+(1Bpx^r!?p!9nh5r2Q2j1|D;%FJzlfv*iQqm7Te;WoXwRS}|b< z?$*2%xFMYbse?e6?-jux=uT=yDP;Od?nm%{2VyM$2N3(KTKN|gn|59kMH}v>;c?rg zq__PMP{K-76m8th)a~DpA3$!mYoLr%N`;1^Xd*}KKuR*6KGlOg<*=`ihigz$Y>W_0 z;t;^%PVcZg6u#5hc;1$h6gIklVfENK?e}=GcF*wP=a1M!dxwVK`$c5LAlX|Z!NVEL zQP;G7sHD#-4zr_D)_I0N&8u9blfo)P$qR`qtx@P)}@M$cyp`qG6N4dJRK@qMS|rX zDjcU(QZi(w5=!aZIBNS5H&mE3M)JPkIl#m%4#Xzexc$pBqIZ@_nT&QQQtxW@1gme(NyEW&^pmA+O-KOM- zxjAzb=x|&!@_aSkre^bvIPf-FY@F_6LsOqjZEYQqX5$kuiaToXpKgwMlP~IyTM4e0h)-G@iUft1srx&I7ha79ZE8BLg zvm6+~U=p;WqTNIDHC?^L8U`cujw;4Ei1M02N6av@piTWiz6QEf+f`=_yvMg|8<#_U zlo~Bw_g)XKT3%Be(#BGBAjn8i$(*+fhT{8f30>q|#0626fRs`oy}g2g!bIR0O6*SN zSa7jMR*oO<&9y)JLVM4(bhJ-h+Nt*2l;W*UpkR?p(TyQvi~%a!-f$-NJ#AG%ct#=q z6!Mqqyj~r_h+K{n%l`Ca>A({$DaW)l`(sXGE3%J9-!hfJi?fkGa=M(xjPdkiv598y z(pMMZ5MS(s7+b zvBIa%{1Fmr{Q+va>+}9e|2Chb`d>XH=4NX5U!72;arwT_PU!a;;YtQDAF?3{Ss+w$ z$H?B`_!h#po*D+u0HQ{=3&B^~4U65rmWRS9_mTxsOkvDs=cz33LwQ9B*0adtp|h6(G@hNFTW>v5Hu=$?IHPGh79qETs$k`#2E)*1%b9Ah-&xSgUn&KD zEFO*=ha_4Mt}3UhzrXm29JSZfoEX8b!L@&UnH@Mhj=-O#=2x0M3TeHJ9TdDB?P$FM z7s-h;>jU3NrAo?AYPy#R^3^s(_&xp&11i%fM={bNUP7Wv#2 z=g+p@f6nyT{@0xma&d98G;(z@{g=>P`9DY`PP^M@DR23%nQERLezbBse=*j(1@->)s?D9avCoc$ms8Owsy^g$#Aru58 zpd!Uvs)BAt9MS=2llA8G@aqz2hwh(MWAZvH(#)qr`2IGS8UI(830vBkSlXHYx0udW zUXx!FMB>ZLMBNj{p{HAduxQ1KAS>cmQUej)0S+$63mfJhrPeaRHQ_`f?7(GJ;YEi~r=DMSaWM_Ks} z9%k+~E%nofgRsPr#8{ShI)2JEG|rH>gti&W%ja~#Au^clS(Zg(UuZ3I&1KB4ZonZM2joR z@|lAMLfNxnMn0#7WXRix=6)HA6I*5P_k*_W$IDmn+#6N|veMoDJxCUHa`H&MM&ZDbb~oX^-{BlnI=+}N+?8&ye*8OcQE zvVIpl#W=C^y9E~ba%+xe_3)|5goMIAtNwQU89`y6#POdG-rr`Yf0D*OqUfKGU9>_w z%;&MoT1c~KsHtyQ=v#+ehK>j}AX+`D9e^DcOOOGq(Y^u+NOy=TuV|hlz_IYuS3mAS z6ZQ=Bk9@x}lm(nAs&$OgWFrmi#s#~2V3J`r8j(~Dtq*Kgp{5p3+>4)zp1SDNv!5LV zGg@Al!m3B}YZAuLWJy%~7%JgSM=7kgee3w3x4YDl6q@FM16vrM8VYDtAlO$VJ z&t4`&@^btAS-*-nFapuG!E0|?d%*okrUsfeLCv3M2mNnP*Wb<<{`AW~JH$7Z?+=Fr zZw=&Hpw-TyhOu7))4ufz*FY@~b6Sv+*6~1lvB4s4=MQ}K?-?^P+rIAfWO*FEhcJk0 ziYAWz@9y|OfN6D#ck@b8$ETG+&tw{;v4gF5$^*%f;4IIxaI#b{;2OZ z?dNuz2oChP3(s&VtlO)^fP?fXJjld_`?w1x?{)1PMd=~yBwpM@1>Sz(vl=;k9fWB- zgC12O=~0U>MP)}RStjXSi!23>&7h5BFN$GKdS4Wgr7Jr^)Xn^Za=AWDO@ z&zl2#ZsTt-+?|*`kf{LSStLz?w8<|b2jPzWyydY+BbNBIq<8C%8xv!$(I*YeTC2<4 z9^$$4r3GaDSrgdmtj1b{$G`}~KW(b!X|`!j%|<;MY|@T)Q_?3(!MXdIlvzuU=6+Gv zHy4gktI&7}GMLhy1fN#bE2|hig}`uBQe%AJj9q5ME9hVYBku{&%*4e-0*mwN$vbkj zg$f6&mYZnqlQBQ8?7iXUvL4T~l^u;WRAV@e?x{KLS@02BZF-cG&zKDJ=u&EVyUJi5 zLl1YQ6nMDC97LK%V!-(tO&)(SiMV>T^A%U3Rw0`{R=fSm?MGUXjImsjr(lOZjr9S2n%TDgKKUrOlL-%|?RfOobvI=Q6Z7KS~N*!7{Cn z3tohCV)K<7#&X{hUZ7WjjrV&lm4|x2vxiO?va9d)@AIdIc;`>*Q?sl~eT}BM;DI7w?v3xm4f`)-B&O zSak=;)blBD768tze(2|>zeqUr<^bG!$QEx+EM77=2(h__SP#)X`|YUM8|TgCgIJmo zn;5v;F;m~u(N+LKrt?9EYNTxsmyhOQVF?C3>S@Dpk{L=ab-tr-V5r(2a#7V2HhY+DuwR~{ONT=%f1Mfcj3!zdS?qisL$>n*?1 z>bKKfjTk$3aARH3k{#HV*UMYG9ay|dLh;Q9OWv77oWh$Jc}p>E)fB2m@=J}wJW3V6 zGkTJLpe-YzYitT3}?H0H9WR#e1IJp6C1)oY7 z^Ik4-y;zQIN3afrs-qdSZL0ubRVa^Q6P>fh%;1sx1LBWf`s03|*>hpk-%k$D$n1td z?gk7m2gB#7zWe-vez>IOaeG8r`=(iahGNP zcWx}%_(}To?7Yjn=NaBYALks-)Dc1F5v|lI-#R|A06x|wb)m2FLdVnWI|0MA<{2ah zKNDK>B4Sn@u;_Jh&Sg=Z+{SZa9=85=o&sUE4P?{^H{nRfM1J&37~l>k&ixTM3Bm%E z6~+pA5uQb-hES&7%YRDzYbdr4pk_nTnyjzI2yU8u+RWCjLD~>vtT(bL>i}e?y^d*{-o1;+VYA^ce3=I&tooM#`N0sE${! z?_GFHHT1{c$9zAE5(&V4f3w*@{Z_upk9V0p!Xv5PI=pE1d}FWPDKvG^S+VM&y_(~) z0RkPQ0OOc`=$1t@^}SoD9gCgzQb6d7B(s?FIe+)W7Cd>e#y7$-Lv}uvEWF(>=|6h=f7}l11DVyP z3@~L~4YIVv^@t{TE2TV|q+j*dw@{9gX>F#O5(OaccZ0(dkpGIkMbVeuWyUzTl?IWi z)4%AKpd72q>d6X0hbOSsTyT)AN0(2w!)}hw7G7|%*O0BQ(cOxC-?IO8 zon@-CnI-JvWu``??y@Ks9FSm|8QECLHusfjk-DKsT7KonPn;^UtpKLOjfQfVLR&8S z^rjQ-148t~0n*UECl?Lo1OcvY74~Mn@!ATUDjGPu486$IzU8|KA~rlOC~elJ5ob;) zDpfe|`kM3B6goeUE#iGN>42=ZVv*cMrts`TXID5S+@o99 zz{(aH-@U!k+X;3jyd#YO9-d&2L#BC9d}7YY#$gVOYh5HkNZwdXLcZ)C(oRy3aPOcO z1M(NBcv=R1`#|jDyZmFAcfov?Gc4w*`sY z(d2>DK-MAK7H;#;Nby^%22nHIT(d$B;q3rCGe^GSbN;(?eAeKXurkn}MOVhChV5lT zJ3tImt7mM~trWmFY`;ZYOTnL=>IJLf7RFK<Q{_a9JVxU3!Y@;O1~ z{#y~jmw(I9{|Q4}6?^|^XJv&JSA^w(;4c`r&LAES4j2d<2^*naHPTNem|?C3Z&!P6 zgT7Mkoz3PHmw~k&OQkyg8P1b#=Jsmm~%`U zWt;DUfy`T+OvVclvmSDwhq}0G{#lhp4qXLJxnzzdtBI$Ai1gh%_H{)96sIlfh{7Ti z%Sd_IWPK9#t+iHvgwtu@3OW%7AiwxJ*&B92n+L#RXS&9ZVJ6>(+0kXFst5g&l6W6+ zq`QqRmc?!pSn<*XGTdez3#xwxzK0IND4%=aMB@Es{e^!oP$~9|iv;tS^AKet<66u8 zpauW;>!G4gv%@XoAKqkWj8_2vtaVoYsowcl*(A|_^5*9#-ptbcuX4vVwpaeMZyNH^ zH%1Ia*$aBT8@?Uv2^1@eic(1W0tQNzNi=T5>;gS~*b52BkNP@qqj-{^U9`nvyCtBv z1tdEY`78VvnTtwFP(Qt~XVVvQxFL51>-Ku`dVaQWu%kKezG5eqD-*l#MtuQ{I3M62 zuGRkS2Ss#-Pb}p~sp*jVHk_J{tr|z=tJWFbJDo^&-OrsXey$Tt`Pww2kv01gsV7u# z<(*C^MXJyorGAQ{(?1vewSIb1!GF%?nG3=cC5jOHuyI0h3O#=uSx^aCSXb@rqW<9| zJJO$>i=QsA_**CaJA3^jGPWAmN#{LCY%1d(&e|@i;ZHnGQI6jLikAfwYGK6aX<` z(>^G378)=BI*fdB8%jv5&L;e9*8|>67Lj5PiJ)dwqnAs!#c8T&^K}(VngdV>(qW{i z{58=ljMTg)k!-we#7f(JtP_g_qFw8>TI)tyyQ)gzbalB-vn^-gW{(J_ikr-jYf@mB z$TZDJB}{XC!0N@2whZBh=)0{*TLUrkqKM@^ifnBLxJNeJAy{jn>@rrV8|ay>k6#Q( z_CB`b(}yQs?$5YSyMSH^%9Jd1bPc{HH?ODB(et;Rxe$@Fh)c; zU|NgtC@3C3RyG$z%}gfuzY-63(reITATps@IEN$Pc?r?l_*_xLE=_RC#qcGk_nIA! zz=s~*J@Q#94DG$2OE_Z9o`p_%)Ffhtj73{s?5Vn(QR}bW)=YQi6zNe!@q$7)=kYh< zP9i%21uelJ!ebcd?FDjS!qW?f-^mnBA=9fA!O{Gd0#|3N5>ngaUZ3$mwJSy|KZICk zkLPt&{w^1>!SsBU(WZ0ggLrA}V^GH*WE&l8AhAb3&&ED+J3OD;M*&dXV>ylaMNs&g zvF6wtA?M@Irs)}wa=y`LkD1|brK2SO=~ye9{&&TwZTug-f2`nXLQLRRO2SP*9b*8z zFOWNmtfVBP5v!xdxME0BN`p!uf5sm&8|L@yrf-yyIs30$SzI50`?qW8yyyzJDV7!k zN-teETpcGJ{;o+bk;;|aQ`oQdE^G54v*=Bpb6!S2GQi|rG&o4z+naWxEQH*;* z>EeL)JwQ&!)EiEp3`+7T>c9+18mCGzlQ!<^@O$EKmgCBw5*c=f_oJAP6!qqFu$Pws zxXq;HUtirYiPoM87z4NuAU1Tu-7nzPV-w5_Bnh9;6I9WpzOe>3%)+@Po5ibS4C7ye z7bF&mIZ0F6bG>jX+JLJSv*FqyyW*COGRcAPh2ODqN=;z&p_10JXbfsU9L@fY+*Gjg+qD-IdI^mxcV%EtcieR_lJ!Rbn)+$rQf z9HTVa900+9r^S96P&~geq{J$pBzVng2fe&scM||GJdFzeWJ&6hQV{ZoH*ef2j}%5h7aX=#hVMxTF(*OTi0$CxgQ>=ARMAzu zT;qFRH#+$2StX6Yo@@}&mF4#jFgST}twX{HHXZ-l(bMqbp2xyT4{VnEWR69{rdPum zbROks4PU;I4C*??kg^y@SO{^rd0L+#=Kk3i9fLHVhl#0@Y{eArMVeHNU6)5oDU}b_ z9NM7u$h%wMkgU_N0^-4WvTXFf_*W@5l1Ee z2CqzQJ8HR3@|ZDGl<`$AEk+GmNQ{6ne{wucR`aE3bnfdfTJw8^XY;(u+*L4MQV$6c z>ssDmb(9|w^9@|lxzd2GM0MNJYgq7unGpxhf;QuVTTI)vvhS6xWZZxe5m77OPje{j-Q-?-z^&(Qesw_>{g$VvaCp^H{oQ$`g+x(FDtLfJQ-<39*T`6-P~DHiuAWsx9vF}bpWj{qg#C z{{_g(!9-{hBvYvMdtG?JRlzIT6AI)F>|hhRIir1_66@>Q zw_cEyqYlh4YqWUOCpa^jg^+8W_b~r>UihteOkG9b@W5U@(~g0G@`Lu)^5L-F)tXUF z?keBYVSE_+GTeiGo)b~Hm=blIWhLg$Y_$L^m;s0I_0H`&nLvv(@2GfQ$AY+VH;qZa zHSmP7rD&I|i&aFXQeB|>WPe32QDvUwVlC;II_>p`m9Oo6P33ProJkgG^g_6$cd#nQ z@>4cCd>DiiSAH_iDia0mmnS|Mr_ef&uc3{ z+QKcwkic$In6nirMiyu_m);)pSQaRku_k!nDq%Ur3b}e!p)SJOgfZ3}SzS%OMbxaqM=Q@~#Ea z13i~eR#{&q+-`M2o87;lV`7$lN_W5?lL%uH7Aas(f;X*w1AM5*)K;bAZT3KHZCAem zVV(p(p|r2>T;Xcx`)k|L_)&N)|Bg~#o7?oBZ}fufb^%eSn0txTzOcHwNO>>|MEqe@ z?540q`OE5L?<&`Zlfo_@LUV81oK#-|?@LSIkp-bJDgyxME3Z-I_eo)0bLwr`tVsIX zD70U2W?Tzm&QW7NJZa`d%Z{-s=B-I)Uu!?8KZ1n^8~+?8X%X?hwtiw#%-_-#*}nzD zKN4h7OJ@f|7h{Y65@PV&+b{7$KtS+8__;yYxk2EILp(IR7TgRJpov33!sq@Rs2hNJ z+nq0{%bG`dGl0TN($>t-)-{TjX=))9sODVIW{HXq7;hxzYRn@=rRf($`MPI!#Fj-47Fza~-9nm!y@NlBAmj#hxA^jJ1LdVHSq~j)Qs28t8EG z{V4i5zmFmg!Sz%AJ5NZw5Y|r$7X7U`0{XF`k)DyB0U!`r+9( z$Oy;0NMO$_!h1N~Kl%J{lqGlS^Y*3xwveFsHwXQL&lOx<{^httCylFo9+#nRBBC#g z=#0EzO2A6cz~SQ8;1L}K0YKCk>b;hz7`k6ksBMrGycRNZ7Ao`>sEcS1DAjWA{vT)W z7+ne0Z4Fm!RP0oYif!ArZQHi(R9vxb+eyV0t71EOPxsT0Zr|>2eD}v0BR_N2UT5#Q z=9+7+vX4mP2VySQW~s7b(>BwCrA}_${ozeo>`!gqgUHx1x^M6etF}GuYDZpHXm{9z}Kn?@O{X z8p13D?_Yf{GDXX8urxvQU~g1Apo*bxOY<xsuQ5;ROHer&2I#3#P8P$=M zPv3tY=QPh0vMepOR2Z-4s?>%SE$^~Bmt8_2-#?dKKu`5;#G?{+KWps3(VWQUnw7Q1 zOPf`-avM=VXmpQSvR4|eIc|n7f*wvh%F>LFsG4+Hs;+hN06w!lNq!MgFig6D@5C3I zQtqp!u}OhvKeOicz@AGvXxYPq@|PC9<-p*n=YHJvwd-N_`C?h6zWP9@6*gnx=Ifz7 zuI^Q-(6!wK`TmVvsMyEvqFm>n@m<1SG{yTDw{)37S#zx5+~qUCCiml~5%JCBLp17u zFi%Bs)hq2j-LXm4Z@K0vda=XtdND0I+YlmBO1f0_vf>?IJ6l)uc7v3cjDK6YBLV_5 z+(NGyYzb;c`6SF%9rGJ<{ig{^wJ301mha}5du=fT#coI0;w%mQujLO<;6LRBeFe5Lz*1W7tK zl*`(*%QTX%b=p$>zCNJ8#CTkG837G*ft`NxCB7_40K>UKsR4OS?%9+;vzt)tfxmPG zwoRehN-Och-O2@hSFZCj%mH@s^F@A?9R=p0wbgz6U2LzC7PLbP08Q0^VbQp*#d$wohrB{KYzvWh~HTyW9{HQE@+TXl}I7!*-oA<_2WhRx(fk{*ao|J z8y3dt4(EKeoe&Yf`C8$d`wzN(FJnvT)$wPIc&f^J6&c#9qo!W#O$=9-sJfm(!BzyT zPNf7E;RH(6=mm06tZeR1QE4LS_sFJwHTH7ynFH4m6zBT5QH~~kw2{*Ith!dXR^eXU zUDtduPaWQ6odzqc`l=Gw)q0vy>hbu3rw&}J&3ZP5=+H%LLbe1R-Cs}$ajvnIQjBPnkhsjMwgmfzTt5G|}+!0$Uus-rE;!^Znr#{{BIO?T|*VmC)Z_raE zzGja2u2L!E5Q=$Ae&e)|2G;5Lp2*3rZXm`UF55w(mf(?7zu3i^qi;M!d2%wB;(oCv zha_u`I_l~b7%(9pm1r_Grg&;Z^L3I;*|8+UI<89+DHj^YwAh$q&dH=m-HxTB^r?8C zjO2Lm=tn)QQbH#3G{;_Y$@WACJINb0gWd< z-bIU$_A8uV=bDtVffPOBcLvrqrJgkgI=QuXlT5lXl8roWffGkYhVwUJ1m^<&6UwIT zGck?Ho%|_r8R?M(YR5LBn}rb#R8F!I*eSdAYc7l}eI}=EM!3V7(mZ@XTh|ys+1h=g9t!FImS1@@TgPKk^2^ zxY{0`H(1A$6~f`E(l^(jfLP0hP$l#sHe{WUXOMTb=86{iFSOZYJ^VEkjbdkQ%Pu^_ zy527kJw+-p+Qc*EL^%T3jO#udwun_K=CIOiGi-IyCzl~|D<9NMOD$X~R5^p+HGF!h z5K2z|Ugt4;SkGXC{r%zvt=6{edywTs8^)yLC4E5o;04!_tBn1j_5#!bk_t$WQnDR$ z1R?^m6N&zp2swOG3<+S=){HpB$F>kT1*9tB!8q9AOEvKpJYh3PQY4_z0Hi_r6eL+_l zO8BvP_fn71KEAPH50*A<55*p_Imh2CXOVtl`H}}_hG*zlx_S6gLOBJ0ha&3>>P`x3 z{eEo@gZ!?7babtNEE95b8JobzsypDrhPsMC=sw`{4SOMUa(=K^HT0mb>U5{IZIuL_ zS}al}b@}*7B|JlRui1E=%(fT3-lMEUa1^N|S+PiSgKXi)Zn_+I1PzD66h6K7b0}hb z`@P+{jc|{OH^$rirK=?M=@XsRp4{@9jpPh5KI*nzlTI z)M@;Pg|z{vf2-SH6_z=3AKd=xP^O}=NTTtl-ggV?XcYX(BhsbGq75prMs$maLS=4L z@wAZQ5@_SJYYx3`W3z&WS-3^HL{iq`J0p|mQ=_KqRQDxC33U(grjF7gBCvvq1944w zpcig}LK(yeahZ0ecu6i>lN-|g{a!V8Ix{HJgfz-_vSmoUsUv&Q#JRIV-ECQ_ z=4wer-*5|{HD-&yL7<~*33LYl!BRpJROmsfq6pbZ_c}+Bw*;?2pNECDx0L8fbwtD1 z;}gNYebo0V^^JxMsIs~zSe(9_5(}POL7MCis^_KpKv91S&Ko9?__is`*x6hVXhdet zXyiJ34C4y|gWw%}f^1HcMX(Zvl_1|jAM7EuOJ$A=W}795{$&%C5)Sz=G7TB6xCC~Z ztkUuOpchn1N!UJxf%9%aFls!99QHf#(lB9?C{`*-l!9H2UK&OMDo$hAqwwVnkcAex zX~Ar(df$+)(Qe84-RLQk9n59%;1Jm-ge?>Dk|gT9y{`)S)}?%UT%2dk(A2E?FhBdSLZVTSf8Aq}J&c2|d%ZF)Ex!@o+L=B}(C7 zFfU``A{F4rknbkTVV#kS23^m84t}>(aUFyBVT8X-%i*hvu^ePI3{pzZl@uTQ4*VOH zZRJY0R}uayODhZF z5=Z_s3VKJ#sY?qB^}6}v$HgP$;~$8x7Zi~?Yz7h;)QNQ zORt}&`EgK@vF13Z0i8_(NG{Jy>;<9@PpUOr-PD?_Zszr*+M0M?G*FGz-XlZ8z$hBf z*8Dzg8$n!ANbU`Z)G`(65MR$tTZ0~k-Acb-NYy1wIwMu6dfX#B9zohpe{Jo2U~5mF zu>9Qi;Vxe`T%Y9uD!?xz&l4>Xgfy1VC7)v#9Pz#EJFo@%Z$X0g_%W~mxWqL7wsiZm z`{r*!`mX@}yQ;-=0he(BrvcQqfWo$72Y9+;0#IL?z)jMLfYW^0Bx!6ZB=1HVftsSF zmXL8CpAa`T+Pb2offSRHT^yI7k~A`k1C>X89xN3$W-ldq=Cgj51B-$M{=)w6g4O8T zasKzQKmsOgA`l`FWJE>~+@XQKk)FPuv7S$bD|}3HS-8YgJ^wILMYxkdN&$SucEIPa zZ}LBv?|*znVH;C(8)I=B6Wf1MIlU77e2Cuj#oe;@4U2 zu~`SCm#rjy#}l`D5iSb`#8Czk9o=HxZw}xlh7Z>`{lG{Go-x2MAlQf>(O1n}#gC>B zpnBWO@KE(p%nQzcOqbRnFi@+f3n`P13u$cJ^X4DsI0>eS1h0=&nk8){jfLlz4q7Yf zW@ahcOq6ku;T(<)Hjdp&n9d!K5s$G*1r@Axtf3b%wT5Lck{$-rRsCR5l-$t%KyEfW z6LiBslzC^D#`p-?ED0XVVik_nol!wp7@~V#hcYq1%jycyX|wM+a^1mn!3f<1KP3d^ z>cji0XWi|H@AZ2NhWFxW@&yn{r9vi!Iy-eLqMcID5KEvrD zS4$;bCB>R5Cta=&z;smT6$L2!TcCuD#;`^d@pXD0XuF;Fz<51uF+tOI{^YZPO4=;v zBe4c5XtgJoTZfVr3oIieevUYyZo~6v^u+MQr9PnG zxa+T+_Oea>YaAg$G&37dFA;`HN&ot4KmaV3(o9XQzpZENqXa!I_i^8}o`zg<yK0X2@N()hh1d3v+(~qMQxQ&4NDYyYvXy}?FrepA*`C+bZ zQt`}ay+ctUvq2Q!q$Pf&WdDGJ_C;P*s;`8KG*p(@GDCA*?TC0vx(jCl-(a3}(E0GA z2U>kD73`tuePC*!Pcfa*fZh))p*DLJh`1=MT$MQ?i#VMbvwswD78T;nu~?hJv6|d( zI=N*zXj_5r?tjeK9^+UU-`Gr0q2ByGM=Ch%aOME{QTYFp#Q!5lMDz`vY#rSH__-;J z%MkLTa0kOd=KEdP&pa;s!FcNLfEzMVh9fh`47Av(ZWUS2xfrVI-=e=_nQEoAT>d6* zII}@W4aJQxVpcQB1^-eF4Tmw=Cy!MM#L*j zXv2zv^-ZdUDxt6Xms*?lrk{uyben)N56ON%HuL|S@C zRwb-B~gwOPB|tHX7@x|Oxj&b5Gtofx&V+^$yF)7G8e zw|{-9%JK^Qe!ZBi=5~eLlfNRh${n|xAC*&0s)@BO*)M}1DG+lY9+BLOSY(Bn1kfNs|S8yz(854r(UQfNKcBMMlmFpu2!*geL52iyhK0fs)1Zxu`(b%= zem`<%qkhQ(z>$mo*OC8Ef%*Ub*#7p){&(X>#nN?N1TouLia2Yg!;P3PN3OGoMN2UGCuCi69wMu#07B09yg#ij~}Qu>BClDK{B&uJU0uJE}1j;~ev^&@xfCmddq zdI7Yl<;fwf^E2C=z#45u@SDgpC&k+3Dprc2_>fUVw*9LM+o*GM#7>X#J!;O_Pw*m% zbu)RwTOF;6ESBEOLy!nso5l$8@w80z%?>kppv6sExhe^PXwg_Q;{{x6-_G2m$sE{a zvekb$8Ul~!ClC=8&*q7y*W!nYOdczo;unZoW%n4R)*fsHC#pUpST z3<|cbL2rDITB1jt4cv;8Sd}c}j%SZ4RYnd`-h+wY$Qjy>95H6;lw3(%smf%P9LjX$FH)4HL@z!Fr7EJ!or~K!y}tn_GLPq_C1T zc9qG9@a(IgJ1klp8+94716K=obGgMRB9JhnAfeByX_7qy!m18pr%OIOi(Z^S1-~dr zg@of$LzP+yyZq07-_hBrXKjckEH>1uQ;WCa|(pF zx`c3ogMCW{dw4UeCl^l0+UN48T{S32?*7|E5G?lN*~zgsHf3^%99~P$s?B(s5Ij=* z3;CI+bk*`UU|5L9Fw87MnHh943~+s2rX|PM7}2LRNk^7k)tL0}3OW|I`CH7s(gO)- z@&J3921l1TA?vp7YgZEu59tUkPN?!45xuJkR|scY*4&FFZtV-{seLn!Ycd~vDM={D11U-9!h{pyHf{d; z$|M)p;<41z1=_>)>HT~1YS{Wo`7|-rzDQi{(3o4kc(gshM%y@B?Gqmj0U>Ism+k}X zP_kcglIWJYK@>r_qTNLL>cb9+y*^)&KF|SX z_eX4EAJNYsH5{J50`0N#w}x-pZ+9SE?6}s+`T>SIUfbhB18Q8is%jp#xb-73qShX^ zLG*cpVuLyn@L^t{yeLmiFI#JLd)jIcwj}lO4RC;U!#5Z&nUiK7#J0co?=F<=eopQQ zf{ULt$=FC_`YO3xaw)Y;{V1{wJ&kv#{Jn^}CAH~`ppSR?`)1KIDSFD zO8X0rWunD}Jo=rrq1|mx=HTbS-*s_V7z$#)jm3Tec-#LqdLsZJl7HCXJN{vD|HoUR z>R|5l&&G>)lBO&&Kg#g*Ev2)0UKlGMzp-{%-A`L)(xfJF@p;muA7Kb>m4fPZR+$^r zNW6)(q)5p4ub+I#Z+YvB1csLj9S>d|&Q0sOV|-tU^OZeP^4Yl4zF}~q3>Oe{%giB* zl-}!^hI+!iFq#ffMv+$V&wS+s@kM`TDR8P)(y>%&{)wKk?_i!dyXP@|2Qm()k;1q& zyZP8#u7Zyx6d!{j&1@O$QLjRUD$8~ngGr*ZQia=Lg2GC<_LW+s_U@->;gphf>Js>i z^|`gWH3YHdnKM<1v3t`@C>`4ADo;W1uN-GR+zg%vcpSVmPoK^8%NJWN&Mh6h-j|#+ za5`3_7^UNy{ulq~zQkLlE$8&r??DDcDEo3K!C}}Jg_9Kois>=?E|VgDH5(m$CuiJ0 zp@?PMUK7oNkTV$*}zzr9pr$Q30~05(L@UdqFcfaM`wa zvGi>QK|Up0Jc8?hr(HAPI-W&T5q8Fsp05*ulCW@!A;p+{Gqt)*!Cm3L0iDS5lkjHh zT}H~0#o>$*BxJCm|BQ1DUG%L$YMrQ%KbNbhB+pdlSdj^0+I%cv!mk4iIhHK(MTUyi zRVaS_^|Nrd#4Ze5Jsp`x%njIFr%(^qWB^r&jZ-{Lcyp+xK=Ef*c{SppBZdUVHp<9B z4B~XvkpO`zioG@gG}OAnIBe)vb`hJ|YmC_s{-O4nWE!U;80}*L)wcimv!!yuiri?Q zs+U*PH6*qt2qiP}uuFb#-0Thts(HVyapsE_Yu`q2{o~Ghzp4xz5-!3uKU_dNMdkTF zXryb=H(fhG-|+7hOMj-3eoNm!mLdq)8oB@eJpOBFS>a3ukjLDv?PqfeJXAj4!u+u6 zsi9szVfc#CQJC`$F7$Nkb0!g-*f4Td?pJ=9O?&JINE5?cT~dn)z$Z=ar&=A)Tk#pY zt9{>rYl6|4ThuD^gG}*$a8)38_@@*E<`Go5Obv=f1uFfLCziI$fe+|(x>Wy4bjOl+ ztuZ*(K~VAH%8;oY(4Kfpte;n4(8~MjKzK)Hk5pSSD=zTaIamb^U1lk(H0kmeZJo&N z{xYa-;?F@DBy3FVs>0b+6IS>FVr6^YX$iHP%n!3~URZGRi~^(0BtKk+^KdYd2TDWX z1el`=XIMU8u=k2mc&IeXAAwUsIc&PfurX!KBcE>~5`KONTpv$LuV%4jSt0Swr(-Ty z)n{19^C~%oL@VJ~uiN9`;;Jr)g5KW$m9$xN;^(>28^*XP~wxrfc_3_il+}zfx?dOmFxbcELb?ot6xB{w=!aD$pI`p$L z4G!;ir$VXY5Ak<6!Oj{F*CKJmGiJEUk{h}FW*4i@;>OtDQDp-bQOZXNjNPFnB1xl* zA?bGpQZ>6Osy20M$fZ9NG-^qr==1!0=SFiHk8KI{iYud+|06||^#2g7 zddmTHZE}d*g7K8JpL4CEu#uN%5bVI3Fkqp=3B$iSSc@vmHAs6B+%0K60{JA_uYx6D zbdIhkX0abmwcb44y#sxVg+V4Gm66W+j5Xy&rw&_ke`CPXLNue+vPLe|2z{poX2~+3 zNT_5TgA5RW#m>Cj!{v$)9ro5jO(xyZUH=@YWM2rPIm(8gJ$=0Po+K*VQD8C>ygDPXQY2pmzrcCtdITX&Zkm&^@$^s; zO7#OC9XBsovVt#I((<{^Kvh8Z;}~n)DtVZqBDLH3!Mr0{D_%LD*mz`vAJa1+*(;f@ zHulxY?hBQ*dI8l3KOAC30YP@L(^x=gUxQu4xL701<`wI2l zGCSiwaU+=!J5}{km?>F$O`k?POeRYZ93@HW+ z`cv@ z)0(^a$`vs6eCI(YOP!UOgZUohpj=sw9dW8MgF;ZbhAAZ)VVwXbl~!qmIa@u_fU|dx zu@hw+9t6z?3^}~emFZxZ0ah`6f7r}bjo=shXv$6N5Spx5Q* z&RXy&zBYv*g@W~o)0Z1P;tNt5O?MG2drkpkZB+pZohGeqc9jQfO3{wRUluzAS#Re- z)v<9qo)cRb=6F!*DinKa*ihM~+G1vjcOn9|gsIyl!ts)yo8;#lF*!Yc4&o)gv>|N! zW%r{VhJ794-4|g+tBhC~k%YuwlvD@8K8mOXwze#TGJw>(R6~x05)LMb z=7q8oW6f>@DUEj1!g!eF>3#nAkc-a?lw>bEgkmEl*cTC{ypGb&jCnE=85t0iACwRT z7vj`!)wxCwmx@i(uW=@JV(z`T?NZ&ZeK%68q-uH7Rc?b|_kgLO*_PLi8sgSvHxjo@ zubHLaRE+&9{vaK=2BA?PNan~~U+N6ctch-Kmu9DX0x!6IY6PLt{~7>oMZH5AjMzKXa&6!imX}&9!LT zh?pe#S2_CXEtYe!mU2BsQ1%JB3fUuu{xRQp`Gq+)?vTNF@L)W;3Yi_APCN$RB{LT( zQP$P2ZlhFTF@!nvGmP1&Hz2>&T02s|90roSDTDO)cnUhHc`-=EV_776cPYn^d}$5L z%F!Ly8rp_%{S=dQm2U!t5Nx8HgAm(X2WCY-whg|>5ft_mM-+hVjtQ?N91t5VF z{#JbVXDP#f-!A{1z{(qn*vdHEnL$)R$+3tUy#f>(FyfL8cLfrW3ZT%!J>b0>-6?xW zXo(vW=cIz(->ZE(o(?i&6ghVvXUb;ehhtDIj_}@0#$4xS=p!)4D4h~$W zF4i5VH(qZqSXqIh_#*R==c$i+)OjW@^-~ZI4a^3$zUB;b(W-~(f2O@`ykTJQ$~ovq z!q?gBuZu#(q#bSfvTF=QKut!#)10TW;KaXpa~x%D;o+ksU@1OX4<*>VQcS)5jeJE) zbD{zzE&FGU#POg7(4weh*{Boc83K7@snfg+ZD|&}hCGb1iTIJrbBc9k98bB%NmHAK zUdL8avE_YQ(B;f!UC>BSydl!+Ayf8bYGnC@)=scibG$Olcv#5q*$a0zaeEt!upk!jEx=J0hV6%}HF`2{AW5(nJqsVze&_Nb`>7kH&;@~Of zb+zaBpL{eO6c=8(7+CNQEzw(%K8X;aSS?iRTZe>s!hX2J2w>Y@DUNEAT^hVwzgG66 z+LoBOS*uLbjj<0ROsZv3lp?LP&1S}$W&JU%mnp0qzY4Ad1Wj=;tw^_}y6X^g;TYB1 zn(I3U8b76rI5m!BQPZ}|pRBM0e{K@*)G{g_i%lcjFcL24Tc?>!S-KSC>wosyDf|jg zh(}zqW;DPqPx>`-mu0ph#kxwIMcuy?t=9mvz{+GLX$WLpXYvrzRMGB}H#E|bN)5sb z>Uu05Sf?9b@7JTmtFnMyw!AIo4w_v!FiI6vBmUMC=oTGl44JQLf-?MgCrEhf{oL_0 z^6j*3`VXK}%T=vADa4>kjB}VG=#Aex_t)p&JsvBRudDFfGe}&epdeh3k3a|DOqaAD ztjPG!m?ax9C$XBTsH+`G6pQ8eR2z6&Z#`g<-K8&GWVq?vZ0jTk@STB$FBQ_a$UwF{ z2?q!~dR+;F*xC^Dc*j1yVF|gxn!#TYho$%NIYJQQp<=xp&qHO9WMn3=e$hrZhA@ws zg_Zg|$^?ESZXfY|@yjF%1eXwM*4B4PL}=f00D3o`4TWtT=@-Co7yb~v@3F518jc&b zpV)_V6|xln;YGatDM6oDn{^0sm=#aDxCybWQIHG-wzqM*)S>ke`5_BNEPT?gs^Rcd z6;iuAUJ1(S4&yBd0upKox>YKz`GSC0I&=z~H$YUoiX`=GZ!2M8@iCf#7r?@Q42O)< z&o%5xd+rWT_}E)FG-!!{U}u062YtJA!=lio93RxG5h8Zm9^GptnKhvUjNKVqdaiMA zDUKwoJ>so&k0qmd_L{){f{M)c!<9_^j3LYfi#Pwuu#1dX_8?hYhY4;v={()T@=BO9lq>=9M6a0u5TzuQU-E5Sw z(tnhfiDQ!}3jlV+;BQUC{;a(GkE`-G_EkvVN&gSJT~=E1_wJSrcJx~v`t+dWNuKBB zH@&NTNCCOLxffCzd%=vP$>LjEcO!2o&q}rI5q&#Z4Au zU#**4T^Pz)=1P?=vb^+KRAjUf!Ao752a8=KO&c|kV~XodV$!44y@K(N=9a<1EXFec92xvAuBH7u_ymAX|8lYVchfLg0RW%? zH5se@4zaUt9>pzxUI!K@U;w3K0W!P z8r_nQpEuGGB92Xlo~)R+x82GSKm^{wHLkx-g3fenaJ!b*$?coeLWBlcH! ze!^4!RBZ2!iyv&71b1z=SZ6GcmY%Pt^jc$tQQ1!sy_1xVJxZ~~pAD5W)5B-d?w{s^H5odbz+d0QpwkBFypyg$ zYmdk0GaU9cJgExMFH&PI&?0RiBgIGe2|J%TM5C+qM2dss=zj_7n&ck|J`+@t5~@!uZ~mcveJtAG_@b| zS?Ha3YMYBWavQjKRho<#H$N@PH>8d14o9I&l!dzX+4i@JK}e!2Fa-d%B>xs{{Vn?d zNcsP`K$Nu=kySB#WO&qE>QSQPdle#=4FqP)BqC932!k?MfKUnrvuD}EEw!{*nAr7? zq^mjJV|DISUVvoMYdgyr-*De!nl9MYSuB_1Be_i7H<@$cOfo(CUz`^QC zh~ih7Kd$qkC}LG%hZ#!1&pV{W_gDC1KMD*>Phg^WOZInY>BQlK!9^nNNWwK^Cb+`5 zo};QP;Z>oI2Zx?G7I}hcP+4E&<~X)!j#I0$RF(k0o=Bz1Q+b)kx*lDlmH1@~#3QSg!bHx9>v0o=mVc9bIM)VW4{b zzaimjN}@=?W2tX|an?p- z=9Zchns}1HTI<{0&PN49noYt!Hh&a+`N6q7`KvNT*UEG2?k}B;%EKo?W*X0QDkqg9 ziy964=@~!cwNuhbr}X9qD6&l0mi#p=*ry~mT!I(LPgN?dkE6GZ#1zxXcfKO)78vD6 zRfLcrkE_kv4G(BXrKk0fgv9SY4-Y8s6{P{_FB?fx8A4~V>K}(iA1;w1&6)w*8qa0~ z0#i&C8uDe%OHiF(x$YO9yPi@;`UQU|HB<5O;7#z3Otk;nah0F-)-nx40VuAkVu0il z2?7YzQQOi9uW!wMm}mbI-9_~FmOS~KAsc%U7;Wk+O8kNq4kE;Q|M}%6c#QMw!?6jl z4MB*zfLfd?$~N_mcVh`6T@=EnJC_)|VmF>!w;XwsqyzCmM?bdh2SiP$dsEn$50Qrc zC$pRoH6MgkR$dXcd)uS_6;nR_RKTxI!+>d5jv;6^YNg8Sb*=H@Rf##g(%Oog;oP8k!uTO$iG9G z=M}8VeabqJ;4|)nkaF|8rWVX89J4p#KI+H^_8_^%yS0gL>SJ1?$0JSTC8PZS5|->* z$Q!>NupC&q2~VZtP!lhsxWrAjoLhk|JD1_J99zoB_hl;(9j{2xg$zy%=e=H#IN@AoeHpQMhzMnk^egJ=FM zWX5uEICeBPZFuc$a8Pg+I7V$D+C2Qo7@0#}_|QNw!j>TBG;A_r{z$Ro!NgOyW6RiFS#eKM+4T7JUxCqWH+)U^5%p^EB%T|o( z9<(--Utq7Ss(SQr7RCYy_FKBx$~V!3;|_&m84P7A2ReZfv>Ia*LOSdPL+)~-V=@@F zkDenM`K) zFYqZVCh4nagBg8J19fY~9bbNUSBC1srOztYZ~k`YJ0J|nW&j{gJP^>wUM8I5~lCwe!c-*=pM z(aI8_CCb?B@*kJ53MUV8eYExTNo-SkqA9ivt;*$E_nYSt7l_c{uY3QoqmoI6RA3z(Ot}eErOY%8S4$==>v5X(o?Nduy+Vp3A z;|3l!zHc;`w^+BMYHnH3qL_oXoTOF(#tv5qSx$M6p9m%?VDcKulSxN^DtcED5D;-R!@ z0Zy$HeQjQJBo>0IbGh;P%xM_ zaH5CmYs+y4S^GXDNf<4nUilhT;G9!kW___CEhMZ}=)nGcD`@N zjZ2SLyg`+*Cxkjw)NU^|q!r#s>w(FwoGUPYO%_#CVKxWz#iJr)@i-@sqOSFXrl~a^ zc^NOQ2wPnQ0brC1<&6@)ZW&-k6G`NzHAsM?LholNzM!;F+xHTxjB^Ob5eWu3{f?>B+?B?-wO#65i{& zCtWm;860992)%D4>;mQZqq&4{S%4La7*=`17#0L3u+5094Q?<{f|3p2Ff!%@=4KM8 z3z_yg3z-L7B5$oRTgX3Tjm3W;mLN+R21B>UWShy^OB0?WwJJ+|0LkdVO&er0+09Bu zlU)*jp{5ZQi;O&rM{6b^rM3~$(vX!uhBCKjL@~F25?5cJ_p#?y^h$29frW>&w5QIa z(74892uZOZurxbHQxY6+h+}N9g6Yh*cs8Dhoe7Pt#m=3X^^$PsDfr<-lkR&oXwA5^ zHgU(|*g2_X`^TRfrc-G6+7cRGZsz7!SH^{d5NSnJ({d1<(2<4gmVJ-V+|8@EsK>7Y z3d)^uJj(ph5x``9TeL*I)1m=}`gUKDUImER@W6esp?v6(vfu)J!$5PRKo9%2atV7& z2zxCsUL}biNwQ)-mGo`t67|yVCPUiUV!Ub+r->9H(9GL(#km8MT@Vr2)Y7}5duNMv zUgy8dEL|eBx%iHSd2%VeBplL**oy~|UV<15+dkL2uCL>0-hQDl5Q`i@tDW9n49ic< z%NM4pJA%r3=q>R!fJSIEIy5$2{_3KLeh(T(ZcPZSQ{XxpPG(OK5Qaor$D1IAsVFa$ zL>CW4=x_=oRBWy^6N*+n|LxWwJ5JpX_eu2pOYWvSMEiC7h2FGvdc9)|i2(yYU~>d! zdhPY^eI_I?0}dPjzJB=IS%SZ1bl#K|ePfYRLF^m6jLX!Oc^v3x^Ukoo9^yAO);$kTW>)pd`=q z7JrTHGDmU;V~!r z!j>^QA&>qLDLEh|qZY%it}~u_9u?m#%_D9{s9hB?}_uxL` zZryv^aPak>)#TXTpD6s4HB6UycQhAI%j!O>9M3!<18V$G?ua zJk-MimHDL_)3nDfCEr~LktB1%2W0%-hA81|O~ffu;d2&IMZs>5VIP@Lb_o&;n`}CK zZU|ZfaNn*q-S$-^(Oz>NcZ&$wc(<}~w?OGBdTh86Kgz-@2tPlPvP4YKC<#TYqC`x{ zC~e^$jDmx5+N*@bc|wAr{xvqmQ+^T-LgJ?Q=tc`MfokX|e&HToA;|TK9+5-VD~NIh z67E}=3SJ}Z`Ip&tkUMH6-l~qM8npBCu8*5YT&=|rwr#S$=>}%h)llj&?>xM(7(MrS zaARk-a`2e7{LBjyXq^Uu&q9OazP~F7Wj<;-#{h+>3i#jQP@4Y_?nOo4!Cc<}VB+vE zy>_(18lZOtu)|)S0u!VqUOx^l-xYWR5>A$rmoKCQJP2}EJ8Y76d&|jZLf!}1kFa=r zeF8iF2wMe+jG0MdRrt>gjGUaNQ!52;HxEm;pW2s83nCzxl`iA@iQr?|xwbDGfXf3? z_^6%8t{Zt1^Ln0Vm$O@CwnB(XGKYNFR*}_q{rlN6I;2XO(~1-Lbhb#vLuo)M1;tC! zDD4Tqk?A;%IcxT~ZHM}_(bkx1Yk8$liMKDJ&%oysSZlFg3$CQgfHR!82J+Rdk2nT) zVZV6kFg4yL=0Yx8tfeQ8xS@?KV3L){{EFFA|8=`Q%U+D@6Ll1RAXc1R1P52HY$Rkz zpL`S03n9t*%gM|6Tx`W6o=n-o`LIbYFsjtG!2EPnFc*x~!NVnebpXo>nR!84Yg^Bu zCBl+arG`>Z``#J2e7pn)VQ5Y=IfAF@7+vYO_-^~^%(oW)s2+Nz4uYZPh8JAxUpp)w z%LATF$1c8I$gFnAa;TQbWd_b9%C%i}WomiFls~@D?@_O^svgOi6xw|79k2OfhFJK> zIURWE@srt=AZkqoh6Zo72kTKIz(e;w*mZxZ@SXH83EqOcz93v43FJi&XkJ*j|9yzx zmhbQY1dv|r0Jil1Smyk1xg~9jB#*+4V1m&@L7n`p-PqJfXN@VnzLI7Z8B&-B0~u*E zK__KDf|8L=k#7?v+58UV>j#5POiJ?#^iICp8QY7+0VCM*&~eGT~e6aZ8P^@k2304MSxr>INH7Or^_kw;vv))v?~CQl*UOXMB4eAO?E%;cP-r zC-Ji~I(bvvbjfM2VECvGW3XMQ4PwT&}9r%ED$h zbH?Qa*dVN`KiirmnUgDH=6rROIRJ%;W5+j6AaLaWS@K2f5H&*e_%_Eb`5JDQGpLqb zq;DCE$eb!R4?}Vc<5&8g&Mw{#FbKJu^jb*61)Q``VvG)o5EWueWwKl3oOda31rp6v*`$5;D_Ke8W*!JJyg2uXF<6 z2$Je89a!~j65kktlG=#IunuZlzt%lS3S&@dTmo-W*2}mouL??Tr9?Apfu;R`7hgci zK|nI(R~t|QQjp|tQ}ECG(Efw0|2GU!(YG=;(g*0||H0cQD@fY{ZaME04jF8LH5838 z)-XvVIWIrWGM$JxKNQNwv7!?3y0mC5P7T}q%W6Jgg1Z@jTw2-L#Sk;85J}5rsNVLc zC*#lY@*9{>)Li8~!v)M0TlSc;V{Vi+RY=A$V)N-t3Z}r=*#y$$IM}G6p-dJqpq^;; zv^5I0PGGNrPG6{HNUrA}E6DDk?hLA|oacB3wdcls4uvacy=yRU>mVZSOc&1l`?R~sCF|p_Qb|%Ei6_5pH!}}0YXZw2i8sp`o3Y=rS zS24g2bJ;qiTg?uwY5gAZ*c%=Sor@a7m#O(+7g_%ccHpXsNOM?31`!REciWp55?GZ> zZM7p@<7daT*;f=M-S+@i+K+foju?H@kTFav6$j|oL_4y>=bl-aU*YcPB{2o;?bK{s z>w``04{5$@6mBh{+CS5J-V6k7TPU+cYX=N-vti#e7|4sgw&D<~e}5aV2@kYZ0R{W= z-xlnDUKa5mne#`!09>=AjU65THP;sX#{!gjV6cjSu*cOSiSI!^eqk`kNXP?VAp`rL zkZ}|==HY{;=Y$M)`T*lhQOzJ0gj7(cn_gAqQP_cIgDzCpM|~1F%+DSB^UMBsHgmvv4EvfH{FNaM z2ijTsJaT`G<3pXJ>#0ki30bPI%WO=os-aIM@`{Cltsy?Zm9fY9JZ_GU#5xuPH!eU2*mUr{xnm2`M4uPNvrRt{r>q;Timwfw;Wk z8M2x{9Z2L{$a%fw2n9QmI-<=S2X9nQlEZr3UR{-1u1q0QuztT8?j!QiAO+?;%#QHr zuD#kQBoe4ZYn^UUUb!O|DF4U^bOzdFCNAo!^{|2p*pF?fg6dI^+_7cEA>Tc~a!4T8 z=oDrC@%tug8txbUqh*s|T%eENm!>ww+pxC+z}yGm^VdQ7-#eEQj&{FOj{ju?7aaGS z_bFgwW?s>vhVW;u3`E*6s1x-l^a6-^H-9_bU&S;O*7In6mhOaCTOf~eL)mj~e8>-% z(^C@<(^mI4CvPAJFBn+z=wm3bVw|_H!tym(Cjr9o>JG8ej+? zXqj+Eigqh%Bqz-IC>OsRI%YsvEI2UE&W;ykc{J;=D7X?%#{P?p!*{N4?=wcR7c^3wP;Gy_)*p^DAqvayu>VkNm?(}lb9 zU1PQEargJuj)~%d96TWJ1_7VH4l&lB5VeT8)xR|J&a&+`zwH14+a>A{z;m8U2zmJ= zAw*0}EXgmCI7W}{Fw#bJ@4vM~{^;kWl*BB80$J6vIB`BP_5OZ#|LM6!^@w~O3D_{2 zjO&3k(hb+vX=;VTxLQ~G7dtk`i}68Vs;huugSgvqbbYHps$6cXL&&8)O-{;Pw699m zOK+o17YZYfEk3L7@X(k+FlRtUxb#6&ki|uu@h=tiK8DdC6N)2rnxJ7xlOP-Z6Q(9d zTyGk-_{3bAVh(L_H#W1V`Q4*|5KsZI!E$gU2>-2&Z}}m8#{Qm)y%MOx=J^oZ?hJ0nJfB2~!lC#R zd3sl)CKKwUQ_TB+8y9vX-$7vlZVSzpK6o*?*RAB`0V-^XnvJ#RKSHN6RD}*L{eO*J z2{={T7r#ZON9OS*GJEt4nMw%VTS#3)%1|j}49QTUs7NZaMou-^?qyBJi^)f>0-0*0 z6OnrwJDy(SiB+~Nm->k?#`3lYHy!gIF1aeQEkkivI z>pAX!ra!+%?2`IgkVyN~`X?;vnLw=Pho zayIB(SVDPwLcL#YX-D-xfwfQNU31&Vb`JH_T@n9b)8w-3(prh@oTZ*0ho7^WC}|00 zm{bg{9haZdEZ^*%5w0ED{u$P{27@>w?hkeo4Y9hrEdc3 zRV2RH;MF~Cufj3MYTaMGhZn_4=M<#G+DzY8e(Lba8?Kf1_N zv&(lp_h56ms3ozQN*T#pvq!I8`@@4KLF4yaAE?nkACIMcx_10c*3mMR7SANXhr~Sx zgnLeTwR*;MM(aAs4(L`mc1KdXtu!h9uJIHttMA(ron>viv;;0J56uXF>{jZ}nSqpg6MkI$y^L^@hkLT+phknX3dzY&H%0y(zFUolBolj|z+n4*xyyTT8Jiubf$t0!hkpkBmfg*s?&`P06L7s5xQB!Wudbvz1t|JpTM+ zQCEDlhN+HUuRHZi=0VZ)D*3(2F1&{V8x|>KD5|bXv^#TdqqkS}64f{%$*&Trx3l>U zk0+U(dtd6gk7rSC3%AAg<)(4da&O|~i^QnCGuQI<<@<9_fZiqH`dsrTD0B})9UEo! zk2#Bmkb(GR$yagVp4U{0%X?Tdc**NkdmrVTHXrK|^QzUe$@lDWS5`Xq3!tME@Y5vn z<;nXG7$_<#>gw)#Bb80K+uB$~)IPcLb7<=@*+nU)N6R+y*>7=TOTP;i^H~@sKb1+z z;C=D>wCu{X$rCFMUzNGkC?-+=?L|vM<(F#SBnov~;-6VYXI%r-NGmj&k1UJvR}yd= zj1Byjo1w9+=-Yj#Cr?JK#4Ub=oP1mGvW~QIwK}{gdHV_1%N{LHtrtf(?uRUMF_+g!OWJp|ouzMaOUVUhY>q@w2{GUZ*$O zDY}o^+`9%CCPQ4qG(X@7ttPZ~!s9DI z>PWuz*Y3Bd@CmZm@LOi`s*ezi)%oiFElo_^EfRb0_dCQfXA6&c21lgv|A6!=%O4pNliGDLwzjtW-5ic>^`7# zTu)*<#J82QD-&eRNp{GIr<_SNCghnIDQc+gcw?ljqFur2p#yjtgil-OiG1E8kaM`CB&nTz_J? zSN1uxN4LAelPNbpO#0rgCwtdQG?n~_^dv_1@#;9Tb5~?pWv|*4vLpN9TJhyyJ4?eq zS>?A$uD%oE%zi^p@u}0ua~^R!g^`Z&z(515lEWVd-#w9>kh{TiNUV*8^PWrtxv|`O z!|N+LozKNybTvE~NWR|Y^SqU)`}$qwv(XBvr%v&d_CISPKU2P4p3>`#lN>Uvawr)- zS|6z2_h^Dt5>z;LS9=ZTvY&Or4cfQXI*1m^e^UB`9AWo}XOo8N^ed<6s7=kc2^J%J zzm6mbO>(T1&1t$3$w_pu2n_vQB_gMIlBJH^KnY8(c60DExfFDK9q*M7{8^EqPH~>L z1o3v0ROiK^`jP!MXG1x&8Y2u9KIxRMO?*~eKE-9bzH5}LI)rR7n4iM(wI)Pqm$kpK zLWtZ=AyK(?q2B3c8M;XyZ+ZM=T{$McI!NH_9&YQ+E7tT|r$&q?3Rr}Nnn&O;6M3Tu4%jRzN?1K1vg-5c~W8KTcBg+-NMQ2%c z+(e4*7y%RfVrCO-(PAM22+Rcq8|n|zSkMX|;fFEuXi2m+UTLuD`nJ@5y*;8zIw%ejKgu5;BajW?T-h&HyrTasoGW*f!^%7NnpT0t77falq-1FsG^ zmxJn5&(%3V3ns>^EBODa1f;#8d38Mil@RTf84E0c0+0cQ3jH}Fn>cs^h@;U=anw_Cuea zgn$7&2u7(Y9Thx4CA1mtrncWzR+@Kp1QV4YC0lY@E5-h}UkY|!jGDggkns)gM zNG1(X(Mm7}OLwNS&LE;#HLyy6GutDZ&h+8}(#$Xg4hZ&f3#4fm#cqeihZ9;OZW+BO zNiU2)o2db}0XQEtk{6p^5`pTOzQBxTm}SYvz66}vSef1ccq)-!s13;X$HKzdf04Av z^kNBY-U6aCPLhmm0!|H!tV8J~0=NwLP0UX!j75hNtfD)&2Kbi$2_5ZYVjF-nmZCq= z4)7J=H^3YjnQq{uZ8CJNfTw=Y5EEo5|0z~dICB#kkEn&kW0d#}iwEZ}Lh?P)O9GfB z(emM%PdLBN3OWjS>R8PL2;RlQ$^|E1LBA)9J`*@xBMfH&kwuADYQPi^PT+zS5Y8Qe zw!L9SOaL+dF%}U{1AulM_S@_VM-pdRO%VUU@4<>Cxe?5BJ zn8>%l*8_8cp}!s{dnSk|>Ni+I#Bjq@KZYZ9}m&=)Q*$9L*`8$M1s0g=s3#RwLGR0bFoQ#@MTb8641FCF@=s%=vT|SYcrX z0(7SvxZ?mb6%-BzM{Y>cON$2%9->r$i3$S8iV6o$qAk*SZye}_VBsJ_wDqj<$ALx1 zVPa*4!?ck2LwXSozySra&h2>8uf$=&;Sdn?0OJV42dBq{?aLJ?ZWgHbrx z3j@RVP0&lj12H(jV6@Tnfw`T86&$`1fnJ*w#^T^Jxx<1*hp!f(RqlNT2i=y@9SbZr ze5Q{6xFgOo!Uj_Y(8>Z6C4BOX9LLkkyErT;d^nF44nCQcrh|Ydfds}lc>X?o#EEuT z)+91Pqo3_!MT1Y%&^>OHgaxCylr&Fz&VJ!6r{S|9bg!&P!AHjdg-=q@OWfjAe9$?O znJ+{U_X9qgK>G`=fUlb2LXV~sd|de40PP%hr_IA>fZRHysPf{P=-v Uv4jn&x*q(fivaql^T@yc2Nd5TlmGw# diff --git a/src/com/api/dito/hrm/HrmConvertActionApi.java b/src/com/api/dito/hrm/HrmConvertActionApi.java new file mode 100644 index 00000000..977dd1b6 --- /dev/null +++ b/src/com/api/dito/hrm/HrmConvertActionApi.java @@ -0,0 +1,10 @@ +package com.api.dito.hrm; + + +import com.engine.dito.hrm.HrmConvertAction; + +import javax.ws.rs.Path; + +@Path("/dito/hrmconvert") +public class HrmConvertActionApi extends HrmConvertAction { +} diff --git a/src/com/customization/dito/at/SendForword2CurrentOperatorCmd.java b/src/com/customization/dito/at/SendForword2CurrentOperatorCmd.java new file mode 100644 index 00000000..f0a0337a --- /dev/null +++ b/src/com/customization/dito/at/SendForword2CurrentOperatorCmd.java @@ -0,0 +1,224 @@ +package com.customization.dito.at; + +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestForm.ForwardSubmitCmd; +import org.apache.commons.lang3.StringUtils; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import weaver.conn.RecordSet; +import weaver.file.FileUpload; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import java.text.SimpleDateFormat; +import java.util.*; + + +/** + * 转发、转办、意见征询等提交待办推送 + * + * @author wangj + * @version 1.00版本 + * @Date 2022/10/11 + */ +@CommandDynamicProxy(target = ForwardSubmitCmd.class, desc = "流程转发、转办、意见征询等提交后推送消息卡片") +public class SendForword2CurrentOperatorCmd extends AbstractCommandProxy> { + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + + @Override + public Map execute(Command> targetCommand) { + //获取到被代理对象 + ForwardSubmitCmd forwardSubmitCmd = (ForwardSubmitCmd) targetCommand; + //获取被代理对象的参数 + //对参数做预处理 + BaseBean bb = new BaseBean(); + bb.writeLog("-----------SendForword2CurrentOperatorCmd------start--"); + HttpServletRequest request = forwardSubmitCmd.getRequest(); + FileUpload fu = new FileUpload(request); + + String requestid = Util.null2String(fu.getParameter("requestid")); + String nodeid = Util.null2String(fu.getParameter("nodeid")); + String workflowid = Util.null2String(fu.getParameter("workflowid")); + String f_weaver_belongto_userid = Util.null2String(fu.getParameter("f_weaver_belongto_userid")); + String f_weaver_belongto_usertype = Util.null2String(fu.getParameter("f_weaver_belongto_usertype")); + User user = forwardSubmitCmd.getUser(); + + String agentType = Util.null2String(fu.getParameter("agentType")); + String agentorByAgentId = Util.null2String(fu.getParameter("agentorByAgentId")); + String remark = Util.null2String(fu.getParameter("remark")); + + // 2 征求意见;3 转办 ;1 转发; 5 征询转办 + int forwardflag = Util.getIntValue(fu.getParameter("forwardflag")); + + bb.writeLog("SendForword2CurrentOperatorCmd-requestid:"+requestid); + bb.writeLog("SendForword2CurrentOperatorCmd-nodeid:"+nodeid); + bb.writeLog("SendForword2CurrentOperatorCmd-workflowid:"+workflowid); + bb.writeLog("SendForword2CurrentOperatorCmd-remark:"+remark); + + //参数回写 + //执行标准的业务处理 + Map result = nextExecute(targetCommand); + + sendDate(result,workflowid,requestid,nodeid,agentType,agentorByAgentId,remark,forwardflag,user); + bb.writeLog("-----------SendForword2CurrentOperatorCmd------end--"); + return result; + } + + public void sendDate(Map result, String workflowid, String requestid, String nodeid, String agentType, String agentorByAgentId, String remark, int forwardflag,User user) { + BaseBean bb = new BaseBean(); + boolean status = (boolean) result.get("success"); + bb.writeLog("-----------SendForword2CurrentOperatorCmd------status:"+status); + if (status) { + bb.writeLog("-----------SendForword2CurrentOperatorCmd------forwardflag:"+forwardflag); + if(forwardflag == 1){ + insertAt2CurrentOperatorByForward(requestid,remark); + } + } + } + + + public void insertAt2CurrentOperatorByForward(String requestid,String remark) { + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("SendForword2CurrentOperatorCmd-remark:"+remark); + List result = new ArrayList(); + if(org.apache.commons.lang3.StringUtils.isNotBlank(remark)){ + Document doc = Jsoup.parse(remark); + // 选择所有包含 atsome - uid 属性的元素 + Elements uidElements = doc.select("[atsome-uid]"); + Iterator uidIt = uidElements.iterator(); + while(uidIt.hasNext()) { + Element element = uidIt.next(); + String atsomeUid = element.attr("atsome-uid"); + if(!result.contains(atsomeUid)){ + result.add(atsomeUid); + } + } + } + + if(result.size() > 0){ + Map baseMap = queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + insertCurrentOperator(requestid,result,currentNodeId); + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + public void insertCurrentOperator(String requestid, List addUsers, String currentNodeId) { + BaseBean bb = new BaseBean(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("HH:mm:ss"); + Date date = new Date(); + String receivedate = simpleDateFormat.format(date); + String receivetime = simpleDateFormat1.format(date); + + int showOrder = 0; + RecordSet rs = new RecordSet(); + int groupid = 0 ; + String workflowid = ""; + String workflowtype = ""; + String needwfback = ""; + rs.executeQuery(" select requestid,userid,groupid,workflowid,workflowtype,usertype,nodeid,agentorbyagentid,agenttype,showorder,receivedate,receivetime," + + " viewtype,iscomplete,islasttimes,groupdetailid,needwfback,isremark,preisremark,multiTakLevel " + + " from workflow_currentoperator where requestid=? and nodeid=? order by groupid desc", requestid, currentNodeId); + if (rs.next()) { + groupid = Util.getIntValue(rs.getString("groupid")); + workflowid = rs.getString("workflowid"); + workflowtype = rs.getString("workflowtype") ; + needwfback = rs.getString("needwfback"); + } + bb.writeLog("workflowid:"+workflowid); + + ArrayList lists = new ArrayList<>(); + for (String addUser : addUsers) { + bb.writeLog("addUser:"+addUser); + if(StringUtils.isNotBlank(addUser)){ + String islasttimes = ""; + String sql = " select islasttimes from workflow_currentoperator where requestid = "+requestid+" and nodeid = "+currentNodeId +" and userid = "+addUser; + + rs.executeQuery(sql); + if(rs.next()){ + islasttimes = Util.null2String(rs.getString("islasttimes")); + } + bb.writeLog("islasttimes:"+islasttimes); + if(StringUtils.isBlank(islasttimes)){ + islasttimes = "1"; + }else{ + islasttimes = "0"; + } + + groupid++; + String userIdTemp = addUser; + String agentorbyagentid = "-1"; + String agenttype = "0"; + showOrder = rs.getInt("showorder") + 1; + ArrayList list = new ArrayList(); + list.add(requestid); + list.add(userIdTemp); + list.add(groupid); + list.add(workflowid); + list.add(workflowtype); + list.add(0); + list.add(currentNodeId); + list.add(agentorbyagentid); + list.add(agenttype); + list.add(showOrder); + list.add(receivedate); + list.add(receivetime); + list.add(0); + list.add(0); + list.add(islasttimes); + list.add(0); + list.add(needwfback); + list.add("8"); + list.add("18"); + lists.add(list); + } + } + + boolean isTrue = rs.executeBatchSql(" insert into workflow_currentoperator(requestid,userid,groupid,workflowid,workflowtype,usertype,nodeid,agentorbyagentid,agenttype,showorder,receivedate,receivetime,viewtype,iscomplete,islasttimes,groupdetailid,needwfback,isremark,preisremark) " + + " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", lists); + bb.writeLog("isTrue:"+isTrue); + } + + public Map queryRequestBaseByRequestid(String requestid){ + RecordSet rs = new RecordSet(); + Map baseMap = new HashMap(); + String requestname = ""; + String currentnodeid = ""; + String currentnodetype = ""; + + try{ + String sql =" select t1.requestname,t1.currentnodetype,t1.currentnodeid" + + " from workflow_requestbase t1\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + + rs.executeQuery(sql); + if (rs.next()){ + requestname = Util.null2String(rs.getString("requestname")) ; + currentnodeid = Util.null2String(rs.getString("currentnodeid")) ; + currentnodetype = Util.null2String(rs.getString("currentnodetype")) ; + baseMap.put("requestname",requestname); + baseMap.put("currentnodeid",currentnodeid); + baseMap.put("currentnodetype",currentnodetype); + baseMap.put("requestid",requestid); + } + }catch (Exception e){ + + } + return baseMap; + } + +} diff --git a/src/com/customization/dito/at/SendWithdRaw2CurrentOperatorCmd.java b/src/com/customization/dito/at/SendWithdRaw2CurrentOperatorCmd.java new file mode 100644 index 00000000..26b2a3a4 --- /dev/null +++ b/src/com/customization/dito/at/SendWithdRaw2CurrentOperatorCmd.java @@ -0,0 +1,212 @@ +package com.customization.dito.at; + +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestForm.RequestWithdrawCmd; +import org.apache.commons.lang3.StringUtils; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import java.text.SimpleDateFormat; +import java.util.*; + +/*** + * + */ +@CommandDynamicProxy(target = RequestWithdrawCmd.class, desc="流程撤回后给门户发送代办消息") +public class SendWithdRaw2CurrentOperatorCmd extends AbstractCommandProxy> { + + @Override + public Map execute(Command> targetCommand) { + //获取到被代理对象 + RequestWithdrawCmd requestWithdrawCmd = (RequestWithdrawCmd)targetCommand; + //获取被代理对象的参数 + //对参数做预处理 + + BaseBean bb = new BaseBean(); + HttpServletRequest request = requestWithdrawCmd.getRequest(); + String requestid = Util.null2String(request.getParameter("requestid")).trim(); + String workflowid = Util.null2String(request.getParameter("workflowid")).trim(); + String actionType = Util.null2String(request.getParameter("actionType")).trim(); + String recallnodeid = Util.null2String(request.getParameter("recallNodeId")); + String remark = Util.null2String(request.getParameter("remark")); + + User user = requestWithdrawCmd.getUser(); + bb.writeLog("requestid:"+requestid); + bb.writeLog("workflowid:"+workflowid); + bb.writeLog("actionType:"+actionType); + bb.writeLog("recallnodeid:"+recallnodeid); + bb.writeLog("remark:"+remark); + + //参数回写 + //执行标准的业务处理 + Map resultMap = nextExecute(targetCommand); + + sendDate(resultMap,actionType,requestid,remark); + return resultMap; + } + + + public void sendDate(Map resultMap, String actionType, String requestid, String remark) { + BaseBean bb = new BaseBean(); + bb.writeLog("SendWithdRaw2CurrentOperatorCmd--sendDate"); + try{ + String result = Util.null2String(resultMap.get("result")); + bb.writeLog("SendWithdRaw2CurrentOperatorCmd--result:"+result); + if("success".equals(result) && "submit".equals(actionType)){ + insertAt2CurrentOperatorByForward(requestid,remark); + } + }catch (Exception e){ + bb.writeLog("e:"+e); + } + } + + public void insertAt2CurrentOperatorByForward(String requestid,String remark) { + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("SendForword2CurrentOperatorCmd-remark:"+remark); + List result = new ArrayList(); + if(org.apache.commons.lang3.StringUtils.isNotBlank(remark)){ + Document doc = Jsoup.parse(remark); + // 选择所有包含 atsome - uid 属性的元素 + Elements uidElements = doc.select("[atsome-uid]"); + Iterator uidIt = uidElements.iterator(); + while(uidIt.hasNext()) { + Element element = uidIt.next(); + String atsomeUid = element.attr("atsome-uid"); + if(!result.contains(atsomeUid)){ + result.add(atsomeUid); + } + } + } + + if(result.size() > 0){ + Map baseMap = queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + insertCurrentOperator(requestid,result,currentNodeId); + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + public void insertCurrentOperator(String requestid, List addUsers, String currentNodeId) { + BaseBean bb = new BaseBean(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("HH:mm:ss"); + Date date = new Date(); + String receivedate = simpleDateFormat.format(date); + String receivetime = simpleDateFormat1.format(date); + + int showOrder = 0; + RecordSet rs = new RecordSet(); + int groupid = 0 ; + String workflowid = ""; + String workflowtype = ""; + String needwfback = ""; + rs.executeQuery(" select requestid,userid,groupid,workflowid,workflowtype,usertype,nodeid,agentorbyagentid,agenttype,showorder,receivedate,receivetime," + + " viewtype,iscomplete,islasttimes,groupdetailid,needwfback,isremark,preisremark,multiTakLevel " + + " from workflow_currentoperator where requestid=? and nodeid=? order by groupid desc", requestid, currentNodeId); + if (rs.next()) { + groupid = Util.getIntValue(rs.getString("groupid")); + workflowid = rs.getString("workflowid"); + workflowtype = rs.getString("workflowtype") ; + needwfback = rs.getString("needwfback"); + } + bb.writeLog("workflowid:"+workflowid); + + ArrayList lists = new ArrayList<>(); + for (String addUser : addUsers) { + bb.writeLog("addUser:"+addUser); + if(StringUtils.isNotBlank(addUser)){ + String islasttimes = ""; + String sql = " select islasttimes from workflow_currentoperator where requestid = "+requestid+" and nodeid = "+currentNodeId +" and userid = "+addUser; + + rs.executeQuery(sql); + if(rs.next()){ + islasttimes = Util.null2String(rs.getString("islasttimes")); + } + bb.writeLog("islasttimes:"+islasttimes); + if(StringUtils.isBlank(islasttimes)){ + islasttimes = "1"; + }else{ + islasttimes = "0"; + } + + groupid++; + String userIdTemp = addUser; + String agentorbyagentid = "-1"; + String agenttype = "0"; + showOrder = rs.getInt("showorder") + 1; + ArrayList list = new ArrayList(); + list.add(requestid); + list.add(userIdTemp); + list.add(groupid); + list.add(workflowid); + list.add(workflowtype); + list.add(0); + list.add(currentNodeId); + list.add(agentorbyagentid); + list.add(agenttype); + list.add(showOrder); + list.add(receivedate); + list.add(receivetime); + list.add(0); + list.add(0); + list.add(islasttimes); + list.add(0); + list.add(needwfback); + list.add("8"); + list.add("18"); + lists.add(list); + } + } + + boolean isTrue = rs.executeBatchSql(" insert into workflow_currentoperator(requestid,userid,groupid,workflowid,workflowtype,usertype,nodeid,agentorbyagentid,agenttype,showorder,receivedate,receivetime,viewtype,iscomplete,islasttimes,groupdetailid,needwfback,isremark,preisremark) " + + " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", lists); + bb.writeLog("isTrue:"+isTrue); + } + + public Map queryRequestBaseByRequestid(String requestid){ + RecordSet rs = new RecordSet(); + Map baseMap = new HashMap(); + String requestname = ""; + String currentnodeid = ""; + String currentnodetype = ""; + + try{ + String sql =" select t1.requestname,t1.currentnodetype,t1.currentnodeid" + + " from workflow_requestbase t1\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + + rs.executeQuery(sql); + if (rs.next()){ + requestname = Util.null2String(rs.getString("requestname")) ; + currentnodeid = Util.null2String(rs.getString("currentnodeid")) ; + currentnodetype = Util.null2String(rs.getString("currentnodetype")) ; + baseMap.put("requestname",requestname); + baseMap.put("currentnodeid",currentnodeid); + baseMap.put("currentnodetype",currentnodetype); + baseMap.put("requestid",requestid); + } + }catch (Exception e){ + + } + return baseMap; + } + + + +} + + diff --git a/src/com/customization/dito/batch/BatchRequestSubmitSendPortalCmd.java b/src/com/customization/dito/batch/BatchRequestSubmitSendPortalCmd.java new file mode 100644 index 00000000..94c8a0d6 --- /dev/null +++ b/src/com/customization/dito/batch/BatchRequestSubmitSendPortalCmd.java @@ -0,0 +1,80 @@ +package com.customization.dito.batch; + +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestForm.ForwardSubmitCmd; +import weaver.file.FileUpload; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.card.SendRemarkToCardUtil; + +import javax.servlet.http.HttpServletRequest; +import java.util.Map; + + +/** + * 转发、转办、意见征询等提交待办推送 + * + * @author wangj + * @version 1.00版本 + * @Date 2022/10/11 + */ +@CommandDynamicProxy(target = ForwardSubmitCmd.class, desc = "流程转发、转办、意见征询等提交后推送消息卡片") +public class BatchRequestSubmitSendPortalCmd extends AbstractCommandProxy> { + @Override + public Map execute(Command> targetCommand) { + //获取到被代理对象 + ForwardSubmitCmd forwardSubmitCmd = (ForwardSubmitCmd) targetCommand; + //获取被代理对象的参数 + //对参数做预处理 + BaseBean bb = new BaseBean(); + bb.writeLog("-----------SendRemark2CardCmd------start--"); + HttpServletRequest request = forwardSubmitCmd.getRequest(); + FileUpload fu = new FileUpload(request); + + String requestid = Util.null2String(fu.getParameter("requestid")); + String nodeid = Util.null2String(fu.getParameter("nodeid")); + String workflowid = Util.null2String(fu.getParameter("workflowid")); + String f_weaver_belongto_userid = Util.null2String(fu.getParameter("f_weaver_belongto_userid")); + String f_weaver_belongto_usertype = Util.null2String(fu.getParameter("f_weaver_belongto_usertype")); + User user = forwardSubmitCmd.getUser(); + + String agentType = Util.null2String(fu.getParameter("agentType")); + String agentorByAgentId = Util.null2String(fu.getParameter("agentorByAgentId")); + String remark = Util.null2String(fu.getParameter("remark")); + + // 2 征求意见;3 转办 ;1 转发; 5 征询转办 + int forwardflag = Util.getIntValue(fu.getParameter("forwardflag")); + + bb.writeLog("SendRemark2CardCmd-requestid:"+requestid); + bb.writeLog("SendRemark2CardCmd-nodeid:"+nodeid); + bb.writeLog("SendRemark2CardCmd-workflowid:"+workflowid); + bb.writeLog("SendRemark2CardCmd-remark:"+remark); + + //参数回写 + //执行标准的业务处理 + Map result = nextExecute(targetCommand); + + sendDate(result,workflowid,requestid,nodeid,agentType,agentorByAgentId,remark,forwardflag,user); + bb.writeLog("-----------SendRemark2CardCmd------end--"); + return result; + } + + public void sendDate(Map result, String workflowid, String requestid, String nodeid, String agentType, String agentorByAgentId, String remark, int forwardflag,User user) { + BaseBean bb = new BaseBean(); + boolean status = (boolean) result.get("success"); + bb.writeLog("-----------SendRemark2CardCmd------status:"+status); + if (status) { + bb.writeLog("-----------SendRemark2CardCmd------forwardflag:"+forwardflag); + if(forwardflag == 3){ + SendRemarkToCardUtil sendRemarkToCardUtil = new SendRemarkToCardUtil(); +// sendRemarkToCardUtil.sendRequestRemarkToCard(requestid,workflowid,remark); + } + } + } + + + +} diff --git a/src/com/customization/dito/card/SendRemark2CardCmd.java b/src/com/customization/dito/card/SendRemark2CardCmd.java new file mode 100644 index 00000000..509c15a0 --- /dev/null +++ b/src/com/customization/dito/card/SendRemark2CardCmd.java @@ -0,0 +1,79 @@ +package com.customization.dito.card; + +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestForm.ForwardSubmitCmd; +import weaver.file.FileUpload; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.card.SendRemarkToCardUtil; +import javax.servlet.http.HttpServletRequest; +import java.util.Map; + + +/** + * 转发、转办、意见征询等提交待办推送 + * + * @author wangj + * @version 1.00版本 + * @Date 2022/10/11 + */ +@CommandDynamicProxy(target = ForwardSubmitCmd.class, desc = "流程转发、转办、意见征询等提交后推送消息卡片") +public class SendRemark2CardCmd extends AbstractCommandProxy> { + @Override + public Map execute(Command> targetCommand) { + //获取到被代理对象 + ForwardSubmitCmd forwardSubmitCmd = (ForwardSubmitCmd) targetCommand; + //获取被代理对象的参数 + //对参数做预处理 + BaseBean bb = new BaseBean(); + bb.writeLog("-----------SendRemark2CardCmd------start--"); + HttpServletRequest request = forwardSubmitCmd.getRequest(); + FileUpload fu = new FileUpload(request); + + String requestid = Util.null2String(fu.getParameter("requestid")); + String nodeid = Util.null2String(fu.getParameter("nodeid")); + String workflowid = Util.null2String(fu.getParameter("workflowid")); + String f_weaver_belongto_userid = Util.null2String(fu.getParameter("f_weaver_belongto_userid")); + String f_weaver_belongto_usertype = Util.null2String(fu.getParameter("f_weaver_belongto_usertype")); + User user = forwardSubmitCmd.getUser(); + + String agentType = Util.null2String(fu.getParameter("agentType")); + String agentorByAgentId = Util.null2String(fu.getParameter("agentorByAgentId")); + String remark = Util.null2String(fu.getParameter("remark")); + + // 2 征求意见;3 转办 ;1 转发; 5 征询转办 + int forwardflag = Util.getIntValue(fu.getParameter("forwardflag")); + + bb.writeLog("SendRemark2CardCmd-requestid:"+requestid); + bb.writeLog("SendRemark2CardCmd-nodeid:"+nodeid); + bb.writeLog("SendRemark2CardCmd-workflowid:"+workflowid); + bb.writeLog("SendRemark2CardCmd-remark:"+remark); + + //参数回写 + //执行标准的业务处理 + Map result = nextExecute(targetCommand); + + sendDate(result,workflowid,requestid,nodeid,agentType,agentorByAgentId,remark,forwardflag,user); + bb.writeLog("-----------SendRemark2CardCmd------end--"); + return result; + } + + public void sendDate(Map result, String workflowid, String requestid, String nodeid, String agentType, String agentorByAgentId, String remark, int forwardflag,User user) { + BaseBean bb = new BaseBean(); + boolean status = (boolean) result.get("success"); + bb.writeLog("-----------SendRemark2CardCmd------status:"+status); + if (status) { + bb.writeLog("-----------SendRemark2CardCmd------forwardflag:"+forwardflag); + if(forwardflag == 3 || forwardflag == 2 || forwardflag == 1){ + SendRemarkToCardUtil sendRemarkToCardUtil = new SendRemarkToCardUtil(); + sendRemarkToCardUtil.sendRequestRemarkToCard(requestid,workflowid,remark,user); + } + } + } + + + +} diff --git a/src/com/customization/dito/card/SendRequest2CardCmd.java b/src/com/customization/dito/card/SendRequest2CardCmd.java new file mode 100644 index 00000000..6417d1ca --- /dev/null +++ b/src/com/customization/dito/card/SendRequest2CardCmd.java @@ -0,0 +1,172 @@ +package com.customization.dito.card; + +import com.customization.wfTodoCard.service.CheckSendCardService; +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestForm.RequestSubmitCmd; +import com.engine.workflow.entity.requestForm.RequestOperationResultBean; +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.StringUtils; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.card.SendRequestToCardUtil; +import weaver.workflow.request.RequestSignRelevanceWithMe; + +import javax.servlet.http.HttpServletRequest; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +/*** + * + */ +@CommandDynamicProxy(target = RequestSubmitCmd.class, desc="流程提交后给门户卡片发送卡片信息") +public class SendRequest2CardCmd extends AbstractCommandProxy> { + + @Override + public Map execute(Command> targetCommand) { + + RequestSubmitCmd requestSubmitCmd = (RequestSubmitCmd)targetCommand; + + BaseBean bb = new BaseBean(); + HttpServletRequest request = requestSubmitCmd.getRequest(); + String requestid = Util.null2String(request.getParameter("requestid")).trim(); + String workflowid = Util.null2String(request.getParameter("workflowid")).trim(); + String src = Util.null2String(request.getParameter("src")).trim(); + String nodeid = Util.null2String(request.getParameter("nodeid")); + String workflowname = Util.null2String(request.getParameter("workflowname")); + String remark = Util.null2String(request.getParameter("remark")); + + /*** + * 空值:流程正常提交 + * 1:被代理人提交流程 + * 2:代理人提交流程 + */ + String agentType = Util.null2String(request.getParameter("agentType")); + String f_weaver_belongto_userid = Util.null2String(request.getParameter("f_weaver_belongto_userid")); + String f_weaver_belongto_usertype = Util.null2String(request.getParameter("f_weaver_belongto_usertype")); + String creater = Util.null2String(request.getParameter("creater")); + String intervenorid = Util.null2String(request.getParameter("Intervenorid")); + String agentorByAgentId = Util.null2String(request.getParameter("agentorByAgentId")); + String isSelectValue = Util.null2String(request.getParameter("isSelectValue")); + + User user = requestSubmitCmd.getUser(); + String userid = user.getUID()+""; + bb.writeLog("SendRequest2CardCmd-requestid:"+requestid); + bb.writeLog("SendRequest2CardCmd-workflowid:"+workflowid); + bb.writeLog("SendRequest2CardCmd-src:"+src); + bb.writeLog("SendRequest2CardCmd-nodeid:"+nodeid); + bb.writeLog("SendRequest2CardCmd-workflowname:"+workflowname); + bb.writeLog("SendRequest2CardCmd-user:"+user.getLoginid()); + bb.writeLog("SendRequest2CardCmd-f_weaver_belongto_userid:"+f_weaver_belongto_userid); + bb.writeLog("SendRequest2CardCmd-f_weaver_belongto_usertype:"+f_weaver_belongto_usertype); + bb.writeLog("SendRequest2CardCmd-creater:"+creater); + bb.writeLog("SendRequest2CardCmd-agentType:"+agentType); + bb.writeLog("SendRequest2CardCmd-intervenorid:"+intervenorid); + bb.writeLog("SendRequest2CardCmd-agentorByAgentId:"+agentorByAgentId); + bb.writeLog("SendRequest2CardCmd-remark:"+remark); + bb.writeLog("SendRequest2CardCmd-isSelectValue:"+isSelectValue); + + //执行标准的业务处理 + Map result = nextExecute(targetCommand); + bb.writeLog("SendRequest2CardCmd-submit-end:"+requestid+" time:"+System.currentTimeMillis()); + + sendDate(result,requestid,agentType,src,nodeid,userid,f_weaver_belongto_userid,user,workflowid,remark,isSelectValue); + + return result; + } + + /*** + * + * @param result + * @param requestid + * @param agentType + * @param src + * @param nodeid + * @param userid + * @param f_weaver_belongto_userid + * @param user + */ + public void sendDate(Map result,String requestid,String agentType,String src,String nodeid,String userid,String f_weaver_belongto_userid,User user,String workflowId,String remark,String isSelectValue){ + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + try{ + if(result.containsKey("data")){ + //对返回值做加工处理 + RequestOperationResultBean resultBean = (RequestOperationResultBean) result.get("data"); + String executeResult = resultBean.getType().name(); + bb.writeLog("SendRequest2CardCmd-executeResult:"+executeResult); + + String new_requestid2 = Util.null2String(resultBean.getResultInfo().get("requestid")); + bb.writeLog("SendRequest2CardCmd-new_requestid2:"+new_requestid2); + + if("SUCCESS".equals(executeResult)){ + String new_requestid = Util.null2String(resultBean.getResultInfo().get("requestid")); + bb.writeLog("SendRequest2CardCmd-new_requestid:"+new_requestid); + +// if ("1".equals(isSelectValue) && null != remark && !"".equals(remark)) { +// Document doc = Jsoup.parse(remark); +// // 选择所有的

标签 +// Elements pTags = doc.select("p"); +// +// String title = ""; +// Iterator pIt = pTags.iterator(); +// while(pIt.hasNext()) { +// Element element = pIt.next(); +// title += element.text(); +// } +// +// new BaseBean().writeLog("sendDate-title:" + title); +// if(StringUtils.isNotBlank(title)){ +// title = StringEscapeUtils.unescapeHtml4(title); +// } +// new BaseBean().writeLog("sendDate-title2:" + title); +// +// RequestSignRelevanceWithMe reqsignwm = new RequestSignRelevanceWithMe(); +// List atResourceids = reqsignwm.parseRemark(remark); +// for (String atResourceid : atResourceids) { +// new BaseBean().writeLog("RequestSubmitCmd-atResourceid:" + atResourceid); +// new CheckSendCardService().sendShareCard(""+user.getUID(), atResourceid, String.valueOf(requestid),"",title,"You have been tagged in a comment."); +// } +// } + + + String isMessageRemind = ""; + String sql1 = "select id,workflowname, isMessageRemind,icon from workflow_base where id='" + workflowId + "'"; + bb.writeLog("SendRequest2CardCmd-sql1:"+sql1); + rs.executeQuery(sql1); + if(rs.next()){ + isMessageRemind = rs.getString("isMessageRemind"); + } + bb.writeLog("SendRequest2CardCmd-isMessageRemind:"+isMessageRemind); + + if("1".equals(isMessageRemind)){ + if ("1".equals(isSelectValue) && null != remark && !"".equals(remark)) { + SendRequestToCardUtil sendRequestToCardUtil = new SendRequestToCardUtil(); + if(Util.getIntValue(requestid) == -1 && "submit".equals(src)){ + sendRequestToCardUtil.sendRequestAtToCard(new_requestid,user,nodeid,workflowId,remark); + }else if(Util.getIntValue(requestid)> 0 && "submit".equals(src)){ + sendRequestToCardUtil.sendRequestAtToCard(requestid,user,nodeid,workflowId,remark); + }else if(Util.getIntValue(requestid)> 0 && "reject".equals(src)){ + sendRequestToCardUtil.sendRequestAtToCard(requestid,user,nodeid,workflowId,remark); + } + } + } + } + } + }catch (Exception e){ + bb.writeLog("e:"+e); + } + } + +} + + diff --git a/src/com/customization/dito/sendtodo/RequestBaseInfoUtil.java b/src/com/customization/dito/sendtodo/RequestBaseInfoUtil.java new file mode 100644 index 00000000..da777032 --- /dev/null +++ b/src/com/customization/dito/sendtodo/RequestBaseInfoUtil.java @@ -0,0 +1,180 @@ +package com.customization.dito.sendtodo; + +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.interfaces.dito.comInfo.PropBean; + +import java.util.HashMap; +import java.util.Map; + +public class RequestBaseInfoUtil { + + public Map queryRequestBaseByRequestid(String requestid){ + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + Map baseMap = new HashMap(); + String workflowname = ""; + String requestname = ""; + String currentnodeid = ""; + String currentnodename = "" ; + String createrloginid = ""; + String createruserid = ""; + String createrusername = ""; + String currentnodetype = ""; + + try{ + String sql =" select t1.requestname,t1.currentnodetype,t1.currentnodeid,h2.id as createruserid,h2.lastname as createrusername,h2.loginid as createrloginid,d1.nodename as currentnodename,t3.workflowname" + + " from workflow_requestbase t1\n" + + " inner join workflow_base t3 on t1.workflowid = t3.id\n" + + " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + + rs.executeQuery(sql); + if (rs.next()){ + workflowname = Util.null2String(rs.getString("workflowname")) ; + requestname = Util.null2String(rs.getString("requestname")) ; + currentnodeid = Util.null2String(rs.getString("currentnodeid")) ; + currentnodename = Util.null2String(rs.getString("currentnodename")) ; + createrloginid = Util.null2String(rs.getString("createrloginid")) ; + createruserid = Util.null2String(rs.getString("createruserid")) ; + createrusername = Util.null2String(rs.getString("createrusername")) ; + currentnodetype = Util.null2String(rs.getString("currentnodetype")) ; + + baseMap.put("workflowname",workflowname); + baseMap.put("requestname",requestname); + baseMap.put("currentnodeid",currentnodeid); + baseMap.put("currentnodename",currentnodename); + baseMap.put("createrloginid",createrloginid); + baseMap.put("createruserid",createruserid); + baseMap.put("createrusername",createrusername); + baseMap.put("currentnodetype",currentnodetype); + baseMap.put("requestid",requestid); + } + }catch (Exception e){ + + } + return baseMap; + } + + + public int getTodoCountByRequestNode(String requestid,String nodeid){ + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + int count = 0; + try{ + String countSql = " select t2.userid\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11'))\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid+ + " and t2.nodeid = " + nodeid ; + + bb.writeLog("sendTodoDataByNode--countSql:"+countSql); + rs.executeQuery(countSql); + while (rs.next()){ + count++; + } + }catch (Exception e){ + + } + return count; + } + + public String getUserStaffid(String userid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + String staffId = ""; + try { + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + + String userSql = " select "+cus_staff+" as staffid from cus_fielddata where scopeid="+scopeid+" and scope='"+scope+"' and id=?"; + rs.executeQuery(userSql,userid); + if (rs.next()){ + staffId = Util.null2String(rs.getString("staffid")); + } + }catch (Exception e){ + + } + + return staffId; + } + + + public String getRemark89Sql(String requestid){ + + + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + + String sql =" select t2.userid,h1.loginid,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ + " left join (select id, lastname,loginid,email from hrmresource where status = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + + " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t2.isremark in ('8','9') and t2.preisremark not in ('18') \n" + + " and t2.islasttimes = 1\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid ; + return sql; + } + + + public String getTodoSql(String requestid){ + + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + + String sql =" select t2.userid,h1.loginid,h1.email,c1."+cus_staff+" as staffid "+ + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ + " left join (select id, lastname,loginid,email from hrmresource where status = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11'))\n" + + // " and t2.islasttimes = 1\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid; + return sql; + } + + + public int getTodoCountByRequestid(String requestid){ + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + int count = 0; + try{ + + String countSql = " select t2.userid\n" + + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11'))\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid ; + + bb.writeLog("sendTodoDataByNode--countSql:"+countSql); + rs.executeQuery(countSql); + while (rs.next()){ + count++; + } + }catch (Exception e){ + + } + return count; + } + + +} diff --git a/src/com/customization/dito/sendtodo/SendPortalAtAddTodoCmd.java b/src/com/customization/dito/sendtodo/SendPortalAtAddTodoCmd.java index ad00a8d2..bbc2b7f3 100644 --- a/src/com/customization/dito/sendtodo/SendPortalAtAddTodoCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalAtAddTodoCmd.java @@ -9,9 +9,7 @@ import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.TimeUtil; import weaver.general.Util; -import weaver.hrm.User; import weaver.interfaces.dito.comInfo.PropBean; - import java.net.URLEncoder; import java.util.List; import java.util.Map; @@ -25,6 +23,8 @@ import java.util.Map; */ public class SendPortalAtAddTodoCmd { + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + private Map params; public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; @@ -54,25 +54,18 @@ public class SendPortalAtAddTodoCmd { public void sendTodoDataByNode(String requestid, List> todolist, String username, String passwd, String center, String portal_todourl, String bpm_workflowurl, String bpm_app_workflowurl, String bpm_app_requesturl){ HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); String zhjkbs = "com.customization.dito.sendtodo.SendPortalAtAddTodoCmd.sendTodoDataByNode"; - String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - JSONObject requestObject = new JSONObject(); - RecordSet rs = new RecordSet(); + String notes = "at后创建门户的待阅数据"; + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); BaseBean bb = new BaseBean(); bb.writeLog("SendPortalAtAddTodoCmd--sendTodoDataByNode"); - String terminal = "1" ; - String taskType = "0"; - String actionType = "0" ; - try { bb.writeLog("SendPortalAtAddTodoCmd sleep start"); Thread.sleep(2000); - bb.writeLog("sleep end "); - - String sql = ""; + bb.writeLog("SendPortalAtAddTodoCmd sleep end "); String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); @@ -81,119 +74,128 @@ public class SendPortalAtAddTodoCmd { String urlDing = replace+bpm_app_requesturl+requestid; String urlApp = replace+bpm_app_requesturl+requestid; + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); if(StringUtils.isNotEmpty(mobileJumpUrl)){ urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - bb.writeLog("urlDing", urlDing); +// String requestname = "" ; +// String workflowname = "" ; +// String nodeId = "" ; +// String nodeName = "" ; +// String lastName = ""; +// String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid"+ +// " from workflow_requestbase t1\n" + +// " inner join workflow_base t3 on t1.workflowid = t3.id\n" + +// " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ +// " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and t1.requestid = "+requestid ; +// +// bb.writeLog("sendTodoDataByNode--sql2:"+sql); +// +// rs.executeQuery(sql); +// if (rs.next()){ +// requestname = Util.null2String(rs.getString("requestname")) ; +// workflowname = Util.null2String(rs.getString("workflowname")) ; +// nodeId = Util.null2String(rs.getString("nodeid")) ; +// nodeName = Util.null2String(rs.getString("nodeName")) ; +// lastName = Util.null2String(rs.getString("loginid")) ; +// } + + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + +// JSONObject requestObject = new JSONObject(); +// +// requestObject.put("creator",createrLoginId); +// requestObject.put("title",requestname); +// requestObject.put("messageContent",requestname); +// requestObject.put("nodeId",currentNodeId); +// requestObject.put("nodeName",currentNodeName); +// requestObject.put("ticketType",workflowname); +// +// requestObject.put("center",center); +// requestObject.put("taskType",taskType); +// requestObject.put("actionType",actionType); +// requestObject.put("createDate",processTime); +// requestObject.put("messageTitle",getShortMessageTitle(requestname)); +// requestObject.put("terminal",terminal); +// requestObject.put("urlPc",urlPc); +// requestObject.put("urlApp",urlApp); +// requestObject.put("urlDing",urlDing); - String requestname = "" ; - String workflowname = "" ; - String nodeId = "" ; - String nodeName = "" ; - String lastName = ""; - sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid"+ - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("sendTodoDataByNode--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - nodeId = Util.null2String(rs.getString("nodeid")) ; - nodeName = Util.null2String(rs.getString("nodeName")) ; - lastName = Util.null2String(rs.getString("loginid")) ; - } - - requestObject.put("center",center); - requestObject.put("title",requestname); - requestObject.put("creator",lastName); -// requestObject.put("taskCode","weaver"+requestid); - - requestObject.put("taskType",taskType); - requestObject.put("actionType",actionType); - requestObject.put("createDate",processTime); - requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); - requestObject.put("terminal",terminal); - requestObject.put("urlPc",urlPc); - requestObject.put("urlApp",urlApp); - requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",workflowname); - - - JSONArray taskObjectList = new JSONArray(); for (Map todoMap: todolist){ bb.writeLog("================== SendPortalAtAddTodoCmd todoMap============== "+ todoMap); - JSONObject taskObject = new JSONObject(); - JSONArray list = new JSONArray(); - JSONObject requestObject2 = new JSONObject(); - requestObject2.putAll(requestObject); - - SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); - requestObject2.put("nodeName",todoMap.get("nodename")); - requestObject2.put("nodeId",todoMap.get("nodeid")); - requestObject2.put("taskCode","weaver"+requestid+"_at_"+todoMap.get("id")); - - String creator = (String) todoMap.get("loginid"); - if("sysadmin".equals(creator)){ - creator = "Admin"; - } + String userid = Util.null2String(todoMap.get("id")) ; + String creator = Util.null2String(todoMap.get("loginid")); + JSONArray taskObjectList = new JSONArray(); + JSONObject taskObject = new JSONObject(); taskObject.put("objectAction","0"); taskObject.put("objectType","0"); taskObject.put("objectCode",creator); taskObject.put("objectId",todoMap.get("id")); taskObject.put("operatorCode",creator); - list.add(taskObject); - - requestObject2.put("messageTitle",getShortMessageTitle(requestname)); - requestObject2.put("messageContent", requestname); - requestObject2.put("terminal", "1"); - requestObject2.put("taskType", "1"); - requestObject2.put("actionType", "0"); - - requestObject2.put("taskObjectList",list); + taskObjectList.add(taskObject); + + JSONObject requestObject = new JSONObject(); + + String nodeId = Util.null2String(todoMap.get("nodename")); + String nodeName = Util.null2String(todoMap.get("nodename")); + requestObject.put("nodeName",todoMap.get("nodename")); + requestObject.put("nodeId",todoMap.get("nodeid")); + requestObject.put("taskCode","weaver"+requestid+"_at_"+todoMap.get("id")); + requestObject.put("terminal", "1"); + requestObject.put("taskType", "1"); + requestObject.put("actionType", "0"); + + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + requestObject.put("taskObjectList",taskObjectList); String auth = username + ":" + passwd; - - bb.writeLog("SendPortalToReadUtil--requestObject:" + requestObject2.toJSONString()); - String msgdata = httpRequestUtil.doPostByAuth(Constants.portal_todourl, requestObject2.toJSONString(), auth); + bb.writeLog("SendPortalToReadUtil--requestObject:" + requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(Constants.portal_todourl, requestObject.toJSONString(), auth); bb.writeLog("SendPortalToReadUtil-msgdata:" + msgdata); if (!"".equals(msgdata)) { JSONObject msgObject = JSONObject.parseObject(msgdata); - //{"resultCode":"1","resultMsg":"No Result"} if (msgObject.containsKey("resultCode")) { String resultCode = msgObject.getString("resultCode"); if ("0".equals(resultCode)) { - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName, "",requestObject2.toJSONString(),resultCode,"",zhjkbs,(String) todoMap.get("id")); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName, "",requestObject.toJSONString(),resultCode,"",zhjkbs,userid,notes); sendPortalErrorUtil.saveAtRyjb(requestid,nodeId,(String) todoMap.get("id")); - }else if ("TODO-FAIL-002".equals(resultCode)){ - //The task does not exist.任务不存在,则新增 - User user = new User(); - user.setUid(Integer.valueOf(todoMap.get("id").toString())); - SendPortalToReadUtil sendPortalToReadUtil = new SendPortalToReadUtil(); - sendPortalToReadUtil.sendToReadDataByCreateNode(requestid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); - - }else{ - + } +// else if ("TODO-FAIL-002".equals(resultCode)){ +// //The task does not exist.任务不存在,则新增 +// User user = new User(); +// user.setUid(Integer.valueOf(todoMap.get("id").toString())); +// SendPortalToReadUtil sendPortalToReadUtil = new SendPortalToReadUtil(); +// sendPortalToReadUtil.sendToReadDataByCreateNode(requestid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); +// +// } + else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName, "",requestObject2.toJSONString(),resultCode,resultmsg,zhjkbs,(String) todoMap.get("id")); - + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName, "",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid,notes); } } } - } - } catch (Exception e) { e.printStackTrace(); } @@ -251,9 +253,9 @@ public class SendPortalAtAddTodoCmd { try { String workcode = ""; - String sql = " select * from (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) w where w.id = '" + userid + "'"; + String sql = " select * from (select id, lastname,loginid from hrmresource union all select id, lastname,loginid from hrmresourcemanager ) w where w.id = '" + userid + "'"; rs.executeQuery(sql); - while (rs.next()) { + if (rs.next()) { workcode = Util.null2String(rs.getString("loginid")); } diff --git a/src/com/customization/dito/sendtodo/SendPortalErrorUtil.java b/src/com/customization/dito/sendtodo/SendPortalErrorUtil.java index 20d3519e..55c968cc 100644 --- a/src/com/customization/dito/sendtodo/SendPortalErrorUtil.java +++ b/src/com/customization/dito/sendtodo/SendPortalErrorUtil.java @@ -127,6 +127,8 @@ public class SendPortalErrorUtil { bb.writeLog("doCreateSendPortalTodoErrorInfo"); String uf_table = "uf_portal_error" ; + + // ModeRightInfo modeRightInfo = new ModeRightInfo(); // modeRightInfo.setNewRight(true); @@ -208,8 +210,49 @@ public class SendPortalErrorUtil { // } // } } + + insertNewDeleteLog(zhjkbs,mainMap); + } + + + public void insertNewDeleteLog(String zhjkbs,Map mainMap){ + + if("com.customization.dito.sendtodo.SendPortalTodoUtil.sendTodoDataByCreater".equals(zhjkbs)){ + BaseBean bb = new BaseBean(); + String saveLogTable = "uf_portal_savelog"; + RecordSet rs = new RecordSet(); + String formmodeid = "" ; + String sql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = '"+saveLogTable+"' " ; + rs.execute(sql); + if(rs.next()){ + formmodeid = Util.null2String(rs.getString("id")); + } + + mainMap.put("formmodeid",formmodeid); + + String tablename = "" ; + String tablenvalue = "" ; + for (Map.Entry entry : mainMap.entrySet()) + { + String fieldname = Util.null2String(entry.getKey()).trim(); + String fieldvalue = Util.null2String(entry.getValue()).replace("'", "''").trim(); + tablename += tablename==""? fieldname :","+fieldname ; + tablenvalue += tablenvalue=="" ? "'"+fieldvalue+"'" :",'"+fieldvalue+"'" ; + } + bb.writeLog("tablename:"+tablename); + bb.writeLog("tablenvalue:"+tablenvalue); + + if(tablename !="" && tablenvalue !="") { + sql = " insert into " + saveLogTable + "(" + tablename + ") values (" + tablenvalue + ")"; + bb.writeLog("sql:" + sql); + boolean boo = rs.execute(sql); + } + } } + public void saveAtRyjb(String requestid,String nodeid,String userid){ RecordSet rs = new RecordSet(); String uf_table = "uf_lcatryjlb" ; diff --git a/src/com/customization/dito/sendtodo/SendPortalErrorUtilRunnable.java b/src/com/customization/dito/sendtodo/SendPortalErrorUtilRunnable.java index 10db30ac..33b681dc 100644 --- a/src/com/customization/dito/sendtodo/SendPortalErrorUtilRunnable.java +++ b/src/com/customization/dito/sendtodo/SendPortalErrorUtilRunnable.java @@ -118,6 +118,11 @@ public class SendPortalErrorUtilRunnable implements Runnable{ sql = " insert into "+uf_table+"("+tablename+") values ("+ tablenvalue +")"; bb.writeLog("sql:"+sql); boolean boo = rs.execute(sql); + + + + + // if(boo) // { // String dataid = "" ; @@ -134,6 +139,46 @@ public class SendPortalErrorUtilRunnable implements Runnable{ // } // } } + + insertNewDeleteLog(zhjkbs,mainMap); } + + public void insertNewDeleteLog(String zhjkbs,Map mainMap){ + + + if("weaver.interfaces.dito.monitor.delete.MonitorRequestDeleteSendPortalUtil.monitorDelete4Requestid".equals(zhjkbs)){ + BaseBean bb = new BaseBean(); + String saveLogTable = "uf_portal_deletelog"; + RecordSet rs = new RecordSet(); + String formmodeid = "" ; + String sql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = '"+saveLogTable+"' " ; + rs.execute(sql); + if(rs.next()){ + formmodeid = Util.null2String(rs.getString("id")); + } + + mainMap.put("formmodeid",formmodeid); + + String tablename = "" ; + String tablenvalue = "" ; + for (Map.Entry entry : mainMap.entrySet()) + { + String fieldname = Util.null2String(entry.getKey()).trim(); + String fieldvalue = Util.null2String(entry.getValue()).replace("'", "''").trim(); + tablename += tablename==""? fieldname :","+fieldname ; + tablenvalue += tablenvalue=="" ? "'"+fieldvalue+"'" :",'"+fieldvalue+"'" ; + } + bb.writeLog("tablename:"+tablename); + bb.writeLog("tablenvalue:"+tablenvalue); + + if(tablename !="" && tablenvalue !="") { + sql = " insert into " + saveLogTable + "(" + tablename + ") values (" + tablenvalue + ")"; + bb.writeLog("sql:" + sql); + boolean boo = rs.execute(sql); + } + } + } } diff --git a/src/com/customization/dito/sendtodo/SendPortalForwardCmd.java b/src/com/customization/dito/sendtodo/SendPortalForwardCmd.java index 737bb146..a3e937bc 100644 --- a/src/com/customization/dito/sendtodo/SendPortalForwardCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalForwardCmd.java @@ -27,7 +27,6 @@ import java.util.regex.Pattern; */ public class SendPortalForwardCmd { - private Map params; public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); @@ -40,13 +39,7 @@ public class SendPortalForwardCmd { String scopeid = "-1"; String scope = "HrmCustomFieldByInfoType" ; - public SendPortalForwardCmd(){ - } - - public SendPortalForwardCmd(Map params){ - this.params=params; - } //转发 public void forwardSendPortal(String requestid,int currentnodeid,User user,Set resourceids) { @@ -89,13 +82,20 @@ public class SendPortalForwardCmd { String urlDing = replace + bpm_app_requesturl + requestid; String urlApp = replace + bpm_app_requesturl + requestid; - String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); try { + + if (StringUtils.isNotEmpty(mobileJumpUrl)) { + urlDing += "&returnUrl=" + URLEncoder.encode(mobileJumpUrl, "UTF-8"); + urlApp += "&returnUrl=" + URLEncoder.encode(mobileJumpUrl, "UTF-8"); + } + + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + sql = " select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid " + " from workflow_requestbase t1\n" + " inner join workflow_base t3 on t1.workflowid = t3.id\n" + " left join workflow_nodebase d1 on d1.id = t1.currentnodeid " + - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + " and t1.requestid = " + requestid; @@ -111,17 +111,12 @@ public class SendPortalForwardCmd { loginid = Util.null2String(rs.getString("loginid")); } - if (StringUtils.isNotEmpty(mobileJumpUrl)) { - urlDing += "&returnUrl=" + URLEncoder.encode(mobileJumpUrl, "UTF-8"); - urlApp += "&returnUrl=" + URLEncoder.encode(mobileJumpUrl, "UTF-8"); - } - JSONArray taskObjectList = new JSONArray(); - bb.writeLog("SendPortalForwardCmd urlDing", urlDing); + JSONArray taskObjectList = new JSONArray(); + requestObject.put("creator", loginid); requestObject.put("center", center); requestObject.put("title", requestname); - requestObject.put("creator", loginid); requestObject.put("taskCode", "weaver" + requestid+"_zf_"+ userid); requestObject.put("nodeId", currentnodeid); requestObject.put("taskType", taskType); @@ -136,7 +131,7 @@ public class SendPortalForwardCmd { requestObject.put("nodeName", getNodeName(currentnodeid)); requestObject.put("ticketType", workflowname); - sql = " select t2.userid,h1.loginid,h1.email,c1." + cus_staff + " as staffid " + + sql = " select t2.userid,h1.loginid,h1.email,c1." + cus_staff + " as staffid " + " from workflow_requestbase t1\n" + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= " + scopeid + " and c1.scope = '" + scope + "' " + @@ -155,11 +150,6 @@ public class SendPortalForwardCmd { String usercode = Util.null2String(rs.getString("loginid")); String staffid = Util.null2String(rs.getString("staffid")); String userid1 = Util.null2String(rs.getString("userid")); - userids += StringUtils.isEmpty(userids) ? userid1 : "," + userid1; - - if ("sysadmin".equals(usercode)) { - usercode = "Admin"; - } String objectCode = usercode; String operatorCode = usercode; @@ -229,7 +219,6 @@ public class SendPortalForwardCmd { String center = PropBean.getUfPropValue("center"); String bpm_workflowurl = PropBean.getUfPropValue("bpm_workflowurl"); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - String portal_doneurl = PropBean.getUfPropValue("portal_doneurl"); String cus_staff = PropBean.getUfPropValue("cus_staff") ; String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); RecordSet rs = new RecordSet(); @@ -241,40 +230,33 @@ public class SendPortalForwardCmd { String objectAction = "0"; String objectType = "0"; - String sql = ""; String workflowname = ""; String nodeId = ""; String nodeName = ""; - JSONObject requestObject = new JSONObject(); - String urlPc = "[newtab]"+ Constants.bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; String replace = bpm_app_workflowurl.replace("/bpm", ""); - String urlDing = replace+bpm_app_requesturl+requestid ; - String urlApp = replace+bpm_app_requesturl+requestid ; - - if(StringUtils.isNotEmpty(mobileJumpUrl)){ - urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); - urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); - } + String urlDing = replace+bpm_app_requesturl+requestid; + String urlApp = replace+bpm_app_requesturl+requestid; +// if(org.apache.commons.lang3.StringUtils.isNotEmpty(mobileJumpUrl)){ +// urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); +// urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); +// } - String msgdata = ""; String requestname = ""; String lastname = ""; String userids = ""; String loginid = ""; - String emailArray = ""; - - sql = " select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid " + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid " + - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = " + requestid; + String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid " + + " from workflow_requestbase t1\n" + + " inner join workflow_base t3 on t1.workflowid = t3.id\n" + + " left join workflow_nodebase d1 on d1.id = t1.currentnodeid " + + " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = " + requestid; bb.writeLog("SendPortalForwardCmd transfer --sql:" + sql); - rs.executeQuery(sql); if (rs.next()) { requestname = Util.null2String(rs.getString("requestname")); @@ -285,17 +267,12 @@ public class SendPortalForwardCmd { loginid = Util.null2String(rs.getString("loginid")); } - if (StringUtils.isNotEmpty(mobileJumpUrl)) { - urlDing += "&returnUrl=" + URLEncoder.encode(mobileJumpUrl, "UTF-8"); - urlApp += "&returnUrl=" + URLEncoder.encode(mobileJumpUrl, "UTF-8"); - } - JSONArray taskObjectList = new JSONArray(); - bb.writeLog("SendPortalForwardCmd transfer urlDing", urlDing); + JSONObject requestObject = new JSONObject(); + requestObject.put("creator", loginid); requestObject.put("center", center); requestObject.put("title", requestname); - requestObject.put("creator", loginid); requestObject.put("taskCode", "weaver" + requestid); requestObject.put("nodeId", currentnodeid); requestObject.put("taskType", taskType); @@ -310,7 +287,9 @@ public class SendPortalForwardCmd { requestObject.put("nodeName", getNodeName(currentnodeid)); requestObject.put("ticketType", workflowname); - sql = " select t2.userid,h1.loginid,h1.email,c1." + cus_staff + " as staffid " + + String emailArray = ""; + JSONArray taskObjectList = new JSONArray(); + sql = " select t2.userid,h1.loginid,h1.email,c1." + cus_staff + " as staffid " + " from workflow_requestbase t1\n" + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= " + scopeid + " and c1.scope = '" + scope + "' " + @@ -328,12 +307,6 @@ public class SendPortalForwardCmd { String usercode = Util.null2String(rs.getString("loginid")); String staffid = Util.null2String(rs.getString("staffid")); - String userid1 = Util.null2String(rs.getString("userid")); - userids += StringUtils.isEmpty(userids) ? userid1 : "," + userid1; - - if ("sysadmin".equals(usercode)) { - usercode = "Admin"; - } String objectCode = usercode; String operatorCode = usercode; @@ -357,16 +330,14 @@ public class SendPortalForwardCmd { } else { requestObject.put("actionType", "3"); } - bb.writeLog("================ SendPortalForwardCmd transfer requestObject ============= "+ requestObject.toJSONString()); String auth = username + ":" + passwd; - msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); - if (!"".equals(msgdata)) { + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); + if (StringUtils.isNotEmpty(msgdata)) { JSONObject msgObject = JSONObject.parseObject(msgdata); bb.writeLog("================ SendPortalForwardCmd transfer msgObject ============= "+ msgObject.toJSONString()); if (msgObject.containsKey("resultCode")) { String resultCode = msgObject.getString("resultCode"); if ("0".equals(resultCode)) { - bb.writeLog("SendPortalForwardCmd transfer emailArray:" + emailArray); if (StringUtils.isNotEmpty(emailArray)) { @@ -399,7 +370,6 @@ public class SendPortalForwardCmd { String passwd = PropBean.getUfPropValue("passwd"); String center = PropBean.getUfPropValue("center"); - String zhjkbs = "com.customization.dito.sendtodo.SendPortalForwardCmd.delTodoAddDoneSendPortal"; RecordSet rs = new RecordSet(); @@ -446,11 +416,10 @@ public class SendPortalForwardCmd { //删除转发的待办 JSONObject jsonObject = new JSONObject(); + jsonObject.put("creator", loginid); jsonObject.put("center", center); jsonObject.put("title", requestname); - jsonObject.put("creator", loginid); jsonObject.put("taskCode", "weaver" + requestid+"_zf_"+user.getUID()); - jsonObject.put("taskType", "0"); jsonObject.put("actionType", "3"); jsonObject.put("createDate", processTime); diff --git a/src/com/customization/dito/sendtodo/SendPortalRemarkCmd.java b/src/com/customization/dito/sendtodo/SendPortalRemarkCmd.java index ba37c401..375b81ff 100644 --- a/src/com/customization/dito/sendtodo/SendPortalRemarkCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalRemarkCmd.java @@ -1,17 +1,23 @@ package com.customization.dito.sendtodo; +import com.alibaba.fastjson.JSONObject; import com.engine.core.cfg.annotation.CommandDynamicProxy; import com.engine.core.interceptor.AbstractCommandProxy; import com.engine.core.interceptor.Command; import com.engine.workflow.cmd.requestForm.RemarkSubmitCmd; import com.engine.workflow.entity.requestForm.RequestOperationResultBean; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; -import weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; +import weaver.interfaces.dito.remark.UpdateRequestRemarkViewDateRunnable; import javax.servlet.http.HttpServletRequest; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -46,20 +52,28 @@ public class SendPortalRemarkCmd extends AbstractCommandProxy bb.writeLog("user:"+user.getLoginid()); bb.writeLog("creater:"+creater); bb.writeLog("agentType:"+agentType); - bb.writeLog("isremark:"+agentType); + bb.writeLog("isremark:"+isremark); List> remark9List = new ArrayList>(); +// if("0".equals(isremark) && "save".equals(src)){ +// remark9List = queryRequestRemark9(requestid,userid); +// } + if("9".equals(isremark) && "save".equals(src)){ - remark9List = queryRequestRemark(requestid,userid); + remark9List = queryRequestRemark9(requestid,userid); } + + bb.writeLog("remark9List2:"+remark9List); + Map result = nextExecute(targetCommand); - sendDate(result,loginid,remark9List); + sendDate(result,loginid,remark9List,userid); return result; } - public void sendDate(Map result, String loginid,List> remark9List) { + public void sendDate(Map result, String loginid,List> remark9List,String userid) { BaseBean bb = new BaseBean(); + bb.writeLog("sendDate"); try { if (result.containsKey("data")) { //对返回值做加工处理 @@ -68,19 +82,16 @@ public class SendPortalRemarkCmd extends AbstractCommandProxy bb.writeLog("executeResult:" + executeResult); if ("SUCCESS".equals(executeResult)) { - + bb.writeLog("remark9List3:"+remark9List); if(!remark9List.isEmpty() && remark9List.size()>0){ bb.writeLog("SendPortalRemarkCmd-remark9List:"+remark9List.size()); - SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); String notes = "流程页面打开后,批注抄送需提交的数据"; - sendPortalMonitorDeleteUtil.monitorFinishedWorkflowCopyToByRequestid(remark9List,loginid,notes); + completeRequestRemark9ByRemarkSubmit(remark9List,loginid,notes,userid); } - } } } catch (Exception e) { - } } @@ -91,12 +102,11 @@ public class SendPortalRemarkCmd extends AbstractCommandProxy * @param userid * @return */ - public List> queryRequestRemark(String requestid,String userid){ + public List> queryRequestRemark9(String requestid,String userid){ List> remark9List = new ArrayList>(); RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); try{ - Map map = null; String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname \n" + " from workflow_currentoperator t\n" + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + @@ -108,14 +118,15 @@ public class SendPortalRemarkCmd extends AbstractCommandProxy " and t.userid="+userid+""; rs.executeQuery(sql); - bb.writeLog("OpenRequestRemark9Cmd-sql:"+sql); + bb.writeLog("queryRequestRemark-sql:"+sql); while (rs.next()){ String nodeid = Util.null2String(rs.getString("nodeid")); String nodename = Util.null2String(rs.getString("nodename")); String workflowname = Util.null2String(rs.getString("workflowname")) ; String requestname = Util.null2String(rs.getString("requestname")) ; - map = new HashMap(); + + Map map = new HashMap(); map.put("requestid",requestid); map.put("userid",userid+""); map.put("nodeid",nodeid); @@ -125,9 +136,177 @@ public class SendPortalRemarkCmd extends AbstractCommandProxy map.put("lcid",requestid); remark9List.add(map); } + + bb.writeLog("remark9List:"+remark9List); }catch (Exception e){ bb.writeLog("queryRequestRemark-e:"+e); } return remark9List; } + + /** + * 点击流程抄送需提交的<批注>按钮,完成抄送流程的门户调用 + * + * @param list + * @param loginid + */ + public void completeRequestRemark9ByRemarkSubmit(List> list,String loginid,String notes,String currentUserid){ + BaseBean bb = new BaseBean(); + bb.writeLog("completeRequestRemark9ByRemarkSubmit-loginid:"+loginid); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + + bb.writeLog("completeRequestRemark9ByRemarkSubmit-userid:"+userid); + bb.writeLog("completeRequestRemark9ByRemarkSubmit-nodeid:"+nodeid); + bb.writeLog("completeRequestRemark9ByRemarkSubmit-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ + completeRequestRemark9ByUserid(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes,currentUserid); + } + } + } + + + + + /*** + * + * @param requestid + * @param userid + * @param nodeid + * @param loginid + * @param workflowname + * @param requestname + * @param nodename + * @param notes + */ + private void completeRequestRemark9ByUserid(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes,String currentUserid){ + BaseBean bb = new BaseBean(); + bb.writeLog("completeRequestRemark9ByUserid-requestid:"+requestid); + String zhjkbs = "com.customization.dito.sendtodo.SendPortalRemarkCmd.completeRequestRemark9ByUserid" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + String portal_todourl = Constants.portal_todourl; + String username = Constants.username; + String passwd = Constants.passwd; + String center = Constants.center; + String bpm_workflowurl = Constants.bpm_workflowurl; + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3" ; + String terminal = "1" ; + String taskType = "1"; //0 – 待办 1 –待阅 + + RecordSet rs = new RecordSet(); + + try { + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + String urlPc = "[newtab]" + bpm_workflowurl + "/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid; + String replace = bpm_app_workflowurl.replace("/bpm", ""); + String urlDing = replace+bpm_app_requesturl+requestid; + String urlApp = replace+bpm_app_requesturl+requestid; + if(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + String createrLoginId = ""; + String basesql =" select h2.loginid "+ + " from workflow_requestbase t1\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + bb.writeLog("monitorFinishedWorkflowCopyToByUserid:sql:"+basesql); + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode", requestid+"_cs_"+userid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",requestname); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + bb.writeLog("completeRequestRemark9ByUserid-requestObject:"+requestObject.toJSONString()); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("completeRequestRemark9ByUserid-msgdata:"+msgdata); + if(StringUtils.isNotEmpty(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + + updateCurrentoperatorRemark(requestid,currentUserid,"8,9"); + + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * + * @param requestid + * @param currentUserid + * @param preisremark + */ + public void updateCurrentoperatorRemark(String requestid,String currentUserid,String preisremark){ + + BaseBean bb = new BaseBean(); + bb.writeLog("updateCurrentoperatorRemark-new-requestid:"+requestid); +// RecordSet rs = new RecordSet(); +// BaseBean bb = new BaseBean(); +// try{ +// +// String viewDate = DateUtil.getCurrentTime("yyyy-MM-dd"); +// String viewTime = DateUtil.getCurrentTime("HH:mm:ss"); +// +// bb.writeLog("updateCurrentoperatorRemark-requestid:"+requestid); +// if(StringUtils.isNotBlank(requestid)){ +// String sql = " update workflow_currentoperator set isremark=2,viewtype=-2,viewdate=(case when viewdate is not null then viewdate else '"+viewDate+"' end),viewtime=(case when viewtime is not null then viewtime else '"+viewTime+"' end) where requestid = "+requestid +" and preisremark in ("+preisremark+") and userid="+currentUserid; +// boolean isTrue = rs.executeUpdate(sql); +// bb.writeLog("updateCurrentoperatorRemark-sql:"+sql +" isTrue:"+isTrue); +// } +// }catch (Exception e){ +// bb.writeLog("updateCurrentoperatorRemark-e:"+e); +// } + + UpdateRequestRemarkViewDateRunnable updateRequestRemarkViewDateRunnable = new UpdateRequestRemarkViewDateRunnable(requestid,currentUserid,preisremark); + new Thread(updateRequestRemarkViewDateRunnable).start(); + + } + + } diff --git a/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java b/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java index 0f21383a..62ec2745 100644 --- a/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java +++ b/src/com/customization/dito/sendtodo/SendPortalToReadUtil.java @@ -21,6 +21,8 @@ public class SendPortalToReadUtil { //public static String EMAIL_REGEX_DEFAULT = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + /*** * 流程发起节点,提交到下个节点,发起节点没有待办,下个节点有待办 * @param requestid @@ -38,12 +40,6 @@ public class SendPortalToReadUtil { bb.writeLog("SendPortalToReadUtil-sendToReadDataByCreateNode"); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - String cus_staff = PropBean.getUfPropValue("cus_staff") ; - String scopeid = "-1"; - String scope = "HrmCustomFieldByInfoType" ; - - JSONObject requestObject = new JSONObject(); - Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); String currentUserId = user.getUID()+"" ; String terminal = "1" ; @@ -51,16 +47,9 @@ public class SendPortalToReadUtil { String taskType = "1"; String objectAction = "0" ; String objectType = "0"; - String emailArray = ""; try { String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); - JSONArray taskObjectList = new JSONArray(); - String createrLastname = ""; - String createrLoginid = "" ; - String requestname = ""; - String workflowname = "" ; - String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; String replace = bpm_app_workflowurl.replace("/bpm", ""); @@ -71,114 +60,88 @@ public class SendPortalToReadUtil { urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + JSONArray taskObjectList = new JSONArray(); + String sql = requestBaseInfoUtil.getRemark89Sql(requestid); bb.writeLog("sendToReadDataByNode--sql:"+sql); rs.executeQuery(sql); - if (rs.next()){ - workflowname = Util.null2String(rs.getString("workflowname")) ; - requestname = Util.null2String(rs.getString("requestname")) ; - createrLastname = Util.null2String(rs.getString("lastname")) ; - createrLoginid = Util.null2String(rs.getString("loginid")) ; + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")) ; + String nodename = Util.null2String(rs.getString("nodename")) ; + String email = Util.null2String(rs.getString("email")) ; + String staffid = Util.null2String(rs.getString("staffid")) ; + String loginid = Util.null2String(rs.getString("loginid")) ; + String userid = Util.null2String(rs.getString("userid")) ; + + JSONObject taskObject = new JSONObject(); + taskObject.put("nodeid",nodeid); + taskObject.put("nodename",nodename); + taskObject.put("email",email); + taskObject.put("loginid",loginid); + taskObject.put("staffid",staffid); + taskObject.put("userid",userid); + taskObjectList.add(taskObject); } - requestObject.put("center",center); - requestObject.put("title",requestname); - requestObject.put("taskType",taskType); - requestObject.put("actionType",actionType); - requestObject.put("createDate",processTime); - requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); - requestObject.put("terminal",terminal); - requestObject.put("urlPc",urlPc); - requestObject.put("urlDing",urlDing); - requestObject.put("ticketType",workflowname); - requestObject.put("urlApp",urlApp); - requestObject.put("creator",createrLoginid); - - sql = " select t2.userid,h1.loginid,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ - " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t2.isremark in ('8','9') and t2.preisremark not in ('18') \n" + - " and t2.islasttimes = 1 \n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid ; - - bb.writeLog("sendToReadDataByNode--sql:"+sql); - rs.executeQuery(sql); - while (rs.next()){ - String lcid = Util.null2String(rs.getString("requestid")) ; - String nodeid = Util.null2String(rs.getString("nodeid")) ; - String nodename = Util.null2String(rs.getString("nodename")) ; - String email = Util.null2String(rs.getString("email")) ; - String staffid = Util.null2String(rs.getString("staffid")) ; - String creator = Util.null2String(rs.getString("loginid")) ; - String userid = Util.null2String(rs.getString("userid")) ; - - JSONObject taskObject = new JSONObject(); - taskObject.put("lcid",lcid); - taskObject.put("nodeid",nodeid); - taskObject.put("nodename",nodename); - taskObject.put("email",email); - taskObject.put("creator",creator); - taskObject.put("staffid",staffid); - taskObject.put("userid",userid); - taskObjectList.add(taskObject); - } - - for(int i=0;i 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5', '7', '11'))\n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid+ - " and t2.nodeid = " + noideid ; - - bb.writeLog("sendToReadDataByNode--countSql:"+countSql); - rs.executeQuery(countSql); - while (rs.next()){ - count++; - } + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + + int count = requestBaseInfoUtil.getTodoCountByRequestNode(requestid,prenodeid); +// String countSql=" select t2.userid \n" + +// " from workflow_requestbase t1\n" + +// " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5', '7', '11'))\n" + +// " and t2.islasttimes = 1\n" + +// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + +// " and t2.requestid = "+requestid+ +// " and t2.nodeid = " + nodeid ; +// +// bb.writeLog("sendToReadDataByNode--countSql:"+countSql); +// rs.executeQuery(countSql); +// while (rs.next()){ +// count++; +// } bb.writeLog("SendPortalToReadUtil-sendToReadDataByNode--count:"+count); if(count == 0) { - String workflowname = "" ; - String requestname = ""; - String createrLastname = ""; - String createrLoginid = ""; JSONArray taskObjectList = new JSONArray(); - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("SendPortalToReadUtil-sendToReadDataByNode--sql:" + sql); - rs.executeQuery(sql); - if (rs.next()) { - workflowname = Util.null2String(rs.getString("workflowname")); - requestname = Util.null2String(rs.getString("requestname")); - createrLastname = Util.null2String(rs.getString("lastname")) ; - createrLoginid = Util.null2String(rs.getString("loginid")) ; - } - - requestObject.put("center", center); - requestObject.put("title", requestname); - requestObject.put("taskType", taskType); - requestObject.put("actionType", actionType); - requestObject.put("createDate", processTime); - requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent", requestname); - requestObject.put("terminal", terminal); - requestObject.put("urlPc", urlPc); - requestObject.put("urlDing", urlDing); - requestObject.put("ticketType", workflowname); - requestObject.put("creator",createrLoginid); - requestObject.put("urlApp",urlApp); - - sql = " select t2.userid,h1.loginid,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ - " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t2.isremark in ('8','9') and t2.preisremark not in ('18') \n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid ; - + String sql = requestBaseInfoUtil.getRemark89Sql(requestid); bb.writeLog("SendPortalToReadUtil-sendToReadDataByNode--sql:" + sql); rs.executeQuery(sql); while (rs.next()) { - String lcid = Util.null2String(rs.getString("requestid")) ; String nodeid = Util.null2String(rs.getString("nodeid")) ; String nodename = Util.null2String(rs.getString("nodename")) ; - String email = Util.null2String(rs.getString("email")) ; String staffid = Util.null2String(rs.getString("staffid")) ; - String creator = Util.null2String(rs.getString("loginid")) ; + String loginid = Util.null2String(rs.getString("loginid")) ; String userid = Util.null2String(rs.getString("userid")) ; JSONObject taskObject = new JSONObject(); - taskObject.put("lcid",lcid); taskObject.put("nodeid",nodeid); taskObject.put("nodename",nodename); - taskObject.put("email",email); - taskObject.put("creator",creator); + taskObject.put("loginid",loginid); taskObject.put("staffid",staffid); taskObject.put("userid",userid); taskObjectList.add(taskObject); @@ -353,21 +264,15 @@ public class SendPortalToReadUtil { for (int i = 0; i < taskObjectList.size(); i++) { JSONObject dataObject = taskObjectList.getJSONObject(i); - String lcid = dataObject.getString("lcid"); String nodeid = dataObject.getString("nodeid"); String nodename = dataObject.getString("nodename"); - String email = dataObject.getString("email"); - String creator = dataObject.getString("creator"); + String loginid = dataObject.getString("loginid"); String userid = dataObject.getString("userid"); - if("sysadmin".equals(creator)){ - creator = "Admin"; - } + String staffid = dataObject.getString("staffid"); JSONObject taskObject = new JSONObject(); - String objectCode = creator ; - String operatorCode = creator ; - - String staffid = dataObject.getString("staffid"); + String objectCode = loginid ; + String operatorCode = loginid ; taskObject.put("objectAction",objectAction); taskObject.put("objectType",objectType); @@ -377,9 +282,25 @@ public class SendPortalToReadUtil { JSONArray taskArray = new JSONArray(); taskArray.add(taskObject); + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("ticketType",workflowname); + + requestObject.put("center", center); + requestObject.put("taskType", taskType); + requestObject.put("actionType", actionType); + requestObject.put("createDate", processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal", terminal); + requestObject.put("urlPc", urlPc); + requestObject.put("urlDing", urlDing); + requestObject.put("urlApp",urlApp); + requestObject.put("nodeName",nodename); requestObject.put("nodeId",nodeid); - requestObject.put("taskCode", lcid+"_cs_"+userid); + requestObject.put("taskCode", requestid+"_cs_"+userid); requestObject.put("taskObjectList",taskArray); String auth = username + ":" + passwd; @@ -391,6 +312,7 @@ public class SendPortalToReadUtil { if (msgObject.containsKey("resultCode")) { String resultCode = msgObject.getString("resultCode"); if ("0".equals(resultCode)) { + // Matcher matcher = regex.matcher(email); // if (matcher.matches()) { // emailArray += StringUtils.isEmpty(emailArray) ? email : "," + email; @@ -420,8 +342,6 @@ public class SendPortalToReadUtil { } } } - - } } catch (Exception e) { e.printStackTrace(); diff --git a/src/com/customization/dito/sendtodo/SendPortalTodoCmd.java b/src/com/customization/dito/sendtodo/SendPortalTodoCmd.java index 2c740282..0f8f9c78 100644 --- a/src/com/customization/dito/sendtodo/SendPortalTodoCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalTodoCmd.java @@ -1,6 +1,5 @@ package com.customization.dito.sendtodo; -import com.engine.workflow.constant.requestForm.RequestExecuteType; import org.apache.commons.lang3.StringUtils; import weaver.interfaces.dito.constant.Constants; import com.customization.dito.sendtodo.agent.SendPortalToReadByAgentUtil; @@ -13,7 +12,11 @@ import com.engine.workflow.entity.requestForm.RequestOperationResultBean; import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; -import weaver.interfaces.dito.monitor.SendPortalMonitorUtil; +import weaver.interfaces.dito.delete.RequestDeleteQueryPortalUtil; +import weaver.interfaces.dito.delete.RequestDeleteSendPortalUtil; +import weaver.interfaces.dito.intervention.RequestInterventionSendPortalUtil; +import weaver.interfaces.dito.intervention.RequestInterventionQueryUtil; +import weaver.interfaces.dito.reject.RequestRejectSendPortalUtil; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; @@ -54,6 +57,7 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> String f_weaver_belongto_usertype = Util.null2String(request.getParameter("f_weaver_belongto_usertype")); String creater = Util.null2String(request.getParameter("creater")); String intervenorid = Util.null2String(request.getParameter("Intervenorid")); + String agentorByAgentId = Util.null2String(request.getParameter("agentorByAgentId")); // Map params = ParamUtil.request2Map(request); @@ -78,44 +82,57 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> bb.writeLog("creater:"+creater); bb.writeLog("agentType:"+agentType); bb.writeLog("intervenorid:"+intervenorid); + bb.writeLog("agentorByAgentId:"+agentorByAgentId); List> copyList = new ArrayList>(); List> forwardList = new ArrayList>(); List> atList = new ArrayList>(); - + List> baseList = new ArrayList>(); try{ SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); - if("intervenor".equals(src)){ - if(StringUtils.isNotBlank(intervenorid)){ - if("1".equals(agentType)){ - copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,intervenorid); - forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,intervenorid); - atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,intervenorid); - }else{ - copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,intervenorid); - forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,intervenorid); - atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,intervenorid); - } - }else{ - copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid); - forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,userid); - atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,userid); - } - }else if("delete".equals(src)){ - if("1".equals(agentType)){ - copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,""); - forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,""); - atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,""); - }else{ - copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,""); - forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,""); - atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,""); - } + if("delete".equals(src)){ + bb.writeLog("RequestDeleteQueryPortalUtil"); + RequestDeleteQueryPortalUtil requestDeleteQueryPortalUtil = new RequestDeleteQueryPortalUtil(); + copyList = requestDeleteQueryPortalUtil.queryRequestReamrk89ByDelete(requestid); + forwardList = requestDeleteQueryPortalUtil.queryRequestForwardByDelete(requestid); + atList = requestDeleteQueryPortalUtil.queryRequestAtByDelete(requestid); + baseList = requestDeleteQueryPortalUtil.queryRequestDataByDelete(requestid); + + }else if("intervenor".equals(src)) { + + bb.writeLog("RequestInterventionQueryUtil"); + RequestInterventionQueryUtil requestInterventionQueryUtil = new RequestInterventionQueryUtil(); + Map nodeMap = requestInterventionQueryUtil.queryRequestNodeIdByIntervention(requestid); + copyList = requestInterventionQueryUtil.queryWorkflowRemark89ByRequestid(requestid,nodeMap); + forwardList = requestInterventionQueryUtil.queryWorkflowForwardByRequestid(requestid,nodeMap); + }else{ if("1".equals(agentType)){ + /** + * 被代理人提交,需要在流程监控里查看提交 + * userid == 当前登录人 == 被代理人 + */ copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid); forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,userid); atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,userid); + }else if("2".equals(agentType)){ + /** + * 代理人提交 + * userid = 当前登录人 == 代理人 + * agentorByAgentId = 被代理人 + * 抄送、转发 已将数据 被代理人转成代理人 + * @ 还是流程被代理人 + * + */ + if(StringUtils.isNotBlank(agentorByAgentId)){ + copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid); + forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,userid); + atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,agentorByAgentId); + }else{ + copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid); + forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,userid); + atList = sendPortalTodoDeleteUtil.queryWorkflowAtByRequestid(requestid,userid); + } }else{ copyList = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid); forwardList = sendPortalTodoDeleteUtil.queryWorkflowForwardByRequestid(requestid,userid); @@ -131,13 +148,13 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> Map result = nextExecute(targetCommand); bb.writeLog("SendPortalTodoCmd-submit-end:"+requestid+" time:"+System.currentTimeMillis()); - sendDate(result,requestid,agentType,src,nodeid,userid,f_weaver_belongto_userid,user,copyList,forwardList,atList); + sendDate(result,requestid,agentType,src,nodeid,userid,f_weaver_belongto_userid,user,copyList,forwardList,atList,baseList); return result; } - public void sendDate(Map result,String requestid,String agentType,String src,String nodeid,String userid,String f_weaver_belongto_userid,User user,List> copyList,List> forwardList,List> atList){ + public void sendDate(Map result,String requestid,String agentType,String src,String nodeid,String userid,String f_weaver_belongto_userid,User user,List> copyList,List> forwardList,List> atList,List> baseList){ BaseBean bb = new BaseBean(); try{ @@ -165,7 +182,6 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> String center = Constants.center; String bpm_app_requesturl = Constants.bpm_app_requesturl; - String notes = "" ; bb.writeLog("SendPortalTodoCmd-portal-start:"+requestid+" time:"+System.currentTimeMillis()); if(Util.getIntValue(requestid) == -1 && "save".equals(src)){ @@ -179,7 +195,7 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> /*** * 空值:流程正常提交 - * 1:被代理人提交流程 + * 1:被代理人提交流程,需要在流程监控里查看提交 * 2:代理人提交流程 */ if("1".equals(agentType)){ @@ -195,34 +211,65 @@ public class SendPortalTodoCmd extends AbstractCommandProxy> notes = "流程提交"; }else if(Util.getIntValue(requestid)> 0 && "reject".equals(src)){ - sendPortalTodoUtil.sendTodoDataByReject(requestid,nodeid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); notes = "流程退回"; + RequestRejectSendPortalUtil requestRejectSendPortalUtil = new RequestRejectSendPortalUtil(); + requestRejectSendPortalUtil.sendTodoDataByReject(requestid,nodeid,user,portal_todourl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,center,bpm_app_requesturl); + }else if(Util.getIntValue(requestid)> 0 && "intervenor".equals(src)){ - SendPortalMonitorUtil sendPortalMonitorUtil = new SendPortalMonitorUtil(); - sendPortalMonitorUtil.monitorIntervention(requestid,userid); notes = "流程干预"; + RequestInterventionSendPortalUtil requestInterventiomSendPortalUtil = new RequestInterventionSendPortalUtil(); + requestInterventiomSendPortalUtil.monitorIntervention(requestid,userid); + }else if(Util.getIntValue(requestid)> 0 && "delete".equals(src)){ - SendPortalMonitorUtil sendPortalMonitorUtil = new SendPortalMonitorUtil(); - sendPortalMonitorUtil.monitorDelete(requestid,userid); + RequestDeleteSendPortalUtil requestDeleteSendPortalUtil = new RequestDeleteSendPortalUtil(); + requestDeleteSendPortalUtil.monitorDelete(userid,baseList); notes = "流程页面删除"; } - bb.writeLog("sendPortalTodoDeleteUtil22:"+notes+" src:"+src); - SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); - sendPortalTodoDeleteUtil.operate3typeByList(user,copyList,forwardList,atList,notes); + if("delete".equals(src)){ + RequestDeleteSendPortalUtil requestDeleteSendPortalUtil = new RequestDeleteSendPortalUtil(); + requestDeleteSendPortalUtil.completeRemark89ForwardAtByDelete(user,copyList,forwardList,atList,notes); + }else if("intervenor".equals(src)){ + RequestInterventionSendPortalUtil requestInterventionSendPortalUtil = new RequestInterventionSendPortalUtil(); + requestInterventionSendPortalUtil.completeRemark89ForwardByIntervention(user,copyList,forwardList,notes); + }else if("submit".equals(src) || "reject".equals(src) ){ + bb.writeLog("sendPortalTodoDeleteUtil22:"+notes+" src:"+src); + SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); + sendPortalTodoDeleteUtil.operate3typeByList(user,copyList,forwardList,atList,notes); + } + bb.writeLog("SendPortalTodoCmd-portal-end:"+requestid+" time:"+System.currentTimeMillis()); + }else if("DELETE".equals(executeResult)){ - String notes = "" ; - if(Util.getIntValue(requestid)> 0 && "delete".equals(src)){ +// String notes = "" ; +// if(Util.getIntValue(requestid)> 0 && "delete".equals(src)){ +// +// SendPortalMonitorUtil sendPortalMonitorUtil = new SendPortalMonitorUtil(); +// sendPortalMonitorUtil.monitorDelete(requestid,userid); +// notes = "流程页面删除"; +// } +// bb.writeLog("sendPortalTodoDeleteUtil33:"+notes+" src:"+src); +// SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); +// sendPortalTodoDeleteUtil.operate3typeByList(user,copyList,forwardList,atList,notes); + + + String notes = "流程提交异常" ; + if(Util.getIntValue(requestid)> 0){ + if("delete".equals(src)){ + RequestDeleteSendPortalUtil requestDeleteSendPortalUtil = new RequestDeleteSendPortalUtil(); + requestDeleteSendPortalUtil.monitorDelete(userid,baseList); + notes = "流程提交异常,执行删除"; + requestDeleteSendPortalUtil.completeRemark89ForwardAtByDelete(user,copyList,forwardList,atList,notes); + }else{ - SendPortalMonitorUtil sendPortalMonitorUtil = new SendPortalMonitorUtil(); - sendPortalMonitorUtil.monitorDelete(requestid,userid); - notes = "流程页面删除"; + bb.writeLog("sendPortalTodoDeleteUtil33:"+notes+" src:"+src); + if("submit".equals(src) || "reject".equals(src) ){ + SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); + sendPortalTodoDeleteUtil.operate3typeByList(user,copyList,forwardList,atList,notes); + } + } } - bb.writeLog("sendPortalTodoDeleteUtil33:"+notes+" src:"+src); - SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); - sendPortalTodoDeleteUtil.operate3typeByList(user,copyList,forwardList,atList,notes); }else{ bb.writeLog("SendPortalTodoCmd-FAILURE"); String portal_todourl = Constants.portal_todourl; diff --git a/src/com/customization/dito/sendtodo/SendPortalTodoDeleteUtil.java b/src/com/customization/dito/sendtodo/SendPortalTodoDeleteUtil.java index be03950d..5866b85d 100644 --- a/src/com/customization/dito/sendtodo/SendPortalTodoDeleteUtil.java +++ b/src/com/customization/dito/sendtodo/SendPortalTodoDeleteUtil.java @@ -1,11 +1,16 @@ package com.customization.dito.sendtodo; +import com.alibaba.fastjson.JSONObject; +import com.time.util.DateUtil; import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; import weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil; + +import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -226,30 +231,32 @@ public class SendPortalTodoDeleteUtil { /** + * 打开页面详情,当前登录人的流程的抄送需提交、抄送不需提交、@的数据 * * @param requestid */ - public void queryWorkflowRemark8AtByLoadForm(String requestid,String current_userid,List> remark8List,List> atList){ + public void queryWorkflowRemark8AtByLoadForm(String requestid,String current_userid,List> remark8List,List> atList,List> remark9List){ RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); bb.writeLog("queryWorkflowRemark8AtByLoadForm-requestid:"+requestid); try{ Map map = null ; if(StringUtils.isNotBlank(requestid)){ - String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark\n" + + String sql =" select t.id,t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark\n" + " from workflow_currentoperator t\n" + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + " left join workflow_base t3 on t3.id = t1.workflowid\n" + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t.isremark in (8) \n" + - " and t.preisremark in (8,18)\n" + + " and t.isremark in (8,9) \n" + + " and t.preisremark in (8,9,18)\n" + " and t.requestid in("+requestid +") and t.userid in("+current_userid+")" ; rs.executeQuery(sql); bb.writeLog("queryWorkflowRemark8AtByLoadForm-sql:"+sql); while (rs.next()){ + String currentid = Util.null2String(rs.getString("id")); String nodeid = Util.null2String(rs.getString("nodeid")); String userid = Util.null2String(rs.getString("userid")); String nodename = Util.null2String(rs.getString("nodename")); @@ -266,15 +273,19 @@ public class SendPortalTodoDeleteUtil { map.put("workflowname",workflowname); map.put("requestname",requestname); map.put("lcid",lcid); + map.put("currentid",currentid); if("8".equals(preisremark)){ remark8List.add(map); - }else if("8".equals(preisremark)){ + }else if("18".equals(preisremark)){ atList.add(map); + }else if("9".equals(preisremark)){ + remark9List.add(map); } } bb.writeLog("queryWorkflowRemark8AtByLoadForm-remark8List:"+remark8List.size()); bb.writeLog("queryWorkflowRemark8AtByLoadForm-atList:"+atList.size()); + bb.writeLog("queryWorkflowRemark8AtByLoadForm-remark9List:"+remark9List.size()); } }catch (Exception e){ e.printStackTrace(); @@ -283,7 +294,7 @@ public class SendPortalTodoDeleteUtil { } /*** - * + * 打开页面详情,完成抄送不需提交、@的数据门户的调用以及生成@的已办数据 * @param loginid * @param remark8List * @param atList @@ -293,73 +304,278 @@ public class SendPortalTodoDeleteUtil { BaseBean bb = new BaseBean(); SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); try{ - bb.writeLog("copyList:"+remark8List.size()); + bb.writeLog("remark8List888:"+remark8List.size()); if(remark8List.size() >0){ String notes = "打开流程表单详情页面,完成抄送不需提交的数据"; sendPortalMonitorDeleteUtil.monitorFinishedWorkflowCopyToByRequestid(remark8List,loginid,notes); } }catch (Exception e){ e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + bb.writeLog("remark8List3-e:"+e); } - try{ - bb.writeLog("atList:"+atList.size()); + bb.writeLog("atList888:"+atList.size()); if(atList.size() >0){ - String notes = "打开流程表单详情页面,完成@的数据"; + String notes = "打开流程表单详情页面,完成@的数据门户调用"; sendPortalMonitorDeleteUtil.monitorFinishedWorkflowAtByRequestid(atList,loginid,notes); + + completePortalAtDoneByRequestid(atList,loginid); } }catch (Exception e){ e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + bb.writeLog("atList3-e:"+e); } } + /*** + * + * @param requestid + * @param current_nodeid + * @param remarkList + * @param atList + */ + public void queryRemarkToPortalByIntervenor(String requestid,String current_nodeid,List> remarkList,List> atList){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryRemarkToPortalByIntervenor-requestid:"+requestid); + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark in (8,9) \n" + + " and t.preisremark in (8,9,18)\n" + + " and t.requestid in("+requestid +") " + + " and t.nodeid in("+current_nodeid+")" ; + + rs.executeQuery(sql); + bb.writeLog("queryRemarkToPortalByIntervenor-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String preisremark = Util.null2String(rs.getString("preisremark")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + + if("8".equals(preisremark) || "9".equals(preisremark)){ + remarkList.add(map); + }else if("18".equals(preisremark)){ + atList.add(map); + } + } + bb.writeLog("queryRemarkToPortalByIntervenor-remarkList:"+remarkList.size()); + bb.writeLog("queryRemarkToPortalByIntervenor-atList:"+atList.size()); + } + }catch (Exception e){ + + } + } + + /*** + * + * @param requestid + * @param current_nodeid + * @return + */ + public List> queryForwardToPortalByIntervenor(String requestid,String current_nodeid){ + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryForwardToPortalByIntervenor-requestid:"+requestid); + List> list = new ArrayList>(); + + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + + String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.isremark = 1 \n" + + " and t.requestid in("+ requestid +") " + + " and t.nodeid in("+ current_nodeid +")" ; + + rs.executeQuery(sql); + bb.writeLog("queryForwardToPortalByIntervenor-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + list.add(map); + } + bb.writeLog("queryForwardToPortalByIntervenor-list:"+list.size()); + } + }catch (Exception e){ + + } + return list; + } + + + /*** + * + * @return + */ + public void completePortalAtDoneByRequestid(List> atList,String loginid){ + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("completePortalAtDoneByRequestid-atList:"+atList.size()); + if(atList.size() >0){ + String notes = "打开流程表单详情页面,@的数据生成已办"; + for(int i=0;i dataMap = atList.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + + bb.writeLog("completePortalAtDoneByRequestid-userid:"+userid); + bb.writeLog("completePortalAtDoneByRequestid-nodeid:"+nodeid); + bb.writeLog("completePortalAtDoneByRequestid-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ + completePortalAtDoneData(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes); + } + } + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("completePortalAtDoneByRequestid-e:"+e); + } + } + + /** + * + * @param requestid + * @param userid + * @param currentnodeid + * @param loginid + * @param workflowname + * @param requestname + * @param nodename + * @param notes + * @return + */ + public String completePortalAtDoneData(String requestid,String userid,String currentnodeid,String loginid,String workflowname,String requestname,String nodename,String notes){ + + String zhjkbs = "com.customization.dito.sendtodo.SendPortalTodoDeleteUtil.completePortalAtDoneData"; + String resultCode = "" ; + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String bpm_app_workflowurl = PropBean.getUfPropValue("bpm_app_workflowurl"); + String bpm_app_requesturl = PropBean.getUfPropValue("bpm_app_requesturl"); + String username = PropBean.getUfPropValue("username"); + String passwd = PropBean.getUfPropValue("passwd"); + String center = PropBean.getUfPropValue("center"); + String bpm_workflowurl = PropBean.getUfPropValue("bpm_workflowurl"); + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + String portal_doneurl = PropBean.getUfPropValue("portal_doneurl"); + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + + String actionType = "0" ; + + try { + String urlPc = "[newtab]" + bpm_workflowurl + "/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid; + String replace = bpm_app_workflowurl.replace("/bpm", ""); + String urlDing = replace+bpm_app_requesturl+requestid; + String urlApp = replace+bpm_app_requesturl+requestid; + if(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + String newNodeId = requestid+userid+"_"+System.currentTimeMillis(); + + String createrLoginId = ""; + String basesql =" select h2.loginid "+ + " from workflow_requestbase t1\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + bb.writeLog("completePortalAtDoneData:sql:"+basesql); + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + bb.writeLog("completePortalAtDoneData--createrLoginId:"+createrLoginId); + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("nodeId",newNodeId); + requestObject.put("ticketType",workflowname); + + requestObject.put("center", center); + requestObject.put("taskCode", "weaver" + requestid); + requestObject.put("processStaff", loginid); + requestObject.put("processTime", processTime); + requestObject.put("isRecall", "1"); + requestObject.put("actionType", actionType); + requestObject.put("urlPC", urlPc); + requestObject.put("urlApp", urlApp); + requestObject.put("urlDing", urlDing); + + String auth = username + ":" + passwd; + bb.writeLog("completePortalAtDoneData done requestObject:" + requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_doneurl, requestObject.toJSONString(), auth); + bb.writeLog("completePortalAtDoneData done msgdata:" + msgdata); + if (org.apache.commons.lang.StringUtils.isNotEmpty(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + bb.writeLog("completePortalAtDoneData--msgObject:" + msgObject.toJSONString()); + if (msgObject.containsKey("resultCode")) { + resultCode = msgObject.getString("resultCode"); + if (!"0".equals(resultCode)) { + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, currentnodeid, newNodeId, userid+ "", requestObject.toJSONString(), resultCode, resultmsg, zhjkbs,"",notes); + }else{ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid, currentnodeid, newNodeId, userid + "", requestObject.toJSONString(), resultCode, "", zhjkbs,"",notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + bb.writeLog(e); + } + return resultCode; + } -// public int getAtCountByRequestid(String requestid,String userid) { -// int atcount = 0 ; -// BaseBean bb = new BaseBean(); -// try{ -// RecordSet rs = new RecordSet(); -// String sql =" select t1.userid,t1.nodeid " + -// " from workflow_currentoperator t1 " + -// " where t1.isremark = 8 and preisremark = 18" + -// " and t1.requestid= " +requestid + -// " and t1.userid= " +userid ; -// bb.writeLog("completeForwardRequest --sql:" + sql); -// rs.executeQuery(sql); -// while (rs.next()) { -// atcount++ ; -// } -// }catch (Exception e){ -// -// } -// return atcount; -// } -// -// -// public int getForwardCountByRequestid(String requestid,String userid) { -// int forwardcount = 0; -// BaseBean bb = new BaseBean(); -// try{ -// RecordSet rs = new RecordSet(); -// String sql =" select t1.userid,t1.nodeid " + -// " from workflow_currentoperator t1 " + -// " where t1.isremark = 1 " + -// " and t1.requestid= " +requestid + -// " and t1.userid= " +userid ; -// bb.writeLog("completeForwardRequest --sql:" + sql); -// rs.executeQuery(sql); -// while (rs.next()) { -// forwardcount++ ; -// } -// }catch (Exception e){ -// -// } -// return forwardcount; -// -// } } diff --git a/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java b/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java index b1be6ed0..437f6830 100644 --- a/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java +++ b/src/com/customization/dito/sendtodo/SendPortalTodoUtil.java @@ -9,12 +9,9 @@ import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; import weaver.interfaces.dito.comInfo.PropBean; -import weaver.interfaces.dito.constant.Constants; import java.net.URLEncoder; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -22,6 +19,8 @@ import java.util.regex.Pattern; public class SendPortalTodoUtil { public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); /*** * 流程发起节点,发起保存不提交,发起节点有待办,下个节点没有待办 * @param requestid @@ -40,7 +39,6 @@ public class SendPortalTodoUtil { String emailArray = ""; - String requestname = ""; String actionType = "0" ; String terminal = "1" ; String taskType = "0"; @@ -51,26 +49,21 @@ public class SendPortalTodoUtil { String scopeid = "-1"; String scope = "HrmCustomFieldByInfoType" ; - Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); - - JSONObject requestObject = new JSONObject(); - try { - - String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); - - String currentNodeId = ""; - String currentNodeName = "" ; String nextNodeUserIds = ""; - String workflowname = ""; - String currentUserId = user.getUID()+""; - String createrLoginId = "" ; - String createrLastName = ""; + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; String replace = bpm_app_workflowurl.replace("/bpm", ""); - String urlDing = replace+bpm_app_requesturl+requestid; String urlApp = replace+bpm_app_requesturl+requestid; @@ -79,72 +72,49 @@ public class SendPortalTodoUtil { urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - - String sql =" select t1.requestname,h1.loginid,d1.nodename,h1.email,c1."+cus_staff+" as staffid,t3.workflowname,h2.lastname,t2.userid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join cus_fielddata c1 on c1.id = t2.userid and scopeid= "+scopeid+" and scope = '"+scope+"' "+ - " left join (select id, lastname,loginid,email from hrmresource where status = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid \n" + - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + - " where t2.userid in ("+currentUserId+") \n" + - " and (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','8','9','11'))\n" + - " and (ifnull(t1.currentstatus, -1) = -1 or (ifnull(t1.currentstatus, -1) = 0 and t1.creater in ("+currentUserId+"))) \n" + - " and t2.islasttimes = 1 \n" + - " and (t2.isprocessing = '' or t2.isprocessing is null) \n" + - " and t2.requestid = "+requestid ; + String staffid = ""; + String sql =" select c1."+cus_staff+" as staffid "+ + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join cus_fielddata c1 on c1.id = t2.userid and scopeid= "+scopeid+" and scope = '"+scope+"' "+ + " where t2.userid in ("+currentUserId+") \n" + + " and (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','8','9','11'))\n" + + " and (ifnull(t1.currentstatus, -1) = -1 or (ifnull(t1.currentstatus, -1) = 0 and t1.creater in ("+currentUserId+"))) \n" + + " and (t2.isprocessing = '' or t2.isprocessing is null) \n" + + " and t2.requestid = "+requestid ; bb.writeLog("sendTodoDataByCreater-sql:"+sql); rs.executeQuery(sql); if (rs.next()){ - workflowname = Util.null2String(rs.getString("workflowname")) ; - requestname = Util.null2String(rs.getString("requestname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - createrLoginId = Util.null2String(rs.getString("loginid")) ; - createrLastName = Util.null2String(rs.getString("lastname")) ; - - String email = Util.null2String(rs.getString("email")) ; - bb.writeLog("email1:"+email); - Matcher matcher = regex.matcher(email); - if(matcher.matches()){ - emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; - } - - String userid = Util.null2String(rs.getString("userid")) ; - nextNodeUserIds += StringUtils.isEmpty(nextNodeUserIds) ? userid : ","+userid ; + staffid = Util.null2String(rs.getString("staffid")); } - requestObject.put("center",center); - requestObject.put("title",requestname); + JSONObject requestObject = new JSONObject(); requestObject.put("creator",createrLoginId); - requestObject.put("taskCode","weaver"+requestid); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); JSONArray taskObjectList = new JSONArray(); JSONObject taskObject = new JSONObject(); - if("sysadmin".equals(createrLoginId)){ - createrLoginId = "Admin"; - } - String objectCode = createrLoginId ; String operatorCode = createrLoginId ; - String staffid = Util.null2String(rs.getString("staffid")); taskObject.put("objectAction",objectAction); taskObject.put("objectType",objectType); taskObject.put("objectCode",objectCode); @@ -157,6 +127,7 @@ public class SendPortalTodoUtil { // String username = "admin"; // String passwd = "Uportal_123"; // String todourl = "http://172.16.25.133/portal-web/centerTodo/sync" ; + if (taskObjectList.size() > 0){ String auth = username + ":" + passwd; String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); @@ -230,34 +201,33 @@ public class SendPortalTodoUtil { try { String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); - JSONArray taskObjectList = new JSONArray(); - String requestname = "" ; - String currentNodeId = "" ; - String currentNodeName = ""; - String workflowname = "" ; - String createrLoginId = "" ; - String createrLastName = ""; - String nextNodeUserIds = "" ; - String currentUserId = user.getUID()+"" ; - - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("sendTodoDataByNode--sql:"+sql); - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - createrLastName = Util.null2String(rs.getString("lastname")) ; - createrLoginId = Util.null2String(rs.getString("loginid")) ; - } + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + + +// String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid "+ +// " from workflow_requestbase t1\n" + +// " inner join workflow_base t3 on t1.workflowid = t3.id\n" + +// " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ +// " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and t1.requestid = "+requestid ; +// +// bb.writeLog("sendTodoDataByNode--sql:"+sql); +// rs.executeQuery(sql); +// if (rs.next()){ +// requestname = Util.null2String(rs.getString("requestname")) ; +// currentNodeId = Util.null2String(rs.getString("nodeid")) ; +// currentNodeName = Util.null2String(rs.getString("nodeName")) ; +// workflowname = Util.null2String(rs.getString("workflowname")) ; +// createrLastName = Util.null2String(rs.getString("lastname")) ; +// createrLoginId = Util.null2String(rs.getString("loginid")) ; +// } String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; String replace = bpm_app_workflowurl.replace("/bpm", ""); @@ -270,34 +240,42 @@ public class SendPortalTodoUtil { } JSONObject requestObject = new JSONObject(); - requestObject.put("center",center); - requestObject.put("title",requestname); + requestObject.put("creator",createrLoginId); - requestObject.put("taskCode","weaver"+requestid); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); - sql = " select t2.userid,h1.loginid,h1.email,c1."+cus_staff+" as staffid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ - " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11'))\n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid; + + String nextNodeUserIds = "" ; + String currentUserId = user.getUID()+"" ; + + JSONArray taskObjectList = new JSONArray(); +// String sql =" select t2.userid,h1.loginid,h1.email,c1."+cus_staff+" as staffid "+ +// " from workflow_requestbase t1\n" + +// " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + +// " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ +// " left join (select id, lastname,loginid,email from hrmresource where status = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11'))\n" + +// // " and t2.islasttimes = 1\n" + +// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + +// " and t2.requestid = "+requestid; + + String sql = requestBaseInfoUtil.getTodoSql(requestid); bb.writeLog("sendTodoDataByNode--sql:"+sql); rs.executeQuery(sql); @@ -306,28 +284,28 @@ public class SendPortalTodoUtil { String userocde = Util.null2String(rs.getString("loginid")) ; String staffid = Util.null2String(rs.getString("staffid")) ; String userid = Util.null2String(rs.getString("userid")) ; - nextNodeUserIds += StringUtils.isEmpty(nextNodeUserIds) ? userid : ","+userid ; - - if("sysadmin".equals(userocde)){ - userocde = "Admin"; - } + if(!"0".equals(userid)){ + nextNodeUserIds += StringUtils.isEmpty(nextNodeUserIds) ? userid : ","+userid ; - String objectCode = userocde ; - String operatorCode = userocde ; + if(StringUtils.isNotBlank(userocde)){ + String objectCode = userocde ; + String operatorCode = userocde ; - JSONObject taskObject = new JSONObject(); - taskObject.put("objectAction",objectAction); - taskObject.put("objectType",objectType); - taskObject.put("objectCode",objectCode); - taskObject.put("objectId",staffid); - taskObject.put("operatorCode",operatorCode); - taskObjectList.add(taskObject); + JSONObject taskObject = new JSONObject(); + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",staffid); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); - String email = Util.null2String(rs.getString("email")) ; - bb.writeLog("email2:"+email); - Matcher matcher = regex.matcher(email); - if(matcher.matches()){ - emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; + String email = Util.null2String(rs.getString("email")) ; + bb.writeLog("email2:"+email); + Matcher matcher = regex.matcher(email); + if(matcher.matches()){ + emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; + } + } } } @@ -353,7 +331,6 @@ public class SendPortalTodoUtil { } sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,nextNodeUserIds); - }else{ String resultmsg = msgObject.getString("resultMsg"); sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,nextNodeUserIds); @@ -465,20 +442,21 @@ public class SendPortalTodoUtil { * 如果流程提交节点还有待办,意味着流程还是提交节点,只是提交节点一个人删除待办 * 如果流程提交节点没有待办,意味着流程流转到下个节点,那么查询出来的待办都有新增,并且删除提交节点的所有待办 * @param requestid - * @param noideid + * @param nodeid * @param user */ - public void sendTodoDataByNode(String requestid,String noideid,User user,String portal_todourl,String bpm_app_workflowurl,String username,String passwd,String bpm_workflowurl,String center,String bpm_app_requesturl){ + public void sendTodoDataByNode(String requestid,String nodeid,User user,String portal_todourl,String bpm_app_workflowurl,String username,String passwd,String bpm_workflowurl,String center,String bpm_app_requesturl){ String zhjkbs = "com.customization.dito.sendtodo.SendPortalTodoUtil.sendTodoDataByNode" ; HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); SendMailUtil sendMailUtil = new SendMailUtil(); SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - JSONObject requestObject = new JSONObject(); - RecordSet rs = new RecordSet(); + + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); bb.writeLog("sendTodoDataByNode"); String cus_staff = PropBean.getUfPropValue("cus_staff") ; @@ -491,40 +469,27 @@ public class SendPortalTodoUtil { String emailArray = ""; Pattern regex = Pattern.compile(EMAIL_REGEX_DEFAULT); try { - String createrLoginId = ""; - String currentNodeId = "" ; - String currentNodeName = "" ; String nextNodeUserIds = "" ; - String currentLoginId = user.getLoginid() ; - String currentStaffId = "" ; - String createrLastName = "" ; - String currentUserId = user.getUID()+"" ; - String message = "" ; - String userSql = "select "+cus_staff+" as staffid from cus_fielddata where scopeid="+scopeid+" and scope='"+scope+"' and id=?"; - rs.executeQuery(userSql,currentUserId); - if (rs.next()){ - currentStaffId = Util.null2String(rs.getString("staffid")); - } + + String message = "" ; String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); - String currentnodeid = "" ; - String currentnodetype = "" ; - String nodesql = " select t1.currentnodeid,t1.currentnodetype "+ - " from workflow_requestbase t1\n" + - " where ifnull(t1.deleted,0) <> 1 \n" + - " and t1.requestid = "+requestid ; - rs.executeQuery(nodesql); - if(rs.next()){ - currentnodeid = Util.null2String(rs.getString("currentnodeid")); - currentnodetype = Util.null2String(rs.getString("currentnodetype")); - } + String currentnodetype = baseMap.get("currentnodetype"); - bb.writeLog("sendTodoDataByNode-currentnodeid:"+currentnodeid); bb.writeLog("sendTodoDataByNode-currentnodetype:"+currentnodetype); if("3".equals(currentnodetype)){ + String currentUserId = user.getUID()+"" ; + message = "流程流转到归档节点,执行actionType=3" ; String actionType = "3" ; try { @@ -538,42 +503,24 @@ public class SendPortalTodoUtil { urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - String requestname = "" ; - String workflowname = "" ; - String nodeId = "" ; - String nodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("monitorDelete4Requestid--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - nodeId = Util.null2String(rs.getString("nodeid")) ; - nodeName = Util.null2String(rs.getString("nodeName")) ; - } + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); requestObject.put("center",center); - requestObject.put("title",requestname); requestObject.put("taskCode","weaver"+requestid); - requestObject.put("nodeId",nodeId); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",workflowname); String auth = username + ":" + passwd; bb.writeLog("sendTodoDataByNode-3-requestObject:"+requestObject.toJSONString()); @@ -585,10 +532,10 @@ public class SendPortalTodoUtil { if(msgObject.containsKey("resultCode")){ String resultCode = msgObject.getString("resultCode"); if("0".equals(resultCode)){ - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); } } } @@ -597,64 +544,22 @@ public class SendPortalTodoUtil { bb.writeLog("sendTodoDataByNode:"+e); } }else{ - message += "流程流转从"+noideid+"节点提交,待办人员:" ; - int count = 0 ; - String countuserids = "" ; - String countSql = " select t2.userid\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11'))\n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid+ - " and t2.nodeid = " + noideid ; - - bb.writeLog("sendTodoDataByNode--countSql:"+countSql); - rs.executeQuery(countSql); - while (rs.next()){ - String userid = Util.null2String(rs.getString("userid")); - countuserids += StringUtils.isBlank(countuserids) ? userid : ","+userid; - bb.writeLog("sendTodoDataByNode-userid:"+userid); - count++; - } - - message = message + "["+countuserids+"]" ; - - bb.writeLog("sendTodoDataByNode--count:"+count); + message += "流程流转从"+nodeid+"节点提交,待办人员:" ; + int count = requestBaseInfoUtil.getTodoCountByRequestNode(requestid,nodeid); + // count >0 会签还没有流转到下个节点 + if(count >0){ - String requestname = "" ; - String workflowname = "" ; + message += ",流程流转到"+currentNodeId+"节点,执行actionType=1" ; - if(count >0){ + String currentLoginId = user.getLoginid() ; + String currentUserId = user.getUID()+"" ; + String currentStaffId = requestBaseInfoUtil.getUserStaffid(currentUserId); JSONArray taskObjectList = new JSONArray(); String actionType = "1" ; String objectAction = "1" ; String objectType = "0"; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("sendTodoDataByNode--sql:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - createrLoginId = Util.null2String(rs.getString("loginid")) ; - createrLastName = Util.null2String(rs.getString("lastname")) ; - } - - message += ",流程流转到"+currentNodeId+"节点,执行actionType=1" ; - String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; String replace = bpm_app_workflowurl.replace("/bpm", ""); String urlDing = replace+bpm_app_requesturl+requestid; @@ -664,27 +569,26 @@ public class SendPortalTodoUtil { urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - if("sysadmin".equals(currentLoginId)){ - currentLoginId = "Admin"; - } - bb.writeLog("urlDing", urlDing); - requestObject.put("center",center); - requestObject.put("title",requestname); + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); - requestObject.put("taskCode","weaver"+requestid); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); if(StringUtils.isNotBlank(currentLoginId)){ String objectCode = currentLoginId ; @@ -698,29 +602,22 @@ public class SendPortalTodoUtil { taskObjectList.add(taskObject); } - sql = " select t2.userid,h1.loginid,h1.email,c1."+cus_staff+" as staffid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ - " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5', '7','11'))\n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid; - +// String sql =" select t2.userid,h1.loginid,h1.email,c1."+cus_staff+" as staffid "+ +// " from workflow_requestbase t1 \n" + +// " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + +// " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ +// " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5', '7','11'))\n" + +// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + +// " and t2.requestid = "+requestid; + + String sql = requestBaseInfoUtil.getTodoSql(requestid); bb.writeLog("sendTodoDataByNode--sql:"+sql); rs.executeQuery(sql); while (rs.next()){ - String usercode = Util.null2String(rs.getString("loginid")) ; String staffid = Util.null2String(rs.getString("staffid")) ; - String userid = Util.null2String(rs.getString("userid")) ; - nextNodeUserIds += StringUtils.isBlank(nextNodeUserIds) ? userid :","+userid ; - - if("sysadmin".equals(usercode)){ - usercode = "Admin"; - } String objectCode = usercode ; String operatorCode = usercode ; @@ -734,15 +631,7 @@ public class SendPortalTodoUtil { taskObject.put("objectId",staffid); taskObject.put("operatorCode",operatorCode); taskObjectList.add(taskObject); - -// String email = Util.null2String(rs.getString("email")) ; -// bb.writeLog("email3:"+email); -// Matcher matcher = regex.matcher(email); -// if(matcher.matches()){ -// emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; -// } } - requestObject.put("taskObjectList",taskObjectList); if (taskObjectList.size() > 0){ @@ -774,31 +663,11 @@ public class SendPortalTodoUtil { } } }else{ + String currentUserId = user.getUID()+"" ; + String objectAction = "0" ; String objectType = "0"; - JSONArray taskObjectList = new JSONArray(); - - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("sendTodoDataByNode--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - createrLoginId = Util.null2String(rs.getString("loginid")) ; - createrLastName = Util.null2String(rs.getString("lastname")) ; - } - String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; String replace = bpm_app_workflowurl.replace("/bpm", ""); String urlDing = replace+bpm_app_requesturl+requestid; @@ -809,36 +678,38 @@ public class SendPortalTodoUtil { } - bb.writeLog("urlDing", urlDing); + JSONObject requestObject = new JSONObject(); - requestObject.put("center",center); - requestObject.put("title",requestname); requestObject.put("creator",createrLoginId); - requestObject.put("taskCode","weaver"+requestid); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); requestObject.put("nodeId",currentNodeId); - requestObject.put("taskType",taskType); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); - - sql = " select t2.userid,h1.loginid,h1.email,c1."+cus_staff+" as staffid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ - " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5', '7','11'))\n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid; + JSONArray taskObjectList = new JSONArray(); +// String sql =" select t2.userid,h1.loginid,h1.email,c1."+cus_staff+" as staffid "+ +// " from workflow_requestbase t1 \n" + +// " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + +// " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ +// " left join (select id, lastname,loginid,email from hrmresource where status = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5', '7','11'))\n" + +// // " and t2.islasttimes = 1\n" + +// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + +// " and t2.requestid = "+requestid; + + String sql = requestBaseInfoUtil.getTodoSql(requestid); bb.writeLog("sendTodoDataByNode--sql:"+sql); rs.executeQuery(sql); while (rs.next()){ @@ -846,28 +717,25 @@ public class SendPortalTodoUtil { String usercode = Util.null2String(rs.getString("loginid")) ; String staffid = Util.null2String(rs.getString("staffid")) ; String userid = Util.null2String(rs.getString("userid")) ; - nextNodeUserIds += StringUtils.isBlank(nextNodeUserIds) ? userid :","+userid ; - - if("sysadmin".equals(usercode)){ - usercode = "Admin"; - } - - String objectCode = usercode ; - String operatorCode = usercode ; - - JSONObject taskObject = new JSONObject(); - taskObject.put("objectAction",objectAction); - taskObject.put("objectType",objectType); - taskObject.put("objectCode",objectCode); - taskObject.put("objectId",staffid); - taskObject.put("operatorCode",operatorCode); - taskObjectList.add(taskObject); - String email = Util.null2String(rs.getString("email")) ; - bb.writeLog("email3:"+email); - Matcher matcher = regex.matcher(email); - if(matcher.matches()){ - emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; + if("0".equals(userid)){ + String objectCode = usercode ; + String operatorCode = usercode ; + + JSONObject taskObject = new JSONObject(); + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",staffid); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + + String email = Util.null2String(rs.getString("email")) ; + bb.writeLog("email3:"+email); + Matcher matcher = regex.matcher(email); + if(matcher.matches()){ + emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; + } } } @@ -876,45 +744,41 @@ public class SendPortalTodoUtil { requestObject.put("taskObjectList",taskObjectList); message += ",流程流转到"+currentNodeId+"节点,执行actionType=2" ; - }else { - requestObject.put("actionType","3"); - message += ",流程流转到"+currentNodeId+"节点,执行actionType=3" ; - } - String auth = username + ":" + passwd; - String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); - bb.writeLog("msgdata:"+msgdata); - if(!"".equals(msgdata)){ - JSONObject msgObject = JSONObject.parseObject(msgdata); - //{"resultCode":"1","resultMsg":"No Result"} - if(msgObject.containsKey("resultCode")){ - String resultCode = msgObject.getString("resultCode"); - if("0".equals(resultCode)){ - - bb.writeLog("emailArray:"+emailArray); - if(StringUtils.isNotEmpty(emailArray)) - { + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("msgdata:"+msgdata); + if(!"".equals(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + //{"resultCode":"1","resultMsg":"No Result"} + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ - Map templateMap = getEmailTemplate(requestname,createrLastName,processTime); - String notificationSubject = templateMap.get("notificationSubject"); - String notificationContent = templateMap.get("notificationContent"); + bb.writeLog("emailArray:"+emailArray); + if(StringUtils.isNotEmpty(emailArray)) + { + Map templateMap = getEmailTemplate(requestname,createrLastName,processTime); + String notificationSubject = templateMap.get("notificationSubject"); + String notificationContent = templateMap.get("notificationContent"); - sendMailUtil.sendMail(requestid,emailArray,notificationSubject,notificationContent); - } + sendMailUtil.sendMail(requestid,emailArray,notificationSubject,notificationContent); + } - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,nextNodeUserIds,message); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,nextNodeUserIds,message); - }else{ - String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,nextNodeUserIds,message); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,nextNodeUserIds,message); + } } } + } + } } - - // //处理抄送的 // JSONObject taskObject = new JSONObject(); // String sql = " select t2.userid,h1.loginid,h1.lastname,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ @@ -1041,46 +905,21 @@ public class SendPortalTodoUtil { String objectAction = "0" ; String objectType = "0"; - String cus_staff = PropBean.getUfPropValue("cus_staff") ; - String scopeid = "-1"; - String scope = "HrmCustomFieldByInfoType" ; - + String currentUserId = user.getUID()+"" ; + String nextNodeUserIds = ""; try { - String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); - String actionType = "2" ; JSONArray taskObjectList = new JSONArray(); - String createrLastName = ""; - String createrLoginId = ""; - String workflowname = "" ; - String requestname = ""; - String currentNodeId = ""; - String currentNodeName = "" ; - String nextNodeUserIds = "" ; - String currentUserId = user.getUID()+"" ; + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); - - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname "+ - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - - bb.writeLog("sendTodoDataByReject--sql:"+sql); - rs.executeQuery(sql); - if (rs.next()){ - workflowname = Util.null2String(rs.getString("workflowname")) ; - requestname = Util.null2String(rs.getString("requestname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - createrLastName = Util.null2String(rs.getString("lastname")) ; - createrLoginId = Util.null2String(rs.getString("loginid")) ; - } + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; String replace = bpm_app_workflowurl.replace("/bpm", ""); @@ -1093,49 +932,44 @@ public class SendPortalTodoUtil { } JSONObject requestObject = new JSONObject(); - requestObject.put("center",center); - requestObject.put("title",requestname); + requestObject.put("creator",createrLoginId); - requestObject.put("taskCode","weaver"+requestid); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); - - sql = " select t2.userid,h1.loginid,h1.email,c1."+cus_staff+" as staffid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ - " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11'))\n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid; +// String sql =" select t2.userid,h1.loginid,h1.email,c1."+cus_staff+" as staffid "+ +// " from workflow_requestbase t1\n" + +// " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + +// " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ +// " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11'))\n" + +// // " and t2.islasttimes = 1\n" + +// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + +// " and t2.requestid = "+requestid; + + String sql = requestBaseInfoUtil.getTodoSql(requestid); bb.writeLog("sendTodoDataByReject--sql:"+sql); rs.executeQuery(sql); while (rs.next()){ - String usercode = Util.null2String(rs.getString("loginid")) ; String staffid = Util.null2String(rs.getString("staffid")) ; - String userid = Util.null2String(rs.getString("userid")) ; - nextNodeUserIds += StringUtils.isBlank(nextNodeUserIds) ? userid :","+userid ; JSONObject taskObject = new JSONObject(); - - if("sysadmin".equals(usercode)){ - usercode = "Admin"; - } - String objectCode = usercode ; String operatorCode = usercode ; @@ -1153,7 +987,6 @@ public class SendPortalTodoUtil { emailArray += StringUtils.isEmpty(emailArray) ? email : ","+email ; } } - requestObject.put("taskObjectList",taskObjectList); String auth = username + ":" + passwd; diff --git a/src/com/customization/dito/sendtodo/SendPortalWithAddDoneCmd.java b/src/com/customization/dito/sendtodo/SendPortalWithAddDoneCmd.java index fbb2ea9e..d8939ad5 100644 --- a/src/com/customization/dito/sendtodo/SendPortalWithAddDoneCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalWithAddDoneCmd.java @@ -8,6 +8,8 @@ import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.Util; import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; + import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; @@ -16,17 +18,15 @@ import java.util.Map; public class SendPortalWithAddDoneCmd { private Map params; - public static String EMAIL_REGEX_DEFAULT = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; public SendPortalWithAddDoneCmd(Map params){ - this.params=params; + this.params = params; } public Map execute(CommandContext commandContext) { BaseBean bb = new BaseBean(); List> allDonelist = (List>)(params.get("doneDatas")); - bb.writeLog("allDonelist:"+allDonelist.size()); String requestid = Util.null2String(params.get("requestid")); List> donelist = new ArrayList>(); List userList = getRequestArchivedReamrkUserIds(requestid); @@ -38,15 +38,22 @@ public class SendPortalWithAddDoneCmd { donelist.add(doneMap); } } - bb.writeLog("donelist:"+donelist.size()); - String bpm_app_workflowurl = PropBean.getUfPropValue("bpm_app_workflowurl"); - String bpm_app_requesturl = PropBean.getUfPropValue("bpm_app_requesturl"); - String portal_doneurl = PropBean.getUfPropValue("portal_doneurl"); - String username = PropBean.getUfPropValue("username"); - String passwd = PropBean.getUfPropValue("passwd"); - String center = PropBean.getUfPropValue("center"); - String bpm_workflowurl = PropBean.getUfPropValue("bpm_workflowurl"); +// String bpm_app_workflowurl = PropBean.getUfPropValue("bpm_app_workflowurl"); +// String bpm_app_requesturl = PropBean.getUfPropValue("bpm_app_requesturl"); +// String portal_doneurl = PropBean.getUfPropValue("portal_doneurl"); +// String username = PropBean.getUfPropValue("username"); +// String passwd = PropBean.getUfPropValue("passwd"); +// String center = PropBean.getUfPropValue("center"); +// String bpm_workflowurl = PropBean.getUfPropValue("bpm_workflowurl"); + + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + String portal_doneurl = Constants.portal_doneurl; + String username = Constants.username; + String passwd = Constants.passwd; + String center = Constants.center; + String bpm_workflowurl = Constants.bpm_workflowurl; sendPortalDoneData(requestid,donelist,portal_doneurl,bpm_app_workflowurl,username,passwd,bpm_workflowurl,bpm_app_requesturl); @@ -127,10 +134,6 @@ public class SendPortalWithAddDoneCmd { SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); -// RecordSet rs = new RecordSet(); -// String scopeid = "-1"; -// String scope = "HrmCustomFieldByInfoType" ; - try { String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); @@ -153,148 +156,47 @@ public class SendPortalWithAddDoneCmd { for (Map doneMap:donelist) { -// boolean bool = checkIsAgent(workflowid,userid); -// bb.writeLog("=============== SendPortalWithAddDoneCmd bool =================== " + bool); - //没有流程代理的情况下 -// if(!bool){ - //判断是否是抄送流程 - // String cus_staff = PropBean.getUfPropValue("cus_staff") ; -// String sql = " select count(1) num "+ -// " from workflow_requestbase t1\n" + -// " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + -// " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ -// " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + -// " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ -// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + -// " and t1.currentnodetype <> 3"+ -// " and t2.isremark in ('2','9')\n" + -// " and t2.preisremark in ('8','9')\n" + -// " and t2.islasttimes = 1\n" + -// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + -// " and t2.requestid = "+requestid + " and t2.userid = "+ userid; -// -// rs.executeQuery(sql); -// int num = 0; -// //过滤非归档节点,抄送待阅流程 -// if(rs.next()){ -// num = rs.getInt("num"); -// } -// //判断是否为转发节点 -// sql = "SELECT c1."+ PropBean.getUfPropValue("cus_staff")+" as staffid FROM workflow_currentoperator t1 left join cus_fielddata c1 on c1.id = t1.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' WHERE t1.preisremark=1 and t1.REQUESTID=? and t1.USERID=?"; -// rs.executeQuery(sql,requestid,doneMap.get("id")); -// if (rs.next()){ -// //删除转发的待办 -// JSONObject jsonObject = new JSONObject(); -// -// jsonObject.put("center",center); -// jsonObject.put("title",doneMap.get("requestname")); -// jsonObject.put("creator",doneMap.get("creater")); -// jsonObject.put("taskCode","weaver"+requestid); -// -// jsonObject.put("taskType","0"); -// jsonObject.put("actionType","1"); -// jsonObject.put("createDate",processTime); -// jsonObject.put("messageTitle",getShortMessageTitle(doneMap.get("requestname").toString())); -// jsonObject.put("messageContent",doneMap.get("requestname")); -// jsonObject.put("terminal","1"); -// jsonObject.put("urlPc",urlPc); -// jsonObject.put("urlApp",urlApp); -// jsonObject.put("urlDing",urlDing); -// jsonObject.put("nodeName",doneMap.get("nodename")); -// jsonObject.put("ticketType",doneMap.get("workflowname")); -// -// JSONArray list = new JSONArray(); -// JSONObject taskObject = new JSONObject(); -// list.add(taskObject); -// taskObject.put("objectAction","1"); -// taskObject.put("objectType","0"); -// taskObject.put("objectCode",doneMap.get("loginid")); -// taskObject.put("objectId",rs.getString("staffid")); -// taskObject.put("operatorCode",doneMap.get("loginid")); -// jsonObject.put("taskObjectList",list); -// bb.writeLog("SendPortalWithAddDoneCmd--delete forward workflow--requestObject:" + jsonObject.toJSONString()); -// String auth = username + ":" + passwd; -// String msgdata = httpRequestUtil.doPostByAuth(Constants.portal_todourl, jsonObject.toJSONString(), auth); -// bb.writeLog("SendPortalToReadUtil-msgdata:" + msgdata); -// if(StringUtils.isNotEmpty(msgdata)) { -// JSONObject msgObject = JSONObject.parseObject(msgdata); -// if(msgObject.containsKey("resultCode")){ -// String resultCode = msgObject.getString("resultCode"); -// if(!"0".equals(resultCode)){ -// String resultmsg = msgObject.getString("resultMsg"); -// sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,doneMap.get("id").toString(),doneMap.get("nodename").toString(),doneMap.get("id").toString(),jsonObject.toJSONString(),resultCode,resultmsg); -// } -// } -// } -// -// } -// if (num == 0){ -// bb.writeLog("num :"+num+",userid"+doneMap.get("id")); -// String nodeid = requestid+doneMap.get("id"); - - String workflowid = Util.null2String(doneMap.get("workflowid")); - String userid = Util.null2String(doneMap.get("userid")); - bb.writeLog("=============== SendPortalWithAddDoneCmd workflowid =================== " + workflowid); - bb.writeLog("=============== SendPortalWithAddDoneCmd userid =================== " + userid); - - String workflowname = Util.null2String(doneMap.get("workflowname")); - String requestname = Util.null2String(doneMap.get("requestname")); - String loginid = Util.null2String(doneMap.get("loginid")); - bb.writeLog("loginid1:"+loginid); - if("sysadmin".equals(loginid)){ - loginid = "Admin"; + String workflowid = Util.null2String(doneMap.get("workflowid")); + String userid = Util.null2String(doneMap.get("userid")); + + String workflowname = Util.null2String(doneMap.get("workflowname")); + String requestname = Util.null2String(doneMap.get("requestname")); + String loginid = Util.null2String(doneMap.get("loginid")); + String creater = Util.null2String(doneMap.get("creater")); + + String nodeName = Util.null2String(doneMap.get("nodename")); + + String nodeid = requestid+userid+"_"+System.currentTimeMillis(); + + JSONObject requestObject = new JSONObject(); + requestObject.put("center", center); + requestObject.put("taskCode", "weaver"+requestid); + requestObject.put("nodeId", nodeid); + requestObject.put("ticketType", workflowname); + requestObject.put("title", requestname); + requestObject.put("creator", creater); + requestObject.put("processStaff", loginid); + requestObject.put("processTime", processTime); + requestObject.put("isRecall", isRecall); + requestObject.put("actionType", actionType); + requestObject.put("urlPC", urlPc); + requestObject.put("urlApp", urlApp); + requestObject.put("urlDing",urlDing); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_doneurl, requestObject.toJSONString(), auth); + if(StringUtils.isNotEmpty(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodeName,creater,requestObject.toJSONString(),resultCode,"",zhjkbs,userid); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodeName,creater,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid); } - bb.writeLog("loginid2:"+loginid); - - String creater = Util.null2String(doneMap.get("creater")); - bb.writeLog("creater1:"+creater); - if("sysadmin".equals(creater)){ - creater = "Admin"; - } - bb.writeLog("creater2:"+creater); - - String nodeName = Util.null2String(doneMap.get("nodename")); -// String nodeid = Util.null2String(doneMap.get("noedid")); -// bb.writeLog("nodeid:"+nodeid); -// if(StringUtils.isBlank(nodeid)){ -// nodeid = requestid+userid; ; -// } -// bb.writeLog("nodeid2:"+nodeid); - - String nodeid = requestid+userid+"_"+System.currentTimeMillis(); - - JSONObject requestObject = new JSONObject(); - requestObject.put("center", center); - requestObject.put("taskCode", "weaver"+requestid); - requestObject.put("nodeId", nodeid); - requestObject.put("ticketType", workflowname); - requestObject.put("title", requestname); - requestObject.put("creator", creater); - requestObject.put("processStaff", loginid); - requestObject.put("processTime", processTime); - requestObject.put("isRecall", isRecall); - requestObject.put("actionType", actionType); - requestObject.put("urlPC", urlPc); - requestObject.put("urlApp", urlApp); - requestObject.put("urlDing",urlDing); - - String auth = username + ":" + passwd; - bb.writeLog("done requestObject:" + requestObject.toJSONString()); - String msgdata = httpRequestUtil.doPostByAuth(portal_doneurl, requestObject.toJSONString(), auth); - bb.writeLog("done msgdata:" + msgdata); - if(StringUtils.isNotEmpty(msgdata)) { - JSONObject msgObject = JSONObject.parseObject(msgdata); - if(msgObject.containsKey("resultCode")){ - String resultCode = msgObject.getString("resultCode"); - if("0".equals(resultCode)){ - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodeName,creater,requestObject.toJSONString(),resultCode,"",zhjkbs,userid); - }else{ - String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeid,nodeName,creater,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid); - } - } - } -// } + } + } } } catch (Exception e) { bb.writeLog("done Exception"); diff --git a/src/com/customization/dito/sendtodo/SendPortalWithAddTodoCmd.java b/src/com/customization/dito/sendtodo/SendPortalWithAddTodoCmd.java index f9b08b9d..7dbb1666 100644 --- a/src/com/customization/dito/sendtodo/SendPortalWithAddTodoCmd.java +++ b/src/com/customization/dito/sendtodo/SendPortalWithAddTodoCmd.java @@ -115,7 +115,7 @@ public class SendPortalWithAddTodoCmd { " from workflow_requestbase t1\n" + " inner join workflow_base t3 on t1.workflowid = t3.id\n" + " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + " and t1.requestid = "+requestid ; diff --git a/src/com/customization/dito/sendtodo/withdraw/SendPortalWithDrawCmd.java b/src/com/customization/dito/sendtodo/withdraw/SendPortalWithDrawCmd.java new file mode 100644 index 00000000..70d68df6 --- /dev/null +++ b/src/com/customization/dito/sendtodo/withdraw/SendPortalWithDrawCmd.java @@ -0,0 +1,255 @@ +package com.customization.dito.sendtodo.withdraw; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.engine.core.cfg.annotation.CommandDynamicProxy; +import com.engine.core.interceptor.AbstractCommandProxy; +import com.engine.core.interceptor.Command; +import com.engine.workflow.cmd.requestForm.RequestWithdrawCmd; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; +import javax.servlet.http.HttpServletRequest; +import java.net.URLEncoder; +import java.util.*; + +/** + * @Title + * @Author shil + * @CreateDate 2023/10/9 + * @Version 1.0 + * @Description + */ + +@CommandDynamicProxy(target = RequestWithdrawCmd.class, desc="流程撤回给门户发送待办消息") +public class SendPortalWithDrawCmd extends AbstractCommandProxy> { + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + + @Override + public Map execute(Command> targetCommand) { + BaseBean bb = new BaseBean(); + bb.writeLog("SendPortalWithDrawCmd"); + + RequestWithdrawCmd requestWithdrawCmd = (RequestWithdrawCmd) targetCommand; + HttpServletRequest request = requestWithdrawCmd.getRequest(); + + String requestid = Util.null2String(request.getParameter("requestid")).trim(); + String actionType = Util.null2String(request.getParameter("actionType")).trim(); + User user = requestWithdrawCmd.getUser(); + bb.writeLog("requestid:"+requestid); + bb.writeLog("actionType:"+actionType); + bb.writeLog("user:"+user.getLoginid()); + + Map result = nextExecute(targetCommand); + + if("submit".equals(actionType)){ + sendPortalByWithDraw(result,requestid,user); + } + + return result; + } + + + public void sendPortalByWithDraw(Map resultMap,String requestid,User user){ + BaseBean bb = new BaseBean(); + bb.writeLog("sendPortalByWithDraw:"+requestid); + if(resultMap.containsKey("result")){ + String result = Util.null2String(resultMap.get("result")); + bb.writeLog("result:"+result); + if("success".equals(result)){ + if(StringUtils.isNotBlank(requestid)){ + sendTodoDataByForceBack(requestid); + } + } + } + } + + public String sendTodoDataByForceBack(String requestid){ + BaseBean bb = new BaseBean(); + bb.writeLog("sendTodoDataByForceBack:"+requestid); + String resultCode = ""; + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + RecordSet rs = new RecordSet(); + String message = "流程页面撤回操作"; + + String zhjkbs = "com.customization.dito.sendtodo.withdraw.SendPortalWithDrawCmd.sendTodoDataByForceBack" ; + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + + String terminal = "1" ; + String taskType = "0"; + try { + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; + String replace = bpm_app_workflowurl.replace("/bpm", ""); + String urlDing = replace+bpm_app_requesturl+requestid; + String urlApp = replace+bpm_app_requesturl+requestid; + if(org.apache.commons.lang3.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + String currentnodetype = baseMap.get("currentnodetype"); + String currentnodeid = baseMap.get("currentnodeid"); + + bb.writeLog("sendTodoDataByForceBack-currentnodetype:"+currentnodetype); + + if("3".equals(currentnodetype)){ + message += ",流程状态为归档"; + String actionType = "3" ; + try { + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + String auth = username + ":" + passwd; + bb.writeLog("sendTodoDataByForceBack-3-requestObject:"+requestObject.toJSONString()); + + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("sendTodoDataByForceBack-3-msgdata:"+msgdata); + if(StringUtils.isNotBlank(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + bb.writeLog("sendTodoDataByForceBack:"+e); + } + }else{ + String actionType = "2"; + String objectAction = "0" ; + String objectType = "0"; + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + JSONArray taskObjectList = new JSONArray(); + String sql =" select t2.userid,h1.loginid,h1.email,c1."+cus_staff+" as staffid "+ + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ + " left join (select id, lastname,loginid,email from hrmresource where status = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5', '7','11'))\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid; + + bb.writeLog("sendTodoDataByForceBack--sql:"+sql); + rs.executeQuery(sql); + while (rs.next()){ + String usercode = Util.null2String(rs.getString("loginid")) ; + String staffid = Util.null2String(rs.getString("staffid")) ; + String objectCode = usercode ; + String operatorCode = usercode ; + JSONObject taskObject = new JSONObject(); + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",staffid); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + } + + requestObject.put("actionType",actionType); + requestObject.put("taskObjectList",taskObjectList); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("sendTodoDataByForceBack--msgdata:"+msgdata); + if(!"".equals(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + return resultCode; + } + + + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + +} diff --git a/src/com/customization/wfTodoCard/ButtonInfo.java b/src/com/customization/wfTodoCard/ButtonInfo.java new file mode 100644 index 00000000..f0595a5d --- /dev/null +++ b/src/com/customization/wfTodoCard/ButtonInfo.java @@ -0,0 +1,70 @@ +package com.customization.wfTodoCard; + +/* + * 按钮对象 + */ +public class ButtonInfo { + private String name; + private String color; + private String callUrl; + private String callParam; + private String callMethod; + private String callStatus; + private String callAuth; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public String getCallUrl() { + return callUrl; + } + + public void setCallUrl(String callUrl) { + this.callUrl = callUrl; + } + + public String getCallParam() { + return callParam; + } + + public void setCallParam(String callParam) { + this.callParam = callParam; + } + + public String getCallMethod() { + return callMethod; + } + + public void setCallMethod(String callMethod) { + this.callMethod = callMethod; + } + + public String getCallStatus() { + return callStatus; + } + + public String getCallAuth() { + return callAuth; + } + + public void setCallAuth(String callAuth) { + this.callAuth = callAuth; + } + + public void setCallStatus(String callStatus) { + this.callStatus = callStatus; + } +} diff --git a/src/com/customization/wfTodoCard/CardInfo.java b/src/com/customization/wfTodoCard/CardInfo.java new file mode 100644 index 00000000..14a965f4 --- /dev/null +++ b/src/com/customization/wfTodoCard/CardInfo.java @@ -0,0 +1,65 @@ +package com.customization.wfTodoCard; + + +import java.util.List; + +/* + * 卡片对象 + */ +public class CardInfo { + + private TitleInfo titleInfo; + private List contentInfos; + private String warnMsg; + private String expandMsg; + private ViewDetail viewDetailInfo; + private List buttonInfos; + + public TitleInfo getTitleInfo() { + return titleInfo; + } + + public void setTitleInfo(TitleInfo titleInfo) { + this.titleInfo = titleInfo; + } + + public List getContentInfos() { + return contentInfos; + } + + public void setContentInfos(List contentInfos) { + this.contentInfos = contentInfos; + } + + public String getWarnMsg() { + return warnMsg; + } + + public void setWarnMsg(String warnMsg) { + this.warnMsg = warnMsg; + } + + public String getExpandMsg() { + return expandMsg; + } + + public void setExpandMsg(String expandMsg) { + this.expandMsg = expandMsg; + } + + public ViewDetail getViewDetailInfo() { + return viewDetailInfo; + } + + public void setViewDetailInfo(ViewDetail viewDetailInfo) { + this.viewDetailInfo = viewDetailInfo; + } + + public List getButtonInfos() { + return buttonInfos; + } + + public void setButtonInfos(List buttonInfos) { + this.buttonInfos = buttonInfos; + } +} diff --git a/src/com/customization/wfTodoCard/ContentInfo.java b/src/com/customization/wfTodoCard/ContentInfo.java new file mode 100644 index 00000000..6c113986 --- /dev/null +++ b/src/com/customization/wfTodoCard/ContentInfo.java @@ -0,0 +1,39 @@ +package com.customization.wfTodoCard; + + +/* + * 内容对象 + */ +public class ContentInfo { + + // text / imageUrl / List + // keyInfo: name / value + private String type; + private Integer order; + private String data; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Integer getOrder() { + return order; + } + + public void setOrder(Integer order) { + this.order = order; + } + + public String getData() { + return data; + } + + public void setData(String data) { + this.data = data; + } + +} diff --git a/src/com/customization/wfTodoCard/TitleInfo.java b/src/com/customization/wfTodoCard/TitleInfo.java new file mode 100644 index 00000000..09d378af --- /dev/null +++ b/src/com/customization/wfTodoCard/TitleInfo.java @@ -0,0 +1,35 @@ +package com.customization.wfTodoCard; + +/** + * 标题对象 + */ +public class TitleInfo { + + private String name; + private String iconName; + private String color; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getIconName() { + return iconName; + } + + public void setIconName(String iconName) { + this.iconName = iconName; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } +} diff --git a/src/com/customization/wfTodoCard/ViewDetail.java b/src/com/customization/wfTodoCard/ViewDetail.java new file mode 100644 index 00000000..b0662807 --- /dev/null +++ b/src/com/customization/wfTodoCard/ViewDetail.java @@ -0,0 +1,35 @@ +package com.customization.wfTodoCard; + +/* + * 跳转对象 + */ +public class ViewDetail { + private String appUrl; + private String pcUrl; + // H5 miniApp webView browser + private String openMethod; + + public String getAppUrl() { + return appUrl; + } + + public void setAppUrl(String appUrl) { + this.appUrl = appUrl; + } + + public String getPcUrl() { + return pcUrl; + } + + public void setPcUrl(String pcUrl) { + this.pcUrl = pcUrl; + } + + public String getOpenMethod() { + return openMethod; + } + + public void setOpenMethod(String openMethod) { + this.openMethod = openMethod; + } +} diff --git a/src/com/customization/wfTodoCard/action/WFMessageRemindAction.java b/src/com/customization/wfTodoCard/action/WFMessageRemindAction.java new file mode 100644 index 00000000..b2bf6f77 --- /dev/null +++ b/src/com/customization/wfTodoCard/action/WFMessageRemindAction.java @@ -0,0 +1,48 @@ +package com.customization.wfTodoCard.action; + +import com.alibaba.fastjson.JSONObject; +import weaver.conn.RecordSet; +import weaver.general.StringUtil; +import weaver.general.Util; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.core.Context; +import java.util.HashMap; +import java.util.Map; + +/* + * 废弃不用 + */ +public class WFMessageRemindAction { + + + + public String checkUser(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = new HashMap<>(); + String workflowId = Util.null2String(request.getParameter("workflowId")); + String messageRemindScope = Util.null2String(request.getParameter("messageRemindScope")); + + RecordSet recordSet = new RecordSet(); + if(!StringUtil.isEmpty(messageRemindScope)){ + recordSet.execute("update workflow_base set messageRemindScope = '"+messageRemindScope+"' where id = '"+workflowId+"'"); + apidatas.put("success", "1"); + }else{ + apidatas.put("success", "0"); + } + return JSONObject.toJSONString(apidatas); + } + + + public String getRemindScope(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = new HashMap<>(); + String workflowId = Util.null2String(request.getParameter("workflowId")); + + RecordSet recordSet = new RecordSet(); + recordSet.execute("select messageRemindScope from workflow_base where id = '"+workflowId+"'"); + if(recordSet.next()){ + apidatas.put("messageRemindScope", recordSet.getString("messageRemindScope")); + } + return JSONObject.toJSONString(apidatas); + } +} diff --git a/src/com/customization/wfTodoCard/entity/NodeOperator.java b/src/com/customization/wfTodoCard/entity/NodeOperator.java new file mode 100644 index 00000000..9db458e1 --- /dev/null +++ b/src/com/customization/wfTodoCard/entity/NodeOperator.java @@ -0,0 +1,196 @@ +package com.customization.wfTodoCard.entity; + +// ڵ +public class NodeOperator { + private String id; + private String workCode; + private String workflowId; + private String nodeId; + private String userId; + private String processUser; + private String preisremark; + private String isremark; + private String operatetype; + private String handleForwardId; + private String signOrder; + private String isReject; + private String isbereject; + private String isEnd; + private String receiveDate; + private String receiveTime; + private String requestId; + private String isStart; // + private String createDate; + private String createTime; + + private String language; + + + public String getLanguage() { + return language; + } + + public void setLanguage(String language) { + this.language = language; + } + + public String getCreateDate() { + return createDate; + } + + public void setCreateDate(String createDate) { + this.createDate = createDate; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getRequestId() { + return requestId; + } + + public String getIsbereject() { + return isbereject; + } + + public void setIsbereject(String isbereject) { + this.isbereject = isbereject; + } + + public String getIsStart() { + return isStart; + } + + public void setIsStart(String isStart) { + this.isStart = isStart; + } + + public void setRequestId(String requestId) { + this.requestId = requestId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getWorkCode() { + return workCode; + } + + public String getReceiveDate() { + return receiveDate; + } + + public void setReceiveDate(String receiveDate) { + this.receiveDate = receiveDate; + } + + public String getReceiveTime() { + return receiveTime; + } + + public void setReceiveTime(String receiveTime) { + this.receiveTime = receiveTime; + } + + public void setWorkCode(String workCode) { + this.workCode = workCode; + } + + public String getWorkflowId() { + return workflowId; + } + + public void setWorkflowId(String workflowId) { + this.workflowId = workflowId; + } + + public String getNodeId() { + return nodeId; + } + + public void setNodeId(String nodeId) { + this.nodeId = nodeId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getProcessUser() { + return processUser; + } + + public void setProcessUser(String processUser) { + this.processUser = processUser; + } + + public String getPreisremark() { + return preisremark; + } + + public void setPreisremark(String preisremark) { + this.preisremark = preisremark; + } + + public String getIsremark() { + return isremark; + } + + public void setIsremark(String isremark) { + this.isremark = isremark; + } + + public String getOperatetype() { + return operatetype; + } + + public void setOperatetype(String operatetype) { + this.operatetype = operatetype; + } + + public String getHandleForwardId() { + return handleForwardId; + } + + public void setHandleForwardId(String handleForwardId) { + this.handleForwardId = handleForwardId; + } + + public String getSignOrder() { + return signOrder; + } + + public void setSignOrder(String signOrder) { + this.signOrder = signOrder; + } + + public String getIsReject() { + return isReject; + } + + public void setIsReject(String isReject) { + this.isReject = isReject; + } + + public String getIsEnd() { + return isEnd; + } + + public void setIsEnd(String isEnd) { + this.isEnd = isEnd; + } +} diff --git a/src/com/customization/wfTodoCard/handle/CardInfoHandler.java b/src/com/customization/wfTodoCard/handle/CardInfoHandler.java new file mode 100644 index 00000000..2efee730 --- /dev/null +++ b/src/com/customization/wfTodoCard/handle/CardInfoHandler.java @@ -0,0 +1,911 @@ +package com.customization.wfTodoCard.handle; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.wfTodoCard.*; +import com.customization.wfTodoCard.entity.NodeOperator; +import com.customization.wfTodoCard.service.TodoCardService; +import org.apache.commons.lang3.StringEscapeUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; + +import java.util.*; + +public class CardInfoHandler extends BaseBean { + String oaHost = getPropValue("workflowTodoCard", "oahost"); + + // 获取节点操作人 + public NodeOperator getCardInfo(Integer cid){ + RecordSet rs = new RecordSet(); + String sql="select h.WORKCODE,h.systemlanguage, a.WORKFLOWID,a.REQUESTID, a.NODEID , a.USERID , a.processUser ,a.preisremark,a.RECEIVEDATE, a.RECEIVETIME , rq.CREATEDATE ,rq.CREATETIME , a.isremark ,a.operatetype, a.HANDLEFORWARDID , wg.SIGNORDER , " + + "a.isbereject, n.ISSTART, n.ISREJECT , n.ISEND " + + "from workflow_currentoperator a left join workflow_nodebase n on n.id=a.nodeid left join hrmresource h on h.id=a.USERID left join workflow_groupdetail wg on wg.id=a.GROUPDETAILID " + + "left join workflow_requestbase rq on rq.REQUESTID=a.REQUESTID " + + "where a.id="+cid;; +// String sql="select h.WORKCODE, a.WORKFLOWID,a.REQUESTID, a.NODEID , a.USERID , a.processUser ,a.preisremark,a.RECEIVEDATE, a.RECEIVETIME , a.isremark ,a.operatetype, a.HANDLEFORWARDID , wg.SIGNORDER , a.isbereject, n.ISSTART, n.ISREJECT , n.ISEND " + +// "from workflow_currentoperator a left join workflow_nodebase n on n.id=a.nodeid left join hrmresource h on h.id=a.USERID left join workflow_groupdetail wg on wg.id=a.GROUPDETAILID " + +// "where a.id="+cid; + rs.executeQuery(sql); + if (rs.next()){ + NodeOperator nodeOperator = new NodeOperator(); + nodeOperator.setId(String.valueOf(cid)); + nodeOperator.setLanguage(rs.getString("systemlanguage")); + nodeOperator.setWorkCode(rs.getString("WORKCODE")); + nodeOperator.setWorkflowId(rs.getString("WORKFLOWID")); + nodeOperator.setNodeId(rs.getString("NODEID")); + nodeOperator.setUserId(rs.getString("USERID")); + nodeOperator.setProcessUser(rs.getString("processUser")); + nodeOperator.setPreisremark(rs.getString("preisremark")); + nodeOperator.setIsremark(rs.getString("isremark")); + nodeOperator.setOperatetype(rs.getString("operatetype")); + nodeOperator.setHandleForwardId(rs.getString("HANDLEFORWARDID")); + nodeOperator.setSignOrder(rs.getString("SIGNORDER")); + nodeOperator.setIsReject(rs.getString("ISREJECT")); + nodeOperator.setIsEnd(rs.getString("ISEND")); + nodeOperator.setReceiveDate(rs.getString("RECEIVEDATE")); + nodeOperator.setReceiveTime(rs.getString("RECEIVETIME")); + nodeOperator.setRequestId(rs.getString("REQUESTID")); + nodeOperator.setIsStart(rs.getString("ISSTART")); + nodeOperator.setCreateDate(rs.getString("CREATEDATE")); + nodeOperator.setCreateTime(rs.getString("CREATETIME")); + nodeOperator.setIsbereject(Util.null2String(rs.getString("isbereject"))); + return nodeOperator; + } + return null; + } + + // 是否有必填字段 + public boolean hasNeccessryField(String nodeid) { + RecordSet rs = new RecordSet(); + rs.executeQuery("select NODEID from workflow_nodeform where NODEID =" + nodeid + " and ISMANDATORY =1"); + if (rs.next()) { + return true; + } + return false; + } + + // 卡片通用参数 + private JSONArray getCardParam(List filedNameList,String requestName, NodeOperator nodeOperator){ + writeLog(">>>> get param "); + JSONArray cardJsonArray = new JSONArray(); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Title").fluentPut("value", requestName) + ); + + // 参数存储 + Map paramMap = new HashMap<>(); + RecordSet rd = new RecordSet(); + Integer billid=0; // 表单id + if (null != filedNameList && filedNameList.size() > 0) { + + String queryTablesql = "select TABLENAME,b.id billid from workflow_base a inner join workflow_bill b on a.FORMID =b.ID where a.id = '" + nodeOperator.getWorkflowId() + "'"; + rd.executeQuery(queryTablesql); + String tablename = ""; + if (rd.next()) { + tablename = rd.getString("TABLENAME"); + billid = rd.getInt("billid"); + + String selectSql = String.join(",", filedNameList); + String querySql = "select " + selectSql + " from " + tablename + " where requestid = '" + nodeOperator.getRequestId() + "'"; + rd.executeQuery(querySql); + if (rd.next()) { + for (String tempname : filedNameList) { + paramMap.put(tempname, Util.null2String(rd.getString(tempname))); + } + } + } + + String sqlSelectLabel="select wb.FIELDNAME, hb.LABELNAME " + + "from workflow_billfield wb left join htmllabelinfo hb on hb.INDEXID = wb.FIELDLABEL " + + "where wb.BILLID = ? and hb.languageid=?"; + + RecordSet queryLabel=new RecordSet(); + queryLabel.executeQuery(sqlSelectLabel,billid, nodeOperator.getLanguage()); + + Map labelMap = new HashMap<>(); + while (queryLabel.next()){ + String fieldname = queryLabel.getString("FIELDNAME"); + String labelname = queryLabel.getString("LABELNAME"); + labelMap.put(fieldname,labelname); + } + + Map> selectItemMap = mapSelectItem(billid); // 选择框选项 + Map liulanMap = mapLiuLan(billid); // 浏览按钮 + Map commonLiuLanMap = mapCommonLiuLan(billid); // 浏览按钮 + Set checkSet = getCheckFieldName(billid); // check字段 + Set fileFieldSet = getFileFieldSet(billid); // 文件字段 + + writeLog("》》》 select item >> "+ JSON.toJSONString(selectItemMap)); + writeLog("》》》 liulanMap >> "+ JSON.toJSONString(liulanMap)); + + for (String tempname : filedNameList) { + String labelName = labelMap.getOrDefault(tempname,tempname); + String value = paramMap.getOrDefault(tempname, ""); + if (!"".equals(value)){ + writeLog(">>> for tempname >> "+tempname); + + if (selectItemMap.containsKey(tempname)){ // 选择框 + writeLog("select item >> "+tempname+" >> "+value); + Map selectItem = selectItemMap.get(tempname); + String [] valueArray = value.split(","); + List valueList = new ArrayList<>(); + for (String tempValue : valueArray){ + String tempValueName = selectItem.getOrDefault(tempValue,tempValue); + valueList.add(tempValueName); + } + writeLog("> select item >> "+tempname+" >> "+valueList); + value = String.join(", ",valueList); + + } else if (checkSet.contains(tempname)){ // check字段 + writeLog("checkSet >> "+tempname+" >> "+value); + value= "1".equals(value) ? "Yes" : "No"; + + } else if (fileFieldSet.contains(tempname)){ // 附件字段 + writeLog("fileFieldSet >> "+tempname+" >> "+value); + List fileList = new ArrayList<>(); + RecordSet queryTemp = new RecordSet(); + queryTemp.executeQuery("select IMAGEFILENAME from docimagefile where docid in ("+value+")"); + while (queryTemp.next()){ + String tempValueName = queryTemp.getString("IMAGEFILENAME"); + fileList.add(tempValueName); + } + value = String.join(", ",fileList); + + } else if (liulanMap.containsKey(tempname)){ //自定义浏览框 + String searchById = liulanMap.get(tempname); + writeLog("liulanMap >> "+tempname+" >> "+searchById); + String [] valueArray = value.split(","); + List valueList = new ArrayList<>(); + RecordSet queryTemp = new RecordSet(); + + for (String tempValue : valueArray){ + writeLog("liulanMap >> "+tempname+" >> "+searchById+" >> "+tempValue); + queryTemp.executeQuery(searchById,tempValue); + if (queryTemp.next()){ + String tempValueName = queryTemp.getString(1); + writeLog("query reuslt "); + valueList.add(tempValueName); + }else { + writeLog("query reuslt null"); + } + } + value = String.join(", ",valueList); + + } else if (commonLiuLanMap.containsKey(tempname)){ // 公共浏览框类型 + String fieldType = commonLiuLanMap.get(tempname); + writeLog("commonLiuLanMap >> "+tempname+" >> "+fieldType + " >>value= "+value); + + RecordSet queryTemp = new RecordSet(); + + switch (fieldType){ + case "1": // 单选人力 + queryTemp.executeQuery("select LASTNAME from hrmresource h where id =?",value); + if (queryTemp.next()){ + value = Util.null2String(queryTemp.getString("LASTNAME")); + } + break; + + case "17": // 多选人力 + queryTemp.executeQuery("select LASTNAME from hrmresource h where id in ("+value+")"); + List valueList = new ArrayList<>(); + while (queryTemp.next()){ + valueList.add(Util.null2String(queryTemp.getString("LASTNAME"))); + } + writeLog("user list >> "+ JSON.toJSONString(valueList)); + value = String.join(", ",valueList); + break; + + case "4": // 单选部门 + queryTemp.executeQuery("select DEPARTMENTNAME from hrmdepartment where id=?",value); + if (queryTemp.next()){ + value = Util.null2String(queryTemp.getString("DEPARTMENTNAME")); + } + break; + + case "57": // 多选部门 + queryTemp.executeQuery("select DEPARTMENTNAME from hrmdepartment where id in ("+value+")"); + List valueList2 = new ArrayList<>(); + while (queryTemp.next()){ + valueList2.add(Util.null2String(queryTemp.getString("DEPARTMENTNAME"))); + } + writeLog("dep lis is >> "+ JSON.toJSONString(valueList2)); + value = String.join(", ",valueList2); + break; + + case "16": // 单选流程 + queryTemp.executeQuery("select REQUESTNAME from workflow_requestbase where REQUESTID =?",value); + if (queryTemp.next()){ + value = Util.null2String(queryTemp.getString("REQUESTNAME")); + } + break; + + case "152": // 多选流程 + queryTemp.executeQuery("select REQUESTNAME from workflow_requestbase where REQUESTID in ("+value+")"); + List valueList3 = new ArrayList<>(); + while (queryTemp.next()){ + valueList3.add(Util.null2String(queryTemp.getString("REQUESTNAME"))); + } + writeLog("request list >> "+ JSON.toJSONString(valueList3)); + value = String.join(", ",valueList3); + break; + } + + } else { + value = value.replace(" ", " "); + value = value.replace("
", " "); + } + } + writeLog("value123:"+value); + value = StringEscapeUtils.unescapeHtml4(value); + writeLog("value234:"+value); + cardJsonArray.add( + new JSONObject().fluentPut("name", labelName).fluentPut("value", value) + ); + } + } + + return cardJsonArray; + } + + // 选择框选项数据 + private Map> mapSelectItem(Integer billid){ + RecordSet query = new RecordSet(); + query.executeQuery("select a.FIELDNAME , b.SELECTVALUE , b.SELECTNAME from workflow_billfield a left join workflow_selectitem b on a.id=b.FIELDID where a.billid=? and a.fieldhtmltype=5 order by a.id",billid); + Map> map = new HashMap<>(); + while (query.next()){ + String fieldname = query.getString("FIELDNAME"); + String selectvalue = query.getString("SELECTVALUE"); + String selectname = query.getString("SELECTNAME"); + if (map.containsKey(fieldname)){ + map.get(fieldname).put(selectvalue,selectname); + }else{ + Map tempMap = new HashMap<>(); + tempMap.put(selectvalue,selectname); + map.put(fieldname,tempMap); + } + } + return map; + } + + // 勾选框字段名 + private Set getCheckFieldName(Integer billid){ + Set set = new HashSet<>(); + RecordSet query = new RecordSet(); + query.executeQuery("select FIELDNAME from workflow_billfield where BILLID =? and FIELDHTMLTYPE=4",billid); + while (query.next()){ + set.add(query.getString("FIELDNAME")); + } + return set; + } + + // 附件选择 + private Set getFileFieldSet(Integer billid){ + Set set = new HashSet<>(); + RecordSet query = new RecordSet(); + query.executeQuery("select FIELDNAME from workflow_billfield where BILLID =? and FIELDHTMLTYPE=6",billid); + while (query.next()){ + set.add(query.getString("FIELDNAME")); + } + return set; + } + + // 浏览按钮 + private Map mapLiuLan(Integer billid){ + RecordSet query = new RecordSet(); + Map map = new HashMap<>(); + query.executeQuery("select FIELDNAME, FIELDDBTYPE from workflow_billfield where BILLID =? and FIELDDBTYPE like 'browser.%'",billid); + while (query.next()){ + String fieldname = query.getString("FIELDNAME"); + String fielddbtpye = query.getString("FIELDDBTYPE"); + String showname = fielddbtpye.substring(8); + RecordSet query2 = new RecordSet(); + query2.executeQuery("select searchById from mode_browser where showname =?",showname); + if (query2.next()){ + String searchById = query2.getString("searchById"); + map.put(fieldname,searchById); + } + } + return map; + } + + // 公共浏览框类型 + private Map mapCommonLiuLan(Integer billid){ + Map map = new HashMap<>(); + RecordSet query = new RecordSet(); + query.executeQuery("select FIELDNAME, type from workflow_billfield wb where FIELDHTMLTYPE=3 and BILLID = ?",billid); + while (query.next()){ + String fieldname = query.getString("FIELDNAME"); + String fielddbtpye = query.getString("type"); + map.put(fieldname,fielddbtpye); + } + + return map; + } + + // 流程创建人 + private Map getRequestCreator(String requestid){ + Map map = new HashMap<>(); + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select h.LASTNAME, h.WORKCODE from workflow_requestbase a left join hrmresource h on h.id=a.CREATER where a.requestid = "+requestid); + if (recordSet.next()){ + map.put("name",recordSet.getString("LASTNAME")); + map.put("code",recordSet.getString("WORKCODE")); + } + return map; + } + + // 转发发送人 + private Map getTransByUser(NodeOperator nodeOperator) { + Map map = new HashMap<>(); + RecordSet recordSet = new RecordSet(); + String sql = "select RECEIVEDPERSONIDS,h.LASTNAME, h.WORKCODE from workflow_requestlog a left join hrmresource h on h.id=a.OPERATOR " + + "where REQUESTID ="+nodeOperator.getRequestId()+" and logtype=7 and a.RECEIVEDPERSONIDS like '%"+nodeOperator.getUserId()+"%' and a.OPERATEDATE ='"+nodeOperator.getReceiveDate()+"' and a.OPERATETIME ='"+nodeOperator.getReceiveTime()+"'"; + recordSet.executeQuery(sql); + outerLoop: + while (recordSet.next()){ + String ids = Util.null2String(recordSet.getString("RECEIVEDPERSONIDS")); + String [] idArray = ids.split(","); + for(int i = 0; i contentInfos = new ArrayList<>(); + contentInfos.add(contentInfo); + cardInfo.setContentInfos(contentInfos); + + recordSet.executeQuery("select pcxqdz, appxqdz from uf_cardifno_conf"); // 配置跳转地址 + if (recordSet.next()){ + ViewDetail viewDetail = new ViewDetail(); + String detailPcUrl = Util.null2String(recordSet.getString("pcxqdz")); + String detailAppUrl = Util.null2String(recordSet.getString("appxqdz")); + if (!"".equals(detailPcUrl)){ + viewDetail.setPcUrl(detailPcUrl + requestid); + } + if (!"".equals(detailAppUrl)){ + viewDetail.setAppUrl(detailAppUrl + requestid); + } + viewDetail.setOpenMethod("H5"); + + cardInfo.setViewDetailInfo(viewDetail); + } + + return cardInfo; + } + + + // 获取退回操作人 + public Map getRejectUser(NodeOperator nodeOperator){ + Map map = new HashMap<>(); + + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select h.WORKCODE, h.LASTNAME from workflow_currentoperator a left join hrmresource h on h.id=a.USERID " + + "where REQUESTID ="+nodeOperator.getRequestId()+" and operatetype =3 and a.userid=a.processUser order by OPERATEDATE desc ,operatetime desc"); + if (recordSet.next()){ + map.put("name",recordSet.getString("LASTNAME")); + map.put("code",recordSet.getString("WORKCODE")); + } + return map; + } + + // 处理节点 + public void submit(String requestname,String icon, List fieldNameList, String callAuth, NodeOperator nodeOperator,String warnMsg){ + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = null; + sendUserMap = getRequestCreator(nodeOperator.getRequestId()); + String senderCode = sendUserMap.get("code"); + + if ("1".equals(nodeOperator.getIsbereject())){ +// sendUserMap = getRejectUser(nodeOperator); + Map rejectUser = getRejectUser(nodeOperator); + senderCode = rejectUser.get("code"); + } /*else {*/ +// } + + if ("1".equals(nodeOperator.getIsbereject())){ + cardJsonArray.add( +// new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getReceiveDate() + " " + nodeOperator.getReceiveTime()) + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); + }else { + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); + } + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("submit casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + if (null != warnMsg && !"".equals(warnMsg)){ + cardInfo.setWarnMsg(warnMsg); + } + + // 添加按钮 + List buttonInfos = new ArrayList<>(); + boolean flag = hasNeccessryField(nodeOperator.getNodeId());//是否有必填字段 + boolean isreject = "1".equals(nodeOperator.getIsReject());//是否可拒绝 + + if (isreject){ // 审批节点 + if (flag){ // 有必填字段 + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Process"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Confirmed"); + + buttonInfos.add(btn1); + } else { + + /*按钮2*/ + ButtonInfo btn2 = new ButtonInfo(); + btn2.setName("Return"); + btn2.setColor("#E11900"); + btn2.setCallUrl(oaHost + "/api/workflow/paService/rejectRequest2"); + btn2.setCallMethod("POST"); + // 回调参数 + JSONObject callParam2 = new JSONObject(); + callParam2.put("requestId", nodeOperator.getRequestId()); + callParam2.put("workflowid", nodeOperator.getWorkflowId()); + btn2.setCallParam(callParam2.toJSONString()); + btn2.setCallAuth(callAuth); + btn2.setCallStatus("Returned"); + + buttonInfos.add(btn2); + + /*按钮1*/ + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Confirm"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Confirmed"); + + buttonInfos.add(btn1); + + } + + } else { // 处理节点 + if (flag){ // 有必填字段 + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Process"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Submitted"); + + buttonInfos.add(btn1); + }else{ + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Submit"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Submitted"); + + buttonInfos.add(btn1); + } + } + cardInfo.setButtonInfos(buttonInfos); + + TodoCardService.createTodoCard(senderCode, nodeOperator.getWorkCode(), 1, nodeOperator.getId(), cardInfo); + } + + + // 催办 + public void cuiban(String sendUserId, String requestname,String icon, List fieldNameList, String callAuth, NodeOperator nodeOperator,String warnMsg,String expandMsg){ + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = null; +// if ("1".equals(nodeOperator.getIsbereject())){ +// sendUserMap = getRejectUser(nodeOperator); +// } else { + sendUserMap = getRequestCreator(nodeOperator.getRequestId()); +// } + +// if ("1".equals(nodeOperator.getIsbereject())){ +// cardJsonArray.add( +// new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) +// ); +// }else { + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); +// } + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("submit casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + if (null != expandMsg && !"".equals(expandMsg)){ + expandMsg = expandMsg.replace(" "," "); + expandMsg = expandMsg.replace("

",""); + expandMsg = expandMsg.replace("

",""); + + + expandMsg = StringEscapeUtils.unescapeHtml4(expandMsg); + + cardInfo.setExpandMsg(expandMsg); + } + if (null != warnMsg && !"".equals(warnMsg)){ + cardInfo.setWarnMsg(warnMsg); + } + + // 添加按钮 + List buttonInfos = new ArrayList<>(); + boolean flag = hasNeccessryField(nodeOperator.getNodeId());//是否有必填字段 + boolean isreject = "1".equals(nodeOperator.getIsReject());//是否可拒绝 + + if (isreject){ // 审批节点 + if (flag){ // 有必填字段 + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Process"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Submitted"); + + buttonInfos.add(btn1); + } else { + + /*按钮2*/ + ButtonInfo btn2 = new ButtonInfo(); + btn2.setName("Return"); + btn2.setColor("#E11900"); + btn2.setCallUrl(oaHost + "/api/workflow/paService/rejectRequest2"); + btn2.setCallMethod("POST"); + // 回调参数 + JSONObject callParam2 = new JSONObject(); + callParam2.put("requestId", nodeOperator.getRequestId()); + callParam2.put("workflowid", nodeOperator.getWorkflowId()); + btn2.setCallParam(callParam2.toJSONString()); + btn2.setCallAuth(callAuth); + btn2.setCallStatus("Returned"); + + buttonInfos.add(btn2); + + /*按钮1*/ + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Confirm"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Confirmed"); + + buttonInfos.add(btn1); + + } + + } else { // 处理节点 + if (flag){ // 有必填字段 + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Process"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Submitted"); + + buttonInfos.add(btn1); + }else{ + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Submit"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + + btn1.setCallAuth(callAuth); + btn1.setCallStatus("Submitted"); + + buttonInfos.add(btn1); + } + } + cardInfo.setButtonInfos(buttonInfos); + + if (null == nodeOperator.getId() || "".equals(nodeOperator.getId())){ + nodeOperator.setId(UUID.randomUUID().toString()); + } + if (null != sendUserId && !"".equals(sendUserId)){ + RecordSet rs=new RecordSet(); + rs.executeQuery("select WORKCODE, LASTNAME from hrmresource where id=?",sendUserId); + if (rs.next()){ + String senderCode = rs.getString("WORKCODE"); + if (null != senderCode && !"".equals(senderCode)){ + TodoCardService.createTodoCard(senderCode, nodeOperator.getWorkCode(), 1, nodeOperator.getId(), cardInfo); + } + } + } + } + + // 抄送(需提交) + public void copySendNeedSubmit(String requestname,String icon, List fieldNameList, String callAuth, NodeOperator nodeOperator){ + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = getRequestCreator(nodeOperator.getRequestId()); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("copySendNeedSubmit casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + + List buttonInfos = new ArrayList<>(); + + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Submit"); + btn1.setCallStatus("Submitted"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + btn1.setCallAuth(callAuth); + buttonInfos.add(btn1); + + cardInfo.setButtonInfos(buttonInfos); + + TodoCardService.createTodoCard(sendUserMap.get("code"), nodeOperator.getWorkCode(), 1, nodeOperator.getId(), cardInfo); + } + + // 传阅 + public void chuanyue(String requestname,String icon, List fieldNameList, String callAuth, NodeOperator nodeOperator){ + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = getRequestCreator(nodeOperator.getRequestId()); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("chuanyue casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + TodoCardService.createTodoCard(nodeOperator.getWorkCode(), nodeOperator.getWorkCode(), 1, nodeOperator.getId(), cardInfo); + } + + // 抄送 抄送(不需提交) + public void copySend(String requestname,String icon, List fieldNameList, String callAuth, NodeOperator nodeOperator){ + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = getRequestCreator(nodeOperator.getRequestId()); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("copySend casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + + TodoCardService.createTodoCard(sendUserMap.get("code"), nodeOperator.getWorkCode(), 1, nodeOperator.getId(), cardInfo); + } + + // 评论催办类型 + public void shareCard(String sendUserId, String requestname,String icon, List fieldNameList, NodeOperator nodeOperator, String expandMsg,String warnMsg){ + writeLog("11>> share card expanmsg> "+expandMsg + " warmsgn > "+warnMsg); + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = getRequestCreator(nodeOperator.getRequestId()); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getReceiveDate() + " " + nodeOperator.getReceiveTime()) + ); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("copySend casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + if (null != expandMsg && !"".equals(expandMsg)){ + expandMsg = expandMsg.replace(" "," "); + expandMsg = StringEscapeUtils.unescapeHtml4(expandMsg); + cardInfo.setExpandMsg(expandMsg); // 附件信息 + } + if (null != warnMsg &&!"".equals(warnMsg)){ + cardInfo.setWarnMsg(warnMsg); + } + + String receiveCode = getCodeByUserid(nodeOperator.getUserId()); + + if (null == nodeOperator.getId() || "".equals(nodeOperator.getId())){ + nodeOperator.setId(UUID.randomUUID().toString()); + } + if (null != sendUserId && !"".equals(sendUserId)){ + RecordSet rs=new RecordSet(); + rs.executeQuery("select WORKCODE, LASTNAME from hrmresource where id=?",sendUserId); + if (rs.next()){ + String senderCode = rs.getString("WORKCODE"); + if (null != senderCode && !"".equals(senderCode)){ + TodoCardService.createTodoCard(senderCode, receiveCode, 1, nodeOperator.getId(), cardInfo); + } + } + } + } + + public String getCodeByUserid(String userid){ + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select WORKCODE from hrmresource where id ="+userid); + if (recordSet.next()){ + return recordSet.getString("WORKCODE"); + } + return ""; + } + + + // 转发卡片信息 + public void transformCardInfo(String requestname,String icon, List fieldNameList, String callAuth, NodeOperator nodeOperator){ + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = getTransByUser(nodeOperator); + + Map createUserMap = getRequestCreator(nodeOperator.getRequestId()); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", createUserMap.get("name")) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("transfer casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + + List buttonInfos = new ArrayList<>(); + + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Submit"); + btn1.setCallStatus("Submitted"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + btn1.setCallAuth(callAuth); + buttonInfos.add(btn1); + + cardInfo.setButtonInfos(buttonInfos); + + TodoCardService.createTodoCard(sendUserMap.get("code"), nodeOperator.getWorkCode(), 1, nodeOperator.getId(), cardInfo); + } + + public void sendSignCardInfo(String requestname,String icon, List fieldNameList, String callAuth, NodeOperator nodeOperator){ + + JSONArray cardJsonArray = getCardParam(fieldNameList, requestname, nodeOperator); + Map sendUserMap = getTransByUser(nodeOperator); + + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", sendUserMap.get("name")) + ); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", nodeOperator.getCreateDate() + " " + nodeOperator.getCreateTime()) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("transfer casrdifno :: " + cardData); + + CardInfo cardInfo = baseCardInfo(requestname,"", icon, cardData, nodeOperator.getRequestId()); + + List buttonInfos = new ArrayList<>(); + + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName("Submit"); + btn1.setCallStatus("Submitted"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", nodeOperator.getRequestId()); + callParam.put("workflowid", nodeOperator.getWorkflowId()); + btn1.setCallParam(callParam.toJSONString()); + btn1.setCallAuth(callAuth); + buttonInfos.add(btn1); + + cardInfo.setButtonInfos(buttonInfos); + + TodoCardService.createTodoCard(sendUserMap.get("code"), nodeOperator.getWorkCode(), 1, nodeOperator.getId(), cardInfo); + } + + + +} diff --git a/src/com/customization/wfTodoCard/impl/ReplaceZhuanBan.java b/src/com/customization/wfTodoCard/impl/ReplaceZhuanBan.java new file mode 100644 index 00000000..2328ee29 --- /dev/null +++ b/src/com/customization/wfTodoCard/impl/ReplaceZhuanBan.java @@ -0,0 +1,145 @@ +package com.customization.wfTodoCard.impl; + +import com.customization.wfTodoCard.service.CheckSendCardService; +import com.weaverboot.frame.ioc.anno.classAnno.WeaIocReplaceComponent; +import com.weaverboot.frame.ioc.anno.methodAnno.WeaReplaceAfter; +import com.weaverboot.frame.ioc.handler.replace.weaReplaceParam.impl.WeaAfterReplaceParam; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.nodes.Node; +import org.jsoup.nodes.TextNode; +import org.jsoup.select.Elements; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; +import weaver.workflow.request.RequestSignRelevanceWithMe; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.concurrent.CompletableFuture; + + +@WeaIocReplaceComponent +public class ReplaceZhuanBan extends BaseBean { + + /* + * 转办发送卡片数据 + * */ + @WeaReplaceAfter(value = "/api/workflow/reqform/remarkOperate",order = 1) + public String execute(WeaAfterReplaceParam weaAfterReplaceParam){ + HttpServletRequest request = weaAfterReplaceParam.getRequest(); + + //获取请求参数 + String requestid = Util.null2String(request.getParameter("requestid"),""); + String forwardflag = Util.null2String(request.getParameter("forwardflag"),""); // 转发标记=3 + if ("".equals(requestid) || "-1".equals(requestid) || !"3".equals(forwardflag)){ + return weaAfterReplaceParam.getData(); + } + + String isSendCard = Util.null2String(request.getParameter("isSendCard"),""); // 是否发送消息 + String field5 = Util.null2String(request.getParameter("field5"),""); // 接收人id + String remark; + if (isSendCard.equals("1")){ + remark = Util.null2String(request.getParameter("remark"),""); // 评论数据 + } else { + remark = ""; + } + + + if ("".equals(field5)){ + return weaAfterReplaceParam.getData(); + } + + User user = HrmUserVarify.getUser(request , weaAfterReplaceParam.getResponse()) ; + String shareuserid = String.valueOf(user.getUID()); + writeLog("shareuserid>> "+shareuserid); + + try { + CompletableFuture.runAsync(()->{ + try { + String sendMsg = ""; + if (!"".equals(remark)){ + Document doc = Jsoup.parse(remark); + // 选择所有的

标签 + Elements pTags = doc.select("p"); + + for (int i = 0; i < pTags.size(); i++) { + Element pTag = pTags.get(i); + // 获取

标签内的子节点列表 + List childNodes = pTag.clone().childNodes(); + // 按顺序将子节点插入到

标签的位置 + for (int j = childNodes.size() - 1; j >= 0; j--) { + pTag.after(childNodes.get(j)); + } + // 移除

标签 + pTag.remove(); + } + // 选择所有的 标签 + Elements aTags = doc.select("a"); + for (int i = 0; i < aTags.size(); i++) { + Element aTag = aTags.get(i); + // 获取 atsome-name 属性值作为人名 + String name = aTag.attr("atsome-name"); + if (!name.isEmpty()) { + // 创建文本节点 + TextNode textNode = new TextNode("@" + name, doc.baseUri()); + // 在 标签后面插入文本节点 + aTag.after(textNode); + // 移除 标签 + aTag.remove(); + } + } + sendMsg = doc.body().html(); + } + + writeLog("====》 shareuser id is ::: " + shareuserid); + RecordSet query = new RecordSet(); + query.executeQuery("select CREATER from workflow_requestbase a where REQUESTID =?", requestid); + String creator = ""; + if (query.next()) { + creator = query.getString("CREATER"); + } + String [] uids = field5.split(","); + for (String uid : uids) { + query.executeQuery("select id,NODEID, ISCOMPLETE from workflow_currentoperator where HANDLEFORWARDID is not null and ISLASTTIMES =1 and REQUESTID =? and USERID =?", requestid, uid); + if (query.next()) { + Integer cid = query.getInt("id"); + Integer nodeid = query.getInt("NODEID"); + String iscomplete = query.getString("ISCOMPLETE"); + String language = ""; + query.executeQuery("select systemlanguage from hrmresource h where id=?", uid); + if (query.next()) { + language = query.getString("systemlanguage"); + } + boolean complete = "1".equals(iscomplete); + new CheckSendCardService().checkSendRequestCardInfo(cid, Integer.parseInt(requestid), nodeid, Integer.parseInt(uid), "1", language, complete,false, true,sendMsg, shareuserid, null); + } + } + + RequestSignRelevanceWithMe reqsignwm = new RequestSignRelevanceWithMe(); + List atResourceids = reqsignwm.parseRemark(remark); + + for (String atResourceid : atResourceids) { + new CheckSendCardService().sendShareCard(creator, atResourceid, String.valueOf(requestid),"",sendMsg,null); + } + + }catch (Exception e){ + writeLog("sync task send zhuanban error>> "+e.getMessage()); + } + }); + + + }catch (Exception e){ + writeLog("send zhuanban error >> "+e.getMessage(), e); + } + + //将原有接口报文返回 + return weaAfterReplaceParam.getData(); + + } + + +} diff --git a/src/com/customization/wfTodoCard/service/CardUserInfoService.java b/src/com/customization/wfTodoCard/service/CardUserInfoService.java new file mode 100644 index 00000000..b96010dd --- /dev/null +++ b/src/com/customization/wfTodoCard/service/CardUserInfoService.java @@ -0,0 +1,28 @@ +package com.customization.wfTodoCard.service; + +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; + +public class CardUserInfoService extends BaseBean { + + public User getUserById(Integer uid){ + RecordSet rs=new RecordSet(); + rs.executeSql("select id,LOGINID,LASTNAME,SYSTEMLANGUAGE,EMAIL,LOCATIONID,SECLEVEL, " + + "DEPARTMENTID, SUBCOMPANYID1 from hrmresource where id="+uid); + if (rs.next()){ + User user=new User(); + user.setUid(rs.getInt("id")); + user.setLoginid(rs.getString("LOGINID")); + user.setLastname(rs.getString("LASTNAME")); + user.setEmail(Util.null2String(rs.getString("EMAIL"))); + user.setLocationid(Util.null2String(rs.getString("LOCATIONID"))); + user.setSeclevel(Util.null2String(rs.getString("SECLEVEL"))); + user.setUserDepartment(rs.getInt("DEPARTMENTID")); + user.setUserSubCompany1(Integer.parseInt(Util.null2String(rs.getString("SUBCOMPANYID1"),"0"))); + return user; + }else return null; + } + +} diff --git a/src/com/customization/wfTodoCard/service/CheckSendCardService.java b/src/com/customization/wfTodoCard/service/CheckSendCardService.java new file mode 100644 index 00000000..4770f7f5 --- /dev/null +++ b/src/com/customization/wfTodoCard/service/CheckSendCardService.java @@ -0,0 +1,1227 @@ +package com.customization.wfTodoCard.service; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.wfTodoCard.*; +import com.customization.wfTodoCard.entity.NodeOperator; +import com.customization.wfTodoCard.handle.CardInfoHandler; +import org.apache.axis2.databinding.types.xsd.ID; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; + +// 检查是否发送消息 +public class CheckSendCardService extends BaseBean { + + // 本系统地址域名部分 + String oaHost = getPropValue("workflowTodoCard", "oahost"); + String oaAuthKey = getPropValue("workflowTodoCard", "oaAuthKey"); + + String detailPcUrl = getPropValue("workflowTodoCard", "detailPcUrl"); + String detailAppUrl = getPropValue("workflowTodoCard", "detailAppUrl"); + + private CardInfoHandler cardInfoHandler = new CardInfoHandler(); + + + // 验证是否需要发送创建卡片消息 + /* + * 默认字段: Title, Creator, Create Time + * @param requestid 请求id + * @param nodeid 节点id + * @param readonly 是否抄送 + * @param iscomplete 是否归档 + * @param cid 操作记录id + * */ + public void checkSendRequestCardInfo(Integer ccid, Integer requestid, Integer nodeid, Integer receiverId, String logintype, String language, boolean iscomplete, boolean isShare,boolean isCuiban, String expandMsg,String shareUserId, String warnMsg) { + writeLog("check send cardifno >> des: "+expandMsg); + if (null != expandMsg && !"".equals(expandMsg)){ + expandMsg = expandMsg.replaceAll("\\n$", ""); + expandMsg = expandMsg.replaceAll("<[^>]+>", ""); + } + RecordSet rd = new RecordSet(); + rd.executeQuery("select WORKFLOWID, CREATER,REQUESTNAME, CREATETIME, CREATEDATE from workflow_requestbase where REQUESTID = '" + requestid + "'"); + if (!rd.next()) return; // 请求不存在 + + String workflowId = rd.getString("WORKFLOWID"); + String userid = rd.getString("CREATER"); + String requestName = rd.getString("REQUESTNAME"); + String createtime = rd.getString("CREATETIME"); + String createdate = rd.getString("CREATEDATE"); + + writeLog("cardifno >> workflowid = " + workflowId + " nodeid = " + nodeid); + rd.executeQuery("select id, WORKFLOWNAME, messageRemindScope, isMessageRemind,icon from workflow_base where id=?", workflowId); + rd.next(); + String isMessageRemind = rd.getString("isMessageRemind"); + if (!"1".equals(isMessageRemind)) { // 未开启消息提醒 + writeLog("workflow is not open message remind"); + return; + } + String icon = rd.getString("icon"); // 图标 + + String messageRemindScope = rd.getString("messageRemindScope"); + String ifMr = ""; // 是否默认配置 + String mainid=""; + if ("1".equals(messageRemindScope)){ // 指定点配置 + rd.executeQuery("select id, workflowid, nodeid, sfmr from uf_wftodocontent where workflowid =" + workflowId + " and nodeid =" + nodeid); + if (!rd.next()) { + writeLog("当前请求节点没有配置卡片消息, 去默认配置节点"); + return; + } + mainid = rd.getString("id"); + ifMr = rd.getString("sfmr"); + } else { // 走全局配置 + ifMr="1"; + } + + + if ("1".equals(ifMr)) { // 默认发送模板 + writeLog("use default send template"); + rd.executeQuery("select id from uf_wftodocontent where workflowid = '" + workflowId + "' and nodeid ='0'"); + if (!rd.next()) { + writeLog(">>>>>>>> no config node info , to default node >>>>>>>>>>>>>>>>>>>"); + sendDefault(ccid, workflowId, requestid, receiverId, logintype, language, iscomplete, isShare,isCuiban, expandMsg, shareUserId, warnMsg); + return; + } + writeLog(">>>>>>>>>>>>>> next 1"); + mainid = rd.getString("id"); + } + + List filedNameList = new ArrayList<>(); + rd.executeQuery("select fieldname from uf_wftodocontent_dt1 where mainid = '" + mainid + "' and selected =1 order by sort asc"); + while (rd.next()) { + String fieldname = rd.getString("fieldname"); + if (!fieldname.startsWith("sys_")) { + filedNameList.add(fieldname); + } + } + + /*组装接口返回请求头参数*/ + JSONArray callAuth = new JSONArray(); + callAuth.add( + new JSONObject().fluentPut("name", "weaver_userid").fluentPut("value", receiverId) + ); + callAuth.add( + new JSONObject().fluentPut("name", "usertoken").fluentPut("value", oaAuthKey) + ); + callAuth.add( + new JSONObject().fluentPut("name", "weaver_usertype").fluentPut("value", logintype==null?"1":logintype) + ); + callAuth.add( + new JSONObject().fluentPut("name", "weaver_userlanguage").fluentPut("value", language) + ); + String callAuthStr = callAuth.toJSONString(); // 接口认证请求头 + + // 当前节点处理人,即卡片接收人 + + if (isShare){ // 分享转发使用 + // 获取当前日期和时间 + LocalDateTime currentDateTime = LocalDateTime.now(); + + // 定义日期格式 + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + // 定义时间格式 + DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss"); + + // 格式化日期 + String dateString = currentDateTime.format(dateFormatter); + // 格式化时间 + String timeString = currentDateTime.format(timeFormatter); + NodeOperator nodeOperator = new NodeOperator(); + nodeOperator.setId(UUID.randomUUID().toString()); + nodeOperator.setRequestId(String.valueOf(requestid)); + nodeOperator.setUserId(String.valueOf(receiverId)); + nodeOperator.setWorkflowId(workflowId); + nodeOperator.setReceiveDate(dateString); + nodeOperator.setReceiveTime(timeString); + RecordSet rs = new RecordSet(); + rs.executeQuery("select systemlanguage from hrmresource where id=?", receiverId); + if (rs.next()){ + nodeOperator.setLanguage(rs.getString("systemlanguage")); + } + writeLog(" 1 >> cardinfo share card >> "+expandMsg); + cardInfoHandler.shareCard(shareUserId, requestName, icon, filedNameList, nodeOperator, expandMsg, warnMsg); + + }else if (isCuiban){ + NodeOperator nodeOperator = cardInfoHandler.getCardInfo(ccid); + if ("0".equals(nodeOperator.getIsremark())){ + cardInfoHandler.cuiban(shareUserId, requestName, icon, filedNameList, callAuthStr, nodeOperator, warnMsg, expandMsg); + } + + }else { + NodeOperator nodeOperator = cardInfoHandler.getCardInfo(ccid); + + //0:未操作;1:转发;2:已操作;4:归档;5:超时;8:抄送(不需提交);9:抄送(需提交);11:传阅;6:自动审批(审批中) + switch (nodeOperator.getIsremark()) { + case "0": + writeLog("未操作"); + cardInfoHandler.submit(requestName, icon, filedNameList, callAuthStr, nodeOperator, warnMsg); + break; + case "1": // 转发 + writeLog("转发"); + cardInfoHandler.transformCardInfo(requestName, icon, filedNameList, callAuthStr, nodeOperator); + break; + case "2": // 已操作 + writeLog("已操作"); + break; + case "4": // 归档 + writeLog("归档"); + cardInfoHandler.copySend(requestName, icon, filedNameList, callAuthStr, nodeOperator); + break; + case "5": // 超时 + writeLog("超时"); + break; + case "8": // 抄送(不需提交) + writeLog("抄送(不需提交)"); + cardInfoHandler.copySend(requestName, icon, filedNameList, callAuthStr, nodeOperator); + break; + case "9": // 抄送(需提交) + writeLog("抄送(需提交)"); + cardInfoHandler.copySendNeedSubmit(requestName, icon, filedNameList, callAuthStr, nodeOperator); + break; + case "11": // 传阅 + writeLog("传阅"); + cardInfoHandler.chuanyue(requestName, icon, filedNameList, callAuthStr, nodeOperator); + break; + case "6": // 自动审批(审批中) + writeLog("自动审批(审批中)"); + cardInfoHandler.chuanyue(requestName, icon, filedNameList, callAuthStr, nodeOperator); + break; + } + + } + + } + + + public void checkSendRequestCardInfo2_bak(Integer cid, Integer requestid, Integer nodeid, Integer receiverId, String logintype, String language, boolean iscomplete) { + RecordSet rd = new RecordSet(); + rd.executeQuery("select WORKFLOWID, CREATER,REQUESTNAME, CREATETIME, CREATEDATE from workflow_requestbase where REQUESTID = '" + requestid + "'"); + if (!rd.next()) return; // 没有开启提醒 + + String workflowId = rd.getString("WORKFLOWID"); + String userid = rd.getString("CREATER"); + String requestName = rd.getString("REQUESTNAME"); + String createtime = rd.getString("CREATETIME"); + String createdate = rd.getString("CREATEDATE"); + + writeLog("cardifno >> workflowid = " + workflowId + " nodeid = " + nodeid); + + String sql_workflow = "select isMessageRemind,icon from workflow_base where id='" + workflowId + "'"; + rd.executeQuery(sql_workflow); + rd.next(); + String isMessageRemind = rd.getString("isMessageRemind"); + if (!"1".equals(isMessageRemind)) { + writeLog("workflow is not open message remind"); + return; + } + String icon = rd.getString("icon"); // 图标 + + rd.executeQuery("select id, workflowid, nodeid, sfmr from uf_wftodocontent where workflowid =" + workflowId + " and nodeid =" + nodeid); + if (!rd.next()) { + writeLog("当前请求节点没有配置卡片消息, 去默认配置节点"); + sendDefault(cid, workflowId, requestid, receiverId, logintype, language, iscomplete, false,false,null, null,null); + return; + } + String mainid = rd.getString("id"); + String sfmr = rd.getString("sfmr"); + + List filedNameList = new ArrayList<>(); + + if ("1".equals(sfmr)) { // 默认发送模板 + writeLog("use default send template"); + rd.executeQuery("select id from uf_wftodocontent where workflowid = '" + workflowId + "' and nodeid ='0'"); + if (!rd.next()) { + sendDefault(cid, workflowId, requestid, receiverId, logintype, language, iscomplete,false, false,null, null,null); + return; + } + mainid = rd.getString("id"); + } + + rd.executeQuery("select fieldname from uf_wftodocontent_dt1 where mainid = '" + mainid + "' and selected =1 order by sort asc"); + while (rd.next()) { + String fieldname = rd.getString("fieldname"); + if (!fieldname.startsWith("sys_")) { + filedNameList.add(fieldname); + } + } + + // 发送人 + rd.executeQuery("select id, WORKCODE, LASTNAME from hrmresource where id='" + userid + "' and WORKCODE is not null and WORKCODE != ''"); + if (!rd.next()) { + return; + } + String senduser = rd.getString("WORKCODE"); + String creatorName = rd.getString("LASTNAME"); + writeLog("发送人数据>> " + senduser); + + // 接收人 + String receiveUserCode = ""; + rd.executeQuery("select id, WORKCODE from hrmresource where id='" + receiverId + "' and WORKCODE is not null and WORKCODE != ''"); + if (!rd.next()) { + return; + } + receiveUserCode = Util.null2String(rd.getString("WORKCODE")); + writeLog("receiver user is >> " + receiveUserCode + " receiverId = " + receiverId); + + /*会签类型:0-非会签;1-会签;2-依次逐个处理;3- 抄送不提交;4- 抄送提交*/ + String signordersql = "select b.SIGNORDER from workflow_currentoperator a left join workflow_groupdetail b on b.id=a.GROUPDETAILID " + + " where a.NODEID ='" + nodeid + "' and a.USERID ='" + receiverId + "' and a.REQUESTID =" + requestid; + rd.executeQuery(signordersql); + String signOrderType = "0"; + if (rd.next()) { + signOrderType = Util.null2String(rd.getString("SIGNORDER")); + } + + /*是否处理节点, 处理节点没有退回*/ + boolean isHandleNode = true; + String sqlHand = "select ISREJECT from workflow_nodebase where id=" + nodeid; + rd.executeQuery(sqlHand); + if (rd.next()) { + isHandleNode = !"1".equals(rd.getString("ISREJECT")); + } + + // 参数存储 + Map paramMap = new HashMap<>(); + + if (filedNameList.size() > 0) { + String queryTablesql = "select TABLENAME from workflow_base a inner join workflow_bill b on a.FORMID =b.ID where a.id = '" + workflowId + "'"; + rd.executeQuery(queryTablesql); + String tablename = ""; + if (rd.next()) { + tablename = rd.getString("TABLENAME"); + + String selectSql = String.join(",", filedNameList); + String querySql = "select " + selectSql + " from " + tablename + " where requestid = '" + requestid + "'"; + rd.executeQuery(querySql); + if (rd.next()) { + for (String tempname : filedNameList) { + paramMap.put(tempname, Util.null2String(rd.getString(tempname))); + } + } + } + } + + JSONArray cardJsonArray = new JSONArray(); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Title").fluentPut("value", requestName) + ); + + for (String tempname : filedNameList) { + cardJsonArray.add( + new JSONObject().fluentPut("name", tempname).fluentPut("value", paramMap.getOrDefault(tempname, "")) + ); + } + cardJsonArray.add( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", creatorName) + ); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Create Time").fluentPut("value", createdate + " " + createtime) + ); + String cardData = cardJsonArray.toJSONString(); + writeLog("卡片消息:: " + cardData); + + /* 卡片参数组装 */ + + TitleInfo titleInfo = new TitleInfo(); + titleInfo.setName(requestName); + titleInfo.setColor(""); + titleInfo.setIconName(icon); + + CardInfo cardInfo = new CardInfo(); + cardInfo.setTitleInfo(titleInfo); + + ContentInfo contentInfo = new ContentInfo(); + contentInfo.setType("keyInfo"); + contentInfo.setOrder(1); + contentInfo.setData(cardData); + List contentInfos = new ArrayList<>(); + contentInfos.add(contentInfo); + cardInfo.setContentInfos(contentInfos); + + /*view detail*/ + cardInfo.setViewDetailInfo(getViewDetail(requestid)); + + if (!iscomplete && !"3".equals(signOrderType)) { // 3是抄送不需要提交的 + + // 按钮 + List buttonInfos = new ArrayList<>(); + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName((isHandleNode || "2".equals(signOrderType) || "4".equals(signOrderType)) ? "Submit" : "Confirm"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", requestid); + callParam.put("workflowid", workflowId); + btn1.setCallParam(callParam.toJSONString()); + + JSONArray callAuth = new JSONArray(); + callAuth.add( + new JSONObject().fluentPut("name", "weaver_userid").fluentPut("value", receiverId) + ); + callAuth.add( + new JSONObject().fluentPut("name", "usertoken").fluentPut("value", oaAuthKey) + ); + callAuth.add( + new JSONObject().fluentPut("name", "weaver_usertype").fluentPut("value", logintype) + ); + callAuth.add( + new JSONObject().fluentPut("name", "weaver_userlanguage").fluentPut("value", language) + ); + btn1.setCallAuth(callAuth.toJSONString()); + if (isHandleNode || "4".equals(signOrderType)) { + btn1.setCallStatus("Submitted"); + } else { + btn1.setCallStatus("Confirmed"); + } + buttonInfos.add(btn1); + + if (!isHandleNode) { + ButtonInfo btn2 = new ButtonInfo(); + btn2.setName("Return"); + btn2.setColor("#E11900"); + btn2.setCallUrl(oaHost + "/api/workflow/paService/rejectRequest2"); + btn2.setCallMethod("POST"); + // 回调参数 + JSONObject callParam2 = new JSONObject(); + callParam2.put("requestId", requestid); + callParam2.put("workflowid", workflowId); + btn2.setCallParam(callParam2.toJSONString()); + JSONArray callAuth2 = new JSONArray(); + callAuth2.add( + new JSONObject().fluentPut("name", "weaver_userid").fluentPut("value", receiverId) + ); + callAuth2.add( + new JSONObject().fluentPut("name", "usertoken").fluentPut("value", oaAuthKey) + ); + callAuth2.add( + new JSONObject().fluentPut("name", "weaver_usertype").fluentPut("value", logintype) + ); + callAuth2.add( + new JSONObject().fluentPut("name", "weaver_userlanguage").fluentPut("value", language) + ); + btn2.setCallAuth(callAuth2.toJSONString()); + btn2.setCallStatus("Returned"); + + buttonInfos.add(btn2); + } + + cardInfo.setButtonInfos(buttonInfos); + } + writeLog("cardinfo >>>> " + JSON.toJSONString(cardInfo)); + TodoCardService.createTodoCard(senduser, receiveUserCode, 1, cid + "", cardInfo); + } + + /* + * 默认发送卡片,默认字段: Title, Creator, Create Time + * @param isShare 是否抄送,抄送不需要按钮 + * @param baseParam 基础参数 + * @param requestid 请求id + * */ + public void sendDefault(Integer cid, String workflowId, Integer requestid, Integer receiverId, String logintype, String language, boolean complete, boolean isShare,boolean isCuiban, String expandMsg, String shareUserId, String warnMsg) { + RecordSet rd = new RecordSet(); + writeLog(".............. this is send default >>>>>"); + + String sql1 = "select id, WORKFLOWNAME, isMessageRemind,icon from workflow_base where id='" + workflowId + "'"; + rd.executeQuery(sql1); + rd.next(); + String icon = rd.getString("icon"); + String isMessageRemind = rd.getString("isMessageRemind"); + if (!"1".equals(isMessageRemind)) { + writeLog("workflow is not open message remind"); + return; + } + rd.executeQuery("select WORKFLOWID, CREATER,REQUESTNAME, CREATETIME, CREATEDATE from workflow_requestbase where REQUESTID = '" + requestid + "'"); + if (!rd.next()) { + writeLog(">>>> no request info return"); + return; + } + + String requestName = rd.getString("REQUESTNAME"); + String createDate = rd.getString("CREATEDATE"); + String createTime = rd.getString("CREATETIME"); + + JSONArray callAuth = new JSONArray(); + callAuth.add( + new JSONObject().fluentPut("name", "weaver_userid").fluentPut("value", receiverId) + ); + callAuth.add( + new JSONObject().fluentPut("name", "usertoken").fluentPut("value", oaAuthKey) + ); + callAuth.add( + new JSONObject().fluentPut("name", "weaver_usertype").fluentPut("value", logintype) + ); + callAuth.add( + new JSONObject().fluentPut("name", "weaver_userlanguage").fluentPut("value", language) + ); + String callAuthStr = callAuth.toJSONString(); // 接口认证请求头 + + // 当前节点处理人,即卡片接收人 + + writeLog(".... start handder, isshare > "+isShare); + + if (isShare){ +// NodeOperator nodeOperator = new NodeOperator(); +// nodeOperator.setRequestId(String.valueOf(requestid)); +// nodeOperator.setUserId(String.valueOf(receiverId)); +// nodeOperator.setWorkflowId(workflowId); +// cardInfoHandler.shareCard(shareUserId, requestName, icon, null, nodeOperator,expandMsg, warnMsg); + // 获取当前日期和时间 + LocalDateTime currentDateTime = LocalDateTime.now(); + + // 定义日期格式 + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + // 定义时间格式 + DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss"); + + // 格式化日期 + String dateString = currentDateTime.format(dateFormatter); + // 格式化时间 + String timeString = currentDateTime.format(timeFormatter); + NodeOperator nodeOperator = new NodeOperator(); + nodeOperator.setId(UUID.randomUUID().toString()); + nodeOperator.setRequestId(String.valueOf(requestid)); + nodeOperator.setUserId(String.valueOf(receiverId)); + nodeOperator.setWorkflowId(workflowId); + nodeOperator.setReceiveDate(dateString); + nodeOperator.setReceiveTime(timeString); + RecordSet rs = new RecordSet(); + rs.executeQuery("select systemlanguage from hrmresource where id=?", receiverId); + if (rs.next()){ + nodeOperator.setLanguage(rs.getString("systemlanguage")); + } + writeLog(" 1 >> cardinfo share card >> "+expandMsg); + cardInfoHandler.shareCard(shareUserId, requestName, icon, null, nodeOperator,expandMsg, warnMsg); + + }else if (isCuiban){ + NodeOperator nodeOperator = cardInfoHandler.getCardInfo(cid); + if ("0".equals(nodeOperator.getIsremark())){ + cardInfoHandler.cuiban(shareUserId, requestName, icon, null, callAuthStr, nodeOperator, warnMsg, expandMsg); + } + }else { + NodeOperator nodeOperator = cardInfoHandler.getCardInfo(cid); + writeLog("... start switch >> isremark is ::: "+nodeOperator.getIsremark()); + //0:未操作;1:转发;2:已操作;4:归档;5:超时;8:抄送(不需提交);9:抄送(需提交);11:传阅;6:自动审批(审批中) + switch (nodeOperator.getIsremark()) { + case "0": + writeLog("未操作"); + cardInfoHandler.submit(requestName, icon, null, callAuthStr, nodeOperator, warnMsg); + break; + case "1": // 转发 + writeLog("转发"); + cardInfoHandler.transformCardInfo(requestName, icon, null, callAuthStr, nodeOperator); + break; + case "2": // 已操作 + writeLog("已操作"); + break; + case "4": // 归档 + writeLog("归档"); + cardInfoHandler.copySend(requestName, icon, null, callAuthStr, nodeOperator); + break; + case "5": // 超时 + writeLog("超时"); + break; + case "8": // 抄送(不需提交) + writeLog("抄送(不需提交)"); + cardInfoHandler.copySend(requestName, icon, null, callAuthStr, nodeOperator); + break; + case "9": // 抄送(需提交) + writeLog("抄送(需提交)"); + cardInfoHandler.copySendNeedSubmit(requestName, icon, null, callAuthStr, nodeOperator); + break; + case "11": // 传阅 + writeLog("传阅"); + cardInfoHandler.chuanyue(requestName, icon, null, callAuthStr, nodeOperator); + break; + case "6": // 自动审批(审批中) + writeLog("自动审批(审批中)"); + cardInfoHandler.chuanyue(requestName, icon, null, callAuthStr, nodeOperator); + break; + } + } + + + } + + public void sendDefault2(Integer cid, String workflowId, Integer requestid, Integer nodeid, Integer sendUserId, Integer receiverId, String logintype, String language, boolean complete) { + RecordSet rd = new RecordSet(); + + String sql1 = "select id, WORKFLOWNAME, isMessageRemind,icon from workflow_base where id='" + workflowId + "'"; + rd.executeQuery(sql1); + rd.next(); + + String icon = rd.getString("icon"); + + // 发送人 + rd.executeQuery("select id, WORKCODE, LASTNAME from hrmresource where id='" + sendUserId + "' and WORKCODE is not null and WORKCODE != ''"); + if (!rd.next()) { + writeLog("发送人没有workcode"); + return; + } + String senduser = rd.getString("WORKCODE"); + String creatorName = rd.getString("LASTNAME"); + writeLog("发送人数据>> " + senduser); + + // 接收人 + String receiveUserCode = ""; + rd.executeQuery("select id, WORKCODE from hrmresource where id='" + receiverId + "' and WORKCODE is not null and WORKCODE != ''"); + if (!rd.next()) { + return; + } + receiveUserCode = Util.null2String(rd.getString("WORKCODE")); + writeLog("receiver user is >> " + receiveUserCode + " receiverId = " + receiverId); + + /*判断是否会签*/ + /*会签类型:0-非会签;1-会签;2-依次逐个处理;3- 抄送不提交;4- 抄送提交*/ + String signordersql = "select b.SIGNORDER from workflow_currentoperator a left join workflow_groupdetail b on b.id=a.GROUPDETAILID " + + " where a.NODEID ='" + nodeid + "' and a.USERID ='" + receiverId + "' and a.REQUESTID =" + requestid; + rd.executeQuery(signordersql); + String signOrderType = "0"; + if (rd.next()) { + signOrderType = Util.null2String(rd.getString("SIGNORDER")); + } + + /*是否处理节点*/ + boolean isHandleNode = true; + String sqlHand = "select ISREJECT from workflow_nodebase where id=" + nodeid; + rd.executeQuery(sqlHand); + if (rd.next()) { + isHandleNode = !"1".equals(rd.getString("ISREJECT")); + } + + rd.executeQuery("select WORKFLOWID, CREATER,REQUESTNAME, CREATETIME, CREATEDATE from workflow_requestbase where REQUESTID = '" + requestid + "'"); + if (!rd.next()) { + return; + } + + String requestName = rd.getString("REQUESTNAME"); + String createDate = rd.getString("CREATEDATE"); + String createTime = rd.getString("CREATETIME"); + String dateTime = createDate + " " + createTime; + + TitleInfo titleInfo = new TitleInfo(); + titleInfo.setName(requestName); + titleInfo.setColor(""); + titleInfo.setIconName(icon); + + CardInfo cardInfo = new CardInfo(); + cardInfo.setTitleInfo(titleInfo); + + JSONArray cardJsonArray = new JSONArray(); + cardJsonArray.add( + new JSONObject().fluentPut("name", "Title").fluentPut("value", requestName) + ); + + cardJsonArray.fluentAdd( + new JSONObject().fluentPut("name", "Creator").fluentPut("value", creatorName) + ).fluentAdd( + new JSONObject().fluentPut("name", "CreateTime").fluentPut("value", dateTime) + ); + ContentInfo contentInfo = new ContentInfo(); + contentInfo.setType("keyInfo"); + contentInfo.setOrder(1); + contentInfo.setData(cardJsonArray.toJSONString()); + + List contentInfos = new ArrayList<>(); + contentInfos.add(contentInfo); + cardInfo.setContentInfos(contentInfos); + + /*view detail*/ + cardInfo.setViewDetailInfo(getViewDetail(requestid)); + + if (!complete && !"3".equals(signOrderType)) { // 3是抄送不需要提交的 + + // 按钮 + List buttonInfos = new ArrayList<>(); + ButtonInfo btn1 = new ButtonInfo(); + btn1.setName(isHandleNode || "2".equals(signOrderType) || "4".equals(signOrderType) ? "Submit" : "Confirm"); + btn1.setColor("#4477EE"); + btn1.setCallUrl(oaHost + "/api/workflow/paService/submitRequest2"); + btn1.setCallMethod("POST"); + // 回调参数 + JSONObject callParam = new JSONObject(); + callParam.put("requestId", requestid); + callParam.put("workflowid", workflowId); + btn1.setCallParam(callParam.toJSONString()); + + JSONArray callAuth = new JSONArray(); + callAuth.add( + new JSONObject().fluentPut("name", "weaver_userid").fluentPut("value", receiverId) + ); + callAuth.add( + new JSONObject().fluentPut("name", "usertoken").fluentPut("value", oaAuthKey) + ); + callAuth.add( + new JSONObject().fluentPut("name", "weaver_usertype").fluentPut("value", logintype) + ); + callAuth.add( + new JSONObject().fluentPut("name", "weaver_userlanguage").fluentPut("value", language) + ); + btn1.setCallAuth(callAuth.toJSONString()); + if (isHandleNode || "4".equals(signOrderType)) { + btn1.setCallStatus("Submitted"); + } else { + btn1.setCallStatus("Confirmed"); + } + buttonInfos.add(btn1); + + if (!isHandleNode) { + + ButtonInfo btn2 = new ButtonInfo(); + btn2.setName("Return"); + btn2.setColor("#E11900"); + btn2.setCallUrl(oaHost + "/api/workflow/paService/rejectRequest2"); + btn2.setCallMethod("POST"); + // 回调参数 + JSONObject callParam2 = new JSONObject(); + callParam2.put("requestId", requestid); + callParam2.put("workflowid", workflowId); + btn2.setCallParam(callParam2.toJSONString()); + JSONArray callAuth2 = new JSONArray(); + callAuth2.add( + new JSONObject().fluentPut("name", "weaver_userid").fluentPut("value", receiverId) + ); + callAuth2.add( + new JSONObject().fluentPut("name", "usertoken").fluentPut("value", oaAuthKey) + ); + callAuth2.add( + new JSONObject().fluentPut("name", "weaver_usertype").fluentPut("value", logintype) + ); + callAuth2.add( + new JSONObject().fluentPut("name", "weaver_userlanguage").fluentPut("value", language) + ); + btn2.setCallAuth(callAuth2.toJSONString()); + btn2.setCallStatus("Returned"); + + buttonInfos.add(btn2); + } + + cardInfo.setButtonInfos(buttonInfos); + } + writeLog("cardinfo >>>> " + JSON.toJSONString(cardInfo)); + TodoCardService.createTodoCard(senduser, receiveUserCode, 1, cid + "", cardInfo); + } + + + // 发送更新的卡片消息 + public void sendUpdateCardInfo(Integer cid, String requeststatus) { + RecordSet rs = new RecordSet(); + String sql = "select a.id,h.LASTNAME, h.WORKCODE,a.REQUESTID, a.WORKFLOWID, a.NODEID ,a.ISCOMPLETE , a.USERID , a.processUser, a.RECEIVEDATE, a.RECEIVETIME ,a.preisremark, a.isremark ,a.operatetype, a.HANDLEFORWARDID , wg.SIGNORDER , n.ISSTART, n.ISREJECT , n.ISEND " + + "from workflow_currentoperator a left join workflow_nodebase n on n.id=a.nodeid left join hrmresource h on h.id=a.USERID left join workflow_groupdetail wg on wg.id=a.GROUPDETAILID " + + "where a.id=" + cid; + // 假设您已经执行了查询并获得了ResultSet对象 + rs.executeQuery(sql); + // 检查是否有结果 + if (!rs.next()) return; + + // 使用getString方法获取字段值 + String id = Util.null2String(rs.getString("id")); + String lastName = Util.null2String(rs.getString("LASTNAME")); + String workCode = Util.null2String(rs.getString("WORKCODE")); + String requestId = Util.null2String(rs.getString("REQUESTID")); + String workflowId = Util.null2String(rs.getString("WORKFLOWID")); + String nodeId = Util.null2String(rs.getString("NODEID")); + String userId = Util.null2String(rs.getString("USERID")); + String processUser = Util.null2String(rs.getString("processUser")); + String receiveDate = Util.null2String(rs.getString("RECEIVEDATE")); + String receiveTime = Util.null2String(rs.getString("RECEIVETIME")); + String preisRemark = Util.null2String(rs.getString("preisremark")); + String isRemark = Util.null2String(rs.getString("isremark")); + String operateType = Util.null2String(rs.getString("operatetype")); + String handleForwardId = Util.null2String(rs.getString("HANDLEFORWARDID")); + String signOrder = Util.null2String(rs.getString("SIGNORDER")); // 0:非会签,1:会签,2:依次逐个签 3:抄送不需提交 4:抄送需提交 + String isStart = Util.null2String(rs.getString("ISSTART")); + String isReject = Util.null2String(rs.getString("ISREJECT")); + String isEnd = Util.null2String(rs.getString("ISEND")); + String iscomplete = Util.null2String(rs.getString("ISCOMPLETE")); + + + if ("1".equals(isStart) ){ // 开始节点 + return; + } + + RecordSet query = new RecordSet(); + query.executeQuery("select CURRENTNODEID, CURRENTNODETYPE, status from workflow_requestbase wr where REQUESTID =?",requestId); + if (!query.next()){ + return; + } + String currentType = Util.null2String(query.getString("CURRENTNODETYPE")); + String status = Util.null2String(query.getString("status")); + + // 类型是归档,判断是否强制归档 + if ("3".equals(currentType)){ + query.executeQuery("select OPERATETYPE from workflow_requestoperatelog where REQUESTID = ? and NODEID = ? and OPERATORID=? order by id desc", requestId, nodeId, processUser); + if (query.next()){ + String operateType1 = Util.null2String(query.getString("OPERATETYPE")); + if ("forceover".equals(operateType1)){ // 是强制收回 +// if ("1".equals(processUser)){ + TodoCardService.updateTodoCard(workCode, String.valueOf(cid), "Processed by Administrator"); + +// }else { +// query.executeQuery("select LASTNAME from hrmresource where id=?", processUser); +// if (query.next()) { +// String processUserName = Util.null2String(query.getString("LASTNAME")); +// TodoCardService.updateTodoCard(workCode, String.valueOf(cid),"Processed by " + processUserName); +// } +// } + return; + } + } + } + + /*强制干预*/ + if (requeststatus.contains("特送至")){ +// if ("1".equals(processUser)){ + TodoCardService.updateTodoCard(workCode, String.valueOf(cid), "Processed by Administrator"); +// }else{ +// query.executeQuery("select LASTNAME from hrmresource where id= ?", processUser); +// if (query.next()){ +// String processUserName = Util.null2String(query.getString("LASTNAME")); +// TodoCardService.updateTodoCard(workCode, String.valueOf(cid), "Processed by "+processUserName); +// } +// } + return; + + } + + if ("8".equals(preisRemark) ||"6".equals(preisRemark) || "11".equals(preisRemark)){ + return; + } + + RecordSet rsTemp =new RecordSet(); + + if ("2".equals(isRemark)){ // 处理 + if (operateType.equals("3")){ // 退回 + if (userId.equals(processUser)){ + TodoCardService.updateTodoCard(workCode, cid + "", "Returned"); + } else { + rsTemp.executeQuery("select lastname from hrmresource where id="+processUser); + if (rsTemp.next()){ + String processUserName = Util.null2String(rsTemp.getString("LASTNAME")); + TodoCardService.updateTodoCard(workCode, cid + "", "Returned by " + processUserName); + } + } + }else if (operateType.equals("4")){ // 撤回 + + rsTemp.executeQuery("select h.LASTNAME from workflow_requestbase a left join hrmresource h on h.id=a.CREATER where a.REQUESTID ="+requestId); + if (rsTemp.next()){ + String processUserName = Util.null2String(rsTemp.getString("LASTNAME")); + TodoCardService.updateTodoCard(workCode, cid + "", "Recalled by "+processUserName); + } + + } else if ("".equals(processUser)){ // 没有处理人,判断是不是转办 + rsTemp.executeQuery("select h.LASTNAME from workflow_currentoperator a left join hrmresource h on h.id= a.USERID where HANDLEFORWARDID ="+id); + if (rsTemp.next()){ // 存在转办 + String name = Util.null2String(rsTemp.getString("LASTNAME")); + TodoCardService.updateTodoCard(workCode, cid + "", "Transferred to "+name); + }else { + TodoCardService.updateTodoCard(workCode, cid + "", "Submitted"); + } + } else { // 正常提交处理 + if (!userId.equals(processUser)){ + /*判断是否有强制干预*/ + rsTemp.executeQuery("select LOGID from workflow_requestlog wr where REQUESTID ="+requestId+" and LOGTYPE ='i' and OPERATOR ="+processUser); + if (rsTemp.next()){ // 存在强制干预 + TodoCardService.updateTodoCard(workCode, String.valueOf(cid), "Processed by Administrator"); + return; + } + } + + if ("1".equals(isReject)){ // 审批节点 + if (userId.equals(processUser)){ // 自己处理 + TodoCardService.updateTodoCard(workCode, cid + "", "Confirmed"); + + }else { // 他人处理 + rsTemp.executeQuery("select lastname from hrmresource where id="+processUser); + if (rsTemp.next()){ + String processUserName = Util.null2String(rsTemp.getString("LASTNAME")); + TodoCardService.updateTodoCard(workCode, cid + "", "Confirmed by " + processUserName); + } + } + }else { // 处理节点 + if (userId.equals(processUser)){ // 自己处理 + TodoCardService.updateTodoCard(workCode, cid + "", "Submitted"); + + }else { // 他人处理 + rsTemp.executeQuery("select lastname from hrmresource where id="+processUser); + if (rsTemp.next()){ + String processUserName = Util.null2String(rsTemp.getString("LASTNAME")); + TodoCardService.updateTodoCard(workCode, cid + "", "Submitted by " + processUserName); + } + } + } + } + } + } + + public void sendUpdateCardInfo_bak2(Integer cid) { + RecordSet rs = new RecordSet(); + + String sql = "select c.USERID,c.processUser,c.OPERATETIME, c.OPERATEDATE, c.REQUESTID , req.CURRENTNODEID , c.NODEID , c.isbereject, h.WORKCODE, h.LASTNAME , c.ISREJECT , node.ISREJECT nodereject, d.SIGNORDER " + + "from workflow_currentoperator c left join hrmresource h on h.id=c.USERID left join workflow_requestbase req on req.REQUESTID =c.REQUESTID left join workflow_nodebase node on node.id=c.NODEID left join workflow_groupdetail d on d.id=c.GROUPDETAILID " + + "where c.id=" + cid; + rs.executeQuery(sql); + if (!rs.next()) return; + + Integer userId = rs.getInt("USERID"); + Integer currentNodeId = rs.getInt("CURRENTNODEID"); + Integer nodeId = rs.getInt("NODEID"); + Integer processUser = rs.getInt("processUser"); + String userCode = Util.null2String(rs.getString("WORKCODE")); + String isreject = Util.null2String(rs.getString("ISREJECT")); + String nodeReject = Util.null2String(rs.getString("nodereject")); + String signorder = Util.null2String(rs.getString("SIGNORDER")); /*会签类型:0-非会签;1-会签;2-依次逐个处理;3- 抄送不提交;4- 抄送提交*/ + + if (currentNodeId.equals(nodeId)) { // 停留在当前节点 + String status = "Submitted"; + if (signorder.equals("3") || signorder.equals("4")) { + status = "Submitted"; + } else { + status = nodeReject.equals("1") ? "Confirmed" : "Submitted"; + } + TodoCardService.updateTodoCard(userCode, cid + "", status); + + } else { // 流转到下一个节点 + String status = ""; + if (userId.equals(processUser)) { // 处理人是自己 + + if ("1".equals(isreject)) { // 节点退回 + status = "Returned"; + } else { // 到下一节点 + status = nodeReject.equals("1") ? "Confirmed" : "Submitted"; + } + TodoCardService.updateTodoCard(userCode, cid + "", status); + + } else { // 处理人不是自己 + rs.executeQuery("select LASTNAME from hrmresource where id=" + processUser); + if (rs.next()) { + String proUsername = Util.null2String(rs.getString("LASTNAME")); + if ("1".equals(isreject)) { // 节点退回 + status = "Returned by " + proUsername; + } else { // 到下一节点 + status = nodeReject.equals("1") ? "Confirmed" : "Submitted"; + status = status + " by " + proUsername; + } + TodoCardService.updateTodoCard(userCode, cid + "", status); + } + } + } + } + + public ViewDetail getViewDetail(Integer requestid) { + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select pcxqdz, appxqdz from uf_cardifno_conf"); + if (recordSet.next()){ + ViewDetail viewDetail = new ViewDetail(); + String detailPcUrl = Util.null2String(recordSet.getString("pcxqdz")); + String detailAppUrl = Util.null2String(recordSet.getString("appxqdz")); + if (!"".equals(detailPcUrl)){ + viewDetail.setPcUrl(detailPcUrl + requestid); + } + if (!"".equals(detailAppUrl)){ + viewDetail.setAppUrl(detailAppUrl + requestid); + } + viewDetail.setOpenMethod("H5"); + return viewDetail; + } + return null; + } + + // 发送分享卡片消息 + public void sendShareCard(String sendUserId, String receiveUserIds, String requestid, String title, String description,String warnMsg) { + if (warnMsg != null && !"".equals(warnMsg)){ + warnMsg = warnMsg.replace(" "," "); + } + if (description != null && !"".equals(description)){ + description = description.replace(" "," "); + } + writeLog("send share card msg info >>>>> requestid = " + requestid + " title = " + title + " description = " + description + " sendUserId = " + sendUserId + " receiveUserIds = " + receiveUserIds); +// RecordSet recordSet = new RecordSet(); +// String sql = "select a.id, a.REQUESTID , a.WORKFLOWID ,a.NODEID, a.USERID " + +// "from workflow_currentoperator a left join hrmresource h on h.id=a.USERID where a.userid=? and a.REQUESTID =? " + +// "order by a.id desc"; + Integer nodeid = null; + RecordSet query = new RecordSet(); + query.executeQuery("select CURRENTNODEID from workflow_requestbase where REQUESTID = ?",requestid); + if (query.next()){ + nodeid = query.getInt("CURRENTNODEID"); + } + + String[] recIds = receiveUserIds.split(","); + for (String recId : recIds) { + /* recordSet.executeQuery(sql, recId, requestid); + if (recordSet.next()){ + Integer cid = recordSet.getInt("id"); + Integer REQUESTID = recordSet.getInt("REQUESTID"); + Integer NODEID = recordSet.getInt("NODEID"); + + this.checkSendRequestCardInfo(cid, REQUESTID, NODEID,Integer.parseInt(recId), null, null, false, true, description, sendUserId, warnMsg); + } else {*/ + this.checkSendRequestCardInfo(null, Integer.parseInt(requestid),nodeid,Integer.parseInt(recId), null, null, false, true, false,description, sendUserId, warnMsg); +// } + } + } + // 催办发送 + public void sendCuiban(String sendUserId, String receiveUserIds, String requestid, String title, String description,String warningMsg) { + writeLog("send share card msg info >>>>> requestid = " + requestid + " title = " + title + " description = " + description); + if (description != null && !"".equals(description)){ + description = description.replace(" "," "); + } + + String language = null; + RecordSet query = new RecordSet(); + query.executeQuery("select id, systemlanguage from hrmresource where id=?",sendUserId); + if (query.next()){ + language = Util.null2String(query.getString("systemlanguage")); + } + + RecordSet recordSet = new RecordSet(); + String sql = "select a.id, a.REQUESTID , a.WORKFLOWID ,a.NODEID, a.USERID " + + "from workflow_currentoperator a left join hrmresource h on h.id=a.USERID where a.userid=? and a.REQUESTID =? and a.isremark = 0 " + + "order by a.id desc"; + + String[] recIds = receiveUserIds.split(","); + for (String recId : recIds) { + recordSet.executeQuery(sql, recId, requestid); + if (recordSet.next()){ + Integer cid = recordSet.getInt("id"); + Integer REQUESTID = recordSet.getInt("REQUESTID"); + Integer NODEID = recordSet.getInt("NODEID"); + + writeLog("cuiban send cuiban >>> "+description); + this.checkSendRequestCardInfo(cid, REQUESTID, NODEID,Integer.parseInt(recId), null, language, false, false,true, description, sendUserId, warningMsg); + } + } + } + + + public void sendShareCard_bak(String sendUserId, String receiveUserIds, String requestid, String title, String description, String warnmsng) { + writeLog("send share card msg info >>>>> requestid = " + requestid + " title = " + title + " description = " + description); + RecordSet rd = new RecordSet(); + + rd.executeQuery("select a.REQUESTID, a.REQUESTNAME, b.WORKFLOWNAME, a.STATUS, b.icon, a.CREATER from workflow_requestbase a left join workflow_base b on a.WORKFLOWID =b.id " + + " where a.REQUESTID =" + requestid); + if (!rd.next()) { + writeLog("share card info > data is empty!!!"); + return; + } + + if (null == title || "".equals(title)){ + title = Util.null2String(rd.getString("REQUESTNAME")); + } + + TitleInfo titleInfo = new TitleInfo(); + titleInfo.setName(title); + titleInfo.setColor("#F4F5F7"); + titleInfo.setIconName(rd.getString("icon")); + + CardInfo cardInfo = new CardInfo(); + cardInfo.setTitleInfo(titleInfo); + + ContentInfo contentInfo = new ContentInfo(); + contentInfo.setType("textInfo"); + contentInfo.setOrder(1); + contentInfo.setData( + new JSONArray().fluentAdd(description).toJSONString() + ); + List contentInfos = new ArrayList<>(); + contentInfos.add(contentInfo); + cardInfo.setContentInfos(contentInfos); + + // view detail + cardInfo.setViewDetailInfo(getViewDetail(Integer.parseInt(requestid))); + + writeLog("share card info>> " + JSON.toJSONString(cardInfo)); + + // 发送人 + rd.executeQuery("select id, WORKCODE from hrmresource where id='" + sendUserId + "' and WORKCODE is not null and WORKCODE != ''"); + if (!rd.next()) { + return; + } + String senduser = rd.getString("WORKCODE"); + writeLog("分享:发送人数据>> " + senduser); + + String[] recIds = receiveUserIds.split(","); + for (String recId : recIds) { + rd.executeQuery("select id, WORKCODE from hrmresource where id='" + recId + "' and WORKCODE is not null and WORKCODE != ''"); + if (!rd.next()) { + continue; + } + String receiveUserCode = Util.null2String(rd.getString("WORKCODE")); + writeLog("接收人数据>> " + receiveUserCode); + TodoCardService.createTodoCard(senduser, receiveUserCode, 1, requestid, cardInfo); + } + + } + + + // 撤销 + public void sendDelCardInfo(Integer workflowid, String requestid, String cid, String userid,String requeststatus, Integer todoUserId, String receivedate, String receivetime) { + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select USERID from workflow_otheroperator wo where ISREMARK ='c' and REQUESTID ="+requestid+" order by id desc"); + if (recordSet.next()){ // 查询撤销操作 + String opeuserid = Util.null2String(recordSet.getString("USERID")); + if ("1".equals(opeuserid)){ // 管理员撤销 + recordSet.executeQuery("select workcode from hrmresource where id=" + userid); + if (recordSet.next()){ + String code = Util.null2String( recordSet.getString("workcode")); + TodoCardService.updateTodoCard(code, cid, "Processed by Administrator"); + } + } else { // 用户撤销 + recordSet.executeQuery("select LASTNAME from hrmresource where id="+opeuserid); + if (recordSet.next()){ + String usename = Util.null2String( recordSet.getString("LASTNAME")); + recordSet.executeQuery("select workcode from hrmresource where id=" + userid); + if (recordSet.next()){ + String code = Util.null2String( recordSet.getString("workcode")); + TodoCardService.updateTodoCard(code, cid, "Recalled by "+usename); + } + } + } + return; + } + + if (todoUserId>0){ // 判断是否是代理撤销 + recordSet.executeQuery("select AGENTID from workflow_agent where AGENTERID ="+userid+" and BEAGENTERID ="+todoUserId+" and WORKFLOWID ="+workflowid+ + " and backdate >='"+receivedate+"' and backtime >= '"+receivetime+"'"); + if (recordSet.next()){ + recordSet.executeQuery("select LASTNAME from hrmresource where id="+todoUserId); + /*String lastname = ""; + if (recordSet.next()){ + lastname =Util.null2String(recordSet.getString("LASTNAME")); + }*/ + recordSet.executeQuery("select workcode from hrmresource where id=" + userid); + if (recordSet.next()){ + String code = Util.null2String( recordSet.getString("workcode")); + TodoCardService.updateTodoCard(code, cid, "Recalled by Delegator"); + return; + } + } + } + + try { + recordSet.executeQuery("select workcode from hrmresource where id=" + userid); + if (recordSet.next()){ + String code = Util.null2String( recordSet.getString("workcode")); + TodoCardService.updateTodoCard(code, cid, "Processed by Administrator"); + } + }catch (Exception e){ + writeLog("del error "+e.getMessage(),e); + } + } + + // 补充撤销等操作,把抄送记录也变更掉 + public void checkCheXiao(String requestid){ + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select CURRENTSTATUS from workflow_requestbase wr where REQUESTID =?",requestid); // 当前状态查询, 1-撤销 + if (!recordSet.next()) return; + + String currentStatus = Util.null2String(recordSet.getString("CURRENTSTATUS")); + + if ("1".equals(currentStatus)) { // 撤销 + recordSet.executeQuery("select USERID, h.LASTNAME from workflow_otheroperator a left join hrmresource h on h.id=a.USERID where REQUESTID =? and ISREMARK ='c' order by a.id desc", requestid); + if (recordSet.next()){ + String userid = Util.null2String(recordSet.getString("USERID")); + if ("1".equals(userid)){ // 管理员撤销 + RecordSet rs2 = new RecordSet(); + rs2.executeQuery("select requestid, nodeid, bizid,receiver from temp_cardmsg where requestid =? and updatestatus ='' or updatestatus is null",requestid); + if (rs2.next()){ + String bizid = Util.null2String(rs2.getString("bizid")); + String receiver = Util.null2String(rs2.getString("receiver")); + try { + TodoCardService.updateTodoCard(receiver, bizid, "Recalled by Administrator"); + }catch (Exception e){ + writeLog("administrator chexiao error: "+e.getMessage(),e); + } + } + } else { // 非管理员撤销 + String username = Util.null2String(recordSet.getString("LASTNAME")); // 撤销人姓名 + RecordSet rs2 = new RecordSet(); + rs2.executeQuery("select requestid, nodeid, bizid,receiver from temp_cardmsg where requestid =? and updatestatus ='' or updatestatus is null",requestid); + if (rs2.next()){ + String bizid = Util.null2String(rs2.getString("bizid")); + String receiver = Util.null2String(rs2.getString("receiver")); + try { + TodoCardService.updateTodoCard(receiver, bizid, "Recalled By " + username); + }catch (Exception e){ + writeLog("撤销更新卡片异常 "+e.getMessage(),e); + } + } + } + } + } + } + + // 补充检查:撤回/强制收回是否还有遗漏 + public void checkWithdraw(String requestid,Integer nodeid){ + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select id from workflow_currentoperator where NODEID=? and operatetype =4",nodeid); + if (recordSet.next()){ // 存在撤回记录,补充查询其他未更新的撤回待办卡片 + recordSet.executeQuery("select OPERATOR from workflow_requestlog wr where REQUESTID = ? and LOGTYPE='r' order by LOGID desc",requestid); + String operator = ""; + if (recordSet.next()){ // 存在撤回记录 + operator = Util.null2String(recordSet.getString("OPERATOR")); // 撤回操作人 + }else return; + + // 查询当前节点 + recordSet.executeQuery("select CURRENTNODEID from workflow_requestbase wr where REQUESTID =?", requestid); + if (!recordSet.next()) return; + Integer currentNodeId = recordSet.getInt("CURRENTNODEID"); + + String opUserName = ""; + recordSet.executeQuery("select LASTNAME from hrmresource where id="+operator); + if (recordSet.next()){ + opUserName = Util.null2String(recordSet.getString("LASTNAME")); + } + + // 查询需要补充发送的待办记录 + recordSet.executeQuery("select bizid, receiver from temp_cardmsg where requestid =? and nodeid != ? and (updatestatus='' or updatestatus is null)", requestid, currentNodeId); + while (recordSet.next()){ + try { + String bizid = Util.null2String(recordSet.getString("bizid")); + String receiver = Util.null2String(recordSet.getString("receiver")); + TodoCardService.updateTodoCard(receiver, bizid, "Recalled By " + opUserName); + }catch (Exception e){ + writeLog("撤回更新卡片异常 "+e.getMessage(),e); + } + } + }else { + /*检查强制收回的操作*/ + String sql="select a.INVALIDID, h.LASTNAME from workflow_requestoperatelog a left join workflow_requestbase b on a.REQUESTID =b.REQUESTID and a.NODEID =b.CURRENTNODEID \n" + + "left join hrmresource h on h.id=a.INVALIDID where a.REQUESTID =? and a.ISINVALID =1"; + recordSet.executeQuery(sql, requestid); + if (recordSet.next()){ + String userId = Util.null2String(recordSet.getString("INVALIDID")); // 强制收回操作人id + String userName = Util.null2String(recordSet.getString("LASTNAME")); + + String sql2="select bizid, receiver from temp_cardmsg where requestid =? and nodeid=? and updatestatus =''"; + recordSet.executeQuery(sql2, requestid, nodeid); + while (recordSet.next()){ + try { + String bizid = Util.null2String(recordSet.getString("bizid")); + String receiver = Util.null2String(recordSet.getString("receiver")); + if ("1".equals(userId)){ + TodoCardService.updateTodoCard(receiver, bizid, "Processed by Administrator"); + }else{ + TodoCardService.updateTodoCard(receiver, bizid, "Recalled By " + userName); + } + }catch (Exception e){ + writeLog("强制收回更新卡片异常 "+e.getMessage(),e); + } + } + } + } + } + + // 更新撤销按钮状态 + public void updateCardRecalled(String cid, String operatorCode, String recallUserName) { + TodoCardService.updateTodoCard(operatorCode, cid, "Recalled by "+recallUserName); + } + +} diff --git a/src/com/customization/wfTodoCard/service/ListenSendRequestInfo.java b/src/com/customization/wfTodoCard/service/ListenSendRequestInfo.java new file mode 100644 index 00000000..2a56572d --- /dev/null +++ b/src/com/customization/wfTodoCard/service/ListenSendRequestInfo.java @@ -0,0 +1,222 @@ +package com.customization.wfTodoCard.service; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.ofs.interfaces.SendRequestStatusDataInterfaces; +import weaver.workflow.request.todo.DataObj; + +import java.util.ArrayList; +import java.util.List; + +public class ListenSendRequestInfo extends BaseBean implements SendRequestStatusDataInterfaces{ + + /** + * 后台设置id + */ + public String id ; + /** + * 设置的系统编号 + */ + public String syscode ; + /** + * 服务器URL + */ + public String serverurl ; + /** + * 流程白名单 + */ + public ArrayList workflowwhitelist ; + /** + * 人员白名单 + */ + public ArrayList userwhitelist ; + + public String getId() { + return id; + } + public String getSyscode() { + return syscode; + } + public String getServerurl() { + return serverurl; + } + public ArrayList getWorkflowwhitelist() { + return workflowwhitelist; + } + public ArrayList getUserwhitelist() { + return userwhitelist; + } + + @Override + public void SendRequestStatusData(ArrayList arrayList) { +// String jsonStr = JSON.toJSONString(arrayList); + JSONArray array = JSON.parseArray(JSON.toJSONString(arrayList)); + String jsonData = array.toJSONString(); + writeLog("统一消息待办:"+jsonData); + if (array.size() > 0){ + for(int i = 0; i0; + + if (hasDond){ + List cids = new ArrayList<>(); + String nodeid=""; + for(int j=0; j0; + Integer todoUserid=0; // 是否是同一个人的待办 + if (hasTodo){ + for(int j = 0; j0; + if (hasDel){ + Integer delNodeid = null; + for (int j = 0; j cids){ + + Integer id1 = cids.get(0); + RecordSet rs = new RecordSet(); + String conditionSql = "select a.id,a.WORKFLOWID, a.REQUESTID, a.NODEID,a.RECEIVEDATE, a.RECEIVETIME, b.LASTOPERATOR, h.WORKCODE, h.LASTNAME " + + "from workflow_currentoperator a " + + "left join workflow_requestbase b on a.REQUESTID =b.REQUESTID " + + "left join hrmresource h on h.id=b.LASTOPERATOR " + + "where a.id = "+id1;; + rs.execute(conditionSql); + if (rs.next()){ + String requestid = rs.getString("REQUESTID"); + Integer nodeid = rs.getInt("NODEID"); + String receivedate = rs.getString("RECEIVEDATE"); + String receivetime = rs.getString("RECEIVETIME"); + String lastname = rs.getString("LASTNAME"); + + + rs.executeQuery( + "select a.id, h.WORKCODE " + + "from workflow_currentoperator a left join hrmresource h on h.id=a.USERID " + + "where a.REQUESTID="+requestid+" and a.NODEID = "+nodeid+" and a.RECEIVEDATE >='"+receivedate+"' and a.RECEIVETIME >='"+receivetime+"' and h.WORKCODE is not null" + ); + while (rs.next()){ + String id = rs.getString("id"); + String workcode1 = rs.getString("WORKCODE"); + new CheckSendCardService().updateCardRecalled(id, workcode1,lastname); + } + + } + } + + // 判断是否是转办 + public boolean isZhuanBan(Integer cid){ + RecordSet query = new RecordSet(); + query.executeQuery("select id from workflow_currentoperator where id=? and HANDLEFORWARDID is not null",cid); + return query.next(); + } + + +} diff --git a/src/com/customization/wfTodoCard/service/TodoCardService.java b/src/com/customization/wfTodoCard/service/TodoCardService.java new file mode 100644 index 00000000..41d68876 --- /dev/null +++ b/src/com/customization/wfTodoCard/service/TodoCardService.java @@ -0,0 +1,216 @@ +package com.customization.wfTodoCard.service; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.customization.wfTodoCard.CardInfo; +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.http.Header; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.conn.ssl.TrustSelfSignedStrategy; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.ssl.SSLContextBuilder; +import org.apache.http.util.EntityUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; + +import javax.net.ssl.*; +import java.nio.charset.StandardCharsets; + +import static weaver.file.Prop.getPropValue; + +public class TodoCardService { + + private static BaseBean baseBean = new BaseBean(); + private static String source = "OA" ; // + + /** + * 创建待办卡片 + * @param sender 卡片发送者UserCode + * @param receiver 卡片接收者UserCode或群聊groupId + * @param chatType 类型,1为单聊,2为群聊,默认为1 + * @param bizMsgId 业务侧Id + * @param cardInfo 卡片对象 + * @return 包含返回码和卡片Id的响应对象 + */ + public static String createTodoCard(String sender, String receiver, Integer chatType, String bizMsgId, CardInfo cardInfo) { + + baseBean.writeLog("start cretae todo card >>>>>>>>>>>, sender======>" + sender + " receiver======>" + receiver + " chatType======>" + chatType + " bizMsgId======>" + bizMsgId + " cardInfo======>" + cardInfo); + + addSendRecord(sender,receiver, bizMsgId,"", "待办", JSON.toJSONString(cardInfo)); + + String createUrl = getPropValue("workflowTodoCard", "createUrl"); + String tenantId = Util.null2String(getPropValue("workflowTodoCard", "tenantId")); + String appkey = Util.null2String(getPropValue("workflowTodoCard", "appkey")); + + + try { + SSLContext sslContext = SSLContextBuilder.create() + .loadTrustMaterial(new TrustSelfSignedStrategy()) + .build(); + + // 创建 HttpClient,跳过主机名验证 + SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory( + sslContext, + NoopHostnameVerifier.INSTANCE); + + CloseableHttpClient httpClient = HttpClients.custom() + .setSSLSocketFactory(csf) + .build(); + + baseBean.writeLog("send card msg > createurl======>" + createUrl + " tenantId======>" + tenantId); + // 创建 HttpPost 请求 + HttpPost httpPost = new HttpPost(createUrl); + httpPost.setHeader("appkey",appkey); + httpPost.setHeader("Content-Type", "application/json"); +// httpPost.setHeader("Content-Type", "application/json;charset=UTF-8"); +// httpPost.setHeader("Content-Type", "application/json;charset=GBK"); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("tenantId",tenantId); + jsonObject.put("sender", sender); + jsonObject.put("receiver", receiver); + jsonObject.put("chatType", chatType); + jsonObject.put("bizMsgId", bizMsgId); + jsonObject.put("cardInfo", cardInfo); + jsonObject.put("source", source); + String jsonData = jsonObject.toString(); + +// baseBean.writeLog("card info json1: " + jsonData); +// jsonData = StringEscapeUtils.unescapeHtml4(jsonData); +// baseBean.writeLog("card info json2: " + jsonData); + + StringEntity entity = new StringEntity(jsonData,ContentType.create("application/json", "UTF-8")); + httpPost.setEntity(entity); + + + // 发送请求并获取响应 + HttpResponse response = httpClient.execute(httpPost); + + HttpEntity responseEntity = response.getEntity(); + String result = EntityUtils.toString(responseEntity); + baseBean.writeLog("send card msg > 4:: "+result); + + Header[] headers = response.getAllHeaders(); + for (Header header : headers) { + if (header.getName().equals("ITRACING_TRACE_ID")){ + baseBean.writeLog(">>ITRACING_TRACE_ID======>" + header.getValue()); + } + } + // 关闭 HttpClient + httpClient.close(); + + return result; + }catch (Exception e){ + baseBean.writeLog("send createCard error =======>" + e.getMessage(), e); + + } + return "error"; + } + + public static String updateTodoCard(String operator, String bizId, String status) { + + baseBean.writeLog("start update todo card >>>>>>>>>>>"); + if (status.endsWith("?")) status.replace("?",""); + + logUpdateStatus(bizId, status); + try { + + SSLContext sslContext = SSLContextBuilder.create() + .loadTrustMaterial(new TrustSelfSignedStrategy()) + .build(); + + // 创建 HttpClient,跳过主机名验证 + SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory( + sslContext, + NoopHostnameVerifier.INSTANCE); + + CloseableHttpClient httpClient = HttpClients.custom() + .setSSLSocketFactory(csf) + .build(); + + String updateUrl = getPropValue("workflowTodoCard", "updateUrl"); + String tenantId = Util.null2String(getPropValue("workflowTodoCard", "tenantId")); + String appkey = Util.null2String(getPropValue("workflowTodoCard", "appkey")); + + // 创建 HttpPost 请求 + HttpPost httpPost = new HttpPost(updateUrl); + httpPost.setHeader("appkey",appkey); + httpPost.setHeader("Content-Type", ContentType.APPLICATION_JSON.getMimeType()); + httpPost.setHeader("Accept", "application/json"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("tenantId",tenantId); + jsonObject.put("source", source); + jsonObject.put("bizMsgId", bizId); + jsonObject.put("operator", operator); + jsonObject.put("status", status); + String jsonData2 = jsonObject.toString(); + baseBean.writeLog("update card jsonData2: " + jsonData2); + + baseBean.writeLog("update card info status: " + status); + + String jsonData = "{\"tenantId\":\"" + tenantId + "\",\"source\":\"" + source + "\",\"bizMsgId\":\"" + bizId + "\",\"operator\":\"" + operator + "\",\"status\":\"" + status + "\"}"; + + baseBean.writeLog("update card info json: " + jsonData); + + StringEntity entity = new StringEntity(jsonData, StandardCharsets.UTF_8); +// StringEntity entity = new StringEntity(jsonData); + entity.setContentType("application/json"); + + httpPost.setEntity(entity); + + // 发送请求并获取响应 + HttpResponse response = httpClient.execute(httpPost); + baseBean.writeLog("Response Code: " + response.getStatusLine().getStatusCode()); + + HttpEntity responseEntity = response.getEntity(); + String result = EntityUtils.toString(responseEntity); + baseBean.writeLog("send card msg > :: "+result); + + Header[] headers = response.getAllHeaders(); + for (Header header : headers) { + if (header.getName().equals("ITRACING_TRACE_ID")){ + baseBean.writeLog(">>ITRACING_TRACE_ID======>" + header.getValue()); + } + } + // 关闭 HttpClient + httpClient.close(); + + return result; + }catch (Exception e){ + baseBean.writeLog("send createCard error =======>" + e.getMessage(), e); + } + + return "error"; + } + + static void addSendRecord(String sender, String receiver, String bizMsgId, String status, String type,String param){ +// String sql="INSERT INTO temp_cardmsg(sender, receiver, bizid, ctype, updatestatus, param)VALUES(?,?,?,?,?,?)"; + RecordSet rs = new RecordSet(); + String checksql = "select id from workflow_currentoperator where id =?"; + rs.executeQuery(checksql, bizMsgId); + if (rs.next()){ + String sql = "INSERT INTO temp_cardmsg(requestid, nodeid,isremark,sender, receiver, bizid, ctype, updatestatus, param) " + + "select REQUESTID, NODEID,isremark, ?,?,?,?,?,? from workflow_currentoperator where id = ?"; + rs.executeUpdate(sql, sender, receiver, bizMsgId, type, status,param, bizMsgId); + } else { + String sql = "INSERT INTO temp_cardmsg(sender, receiver, bizid, ctype, updatestatus, param) values(?,?,?,?,?,?)" ; + rs.executeUpdate(sql,sender, receiver, bizMsgId, type, status,param); + } + } + + static void logUpdateStatus(String bizMsgId, String status){ + RecordSet rs = new RecordSet(); + String sql = "update temp_cardmsg set updatestatus=? where bizid=?"; + rs.executeUpdate(sql, status, bizMsgId); + } + + +} \ No newline at end of file diff --git a/src/com/engine/dito/hrm/HrmConvertAction.java b/src/com/engine/dito/hrm/HrmConvertAction.java new file mode 100644 index 00000000..4f3b2675 --- /dev/null +++ b/src/com/engine/dito/hrm/HrmConvertAction.java @@ -0,0 +1,197 @@ +package com.engine.dito.hrm; + +import com.alibaba.fastjson.JSONObject; +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.dito.excel.service.ImportExcelService; +import com.engine.dito.excel.service.impl.ImportExcelServiceImpl; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; +import weaver.interfaces.dito.comInfo.PropBean; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.HashMap; +import java.util.Map; + +public class HrmConvertAction { + + @GET + @Path("/staffcode") + @Produces({MediaType.TEXT_PLAIN}) + public String staffcodeConvert(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = new HashMap(); + BaseBean bb = new BaseBean(); + try{ + String staffcode = request.getParameter("staffcode"); + String status = request.getParameter("status"); + String where = " and status in(0,1,2,3) " ; + if("all".equals(status)){ + where = ""; + } + RecordSet rs = new RecordSet(); + String userid = ""; + if(StringUtils.isNotBlank(staffcode)){ + String sql = "select id from hrmresource where workcode = ? " +where ; + rs.executeQuery(sql,new Object[]{staffcode}); + if(rs.next()){ + userid = Util.null2String(rs.getString("id")); + } + } + apidatas.put("userid",userid); + apidatas.put("api_status",true); + }catch (Exception e){ + apidatas.put("api_status",false); + apidatas.put("api_errormsg","exception:"+e.getMessage()); + } + return JSONObject.toJSONString(apidatas); + } + + @GET + @Path("/loginid") + @Produces({MediaType.TEXT_PLAIN}) + public String loginidConvert(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = new HashMap(); + try{ + String loginid = request.getParameter("loginid"); + String status = request.getParameter("status"); + String where = " and status in(0,1,2,3) " ; + if("all".equals(status)){ + where = ""; + } + RecordSet rs = new RecordSet(); + String userid = ""; + if(StringUtils.isNotBlank(loginid)){ + String sql = "select id from hrmresource where loginid = ? " + where; + rs.executeQuery(sql,new Object[]{loginid}); + if(rs.next()){ + userid = Util.null2String(rs.getString("id")); + } + } + apidatas.put("userid",userid); + apidatas.put("api_status",true); + }catch (Exception e){ + apidatas.put("api_status",false); + apidatas.put("api_errormsg","exception:"+e.getMessage()); + } + return JSONObject.toJSONString(apidatas); + } + + + @GET + @Path("/staffid") + @Produces({MediaType.TEXT_PLAIN}) + public String staffidConvert(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = new HashMap(); + try{ + String staffid = request.getParameter("staffid"); + String status = request.getParameter("status"); + String where = " and status in(0,1,2,3) " ; + if("all".equals(status)){ + where = ""; + } + + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + + RecordSet rs = new RecordSet(); + String userid = ""; + if(StringUtils.isNotBlank(staffid)){ + String sql = " select id from cus_fielddata where "+cus_staff+" = ? and scope = ? and scopeid = ? and id in( select id from hrmresource where 1=1 " + where +") "; + rs.executeQuery(sql,new Object[]{staffid,scope,scopeid}); + if(rs.next()){ + userid = Util.null2String(rs.getString("id")); + } + } + apidatas.put("userid",userid); + apidatas.put("api_status",true); + }catch (Exception e){ + apidatas.put("api_status",false); + apidatas.put("api_errormsg","exception:"+e.getMessage()); + } + return JSONObject.toJSONString(apidatas); + } + + + @GET + @Path("/eid") + @Produces({MediaType.TEXT_PLAIN}) + public String eidConvert(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = new HashMap(); + try{ + String eid = request.getParameter("eid"); + String status = request.getParameter("status"); + String where = " and status in(0,1,2,3) " ; + if("all".equals(status)){ + where = ""; + } + + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + String cus_eid = PropBean.getUfPropValue("cus_eid") ; + + RecordSet rs = new RecordSet(); + String userid = ""; + if(StringUtils.isNotBlank(eid)){ + String sql = " select id from cus_fielddata where "+cus_eid+" = ? and scope = ? and scopeid = ? and id in( select id from hrmresource where 1=1 " + where +") "; + rs.executeQuery(sql,new Object[]{eid,scope,scopeid}); + if(rs.next()){ + userid = Util.null2String(rs.getString("id")); + } + } + apidatas.put("userid",userid); + apidatas.put("api_status",true); + }catch (Exception e){ + apidatas.put("api_status",false); + apidatas.put("api_errormsg","exception:"+e.getMessage()); + } + return JSONObject.toJSONString(apidatas); + } + + + @GET + @Path("/sysuserid") + @Produces({MediaType.TEXT_PLAIN}) + public String sysuseridConvert(@Context HttpServletRequest request, @Context HttpServletResponse response) { + Map apidatas = new HashMap(); + try{ + String sysuserid = request.getParameter("sysuserid"); + String status = request.getParameter("status"); + String where = " and status in(0,1,2,3) " ; + if("all".equals(status)){ + where = ""; + } + + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + String cus_sysuserid = PropBean.getUfPropValue("cus_sysuserid") ; + + RecordSet rs = new RecordSet(); + String userid = ""; + if(StringUtils.isNotBlank(sysuserid)){ + String sql = " select id from cus_fielddata where "+cus_sysuserid+" = ? and scope = ? and scopeid = ? and id in( select id from hrmresource where 1=1 " + where +") "; + rs.executeQuery(sql,new Object[]{sysuserid,scope,scopeid}); + if(rs.next()){ + userid = Util.null2String(rs.getString("id")); + } + } + apidatas.put("userid",userid); + apidatas.put("api_status",true); + }catch (Exception e){ + apidatas.put("api_status",false); + apidatas.put("api_errormsg","exception:"+e.getMessage()); + } + return JSONObject.toJSONString(apidatas); + } + +} diff --git a/src/com/engine/workflow/cmd/requestForm/FunctionManageCmd.java b/src/com/engine/workflow/cmd/requestForm/FunctionManageCmd.java new file mode 100644 index 00000000..f0d678e8 --- /dev/null +++ b/src/com/engine/workflow/cmd/requestForm/FunctionManageCmd.java @@ -0,0 +1,344 @@ +package com.engine.workflow.cmd.requestForm; + +import com.api.workflow.util.ServiceUtil; +import com.cloudstore.dev.api.util.Util_TableMap; +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.core.interceptor.CommandContext; +import com.engine.workflow.biz.WorkflowTestBiz; +import com.engine.workflow.biz.publicApi.RequestOperateBiz; +import com.engine.workflow.biz.requestForm.RequestRemindBiz; +import com.engine.workflow.biz.requestForm.SubmitErrorMsgBiz; +import com.engine.workflow.biz.requestForm.TestWorkflowCheckBiz; +import com.engine.workflow.biz.requestList.RequestAttentionBiz; +import com.engine.workflow.biz.workflowOvertime.OvertimeBiz; +import com.engine.workflow.constant.RemindTypeEnum; +import com.engine.workflow.constant.requestForm.RequestExecuteType; +import com.engine.workflow.entity.requestForm.RequestOperationResultBean; +import weaver.conn.RecordSet; +import weaver.file.FileUpload; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.forceback.RequestForceBackUtil; +import weaver.systeminfo.SystemEnv; +import weaver.workflow.agent.AgentManager; +import weaver.workflow.msg.MsgPushUtil; +import weaver.workflow.msg.entity.MsgEntity; +import weaver.workflow.request.RequestAnnexUpload; +import weaver.workflow.request.RequestOperationMsgManager; +import weaver.workflow.request.WFUrgerManager; +import weaver.workflow.workflow.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * 功能管理 + * @author liuzy 2018/5/4 + */ +public class FunctionManageCmd extends AbstractCommonCommand>{ + + private HttpServletRequest request; + private HttpServletResponse response; + + public FunctionManageCmd(HttpServletRequest request, HttpServletResponse response, User user){ + this.request = request; + this.response = response; + this.user = user; + } + + public Map execute(CommandContext commandContext){ + Map apidatas = new HashMap(); + + Map resultmap = new HashMap(); + int logintype = Util.getIntValue(user.getLogintype()); + int requestid = Util.getIntValue(request.getParameter("requestid"), 0); + String flag = Util.null2String(request.getParameter("flag")); + WfFunctionManageUtil wffmu = new WfFunctionManageUtil(); + ArrayList requestidlist = new ArrayList(); + + int formid = Util.getIntValue(request.getParameter("formid"), 0); + int requestLogId = Util.getIntValue(request.getParameter("workflowRequestLogId"), 0); + String signdocids = Util.null2String(request.getParameter("signdocids")); + String signworkflowids = Util.null2String(request.getParameter("signworkflowids")); + String remark = Util.null2String(request.getParameter("remark")); + int workflowid = Util.getIntValue(request.getParameter("workflowid"), 0); + int nodeid = -1; + + + String isnew = new BaseBean().getPropValue("WorkflowOvertimeIsNew" , "isNew"); + boolean isnewFlag = "1".equals(isnew); + // 流程暂停 + if ("stop".equals(flag)) { + wffmu.setStopOperation(requestid, user); +// this.pushOperationMsg(requestid,user,flag); + if(isnewFlag) + OvertimeBiz.getInstance().cancelOvertimeTask(requestid, nodeid);//取消超时任务 + } + + // 流程撤销 + if ("cancel".equals(flag)) { + wffmu.setCancelOperation(requestid, user); +// this.pushOperationMsg(requestid,user,flag); + if(isnewFlag) + OvertimeBiz.getInstance().cancelOvertimeTask(requestid, nodeid);//取消超时任务 + } + + // 流程启用 + if ("restart".equals(flag)) { + wffmu.setRestartOperation(requestid, user); +// this.pushOperationMsg(requestid,user,flag); + if(isnewFlag) + OvertimeBiz.getInstance().addOvertimeTaskThread(requestid, workflowid, nodeid);//添加超时任务 + } + + + // 强制归档 + if ("ov".equals(flag)) { + WfForceOver wfo = new WfForceOver(); + String annexdocids = ""; + String fromflow = Util.null2String(request.getParameter("fromflow")); + String remarkLocation = Util.null2String(request.getParameter("remarkLocation")); + + int agentType = Util.getIntValue(Util.null2String(request.getParameter("agentType"))); + int agentorByAgentId = Util.getIntValue(Util.null2String(request.getParameter("agentorByAgentId"))); + if (agentType == 1) {//流程代理出去,本人强制归档,需先收回代理 + AgentManager agentManager = new AgentManager(user); + agentManager.agentBackRequest(agentorByAgentId, user.getUID(), workflowid + "", requestid); + Date currentDate = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd"); + SimpleDateFormat timeForamt = new SimpleDateFormat("HH:mm:ss"); + new RecordSet().executeUpdate("update workflow_currentoperator set operatedate = ? , operatetime = ? where userid = ? and requestid = ? and (operatedate is null or operatedate < ' ' ) ", + dateFormat.format(currentDate), timeForamt.format(currentDate), user.getUID(), requestid); + } + + if (fromflow.equals("1")) { + FileUpload fu = new FileUpload(request); + remark = Util.null2String(fu.getParameter("remark")); + workflowid = Util.getIntValue(fu.getParameter("workflowid"), -1); + nodeid = Util.getIntValue(fu.getParameter("nodeid"), -1); + + // 获取签字意见相关文档,相关流程 + + signdocids = Util.null2String(fu.getParameter("signdocids")); + signworkflowids = Util.null2String(fu.getParameter("signworkflowids")); + String ismode = Util.null2String(request.getParameter("ismode")); + if (!ismode.equals("1")) { + RequestAnnexUpload rau = new RequestAnnexUpload(); + rau.setRequest(fu); + rau.setUser(user); + annexdocids = rau.AnnexUpload(); + } else { + String hasSign = "0";// 模板中是否设置了签字 + RecordSet rs = new RecordSet(); + rs.executeSql("select * from workflow_modeview where formid=" + formid + " and nodeid=" + nodeid + " and fieldid=-4"); + if (rs.next()) + hasSign = "1"; + if ("1".equals(hasSign)) {// 模板中设置了签字 + annexdocids = Util.null2String(fu.getParameter("qianzi")); + } else {// 模板中没有设置签字,按普通方式上传签字意见的附件 + RequestAnnexUpload rau = new RequestAnnexUpload(); + rau.setRequest(fu); + rau.setUser(user); + annexdocids = rau.AnnexUpload(); + } + } + + + WFManager wfManager = new WFManager(); + wfManager.setWfid(workflowid); + try { + wfManager.getWfInfo(); + } catch (Exception e) { + e.printStackTrace(); + } + String isShowChart = Util.null2s(wfManager.getIsShowChart().trim(),"0"); + apidatas.put("isShowChart", isShowChart); + } + + wfo.setRemark(remark); + wfo.setAnnexdocids(annexdocids); + wfo.setSigndocids(signdocids); + wfo.setSignworkflowids(signworkflowids); + wfo.setRequestLogId(requestLogId); + wfo.setRemarkLocation(remarkLocation); + + WFUrgerManager wfum = new WFUrgerManager(); + if (wffmu.haveOtherOperationRight(requestid) && !wfo.isOver(requestid) && (wfo.isNodeOperator(requestid, user.getUID()) || wfum.getMonitorViewRight(requestid, user.getUID()))) { + requestidlist.add("" + requestid); + wfo.doForceOver(requestidlist, request, response, user); + apidatas.put("success",1); + if(isnewFlag) + OvertimeBiz.getInstance().cancelOvertimeTask(requestid, nodeid);//取消超时任务 + }else{ + apidatas.put("success",0); + } + //判断是否属于流程测试 + TestWorkflowCheckBiz testBiz = new TestWorkflowCheckBiz(); + boolean belongTest = testBiz.judgeBelongTest(request, false); + if(belongTest) { + RecordSet rs = new RecordSet(); + rs.executeQuery("select nodeid from workflow_flownode where workflowid = ? and nodetype = 3",workflowid); + rs.next(); + WorkflowTestBiz.setWorkflowTestInfo(flag, requestid, nodeid, "", null,rs.getInt("nodeid")); + } + + this.doArchiveRemind(workflowid,requestid); + + new weaver.cpt.util.CptWfUtil().releaseFrozenCptnum(requestid+""); //清除资产冻结 + } + + // 强制收回 + if ("rb".equals(flag)) { + + BaseBean bb = new BaseBean(); + bb.writeLog("FunctionManageCmd:requestid:"+requestid); + List> remark89List = new ArrayList>(); + List> atList = new ArrayList>(); + List> forwardList = new ArrayList>(); + try { + RequestForceBackUtil requestForceBackUtil = new RequestForceBackUtil(); + remark89List = requestForceBackUtil.queryRequestRemark89ByForceBack(requestid+""); + requestForceBackUtil.queryRequestAtByForceBack(requestid+""); + requestForceBackUtil.queryRequestForwardByForceBack(requestid+""); + }catch (Exception e){ + e.printStackTrace(); + new BaseBean().writeLog(e); + } + bb.writeLog("FunctionManageCmd:remark89List:"+remark89List.size()+" atList:"+atList.size()); + + + WfForceDrawBack wfdb = new WfForceDrawBack(); + RequestForceDrawBack requestForceDrawBack = new RequestForceDrawBack(); + RequestOperationResultBean resultBean = new RequestOperationResultBean(); + if (wffmu.haveOtherOperationRight(requestid) && wfdb.isHavePurview(requestid, user.getUID(), logintype, -1, -1)) { + requestidlist.add("" + requestid); + // WfForceDrawBack.doForceDrawBack(requestidsArr, request, + // response, -1, -1); + // 使用新的收回方式 + String sessionkey = workflowid + "_" + nodeid + "_" + user.getUID() + "_" + System.currentTimeMillis(); + int result = requestForceDrawBack.foreceDrawBack(user, requestid, false, -1, -1); + if (!requestForceDrawBack.isAddInOperateSuccess()) {//强制收回附加操作执行失败,返回错误信息 + String message = requestForceDrawBack.getMessage(); + String messagecontent = requestForceDrawBack.getMessageContent(); + if("".equals(message) || requestid <= 0) { + message = "1"; + } + resultBean.setMessageInfo(SubmitErrorMsgBiz.getMsgInfo(request,user,message,messagecontent)); + resultBean.setType(RequestExecuteType.FAILD); + Util_TableMap.setObjVal(Util.null2String(sessionkey), resultBean); + apidatas.put("success",false); + apidatas.put("msg",SystemEnv.getHtmlLabelNames("506175,83071",user.getLanguage())); + return apidatas; + } + if (result == RequestForceDrawBack.OLDDATA) { + wfdb.doForceDrawBack(requestidlist, request, response, -1, -1); + } + RequestOperateBiz.drawBackSpecialTreatment(formid, workflowid); + + /*E9打印登录超时报错(QC:527424)*/ + if(user == null) { + try { + response.sendRedirect(weaver.general.GCONST.getContextPath()+"/wui/index.html"); + return null; + } catch (IOException e) { + e.printStackTrace(); + } + } + //判断是否可以跳转到新的页面 + boolean reqRoute = ServiceUtil.isReqRoute(String.valueOf(requestid),user); + apidatas.put("reqRoute", reqRoute); + apidatas.put("success",result == RequestForceDrawBack.SUCCESS); + if(result == RequestForceDrawBack.SUCCESS){ + apidatas.put("msg",SystemEnv.getHtmlLabelName(83585,user.getLanguage())); + }else if(result == RequestForceDrawBack.FAIL){ + apidatas.put("msg",SystemEnv.getHtmlLabelName(389102,user.getLanguage())); + }else if(result == RequestForceDrawBack.NORIGHT){ + apidatas.put("msg",SystemEnv.getHtmlLabelName(18567,user.getLanguage())); + } + apidatas.put("sessionkey", sessionkey); + new BaseBean().writeLog("requestForceBack start"); + try { + + RequestForceBackUtil requestForceBackUtil = new RequestForceBackUtil(); + requestForceBackUtil.sendTodoDataByForceBack(requestid+""); + requestForceBackUtil.completeReamrkAtByForceBack(remark89List,atList,forwardList); + }catch (Exception e){ + e.printStackTrace(); + new BaseBean().writeLog(e); + } + + }else { + apidatas.put("success",false); + apidatas.put("msg",SystemEnv.getHtmlLabelName(18567,user.getLanguage())); + } + } + //自动取消 流程关注 + new RequestAttentionBiz().cancelAttention(requestid,flag); + return apidatas; + } + + @Override + public BizLogContext getLogContext() { + return null; + } + + + /** + * 暂停、撤销、启用消息数据 + * @param requestId + * @param user + * @param flag + */ + private boolean pushOperationMsg(int requestId,User user,String flag){ + + RequestOperationMsgManager romm = new RequestOperationMsgManager(); + List requestMsgEntity = romm.getOperateMsgByReqId(String.valueOf(requestId),user,flag); + new MsgPushUtil().pushMsg(requestMsgEntity); + return true; + } + + + private void doArchiveRemind(int workflowid,int requestid){ + String src = Util.null2String(request.getParameter("src")); + String remindTypes = Util.null2String(request.getParameter("remindTypes")); //表单上提醒方式 + RequestRemindBiz requestRemindBiz = new RequestRemindBiz(user); + //默认提醒 + WFManager wfManager = new WFManager(); + try{ + wfManager.setWfid(workflowid); + wfManager.getWfInfo(); + }catch (Exception e){} + + if("-1".equals(remindTypes)){ //老数据 + int messageType = Util.getIntValue(Util.null2String(request.getParameter("messageType")),-1); // 老短信提醒 + int mailMessageType = Util.getIntValue(Util.null2String(request.getParameter("chatsType")),-1); // 老邮件提醒 + if(messageType >=1) requestRemindBiz.requestRemind(requestid,workflowid,src, RemindTypeEnum.SMS,messageType); + //历史数据可能只有短信提醒,但是其实也开启了邮件提醒 + int _mailMessageType = Util.getIntValue(wfManager.getMailMessageType(),-1); + if(mailMessageType == 1 || _mailMessageType == 1) requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.EMAIL,0); + Set remindType = new HashSet<>(); + if(messageType >=1) { + requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.SMS,messageType); + } + if(mailMessageType == 1 || _mailMessageType == 1) { + requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.EMAIL,0); + } + }else{ + + String isSmsRemind = remindTypes.indexOf(RemindTypeEnum.SMS.getCode()) > -1 ? "1" : "0"; + String isEmailRemind = remindTypes.indexOf(RemindTypeEnum.EMAIL.getCode()) > -1 ? "1" : "0"; + if("1".equals(isSmsRemind)) requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.SMS,0); + if("1".equals(isEmailRemind)) requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.EMAIL,0); + } + requestRemindBiz.requestEmailApproveRemind(String.valueOf(workflowid),String.valueOf(requestid),src); + } + + public HttpServletRequest getRequest() { + return request; + } +} diff --git a/src/com/engine/workflow/cmd/requestForm/RequestSubmitCmd.java b/src/com/engine/workflow/cmd/requestForm/RequestSubmitCmd.java new file mode 100644 index 00000000..4b241131 --- /dev/null +++ b/src/com/engine/workflow/cmd/requestForm/RequestSubmitCmd.java @@ -0,0 +1,1353 @@ +package com.engine.workflow.cmd.requestForm; + + +import com.api.workflow.service.RequestAuthenticationService; +import com.cloudstore.dev.api.util.Util_TableMap; +import com.customization.wfTodoCard.service.CheckSendCardService; +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.common.util.AttrSignatureUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.core.interceptor.CommandContext; +import com.engine.workflow.biz.GetNextNodeContentBiz; +import com.engine.workflow.biz.RobotNode.RobotNodeBiz; +import com.engine.workflow.biz.RobotNode.RobotNodeFlowBiz; +import com.engine.workflow.biz.RobotNode.RobotNodeServiceBiz; +import com.engine.workflow.biz.SecondAuthBiz; +import com.engine.workflow.biz.freeNode.FreeNodeBiz; +import com.engine.workflow.biz.operationMenu.MenuDefaultSignBiz; +import com.engine.workflow.biz.requestFlow.SaveFormDatasBiz; +import com.engine.workflow.biz.requestFlowLog.RequestFlowLogBiz; +import com.engine.workflow.biz.requestForm.*; +import com.engine.workflow.biz.requestSubmit.RequestFlowErrorLogBiz; +import com.engine.workflow.biz.requestSubmit.RequestOperationBiz; +import com.engine.workflow.constant.*; +import com.engine.workflow.constant.requestForm.PromptType; +import com.engine.workflow.constant.requestForm.RequestConstant; +import com.engine.workflow.constant.requestForm.RequestExecuteType; +import com.engine.workflow.entity.RequestFlowLogEntity; +import com.engine.workflow.entity.requestForm.RequestOperationResultBean; +import com.engine.workflow.service.RequestManagerService; +import com.engine.workflow.service.RequestSecondAuthService; +import com.engine.workflow.service.impl.RequestManagerServiceImpl; +import com.engine.workflow.service.impl.RequestSecondAuthServiceImpl; +import com.engine.workflow.util.SecondAuthUtil; +import com.google.common.base.Strings; +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.StringUtils; +import org.json.JSONObject; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.nodes.Node; +import org.jsoup.nodes.TextNode; +import org.jsoup.select.Elements; +import weaver.conn.RecordSet; +import weaver.cpt.util.CptWfUtil; +import weaver.docs.docs.DocCheckInOutUtil; +import weaver.file.FileUpload; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.systeminfo.SystemEnv; +import weaver.workflow.agent.AgentManager; +import weaver.workflow.exceldesign.DetailOrderManager; +import weaver.workflow.logging.Logger; +import weaver.workflow.logging.LoggerFactory; +import weaver.workflow.msg.MsgPushUtil; +import weaver.workflow.msg.entity.MsgEntity; +import weaver.workflow.request.*; +import weaver.workflow.workflow.WFManager; +import weaver.workflow.workflow.WorkflowConfigComInfo; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.util.*; + +/** + * 流程提交 + */ +public class RequestSubmitCmd extends AbstractCommonCommand>{ + + private final static Logger log = LoggerFactory.getLogger(RequestManager.class); + + private HttpServletRequest request; + + private RequestFlowLogEntity requestFlowLogEntity; + + public HttpServletRequest getRequest() { + return request; + } + + public void setRequest(HttpServletRequest request) { + this.request = request; + } + + public RequestSubmitCmd(HttpServletRequest request, User user){ + this.request = request; + this.user = user; + initParams(); + } + + @Override + public Map execute(CommandContext commandContext){ + Map result = new HashMap(); + + //初始化流程流转日志对象 + requestFlowLogEntity = RequestFlowLogBiz.initRequestFlowLogEntity(user,RequestFlowLogSrcType.OTHER,request); + + try { + //校验token避免重复提交 + String tokenKey = ""; + boolean isCreate = "1".equals(request.getParameter("iscreate")); + int lastloginuserid = Util.getIntValue(request.getParameter("lastloginuserid")); + if(isCreate && lastloginuserid > 0 && lastloginuserid != user.getUID()) { + result.put("errorInfo",SystemEnv.getHtmlLabelName(515427,user.getLanguage())); + return result; + } + if(isCreate) + tokenKey = user.getUID()+"_"+Util.null2String(request.getParameter("workflowid"))+"_addrequest_submit_token"; + else + tokenKey = user.getUID()+"_"+Util.null2String(request.getParameter("requestid"))+"_request_submit_token"; + String tokenValue = Util.null2String(request.getParameter(tokenKey)); + String tokenValueCache = Util_TableMap.getVal(tokenKey); + if(!"".equals(tokenValueCache) && tokenValue.equals(tokenValueCache)){ + result.put("msg", ""+ SystemEnv.getHtmlLabelName(10005579,weaver.general.ThreadVarLanguage.getLang())+""); + result.put("errorType","repeatSubmit"); + return result; + }else{ + Util_TableMap.setVal(tokenKey, tokenValue, 120); + } + //前台联动超过时间未返回,未卡住提交情况记录日志 + String linkageUnFinishedKey = Util.null2String(request.getParameter("linkageUnFinishedKey")); + if(!"".equalsIgnoreCase(linkageUnFinishedKey)) + new BaseBean().writeLog(tokenKey+"--linkageUnFinishedKey--"+linkageUnFinishedKey); + //消息 + String src = Util.null2String(request.getParameter("src")); + int requestid = Util.getIntValue(request.getParameter("requestid"), -1); + RequestOperationMsgManager romm = new RequestOperationMsgManager(); + List requestMsgEntity = null; + RequestOperationResultBean resultBean = this.getResult(); //插入操作日志 + result.put("data", resultBean); + //是否为提交需确认 + boolean isNeedConfirm = ("save".equals(src) && "1".equals(resultBean.getResultInfo().get("isaffirmance")) ); + //流程异常处理、出口提示不刷新表单,需要更新操作时间避免出现数据已更改异常 + if(resultBean.getType() == RequestExecuteType.WF_LINK_TIP || resultBean.getType() == RequestExecuteType.R_CHROSE_OPERATOR || isNeedConfirm) { + Util_TableMap.clearVal(tokenKey); //两次情况需要清空token + RecordSet recordSet = new RecordSet(); + if (requestid > 0) { + recordSet.execute("select lastOperator,lastOperateDate,lastOperateTime from workflow_Requestbase where requestid = " + requestid); + if(recordSet.next()){ + resultBean.getSubmitParams().put("lastOperator", Util.null2String(recordSet.getString("lastOperator"))); + resultBean.getSubmitParams().put("lastOperateDate", Util.null2String(recordSet.getString("lastOperateDate"))); + resultBean.getSubmitParams().put("lastOperateTime", Util.null2String(recordSet.getString("lastOperateTime"))); + } + } + } + //消息中心流程异步提交消息提醒 + if(resultBean.getType() == RequestExecuteType.ASYNC_SUBMIT && "0".equals(user.getLogintype())){ + + requestMsgEntity = romm.requestSubmitErrorMsg(String.valueOf(requestid),resultBean,user.getUID()); + } + if("reject".equals(src) && resultBean.getType()==RequestExecuteType.SUCCESS){ + String rejectNodeids = request.getParameter("RejectNodes"); + requestMsgEntity = romm.rejectNoticeMsg(String.valueOf(requestid),rejectNodeids); + } + boolean isaffirmance = "1".equals(request.getParameter("isaffirmance")); + if (isCreate && !isaffirmance && ( + resultBean.getType() == RequestExecuteType.SUCCESS && "save".equals(src) + || resultBean.getType() == RequestExecuteType.FAILD && "submit".equals(src))) { + requestid = Util.getIntValue(Util.null2String(resultBean.getSubmitParams().get("requestid")), -1); + requestMsgEntity = romm.createRequestMsg(requestid,user.getUID()); + } + + if (isCreate && (resultBean.getType() == RequestExecuteType.SUCCESS && "submit".equals(src) )) { + int nodeid = Util.getIntValue(request.getParameter("nodeid"), -1); + requestid = Util.getIntValue(Util.null2String(resultBean.getSubmitParams().get("requestid")), -1); + RequestFormBiz.updateLastViewDate(requestid,user.getUID(),nodeid); + } + if(requestMsgEntity != null){ + new MsgPushUtil().pushMsg(requestMsgEntity); + } + resultBean.getSubmitParams().put(tokenKey,System.currentTimeMillis()); + Util_TableMap.setObjVal(Util.null2String(resultBean.getResultInfo().get("sessionkey")), resultBean); + + //流程流转日志信息入库 + requestFlowLogEntity.getResultdata().putAll(result); + requestFlowLogEntity.setResult(resultBean.getType().toString()); + if(resultBean.getType() == RequestExecuteType.FAILD && resultBean.getMessageInfo()!=null &&resultBean.getMessageInfo().containsKey("detail")){ + requestFlowLogEntity.setMessageInfo(Util.null2String(resultBean.getMessageInfo().get("detail"))); + } + RequestFlowLogBiz.SaveRequestFlowLog(requestFlowLogEntity); + +// // 获取 at 的人员 id,发送卡片 +// String isSelectValue = Util.null2String(params.get("isSelectValue")); +// new BaseBean().writeLog("isSelectValue=======>" + isSelectValue); +// Map submitparam = requestFlowLogEntity.getSubmitparam(); +// String remark = submitparam.get("remark").toString(); +// if ("1".equals(isSelectValue) && null != remark && !"".equals(remark)) { +// new BaseBean().writeLog("remark=======>" + remark); +// +//// String newremark = Util.null2String(remark).replace("

", "").replace("

", ""); +//// String output = newremark.replaceAll("]*>.*?", "").replace(" ", " "); +// +// Document doc = Jsoup.parse(remark); +// // 选择所有的

标签 +// Elements pTags = doc.select("p"); +// +// String title = ""; +// Iterator pIt = pTags.iterator(); +// while(pIt.hasNext()) { +// Element element = pIt.next(); +// title += element.text(); +// } +// +// new BaseBean().writeLog("RequestSubmitCmd-title:" + title); +// if(StringUtils.isNotBlank(title)){ +// title = StringEscapeUtils.unescapeHtml4(title); +// } +// new BaseBean().writeLog("RequestSubmitCmd-title2:" + title); +//// for (int i = 0; i < pTags.size(); i++) { +//// Element pTag = pTags.get(i); +//// // 获取

标签内的子节点列表 +//// List childNodes = pTag.clone().childNodes(); +//// // 按顺序将子节点插入到

标签的位置 +//// for (int j = childNodes.size() - 1; j >= 0; j--) { +//// pTag.after(childNodes.get(j)); +//// } +//// // 移除

标签 +//// pTag.remove(); +//// } +//// // 选择所有的 标签 +//// Elements aTags = doc.select("a"); +//// for (int i = 0; i < aTags.size(); i++) { +//// Element aTag = aTags.get(i); +//// // 获取 atsome-name 属性值作为人名 +//// String name = aTag.attr("atsome-name"); +//// if (!name.isEmpty()) { +//// // 创建文本节点 +//// TextNode textNode = new TextNode("@" + name, doc.baseUri()); +//// // 在 标签后面插入文本节点 +//// aTag.after(textNode); +//// // 移除 标签 +//// aTag.remove(); +//// } +//// } +//// String html = doc.body().html(); +//// new BaseBean().writeLog("html=======>" + html); +//// new BaseBean().writeLog("title=======>" + title); +// +// RequestSignRelevanceWithMe reqsignwm = new RequestSignRelevanceWithMe(); +// List atResourceids = reqsignwm.parseRemark(remark); +// for (String atResourceid : atResourceids) { +// new BaseBean().writeLog("RequestSubmitCmd-atResourceid:" + atResourceid); +//// new CheckSendCardService().checkSendRequestCardInfo(requestid, Integer.parseInt(atResourceid)); +// new CheckSendCardService().sendShareCard(""+user.getUID(), atResourceid, String.valueOf(requestid),"",title,"You have been tagged in a comment."); +// } +// } + + } catch (Exception e) { + e.printStackTrace(); + } + + return result; + } + + private RequestOperationResultBean getResult() throws Exception{ + boolean isPrintLogUser = RequestOperationBiz.isPrintLogUser(user); + long t1 = System.currentTimeMillis(); + t1 = writeTimeLog(isPrintLogUser,64,t1,"开始执行提交"); + RequestOperationResultBean resultBean = new RequestOperationResultBean(); + Map resultInfo = resultBean.getResultInfo(); + + //流程测试情况返回值 + TestWorkflowCheckBiz testBiz = new TestWorkflowCheckBiz(); + Map testParams = resultBean.getTestParams(); + boolean belongTest = testBiz.judgeBelongTest(request, false); + testParams.put("belongTest", belongTest); + if(belongTest){ + testParams.put("wfTestStr", Util.null2String(request.getParameter("wfTestStr"))); + } + HttpSession session = request.getSession(); + + RecordSet recordSet = new RecordSet(); + RequestManager requestManager = new RequestManager(); + requestManager.setRequestFlowLogEntity(requestFlowLogEntity); + String f_weaver_belongto_userid = request.getParameter("f_weaver_belongto_userid");// 需要增加的代码 + String f_weaver_belongto_usertype = request.getParameter("f_weaver_belongto_usertype");// 需要增加的代码 + resultInfo.put("f_weaver_belongto_userid", f_weaver_belongto_userid); + resultInfo.put("f_weaver_belongto_usertype", f_weaver_belongto_usertype); + String userid = "" + user.getUID(); + + String iscreate = Util.null2String(request.getParameter("iscreate")); + int requestid = Util.getIntValue(request.getParameter("requestid"), -1); + //验证是否有流程权限 + RequestAuthenticationService authService = new RequestAuthenticationService(); + authService.setUser(user); + if (!"1".equals(iscreate) && !authService.verify(request, requestid)) { + resultBean.getResultInfo().put("requestid",requestid); + resultBean.setType(RequestExecuteType.FAILD); + return resultBean; + } + + AttrSignatureUtil attrSignatureUtil = new AttrSignatureUtil(user.getUID(), request.getHeader("user-agent")); + String _attributesString = Util.null2String(request.getParameter(RequestConstant.SIGNATURE_ATTRIBUTES_STR)); + String _attributesSignature = Util.null2o(request.getParameter(RequestConstant.SIGNATURE_SECRET_KEY)); + attrSignatureUtil.verifySignature(_attributesString, _attributesSignature); + String comemessage = Util.null2String(request.getParameter("comemessage")); + String rands[] = Util.TokenizerString2(Util.null2String(request.getParameter("rand")), "+"); + String rand = ""; + boolean needout = false; + if (rands.length > 0) + rand = rands[0]; + if (rands.length > 1) + needout = true; + String needoutprint = Util.null2String(request.getParameter("needoutprint"));// 等于1,代表点的正文 + + String src = Util.null2String(request.getParameter("src")); + int workflowid = Util.getIntValue(request.getParameter("workflowid"), -1); + String workflowtype = Util.null2String(request.getParameter("workflowtype")); + int isremark = Util.getIntValue(request.getParameter("isremark"), -1); + int formid = Util.getIntValue(request.getParameter("formid"), -1); + int isbill = Util.getIntValue(request.getParameter("isbill"), -1); + int billid = Util.getIntValue(request.getParameter("billid"), -1); + int nodeid = Util.getIntValue(request.getParameter("nodeid"), -1); + String nodetype = Util.null2String(request.getParameter("nodetype")); + String requestname = Util.fromScreen3(request.getParameter("requestname"), user.getLanguage()); + String requestlevel = Util.fromScreen(request.getParameter("requestlevel"), user.getLanguage()); + String isFromEditDocument = Util.null2String(request.getParameter("isFromEditDocument")); + int SubmitToNodeid = Util.getIntValue(request.getParameter("SubmitToNodeid"),0); + String remark = Util.null2String(request.getParameter("remark")); + String needwfback = Util.null2String(request.getParameter("needwfback")); + int RejectToNodeid = Util.getIntValue(Util.null2String(request.getParameter("RejectToNodeid")),0); + int RejectToType = Util.getIntValue(Util.null2String(request.getParameter("RejectToType")),0); + boolean asyncSubmit = "1".equals(Util.null2String(request.getParameter("asyncSubmit")));//异步提交 + String eh_setoperator = Util.null2String(request.getParameter("eh_setoperator")); + String clientType = Util.null2String(request.getParameter("clientType"), SignSource.PC_BROWSER.getType()); + + String sessionkey = workflowid + "_" + nodeid + "_" + user.getUID() + "_" + System.currentTimeMillis(); + resultInfo.put("sessionkey", sessionkey); + + //判断是否有流程删除权限 + if("delete".equals(src) && !RequestDeleteUtils.verifyDelRight(requestid,user,false)) { + resultBean.getResultInfo().put("requestid",requestid); + resultBean.setType(RequestExecuteType.FAILD); + return resultBean; + } + + int agentType = Util.getIntValue(Util.null2String(request.getParameter("agentType"))); + int agentorByAgentId = Util.getIntValue(Util.null2String(request.getParameter("agentorByAgentId"))); + if (agentType == 1 && !src.equals("save")) {//流程代理出去,本人提交,需先收回代理 + AgentManager agentManager = new AgentManager(user); + agentManager.agentBackRequest(agentorByAgentId, user.getUID(), workflowid + "", requestid); + } + + //正在进行自动批准 + if(isAutoApproving(requestid,nodeid,resultBean)) { + return resultBean; + } + int index = remark.indexOf("

来自"); + String myremark = remark; + String remarkSuffix = ""; + if(index > -1){ + myremark = remark.substring(0, index); + remarkSuffix = remark.substring(index); + } + //设置默认意见 + myremark = Util.null2String(myremark).replace("

", "") + .replace("

", "") + .replace("\n", "") + .replace(" ", ""); + if("".equals(myremark.trim())) { + OperationMenuType type = null; + if("submit".equals(src)) { + type = SubmitToNodeid > 0 ? OperationMenuType.SUBMIT_DIRECT : OperationMenuType.SUBMIT; + } else if ("reject".equals(src)) { + type = OperationMenuType.REJECT; + } + if(type != null) { + remark = Util.null2String(MenuDefaultSignBiz.getMenuDefaultSignMap(workflowid,nodeid,type)) + remarkSuffix; + } + } + String method = Util.fromScreen(request.getParameter("method"), user.getLanguage()); // 作为新建文档时候的参数传递 + String remarkLocation = Util.null2String(request.getParameter("remarkLocation")); // 签字意见添加位置 + String topage = URLDecoder.decode(Util.null2String(request.getParameter("topage"))); // 返回的页面 + + String submitNodeId = Util.null2String(request.getParameter("submitNodeId")); + + // + String isFirstSubmit = Util.null2String(request.getParameter("isFirstSubmit")); + + //支持干预给客户 + String Intervenorid = Util.null2String(request.getParameter("Intervenorid")); + String Intervenorid_crm = Util.null2String(request.getParameter("Intervenorid_crm")); + String IntervenorType = ""; + String Intervenorid_temp = ""; + if(!"".equals(Intervenorid)){ + ArrayList intervenoridArr = Util.TokenizerString(Intervenorid,","); + for(String id : intervenoridArr) { + Intervenorid_temp += "," + id; + IntervenorType += ","+0; + } + } + if(!"".equals(Intervenorid_crm)){ + ArrayList intervenoridArr = Util.TokenizerString(Intervenorid_crm,","); + for(String id : intervenoridArr) { + Intervenorid_temp += "," + id; + IntervenorType += ","+1; + } + } + Intervenorid_temp = Intervenorid_temp.length() > 0 ? Intervenorid_temp.substring(1) : ""; + Intervenorid = Intervenorid_temp; + IntervenorType = IntervenorType.length() > 0 ? IntervenorType.substring(1) : ""; + + int SignType = Util.getIntValue(request.getParameter("SignType"), 0); + int enableIntervenor = Util.getIntValue(request.getParameter("enableIntervenor"), 1);// 是否启用节点及出口附加操作 + + int isovertime = Util.getIntValue(request.getParameter("isovertime"), 0); + int isagentCreater = Util.getIntValue((String) attrSignatureUtil.getAttribute("isagent")); + int beagenter = Util.getIntValue((String) attrSignatureUtil.getAttribute("beagenter"), 0); + RequestDoc requestDoc = new RequestDoc(); + boolean docFlag = requestDoc.haveDocFiled("" + workflowid, "" + nodeid); + int urger = Util.getIntValue((String) attrSignatureUtil.getAttribute("urger"), 0); + String isintervenor = Util.null2String((String) attrSignatureUtil.getAttribute("isintervenor")); + if (src.equals("") || workflowid == -1 || formid == -1 || isbill == -1 || nodeid == -1 || nodetype.equals("")) { + StringBuilder msg = new StringBuilder(""+ SystemEnv.getHtmlLabelName(10005635,weaver.general.ThreadVarLanguage.getLang())+"src:").append(src).append(",workflowid:").append(workflowid).append(",formid:").append(formid); + msg.append(",isbill:").append(isbill).append(",nodeid:").append(nodeid).append(",nodetype:").append(nodetype).append(",user:").append(user.getLastname()); + writeLog(msg.toString()); + resultBean.setType(RequestExecuteType.SEND_PAGE); + resultBean.setSendPage(weaver.general.GCONST.getContextPath()+"/notice/RequestError.jsp"); + return resultBean; + } + + String tempIsCanSubmit = Util.null2String(attrSignatureUtil.getAttribute("IsCanSubmit")); + String tempCoadCanSubmit = Util.null2String(attrSignatureUtil.getAttribute("coadCanSubmit")); + boolean IsCanSubmit = "true".equals(tempIsCanSubmit); + boolean coadCanSubmit = "true".equals(tempCoadCanSubmit); + boolean IsCanModify = "true".equals(attrSignatureUtil.getAttribute("IsCanModify")); + if("".equals(tempIsCanSubmit)){ + int usertype = "2".equals(user.getLogintype()) ? 1 : 0; + recordSet.executeSql("select isremark,isreminded,preisremark,id,groupdetailid,nodeid,takisremark,(CASE WHEN isremark=9 THEN 7.5 WHEN (isremark = 4 ) THEN 1.5 " + + "WHEN (isremark=1 and takisremark=2) THEN 0.9 WHEN (preisremark=1 and takisremark=2) " + + "THEN 0.9 ELSE isremark END) orderisremark from workflow_currentoperator where requestid=" + requestid + " and userid=" + userid + " and usertype=" + usertype + + " order by orderisremark, id "); + if(recordSet.next()){ + String isremarkForRM = Util.null2String(recordSet.getString("isremark")); + int wfcurrrid = Util.getIntValue(recordSet.getString("id")); + int groupdetailid = Util.getIntValue(recordSet.getString("groupdetailid"), 0); + + + WFForwardManager wfForwardManager = new WFForwardManager(); + wfForwardManager.init(); + wfForwardManager.setWorkflowid(workflowid); + wfForwardManager.setNodeid(nodeid); + wfForwardManager.setIsremark(isremarkForRM); + wfForwardManager.setRequestid(requestid); + wfForwardManager.setBeForwardid(wfcurrrid); + wfForwardManager.getWFNodeInfo(); + IsCanSubmit = wfForwardManager.getCanSubmit(); + WFCoadjutantManager wfCoadjutantManager = new WFCoadjutantManager(); + wfCoadjutantManager.getCoadjutantRights(groupdetailid); + String coadsigntype = wfCoadjutantManager.getSigntype(); + String coadismodify = wfCoadjutantManager.getIsmodify(); + coadCanSubmit = wfCoadjutantManager.getCoadjutantCanSubmit(requestid, wfcurrrid, isremarkForRM, coadsigntype); + IsCanModify = wfForwardManager.getCanModify(); + if (!IsCanModify && coadismodify.equals("1")) IsCanModify = true; + } + } + String IsBeForwardPending = Util.null2String((String) attrSignatureUtil.getAttribute("IsBeForwardPending")); + String coadispending = Util.null2String((String) attrSignatureUtil.getAttribute("coadispending")); + String coadsigntype = Util.null2String((String) attrSignatureUtil.getAttribute("coadsigntype")); + int ispending = -1; + if (isremark == 7 && coadispending.equals("1")) { + if (IsBeForwardPending.equals("1")) { + ispending = 2; + } else { + ispending = 1; + } + } else if (IsBeForwardPending.equals("1")) { + ispending = 0; + } + int wfcurrrid = Util.getIntValue((String) attrSignatureUtil.getAttribute("wfcurrrid"), 0); + int intervenorright = Util.getIntValue((String) attrSignatureUtil.getAttribute("intervenorright"), 0); + if (src.equals("supervise") || (src.equals("submit") && isremark == 5) || (src.equals("intervenor") && intervenorright > 0) || (belongTest && src.equals("intervenor"))) { + IsCanSubmit = true; + } + session.removeAttribute("errormsgid_" + user.getUID() + "_" + requestid); + session.removeAttribute("errormsg_" + user.getUID() + "_" + requestid); + if ((requestid > 0 && (!IsCanSubmit && !coadCanSubmit)) || requestManager.checkNodeOperatorComment(requestid, user.getUID(), nodeid)) { + if (needoutprint.equals("")) { + resultBean.setMessageInfo(SubmitErrorMsgBiz.getMsgInfo(request,user,WorkflowRequestMessage.WF_REQUEST_ERROR_CODE_02,"")); + resultBean.setType(RequestExecuteType.FAILD); + } + resultBean.getResultInfo().put("requestid",requestid); + return resultBean; + } + String isMultiDoc = Util.null2String(request.getParameter("isMultiDoc")); // 多文档新建 + + /** 指定下一节点流转 **/ + boolean isSelectNextFlow = Util.null2String(request.getParameter("selectNextFlow")).equals("1") && src.equals("submit");//是否指定下一节点流转 + String selectNodeFlow_nodeIds = Util.null2String(request.getParameter("selectNodeFlow_nodeIds")); + SelectNextFlowMode selectNextFlowMode = SelectNextFlowMode.getModeType(Util.getIntValue(request.getParameter("selectNextFlowMode"))); + String selectNodeFlowNodeCanFlowNextNode = Util.null2String(request.getParameter("selectNodeFlowNodeCanFlowNextNode")); +// String selectNodeFlow_operator = Util.null2String(request.getParameter("selectNodeFlow_operator")); +// String ccOperator = Util.null2String(request.getParameter("ccOperator")); +// String canSubmit = Util.null2String(request.getParameter("canSubmit")); + /** 指定下一节点流转 **/ + + String isCAAuth = Util.null2String(request.getParameter("isCAAuth")); //是否是CA认证,主要是需要CA数据保护时会传此参数的值 + + requestManager.setIsMultiDoc(isMultiDoc); + requestManager.setSrc(src); + requestManager.setIscreate(iscreate); + requestManager.setRequestid(requestid); + requestManager.setWorkflowid(workflowid); + requestManager.setWorkflowtype(workflowtype); + requestManager.setIsremark(isremark); + requestManager.setFormid(formid); + requestManager.setIsbill(isbill); + requestManager.setBillid(billid); + requestManager.setNodeid(nodeid); + requestManager.setNodetype(nodetype); + + requestname = SaveFormDatasBiz.convertSlash(requestname); //mysql数据库单文本处理反斜杠 + requestManager.setRequestname(requestname); + requestManager.setRequestlevel(requestlevel); + requestManager.setRemark(remark); + requestManager.setOneVoteApprove("1".equals(request.getParameter("oneVoteApprove"))); + if(request instanceof weaver.filter.WeaverRequest) { + requestManager.setRequest(request); + } else { + FileUpload fu = new FileUpload(request); + requestManager.setRequest(fu); + } + requestManager.setSubmitNodeId(submitNodeId); + requestManager.setIntervenorid(Intervenorid); + requestManager.setIntervenoridType(IntervenorType); + requestManager.setSignType(SignType); + + String needConformCheck = Util.null2String(request.getParameter("needConformCheck"),"1"); + requestManager.setNeedConformCheck("1".equals(needConformCheck)); + + if("intervenor".equals(src) && !"".equals(Intervenorid)){//配合邮件,干预时set currentoperator属性 + ArrayList intervenoridArr = Util.TokenizerString(Intervenorid,","); + ArrayList intervenortypeArr = Util.TokenizerString(IntervenorType,","); + Hashtable operatorsht = new Hashtable(); + int tempgroupid = 1; + if(SignType == 1 || SignType == 2){//会签 + ArrayList tempoperators = new ArrayList(); + for(int i = 0;i < intervenoridArr.size();i++){ + String operator = intervenoridArr.get(i) + "_" + (intervenortypeArr.size() > i ? intervenortypeArr.get(i) : "0") + "_0_0";//userid_usertype_groupdetailid_signorder--参照requestnodeflow,signorder会签和非会签依次处理均给0 + tempoperators.add(operator); + if(SignType == 2){ + break; + } + } + operatorsht.put(tempgroupid+"",tempoperators); + }else{//非会签 + for(int i = 0;i < intervenoridArr.size();i++){ + String operator = intervenoridArr.get(i) + "_" + (intervenortypeArr.size() > i ? intervenortypeArr.get(i) : "0") + "_0_0";//userid_usertype_groupdetailid_signorder--参照requestnodeflow,signorder会签和非会签依次处理均给0 + ArrayList tempoperators = new ArrayList(); + tempoperators.add(operator); + operatorsht.put(tempgroupid+"",tempoperators); + tempgroupid++; + } + } + + requestManager.setCurrentOperator(operatorsht); + } + + requestManager.setIsFromEditDocument(isFromEditDocument); + requestManager.setUser(user); + requestManager.setIsagentCreater(isagentCreater); + requestManager.setBeAgenter(beagenter); + requestManager.setIsPending(ispending); + requestManager.setRequestKey(wfcurrrid); + requestManager.setCanModify(IsCanModify); + requestManager.setCoadsigntype(coadsigntype); + requestManager.setEnableIntervenor(enableIntervenor);// 是否启用节点及出口附加操作 + requestManager.setRemarkLocation(remarkLocation); + requestManager.setIsFirstSubmit(isFirstSubmit); + requestManager.setComeE9(true); + requestManager.setSelectNextFlow(isSelectNextFlow); + requestManager.setSelectNodeFlowNodeIds(selectNodeFlow_nodeIds); + requestManager.setSelectNextFlowMode(selectNextFlowMode); + //如果是指定流转,并且这个参数不是空,则赋值false,如果没有就是默认true + if(isSelectNextFlow==true&&!"".equals(selectNodeFlowNodeCanFlowNextNode)){ + requestManager.setSelectNodeFlowNodeCanFlowNextNode(Boolean.parseBoolean(selectNodeFlowNodeCanFlowNextNode)); + } +// requestManager.setSelectNodeFlowOperator(selectNodeFlow_operator); +// requestManager.setSelectNodeFlowCCOperator(ccOperator); +// requestManager.setSelectNodeCanSubmit(canSubmit); + requestManager.setClientType(clientType); + setEmSignInfo(requestManager); + // + + LocationFieldSaveBiz locationFieldSaveBiz = new LocationFieldSaveBiz(); + if(request instanceof weaver.filter.WeaverRequest) { + locationFieldSaveBiz.setRequest(request); + } else { + FileUpload fu = new FileUpload(request); + locationFieldSaveBiz.setRequest(fu); + } + locationFieldSaveBiz.setIsBill(isbill); + locationFieldSaveBiz.setFormId(formid); + locationFieldSaveBiz.setPosition(Util.null2String(request.getParameter("position"))); + locationFieldSaveBiz.setPositionName(Util.null2String(request.getParameter("address"))); + locationFieldSaveBiz.setEditFields(Util.null2String(request.getParameter("locationEditFields"))); + locationFieldSaveBiz.setSubmitSrc(src); + locationFieldSaveBiz.setRequestId(requestid); + locationFieldSaveBiz.setNodeid(nodeid); + locationFieldSaveBiz.setUserid(user.getUID()); + + //CA数据保护时,先做保存操作 + if ("1".equals(isCAAuth)) { + requestManager.setSrc("save"); + } + + boolean havaChage = false; + if (docFlag) { + requestDoc.setUser(user); + havaChage = requestDoc.haveChage("" + workflowid, "" + requestid, request); // 如果改变了发文目录 + } + WFManager wfManager = new WFManager(); + wfManager.setWfid(workflowid); + wfManager.getWfInfo(); + String isShowChart = Util.null2s(wfManager.getIsShowChart().trim(),"0"); + String stopInChart =Util.null2s( wfManager.getStopInChart().trim(),"0"); + String stopInForm = Util.null2s(wfManager.getStopInForm().trim(),"0"); + + boolean isShowFlowMessage = isShowChart.equals("3")&&(src.equals("submit")||src.equals("reject")||src.equals("intervenor")); + RequestManagerService requestManagerService = ServiceUtil.getService(RequestManagerServiceImpl.class, user); + boolean savestatus = true; + if (!"1".equals(isFirstSubmit)) { +// savestatus = requestManager.saveRequestInfo(); + //是否为提交需确认 + boolean isNeedConfirm = ("save".equals(src) && "1".equals(request.getParameter("isaffirmance")) ); + if(isNeedConfirm){ + //拿保存前明细表数据,如果requestid=-1,说明是第一次保存,之前没有数据,直接放空的list + Map> detailTableDatasId = new HashMap<>(); + List tablestmp = new ArrayList<>(); + RecordSet rs = new RecordSet(); + RecordSet rs1 = new RecordSet(); + String billDetailKey = RequestFormBiz.getBillDetailKeyField(formid); + String primaryKey = RequestFormBiz.getDetailTablePrimaryKey(formid); + DetailOrderManager detailOrderManager = new DetailOrderManager(); + String mainTablename = ""; + if(isbill == 0) + rs.executeQuery("select distinct groupid as tablename from workflow_formfield where formid=? and isdetail='1' order by groupid",formid); + else + rs.executeQuery("select a.tablename,b.tablename as maintable,a.orderid from workflow_billdetailtable a,workflow_bill b where a.billid = b.id and a.billid = ? order by a.orderid",formid); + int groupid = 1; + if(rs.getCounts() != 0){ + while(rs.next()){ + List datasIdtmp = new ArrayList<>(); + if(isbill == 0){ + if(requestid != -1){ + rs1.executeQuery("select "+primaryKey+" from workflow_formdetail t where requestid="+requestid+" and groupid="+(groupid-1)); + while(rs1.next()){ + datasIdtmp.add(rs1.getString("id")); + } + } + detailTableDatasId.put("workflow_formdetail_"+groupid,datasIdtmp); + tablestmp.add("workflow_formdetail_"+groupid); + }else{ + String detailTablename = rs.getString("tablename"); + mainTablename = rs.getString("maintable"); + if(requestid != -1){ + rs1.executeQuery("select id from "+detailTablename+" where mainid = (select id from "+mainTablename+" where requestid = ?)",requestid); + while(rs1.next()){ + datasIdtmp.add(rs1.getString("id")); + } + } + detailTableDatasId.put(detailTablename,datasIdtmp); + tablestmp.add(detailTablename); + } + groupid++; + } + } + + //保存 + savestatus = requestManagerService.saveRequestInfo(requestManager); + + //取保存后明细表数据 + Map> newDetailTableDatasId = new HashMap<>(); + requestid = requestManager.getRequestid(); + groupid = 1; + for(String tabletmp : tablestmp){ + List datasId = detailTableDatasId.get(tabletmp); + List datasIdtmp = new ArrayList<>(); + String orderSql = " t.id "; + if(isbill == 0){ + if(datasId.size() == 0){ + rs.executeQuery("select "+primaryKey+" from workflow_formdetail t where requestid="+requestid+" and groupid="+(groupid-1) +" order by " + orderSql); + }else{ + rs.executeQuery("select "+primaryKey+" from workflow_formdetail t where requestid="+requestid+" and groupid="+(groupid-1)+" and "+Util.getSubINClause(String.join(",",datasId), "id", "not in")+" order by " + orderSql); + } + + }else{ + if(datasId.size() == 0){ + rs.executeQuery("select "+primaryKey+" from "+tabletmp+" t where "+billDetailKey+" = (select id from "+mainTablename+" where requestid = ?) order by "+orderSql,requestid); + }else{ + rs.executeQuery("select "+primaryKey+" from "+tabletmp+" t where "+billDetailKey+" = (select id from "+mainTablename+" where requestid = ?) and "+Util.getSubINClause(String.join(",",datasId), "id", "not in")+" order by "+orderSql,requestid); + } + } + while(rs.next()){ + datasIdtmp.add(rs.getString(primaryKey)); + } + newDetailTableDatasId.put("detail_" + groupid,datasIdtmp); + groupid++; + } + resultBean.setInsertDetailDatasInfo(newDetailTableDatasId); + } else{ + //使用service来执行表单保存方法,使其支持代理开发 + savestatus = requestManagerService.saveRequestInfo(requestManager); + } + + } else if(!"n".equals(eh_setoperator)){//提交需确认、出口提示、异常处理等,用户点击确认提交后再存入位置信息 + locationFieldSaveBiz.save(); + } + t1 = writeTimeLog(isPrintLogUser,305,t1,"保存完成savestatus:"+savestatus); + requestid = requestManager.getRequestid(); + requestFlowLogEntity.setRequestid(requestid); //将requestid 计入流转日志对象 + requestFlowLogEntity.setNodeid(nodeid); + Map submitParams = resultBean.getSubmitParams(); + resultInfo.put("requestid", requestid); + if(belongTest){ //走过保存逻辑则更新workflow_requestbase为测试状态 + testBiz.updateRequestBaseDeleted(requestid); + } + String timestamp = Util.null2String(request.getParameter("timestamp")); + if(!"".equals(timestamp)) + submitParams.put("timestamp", timestamp); + if("1".equals(iscreate)){ + submitParams.put("isremark", requestManager.getIsremark()); + } + submitParams.put("requestid",requestid); + if(requestid > 0){ + submitParams.put("iscreate", "0"); + } + + //保存页面上选择的提醒方式 + String remindTypes = Util.null2String(request.getParameter("remindTypes")); + RequestRemindBiz.updateRemindTypes(remindTypes,requestid); + + if ("save".equals(src)) { + session.setAttribute("needwfback_" + user.getUID() + "_" + requestid, needwfback); + resultInfo.put("isaffirmance", Util.null2String(request.getParameter("isaffirmance"))); + resultInfo.put("selectNextFlow", Util.null2String(request.getParameter("selectNextFlow"))); + if("1".equals(Util.null2String(request.getParameter("isaffirmance")))){ + SubmitConfirmInfoBiz confirmService = new SubmitConfirmInfoBiz(); + if(agentType == 1) { + //代理出去已办提交,取代理人身份计算下一节点 + confirmService.setUser(new User(agentorByAgentId)); + } else { + confirmService.setUser(user); + } + confirmService.setRequestid(requestid); + confirmService.setWorkflowid(workflowid); + confirmService.setNodeid(nodeid); + confirmService.setFormid(formid); + confirmService.setIsbill(isbill); + confirmService.setWfcurrrid(wfcurrrid); + confirmService.setIsremark(isremark); + confirmService.setSrc("".equals(Util.null2String(request.getParameter("isaffirmanceSrc")))? "submit":request.getParameter("isaffirmanceSrc")); + confirmService.setSubmitNodeId(submitNodeId); + confirmService.setRejectToNodeid(RejectToNodeid); + confirmService.setRejectToType(RejectToType); + confirmService.setFlowToNextFreeNode("1".equals(request.getParameter("flowToNextFreeNode"))); + confirmService.setNewRejectNodeIds(request.getParameter("newRejectNodeIds")); + confirmService.setFreeNodeOperators(Util.null2String(request.getParameter("operatorids"))); + confirmService.setIsToNewAddSign(Util.getIntValue(request.getParameter("isToNewAddSign"))); + confirmService.setCountersignAttribute(Util.getIntValue(request.getParameter("countersignAttribute"))); + + String isaffirmanceSrc =Util.null2String(request.getParameter("isaffirmanceSrc")); + submitParams.put("needwfback", needwfback); + submitParams.put("flowToNextFreeNode", request.getParameter("flowToNextFreeNode")); + //退回确认 + if("reject".equals(isaffirmanceSrc)){ + submitParams.put("RejectNodes",request.getParameter("RejectNodes")); + submitParams.put("RejectToNodeid",request.getParameter("RejectToNodeid")); + submitParams.put("RejectToType",request.getParameter("RejectToType")); + submitParams.put("isSubmitDirect", request.getParameter("isSubmitDirect")); + submitParams.put("newRejectNodeIds",request.getParameter("newRejectNodeIds")); + resultInfo.put("isaffirmanceSrc", "reject"); + } + if(SubmitToNodeid > 0 || FreeNodeBiz.isFreeNode(SubmitToNodeid)){ + submitParams.put("SubmitToNodeid", SubmitToNodeid); + confirmService.setSubmitToNodeid(SubmitToNodeid); + } + + //提交需确认,返回位置信息到前台 + resultInfo.put("position", Util.null2String(request.getParameter("position"))); + String addressKey = "address_" + UUID.randomUUID().toString(); + Util_TableMap.setObjVal(addressKey, Util.null2String(request.getParameter("address"))); + resultInfo.put("address", addressKey); + + resultBean.setMessageInfo(this.generateConfirmInfo(confirmService, "reject".equals(isaffirmanceSrc))); + } + } else if ("submit".equals(src)) { + needwfback = Util.null2String((String) request.getParameter("needwfback")); + String needwfback_s = Util.null2String((String) session.getAttribute("needwfback_" + user.getUID() + "_" + requestid)); + if ("1".equals(needwfback) && "0".equals(needwfback_s)) { + requestManager.setNeedwfback("0"); + } + session.removeAttribute("needwfback_" + user.getUID() + "_" + requestid); + } + // 保存失败(错误提示) + if (!savestatus) { + String message = requestManager.getMessage(); + String messagecontent = requestManager.getMessagecontent(); + if("".equals(message) || requestid <= 0) + message = "1"; + resultBean.setMessageInfo(SubmitErrorMsgBiz.getMsgInfo(request,user,message,messagecontent)); + resultBean.setType(RequestExecuteType.FAILD); + resultBean.setConflictFieldInfo(requestManager.getConflictFieldInfo()); + RequestFlowErrorLogBiz.addDataInQueue(requestManager); + // saveRequestInfo失败后未处理requestnamenew标题需要处理下 + new SetNewRequestTitle().getAllRequestName(new RecordSet(),requestid+"",requestname,workflowid+"",nodeid+"",formid,isbill,user.getLanguage()); + return resultBean; + } + + /**======================流程数据加密处理========================*/ + String CAKey = Util.null2String(request.getParameter("CAKey")); //缓存提交时的数据的key,主要是需要CA认证时的参数 + int protectType = Util.getIntValue(Util.null2String(request.getParameter("protectType")), 0); //二次认证认证成功后的参数,数据保护的方式 + int secondAuthType = Util.getIntValue(Util.null2String(request.getParameter("secondAuthType")), 0); //二次认证认证成功后的参数,二次认证的方式 + int qysSignWay = Util.getIntValue(Util.null2String(request.getParameter("qysSignWay")), 0); //契约锁认证的方式,1:ukey,2:契约锁服务 + String uuidStr = ""; + boolean isNeedUpdate = false; + RequestSecondAuthService requestSecondAuthService = ServiceUtil.getService(RequestSecondAuthServiceImpl.class, user); + if (savestatus) { + if ("1".equals(isCAAuth)) { //需要CA认证,保存后不提交流程,直接返回 + //先保存签字意见 + requestManager.saveRequestLog2(); + + resultBean.setType(RequestExecuteType.SUCCESS); + resultInfo.put("isCAAuth", isCAAuth); + resultInfo.put("CAKey", CAKey); + return resultBean; + } else { + if (protectType == SecondAuthType.QYS.getId() && qysSignWay == 2) { //契约锁数据保护 + String tempRemark = requestManager.getRemark(); + Map protectResult = requestSecondAuthService.protectDatas(requestid, workflowid, formid, isbill, nodeid, tempRemark); + String protectSuccess = Util.null2String(protectResult.get("success")); + if ("0".equals(protectSuccess)) { //说明数据保护失败 + resultBean.setType(RequestExecuteType.FAILD); + + String protectMsg = Util.null2String(protectResult.get("message")); + resultBean.setMessageInfo(SecondAuthUtil.getErrorMsg(user, protectMsg)); + return resultBean; + } else if ("1".equals(protectSuccess)) { + isNeedUpdate = true; + uuidStr = Util.null2String(protectResult.get("uuid")); + } + } + } + } + + /** Save Detail end* */ + boolean flowstatus = true; + if (!"save".equals(src) || isremark != 1) { + if ("n".equals(eh_setoperator)) { // 异常处理窗口未选择操作者,以提交失败处理 + flowstatus = false; + JSONObject msgjson = new JSONObject(); + String ehnextnodeid = Util.null2String(request.getParameter("ehnextnodeid")); + String bottom = "" + SystemEnv.getHtmlLabelName(126560, user.getLanguage()) + "," + SystemEnv.getHtmlLabelName(126554, user.getLanguage()) + + " " + SystemEnv.getHtmlLabelName(126555, user.getLanguage()) + " " + SystemEnv.getHtmlLabelName(126561, user.getLanguage()) + + ""; + msgjson.put("details", bottom); + requestManager.setMessagecontent(msgjson.toString()); + resultBean.setMessageInfo(SubmitErrorMsgBiz.getMsgInfo(request,user,WorkflowRequestMessage.WF_REQUEST_ERROR_CODE_07,requestManager.getMessagecontent())); + resultBean.setType(RequestExecuteType.FAILD); + return resultBean; + } else { + if ("y".equals(eh_setoperator)) { + // 异常处理选择了操作者,拼装操作者信息 + requestManager.createEh_operatorMap_pc(); + } + + if(belongTest && RobotNodeBiz.isRobotNode(nodetype)){ + RobotNodeFlowBiz robotNodeFlowBiz = new RobotNodeFlowBiz(); + Map robotFlowResult = robotNodeFlowBiz.robotNodeFlow(new RobotNodeServiceBiz().getRobotNodeSet(nodeid),requestid, workflowid, nodeid, true); + flowstatus = (Boolean) robotFlowResult.get("flowResult"); + if(robotFlowResult.get("requestmanager") != null) requestManager = (RequestManager) robotFlowResult.get("requestmanager"); + }else { + //使用service来执行向下流转方法,使其支持代理开发 + flowstatus = requestManagerService.flowNextNode(requestManager); + } + + if(!flowstatus) {//流程提交失败,回滚位置信息 + requestManager.rollbackLocationFieldValue(); + if (locationFieldSaveBiz.isSaved()) { + locationFieldSaveBiz.rollback(); + } + RequestFlowErrorLogBiz.addDataInQueue(requestManager); + // 流程提交失败 更新requestnamenew标题 + new SetNewRequestTitle().getAllRequestName(new RecordSet(),requestid+"",requestname,workflowid+"",nodeid+"",formid,isbill,user.getLanguage()); + } + + t1 = writeTimeLog(isPrintLogUser,445,t1,"流转下一节点flowstatus:"+flowstatus); + // 出口提示 + if (!flowstatus && (WorkflowRequestMessage.WF_CUSTOM_LINK_TIP).equals(requestManager.getMessage())) { + String ismode = Util.null2String(request.getParameter("ismode")); + String divcontent = Util.null2String(request.getParameter("divcontent")); + String content = Util.null2String(request.getParameter("content")); + resultInfo.put("divcontent", divcontent); + resultInfo.put("content", content); + + Map detailRowPerInfo = new HashMap(); + Set keyset = requestManager.getNewAddDetailRowPerInfo().keySet(); + Iterator it1 = keyset.iterator(); + while (it1.hasNext()) { + String rowid = it1.next(); + int rowno = requestManager.getNewAddDetailRowPerInfo().get(rowid); + detailRowPerInfo.put(rowid, rowno); + it1.remove(); + } + resultInfo.put("detailRowPerInfo", detailRowPerInfo); + resultInfo.put("msgcontent", requestManager.getMessagecontent()); + resultBean.setType(RequestExecuteType.WF_LINK_TIP); + return resultBean; + } + + if (!flowstatus && requestManager.isNeedChooseOperator()) { // 流转异常处理,找不到操作者且后台设置了提交至指定人员 + resultInfo.put("needChooseOperator", "y"); + resultInfo.put("ehnextnodeid", requestManager.getNextNodeid()); + submitParams.put("needwfback", needwfback); + resultBean.setType(RequestExecuteType.R_CHROSE_OPERATOR); + return resultBean; + } + + + if(flowstatus&&isShowFlowMessage){ + GetNextNodeContentBiz getNextNodeContentBiz = new GetNextNodeContentBiz(user); + getNextNodeContentBiz.getNextNodeContent(resultBean,nodeid,requestManager.getRequestid(),submitNodeId,src); + resultInfo.put("isShowChart", isShowChart); + } + } + } else { + // 被转发人保存 + RequestLog requestLog = new RequestLog(); + if(request instanceof weaver.filter.WeaverRequest) { + requestManager.setRequest(request); + } else { + FileUpload fu = new FileUpload(request); + requestManager.setRequest(fu); + requestLog.setRequest(fu); + } + requestLog.saveLog(workflowid, requestid, nodeid, "1", remark, user); + } + + if (flowstatus) { //流转成功,更新保护数据跟签字意见的关系 + String authKey = Util.null2String(request.getParameter("authKey")); + String isProtectSuccess = Util.null2String(request.getParameter("isProtectSuccess")); + String isAuthSuccess = Util.null2String(request.getParameter("isAuthSuccess")); + + if (protectType == SecondAuthType.QYS.getId()&&qysSignWay == 2) { //契约锁数据保护 + if (isNeedUpdate && !"".equals(uuidStr)) { //契约锁服务签署 + requestSecondAuthService.updateProtectDatas(requestid, workflowid, nodeid, uuidStr); + } + } else if (protectType == SecondAuthType.CAAuth.getId()|| + (protectType == SecondAuthType.QYS.getId()&&qysSignWay == 1)) { //CA数据保护 + if ("1".equals(isProtectSuccess) && !"".equals(authKey)) { + requestSecondAuthService.updateProtectDatas(requestid, workflowid, nodeid, authKey); + } + } + + //契约锁二次认证或者契约锁数据保护 + if ((secondAuthType == SecondAuthType.QYS.getId() && "1".equals(isAuthSuccess)) || + (protectType == SecondAuthType.QYS.getId() && (isNeedUpdate || (qysSignWay == 1 && "1".equals(isProtectSuccess))))) { + String sealId = Util.null2String(request.getParameter("qysSealId")); + String sealImg = Util.null2String(request.getParameter("qysSealImg")); + String certDetails = Util.null2String(request.getParameter("qysCertDetails")); + + //查询本次操作插入的日志的id + int logId = SecondAuthBiz.getLogId(requestid, workflowid, nodeid, user); + + //保存契约锁验证的盖章信息 + Map authParam = new HashMap(); + authParam.put("sealId", sealId); + authParam.put("sealImg", sealImg); + authParam.put("certDetails", certDetails); + authParam.put("logid", logId); + authParam.put("requestId", requestid); + SecondAuthBiz.saveQYSSignature(authParam, user); + } + } + + if (!flowstatus) { + String message = requestManager.getMessage(); + if (!message.equals("")) { + resultInfo.put("isintervenor", isintervenor); + } else { + message = "2"; + } + resultBean.setMessageInfo(SubmitErrorMsgBiz.getMsgInfo(request,user,message,requestManager.getMessagecontent())); + resultBean.setType(RequestExecuteType.FAILD); + return resultBean; + } + + //判断下一节点操作者是否为当前处理人 正在自动流转也关闭窗口 + boolean isNextNodeOperator = false; + if(("reject".equals(src) || "submit".equals(src)) && "0".equals(isShowChart) && requestManager.getNodeInfoCache().size()==0){ + String logintype = user.getLogintype(); //当前用户类型 1: 类别用户 2:外部用户 + int usertype = 0; + if(logintype.equals("1")) usertype = 0; + if(logintype.equals("2")) usertype = 1; + recordSet.executeSql("select requestid,isremark from workflow_currentoperator where userid="+userid+" and usertype="+usertype+" and requestid="+requestid + " and isremark in ('0','8','9','6')"); + while(recordSet.next()) { + isNextNodeOperator = true; + if("6".equals(Util.null2String(recordSet.getString("isremark")))){ + isNextNodeOperator = false; + break; + } + } + resultInfo.put("isNextNodeOperator", isNextNodeOperator); + } + + if("1".equals(comemessage) && !"save".equals(src) && !isNextNodeOperator){ + resultBean.setType(RequestExecuteType.SEND_PAGE); + resultBean.setSendPage(weaver.general.GCONST.getContextPath()+"/spa/workflow/index_mobx.jsp#/main/workflow/listDoing"); + return resultBean; + } + /**** 至此处代表流程提交成功,流程测试串需换成下一节点操作者信息,覆盖原串信息 ****/ + if(belongTest){ + String wfTestStrNew = testBiz.calculateNextOperator(request.getSession(), workflowid, requestid, requestManager.getNextNodeid()); + testParams.put("requestid", requestid); + testParams.put("wfTestStr", wfTestStrNew); + } + + if(!belongTest) this.isNeedRemind(resultInfo,recordSet,requestManager); //流程提醒 + + new Thread(new CptWfUtil(requestManager, "freezeCptnum")).start(); + String fromPDA = Util.null2String((String) attrSignatureUtil.getAttribute("loginPAD")); + if (method.equals("")) { + if (docFlag) { + DocCheckInOutUtil dcou = new DocCheckInOutUtil(); + dcou.docCheckInWhenRequestOperation(user, requestid, request); + RequestDoc requestDocNew = new RequestDoc(); + requestDocNew.setUser(user); + requestDocNew.changeDocFiled("" + workflowid, "" + requestid, request, user.getLanguage(), havaChage); // 如果改变了发文目录 + } + if (!topage.equals("")) { + + } else { + String pcUrl = wfManager.getShowChartUrl(); + String mobileUrl = wfManager.getMobileUrl(); + + if (iscreate.equals("1")) { + resultBean.setType(RequestExecuteType.SUCCESS); + if(!"save".equals(src)){ + if(isShowChart.equals("1")) { + WorkflowConfigComInfo workflowConfigComInfo = new WorkflowConfigComInfo(); + String mobile_showchart = Util.null2String(workflowConfigComInfo.getValue("mobile_showchart")); + resultInfo.put("pcUrl", pcUrl); + resultInfo.put("mobileUrl", mobileUrl); + resultInfo.put("stopInChart", stopInChart); + resultInfo.put("mobile_showchart", mobile_showchart); + } + resultInfo.put("isShowChart", isShowChart); + } + } else { + if ("delete".equals(src) && savestatus && flowstatus) { + resultBean.setType(RequestExecuteType.DELETE); + resultInfo.put("label", SystemEnv.getHtmlLabelName(20461, user.getLanguage())); + } else { + String docFlags = Util.null2String((String) attrSignatureUtil.getAttribute("requestAdd" + requestid)); // 流程建文档相关 + + // String isShowPrompt = "true"; + if (docFlags.equals("1")) { + resultBean.setType(RequestExecuteType.SUCCESS); + } else { + if (fromPDA.equals("1")) { + resultBean.setType(RequestExecuteType.SUCCESS); + } else { + if(isShowChart.equals("1")) { + WorkflowConfigComInfo workflowConfigComInfo = new WorkflowConfigComInfo(); + String mobile_showchart = Util.null2String(workflowConfigComInfo.getValue("mobile_showchart")); + resultInfo.put("pcUrl", pcUrl); + resultInfo.put("mobileUrl", mobileUrl); + resultInfo.put("stopInChart", stopInChart); + resultInfo.put("mobile_showchart", mobile_showchart); + } + resultInfo.put("isShowChart", isShowChart); + resultBean.setType(RequestExecuteType.SUCCESS); + } + } + } + } + } + }else{ + String adddocfieldid = method.substring(7) ; + String addMethod=method.substring(0,7) ; + if(adddocfieldid.indexOf("_")>0) + { + String docrowindex = Util.null2String(requestManager.getDocrowindex()); + if(!docrowindex.equals("")) + adddocfieldid = adddocfieldid.substring(0,adddocfieldid.indexOf("_"))+"_"+docrowindex; + } + + //新建文档 + if(("docnew_"+isMultiDoc).equals(method)){ + resultInfo.put("isToCreateDocPage", "1"); + String notencoderToPage = weaver.general.GCONST.getContextPath()+"/workflow/request/ViewRequestForwardSPA.jsp?f_weaver_belongto_userid="+userid+"&f_weaver_belongto_usertype="+f_weaver_belongto_usertype+"&requestid="+requestid+"&docfileid="+adddocfieldid+"&topage="+topage+"&urger="+urger+"&isintervenor="+isintervenor; + topage = URLEncoder.encode(notencoderToPage); + resultBean.setSendPage(weaver.general.GCONST.getContextPath()+"/docs/docs/DocList.jsp?hasTab=1&workflowid="+workflowid+"&isOpenNewWind=0&topage="+topage); + resultBean.setType(RequestExecuteType.SUCCESS); + }else{ + resultBean.setType(RequestExecuteType.SUCCESS); + } + } + t1 = writeTimeLog(isPrintLogUser,582,t1,"提交结束"); + return resultBean; + } + + + @Override + public BizLogContext getLogContext() { + return null; + } + + private Map generateConfirmInfo(SubmitConfirmInfoBiz confirmService,boolean isReject){ + Map msgInfo = new HashMap(); + String title = isReject ? SystemEnv.getHtmlLabelName(386334, user.getLanguage()) + ":" : SystemEnv.getHtmlLabelName(386336, user.getLanguage()) + ":"; + msgInfo.put("prompttype", PromptType.CONFIRMINFO.getType()); + msgInfo.put("title", title); + boolean isSuccess = false; //是否获取成功 + String titlesuffix = ""; + String nodeNameValue = ""; + String nodeIds = ""; + try { + if(confirmService.getIsToNewAddSign() == 0) { + confirmService.setFlowToNextFreeNode(true); + } + Map result = confirmService.getRequestoperator(); + if (result == null || result.isEmpty()) + throw new Exception("Empty Result"); + msgInfo.put("hasPassThisNode", result.get("hasPassThisNode")); + if (result.containsKey("isWaitMerge")) { + isSuccess = true; + titlesuffix = SystemEnv.getHtmlLabelName(21399, user.getLanguage()); + nodeNameValue = SystemEnv.getHtmlLabelName(21399, user.getLanguage()); + } else if(result.containsKey("simpleModeAddFreeNode")) { + titlesuffix = SystemEnv.getHtmlLabelName(83284, user.getLanguage()); + nodeNameValue = SystemEnv.getHtmlLabelName(83284, user.getLanguage()); + isSuccess = true; + msgInfo.put("operators", result.get("operatorlist")); + } else { + isSuccess = true; + this.removeRepeat(result);//去除重复 + msgInfo.put("operators", result.get("operatorlist")); + titlesuffix = Util.null2String(result.get("nodename")); + nodeNameValue = Util.null2String(result.get("nodenameValue")); + nodeIds = Util.null2String(result.get("nodeid")); + } + + } catch (Exception e) { + e.printStackTrace(); + //抛异常全部当获取失败处理 + isSuccess = false; + } + if(!isSuccess && "".equals(titlesuffix)) + titlesuffix = SystemEnv.getHtmlLabelName(127889, user.getLanguage()); + msgInfo.put("isSuccess", isSuccess); + msgInfo.put("titlesuffix", titlesuffix); + msgInfo.put("nodeNameValue", nodeNameValue); + msgInfo.put("nodeIds", nodeIds); + return msgInfo; + } + + private long writeTimeLog(boolean isPrintLogUser,int linenum,long t1,String msg){ + if(isPrintLogUser) { + writeLog(linenum + "----------userid:" + user.getUID() + ",requestid:"+Util.null2String(request.getParameter("requestid")) + ",time:" +(System.currentTimeMillis() - t1)/1000 +"--" + msg); + } + return System.currentTimeMillis(); + } + + + /** + * 去除重复 + * @param result + */ + private void removeRepeat(Map result){ + List> operatorlist = (List>)result.get("operatorlist"); + if(operatorlist != null && operatorlist.size() > 0){ + Iterator> iterator = operatorlist.iterator(); + Set sets = new HashSet<>(); + while(iterator.hasNext()){ + Map operator = iterator.next(); + String jsonStr = com.alibaba.fastjson.JSONObject.toJSONString(operator); + if(sets.contains(jsonStr)){ + iterator.remove(); + } else { + sets.add(jsonStr); + } + } + } + } + + //判断是否正在进行自动批准 + private boolean isAutoApproving(int requestid,int nodeid,RequestOperationResultBean resultBean){ + RecordSet rs = new RecordSet(); + rs.executeQuery("select isremark from workflow_currentoperator where requestid = ? and nodeid = ? and userid = ? and isremark = '6' ",requestid,nodeid,user.getUID()); + if(rs.next()) { + resultBean.setType(RequestExecuteType.FAILD); + Map resultInfo = resultBean.getResultInfo(); + resultInfo.put("requestid", requestid); + Map errorMsg = new HashMap <>(); + errorMsg.put("prompttype", PromptType.ERRORMSG.getType()); + errorMsg.put("title", ""+ SystemEnv.getHtmlLabelName(10005636,weaver.general.ThreadVarLanguage.getLang())+""); + resultBean.setMessageInfo(errorMsg); + return true; + } + return false; + } + + //设置移动端保存参数 + public void setEmSignInfo(RequestManager requestManager){ + int speechAttachment = Util.getIntValue(request.getParameter("speechAttachment")); + String handWrittenSign = Util.null2String(request.getParameter("handWrittenSign")); + requestManager.setSpeechAttachment(speechAttachment); + requestManager.setHandWrittenSign(handWrittenSign); + } + + /** + * 流程提交-提醒 + * 根据提醒字段判断是否是老提醒,老提醒根据提醒字段做提醒 + * 不是老提醒,判断提交后是否需要自主选择提醒接收人,需要则返回标识, + * 不需要则读取默认提醒设置做提醒 + * @param resultInfo + * @param recordSet + * @param requestManager + */ + private void isNeedRemind(Map resultInfo,RecordSet recordSet,RequestManager requestManager){ + String isaffirmance = Util.null2String(resultInfo.get("isaffirmance")); + if(RobotNodeBiz.isRobotNode(requestManager.getNextNodetype()) || "1".equals(isaffirmance)){ + return ; + } + + resultInfo.put("needRemind", false); + //前端表单用户选择的提醒方式,E8历史数据该参数值默认为 -1 + String remindTypes = Util.null2String(request.getParameter("remindTypes")); + + String src = Util.null2String(request.getParameter("src")); + if (!("submit".equals(src) || "reject".equals(src) || "intervenor".equals(src))) return; + + //自动审批的节点不需要提醒,如果都自动审批掉了,这次提交就不需提醒了,直接去提醒自动审批提交后的节点 + Set remindNodes = this.remindNodes(requestManager); + if (remindNodes.isEmpty()) return ; + + int requestid = requestManager.getRequestid(); + int workflowid = Util.getIntValue(request.getParameter("workflowid"), -1); + WFManager wfManager = new WFManager(); + try { + wfManager.setWfid(workflowid); + wfManager.getWfInfo(); + } catch (Exception e){ e.printStackTrace(); } + + //E8提醒设置兼容 + if ("-1".equals(remindTypes)) { + this.doRemindWithE8(wfManager,requestid,workflowid,src); + return; + } + + //E9 + if (!RequestRemindBiz.isOpenRemind(wfManager)) return; + recordSet.executeQuery("select remindscope from workflow_base where id = ? ", workflowid); + recordSet.next(); + int remindscope = Util.getIntValue(recordSet.getString("remindscope"),0); + + boolean isflowNext = RequestRemindBiz.isflowNext(requestid,src,user.getUID()); + + if("1".equals(wfManager.getIsChoseReminder())) { + String nodetype = Util.null2String(request.getParameter("nodetype")); + if (!"intervenor".equals(src) && isflowNext && remindscope !=1 && !Strings.isNullOrEmpty(remindTypes) && !"4".equals(nodetype)) { + resultInfo.put("needRemind", true); + return ; + } + } + + this.doRemindWithE9(requestid,workflowid,src,remindTypes,isflowNext); + return ; + } + + private void doRemindWithE9(int requestid, int workflowid,String src,String remindTypes, boolean isflowNext){ + RequestRemindBiz requestRemindBiz = new RequestRemindBiz(user,requestid,workflowid,src); + String isSmsRemind = remindTypes.indexOf(RemindTypeEnum.SMS.getCode()) > -1 ? "1" : "0"; + String isEmailRemind = remindTypes.indexOf(RemindTypeEnum.EMAIL.getCode()) > -1 ? "1" : "0"; + if (isflowNext) { + if("1".equals(isSmsRemind)) requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.SMS,0); + if("1".equals(isEmailRemind)) requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.EMAIL,0); + RequestRemindBiz.updateRemindTypes("",requestid); + } else { + requestRemindBiz.doRemind(requestid,user.getUID(),workflowid,src,isSmsRemind,isEmailRemind); + } + requestRemindBiz.requestEmailApproveRemind(String.valueOf(workflowid),String.valueOf(requestid),src); + } + + /** + * E8数据流程提醒 + * @param wfManager + * @param requestid + * @param workflowid + * @param src + */ + private void doRemindWithE8(WFManager wfManager,int requestid, int workflowid,String src){ + + RequestRemindBiz requestRemindBiz = new RequestRemindBiz(user,requestid,workflowid,src); + int messageType = Util.getIntValue(Util.null2String(request.getParameter("messageType")),-1); // 老短信提醒 + int mailMessageType = Util.getIntValue(Util.null2String(request.getParameter("chatsType")),-1); // 老邮件提醒 + //历史数据可能只有短信提醒,但是其实也开启了邮件提醒 + int _mailMessageType = Util.getIntValue(wfManager.getMailMessageType(),-1); + boolean isflowNext = RequestRemindBiz.isflowNext(requestid,src,user.getUID()); + if (isflowNext) { + if(messageType >=1) { + requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.SMS,messageType); + } + if(mailMessageType == 1 || _mailMessageType == 1) { + requestRemindBiz.requestRemind(requestid,workflowid,src,RemindTypeEnum.EMAIL,0); + } + } else { + String isSmsRemind = messageType >=1 ? "1" : "0"; + String isEmailRemind = (mailMessageType == 1 || _mailMessageType == 1) ? "1" : "0"; + requestRemindBiz.doRemind(requestid,user.getUID(),workflowid,src,isSmsRemind,isEmailRemind); + } + requestRemindBiz.requestEmailApproveRemind(String.valueOf(workflowid),String.valueOf(requestid),src); + return; + } + /** + * 下一节点中,除去自动审批的节点(自动审批节点不需要提醒) + * @param requestManager + * @return + */ + private Set remindNodes(RequestManager requestManager){ + + List nextNodeids = requestManager.getNextnodeids(); + Map nodeInfoCache = requestManager.getNodeInfoCache(); + Set nodeInfoCacheKey = nodeInfoCache.keySet(); + + Set nodeIds = new HashSet<>(); + for(Object id : nextNodeids){ + int intId = Util.getIntValue((String)id); + boolean exists = false; + for(Integer cacheId : nodeInfoCacheKey){ + if(cacheId == intId){ exists = true; } + } + if(!exists){ + nodeIds.add(intId); + } + } + + return nodeIds; + } + + + private void initParams() { + String[] initParamsKeys = {"requestid","workflowid","formid","isbill","remark","iscreate","isremark","f_weaver_belongto_userid", + "f_weaver_belongto_usertype","src","workflowtype","nodeid","nodetype","creater","creatertype","SubmitToNodeid","RejectToNodeid"}; + this.params = new HashMap<>(); + for(String paramKey : initParamsKeys) { + params.put(paramKey,request.getParameter(paramKey)); + } + } +} diff --git a/src/com/engine/workflow/cmd/requestForm/communication/DoSaveContentCmd.java b/src/com/engine/workflow/cmd/requestForm/communication/DoSaveContentCmd.java index 63f6582a..62f85658 100644 --- a/src/com/engine/workflow/cmd/requestForm/communication/DoSaveContentCmd.java +++ b/src/com/engine/workflow/cmd/requestForm/communication/DoSaveContentCmd.java @@ -1,19 +1,33 @@ package com.engine.workflow.cmd.requestForm.communication; +import com.alibaba.fastjson.JSON; import com.customization.qc2563600.CCOperatorUtil; +import com.customization.wfTodoCard.service.CheckSendCardService; import com.engine.common.biz.AbstractCommonCommand; import com.engine.common.entity.BizLogContext; import com.engine.core.interceptor.CommandContext; import com.engine.workflow.biz.WorkflowCommunicationBiz; import com.engine.workflow.entity.requestForm.communication.Content; +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.StringUtils; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.safety.Whitelist; +import org.jsoup.select.Elements; import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; import weaver.hrm.resource.ResourceComInfo; import weaver.interfaces.dito.comInfo.PropBean; - +import weaver.workflow.request.RequestSignRelevanceWithMe; import java.lang.reflect.Method; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.CharsetDecoder; +import java.nio.charset.CharsetEncoder; +import java.nio.charset.StandardCharsets; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; @@ -43,6 +57,7 @@ public class DoSaveContentCmd extends AbstractCommonCommand> int communicationId = Util.getIntValue(Util.null2String(params.get("communicationId")), 0); int requestId = Util.getIntValue(Util.null2String(params.get("requestid"))); + String requestName = ""; String nodeid = Util.null2String(params.get("nodeid")); //没有传交流id,补偿一下 if (communicationId == 0) { @@ -56,11 +71,16 @@ public class DoSaveContentCmd extends AbstractCommonCommand> rs.next(); communicationId = WorkflowCommunicationBiz.getOrNewCommunicationId(refRequestId, Util.getIntValue(rs.getString("workflowid"))); requestId = refRequestId; + requestName = Util.null2String(rs.getString("REQUESTNAME")); }else{ communicationId = WorkflowCommunicationBiz.getOrNewCommunicationId(requestId, workflowId); } } + + String remark = Util.null2String(params.get("remark")); + new BaseBean().writeLog("DoSaveContentCmd-remark1:"+remark); + String quouteRemark = Util.null2String(params.get("quouteRemark")); int quoteContentId = Util.getIntValue(Util.null2String(params.get("contentId")), -1); String quoteType = Util.null2String(params.get("quote_type")); @@ -132,12 +152,117 @@ public class DoSaveContentCmd extends AbstractCommonCommand> WorkflowCommunicationBiz.resetNewCommunicationReadLog(communicationId, user, remark); } + // 获取 at 的人员 id,发送卡片 + String isSelectValue = Util.null2String(params.get("isSelectValue")); + new BaseBean().writeLog("isSelectValue=======>" + isSelectValue); + if ("1".equals(isSelectValue) || "true".equals(isSelectValue)) { +// String newremark = Util.null2String(remark).replace("

", "").replace("

", ""); +// String output = newremark.replaceAll("]*>.*?", "").replace(" ", " "); + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + Document doc = Jsoup.parse(remark); + List result = new ArrayList(); + String title = ""; + + Elements uidElements = doc.select("[atsome-uid]"); + Iterator uidIt = uidElements.iterator(); + while(uidIt.hasNext()) { + Element element = uidIt.next(); + String atsomeUid = element.attr("atsome-uid"); + if(!result.contains(atsomeUid)){ + result.add(atsomeUid); + } + } + + // 选择所有的

标签 + Elements pTags = doc.select("p"); + + Iterator pIt = pTags.iterator(); + while(pIt.hasNext()) { + Element element = pIt.next(); + title += element.text(); + } + new BaseBean().writeLog("DoSaveContentCmd-title11:"+title); + try{ + if(title.contains("ñ")){ + + title = StringEscapeUtils.unescapeHtml4(title); + new BaseBean().writeLog("DoSaveContentCmd-title22:"+title); + } + if(title.contains("ñ")){ + + title = title.replace("ñ", "ñ"); + new BaseBean().writeLog("DoSaveContentCmd-title33:"+title); + } + new BaseBean().writeLog("DoSaveContentCmd-title44:"+title); + }catch (Exception e){ + new BaseBean().writeLog("e1:"+e); + } + + if(result.size() > 0){ + for(int i= 0;i 标签 +// Elements aTags = doc.select("a"); +// for (int i = 0; i < aTags.size(); i++) { +// Element aTag = aTags.get(i); +// // 获取 atsome-name 属性值作为人名 +// String name = aTag.attr("atsome-name"); +// if (!name.isEmpty()) { +// // 创建文本节点 +// TextNode textNode = new TextNode("@" + name, doc.baseUri()); +// // 在 标签后面插入文本节点 +// aTag.after(textNode); +// // 移除 标签 +// aTag.remove(); +// } +// } +// String html = doc.body().html(); +// new BaseBean().writeLog("html=======>" + html); + + RequestSignRelevanceWithMe reqsignwm = new RequestSignRelevanceWithMe(); + List atResourceids = reqsignwm.parseRemark(remark); + if (atResourceids.size() > 0){ + new BaseBean().writeLog("html2====>"+ JSON.toJSONString(atResourceids)); + for (String atResourceid : atResourceids) { + new CheckSendCardService().sendShareCard(""+user.getUID(), atResourceid, String.valueOf(requestId),requestName,title,"You have been tagged in a comment."); + } + }else{ + new BaseBean().writeLog("atResourceids====> is empty <<< "); + } + } + + //抄送(不需提交)给@的人员 new BaseBean().writeLog("qc2563600===>>开始执行抄送(不需提交)给@的人员,remark:" + remark); CctoAtUser(nodeid,requestId,remark,user); + new BaseBean().writeLog("test222"); + //发送给门户抄送不需提交,待阅 toMenhuDaiyue(requestId+"",nodeid,remark); + new BaseBean().writeLog("test3333"); apidatas.put("result", contentId != -1); @@ -151,7 +276,7 @@ public class DoSaveContentCmd extends AbstractCommonCommand> * @param remark */ private void CctoAtUser(String nodeid, int requestid, String remark,User user) { - + new BaseBean().writeLog("CctoAtUser"); String pattern = "(?i)atsome=\\\"\\@[0-9]*"; Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(remark); @@ -169,6 +294,7 @@ public class DoSaveContentCmd extends AbstractCommonCommand> } private void toMenhuDaiyue(String reqid,String nodeid,String remark){ + new BaseBean().writeLog("toMenhuDaiyue"); List> todolist = new ArrayList(); RecordSet rs = new RecordSet(); RecordSet rs1 = new RecordSet(); @@ -220,6 +346,7 @@ public class DoSaveContentCmd extends AbstractCommonCommand> String passwd = PropBean.getUfPropValue("passwd"); String center = PropBean.getUfPropValue("center"); String bpm_workflowurl = PropBean.getUfPropValue("bpm_workflowurl"); + new BaseBean().writeLog("bpm_workflowurl22:"+bpm_workflowurl); Class clazz = Class.forName("com.customization.dito.sendtodo.SendPortalAtAddTodoCmd"); if(clazz.getMethod("sendTodoDataByNode",new Class[]{String.class,List.class,String.class,String.class,String.class,String.class,String.class,String.class,String.class}) != null) { diff --git a/src/com/engine/workflow/cmd/requestForm/communication/DoSaveReply.java b/src/com/engine/workflow/cmd/requestForm/communication/DoSaveReply.java index afde960c..debf2033 100644 --- a/src/com/engine/workflow/cmd/requestForm/communication/DoSaveReply.java +++ b/src/com/engine/workflow/cmd/requestForm/communication/DoSaveReply.java @@ -1,16 +1,27 @@ package com.engine.workflow.cmd.requestForm.communication; import com.customization.qc2563600.CCOperatorUtil; +import com.customization.wfTodoCard.service.CheckSendCardService; import com.engine.common.biz.AbstractCommonCommand; import com.engine.common.entity.BizLogContext; import com.engine.core.interceptor.CommandContext; import com.engine.workflow.biz.WorkflowCommunicationBiz; import com.engine.workflow.entity.requestForm.communication.Reply; +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.StringUtils; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.nodes.Node; +import org.jsoup.nodes.TextNode; +import org.jsoup.select.Elements; import weaver.conn.RecordSet; +import weaver.general.BaseBean; import weaver.general.Util; import weaver.hrm.User; import weaver.hrm.resource.ResourceComInfo; import weaver.interfaces.dito.comInfo.PropBean; +import weaver.workflow.request.RequestSignRelevanceWithMe; import java.lang.reflect.Method; import java.text.DateFormat; @@ -120,6 +131,128 @@ public class DoSaveReply extends AbstractCommonCommand> { toMenhuDaiyue(communicationId,requestid,nodeid,remark); } + + // 获取 at 的人员 id,发送卡片 + String isSelectValue = Util.null2String(params.get("isSelectValue")); + new BaseBean().writeLog("isSelectValue=======>" + isSelectValue); + if ("1".equals(isSelectValue)) { + + RecordSet rs = new RecordSet(); + rs.executeQuery("select requestid from workflow_communicationbase where id = ?", communicationId); + rs.next(); + String requestId = rs.getString("requestid"); + new BaseBean().writeLog("requestId=======>" + requestId); + rs.executeQuery("select * from workflow_requestbase where requestid = ?",requestId); + rs.next(); + String requestName = Util.null2String(rs.getString("REQUESTNAME")); + new BaseBean().writeLog("requestName=======>" + requestName); + +// String newremark = Util.null2String(remark).replace("

", "").replace("

", ""); +// String output = newremark.replaceAll("]*>.*?", "").replace(" ", " "); + + BaseBean bb = new BaseBean(); + Document doc = Jsoup.parse(remark); + + List result = new ArrayList(); + String title = ""; + + Elements uidElements = doc.select("[atsome-uid]"); + Iterator uidIt = uidElements.iterator(); + while(uidIt.hasNext()) { + Element element = uidIt.next(); + String atsomeUid = element.attr("atsome-uid"); + if(!result.contains(atsomeUid)){ + result.add(atsomeUid); + } + } + + // 选择所有的

标签 + Elements pTags = doc.select("p"); + +// for (int i = 0; i < pTags.size(); i++) { +// Element pTag = pTags.get(i); +// // 获取

标签内的子节点列表 +// List childNodes = pTag.clone().childNodes(); +// // 按顺序将子节点插入到

标签的位置 +// for (int j = childNodes.size() - 1; j >= 0; j--) { +// pTag.after(childNodes.get(j)); +// } +// // 移除

标签 +// pTag.remove(); +// } +// // 选择所有的 标签 +// Elements aTags = doc.select("a"); +// for (int i = 0; i < aTags.size(); i++) { +// Element aTag = aTags.get(i); +// // 获取 atsome-name 属性值作为人名 +// String name = aTag.attr("atsome-name"); +// if (!name.isEmpty()) { +// // 创建文本节点 +// TextNode textNode = new TextNode("@" + name, doc.baseUri()); +// // 在 标签后面插入文本节点 +// aTag.after(textNode); +// // 移除 标签 +// aTag.remove(); +// } +// } + + Iterator pIt = pTags.iterator(); + while(pIt.hasNext()) { + Element element = pIt.next(); + title += element.text(); + } + + new BaseBean().writeLog("DoSaveReply-title11:"+title); + try{ + if(title.contains("ñ")){ + + title = StringEscapeUtils.unescapeHtml4(title); + new BaseBean().writeLog("DoSaveReply-title22:"+title); + } + if(title.contains("ñ")){ + + title = title.replace("ñ", "ñ"); + new BaseBean().writeLog("DoSaveReply-title33:"+title); + } + new BaseBean().writeLog("DoSaveReply-title44:"+title); + }catch (Exception e){ + new BaseBean().writeLog("e1:"+e); + } + + if(result.size() > 0){ + for(int i= 0;i" + html); + + RequestSignRelevanceWithMe reqsignwm = new RequestSignRelevanceWithMe(); + List atResourceids = reqsignwm.parseRemark(remark); + for (String atResourceid : atResourceids) { + new CheckSendCardService().sendShareCard(""+user.getUID(), atResourceid, String.valueOf(requestId),requestName,title,"You have been tagged in a comment."); + } + } + apidatas.put("result", insertReplyId > 0); return apidatas; diff --git a/src/com/engine/workflow/cmd/workflowOvertime/DoHandle_CommonProcessCmd.java b/src/com/engine/workflow/cmd/workflowOvertime/DoHandle_CommonProcessCmd.java index 4b619051..4590ebf5 100644 --- a/src/com/engine/workflow/cmd/workflowOvertime/DoHandle_CommonProcessCmd.java +++ b/src/com/engine/workflow/cmd/workflowOvertime/DoHandle_CommonProcessCmd.java @@ -14,6 +14,7 @@ import weaver.conn.RecordSet; import weaver.cpt.util.CptWfUtil; import weaver.general.BaseBean; import weaver.general.Util; +import weaver.interfaces.dito.overtime.SendPortalOverTimeSubmitUtil; import weaver.workflow.msg.MsgPushUtil; import weaver.workflow.msg.entity.MsgEntity; @@ -88,33 +89,12 @@ public class DoHandle_CommonProcessCmd extends AbstractCommonCommand { String userid = StringUtils.join(userlist, ","); bb.writeLog("DoHandle_CommonProcessCmd-userid:"+userid); - String className = "weaver.interfaces.dito.overtime.SendPortalOverTimeSubmitUtil" ; - String methodName = "sendOverTimeSubmit" ; - - Class clazz = Class.forName(className); - bb.writeLog("DoHandle_CommonProcessCmd-requestid1:"+requestid); - - Method method = clazz.getMethod(methodName,String.class,String.class); - bb.writeLog("DoHandle_CommonProcessCmd-requestid2:"+requestid); - - Object newInstance = clazz.newInstance(); - bb.writeLog("DoHandle_CommonProcessCmd-requestid3:"+requestid); - - method.invoke(newInstance,requestid+"",userid); - bb.writeLog("DoHandle_CommonProcessCmd-result:"); + SendPortalOverTimeSubmitUtil sendPortalOverTimeSubmitUtil = new SendPortalOverTimeSubmitUtil(); + sendPortalOverTimeSubmitUtil.sendOverTimeSubmit(requestid+"",userid); } - }catch (ClassNotFoundException | NoSuchMethodException e){ + }catch (Exception e){ e.printStackTrace(); bb.writeLog("DoHandle_CommonProcessCmd-ClassNotFoundException:"+e); - } catch (IllegalAccessException e) { - e.printStackTrace(); - bb.writeLog("DoHandle_CommonProcessCmd-IllegalAccessException:"+e); - } catch (InstantiationException e) { - e.printStackTrace(); - bb.writeLog("DoHandle_CommonProcessCmd-InstantiationException:"+e); - } catch (InvocationTargetException e) { - e.printStackTrace(); - bb.writeLog("DoHandle_CommonProcessCmd-InvocationTargetException:"+e); } } } diff --git a/src/com/engine/workflow/web/RequestFormAction.java b/src/com/engine/workflow/web/RequestFormAction.java index c5eb88bb..28a0991e 100644 --- a/src/com/engine/workflow/web/RequestFormAction.java +++ b/src/com/engine/workflow/web/RequestFormAction.java @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import com.api.browser.bean.SearchConditionOption; -import com.customization.dito.sendtodo.SendPortalTodoDeleteUtil; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; import com.engine.workflow.biz.freeNode.FreeNodeAsyncSubmitBiz; @@ -30,6 +29,7 @@ import weaver.general.Util; import weaver.general.WorkFlowTransMethod; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; +import weaver.interfaces.dito.form.SendPortalFormLoadUtil; import weaver.workflow.request.WFAutoApproveThreadPoolUtil; import weaver.workflow.workflow.WorkflowConfigComInfo; @@ -107,14 +107,24 @@ public class RequestFormAction { response.setCharacterEncoding("utf-8"); BaseBean bb = new BaseBean(); - List> remark8List = new ArrayList>(); - List> atList = new ArrayList>(); - User user = HrmUserVarify.getUser(request, response); +// List> remark8List = new ArrayList>(); +// List> remark9List = new ArrayList>(); +// List> atList = new ArrayList>(); + + Map remark9Map = new HashMap(); + List> atList = new ArrayList>(); + String requestids = request.getParameter("requestid"); try{ - String requestid = request.getParameter("requestid"); - int userid = user.getUID(); - SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); - sendPortalTodoDeleteUtil.queryWorkflowRemark8AtByLoadForm(requestid,userid+"",remark8List,atList); + bb.writeLog("loadForm-requestids"+requestids); + if(StringUtils.isNotEmpty(requestids) && !"null".equals(requestids) && requestids !=null){ + User user = HrmUserVarify.getUser(request, response); + int userid = user.getUID(); + SendPortalFormLoadUtil sendPortalFormLoadUtil = new SendPortalFormLoadUtil(); + remark9Map = sendPortalFormLoadUtil.queryWorkflowRemark9ByLoadForm(requestids,userid+""); + + atList = sendPortalFormLoadUtil.queryWorkflowRemarkAtByLoadForm(requestids,userid+""); + } + bb.writeLog("loadForm-remark9Map"+remark9Map.size()); }catch (Exception e){ e.printStackTrace(); bb.writeLog("loadForm-e:"+e); @@ -127,9 +137,15 @@ public class RequestFormAction { result = result.substring(0, result.length() - 1) + ",\"durationTime\":" + duration + "}"; try{ - String loginid = user.getLoginid(); - SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); - sendPortalTodoDeleteUtil.completeReamrk8AtByLoadForm(loginid,remark8List,atList); + bb.writeLog("loadForm-requestids2"+requestids); + if(StringUtils.isNotEmpty(requestids) && !"null".equals(requestids) && requestids !=null){ + SendPortalFormLoadUtil sendPortalFormLoadUtil = new SendPortalFormLoadUtil(); + User user = HrmUserVarify.getUser(request, response); + int userid = user.getUID(); + String logind = user.getLoginid(); + bb.writeLog("loadForm-logind"+logind); + sendPortalFormLoadUtil.completeRequestByLoadForm(requestids,userid+"",remark9Map,logind,atList); + } }catch (Exception e){ e.printStackTrace(); bb.writeLog("loadForm2-e:"+e); @@ -174,18 +190,17 @@ public class RequestFormAction { @Produces(MediaType.TEXT_PLAIN) public String updateReqInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { - try{ - BaseBean bb = new BaseBean(); - User user = HrmUserVarify.getUser(request, response); - String requestid = request.getParameter("requestid"); - int userid = user.getUID(); - SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); - List> list = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid+""); - bb.writeLog("updateReqInfo--list2:"+list.size()); - }catch (Exception e){ - - } - +// try{ +// BaseBean bb = new BaseBean(); +// User user = HrmUserVarify.getUser(request, response); +// String requestid = request.getParameter("requestid"); +// int userid = user.getUID(); +// SendPortalTodoDeleteUtil sendPortalTodoDeleteUtil = new SendPortalTodoDeleteUtil(); +// List> list = sendPortalTodoDeleteUtil.queryWorkflowCopyToByRequestid(requestid,userid+""); +// bb.writeLog("updateReqInfo--list2:"+list.size()); +// }catch (Exception e){ +// +// } RequestFormServiceImpl formService = getFormService(request, response); Map apidatas = formService.updateReqInfo(request); diff --git a/src/com/engine/workflow/web/RequestMonitorListAction.java b/src/com/engine/workflow/web/RequestMonitorListAction.java index 12b34058..8d323cc9 100644 --- a/src/com/engine/workflow/web/RequestMonitorListAction.java +++ b/src/com/engine/workflow/web/RequestMonitorListAction.java @@ -1,7 +1,5 @@ package com.engine.workflow.web; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -27,6 +25,14 @@ import weaver.hrm.User; import com.alibaba.fastjson.JSONObject; import com.engine.workflow.service.RequestMonitorListService; import com.engine.common.util.ServiceUtil; +import weaver.interfaces.dito.archiving.RequestArchingCompleteForwardUtil; +import weaver.interfaces.dito.archiving.RequestArchingCompleteRemark89Util; +import weaver.interfaces.dito.archiving.RequestArchingSendPortalUtil; +import weaver.interfaces.dito.archiving.RequestArchvingQueryUtil; +import weaver.interfaces.dito.delete.RequestDeleteQueryPortalUtil; +import weaver.interfaces.dito.delete.RequestDeleteSendPortalUtil; +import weaver.interfaces.dito.monitor.SendPortalMonitorRepossessedUtil; +import weaver.interfaces.dito.monitor.SendPortalMonitorUtil; /** * 流程监控入口(action) @@ -176,137 +182,42 @@ public class RequestMonitorListAction { BaseBean bb = new BaseBean(); - List> copyList = new ArrayList>(); - try{ - String requestid = Util.null2String(request.getParameter("multiRequestIds")); - bb.writeLog("deleteRequestById-requestid"+requestid); - - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "queryWorkflowCopyToByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class); - Object newInstance = clazz.newInstance(); - copyList = (List>) method.invoke(newInstance,requestid); - } - }catch (ClassNotFoundException | NoSuchMethodException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - List> forwardList = new ArrayList>(); - try{ - String requestid = Util.null2String(request.getParameter("multiRequestIds")); - bb.writeLog("deleteRequestById-requestid"+requestid); - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "queryWorkflowForwardByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class); - Object newInstance = clazz.newInstance(); - forwardList = (List>) method.invoke(newInstance,requestid); - } - }catch (ClassNotFoundException | NoSuchMethodException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - List> atList = new ArrayList>(); + List> baseList = new ArrayList>(); try{ String requestid = Util.null2String(request.getParameter("multiRequestIds")); bb.writeLog("deleteRequestById-requestid"+requestid); if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "queryWorkflowAtByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class); - Object newInstance = clazz.newInstance(); - atList = (List>) method.invoke(newInstance,requestid); + + RequestDeleteQueryPortalUtil requestDeleteQueryPortalUtil = new RequestDeleteQueryPortalUtil(); + copyList = requestDeleteQueryPortalUtil.queryRequestReamrk89ByDelete(requestid); + forwardList = requestDeleteQueryPortalUtil.queryRequestForwardByDelete(requestid); + atList = requestDeleteQueryPortalUtil.queryRequestAtByDelete(requestid); + baseList = requestDeleteQueryPortalUtil.queryRequestDataByDelete(requestid); } - }catch (ClassNotFoundException | NoSuchMethodException e){ + }catch (Exception e){ e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + bb.writeLog("deleteRequestById-1:"+e); } apidatas = monitorService.deleteRequestById(request, user); - try{ - String requestid = Util.null2String(request.getParameter("multiRequestIds")); + RequestDeleteSendPortalUtil requestDeleteSendPortalUtil = new RequestDeleteSendPortalUtil(); String userid = user.getUID()+"" ; - bb.writeLog("deleteRequestById-requestid"+requestid); - bb.writeLog("deleteRequestById-userid"+userid); - - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; - String methodName = "monitorDelete" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,requestid,userid); - } - }catch (ClassNotFoundException | NoSuchMethodException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - - String notes = ""; - try{ - String loginid = user.getLoginid()+"" ; - bb.writeLog("copyList:"+copyList.size()); - if(copyList.size() >0){ - notes = "流程监控删除,删除流程所有未读的抄送数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowCopyToByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,copyList,loginid,notes); - } - }catch (ClassNotFoundException | NoSuchMethodException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - - try{ - String loginid = user.getLoginid()+"" ; - bb.writeLog("forwardList:"+forwardList.size()); - if(forwardList.size() >0){ - notes = "流程监控删除,删除流程所有未读的转发数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowForwardByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,forwardList,loginid,notes); + if(baseList.size()>0){ + requestDeleteSendPortalUtil.monitorDelete(userid,baseList); } - }catch (ClassNotFoundException | NoSuchMethodException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - - try{ - String loginid = user.getLoginid()+"" ; - bb.writeLog("atList:"+atList.size()); - if(atList.size() >0){ - notes = "流程监控删除,删除流程所有未读@的数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowAtByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,atList,loginid,notes); - } - }catch (ClassNotFoundException | NoSuchMethodException e){ + String notes = "流程监控页面,"; + requestDeleteSendPortalUtil.completeRemark89ForwardAtByDelete(user,copyList,forwardList,atList,notes); + }catch (Exception e){ e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + bb.writeLog("deleteRequestById-4:"+e); } - - - }catch(Exception e){ e.printStackTrace(); apidatas.put("api_status", false); @@ -331,97 +242,68 @@ public class RequestMonitorListAction { BaseBean bb = new BaseBean(); - List> userList = new ArrayList>(); - try{ - bb.writeLog("deleteRequestById-requestid"+requestids); - - if(StringUtils.isNotEmpty(requestids)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryRequestUserDataByArchving" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class); - Object newInstance = clazz.newInstance(); - userList = (List>) method.invoke(newInstance,requestids); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); - } + // 流程的待办的处理人 +// List> userList = new ArrayList>(); +// try{ +// bb.writeLog("deleteRequestById-requestid"+requestids); +// +// if(StringUtils.isNotEmpty(requestids)){ +// SendPortalMonitorArchvingUtil sendPortalMonitorArchvingUtil = new SendPortalMonitorArchvingUtil(); +// userList = sendPortalMonitorArchvingUtil.queryRequestUserDataByArchving(requestids); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("archivingRequestById-1:"+e); +// } - List> copyList = new ArrayList>(); + List> remarkList = new ArrayList>(); List> forwardList = new ArrayList>(); - List> atList = new ArrayList>(); +// List> atList = new ArrayList>(); - if(!userList.isEmpty() && userList.size() > 0){ - // 获取 抄送、转发、@ 的数据 +// if(!userList.isEmpty() && userList.size() > 0){ +// // 获取 抄送、转发、@ 的数据 try{ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryWorkflowRemarkByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, List.class); - Object newInstance = clazz.newInstance(); - copyList = (List>) method.invoke(newInstance,userList); - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + RequestArchvingQueryUtil requestArchvingQueryUtil = new RequestArchvingQueryUtil(); + Map nodeMap = requestArchvingQueryUtil.queryRequestNodeIdByArchving(requestids); + remarkList = requestArchvingQueryUtil.queryWorkflowRemarkByRequestid(requestids,nodeMap); + forwardList = requestArchvingQueryUtil.queryWorkflowForwardByRequestid(requestids,nodeMap); + }catch (Exception e){ e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); + bb.writeLog("archivingRequestById-2:"+e); } - - - try{ - String requestid = Util.null2String(request.getParameter("multiRequestIds")); - bb.writeLog("deleteRequestById-requestid"+requestid); - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryWorkflowForwardByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, List.class); - Object newInstance = clazz.newInstance(); - forwardList = (List>) method.invoke(newInstance,userList); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); - } - - - try{ - String requestid = Util.null2String(request.getParameter("multiRequestIds")); - bb.writeLog("deleteRequestById-requestid"+requestid); - - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryWorkflowAtByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, List.class); - Object newInstance = clazz.newInstance(); - atList = (List>) method.invoke(newInstance,userList); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); - } - } - +// +// try{ +// SendPortalMonitorArchvingUtil sendPortalMonitorArchvingUtil = new SendPortalMonitorArchvingUtil(); +// forwardList = sendPortalMonitorArchvingUtil.queryWorkflowForwardByRequestid(userList); +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("archivingRequestById-3:"+e); +// } +// +// try{ +// SendPortalMonitorArchvingUtil sendPortalMonitorArchvingUtil = new SendPortalMonitorArchvingUtil(); +// atList = sendPortalMonitorArchvingUtil.queryWorkflowAtByRequestid(userList); +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("archivingRequestById-4:"+e); +// } +// } // 执行智能预测接口 - User user = HrmUserVarify.getUser(request, response); try{ String f_weaver_belongto_userid=request.getParameter("f_weaver_belongto_userid");//需要增加的代码 String f_weaver_belongto_usertype=request.getParameter("f_weaver_belongto_usertype");//需要增加的代码 user = HrmUserVarify.getUser(request, response, f_weaver_belongto_userid, f_weaver_belongto_usertype) ;//需要增加的代码 + bb.writeLog("智能预测:"+requestids); if(StringUtils.isNotEmpty(requestids)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; - String methodName = "doSimpleModeDataByMonitor" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class,User.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,requestids,user); + RequestArchingSendPortalUtil requestArchingSendPortalUtil = new RequestArchingSendPortalUtil(); + requestArchingSendPortalUtil.doSimpleModeDataByMonitor(requestids,user); } }catch (Exception e){ - + bb.writeLog("archivingRequestById-5:"+e); } //强制归档接口 @@ -437,74 +319,58 @@ public class RequestMonitorListAction { apidatas.put("api_errormsg", "catch exception : " + e.getMessage()); } - // 完成转发、抄送、@的数据 + // 流程强制归档,调用门户接口生产归档节点的数据 try{ String userid = user.getUID()+"" ; -// addClassInterface2Monitor(requestids,userid); if(StringUtils.isNotEmpty(requestids)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; - String methodName = "monitorArchived" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,requestids,userid); + RequestArchingSendPortalUtil requestArchingSendPortalUtil = new RequestArchingSendPortalUtil(); + requestArchingSendPortalUtil.monitorArchived(requestids,userid); } }catch (Exception e){ bb.writeLog("archivingRequestById-ClassNotFoundException"+e); } - + // 完成转发、抄送、@的数据 String notes = ""; try{ - - String loginid = user.getLoginid()+"" ; - bb.writeLog("copyList:"+copyList.size()); - if(copyList.size() >0){ - notes = "流程监控删除,删除流程所有未读的抄送数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowCopyToByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,copyList,loginid,notes); + bb.writeLog("remarkList:"+remarkList.size()); + if(remarkList.size() >0){ + notes = "流程监控强制归档,完成流程所有未读的抄送数据"; + RequestArchingCompleteRemark89Util requestArchingCompleteRemark89Util = new RequestArchingCompleteRemark89Util(); + requestArchingCompleteRemark89Util.monitorCompleteRequestRemark89(remarkList,notes,user); } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + }catch (Exception e){ e.printStackTrace(); bb.writeLog("deleteRequestById-ClassNotFoundException"+e); } - try{ String loginid = user.getLoginid()+"" ; bb.writeLog("forwardList:"+forwardList.size()); if(forwardList.size() >0){ - notes = "流程监控删除,删除流程所有未读的转发数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowForwardByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,forwardList,loginid,notes); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - try{ - String loginid = user.getLoginid()+"" ; - bb.writeLog("atList:"+atList.size()); - if(atList.size() >0){ - notes = "流程监控删除,删除流程所有未读@的数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowAtByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,atList,loginid,notes); + notes = "流程监控强制归档,完成流程所有未读的转发数据"; + RequestArchingCompleteForwardUtil requestArchingCompleteForwardUtil = new RequestArchingCompleteForwardUtil(); + requestArchingCompleteForwardUtil.monitorCompleteRequestForward(forwardList,notes,user); + } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + }catch (Exception e){ e.printStackTrace(); bb.writeLog("deleteRequestById-ClassNotFoundException"+e); } +// +// try{ +// String loginid = user.getLoginid()+"" ; +// bb.writeLog("atList:"+atList.size()); +// if(atList.size() >0){ +// notes = "流程监控强制归档,完成流程所有未读@的数据"; +// +// SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); +// sendPortalMonitorDeleteUtil.monitorFinishedWorkflowAtByRequestid(atList,loginid,notes); +// +// } +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("deleteRequestById-ClassNotFoundException"+e); +// } return JSONObject.toJSONString(apidatas); } @@ -660,73 +526,34 @@ public class RequestMonitorListAction { BaseBean bb = new BaseBean(); String requestids = Util.null2String(request.getParameter("multiRequestIds")); - List> userList = new ArrayList>(); - try{ - bb.writeLog("deleteRequestById-requestid"+requestids); - if(StringUtils.isNotEmpty(requestids)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryRequestUserDataByArchving" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, String.class); - Object newInstance = clazz.newInstance(); - userList = (List>) method.invoke(newInstance,requestids); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); - } List> copyList = new ArrayList>(); - List> forwardList = new ArrayList>(); - List> atList = new ArrayList>(); - if(!userList.isEmpty() && userList.size() > 0){ + if(StringUtils.isNotBlank(requestids)){ // 获取 抄送、转发、@ 的数据 try{ - - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryWorkflowRemarkByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, List.class); - Object newInstance = clazz.newInstance(); - copyList = (List>) method.invoke(newInstance,userList); - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); - } - - try{ - String requestid = Util.null2String(request.getParameter("multiRequestIds")); - bb.writeLog("deleteRequestById-requestid"+requestid); - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryWorkflowForwardByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, List.class); - Object newInstance = clazz.newInstance(); - forwardList = (List>) method.invoke(newInstance,userList); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + SendPortalMonitorRepossessedUtil sendPortalMonitorRepossessedUtil = new SendPortalMonitorRepossessedUtil(); + copyList = sendPortalMonitorRepossessedUtil.queryWorkflowRemark89ByArchving(requestids); + }catch (Exception e){ e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); + bb.writeLog("repossessedRequestById-1:"+e); } - try{ - String requestid = Util.null2String(request.getParameter("multiRequestIds")); - bb.writeLog("deleteRequestById-requestid"+requestid); +// try{ +// SendPortalMonitorRepossessedUtil sendPortalMonitorRepossessedUtil = new SendPortalMonitorRepossessedUtil(); +// forwardList = sendPortalMonitorRepossessedUtil.queryWorkflowForwardByRequestid(userList); +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("repossessedRequestById-2:"+e); +// } - if(StringUtils.isNotEmpty(requestid)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorArchvingUtil" ; - String methodName = "queryWorkflowAtByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName, List.class); - Object newInstance = clazz.newInstance(); - atList = (List>) method.invoke(newInstance,userList); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("archivingRequestById-ClassNotFoundException"+e); - } +// try{ +// SendPortalMonitorArchvingUtil sendPortalMonitorArchvingUtil = new SendPortalMonitorArchvingUtil(); +// atList = sendPortalMonitorArchvingUtil.queryWorkflowAtByRequestid(userList); +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("repossessedRequestById-3:"+e); +// } } User user = HrmUserVarify.getUser(request, response); @@ -749,14 +576,11 @@ public class RequestMonitorListAction { bb.writeLog("repossessedRequestById-userid"+userid); if(StringUtils.isNotEmpty(requestids)){ - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil" ; - String methodName = "monitorPossessed" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,requestids,userid); + + SendPortalMonitorUtil sendPortalMonitorUtil = new SendPortalMonitorUtil(); + sendPortalMonitorUtil.monitorPossessed(requestids,userid); } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + }catch (Exception e){ e.printStackTrace(); bb.writeLog("repossessedRequestById-ClassNotFoundException"+e); } @@ -766,55 +590,41 @@ public class RequestMonitorListAction { String loginid = user.getLoginid()+"" ; bb.writeLog("copyList:"+copyList.size()); if(copyList.size() >0){ - notes = "流程监控删除,删除流程所有未读的抄送数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowCopyToByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,copyList,loginid,notes); + notes = "流程监控强制收回,完成流程所有未读的抄送数据"; + SendPortalMonitorRepossessedUtil sendPortalMonitorRepossessedUtil = new SendPortalMonitorRepossessedUtil(); + sendPortalMonitorRepossessedUtil.monitorRequestRemark89ByArchving(copyList,loginid,notes); } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - - try{ - - String loginid = user.getLoginid()+"" ; - bb.writeLog("forwardList:"+forwardList.size()); - if(forwardList.size() >0){ - notes = "流程监控删除,删除流程所有未读的转发数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowForwardByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,forwardList,loginid,notes); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ + }catch (Exception e){ e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); - } - - try{ - String loginid = user.getLoginid()+"" ; - bb.writeLog("atList:"+atList.size()); - if(atList.size() >0){ - notes = "流程监控删除,删除流程所有未读@的数据"; - String className = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil" ; - String methodName = "monitorFinishedWorkflowAtByRequestid" ; - Class clazz = Class.forName(className); - Method method = clazz.getMethod(methodName,List.class,String.class,String.class); - Object newInstance = clazz.newInstance(); - method.invoke(newInstance,atList,loginid,notes); - } - }catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e){ - e.printStackTrace(); - bb.writeLog("deleteRequestById-ClassNotFoundException"+e); + bb.writeLog("repossessedRequestById-5:"+e); } +// try{ +// String loginid = user.getLoginid()+"" ; +// bb.writeLog("forwardList:"+forwardList.size()); +// if(forwardList.size() >0){ +// notes = "流程监控强制收回,完成流程所有未读的转发数据"; +// SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); +// sendPortalMonitorDeleteUtil.monitorFinishedWorkflowForwardByRequestid(forwardList,loginid,notes); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("repossessedRequestById-6:"+e); +// } +// try{ +// String loginid = user.getLoginid()+"" ; +// bb.writeLog("atList:"+atList.size()); +// if(atList.size() >0){ +// notes = "流程监控强制收回,完成流程所有未读@的数据"; +// SendPortalMonitorDeleteUtil sendPortalMonitorDeleteUtil = new SendPortalMonitorDeleteUtil(); +// sendPortalMonitorDeleteUtil.monitorFinishedWorkflowAtByRequestid(atList,loginid,notes); +// +// } +// }catch (Exception e){ +// e.printStackTrace(); +// bb.writeLog("repossessedRequestById-7:"+e); +// } return JSONObject.toJSONString(apidatas); } diff --git a/src/com/engine/workflow/web/WorkflowPAAction.java b/src/com/engine/workflow/web/WorkflowPAAction.java new file mode 100644 index 00000000..28149758 --- /dev/null +++ b/src/com/engine/workflow/web/WorkflowPAAction.java @@ -0,0 +1,1030 @@ +package com.engine.workflow.web; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.customization.wfTodoCard.service.CardUserInfoService; +import com.customization.wfTodoCard.service.CheckSendCardService; +import com.engine.common.util.ServiceUtil; +import com.engine.workflow.biz.publicApi.RequestOperateBiz; +import com.engine.workflow.constant.PAResponseCode; +import com.engine.workflow.entity.publicApi.*; +import com.engine.workflow.publicApi.*; +import com.engine.workflow.publicApi.impl.*; +import com.engine.workflow.util.CommonUtil; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.dito.paservice.SubmitRequestRemarkUtil; +import weaver.interfaces.dito.paservice.SubmitRequestUtil; +import weaver.workflow.logging.Logger; +import weaver.workflow.logging.LoggerFactory; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.io.BufferedReader; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; + +public class WorkflowPAAction { + + private final static Logger log = LoggerFactory.getLogger(WorkflowPAAction.class); + + private WorkflowRequestInfoPA getRequestInfoPA() { + return (WorkflowRequestInfoPAImpl) ServiceUtil.getService(WorkflowRequestInfoPAImpl.class); + } + + private WorkflowRequestOperatePA getRequestOperatePA() { + return (WorkflowRequestOperatePAImpl) ServiceUtil.getService(WorkflowRequestOperatePAImpl.class); + } + + private WorkflowPA getWorkflowPA(){ + return (WorkflowPAImpl) ServiceUtil.getService(WorkflowPAImpl.class); + } + + private WorkflowRequestHandledPA getWorkflowRequestHandledPA(){ + return (WorkflowRequestHandledPAImpl) ServiceUtil.getService(WorkflowRequestHandledPAImpl.class); + } + + private WorkflowRequestMinePA getWorkflowRequestMinePA(){ + return (WorkflowRequestMinePAImpl) ServiceUtil.getService(WorkflowRequestMinePAImpl.class); + } + + private WorkflowRequestTodoPA getWorkflowTodoPA(){ + return (WorkflowRequestListPAImpl) ServiceUtil.getService(WorkflowRequestListPAImpl.class); + } + + @POST + @Path("/getCustomTabRequestList") + @Produces("text/plain;charset=utf-8") + public String getCustomRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowPA requestPA = getWorkflowPA(); + // 获取相关条件 + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List toDoRequestList = requestPA.getRequestListCmd(user, (String) params.get("tabIds"), (Map) params.get("conditions"), (int) params.get("pageNo"), (int) params.get("pageSize"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toDoRequestList); + } + @POST + @Path("/getCustomTabRequestCount") + @Produces("text/plain;charset=utf-8") + public String getCustomRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowPA requestPA = getWorkflowPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long toDoRequestCount = requestPA.getRequestCountCmd(user, (String) params.get("tabIds"), (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toDoRequestCount); + } + + @POST + @Path("/getToDoRequestList") + @Produces("text/plain;charset=utf-8") + public String getToDoRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + // 获取相关条件 + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List toDoRequestList = requestTodoPA.getToDoRequestList(user, (String) params.get("tabIds"), (Map) params.get("conditions"), (int) params.get("pageNo"), (int) params.get("pageSize"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toDoRequestList); + } + @POST + @Path("/getToDoRequestCount") + @Produces("text/plain;charset=utf-8") + public String getToDoRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long toDoRequestCount = requestTodoPA.getToDoRequestCount(user, (String) params.get("tabIds"), (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toDoRequestCount); + } + + @POST + @Path("/getCreateWorkflowList") + @Produces("text/plain;charset=utf-8") + public String getCreateWorkflowList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowPA workflowPA = getWorkflowPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List workflowList = workflowPA.getCreateWorkflowListCmd(user, (Map) params.get("conditions")); + return JSONObject.toJSONString(workflowList); + } + + @POST + @Path("/getCreateWorkflowCount") + @Produces("text/plain;charset=utf-8") + public String getCreateWorkflowCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowPA workflowPA = getWorkflowPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long count = workflowPA.getCreateWorkflowCountCmd(user, (Map) params.get("conditions")); + return JSONObject.toJSONString(count); + } + + @POST + @Path("/getCreateWorkflowTypeCount") + @Produces("text/plain;charset=utf-8") + public String getCreateWorkflowTypeCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowPA workflowPA = getWorkflowPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long count = workflowPA.getCreateWorkflowTypeCountCmd(user, (Map) params.get("conditions")); + return JSONObject.toJSONString(count); + } + + @POST + @Path("/getCreateWorkflowTypeList") + @Produces("text/plain;charset=utf-8") + public String getCreateWorkflowTypeList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowPA workflowPA = getWorkflowPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List workflowTypeList = workflowPA.getCreateWorkflowTypeListCmd(user, (Map) params.get("conditions")); + return JSONObject.toJSONString(workflowTypeList); + } + + @POST + @Path("/getWorkflowRequestLogs") + @Produces("text/plain;charset=utf-8") + public String getWorkflowRequestLogs(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowPA workflowPA = getWorkflowPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List workflowRequestLogs = workflowPA.getWorkflowRequestLogsCmd((String) params.get("workflowId"), (String) params.get("requestId"), user, (int) params.get("pageSize"), (int) params.get("endId"), (Map) params.get("conditions")); + return JSONObject.toJSONString(workflowRequestLogs); + } + + @POST + @Path("/getHandledWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getHandledRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestHandledPA requestHandledPA = getWorkflowRequestHandledPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long handledWorkflowRequestCount = requestHandledPA.getHandledWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow")); + return JSONObject.toJSONString(handledWorkflowRequestCount); + } + + @POST + @Path("/getHandledWorkflowRequestCount4Ofs") + @Produces("text/plain;charset=utf-8") + public String getHandledWorkflowRequestCount4Ofs(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestHandledPA requestHandledPA = getWorkflowRequestHandledPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long handledWorkflowRequestCount4Ofs = requestHandledPA.getHandledWorkflowRequestCount4Ofs(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(handledWorkflowRequestCount4Ofs); + } + + @POST + @Path("/getHandledWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String gethandledWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestHandledPA requestHandledPA = getWorkflowRequestHandledPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List handledWorkflowRequestList = requestHandledPA.getHandledWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow")); + return JSONObject.toJSONString(handledWorkflowRequestList); + } + + @POST + @Path("/getHandledWorkflowRequestList4Ofs") + @Produces("text/plain;charset=utf-8") + public String gethandledWorkflowRequestList4Ofs(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestHandledPA requestHandledPA = getWorkflowRequestHandledPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List handledWorkflowRequestList4Ofs = requestHandledPA.getHandledWorkflowRequestList4Ofs((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(handledWorkflowRequestList4Ofs); + } + + @POST + @Path("/getProcessedWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getProcessedWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestHandledPA requestHandledPA = getWorkflowRequestHandledPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long processedWorkflowRequestCount = requestHandledPA.getProcessedWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(processedWorkflowRequestCount); + } + + @POST + @Path("/getProcessedWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getProcessedWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestHandledPA requestHandledPA = getWorkflowRequestHandledPA(); + User user = getTargetUser(request, response); + if(user ==null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List processedWorkflowRequestList = requestHandledPA.getProcessedWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(processedWorkflowRequestList); + } + + @POST + @Path("/getMyWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getMyWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestMinePA requestMinePA = getWorkflowRequestMinePA(); + User user = getTargetUser(request, response); + if(user ==null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long myWorkflowRequestCount = requestMinePA.getMyWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(myWorkflowRequestCount); + } + + @POST + @Path("/getMyWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getMyWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestMinePA requestMinePA = getWorkflowRequestMinePA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List myWorkflowRequestList = requestMinePA.getMyWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(myWorkflowRequestList); + } + + @POST + @Path("/getBeRejectWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getBeRejectWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List beRejectWorkflowRequestList = requestTodoPA.getBeRejectWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(beRejectWorkflowRequestList); + } + + @POST + @Path("/getBeRejectWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getBeRejectWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long beRejectWorkflowReqeustCount = requestTodoPA.getBeRejectWorkflowReqeustCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(beRejectWorkflowReqeustCount); + } + + @POST + @Path("/getCCWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getCCWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List ccWorkflowRequestList = requestTodoPA.getCCWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(ccWorkflowRequestList); + } + + @POST + @Path("/getCCWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getCCWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long ccWorkflowRequestCount = requestTodoPA.getCCWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(ccWorkflowRequestCount); + } + + @POST + @Path("/getDoingWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getDoingWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List doingWorkflowRequestList = requestTodoPA.getDoingWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(doingWorkflowRequestList); + } + + @POST + @Path("/getDoingWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getDoingWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long doingWorkflowReqeustCount = requestTodoPA.getDoingWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(doingWorkflowReqeustCount); + } + + @POST + @Path("/getForwardWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getForwardWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List forwardWorkflowRequestList = requestTodoPA.getForwardWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(forwardWorkflowRequestList); + } + + @POST + @Path("/getForwardWorkflowRequestCount") + @Produces("text/plain;chatset=utf-8") + public String getForwardWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long forwardWorkflowRequestCount = requestTodoPA.getForwardWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(forwardWorkflowRequestCount); + } + + @POST + @Path("/getToBeReadWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getToBeReadWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List toBeReadWorkflowRequestList = requestTodoPA.getToBeReadWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toBeReadWorkflowRequestList); + } + + @POST + @Path("/getToBeReadWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getToBeReadWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long toBeReadWorkflowReqeustCount = requestTodoPA.getToBeReadWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toBeReadWorkflowReqeustCount); + } + + @POST + @Path("/getToDoWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getToDoWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List toDoWorkflowRequestList = requestTodoPA.getToDoWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toDoWorkflowRequestList); + } + + @POST + @Path("/getToDoWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getToDoWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long toDoWorkflowRequestCount = requestTodoPA.getToDoWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(toDoWorkflowRequestCount); + } + + @POST + @Path("/getAllWorkflowRequestList") + @Produces("text/plain;charset=utf-8") + public String getAllWorkflowRequestList(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + List allWorkflowRequestList = requestTodoPA.getAllWorkflowRequestList((int) params.get("pageNo"), (int) params.get("pageSize"), user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(allWorkflowRequestList); + } + + @POST + @Path("/getAllWorkflowRequestCount") + @Produces("text/plain;charset=utf-8") + public String getAllWorkflowRequestCount(@Context HttpServletRequest request, @Context HttpServletResponse response){ + WorkflowRequestTodoPA requestTodoPA = getWorkflowTodoPA(); + User user = getTargetUser(request, response); + if(user == null){ + return "{\"err\":\""+weaver.systeminfo.SystemEnv.getHtmlLabelName(10005691,weaver.general.ThreadVarLanguage.getLang())+"\"}"; + } + Map params = getParams(request); + long allWorkflowRequestCount = requestTodoPA.getAllWorkflowRequestCount(user, (Map) params.get("conditions"), (boolean) params.get("isMergeShow"), (boolean) params.get("isNeedOs")); + return JSONObject.toJSONString(allWorkflowRequestCount); + } + + // 获取要查询列表的用户 需要需要查客户信息,可添加userType参数 + public User getTargetUser(HttpServletRequest request, HttpServletResponse response){ + User user = CommonUtil.getUserByRequest(request, response); + /*int userId = Util.getIntValue(request.getParameter("userId"),0); + //int userType = Util.getIntValue(request.getParameter("userType"),0); + if(userId != 0 ){ + user = User.getUser(userId,0); + }*/ + return user; + } + + // 获取参数信息 + private Map getParams(HttpServletRequest request) { + Map params = new HashMap(); + // tabIds,conditions,pageNo,pageSize,isMergeShow,isNeedOs + params.put("tabIds", Util.null2String(request.getParameter("tabIds"),"0")); + if(request.getParameter("conditions") != null && !"".equals(request.getParameter("conditions").trim())){ + params.put("conditions", JSONObject.parseObject(request.getParameter("conditions"),new TypeReference>(){})); + }else { + params.put("conditions",new HashMap()); + } + String requestId = request.getParameter("requestId"); + String workflowId = request.getParameter("workflowId"); + if(requestId == null || "".equals(requestId.trim())){ + requestId = "0"; + } + if(workflowId == null || "".equals(workflowId.trim())){ + workflowId = "0"; + } + params.put("pageNo", Util.getIntValue(request.getParameter("pageNo"),1)); + params.put("pageSize", Util.getIntValue(request.getParameter("pageSize"),10)); + params.put("isMergeShow", "true".equals(Util.null2String(request.getParameter("isMergeShow")))); + params.put("isNeedOs", "true".equals(Util.null2String(request.getParameter("isNeedOs")))); + params.put("requestId",requestId); + params.put("workflowId",workflowId); + params.put("endId",Util.getIntValue(request.getParameter("endId"),0)); + return params; + } + + @GET + @Path("/getRequestResources") + @Produces(MediaType.TEXT_PLAIN) + public String getRequestResources(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestInfoPA infoPA = getRequestInfoPA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getRequestResources接口报文~~~~userId:"+(user==null?null:user.getUID())); + int requestid = Util.getIntValue(request.getParameter("requestid")); + if(requestid <= 0) requestid = Util.getIntValue(request.getParameter("requestId")); + Object apidatas = infoPA.getRequestResources(user, requestid, getOtherParms(request)); + return JSONObject.toJSONString(apidatas); + } + + @GET + @Path("/getRequestOperatorInfo") + @Produces(MediaType.TEXT_PLAIN) + public String getRequestOperatorInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestInfoPA infoPA = getRequestInfoPA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getRequestOperatorInfo接口报文~~~~userId:"+(user==null?null:user.getUID())); + int requestid = Util.getIntValue(request.getParameter("requestid")); + if(requestid <= 0) requestid = Util.getIntValue(request.getParameter("requestId")); + Object apidatas = infoPA.getRequestOperatorInfo(user, requestid, getOtherParms(request)); + return JSONObject.toJSONString(apidatas); + } + + + @GET + @Path("/getRequestFlowChart") + @Produces(MediaType.TEXT_PLAIN) + public String getRequestFlowChart(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestInfoPA infoPA = getRequestInfoPA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getRequestFlowChart接口报文~~~~userId:"+(user==null?null:user.getUID())); + int requestid = Util.getIntValue(request.getParameter("requestid")); + if(requestid <= 0) requestid = Util.getIntValue(request.getParameter("requestId")); + Object apidatas = infoPA.getRequestFlowChart(user, requestid, getOtherParms(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/doCreateRequest") + @Produces(MediaType.TEXT_PLAIN) + public String doCreateRequest(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~doCreateRequest接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.doCreateRequest(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + /** + * 流程撤回 + * @param request + * @param response + * @return + */ + @POST + @Path("/withdrawRequest") + @Produces(MediaType.TEXT_PLAIN) + public String withdrawRequest(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~withdrawRequest接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.withdrawRequest(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/submitRequest") + @Produces(MediaType.TEXT_PLAIN) + public String submitRequest(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~submitRequest接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.submitRequest(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/submitRequest2") + @Produces(MediaType.APPLICATION_JSON) + public JSONObject submitRequest2(@Context HttpServletRequest request, @Context HttpServletResponse response) { + String userid=Util.null2String(request.getHeader("weaver_userid")); + String usertoken=Util.null2String(request.getHeader("usertoken")); + String authtoken = new BaseBean().getPropValue("workflowTodoCard", "oaAuthKey"); + String usertype = Util.null2String(request.getHeader("weaver_usertype")); + String language = Util.null2String(request.getHeader("weaver_userlanguage")); + + BaseBean baseBean = new BaseBean(); + baseBean.writeLog( "requestflow submit>>>>> userid = " + userid + " usertoken = " + usertoken); + + if ("".equals(userid)){ + baseBean.writeLog("error>> "+"userid "); + return new JSONObject().fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.PARAM_ERROR.getStatusCode()) + .fluentPut("msg","缺少用户信息"); + } + if ("".equals(usertoken) || !authtoken.equals(usertoken)){ + baseBean.writeLog("error >> "+"user token error"); + return new JSONObject().fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.PARAM_ERROR.getStatusCode()) + .fluentPut("msg","缺少 usertoken"); + } + + StringBuilder stringBuilder = new StringBuilder(); + try (BufferedReader bufferedReader = request.getReader()) { + String line; + while ((line = bufferedReader.readLine()) != null) { + stringBuilder.append(line); + } + }catch (Exception e){ + baseBean.writeLog("获取参数错误" +e.getMessage(), e); + } + + // 此时 stringBuilder.toString() 包含整个请求体的内容 + String requestBody = stringBuilder.toString(); + baseBean.writeLog("requestBody submit request 》》 "+requestBody); + ReqOperateRequestEntity entity = null; + try { + if (!"".equals(requestBody)){ + if (requestBody.startsWith("'") && requestBody.endsWith("'")){ + requestBody = requestBody.substring(1,requestBody.length()-1); + } + entity=JSON.parseObject(requestBody, ReqOperateRequestEntity.class); + entity.setUserId(Integer.parseInt(userid)); + } + }catch (Exception e){ + baseBean.writeLog("submit request : parse request body error>>" + e.getMessage()); + } + User user = new CardUserInfoService().getUserById(Integer.parseInt(userid)); + user.setLogintype(usertype); + if (null != language && !"".equals(language)){ + user.setLanguage(Integer.parseInt(language)); + } + new BaseBean().writeLog("param entity 》》 "+JSON.toJSONString(entity)); + + ReqOperateRequestEntity requestParam = RequestOperateBiz.request2Entity(request); + int subRequestid = entity.getRequestId(); + + baseBean.writeLog("subRequestid:"+subRequestid); + List> copyList = new ArrayList>(); + List> forwardList = new ArrayList>(); + List> atList = new ArrayList>(); + String submitnodeid = ""; + if(subRequestid > 0){ + SubmitRequestRemarkUtil submitRequestRemarkUtil = new SubmitRequestRemarkUtil(); + copyList = submitRequestRemarkUtil.queryWorkflowCopyToByRequestid(subRequestid+"",userid); + forwardList = submitRequestRemarkUtil.queryWorkflowForwardByRequestid(subRequestid+"",userid); + atList = submitRequestRemarkUtil.queryWorkflowAtByRequestid(subRequestid+"",userid); + submitnodeid = submitRequestRemarkUtil.queryCurrentNodeIdByRequestid(subRequestid+""); + } + + baseBean.writeLog("copyList:"+copyList.size()); + baseBean.writeLog("forwardList:"+forwardList.size()); + baseBean.writeLog("atList:"+atList.size()); + + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + PAResponseEntity apidatas = operatePA.submitRequest(user,entity); + + baseBean.writeLog("submit request >> apidatas >> "+ JSON.toJSONString(apidatas)); + + JSONObject rjson = new JSONObject(); +// boolean flag = false; + rjson.fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.SUCCESS.getStatusCode()) + .fluentPut("msg","").toJSONString(); + /*if (apidatas.getCode().getStatusCode() == PAResponseCode.SUCCESS.getStatusCode()){ + try { + flag=true; + rjson.fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.SUCCESS.getStatusCode()) + .fluentPut("msg","").toJSONString(); + }catch (Exception e){ + baseBean.writeLog("error>> "+e.getMessage()); + rjson.fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.SYSTEM_INNER_ERROR.getStatusCode()) + .fluentPut("msg",e.getMessage()).toJSONString(); + } + } else { + rjson.fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.SYSTEM_INNER_ERROR.getStatusCode()) + .fluentPut("msg",apidatas.getErrMsg()).toJSONString(); + }*/ + baseBean.writeLog(">>> submit request end >>>" + rjson.toJSONString()); +// if (flag ){ + Integer requestid = entity.getRequestId(); + if (null != requestid){ + CompletableFuture.runAsync(()->{ + try { + String queryPrcUser = "select id, nodeid, isremark, preisremark, HANDLEFORWARDID, OPERATEDATE, OPERATETIME from workflow_currentoperator where REQUESTID =? and processUser =? and userid =? order by id desc"; + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery(queryPrcUser, requestid, userid, userid); + if (recordSet.next()){ + String nodeid = Util.null2String(recordSet.getString("nodeid")); + + String sql2 ="select id, USERID, processUser, isremark, preisremark from workflow_currentoperator where REQUESTID =? and NODEID =? and processUser =?"; + recordSet.executeQuery(sql2, requestid, nodeid, userid); + while (recordSet.next()){ + String id = Util.null2String(recordSet.getString("id")); + String isremark = Util.null2String(recordSet.getString("isremark")); + + if ("2".equals(isremark)){ + new CheckSendCardService().sendUpdateCardInfo(Integer.parseInt(id), ""); + } + } + } + }catch (Exception e){ + baseBean.writeLog("update opuser remark error>> "+e.getMessage()); + } + }); + } +// } + + baseBean.writeLog("getStatusCode:"+apidatas.getCode().getStatusCode()); + baseBean.writeLog("getStatusCode2:"+PAResponseCode.SUCCESS.getStatusCode()); + if(apidatas.getCode().getStatusCode() == PAResponseCode.SUCCESS.getStatusCode() ){ + + Map otherParams = requestParam.getOtherParams(); + String src = Util.null2String(otherParams.get("src")); + baseBean.writeLog("src:"+src); + if(src.equals("")){ + src = "submit"; + } + baseBean.writeLog("src2:"+src); + //若有代理则收回代理 + if(src.equals("submit")) { + baseBean.writeLog("subRequestid:"+subRequestid); + if(subRequestid > 0){ + + baseBean.writeLog("sendTodoDataByNode:"+subRequestid); + + SubmitRequestUtil submitRequestUtil = new SubmitRequestUtil(); + submitRequestUtil.sendTodoDataByNode(subRequestid+"",user,submitnodeid); + + baseBean.writeLog("operate3typeByList:"+subRequestid); + String notes = "流程对外接口提交"; + SubmitRequestRemarkUtil submitRequestRemarkUtil = new SubmitRequestRemarkUtil(); + submitRequestRemarkUtil.operate3typeByList(user,copyList,forwardList,atList,notes); + } + } + } + return rjson; + } + + @POST + @Path("/rejectRequest") + @Produces(MediaType.TEXT_PLAIN) + public String rejectRequest(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~rejectRequest接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.rejectRequest(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/rejectRequest2") + @Produces(MediaType.APPLICATION_JSON) + public JSONObject rejectRequest2(@Context HttpServletRequest request, @Context HttpServletResponse response) { + BaseBean baseBean = new BaseBean(); + String userid=Util.null2String(request.getHeader("weaver_userid")); + String usertoken=Util.null2String(request.getHeader("usertoken")); + String authtoken = new BaseBean().getPropValue("workflowTodoCard", "oaAuthKey"); + String usertype = Util.null2String(request.getHeader("weaver_usertype")); + String language = Util.null2String(request.getHeader("weaver_userlanguage")); + + baseBean.writeLog( "requestflow reject>>>>> userid = " + userid + " usertoken = " + usertoken); + if ("".equals(userid)){ + baseBean.writeLog("error>> "+"userid "); + return new JSONObject().fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.PARAM_ERROR.getStatusCode()) + .fluentPut("msg","缺少用户信息"); + } + if ("".equals(usertoken) || !authtoken.equals(usertoken)){ + baseBean.writeLog("error >> "+"user token error"); + return new JSONObject().fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.PARAM_ERROR.getStatusCode()) + .fluentPut("msg","缺少 usertoken"); + + } + + JSONObject rjson = new JSONObject(); + + User user = new CardUserInfoService().getUserById(Integer.parseInt(userid)); + user.setLogintype(usertype); + if (null != language && !"".equals(language)){ + user.setLanguage(Integer.parseInt(language)); + } + StringBuilder stringBuilder = new StringBuilder(); + try (BufferedReader bufferedReader = request.getReader()) { + String line; + while ((line = bufferedReader.readLine()) != null) { + stringBuilder.append(line); + } + }catch (Exception e){ + baseBean.writeLog("获取参数错误" +e.getMessage(), e); + } + + // 此时 stringBuilder.toString() 包含整个请求体的内容 + String requestBody = stringBuilder.toString(); + baseBean.writeLog("requestBody reject request 》》 "+requestBody); + ReqOperateRequestEntity entity = null; + try { + if (!"".equals(requestBody)){ + if (requestBody.startsWith("'") && requestBody.endsWith("'")){ + requestBody = requestBody.substring(1,requestBody.length()-1); + } + entity=JSON.parseObject(requestBody, ReqOperateRequestEntity.class); + } + }catch (Exception e){ + baseBean.writeLog("reject request : parse request body error>>" + e.getMessage()); + } + new BaseBean().writeLog("param entity 》》 "+JSON.toJSONString(entity)); + + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + PAResponseEntity apidatas = operatePA.rejectRequest(user,entity); + baseBean.writeLog("reject request >> apidatas >> "+ JSON.toJSONString(apidatas)); + + if (apidatas.getCode().getStatusCode() == PAResponseCode.SUCCESS.getStatusCode()){ + try { + rjson.fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.SUCCESS.getStatusCode()) + .fluentPut("msg","").toJSONString(); + }catch (Exception e){ + baseBean.writeLog("update reject card info is error>>" + e.getMessage()); + rjson.fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.SYSTEM_INNER_ERROR.getStatusCode()) + .fluentPut("msg",e.getMessage()).toJSONString(); + } + } else { + rjson.fluentPut("api_status",true) + .fluentPut("code",PAResponseCode.SYSTEM_INNER_ERROR.getStatusCode()) + .fluentPut("msg",apidatas.getErrMsg()).toJSONString(); + } + baseBean.writeLog(">>> reject request end >>>" + rjson.toJSONString()); + return rjson; + } + + @POST + @Path("/forwardRequest") + @Produces(MediaType.TEXT_PLAIN) + public String forwardRequest(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~forwardRequest接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.forwardRequest(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/saveRequestLog") + @Produces(MediaType.TEXT_PLAIN) + public String saveRequestLog(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~saveRequestLog接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.saveRequestLog(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/deleteRequest") + @Produces(MediaType.TEXT_PLAIN) + public String deleteRequest(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~deleteRequest接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.deleteRequest(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/doForceDrawBack") + @Produces(MediaType.TEXT_PLAIN) + public String doForceDrawBack(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~doForceDrawBack接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.doForceDrawBack(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @POST + @Path("/doForceOver") + @Produces(MediaType.TEXT_PLAIN) + public String doForceOver(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~doForceOver接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.doForceOver(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + /** + * 干预流程 + * @param request + * @param response + * @return + */ + @POST + @Path("/doIntervenor") + @Produces(MediaType.TEXT_PLAIN) + public String doIntervenor(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~doIntervenor接口报文~~~~userId:"+(user==null?null:user.getUID())); + Object apidatas = operatePA.doIntervenor(user, RequestOperateBiz.request2Entity(request)); + return JSONObject.toJSONString(apidatas); + } + + @GET + @Path("/getRequestLog") + @Produces(MediaType.TEXT_PLAIN) + public String getRequestLog(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestInfoPA infoPA = getRequestInfoPA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getRequestLog接口报文~~~~userId:"+(user==null?null:user.getUID())); + return JSONObject.toJSONString(infoPA.getRequestLogs(user,RequestOperateBiz.request2Entity(request))); + } + + @GET + @Path("/getWorkflowRequest") + @Produces(MediaType.TEXT_PLAIN) + public String getWorkflowRequest(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getWorkflowRequest接口报文~~~~userId:"+(user==null?null:user.getUID())); + WorkflowRequestInfoPA infoPA = getRequestInfoPA(); + int requestid = Util.getIntValue(request.getParameter("requestId")); + Object apidatas = infoPA.getWorkflowRequest(user, requestid, getOtherParms(request)); + return JSONObject.toJSONString(apidatas); + } + + @GET + @Path("/getCreateWorkflowRequestInfo") + @Produces(MediaType.TEXT_PLAIN) + public String getCreateWorkflowRequestInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getCreateWorkflowRequestInfo接口报文~~~~userId:"+(user==null?null:user.getUID())); + WorkflowRequestInfoPA infoPA = getRequestInfoPA(); + int workflowId = Util.getIntValue(request.getParameter("workflowId")); + Object apidatas = infoPA.getCreateWorkflowRequestInfo(user, workflowId, getOtherParms(request)); + return JSONObject.toJSONString(apidatas); + } + + @GET + @Path("/getRequestStatus") + @Produces(MediaType.TEXT_PLAIN) + public String getRequestStatus(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestInfoPA infoPA = getRequestInfoPA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getRequestStatus接口报文~~~~userId:"+(user==null?null:user.getUID())); + return JSONObject.toJSONString(infoPA.getRequestStatus(user,RequestOperateBiz.request2Entity(request))); + } + + private Map getOtherParms(HttpServletRequest request) { + Map otherParams = JSON.parseObject(request.getParameter("otherParams")); + if (otherParams == null) otherParams = new HashMap<>(); + return otherParams; + } + + @GET + @Path("/getNodeOperator") + @Produces(MediaType.TEXT_PLAIN) + public String getNodeOperator(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getNodeOperator接口报文~~~~userId:"+(user==null?null:user.getUID())); + return JSONObject.toJSONString(operatePA.getNodeOperator(user,RequestOperateBiz.request2Entity(request))); + } + + @GET + @Path("/getNodeMenu") + @Produces(MediaType.TEXT_PLAIN) + public String getHandleNodeMenu(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getNodeMenu接口报文~~~~userId:"+(user==null?null:user.getUID())); + return JSONObject.toJSONString(operatePA.getNodeMenu(user,RequestOperateBiz.request2Entity(request))); + } + + @GET + @Path("/getCanRejectNodes") + @Produces(MediaType.TEXT_PLAIN) + public String getCanRejectNodes(@Context HttpServletRequest request, @Context HttpServletResponse response) { + WorkflowRequestOperatePA operatePA = getRequestOperatePA(); + User user = CommonUtil.getUserByRequest(request, response); + log.info("~~~~getCanRejectNodes接口报文~~~~userId:"+(user==null?null:user.getUID())); + return JSONObject.toJSONString(operatePA.getCanRejectNodes(user,RequestOperateBiz.request2Entity(request))); + } +} diff --git a/src/weaver/interfaces/dito/action/RequestForceRecycle2PortalAction.java b/src/weaver/interfaces/dito/action/RequestForceRecycle2PortalAction.java new file mode 100755 index 00000000..a1f93835 --- /dev/null +++ b/src/weaver/interfaces/dito/action/RequestForceRecycle2PortalAction.java @@ -0,0 +1,253 @@ +package weaver.interfaces.dito.action; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; +import java.net.URLEncoder; + +/** + * @author + * @date 2024/10/28 + * 采购申请单 归档接口 + */ +public class RequestForceRecycle2PortalAction implements Action { + + @Override + public String execute(RequestInfo requestInfo) { + BaseBean bb = new BaseBean(); + bb.writeLog("----RequestForceRecycle2PortalAction------"); + String requestid = requestInfo.getRequestid(); + + try{ + String resultCode = sendTodoDataByForceRecycle(requestid); + if(!"0".equals(resultCode)){ + requestInfo.getRequestManager().setMessageid("1000"); + requestInfo.getRequestManager().setMessagecontent("调用门户接口异常"); + return Action.FAILURE_AND_CONTINUE; + } + }catch (Exception e){ + requestInfo.getRequestManager().setMessageid("1000"); + requestInfo.getRequestManager().setMessagecontent("流程提交接口异常"); + return Action.FAILURE_AND_CONTINUE; + } + return Action.SUCCESS; + } + + /*** + * 流程强制收回 + * @param requestid + */ + public String sendTodoDataByForceRecycle(String requestid){ + + String resultCode = ""; + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + + String zhjkbs = "weaver.interfaces.dito.action.RequestForceRecycle2PortalAction.sendTodoDataByForceRecycle" ; + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + RecordSet rs = new RecordSet(); + + String message = "流程强制收回操作"; + BaseBean bb = new BaseBean(); + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + + String terminal = "1" ; + String taskType = "0"; + try { + + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + String currentNodeId = "" ; + String currentNodeName = "" ; + + String requestname = "" ; + String workflowname = "" ; + + String currentnodeid = "" ; + String currentnodetype = "" ; + + String createrLoginId = ""; + String createrLastName = ""; + String basesql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.lastname,h2.loginid "+ + " from workflow_requestbase t1\n" + + " inner join workflow_base t3 on t1.workflowid = t3.id\n" + + " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ + " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + bb.writeLog("sendTodoDataByForceRecycle:sql:"+basesql); + rs.executeQuery(basesql); + if(rs.next()){ + currentnodeid = Util.null2String(rs.getString("currentnodeid")); + currentnodetype = Util.null2String(rs.getString("currentnodetype")); + + requestname = Util.null2String(rs.getString("requestname")) ; + workflowname = Util.null2String(rs.getString("workflowname")) ; + currentNodeId = Util.null2String(rs.getString("nodeid")) ; + currentNodeName = Util.null2String(rs.getString("nodeName")) ; + + createrLoginId = Util.null2String(rs.getString("loginid")) ; + createrLastName = Util.null2String(rs.getString("lastname")) ; + } + + + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; + String replace = bpm_app_workflowurl.replace("/bpm", ""); + String urlDing = replace+bpm_app_requesturl+requestid; + String urlApp = replace+bpm_app_requesturl+requestid; + if(StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + bb.writeLog("sendTodoDataByForceRecycle-currentnodeid:"+currentnodeid); + bb.writeLog("sendTodoDataByForceRecycle-currentnodetype:"+currentnodetype); + + if("3".equals(currentnodetype)){ + message += ",流程状态为归档"; + String actionType = "3" ; + try { + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("center",center); + requestObject.put("title",requestname); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("nodeId",currentNodeId); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("messageContent",requestname); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + String auth = username + ":" + passwd; + bb.writeLog("sendTodoDataByForceRecycle-3-requestObject:"+requestObject.toJSONString()); + + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("sendTodoDataByForceRecycle-3-msgdata:"+msgdata); + if(StringUtils.isNotBlank(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + bb.writeLog("sendTodoDataByForceRecycle:"+e); + } + }else{ + String actionType = "2"; + String objectAction = "0" ; + String objectType = "0"; + + + JSONObject requestObject = new JSONObject(); + + requestObject.put("creator",createrLoginId); + requestObject.put("center",center); + requestObject.put("title",requestname); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("nodeId",currentNodeId); + requestObject.put("taskType",taskType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("messageContent",requestname); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + JSONArray taskObjectList = new JSONArray(); + String sql =" select t2.userid,h1.loginid,h1.email,c1."+cus_staff+" as staffid "+ + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ + " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5', '7','11'))\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid; + + bb.writeLog("sendTodoDataByForceRecycle--sql:"+sql); + rs.executeQuery(sql); + while (rs.next()){ + String usercode = Util.null2String(rs.getString("loginid")) ; + String staffid = Util.null2String(rs.getString("staffid")) ; + String objectCode = usercode ; + String operatorCode = usercode ; + JSONObject taskObject = new JSONObject(); + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",staffid); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + } + + requestObject.put("actionType",actionType); + requestObject.put("taskObjectList",taskObjectList); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("sendTodoDataByForceRecycle--msgdata:"+msgdata); + if(!"".equals(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + return resultCode; + } + + + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + +} diff --git a/src/weaver/interfaces/dito/forceback/RequestForceBackUtil.java b/src/weaver/interfaces/dito/forceback/RequestForceBackUtil.java new file mode 100644 index 00000000..e8b53ce8 --- /dev/null +++ b/src/weaver/interfaces/dito/forceback/RequestForceBackUtil.java @@ -0,0 +1,802 @@ +package weaver.interfaces.dito.forceback; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; + +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class RequestForceBackUtil { + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); + /*** + * 流程强制收回 + * @param requestid + */ + public String sendTodoDataByForceBack(String requestid){ + + String resultCode = ""; + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + + String zhjkbs = "weaver.interfaces.dito.forceback.RequestForceBackUtil.sendTodoDataByForceBack" ; + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + RecordSet rs = new RecordSet(); + + String message = "流程页面强制收回操作"; + BaseBean bb = new BaseBean(); + String cus_staff = PropBean.getUfPropValue("cus_staff") ; + String scopeid = "-1"; + String scope = "HrmCustomFieldByInfoType" ; + + String terminal = "1" ; + String taskType = "0"; + try { + + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; + String replace = bpm_app_workflowurl.replace("/bpm", ""); + String urlDing = replace+bpm_app_requesturl+requestid; + String urlApp = replace+bpm_app_requesturl+requestid; + if(StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + String currentnodetype = baseMap.get("currentnodetype"); + + bb.writeLog("sendTodoDataByForceBack-currentNodeId:"+currentNodeId); + bb.writeLog("sendTodoDataByForceBack-currentnodetype:"+currentnodetype); + + if("3".equals(currentnodetype)){ + message += ",流程状态为归档"; + String actionType = "3" ; + try { + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + String auth = username + ":" + passwd; + bb.writeLog("sendTodoDataByForceBack-3-requestObject:"+requestObject.toJSONString()); + + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("sendTodoDataByForceBack-3-msgdata:"+msgdata); + if(StringUtils.isNotBlank(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + bb.writeLog("sendTodoDataByForceBack:"+e); + } + }else{ + String actionType = "2"; + String objectAction = "0" ; + String objectType = "0"; + + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + JSONArray taskObjectList = new JSONArray(); + String sql =" select t2.userid,h1.loginid,h1.email,c1."+cus_staff+" as staffid "+ + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ + " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5', '7','11'))\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid; + + bb.writeLog("sendTodoDataByForceBack--sql:"+sql); + rs.executeQuery(sql); + while (rs.next()){ + String usercode = Util.null2String(rs.getString("loginid")) ; + String staffid = Util.null2String(rs.getString("staffid")) ; + String objectCode = usercode ; + String operatorCode = usercode ; + JSONObject taskObject = new JSONObject(); + taskObject.put("objectAction",objectAction); + taskObject.put("objectType",objectType); + taskObject.put("objectCode",objectCode); + taskObject.put("objectId",staffid); + taskObject.put("operatorCode",operatorCode); + taskObjectList.add(taskObject); + } + + requestObject.put("actionType",actionType); + requestObject.put("taskObjectList",taskObjectList); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("sendTodoDataByForceBack--msgdata:"+msgdata); + if(!"".equals(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + return resultCode; + } + + + private String getShortMessageTitle(String messageTitle) { + if (messageTitle.length() > 20) { + messageTitle = messageTitle.substring(0, 17) + "..."; + } + return messageTitle; + } + + + public List> queryRequestRemark89ByForceBack(String requestid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryRequestRemark89ByForceBack-requestid:"+requestid); + List> remark89List = new ArrayList>(); + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + + String currentnodeid = ""; + String sql = " select currentnodeid from workflow_requestbase where requestid = "+requestid; + rs.executeQuery(sql); + if(rs.next()){ + currentnodeid = Util.null2String(rs.getString("currentnodeid")); + } + + if(StringUtils.isNotBlank(currentnodeid)){ + sql =" select t.id,t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark in (8,9)\n" + + " and t.requestid in("+requestid +") and t.nodeid = "+currentnodeid ; + + rs.executeQuery(sql); + bb.writeLog("queryRequestRemarkAtByForceBack-sql:"+sql); + while (rs.next()){ + String currentid = Util.null2String(rs.getString("id")); + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("currentid",currentid); + + remark89List.add(map); + } + } + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("queryRequestRemarkAtByForceBack-e:"+e); + } + + return remark89List; + } + + + public List> queryRequestAtByForceBack(String requestid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + List> atList = new ArrayList>(); + bb.writeLog("queryRequestRemarkAtByForceBack-requestid:"+requestid); + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + + String currentnodeid = ""; + String sql = " select currentnodeid from workflow_requestbase where requestid = "+requestid; + rs.executeQuery(sql); + if(rs.next()){ + currentnodeid = Util.null2String(rs.getString("currentnodeid")); + } + + if(StringUtils.isNotBlank(currentnodeid)){ + sql =" select t.id,t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark in (18)\n" + + " and t.requestid in("+requestid +") and t.nodeid = "+currentnodeid ; + + rs.executeQuery(sql); + bb.writeLog("queryRequestRemarkAtByForceBack-sql:"+sql); + while (rs.next()){ + String currentid = Util.null2String(rs.getString("id")); + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + String preisremark = Util.null2String(rs.getString("preisremark")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("currentid",currentid); + atList.add(map); + } + } + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("queryRequestRemarkAtByForceBack-e:"+e); + } + + return atList; + } + + public List> queryRequestForwardByForceBack(String requestid){ + List> forwardList = new ArrayList>(); + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + bb.writeLog("queryRequestRemarkAtByForceBack-requestid:"+requestid); + try{ + Map map = null ; + if(StringUtils.isNotBlank(requestid)){ + + String currentnodeid = ""; + String sql = " select currentnodeid from workflow_requestbase where requestid = "+requestid; + rs.executeQuery(sql); + if(rs.next()){ + currentnodeid = Util.null2String(rs.getString("currentnodeid")); + } + + if(StringUtils.isNotBlank(currentnodeid)){ + sql =" select t.id,t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark\n" + + " from workflow_currentoperator t\n" + + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + + " left join workflow_base t3 on t3.id = t1.workflowid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark = 1 \n" + + " and t.requestid in("+requestid +") and t.nodeid = "+currentnodeid ; + + rs.executeQuery(sql); + bb.writeLog("queryRequestRemarkAtByForceBack-sql:"+sql); + while (rs.next()){ + String currentid = Util.null2String(rs.getString("id")); + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + map.put("currentid",currentid); + forwardList.add(map); + } + } + + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("queryRequestRemarkAtByForceBack-e:"+e); + } + return forwardList; + } + + /*** + * + * @param remarkList + * @param atList + */ + public void completeReamrkAtByForceBack(List> remarkList, List> atList,List> forwardList){ + + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("completeReamrkAtByForceBack--remark8List999:"+remarkList.size()); + if(remarkList.size() >0){ + String notes = "流程页面强制收回,完成抄送(需提交、不需提交)的数据"; + finishedReuqestRemarkByForceBack(remarkList,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("completeReamrkAtByForceBack-e:"+e); + } + + try{ + bb.writeLog("completeReamrkAtByForceBack--atList999:"+atList.size()); + if(atList.size() >0){ + String notes = "流程页面强制收回,完成@的数据"; + finishedWorkflowAtByForceBack(atList,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("completeReamrkAtByForceBack-e:"+e); + } + + + + try{ + bb.writeLog("completeReamrkAtByForceBack--forwardList000:"+forwardList.size()); + if(forwardList.size() >0){ + String notes = "流程页面强制收回,完成转发数据"; + finishedWorkflowForwardByForceBack(forwardList,notes); + } + }catch (Exception e){ + e.printStackTrace(); + bb.writeLog("completeReamrkAtByForceBack-e:"+e); + } + } + + + public void finishedReuqestRemarkByForceBack(List> list,String notes){ + BaseBean bb = new BaseBean(); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + + bb.writeLog("finishedReuqestCopyToByForceBack-userid:"+userid); + bb.writeLog("finishedReuqestCopyToByForceBack-nodeid:"+nodeid); + bb.writeLog("finishedReuqestCopyToByForceBack-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ + finishedRquestRemarkByRequest(requestid,userid,nodeid,workflowname,requestname,nodename,notes); + } + } + } + + + private void finishedRquestRemarkByRequest(String requestid,String userid,String nodeid,String workflowname,String requestname,String nodename,String notes){ + BaseBean bb = new BaseBean(); + bb.writeLog("finishedRquestRemarkByRequest-requestid:"+requestid); + String zhjkbs = "weaver.interfaces.dito.forceback.RequestForceBackUtil.finishedRquestRemarkByRequest" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + String portal_todourl = Constants.portal_todourl; + String username = Constants.username; + String passwd = Constants.passwd; + String center = Constants.center; + String bpm_workflowurl = Constants.bpm_workflowurl; + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3" ; + String terminal = "1" ; + String taskType = "1"; //0 – 待办 1 –待阅 + + RecordSet rs = new RecordSet(); + + try { + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + String urlPc = "[newtab]" + bpm_workflowurl + "/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid; + String replace = bpm_app_workflowurl.replace("/bpm", ""); + String urlDing = replace+bpm_app_requesturl+requestid; + String urlApp = replace+bpm_app_requesturl+requestid; + if(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + String createrLoginId = ""; + String basesql =" select h2.loginid "+ + " from workflow_requestbase t1\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + bb.writeLog("finishedRquestRemarkByRequest:createrLoginId:"+createrLoginId); + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode", requestid+"_cs_"+userid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",requestname); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + bb.writeLog("finishedRquestRemarkByRequest-requestObject:"+requestObject.toJSONString()); + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("finishedRquestRemarkByRequest-msgdata:"+msgdata); + if(StringUtils.isNotEmpty(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + + + public void finishedWorkflowAtByForceBack(List> list,String notes){ + + BaseBean bb = new BaseBean(); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + + bb.writeLog("finishedWorkflowAtByForceBack-userid:"+userid); + bb.writeLog("finishedWorkflowAtByForceBack-nodeid:"+nodeid); + bb.writeLog("finishedWorkflowAtByForceBack-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ + finishedRequestAtByRequest(requestid,userid,nodeid,workflowname,requestname,nodename,notes); + } + + } + } + + + /*** + * 完成@数据 + * @param requestid + * @param userid + * @param nodeid + * @param workflowname + * @param requestname + * @param nodename + */ + private void finishedRequestAtByRequest(String requestid,String userid,String nodeid,String workflowname,String requestname,String nodename,String notes){ + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + bb.writeLog("finishedRequestAtByRequest-requestid:"+requestid); + + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + + String zhjkbs = "weaver.interfaces.dito.forceback.RequestForceBackUtil.finishedRequestAtByRequest" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3"; + String terminal = "1" ; + String taskType = "1"; + + try { + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; + String replace = bpm_app_workflowurl.replace("/bpm", ""); + String urlDing = replace+bpm_app_requesturl+requestid; + String urlApp = replace+bpm_app_requesturl+requestid; + if(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + String createrLoginId = ""; + String basesql =" select h2.loginid "+ + " from workflow_requestbase t1\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + bb.writeLog("finishedRequestAtByRequest-createrLoginId:"+createrLoginId); + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + + requestObject.put("center", center); + requestObject.put("taskType", taskType); + requestObject.put("actionType", actionType); + requestObject.put("createDate", processTime); + requestObject.put("messageTitle",requestname); + requestObject.put("terminal", terminal); + requestObject.put("urlPc", urlPc); + requestObject.put("urlDing", urlDing); + requestObject.put("urlApp",urlApp); + requestObject.put("taskCode", "weaver"+requestid+"_at_"+userid); + + String auth = username + ":" + passwd; + bb.writeLog("finishedRequestAtByRequest--requestObject:" + requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); + bb.writeLog("finishedRequestAtByRequest-msgdata:" + msgdata); + if (!"".equals(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + if (msgObject.containsKey("resultCode")) { + String resultCode = msgObject.getString("resultCode"); + if ("0".equals(resultCode)) { + + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,userid,notes); + + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid,notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * + * @param list + * @param notes + */ + public void finishedWorkflowForwardByForceBack(List> list,String notes){ + + BaseBean bb = new BaseBean(); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + + bb.writeLog("finishedWorkflowForwardByForceBack-userid:"+userid); + bb.writeLog("finishedWorkflowForwardByForceBack-nodeid:"+nodeid); + bb.writeLog("finishedWorkflowForwardByForceBack-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ + finishedRequestForwardByRequest(requestid,userid,nodeid,workflowname,requestname,nodename,notes); + } + + } + } + + + /*** + * 完成@数据 + * @param requestid + * @param userid + * @param nodeid + * @param workflowname + * @param requestname + * @param nodename + */ + private void finishedRequestForwardByRequest(String requestid,String userid,String nodeid,String workflowname,String requestname,String nodename,String notes){ + + BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); + bb.writeLog("finishedWorkflowForwardByForceBack-requestid:"+requestid); + + String portal_todourl = Constants.portal_todourl; + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String username = Constants.username; + String passwd = Constants.passwd; + String bpm_workflowurl = Constants.bpm_workflowurl; + String center = Constants.center; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + + String zhjkbs = "weaver.interfaces.dito.forceback.RequestForceBackUtil.finishedRequestForwardByRequest" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3"; + String terminal = "1" ; + String taskType = "1"; + + try { + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; + String replace = bpm_app_workflowurl.replace("/bpm", ""); + String urlDing = replace+bpm_app_requesturl+requestid; + String urlApp = replace+bpm_app_requesturl+requestid; + if(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + String createrLoginId = ""; + String basesql =" select h2.loginid "+ + " from workflow_requestbase t1\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + bb.writeLog("finishedWorkflowForwardByForceBack-createrLoginId:"+createrLoginId); + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + + requestObject.put("center", center); + requestObject.put("taskType", taskType); + requestObject.put("actionType", actionType); + requestObject.put("createDate", processTime); + requestObject.put("messageTitle",requestname); + requestObject.put("terminal", terminal); + requestObject.put("urlPc", urlPc); + requestObject.put("urlDing", urlDing); + requestObject.put("urlApp",urlApp); + requestObject.put("taskCode", "weaver" + requestid+"_zf_"+ userid); + + String auth = username + ":" + passwd; + bb.writeLog("finishedWorkflowForwardByForceBack--requestObject:" + requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); + bb.writeLog("finishedWorkflowForwardByForceBack-msgdata:" + msgdata); + if (!"".equals(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + if (msgObject.containsKey("resultCode")) { + String resultCode = msgObject.getString("resultCode"); + if ("0".equals(resultCode)) { + + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,userid,notes); + + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid,notes); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + +} diff --git a/src/weaver/interfaces/dito/monitor/SendPortalMonitorArchvingUtil.java b/src/weaver/interfaces/dito/monitor/SendPortalMonitorArchvingUtil.java index 6060c435..172a4eca 100644 --- a/src/weaver/interfaces/dito/monitor/SendPortalMonitorArchvingUtil.java +++ b/src/weaver/interfaces/dito/monitor/SendPortalMonitorArchvingUtil.java @@ -1,6 +1,5 @@ package weaver.interfaces.dito.monitor; -import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.Util; @@ -13,6 +12,8 @@ import java.util.Map; public class SendPortalMonitorArchvingUtil { /*** + * 流程强制归档,查询流程的待办是数据 + * * * @param requestids * @return @@ -28,7 +29,6 @@ public class SendPortalMonitorArchvingUtil { " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid \n" + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '') \n" + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11'))\n" + - " and t2.islasttimes = 1\n" + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + " and t2.requestid in("+requestids+") "; @@ -54,6 +54,8 @@ public class SendPortalMonitorArchvingUtil { /** + * 流程强制归档,查询流程所有未完成的抄送数据 + * 流程强制收回,查询流程所有未完成的抄送数据 * * @param userList * @return @@ -75,7 +77,7 @@ public class SendPortalMonitorArchvingUtil { " left join workflow_base t3 on t3.id = t1.workflowid\n" + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + " and t.isremark in (8,9) \n" + - " and t.preisremark not in (18)\n" + + " and t.preisremark in (18)\n" + " and t.requestid in("+requestid +") and t.userid in("+current_userid+") " ; rs.executeQuery(sql); @@ -106,6 +108,9 @@ public class SendPortalMonitorArchvingUtil { /*** + * 流程强制归档,查询流程所有转发的数据 + * 流程强制收回,查询流程所有转发的数据 + * * * @param userList * @return @@ -159,6 +164,8 @@ public class SendPortalMonitorArchvingUtil { /*** + * 流程强制归档,查询流程所有@的数据 + * 流程强制收回,查询流程所有@的数据 * * @param userList * @return diff --git a/src/weaver/interfaces/dito/monitor/SendPortalMonitorDeleteUtil.java b/src/weaver/interfaces/dito/monitor/SendPortalMonitorDeleteUtil.java index dcc151a1..55b3f0ee 100644 --- a/src/weaver/interfaces/dito/monitor/SendPortalMonitorDeleteUtil.java +++ b/src/weaver/interfaces/dito/monitor/SendPortalMonitorDeleteUtil.java @@ -21,6 +21,8 @@ import java.util.Map; public class SendPortalMonitorDeleteUtil { /** + * 流程监控删除,获取未完成的抄送需提交、抄送不需提交的数据 + * * * @param requestid */ @@ -68,6 +70,10 @@ public class SendPortalMonitorDeleteUtil { } /** + * 流程监控删除,完成流程所有未完成的抄送数据的门户调用 + * 流程监控强制归档,完成流程所有未完成的抄送数据的门户调用 + * 流程监控强制收回,完成流程所有未完成的抄送数据的门户调用 + * 点击流程抄送需提交的按钮,完成抄送流程的门户调用 * * @param list * @param loginid @@ -94,6 +100,8 @@ public class SendPortalMonitorDeleteUtil { } + + /*** * * @param requestid @@ -108,7 +116,7 @@ public class SendPortalMonitorDeleteUtil { private void monitorFinishedWorkflowCopyToByUserid(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes){ BaseBean bb = new BaseBean(); bb.writeLog("monitorFinishedWorkflowCopyToByUserid-requestid:"+requestid); - String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.monitorFinishedWorkflowCopyToByUserid" ; + String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil.monitorFinishedWorkflowCopyToByUserid" ; HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); @@ -126,15 +134,10 @@ public class SendPortalMonitorDeleteUtil { String terminal = "1" ; String taskType = "1"; //0 – 待办 1 –待阅 -// String objectAction = "0" ; -// String objectType = "0"; -// String objectId = "" ; + RecordSet rs = new RecordSet(); - JSONObject requestObject = new JSONObject(); try { - - String createdate = TimeUtil.getCurrentDateString(); - String createtime = TimeUtil.getCurrentTimeString(); + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); String urlPc = "[newtab]" + bpm_workflowurl + "/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid; String replace = bpm_app_workflowurl.replace("/bpm", ""); @@ -145,35 +148,36 @@ public class SendPortalMonitorDeleteUtil { urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - requestObject.put("center",center); + String createrLoginId = ""; + String basesql =" select h2.loginid "+ + " from workflow_requestbase t1\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + bb.writeLog("monitorFinishedWorkflowCopyToByUserid:sql:"+basesql); + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); requestObject.put("title",requestname); - requestObject.put("creator",loginid); - requestObject.put("taskCode", requestid+"_cs_"+userid); + requestObject.put("messageContent",requestname); requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode", requestid+"_cs_"+userid); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); - requestObject.put("createDate",createdate+" "+createtime); + requestObject.put("createDate",processTime); requestObject.put("messageTitle",requestname); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodename); - requestObject.put("ticketType",workflowname); - -// JSONArray taskObjectList = new JSONArray(); -// JSONObject taskObject = new JSONObject(); -// -// String objectCode = loginid ; -// String operatorCode = loginid ; -// taskObject.put("objectAction",objectAction); -// taskObject.put("objectType",objectType); -// taskObject.put("objectCode",objectCode); -// taskObject.put("objectId",objectId); -// taskObject.put("operatorCode",operatorCode); -// taskObjectList.add(taskObject); -// requestObject.put("taskObjectList",taskObjectList); bb.writeLog("monitorFinishedWorkflowCopyToByUserid-requestObject:"+requestObject.toJSONString()); @@ -187,6 +191,8 @@ public class SendPortalMonitorDeleteUtil { if("0".equals(resultCode)){ sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + // 抄送不需提交的话,处理本人、本节点所有OA中抄送不需提交的数据 +// updateCurrentOperatorRemark(requestid); }else{ String resultmsg = msgObject.getString("resultMsg"); sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); @@ -201,6 +207,8 @@ public class SendPortalMonitorDeleteUtil { /*** + * 流程监控删除,获取未完成的转发的数据 + * * * @param requestid */ @@ -252,6 +260,9 @@ public class SendPortalMonitorDeleteUtil { /*** + * 流程监控删除,完成流程所有转发数据的门户调用 + * 流程监控强制归档,完成流程所有转发数据的门户调用 + * 流程监控强制收回,完成流程所有转发数据的门户调用 * * @param list * @param loginid @@ -270,19 +281,18 @@ public class SendPortalMonitorDeleteUtil { String requestname = Util.null2String(dataMap.get("requestname")); String workflowname = Util.null2String(dataMap.get("workflowname")); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-userid:"+userid); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-nodeid:"+nodeid); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-requestid:"+requestid); + bb.writeLog("monitorFinishedWorkflowForwardByRequestid-userid:"+userid); + bb.writeLog("monitorFinishedWorkflowForwardByRequestid-nodeid:"+nodeid); + bb.writeLog("monitorFinishedWorkflowForwardByRequestid-requestid:"+requestid); if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ monitorFinishedWorkflowForwardByUserId(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes); } - } } /*** - * + * 完成 转发 数据 * @param requestid * @param userid * @param nodeid @@ -295,12 +305,11 @@ public class SendPortalMonitorDeleteUtil { BaseBean bb = new BaseBean(); bb.writeLog("monitorFinishedWorkflowForwardByUserId-requestid:"+requestid); -// String notes = "流程页面删除后,删除未读的转发数据"; - String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.monitorFinishedWorkflowForwardByUserId" ; - String resultCode = "" ; + String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil.monitorFinishedWorkflowForwardByUserId" ; HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + RecordSet rs = new RecordSet(); String bpm_app_workflowurl = PropBean.getUfPropValue("bpm_app_workflowurl"); String bpm_app_requesturl = PropBean.getUfPropValue("bpm_app_requesturl"); String portal_todourl = PropBean.getUfPropValue("portal_todourl"); @@ -313,34 +322,10 @@ public class SendPortalMonitorDeleteUtil { String actionType = "3" ; String terminal = "1" ; String taskType = "1"; //0 – 待办 1 –待阅 - String objectAction = "0" ; - String objectType = "0"; - String objectId = "" ; - String nextNodeUserIds = ""; - JSONObject requestObject = new JSONObject(); try { - String createdate = TimeUtil.getCurrentDateString(); - String createtime = TimeUtil.getCurrentTimeString(); - -// String workcode = ""; -// if(StringUtils.isNotBlank(forwardNodeUserId)){ -// String sql = " select * from (select id, lastname,loginid from hrmresource where status = 1 union all select id, lastname,loginid from hrmresourcemanager ) w where w.id = '" + forwardNodeUserId + "'"; -// rs.executeQuery(sql); -// while (rs.next()) { -// workcode = Util.null2String(rs.getString("loginid")); -// } -// } -// bb.writeLog("monitorFinishedWorkflowForwardByUserId-workcode:"+workcode); -// String forwardNodeName = "" ; -// if(StringUtils.isNotBlank(forwardNodeId)){ -// rs.executeQuery(" select nodename from workflow_nodebase where id = ?",forwardNodeId); -// if (rs.next()){ -// forwardNodeName = Util.null2String(rs.getString("nodename")); -// } -// } -// bb.writeLog("monitorFinishedWorkflowForwardByUserId-forwardNodeName:"+forwardNodeName); + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); String urlPc = "[newtab]" + bpm_workflowurl + "/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid; String replace = bpm_app_workflowurl.replace("/bpm", ""); @@ -352,35 +337,36 @@ public class SendPortalMonitorDeleteUtil { urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - requestObject.put("center",center); + String createrLoginId = ""; + String basesql =" select h2.loginid "+ + " from workflow_requestbase t1\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + bb.writeLog("monitorFinishedWorkflowForwardByUserId:sql:"+basesql); + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); requestObject.put("title",requestname); - requestObject.put("creator",workcode); - requestObject.put("taskCode", "weaver"+requestid+"_zf_"+userid); + requestObject.put("messageContent",requestname); requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode", "weaver"+requestid+"_zf_"+userid); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); - requestObject.put("createDate",createdate+" "+createtime); + requestObject.put("createDate",processTime); requestObject.put("messageTitle",requestname); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodename); - requestObject.put("ticketType",workflowname); - -// JSONArray taskObjectList = new JSONArray(); -// JSONObject taskObject = new JSONObject(); -// String objectCode = workcode ; -// String operatorCode = workcode ; -// taskObject.put("objectAction",objectAction); -// taskObject.put("objectType",objectType); -// taskObject.put("objectCode",objectCode); -// taskObject.put("objectId",objectId); -// taskObject.put("operatorCode",operatorCode); -// taskObjectList.add(taskObject); -// requestObject.put("taskObjectList",taskObjectList); -// bb.writeLog("monitorFinishedWorkflowForwardByUserId-requestObject:"+requestObject.toJSONString()); String auth = username + ":" + passwd; String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); @@ -388,14 +374,13 @@ public class SendPortalMonitorDeleteUtil { if(StringUtils.isNotEmpty(msgdata)){ JSONObject msgObject = JSONObject.parseObject(msgdata); if(msgObject.containsKey("resultCode")){ - resultCode = msgObject.getString("resultCode"); + String resultCode = msgObject.getString("resultCode"); if("0".equals(resultCode)){ - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,nextNodeUserIds,notes); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,nextNodeUserIds,notes); - + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); } } } @@ -406,7 +391,10 @@ public class SendPortalMonitorDeleteUtil { /*** - * @ + * 流程监控删除,获取未完成的@数据 + * + * + * * @param requestid */ public List> queryWorkflowAtByRequestid(String requestid) { @@ -450,15 +438,21 @@ public class SendPortalMonitorDeleteUtil { map.put("lcid",lcid); list.add(map); } - bb.writeLog("queryWorkflowAtByRequestid-list:" + list.size()); } - return list; } - + /*** + * 流程监控删除,完成流程所有@数据的门户调用 + * 流程监控强制归档,完成流程所有@数据的门户调用 + * 流程监控强制收回,完成流程所有@数据的门户调用 + * + * @param list + * @param loginid + * @param notes + */ public void monitorFinishedWorkflowAtByRequestid(List> list,String loginid,String notes){ BaseBean bb = new BaseBean(); @@ -473,18 +467,19 @@ public class SendPortalMonitorDeleteUtil { String requestname = Util.null2String(dataMap.get("requestname")); String workflowname = Util.null2String(dataMap.get("workflowname")); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-userid:"+userid); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-nodeid:"+nodeid); - bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-requestid:"+requestid); + bb.writeLog("monitorFinishedWorkflowAtByRequestid-userid:"+userid); + bb.writeLog("monitorFinishedWorkflowAtByRequestid-nodeid:"+nodeid); + bb.writeLog("monitorFinishedWorkflowAtByRequestid-requestid:"+requestid); if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(nodeid)){ monitorFinishedWorkflowAtByUserId(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes); } + } } /*** - * + * 完成@数据 * @param requestid * @param userid * @param nodeid @@ -496,6 +491,7 @@ public class SendPortalMonitorDeleteUtil { private void monitorFinishedWorkflowAtByUserId(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes){ BaseBean bb = new BaseBean(); + RecordSet rs = new RecordSet(); bb.writeLog("monitorFinishedWorkflowAtByUserId-requestid:"+requestid); // String notes = "流程监控删除后,删除未读的@数据"; @@ -507,7 +503,7 @@ public class SendPortalMonitorDeleteUtil { String center = Constants.center; String bpm_app_requesturl = Constants.bpm_app_requesturl; - String zhjkbs = "com.customization.dito.sendtodo.SendPortalWithDeleteUtil.completeRequestAtToReadData" ; + String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorDeleteUtil.monitorFinishedWorkflowAtByUserId" ; HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); @@ -521,6 +517,7 @@ public class SendPortalMonitorDeleteUtil { try { String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; String replace = bpm_app_workflowurl.replace("/bpm", ""); String urlDing = replace+bpm_app_requesturl+requestid; @@ -530,44 +527,144 @@ public class SendPortalMonitorDeleteUtil { urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } + String createrLoginId = ""; + String basesql =" select h2.loginid "+ + " from workflow_requestbase t1\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + + bb.writeLog("monitorFinishedWorkflowAtByUserId:sql:"+basesql); + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + bb.writeLog("createrLoginId:"+createrLoginId); + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + requestObject.put("center", center); - requestObject.put("title", requestname); requestObject.put("taskType", taskType); requestObject.put("actionType", actionType); requestObject.put("createDate", processTime); requestObject.put("messageTitle",requestname); - requestObject.put("messageContent", requestname); requestObject.put("terminal", terminal); requestObject.put("urlPc", urlPc); requestObject.put("urlDing", urlDing); - requestObject.put("ticketType", workflowname); - requestObject.put("creator",loginid); requestObject.put("urlApp",urlApp); - requestObject.put("nodeName",nodename); - requestObject.put("nodeId",nodeid); requestObject.put("taskCode", "weaver"+requestid+"_at_"+userid); String auth = username + ":" + passwd; - bb.writeLog("completeRequestAtToReadData--requestObject:" + requestObject.toJSONString()); + bb.writeLog("monitorFinishedWorkflowAtByUserId--requestObject:" + requestObject.toJSONString()); String msgdata = httpRequestUtil.doPostByAuth(portal_todourl, requestObject.toJSONString(), auth); - bb.writeLog("completeRequestAtToReadData-msgdata:" + msgdata); + bb.writeLog("monitorFinishedWorkflowAtByUserId-msgdata:" + msgdata); if (!"".equals(msgdata)) { JSONObject msgObject = JSONObject.parseObject(msgdata); if (msgObject.containsKey("resultCode")) { String resultCode = msgObject.getString("resultCode"); if ("0".equals(resultCode)) { sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,userid,notes); + + // updateCurrentOperatorAt(requestid); + }else{ String resultmsg = msgObject.getString("resultMsg"); sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid,notes); } } } - } catch (Exception e) { e.printStackTrace(); } } + + /*** + * + * @param requestid + */ + public void updateCurrentOperatorAt(String requestid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("updateCurrentOperatorAt-requestid:"+requestid); + if(StringUtils.isNotBlank(requestid)){ + String sql = " update workflow_currentoperator set isremark=2 where requestid = "+requestid +" and isremark <> 2 and preisremark in (18) "; + boolean isTrue = rs.executeUpdate(sql); + bb.writeLog("updateCurrentOperatorremark-sql:"+sql +" isTrue:"+isTrue); + } + }catch (Exception e){ + bb.writeLog("updateCurrentOperatorremark-e:"+e); + } + } + + + public void updateCurrentOperatorRemark(String requestid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("updateCurrentOperatorRemark-requestid:"+requestid); + if(StringUtils.isNotBlank(requestid)){ + String sql = " update workflow_currentoperator set isremark=2 where requestid = "+requestid +" and isremark <> 2 and preisremark in (8) "; + boolean isTrue = rs.executeUpdate(sql); + bb.writeLog("updateCurrentOperatorremark-sql:"+sql +" isTrue:"+isTrue); + } + }catch (Exception e){ + bb.writeLog("updateCurrentOperatorremark-e:"+e); + } + } + + + /** + * 流程打开页面后,更新当前用户未完成的@的状态为2 + * @param requestid + * @param nodeid + * @param userid + */ + public void updateCurrentOperatorAtByNode(String requestid,String nodeid,String userid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("updateCurrentOperatorremark-requestid:"+requestid); + if(StringUtils.isNotBlank(requestid)){ + String sql = " update workflow_currentoperator set isremark=2 where requestid = "+requestid +" and isremark <> 2 and preisremark in (18) and nodeid = "+nodeid +" and userid="+userid; + boolean isTrue = rs.executeUpdate(sql); + bb.writeLog("updateCurrentOperatorremark-sql:"+sql +" isTrue:"+isTrue); + } + }catch (Exception e){ + bb.writeLog("updateCurrentOperatorremark-e:"+e); + } + } + + /** + * 流程打开页面后,更新当前用户抄送不需要提交的抄送的状态为2 + * @param requestid + * @param nodeid + * @param userid + */ + public void updateCurrentOperatorRemarkByNode(String requestid,String nodeid,String userid){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + try{ + bb.writeLog("updateCurrentOperatorRemark-requestid:"+requestid); + if(StringUtils.isNotBlank(requestid)){ + String sql = " update workflow_currentoperator set isremark=2 where requestid = "+requestid +" and isremark <> 2 and preisremark in (8) and nodeid = "+nodeid +" and userid="+userid; + boolean isTrue = rs.executeUpdate(sql); + bb.writeLog("updateCurrentOperatorremark-sql:"+sql +" isTrue:"+isTrue); + } + }catch (Exception e){ + bb.writeLog("updateCurrentOperatorremark-e:"+e); + } + } + + + + } diff --git a/src/weaver/interfaces/dito/monitor/SendPortalMonitorRepossessedUtil.java b/src/weaver/interfaces/dito/monitor/SendPortalMonitorRepossessedUtil.java new file mode 100644 index 00000000..c65bca7c --- /dev/null +++ b/src/weaver/interfaces/dito/monitor/SendPortalMonitorRepossessedUtil.java @@ -0,0 +1,209 @@ +package weaver.interfaces.dito.monitor; + +import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.HttpRequestUtil; +import com.customization.dito.sendtodo.SendPortalErrorUtil; +import com.time.util.DateUtil; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.interfaces.dito.comInfo.PropBean; +import weaver.interfaces.dito.constant.Constants; + +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SendPortalMonitorRepossessedUtil { + + + /** + * 流程强制收回,查询流程所有未完成的抄送数据 + * + * @return + */ + public List> queryWorkflowRemark89ByArchving(String requestids){ + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + List> list = new ArrayList>(); + String[] requestidArray = requestids.split(","); + for(int i=0;i 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t.preisremark in (8,9)\n" + + " and t.requestid in("+requestid +") and t.nodeid = "+currentnodeid ; + + rs.executeQuery(sql); + bb.writeLog("queryWorkflowRemark89ByArchving-sql:"+sql); + + while (rs.next()){ + String nodeid = Util.null2String(rs.getString("nodeid")); + String userid = Util.null2String(rs.getString("userid")); + String nodename = Util.null2String(rs.getString("nodename")); + String workflowname = Util.null2String(rs.getString("workflowname")) ; + String requestname = Util.null2String(rs.getString("requestname")) ; + String lcid = Util.null2String(rs.getString("requestid")) ; + + Map map = new HashMap(); + map.put("requestid",requestid); + map.put("userid",userid); + map.put("nodeid",nodeid); + map.put("nodename",nodename); + map.put("workflowname",workflowname); + map.put("requestname",requestname); + map.put("lcid",lcid); + list.add(map); + } + } + + bb.writeLog("queryWorkflowRemark89ByArchving-list:"+list.size()); + return list; + } + + + public void monitorRequestRemark89ByArchving(List> list,String loginid,String notes){ + BaseBean bb = new BaseBean(); + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-loginid:"+loginid); + for(int i=0;i dataMap = list.get(i); + String requestid = Util.null2String(dataMap.get("lcid")); + String userid = Util.null2String(dataMap.get("userid")); + String nodeid = Util.null2String(dataMap.get("nodeid")); + String nodename = Util.null2String(dataMap.get("nodename")); + String requestname = Util.null2String(dataMap.get("requestname")); + String workflowname = Util.null2String(dataMap.get("workflowname")); + + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-userid:"+userid); + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-nodeid:"+nodeid); + bb.writeLog("monitorFinishedWorkflowCopyToByRequestid-requestid:"+requestid); + if(StringUtils.isNotBlank(userid) && StringUtils.isNotBlank(requestid)){ + monitorRequestRemark89ByUserid(requestid,userid,nodeid,loginid,workflowname,requestname,nodename,notes); + } + } + } + + + + + /*** + * + * @param requestid + * @param userid + * @param nodeid + * @param loginid + * @param workflowname + * @param requestname + * @param nodename + * @param notes + */ + private void monitorRequestRemark89ByUserid(String requestid,String userid,String nodeid,String loginid,String workflowname,String requestname,String nodename,String notes){ + BaseBean bb = new BaseBean(); + bb.writeLog("monitorRequestRemark89ByUserid-requestid:"+requestid); + String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorRepossessedUtil.monitorRequestRemark89ByUserid" ; + + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); + + String bpm_app_workflowurl = Constants.bpm_app_workflowurl; + String bpm_app_requesturl = Constants.bpm_app_requesturl; + String portal_todourl = Constants.portal_todourl; + String username = Constants.username; + String passwd = Constants.passwd; + String center = Constants.center; + String bpm_workflowurl = Constants.bpm_workflowurl; + String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); + + String actionType = "3" ; + String terminal = "1" ; + String taskType = "1"; //0 – 待办 1 –待阅 + + RecordSet rs = new RecordSet(); + + try { + String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); + + String urlPc = "[newtab]" + bpm_workflowurl + "/workflow/request/ViewRequestForwardSPA.jsp?requestid=" + requestid; + String replace = bpm_app_workflowurl.replace("/bpm", ""); + String urlDing = replace+bpm_app_requesturl+requestid; + String urlApp = replace+bpm_app_requesturl+requestid; + if(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); + urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); + } + + String createrLoginId = ""; + String basesql =" select h2.loginid "+ + " from workflow_requestbase t1\n" + + " left join (select id,lastname,loginid from hrmresource union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t1.requestid = "+requestid ; + bb.writeLog("monitorRequestRemark89ByUserid:sql:"+basesql); + rs.executeQuery(basesql); + if(rs.next()){ + createrLoginId = Util.null2String(rs.getString("loginid")) ; + } + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",nodeid); + requestObject.put("nodeName",nodename); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode", requestid+"_cs_"+userid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",requestname); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); + + bb.writeLog("monitorRequestRemark89ByUserid-requestObject:"+requestObject.toJSONString()); + + String auth = username + ":" + passwd; + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + bb.writeLog("monitorRequestRemark89ByUserid-msgdata:"+msgdata); + if(StringUtils.isNotEmpty(msgdata)){ + JSONObject msgObject = JSONObject.parseObject(msgdata); + if(msgObject.containsKey("resultCode")){ + String resultCode = msgObject.getString("resultCode"); + if("0".equals(resultCode)){ + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + + // 抄送不需提交的话,处理本人、本节点所有OA中抄送不需提交的数据 +// updateCurrentOperatorRemark(requestid); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeid,nodename,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + +} diff --git a/src/weaver/interfaces/dito/monitor/SendPortalMonitorUtil.java b/src/weaver/interfaces/dito/monitor/SendPortalMonitorUtil.java index 3d5bbdd1..982434f5 100644 --- a/src/weaver/interfaces/dito/monitor/SendPortalMonitorUtil.java +++ b/src/weaver/interfaces/dito/monitor/SendPortalMonitorUtil.java @@ -2,7 +2,7 @@ package weaver.interfaces.dito.monitor; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import weaver.general.TimeUtil; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; import weaver.interfaces.dito.constant.Constants; import com.customization.dito.sendtodo.HttpRequestUtil; import com.customization.dito.sendtodo.SendPortalErrorUtil; @@ -16,9 +16,7 @@ import weaver.general.Util; import weaver.hrm.User; import weaver.interfaces.dito.comInfo.PropBean; import java.net.URLEncoder; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; /*** @@ -26,8 +24,9 @@ import java.util.Map; */ public class SendPortalMonitorUtil { + RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); /*** - * 流程删除 + * 流程监控,完成流程删除的门户接口的调用 * @param requestids * @param userid */ @@ -45,7 +44,7 @@ public class SendPortalMonitorUtil { } /*** - * 流程删除 + * 流程监控,完成流程删除的门户接口的调用 * @param requestid * @param userid */ @@ -65,16 +64,13 @@ public class SendPortalMonitorUtil { SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - JSONObject requestObject = new JSONObject(); - RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); - bb.writeLog("SendPortalMonitorUtil--monitorDelete4Requestid:"+requestid); + bb.writeLog("monitorDelete4Requestid:"+requestid); String terminal = "1" ; String taskType = "0"; String actionType = "3" ; String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); - try { String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; String replace = bpm_app_workflowurl.replace("/bpm", ""); @@ -87,42 +83,32 @@ public class SendPortalMonitorUtil { } bb.writeLog("monitorDelete4Requestid-urlDing", urlDing); - String requestname = "" ; - String workflowname = "" ; - String nodeId = "" ; - String nodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("monitorDelete4Requestid--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - nodeId = Util.null2String(rs.getString("nodeid")) ; - nodeName = Util.null2String(rs.getString("nodeName")) ; - } + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); - requestObject.put("center",center); + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); requestObject.put("taskCode","weaver"+requestid); - requestObject.put("nodeId",nodeId); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",workflowname); String auth = username + ":" + passwd; bb.writeLog("monitorDelete4Requestid---requestObject:"+requestObject.toJSONString()); @@ -136,10 +122,10 @@ public class SendPortalMonitorUtil { String resultCode = msgObject.getString("resultCode"); if("0".equals(resultCode)){ - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,"",notes); }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",notes); } } } @@ -149,114 +135,6 @@ public class SendPortalMonitorUtil { } - /*** - * 删除失败后,延迟second秒后,再流程删除 - * @param requestid - * @param second - */ -// public void againMonitorDelete(String requestid,String userid,int second){ -// String zhjkbs = "weaver.interfaces.dito.monitor.SendPortalMonitorUtil.againMonitorDelete" ; -// -// String portal_todourl = Constants.portal_todourl; -// String bpm_app_workflowurl = Constants.bpm_app_workflowurl; -// String username = Constants.username; -// String passwd = Constants.passwd; -// String bpm_workflowurl = Constants.bpm_workflowurl; -// String center = Constants.center; -// String bpm_app_requesturl = Constants.bpm_app_requesturl; -// -// try { -// if(second > 0){ -// Thread.sleep(second); -// } -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } -// -// SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); -// HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); -// String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); -// JSONObject requestObject = new JSONObject(); -// RecordSet rs = new RecordSet(); -// BaseBean bb = new BaseBean(); -// bb.writeLog("SendPortalMonitorUtil--againMonitorDelete"); -// String terminal = "1" ; -// String taskType = "0"; -// String actionType = "3" ; -// try { -// -// String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); -// String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; -// String replace = bpm_app_workflowurl.replace("/bpm", ""); -// String urlDing = replace+bpm_app_requesturl+requestid; -// String urlApp = replace+bpm_app_requesturl+requestid; -// -// if(StringUtils.isNotEmpty(mobileJumpUrl)){ -// urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); -// urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); -// } -// bb.writeLog("againMonitorDelete-urlDing", urlDing); -// -// String requestname = "" ; -// String workflowname = "" ; -// String nodeId = "" ; -// String nodeName = "" ; -// String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + -// " from workflow_requestbase t1\n" + -// " inner join workflow_base t3 on t1.workflowid = t3.id\n" + -// " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ -// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + -// " and t1.requestid = "+requestid ; -// -// bb.writeLog("againMonitorDelete--sql2:"+sql); -// -// rs.executeQuery(sql); -// if (rs.next()){ -// requestname = Util.null2String(rs.getString("requestname")) ; -// workflowname = Util.null2String(rs.getString("workflowname")) ; -// nodeId = Util.null2String(rs.getString("nodeid")) ; -// nodeName = Util.null2String(rs.getString("nodeName")) ; -// } -// -// requestObject.put("center",center); -// requestObject.put("title",requestname); -// requestObject.put("taskCode","weaver"+requestid); -// requestObject.put("nodeId",nodeId); -// requestObject.put("taskType",taskType); -// requestObject.put("actionType",actionType); -// requestObject.put("createDate",processTime); -// requestObject.put("messageTitle",getShortMessageTitle(requestname)); -// requestObject.put("messageContent",requestname); -// requestObject.put("terminal",terminal); -// requestObject.put("urlPc",urlPc); -// requestObject.put("urlApp",urlApp); -// requestObject.put("urlDing",urlDing); -// requestObject.put("nodeName",nodeName); -// requestObject.put("ticketType",workflowname); -// -// String auth = username + ":" + passwd; -// bb.writeLog("againMonitorDelete---requestObject:"+requestObject.toJSONString()); -// String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); -// bb.writeLog("againMonitorDelete-msgdata:"+msgdata); -// Map map = new HashMap<>(); -// if(!"".equals(msgdata)){ -// JSONObject msgObject = JSONObject.parseObject(msgdata); -// //{"resultCode":"1","resultMsg":"No Result"} -// if(msgObject.containsKey("resultCode")){ -// String resultCode = msgObject.getString("resultCode"); -// if("0".equals(resultCode)){ -// sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,"",zhjkbs,""); -// }else{ -// String resultmsg = msgObject.getString("resultMsg"); -// sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName,userid,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); -// } -// } -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } - /*** * 流程强制归档 */ @@ -270,12 +148,12 @@ public class SendPortalMonitorUtil { * @param requestids */ public void monitorArchivedByTodo(String requestids,String currentUserId){ - + BaseBean bb = new BaseBean(); if(StringUtils.isNotBlank(requestids)){ String[] lcids = requestids.split(","); for(int i=0;i 1 or t1.deleted is null or t1.deleted = '')\n" + -// " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1','5','7','11')) \n" + -// " and t2.islasttimes = 1\n" + -// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + -// " and t2.requestid = "+requestid ; -// -// bb.writeLog("monitorArchivedByTodo--countSql:"+countSql); -// rs.executeQuery(countSql); -// while (rs.next()){ -// count++; -// } -// bb.writeLog("monitorArchivedByTodo--count:"+count); -// if(count >0){ - - String requestname = "" ; - String workflowname = "" ; - String currentNodeId = "" ; - String currentNodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("monitorArchivedByTodo4Requestid--sql2:"+sql); - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - } - requestObject.put("center",center); - requestObject.put("title",requestname); - requestObject.put("taskCode","weaver"+requestid); - requestObject.put("nodeId",currentNodeId); - requestObject.put("taskType",taskType); - requestObject.put("actionType",actionType); - requestObject.put("createDate",processTime); - requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); - requestObject.put("terminal",terminal); - requestObject.put("urlPc",urlPc); - requestObject.put("urlApp",urlApp); - requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); -// JSONArray taskObjectList = new JSONArray(); -// sql = " select t2.userid,h1.loginid,h1.lastname,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ -// " from workflow_requestbase t1\n" + -// " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + -// " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ -// " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + -// " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ -// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + -// " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('1','5','7','11')) \n" + -// " and t2.islasttimes = 1 \n" + -// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + -// " and t2.requestid = "+requestid ; -// -// rs.executeQuery(sql); -// while (rs.next()) { -// String creator = rs.getString("loginid"); -// String staffid = rs.getString("staffid"); -// bb.writeLog("monitorArchived:"+requestid+" creator:"+creator); -// if ("sysadmin".equals(creator)) { -// creator = "Admin"; -// } -// -// JSONObject taskObject = new JSONObject(); -// taskObject.put("objectAction", "0"); -// taskObject.put("objectType", "0"); -// taskObject.put("objectCode", creator); -// taskObject.put("objectId", staffid); -// taskObject.put("operatorCode", creator); -// taskObjectList.add(taskObject); -// } -// requestObject.put("taskObjectList",taskObjectList); + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); - String auth = username + ":" + passwd; - bb.writeLog("monitorArchivedByTodo4Requestid---requestObject:"+requestObject.toJSONString()); - String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); + requestObject.put("taskType",taskType); + requestObject.put("actionType",actionType); + requestObject.put("createDate",processTime); + requestObject.put("messageTitle",getShortMessageTitle(requestname)); + requestObject.put("terminal",terminal); + requestObject.put("urlPc",urlPc); + requestObject.put("urlApp",urlApp); + requestObject.put("urlDing",urlDing); - if (!"".equals(msgdata)) { - JSONObject msgObject = JSONObject.parseObject(msgdata); - //{"resultCode":"1","resultMsg":"No Result"} - if (msgObject.containsKey("resultCode")) { - String resultCode = msgObject.getString("resultCode"); - if ("0".equals(resultCode)) { - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,""); - }else{ - String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); - } + String auth = username + ":" + passwd; + bb.writeLog("monitorArchivedByTodo4Requestid---requestObject:"+requestObject.toJSONString()); + String msgdata = httpRequestUtil.doPostByAuth(portal_todourl,requestObject.toJSONString(),auth); + + if (!"".equals(msgdata)) { + JSONObject msgObject = JSONObject.parseObject(msgdata); + //{"resultCode":"1","resultMsg":"No Result"} + if (msgObject.containsKey("resultCode")) { + String resultCode = msgObject.getString("resultCode"); + if ("0".equals(resultCode)) { + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,""); + }else{ + String resultmsg = msgObject.getString("resultMsg"); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); } } -// } + } } catch (Exception e) { e.printStackTrace(); } @@ -479,7 +292,7 @@ public class SendPortalMonitorUtil { RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); - bb.writeLog("SendPortalMonitorUtil--monitorArchivedByToRead4Rquestid"); + bb.writeLog("monitorArchivedByToRead4Rquestid"); String terminal = "1" ; String taskType = "1"; String actionType = "0" ; @@ -501,40 +314,26 @@ public class SendPortalMonitorUtil { urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } - bb.writeLog("monitorArchivedByToRead4Rquestid-urlDing", urlDing); - - String requestname = "" ; - String workflowname = "" ; - String currentNodeId = "" ; - String currentNodeName = "" ; - String currentnodetype = "" ; - - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,t1.currentnodetype \n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("monitorArchivedByToRead4Rquestid--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - currentnodetype = Util.null2String(rs.getString("currentnodetype")) ; - } + + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + String currentnodetype = baseMap.get("currentnodetype"); + bb.writeLog("currentnodetype:"+currentnodetype); if("3".equals(currentnodetype)){ JSONArray taskObjectList = new JSONArray(); - sql = " select t2.id as userid,c1."+cus_staff+" as staffid,h1.loginid \n" + - " from ( select distinct id from workflow_forecastOperator t1 where t1.requestid = "+requestid+" and t1.nodeid ="+currentNodeId+" and t1.operateType in(-3,-4) ) t2 " + - " left join cus_fielddata c1 on c1.id = t2.id and c1.scopeid="+scopeid+" and c1.scope = '"+scope+"' \n" + - " left join (select id,lastname,loginid,email from hrmresource where status = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.id \n" ; + String sql = " select t2.id as userid,c1."+cus_staff+" as staffid,h1.loginid \n" + + " from ( select distinct id from workflow_forecastOperator t1 where t1.requestid = "+requestid+" and t1.nodeid ="+currentNodeId+" and t1.operateType in(-3,-4) ) t2 " + + " left join cus_fielddata c1 on c1.id = t2.id and c1.scopeid="+scopeid+" and c1.scope = '"+scope+"' \n" + + " left join (select id,lastname,loginid,email from hrmresource union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.id \n" ; + bb.writeLog("monitorArchivedByToRead4Rquestid-sql:"+sql); rs.executeQuery(sql); while (rs.next()) { @@ -542,10 +341,6 @@ public class SendPortalMonitorUtil { String staffid = rs.getString("staffid"); String userid = rs.getString("userid"); - bb.writeLog("monitorArchivedByToRead4Rquestid:"+requestid+" creator:"+creator); - if ("sysadmin".equals(creator)) { - creator = "Admin"; - } JSONObject taskObject = new JSONObject(); taskObject.put("staffid", staffid); taskObject.put("creator",creator); @@ -561,21 +356,24 @@ public class SendPortalMonitorUtil { String creator = dataObject.getString("creator"); JSONObject requestObject = new JSONObject(); - requestObject.put("center",center); + requestObject.put("creator",createrLoginId); requestObject.put("title",requestname); - requestObject.put("taskCode", requestid+"_cs_"+userid); + requestObject.put("messageContent",requestname); requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode", requestid+"_cs_"+userid); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); + JSONObject taskObject = new JSONObject(); String objectCode = creator ; @@ -652,10 +450,8 @@ public class SendPortalMonitorUtil { SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - JSONObject requestObject = new JSONObject(); RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); - bb.writeLog("SendPortalMonitorUtil--monitorPossessed4Requestid"); String terminal = "1" ; String taskType = "0"; String actionType = "2" ; @@ -682,90 +478,56 @@ public class SendPortalMonitorUtil { } bb.writeLog("monitorPossessed4Requestid-urlDing", urlDing); - int count = 0 ; - String countSql=" select t2.userid \n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11')) \n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid ; - - bb.writeLog("monitorArchived--countSql:"+countSql); - rs.executeQuery(countSql); - while (rs.next()){ - count++; - } + int count = requestBaseInfoUtil.getTodoCountByRequestid(requestid); bb.writeLog("monitorPossessed4Requestid--count:"+count); if(count >0){ - String requestname = "" ; - String workflowname = "" ; - String currentNodeId = "" ; - String currentNodeName = "" ; + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; + JSONObject requestObject = new JSONObject(); - bb.writeLog("monitorPossessed4Requestid--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - } + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); requestObject.put("center",center); - requestObject.put("title",requestname); requestObject.put("taskCode","weaver"+requestid); - requestObject.put("nodeId",currentNodeId); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); JSONArray taskObjectList = new JSONArray(); - sql = " select t2.userid,h1.loginid,h1.lastname,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ - " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11')) \n" + - " and t2.islasttimes = 1 \n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid ; + String sql =" select t2.userid,h1.loginid,h1.lastname,c1."+cus_staff+" as staffid "+ + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ + " left join (select id, lastname,loginid,email from hrmresource where status = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11')) \n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid ; rs.executeQuery(sql); while (rs.next()) { //归档节点抄送 String creator = rs.getString("loginid"); String staffid = rs.getString("staffid"); - String userid = Util.null2String(rs.getString("userid")) ; - nextNodeUserIds += StringUtils.isBlank(nextNodeUserIds) ? userid :","+userid ; - - bb.writeLog("monitorPossessed4Requestid:"+requestid+" creator:"+creator); - - if ("sysadmin".equals(creator)) { - creator = "Admin"; - } JSONObject taskObject = new JSONObject(); taskObject.put("objectAction", objectAction); @@ -831,12 +593,14 @@ public class SendPortalMonitorUtil { if(rs.next()){ workflowid = Util.null2String(rs.getString("workflowid")) ; } - + bb.writeLog("doSimpleModeDataByMonitor2Requestid:"+workflowid); if(StringUtils.isNotBlank(workflowid)){ Map params = new HashMap(); params.put("requestid",requestid); params.put("workflowid",workflowid); params.put("resetForecast","1"); + + bb.writeLog("调用智能预测"); new GetSimpleModeDataCmd(params,user).execute(Context.getCommandComtext()); } } @@ -859,7 +623,11 @@ public class SendPortalMonitorUtil { monitorInterventionByUserId(requestid,currentUserId); } - + /*** + * 流程干预 + * @param requestid + * @param currentUserId + */ public void monitorInterventionByUserId(String requestid,String currentUserId){ String portal_todourl = Constants.portal_todourl; @@ -875,7 +643,7 @@ public class SendPortalMonitorUtil { SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - JSONObject requestObject = new JSONObject(); + RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); bb.writeLog("SendPortalMonitorUtil--monitorIntervention"); @@ -883,9 +651,6 @@ public class SendPortalMonitorUtil { String taskType = "0"; try { - String cus_staff = PropBean.getUfPropValue("cus_staff") ; - String scopeid = "-1"; - String scope = "HrmCustomFieldByInfoType" ; String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); String urlPc = "[newtab]"+bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; @@ -899,48 +664,37 @@ public class SendPortalMonitorUtil { } bb.writeLog("monitorIntervention-urlDing", urlDing); - String requestname = "" ; - String workflowname = "" ; - String currentNodeId = "" ; - String currentNodeName = "" ; - String currentNodeType = "" ; - - - String sql =" select t1.requestname,t1.currentnodeid,d1.nodename,t3.workflowname,t1.currentnodetype \n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("monitorIntervention--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("currentnodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - currentNodeType = Util.null2String(rs.getString("currentNodeType")) ; - } + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); + String currentnodetype = baseMap.get("currentnodetype"); + - if("3".equals(currentNodeType)){ + if("3".equals(currentnodetype)){ String actionType = "3" ; - requestObject.put("center",center); + + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); requestObject.put("title",requestname); - requestObject.put("taskCode","weaver"+requestid); + requestObject.put("messageContent",requestname); requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); String auth = username + ":" + passwd; bb.writeLog("monitorIntervention---requestObject:"+requestObject.toJSONString()); @@ -962,70 +716,43 @@ public class SendPortalMonitorUtil { String actionType = "2" ; String nextNodeUserIds = ""; - int count = 0 ; - String countSql = " select t2.userid \n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11')) \n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid ; - - bb.writeLog("monitorIntervention--countSql:"+countSql); - rs.executeQuery(countSql); - while (rs.next()){ - count++; - } + int count = requestBaseInfoUtil.getTodoCountByRequestid(requestid) ; + bb.writeLog("monitorIntervention--count:"+count); if(count >0){ - requestObject.put("center",center); + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); requestObject.put("title",requestname); - requestObject.put("taskCode","weaver"+requestid); + requestObject.put("messageContent",requestname); requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); JSONArray taskObjectList = new JSONArray(); - sql = " select t2.userid,h1.loginid,h1.lastname,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ - " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11')) \n" + - " and t2.islasttimes = 1 \n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid ; - + String sql = requestBaseInfoUtil.getTodoSql(requestid); rs.executeQuery(sql); while (rs.next()) { - String creator = rs.getString("loginid"); + String loginid = rs.getString("loginid"); String staffid = rs.getString("staffid") ; - String userid = Util.null2String(rs.getString("userid")) ; - nextNodeUserIds += StringUtils.isEmpty(nextNodeUserIds) ? userid : ","+userid ; - bb.writeLog("monitorIntervention:"+requestid+" creator:"+creator); - if ("sysadmin".equals(creator)) { - creator = "Admin"; - } JSONObject taskObject = new JSONObject(); taskObject.put("objectAction", "0"); taskObject.put("objectType", "0"); - taskObject.put("objectCode", creator); + taskObject.put("objectCode", loginid); taskObject.put("objectId", staffid); - taskObject.put("operatorCode", creator); + taskObject.put("operatorCode", loginid); taskObjectList.add(taskObject); } requestObject.put("taskObjectList",taskObjectList); diff --git a/src/weaver/interfaces/dito/mq/HrmRocketmqRunnable.java b/src/weaver/interfaces/dito/mq/HrmRocketmqRunnable.java index bc2ede51..dd32df51 100644 --- a/src/weaver/interfaces/dito/mq/HrmRocketmqRunnable.java +++ b/src/weaver/interfaces/dito/mq/HrmRocketmqRunnable.java @@ -22,6 +22,10 @@ public class HrmRocketmqRunnable implements Runnable { private String cus_eid; private JSONObject datasObject; + private String modedatacreatedate; + + private String modedatacreatetime; + public HrmRocketmqRunnable(String personno, String managerno, String personid, String managerid, String cus_eid, JSONObject datasObject) { this.personno = personno.trim(); this.managerno = managerno; @@ -29,6 +33,9 @@ public class HrmRocketmqRunnable implements Runnable { this.managerid = managerid; this.cus_eid = cus_eid; this.datasObject = datasObject; + this.modedatacreatedate = modedatacreatedate; + this.modedatacreatetime = modedatacreatetime; + } @Override @@ -118,7 +125,7 @@ public class HrmRocketmqRunnable implements Runnable { dataMap.put("zxyj", sql); dataMap.put("zxcs", HrmRocketmqUtil.convertObject2String(objects)); dataMap.put("personno", personno); - hrmRocketmqUtil.recordErrorData(dataMap); + hrmRocketmqUtil.recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } else { if (StringUtils.isNotBlank(personid) && StringUtils.isBlank(managerid)) { @@ -150,7 +157,7 @@ public class HrmRocketmqRunnable implements Runnable { dataMap.put("zxyj", sql); dataMap.put("zxcs", managerid + "," + personid); dataMap.put("personno", personno); - hrmRocketmqUtil.recordErrorData(dataMap); + hrmRocketmqUtil.recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } else if (StringUtils.isBlank(personid) && StringUtils.isNotBlank(managerid)) { @@ -161,7 +168,7 @@ public class HrmRocketmqRunnable implements Runnable { dataMap.put("systable", "cus_fielddata"); dataMap.put("errmessage", "入参参数personno未空在cus_fielddata查询为空"); dataMap.put("personno", personno); - hrmRocketmqUtil.recordErrorData(dataMap); + hrmRocketmqUtil.recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } else if (StringUtils.isBlank(personid) && StringUtils.isBlank(managerid)) { Map dataMap = new HashMap(); @@ -171,7 +178,7 @@ public class HrmRocketmqRunnable implements Runnable { dataMap.put("systable", "cus_fielddata"); dataMap.put("errmessage", "入参参数personno、managerno未空在cus_fielddata查询为空"); dataMap.put("personno", personno); - hrmRocketmqUtil.recordErrorData(dataMap); + hrmRocketmqUtil.recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } } diff --git a/src/weaver/interfaces/dito/mq/HrmRocketmqUtil.java b/src/weaver/interfaces/dito/mq/HrmRocketmqUtil.java index e3410923..dc669e03 100644 --- a/src/weaver/interfaces/dito/mq/HrmRocketmqUtil.java +++ b/src/weaver/interfaces/dito/mq/HrmRocketmqUtil.java @@ -12,10 +12,7 @@ import weaver.hrm.resource.ResourceComInfo; import weaver.interfaces.dito.comInfo.PropBean; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; +import java.util.*; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; @@ -34,16 +31,25 @@ public class HrmRocketmqUtil { String cus_eid = PropBean.getUfPropValue("cus_eid") ; + SimpleDateFormat modesdf1 = new SimpleDateFormat("yyyy-MM-dd");//当前时间日期 + SimpleDateFormat modesdf2 = new SimpleDateFormat("HH:mm:ss"); + String modedatacreatedate = modesdf1.format(new Date()); + String modedatacreatetime = modesdf2.format(new Date()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); String nowDateTime = sdf.format(new Date()); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); + String nowDate = sdf2.format(new Date()); JSONObject jsonObject = JSONObject.parseObject(data); bb.writeLog("updateOrgData---jsonObject:"+jsonObject.toJSONString()); + if(jsonObject.containsKey("masterInfo")) { JSONObject masterInfoObject = jsonObject.getJSONObject("masterInfo"); bb.writeLog("updateOrgData---masterInfoObject:"+masterInfoObject.toJSONString()); if(masterInfoObject.containsKey("datas")){ + List> notEffList = new ArrayList>(); JSONArray datasArray = masterInfoObject.getJSONArray("datas"); for(int i=0;i dataMap = new HashMap(); + if((startdate.compareTo(nowDate) <=0 && enddate.compareTo(nowDate) >=0) || (startdate.compareTo(nowDate) <=0 && StringUtils.isBlank(enddate))){ - String sql = " update hrmresource set managerid = ? where id = ? "; + Map dataMap = new HashMap(); + String sql = " update hrmresource set managerid = ? where id = ? "; + Object[] objects = new Object[]{managerid,personid} ; + boolean flag = rs.executeUpdate(sql,objects); + bb.writeLog("flag:"+flag); + if(flag){ + dataMap.put("errmessage","人员更新SQL执行成功"); + dataMap.put("zxjg","true"); - Object[] objects = new Object[]{managerid,personid} ; + ResourceComInfo resComInfo; + try { + resComInfo = new ResourceComInfo(); + resComInfo.removeResourceCache(); + } catch (Exception e) { + bb.writeLog(e); + } + }else{ + errcount++; + dataMap.put("errmessage","人员更新SQL执行错误,managerid:"+managerid+"、personid:"+personid); + dataMap.put("zxjg","false"); + } - boolean flag = rs.executeUpdate(sql,objects); - bb.writeLog("flag:"+flag); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("reqobject",datasObject.toJSONString()); + dataMap.put("systable","hrmresource"); + dataMap.put("zxyj",sql); + dataMap.put("zxcs",convertObject2String(objects)); + dataMap.put("personno",personno); + dataMap.put("errmessage","当前日期:"+nowDate+"在:"+startdate+"-"+enddate+"范围内 "); + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); - if(!flag){ - errcount++; - dataMap.put("errmessage","人员更新SQL执行错误,managerid:"+managerid+"、personid:"+personid); - dataMap.put("zxjg","false"); }else{ - dataMap.put("errmessage","人员更新SQL执行成功"); - dataMap.put("zxjg","true"); + + Map dataMap = new HashMap(); + dataMap.put("syndate",nowDateTime); + dataMap.put("reqmessage",jsonObject.toJSONString()); + dataMap.put("reqobject",datasObject.toJSONString()); + dataMap.put("systable","hrmresource"); + dataMap.put("errmessage","当前日期:"+nowDate+"不在:"+startdate+"-"+enddate+"范围内,写入建模表"); + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); + } - dataMap.put("syndate",nowDateTime); - dataMap.put("reqmessage",jsonObject.toJSONString()); - dataMap.put("reqobject",datasObject.toJSONString()); - dataMap.put("systable","hrmresource"); - dataMap.put("zxyj",sql); - dataMap.put("zxcs",convertObject2String(objects)); - dataMap.put("personno",personno); - recordErrorData(dataMap); + Map notEffMap = new HashMap(); + notEffMap.put("personno",personno); + notEffMap.put("managerno",managerno); + notEffMap.put("startdate",startdate); + notEffMap.put("enddate",enddate); + notEffMap.put("personid",personid); + notEffMap.put("managerid",managerid); + notEffList.add(notEffMap); + }else{ if(StringUtils.isNotBlank(personid) && StringUtils.isBlank(managerid)){ Map dataMap = new HashMap(); - String sql = " update hrmresource set managerid = null where id = "+personid; boolean flag = rs.executeUpdate(sql); bb.writeLog("flag:"+flag); @@ -133,7 +164,7 @@ public class HrmRocketmqUtil { dataMap.put("zxyj",sql); dataMap.put("zxcs",managerid+","+personid); dataMap.put("personno",personno); - recordErrorData(dataMap); + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); }else if(StringUtils.isBlank(personid) && StringUtils.isNotBlank(managerid)){ @@ -144,7 +175,7 @@ public class HrmRocketmqUtil { dataMap.put("systable","hrmresource"); dataMap.put("errmessage","入参参数personno未空在cus_fielddata查询为空"); dataMap.put("personno",personno); - recordErrorData(dataMap); + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); updateManagerByRunner(personno,managerno,personid,managerid,cus_eid,datasObject); @@ -156,7 +187,7 @@ public class HrmRocketmqUtil { dataMap.put("systable","hrmresource"); dataMap.put("errmessage","入参参数personno、managerno未空在cus_fielddata查询为空"); dataMap.put("personno",personno); - recordErrorData(dataMap); + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); updateManagerByRunner(personno,managerno,personid,managerid,cus_eid,datasObject); } @@ -168,9 +199,10 @@ public class HrmRocketmqUtil { dataMap.put("reqmessage",jsonObject.toJSONString()); dataMap.put("reqobject",datasObject.toJSONString()); dataMap.put("systable","hrmresource"); - dataMap.put("errmessage","入参参数personno、managerno未空"); - recordErrorData(dataMap); + dataMap.put("errmessage","入参参数personno、managerno为空"); + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } + }else{ Map dataMap = new HashMap(); @@ -180,17 +212,12 @@ public class HrmRocketmqUtil { dataMap.put("systable","hrmresource"); dataMap.put("errmessage","入参参数status不为1"); dataMap.put("personno",personno); - recordErrorData(dataMap); + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } } - ResourceComInfo resComInfo; - try { - resComInfo = new ResourceComInfo(); - resComInfo.removeResourceCache(); - } catch (Exception e) { - bb.writeLog(e); - } + recordNotEffectiveData(notEffList,modedatacreatedate,modedatacreatetime); + }else{ Map dataMap = new HashMap(); @@ -198,8 +225,7 @@ public class HrmRocketmqUtil { dataMap.put("reqmessage",jsonObject.toJSONString()); dataMap.put("systable","hrmresource"); dataMap.put("errmessage","入参参数缺少datas"); - recordErrorData(dataMap); - + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } }else{ @@ -208,8 +234,7 @@ public class HrmRocketmqUtil { dataMap.put("reqmessage",jsonObject.toJSONString()); dataMap.put("systable","hrmresource"); dataMap.put("errmessage","入参参数缺少masterInfo"); - recordErrorData(dataMap); - + recordErrorData(dataMap,modedatacreatedate,modedatacreatetime); } }catch (Exception e){ bb.writeLog("e:"+e); @@ -219,23 +244,25 @@ public class HrmRocketmqUtil { return errcount; } + + public void updateHrmResourceManager(){ + + } /*** * */ - public void recordErrorData(Map dataMap){ + public void recordErrorData(Map dataMap,String modedatacreatedate,String modedatacreatetime){ String uftable = "uf_managermq" ; RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); ModeRightInfo mode=new ModeRightInfo(); - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");//当前时间日期 - SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss"); + int formmodeid = 0 ; String modedatacreater = "1" ; String modedatacreatertype = "0" ; - String modedatacreatedate = sdf1.format(new Date()); - String modedatacreatetime = sdf2.format(new Date()); + String uuid = UUID.randomUUID().toString(); try { @@ -365,5 +392,89 @@ public class HrmRocketmqUtil { return managerid ; } + /** + * + * @param notEffList + * @param modedatacreatedate + * @param modedatacreatetime + * @return + */ + public String recordNotEffectiveData(List> notEffList,String modedatacreatedate,String modedatacreatetime){ + String dataid = ""; + String uftable = "uf_managerunenforced" ; + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + ModeRightInfo mode=new ModeRightInfo(); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");//当前时间日期 + SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss"); + + int formmodeid = 0 ; + String modedatacreater = "1" ; + String modedatacreatertype = "0" ; + String uuid = UUID.randomUUID().toString(); + + try { + + String sql =" select k.id from modeinfo k \n" + + " inner join workflow_bill l on formid = l.id\n" + + " where l.tablename = ? " ; + rs.executeQuery(sql,new Object[]{uftable}); + if(rs.next()){ + formmodeid = Util.getIntValue(Util.null2String(rs.getString("id"))); + } + + String userids = ""; + for(int i=0;i notEffMap = notEffList.get(i); + String personid = Util.null2String(notEffMap.get("personid")); + if(StringUtils.isNotEmpty(personid)){ + userids += StringUtils.isBlank(userids) ? personid : ","+personid ; + } + } + bb.writeLog(" recordNotEffectiveData-userids:"+userids); + + if(StringUtils.isNotEmpty(userids)){ + sql = " update "+uftable+" set sfsx = 1 where personid in("+userids+") "; + boolean isTrue = rs.executeUpdate(sql); + bb.writeLog(sql+" isTrue:"+isTrue); + } + + for(int i=0;i dataMap = notEffList.get(i); + String personno = Util.null2String(dataMap.get("personno")); + String managerno = Util.null2String(dataMap.get("managerno")); + String startdate = Util.null2String(dataMap.get("startdate")); + String enddate = Util.null2String(dataMap.get("enddate")); + String personid = Util.null2String(dataMap.get("personid")); + String managerid = Util.null2String(dataMap.get("managerid")); + bb.writeLog("personid:"+personid+" managerid:"+managerid); + + int bool = 0; + if(StringUtils.isNotEmpty(enddate)){ + sql =" insert into "+uftable+"(uuid,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,personno,managerno,startdate,enddate,personid,managerid,sfsx,sfgx)" + + " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)" ; + boolean flag = rs.executeUpdate(sql,new Object[]{uuid,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,personno,managerno,startdate,enddate,personid,managerid,"0","0"}); + bb.writeLog("sql1;"+sql); + if(flag){ + bool++; + } + }else{ + sql =" insert into "+uftable+"(uuid,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,personno,managerno,startdate,personid,managerid,sfsx,sfgx)" + + " values(?,?,?,?,?,?,?,?,?,?,?,?,?)" ; + boolean flag = rs.executeUpdate(sql,new Object[]{uuid,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime,personno,managerno,startdate,personid,managerid,"0","0"}); + bb.writeLog("sql2;"+sql); + if(flag){ + bool++; + } + } + bb.writeLog("bool;"+bool); + } + }catch (Exception e){ + bb.writeLog("e:"+e); + } + + return dataid; + } + } diff --git a/src/weaver/interfaces/dito/mq/RocketmqUtil.java b/src/weaver/interfaces/dito/mq/RocketmqUtil.java index e94b399a..25411dff 100644 --- a/src/weaver/interfaces/dito/mq/RocketmqUtil.java +++ b/src/weaver/interfaces/dito/mq/RocketmqUtil.java @@ -62,7 +62,7 @@ public class RocketmqUtil { if("organization".equals(tableName)){ updasteSysOrgData(jsonArray,tableName); }else if("system_user".equals(tableName)){ -// updateSysUserData(jsonArray,tableName); + updateSysUserData(jsonArray,tableName); }else if("system_roles".equals(tableName)){ updasteSysRoleData(jsonArray,tableName); }else if("system_post".equals(tableName)){ @@ -653,7 +653,7 @@ public class RocketmqUtil { // "updateStaff":"1"}],"tableName":"system_user_role","primaryKey":"sysUserRoleId"}],"key":"svcCont"} /*** - * + * 按sysUserId来判断 * @param jsonArray */ public void updateSystemUserRoleData(JSONArray jsonArray, String tableName) { @@ -931,7 +931,7 @@ public class RocketmqUtil { // "primaryKey":"sysUserPostId"}],"key":"svcCont"} /*** - * + * 改成 sysUserId * @param jsonArray */ public void updateSystemUserPostData(JSONArray jsonArray, String tableName) { @@ -1696,6 +1696,11 @@ public class RocketmqUtil { // "staffName":"fanweiceshi12","actType":"A","sysUserId":20102,"partyId":"-1","staffId":"22061", // "createDate":"2022-08-09 09:47:54","updateStaff":"1"}],"tableName":"staff","primaryKey":"staffId"}],"key":"svcCont"} + /** + * 按staffid为唯一标识 outkey + * @param jsonArray + * @param tableName + */ public void updateStaffData(JSONArray jsonArray, String tableName){ RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); @@ -1740,7 +1745,7 @@ public class RocketmqUtil { String orgCode = Util.null2String(jsonObject.get("orgCode")); String staffName = Util.null2String(jsonObject.get("staffName")); - String staffCode = Util.null2String(jsonObject.get("staffCode")); + String staffCode = Util.null2String(jsonObject.get("staffCode")).trim(); bb.writeLog("staffCode:"+staffCode); String actType = Util.null2String(jsonObject.get("actType")); String email = "" ; diff --git a/src/weaver/interfaces/dito/overtime/SendPortalOverTimeSubmitUtil.java b/src/weaver/interfaces/dito/overtime/SendPortalOverTimeSubmitUtil.java index cf4e9738..1d9235b1 100644 --- a/src/weaver/interfaces/dito/overtime/SendPortalOverTimeSubmitUtil.java +++ b/src/weaver/interfaces/dito/overtime/SendPortalOverTimeSubmitUtil.java @@ -2,6 +2,7 @@ package weaver.interfaces.dito.overtime; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; import org.apache.commons.lang3.StringUtils; import weaver.interfaces.dito.constant.Constants; import com.customization.dito.sendtodo.HttpRequestUtil; @@ -12,12 +13,14 @@ import weaver.general.BaseBean; import weaver.general.Util; import weaver.interfaces.dito.comInfo.PropBean; import java.net.URLEncoder; +import java.util.Map; /*** * */ public class SendPortalOverTimeSubmitUtil { + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); public void sendOverTimeSubmit(String requestid,String userids){ BaseBean bb = new BaseBean(); bb.writeLog("SendPortalOverTimeSubmitUtil"); @@ -49,7 +52,6 @@ public class SendPortalOverTimeSubmitUtil { SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - JSONObject requestObject = new JSONObject(); bb.writeLog("SendPortalOverTimeSubmitUtil--sendOverTimeSubmitBytoDo"); String terminal = "1" ; String taskType = "0"; @@ -58,9 +60,6 @@ public class SendPortalOverTimeSubmitUtil { String currentUserId= "1"; try { - String cus_staff = PropBean.getUfPropValue("cus_staff") ; - String scopeid = "-1"; - String scope = "HrmCustomFieldByInfoType" ; String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); String urlPc = "[newtab]"+ bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; @@ -74,48 +73,29 @@ public class SendPortalOverTimeSubmitUtil { } bb.writeLog("monitorArchived-urlDing", urlDing); - int count = 0 ; - String countSql=" select t2.userid \n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11')) \n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid ; + int count = requestBaseInfoUtil.getTodoCountByRequestid(requestid); - bb.writeLog("sendOverTimeSubmitBytoDo--countSql:"+countSql); - rs.executeQuery(countSql); - while (rs.next()){ - count++; - } + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); message +=",待办数量为"+count ; bb.writeLog("sendOverTimeSubmitBytoDo--count:"+count); if(count >0){ - String actionType = "2" ; - String requestname = "" ; - String workflowname = "" ; - String currentNodeId = "" ; - String currentNodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("sendOverTimeSubmitBytoDo--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - } + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); requestObject.put("center",center); requestObject.put("title",requestname); @@ -135,29 +115,14 @@ public class SendPortalOverTimeSubmitUtil { JSONArray taskObjectList = new JSONArray(); - sql = " select t2.userid,h1.loginid,h1.lastname,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ - " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11')) \n" + - " and t2.islasttimes = 1 \n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid ; - + String sql = requestBaseInfoUtil.getTodoSql(requestid); + bb.writeLog("sendTodoDataByNode--sql:"+sql); rs.executeQuery(sql); while (rs.next()) { //归档节点抄送 String creator = rs.getString("loginid"); String staffid = rs.getString("staffid"); - bb.writeLog("sendOverTimeSubmitBytoDo:"+requestid+" creator:"+creator); - if ("sysadmin".equals(creator)) { - creator = "Admin"; - } - JSONObject taskObject = new JSONObject(); taskObject.put("objectAction",objectAction); taskObject.put("objectType", objectType); @@ -208,42 +173,24 @@ public class SendPortalOverTimeSubmitUtil { message += ",执行actionType=3" ; String actionType = "3" ; - String requestname = "" ; - String workflowname = "" ; - String nodeId = "" ; - String nodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("monitorDelete4Requestid--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - nodeId = Util.null2String(rs.getString("nodeid")) ; - nodeName = Util.null2String(rs.getString("nodeName")) ; - } + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); requestObject.put("center",center); - requestObject.put("title",requestname); requestObject.put("taskCode","weaver"+requestid); - requestObject.put("nodeId",nodeId); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",workflowname); String auth = username + ":" + passwd; bb.writeLog("sendTodoDataByNode-3-requestObject:"+requestObject.toJSONString()); @@ -258,15 +205,13 @@ public class SendPortalOverTimeSubmitUtil { if(msgObject.containsKey("resultCode")){ String resultCode = msgObject.getString("resultCode"); if("0".equals(resultCode)){ - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,"",message); }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,nodeId,nodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2Optimize(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,"",message); } } } - }else{ - } } } catch (Exception e) { @@ -322,43 +267,27 @@ public class SendPortalOverTimeSubmitUtil { } bb.writeLog("sendOverTimeSubmitBytoRead-urlDing"+ urlDing); - String requestname = "" ; - String workflowname = "" ; - String nodeId = "" ; - String nodeName = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("sendOverTimeSubmitBytoRead--sql2:"+sql); - - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - nodeId = Util.null2String(rs.getString("nodeid")) ; - nodeName = Util.null2String(rs.getString("nodeName")) ; - } - - bb.writeLog("sendOverTimeSubmitBytoRead--nodeId:"+nodeId); - bb.writeLog("sendOverTimeSubmitBytoRead--nodeName:"+nodeName); + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); JSONArray taskObjectList = new JSONArray(); - sql = " select t2.userid,h1.loginid,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ - " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t2.isremark in ('8','9')\n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid + - " "; + String sql = " select t2.userid,h1.loginid,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ + " from workflow_requestbase t1\n" + + " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + + " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ + " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + + " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + + " and t2.isremark in ('8','9')\n" + + " and t2.islasttimes = 1\n" + + " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + + " and t2.requestid = "+requestid +" and t2.nodeid = "+currentNodeId ; + bb.writeLog("sendOverTimeSubmitBytoRead--sql:"+sql); rs.executeQuery(sql); while (rs.next()) { @@ -367,11 +296,6 @@ public class SendPortalOverTimeSubmitUtil { String staffid = rs.getString("staffid"); String userid = rs.getString("userid"); - bb.writeLog("sendOverTimeSubmitBytoRead:"+requestid+" creator:"+creator+" staffid:"+staffid); - if ("sysadmin".equals(creator)) { - creator = "Admin"; - } - JSONObject taskObject = new JSONObject(); taskObject.put("creator", creator); taskObject.put("staffid", staffid); @@ -382,36 +306,38 @@ public class SendPortalOverTimeSubmitUtil { for(int i=0;i> atList = new ArrayList>(); Map map = null; - String sql =" select t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark \n" + + int remark9count = 0; + + String sql =" select t.id,t.userid,t.nodeid,t.requestid,t2.nodename,t1.requestname,t3.workflowname,t.preisremark \n" + " from workflow_currentoperator t\n" + " inner join workflow_requestbase t1 on t.requestid = t1.requestid\n" + " left join workflow_nodebase t2 on t2.id = t.nodeid \n" + " left join workflow_base t3 on t3.id = t1.workflowid\n" + " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t.preisremark in (8,18) \n" + + " and t.preisremark in (8,9,18) \n" + " and t.requestid ="+requestid + " and t.userid="+userid+" and t.nodeid = "+current_nodeid; @@ -56,14 +58,29 @@ public class completeRequestRemark8AtUtil { remark8List.add(map); }else if("18".equals(preisremark)){ atList.add(map); + }else if("9".equals(preisremark)){ + remark9count++; } } - bb.writeLog("OpenRequestRemark8AtCmd-remark8List:"+remark8List.size()); bb.writeLog("OpenRequestRemark8AtCmd-atList:"+atList.size()); + bb.writeLog("remark9count:"+remark9count); + + if(remark9count > 0){ + + List> remark8List2 = new ArrayList>(); + List> remark9List2 = new ArrayList>(); + OpenRequestRemarkAtRunnable openRequestRemarkAtRunnable = new OpenRequestRemarkAtRunnable(requestid,userid+"",loginid,remark8List2,remark9List2,atList); + new Thread(openRequestRemarkAtRunnable).start(); + + }else{ + bb.writeLog("OpenRequestRemark8AtCmd-remark8List:"+remark8List.size()); + bb.writeLog("OpenRequestRemark8AtCmd-atList:"+atList.size()); + OpenRequestRemarkAtRunnable openRequestRemarkAtRunnable = new OpenRequestRemarkAtRunnable(requestid,userid+"",loginid,remark8List,remark9List,atList); + new Thread(openRequestRemarkAtRunnable).start(); + } + - OpenRequestRemarkAtRunnable openRequestRemarkAtRunnable = new OpenRequestRemarkAtRunnable(requestid,userid+"",loginid,remark8List,remark9List,atList); - new Thread(openRequestRemarkAtRunnable).start(); } } } diff --git a/src/weaver/interfaces/dito/robot/SendPortalRobotSubmitUtil.java b/src/weaver/interfaces/dito/robot/SendPortalRobotSubmitUtil.java index e7913de5..ad6b7a12 100644 --- a/src/weaver/interfaces/dito/robot/SendPortalRobotSubmitUtil.java +++ b/src/weaver/interfaces/dito/robot/SendPortalRobotSubmitUtil.java @@ -2,6 +2,7 @@ package weaver.interfaces.dito.robot; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.customization.dito.sendtodo.RequestBaseInfoUtil; import org.apache.commons.lang3.StringUtils; import weaver.interfaces.dito.constant.Constants; import com.customization.dito.sendtodo.HttpRequestUtil; @@ -9,15 +10,17 @@ import com.customization.dito.sendtodo.SendPortalErrorUtil; import com.time.util.DateUtil; import weaver.conn.RecordSet; import weaver.general.BaseBean; -import weaver.general.Util; import weaver.interfaces.dito.comInfo.PropBean; import java.net.URLEncoder; +import java.util.Map; /*** * */ public class SendPortalRobotSubmitUtil { + + private RequestBaseInfoUtil requestBaseInfoUtil = new RequestBaseInfoUtil(); public void sendRobotsubmit(String requestid,String nodeid){ BaseBean bb = new BaseBean(); bb.writeLog("SendPortalRobotSubmitUtil"); @@ -49,7 +52,6 @@ public class SendPortalRobotSubmitUtil { SendPortalErrorUtil sendPortalErrorUtil = new SendPortalErrorUtil(); HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); String mobileJumpUrl = PropBean.getUfPropValue("mobileJumpUrl"); - JSONObject requestObject = new JSONObject(); bb.writeLog("SendPortalRobotSubmitUtil--sendRobotSubmitByTodo"); String terminal = "1" ; String taskType = "0"; @@ -59,118 +61,91 @@ public class SendPortalRobotSubmitUtil { try { - String userids = "" ; - String cus_staff = PropBean.getUfPropValue("cus_staff") ; - String scopeid = "-1"; - String scope = "HrmCustomFieldByInfoType" ; - String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); String urlPc = "[newtab]"+ bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; String replace = bpm_app_workflowurl.replace("/bpm", ""); String urlDing = replace+bpm_app_requesturl+requestid; String urlApp = replace+bpm_app_requesturl+requestid; - if(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + if(StringUtils.isNotEmpty(mobileJumpUrl)){ urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } bb.writeLog("sendRobotSubmitByTodo-urlDing", urlDing); - int count = 0 ; - String countSql=" select t2.userid \n" + - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11')) \n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid ; - - bb.writeLog("sendRobotSubmitByTodo--countSql:"+countSql); - rs.executeQuery(countSql); - while (rs.next()){ - count++; - } +// int count = 0 ; +// String countSql=" select t2.userid \n" + +// " from workflow_requestbase t1\n" + +// " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11')) \n" + +// " and t2.islasttimes = 1\n" + +// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + +// " and t2.requestid = "+requestid ; + + int count = requestBaseInfoUtil.getTodoCountByRequestid(requestid+""); +// bb.writeLog("sendRobotSubmitByTodo--countSql:"+countSql); +// rs.executeQuery(countSql); +// while (rs.next()){ +// count++; +// } bb.writeLog("sendRobotSubmitByTodo--count:"+count); if(count >0){ - String currentUserId= "1"; - String requestname = "" ; - String workflowname = "" ; - String currentNodeId = "" ; - String currentNodeName = "" ; - String createrLoginid = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.loginid\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("sendRobotSubmitByTodo--sql2:"+sql); + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - currentNodeId = Util.null2String(rs.getString("nodeid")) ; - currentNodeName = Util.null2String(rs.getString("nodeName")) ; - createrLoginid = Util.null2String(rs.getString("loginid")); - } + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); - requestObject.put("creator",createrLoginid); - requestObject.put("center",center); + JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); requestObject.put("title",requestname); - requestObject.put("taskCode","weaver"+requestid); + requestObject.put("messageContent",requestname); requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); + + requestObject.put("center",center); + requestObject.put("taskCode","weaver"+requestid); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",currentNodeName); - requestObject.put("ticketType",workflowname); JSONArray taskObjectList = new JSONArray(); - sql = " select t2.userid,h1.loginid,h1.lastname,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ - " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11')) \n" + - " and t2.islasttimes = 1 \n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid ; - +// String sql =" select t2.userid,h1.loginid,h1.lastname,c1."+cus_staff+" as staffid "+ +// " from workflow_requestbase t1\n" + +// " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + +// " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ +// " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and ((t2.isremark = '0' and (t2.takisremark is null or t2.takisremark = 0)) or t2.isremark in ('5','7','11')) \n" + +// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + +// " and t2.requestid = "+requestid ; + + String sql = requestBaseInfoUtil.getTodoSql(requestid); rs.executeQuery(sql); while (rs.next()) { //归档节点抄送 - String creator = rs.getString("loginid"); + String loginid = rs.getString("loginid"); String staffid = rs.getString("staffid"); - String userid = rs.getString("userid"); - - userids += StringUtils.isEmpty(userids) ? userid : ","+userid ; - - bb.writeLog("sendRobotSubmitByTodo:"+requestid+" creator:"+creator); - if ("sysadmin".equals(creator)) { - creator = "Admin"; - } JSONObject taskObject = new JSONObject(); taskObject.put("objectAction",objectAction); taskObject.put("objectType", objectType); - taskObject.put("objectCode", creator); + taskObject.put("objectCode", loginid); taskObject.put("objectId", staffid); - taskObject.put("operatorCode", creator); + taskObject.put("operatorCode", loginid); taskObjectList.add(taskObject); } @@ -184,10 +159,10 @@ public class SendPortalRobotSubmitUtil { if (msgObject.containsKey("resultCode")) { String resultCode = msgObject.getString("resultCode"); if ("0".equals(resultCode)) { - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,userids); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,"",zhjkbs,""); }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userids); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,""); } } } @@ -228,10 +203,6 @@ public class SendPortalRobotSubmitUtil { String objectAction = "0" ; String objectType = "0"; try { - String currentUserId= "1"; - String cus_staff = PropBean.getUfPropValue("cus_staff") ; - String scopeid = "-1"; - String scope = "HrmCustomFieldByInfoType" ; String processTime = DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"); String urlPc = "[newtab]"+ bpm_workflowurl+"/workflow/request/ViewRequestForwardSPA.jsp?requestid="+requestid ; @@ -239,67 +210,46 @@ public class SendPortalRobotSubmitUtil { String urlDing = replace+bpm_app_requesturl+requestid; String urlApp = replace+bpm_app_requesturl+requestid; - if(org.apache.commons.lang.StringUtils.isNotEmpty(mobileJumpUrl)){ + if(StringUtils.isNotEmpty(mobileJumpUrl)){ urlDing += "&returnUrl="+ URLEncoder.encode(mobileJumpUrl,"UTF-8"); urlApp += "&returnUrl="+URLEncoder.encode(mobileJumpUrl,"UTF-8"); } bb.writeLog("sendRobotSubmitByToRead-urlDing"+ urlDing); - String requestname = "" ; - String workflowname = "" ; - String nodeId = "" ; - String nodeName = "" ; - String createrLoginid = "" ; - String sql =" select t1.requestname,t1.currentnodeid as nodeid,d1.nodename,t3.workflowname,h2.loginid\n" + - " from workflow_requestbase t1\n" + - " inner join workflow_base t3 on t1.workflowid = t3.id\n" + - " left join workflow_nodebase d1 on d1.id = t1.currentnodeid "+ - " left join (select id,lastname,loginid from hrmresource where status = 1 union all select id,lastname,loginid from hrmresourcemanager ) h2 on h2.id = t1.creater \n" + - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t1.requestid = "+requestid ; - - bb.writeLog("sendRobotSubmitByToRead--sql2:"+sql); + Map baseMap = requestBaseInfoUtil.queryRequestBaseByRequestid(requestid); - rs.executeQuery(sql); - if (rs.next()){ - requestname = Util.null2String(rs.getString("requestname")) ; - workflowname = Util.null2String(rs.getString("workflowname")) ; - nodeId = Util.null2String(rs.getString("nodeid")) ; - nodeName = Util.null2String(rs.getString("nodeName")) ; - createrLoginid = Util.null2String(rs.getString("loginid")); - } + String currentNodeId = baseMap.get("currentnodeid"); + String currentNodeName = baseMap.get("currentnodeid"); + String workflowname = baseMap.get("workflowname"); + String createrLoginId = baseMap.get("createrloginid"); + String createrLastName = baseMap.get("createrusername"); + String requestname = baseMap.get("requestname"); - bb.writeLog("sendRobotSubmitByToRead--nodeId:"+nodeId); - bb.writeLog("sendRobotSubmitByToRead--nodeName:"+nodeName); JSONArray taskObjectList = new JSONArray(); - sql = " select t2.userid,h1.loginid,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ - " from workflow_requestbase t1\n" + - " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + - " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ - " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + - " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ - " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + - " and t2.isremark in ('8','9')\n" + - " and t2.islasttimes = 1\n" + - " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + - " and t2.requestid = "+requestid + - " "; +// sql = " select t2.userid,h1.loginid,h1.email,t2.isremark,t1.requestid,t2.nodeid,d1.nodename,c1."+cus_staff+" as staffid "+ +// " from workflow_requestbase t1\n" + +// " inner join workflow_currentoperator t2 on t1.requestid = t2.requestid\n" + +// " left join cus_fielddata c1 on c1.id = t2.userid and c1.scopeid= "+scopeid+" and c1.scope = '"+scope+"' "+ +// " left join (select id, lastname,loginid,email from hrmresource where STATUS = 1 union all select id,lastname,loginid,'' as email from hrmresourcemanager ) h1 on h1.id = t2.userid\n" + +// " left join workflow_nodebase d1 on d1.id = t2.nodeid "+ +// " where (t1.deleted <> 1 or t1.deleted is null or t1.deleted = '')\n" + +// " and t2.isremark in ('8','9')\n" + +// " and t2.islasttimes = 1\n" + +// " and (t2.isprocessing = '' or t2.isprocessing is null)\n" + +// " and t2.requestid = "+requestid + +// " "; + String sql = requestBaseInfoUtil.getRemark89Sql(requestid); bb.writeLog("sendRobotSubmitByToRead--sql:"+sql); rs.executeQuery(sql); while (rs.next()) { //归档节点抄送 - String creator = rs.getString("loginid"); + String loginid = rs.getString("loginid"); String staffid = rs.getString("staffid"); String userid = rs.getString("userid"); - bb.writeLog("sendRobotSubmitByToRead:"+requestid+" creator:"+creator+" staffid:"+staffid); - if ("sysadmin".equals(creator)) { - creator = "Admin"; - } - JSONObject taskObject = new JSONObject(); - taskObject.put("creator", creator); + taskObject.put("creator", loginid); taskObject.put("staffid", staffid); taskObject.put("userid", userid); taskObjectList.add(taskObject); @@ -322,24 +272,23 @@ public class SendPortalRobotSubmitUtil { taskArray.add(taskObject); JSONObject requestObject = new JSONObject(); + requestObject.put("creator",createrLoginId); + requestObject.put("title",requestname); + requestObject.put("messageContent",requestname); + requestObject.put("nodeId",currentNodeId); + requestObject.put("nodeName",currentNodeName); + requestObject.put("ticketType",workflowname); - requestObject.put("creator",createrLoginid); requestObject.put("center",center); - requestObject.put("title",requestname); requestObject.put("taskCode", requestid+"_cs_"+userid); - - requestObject.put("nodeId",nodeId); requestObject.put("taskType",taskType); requestObject.put("actionType",actionType); requestObject.put("createDate",processTime); requestObject.put("messageTitle",getShortMessageTitle(requestname)); - requestObject.put("messageContent",requestname); requestObject.put("terminal",terminal); requestObject.put("urlPc",urlPc); requestObject.put("urlApp",urlApp); requestObject.put("urlDing",urlDing); - requestObject.put("nodeName",nodeName); - requestObject.put("ticketType",workflowname); requestObject.put("taskObjectList",taskArray); String auth = username + ":" + passwd; @@ -350,10 +299,10 @@ public class SendPortalRobotSubmitUtil { if (msgObject.containsKey("resultCode")) { String resultCode = msgObject.getString("resultCode"); if ("0".equals(resultCode)) { - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName,currentUserId,requestObject.toJSONString(),resultCode,"",zhjkbs,userid); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,"",zhjkbs,userid); }else{ String resultmsg = msgObject.getString("resultMsg"); - sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,nodeId,nodeName,currentUserId,requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid); + sendPortalErrorUtil.doRecordPortalErrorInfo4Phase2(requestid,currentNodeId,currentNodeName,"",requestObject.toJSONString(),resultCode,resultmsg,zhjkbs,userid); } } } @@ -415,7 +364,6 @@ public class SendPortalRobotSubmitUtil { sendRobotSubmitByToRead(requestid,nodeid); } - }