Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a78d2bd6c7 | ||
|
|
b5cdcbad4a | ||
|
|
a54280c347 | ||
|
|
22ccd19725 | ||
|
|
8261c52673 | ||
|
|
44babb09b1 | ||
|
|
084c22a00f | ||
|
|
34524284d4 | ||
|
|
0f8ee6e6fe | ||
|
|
06ef88126b | ||
|
|
e9c7346843 | ||
|
|
7e2c288beb | ||
|
|
b3f445fdd4 | ||
|
|
e1484a5889 | ||
|
|
48752c2712 | ||
|
|
e637b7c511 | ||
|
|
bf43517b5c | ||
|
|
9df0b9e290 | ||
|
|
42c9a82363 | ||
|
|
198b29dcb0 | ||
|
|
44129c7cd0 | ||
|
|
50a9e7242c | ||
|
|
5b24d0f522 | ||
|
|
fbcf91a592 | ||
|
|
8c22728855 | ||
|
|
9840cae11d | ||
|
|
25f4ac62c7 | ||
|
|
f7e4f7df3f | ||
|
|
d705802c6a | ||
|
|
30e0be1493 | ||
|
|
d9a2454fe8 | ||
|
|
f6bf5abc9f | ||
|
|
77f84afdd6 | ||
|
|
0e215afa39 | ||
|
|
189433a164 | ||
|
|
c19c61affd | ||
|
|
4a807869aa | ||
|
|
064b88a86a | ||
|
|
7d8529e7d8 | ||
|
|
374841e417 | ||
|
|
c22b16e7ac | ||
|
|
2f3b5645aa | ||
|
|
d05a943e66 | ||
|
|
b7f1e265f9 | ||
|
|
03bc65284d | ||
|
|
e3fe728c6c | ||
|
|
86e209494f | ||
|
|
6c5e16386c | ||
|
|
74112dc93b | ||
|
|
08717e84be | ||
|
|
8d732fb8fb | ||
|
|
5240926cd7 | ||
|
|
16d6d1c29d | ||
|
|
b0e0123c4a | ||
|
|
abb96916e3 | ||
|
|
e3bdb44192 | ||
|
|
ff175c98df | ||
|
|
5c434e576f | ||
|
|
6b5e91c4d7 | ||
|
|
5f622b0641 | ||
|
|
9bfcc02a48 | ||
|
|
a3a3fa17f1 | ||
|
|
f38d6997bc | ||
|
|
13e3503af4 | ||
|
|
70af2e822b | ||
|
|
71a228c625 | ||
|
|
9f79c901ca | ||
|
|
fa782834e7 | ||
|
|
088bd41d0b | ||
|
|
f6b1403e3c | ||
|
|
da105d20e4 | ||
|
|
293dd52e8c | ||
|
|
eeb6757ec8 | ||
|
|
6960564dde | ||
|
|
fb8366fa78 | ||
|
|
31dc8e4032 | ||
|
|
6caf44a9ec | ||
|
|
95cacd287b | ||
|
|
fdf48d2f14 | ||
|
|
b24fc351ea | ||
|
|
11e6c91cc6 | ||
|
|
fd04248c4b | ||
|
|
1f9cea5d3e | ||
|
|
4be8bcab6d | ||
|
|
cf6b0e7d70 | ||
|
|
ff2a7dd781 | ||
|
|
f99cf25adf | ||
|
|
1ea9767674 | ||
|
|
2253984352 | ||
|
|
b14d46803c | ||
|
|
82b6431be9 | ||
|
|
6cb1ecab7b | ||
|
|
061bdc6312 | ||
|
|
f980592507 | ||
|
|
1d0e12ee18 | ||
|
|
d5b6cddd8f | ||
|
|
e4931d1499 | ||
|
|
7748d4e558 | ||
|
|
7d5ee5cffd | ||
|
|
48da135874 | ||
|
|
8be09de49c | ||
|
|
2aff2e8d7d | ||
|
|
06320d99ca | ||
|
|
7cd6c52db5 | ||
|
|
455f3265ec | ||
|
|
33774c51fb | ||
|
|
c68c91e0b3 | ||
|
|
53c64c36da | ||
|
|
7a38c4e8a5 | ||
|
|
66d66e5156 | ||
|
|
20517eaaaa | ||
|
|
deea55b1e9 | ||
|
|
31a9287a8f | ||
|
|
4cd04ef10e | ||
|
|
afb6b2a4b5 | ||
|
|
a12083d93c | ||
|
|
f66af56144 | ||
|
|
0d71663935 | ||
|
|
753039d5e9 | ||
|
|
743040d813 | ||
|
|
9f8e21383d | ||
|
|
4e85bf306b | ||
|
|
1da61f526d | ||
|
|
c7970e884f | ||
|
|
20c95700ab | ||
|
|
547394f8d6 | ||
|
|
a671da2f11 | ||
|
|
60561da44d | ||
|
|
e5138339a8 | ||
|
|
45f30d2dbc | ||
|
|
8aa82b28be | ||
|
|
23847cf918 | ||
|
|
c6d0cb9579 | ||
|
|
e590293b33 | ||
|
|
e1fa902c59 | ||
|
|
5eb7b070fd | ||
|
|
fbf10a1ed9 | ||
|
|
0e96b4d8f4 | ||
|
|
61f8638635 | ||
|
|
6c9a09f29a | ||
|
|
2787aa38c6 | ||
|
|
d69b959534 | ||
|
|
60c1db6e2a | ||
|
|
d4db9785b3 | ||
|
|
7ace643452 | ||
|
|
c4276aac48 | ||
|
|
02386824af | ||
|
|
209de376e3 | ||
|
|
4c4dfcd9d5 | ||
|
|
a78e3e23d6 | ||
|
|
5730bb12a7 | ||
|
|
2e1ceaa393 | ||
|
|
b1f0fb8f6f | ||
|
|
2e1c5eae8a | ||
|
|
23d53688e4 | ||
|
|
5558debc20 | ||
|
|
1c9e92b60e | ||
|
|
4be7832789 | ||
|
|
0c968937af | ||
|
|
c8aa73fc21 | ||
|
|
b2d42ccfba | ||
|
|
a832a8281a | ||
|
|
27fa06ab04 | ||
|
|
397950e033 | ||
|
|
aa36758066 | ||
|
|
69b5b0d072 | ||
|
|
6f80764866 | ||
|
|
a10be7303f | ||
|
|
65dbeb9bdc | ||
|
|
4286d35243 | ||
|
|
4ea958e91d | ||
|
|
23f4c31338 | ||
|
|
67b3566eb8 | ||
|
|
965a5912c0 | ||
|
|
f62248e93e | ||
|
|
2b6deb09b9 | ||
|
|
9604bc938a | ||
|
|
9d3b296a27 | ||
|
|
9a1f6a107e | ||
|
|
db0cea67be | ||
|
|
992817300c | ||
|
|
9fdd40ee4e | ||
|
|
5d4929f36b | ||
|
|
a7826fbc16 | ||
|
|
dc498364ae | ||
|
|
0755325701 | ||
|
|
3eeb1a0882 | ||
|
|
f989831de2 | ||
|
|
078c214202 | ||
|
|
4bc2940f9e | ||
|
|
923d1e0483 | ||
|
|
a87fdca103 | ||
|
|
0ec450d85c | ||
|
|
c7988344d3 | ||
|
|
3cc3be3ee0 | ||
|
|
3a831e31ad | ||
|
|
a525fd6a16 | ||
|
|
6d720c5757 | ||
|
|
023037e2ca | ||
|
|
b3355ff79f | ||
|
|
feb30e9fe5 | ||
|
|
f9c3609b8b | ||
|
|
79bf8423e0 | ||
|
|
45bea53a70 | ||
|
|
a24b78473f | ||
|
|
f9dbd8a010 | ||
|
|
31b4f482dd | ||
|
|
08758c78ab | ||
|
|
4a23dfbc2a | ||
|
|
086cfca5dc | ||
|
|
120b30c4ea | ||
|
|
df93d06ae2 | ||
|
|
a683b38e8d | ||
|
|
33d44eed4d | ||
|
|
8615b98be2 | ||
|
|
57b5325154 | ||
|
|
1ccbc8c895 | ||
|
|
0be2808800 | ||
|
|
93b3c29ac3 | ||
|
|
ffb0a9f6da | ||
|
|
93d9e11688 | ||
|
|
20e6986ec9 | ||
|
|
ba6237853e | ||
|
|
cc5c4ab49a | ||
|
|
738afdce5c | ||
|
|
78b8aa6487 | ||
|
|
98200d775c | ||
|
|
fde91ebba5 | ||
|
|
320398289d | ||
|
|
eb7a8fd736 | ||
|
|
0393b11712 | ||
|
|
f231e09e8a | ||
|
|
434b93b61c | ||
|
|
c083e3711c | ||
|
|
62e5467e5f | ||
|
|
f71c07ab6a | ||
|
|
ec87e603ee | ||
|
|
630b455790 | ||
|
|
cee39d271a | ||
|
|
1b7f380867 | ||
|
|
8acb479047 | ||
|
|
de1644db2c | ||
|
|
45d23fbab6 | ||
|
|
0e6470fd59 | ||
|
|
002ea67fe7 | ||
|
|
e75aa0f7f1 | ||
|
|
397f74daad | ||
|
|
9146059eea | ||
|
|
135b7b6964 | ||
|
|
0f258a43f3 | ||
|
|
d53d328437 | ||
|
|
ba0a91e0c8 | ||
|
|
1dcdf68814 | ||
|
|
ce72dae1ad | ||
|
|
07a93038a5 | ||
|
|
7f26242ea8 | ||
|
|
8816a64040 | ||
|
|
0db3c4814d | ||
|
|
ba86324276 | ||
|
|
1a0de0e483 | ||
|
|
1ca8a32d10 | ||
|
|
07d80398ae | ||
|
|
04db4a633b | ||
|
|
7c665da605 | ||
|
|
0996ce4008 | ||
|
|
7bcb28cdac | ||
|
|
cbc1a23715 | ||
|
|
8a48dbbab0 | ||
|
|
59497d26f7 | ||
|
|
9962fef53a | ||
|
|
609a3725d6 | ||
|
|
ffa7ace73b | ||
|
|
cc7cf6d2c0 | ||
|
|
532baf1682 | ||
|
|
9f9da3a0dc | ||
|
|
9c6a5fc390 | ||
|
|
0b8c566f1d | ||
|
|
9807b13101 | ||
|
|
5ca8535f02 | ||
|
|
fa02011bd7 | ||
|
|
45336e3a96 | ||
|
|
6bcb7ac3e8 | ||
|
|
6d79065b92 | ||
|
|
6b73802bf7 | ||
|
|
c46f81c628 | ||
|
|
69fbcd4b4b | ||
|
|
1ddaf829fc | ||
|
|
12d94a38ca | ||
|
|
6a0009a3ad | ||
|
|
f4e47e3348 | ||
|
|
dbefa0b24e | ||
|
|
aef4ae747e | ||
|
|
1a1f87c998 | ||
|
|
17b35f7095 | ||
|
|
2eb70a7808 | ||
|
|
b34aa2092e | ||
|
|
f9d77c264a | ||
|
|
c39cd5babd | ||
|
|
e3cd2495cf | ||
|
|
05121a5569 | ||
|
|
080e77a79d | ||
|
|
3c424b60a4 | ||
|
|
c7988cbc00 | ||
|
|
183b0ecd2c | ||
|
|
0cef2791d6 | ||
|
|
cb8df46151 | ||
|
|
3a393be18d | ||
|
|
4d93997f53 | ||
|
|
20d8d2e045 | ||
|
|
74305b5728 | ||
|
|
d52cb55443 | ||
|
|
217dda4225 | ||
|
|
d282515d64 | ||
|
|
80f6e726f8 | ||
|
|
7029decfe8 | ||
|
|
6798d64993 | ||
|
|
de7fe6fee0 | ||
|
|
365409ab6d | ||
|
|
607da65dc4 | ||
|
|
5621318bae | ||
|
|
80cabfbf5e | ||
|
|
b4797984dd | ||
|
|
213e27e4e7 | ||
|
|
d6bb72d5eb | ||
|
|
9ee2e83c7a | ||
|
|
940244f829 | ||
|
|
7182106bab | ||
|
|
f5817926ca | ||
|
|
c9f194f8b8 | ||
|
|
11aab5bc31 | ||
|
|
f85edb62f4 | ||
|
|
80523e71d1 | ||
|
|
765c444a16 | ||
|
|
06b0822a15 | ||
|
|
0b94672e58 | ||
|
|
b979d8a4eb | ||
|
|
2438e89252 | ||
|
|
93899d881c | ||
|
|
36e7342d85 | ||
|
|
b3a2a2af3e | ||
|
|
440e895c51 | ||
|
|
004c736aa1 | ||
|
|
a99e281f8a | ||
|
|
09d814566f | ||
|
|
35a9faeb6a | ||
|
|
e92aabb0e4 | ||
|
|
736b189473 | ||
|
|
2557d57508 | ||
|
|
63de4daf2a | ||
|
|
f53f519d84 | ||
|
|
8bb2a6f327 | ||
|
|
7fe72980ac | ||
|
|
c644fb3142 | ||
|
|
25f0df5899 | ||
|
|
8906d10451 | ||
|
|
e18e47f31f | ||
|
|
43d6c55579 | ||
|
|
bbb2776610 | ||
|
|
f5aa2d9d06 | ||
|
|
0d197b2aa9 | ||
|
|
e06c159759 | ||
|
|
5287c031bc | ||
|
|
d8c09d6dff | ||
|
|
091d9e4af9 | ||
|
|
a4e8347835 | ||
|
|
8b0eae8dca | ||
|
|
1a1d64c827 | ||
|
|
114a963447 | ||
|
|
431b05c72b | ||
|
|
eb09ba6ae9 | ||
|
|
cd22f387f4 | ||
|
|
044cffeb7f | ||
|
|
4088cf7357 | ||
|
|
02a93bbd3f | ||
|
|
dac20a4a04 | ||
|
|
0a7bf5b54d | ||
|
|
a6731e8595 | ||
|
|
8a7dfec1d6 | ||
|
|
de3fc04a05 | ||
|
|
b3361914bd | ||
|
|
9a9cacbdd5 | ||
|
|
8123e78e93 | ||
|
|
1a51edfa8a | ||
|
|
dd856a7619 | ||
|
|
f6b4d5aceb | ||
|
|
9282d639b9 | ||
|
|
ad7a8125db | ||
|
|
ffc559543c | ||
|
|
4cf4fa6f5c | ||
|
|
5aaeb7dced | ||
|
|
9bb23badc0 | ||
|
|
e671ed8e2a | ||
|
|
3316e61824 | ||
|
|
7cfc39190a | ||
|
|
94d3f1cb1e | ||
|
|
a9ddcaecf9 | ||
|
|
1242497d6f | ||
|
|
1f41b4903b | ||
|
|
4e729103d6 | ||
|
|
ae2c8fe59f | ||
|
|
1cdf3abc30 | ||
|
|
f04905b721 | ||
|
|
6662a05a6c | ||
|
|
8c890c415a | ||
|
|
b18075b0c4 | ||
|
|
b090ddd41b | ||
|
|
8947d5fd10 | ||
|
|
331d98f33a | ||
|
|
9402f26857 | ||
|
|
8ca9b43b3b | ||
|
|
8ebf8ab2ea | ||
|
|
4c5713300c | ||
|
|
f15e73438e | ||
|
|
f0e9261c22 | ||
|
|
d3701b7299 | ||
|
|
4eb62becc5 | ||
|
|
2bbc030c40 | ||
|
|
37717366ab | ||
|
|
e85fb44ef2 | ||
|
|
15426c5b7b | ||
|
|
e6edadb07c | ||
|
|
32480b58b3 | ||
|
|
e410edbe1e | ||
|
|
45ab470c52 | ||
|
|
84621de905 | ||
|
|
4ab85a5d23 | ||
|
|
3473d8721e | ||
|
|
d91294a3fe | ||
|
|
a0d2ce44d0 | ||
|
|
43ba159489 | ||
|
|
f0f8a2ea00 | ||
|
|
533ce8d465 | ||
|
|
2092e5d64d | ||
|
|
5b7b839395 | ||
|
|
876d0807c7 | ||
|
|
664aa6b3f0 | ||
|
|
07a3dea9cc | ||
|
|
9c8bb4b00d | ||
|
|
b2c3e64333 | ||
|
|
aea374e9e8 | ||
|
|
7de2bdddf7 | ||
|
|
6b1ee10b33 | ||
|
|
2002ba071b | ||
|
|
121ea7c7ae | ||
|
|
aae315a059 | ||
|
|
d41b82a47f | ||
|
|
5120c7c2d2 | ||
|
|
9fdbc8712a | ||
|
|
ed7c4c4e2a | ||
|
|
7a47907ac7 | ||
|
|
7649cf9326 | ||
|
|
85e9240eee | ||
|
|
5373f1fb42 | ||
|
|
eba2773a9d | ||
|
|
178ff2a675 | ||
|
|
d1d1b70d9b | ||
|
|
fdbfcafb81 | ||
|
|
53e8ea4137 | ||
|
|
69da111d75 | ||
|
|
2c20dec85e | ||
|
|
2db715840f | ||
|
|
55a78b3658 | ||
|
|
51b6f6e782 | ||
|
|
a7073733a6 | ||
|
|
4391566b55 | ||
|
|
f4f7153278 | ||
|
|
790419b95d | ||
|
|
7c40d648b6 | ||
|
|
674c5ca914 | ||
|
|
96113abc00 | ||
|
|
b959e3b909 | ||
|
|
05d3a1da2e | ||
|
|
74a09ac92c | ||
|
|
82691055e6 | ||
|
|
b5fb2f1243 | ||
|
|
ea94880fff | ||
|
|
6a49e0199f | ||
|
|
428d69383a | ||
|
|
314a687943 | ||
|
|
4052fdf03a | ||
|
|
a3a7d39da3 | ||
|
|
341be38f87 | ||
|
|
8e82f8eaa2 | ||
|
|
106ccce871 | ||
|
|
2238224e83 | ||
|
|
32d15e0d48 | ||
|
|
daf7621503 | ||
|
|
5c13015bde | ||
|
|
7b6c459070 | ||
|
|
a21acab67d | ||
|
|
5851ec7b70 | ||
|
|
9dab3261d6 | ||
|
|
7c1f59d651 | ||
|
|
cc35c03cee | ||
|
|
8089efb9b7 | ||
|
|
0c8910512a | ||
|
|
c980aac78c | ||
|
|
580901e91c | ||
|
|
1467549b05 | ||
|
|
d453471fca | ||
|
|
3a7687b31c | ||
|
|
0cda870fbd | ||
|
|
5d91ed144f | ||
|
|
1110f5edcd | ||
|
|
d31d363c44 | ||
|
|
ac68c446fc | ||
|
|
8d1190ce28 | ||
|
|
d993b57a09 | ||
|
|
6865b437a5 | ||
|
|
2515d5dbfd | ||
|
|
99b7649364 | ||
|
|
9e16fc1b1a | ||
|
|
8c950a2fd1 | ||
|
|
0d96ba00b8 | ||
|
|
1e7019cba9 | ||
|
|
84a19396bf | ||
|
|
ce64d7f203 | ||
|
|
2ae2155808 | ||
|
|
1bed0a2259 | ||
|
|
b5c2bb391c | ||
|
|
1090aa0dbd | ||
|
|
d3c1778bc3 | ||
|
|
c0c35306ef | ||
|
|
524fdd2675 | ||
|
|
ec20f9d7d5 | ||
|
|
833a24354e | ||
|
|
e8c3f5a6d6 | ||
|
|
56831390b1 | ||
|
|
353b78d5cf | ||
|
|
da39527ffb | ||
|
|
c5c7b7ba9f | ||
|
|
49197586a4 | ||
|
|
d739a44862 | ||
|
|
be624b638d | ||
|
|
729cb9120d | ||
|
|
e0fe19ebcb | ||
|
|
f682811fdb | ||
|
|
16cbd67b01 | ||
|
|
6285269078 | ||
|
|
6f5e8e23aa | ||
|
|
fff2eaabaa | ||
|
|
d1f7a12fca | ||
|
|
f7738d4515 | ||
|
|
f776276eb5 | ||
|
|
c6e667bb0f | ||
|
|
befa62e69f | ||
|
|
5012cedd7b | ||
|
|
437b672446 | ||
|
|
1199f2fef0 | ||
|
|
0482a516ac | ||
|
|
cd252fddd9 | ||
|
|
f1a1ba8bab | ||
|
|
7a37d11f4f | ||
|
|
2261a549f8 | ||
|
|
0c6e6b1231 | ||
|
|
beb9e212f4 | ||
|
|
ca768ad0d6 | ||
|
|
5d2a97cac6 | ||
|
|
723440a37e | ||
|
|
8fd1eef2d1 | ||
|
|
d4871f4a2f | ||
|
|
6d9074feb5 | ||
|
|
91da9b96b8 | ||
|
|
d3da2fabe8 | ||
|
|
39bce7bd62 | ||
|
|
65c641403c | ||
|
|
190273ba21 | ||
|
|
9e46b3068f | ||
|
|
d660edc670 | ||
|
|
32fb164ef9 | ||
|
|
3d36f05cf9 | ||
|
|
c2c4d71d37 | ||
|
|
e30c10941d | ||
|
|
05e70343a8 | ||
|
|
8ba2c50a6d | ||
|
|
9fe0b621c2 | ||
|
|
e54f4f0b70 | ||
|
|
73797bb610 | ||
|
|
2d658af62e | ||
|
|
e1d866292c | ||
|
|
3cc72198d9 | ||
|
|
29cc4e7af1 | ||
|
|
3f17c3a7ee | ||
|
|
728d6267df | ||
|
|
699a69f1e9 | ||
|
|
b7ba367b70 | ||
|
|
54ee01cb77 | ||
|
|
e8a02fbe2f | ||
|
|
ff637782cb | ||
|
|
ac27737aa5 | ||
|
|
7980d2880d | ||
|
|
0e8580143b | ||
|
|
1c6544fea7 | ||
|
|
23e29a282e | ||
|
|
10f7fffe10 | ||
|
|
50e9b5fb9d | ||
|
|
4a2dc3a2ec | ||
|
|
732d426d72 | ||
|
|
61f24aeefc | ||
|
|
2d3b08d027 | ||
|
|
e39b2ce087 | ||
|
|
3c5d45f4cf | ||
|
|
953410c5df | ||
|
|
ad4f1aecb2 | ||
|
|
163b99c7b1 | ||
|
|
6d748b8920 | ||
|
|
3530aacf64 | ||
|
|
5b46ee97b1 | ||
|
|
96a0983441 | ||
|
|
305529fefc | ||
|
|
5d2fdedfcf | ||
|
|
1cd7aa9ea4 | ||
|
|
1a8403423e | ||
|
|
eff4c740aa | ||
|
|
b31a7c93da | ||
|
|
7f5ea8ad2c | ||
|
|
ba0caceb04 | ||
|
|
fe536eb7b5 | ||
|
|
a3c3c6608f | ||
|
|
48e502b1a1 | ||
|
|
5612aa2f84 | ||
|
|
d026e0f7ea | ||
|
|
41387c58d4 | ||
|
|
6ace1d3102 | ||
|
|
89c428ee4b | ||
|
|
6dd8762dc1 | ||
|
|
bc1579ef95 | ||
|
|
a262b3cc4b | ||
|
|
371284d360 | ||
|
|
4ee0dda38c | ||
|
|
b5555698e8 | ||
|
|
b71228a24a | ||
|
|
b54af26e42 | ||
|
|
2104c70e25 | ||
|
|
7778d2b721 | ||
|
|
9cd49c8109 | ||
|
|
01a08d670a | ||
|
|
c8e5e745ce | ||
|
|
e56942ee54 | ||
|
|
d7d9bb51b2 | ||
|
|
06e008e306 | ||
|
|
2e91e53da7 | ||
|
|
c80c801239 | ||
|
|
d4b560313c | ||
|
|
8a9eb6198d | ||
|
|
cf5852e27b | ||
|
|
7b940dc7b8 | ||
|
|
0b280496b5 | ||
|
|
e9f7ed8480 | ||
|
|
588bf5678b | ||
|
|
2fd71bfd6a | ||
|
|
5fa3e4b735 | ||
|
|
94294ffd71 | ||
|
|
df8ed662e8 | ||
|
|
41660a5056 | ||
|
|
969a4f09f8 | ||
|
|
4a6e28b629 | ||
|
|
8eddc035c5 | ||
|
|
26c90d4c32 | ||
|
|
c91bbf834a | ||
|
|
913ca3547a | ||
|
|
5906bbc9ec | ||
|
|
b3b6d25d91 | ||
|
|
b323e88504 | ||
|
|
775d7c0d56 | ||
|
|
3def3b69dc | ||
|
|
9132518de4 | ||
|
|
c52adbde4b | ||
|
|
870c514a15 | ||
|
|
2300df715c | ||
|
|
94b304d417 | ||
|
|
c64b709e33 | ||
|
|
6b56829d92 | ||
|
|
2a40d552e3 | ||
|
|
032c7bfca1 | ||
|
|
01d86180a9 | ||
|
|
edfd847318 | ||
|
|
36ad2c9ecd | ||
|
|
ce01c9366a | ||
|
|
a74345ea5f | ||
|
|
b7b46f1350 | ||
|
|
c21e092c89 | ||
|
|
867ce2d4ba | ||
|
|
0a16acb362 | ||
|
|
9a59fac610 | ||
|
|
f20736282b | ||
|
|
08a6e72cc2 | ||
|
|
16bfd769aa | ||
|
|
3c22cec221 | ||
|
|
a583b2b195 | ||
|
|
bf92e05cbe | ||
|
|
7a2a662c5f | ||
|
|
e4fa622b71 | ||
|
|
d6da8ddd2f | ||
|
|
8306ae0f39 | ||
|
|
616be649b5 | ||
|
|
a0ecc6bd69 | ||
|
|
3dcf07881a | ||
|
|
4d4276847b | ||
|
|
c7fad71ae2 | ||
|
|
dbc73da777 | ||
|
|
b28a16dcea | ||
|
|
cf73d6e338 | ||
|
|
dcb1139a6a | ||
|
|
52e0baa614 | ||
|
|
ede7c4452d | ||
|
|
0ee4c53252 | ||
|
|
a9c86dc6dc | ||
|
|
12ed3200a2 | ||
|
|
23614f7e9c | ||
|
|
40b623024c | ||
|
|
be6ec797c7 | ||
|
|
35556e2acd | ||
|
|
72d02890b0 | ||
|
|
bcc07b181d | ||
|
|
00f6ad1417 | ||
|
|
3398f0db3d | ||
|
|
3262548b25 | ||
|
|
08bb2af98e | ||
|
|
8b3c5a3741 | ||
|
|
bb642be13b | ||
|
|
b2621ace43 | ||
|
|
2a6a1b50af | ||
|
|
5a17ed48ae | ||
|
|
c4fa3466a7 | ||
|
|
f9230eacc8 | ||
|
|
2101dddcc6 | ||
|
|
9c6303addb | ||
|
|
8ec8971f2a | ||
|
|
2158a9ee48 | ||
|
|
26bdf8f577 | ||
|
|
6a913f49f0 |
@@ -194,6 +194,10 @@
|
||||
<source>${java.version}</source>
|
||||
<target>${java.version}</target>
|
||||
<encoding>${project.build.sourceEncoding}</encoding>
|
||||
<excludes>
|
||||
<exclude>ruoyi-system/**</exclude>
|
||||
<exclude>ruoyi-common/**</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
||||
+3
-2
@@ -9,7 +9,8 @@
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>jar</packaging>
|
||||
<artifactId>ruoyi-admin</artifactId>
|
||||
<artifactId>SmartArbitrate</artifactId>
|
||||
<version>1.1.0</version>
|
||||
|
||||
<description>
|
||||
web服务入口
|
||||
@@ -94,7 +95,7 @@
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
<finalName>${project.artifactId}</finalName>
|
||||
<finalName>${project.artifactId}-${project.version}</finalName>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
@@ -1,8 +1,19 @@
|
||||
package com.ruoyi;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.ruoyi.common.constant.CacheConstants;
|
||||
import com.ruoyi.common.core.domain.entity.SysRole;
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
import com.ruoyi.common.utils.spring.SpringUtils;
|
||||
import com.ruoyi.system.mapper.SysRoleMapper;
|
||||
import com.ruoyi.system.mapper.SysUserMapper;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 启动程序
|
||||
@@ -10,21 +21,35 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
* @author ruoyi
|
||||
*/
|
||||
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
|
||||
@EnableScheduling
|
||||
public class RuoYiApplication
|
||||
{
|
||||
public static void main(String[] args)
|
||||
{
|
||||
// System.setProperty("spring.devtools.restart.enabled", "false");
|
||||
SpringApplication.run(RuoYiApplication.class, args);
|
||||
System.out.println("(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙ \n" +
|
||||
" .-------. ____ __ \n" +
|
||||
" | _ _ \\ \\ \\ / / \n" +
|
||||
" | ( ' ) | \\ _. / ' \n" +
|
||||
" |(_ o _) / _( )_ .' \n" +
|
||||
" | (_,_).' __ ___(_ o _)' \n" +
|
||||
" | |\\ \\ | || |(_,_)' \n" +
|
||||
" | | \\ `' /| `-' / \n" +
|
||||
" | | \\ / \\ / \n" +
|
||||
" ''-' `'-' `-..-' ");
|
||||
System.out.println(" __ _ \n" +
|
||||
" ____ / /_ ____ ____ ____ _ _________ _(_)\n" +
|
||||
"/_ / / __ \\/ __ \\/ __ \\/ __ `/ / ___/ __ `/ / \n" +
|
||||
" / /_/ / / / /_/ / / / / /_/ / / /__/ /_/ / / \n" +
|
||||
"/___/_/ /_/\\____/_/ /_/\\__, / \\___/\\__,_/_/ \n" +
|
||||
" /____/ ");
|
||||
// 启动成功后,查询用户表,将用户信息存到redis
|
||||
RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
|
||||
SysUserMapper userMapper = SpringUtils.getBean(SysUserMapper.class);
|
||||
List<SysUser> sysUsers = userMapper.selectUserListByIds(null);
|
||||
if(CollectionUtil.isNotEmpty(sysUsers)){
|
||||
for (SysUser sysUser : sysUsers) {
|
||||
redisCache.setCacheObject(CacheConstants.USER_KEY+sysUser.getUserId(),sysUser);
|
||||
}
|
||||
}
|
||||
// 初始化角色redis
|
||||
SysRoleMapper roleMapper = SpringUtils.getBean(SysRoleMapper.class);
|
||||
List<SysRole> roles = roleMapper.selectRoleList(new SysRole());
|
||||
if(CollectionUtil.isNotEmpty(roles)){
|
||||
for (SysRole role : roles) {
|
||||
redisCache.setCacheObject(CacheConstants.ROLE_KEY+role.getRoleName(),role.getRoleId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,14 +4,15 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseAttach;
|
||||
import com.ruoyi.wisdomarbitrate.mapper.CaseAttachMapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import com.ruoyi.common.config.RuoYiConfig;
|
||||
import com.ruoyi.common.constant.Constants;
|
||||
@@ -36,6 +37,8 @@ public class CommonController
|
||||
private ServerConfig serverConfig;
|
||||
|
||||
private static final String FILE_DELIMETER = ",";
|
||||
@Autowired
|
||||
CaseAttachMapper caseAttachMapper;
|
||||
|
||||
/**
|
||||
* 通用下载请求
|
||||
@@ -160,4 +163,22 @@ public class CommonController
|
||||
log.error("下载文件失败", e);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 根据案件id获取附件
|
||||
* @param caseAppliId
|
||||
* @param annexTypeList
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/fileList")
|
||||
public AjaxResult fileList(@RequestParam("caseAppliId")Long caseAppliId, @RequestParam(value = "annexTypeList",required = false) List<Integer> annexTypeList){
|
||||
if(caseAppliId==null){
|
||||
return AjaxResult.error("案件id不能为空");
|
||||
}
|
||||
CaseApplication msCaseApplicationVO = new CaseApplication();
|
||||
msCaseApplicationVO.setId(caseAppliId);
|
||||
msCaseApplicationVO.setAnnexTypeList(annexTypeList);
|
||||
List<CaseAttach> caseAttachList = caseAttachMapper.queryCaseAttachList(msCaseApplicationVO);
|
||||
return AjaxResult.success(caseAttachList);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class SysDeptController extends BaseController
|
||||
/**
|
||||
* 获取部门列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:dept:list')")
|
||||
// @PreAuthorize("@ss.hasPermi('system:dept:list')")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(SysDept dept)
|
||||
{
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.ruoyi.web.controller.system;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.ruoyi.system.service.ISysUserService;
|
||||
import com.ruoyi.wisdomarbitrate.domain.IdentityAuthentication;
|
||||
import com.ruoyi.wisdomarbitrate.service.IdentityAuthenticationService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -22,12 +23,11 @@ import com.ruoyi.system.service.ISysMenuService;
|
||||
|
||||
/**
|
||||
* 登录验证
|
||||
*
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@RestController
|
||||
public class SysLoginController
|
||||
{
|
||||
public class SysLoginController {
|
||||
@Autowired
|
||||
private SysLoginService loginService;
|
||||
|
||||
@@ -37,40 +37,43 @@ public class SysLoginController
|
||||
@Autowired
|
||||
private SysPermissionService permissionService;
|
||||
@Autowired
|
||||
private IdentityAuthenticationService identityAuthenticationService;
|
||||
IdentityAuthenticationService identityAuthenticationService;
|
||||
@Autowired
|
||||
private ISysUserService sysUserService;
|
||||
|
||||
/**
|
||||
* 登录方法
|
||||
*
|
||||
*
|
||||
* @param loginBody 登录信息
|
||||
* @return 结果
|
||||
*/
|
||||
@PostMapping("/login")
|
||||
public AjaxResult login(@RequestBody LoginBody loginBody)
|
||||
{
|
||||
public AjaxResult login(@RequestBody LoginBody loginBody) {
|
||||
AjaxResult ajax = AjaxResult.success();
|
||||
// 生成令牌
|
||||
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
|
||||
loginBody.getUuid());
|
||||
ajax.put(Constants.TOKEN, token);
|
||||
//判断该用户是否已经实名认证(certificationStatus1已认证0未认证)
|
||||
IdentityAuthentication identityAuthentication=new IdentityAuthentication();
|
||||
identityAuthentication.setUserName(loginBody.getUsername());
|
||||
String status = identityAuthenticationService.checkIsAuthentication(identityAuthentication);
|
||||
|
||||
// IdentityAuthentication identityAuthentication = new IdentityAuthentication();
|
||||
// identityAuthentication.setUserName(loginBody.getUsername());
|
||||
// IdentityAuthentication identityAuthenticationselect = identityAuthenticationService.selectIdentityAuthentication(identityAuthentication);
|
||||
// ajax.put("certificationStatusName", identityAuthenticationselect.getCertificationStatusName());
|
||||
// ajax.put("certificationStatus", identityAuthenticationselect.getCertificationStatus());
|
||||
|
||||
ajax.put("certificationStatus", status);
|
||||
// 获取用户信息
|
||||
SysUser sysUser = sysUserService.selectUserByUserName(loginBody.getUsername());
|
||||
ajax.put("userId", sysUser!=null?sysUser.getUserId():"");
|
||||
ajax.put("userName", sysUser!=null?sysUser.getUserName():"");
|
||||
return ajax;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户信息
|
||||
*
|
||||
*
|
||||
* @return 用户信息
|
||||
*/
|
||||
@GetMapping("getInfo")
|
||||
public AjaxResult getInfo()
|
||||
{
|
||||
public AjaxResult getInfo() {
|
||||
SysUser user = SecurityUtils.getLoginUser().getUser();
|
||||
// 角色集合
|
||||
Set<String> roles = permissionService.getRolePermission(user);
|
||||
@@ -85,12 +88,11 @@ public class SysLoginController
|
||||
|
||||
/**
|
||||
* 获取路由信息
|
||||
*
|
||||
*
|
||||
* @return 路由信息
|
||||
*/
|
||||
@GetMapping("getRouters")
|
||||
public AjaxResult getRouters()
|
||||
{
|
||||
public AjaxResult getRouters() {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
|
||||
return AjaxResult.success(menuService.buildMenus(menus));
|
||||
|
||||
@@ -139,4 +139,13 @@ public class SysMenuController extends BaseController
|
||||
}
|
||||
return toAjax(menuService.deleteMenuById(menuId));
|
||||
}
|
||||
/**
|
||||
* 根据用户查询菜单权限字符
|
||||
*/
|
||||
@GetMapping("/getMenuPermsByUser")
|
||||
public AjaxResult getMenuPermsByUser()
|
||||
{
|
||||
|
||||
return menuService.getMenuPermsByUser();
|
||||
}
|
||||
}
|
||||
@@ -3,18 +3,14 @@ package com.ruoyi.web.controller.system;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.common.annotation.Anonymous;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
@@ -138,7 +134,7 @@ public class SysUserController extends BaseController
|
||||
}
|
||||
user.setCreateBy(getUsername());
|
||||
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
|
||||
return toAjax(userService.insertUser(user));
|
||||
return userService.insertUser(user);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -164,7 +160,7 @@ public class SysUserController extends BaseController
|
||||
return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
|
||||
}
|
||||
user.setUpdateBy(getUsername());
|
||||
return toAjax(userService.updateUser(user));
|
||||
return userService.updateUser(user);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -248,4 +244,15 @@ public class SysUserController extends BaseController
|
||||
{
|
||||
return success(deptService.selectDeptTreeList(dept));
|
||||
}
|
||||
/**
|
||||
* 根据userId获取用户信息
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
@Anonymous
|
||||
@GetMapping("/selectUserById")
|
||||
public AjaxResult selectUserById(@RequestParam(required = true) Long userId){
|
||||
return AjaxResult.success(userService.selectUserById(userId));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+185
-24
@@ -1,20 +1,95 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.common.constant.CaseApplicationConstants;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.core.redis.RedisCache;
|
||||
import com.ruoyi.common.exception.EsignDemoException;
|
||||
import com.ruoyi.wisdomarbitrate.StringIdsReq;
|
||||
import com.ruoyi.wisdomarbitrate.domain.BatchCaseApplication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.SealSignRecord;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.BookSendVO;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.LogisticsInfoVO;
|
||||
import com.ruoyi.wisdomarbitrate.service.IAdjudicationService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/adjudication")
|
||||
public class AdjudicationController extends BaseController {
|
||||
@Autowired
|
||||
private IAdjudicationService adjudicationService;
|
||||
|
||||
/**
|
||||
* 根据签署流程id查询批量签名链接
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:selectSignUrl')")
|
||||
@PostMapping("/selectBatchSignUrl")
|
||||
public AjaxResult selectBatchSignUrl(@RequestBody StringIdsReq idsReq) {
|
||||
if(CollectionUtil.isEmpty(idsReq.getIds())|| StrUtil.isEmpty(idsReq.getPsnAccount())){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
SealSignRecord sealSignRecordselect = adjudicationService.selectBatchSignUrl(idsReq);
|
||||
return success(sealSignRecordselect);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据批号查询批量签名链接
|
||||
*/
|
||||
// @PostMapping("/getSignUrlBatch")
|
||||
// public AjaxResult getSignUrlBatch(@RequestBody StringIdsReq idsReq) {
|
||||
// if(StrUtil.isEmpty(idsReq.getBatchNumber().toString())|| StrUtil.isEmpty(idsReq.getPsnAccount())){
|
||||
// return error("参数校验失败");
|
||||
// }
|
||||
// SealSignRecord sealSignRecordselect = adjudicationService.getSignUrlBatch(idsReq);
|
||||
// return success(sealSignRecordselect);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 根据签署流程id查询批量用印链接
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:selectSignUrl')")
|
||||
@PostMapping("/selectBatchSealUrl")
|
||||
public AjaxResult selectBatchSealUrl(@RequestBody StringIdsReq idsReq) {
|
||||
if(CollectionUtil.isEmpty(idsReq.getIds())|| StrUtil.isEmpty(idsReq.getPsnAccount())){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
SealSignRecord sealSignRecordselect = adjudicationService.selectBatchSealUrl(idsReq);
|
||||
return success(sealSignRecordselect);
|
||||
}
|
||||
/**
|
||||
* 根据仲裁员手机号分页查询待签名/待用印的案件
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:selectSignUrl')")
|
||||
@GetMapping("/pageSignAdjudicate")
|
||||
public TableDataInfo pageSignAdjudicate(@RequestParam(value = "personAccount",required = false) String personAccount, @RequestParam("caseStatus") Integer caseStatus) {
|
||||
startPage();
|
||||
List<CaseApplication> list = adjudicationService.selectSealSigning(personAccount,caseStatus);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据批号查询批量用印链接
|
||||
*/
|
||||
@PostMapping("/getSealUrlBatch")
|
||||
public AjaxResult getSealUrlBatch(@RequestBody StringIdsReq idsReq) {
|
||||
if(StrUtil.isEmpty(idsReq.getBatchNumber().toString())|| StrUtil.isEmpty(idsReq.getPsnAccount())){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
SealSignRecord sealSignRecordselect = adjudicationService.getSealUrlBatch(idsReq);
|
||||
return success(sealSignRecordselect);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生成裁决书
|
||||
* @param caseApplication
|
||||
@@ -22,22 +97,46 @@ public class AdjudicationController extends BaseController {
|
||||
*/
|
||||
@PostMapping("/document")
|
||||
public AjaxResult createDocument(@Validated @RequestBody CaseApplication caseApplication){
|
||||
if (caseApplication.getId() == null) {
|
||||
return AjaxResult.error("案件id不能为空");
|
||||
}
|
||||
return adjudicationService.createDocument(caseApplication);
|
||||
}
|
||||
/**
|
||||
* 开庭审理,确定审理结果,生成裁决书
|
||||
* @param caseApplication
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/caseJudgment")
|
||||
public AjaxResult caseJudgment(@Validated @RequestBody CaseApplication caseApplication){
|
||||
if (caseApplication.getId() == null) {
|
||||
return AjaxResult.error("案件id不能为空");
|
||||
}
|
||||
return adjudicationService.caseJudgment(caseApplication);
|
||||
}
|
||||
/**
|
||||
* 批量生成裁决书
|
||||
* @param caseApplication
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/batchDocument")
|
||||
public AjaxResult batchDocument(@Validated @RequestBody BatchCaseApplication caseApplication){
|
||||
if (CollectionUtil.isEmpty(caseApplication.getIds())) {
|
||||
return AjaxResult.error("参数校验失败");
|
||||
}
|
||||
return adjudicationService.batchDocument(caseApplication.getIds());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 裁决书送达(电子邮件)
|
||||
* @param id 案件id
|
||||
* @param appEmail 申请人邮箱
|
||||
* @param resEmail 被申请人邮箱
|
||||
* @param apptrackingNum 申请人快递单号
|
||||
* @param restrackingNum 被申请人快递单号
|
||||
* @param bookSendVO
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/delivery")
|
||||
public AjaxResult sendDocumentByEmail(Long id,String appEmail,String resEmail
|
||||
,String apptrackingNum,String restrackingNum){
|
||||
return adjudicationService.sendDocumentByEmail(id,appEmail,resEmail,apptrackingNum,restrackingNum);
|
||||
public AjaxResult sendDocumentByEmail(@RequestBody BookSendVO bookSendVO){
|
||||
return adjudicationService.sendDocumentByEmail(bookSendVO.getId(),bookSendVO.getAppEmail(),bookSendVO.getResEmail(),bookSendVO.getApptrackingNum(),bookSendVO.getRestrackingNum());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -45,29 +144,41 @@ public class AdjudicationController extends BaseController {
|
||||
* @param caseApplication
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/logistics")
|
||||
public AjaxResult getLogisticsInfo(CaseApplication caseApplication){
|
||||
return adjudicationService.getLogisticsInfo(caseApplication);
|
||||
}
|
||||
// @GetMapping("/logistics")
|
||||
//// @PreAuthorize("@ss.hasPermi('delivery:detail')")
|
||||
// public AjaxResult getLogisticsInfo(CaseApplication caseApplication){
|
||||
// List<LogisticsInfoVO> logisticsInfo = adjudicationService.getLogisticsInfo(caseApplication);
|
||||
// return AjaxResult.success(logisticsInfo);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 签名(暂时只改案件状态)
|
||||
* @param caseApplication
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/signature")
|
||||
public AjaxResult signature(@Validated @RequestBody CaseApplication caseApplication){
|
||||
return adjudicationService.signature(caseApplication);
|
||||
}
|
||||
|
||||
/**
|
||||
* 归档(暂时只改案件状态)
|
||||
* @param caseApplication
|
||||
* @param batchCaseApplication
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/caseFile")
|
||||
public AjaxResult caseFile(@Validated @RequestBody CaseApplication caseApplication){
|
||||
return adjudicationService.caseFile(caseApplication);
|
||||
// @PreAuthorize("@ss.hasPermi('awardManagement:list:file')")
|
||||
public AjaxResult caseFile(@RequestBody BatchCaseApplication batchCaseApplication){
|
||||
if(CollectionUtil.isEmpty(batchCaseApplication.getIds())){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
return adjudicationService.caseFile(batchCaseApplication.getIds());
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量归档(暂时只改案件状态)
|
||||
* @param caseApplication
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/caseFileBatch")
|
||||
public AjaxResult caseFileBatch(@RequestBody CaseApplication caseApplication){
|
||||
if(StrUtil.isEmpty(caseApplication.getBatchNumber().toString())){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
return adjudicationService.caseFileBatch(caseApplication.getBatchNumber());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +187,57 @@ public class AdjudicationController extends BaseController {
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/service")
|
||||
// @PreAuthorize("@ss.hasPermi('awardManagement:list:sendaward')")
|
||||
public AjaxResult service(@RequestBody BookSendVO bookSendVO){
|
||||
return adjudicationService.service(bookSendVO.getId(),bookSendVO.getAppEmail(),bookSendVO.getResEmail(),bookSendVO.getApptrackingNum(),bookSendVO.getRestrackingNum());
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量送达仲裁书
|
||||
* @param caseApplication
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/serviceBatch")
|
||||
public AjaxResult serviceBatch(@Validated @RequestBody CaseApplication caseApplication) throws EsignDemoException, IOException {
|
||||
if(StrUtil.isEmpty(caseApplication.getBatchNumber().toString())){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
return adjudicationService.serviceBatch(caseApplication.getBatchNumber());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 档案详情查询
|
||||
* @param id 案件id
|
||||
* @return
|
||||
*/
|
||||
// @GetMapping("/archives")
|
||||
// public AjaxResult getArchivesDetail(Long id){
|
||||
//
|
||||
// return adjudicationService.getArchivesDetail(id);
|
||||
// }
|
||||
/**
|
||||
* 根据案件id获取邮箱
|
||||
* @param id 案件id
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/emailByCaseId")
|
||||
public AjaxResult emailByCaseId(@RequestParam("id") Long id){
|
||||
|
||||
return adjudicationService.emailByCaseId(id);
|
||||
}
|
||||
/**
|
||||
* 开庭审理提交,只改变案件状态为CaseApplicationConstants.VERPRIF_ARBITRATION
|
||||
* @param caseApplication 案件
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/changeCaseStatus")
|
||||
public AjaxResult changeCaseStatus(@RequestBody CaseApplication caseApplication){
|
||||
if(caseApplication.getId()==null){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
return adjudicationService.changeCaseStatus(caseApplication.getId(), CaseApplicationConstants.VERPRIF_ARBITRATION);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.ruoyi.common.annotation.Anonymous;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.utils.CheckSignatuerUtils;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.dto.CaseApplicationDTO;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.CaseApplicationVO;
|
||||
import com.ruoyi.wisdomarbitrate.service.ICaseApplicationService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/callArbitrateCaseApplication")
|
||||
public class ArbitrateApplicationController extends BaseController {
|
||||
@Autowired
|
||||
private ICaseApplicationService caseApplicationService;
|
||||
|
||||
|
||||
/**
|
||||
* 新增立案数据
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/generateCaseApplication")
|
||||
public AjaxResult generateCaseApplication(@Validated @RequestBody CaseApplicationVO caseApplicationVO) throws Exception {
|
||||
String paramsbody = JSONUtil.toJsonStr(caseApplicationVO);
|
||||
boolean checkResult= CheckSignatuerUtils.checkSignuter(paramsbody);
|
||||
if(checkResult){
|
||||
CaseApplicationDTO caseApplication = new CaseApplicationDTO();
|
||||
BeanUtils.copyProperties(caseApplicationVO,caseApplication);
|
||||
caseApplication.setCreateBy(getUsername());
|
||||
return caseApplicationService.insertOrUpdate(caseApplication);
|
||||
}else {
|
||||
return AjaxResult.error("签名验证失败");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
+12
-6
@@ -1,7 +1,11 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.system.mapper.SysUserMapper;
|
||||
import com.ruoyi.system.service.ISysUserService;
|
||||
import com.ruoyi.wisdomarbitrate.domain.Arbitrator;
|
||||
import com.ruoyi.wisdomarbitrate.service.IArbitratorService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -16,18 +20,20 @@ import java.util.List;
|
||||
@RequestMapping("/arbitrator")
|
||||
public class ArbitratorController extends BaseController {
|
||||
@Autowired
|
||||
private IArbitratorService arbitratorService;
|
||||
private ISysUserService sysUserService;
|
||||
|
||||
/**
|
||||
* 查询仲裁员信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('arbitrator:list')")
|
||||
// @PreAuthorize("@ss.hasPermi('arbitrator:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(Arbitrator arbitrator)
|
||||
public AjaxResult list(Arbitrator arbitrator)
|
||||
{
|
||||
startPage();
|
||||
List<Arbitrator> list = arbitratorService.selectArbitratorList(arbitrator);
|
||||
return getDataTable(list);
|
||||
if(arbitrator.getCaseId()==null){
|
||||
return AjaxResult.error("案件id不能为空");
|
||||
}
|
||||
List<SysUser> list = sysUserService.selectUserListByAdRole(arbitrator);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+449
-77
@@ -1,222 +1,594 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.common.annotation.Anonymous;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.common.exception.EsignDemoException;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
|
||||
import com.ruoyi.common.utils.WxAppletNotifyUtils;
|
||||
import com.ruoyi.wisdomarbitrate.domain.*;
|
||||
import com.ruoyi.wisdomarbitrate.domain.dto.CaseApplicationDTO;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.ReservedConferenceVO;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.SendRoomNoMessageVO;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.ToDoCount;
|
||||
import com.ruoyi.wisdomarbitrate.service.IAdjudicationService;
|
||||
import com.ruoyi.wisdomarbitrate.service.ICaseApplicationService;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.*;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/caseApplication")
|
||||
public class CaseApplicationController extends BaseController {
|
||||
public class CaseApplicationController extends BaseController {
|
||||
@Autowired
|
||||
private ICaseApplicationService caseApplicationService;
|
||||
@Autowired
|
||||
private IAdjudicationService adjudicationService;
|
||||
/**
|
||||
* 根据登录人返回用户信息
|
||||
*/
|
||||
@GetMapping("/getUserInfo")
|
||||
public AjaxResult getUserInfo()
|
||||
{
|
||||
|
||||
|
||||
return success(caseApplicationService.getUserInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询立案数据
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('caseApplication:list')")
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(CaseApplication caseApplication)
|
||||
{
|
||||
startPage();
|
||||
List<CaseApplication> list = caseApplicationService.selectCaseApplicationList(caseApplication);
|
||||
public TableDataInfo list(CaseApplication caseApplication) {
|
||||
if(StrUtil.isEmpty(caseApplication.getSelectCaseStatus())){
|
||||
caseApplication.setSelectCaseStatus("0");
|
||||
}
|
||||
// List<CaseApplication> list = caseApplicationService.selectCaseApplicationListByRole(caseApplication);
|
||||
List<CaseApplication> list = caseApplicationService.page(caseApplication);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 查询批量管理案件列表
|
||||
// */
|
||||
// @GetMapping("/listBatch")
|
||||
// public TableDataInfo listBatch(CaseApplication caseApplication) {
|
||||
// startPage();
|
||||
// List<CaseApplication> list = caseApplicationService.selectCaseApplicationListBatchByRole(caseApplication);
|
||||
// return getDataTable(list);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 根据角色查询待办数量
|
||||
* @return
|
||||
*/
|
||||
|
||||
@GetMapping("/toDoCount")
|
||||
public AjaxResult toDoCount() {
|
||||
ToDoCount toDoCount = caseApplicationService.selectToDoCount();
|
||||
// List<CaseApplication> list = caseApplicationService.selectCaseApplicationList(caseApplication);
|
||||
return success(toDoCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立案数据
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('caseApplication:add')")
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:add')")
|
||||
@Log(title = "新增立案数据", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/addCaseApplication")
|
||||
public AjaxResult addCaseApplication(@Validated @RequestBody CaseApplication caseApplication)
|
||||
public AjaxResult addCaseApplication(@Validated @RequestBody CaseApplicationDTO caseApplication)
|
||||
{
|
||||
int caseApplicationCount = caseApplicationService.selectCaseApplicationCount(caseApplication);
|
||||
if(caseApplicationCount>0){
|
||||
return error("新增立案申请'" + caseApplication.getCaseNum() + "'案件编号已存在");
|
||||
}
|
||||
|
||||
caseApplication.setCreateBy(getUsername());
|
||||
return toAjax(caseApplicationService.insertcaseApplication(caseApplication));
|
||||
return caseApplicationService.insertOrUpdate(caseApplication);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立案数据
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('caseApplication:edit')")
|
||||
@Log(title = "修改立案数据", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/editCaseApplication")
|
||||
public AjaxResult editCaseApplication(@Validated @RequestBody CaseApplication caseApplication)
|
||||
{
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:update')")
|
||||
// @Log(title = "修改立案数据", businessType = BusinessType.UPDATE)
|
||||
// @PostMapping("/editCaseApplication")
|
||||
// public AjaxResult editCaseApplication(@Validated @RequestBody CaseApplicationDTO caseApplication) {
|
||||
//
|
||||
// caseApplication.setUpdateBy(getUsername());
|
||||
// return caseApplicationService.editCaseApplication(caseApplication);
|
||||
// }
|
||||
|
||||
caseApplication.setUpdateBy(getUsername());
|
||||
return toAjax(caseApplicationService.editCaseApplication(caseApplication));
|
||||
/**
|
||||
* 修改立案数据自定义字段
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:update')")
|
||||
@Log(title = "修改立案数据自定义字段", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/editCaseApplicationDefineval")
|
||||
public AjaxResult editCaseApplicationDefineval(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
return caseApplicationService.editCaseApplicationDefineval(caseApplication);
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交立案申请
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('caseApplication:submit')")
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:submit')")
|
||||
@Log(title = "提交立案申请", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/submitCaseApplication")
|
||||
public AjaxResult submitCaseApplication(@Validated @RequestBody CaseApplication caseApplication)
|
||||
{
|
||||
|
||||
return toAjax(caseApplicationService.submitCaseApplication(caseApplication));
|
||||
public AjaxResult submitCaseApplication(@RequestBody BatchCaseApplication batchCaseApplication) {
|
||||
if(CollectionUtil.isEmpty(batchCaseApplication.getIds())){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
return toAjax(caseApplicationService.submitCaseApplication(batchCaseApplication.getIds()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量提交立案申请
|
||||
*/
|
||||
@Log(title = "批量提交立案申请", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/submitCaseApplicationBatch")
|
||||
public AjaxResult submitCaseApplicationBatch(@RequestBody BatchCaseApplication batchCaseApplication) {
|
||||
if(StringUtils.isEmpty(batchCaseApplication.getBatchNumber())){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
return caseApplicationService.submitCaseApplicationBatch(batchCaseApplication.getBatchNumber());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 删除立案数据
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('caseApplication:remove')")
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:delete')")
|
||||
@Log(title = "删除立案数据", businessType = BusinessType.DELETE)
|
||||
@PostMapping("/removeCaseApplication")
|
||||
public AjaxResult removeCaseApplication(@Validated @RequestBody CaseApplication caseApplication)
|
||||
{
|
||||
|
||||
return toAjax(caseApplicationService.deletecaseApplicationByIds(caseApplication));
|
||||
public AjaxResult removeCaseApplication(@RequestBody BatchCaseApplication batchCaseApplication) {
|
||||
if(CollectionUtil.isEmpty(batchCaseApplication.getIds())){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
return success(caseApplicationService.deletecaseApplicationByIds(batchCaseApplication.getIds()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询立案信息
|
||||
* 查询立案详情
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:detail')")
|
||||
@PostMapping("/selectCaseApplication")
|
||||
public AjaxResult selectCaseApplication(@Validated @RequestBody CaseApplication caseApplication)
|
||||
{
|
||||
public AjaxResult selectCaseApplication(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
|
||||
CaseApplication caseApplicationselect = caseApplicationService.selectCaseApplication(caseApplication);
|
||||
return success(caseApplicationselect);
|
||||
}
|
||||
/**
|
||||
* 视频会议中查询立案详情
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:detail')")
|
||||
@GetMapping("/selectById")
|
||||
public AjaxResult selectById(@RequestParam(required = false) Long id ,@RequestParam(required = false) String caseNum) {
|
||||
CaseApplication caseApplication = new CaseApplication();
|
||||
caseApplication.setId(id);
|
||||
caseApplication.setCaseNum(caseNum);
|
||||
CaseApplication caseApplicationselect = caseApplicationService.selectCaseApplication(caseApplication);
|
||||
return success(caseApplicationselect);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询已签署裁决书URL
|
||||
*/
|
||||
@PostMapping("/selectSignSealUrl")
|
||||
public AjaxResult selectSignSealUrl(@Validated @RequestBody CaseApplication caseApplication) throws EsignDemoException {
|
||||
CaseApplication caseApplicationselect = caseApplicationService.selectSignSealUrl(caseApplication);
|
||||
return success(caseApplicationselect);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询案件进度
|
||||
*/
|
||||
@PostMapping("/selectCaseProgress")
|
||||
public AjaxResult selectCaseProgress(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
AjaxResult caseApplicationselect = caseApplicationService.selectCaseProgress(caseApplication);
|
||||
return success(caseApplicationselect);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询签名链接
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:selectSignUrl')")
|
||||
@PostMapping("/selectSignUrl")
|
||||
public AjaxResult selectSignUrl(@Validated @RequestBody CaseApplication caseApplication) throws EsignDemoException {
|
||||
SealSignRecord sealSignRecordselect = caseApplicationService.selectSignUrl(caseApplication);
|
||||
return success(sealSignRecordselect);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询用印链接
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:selectSealUrl')")
|
||||
@PostMapping("/selectSealUrl")
|
||||
public AjaxResult selectSealUrl(@Validated @RequestBody CaseApplication caseApplication) throws EsignDemoException {
|
||||
SealSignRecord sealUrlRecordselect = caseApplicationService.selectSealUrl(caseApplication);
|
||||
return success(sealUrlRecordselect);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 案件证据材料压缩包上传
|
||||
*
|
||||
* @param file 附件
|
||||
* @param id 案件申请id
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/uploadZipFile")
|
||||
public AjaxResult uploadZipFile(@RequestParam("file") MultipartFile file, Long id) {
|
||||
String username = this.getUsername();
|
||||
Long userId = this.getUserId();
|
||||
return caseApplicationService.uploadZipFile(file, id, username, userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 立案申请导入模板下载
|
||||
*/
|
||||
@PostMapping("/importTemplate")
|
||||
public void importTemplate(HttpServletResponse response)
|
||||
{
|
||||
ExcelUtil<CaseApplication> util = new ExcelUtil<CaseApplication>(CaseApplication.class);
|
||||
util.importTemplateExcel(response, "立案申请数据");
|
||||
public void importTemplate(HttpServletResponse response) {
|
||||
// 读取文件
|
||||
try {
|
||||
InputStream fileInputStream = new URL("http://121.40.189.20:8000/API/uploadPath/template/案件导入模板.xlsx").openStream();
|
||||
response.setHeader("content-type", "application/octet-stream");
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("案件导入模板.xlsx","UTF-8"));
|
||||
byte[] buffer = new byte[1024];
|
||||
int length;
|
||||
while ((length = fileInputStream.read(buffer)) > 0) {
|
||||
response.getOutputStream().write(buffer, 0, length);
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Log(title = "立案信息导入", businessType = BusinessType.IMPORT)
|
||||
@PreAuthorize("@ss.hasPermi('caseApplication:import')")
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:import')")
|
||||
@PostMapping("/importData")
|
||||
public AjaxResult importData(MultipartFile file) throws Exception {
|
||||
if(file==null){
|
||||
return warn("请上传文件");
|
||||
}
|
||||
ExcelUtil<CaseApplication> util = new ExcelUtil<CaseApplication>(CaseApplication.class);
|
||||
List<CaseApplication> caseApplicationList = util.importExcel(file.getInputStream());
|
||||
String operName = getUsername();
|
||||
String message = caseApplicationService.importCaseApplication(caseApplicationList,operName);
|
||||
String message = caseApplicationService.importCaseApplication(caseApplicationList, operName);
|
||||
return success(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* 组庭
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('caseApplication:pendTral')")
|
||||
// @PreAuthorize("@ss.hasPermi('caseApplication:pendTral')")
|
||||
@Log(title = "组庭", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/pendTral")
|
||||
public AjaxResult pendTral(@Validated @RequestBody CaseApplication caseApplication)
|
||||
{
|
||||
public AjaxResult pendTral(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
return toAjax(caseApplicationService.pendTral(caseApplication));
|
||||
}
|
||||
|
||||
/**
|
||||
* 组庭审核
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('caseApplication:pendTralCheck')")
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:checkgroup')")
|
||||
@Log(title = "组庭审核", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/pendTralCheck")
|
||||
public AjaxResult pendTralCheck(@Validated @RequestBody CaseApplication caseApplication)
|
||||
{
|
||||
return toAjax(caseApplicationService.pendTralCheck(caseApplication));
|
||||
public AjaxResult pendTralCheck(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
if(CollectionUtil.isEmpty(caseApplication.getArbitrators())){
|
||||
return error("请选择仲裁员");
|
||||
}
|
||||
return caseApplicationService.pendTralCheck(caseApplication);
|
||||
}
|
||||
|
||||
/**
|
||||
* 组庭确认
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('caseApplication:pendTralSure')")
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:confirmgroup')")
|
||||
@Log(title = "组庭确认", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/pendTralSure")
|
||||
public AjaxResult pendTralSure(@Validated @RequestBody CaseApplication caseApplication)
|
||||
{
|
||||
public AjaxResult pendTralSure(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
return toAjax(caseApplicationService.pendTralSure(caseApplication));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量组庭审核
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:checkgroup')")
|
||||
@Log(title = "批量组庭审核", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/pendTralCheckBatch")
|
||||
public AjaxResult pendTralCheckBatch(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
return toAjax(caseApplicationService.pendTralCheckBatch(caseApplication));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量组庭确认
|
||||
*/
|
||||
@Log(title = "批量组庭确认", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/pendTralSureBatch")
|
||||
public AjaxResult pendTralSureBatch(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
return toAjax(caseApplicationService.pendTralSureBatch(caseApplication));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改开庭时间
|
||||
*/
|
||||
@Log(title = "修改开庭时间", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/updateHeardate")
|
||||
public AjaxResult updateHeardate(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
return toAjax(caseApplicationService.updateHeardate(caseApplication));
|
||||
}
|
||||
|
||||
/**
|
||||
* 核验裁决书
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('caseApplication:verificationArbitrateRecord')")
|
||||
// @PreAuthorize("@ss.hasPermi('caseApplication:verificationArbitrateRecord')")
|
||||
@Log(title = "核验裁决书", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/verificationArbitrateRecord")
|
||||
public AjaxResult verificationArbitrateRecord(@Validated @RequestBody CaseApplication caseApplication)
|
||||
{
|
||||
public AjaxResult verificationArbitrateRecord(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
return toAjax(caseApplicationService.verificationArbitrateRecord(caseApplication));
|
||||
}
|
||||
|
||||
/**
|
||||
* 审核裁决书
|
||||
* 部门长审核裁决书
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('caseApplication:checkArbitrateRecord')")
|
||||
@Log(title = "审核裁决书", businessType = BusinessType.UPDATE)
|
||||
// @PreAuthorize("@ss.hasPermi('caseApplication:checkArbitrateRecord')")
|
||||
@Log(title = "部门长审核裁决书", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/checkArbitrateRecord")
|
||||
public AjaxResult checkArbitrateRecord(@Validated @RequestBody CaseApplication caseApplication)
|
||||
{
|
||||
return toAjax(caseApplicationService.checkArbitrateRecord(caseApplication));
|
||||
public AjaxResult checkArbitrateRecord(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
|
||||
return caseApplicationService.checkArbitrateRecord(caseApplication);
|
||||
}
|
||||
/**
|
||||
* 仲裁员审核裁决书
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('caseApplication:checkArbitrateRecord')")
|
||||
@Log(title = "仲裁员审核裁决书", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/arbitrator/checkArbitrateRecord")
|
||||
public AjaxResult arbitratorCheckArbitrateRecord(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
|
||||
return caseApplicationService.arbitratorCheckArbitrateRecord(caseApplication);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量操作仲裁员审核裁决书
|
||||
*/
|
||||
@Log(title = "批量操作仲裁员审核裁决书", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/arbitrator/checkArbitrateRecordBatch")
|
||||
public AjaxResult arbitratorCheckArbitrateRecordBatch(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
|
||||
return caseApplicationService.arbitratorCheckArbitrateRecordBatch(caseApplication);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量部门长审核裁决书
|
||||
*/
|
||||
@Log(title = "批量部门长审核裁决书", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/checkArbitrateRecordBatch")
|
||||
public AjaxResult checkArbitrateRecordBatch(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
|
||||
return caseApplicationService.checkArbitrateRecordBatch(caseApplication);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量核验裁决书
|
||||
*/
|
||||
@Log(title = "批量核验裁决书", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/verificationArbitrateRecordBatch")
|
||||
public AjaxResult verificationArbitrateRecordBatch(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
return toAjax(caseApplicationService.verificationArbitrateRecordBatch(caseApplication));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 是否指派仲裁员
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('caseApplication:pendingAppointArbotrar')")
|
||||
// @PreAuthorize("@ss.hasPermi('caseApplication:pendingAppointArbotrar')")
|
||||
@Log(title = "是否指派仲裁员", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/pendingAppointArbotrar")
|
||||
public AjaxResult pendingAppointArbotrar(@Validated @RequestBody CaseApplication caseApplication)
|
||||
{
|
||||
public AjaxResult pendingAppointArbotrar(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
return toAjax(caseApplicationService.pendingAppointArbotrar(caseApplication));
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交立案审查
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('caseApplication:submitCaseApplicationCheck')")
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:check')")
|
||||
@Log(title = "提交立案审查", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/submitCaseApplicationCheck")
|
||||
public AjaxResult submitCaseApplicationCheck(@Validated @RequestBody CaseApplication caseApplication)
|
||||
{
|
||||
public AjaxResult submitCaseApplicationCheck(@RequestBody BatchCaseApplication batchCaseApplication) {
|
||||
if(CollectionUtil.isEmpty(batchCaseApplication.getIds())|| batchCaseApplication.getAgreeOrNotCheck()==null){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
return success(caseApplicationService.submitCaseApplicationCheck(batchCaseApplication.getIds(),batchCaseApplication.getAgreeOrNotCheck(),batchCaseApplication.getCaseCheckReject()));
|
||||
}
|
||||
|
||||
return toAjax(caseApplicationService.submitCaseApplicationCheck(caseApplication));
|
||||
|
||||
/**
|
||||
* 批量提交立案审查
|
||||
*/
|
||||
@Log(title = "批量提交立案审查", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/submitCaseApplicationCheckBatch")
|
||||
public AjaxResult submitCaseApplicationCheckBatch(@RequestBody BatchCaseApplication batchCaseApplication) {
|
||||
if(StringUtils.isEmpty(batchCaseApplication.getBatchNumber()) || batchCaseApplication.getAgreeOrNotCheck()==null){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
return caseApplicationService.submitCaseApplicationCheckBatch(batchCaseApplication.getBatchNumber(),batchCaseApplication.getAgreeOrNotCheck(),batchCaseApplication.getCaseCheckReject());
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 下载案件压缩包
|
||||
// */
|
||||
// @PostMapping("/downloadCaseZipFile")
|
||||
// public AjaxResult downloadCaseZipFile(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
//
|
||||
// CaseAttach caseAttach = caseApplicationService.downloadCaseZipFile(caseApplication);
|
||||
// return success(caseAttach);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 发送房间号短信
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/sendRoomNoMessage")
|
||||
public AjaxResult sendRoomNoMessage(@Validated @RequestBody SendRoomNoMessageVO messageVO) {
|
||||
String result = caseApplicationService.sendRoomNoMessage(messageVO);
|
||||
return success(result);
|
||||
}
|
||||
/**
|
||||
* 获取UrlScheme
|
||||
*/
|
||||
@Anonymous
|
||||
@GetMapping("/getUrlScheme")
|
||||
public AjaxResult getUrlScheme() {
|
||||
String schemeUrl = WxAppletNotifyUtils.jumpAppletSchemeUrl();
|
||||
return success(schemeUrl);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 确认会议结果
|
||||
* @param arbitrateRecord
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/confirmMeetingResult")
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:creatTrialRecord')")
|
||||
public AjaxResult creatTrialRecordnew( @RequestBody ArbitrateRecord arbitrateRecord){
|
||||
if(arbitrateRecord.getCaseAppliId()==null || arbitrateRecord.getAppliIsAbsen()==null || arbitrateRecord.getIsAbsence()==null){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
return caseApplicationService.creatTrialRecordnew(arbitrateRecord);
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认缴费查询立案信息
|
||||
* 案件锁定或者解锁
|
||||
* @param caseApplication
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/selectCaseApplicationConfirm")
|
||||
public AjaxResult selectCaseApplicationConfirm(@Validated @RequestBody CaseApplication caseApplication)
|
||||
{
|
||||
CaseApplication caseApplicationselect = caseApplicationService.selectCaseApplicationConfirm(caseApplication);
|
||||
return success(caseApplicationselect);
|
||||
@PostMapping("/updateCaseLockStatus")
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:creatTrialRecord')")
|
||||
public AjaxResult updateCaseLockStatus(@Validated @RequestBody CaseApplication caseApplication){
|
||||
if(caseApplication.getId()==null || caseApplication.getLockStatus()==null){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
return AjaxResult.success(caseApplicationService.updateCaseLockStatus(caseApplication));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取userSign
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
@Anonymous
|
||||
@GetMapping("/generateUserSign")
|
||||
public AjaxResult generateUserSign(@RequestParam(required = true) String userId){
|
||||
if(StrUtil.isEmpty(userId)){
|
||||
error("参数校验失败");
|
||||
}
|
||||
return AjaxResult.success(caseApplicationService.generateUserSign(userId));
|
||||
}
|
||||
/**
|
||||
* 预约会议
|
||||
* @param reservedConferenceVO
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/reservedConference")
|
||||
public AjaxResult reservedConference(@Validated @RequestBody ReservedConferenceVO reservedConferenceVO) throws Exception {
|
||||
|
||||
return caseApplicationService.reservedConference(reservedConferenceVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成房间号
|
||||
* @return
|
||||
*/
|
||||
@Anonymous
|
||||
@GetMapping("/createRoomId")
|
||||
public AjaxResult createRoomId(@RequestParam("caseId") Long caseId) {
|
||||
|
||||
return success(caseApplicationService.createRoomId(caseId));
|
||||
}
|
||||
/**
|
||||
* 删除房间号
|
||||
* @return
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/deleteRoom")
|
||||
public AjaxResult deleteRoom(@RequestParam("roomId") String roomId) {
|
||||
|
||||
return caseApplicationService.deleteRoom(roomId);
|
||||
}
|
||||
/**
|
||||
* 根据案件id查询已预约的会议
|
||||
* @param caseId
|
||||
* @return
|
||||
*/
|
||||
@Anonymous
|
||||
@GetMapping("/reserveConferenceList")
|
||||
public AjaxResult reserveConferenceList( @RequestParam("caseId") Long caseId) {
|
||||
|
||||
return success(caseApplicationService.reserveConferenceList(caseId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 案件压缩包导入
|
||||
* @param file
|
||||
* @param applicantType 申请人类型,自然人-1,机构-2
|
||||
* @param resType 被申请人类型,自然人-1,机构-2
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
@PostMapping("/uploadCaseZipFile")
|
||||
public AjaxResult uploadCaseZipFile(@RequestParam("file") MultipartFile file,@RequestParam("templateId") Long templateId,Integer applicantType,Integer resType) throws IOException {
|
||||
return caseApplicationService.uploadCaseZipFile(file,templateId,applicantType,resType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据附件id修改案件id
|
||||
* @param caseAttach
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/updateCaseIdByAnnexId")
|
||||
public AjaxResult updateCaseIdByAnnexId(@RequestBody CaseAttach caseAttach) {
|
||||
if(caseAttach.getAnnexId()==null || caseAttach.getCaseAppliId()==null){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
return caseApplicationService.updateCaseIdByAnnexId(caseAttach);
|
||||
}
|
||||
/**
|
||||
* 保存onlyOffice在线编辑的文件
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/saveOnlyOfficeFile")
|
||||
public AjaxResult saveOnlyOfficeFile( @RequestBody CaseAttach caseAttach) {
|
||||
if(caseAttach.getCaseAppliId()==null||StrUtil.isEmpty(caseAttach.getOnlyOfficeFileId())||StrUtil.isEmpty(caseAttach.getAnnexPath())){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
|
||||
return caseApplicationService.saveOnlyOfficeFile(caseAttach);
|
||||
}
|
||||
}
|
||||
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import com.ruoyi.common.annotation.Anonymous;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.UpdateSubmitVO;
|
||||
import com.ruoyi.wisdomarbitrate.service.CaseApplicationLogService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
|
||||
import static com.ruoyi.common.core.domain.AjaxResult.success;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description 案件日志
|
||||
* @date 2023-11-17 13:58
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping (value = "/caseApplicationLog")
|
||||
public class CaseApplicationLogController {
|
||||
|
||||
@Autowired
|
||||
private CaseApplicationLogService caseApplicationLogService;
|
||||
|
||||
/**
|
||||
* 新增
|
||||
* @author wangqiong
|
||||
* @date 2023/11/17
|
||||
**/
|
||||
@PostMapping("/insert")
|
||||
public AjaxResult insert(@RequestBody CaseApplication caseApplicationLog){
|
||||
return success(caseApplicationLogService.insert(caseApplicationLog));
|
||||
}
|
||||
|
||||
/**
|
||||
* 刪除
|
||||
* @author wangqiong
|
||||
* @date 2023/11/17
|
||||
**/
|
||||
@PostMapping("/delete")
|
||||
public AjaxResult delete(Long id){
|
||||
return success(caseApplicationLogService.delete(id));
|
||||
}
|
||||
/**
|
||||
* 修改的案件提交到秘书
|
||||
* @author wangqiong
|
||||
* @date 2023/11/17
|
||||
**/
|
||||
@PostMapping("/submit")
|
||||
public AjaxResult submit(@RequestBody UpdateSubmitVO vo){
|
||||
if(vo.getCaseId()==null || vo.getVersion()==null){
|
||||
return AjaxResult.error("参数校验错误");
|
||||
}
|
||||
return caseApplicationLogService.submit(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改撤销申请
|
||||
* @author wangqiong
|
||||
* @date 2023/11/17
|
||||
**/
|
||||
@PostMapping("/revoke")
|
||||
public AjaxResult revoke(@RequestBody UpdateSubmitVO vo){
|
||||
if(vo.getCaseId()==null || vo.getVersion()==null){
|
||||
return AjaxResult.error("参数校验错误");
|
||||
}
|
||||
|
||||
return caseApplicationLogService.revoke(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询 根据主键 id 查询
|
||||
* @author wangqiong
|
||||
* @date 2023/11/17
|
||||
**/
|
||||
@GetMapping("/selectByCaseIdAndVersion")
|
||||
public AjaxResult selectByCaseIdAndVersion(@RequestParam(value = "caseId") Long caseId,@RequestParam(value = "version")Integer version ){
|
||||
return success(caseApplicationLogService.selectByCaseIdAndVersion(caseId,version));
|
||||
}
|
||||
/**
|
||||
* 秘书审核修改的案件
|
||||
* @author wangqiong
|
||||
* @date 2023/11/17
|
||||
**/
|
||||
@PostMapping("/updateAudit")
|
||||
public AjaxResult updateAudit(@RequestBody UpdateSubmitVO vo){
|
||||
if(vo.getCaseId()==null || vo.getVersion()==null || vo.getIsAgree()==null || vo.getUpdateSubmitStatus()==null){
|
||||
return AjaxResult.error("参数校验错误");
|
||||
}
|
||||
return caseApplicationLogService.updateAudit(vo);
|
||||
}
|
||||
/**
|
||||
* 查询该版本及之前版本案件进行对比
|
||||
* @author wangqiong
|
||||
* @date 2023/11/17
|
||||
**/
|
||||
@Anonymous
|
||||
@PostMapping("/selectCompareCase")
|
||||
public AjaxResult selectCompareCase(@RequestBody UpdateSubmitVO vo){
|
||||
if(vo.getCaseId()==null || vo.getVersion()==null ){
|
||||
return AjaxResult.error("参数校验错误");
|
||||
}
|
||||
return caseApplicationLogService.selectCompareCase(vo);
|
||||
}
|
||||
|
||||
}
|
||||
+33
-5
@@ -1,14 +1,20 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.wisdomarbitrate.domain.ArbitrateRecord;
|
||||
import com.ruoyi.wisdomarbitrate.domain.BatchCaseApplication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseIds;
|
||||
import com.ruoyi.wisdomarbitrate.service.ICaseArbitrateService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/arbitrate")
|
||||
public class CaseArbitrateController extends BaseController {
|
||||
@@ -22,18 +28,40 @@ public class CaseArbitrateController extends BaseController {
|
||||
* @return
|
||||
*/
|
||||
@PutMapping("/method")
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:checkarbitrationway')")
|
||||
public AjaxResult examineArbitrateMethod(@Validated @RequestBody CaseApplication caseApplication
|
||||
,Integer opinion){
|
||||
return caseArbitrateService.examineArbitrateMethod(caseApplication,opinion);
|
||||
, Integer opinion, Integer arbitratMethod){
|
||||
return caseArbitrateService.examineArbitrateMethod(caseApplication,opinion,arbitratMethod);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量审核仲裁方式
|
||||
* @param caseApplication
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/methodBatch")
|
||||
public AjaxResult examineArbitrateMethodBatch(@Validated @RequestBody CaseApplication caseApplication){
|
||||
return caseArbitrateService.examineArbitrateMethodBatch(caseApplication);
|
||||
}
|
||||
|
||||
/**
|
||||
* 书面审理
|
||||
* @param arbitrateRecord
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/writtenHear")
|
||||
public AjaxResult writtenHear(@Validated @RequestBody ArbitrateRecord arbitrateRecord){
|
||||
return caseArbitrateService.writtenHear(arbitrateRecord);
|
||||
public AjaxResult writtenHear(@RequestBody CaseIds caseIds){
|
||||
return caseArbitrateService.writtenHear(caseIds);
|
||||
|
||||
}
|
||||
/**
|
||||
* 批量书面审理
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/writtenHearBatch")
|
||||
public AjaxResult writtenHearBatch(@Validated @RequestBody CaseApplication caseApplication){
|
||||
return caseArbitrateService.writtenHearBatch(caseApplication);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+94
-25
@@ -1,13 +1,18 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseAttach;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseEvidenceDirectory;
|
||||
import com.ruoyi.wisdomarbitrate.domain.dto.CaseEvidenceDTO;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.CaseEvidenceVO;
|
||||
import com.ruoyi.wisdomarbitrate.service.ICaseEvidenceService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@@ -28,23 +33,23 @@ public class CaseEvidenceController extends BaseController {
|
||||
this.caseEvidenceService = caseEvidenceService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据案件id查询案件详情
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/{id}")
|
||||
public AjaxResult getCaseDetailsById(@PathVariable Long id) {
|
||||
String username = this.getUsername();
|
||||
return caseEvidenceService.getCaseDetailsById(id,username);
|
||||
}
|
||||
// /**
|
||||
// * 根据案件id查询案件详情
|
||||
// *
|
||||
// * @param id
|
||||
// * @return
|
||||
// */
|
||||
// @GetMapping("/{id}")
|
||||
// public AjaxResult getCaseDetailsById(@PathVariable Long id) {
|
||||
// String username = this.getUsername();
|
||||
// return caseEvidenceService.getCaseDetailsById(id, username);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 案件证据上传
|
||||
*
|
||||
* @param file 附件
|
||||
* @param annexType 附件类型,立案申请书(1)、证据材料(2)、仲裁文书(3)、案件视频(4)、身份证件(5)
|
||||
* @param annexType 附件类型,立案申请书(1)、证据材料(2)、裁决书(3)、案件视频(4)、身份证件(5)
|
||||
* @param id 案件申请id
|
||||
* @return
|
||||
*/
|
||||
@@ -52,41 +57,105 @@ public class CaseEvidenceController extends BaseController {
|
||||
public AjaxResult uploadEvidence(@RequestParam("file") MultipartFile file, Integer annexType, Long id) {
|
||||
String username = this.getUsername();
|
||||
Long userId = this.getUserId();
|
||||
return caseEvidenceService.uploadEvidence(file, annexType, id,username,userId);
|
||||
return caseEvidenceService.uploadEvidence(file, annexType, id, username, userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传庭审笔录
|
||||
*
|
||||
* @param file 附件
|
||||
* @param annexType 附件类型,庭审笔录(7)
|
||||
* @param id 案件申请id
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/uploadRecord")
|
||||
public AjaxResult uploadRecord(@RequestParam("file") MultipartFile file, Integer annexType, Long id) {
|
||||
String username = this.getUsername();
|
||||
Long userId = this.getUserId();
|
||||
return caseEvidenceService.uploadRecord(file, annexType, id, username, userId);
|
||||
}
|
||||
|
||||
@PostMapping("/batchUpload")
|
||||
public AjaxResult batchUpload(@RequestParam("file") MultipartFile[] file, Integer annexType, Long id) {
|
||||
if(file==null){
|
||||
return error("请选择要上传的文件");
|
||||
}
|
||||
String username = this.getUsername();
|
||||
Long userId = this.getUserId();
|
||||
return caseEvidenceService.batchUpload(file, annexType, id, username, userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取附件
|
||||
* @param caseAppliId
|
||||
* @param annexTypeList
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/fileList")
|
||||
public AjaxResult fileList(Long caseAppliId, @RequestParam("annexTypeList") List<Integer> annexTypeList){
|
||||
if(caseAppliId==null){
|
||||
return error("案件id不能为空");
|
||||
}
|
||||
return caseEvidenceService.fileList(caseAppliId, annexTypeList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除附件
|
||||
* @param caseAttach
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/deleteFile")
|
||||
public AjaxResult deleteFile(@RequestBody CaseAttach caseAttach){
|
||||
|
||||
if(CollectionUtil.isEmpty(caseAttach.getFileIds())){
|
||||
return error("附件id不能为空");
|
||||
}
|
||||
return success(caseEvidenceService.deleteFile( caseAttach.getFileIds()));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询当前用户案件列表
|
||||
* @param identityNum
|
||||
*
|
||||
* @param caseStatus
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/all")
|
||||
public TableDataInfo getCaseListAll(@RequestParam String identityNum) {
|
||||
startPage();
|
||||
List<CaseEvidenceVO> list = caseEvidenceService.getCaseListAll(identityNum);
|
||||
if (list != null) {
|
||||
return getDataTable(list);
|
||||
}
|
||||
return getDataTable(new ArrayList<>());
|
||||
}
|
||||
// @GetMapping("/all")
|
||||
// public AjaxResult getCaseListAll(@RequestParam("caseStatus") Integer caseStatus) {
|
||||
//
|
||||
// return success(caseEvidenceService.getCaseListAll(caseStatus));
|
||||
//
|
||||
// }
|
||||
|
||||
/**
|
||||
* 证据确认
|
||||
*
|
||||
* @param caseApplication 案件对象
|
||||
* @return 统一返回结果
|
||||
*/
|
||||
@PutMapping("/confirm")
|
||||
public AjaxResult evidenceConfirmation(@Validated @RequestBody CaseApplication caseApplication){
|
||||
public AjaxResult evidenceConfirmation(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
return caseEvidenceService.evidenceConfirmation(caseApplication);
|
||||
}
|
||||
|
||||
/**
|
||||
* 案件质证
|
||||
*
|
||||
* @param caseEvidenceDTO
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/crossexami")
|
||||
public AjaxResult caseCrossexamination(@Validated @RequestBody CaseEvidenceDTO caseEvidenceDTO){
|
||||
public AjaxResult caseCrossexamination(@Validated @RequestBody CaseEvidenceDTO caseEvidenceDTO) {
|
||||
return caseEvidenceService.caseCrossexamination(caseEvidenceDTO);
|
||||
}
|
||||
/**
|
||||
* 获取证据目录树列表
|
||||
*/
|
||||
@GetMapping("/evidenceTree")
|
||||
public AjaxResult evidenceTree(CaseEvidenceDirectory caseEvidenceDirectory)
|
||||
{
|
||||
return success(caseEvidenceService.selectEvidenceTreeList(caseEvidenceDirectory)) ;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+4
-4
@@ -1,6 +1,7 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseLogRecord;
|
||||
@@ -22,13 +23,12 @@ public class CaseLogRecordController extends BaseController {
|
||||
/**
|
||||
* 查询案件日志列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('caseLogRecord:list')")
|
||||
// @PreAuthorize("@ss.hasPermi('caseLog:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(CaseLogRecord caseLogRecord)
|
||||
public AjaxResult list(CaseLogRecord caseLogRecord)
|
||||
{
|
||||
startPage();
|
||||
List<CaseLogRecord> list = caseLogRecordService.selectCaseLogRecordList(caseLogRecord);
|
||||
return getDataTable(list);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseNumRule;
|
||||
import com.ruoyi.wisdomarbitrate.domain.TemplateManual;
|
||||
import com.ruoyi.wisdomarbitrate.service.ICaseNumRuleService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/caseNumRule")
|
||||
public class CaseNumRuleController extends BaseController {
|
||||
@Autowired
|
||||
private ICaseNumRuleService caseNumRuleService;
|
||||
|
||||
/**
|
||||
* 新增案件编号规则
|
||||
* @param caseNumRule
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/insertCaseNumRule")
|
||||
public AjaxResult insertCaseNumRule(@RequestBody CaseNumRule caseNumRule){
|
||||
caseNumRule.setCreateBy(getUsername());
|
||||
return caseNumRuleService.insertCaseNumRule(caseNumRule);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 修改案件编号规则
|
||||
* @param caseNumRule
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/updateCaseNumRule")
|
||||
public AjaxResult updateCaseNumRule(@RequestBody CaseNumRule caseNumRule){
|
||||
return caseNumRuleService.updateCaseNumRule(caseNumRule);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除案件编号规则
|
||||
* @param caseNumRule
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/deleteCaseNumRule")
|
||||
public AjaxResult deleteCaseNumRule(@RequestBody CaseNumRule caseNumRule){
|
||||
return caseNumRuleService.deleteCaseNumRule(caseNumRule);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询案件编号规则
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(CaseNumRule caseNumRule) {
|
||||
startPage();
|
||||
List<CaseNumRule> list = caseNumRuleService.selectCaseNumRule(caseNumRule);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
+72
-3
@@ -1,13 +1,20 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.wisdomarbitrate.domain.BatchCaseApplication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.dto.CaseConfirmPayDTO;
|
||||
import com.ruoyi.wisdomarbitrate.service.ICasePaymentService;
|
||||
import com.ruoyi.wisdomarbitrate.domain.dto.CasePayDTO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 缴费支付
|
||||
*/
|
||||
@@ -24,18 +31,80 @@ public class CasePaymentController {
|
||||
* @param casePayDTO 缴费传入参数
|
||||
* @return 统一响应结果
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:pay')")
|
||||
@PostMapping("/casePay")
|
||||
public AjaxResult casePay(@Validated @RequestBody CasePayDTO casePayDTO) {
|
||||
return paymentService.casePay(casePayDTO);
|
||||
}
|
||||
/**
|
||||
* 确认缴费
|
||||
* @param payDTO 缴费传入参数
|
||||
* @return 统一响应结果
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('caseManagement:list:pay')")
|
||||
@PostMapping("/confirmPay")
|
||||
public AjaxResult confirmPay(@Validated @RequestBody CaseConfirmPayDTO payDTO) {
|
||||
return paymentService.confirmPay(payDTO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量缴费
|
||||
* @param casePayDTO 缴费传入参数
|
||||
* @return 统一响应结果
|
||||
*/
|
||||
@PostMapping("/casePayBatch")
|
||||
public AjaxResult casePayBatch(@Validated @RequestBody CasePayDTO casePayDTO) {
|
||||
return paymentService.casePayBatch(casePayDTO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量缴费
|
||||
* @param payDTO 缴费传入参数
|
||||
* @return 统一响应结果
|
||||
*/
|
||||
@PostMapping("/confirmPayBatch")
|
||||
public AjaxResult confirmPayBatch(@Validated @RequestBody CasePayDTO payDTO) {
|
||||
return paymentService.confirmPayBatch(payDTO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 缴费确认
|
||||
* @param caseApplication
|
||||
* @param batchCaseApplication
|
||||
* @return
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('paymentManagement:list:payconfirm')")
|
||||
@PutMapping("/confirm")
|
||||
public AjaxResult confirmPayment(@Validated @RequestBody CaseApplication caseApplication) {
|
||||
return paymentService.confirmPayment(caseApplication);
|
||||
public AjaxResult confirmPayment(@Validated @RequestBody BatchCaseApplication batchCaseApplication) {
|
||||
if(CollectionUtil.isEmpty(batchCaseApplication.getIds()) || batchCaseApplication.getAgreeOrNotCheck()==null){
|
||||
return AjaxResult.error("参数校验失败");
|
||||
}
|
||||
return paymentService.confirmPayment(batchCaseApplication);
|
||||
}
|
||||
/**
|
||||
* 缴费列表查询
|
||||
* @param casePayDTO
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public AjaxResult casePayList(CasePayDTO casePayDTO) {
|
||||
return paymentService.casePayList(casePayDTO);
|
||||
}
|
||||
|
||||
@PostMapping("/listBatch")
|
||||
public AjaxResult casePayListBatch(@Validated @RequestBody CasePayDTO casePayDTO) {
|
||||
return paymentService.casePayListBatch(casePayDTO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量缴费确认
|
||||
* @param batchCaseApplication
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/confirmBatch")
|
||||
public AjaxResult confirmPaymentBatch(@Validated @RequestBody BatchCaseApplication batchCaseApplication) {
|
||||
if(StringUtils.isEmpty(batchCaseApplication.getBatchNumber())){
|
||||
return AjaxResult.error("参数校验失败");
|
||||
}
|
||||
return paymentService.confirmPaymentBatch(batchCaseApplication.getBatchNumber());
|
||||
}
|
||||
}
|
||||
|
||||
+237
@@ -0,0 +1,237 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.exception.EsignDemoException;
|
||||
import com.ruoyi.wisdomarbitrate.domain.*;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.SealListVO;
|
||||
import com.ruoyi.wisdomarbitrate.service.IDeptIdentifyService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/deptIdentify")
|
||||
public class DeptIdentifyController extends BaseController {
|
||||
@Autowired
|
||||
private IDeptIdentifyService deptIdentifyService;
|
||||
|
||||
/**
|
||||
* 新增机构
|
||||
* @param deptIdentify
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/insert")
|
||||
public AjaxResult insertDeptIdentify(@RequestBody DeptIdentify deptIdentify){
|
||||
return deptIdentifyService.insertDeptIdentify(deptIdentify);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除机构
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@DeleteMapping("/delete")
|
||||
public AjaxResult deleteDeptIdentify(Long id){
|
||||
return deptIdentifyService.deleteDeptIdentify(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改机构信息
|
||||
* @param deptIdentify
|
||||
* @return
|
||||
*/
|
||||
@PutMapping("/update")
|
||||
public AjaxResult updateDeptIdentify(@RequestBody DeptIdentify deptIdentify){
|
||||
return deptIdentifyService.updateDeptIdentify(deptIdentify);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询机构信息
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(DeptIdentify deptIdentify) {
|
||||
startPage();
|
||||
List<DeptIdentify> list = deptIdentifyService.selectDeptIdentify(deptIdentify);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询机构认证链接
|
||||
*/
|
||||
@PostMapping("/selectDeptIndefiUrl")
|
||||
public AjaxResult selectDeptIndefiUrl(@Validated @RequestBody DeptIdentify deptIdentify) throws EsignDemoException {
|
||||
DeptIdentify deptIdentifyselect = deptIdentifyService.selectDeptIndefiUrl(deptIdentify);
|
||||
return success(deptIdentifyselect);
|
||||
}
|
||||
|
||||
/**
|
||||
* 机构启用/禁用
|
||||
*/
|
||||
@PostMapping("/enableDept")
|
||||
public AjaxResult enableDept(@Validated @RequestBody DeptIdentify deptIdentify) {
|
||||
return deptIdentifyService.enableDept(deptIdentify);
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传自定义公章
|
||||
*
|
||||
* @param
|
||||
* @param file
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/sealUpload")
|
||||
public AjaxResult sealUpload(Long id, String sealName , @RequestParam("file") MultipartFile file) {
|
||||
return deptIdentifyService.sealUpload(id, sealName ,file);
|
||||
}
|
||||
|
||||
/**
|
||||
* 接收E签宝回调通知
|
||||
* @param body
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/notify")
|
||||
public AjaxResult receiveNotify(String body) {
|
||||
return deptIdentifyService.receiveNotify(body);
|
||||
}
|
||||
|
||||
/**
|
||||
* 公章列表查询
|
||||
* @param deptIdentify
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/sealList")
|
||||
public TableDataInfo getSealList( DeptIdentify deptIdentify ){
|
||||
startPage();
|
||||
List<SealManage> sealList = deptIdentifyService.getSealList(deptIdentify);
|
||||
return getDataTable(sealList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 印章启用或者禁用
|
||||
* @param sealManage
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/updateSealLockStatus")
|
||||
public AjaxResult updateSealLockStatus(@Validated @RequestBody SealManage sealManage){
|
||||
if(sealManage.getId()==null ||sealManage.getIsUse()==null){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
return deptIdentifyService.updateSealLockStatus(sealManage);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增模板
|
||||
* @param templateManage
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/insertTemplate")
|
||||
public AjaxResult insertTemplate(TemplateManage templateManage,@RequestParam("file") MultipartFile file){
|
||||
return deptIdentifyService.insertTemplate(templateManage,file);
|
||||
}
|
||||
/**
|
||||
* 修改模板
|
||||
* @param templateManage
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/updateTemplate")
|
||||
public AjaxResult updateTemplate(TemplateManage templateManage,@RequestParam(value = "file", required = false) MultipartFile file){
|
||||
return deptIdentifyService.updateTemplate(templateManage,file);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除模板
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@DeleteMapping("/deleteTemplate")
|
||||
public AjaxResult deleteTemplate(Long id){
|
||||
return deptIdentifyService.deleteTemplate(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据机构id查询模板
|
||||
* @param deptIdentify
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getTemplate")
|
||||
public TableDataInfo getTemplateList( DeptIdentify deptIdentify){
|
||||
startPage();
|
||||
List<TemplateManage> sealList = deptIdentifyService.getTemplateList(deptIdentify);
|
||||
return getDataTable(sealList);
|
||||
}
|
||||
/**
|
||||
* 根据部门id查询岗位用户信息
|
||||
*/
|
||||
@GetMapping("selectPostUserByDeptId")
|
||||
public AjaxResult selectPostUserByDeptId(DeptIdentify deptIdentify){
|
||||
return AjaxResult.success(deptIdentifyService.selectPostUserByDeptId(deptIdentify));
|
||||
}
|
||||
/**
|
||||
* 给机构绑定经办人
|
||||
*/
|
||||
@GetMapping("bindHandler")
|
||||
public AjaxResult bindHandler(DeptIdentify deptIdentify){
|
||||
return deptIdentifyService.bindHandler(deptIdentify);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据模板id查询抓取规则
|
||||
* @param templateManage
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/getFatchRuleByTemplateid")
|
||||
public AjaxResult getFatchRuleByTemplateid(@RequestBody TemplateManage templateManage){
|
||||
List<FatchRule> fatchRuleList = deptIdentifyService.getFatchRuleByTemplateid(templateManage);
|
||||
return AjaxResult.success(fatchRuleList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存抓取规则
|
||||
* @param templateManage
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/saveFatchRules")
|
||||
public AjaxResult saveFatchRules(@RequestBody TemplateManage templateManage){
|
||||
return deptIdentifyService.saveFatchRules(templateManage);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询column和注释
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/selectColumnandComment")
|
||||
public AjaxResult selectColumnandComment(){
|
||||
List<FatchRule> fatchRuleList = deptIdentifyService.selectColumnandComment();
|
||||
return AjaxResult.success(fatchRuleList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询column
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/selectColumnbycomment")
|
||||
public AjaxResult selectColumnbycomment(@RequestBody FatchRule fatchRule){
|
||||
FatchRule fatchRulesel = deptIdentifyService.selectColumnbycomment(fatchRule);
|
||||
return AjaxResult.success(fatchRulesel);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据模板id查询模板字段列表
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/getTemplateInfoById")
|
||||
public AjaxResult getTemplateInfoById(@RequestParam("id") Long id){
|
||||
TemplateManage templateManage = new TemplateManage();
|
||||
templateManage.setId(id);
|
||||
List<FatchRule> fatchRuleList = deptIdentifyService.getTemplateInfoById(templateManage);
|
||||
return AjaxResult.success(fatchRuleList);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+13
-23
@@ -1,8 +1,9 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.ruoyi.common.annotation.Anonymous;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.IdentityAuthentication;
|
||||
import com.ruoyi.wisdomarbitrate.service.IdentityAuthenticationService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -14,40 +15,29 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/identityAuthentication")
|
||||
public class IdentityAuthenticationController extends BaseController {
|
||||
public class IdentityAuthenticationController extends BaseController {
|
||||
@Autowired
|
||||
private IdentityAuthenticationService identityAuthenticationService;
|
||||
|
||||
/**
|
||||
* 查询身份认证EIDtoken
|
||||
* 获取EIDtoken
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/selectIdentityAuthenticaEIDtoken")
|
||||
public AjaxResult selectIdentityAuthenticaEIDtoken()
|
||||
{
|
||||
IdentityAuthentication ientityAuthentication = identityAuthenticationService.selectIdentityAuthenticaEIDtoken();
|
||||
return success(ientityAuthentication);
|
||||
public AjaxResult selectIdentityAuthenticaEIDtoken() {
|
||||
JSONObject tokenResult = identityAuthenticationService.selectIdentityAuthenticaEIDtoken();
|
||||
return success(tokenResult);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询身份认证结果
|
||||
* 小程序人脸核身后查询身份认证结果
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/selectIdentityAuthenticaRespon")
|
||||
public AjaxResult selectIdentityAuthenticaRespon(@Validated @RequestBody IdentityAuthentication ientityAuthentication)
|
||||
{
|
||||
String username = this.getUsername();
|
||||
Long userId = this.getUserId();
|
||||
ientityAuthentication.setUserId(userId);
|
||||
ientityAuthentication.setUserName(username);
|
||||
IdentityAuthentication ientityAuthenticationRes = identityAuthenticationService.selectIdentityAuthenticaRespon( ientityAuthentication);
|
||||
return success(ientityAuthenticationRes);
|
||||
public AjaxResult selectIdentityAuthenticaRespon(@Validated @RequestBody IdentityAuthentication ientityAuthentication) {
|
||||
AjaxResult checkResult = identityAuthenticationService.selectIdentityAuthenticaRespon(ientityAuthentication);
|
||||
return checkResult;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import com.ruoyi.common.annotation.Anonymous;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseLogRecord;
|
||||
import com.ruoyi.wisdomarbitrate.service.MsSignSealService;
|
||||
import com.ruoyi.wisdomarbitrate.utils.SignVerifyUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @Classname MsSignSealController
|
||||
* @Description TODO
|
||||
* @Version 1.0.0
|
||||
* @Date 2024/5/10 15:07
|
||||
* @Created wangqiong
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/mssignSeal")
|
||||
public class MsSignSealController extends BaseController {
|
||||
@Autowired
|
||||
private MsSignSealService msSignSealService;
|
||||
/**
|
||||
* 签名用印回调
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/signSeaalCaseApplicaCallback")
|
||||
public AjaxResult signSeaalCaseApplicaCallback() throws Exception {
|
||||
boolean checkResult= SignVerifyUtils.checkSignuter();
|
||||
if(checkResult){
|
||||
String reqbodystr =SignVerifyUtils.getRequestBody();
|
||||
return msSignSealService.signSeaalCaseApplicaCallback(reqbodystr);
|
||||
}else {
|
||||
return AjaxResult.error("error");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 印章审核回调
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/sealCheckCallback")
|
||||
public AjaxResult sealCheckCallback() throws Exception {
|
||||
boolean checkResult= SignVerifyUtils.checkSignuter();
|
||||
if(checkResult){
|
||||
String reqbodystr =SignVerifyUtils.getRequestBody();
|
||||
return msSignSealService.sealCheckCallback(reqbodystr);
|
||||
}else {
|
||||
return AjaxResult.error("error");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.wisdomarbitrate.domain.DeptIdentify;
|
||||
import com.ruoyi.wisdomarbitrate.domain.TemplateManual;
|
||||
import com.ruoyi.wisdomarbitrate.service.ITemplateService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/template")
|
||||
public class TemplateController extends BaseController {
|
||||
@Autowired
|
||||
private ITemplateService templateService;
|
||||
/**
|
||||
* 新增模板
|
||||
* @param templateManual
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/insert")
|
||||
public AjaxResult insertTemplate(@RequestBody TemplateManual templateManual){
|
||||
return templateService.insertTemplate(templateManual);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除模板
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@DeleteMapping("/delete")
|
||||
public AjaxResult deleteTemplate(Long id){
|
||||
return templateService.deleteTemplate(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改模板
|
||||
* @param templateManual
|
||||
* @return
|
||||
*/
|
||||
@PutMapping("/update")
|
||||
public AjaxResult updateTemplate(@RequestBody TemplateManual templateManual){
|
||||
return templateService.updateTemplate(templateManual);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询模板
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list( TemplateManual templateManual) {
|
||||
startPage();
|
||||
List<TemplateManual> list = templateService.selectTemplate(templateManual);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
}
|
||||
+282
@@ -0,0 +1,282 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.ruoyi.common.annotation.Anonymous;
|
||||
import com.ruoyi.common.config.RuoYiConfig;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.common.utils.file.FileUploadUtils;
|
||||
import com.ruoyi.common.utils.file.FileUtils;
|
||||
import com.ruoyi.framework.config.ServerConfig;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseAttach;
|
||||
import com.ruoyi.wisdomarbitrate.domain.IdentityAuthentication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.ReservedConferenceVO;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.SendRoomNoMessageVO;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.WeChatUserVO;
|
||||
import com.ruoyi.wisdomarbitrate.mapper.CaseAttachMapper;
|
||||
import com.ruoyi.wisdomarbitrate.service.ICaseApplicationService;
|
||||
import com.ruoyi.wisdomarbitrate.service.VideoService;
|
||||
import com.ruoyi.wisdomarbitrate.service.WeChatUserService;
|
||||
import com.tencentcloudapi.common.Credential;
|
||||
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
|
||||
import com.tencentcloudapi.common.profile.ClientProfile;
|
||||
import com.tencentcloudapi.common.profile.HttpProfile;
|
||||
import com.tencentcloudapi.trtc.v20190722.TrtcClient;
|
||||
import com.tencentcloudapi.trtc.v20190722.models.*;
|
||||
import com.tencentyun.TLSSigAPIv2;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.validation.Valid;
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.google.common.io.Files.getFileExtension;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description trtc实时音视频
|
||||
* @date 2023-10-26 11:25
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/video")
|
||||
public class VideoController extends BaseController {
|
||||
@Autowired
|
||||
private VideoService videoService;
|
||||
@Autowired
|
||||
private ServerConfig serverConfig;
|
||||
@Autowired
|
||||
private CaseAttachMapper caseAttachMapper;
|
||||
@Autowired
|
||||
private ICaseApplicationService caseApplicationService;
|
||||
/**
|
||||
* 从腾讯云下载文件到本地
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/videoRollBack")
|
||||
public AjaxResult videoRollBack( @RequestBody String body, HttpServletRequest request) {
|
||||
videoService.videoRollBack(body,request);
|
||||
return success();
|
||||
}
|
||||
/**
|
||||
* 根据房间号绑定案件ID
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/bindCaseId")
|
||||
public AjaxResult bindCaseId(@Valid @RequestBody SendRoomNoMessageVO vo) {
|
||||
|
||||
return videoService.bindCaseId(vo.getId(),vo.getRoomNo());
|
||||
}
|
||||
/**
|
||||
* 根据案件ID查询视频
|
||||
* @param caseId 案件id
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/videoList")
|
||||
public AjaxResult videoList( @RequestParam Long caseId) {
|
||||
|
||||
return videoService.videoList(caseId);
|
||||
}
|
||||
/**
|
||||
* 开启腾讯云录制
|
||||
* @param vo
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/openCloudRecording")
|
||||
private AjaxResult openCloudRecording( @RequestBody ReservedConferenceVO vo) {
|
||||
if(vo.getCaseId()==null || vo.getRoomId()==null){
|
||||
return AjaxResult.error("参数错误");
|
||||
}
|
||||
return videoService.openCloudRecording(vo.getCaseId(),vo.getRoomId());
|
||||
}
|
||||
/**
|
||||
* 关闭腾讯云录制
|
||||
* @param taskId 任务ID
|
||||
* @return
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/closeDeleteCloudRecording")
|
||||
public AjaxResult closeDeleteCloudRecording(@RequestParam("taskId") String taskId){
|
||||
return videoService.closeDeleteCloudRecording(taskId);
|
||||
}
|
||||
/**
|
||||
* 解散房间
|
||||
* @param reservedConferenceVO
|
||||
* @return
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/dissolveRoom")
|
||||
public AjaxResult dissolveRoom( @RequestBody ReservedConferenceVO reservedConferenceVO) {
|
||||
if( reservedConferenceVO.getRoomId()==null){
|
||||
return error("参数校验失败");
|
||||
}
|
||||
|
||||
return videoService.dissolveRoom(reservedConferenceVO.getRoomId());
|
||||
}
|
||||
/**
|
||||
* 根据userId查询该用户是否是秘书
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
@Anonymous
|
||||
@GetMapping("secretaryRoleByUserId")
|
||||
public AjaxResult secretaryRoleByUserId( @RequestParam(value = "userId",required = true) Long userId,@RequestParam(value = "caseId",required = true) Long caseId) {
|
||||
return videoService.secretaryRoleByUserId(userId,caseId);
|
||||
}
|
||||
/**
|
||||
* 根据html字符串转pdf并和案件关联
|
||||
* @param reservedConferenceVO
|
||||
* @return
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("htmlToPDF")
|
||||
public AjaxResult secretaryRoleByUserId( @RequestBody ReservedConferenceVO reservedConferenceVO) {
|
||||
if( reservedConferenceVO.getCaseId()==null || StrUtil.isEmpty(reservedConferenceVO.getHtmlContent())){
|
||||
return success();
|
||||
}
|
||||
|
||||
return videoService.htmlToPDF(reservedConferenceVO);
|
||||
}
|
||||
/**
|
||||
* 根据案件id和类型查询附件
|
||||
* @param caseAppliId
|
||||
* @param annexType
|
||||
* @return
|
||||
*/
|
||||
|
||||
@GetMapping("attachListByCaseId")
|
||||
public AjaxResult attachListByCaseId( @RequestParam("caseAppliId") Long caseAppliId,@RequestParam("annexType") Integer annexType) {
|
||||
|
||||
return videoService.attachListByCaseId(caseAppliId,annexType);
|
||||
}
|
||||
/**
|
||||
* 根据案件id查询申请人/被申请人会议上传附件按钮权限
|
||||
* @param caseId
|
||||
* @return
|
||||
*/
|
||||
@Anonymous
|
||||
@GetMapping("selectRoleMenuByCaseId")
|
||||
public AjaxResult selectRoleMenuByCaseId( @RequestParam(value = "caseId",required = true) Long caseId) {
|
||||
|
||||
return videoService.selectRoleMenuByCaseId(caseId);
|
||||
}
|
||||
/**
|
||||
* 通用上传请求(单个)
|
||||
* param officeFlag: 是否上传到onlyoffice,0-否,1-是
|
||||
* param isMediaBook: 是否上仲裁书,1-是,其余为否
|
||||
*/
|
||||
@PostMapping("/upload")
|
||||
public AjaxResult uploadFile(@RequestParam("file") MultipartFile file, @RequestParam(value = "isMediaBook",required = false) Integer isMediaBook, @RequestParam("annexType") Integer annexType, @RequestParam(value = "officeFlag", required = false) Integer officeFlag,@RequestParam(value = "caseId",required = false) Long caseId) throws Exception
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
// 上传文件路径
|
||||
String filePath = RuoYiConfig.getUploadPath();
|
||||
String name=file.getOriginalFilename();
|
||||
// 上传并返回新文件名称
|
||||
String fileName = FileUploadUtils.upload(filePath, file);
|
||||
String suffix = getFileExtension(fileName);
|
||||
if(StrUtil.isNotEmpty(suffix)&& suffix.contains("doc")){
|
||||
// 上传到onlyoffice
|
||||
officeFlag=1;
|
||||
}
|
||||
String url = serverConfig.getUrl() + fileName;
|
||||
if(officeFlag != null && officeFlag == 1){
|
||||
// officeFlag,fileName为annexPath
|
||||
JSONArray jsonArray = caseApplicationService.uploadOnlyOffice(fileName,caseId);
|
||||
if(jsonArray!=null && jsonArray.size() > 0) {
|
||||
// 先删除之前的裁决书附件
|
||||
if(Objects.equals(annexType,3) && caseId!=null) {
|
||||
caseAttachMapper.deleteCaseAttachByCasedIdAndType(caseId, annexType);
|
||||
}
|
||||
CaseAttach caseAttach=null;
|
||||
for (Object obj : jsonArray) {
|
||||
JSONObject jsonObject = (JSONObject) obj;
|
||||
String path = jsonObject.get("filePath")!=null?jsonObject.getString("filePath"):"";
|
||||
path=path.replace("/home/ruoyi/uploadPath/","profile/");
|
||||
caseAttach = CaseAttach.builder()
|
||||
.caseAppliId(caseId)
|
||||
// .annexName(jsonObject.get("fileName")!=null?jsonObject.getString("fileName"):"")
|
||||
.annexName(name)
|
||||
.annexType(annexType)
|
||||
.onlyOfficeFileId(jsonObject.getString("fileId"))
|
||||
.annexPath(path)
|
||||
.build();
|
||||
// if(jsonObject.get("filePath")!=null){
|
||||
// String officePath = jsonObject.getString("filePath");
|
||||
// String replace = officePath.replace("/home/ruoyi/uploadPath/", "/profile/");
|
||||
// caseAttach.setAnnexPath(replace);
|
||||
//
|
||||
// }
|
||||
caseAttachMapper.save(caseAttach);
|
||||
}
|
||||
if(caseAttach==null){
|
||||
return AjaxResult.error("上传失败");
|
||||
}
|
||||
AjaxResult ajax = AjaxResult.success();
|
||||
ajax.put("annexId", caseAttach.getAnnexId());
|
||||
ajax.put("annexType", annexType);
|
||||
// ajax.put("url", url);
|
||||
ajax.put("fileName", name);
|
||||
ajax.put("newFileName", FileUtils.getName(fileName));
|
||||
ajax.put("originalFilename", file.getOriginalFilename());
|
||||
return ajax;
|
||||
}else {
|
||||
return AjaxResult.error("上传失败");
|
||||
}
|
||||
}else {
|
||||
// 如果是调解书并且是pdf,则删除之前的在新增
|
||||
if(annexType!=null && annexType.equals(3) ){
|
||||
// if(StrUtil.isNotEmpty(suffix)&&!suffix.equals("pdf")){
|
||||
// return AjaxResult.error("请上传pdf格式文件");
|
||||
// }
|
||||
// annexType=AnnexTypeEnum.MEDIATE_BOOK_PDF.getCode();
|
||||
// 先删除之前的附件
|
||||
if(caseId!=null) {
|
||||
caseAttachMapper.deleteCaseAttachByCasedIdAndType(caseId, annexType);
|
||||
}
|
||||
}
|
||||
Long annexId = saveCaseAttach(annexType, name, file.getOriginalFilename(), caseId);
|
||||
|
||||
AjaxResult ajax = AjaxResult.success();
|
||||
ajax.put("annexId", annexId);
|
||||
ajax.put("annexType", annexType);
|
||||
ajax.put("url", url);
|
||||
ajax.put("fileName", name);
|
||||
ajax.put("newFileName", FileUtils.getName(fileName));
|
||||
ajax.put("originalFilename", file.getOriginalFilename());
|
||||
return ajax;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
private Long saveCaseAttach(Integer annexType, String path, String originalFilename,Long caseId) {
|
||||
CaseAttach caseAttach = CaseAttach.builder()
|
||||
.annexName(originalFilename)
|
||||
.caseAppliId(caseId)
|
||||
.annexPath(path)
|
||||
.annexType(annexType)
|
||||
.userId(SecurityUtils.getUserId())
|
||||
.userName(SecurityUtils.getUsername())
|
||||
.build();
|
||||
|
||||
caseAttachMapper.save(caseAttach);
|
||||
return caseAttach.getAnnexId();
|
||||
}
|
||||
}
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.common.annotation.Anonymous;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.utils.http.HttpUtils;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.IdentityAuthentication;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.WeChatUserVO;
|
||||
import com.ruoyi.wisdomarbitrate.service.WeChatUserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description 微信小程序用户注册登录
|
||||
* @date 2023-10-16 11:25
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/weChatUser")
|
||||
public class WeChatUserController extends BaseController {
|
||||
@Autowired
|
||||
private WeChatUserService weChatUserService;
|
||||
|
||||
/**
|
||||
* 小程序端获取手机验证码
|
||||
* @param userVO
|
||||
* @return
|
||||
*/
|
||||
@Anonymous
|
||||
@GetMapping("/sendCode")
|
||||
public AjaxResult sendCode( WeChatUserVO userVO)
|
||||
{
|
||||
if(StrUtil.isEmpty(userVO.getPhone())){
|
||||
return warn("手机号不能为空");
|
||||
}
|
||||
return weChatUserService.sendCode(userVO);
|
||||
}
|
||||
/**
|
||||
* 小程序注册
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/registerUser")
|
||||
public AjaxResult registerUser( @RequestBody IdentityAuthentication ientityAuthentication) {
|
||||
if(ientityAuthentication.getId()==null
|
||||
|| StrUtil.isEmpty(ientityAuthentication.getName())
|
||||
|| StrUtil.isEmpty(ientityAuthentication.getIdentityNo())
|
||||
|| StrUtil.isEmpty(ientityAuthentication.getPhone())
|
||||
|| StrUtil.isEmpty(ientityAuthentication.getUserName())
|
||||
|| StrUtil.isEmpty(ientityAuthentication.getEmail())
|
||||
|| StrUtil.isEmpty(ientityAuthentication.getVerifyCode())
|
||||
){
|
||||
return warn("参数校验失败");
|
||||
}
|
||||
logger.info("调用小程序注册==="+ientityAuthentication.toString());
|
||||
return weChatUserService.registerUser(ientityAuthentication);
|
||||
}
|
||||
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate.sendrecord;
|
||||
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.wisdomarbitrate.domain.dto.sendrecord.SendMailRecord;
|
||||
import com.ruoyi.wisdomarbitrate.service.sendrecord.ISendMailRecordService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/sendMailRecord")
|
||||
public class SendMailRecordController extends BaseController {
|
||||
@Autowired
|
||||
private ISendMailRecordService sendMailRecordService;
|
||||
|
||||
/**
|
||||
* 查询发送邮件记录列表
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(SendMailRecord sendMailRecord) {
|
||||
startPage();
|
||||
List<SendMailRecord> list = sendMailRecordService.selectSendMailRecordList(sendMailRecord);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑邮件记录
|
||||
*/
|
||||
@PostMapping("/update")
|
||||
public AjaxResult update(@RequestBody SendMailRecord sendMailRecord) {
|
||||
return sendMailRecordService.updateSendMailRecord(sendMailRecord);
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新发送邮件记录
|
||||
*/
|
||||
@PostMapping("/reSendMailRecord")
|
||||
public AjaxResult reSendMailRecord(@RequestBody SendMailRecord sendMailRecord) {
|
||||
Boolean aBoolean = sendMailRecordService.reSendMailRecord(sendMailRecord);
|
||||
if (aBoolean) {
|
||||
return AjaxResult.success("发送成功");
|
||||
} else {
|
||||
return AjaxResult.error("发送失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
+143
@@ -0,0 +1,143 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate.sendrecord;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.ruoyi.common.annotation.Anonymous;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.framework.web.service.TokenService;
|
||||
|
||||
import com.ruoyi.system.mapper.SysUserMapper;
|
||||
|
||||
import com.ruoyi.wisdomarbitrate.domain.dto.sendrecord.SmsSendRecord;
|
||||
import com.ruoyi.wisdomarbitrate.domain.entity.sms.MsSmsSendRecordParam;
|
||||
import com.ruoyi.wisdomarbitrate.domain.entity.sms.MsSmsTemplateParam;
|
||||
import com.ruoyi.wisdomarbitrate.domain.shortmessage.MeetingInfo;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.shortmessage.MeetingInfoVO;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.shortmessage.ReSendMessageVO;
|
||||
import com.ruoyi.wisdomarbitrate.mapper.sendrecord.SmsRecordMapper;
|
||||
import com.ruoyi.wisdomarbitrate.mapper.shortmessage.MeetingInfoMapper;
|
||||
import com.ruoyi.wisdomarbitrate.mapper.sms.MsSmsSendHistoryRecordParamMapper;
|
||||
import com.ruoyi.wisdomarbitrate.mapper.sms.MsSmsSendRecordParamMapper;
|
||||
import com.ruoyi.wisdomarbitrate.service.shortmessage.ShortMessageService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import tk.mybatis.mapper.entity.Example;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/shortMessage")
|
||||
public class ShortMessageController extends BaseController {
|
||||
@Autowired
|
||||
private SmsRecordMapper smsRecordMapper;
|
||||
@Autowired
|
||||
private ShortMessageService shortMessageService;
|
||||
@Autowired
|
||||
MsSmsSendRecordParamMapper recordParamMapper;
|
||||
@Autowired
|
||||
MsSmsSendHistoryRecordParamMapper historyRecordParamMapper;
|
||||
|
||||
/**
|
||||
* 查询短信发送记录
|
||||
*
|
||||
* @param smsSendRecord
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/recordList")
|
||||
public TableDataInfo smsSendRecordList(SmsSendRecord smsSendRecord) {
|
||||
startPage();
|
||||
List<SmsSendRecord> list = shortMessageService.smsSendRecordList(smsSendRecord);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
@Anonymous
|
||||
@PostMapping("/updateSendContent")
|
||||
public AjaxResult update(@RequestBody SmsSendRecord smsSendRecord) {
|
||||
if (smsSendRecord == null || smsSendRecord.getId() == null || CollectionUtil.isEmpty(smsSendRecord.getTemplateParams())) {
|
||||
return AjaxResult.error("参数校验失败");
|
||||
}
|
||||
// 查询当前版本记录
|
||||
SmsSendRecord oldSendRecord = smsRecordMapper.selectById(smsSendRecord.getId());
|
||||
smsSendRecord.setUpdateTime(new Date());
|
||||
// 更新短信内容,先删除短信记录参数表
|
||||
Example recordParamExam = new Example(MsSmsSendRecordParam.class);
|
||||
recordParamExam.createCriteria().andEqualTo("smsRecordId", smsSendRecord.getId());
|
||||
recordParamMapper.deleteByExample(recordParamExam);
|
||||
// 新增短信记录参数表
|
||||
List<MsSmsSendRecordParam> recordParams = new ArrayList<>();
|
||||
for (MsSmsTemplateParam templateParam : smsSendRecord.getTemplateParams()) {
|
||||
MsSmsSendRecordParam recordParam = new MsSmsSendRecordParam();
|
||||
recordParam.setSmsRecordId(smsSendRecord.getId());
|
||||
recordParam.setParamValue(templateParam.getParamValue());
|
||||
recordParams.add(recordParam);
|
||||
}
|
||||
recordParamMapper.batchInsert(recordParams);
|
||||
shortMessageService.insertShortMessageHistoryRecord(oldSendRecord, recordParams);
|
||||
return AjaxResult.success();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新发送短信
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/reSendShortMessage")
|
||||
public AjaxResult reSendShortMessage(@RequestBody ReSendMessageVO reSendMessageVO) {
|
||||
if (reSendMessageVO != null) {
|
||||
AjaxResult result = shortMessageService.reSendShortMessage(reSendMessageVO);
|
||||
return result;
|
||||
}
|
||||
return AjaxResult.error("参数缺失");
|
||||
}
|
||||
|
||||
/**
|
||||
* 短信回调
|
||||
* @param body
|
||||
* @return
|
||||
*/
|
||||
@Anonymous
|
||||
@PostMapping("/smsCallBack")
|
||||
public AjaxResult smsCallBack(@RequestBody String body) {
|
||||
if(body != null){
|
||||
return shortMessageService.smsCallBack(body);
|
||||
}
|
||||
return AjaxResult.error("参数缺失");
|
||||
}
|
||||
|
||||
@Autowired
|
||||
MeetingInfoMapper meetingInfoMapper;
|
||||
@Autowired
|
||||
SysUserMapper sysUserMapper;
|
||||
@Autowired
|
||||
private TokenService tokenService;
|
||||
|
||||
/**
|
||||
* 查询UID好的密钥
|
||||
*/
|
||||
// @Anonymous
|
||||
// @GetMapping("/getMeetingInfo")
|
||||
// public Object getEncryptInfoByUid(@RequestParam(name = "authId", required = true) String authId) {
|
||||
// MeetingInfoVO result = new MeetingInfoVO();
|
||||
// if (authId != null) {
|
||||
// MeetingInfo meetingInfo = meetingInfoMapper.selectByPrimaryKey(authId);
|
||||
// if (meetingInfo != null && meetingInfo.getUserId() != null) {
|
||||
// BeanUtils.copyProperties(meetingInfo, result);
|
||||
// SysUser sysUser = sysUserMapper.selectUserById(meetingInfo.getUserId());
|
||||
// LoginUser loginUser = new LoginUser();
|
||||
// loginUser.setUserId(sysUser.getUserId());
|
||||
// loginUser.setUser(sysUser);
|
||||
// String token = tokenService.createVideoToken(loginUser, 120);
|
||||
//// String createToken = createToken(claims);
|
||||
// result.setToken(token);
|
||||
// }
|
||||
// return result;
|
||||
// }
|
||||
// return AjaxResult.error("查询失败");
|
||||
// }
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
package com.ruoyi.web.controller.wisdomarbitrate.sms;
|
||||
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.wisdomarbitrate.domain.entity.sms.MsSmsTemplate;
|
||||
import com.ruoyi.wisdomarbitrate.service.sms.SMSTemplateService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 短信模板控制器
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/smsTemplate")
|
||||
public class SMSTemplateController extends BaseController {
|
||||
@Autowired
|
||||
private SMSTemplateService templateService;
|
||||
|
||||
/**
|
||||
* 查询
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/page")
|
||||
public TableDataInfo page( ){
|
||||
startPage();
|
||||
List<MsSmsTemplate> list = templateService.page();
|
||||
return getDataTable(list);
|
||||
}
|
||||
/**
|
||||
* 新增或者修改
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/insert")
|
||||
public AjaxResult insert(@RequestBody MsSmsTemplate template){
|
||||
return templateService.insert(template);
|
||||
}
|
||||
/**
|
||||
* 删除
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/delete")
|
||||
public AjaxResult delete(@RequestBody MsSmsTemplate template){
|
||||
if(template.getId()==null){
|
||||
return AjaxResult.warn("id不能为空");
|
||||
}
|
||||
return templateService.delete(template.getId());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,9 +6,10 @@ spring:
|
||||
druid:
|
||||
# 主库数据源
|
||||
master:
|
||||
url: jdbc:mysql://121.40.189.20:3306/arbitrate?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai&useSSL=false
|
||||
url: jdbc:mysql://121.40.189.20:3306/test_smart_arbitration?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=true&serverTimezone=Asia/Shanghai&useSSL=false
|
||||
# url: jdbc:mysql://121.40.189.20:3306/smart_arbitration?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=true&serverTimezone=Asia/Shanghai&useSSL=false
|
||||
username: root
|
||||
password: root123456
|
||||
password: YMzc157#
|
||||
# 从库数据源
|
||||
slave:
|
||||
# 从数据源开关/默认关闭
|
||||
|
||||
@@ -17,8 +17,8 @@ ruoyi:
|
||||
|
||||
# 开发环境配置
|
||||
server:
|
||||
# 服务器的HTTP端口,默认为8080
|
||||
port: 9001
|
||||
# 服务器的HTTP端口,默认为8001,正式9001
|
||||
port: 8001
|
||||
servlet:
|
||||
# 应用的访问路径
|
||||
context-path: /
|
||||
@@ -58,9 +58,9 @@ spring:
|
||||
servlet:
|
||||
multipart:
|
||||
# 单个文件大小
|
||||
max-file-size: 10MB
|
||||
max-file-size: 1000MB
|
||||
# 设置总上传的文件大小
|
||||
max-request-size: 20MB
|
||||
max-request-size: 10000MB
|
||||
# 服务模块
|
||||
devtools:
|
||||
restart:
|
||||
@@ -72,8 +72,8 @@ spring:
|
||||
host: 121.40.189.20
|
||||
# 端口,默认为6379
|
||||
port: 6389
|
||||
# 数据库索引
|
||||
database: 0
|
||||
# 数据库索引,2-正式,3-测试
|
||||
database: 3
|
||||
# 密码
|
||||
password:
|
||||
# 连接超时时间
|
||||
@@ -94,14 +94,20 @@ spring:
|
||||
mail:
|
||||
host: smtp.163.com
|
||||
port: 25
|
||||
username: hjbjava@163.com
|
||||
password: BSRSSEPJWGNNVYYL
|
||||
username: lmj1549843951@163.com
|
||||
password: JGIOQVFCLAZKXRKO
|
||||
default-encoding: UTF-8
|
||||
properties:
|
||||
mail:
|
||||
smtp:
|
||||
connectiontimeout: 5000
|
||||
timeout: 5000
|
||||
writetimeout: 5000
|
||||
socketFactoryClass: javax.net.ssl.SSLSocketFactory
|
||||
socketFactoryFallback: false
|
||||
socketFactoryPort: 465
|
||||
debug: false
|
||||
protocol: smtp
|
||||
#上上签配置参数
|
||||
ssq:
|
||||
developerId: 1695872832013855470
|
||||
@@ -115,7 +121,7 @@ token:
|
||||
# 令牌密钥
|
||||
secret: abcdefghijklmnopqrstuvwxyz
|
||||
# 令牌有效期(默认30分钟)
|
||||
expireTime: 30
|
||||
expireTime: 1200
|
||||
|
||||
# MyBatis配置
|
||||
mybatis:
|
||||
@@ -166,4 +172,34 @@ identityAuthentication:
|
||||
credentialSecretId: AKID3xfHgroY4MQHvLXUXMwIQL1UjmbBX1Tv
|
||||
credentialSecretKey: INDrIXcT8YmomZBcsy0oNirnU0LTN4X7
|
||||
merchantId: 0NSJ2309281116194321
|
||||
privateKeyHexDecodeinfo: MHcCAQEEIEw7MRv3uYlpmU6Fko4GlXSh6Vd38k0cUQZ5zDwvRg+voAoGCCqBHM9VAYItoUQDQgAEUdxIAWhGg4LUXf1GoPdb8XMbGudpexPQCuaaRi9BCnNbpaF1kcwRhhsBKvop9ZmW/nOz4wQ1r/iIEOrc9qCXgQ==
|
||||
privateKeyHexDecodeinfo: 4c3b311bf7b98969994e85928e069574a1e95777f24d1c510679cc3c2f460faf
|
||||
# 腾讯云即时通信相关配置
|
||||
imConfig:
|
||||
# sdkAppId
|
||||
sdkAppId: 1600011167
|
||||
# 密钥
|
||||
sdkSecretKey: 17d136d9327576a247f991bdfed3a6d14cebc7d540a52245086829c3a1421a86
|
||||
# 腾讯云账户 SecretId
|
||||
secretId: AKID3xfHgroY4MQHvLXUXMwIQL1UjmbBX1Tv
|
||||
# 腾讯云密钥
|
||||
secretKey: INDrIXcT8YmomZBcsy0oNirnU0LTN4X7
|
||||
# onlyOffice系统url配置
|
||||
onlyOfficeConfig:
|
||||
# url: http://172.16.0.254:9090/files/upload
|
||||
url: http://121.40.189.20:9090/files/upload
|
||||
# 调解机构代码配置
|
||||
organizeConfig:
|
||||
# creditCode
|
||||
creditCode: 910000058386410044
|
||||
#jodconverter:
|
||||
# local:
|
||||
# host: 121.40.189.20
|
||||
#暂时关闭预览,启动时会有点慢
|
||||
# enabled: true
|
||||
#设置libreoffice主目录 linux地址如:/usr/lib64/libreoffice
|
||||
# office-home: /usr/lib64/libreoffice/
|
||||
# office-home: D:\app\libreOffice\
|
||||
#开启多个libreoffice进程,每个端口对应一个进程
|
||||
# port-numbers: 8100
|
||||
#libreoffice进程重启前的最大进程数
|
||||
# max-tasks-per-process: 100
|
||||
|
||||
+112
-25
@@ -11,12 +11,76 @@
|
||||
|
||||
<artifactId>ruoyi-common</artifactId>
|
||||
|
||||
|
||||
<description>
|
||||
common通用工具
|
||||
</description>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!--docx文件下载问题-->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- POI依赖,读取.doc型文档-->
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad -->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-scratchpad</artifactId>
|
||||
<version>4.1.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jodconverter</groupId>
|
||||
<artifactId>jodconverter-core</artifactId>
|
||||
<version>4.2.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jodconverter</groupId>
|
||||
<artifactId>jodconverter-local</artifactId>
|
||||
<version>4.2.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jodconverter</groupId>
|
||||
<artifactId>jodconverter-spring-boot-starter</artifactId>
|
||||
<version>4.2.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.artofsolving</groupId>
|
||||
<artifactId>jodconverter</artifactId>
|
||||
<version>2.2.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.openoffice</groupId>
|
||||
<artifactId>jurt</artifactId>
|
||||
<version>3.0.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.openoffice</groupId>
|
||||
<artifactId>ridl</artifactId>
|
||||
<version>3.0.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.openoffice</groupId>
|
||||
<artifactId>juh</artifactId>
|
||||
<version>3.0.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.openoffice</groupId>
|
||||
<artifactId>unoil</artifactId>
|
||||
<version>3.0.1</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
||||
<!-- Spring框架基本的核心工具 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
@@ -52,19 +116,19 @@
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- JSON工具类 -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- 动态数据源 -->
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
|
||||
<version>3.5.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
|
||||
<version>3.5.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 阿里JSON解析器 -->
|
||||
<dependency>
|
||||
@@ -136,27 +200,15 @@
|
||||
<dependency>
|
||||
<groupId>com.tencentcloudapi</groupId>
|
||||
<artifactId>tencentcloud-sdk-java</artifactId>
|
||||
<version>3.1.270</version>
|
||||
<version>3.1.876</version>
|
||||
</dependency>
|
||||
<!--
|
||||
|
||||
<dependency>
|
||||
<groupId>com.tencentcloudapi</groupId>
|
||||
<artifactId>tencentcloud-sdk-java-faceid</artifactId>
|
||||
<version>3.1.871</version>
|
||||
<version>3.1.875</version>
|
||||
</dependency>
|
||||
-->
|
||||
<dependency>
|
||||
<groupId>com.tencentcloudapi</groupId>
|
||||
<artifactId>tencentcloud-sdk-java-faceid</artifactId>
|
||||
<version>LATEST</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tencentcloudapi</groupId>
|
||||
<artifactId>tencentcloud-sdk-java-common</artifactId>
|
||||
<version>LATEST</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!--用户信息解密-->
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-all</artifactId>
|
||||
@@ -176,13 +228,45 @@
|
||||
<version>1.9.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.documents4j</groupId>
|
||||
<artifactId>documents4j-local</artifactId>
|
||||
<version>1.0.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.documents4j</groupId>
|
||||
<artifactId>documents4j-transformer-msoffice-word</artifactId>
|
||||
<version>1.0.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.pdfbox</groupId>
|
||||
<artifactId>pdfbox</artifactId>
|
||||
<version>2.0.27</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>com.itextpdf</groupId>
|
||||
<artifactId>itextpdf</artifactId>
|
||||
<version>5.5.13</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.itextpdf.tool</groupId>
|
||||
<artifactId>xmlworker</artifactId>
|
||||
<version>5.5.13</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- 发送邮件-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-mail</artifactId>
|
||||
<version>3.1.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.activation</groupId>
|
||||
<artifactId>activation</artifactId>
|
||||
@@ -195,7 +279,10 @@
|
||||
<artifactId>mail</artifactId>
|
||||
<version>1.4.7</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.ruoyi.common.annotation;
|
||||
/**
|
||||
* 一个参数、没有返回
|
||||
* @author wangqiong
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface VoidFunction<T> {
|
||||
/**
|
||||
* 有一个参数
|
||||
* @param param
|
||||
*/
|
||||
void apply(T param);
|
||||
}
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package com.ruoyi.wisdomarbitrate.utils;
|
||||
package com.ruoyi.common.config;
|
||||
|
||||
public class EsignApplicaConfig {
|
||||
public class EsignDemoConfig {
|
||||
|
||||
// 应用ID
|
||||
public static final String EsignAppId = "7438987614";
|
||||
@@ -132,4 +132,17 @@ public class RuoYiConfig
|
||||
{
|
||||
return getProfile() + "/upload";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取上传路径
|
||||
*/
|
||||
public static String getVideoUploadPath()
|
||||
{
|
||||
return getProfile() + "/video";
|
||||
}
|
||||
public static String getHtml2PDFPath()
|
||||
{
|
||||
return getProfile() + "/upload/html2PDF";
|
||||
}
|
||||
// https://1304001529.vod-qcloud.com/b78823bbvodcq1304001529/3ce565bf3270835011486046286/f0.mp4
|
||||
}
|
||||
|
||||
@@ -41,4 +41,17 @@ public class CacheConstants
|
||||
* 登录账户密码错误次数 redis key
|
||||
*/
|
||||
public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:";
|
||||
public static final String WE_CHAT_SMS_VERIFY_CODE_KEY="we_chat_sms_verify_code:";
|
||||
/**
|
||||
* 所有用户 redis key
|
||||
*/
|
||||
public static final String USER_KEY = "user_key:";
|
||||
/**
|
||||
* 用户邮箱 redis key
|
||||
*/
|
||||
// public static final String USER_EMAIL_KEY = "user_email_key:";
|
||||
/**
|
||||
* 角色 redis key
|
||||
*/
|
||||
public static final String ROLE_KEY = "role_key:";
|
||||
}
|
||||
|
||||
+29
-18
@@ -4,47 +4,58 @@ package com.ruoyi.common.constant;
|
||||
*
|
||||
*/
|
||||
public class CaseApplicationConstants {
|
||||
/** 立案申请 */
|
||||
/** 申请人/代理人,立案申请 */
|
||||
public static final int CASE_APPLICATION = 0;
|
||||
/** 待立案审查 */
|
||||
/**
|
||||
* 案件新增
|
||||
*/
|
||||
public static final int CASE_INSERT = -2;
|
||||
/** 申请人/代理人,案件修改 */
|
||||
public static final int CASE_EDIT = -1;
|
||||
/** 顾问,待立案审查 */
|
||||
public static final int CASE_CHECK = 1;
|
||||
/** 待缴费 */
|
||||
/** 申请人、代理人,待缴费 */
|
||||
public static final int PENDING_PAYMENT = 2;
|
||||
/** 待缴费确认 */
|
||||
/** 财务,待缴费确认 */
|
||||
public static final int PENDING_PAYMENT_CONFIRM = 3;
|
||||
/** 待案件质证 */
|
||||
/** 被申,待案件质证 */
|
||||
public static final int CASE_CROSSEXAMI = 4;
|
||||
|
||||
/** 待组庭 */
|
||||
/** 待定,待组庭 */
|
||||
public static final int PENDING_TRIAL = 26;
|
||||
/** 待组庭审核 */
|
||||
/** 顾问,待组庭审核 */
|
||||
public static final int CONFIRMDED_PENDING_TRIAL_SUBMMIT = 5;
|
||||
/** 待组庭确定 */
|
||||
/** 部门长,待组庭确定 */
|
||||
public static final int CONFIRMDED_PENDING_TRIAL = 6;
|
||||
|
||||
/** 待审核仲裁方式 */
|
||||
/** 仲裁员,待审核仲裁方式 */
|
||||
public static final int CHECK_ARBITRATION_METHOD = 7;
|
||||
/** 待开庭审理 */
|
||||
/** 申请人,被申,顾问,仲裁员,待开庭审理 */
|
||||
public static final int PENDING_OPENCOURT_HEAR = 8;
|
||||
/** 待书面审理 */
|
||||
/** 申请人,被申,顾问,仲裁员,待书面审理 */
|
||||
public static final int PENDING_WRIITEN_HEAR = 9;
|
||||
/** 待生成仲裁文书 */
|
||||
/** 待生成裁决书 */
|
||||
public static final int GENERATED_ARBITRATION = 10;
|
||||
/**待核验仲裁文书*/
|
||||
/**顾问,待秘书核验裁决书*/
|
||||
public static final int VERPRIF_ARBITRATION = 11;
|
||||
/**待审核仲裁文书*/
|
||||
/**部门长,待部门长审核裁决书*/
|
||||
public static final int CHECK_ARBITRATION = 12;
|
||||
/**待仲裁文书签名*/
|
||||
/**仲裁员,待裁决书签名*/
|
||||
public static final int SIGN_ARBITRATION = 13;
|
||||
/** 待仲裁文书用印 */
|
||||
/** 顾问,待裁决书用印 */
|
||||
public static final int ARBITRATED_SEAL = 14;
|
||||
/** 待仲裁文书送达 */
|
||||
/** 顾问,待裁决书送达 */
|
||||
public static final int ARBITRATION_DELIVERY = 15;
|
||||
/** 待案件归档*/
|
||||
/** 顾问,待案件归档*/
|
||||
public static final int CASE_FILING = 16;
|
||||
/** 已归档*/
|
||||
public static final int CASE_ARCHIVED = 17;
|
||||
|
||||
/** 顾问,待修改开庭时间*/
|
||||
public static final int MODIFY_HEARDATE = 31;
|
||||
/**仲裁员,待仲裁员审核裁决书*/
|
||||
public static final int HEAD_CHECK_ARBITRATION = 18;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -28,6 +28,14 @@ public class Constants
|
||||
* http请求
|
||||
*/
|
||||
public static final String HTTP = "http://";
|
||||
/**
|
||||
* br标签
|
||||
*/
|
||||
public static final String BR = "</br>";
|
||||
/**
|
||||
* pdf拼接符
|
||||
*/
|
||||
public static final String PDFSTR = "∰";
|
||||
|
||||
/**
|
||||
* https请求
|
||||
@@ -128,6 +136,8 @@ public class Constants
|
||||
* LDAPS 远程方法调用
|
||||
*/
|
||||
public static final String LOOKUP_LDAPS = "ldaps:";
|
||||
public static final String DEFAULT_PASSWORD = "123456";
|
||||
public static final String SPLIT_COMMA =",";
|
||||
|
||||
/**
|
||||
* 自动识别json对象白名单配置(仅允许解析的包名,范围越小越安全)
|
||||
@@ -144,4 +154,11 @@ public class Constants
|
||||
*/
|
||||
public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
|
||||
"org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config" };
|
||||
// 中文逗号分隔符
|
||||
public static final String CN_SPLIT_COMMA = ",";
|
||||
/**
|
||||
* 会议主键Id
|
||||
*/
|
||||
public static final String MEETING_KEY = "meeting_key";
|
||||
|
||||
}
|
||||
|
||||
+24
-21
@@ -9,8 +9,8 @@
|
||||
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
package com.ruoyi.wisdomarbitrate.utils;
|
||||
|
||||
package com.ruoyi.common.constant;
|
||||
import com.ruoyi.common.exception.EsignDemoException;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.http.message.BasicNameValuePair;
|
||||
|
||||
@@ -26,6 +26,9 @@ import java.util.*;
|
||||
|
||||
/**
|
||||
* @description 请求数据通用处理类
|
||||
* @author 澄泓
|
||||
* @date 2020年10月22日 下午14:25:31
|
||||
* @since JDK1.7
|
||||
*/
|
||||
public class EsignEncryption {
|
||||
|
||||
@@ -40,7 +43,7 @@ public class EsignEncryption {
|
||||
* @param url
|
||||
* @return
|
||||
*/
|
||||
public static String appendSignDataString(String httpMethod, String contentMd5,String accept,String contentType,String headers,String date, String url) throws EsignInterfacException {
|
||||
public static String appendSignDataString(String httpMethod, String contentMd5,String accept,String contentType,String headers,String date, String url) throws EsignDemoException {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
sb.append(httpMethod).append("\n").append(accept).append("\n").append(contentMd5).append("\n")
|
||||
.append(contentType).append("\n");
|
||||
@@ -62,9 +65,9 @@ public class EsignEncryption {
|
||||
* Content-MD5的计算方法
|
||||
* @param str 待计算的消息
|
||||
* @return MD5计算后摘要值的Base64编码(ContentMD5)
|
||||
* @throws EsignInterfacException 加密过程中的异常信息
|
||||
* @throws EsignDemoException 加密过程中的异常信息
|
||||
*/
|
||||
public static String doContentMD5(String str) throws EsignInterfacException {
|
||||
public static String doContentMD5(String str) throws EsignDemoException {
|
||||
byte[] md5Bytes = null;
|
||||
MessageDigest md5 = null;
|
||||
String contentMD5 = null;
|
||||
@@ -78,7 +81,7 @@ public class EsignEncryption {
|
||||
contentMD5 = Base64.encodeBase64String(md5Bytes);
|
||||
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("不支持此算法",e);
|
||||
EsignDemoException ex = new EsignDemoException("不支持此算法",e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
@@ -92,9 +95,9 @@ public class EsignEncryption {
|
||||
* @param message 待签名字符串
|
||||
* @param secret 密钥APP KEY
|
||||
* @return reqSignature HmacSHA256计算后摘要值的Base64编码
|
||||
* @throws EsignInterfacException 加密过程中的异常信息
|
||||
* @throws EsignDemoException 加密过程中的异常信息
|
||||
*/
|
||||
public static String doSignatureBase64(String message, String secret) throws EsignInterfacException {
|
||||
public static String doSignatureBase64(String message, String secret) throws EsignDemoException {
|
||||
String algorithm = "HmacSHA256";
|
||||
Mac hmacSha256;
|
||||
String digestBase64 = null;
|
||||
@@ -108,11 +111,11 @@ public class EsignEncryption {
|
||||
// 把摘要后的结果digestBytes使用Base64进行编码
|
||||
digestBase64 = Base64.encodeBase64String(digestBytes);
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("不支持此算法",e);
|
||||
EsignDemoException ex = new EsignDemoException("不支持此算法",e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} catch (InvalidKeyException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("无效的密钥规范",e);
|
||||
EsignDemoException ex = new EsignDemoException("无效的密钥规范",e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
@@ -151,7 +154,7 @@ public class EsignEncryption {
|
||||
* hash散列加密算法
|
||||
* @return
|
||||
*/
|
||||
public static String Hmac_SHA256(String message,String key) throws EsignInterfacException {
|
||||
public static String Hmac_SHA256(String message,String key) throws EsignDemoException {
|
||||
byte[] rawHmac=null;
|
||||
try {
|
||||
SecretKeySpec sk = new SecretKeySpec(key.getBytes(), "HmacSHA256");
|
||||
@@ -159,15 +162,15 @@ public class EsignEncryption {
|
||||
mac.init(sk);
|
||||
rawHmac = mac.doFinal(message.getBytes());
|
||||
}catch (InvalidKeyException e){
|
||||
EsignInterfacException ex = new EsignInterfacException("无效的密钥规范",e);
|
||||
EsignDemoException ex = new EsignDemoException("无效的密钥规范",e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("不支持此算法",e);
|
||||
EsignDemoException ex = new EsignDemoException("不支持此算法",e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
}catch (Exception e){
|
||||
EsignInterfacException ex = new EsignInterfacException("hash散列加密算法报错",e);
|
||||
EsignDemoException ex = new EsignDemoException("hash散列加密算法报错",e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
}finally {
|
||||
@@ -179,14 +182,14 @@ public class EsignEncryption {
|
||||
/**
|
||||
* MD5加密32位
|
||||
*/
|
||||
public static String MD5Digest(String text) throws EsignInterfacException {
|
||||
public static String MD5Digest(String text) throws EsignDemoException {
|
||||
byte[] digest=null;
|
||||
try {
|
||||
MessageDigest md5 = MessageDigest.getInstance("MD5");
|
||||
md5.update(text.getBytes());
|
||||
digest = md5.digest();
|
||||
}catch (NoSuchAlgorithmException e){
|
||||
EsignInterfacException ex = new EsignInterfacException("不支持此算法",e);
|
||||
EsignDemoException ex = new EsignDemoException("不支持此算法",e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
}finally {
|
||||
@@ -233,7 +236,7 @@ public class EsignEncryption {
|
||||
* @return 排序后的API接口地址
|
||||
* @throws Exception
|
||||
*/
|
||||
public static String sortApiUrl(String apiUrl) throws EsignInterfacException {
|
||||
public static String sortApiUrl(String apiUrl) throws EsignDemoException {
|
||||
|
||||
if (!apiUrl.contains("?")) {
|
||||
return apiUrl;
|
||||
@@ -255,7 +258,7 @@ public class EsignEncryption {
|
||||
String value = str.substring(index + 1);
|
||||
if (queryParamsMap.containsKey(key)) {
|
||||
String msg = MessageFormat.format("请求URL中的Query参数的{0}重复", key);
|
||||
throw new EsignInterfacException(msg);
|
||||
throw new EsignDemoException(msg);
|
||||
}
|
||||
queryParamsMap.put(key, value);
|
||||
}
|
||||
@@ -297,9 +300,9 @@ public class EsignEncryption {
|
||||
*获取query
|
||||
* @param apiUrl
|
||||
* @return
|
||||
* @throws EsignInterfacException
|
||||
* @throws EsignDemoException
|
||||
*/
|
||||
public static ArrayList<BasicNameValuePair> getQuery(String apiUrl) throws EsignInterfacException {
|
||||
public static ArrayList<BasicNameValuePair> getQuery(String apiUrl) throws EsignDemoException {
|
||||
ArrayList<BasicNameValuePair> BasicNameValuePairList = new ArrayList<>();
|
||||
|
||||
if (!apiUrl.contains("?")) {
|
||||
@@ -318,7 +321,7 @@ public class EsignEncryption {
|
||||
String value = str.substring(index + 1);
|
||||
if (queryParamsMap.containsKey(key)) {
|
||||
String msg = MessageFormat.format("请求URL中的Query参数的{0}重复", key);
|
||||
throw new EsignInterfacException(msg);
|
||||
throw new EsignDemoException(msg);
|
||||
}
|
||||
BasicNameValuePairList.add(new BasicNameValuePair(key,value));
|
||||
queryParamsMap.put(key, value);
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.ruoyi.wisdomarbitrate.utils;
|
||||
package com.ruoyi.common.constant;
|
||||
/**
|
||||
* @description 头部信息常量
|
||||
* @author 澄泓
|
||||
+24
-17
@@ -9,8 +9,10 @@
|
||||
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
package com.ruoyi.wisdomarbitrate.utils;
|
||||
|
||||
package com.ruoyi.common.constant;
|
||||
import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
|
||||
import com.ruoyi.common.enums.EsignRequestType;
|
||||
import com.ruoyi.common.exception.EsignDemoException;
|
||||
import org.apache.http.*;
|
||||
import org.apache.http.auth.AuthScope;
|
||||
import org.apache.http.auth.UsernamePasswordCredentials;
|
||||
@@ -22,6 +24,7 @@ import org.apache.http.client.entity.UrlEncodedFormEntity;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpRequestBase;
|
||||
import org.apache.http.client.protocol.HttpClientContext;
|
||||
import org.apache.http.client.utils.URIBuilder;
|
||||
import org.apache.http.config.Registry;
|
||||
import org.apache.http.config.RegistryBuilder;
|
||||
import org.apache.http.conn.ConnectTimeoutException;
|
||||
@@ -37,6 +40,7 @@ import org.apache.http.impl.client.BasicCredentialsProvider;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.apache.http.impl.client.HttpClientBuilder;
|
||||
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
|
||||
import org.apache.http.message.BasicNameValuePair;
|
||||
import org.apache.http.protocol.HttpContext;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
import org.slf4j.Logger;
|
||||
@@ -49,12 +53,15 @@ import java.net.UnknownHostException;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @description Http请求 辅助类
|
||||
* @author 澄泓
|
||||
* @since JDK1.7
|
||||
*/
|
||||
public class EsignHttpCfgHelper {
|
||||
|
||||
@@ -226,16 +233,16 @@ public class EsignHttpCfgHelper {
|
||||
* @param param
|
||||
* {@link Object} 参数
|
||||
* @return
|
||||
* @throws EsignInterfacException
|
||||
* @throws EsignDemoException
|
||||
* @author 澄泓
|
||||
*/
|
||||
public static EsignHttpResponse sendHttp(EsignRequestType reqType, String httpUrl, Map<String, String> headers, Object param, boolean debug)
|
||||
throws EsignInterfacException {
|
||||
throws EsignDemoException {
|
||||
HttpRequestBase reqBase=null;
|
||||
if(httpUrl.startsWith("http")){
|
||||
reqBase=reqType.getHttpType(httpUrl);
|
||||
}else{
|
||||
throw new EsignInterfacException("请求url地址格式错误");
|
||||
throw new EsignDemoException("请求url地址格式错误");
|
||||
}
|
||||
if(debug){
|
||||
LOGGER.info("请求头:{}",headers+"\n");
|
||||
@@ -288,29 +295,29 @@ public class EsignHttpCfgHelper {
|
||||
LOGGER.info("----------------------------end------------------------");
|
||||
}
|
||||
} catch (NoHttpResponseException e) {
|
||||
throw new EsignInterfacException("服务器丢失了",e);
|
||||
throw new EsignDemoException("服务器丢失了",e);
|
||||
} catch (SSLHandshakeException e){
|
||||
String msg = MessageFormat.format("SSL握手异常", e);
|
||||
EsignInterfacException ex = new EsignInterfacException(msg, e);
|
||||
EsignDemoException ex = new EsignDemoException(msg, e);
|
||||
throw ex;
|
||||
} catch (UnknownHostException e){
|
||||
EsignInterfacException ex = new EsignInterfacException("服务器找不到", e);
|
||||
EsignDemoException ex = new EsignDemoException("服务器找不到", e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} catch(ConnectTimeoutException e){
|
||||
EsignInterfacException ex = new EsignInterfacException("连接超时", e);
|
||||
EsignDemoException ex = new EsignDemoException("连接超时", e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} catch(SSLException e){
|
||||
EsignInterfacException ex = new EsignInterfacException("SSL异常",e);
|
||||
EsignDemoException ex = new EsignDemoException("SSL异常",e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} catch (ClientProtocolException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("请求头异常",e);
|
||||
EsignDemoException ex = new EsignDemoException("请求头异常",e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} catch (IOException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("网络请求失败",e);
|
||||
EsignDemoException ex = new EsignDemoException("网络请求失败",e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} finally {
|
||||
@@ -318,7 +325,7 @@ public class EsignHttpCfgHelper {
|
||||
try {
|
||||
res.close();
|
||||
} catch (IOException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("--->>关闭请求响应失败",e);
|
||||
EsignDemoException ex = new EsignDemoException("--->>关闭请求响应失败",e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
}
|
||||
@@ -358,7 +365,7 @@ public class EsignHttpCfgHelper {
|
||||
* @return
|
||||
* @author 澄泓
|
||||
*/
|
||||
private static void cfgPoolMgr() throws EsignInterfacException {
|
||||
private static void cfgPoolMgr() throws EsignDemoException {
|
||||
ConnectionSocketFactory plainsf = PlainConnectionSocketFactory.getSocketFactory();
|
||||
LayeredConnectionSocketFactory sslsf = SSLConnectionSocketFactory.getSocketFactory();
|
||||
if(!SSL_VERIFY){
|
||||
@@ -431,7 +438,7 @@ public class EsignHttpCfgHelper {
|
||||
/**
|
||||
* 忽略域名校验
|
||||
*/
|
||||
private static SSLConnectionSocketFactory sslConnectionSocketFactory() throws EsignInterfacException {
|
||||
private static SSLConnectionSocketFactory sslConnectionSocketFactory() throws EsignDemoException {
|
||||
try {
|
||||
SSLContext ctx = SSLContext.getInstance("TLS"); // 创建一个上下文(此处指定的协议类型似乎不是重点)
|
||||
X509TrustManager tm = new X509TrustManager() { // 创建一个跳过SSL证书的策略
|
||||
@@ -448,7 +455,7 @@ public class EsignHttpCfgHelper {
|
||||
ctx.init(null, new TrustManager[] { tm }, null); // 使用上面的策略初始化上下文
|
||||
return new SSLConnectionSocketFactory(ctx, new String[] { "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" }, null, NoopHostnameVerifier.INSTANCE);
|
||||
}catch (Exception e){
|
||||
EsignInterfacException ex = new EsignInterfacException("忽略域名校验失败",e);
|
||||
EsignDemoException ex = new EsignDemoException("忽略域名校验失败",e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
}
|
||||
@@ -461,7 +468,7 @@ public class EsignHttpCfgHelper {
|
||||
* @return
|
||||
* @author 澄泓
|
||||
*/
|
||||
private static synchronized CloseableHttpClient getHttpClient() throws EsignInterfacException {
|
||||
private static synchronized CloseableHttpClient getHttpClient() throws EsignDemoException {
|
||||
if(httpClient==null) {
|
||||
CredentialsProvider credsProvider = new BasicCredentialsProvider();
|
||||
credsProvider.setCredentials(new AuthScope(PROXY_IP,PROXY_PORT),new UsernamePasswordCredentials(PROXY_USERNAME, PROXY_PASSWORD));
|
||||
+36
-30
@@ -9,8 +9,9 @@
|
||||
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
package com.ruoyi.wisdomarbitrate.utils;
|
||||
package com.ruoyi.common.constant;
|
||||
|
||||
import com.ruoyi.common.exception.EsignDemoException;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
|
||||
import java.io.*;
|
||||
@@ -22,7 +23,10 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author 澄泓
|
||||
* @version JDK1.7
|
||||
* @description 文件转换类
|
||||
* @date 2020/10/26 10:47
|
||||
*/
|
||||
public class FileTransformation {
|
||||
|
||||
@@ -31,9 +35,9 @@ public class FileTransformation {
|
||||
*
|
||||
* @param srcFilePath 本地文件路径
|
||||
* @return
|
||||
* @throws EsignInterfacException
|
||||
* @throws EsignDemoException
|
||||
*/
|
||||
public static byte[] fileToBytes(String srcFilePath) throws EsignInterfacException {
|
||||
public static byte[] fileToBytes(String srcFilePath) throws EsignDemoException {
|
||||
return getBytes(srcFilePath);
|
||||
}
|
||||
|
||||
@@ -42,9 +46,9 @@ public class FileTransformation {
|
||||
*
|
||||
* @param filePath 本地文件路径
|
||||
* @return
|
||||
* @throws EsignInterfacException
|
||||
* @throws EsignDemoException
|
||||
*/
|
||||
public static String fileToBase64(String filePath) throws EsignInterfacException {
|
||||
public static String fileToBase64(String filePath) throws EsignDemoException {
|
||||
byte[] bytes;
|
||||
String base64 = null;
|
||||
bytes = fileToBytes(filePath);
|
||||
@@ -53,7 +57,7 @@ public class FileTransformation {
|
||||
return base64;
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws EsignInterfacException {
|
||||
public static void main(String[] args) throws EsignDemoException {
|
||||
System.out.println(getFileContentMD5("D:\\文档\\PLT2022-02124CT.pdf"));
|
||||
}
|
||||
|
||||
@@ -62,7 +66,7 @@ public class FileTransformation {
|
||||
* @param filePath 文件路径
|
||||
* @return
|
||||
*/
|
||||
public static String getFileContentMD5(String filePath) throws EsignInterfacException {
|
||||
public static String getFileContentMD5(String filePath) throws EsignDemoException {
|
||||
// 获取文件MD5的二进制数组(128位)
|
||||
byte[] bytes = getFileMD5Bytes128(filePath);
|
||||
// 对文件MD5的二进制数组进行base64编码
|
||||
@@ -75,7 +79,8 @@ public class FileTransformation {
|
||||
* @param httpUrl 网络文件地址url
|
||||
* @return
|
||||
*/
|
||||
public static boolean downLoadFileByUrl(String httpUrl, String dir) throws EsignInterfacException {
|
||||
public static boolean downLoadFileByUrl(String httpUrl, String dir) throws EsignDemoException {
|
||||
boolean downLoadFileFlag = false;
|
||||
InputStream fis = null;
|
||||
FileOutputStream fileOutputStream = null;
|
||||
try {
|
||||
@@ -91,10 +96,11 @@ public class FileTransformation {
|
||||
while ((length = fis.read(buffer, 0, 1024)) != -1) {
|
||||
fileOutputStream.write(buffer, 0, length);
|
||||
}
|
||||
downLoadFileFlag = true;
|
||||
} catch (IOException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("获取文件流异常", e);
|
||||
EsignDemoException ex = new EsignDemoException("获取文件流异常", e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
return downLoadFileFlag;
|
||||
} finally {
|
||||
try {
|
||||
if (fis != null) {
|
||||
@@ -104,12 +110,12 @@ public class FileTransformation {
|
||||
fileOutputStream.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("关闭文件流异常", e);
|
||||
EsignDemoException ex = new EsignDemoException("关闭文件流异常", e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
return downLoadFileFlag;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return downLoadFileFlag;
|
||||
}
|
||||
|
||||
|
||||
@@ -119,7 +125,7 @@ public class FileTransformation {
|
||||
* @param fileUrl 网络文件地址url
|
||||
* @return
|
||||
*/
|
||||
public static Map fileUrlToBytes(String fileUrl) throws EsignInterfacException {
|
||||
public static Map fileUrlToBytes(String fileUrl) throws EsignDemoException {
|
||||
HashMap<String, Object> map = new HashMap<String, Object>();
|
||||
try {
|
||||
URL url = new URL(fileUrl);
|
||||
@@ -144,11 +150,11 @@ public class FileTransformation {
|
||||
fis.close();
|
||||
map.put("md5Bytes", md5Bytes);
|
||||
} catch (IOException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("获取文件流异常", e);
|
||||
EsignDemoException ex = new EsignDemoException("获取文件流异常", e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("文件计算异常", e);
|
||||
EsignDemoException ex = new EsignDemoException("文件计算异常", e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
}
|
||||
@@ -159,9 +165,9 @@ public class FileTransformation {
|
||||
* 获取文件MD5的二进制数组(128位)
|
||||
* @param filePath
|
||||
* @return
|
||||
* @throws EsignInterfacException
|
||||
* @throws EsignDemoException
|
||||
*/
|
||||
public static byte[] getFileMD5Bytes128(String filePath) throws EsignInterfacException {
|
||||
public static byte[] getFileMD5Bytes128(String filePath) throws EsignDemoException {
|
||||
FileInputStream fis = null;
|
||||
byte[] md5Bytes = null;
|
||||
try {
|
||||
@@ -176,15 +182,15 @@ public class FileTransformation {
|
||||
md5Bytes = md5.digest();
|
||||
fis.close();
|
||||
} catch (FileNotFoundException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("文件找不到", e);
|
||||
EsignDemoException ex = new EsignDemoException("文件找不到", e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("不支持此算法", e);
|
||||
EsignDemoException ex = new EsignDemoException("不支持此算法", e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} catch (IOException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("输入流或输出流异常", e);
|
||||
EsignDemoException ex = new EsignDemoException("输入流或输出流异常", e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} finally {
|
||||
@@ -192,7 +198,7 @@ public class FileTransformation {
|
||||
try {
|
||||
fis.close();
|
||||
} catch (IOException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("关闭文件输入流失败", e);
|
||||
EsignDemoException ex = new EsignDemoException("关闭文件输入流失败", e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
}
|
||||
@@ -204,12 +210,12 @@ public class FileTransformation {
|
||||
/**
|
||||
* @param path
|
||||
* @return
|
||||
* @throws EsignInterfacException
|
||||
* @throws EsignDemoException
|
||||
* @description 根据文件路径,获取文件base64
|
||||
* @author 宫清
|
||||
* @date 2019年7月21日 下午4:22:08
|
||||
*/
|
||||
public static String getBase64Str(String path) throws EsignInterfacException {
|
||||
public static String getBase64Str(String path) throws EsignDemoException {
|
||||
InputStream is = null;
|
||||
try {
|
||||
is = new FileInputStream(new File(path));
|
||||
@@ -217,7 +223,7 @@ public class FileTransformation {
|
||||
is.read(bytes);
|
||||
return Base64.encodeBase64String(bytes);
|
||||
} catch (Exception e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("获取文件输入流失败", e);
|
||||
EsignDemoException ex = new EsignDemoException("获取文件输入流失败", e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} finally {
|
||||
@@ -225,7 +231,7 @@ public class FileTransformation {
|
||||
try {
|
||||
is.close();
|
||||
} catch (IOException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("关闭文件输入流失败", e);
|
||||
EsignDemoException ex = new EsignDemoException("关闭文件输入流失败", e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
}
|
||||
@@ -247,12 +253,12 @@ public class FileTransformation {
|
||||
/**
|
||||
* @param filePath {@link String} 文件地址
|
||||
* @return
|
||||
* @throws EsignInterfacException
|
||||
* @throws EsignDemoException
|
||||
* @description 获取文件字节流
|
||||
* @date 2019年7月10日 上午9:17:00
|
||||
* @author 宫清
|
||||
*/
|
||||
public static byte[] getBytes(String filePath) throws EsignInterfacException {
|
||||
public static byte[] getBytes(String filePath) throws EsignDemoException {
|
||||
File file = new File(filePath);
|
||||
FileInputStream fis = null;
|
||||
byte[] buffer = null;
|
||||
@@ -261,7 +267,7 @@ public class FileTransformation {
|
||||
buffer = new byte[(int) file.length()];
|
||||
fis.read(buffer);
|
||||
} catch (Exception e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("获取文件字节流失败", e);
|
||||
EsignDemoException ex = new EsignDemoException("获取文件字节流失败", e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
} finally {
|
||||
@@ -269,7 +275,7 @@ public class FileTransformation {
|
||||
try {
|
||||
fis.close();
|
||||
} catch (IOException e) {
|
||||
EsignInterfacException ex = new EsignInterfacException("关闭文件字节流失败", e);
|
||||
EsignDemoException ex = new EsignDemoException("关闭文件字节流失败", e);
|
||||
ex.initCause(e);
|
||||
throw ex;
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.ruoyi.common.core.controller;
|
||||
|
||||
import java.beans.PropertyEditorSupport;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import org.slf4j.Logger;
|
||||
@@ -82,6 +83,9 @@ public class BaseController
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
protected TableDataInfo getDataTable(List<?> list)
|
||||
{
|
||||
if(list == null){
|
||||
list=new ArrayList<>();
|
||||
}
|
||||
TableDataInfo rspData = new TableDataInfo();
|
||||
rspData.setCode(HttpStatus.SUCCESS);
|
||||
rspData.setMsg("查询成功");
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.ruoyi.common.core.domain.entity.SysDept;
|
||||
import com.ruoyi.common.core.domain.entity.SysMenu;
|
||||
|
||||
|
||||
/**
|
||||
* Treeselect树结构实体类
|
||||
*
|
||||
@@ -38,6 +39,7 @@ public class TreeSelect implements Serializable
|
||||
this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
public TreeSelect(SysMenu menu)
|
||||
{
|
||||
this.id = menu.getMenuId();
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.ruoyi.wisdomarbitrate.utils;
|
||||
package com.ruoyi.common.core.domain.entity;
|
||||
/**
|
||||
* esignSDK-core信息类
|
||||
* @author 澄泓
|
||||
+1
-4
@@ -1,9 +1,6 @@
|
||||
package com.ruoyi.wisdomarbitrate.utils;
|
||||
package com.ruoyi.common.core.domain.entity;
|
||||
/**
|
||||
* 网络请求的response类
|
||||
* @author 澄泓
|
||||
* @date 2022/2/21 17:28
|
||||
* @version
|
||||
*/
|
||||
public class EsignHttpResponse {
|
||||
private int status;
|
||||
@@ -31,6 +31,9 @@ public class SysDept extends BaseEntity
|
||||
/** 部门名称 */
|
||||
private String deptName;
|
||||
|
||||
/** 部门类型 */
|
||||
private Integer deptType;
|
||||
|
||||
/** 显示顺序 */
|
||||
private Integer orderNum;
|
||||
|
||||
@@ -51,7 +54,77 @@ public class SysDept extends BaseEntity
|
||||
|
||||
/** 父部门名称 */
|
||||
private String parentName;
|
||||
|
||||
/**
|
||||
* 代码(统一社会信用代码或者身份证号)
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 法定代表人
|
||||
*/
|
||||
private String compLegalPerson;
|
||||
/**
|
||||
* 住所
|
||||
*/
|
||||
private String home;
|
||||
/**
|
||||
* 联系地址
|
||||
*/
|
||||
private String address;
|
||||
/**
|
||||
*
|
||||
* 国籍,0-国内,1-国外
|
||||
*/
|
||||
private Integer nationality;
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getCompLegalPerson() {
|
||||
return compLegalPerson;
|
||||
}
|
||||
|
||||
public void setCompLegalPerson(String compLegalPerson) {
|
||||
this.compLegalPerson = compLegalPerson;
|
||||
}
|
||||
|
||||
public String getHome() {
|
||||
return home;
|
||||
}
|
||||
|
||||
public void setHome(String home) {
|
||||
this.home = home;
|
||||
}
|
||||
|
||||
public String getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public void setAddress(String address) {
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
public Integer getNationality() {
|
||||
return nationality;
|
||||
}
|
||||
|
||||
public void setNationality(Integer nationality) {
|
||||
this.nationality = nationality;
|
||||
}
|
||||
|
||||
public Integer getDeptType() {
|
||||
return deptType;
|
||||
}
|
||||
|
||||
public void setDeptType(Integer deptType) {
|
||||
this.deptType = deptType;
|
||||
}
|
||||
|
||||
/** 子部门 */
|
||||
private List<SysDept> children = new ArrayList<SysDept>();
|
||||
|
||||
|
||||
@@ -33,10 +33,44 @@ public class SysUser extends BaseEntity
|
||||
@Excel(name = "登录名称")
|
||||
private String userName;
|
||||
|
||||
|
||||
|
||||
/** 用户昵称 */
|
||||
@Excel(name = "用户名称")
|
||||
private String nickName;
|
||||
|
||||
/** 用户昵称和待办数量 */
|
||||
private String nickNameAndNum;
|
||||
|
||||
public String getNickNameAndNum() {
|
||||
return nickNameAndNum;
|
||||
}
|
||||
|
||||
public void setNickNameAndNum(String nickNameAndNum) {
|
||||
this.nickNameAndNum = nickNameAndNum;
|
||||
}
|
||||
/** 身份类别,0-身份证,1-护照,默认0 */
|
||||
private Integer idType;
|
||||
/** 国籍,0-国内,1-国外,默认0 */
|
||||
|
||||
private Integer nationality;
|
||||
/**
|
||||
* 生日
|
||||
*/
|
||||
private Date birth;
|
||||
/**
|
||||
* 住所
|
||||
*/
|
||||
private String home;
|
||||
/**
|
||||
* 联系地址
|
||||
*/
|
||||
private String address;
|
||||
|
||||
/** 用户身份证号 */
|
||||
@Excel(name = "身份证号")
|
||||
private String idCard;
|
||||
|
||||
/** 用户邮箱 */
|
||||
@Excel(name = "用户邮箱")
|
||||
private String email;
|
||||
@@ -88,12 +122,64 @@ public class SysUser extends BaseEntity
|
||||
|
||||
/** 角色ID */
|
||||
private Long roleId;
|
||||
/**
|
||||
* 职位
|
||||
*/
|
||||
private String position;
|
||||
|
||||
public String getPosition() {
|
||||
return position;
|
||||
}
|
||||
|
||||
public void setPosition(String position) {
|
||||
this.position = position;
|
||||
}
|
||||
|
||||
public SysUser()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public Integer getIdType() {
|
||||
return idType;
|
||||
}
|
||||
|
||||
public void setIdType(Integer idType) {
|
||||
this.idType = idType;
|
||||
}
|
||||
|
||||
public Integer getNationality() {
|
||||
return nationality;
|
||||
}
|
||||
|
||||
public void setNationality(Integer nationality) {
|
||||
this.nationality = nationality;
|
||||
}
|
||||
|
||||
public Date getBirth() {
|
||||
return birth;
|
||||
}
|
||||
|
||||
public void setBirth(Date birth) {
|
||||
this.birth = birth;
|
||||
}
|
||||
|
||||
public String getHome() {
|
||||
return home;
|
||||
}
|
||||
|
||||
public void setHome(String home) {
|
||||
this.home = home;
|
||||
}
|
||||
|
||||
public String getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public void setAddress(String address) {
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
public SysUser(Long userId)
|
||||
{
|
||||
this.userId = userId;
|
||||
@@ -297,12 +383,21 @@ public class SysUser extends BaseEntity
|
||||
this.roleId = roleId;
|
||||
}
|
||||
|
||||
public String getIdCard() {
|
||||
return idCard;
|
||||
}
|
||||
|
||||
public void setIdCard(String idCard) {
|
||||
this.idCard = idCard;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("userId", getUserId())
|
||||
.append("deptId", getDeptId())
|
||||
.append("userName", getUserName())
|
||||
.append("idCard", getIdCard())
|
||||
.append("nickName", getNickName())
|
||||
.append("email", getEmail())
|
||||
.append("phonenumber", getPhonenumber())
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.ruoyi.wisdomarbitrate.utils;
|
||||
package com.ruoyi.common.enums;
|
||||
|
||||
import org.apache.http.client.methods.*;
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.ruoyi.common.enums;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description 短信状态枚举
|
||||
* @date 2023-11-17 14:05
|
||||
*/
|
||||
public enum SMSStatusEnum
|
||||
{
|
||||
SUCCESS(1, "成功"),
|
||||
SENDING(2, "发送中"),
|
||||
FAIL(3, "失败"),
|
||||
|
||||
;
|
||||
|
||||
private final Integer code;
|
||||
private final String text;
|
||||
|
||||
SMSStatusEnum(Integer code, String text)
|
||||
{
|
||||
this.code = code;
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public Integer getCode()
|
||||
{
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getText()
|
||||
{
|
||||
return text;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据code获取text
|
||||
* @param codeNo
|
||||
* @return
|
||||
*/
|
||||
public static String getTextByCode(Integer codeNo){
|
||||
for (SMSStatusEnum value : SMSStatusEnum.values()) {
|
||||
if (value.getCode().equals(codeNo)){
|
||||
return value.getText();
|
||||
}
|
||||
}
|
||||
return codeNo.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据text获取code
|
||||
* @param textStr
|
||||
* @return
|
||||
*/
|
||||
public static String getCodeByText(String textStr){
|
||||
for (SMSStatusEnum value : SMSStatusEnum.values()) {
|
||||
if (value.getText().equals(textStr)){
|
||||
return value.getText();
|
||||
}
|
||||
}
|
||||
return textStr;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.ruoyi.common.enums;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description 修改案件的提交状态
|
||||
* @date 2023-11-17 14:05
|
||||
*/
|
||||
public enum UpdateSubmitStatus
|
||||
{
|
||||
UNCOMMITTED(0, "未提交"),
|
||||
COMMITTED(1, "已提交"),
|
||||
REVOKE(2, "撤销"),
|
||||
AGREE(3, "同意已修改的案件"),
|
||||
REFUSE(4, "拒绝已修改的案件"),
|
||||
|
||||
AGREE_REVOKE(5, "同意撤销修改"),
|
||||
REFUSE_REVOKE(6, "拒绝撤销修改"),
|
||||
;
|
||||
|
||||
private final Integer code;
|
||||
private final String text;
|
||||
|
||||
UpdateSubmitStatus(Integer code, String text)
|
||||
{
|
||||
this.code = code;
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public Integer getCode()
|
||||
{
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getText()
|
||||
{
|
||||
return text;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.ruoyi.common.enums;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description 是否枚举
|
||||
* @date 2023-11-17 14:05
|
||||
*/
|
||||
public enum YesOrNoEnum
|
||||
{
|
||||
NO(0, "否"),
|
||||
YES(1, "是"),
|
||||
|
||||
;
|
||||
|
||||
private final Integer code;
|
||||
private final String text;
|
||||
|
||||
YesOrNoEnum(Integer code, String text)
|
||||
{
|
||||
this.code = code;
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public Integer getCode()
|
||||
{
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getText()
|
||||
{
|
||||
return text;
|
||||
}
|
||||
}
|
||||
+7
-5
@@ -1,22 +1,24 @@
|
||||
package com.ruoyi.wisdomarbitrate.utils;
|
||||
package com.ruoyi.common.exception;
|
||||
|
||||
/**
|
||||
* description 自定义全局异常
|
||||
* @author 澄泓
|
||||
* datetime 2019年7月1日上午10:43:24
|
||||
*/
|
||||
public class EsignInterfacException extends Exception {
|
||||
public class EsignDemoException extends Exception {
|
||||
|
||||
private static final long serialVersionUID = 4359180081622082792L;
|
||||
private Exception e;
|
||||
|
||||
public EsignInterfacException(String msg) {
|
||||
public EsignDemoException(String msg) {
|
||||
super(msg);
|
||||
}
|
||||
|
||||
public EsignInterfacException(String msg, Throwable cause) {
|
||||
public EsignDemoException(String msg, Throwable cause) {
|
||||
super(msg,cause);
|
||||
}
|
||||
|
||||
public EsignInterfacException(){
|
||||
public EsignDemoException(){
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.crypto.digest.HMac;
|
||||
import cn.hutool.crypto.digest.HmacAlgorithm;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
public class CheckSignatuerUtils {
|
||||
|
||||
public static String getSign(String paramsbody, String accessSec, long timestamp) {
|
||||
String paramsStr = getParamsStr(paramsbody, timestamp);
|
||||
return generateSign(paramsStr, accessSec);
|
||||
}
|
||||
|
||||
public static String getParamsStr(String paramsbody,long timestamp) {
|
||||
StringBuilder strbuild = new StringBuilder();
|
||||
if (StringUtils.isNotBlank(paramsbody)) {
|
||||
strbuild.append(paramsbody).append('#');
|
||||
}
|
||||
strbuild.append("#timestamp=").append(timestamp);
|
||||
return strbuild.toString();
|
||||
}
|
||||
|
||||
public static String generateSign(String paramsStr, String accessSec) {
|
||||
HMac hMac = new HMac(HmacAlgorithm.HmacSHA256, accessSec.getBytes(StandardCharsets.UTF_8));
|
||||
return hMac.digestHex(paramsStr);
|
||||
}
|
||||
|
||||
public static boolean checkSignuter(String paramsbody) throws Exception {
|
||||
HttpServletRequest reqParam = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
|
||||
String timestampstr = reqParam.getHeader("timestampstr");
|
||||
String signstr = reqParam.getHeader("signstr");
|
||||
String accessSec = "mCFMA6ffe938v79m";
|
||||
String newSignuter = getSign(paramsbody, accessSec,Long.parseLong(timestampstr));
|
||||
if (StringUtils.equals(signstr, newSignuter)) {
|
||||
return true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,9 +1,13 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.common.utils.uuid.UUID;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.mail.MailException;
|
||||
import org.springframework.mail.SimpleMailMessage;
|
||||
|
||||
import org.springframework.mail.javamail.JavaMailSender;
|
||||
@@ -11,14 +15,20 @@ import org.springframework.mail.javamail.JavaMailSenderImpl;
|
||||
import org.springframework.mail.javamail.MimeMessageHelper;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.mail.MessagingException;
|
||||
import javax.mail.internet.MimeMessage;
|
||||
import javax.activation.DataHandler;
|
||||
import javax.mail.*;
|
||||
import javax.mail.internet.*;
|
||||
import javax.mail.search.*;
|
||||
import javax.mail.util.ByteArrayDataSource;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.security.Security;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* @ClassName EmailInUtil
|
||||
@@ -40,15 +50,17 @@ public class EmailOutUtil {
|
||||
// @Value("${spring.mail-out-network.from}")
|
||||
// private static String fromOut;
|
||||
@Value("${spring.mail.host}")
|
||||
private String hostOut;
|
||||
private String hostOut;
|
||||
@Value("${spring.mail.username}")
|
||||
private String usernameOut;
|
||||
@Value("${spring.mail.password}")
|
||||
private String passwordOut;
|
||||
@Value("${spring.mail.port}")
|
||||
private Integer portOut;
|
||||
private String usernameOut;
|
||||
|
||||
public JavaMailSender rebuildMailSender() {
|
||||
@Value("${spring.mail.password}")
|
||||
private String passwordOut;
|
||||
|
||||
@Value("${spring.mail.port}")
|
||||
private Integer portOut;
|
||||
|
||||
public JavaMailSender rebuildMailSender() {
|
||||
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
|
||||
mailSender.setHost(hostOut);
|
||||
mailSender.setUsername(usernameOut);
|
||||
@@ -66,29 +78,122 @@ public class EmailOutUtil {
|
||||
* @param subject 邮件主题
|
||||
* @param content 邮件内容(发送内容)
|
||||
*/
|
||||
public void sendMessage(String to, String subject, String content, String from, JavaMailSender mailSender) {
|
||||
// 创建一个邮件对象
|
||||
SimpleMailMessage msg = new SimpleMailMessage();
|
||||
msg.setFrom(from);
|
||||
msg.setTo(to);
|
||||
// 设置邮件主题
|
||||
msg.setSubject(subject);
|
||||
// 设置邮件内容
|
||||
msg.setText(content);
|
||||
// 发送邮件
|
||||
mailSender.send(msg);
|
||||
////System.out.println("发送成功:" + from + ":to:" + to);
|
||||
public Boolean sendMessage(String to, String subject, String content, String from, JavaMailSender mailSender) {
|
||||
try {
|
||||
if(mailSender==null){
|
||||
mailSender= rebuildMailSender();
|
||||
}
|
||||
// 创建一个邮件对象
|
||||
SimpleMailMessage msg = new SimpleMailMessage();
|
||||
if(StrUtil.isEmpty(from)){
|
||||
msg.setFrom(usernameOut);
|
||||
}else {
|
||||
msg.setFrom(from);
|
||||
}
|
||||
msg.setTo(to);
|
||||
// 设置邮件主题
|
||||
msg.setSubject(subject);
|
||||
// 设置邮件内容
|
||||
msg.setText(content);
|
||||
// 发送邮件
|
||||
mailSender.send(msg);
|
||||
} catch (MailException e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param to 收件人
|
||||
* @param message 邮件内容
|
||||
* @param subject 邮件主题
|
||||
* @param fileList 邮件附件
|
||||
* @param fileNameMap 附件名称map,附件路径-附件名称
|
||||
*/
|
||||
public Boolean sendEmil(String to, String message, String subject, List<File> fileList, File file,Map<String,String> fileNameMap) {
|
||||
try {
|
||||
String messageContent = "<html><body><p style=\"font-family: Arial, sans-serif; font-size: 18px;\">"+message+"。</p></body></html>";
|
||||
MimeBodyPart messageBodyPart = new MimeBodyPart();
|
||||
messageBodyPart.setContent(messageContent, "text/html;charset=utf-8");
|
||||
messageBodyPart.setContentID(UUID.randomUUID().toString());
|
||||
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
|
||||
//设置邮件会话参数
|
||||
Properties props = new Properties();
|
||||
//邮箱的发送服务器地址
|
||||
props.setProperty("mail.smtp.host", "smtp.163.com");
|
||||
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
|
||||
props.setProperty("mail.smtp.socketFactory.fallback", "false");
|
||||
//邮箱发送服务器端口,这里设置为465端口
|
||||
props.setProperty("mail.smtp.port", "465");
|
||||
props.setProperty("mail.smtp.socketFactory.port", "465");
|
||||
props.put("mail.smtp.auth", "true");
|
||||
//获取到邮箱会话,利用匿名内部类的方式,将发送者邮箱用户名和密码授权给jvm
|
||||
Session session = Session.getDefaultInstance(props, new Authenticator() {
|
||||
@Override
|
||||
protected PasswordAuthentication getPasswordAuthentication() {
|
||||
return new PasswordAuthentication(usernameOut, passwordOut);
|
||||
}
|
||||
});
|
||||
//通过会话,得到一个邮件,用于发送
|
||||
Message msg = new MimeMessage(session);
|
||||
//设置发件人
|
||||
msg.setFrom(new InternetAddress(usernameOut));
|
||||
//设置收件人,to为收件人,cc为抄送,bcc为密送
|
||||
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
|
||||
msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(to, false));
|
||||
msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(to, false));
|
||||
//设置邮件消息
|
||||
msg.setSubject(subject);
|
||||
msg.setText(message);
|
||||
msg.setDescription("messageutf-8html");
|
||||
//设置发送的日期
|
||||
msg.setSentDate(new Date());
|
||||
// 创建邮件正文
|
||||
MimeMultipart multipart = new MimeMultipart();
|
||||
// MimeBodyPart bodyPart = new MimeBodyPart();
|
||||
// bodyPart.setContent("This is the body of the email", "text/html");
|
||||
multipart.addBodyPart(messageBodyPart);
|
||||
// 添加附件
|
||||
if (file != null) {
|
||||
MimeBodyPart attachmentPart = new MimeBodyPart();
|
||||
attachmentPart.attachFile(file);
|
||||
attachmentPart.setFileName(MimeUtility.encodeText(file.getName()));
|
||||
multipart.addBodyPart(attachmentPart);
|
||||
//将multipart对象放入邮件
|
||||
msg.setContent(multipart);
|
||||
} else if (fileList != null && fileList.size() > 0) {
|
||||
// 添加附件(多个)
|
||||
if (fileList != null && fileList.size() > 0) {
|
||||
for (File tempfile : fileList) {
|
||||
MimeBodyPart attachmentPart = new MimeBodyPart();
|
||||
attachmentPart.attachFile(tempfile);
|
||||
// 设置附件名称
|
||||
if(fileNameMap!=null && fileNameMap.containsKey(tempfile.getPath())) {
|
||||
attachmentPart.setFileName(MimeUtility.encodeText(fileNameMap.get(tempfile.getPath())));
|
||||
}
|
||||
multipart.addBodyPart(attachmentPart);
|
||||
}
|
||||
msg.setContent(multipart);
|
||||
}
|
||||
}
|
||||
//调用Transport的send方法去发送邮件
|
||||
Transport.send(msg);
|
||||
}catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送带附件的邮件信息
|
||||
*
|
||||
* @param to 接收方
|
||||
* @param subject 邮件主题
|
||||
* @param content 邮件内容(发送内容)
|
||||
* @param fileList 文件集合 // 可发送多个附件
|
||||
* @param to 接收方
|
||||
* @param subject 邮件主题
|
||||
* @param content 邮件内容(发送内容)
|
||||
* @param fileList 文件集合 // 可发送多个附件
|
||||
*/
|
||||
public void sendMessageCarryFiles(String to, String subject, String content, List<File> fileList, String from, @NotNull JavaMailSender mailSender) {
|
||||
public void sendMessageCarryFiles(String to, String subject, String content, List<File> fileList, String from, @NotNull JavaMailSender mailSender) {
|
||||
MimeMessage mimeMessage = mailSender.createMimeMessage();
|
||||
try {
|
||||
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
|
||||
@@ -184,4 +289,164 @@ public class EmailOutUtil {
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
public void buildReceiveConnect() throws Exception {
|
||||
|
||||
//POP3主机名
|
||||
String host = "pop3.163.com";
|
||||
//设置传输协议
|
||||
String protocol = "pop3";
|
||||
//用户账号
|
||||
String username = "wq18792927508@163.com";
|
||||
//密码或者授权码
|
||||
String password = "WDFHKSEMCKVRELEA";
|
||||
/*
|
||||
* 获取Session
|
||||
*/
|
||||
Properties props = new Properties();
|
||||
//协议
|
||||
props.setProperty("mail.store.protocol", protocol);
|
||||
//POP3主机名
|
||||
props.setProperty("mail.pop3.host", host);
|
||||
props.setProperty("mail.smtp.auth", "true");
|
||||
props.setProperty("mail.pop3.default-encoding", "UTF-8");
|
||||
Session session = Session.getDefaultInstance(props, new Authenticator() {
|
||||
@Override
|
||||
protected PasswordAuthentication getPasswordAuthentication() {
|
||||
return new PasswordAuthentication(usernameOut, passwordOut);
|
||||
}
|
||||
});
|
||||
URLName urlName = new URLName(protocol, host, 110, null, username, password);
|
||||
Store store = session.getStore(urlName);
|
||||
store.connect(username, password);
|
||||
|
||||
|
||||
Folder folder = store.getFolder("INBOX");
|
||||
|
||||
folder.open(Folder.READ_ONLY);
|
||||
|
||||
}
|
||||
/**
|
||||
* 接收邮件
|
||||
*/
|
||||
public List<String> receiverMail() {
|
||||
List<String> messageIds=new ArrayList<>();
|
||||
|
||||
// session.setDebug(true);
|
||||
|
||||
try {
|
||||
//POP3主机名
|
||||
String host = "pop3.163.com";
|
||||
//设置传输协议
|
||||
String protocol = "pop3";
|
||||
//用户账号
|
||||
String username = "wq18792927508@163.com";
|
||||
//密码或者授权码
|
||||
String password = "WDFHKSEMCKVRELEA";
|
||||
/*
|
||||
* 获取Session
|
||||
*/
|
||||
Properties props = new Properties();
|
||||
//协议
|
||||
props.setProperty("mail.store.protocol", protocol);
|
||||
//POP3主机名
|
||||
props.setProperty("mail.pop3.host", host);
|
||||
props.setProperty("mail.smtp.auth", "true");
|
||||
props.setProperty("mail.pop3.default-encoding", "UTF-8");
|
||||
Session session = Session.getDefaultInstance(props, new Authenticator() {
|
||||
@Override
|
||||
protected PasswordAuthentication getPasswordAuthentication() {
|
||||
return new PasswordAuthentication(usernameOut, passwordOut);
|
||||
}
|
||||
});
|
||||
URLName urlName = new URLName(protocol, host, 110, null, username, password);
|
||||
Store store = session.getStore(urlName);
|
||||
store.connect(username, password);
|
||||
|
||||
|
||||
Folder folder = store.getFolder("INBOX");
|
||||
folder.open(Folder.READ_ONLY);
|
||||
SearchTerm orTerm = new SubjectTerm("退信");
|
||||
// Message[] messages = folder.search(orTerm);
|
||||
Date endTime= new Date();
|
||||
long oneDayMillis=24*60*60*1000L;
|
||||
Date startTime=new Date(endTime.getTime()-oneDayMillis);
|
||||
// SearchTerm comparisonTermGe = new SentDateTerm(ComparisonTerm.GE, startTime);
|
||||
// SearchTerm comparisonTermLe = new SentDateTerm(ComparisonTerm.LE, endTime);
|
||||
// SearchTerm comparisonAndTerm = new AndTerm(comparisonTermGe, comparisonTermLe);
|
||||
// SearchTerm searchTerm = new AndTerm(comparisonAndTerm, orTerm);
|
||||
Message[] messages = folder.search(orTerm);
|
||||
if (messages != null) {
|
||||
|
||||
Arrays.stream(messages).forEach(message -> {
|
||||
String messageId="";
|
||||
try {
|
||||
messageId = EmailUtil.getMessageId(message,session);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
messageIds.add(messageId);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
folder.close(false);
|
||||
store.close();
|
||||
} catch (Exception e) {
|
||||
return messageIds;
|
||||
}
|
||||
return messageIds;
|
||||
}
|
||||
|
||||
public void analyseMail(Session session, Object content) throws Exception {
|
||||
|
||||
if (content instanceof Multipart) {
|
||||
Multipart multipart = (Multipart) content;
|
||||
for (int i = 0; i < multipart.getCount(); i++) {
|
||||
BodyPart bodyPart = multipart.getBodyPart(i);
|
||||
// if (bodyPart.isMimeType("message/rfc822")) { if(bodyPart.getContentType().startsWith("Message/Rfc822"));
|
||||
// MimeMessage mimeMessage = new MimeMessage(session, bodyPart.getInputStream());
|
||||
// }
|
||||
if(bodyPart.isMimeType("Message/Rfc822")){
|
||||
MimeMessage mimeMessage = new MimeMessage(session, bodyPart.getInputStream());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public static String getMessageId(Part part) throws Exception {
|
||||
if (!part.isMimeType("multipart/*")) {
|
||||
return "";
|
||||
}
|
||||
|
||||
Multipart multipart = (Multipart) part.getContent();
|
||||
for (int i = 0; i < multipart.getCount(); i++) {
|
||||
BodyPart bodyPart = multipart.getBodyPart(i);
|
||||
|
||||
if (part.isMimeType("message/rfc822")) {
|
||||
return getMessageId((Part) part.getContent());
|
||||
}
|
||||
InputStream inputStream = bodyPart.getInputStream();
|
||||
|
||||
try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) {
|
||||
String strLine;
|
||||
while ((strLine = br.readLine()) != null) {
|
||||
if (strLine.startsWith("Message_Id:")) {
|
||||
String[] split = strLine.split("Message_Id:");
|
||||
return split.length > 1 ? split[1].trim() : null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
//检查退信邮件
|
||||
// Folder folder = ...; //打开收件箱
|
||||
// Message[] messages = folder.getMessages();
|
||||
// for (Message message : messages) {
|
||||
// if (message.getSubject().contains("Delivery Status Notification")) {
|
||||
// System.out.println("Delivery failed for recipient: " + message.getRecipients()[0]);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import javax.mail.*;
|
||||
import javax.mail.internet.MimeMessage;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
|
||||
@Slf4j
|
||||
public final class EmailUtil {
|
||||
|
||||
private static final String multipart = "multipart/*";
|
||||
|
||||
|
||||
|
||||
public static String getMessageId(Part part, Session session) throws Exception {
|
||||
if (!part.isMimeType(multipart)) {
|
||||
return "";
|
||||
|
||||
}
|
||||
|
||||
Multipart multipart = (Multipart) part.getContent();
|
||||
for (int i = 0; i < multipart.getCount(); i++) {
|
||||
BodyPart bodyPart = multipart.getBodyPart(i);
|
||||
if(bodyPart.getContentType().contains("Message/Rfc822")){
|
||||
MimeMessage mimeMessage = new MimeMessage(session, bodyPart.getInputStream());
|
||||
if(mimeMessage.getSubject()!=null&&mimeMessage.getSubject().contains("裁决书")){
|
||||
String[] split = mimeMessage.getSubject().split("裁决书");
|
||||
if(split.length>0){
|
||||
return split[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
} return "";
|
||||
}
|
||||
|
||||
public static boolean isContainAttachment(Part part) {
|
||||
boolean attachFlag = false;
|
||||
try {
|
||||
if (part.isMimeType(multipart)) {
|
||||
Multipart mp = (Multipart) part.getContent();
|
||||
for (int i = 0; i < mp.getCount(); i++) {
|
||||
BodyPart mpart = mp.getBodyPart(i);
|
||||
String disposition = mpart.getDisposition();
|
||||
if ((disposition != null) && ((disposition.equals(Part.ATTACHMENT)) || (disposition.equals(Part.INLINE))))
|
||||
attachFlag = true;
|
||||
else if (mpart.isMimeType(multipart)) {
|
||||
attachFlag = isContainAttachment((Part) mpart);
|
||||
} else {
|
||||
String contype = mpart.getContentType();
|
||||
if (contype.toLowerCase().contains("application"))
|
||||
attachFlag = true;
|
||||
if (contype.toLowerCase().contains("name"))
|
||||
attachFlag = true;
|
||||
}
|
||||
}
|
||||
} else if (part.isMimeType("message/rfc822")) {
|
||||
attachFlag = isContainAttachment((Part) part.getContent());
|
||||
}
|
||||
} catch (MessagingException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return attachFlag;
|
||||
}
|
||||
}
|
||||
+19
-9
@@ -1,5 +1,13 @@
|
||||
package com.ruoyi.wisdomarbitrate.utils;
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
|
||||
import com.ruoyi.common.constant.EsignEncryption;
|
||||
import com.ruoyi.common.constant.EsignHeaderConstant;
|
||||
import com.ruoyi.common.constant.EsignHttpCfgHelper;
|
||||
import com.ruoyi.common.core.domain.entity.EsignCoreSdkInfo;
|
||||
import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
|
||||
import com.ruoyi.common.enums.EsignRequestType;
|
||||
import com.ruoyi.common.exception.EsignDemoException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -28,11 +36,13 @@ public class EsignHttpHelper {
|
||||
* @param url 请求路径
|
||||
* @param paramStr 请求参数
|
||||
* @return
|
||||
* @throws EsignInterfacException
|
||||
* @throws EsignDemoException
|
||||
* @author 澄泓
|
||||
*/
|
||||
public static EsignHttpResponse doCommHttp(String host, String url,EsignRequestType reqType, Object paramStr ,Map<String,String> httpHeader,boolean debug) throws EsignInterfacException {
|
||||
public static EsignHttpResponse doCommHttp(String host, String url, EsignRequestType reqType, Object paramStr , Map<String,String> httpHeader, boolean debug) throws EsignDemoException {
|
||||
|
||||
return EsignHttpCfgHelper.sendHttp(reqType, host+url,httpHeader, paramStr, debug);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -45,11 +55,11 @@ public class EsignHttpHelper {
|
||||
* @param fileContentMd5 文件fileContentMd5
|
||||
* @param contentType 文件MIME类型
|
||||
* @return
|
||||
* @throws EsignInterfacException
|
||||
* @throws EsignDemoException
|
||||
* @author 澄泓
|
||||
*/
|
||||
public static EsignHttpResponse doUploadHttp( String uploadUrl,EsignRequestType reqType,byte[] param, String fileContentMd5,
|
||||
String contentType, boolean debug) throws EsignInterfacException {
|
||||
String contentType, boolean debug) throws EsignDemoException {
|
||||
Map<String, String> uploadHeader = buildUploadHeader(fileContentMd5, contentType);
|
||||
if(debug){
|
||||
LOGGER.info("----------------------------start------------------------");
|
||||
@@ -86,7 +96,7 @@ public class EsignHttpHelper {
|
||||
* * charset}
|
||||
* @return
|
||||
*/
|
||||
public static Map<String,String> signAndBuildSignAndJsonHeader(String projectId, String secret,String paramStr,String httpMethod,String url,boolean debug) throws EsignInterfacException {
|
||||
public static Map<String,String> signAndBuildSignAndJsonHeader(String projectId, String secret,String paramStr,String httpMethod,String url,boolean debug) throws EsignDemoException {
|
||||
String contentMD5="";
|
||||
//统一转大写处理
|
||||
httpMethod = httpMethod.toUpperCase();
|
||||
@@ -95,9 +105,9 @@ public class EsignHttpHelper {
|
||||
contentMD5="";
|
||||
} else if("PUT".equals(httpMethod)||"POST".equals(httpMethod)){
|
||||
//对body体做md5摘要
|
||||
contentMD5=EsignEncryption.doContentMD5(paramStr);
|
||||
contentMD5= EsignEncryption.doContentMD5(paramStr);
|
||||
}else{
|
||||
throw new EsignInterfacException(String.format("不支持的请求方法%s",httpMethod));
|
||||
throw new EsignDemoException(String.format("不支持的请求方法%s",httpMethod));
|
||||
}
|
||||
//构造一个初步的请求头
|
||||
Map<String, String> esignHeaderMap = buildSignAndJsonHeader(projectId, contentMD5, EsignHeaderConstant.ACCEPT.VALUE(), EsignHeaderConstant.CONTENTTYPE_JSON.VALUE(), EsignHeaderConstant.AUTHMODE.VALUE());
|
||||
@@ -127,7 +137,7 @@ public class EsignHttpHelper {
|
||||
*/
|
||||
public static Map<String, String> buildTokenAndJsonHeader(String appid,String token) {
|
||||
Map<String, String> esignHeader = new HashMap<>();
|
||||
esignHeader.put("X-Tsign-Open-Version-Sdk",EsignCoreSdkInfo.getSdkVersion());
|
||||
esignHeader.put("X-Tsign-Open-Version-Sdk", EsignCoreSdkInfo.getSdkVersion());
|
||||
esignHeader.put("Content-Type", EsignHeaderConstant.CONTENTTYPE_JSON.VALUE());
|
||||
esignHeader.put("X-Tsign-Open-App-Id", appid);
|
||||
esignHeader.put("X-Tsign-Open-Token", token);
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description 根据身份证号提取有效信息
|
||||
* @date 2023-12-11 11:45
|
||||
*/
|
||||
public class IdCardUtils {
|
||||
/**
|
||||
* 通过身份证号码获取出生日期、性别、年龄
|
||||
* @param certificateNo
|
||||
* @return 返回的出生日期格式:1990-01-01 性别格式:1-女,0-男
|
||||
*/
|
||||
public static Map<String, String> getBirAgeSex(String certificateNo) {
|
||||
String birthday = "";
|
||||
String age = "";
|
||||
String sexCode = "";
|
||||
|
||||
int year = Calendar.getInstance().get(Calendar.YEAR);
|
||||
char[] number = certificateNo.toCharArray();
|
||||
boolean flag = true;
|
||||
if (number.length == 15) {
|
||||
for (int x = 0; x < number.length; x++) {
|
||||
if (!flag) return new HashMap<String, String>();
|
||||
flag = Character.isDigit(number[x]);
|
||||
}
|
||||
} else if (number.length == 18) {
|
||||
for (int x = 0; x < number.length - 1; x++) {
|
||||
if (!flag) return new HashMap<String, String>();
|
||||
flag = Character.isDigit(number[x]);
|
||||
}
|
||||
}
|
||||
if (flag && certificateNo.length() == 15) {
|
||||
birthday = "19" + certificateNo.substring(6, 8) + "-"
|
||||
+ certificateNo.substring(8, 10) + "-"
|
||||
+ certificateNo.substring(10, 12);
|
||||
sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() - 3, certificateNo.length())) % 2 == 0 ? "1" : "0";
|
||||
age = (year - Integer.parseInt("19" + certificateNo.substring(6, 8))) + "";
|
||||
} else if (flag && certificateNo.length() == 18) {
|
||||
birthday = certificateNo.substring(6, 10) + "-"
|
||||
+ certificateNo.substring(10, 12) + "-"
|
||||
+ certificateNo.substring(12, 14);
|
||||
sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() - 4, certificateNo.length() - 1)) % 2 == 0 ? "1" : "0";
|
||||
age = (year - Integer.parseInt(certificateNo.substring(6, 10))) + "";
|
||||
}
|
||||
Map<String, String> map = new HashMap<String, String>();
|
||||
map.put("birthday", birthday);
|
||||
map.put("age", age);
|
||||
map.put("sexCode", sexCode);
|
||||
return map;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import cn.hutool.core.lang.Snowflake;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.ruoyi.common.utils.uuid.UUID;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* 雪花算法工具类
|
||||
* zq
|
||||
* @since 2020/10/30 9:59
|
||||
**/
|
||||
public class IdWorkerUtil {
|
||||
private static final long EPOCH = 1479533469598L; //开始时间,固定一个小于当前时间的毫秒数
|
||||
private static final int max12bit = 4095;
|
||||
private static final long max41bit= 1099511627775L;
|
||||
private static String machineId = "" ; // 机器ID
|
||||
|
||||
/**
|
||||
*
|
||||
* 创建ID
|
||||
*
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
public static Long getId(){
|
||||
|
||||
long time = System.currentTimeMillis() - EPOCH + max41bit;
|
||||
// 二进制的 毫秒级时间戳
|
||||
String base = Long.toBinaryString(time);
|
||||
|
||||
// 序列数
|
||||
String randomStr = StringUtils.leftPad(Integer.toBinaryString(new Random().nextInt(max12bit)),12,'0');
|
||||
if(StringUtils.isNotEmpty(machineId)){
|
||||
machineId = StringUtils.leftPad(machineId, 10, '0');
|
||||
}
|
||||
|
||||
//拼接
|
||||
String appendStr = base + machineId + randomStr;
|
||||
// 转化为十进制 返回
|
||||
BigInteger bi = new BigInteger(appendStr, 2);
|
||||
|
||||
return Long.valueOf(bi.toString());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.NumberFormat;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description 金额格式化
|
||||
* @date 2023-12-11 11:45
|
||||
*/
|
||||
public class MoneyFormatUtils {
|
||||
|
||||
/**
|
||||
* 增加千分位
|
||||
* @param money
|
||||
* @return
|
||||
*/
|
||||
public static String moneyFormat(String money) {
|
||||
// 金额格式化
|
||||
try {
|
||||
Double.parseDouble(money);
|
||||
|
||||
} catch (NumberFormatException e) {
|
||||
|
||||
String regEx = "[^0-9]";
|
||||
Pattern p = Pattern.compile(regEx);
|
||||
Matcher m = p.matcher(money);
|
||||
String result = m.replaceAll("").trim();
|
||||
BigDecimal bigDecimal = null;
|
||||
if (money.contains("百")) {
|
||||
bigDecimal = new BigDecimal(result).multiply(new BigDecimal("100"));
|
||||
} else if (money.contains("千")) {
|
||||
bigDecimal = new BigDecimal(result).multiply(new BigDecimal("1000"));
|
||||
} else if (money.contains("万")) {
|
||||
bigDecimal = new BigDecimal(result).multiply(new BigDecimal("10000"));
|
||||
} else if (money.contains("百万")) {
|
||||
bigDecimal = new BigDecimal(result).multiply(new BigDecimal("1000000"));
|
||||
} else if (money.contains("千万")) {
|
||||
bigDecimal = new BigDecimal(result).multiply(new BigDecimal("10000000"));
|
||||
} else if (money.contains("亿")) {
|
||||
bigDecimal = new BigDecimal(result).multiply(new BigDecimal("100000000"));
|
||||
}
|
||||
|
||||
NumberFormat format = NumberFormat.getInstance();
|
||||
return format.format(bigDecimal);
|
||||
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* 反射工具类
|
||||
*/
|
||||
public class ObjectFieldUtils {
|
||||
public static String getValue(Object obj,String fieldName){
|
||||
if(obj==null || StrUtil.isEmpty(fieldName)){
|
||||
return "";
|
||||
}
|
||||
Field field=null;
|
||||
try{
|
||||
field=obj.getClass().getDeclaredField(fieldName);
|
||||
field.setAccessible(true);
|
||||
return String.valueOf(field.get(obj)==null?"":field.get(obj));
|
||||
}catch (Exception e){
|
||||
if(obj.getClass().getSuperclass()!=Object.class){
|
||||
try{
|
||||
field=obj.getClass().getSuperclass().getDeclaredField(fieldName);
|
||||
field.setAccessible(true);
|
||||
return String.valueOf(field.get(obj)==null?"":field.get(obj));
|
||||
}catch (Exception e1){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void setValue(Object obj,String fieldName,Object value){
|
||||
if(obj==null || StrUtil.isEmpty(fieldName)||value==null){
|
||||
return;
|
||||
}
|
||||
Field field=null;
|
||||
try{
|
||||
field=obj.getClass().getDeclaredField(fieldName);
|
||||
field.setAccessible(true);
|
||||
field.set(obj,value);
|
||||
}catch (Exception e){
|
||||
if(obj.getClass().getSuperclass()!=Object.class){
|
||||
try{
|
||||
field=obj.getClass().getSuperclass().getDeclaredField(fieldName);
|
||||
field.setAccessible(true);
|
||||
field.set(obj,value);
|
||||
}catch (Exception e1){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,147 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import com.documents4j.api.DocumentType;
|
||||
import com.documents4j.api.IConverter;
|
||||
import com.documents4j.job.LocalConverter;
|
||||
import com.itextpdf.text.Document;
|
||||
import com.itextpdf.text.Font;
|
||||
import com.itextpdf.text.PageSize;
|
||||
import com.itextpdf.text.pdf.BaseFont;
|
||||
import com.itextpdf.text.pdf.PdfWriter;
|
||||
import com.itextpdf.tool.xml.XMLWorkerFontProvider;
|
||||
import com.itextpdf.tool.xml.XMLWorkerHelper;
|
||||
import com.ruoyi.common.config.RuoYiConfig;
|
||||
import com.tencentcloudapi.teo.v20220901.models.CC;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.Files;
|
||||
|
||||
import static cn.hutool.core.util.ClassLoaderUtil.getClassLoader;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description pdf转换工具类
|
||||
* @date 2023-11-28 15:20
|
||||
*/
|
||||
@Slf4j
|
||||
public class PdfUtils {
|
||||
/**
|
||||
* 将html字符串转为pdf
|
||||
* @param pdfFilePath 保存的路径
|
||||
* @param htmlcontent:必须是完整的html格式,比如<html><body>123</body></html>
|
||||
*/
|
||||
public static boolean htmlStringConvertToPDF(String pdfFilePath, String htmlcontent) {
|
||||
Document document = new Document();
|
||||
PdfWriter writer = null;
|
||||
try {
|
||||
writer = PdfWriter.getInstance(document, new FileOutputStream(pdfFilePath));
|
||||
// 设置底部距离60,解决重叠问题
|
||||
|
||||
document.setPageSize(PageSize.A4);
|
||||
document.setMargins(50, 45, 50, 60);
|
||||
document.setMarginMirroring(false);
|
||||
document.open();
|
||||
// 解决PDF中文不显示
|
||||
String fontPath = "/home/ruoyi/uploadPath/songfont/simsun.ttf"; //字体文件路径
|
||||
XMLWorkerFontProvider provider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
|
||||
provider.register(fontPath);//注册字体
|
||||
log.error("注册字体");
|
||||
XMLWorkerHelper.getInstance().parseXHtml(writer, document, new ByteArrayInputStream(htmlcontent.getBytes("UTF-8")), Charset.forName("UTF-8"), provider);
|
||||
} catch (Exception e) {
|
||||
log.error("htmlStringConvertToPDF error", e.getMessage());
|
||||
return false;
|
||||
} finally {
|
||||
if (null != document) {
|
||||
document.close();
|
||||
}
|
||||
if (null != writer) {
|
||||
writer.close();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* 根据html文件生成pdf
|
||||
* @param pdfFilePath pdf文件生成路径
|
||||
* @param htmlFilePath html文件路径
|
||||
*/
|
||||
public static boolean htmlFileConvertToPDF(String pdfFilePath, String htmlFilePath) {
|
||||
Document document = new Document();
|
||||
PdfWriter writer = null;
|
||||
FileOutputStream fileOutputStream = null;
|
||||
FileInputStream fileInputStream = null;
|
||||
try {
|
||||
fileOutputStream = new FileOutputStream(pdfFilePath);
|
||||
writer = PdfWriter.getInstance(document, fileOutputStream);
|
||||
// 设置底部距离60,解决重叠问题
|
||||
document.setPageSize(PageSize.A4);
|
||||
document.setMargins(50, 45, 50, 60);
|
||||
document.setMarginMirroring(false);
|
||||
document.open();
|
||||
StringBuffer sb = new StringBuffer();
|
||||
fileInputStream = new FileInputStream(htmlFilePath);
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(fileInputStream, "UTF-8"));
|
||||
String readStr = "";
|
||||
while ((readStr = br.readLine()) != null) {
|
||||
sb.append(readStr);
|
||||
}
|
||||
XMLWorkerHelper.getInstance().parseXHtml(writer, document, new ByteArrayInputStream(sb.toString().getBytes("Utf-8")), null, Charset.forName("UTF-8"));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (null != document) {
|
||||
document.close();
|
||||
}
|
||||
if (null != writer) {
|
||||
writer.close();
|
||||
}
|
||||
if (null != fileInputStream) {
|
||||
try {
|
||||
fileInputStream.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (null != fileOutputStream) {
|
||||
try {
|
||||
fileOutputStream.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* docx转pdf
|
||||
* @param pdfSaveDirectory:文件保存目录,例:D:\\pdf\\
|
||||
* @param fileName:保存的文件名称,例:test.pdf
|
||||
* @param docxFile:需要转换的docx文件
|
||||
* @return
|
||||
*/
|
||||
private static boolean docxConvertToPDF(String pdfSaveDirectory,String fileName,File docxFile) {
|
||||
// 不存在则新建
|
||||
File directory = new File(pdfSaveDirectory);
|
||||
if (!directory.exists()) {
|
||||
directory.mkdirs();
|
||||
}
|
||||
String pdfFilePath = pdfSaveDirectory + fileName;
|
||||
File outputFile = new File(pdfFilePath);
|
||||
try {
|
||||
InputStream docxInputStream = Files.newInputStream(docxFile.toPath());
|
||||
OutputStream outputStream = Files.newOutputStream(outputFile.toPath());
|
||||
IConverter converter = LocalConverter.builder().build();
|
||||
converter.convert(docxInputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute();
|
||||
docxInputStream.close();
|
||||
outputStream.close();
|
||||
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import org.apache.poi.hwpf.extractor.WordExtractor;
|
||||
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description 读取文件内容
|
||||
* @date 2023-12-11 11:45
|
||||
*/
|
||||
public class ReadFileUtils {
|
||||
|
||||
|
||||
public static String readerTxtFile(String filePath){
|
||||
BufferedReader br=null;
|
||||
StringBuilder result=new StringBuilder();
|
||||
try {
|
||||
br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(filePath)),"GBK"));
|
||||
String line=null;
|
||||
while ((line=br.readLine())!=null) {
|
||||
result.append(line).append("\n");
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (null!=br){
|
||||
try {
|
||||
br.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
public static String readWord(String filePath) throws Exception{
|
||||
|
||||
File file = new File(filePath);
|
||||
if(file.length()==0) return ""; // 需要操作原因是可能会空文件问题,如果不做处理,在下面读取中会报错
|
||||
StringBuffer sb = new StringBuffer();
|
||||
String buffer = "";
|
||||
try {
|
||||
if (filePath.endsWith(".doc")) {
|
||||
InputStream is = new FileInputStream(file);
|
||||
WordExtractor ex = new WordExtractor(is);
|
||||
buffer = ex.getText();
|
||||
if(buffer.length() > 0){
|
||||
//使用回车换行符分割字符串
|
||||
String [] arry = buffer.split("r\\n");
|
||||
for (String string : arry) {
|
||||
sb.append(string.trim());
|
||||
}
|
||||
}
|
||||
} else if (filePath.endsWith(".docx")) {
|
||||
FileInputStream fis = new FileInputStream(file);
|
||||
XWPFDocument xdoc = new XWPFDocument(fis);
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(xdoc);
|
||||
buffer = extractor.getText();
|
||||
sb.append(buffer!=null?buffer:"");
|
||||
|
||||
|
||||
// OPCPackage opcPackage = POIXMLDocument.openPackage(filePath);
|
||||
// XWPFWordExtractor extractor = new XWPFWordExtractor(opcPackage);
|
||||
// buffer = extractor.getText();
|
||||
// if(buffer.length() > 0){
|
||||
// //使用换行符分割字符串
|
||||
// String [] arry = buffer.split("\n");
|
||||
// for (String string : arry) {
|
||||
// sb.append(string.trim());
|
||||
// }
|
||||
// }
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
return sb.toString();
|
||||
} catch (Exception e) {
|
||||
System.out.print("error---->"+filePath);
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import com.ruoyi.common.config.EsignDemoConfig;
|
||||
import com.ruoyi.common.constant.EsignHeaderConstant;
|
||||
import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
|
||||
import com.ruoyi.common.enums.EsignRequestType;
|
||||
import com.ruoyi.common.exception.EsignDemoException;
|
||||
import com.ruoyi.common.utils.bean.EsignFileBean;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class SealUtil {
|
||||
private static String eSignHost = EsignDemoConfig.EsignHost;
|
||||
private static String eSignAppId = EsignDemoConfig.EsignAppId;
|
||||
private static String eSignAppSecret = EsignDemoConfig.EsignAppSecret;
|
||||
|
||||
/**
|
||||
* 获取机构认证&授权页面链接
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static EsignHttpResponse getOrgEmpower() throws EsignDemoException {
|
||||
String apiaddr = "/v3/org-auth-url";
|
||||
String nickName = "何进波";
|
||||
String phonenumber = "15191509780";
|
||||
String deptName = "西安云美公司";
|
||||
String jsonParm = "{\n" +
|
||||
" \"orgAuthConfig\": {\n" +
|
||||
" \"orgName\": \"" + deptName + " \",\n" +
|
||||
" \"transactorInfo\": {\n" +
|
||||
" \"psnAccount\": \"" + phonenumber + "\",\n" +
|
||||
" \"psnInfo\": {\n" +
|
||||
" \"psnName\": \"" + nickName + "\",\n" +
|
||||
" \"psnMobile\": \"" + phonenumber + "\"\n" +
|
||||
" }\n" +
|
||||
" }\n" +
|
||||
" },\n" +
|
||||
" \"authorizeConfig\": {\n" +
|
||||
" \"authorizedScopes\": [\n" +
|
||||
" \"get_org_identity_info\",\n" +
|
||||
" \"get_psn_identity_info\",\n" +
|
||||
" \"org_initiate_sign\",\n" +
|
||||
" \"psn_initiate_sign\",\n" +
|
||||
" \"manage_org_resource\",\n" +
|
||||
" \"manage_psn_resource\",\n" +
|
||||
" \"use_org_order\"\n" +
|
||||
" ]\n" +
|
||||
" }\n" +
|
||||
"}";
|
||||
//请求方法
|
||||
EsignRequestType requestType = EsignRequestType.POST;
|
||||
//生成请求签名鉴权方式的Header
|
||||
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
|
||||
//发起接口请求
|
||||
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
|
||||
|
||||
}
|
||||
/**
|
||||
* 查询认证授权流程详情
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static EsignHttpResponse queryAuthProcess(String authFlowId ) throws EsignDemoException {
|
||||
String apiaddr = "/v3/auth-flow/" + authFlowId;
|
||||
//请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
|
||||
String jsonParm=null;
|
||||
//请求方法
|
||||
EsignRequestType requestType= EsignRequestType.GET;
|
||||
//生成签名鉴权方式的的header
|
||||
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
|
||||
//发起接口请求
|
||||
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 步骤一:获取印章图片上传地址fileUploadUrl
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static EsignHttpResponse getFileUploadUrl(String filePath) throws EsignDemoException {
|
||||
//自定义的文件封装类,传入文件地址可以获取文件的名称大小,文件流等数据
|
||||
EsignFileBean esignFileBean = new EsignFileBean(filePath);
|
||||
String apiaddr="/v3/files/file-key";
|
||||
//请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
|
||||
String jsonParm="{\n" +
|
||||
" \"contentMd5\": \""+esignFileBean.getFileContentMD5()+"\",\n" +
|
||||
" \"fileName\":\""+esignFileBean.getFileName()+"\"," +
|
||||
" \"fileSize\": "+esignFileBean.getFileSize()+",\n" +
|
||||
" \"contentType\": \""+ EsignHeaderConstant.CONTENTTYPE_STREAM.VALUE()+"\"\n" +
|
||||
"}";
|
||||
//请求方法
|
||||
EsignRequestType requestType= EsignRequestType.POST;
|
||||
//生成签名鉴权方式的的header
|
||||
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
|
||||
//发起接口请求
|
||||
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 步骤二:将印章图片文件流上传到fileUploadUrl
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static EsignHttpResponse fileStreamUpload(String uploadUrl,String filePath) throws EsignDemoException {
|
||||
//根据文件地址获取文件contentMd5
|
||||
EsignFileBean esignFileBean = new EsignFileBean(filePath);
|
||||
//请求方法
|
||||
EsignRequestType requestType= EsignRequestType.PUT;
|
||||
return EsignHttpHelper.doUploadHttp(uploadUrl,requestType,esignFileBean.getFileBytes(),esignFileBean.getFileContentMD5(), EsignHeaderConstant.CONTENTTYPE_STREAM.VALUE(),true);
|
||||
}
|
||||
public static void main(String[] args) throws Exception {
|
||||
queryAuthProcess("OF-2b1e52987408005c");
|
||||
// createOrgByImage();
|
||||
// getOrgEmpower();
|
||||
// queryAuthProcess("OF-2b00885895080028");
|
||||
// getFileUploadUrl();
|
||||
// String uplodUrl = "https://esignoss.esign.cn/7438987614/8e278262-5960-4004-bff3-297c11e2652e/Snipaste_2023-10-27_09-59-23.jpg?Expires=1699439095&OSSAccessKeyId=STS.NTZ8NBHcTVQXgsxVRH4iyC5AY&Signature=3yu3ZQifphZsnOgN0CI0SJdqFhY%3D&callback-var=eyJ4OmZpbGVfa2V5IjoiJDliM2Y3ZjkyLTdkOWUtNGZkZi04NWU4LWE4ZDU4MzEwZjIzOCQ0MTQwNTE2ODk5In0%3D%0A&callback=eyJjYWxsYmFja1VybCI6Imh0dHA6Ly9zbWx0YXBpLnRzaWduLmNuL2FueWRvb3IvZmlsZS1zeXN0ZW0vY2FsbGJhY2svYWxpb3NzIiwiY2FsbGJhY2tCb2R5IjogIntcIm1pbWVUeXBlXCI6JHttaW1lVHlwZX0sXCJzaXplXCI6ICR7c2l6ZX0sXCJidWNrZXRcIjogJHtidWNrZXR9LFwib2JqZWN0XCI6ICR7b2JqZWN0fSxcImV0YWdcIjogJHtldGFnfSxcImZpbGVfa2V5XCI6JHt4OmZpbGVfa2V5fX0iLCJjYWxsYmFja0JvZHlUeXBlIjogImFwcGxpY2F0aW9uL2pzb24ifQ%3D%3D%0A&security-token=CAIS%2BAF1q6Ft5B2yfSjIr5fvc%2FT2pbx14ZOzZVXJslIdOOZVrPDquzz2IHtKdXRvBu8Xs%2F4wnmxX7f4YlqB6T55OSAmcNZEoWWWTbdH4MeT7oMWQweEurv%2FMQBqyaXPS2MvVfJ%2BOLrf0ceusbFbpjzJ6xaCAGxypQ12iN%2B%2Fm6%2FNgdc9FHHPPD1x8CcxROxFppeIDKHLVLozNCBPxhXfKB0ca0WgVy0EHsPnvm5DNs0uH1AKjkbRM9r6ceMb0M5NeW75kSMqw0eBMca7M7TVd8RAi9t0t1%2FIVpGiY4YDAWQYLv0rda7DOltFiMkpla7MmXqlft%2BhzcgeQY0pc%2FRqAAXGx8FDtPQxW3RSasFgOFBJaxbYjH3WFFrbV25v8a%2BS9OWPAYqOCvmkxbM7N4hOge2iaBAG4SRLMb6ypPJ15YEpoZI8KkdeDvQJryZEWchmc0Lhz0yDRqrN%2BzYhgu4VpBJu1WJg%2FyXrvAZ0gWhBN%2BILrblSR9QHVWVVYZTAKN4ejIAA%3D";
|
||||
// fileStreamUpload(uplodUrl,"D:\\develop\\Snipaste_2023-10-27_09-59-23.jpg");
|
||||
}
|
||||
}
|
||||
@@ -1,360 +0,0 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
|
||||
import com.ruoyi.common.enums.EsignRequestType;
|
||||
import com.ruoyi.common.exception.EsignDemoException;
|
||||
import com.ruoyi.common.utils.bean.SealSignRecord;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class SignAward {
|
||||
|
||||
private static String eSignHost= EsignApplicaConfig.EsignHost;
|
||||
private static String eSignAppId=EsignApplicaConfig.EsignAppId;
|
||||
private static String eSignAppSecret=EsignApplicaConfig.EsignAppSecret;
|
||||
// public static String fileId = "95d0c307d91e4985bdb8874f6f84daa5";
|
||||
public static String fileId = "a0c2ad21065f48ff8b872412c39d5d3a";
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) throws EsignDemoException {
|
||||
Gson gson = new Gson();
|
||||
|
||||
SealSignRecord sealSignRecord = new SealSignRecord();
|
||||
|
||||
sealSignRecord.setFileid("a808f1f39a744357a2f018e4ab34c55d");
|
||||
sealSignRecord.setFilename("23893bfd3f2249ffa5c82850c11c482e.pdf");
|
||||
sealSignRecord.setSignFlowid("41e6732b48c54c63a91b2379c352212d");
|
||||
|
||||
|
||||
sealSignRecord.setPensonAccount("18209231185");
|
||||
sealSignRecord.setPensonName("秦桃则");
|
||||
sealSignRecord.setOrgnizeName("西安云美电子科技有限公司");
|
||||
sealSignRecord.setOrgnizeNamePsnAccount("17691338406");
|
||||
sealSignRecord.setOrgnizeNamepsnName("韩超勃");
|
||||
sealSignRecord.setPositionPagepsn("2");
|
||||
|
||||
sealSignRecord.setPositionXpsn(279+20);
|
||||
sealSignRecord.setPositionYpsn(216.336-20);
|
||||
|
||||
sealSignRecord.setPositionPageorg("2");
|
||||
|
||||
sealSignRecord.setPositionXorg(342+30);
|
||||
sealSignRecord.setPositionYorg(185.136);
|
||||
|
||||
|
||||
|
||||
|
||||
/* 发起签署*/
|
||||
// EsignHttpResponse createByFile = createByFile(sealSignRecord);
|
||||
// JsonObject createByFileJsonObject = gson.fromJson(createByFile.getBody(), JsonObject.class);
|
||||
// JsonObject createByFileData = createByFileJsonObject.getAsJsonObject("data");
|
||||
// String signFlowId = createByFileData.get("signFlowId").getAsString();
|
||||
// System.err.println("流程id:"+signFlowId);
|
||||
|
||||
/* 获取文件签名印章位置*/
|
||||
EsignHttpResponse positions = getPositions(sealSignRecord);
|
||||
JsonObject positionsJsonObject = gson.fromJson(positions.getBody(), JsonObject.class);
|
||||
JsonObject positionsData = positionsJsonObject.getAsJsonObject("data");
|
||||
JsonArray keywordPositions = positionsData.get("keywordPositions").getAsJsonArray();
|
||||
System.out.println("获取文件签名印章位置:" +keywordPositions.toString());
|
||||
|
||||
// String signFlowId = "c9955453716344f9971d308abdc13464";
|
||||
//获取合同文件签名链接
|
||||
// EsignHttpResponse signUrl = signUrl(sealSignRecord);
|
||||
// JsonObject signUrlJsonObject = gson.fromJson(signUrl.getBody(), JsonObject.class);
|
||||
// JsonObject signUrlData = signUrlJsonObject.getAsJsonObject("data");
|
||||
// String shortUrl = signUrlData.get("shortUrl").getAsString();
|
||||
// String url = signUrlData.get("url").getAsString();
|
||||
// System.out.println("签署短链接:" +shortUrl);
|
||||
// System.out.println("签署长链接:"+url);
|
||||
|
||||
//获取合同文件用印链接
|
||||
// EsignHttpResponse usesealUrl = usesealUrl(sealSignRecord);
|
||||
// JsonObject usesealUrlJsonObject = gson.fromJson(usesealUrl.getBody(), JsonObject.class);
|
||||
// JsonObject usesealUrlData = usesealUrlJsonObject.getAsJsonObject("data");
|
||||
// String shortusesealUrl = usesealUrlData.get("shortUrl").getAsString();
|
||||
// String sealUrl = usesealUrlData.get("url").getAsString();
|
||||
// System.out.println("签署长链接:" +shortusesealUrl);
|
||||
// System.out.println("签署短链接:"+sealUrl);
|
||||
|
||||
//查询签署流程详情
|
||||
// EsignHttpResponse signFlowDetail = signFlowDetail(sealSignRecord);
|
||||
// JsonObject signFlowDetailJsonObject = gson.fromJson(signFlowDetail.getBody(),JsonObject.class);
|
||||
// System.out.println(signFlowDetailJsonObject);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询签署流程详情
|
||||
* @return
|
||||
*/
|
||||
public static EsignHttpResponse signFlowDetail(SealSignRecord sealSignRecord) throws EsignDemoException {
|
||||
String signFlowId = sealSignRecord.getSignFlowid();
|
||||
String apiaddr= "/v3/sign-flow/"+ signFlowId + "/detail";
|
||||
String jsonParm = null;
|
||||
//请求方法
|
||||
EsignRequestType requestType = EsignRequestType.GET;
|
||||
//生成签名鉴权方式的的header
|
||||
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
|
||||
//发起接口请求
|
||||
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 发起签署
|
||||
* @return
|
||||
* @throws EsignDemoException
|
||||
*/
|
||||
public static EsignHttpResponse createByFile(SealSignRecord sealSignRecord) throws EsignDemoException {
|
||||
String apiaddr = "/v3/sign-flow/create-by-file";
|
||||
|
||||
String fileId = sealSignRecord.getFileid();
|
||||
String fileName = sealSignRecord.getFilename();
|
||||
|
||||
String psnAccount = sealSignRecord.getPensonAccount();
|
||||
String psnName = sealSignRecord.getPensonName();
|
||||
|
||||
String orgName = sealSignRecord.getOrgnizeName();
|
||||
String orgNamePsnAccount = sealSignRecord.getOrgnizeNamePsnAccount();
|
||||
String orgNamepsnName = sealSignRecord.getOrgnizeNamepsnName();
|
||||
|
||||
String positionPagepsn = sealSignRecord.getPositionPagepsn();
|
||||
double positionXpsn = sealSignRecord.getPositionXpsn();
|
||||
double positionYpsn = sealSignRecord.getPositionYpsn();
|
||||
|
||||
String positionPageorg = sealSignRecord.getPositionPageorg();
|
||||
double positionXorg = sealSignRecord.getPositionXorg();
|
||||
double positionYorg = sealSignRecord.getPositionYorg();
|
||||
|
||||
|
||||
String jsonParm = "{\n" +
|
||||
" \"docs\": [\n" +
|
||||
" {\n" +
|
||||
|
||||
// " \"fileId\": \"5bd34a81e8084acaab3287c019e82fe8\",\n" +
|
||||
" \"fileId\": \"" + fileId + "\",\n" +
|
||||
|
||||
// " \"fileName\": \"477470a7741b4536a200c792b6ddf966.pdf\"\n" +
|
||||
" \"fileName\": \"" + fileName + "\"\n" +
|
||||
|
||||
" }\n" +
|
||||
" ],\n" +
|
||||
" \"signFlowConfig\": {\n" +
|
||||
" \"signFlowTitle\": \"测试合同\",\n" +
|
||||
" \"autoStart\": true,\n" +
|
||||
" \"authConfig\": {\n" +
|
||||
" \"willingnessAuthModes\": [\n" +
|
||||
" \"CODE_SMS\"\n" +
|
||||
" ],\n" +
|
||||
" \"psnAvailableAuthModes\": [\n" +
|
||||
" \"PSN_MOBILE3\"\n" +
|
||||
" ],\n" +
|
||||
" \"orgAvailableAuthModes\": [\n" +
|
||||
" \"ORG_LEGALREP\"\n" +
|
||||
" ]\n" +
|
||||
" },\n" +
|
||||
" \"autoFinish\": true\n" +
|
||||
" },\n" +
|
||||
|
||||
" \"signers\": [\n" +
|
||||
|
||||
" {\n" +
|
||||
|
||||
" \"psnSignerInfo\": {\n" +
|
||||
|
||||
// " \"psnAccount\": \"18209231185\",\n" +
|
||||
" \"psnAccount\": \"" + psnAccount + "\",\n" +
|
||||
|
||||
" \"psnInfo\": {\n" +
|
||||
|
||||
// " \"psnName\": \"秦桃则\"\n" +
|
||||
" \"psnName\": \"" + psnName + "\"\n" +
|
||||
" }\n" +
|
||||
|
||||
|
||||
" },\n" +
|
||||
|
||||
|
||||
" \"signFields\": [\n" +
|
||||
" {\n" +
|
||||
|
||||
// " \"fileId\": \"5bd34a81e8084acaab3287c019e82fe8\",\n" +
|
||||
" \"fileId\": \"" + fileId + "\",\n" +
|
||||
|
||||
" \"normalSignFieldConfig\": {\n" +
|
||||
" \"autoSign\": false,\n" +
|
||||
" \"freeMode\": false,\n" +
|
||||
" \"movableSignField\": false,\n" +
|
||||
" \"signFieldPosition\": {\n" +
|
||||
|
||||
// " \"positionPage\": \"2\",\n" +
|
||||
" \"positionPage\": \"" + positionPagepsn + "\",\n" +
|
||||
|
||||
// " \"positionX\": 310.0,\n" +
|
||||
" \"positionX\": " + positionXpsn + ",\n" +
|
||||
|
||||
// " \"positionY\": 247.536\n" +
|
||||
" \"positionY\": " + positionYpsn + "\n" +
|
||||
|
||||
" },\n" +
|
||||
" \"signFieldStyle\": 1\n" +
|
||||
" },\n" +
|
||||
" \"signFieldType\": 0\n" +
|
||||
" }\n" +
|
||||
" ],\n" +
|
||||
" \"signerType\": 0\n" +
|
||||
" },\n" +
|
||||
|
||||
|
||||
" {\n" +
|
||||
" \"orgSignerInfo\": {\n" +
|
||||
|
||||
// " \"orgName\": \"西安云美电子科技有限公司\",\n" +
|
||||
" \"orgName\": \"" + orgName + "\",\n" +
|
||||
|
||||
" \"transactorInfo\": {\n" +
|
||||
|
||||
|
||||
// " \"psnAccount\": \"17691338406\",\n" +
|
||||
" \"psnAccount\": \"" + orgNamePsnAccount + "\",\n" +
|
||||
|
||||
" \"psnInfo\": {\n" +
|
||||
|
||||
// " \"psnName\": \"韩超勃\"\n" +
|
||||
" \"psnName\": \"" + orgNamepsnName + "\"\n" +
|
||||
" }\n" +
|
||||
|
||||
" }\n" +
|
||||
" },\n" +
|
||||
|
||||
" \"signFields\": [\n" +
|
||||
" {\n" +
|
||||
|
||||
// " \"fileId\": \"5bd34a81e8084acaab3287c019e82fe8\",\n" +
|
||||
" \"fileId\": \"" + fileId + "\",\n" +
|
||||
|
||||
" \"normalSignFieldConfig\": {\n" +
|
||||
" \"autoSign\": false,\n" +
|
||||
" \"freeMode\": false,\n" +
|
||||
|
||||
" \"signFieldPosition\": {\n" +
|
||||
|
||||
// " \"positionPage\": \"2\",\n" +
|
||||
" \"positionPage\": \"" + positionPageorg + "\",\n" +
|
||||
|
||||
// " \"positionX\": 340.0,\n" +
|
||||
" \"positionX\": " + positionXorg + ",\n" +
|
||||
|
||||
// " \"positionY\": 340.736\n" +
|
||||
" \"positionY\": " + positionYorg + "\n" +
|
||||
" },\n" +
|
||||
" \"signFieldStyle\": 1\n" +
|
||||
" },\n" +
|
||||
" \"signFieldType\": 0\n" +
|
||||
" }\n" +
|
||||
" ],\n" +
|
||||
" \"signerType\": 1\n" +
|
||||
" }\n" +
|
||||
|
||||
" ]\n" +
|
||||
"}";
|
||||
|
||||
//请求方法
|
||||
EsignRequestType requestType = EsignRequestType.POST;
|
||||
//生成请求签名鉴权方式的Header
|
||||
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
|
||||
//发起接口请求
|
||||
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取合同文件签名链接
|
||||
* @return
|
||||
* @throws EsignDemoException
|
||||
*/
|
||||
public static EsignHttpResponse signUrl(SealSignRecord sealSignRecord) throws EsignDemoException {
|
||||
|
||||
String signFlowId = sealSignRecord.getSignFlowid();
|
||||
String psnAccount = sealSignRecord.getPensonAccount();
|
||||
|
||||
String apiaddr = "/v3/sign-flow/" + signFlowId + "/sign-url";
|
||||
String jsonParm = "{\n" +
|
||||
" \"operator\": {\n" +
|
||||
// " \"psnAccount\":\"18209231185\"\n" +
|
||||
" \"psnAccount\": \"" + psnAccount + "\"\n" +
|
||||
" }\n" +
|
||||
"}";
|
||||
//请求方法
|
||||
EsignRequestType requestType = EsignRequestType.POST;
|
||||
//生成请求签名鉴权方式的Header
|
||||
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
|
||||
//发起接口请求
|
||||
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取合同文件用印链接
|
||||
* @return
|
||||
* @throws EsignDemoException
|
||||
*/
|
||||
public static EsignHttpResponse usesealUrl(SealSignRecord sealSignRecord) throws EsignDemoException {
|
||||
String signFlowId = sealSignRecord.getSignFlowid();
|
||||
String apiaddr = "/v3/sign-flow/" + signFlowId + "/sign-url";
|
||||
|
||||
String psnAccount = sealSignRecord.getOrgnizeNamePsnAccount();
|
||||
String orgName = sealSignRecord.getOrgnizeName();
|
||||
|
||||
String jsonParm = "{\n" +
|
||||
// " \"needLogin\": true,\n" +
|
||||
" \"operator\": {\n" +
|
||||
|
||||
// " \"psnAccount\":\"17691338406\"\n" +
|
||||
" \"psnAccount\": \"" + psnAccount + "\"\n" +
|
||||
" },\n" +
|
||||
" \"organization\": {\n" +
|
||||
|
||||
// " \"orgName\": \"西安云美电子科技有限公司\"\n" +
|
||||
" \"orgName\": \"" + orgName + "\"\n" +
|
||||
|
||||
" }\n" +
|
||||
"}";
|
||||
//请求方法
|
||||
EsignRequestType requestType = EsignRequestType.POST;
|
||||
//生成请求签名鉴权方式的Header
|
||||
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
|
||||
//发起接口请求
|
||||
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件签名印章位置
|
||||
* @return
|
||||
* @throws EsignDemoException
|
||||
*/
|
||||
public static EsignHttpResponse getPositions(SealSignRecord sealSignRecord) throws EsignDemoException {
|
||||
String fileId = sealSignRecord.getFileid();
|
||||
String apiaddr = "/v3/files/" + fileId + "/keyword-positions";
|
||||
String jsonParm = "{\n" +
|
||||
" \"keywords\": [\n" +
|
||||
" \"仲裁员:\",\n" +
|
||||
" \"(仲裁委员会盖章)\"\n" +
|
||||
" ]\n" +
|
||||
"}";
|
||||
//请求方法
|
||||
EsignRequestType requestType = EsignRequestType.POST;
|
||||
//生成请求签名鉴权方式的Header
|
||||
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
|
||||
//发起接口请求
|
||||
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import com.tencentcloudapi.common.Credential;
|
||||
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
|
||||
import com.tencentcloudapi.common.profile.ClientProfile;
|
||||
import com.tencentcloudapi.common.profile.HttpProfile;
|
||||
import com.tencentcloudapi.cvm.v20170312.CvmClient;
|
||||
import com.tencentcloudapi.cvm.v20170312.models.DescribeRegionsRequest;
|
||||
import com.tencentcloudapi.cvm.v20170312.models.DescribeRegionsResponse;
|
||||
import com.tencentcloudapi.sms.v20210111.SmsClient;
|
||||
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
|
||||
import com.tencentcloudapi.sms.v20210111.models.SendStatus;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import lombok.var;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@Slf4j
|
||||
public class SmsUtils {
|
||||
//应用id
|
||||
private static final String SDK_APP_ID = "1400854852";
|
||||
//API的SecretId
|
||||
private static final String SECRET_ID = "AKIDeEf2A8uX1HSainvvnXAc3X9ZlhtyvkMp";
|
||||
//API的SecretKey
|
||||
private static final String SECRET_KEY = "QjphKo8zkHZigT8j9PVtFPJyfIvO3d6V";
|
||||
//签名内容
|
||||
private static final String SIGN_NAME = "西安云美电子科技有限公司";
|
||||
|
||||
public static Boolean sendSms(SendSmsRequest request) {
|
||||
Credential cred = new Credential(SECRET_ID, SECRET_KEY );
|
||||
|
||||
SmsClient client = new SmsClient(cred, "ap-guangzhou");
|
||||
|
||||
final var req = new com.tencentcloudapi.sms.v20210111.models.SendSmsRequest();
|
||||
req.setPhoneNumberSet(new String[]{"+86" + request.getPhone()});
|
||||
req.setSmsSdkAppId(SDK_APP_ID );
|
||||
req.setSignName(SIGN_NAME);
|
||||
req.setTemplateId(request.getTemplateId());
|
||||
req.setTemplateParamSet(request.getTemplateParamSet());
|
||||
SendSmsResponse res = null;
|
||||
try {
|
||||
res = client.SendSms(req);
|
||||
} catch (TencentCloudSDKException e) {
|
||||
log.error("发送短信出错:", e);
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
SendStatus sendStatus = res.getSendStatusSet()[0];
|
||||
log.info("发送短信结果:Code={}, Message={}", sendStatus.getCode(), sendStatus.getMessage());
|
||||
|
||||
if (Objects.nonNull(res.getSendStatusSet()) && res.getSendStatusSet().length > 0 && "Ok".equals(res.getSendStatusSet()[0].getCode())){
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
/**
|
||||
* 参数对象
|
||||
*/
|
||||
@Data
|
||||
public static class SendSmsRequest {
|
||||
/**
|
||||
* 电话
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 模板 ID: 必须填写已审核通过的模板 ID
|
||||
*/
|
||||
private String templateId;
|
||||
|
||||
/**
|
||||
* 模板参数: 模板参数的个数需要与 TemplateId 对应模板的变量个数保持一致,若无模板参数,则设置为空
|
||||
*/
|
||||
private String[] templateParamSet;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description 获取bean工具类
|
||||
* @date 2023-12-11 11:45
|
||||
*/
|
||||
@Component
|
||||
public class SpringUtil implements ApplicationContextAware {
|
||||
private static ApplicationContext applicationContext;
|
||||
@Override
|
||||
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
||||
if(SpringUtil.applicationContext==null){
|
||||
SpringUtil.applicationContext=applicationContext;
|
||||
}
|
||||
}
|
||||
|
||||
public static ApplicationContext getApplicationContext(){
|
||||
return applicationContext;
|
||||
}
|
||||
|
||||
public static <T>T getBean(Class<T> clazz){
|
||||
return getApplicationContext().getBean(clazz);
|
||||
}
|
||||
|
||||
public static <T>T getBean(String name, Class<T> clazz){
|
||||
return getApplicationContext().getBean(name,clazz);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||
|
||||
import java.util.concurrent.*;
|
||||
|
||||
/**
|
||||
* @Author: ymbgy
|
||||
* @Date: 2022-09-23 10:06
|
||||
*/
|
||||
public class ThreadUtil {
|
||||
public static ExecutorService createThreadPool() {
|
||||
//获取系统处理器个数,作为线程池数量
|
||||
int nThreads = Runtime.getRuntime().availableProcessors();
|
||||
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
|
||||
.setNameFormat("demo-pool-%d").build();
|
||||
//Thread Pool
|
||||
ExecutorService executor = new ThreadPoolExecutor(nThreads, 200,
|
||||
0L, TimeUnit.MILLISECONDS,
|
||||
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
|
||||
return executor;
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,26 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
|
||||
import cn.hutool.core.io.resource.ClassPathResource;
|
||||
import com.deepoove.poi.XWPFTemplate;
|
||||
import com.deepoove.poi.config.Configure;
|
||||
import com.deepoove.poi.data.*;
|
||||
import com.deepoove.poi.data.style.ParagraphStyle;
|
||||
import com.deepoove.poi.data.style.Style;
|
||||
import com.deepoove.poi.policy.PictureRenderPolicy;
|
||||
import com.deepoove.poi.util.PoitlIOUtils;
|
||||
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.CellType;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.wp.usermodel.Paragraph;
|
||||
import org.apache.poi.xwpf.usermodel.*;
|
||||
|
||||
import javax.print.Doc;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.io.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -93,7 +100,7 @@ public class WordUtil {
|
||||
style.setFontSize(12.0);
|
||||
ParagraphStyle paragraphStyle = ParagraphStyle.builder()
|
||||
.withAlign(ParagraphAlignment.CENTER)
|
||||
// .withBackgroundColor(headerBackgroundColor)
|
||||
// .withBackgroundColor(headerBackgroundColor)
|
||||
.withDefaultTextStyle(style)
|
||||
.build();
|
||||
paragraphRenderData.addText(headerList.get(i));
|
||||
@@ -136,21 +143,68 @@ public class WordUtil {
|
||||
/**
|
||||
* 构建图片内容
|
||||
*/
|
||||
public static PictureRenderData rebuildImageContent(Integer with, Integer height, String imageUrl, String relatedPath, Byte[] imageBytes) {
|
||||
public static PictureRenderData rebuildImageContent(Integer with, Integer height, String imageUrl, String relatedPath) {
|
||||
PictureRenderData pictureRenderData = null;
|
||||
if (!StringUtils.isBlank(imageUrl)) {
|
||||
// pictureRenderData = Pictures.of(imageUrl).size(with, height).create();
|
||||
//pictureRenderData = Pictures.of(imageUrl).size(with, height).create();
|
||||
//Pictures.PictureBuilder pictureBuilder = Pictures.of("https://res.wx.qq.com/a/wx_fed/weixin_portal/res/static/img/1EtCRvm.png");
|
||||
}else if (!StringUtils.isBlank(relatedPath)) {
|
||||
pictureRenderData = Pictures.ofLocal(relatedPath).size(with,height).create();
|
||||
} else if (!StringUtils.isBlank(relatedPath)) {
|
||||
pictureRenderData = Pictures.ofLocal(relatedPath).size(with, height).create();
|
||||
// Pictures.PictureBuilder pictureBuilder = Pictures.of("https://res.wx.qq.com/a/wx_fed/weixin_portal/res/static/img/1EtCRvm.png");
|
||||
}
|
||||
return pictureRenderData;
|
||||
|
||||
}
|
||||
|
||||
public static String getResultFilePath(Map<String, Object> datas, Configure config, String modalFilePath, String resultFilePath) throws IOException {
|
||||
//获取word模板和填充数据
|
||||
XWPFTemplate template = XWPFTemplate.compile(modalFilePath,config).render(datas);
|
||||
XWPFTemplate template = XWPFTemplate.compile(modalFilePath, config).render(datas);
|
||||
template.writeAndClose(new FileOutputStream(resultFilePath));
|
||||
return resultFilePath;
|
||||
}
|
||||
|
||||
public static void changeText(XWPFDocument document) {
|
||||
//获取文字段落集合
|
||||
List<XWPFParagraph> paragraphs = document.getParagraphs();
|
||||
//所有类型集合(文字段落、表格、图片等)
|
||||
List<IBodyElement> listBe = document.getBodyElements();
|
||||
List<Integer> runList = new ArrayList<>();
|
||||
int n = 0;
|
||||
|
||||
for (int i = 0; i < listBe.size(); i++) {
|
||||
|
||||
//BodyElementType.PARAGRAPH : 枚举中的文字段落
|
||||
//文字为空时,先添加到list中;
|
||||
//注意picture类型也在PARAGRAPH中,需要校验embeddedPictures的长度是否为0
|
||||
//为0表示空行,大于0表示有图片,可能还有其他类型,暂时没遇到,各位自行斟酌
|
||||
if (paragraphs.size() > n && !paragraphs.get(n).getRuns().isEmpty()) {
|
||||
if (StringUtils.isEmpty(paragraphs.get(n).getRuns().get(0).text())
|
||||
&& paragraphs.get(n).getRuns().get(0).getEmbeddedPictures().size() == 0) {
|
||||
|
||||
runList.add(i);
|
||||
|
||||
}
|
||||
}
|
||||
n++;
|
||||
|
||||
//非文字段落n-1
|
||||
if (listBe.get(i).getElementType() != BodyElementType.PARAGRAPH) {
|
||||
n--;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//遍历list删除
|
||||
if (!runList.isEmpty()) {
|
||||
for (int i = runList.size() - 1; i >= 0; i--) {
|
||||
int index = runList.get(i);
|
||||
if (index >= 0 && index < document.getBodyElements().size()) {
|
||||
document.removeBodyElement(index);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description 获取微信小程序url scheme
|
||||
* @date 2023-10-13 10:16
|
||||
*/
|
||||
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
|
||||
public class WxAppletNotifyUtils {
|
||||
|
||||
/**
|
||||
* scheme 跳转微信小程序,需中转H5
|
||||
|
||||
*/
|
||||
public static String jumpAppletSchemeUrl(){
|
||||
|
||||
String token= getAccessToken();
|
||||
|
||||
//接口地址
|
||||
String url = "https://api.weixin.qq.com/wxa/generatescheme?access_token="+token;
|
||||
JSONObject body = JSONUtil.createObj();
|
||||
JSONObject jumpWxa = JSONUtil.createObj();
|
||||
jumpWxa.putOpt("path","pages/login");
|
||||
jumpWxa.putOpt("query","");
|
||||
jumpWxa.putOpt("env_version","release");
|
||||
body.putOpt("jump_wxa",jumpWxa);
|
||||
//链接过期类型:0时间戳 1间隔天数
|
||||
body.putOpt("expire_type",1);
|
||||
body.putOpt("is_expire",true);
|
||||
//指定失效天数,最多30
|
||||
body.putOpt("expire_interval",30);
|
||||
String post = HttpUtil.post(url,body.toJSONString(2));
|
||||
JSONObject result = JSONUtil.parseObj(post);
|
||||
if(result!=null && result.containsKey("openlink")){
|
||||
return result.getStr("openlink");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
//凭证调用
|
||||
public static String getAccessToken(){
|
||||
String token;
|
||||
//小程序APPID
|
||||
String appid="wx91cb8459dca561b4";//自行获取
|
||||
//小程序secret
|
||||
String secret="190aaa3bda96a65d25318fbb0e133fc6";//自己去公众号后台获取
|
||||
String httpUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";
|
||||
|
||||
httpUrl= httpUrl+"&appid="+appid+"&secret="+secret;
|
||||
//get请求
|
||||
String result = HttpUtil.get(httpUrl);
|
||||
//解析结果
|
||||
JSONObject jsonObject = JSONUtil.parseObj(result);
|
||||
//get AccessToken
|
||||
token=jsonObject.get("access_token",String.class,false);
|
||||
return token;
|
||||
}
|
||||
|
||||
}
|
||||
+9
-5
@@ -1,4 +1,8 @@
|
||||
package com.ruoyi.wisdomarbitrate.utils;
|
||||
package com.ruoyi.common.utils.bean;
|
||||
|
||||
|
||||
import com.ruoyi.common.constant.FileTransformation;
|
||||
import com.ruoyi.common.exception.EsignDemoException;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
@@ -19,12 +23,12 @@ public class EsignFileBean {
|
||||
private String filePath;
|
||||
|
||||
|
||||
public EsignFileBean(String filePath) throws EsignInterfacException {
|
||||
public EsignFileBean(String filePath) throws EsignDemoException {
|
||||
this.filePath=filePath;
|
||||
this.fileContentMD5 = FileTransformation.getFileContentMD5(filePath);
|
||||
File file = new File(filePath);
|
||||
if (!file.exists()) {
|
||||
throw new EsignInterfacException("文件不存在");
|
||||
throw new EsignDemoException("文件不存在");
|
||||
}
|
||||
this.fileName = file.getName();
|
||||
this.fileSize = (int) file.length();
|
||||
@@ -45,9 +49,9 @@ public class EsignFileBean {
|
||||
/**
|
||||
* 传入本地文件地址获取二进制数据
|
||||
* @return
|
||||
* @throws EsignInterfacException
|
||||
* @throws EsignDemoException
|
||||
*/
|
||||
public byte[] getFileBytes() throws EsignInterfacException {
|
||||
public byte[] getFileBytes() throws EsignDemoException {
|
||||
return FileTransformation.fileToBytes(filePath);
|
||||
}
|
||||
}
|
||||
@@ -1,161 +0,0 @@
|
||||
package com.ruoyi.common.utils.bean;
|
||||
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
public class SealSignRecord extends BaseEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** ID */
|
||||
private Long id;
|
||||
/** 文件id */
|
||||
private String fileid;
|
||||
/** 文件名称 */
|
||||
private String filename;
|
||||
/** 流程id */
|
||||
private String signFlowid;
|
||||
/** 签名人账户 */
|
||||
private String pensonAccount;
|
||||
/** 签名人姓名 */
|
||||
private String pensonName;
|
||||
/** 机构名称 */
|
||||
private String orgnizeName;
|
||||
/** 机构经办人 */
|
||||
private String orgnizeNamePsnAccount;
|
||||
/** 机构经办人名称 */
|
||||
private String orgnizeNamepsnName;
|
||||
|
||||
public String getFileid() {
|
||||
return fileid;
|
||||
}
|
||||
|
||||
public void setFileid(String fileid) {
|
||||
this.fileid = fileid;
|
||||
}
|
||||
|
||||
public String getFilename() {
|
||||
return filename;
|
||||
}
|
||||
|
||||
public void setFilename(String filename) {
|
||||
this.filename = filename;
|
||||
}
|
||||
|
||||
public String getSignFlowid() {
|
||||
return signFlowid;
|
||||
}
|
||||
|
||||
public void setSignFlowid(String signFlowid) {
|
||||
this.signFlowid = signFlowid;
|
||||
}
|
||||
|
||||
public String getPensonAccount() {
|
||||
return pensonAccount;
|
||||
}
|
||||
|
||||
public void setPensonAccount(String pensonAccount) {
|
||||
this.pensonAccount = pensonAccount;
|
||||
}
|
||||
|
||||
public String getPensonName() {
|
||||
return pensonName;
|
||||
}
|
||||
|
||||
public void setPensonName(String pensonName) {
|
||||
this.pensonName = pensonName;
|
||||
}
|
||||
|
||||
public String getOrgnizeName() {
|
||||
return orgnizeName;
|
||||
}
|
||||
|
||||
public void setOrgnizeName(String orgnizeName) {
|
||||
this.orgnizeName = orgnizeName;
|
||||
}
|
||||
|
||||
public String getOrgnizeNamePsnAccount() {
|
||||
return orgnizeNamePsnAccount;
|
||||
}
|
||||
|
||||
public void setOrgnizeNamePsnAccount(String orgnizeNamePsnAccount) {
|
||||
this.orgnizeNamePsnAccount = orgnizeNamePsnAccount;
|
||||
}
|
||||
|
||||
public String getOrgnizeNamepsnName() {
|
||||
return orgnizeNamepsnName;
|
||||
}
|
||||
|
||||
public void setOrgnizeNamepsnName(String orgnizeNamepsnName) {
|
||||
this.orgnizeNamepsnName = orgnizeNamepsnName;
|
||||
}
|
||||
|
||||
public String getPositionPagepsn() {
|
||||
return positionPagepsn;
|
||||
}
|
||||
|
||||
public void setPositionPagepsn(String positionPagepsn) {
|
||||
this.positionPagepsn = positionPagepsn;
|
||||
}
|
||||
|
||||
public double getPositionXpsn() {
|
||||
return positionXpsn;
|
||||
}
|
||||
|
||||
public void setPositionXpsn(double positionXpsn) {
|
||||
this.positionXpsn = positionXpsn;
|
||||
}
|
||||
|
||||
public double getPositionYpsn() {
|
||||
return positionYpsn;
|
||||
}
|
||||
|
||||
public void setPositionYpsn(double positionYpsn) {
|
||||
this.positionYpsn = positionYpsn;
|
||||
}
|
||||
|
||||
public String getPositionPageorg() {
|
||||
return positionPageorg;
|
||||
}
|
||||
|
||||
public void setPositionPageorg(String positionPageorg) {
|
||||
this.positionPageorg = positionPageorg;
|
||||
}
|
||||
|
||||
public double getPositionXorg() {
|
||||
return positionXorg;
|
||||
}
|
||||
|
||||
public void setPositionXorg(double positionXorg) {
|
||||
this.positionXorg = positionXorg;
|
||||
}
|
||||
|
||||
public double getPositionYorg() {
|
||||
return positionYorg;
|
||||
}
|
||||
|
||||
public void setPositionYorg(double positionYorg) {
|
||||
this.positionYorg = positionYorg;
|
||||
}
|
||||
|
||||
/** 签名位置页数 */
|
||||
private String positionPagepsn;
|
||||
/** 签名位置x坐标 */
|
||||
private double positionXpsn;
|
||||
/** 签名位置y坐标 */
|
||||
private double positionYpsn;
|
||||
/** 印章位置页数 */
|
||||
private String positionPageorg;
|
||||
/** 印章位置x坐标 */
|
||||
private double positionXorg;
|
||||
/** 印章位置y坐标 */
|
||||
private double positionYorg;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -288,4 +288,18 @@ public class FileUtils
|
||||
String baseName = FilenameUtils.getBaseName(fileName);
|
||||
return baseName;
|
||||
}
|
||||
/**
|
||||
* 获取文件后缀名
|
||||
* @param file
|
||||
* @return
|
||||
*/
|
||||
public static String getFileExtension(File file) {
|
||||
String name = file.getName();
|
||||
int lastIndexOfDot = name.lastIndexOf(".");
|
||||
if (lastIndexOfDot != -1 && lastIndexOfDot < name.length() - 1) {
|
||||
return name.substring(lastIndexOfDot + 1);
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
package com.ruoyi.common.utils.file;
|
||||
|
||||
import cn.hutool.json.JSONObject;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.ruoyi.common.config.EsignDemoConfig;
|
||||
import com.ruoyi.common.constant.EsignHeaderConstant;
|
||||
import com.ruoyi.common.constant.FileTransformation;
|
||||
import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
|
||||
import com.ruoyi.common.enums.EsignRequestType;
|
||||
import com.ruoyi.common.exception.EsignDemoException;
|
||||
import com.ruoyi.common.utils.EsignHttpHelper;
|
||||
import com.ruoyi.common.utils.bean.EsignFileBean;
|
||||
import com.ruoyi.common.utils.uuid.IdUtils;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Map;
|
||||
|
||||
public class SaaSAPIFileUtils {
|
||||
private static String eSignHost= EsignDemoConfig.EsignHost;
|
||||
private static String eSignAppId= EsignDemoConfig.EsignAppId;
|
||||
private static String eSignAppSecret=EsignDemoConfig.EsignAppSecret;
|
||||
/**
|
||||
* 获取文件上传地址
|
||||
*/
|
||||
public static EsignHttpResponse getUploadUrl(String filePath) throws EsignDemoException {
|
||||
//自定义的文件封装类,传入文件地址可以获取文件的名称大小,文件流等数据
|
||||
EsignFileBean esignFileBean = new EsignFileBean(filePath);
|
||||
String apiaddr = "/v3/files/file-upload-url";
|
||||
//请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
|
||||
String jsonParm = "{\n" +
|
||||
" \"contentMd5\": \"" + esignFileBean.getFileContentMD5() + "\",\n" +
|
||||
" \"fileName\":\"" + esignFileBean.getFileName() + "\"," +
|
||||
" \"fileSize\": " + esignFileBean.getFileSize() + ",\n" +
|
||||
" \"convertToPDF\":" +true+ ",\n" +
|
||||
" \"contentType\": \"" + EsignHeaderConstant.CONTENTTYPE_STREAM.VALUE() + "\"\n" +
|
||||
"}";
|
||||
//请求方法
|
||||
EsignRequestType requestType = EsignRequestType.POST;
|
||||
//生成签名鉴权方式的的header
|
||||
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
|
||||
//发起接口请求
|
||||
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
|
||||
}
|
||||
/**
|
||||
* 上传文件流
|
||||
*/
|
||||
public static EsignHttpResponse uploadFile(String uploadUrl,String filePath) throws EsignDemoException {
|
||||
//根据文件地址获取文件contentMd5
|
||||
EsignFileBean esignFileBean = new EsignFileBean(filePath);
|
||||
//请求方法
|
||||
EsignRequestType requestType= EsignRequestType.PUT;
|
||||
return EsignHttpHelper.doUploadHttp(uploadUrl,requestType,esignFileBean.getFileBytes(),esignFileBean.getFileContentMD5(), EsignHeaderConstant.CONTENTTYPE_STREAM.VALUE(),true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件上传状态
|
||||
*/
|
||||
public static EsignHttpResponse getFileStatus(String fileId) throws EsignDemoException {
|
||||
String apiaddr="/v3/files/"+fileId;
|
||||
|
||||
//请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
|
||||
String jsonParm=null;
|
||||
//请求方法
|
||||
EsignRequestType requestType= EsignRequestType.GET;
|
||||
//生成签名鉴权方式的的header
|
||||
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
|
||||
//发起接口请求
|
||||
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载已签署文件及附属材料
|
||||
*/
|
||||
public static EsignHttpResponse fileDownloadUrl(String signFlowId) throws EsignDemoException {
|
||||
String apiaddr = "/v3/sign-flow/"+ signFlowId +"/file-download-url";
|
||||
//请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
|
||||
String jsonParm=null;
|
||||
//请求方法
|
||||
EsignRequestType requestType= EsignRequestType.GET;
|
||||
//生成签名鉴权方式的的header
|
||||
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
|
||||
//发起接口请求
|
||||
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) throws EsignDemoException {
|
||||
String filePath = "D:\\home\\ruoyi\\uploadPath\\upload\\2023\\10\\7\\23893bfd3f2249ffa5c82850c11c482e.docx";
|
||||
EsignHttpResponse uploadUrl = getUploadUrl(filePath);
|
||||
String body = uploadUrl.getBody();
|
||||
JSONObject jsonObject = new JSONObject(body);
|
||||
JSONObject dataObj = jsonObject.getJSONObject("data");
|
||||
String fileUploadUrl = dataObj.get("fileUploadUrl").toString();
|
||||
System.out.println("这是fileUploadUrl:"+fileUploadUrl);
|
||||
String fileId = dataObj.get("fileId").toString();
|
||||
System.out.println("这是fileId:"+fileId);
|
||||
//String fileUploadUrl = "https://esignoss.esign.cn/1111564182/ccf6db5a-92da-4523-89ba-385a30423596/23893bfd3f2249ffa5c82850c11c482e.docx?Expires=1697021257&OSSAccessKeyId=STS.NTmgvSC8n5Zg1y7EciQftF23N&Signature=CxVZmpwFksWmLYkxPjVz9K4mVyA%3D&callback-var=eyJ4OmZpbGVfa2V5IjoiJDAyODhjOTg3LWNlNzgtNDM1OC04NWYwLTdlNmUyM2NjOTJmNiQzNDk1NzQ3MjE5In0%3D%0A&callback=eyJjYWxsYmFja1VybCI6Imh0dHA6Ly9zbWx0YXBpLnRzaWduLmNuL2FueWRvb3IvZmlsZS1zeXN0ZW0vY2FsbGJhY2svYWxpb3NzIiwiY2FsbGJhY2tCb2R5IjogIntcIm1pbWVUeXBlXCI6JHttaW1lVHlwZX0sXCJzaXplXCI6ICR7c2l6ZX0sXCJidWNrZXRcIjogJHtidWNrZXR9LFwib2JqZWN0XCI6ICR7b2JqZWN0fSxcImV0YWdcIjogJHtldGFnfSxcImZpbGVfa2V5XCI6JHt4OmZpbGVfa2V5fX0iLCJjYWxsYmFja0JvZHlUeXBlIjogImFwcGxpY2F0aW9uL2pzb24ifQ%3D%3D%0A&security-token=CAIS%2BAF1q6Ft5B2yfSjIr5fYLMznrudPgpiMM1%2BGoWM8XelYqfeYrDz2IHtKdXRvBu8Xs%2F4wnmxX7f4YlqB6T55OSAmcNZEofT7katr4MeT7oMWQweEurv%2FMQBqyaXPS2MvVfJ%2BOLrf0ceusbFbpjzJ6xaCAGxypQ12iN%2B%2Fm6%2FNgdc9FHHPPD1x8CcxROxFppeIDKHLVLozNCBPxhXfKB0ca0WgVy0EHsPnvm5DNs0uH1AKjkbRM9r6ceMb0M5NeW75kSMqw0eBMca7M7TVd8RAi9t0t1%2FIVpGiY4YDAWQYLv0rda7DOltFiMkpla7MmXqlft%2BhzcgeQY0pc%2FRqAAaxcPCSY0Du8wgErfR1llD8t2zeFG%2B1mktU4Rsl7AgxsSFxrwILBUk2x7imVsFVA0kkS8rNBMDKGIsIZTCl5M7S2L%2BD8364htwcZgIZYHK2fCN6gCuy%2Bfk9C%2FfQaTc00IWBMw8OubuJ%2Fq2mdMh32yoi7dLuJyhwt1z%2F%2BWf5vIFHdIAA%3D";
|
||||
EsignHttpResponse esignHttpResponse = uploadFile(fileUploadUrl, filePath);
|
||||
System.out.println("这是上传文件流的结果:"+esignHttpResponse.getBody());
|
||||
// EsignHttpResponse fileStatus = getFileStatus(fileId);
|
||||
// System.out.println("这是获取文件上传状态的结果:"+fileStatus.getBody());
|
||||
// getFileStatus("a808f1f39a744357a2f018e4ab34c55d");
|
||||
// fileDownloadUrl("");
|
||||
|
||||
|
||||
// Gson gson = new Gson();
|
||||
// EsignHttpResponse fileDownload = fileDownloadUrl(signFlowId);
|
||||
// JsonObject fileDownloadJsonObject = gson.fromJson(fileDownload.getBody(),JsonObject.class);
|
||||
// JsonObject fileDownloadData = fileDownloadJsonObject.getAsJsonObject("data");
|
||||
// JsonArray filesArray = fileDownloadData.get("files").getAsJsonArray();
|
||||
// if(filesArray!=null&&filesArray.size()>0){
|
||||
// JsonObject fileObject = (JsonObject)filesArray.get(0);
|
||||
// String fileDownloadUrl = fileObject.get("downloadUrl").toString();
|
||||
// String fileName = java.util.UUID.randomUUID().toString().replace("-", "") + ".pdf";
|
||||
// String savePath = "/home/ruoyi/uploadPath/upload";
|
||||
// LocalDate now = LocalDate.now();
|
||||
// String year = Integer.toString(now.getYear());
|
||||
// String month = String.format("%02d", now.getMonthValue());
|
||||
// String day = String.format("%02d", now.getDayOfMonth());
|
||||
// String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName;
|
||||
// String fileDownloadUrlnew = fileDownloadUrl.substring(1,fileDownloadUrl.length()-1);
|
||||
// FileTransformation.downLoadFileByUrl(fileDownloadUrlnew,dir);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.ruoyi.common.utils.thread;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @date 2023/11/25 9:25
|
||||
**/
|
||||
@Data
|
||||
public class MultipleThreadListParam<T,R> {
|
||||
/**需要执行的方法*/
|
||||
private Function<List<T>,R> function;
|
||||
/**参数ID*/
|
||||
private List<T> list;
|
||||
public MultipleThreadListParam(Function<List<T>,R> function, List<T> list){
|
||||
this.function=function;
|
||||
this.list=list;
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package com.ruoyi.common.utils.thread;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @date 2023/11/25 9:25
|
||||
**/
|
||||
@Data
|
||||
public class MultipleThreadStringParam<T> {
|
||||
/**需要执行的方法*/
|
||||
private Function<String,T> function;
|
||||
/**参数ID*/
|
||||
private String ids;
|
||||
public MultipleThreadStringParam(Function<String,T> function, String ids){
|
||||
this.function=function;
|
||||
this.ids=ids;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,592 @@
|
||||
package com.ruoyi.common.utils.thread;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.common.annotation.VoidFunction;
|
||||
import com.ruoyi.common.constant.Constants;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* @description 多线程操作数据库,一个线程异常全部回滚
|
||||
* @Author wangqiong
|
||||
* @Date 2023/11/25 14:02
|
||||
* @Version V1.0
|
||||
**/
|
||||
@Slf4j
|
||||
public class MultipleThreadWorkUtil {
|
||||
private static int SIMPLE_TIME_COUNT=1000;
|
||||
|
||||
public static <R,A>List<R> exec(Function<List<A>,R> execFun, List<A> list){
|
||||
List<R> returnList=new ArrayList<>();
|
||||
if(CollectionUtil.isEmpty(list)){
|
||||
return returnList;
|
||||
}
|
||||
if(list.size()<SIMPLE_TIME_COUNT){
|
||||
return Arrays.asList(execFun.apply(list));
|
||||
}
|
||||
int times=list.size()/SIMPLE_TIME_COUNT;
|
||||
if(list.size()%SIMPLE_TIME_COUNT>0){
|
||||
times++;
|
||||
}
|
||||
CountDownLatch mainLatch=new CountDownLatch(1);
|
||||
//监控子线程
|
||||
CountDownLatch threadLatch=new CountDownLatch(times);
|
||||
//根据子线程执行结果判断是否需要回滚
|
||||
BlockingDeque<Boolean> resultList=new LinkedBlockingDeque<>();
|
||||
//必须使用对象,如果使用变量会造成线程之间不能共享变量值
|
||||
RollBack rollBack=new RollBack(false);
|
||||
ExecutorService executorService=Executors.newFixedThreadPool(times);
|
||||
List<Future<R>> futureList=new ArrayList<>();
|
||||
for (int i = 0; i <times ; i++) {
|
||||
if(i*SIMPLE_TIME_COUNT+SIMPLE_TIME_COUNT<list.size()){
|
||||
// 创建子线程
|
||||
Future<R> future=executorService.submit(new ExecThread(mainLatch,threadLatch,rollBack,resultList,list.subList(i*SIMPLE_TIME_COUNT,i*SIMPLE_TIME_COUNT+SIMPLE_TIME_COUNT),execFun));
|
||||
futureList.add(future);
|
||||
}else{
|
||||
Future<R> future=executorService.submit(new ExecThread(mainLatch,threadLatch,rollBack,resultList,list.subList(i*SIMPLE_TIME_COUNT,list.size()),execFun));
|
||||
futureList.add(future);
|
||||
}
|
||||
}
|
||||
setResult(executorService,returnList,futureList,resultList,
|
||||
mainLatch,threadLatch,rollBack,times);
|
||||
return returnList;
|
||||
}
|
||||
|
||||
public static <A>void exec(VoidFunction<Set<A>> execFun, Set<A> set){
|
||||
if(set.size()<SIMPLE_TIME_COUNT){
|
||||
execFun.apply(set);
|
||||
return;
|
||||
}
|
||||
int times=set.size()/SIMPLE_TIME_COUNT;
|
||||
if(set.size()%SIMPLE_TIME_COUNT>0){
|
||||
times++;
|
||||
}
|
||||
CountDownLatch mainLatch=new CountDownLatch(1);
|
||||
//监控子线程
|
||||
CountDownLatch threadLatch=new CountDownLatch(times);
|
||||
//根据子线程执行结果判断是否需要回滚
|
||||
BlockingDeque<Boolean> resultList=new LinkedBlockingDeque<>();
|
||||
//必须使用对象,如果使用变量会造成线程之间不能共享变量值
|
||||
RollBack rollBack=new RollBack(false);
|
||||
ExecutorService executorService=Executors.newFixedThreadPool(times);
|
||||
List<A> list=new ArrayList<>(set);
|
||||
List<Future> futureList=new ArrayList<>();
|
||||
for (int i = 0; i <times ; i++) {
|
||||
Future future;
|
||||
if(i*SIMPLE_TIME_COUNT+SIMPLE_TIME_COUNT<list.size()){
|
||||
future=executorService.submit(new VoidExecThread(mainLatch,threadLatch,rollBack,resultList,list.subList(i*SIMPLE_TIME_COUNT,i*SIMPLE_TIME_COUNT+SIMPLE_TIME_COUNT),execFun));
|
||||
}else{
|
||||
future=executorService.submit(new VoidExecThread(mainLatch,threadLatch,rollBack,resultList,list.subList(i*SIMPLE_TIME_COUNT,list.size()),execFun));
|
||||
}
|
||||
futureList.add(future);
|
||||
}
|
||||
/**存放子线程返回结果*/
|
||||
List<Boolean> backUpResult=new ArrayList<>();
|
||||
try{
|
||||
//
|
||||
boolean await=threadLatch.await(times*3,TimeUnit.SECONDS);
|
||||
if(!await){
|
||||
rollBack.setRollBack(true);
|
||||
}else{
|
||||
//查看执行情况,如果有存在需要回滚的线程,则全部回滚
|
||||
for (int i = 0; i <times ; i++) {
|
||||
Boolean result=resultList.take();
|
||||
backUpResult.add(result);
|
||||
if(result){
|
||||
/**有线程执行异常,需要回滚子线程*/
|
||||
rollBack.setRollBack(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}catch (InterruptedException e){
|
||||
e.printStackTrace();
|
||||
throw new ServiceException(e.getMessage());
|
||||
}finally {
|
||||
//子线程再次继续执行
|
||||
mainLatch.countDown();
|
||||
executorService.shutdown();
|
||||
}
|
||||
/**检查子线程是否有异常,有异常整体回滚*/
|
||||
for (int i = 0; i <times ; i++) {
|
||||
if(CollectionUtil.isNotEmpty(backUpResult)){
|
||||
Boolean result=backUpResult.get(i);
|
||||
if(result){
|
||||
/**有线程执行异常,需要回滚子线程*/
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
}else{
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
}
|
||||
for (Future future : futureList) {
|
||||
try {
|
||||
future.get();
|
||||
} catch (Exception e) {
|
||||
throw new ServiceException(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static <R>List<R> execFun(MultipleThreadStringParam<R>...params){
|
||||
List<R> returnList=new ArrayList<>();
|
||||
if(ArrayUtil.isEmpty(params)){
|
||||
return returnList;
|
||||
}
|
||||
List<Integer> threadCountList=new ArrayList<>();
|
||||
for (MultipleThreadStringParam param : params) {
|
||||
List<String> idList= Arrays.asList(param.getIds().split(Constants.SPLIT_COMMA));
|
||||
if(idList.size()<SIMPLE_TIME_COUNT){
|
||||
threadCountList.add(1);
|
||||
}else{
|
||||
if(idList.size()%SIMPLE_TIME_COUNT>0){
|
||||
threadCountList.add(idList.size()/SIMPLE_TIME_COUNT+1);
|
||||
}else{
|
||||
threadCountList.add(idList.size()/SIMPLE_TIME_COUNT);
|
||||
}
|
||||
}
|
||||
}
|
||||
int times=0;
|
||||
for (Integer count : threadCountList) {
|
||||
times+=count;
|
||||
}
|
||||
CountDownLatch mainLatch=new CountDownLatch(1);
|
||||
//监控子线程
|
||||
CountDownLatch threadLatch=new CountDownLatch(times);
|
||||
//根据子线程执行结果判断是否需要回滚
|
||||
BlockingDeque<Boolean> resultList=new LinkedBlockingDeque<>();
|
||||
//必须使用对象,如果使用变量会造成线程之间不能共享变量值
|
||||
RollBack rollBack=new RollBack(false);
|
||||
ExecutorService executorService=Executors.newFixedThreadPool(times);
|
||||
List<Future<R>> futureList=new ArrayList<>();
|
||||
for (int i = 0; i < params.length; i++) {
|
||||
MultipleThreadStringParam param=params[i];
|
||||
List<String> idList= Arrays.asList(param.getIds().split(Constants.SPLIT_COMMA));
|
||||
for (int j = 0; j <threadCountList.get(i) ; j++) {
|
||||
if(j*SIMPLE_TIME_COUNT+SIMPLE_TIME_COUNT<idList.size()){
|
||||
Future<R> future=executorService.submit(new ExecByIdsStringThread<>(mainLatch,threadLatch,rollBack,resultList,StrUtil.join(Constants.SPLIT_COMMA,idList.subList(j*SIMPLE_TIME_COUNT,j*SIMPLE_TIME_COUNT+SIMPLE_TIME_COUNT)),param.getFunction()));
|
||||
futureList.add(future);
|
||||
}else{
|
||||
Future<R> future=executorService.submit(new ExecByIdsStringThread(mainLatch,threadLatch,rollBack,resultList,StrUtil.join(Constants.SPLIT_COMMA,idList.subList(j*SIMPLE_TIME_COUNT,idList.size())),param.getFunction()));
|
||||
futureList.add(future);
|
||||
}
|
||||
}
|
||||
}
|
||||
setResult(executorService,returnList,futureList,resultList,
|
||||
mainLatch,threadLatch,rollBack,times);
|
||||
return returnList;
|
||||
}
|
||||
public static <R,A>List<R> execListFun(MultipleThreadListParam<R,A> ...params){
|
||||
List<R> returnList=new ArrayList<>();
|
||||
if(ArrayUtil.isEmpty(params)){
|
||||
return returnList;
|
||||
}
|
||||
List<Integer> threadCountList=new ArrayList<>();
|
||||
for (MultipleThreadListParam param : params) {
|
||||
if(param.getList().size()<SIMPLE_TIME_COUNT){
|
||||
threadCountList.add(1);
|
||||
}else{
|
||||
if(param.getList().size()%SIMPLE_TIME_COUNT>0){
|
||||
threadCountList.add(param.getList().size()/SIMPLE_TIME_COUNT+1);
|
||||
}else{
|
||||
threadCountList.add(param.getList().size()/SIMPLE_TIME_COUNT);
|
||||
}
|
||||
}
|
||||
}
|
||||
int times=0;
|
||||
for (Integer count : threadCountList) {
|
||||
times+=count;
|
||||
}
|
||||
CountDownLatch mainLatch=new CountDownLatch(1);
|
||||
//监控子线程
|
||||
CountDownLatch threadLatch=new CountDownLatch(times);
|
||||
//根据子线程执行结果判断是否需要回滚
|
||||
BlockingDeque<Boolean> resultList=new LinkedBlockingDeque<>();
|
||||
//必须使用对象,如果使用变量会造成线程之间不能共享变量值
|
||||
RollBack rollBack=new RollBack(false);
|
||||
ExecutorService executorService=Executors.newFixedThreadPool(times);
|
||||
List<Future<R>> futureList=new ArrayList<>();
|
||||
for (int i = 0; i < params.length; i++) {
|
||||
MultipleThreadListParam param=params[i];
|
||||
for (int j = 0; j <threadCountList.get(i) ; j++) {
|
||||
if(j*SIMPLE_TIME_COUNT+SIMPLE_TIME_COUNT<param.getList().size()){
|
||||
Future<R> future=executorService.submit(new ExecThread(mainLatch,threadLatch,rollBack,resultList,param.getList().subList(j*SIMPLE_TIME_COUNT,j*SIMPLE_TIME_COUNT+SIMPLE_TIME_COUNT),param.getFunction()));
|
||||
futureList.add(future);
|
||||
}else{
|
||||
Future<R> future=executorService.submit(new ExecThread(mainLatch,threadLatch,rollBack,resultList,param.getList().subList(j*SIMPLE_TIME_COUNT,param.getList().size()),param.getFunction()));
|
||||
futureList.add(future);
|
||||
}
|
||||
}
|
||||
}
|
||||
setResult(executorService,returnList,futureList,resultList,
|
||||
mainLatch,threadLatch,rollBack,times);
|
||||
return returnList;
|
||||
}
|
||||
public static <R>List<R> execByIds(Function<String,R> execFun,String ids){
|
||||
List<R> returnList=new ArrayList<>();
|
||||
if(StrUtil.isEmpty(ids)){
|
||||
return returnList;
|
||||
}
|
||||
List<String> idList= Arrays.asList(ids.split(Constants.SPLIT_COMMA));
|
||||
if(idList.size()<SIMPLE_TIME_COUNT){
|
||||
return Arrays.asList(execFun.apply(ids));
|
||||
}
|
||||
int times=idList.size()/SIMPLE_TIME_COUNT;
|
||||
if(idList.size()%SIMPLE_TIME_COUNT>0){
|
||||
times++;
|
||||
}
|
||||
CountDownLatch mainLatch=new CountDownLatch(1);
|
||||
//监控子线程
|
||||
CountDownLatch threadLatch=new CountDownLatch(times);
|
||||
//根据子线程执行结果判断是否需要回滚
|
||||
BlockingDeque<Boolean> resultList=new LinkedBlockingDeque<>();
|
||||
//必须使用对象,如果使用变量会造成线程之间不能共享变量值
|
||||
RollBack rollBack=new RollBack(false);
|
||||
ExecutorService executorService=Executors.newFixedThreadPool(times);
|
||||
List<Future<R>> futureList=new ArrayList<>();
|
||||
for (int i = 0; i <times ; i++) {
|
||||
if(i*SIMPLE_TIME_COUNT+SIMPLE_TIME_COUNT<idList.size()){
|
||||
Future<R> future=executorService.submit(new ExecByIdsStringThread<>(mainLatch,threadLatch,rollBack,resultList,StrUtil.join(Constants.SPLIT_COMMA,idList.subList(i*SIMPLE_TIME_COUNT,i*SIMPLE_TIME_COUNT+SIMPLE_TIME_COUNT)),execFun));
|
||||
futureList.add(future);
|
||||
}else{
|
||||
Future<R> future=executorService.submit(new ExecByIdsStringThread(mainLatch,threadLatch,rollBack,resultList,StrUtil.join(Constants.SPLIT_COMMA,idList.subList(i*SIMPLE_TIME_COUNT,idList.size())),execFun));
|
||||
futureList.add(future);
|
||||
}
|
||||
}
|
||||
setResult(executorService,returnList,futureList,resultList,
|
||||
mainLatch,threadLatch,rollBack,times);
|
||||
return returnList;
|
||||
}
|
||||
|
||||
public static <R>List<R> execByIds(Function<List<String>,List<R>> execFun,List<String> idList){
|
||||
List<R> returnList=new ArrayList<>();
|
||||
if(CollectionUtil.isEmpty(idList)){
|
||||
return returnList;
|
||||
}
|
||||
if(idList.size()<SIMPLE_TIME_COUNT){
|
||||
return execFun.apply(idList);
|
||||
}
|
||||
int times=idList.size()/SIMPLE_TIME_COUNT;
|
||||
if(idList.size()%SIMPLE_TIME_COUNT>0){
|
||||
times++;
|
||||
}
|
||||
CountDownLatch mainLatch=new CountDownLatch(1);
|
||||
//监控子线程
|
||||
CountDownLatch threadLatch=new CountDownLatch(times);
|
||||
//根据子线程执行结果判断是否需要回滚
|
||||
BlockingDeque<Boolean> resultList=new LinkedBlockingDeque<>();
|
||||
//必须使用对象,如果使用变量会造成线程之间不能共享变量值
|
||||
RollBack rollBack=new RollBack(false);
|
||||
ExecutorService executorService=Executors.newFixedThreadPool(times);
|
||||
List<Future<List<R>>> futureList=new ArrayList<>();
|
||||
for (int i = 0; i <times ; i++) {
|
||||
if(i*SIMPLE_TIME_COUNT+SIMPLE_TIME_COUNT<idList.size()){
|
||||
Future<List<R>> future=executorService.submit(new ExecByIdsStringListThread<>(mainLatch,threadLatch,rollBack,resultList,idList.subList(i*SIMPLE_TIME_COUNT,i*SIMPLE_TIME_COUNT+SIMPLE_TIME_COUNT),execFun));
|
||||
futureList.add(future);
|
||||
}else{
|
||||
Future<List<R>> future=executorService.submit(new ExecByIdsStringListThread(mainLatch,threadLatch,rollBack,resultList,idList.subList(i*SIMPLE_TIME_COUNT,idList.size()),execFun));
|
||||
futureList.add(future);
|
||||
}
|
||||
}
|
||||
/**存放子线程返回结果*/
|
||||
List<Boolean> backUpResult=new ArrayList<>();
|
||||
try{
|
||||
//
|
||||
boolean await=threadLatch.await(times*3,TimeUnit.SECONDS);
|
||||
if(!await){
|
||||
rollBack.setRollBack(true);
|
||||
}else{
|
||||
//查看执行情况,如果有存在需要回滚的线程,则全部回滚
|
||||
for (int i = 0; i <times ; i++) {
|
||||
Boolean result=resultList.take();
|
||||
backUpResult.add(result);
|
||||
if(result){
|
||||
/**有线程执行异常,需要回滚子线程*/
|
||||
rollBack.setRollBack(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}catch (InterruptedException e){
|
||||
e.printStackTrace();
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}finally {
|
||||
//子线程再次继续执行
|
||||
mainLatch.countDown();
|
||||
executorService.shutdown();
|
||||
}
|
||||
/**检查子线程是否有异常,有异常整体回滚*/
|
||||
for (int i = 0; i <times ; i++) {
|
||||
if(CollectionUtil.isNotEmpty(backUpResult)){
|
||||
Boolean result=backUpResult.get(i);
|
||||
if(result){
|
||||
/**有线程执行异常,需要回滚子线程*/
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
}else{
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
}
|
||||
for (Future<List<R>> future : futureList) {
|
||||
try {
|
||||
returnList.addAll(future.get());
|
||||
} catch (Exception e) {
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
}
|
||||
return returnList;
|
||||
}
|
||||
|
||||
private static <R>void setResult(ExecutorService executorService,List<R> returnList,List<Future<R>> futureList,BlockingDeque<Boolean> resultList
|
||||
,CountDownLatch mainLatch,CountDownLatch threadLatch,RollBack rollBack,int times){
|
||||
/**存放子线程返回结果*/
|
||||
List<Boolean> backUpResult=new ArrayList<>();
|
||||
try{
|
||||
//
|
||||
boolean await=threadLatch.await(times*3,TimeUnit.SECONDS);
|
||||
if(!await){
|
||||
rollBack.setRollBack(true);
|
||||
}else{
|
||||
//查看执行情况,如果有存在需要回滚的线程,则全部回滚
|
||||
for (int i = 0; i <times ; i++) {
|
||||
Boolean result=resultList.take();
|
||||
backUpResult.add(result);
|
||||
if(result){
|
||||
/**有线程执行异常,需要回滚子线程*/
|
||||
rollBack.setRollBack(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}catch (InterruptedException e){
|
||||
e.printStackTrace();
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}finally {
|
||||
//子线程再次继续执行
|
||||
mainLatch.countDown();
|
||||
executorService.shutdown();
|
||||
}
|
||||
/**检查子线程是否有异常,有异常整体回滚*/
|
||||
for (int i = 0; i <times ; i++) {
|
||||
if(CollectionUtil.isNotEmpty(backUpResult)){
|
||||
Boolean result=backUpResult.get(i);
|
||||
if(result){
|
||||
/**有线程执行异常,需要回滚子线程*/
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
}else{
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
}
|
||||
for (Future<R> future : futureList) {
|
||||
try {
|
||||
returnList.add(future.get());
|
||||
} catch (Exception e) {
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static class QueryThread<R> implements Callable<List<R>>{
|
||||
private String ids;
|
||||
private Function<String,List<R>> execFun;
|
||||
public QueryThread(String ids,Function<String,List<R>> execFun){
|
||||
this.ids=ids;
|
||||
this.execFun=execFun;
|
||||
}
|
||||
@Override
|
||||
public List<R> call(){
|
||||
return execFun.apply(ids);
|
||||
}
|
||||
}
|
||||
|
||||
static class ExecThread<T,R> implements Callable<R>{
|
||||
/**主线程监控*/
|
||||
private CountDownLatch mainLatch;
|
||||
/**子线程监控*/
|
||||
private CountDownLatch threadLatch;
|
||||
/**是否回滚*/
|
||||
private RollBack rollBack;
|
||||
private BlockingDeque<Boolean> resultList;
|
||||
private List<T> list;
|
||||
private Function<List<T>,R> execFun;
|
||||
public ExecThread(CountDownLatch mainLatch,CountDownLatch threadLatch,RollBack rollBack,BlockingDeque<Boolean> resultList,List<T> list,Function<List<T>,R> execFun){
|
||||
this.mainLatch=mainLatch;
|
||||
this.threadLatch=threadLatch;
|
||||
this.rollBack=rollBack;
|
||||
this.resultList=resultList;
|
||||
this.list=list;
|
||||
this.execFun=execFun;
|
||||
}
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R call(){
|
||||
// 是否回滚
|
||||
Boolean result=false;
|
||||
R r=null;
|
||||
try{
|
||||
// 对数据库进行操作
|
||||
r=execFun.apply(list);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
result=true;
|
||||
}
|
||||
resultList.add(result);
|
||||
// 子线程-1,切换到主线程执行
|
||||
threadLatch.countDown();
|
||||
try{
|
||||
// 等待主线程执行
|
||||
mainLatch.await();
|
||||
}catch (InterruptedException e){
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
if(rollBack.getRollBack()){
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
static class VoidExecThread<T> implements Runnable{
|
||||
/**主线程监控*/
|
||||
private CountDownLatch mainLatch;
|
||||
/**子线程监控*/
|
||||
private CountDownLatch threadLatch;
|
||||
/**是否回滚*/
|
||||
private RollBack rollBack;
|
||||
private BlockingDeque<Boolean> resultList;
|
||||
private List<T> list;
|
||||
private VoidFunction<Set<T>> execFun;
|
||||
public VoidExecThread(CountDownLatch mainLatch,CountDownLatch threadLatch,RollBack rollBack,BlockingDeque<Boolean> resultList,List<T> list,VoidFunction<Set<T>> execFun){
|
||||
this.mainLatch=mainLatch;
|
||||
this.threadLatch=threadLatch;
|
||||
this.rollBack=rollBack;
|
||||
this.resultList=resultList;
|
||||
this.list=list;
|
||||
this.execFun=execFun;
|
||||
}
|
||||
@Override
|
||||
public void run() {
|
||||
Boolean result=false;
|
||||
try{
|
||||
execFun.apply(new HashSet<>(list));
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
result=true;
|
||||
}
|
||||
resultList.add(result);
|
||||
threadLatch.countDown();
|
||||
try{
|
||||
mainLatch.await();
|
||||
}catch (InterruptedException e){
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
if(rollBack.getRollBack()){
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static class ExecByIdsStringThread<R> implements Callable<R>{
|
||||
/**主线程监控*/
|
||||
private CountDownLatch mainLatch;
|
||||
/**子线程监控*/
|
||||
private CountDownLatch threadLatch;
|
||||
/**是否回滚*/
|
||||
private RollBack rollBack;
|
||||
private BlockingDeque<Boolean> resultList;
|
||||
private String ids;
|
||||
private Function<String,R> execFun;
|
||||
public ExecByIdsStringThread(CountDownLatch mainLatch,CountDownLatch threadLatch,RollBack rollBack,BlockingDeque<Boolean> resultList,String ids,Function<String,R> execFun){
|
||||
this.mainLatch=mainLatch;
|
||||
this.threadLatch=threadLatch;
|
||||
this.rollBack=rollBack;
|
||||
this.resultList=resultList;
|
||||
this.ids=ids;
|
||||
this.execFun=execFun;
|
||||
}
|
||||
@Override
|
||||
public R call(){
|
||||
Boolean result=false;
|
||||
R r=null;
|
||||
try{
|
||||
r=execFun.apply(ids);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
result=true;
|
||||
}
|
||||
resultList.add(result);
|
||||
threadLatch.countDown();
|
||||
try{
|
||||
mainLatch.await();
|
||||
}catch (InterruptedException e){
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
if(rollBack.getRollBack()){
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static class ExecByIdsStringListThread<R> implements Callable<R>{
|
||||
/**主线程监控*/
|
||||
private CountDownLatch mainLatch;
|
||||
/**子线程监控*/
|
||||
private CountDownLatch threadLatch;
|
||||
/**是否回滚*/
|
||||
private RollBack rollBack;
|
||||
private BlockingDeque<Boolean> resultList;
|
||||
private List<String> ids;
|
||||
private Function<List<String>,R> execFun;
|
||||
public ExecByIdsStringListThread(CountDownLatch mainLatch,CountDownLatch threadLatch,RollBack rollBack,BlockingDeque<Boolean> resultList,List<String> ids,Function<List<String>,R> execFun){
|
||||
this.mainLatch=mainLatch;
|
||||
this.threadLatch=threadLatch;
|
||||
this.rollBack=rollBack;
|
||||
this.resultList=resultList;
|
||||
this.ids=ids;
|
||||
this.execFun=execFun;
|
||||
}
|
||||
@Override
|
||||
public R call(){
|
||||
Boolean result=false;
|
||||
R r=null;
|
||||
try{
|
||||
r=execFun.apply(ids);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
result=true;
|
||||
}
|
||||
resultList.add(result);
|
||||
threadLatch.countDown();
|
||||
try{
|
||||
mainLatch.await();
|
||||
}catch (InterruptedException e){
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
if(rollBack.getRollBack()){
|
||||
throw new ServiceException("多线程执行异常");
|
||||
}
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
static class RollBack{
|
||||
private Boolean rollBack;
|
||||
public RollBack(Boolean rollBack){
|
||||
this.rollBack=rollBack;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
package com.ruoyi.common.utils.thread;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
/**
|
||||
* @description 线程池工具类
|
||||
* @Author wangqiong
|
||||
* @Date 2023/11/7 15:41
|
||||
* @Version V1.0
|
||||
**/
|
||||
@Slf4j
|
||||
public class ThreadPoolUtil {
|
||||
/** cpu核心数 */
|
||||
private static int corePoolSize = (Runtime.getRuntime().availableProcessors());
|
||||
/**创建固定大小线程池*/
|
||||
private static ExecutorService executors = new ThreadPoolExecutor(
|
||||
corePoolSize,
|
||||
corePoolSize,
|
||||
0L,
|
||||
TimeUnit.MILLISECONDS,
|
||||
new LinkedBlockingQueue<>());
|
||||
|
||||
/**
|
||||
* 异步任务
|
||||
* @param task
|
||||
*/
|
||||
public static void execute(Runnable task){
|
||||
executors.execute(task);
|
||||
}
|
||||
|
||||
/**
|
||||
* 可获取返回结果的任务且可设置超时时间
|
||||
* @param task
|
||||
* @param timeout
|
||||
* @param <T>
|
||||
* @return
|
||||
*/
|
||||
public static <T> T execute(Callable<T> task, long timeout){
|
||||
Future<T> future = executors.submit(task);
|
||||
T result = null;
|
||||
try {
|
||||
result = future.get(timeout, TimeUnit.SECONDS);
|
||||
} catch (InterruptedException e) {
|
||||
future.cancel(true);
|
||||
log.error("ThreadPoolUtil.InterruptedException. e:{}", e);
|
||||
} catch (ExecutionException e) {
|
||||
future.cancel(true);
|
||||
log.error("ThreadPoolUtil.ExecutionException. e:{}", e);
|
||||
} catch (TimeoutException e) {
|
||||
future.cancel(true);
|
||||
log.error("ThreadPoolUtil.TimeoutException. e:{}", e);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 可获取返回结果的任务
|
||||
* @param task
|
||||
* @return
|
||||
*/
|
||||
public static <T> Future<T> submit(Callable<T> task){
|
||||
return executors.submit(task);
|
||||
}
|
||||
|
||||
/**
|
||||
* 可获取返回结果的任务
|
||||
* @param tasks
|
||||
* @param <T>
|
||||
* @return
|
||||
*/
|
||||
public static <T> List<T> submit(Callable<T>... tasks){
|
||||
List<Future<T>> list=new ArrayList<>();
|
||||
List<T> resultList=new ArrayList<>();
|
||||
if(tasks==null||tasks.length==0){
|
||||
return resultList;
|
||||
}
|
||||
for(Callable<T> task:tasks){
|
||||
list.add(executors.submit(task));
|
||||
}
|
||||
for(Future<T> future:list){
|
||||
try {
|
||||
resultList.add(future.get());
|
||||
} catch (InterruptedException e) {
|
||||
future.cancel(true);
|
||||
log.error("ThreadPoolUtil.InterruptedException. e:{}", e);
|
||||
} catch (ExecutionException e) {
|
||||
future.cancel(true);
|
||||
log.error("ThreadPoolUtil.ExecutionException. e:{}", e);
|
||||
}
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行完所有返回
|
||||
* @param tasks
|
||||
*/
|
||||
public static void submit(Runnable ...tasks){
|
||||
if(tasks==null||tasks.length==0){
|
||||
return;
|
||||
}
|
||||
List<CompletableFuture> futureList=new ArrayList<>();
|
||||
for (Runnable task : tasks) {
|
||||
futureList.add(CompletableFuture.runAsync(task,executors));
|
||||
}
|
||||
CompletableFuture.allOf(futureList.toArray(new CompletableFuture[futureList.size()])).join();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
package com.ruoyi.common.websocket;
|
||||
|
||||
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.websocket.*;
|
||||
import javax.websocket.server.PathParam;
|
||||
import javax.websocket.server.ServerEndpoint;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CopyOnWriteArraySet;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description
|
||||
* @date 2023-11-25 15:16
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
@ServerEndpoint("/websocket/{userName}")
|
||||
public class MyWebSocketHandler {
|
||||
// 接口路径 ws://127.0.0.1:9000/websocket;
|
||||
private Session session;
|
||||
|
||||
//concurrent包的线程安全Set,用来存放每个客户端对应的WebSocket对象。
|
||||
private static CopyOnWriteArraySet<Session> sessions = new CopyOnWriteArraySet<>();
|
||||
// 用来存在线连接数
|
||||
private static Map<String, Session> sessionPool = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 链接成功调用的方法
|
||||
*/
|
||||
@OnOpen
|
||||
public void onOpen(Session session, @PathParam(value = "userName") String userName) {
|
||||
try {
|
||||
sessions.add(session);
|
||||
sessionPool.put(userName, session);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 链接关闭调用的方法
|
||||
*/
|
||||
@OnClose
|
||||
public void onClose(Session session,@PathParam(value = "userName") String userName) {
|
||||
try {
|
||||
if(session!=null && session.isOpen()){
|
||||
session.close();
|
||||
sessions.remove(session);
|
||||
sessionPool.remove(userName);
|
||||
}
|
||||
|
||||
log.info("【websocket消息】连接断开,总数为:" + sessions.size());
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 收到客户端消息后调用的方法
|
||||
*
|
||||
* @param message
|
||||
* @param
|
||||
*/
|
||||
@OnMessage
|
||||
public void onMessage(@PathParam(value = "userName") String userName, String message) {
|
||||
|
||||
System.out.println("【websocket消息】收到客户端消息:" + message);
|
||||
// 将消息广播给其它用户
|
||||
for (Session session : sessions) {
|
||||
if(session!=null && session.isOpen()){
|
||||
try {
|
||||
session.getBasicRemote().sendText(message);
|
||||
}catch (Exception e){
|
||||
throw new ServiceException(e.getMessage());
|
||||
}
|
||||
}else {
|
||||
try {
|
||||
session.close();
|
||||
} catch (IOException e) {
|
||||
throw new ServiceException(e.getMessage());
|
||||
}
|
||||
sessions.remove(session);
|
||||
sessionPool.remove(userName);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送错误时的处理
|
||||
*
|
||||
* @param session
|
||||
* @param error
|
||||
*/
|
||||
@OnError
|
||||
public void onError(Session session, Throwable error) {
|
||||
|
||||
throw new ServiceException(error.getMessage());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 推消息给前端
|
||||
*
|
||||
* @param userId
|
||||
* @param message
|
||||
* @return
|
||||
*/
|
||||
public static Runnable sendOneMessage(String userId, String message) {
|
||||
Session session = sessionPool.get(userId);
|
||||
if (session != null && session.isOpen()) {
|
||||
try {
|
||||
log.info("【推给前端消息】 :" + message);
|
||||
|
||||
//高并发下,防止session占用期间,被其他线程调用
|
||||
synchronized (session) {
|
||||
session.getBasicRemote().sendText(message);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.ruoyi.common.websocket;//package com.ruoyi.common.websocket;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description
|
||||
* @date 2023-11-25 15:19
|
||||
*/
|
||||
|
||||
@Configuration
|
||||
public class WebSocketConfig {
|
||||
|
||||
/**
|
||||
* 注入ServerEndpointExporter,
|
||||
* 这个bean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint
|
||||
*/
|
||||
|
||||
@Bean
|
||||
public ServerEndpointExporter serverEndpointExporter() {
|
||||
return new ServerEndpointExporter();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,11 +1,12 @@
|
||||
package com.ruoyi.framework.config;
|
||||
|
||||
import java.util.TimeZone;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
//import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
||||
import tk.mybatis.spring.annotation.MapperScan;
|
||||
|
||||
/**
|
||||
* 程序注解配置
|
||||
|
||||
@@ -111,7 +111,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
|
||||
// 过滤请求
|
||||
.authorizeRequests()
|
||||
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
|
||||
.antMatchers("/login", "/register", "/captchaImage","/uploadPath/**").permitAll()
|
||||
.antMatchers("/login", "/register", "/captchaImage","/uploadPath/**","/websocket/**").permitAll()
|
||||
// 静态资源,可匿名访问
|
||||
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
|
||||
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
|
||||
|
||||
+24
-2
@@ -12,21 +12,43 @@
|
||||
<artifactId>ruoyi-system</artifactId>
|
||||
|
||||
<description>
|
||||
system系统模块
|
||||
<!-- system系统模块-->
|
||||
</description>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!--通用mapper-->
|
||||
<dependency>
|
||||
<groupId>tk.mybatis</groupId>
|
||||
<artifactId>mapper-spring-boot-starter</artifactId>
|
||||
<version>2.1.5</version>
|
||||
</dependency>
|
||||
<!-- 通用工具-->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-common</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>pay</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.tencentyun</groupId>
|
||||
<artifactId>tls-sig-api-v2</artifactId>
|
||||
<version>1.2</version>
|
||||
</dependency>
|
||||
<!--通用mapper-->
|
||||
<dependency>
|
||||
<groupId>tk.mybatis</groupId>
|
||||
<artifactId>mapper-spring-boot-starter</artifactId>
|
||||
<version>2.1.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.22</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -115,4 +115,20 @@ public interface SysDeptMapper
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteDeptById(Long deptId);
|
||||
|
||||
List<Long> selectUserDeptListByRoleId(@Param("roleId")Long roleId);
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
* @param sysDepts
|
||||
* @return
|
||||
*/
|
||||
int batchSave(@Param("list")List<SysDept> sysDepts);
|
||||
|
||||
/**
|
||||
* 根据部门名称查询部门信息
|
||||
* @param deptName
|
||||
* @return
|
||||
*/
|
||||
public SysDept selectDeptByName(@Param("deptName") String deptName);
|
||||
}
|
||||
|
||||
@@ -33,6 +33,14 @@ public interface SysPostMapper
|
||||
*/
|
||||
public SysPost selectPostById(Long postId);
|
||||
|
||||
/**
|
||||
* 查询岗位为经办人的岗位信息
|
||||
*
|
||||
* @param postCode 岗位编码
|
||||
* @return 角色对象信息
|
||||
*/
|
||||
public SysPost selectPostByPostCode(String postCode);
|
||||
|
||||
/**
|
||||
* 根据用户ID获取岗位选择框列表
|
||||
*
|
||||
|
||||
@@ -49,6 +49,14 @@ public interface SysRoleMapper
|
||||
*/
|
||||
public SysRole selectRoleById(Long roleId);
|
||||
|
||||
/**
|
||||
* 根据角色名称查询角色id
|
||||
* @param roleName
|
||||
* @return
|
||||
*/
|
||||
public Long selectRoleIdByName(String roleName);
|
||||
|
||||
|
||||
/**
|
||||
* 根据用户ID查询角色
|
||||
*
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.ruoyi.system.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ruoyi.wisdomarbitrate.domain.Arbitrator;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
|
||||
@@ -19,6 +21,12 @@ public interface SysUserMapper
|
||||
*/
|
||||
public List<SysUser> selectUserList(SysUser sysUser);
|
||||
|
||||
/**
|
||||
* 查询仲裁员角色下的用户
|
||||
* @return
|
||||
*/
|
||||
public List<SysUser> selectUserListByAdRole(Arbitrator arbitrator);
|
||||
|
||||
/**
|
||||
* 根据条件分页查询已配用户角色列表
|
||||
*
|
||||
@@ -50,6 +58,13 @@ public interface SysUserMapper
|
||||
* @return 用户对象信息
|
||||
*/
|
||||
public SysUser selectUserById(Long userId);
|
||||
/**
|
||||
* 通过部门ID查询用户
|
||||
*
|
||||
* @param deptId 部门ID
|
||||
* @return 用户对象信息
|
||||
*/
|
||||
public List<SysUser> selectUserByDeptId(Long deptId);
|
||||
|
||||
/**
|
||||
* 新增用户信息
|
||||
@@ -124,4 +139,49 @@ public interface SysUserMapper
|
||||
* @return 结果
|
||||
*/
|
||||
public SysUser checkEmailUnique(String email);
|
||||
|
||||
List<SysUser> selectUserListByIds(@Param("idList") List<Long> idList);
|
||||
|
||||
/**
|
||||
* 根据身份证号查询用户信息
|
||||
* @param identityNo
|
||||
* @return
|
||||
*/
|
||||
SysUser selectUserByIdCard(@Param("idCard")String identityNo);
|
||||
/**
|
||||
* 根据手机号查询用户信息
|
||||
* @param phone
|
||||
* @return
|
||||
*/
|
||||
SysUser selectUserByPhone(@Param("phone")String phone);
|
||||
|
||||
/**
|
||||
* 根据部门和角色查询用户
|
||||
* @param applicationOrganId
|
||||
* @param roleName
|
||||
* @return
|
||||
*/
|
||||
List<SysUser> selectByDeptIdAndRole(@Param("deptId")String applicationOrganId, @Param("roleName")String roleName);
|
||||
|
||||
List<SysUser> selectRoleUserByDeptId(@Param("deptId")Long deptId,@Param("roleId") Long roleId );
|
||||
|
||||
/**
|
||||
* 批量新增用户
|
||||
* @param addUsers
|
||||
* @return
|
||||
*/
|
||||
int batchSave(@Param("list")List<SysUser> addUsers);
|
||||
/**
|
||||
* 根据邮箱查询用户信息
|
||||
* @param email
|
||||
* @return
|
||||
*/
|
||||
SysUser selectUserByEmail(String email);
|
||||
|
||||
/**
|
||||
* 根据角色查询用户
|
||||
* @param 法律顾问
|
||||
* @return
|
||||
*/
|
||||
SysUser selectUserByRole(String 法律顾问);
|
||||
}
|
||||
|
||||
@@ -59,4 +59,13 @@ public interface SysUserRoleMapper
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds);
|
||||
|
||||
/**
|
||||
* 根据用户id查询关联的角色id
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
List<Long> selectRoleIdsByUserId(Long userId);
|
||||
|
||||
void insertUserRole(@Param("userId") Long userId,@Param("roleId") Long roleId);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.ruoyi.system.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.domain.TreeSelect;
|
||||
import com.ruoyi.common.core.domain.entity.SysMenu;
|
||||
import com.ruoyi.system.domain.vo.RouterVo;
|
||||
@@ -141,4 +143,9 @@ public interface ISysMenuService
|
||||
* @return 结果
|
||||
*/
|
||||
public boolean checkMenuNameUnique(SysMenu menu);
|
||||
/**
|
||||
* 根据用户查询菜单权限字符
|
||||
* @return
|
||||
*/
|
||||
AjaxResult getMenuPermsByUser();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package com.ruoyi.system.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.wisdomarbitrate.domain.Arbitrator;
|
||||
|
||||
/**
|
||||
* 用户 业务层
|
||||
@@ -18,6 +21,13 @@ public interface ISysUserService
|
||||
*/
|
||||
public List<SysUser> selectUserList(SysUser user);
|
||||
|
||||
/**
|
||||
* 查询仲裁员
|
||||
* @param arbitrator
|
||||
* @return
|
||||
*/
|
||||
public List<SysUser> selectUserListByAdRole(Arbitrator arbitrator);
|
||||
|
||||
/**
|
||||
* 根据条件分页查询已分配用户角色列表
|
||||
*
|
||||
@@ -110,7 +120,7 @@ public interface ISysUserService
|
||||
* @param user 用户信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertUser(SysUser user);
|
||||
public AjaxResult insertUser(SysUser user);
|
||||
|
||||
/**
|
||||
* 注册用户信息
|
||||
@@ -126,7 +136,7 @@ public interface ISysUserService
|
||||
* @param user 用户信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateUser(SysUser user);
|
||||
public AjaxResult updateUser(SysUser user);
|
||||
|
||||
/**
|
||||
* 用户授权角色
|
||||
@@ -203,4 +213,5 @@ public interface ISysUserService
|
||||
* @return 结果
|
||||
*/
|
||||
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
|
||||
|
||||
}
|
||||
|
||||
@@ -211,13 +211,16 @@ public class SysDeptServiceImpl implements ISysDeptService
|
||||
@Override
|
||||
public int insertDept(SysDept dept)
|
||||
{
|
||||
SysDept info = deptMapper.selectDeptById(dept.getParentId());
|
||||
// 如果父节点不为正常状态,则不允许新增子节点
|
||||
if (!UserConstants.DEPT_NORMAL.equals(info.getStatus()))
|
||||
{
|
||||
throw new ServiceException("部门停用,不允许新增");
|
||||
Long parentId = dept.getParentId();
|
||||
if(parentId!=null){
|
||||
SysDept info = deptMapper.selectDeptById(dept.getParentId());
|
||||
// 如果父节点不为正常状态,则不允许新增子节点
|
||||
if (!UserConstants.DEPT_NORMAL.equals(info.getStatus()))
|
||||
{
|
||||
throw new ServiceException("部门停用,不允许新增");
|
||||
}
|
||||
dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
|
||||
}
|
||||
dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
|
||||
return deptMapper.insertDept(dept);
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.common.constant.Constants;
|
||||
@@ -528,4 +530,11 @@ public class SysMenuServiceImpl implements ISysMenuService
|
||||
return StringUtils.replaceEach(path, new String[] { Constants.HTTP, Constants.HTTPS, Constants.WWW, "." },
|
||||
new String[] { "", "", "", "/" });
|
||||
}
|
||||
@Override
|
||||
public AjaxResult getMenuPermsByUser() {
|
||||
AjaxResult result = AjaxResult.success();
|
||||
List<String> perms = menuMapper.selectMenuPermsByUserId(SecurityUtils.getUserId());
|
||||
result.put("perms",perms);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
+205
-142
@@ -1,9 +1,22 @@
|
||||
package com.ruoyi.system.service.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.validation.Validator;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.domain.entity.SysDept;
|
||||
import com.ruoyi.system.mapper.*;
|
||||
import com.ruoyi.wisdomarbitrate.domain.Arbitrator;
|
||||
import com.ruoyi.wisdomarbitrate.domain.CaseAffiliate;
|
||||
import com.ruoyi.wisdomarbitrate.domain.entity.CaseAffiliateEntity;
|
||||
import com.ruoyi.wisdomarbitrate.mapper.CaseAffiliateMapper;
|
||||
import com.ruoyi.wisdomarbitrate.mapper.CaseApplicationMapper;
|
||||
import com.ruoyi.wisdomarbitrate.service.ICaseApplicationService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -22,22 +35,16 @@ import com.ruoyi.common.utils.spring.SpringUtils;
|
||||
import com.ruoyi.system.domain.SysPost;
|
||||
import com.ruoyi.system.domain.SysUserPost;
|
||||
import com.ruoyi.system.domain.SysUserRole;
|
||||
import com.ruoyi.system.mapper.SysPostMapper;
|
||||
import com.ruoyi.system.mapper.SysRoleMapper;
|
||||
import com.ruoyi.system.mapper.SysUserMapper;
|
||||
import com.ruoyi.system.mapper.SysUserPostMapper;
|
||||
import com.ruoyi.system.mapper.SysUserRoleMapper;
|
||||
import com.ruoyi.system.service.ISysConfigService;
|
||||
import com.ruoyi.system.service.ISysUserService;
|
||||
|
||||
/**
|
||||
* 用户 业务层处理
|
||||
*
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Service
|
||||
public class SysUserServiceImpl implements ISysUserService
|
||||
{
|
||||
public class SysUserServiceImpl implements ISysUserService {
|
||||
private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
|
||||
|
||||
@Autowired
|
||||
@@ -46,6 +53,9 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
@Autowired
|
||||
private SysRoleMapper roleMapper;
|
||||
|
||||
@Autowired
|
||||
private SysDeptMapper sysDeptMapper;
|
||||
|
||||
@Autowired
|
||||
private SysPostMapper postMapper;
|
||||
|
||||
@@ -58,84 +68,121 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
@Autowired
|
||||
private ISysConfigService configService;
|
||||
|
||||
@Autowired
|
||||
private CaseApplicationMapper caseApplicationMapper;
|
||||
@Autowired
|
||||
private CaseAffiliateMapper caseAffiliateMapper;
|
||||
|
||||
@Autowired
|
||||
protected Validator validator;
|
||||
@Autowired
|
||||
protected ICaseApplicationService caseApplicationService;
|
||||
|
||||
/**
|
||||
* 根据条件分页查询用户列表
|
||||
*
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 用户信息集合信息
|
||||
*/
|
||||
@Override
|
||||
@DataScope(deptAlias = "d", userAlias = "u")
|
||||
public List<SysUser> selectUserList(SysUser user)
|
||||
{
|
||||
public List<SysUser> selectUserList(SysUser user) {
|
||||
return userMapper.selectUserList(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询仲裁员
|
||||
* @param arbitrator
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<SysUser> selectUserListByAdRole(Arbitrator arbitrator) {
|
||||
// 根据案件id查询案件
|
||||
List<CaseAffiliateEntity> caseAffiliates = caseApplicationService.selectAfflicatesByCaseId(arbitrator.getCaseId());
|
||||
List<Long> userIds=new ArrayList<>();
|
||||
if(CollectionUtil.isNotEmpty(caseAffiliates)){
|
||||
for (CaseAffiliateEntity affiliate : caseAffiliates) {
|
||||
if(null!=affiliate.getUserId()) {
|
||||
userIds.add(affiliate.getUserId());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
List<SysUser> sysUsers = userMapper.selectUserListByAdRole(arbitrator);
|
||||
List<SysUser> arbitrators = new ArrayList<>();
|
||||
if(CollectionUtil.isNotEmpty(sysUsers)){
|
||||
for(SysUser sysUser: sysUsers){
|
||||
if(!userIds.contains(sysUser.getUserId())) {
|
||||
Long userId = sysUser.getUserId();
|
||||
int todoCount = caseApplicationMapper.selectCasenum(userId.toString());
|
||||
String nickName = sysUser.getNickName();
|
||||
String nickNamenew = nickName + "(待办案件数量" + todoCount + "个)";
|
||||
sysUser.setNickNameAndNum(nickNamenew);
|
||||
arbitrators.add(sysUser);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return arbitrators;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据条件分页查询已分配用户角色列表
|
||||
*
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 用户信息集合信息
|
||||
*/
|
||||
@Override
|
||||
@DataScope(deptAlias = "d", userAlias = "u")
|
||||
public List<SysUser> selectAllocatedList(SysUser user)
|
||||
{
|
||||
public List<SysUser> selectAllocatedList(SysUser user) {
|
||||
return userMapper.selectAllocatedList(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据条件分页查询未分配用户角色列表
|
||||
*
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 用户信息集合信息
|
||||
*/
|
||||
@Override
|
||||
@DataScope(deptAlias = "d", userAlias = "u")
|
||||
public List<SysUser> selectUnallocatedList(SysUser user)
|
||||
{
|
||||
public List<SysUser> selectUnallocatedList(SysUser user) {
|
||||
return userMapper.selectUnallocatedList(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过用户名查询用户
|
||||
*
|
||||
*
|
||||
* @param userName 用户名
|
||||
* @return 用户对象信息
|
||||
*/
|
||||
@Override
|
||||
public SysUser selectUserByUserName(String userName)
|
||||
{
|
||||
public SysUser selectUserByUserName(String userName) {
|
||||
return userMapper.selectUserByUserName(userName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过用户ID查询用户
|
||||
*
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @return 用户对象信息
|
||||
*/
|
||||
@Override
|
||||
public SysUser selectUserById(Long userId)
|
||||
{
|
||||
public SysUser selectUserById(Long userId) {
|
||||
return userMapper.selectUserById(userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户所属角色组
|
||||
*
|
||||
*
|
||||
* @param userName 用户名
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public String selectUserRoleGroup(String userName)
|
||||
{
|
||||
public String selectUserRoleGroup(String userName) {
|
||||
List<SysRole> list = roleMapper.selectRolesByUserName(userName);
|
||||
if (CollectionUtils.isEmpty(list))
|
||||
{
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(","));
|
||||
@@ -143,16 +190,14 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
|
||||
/**
|
||||
* 查询用户所属岗位组
|
||||
*
|
||||
*
|
||||
* @param userName 用户名
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public String selectUserPostGroup(String userName)
|
||||
{
|
||||
public String selectUserPostGroup(String userName) {
|
||||
List<SysPost> list = postMapper.selectPostsByUserName(userName);
|
||||
if (CollectionUtils.isEmpty(list))
|
||||
{
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
return list.stream().map(SysPost::getPostName).collect(Collectors.joining(","));
|
||||
@@ -160,17 +205,15 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
|
||||
/**
|
||||
* 校验用户名称是否唯一
|
||||
*
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public boolean checkUserNameUnique(SysUser user)
|
||||
{
|
||||
public boolean checkUserNameUnique(SysUser user) {
|
||||
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
|
||||
SysUser info = userMapper.checkUserNameUnique(user.getUserName());
|
||||
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
|
||||
{
|
||||
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
|
||||
return UserConstants.NOT_UNIQUE;
|
||||
}
|
||||
return UserConstants.UNIQUE;
|
||||
@@ -183,12 +226,10 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean checkPhoneUnique(SysUser user)
|
||||
{
|
||||
public boolean checkPhoneUnique(SysUser user) {
|
||||
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
|
||||
SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber());
|
||||
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
|
||||
{
|
||||
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
|
||||
return UserConstants.NOT_UNIQUE;
|
||||
}
|
||||
return UserConstants.UNIQUE;
|
||||
@@ -201,12 +242,10 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean checkEmailUnique(SysUser user)
|
||||
{
|
||||
public boolean checkEmailUnique(SysUser user) {
|
||||
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
|
||||
SysUser info = userMapper.checkEmailUnique(user.getEmail());
|
||||
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
|
||||
{
|
||||
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
|
||||
return UserConstants.NOT_UNIQUE;
|
||||
}
|
||||
return UserConstants.UNIQUE;
|
||||
@@ -214,33 +253,28 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
|
||||
/**
|
||||
* 校验用户是否允许操作
|
||||
*
|
||||
*
|
||||
* @param user 用户信息
|
||||
*/
|
||||
@Override
|
||||
public void checkUserAllowed(SysUser user)
|
||||
{
|
||||
if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin())
|
||||
{
|
||||
public void checkUserAllowed(SysUser user) {
|
||||
if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) {
|
||||
throw new ServiceException("不允许操作超级管理员用户");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验用户是否有数据权限
|
||||
*
|
||||
*
|
||||
* @param userId 用户id
|
||||
*/
|
||||
@Override
|
||||
public void checkUserDataScope(Long userId)
|
||||
{
|
||||
if (!SysUser.isAdmin(SecurityUtils.getUserId()))
|
||||
{
|
||||
public void checkUserDataScope(Long userId) {
|
||||
if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
|
||||
SysUser user = new SysUser();
|
||||
user.setUserId(userId);
|
||||
List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);
|
||||
if (StringUtils.isEmpty(users))
|
||||
{
|
||||
if (StringUtils.isEmpty(users)) {
|
||||
throw new ServiceException("没有权限访问用户数据!");
|
||||
}
|
||||
}
|
||||
@@ -248,45 +282,96 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
|
||||
/**
|
||||
* 新增保存用户信息
|
||||
*
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int insertUser(SysUser user)
|
||||
{
|
||||
public AjaxResult insertUser(SysUser user) {
|
||||
// 校验手机号是否重复
|
||||
if(StrUtil.isNotEmpty(user.getPhonenumber())){
|
||||
if(userMapper.checkPhoneUnique(user.getPhonenumber())!=null){
|
||||
return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
|
||||
}
|
||||
}
|
||||
|
||||
Long deptId = user.getDeptId();
|
||||
Long[] postIds = user.getPostIds();
|
||||
if (deptId != null) {
|
||||
SysDept dept = sysDeptMapper.selectDeptById(deptId);
|
||||
Integer deptType = dept.getDeptType();
|
||||
if (deptType!=null && deptType.intValue() == 1) {
|
||||
SysPost sysPost = postMapper.selectPostByPostCode("jbr");
|
||||
Long postId = sysPost.getPostId();
|
||||
if (postIds.length > 0) {
|
||||
boolean isContain = Arrays.asList(postIds).contains(postId);
|
||||
if (isContain) {
|
||||
List<SysUser> sysUsers = userMapper.selectUserByDeptId(deptId);
|
||||
if (sysUsers != null && sysUsers.size() > 0) {
|
||||
return AjaxResult.error("部门类型为仲裁机构的部门的岗位为经办人的用户只能有一个!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 新增用户信息
|
||||
int rows = userMapper.insertUser(user);
|
||||
// 新增用户岗位关联
|
||||
insertUserPost(user);
|
||||
// 新增用户与角色管理
|
||||
insertUserRole(user);
|
||||
return rows;
|
||||
return AjaxResult.success("新建用户成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册用户信息
|
||||
*
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public boolean registerUser(SysUser user)
|
||||
{
|
||||
public boolean registerUser(SysUser user) {
|
||||
if(StrUtil.isNotEmpty(user.getPhonenumber())){
|
||||
if(userMapper.checkPhoneUnique(user.getPhonenumber())!=null){
|
||||
throw new ServiceException("注册用户'" + user.getUserName() + "'失败,手机号码已存在");
|
||||
}
|
||||
}
|
||||
return userMapper.insertUser(user) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改保存用户信息
|
||||
*
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int updateUser(SysUser user)
|
||||
{
|
||||
public AjaxResult updateUser(SysUser user) {
|
||||
Long deptId = user.getDeptId();
|
||||
Long[] postIds = user.getPostIds();
|
||||
if (deptId != null) {
|
||||
SysDept dept = sysDeptMapper.selectDeptById(deptId);
|
||||
Integer deptType = dept.getDeptType();
|
||||
if (deptType != null && deptType.intValue() == 1) {
|
||||
SysPost sysPost = postMapper.selectPostByPostCode("jbr");
|
||||
if(sysPost!=null) {
|
||||
Long postId = sysPost.getPostId();
|
||||
if (postIds.length > 0) {
|
||||
boolean isContain = Arrays.asList(postIds).contains(postId);
|
||||
if (isContain) {
|
||||
List<SysUser> sysUsers = userMapper.selectUserByDeptId(deptId);
|
||||
if (sysUsers != null && sysUsers.size() > 0) {
|
||||
return AjaxResult.error("部门类型为仲裁机构的部门的岗位为经办人的用户只能有一个!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Long userId = user.getUserId();
|
||||
// 删除用户与角色关联
|
||||
userRoleMapper.deleteUserRoleByUserId(userId);
|
||||
@@ -296,109 +381,100 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
userPostMapper.deleteUserPostByUserId(userId);
|
||||
// 新增用户与岗位管理
|
||||
insertUserPost(user);
|
||||
return userMapper.updateUser(user);
|
||||
userMapper.updateUser(user);
|
||||
return AjaxResult.success("更新用户成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户授权角色
|
||||
*
|
||||
* @param userId 用户ID
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @param roleIds 角色组
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public void insertUserAuth(Long userId, Long[] roleIds)
|
||||
{
|
||||
public void insertUserAuth(Long userId, Long[] roleIds) {
|
||||
userRoleMapper.deleteUserRoleByUserId(userId);
|
||||
insertUserRole(userId, roleIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户状态
|
||||
*
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateUserStatus(SysUser user)
|
||||
{
|
||||
public int updateUserStatus(SysUser user) {
|
||||
return userMapper.updateUser(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户基本信息
|
||||
*
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateUserProfile(SysUser user)
|
||||
{
|
||||
public int updateUserProfile(SysUser user) {
|
||||
return userMapper.updateUser(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户头像
|
||||
*
|
||||
*
|
||||
* @param userName 用户名
|
||||
* @param avatar 头像地址
|
||||
* @param avatar 头像地址
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public boolean updateUserAvatar(String userName, String avatar)
|
||||
{
|
||||
public boolean updateUserAvatar(String userName, String avatar) {
|
||||
return userMapper.updateUserAvatar(userName, avatar) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置用户密码
|
||||
*
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int resetPwd(SysUser user)
|
||||
{
|
||||
public int resetPwd(SysUser user) {
|
||||
return userMapper.updateUser(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置用户密码
|
||||
*
|
||||
*
|
||||
* @param userName 用户名
|
||||
* @param password 密码
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int resetUserPwd(String userName, String password)
|
||||
{
|
||||
public int resetUserPwd(String userName, String password) {
|
||||
return userMapper.resetUserPwd(userName, password);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增用户角色信息
|
||||
*
|
||||
*
|
||||
* @param user 用户对象
|
||||
*/
|
||||
public void insertUserRole(SysUser user)
|
||||
{
|
||||
public void insertUserRole(SysUser user) {
|
||||
this.insertUserRole(user.getUserId(), user.getRoleIds());
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增用户岗位信息
|
||||
*
|
||||
*
|
||||
* @param user 用户对象
|
||||
*/
|
||||
public void insertUserPost(SysUser user)
|
||||
{
|
||||
public void insertUserPost(SysUser user) {
|
||||
Long[] posts = user.getPostIds();
|
||||
if (StringUtils.isNotEmpty(posts))
|
||||
{
|
||||
if (StringUtils.isNotEmpty(posts)) {
|
||||
// 新增用户与岗位管理
|
||||
List<SysUserPost> list = new ArrayList<SysUserPost>(posts.length);
|
||||
for (Long postId : posts)
|
||||
{
|
||||
for (Long postId : posts) {
|
||||
SysUserPost up = new SysUserPost();
|
||||
up.setUserId(user.getUserId());
|
||||
up.setPostId(postId);
|
||||
@@ -410,18 +486,15 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
|
||||
/**
|
||||
* 新增用户角色信息
|
||||
*
|
||||
* @param userId 用户ID
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @param roleIds 角色组
|
||||
*/
|
||||
public void insertUserRole(Long userId, Long[] roleIds)
|
||||
{
|
||||
if (StringUtils.isNotEmpty(roleIds))
|
||||
{
|
||||
public void insertUserRole(Long userId, Long[] roleIds) {
|
||||
if (StringUtils.isNotEmpty(roleIds)) {
|
||||
// 新增用户与角色管理
|
||||
List<SysUserRole> list = new ArrayList<SysUserRole>(roleIds.length);
|
||||
for (Long roleId : roleIds)
|
||||
{
|
||||
for (Long roleId : roleIds) {
|
||||
SysUserRole ur = new SysUserRole();
|
||||
ur.setUserId(userId);
|
||||
ur.setRoleId(roleId);
|
||||
@@ -433,14 +506,13 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
|
||||
/**
|
||||
* 通过用户ID删除用户
|
||||
*
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int deleteUserById(Long userId)
|
||||
{
|
||||
public int deleteUserById(Long userId) {
|
||||
// 删除用户与角色关联
|
||||
userRoleMapper.deleteUserRoleByUserId(userId);
|
||||
// 删除用户与岗位表
|
||||
@@ -450,16 +522,14 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
|
||||
/**
|
||||
* 批量删除用户信息
|
||||
*
|
||||
*
|
||||
* @param userIds 需要删除的用户ID
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int deleteUserByIds(Long[] userIds)
|
||||
{
|
||||
for (Long userId : userIds)
|
||||
{
|
||||
public int deleteUserByIds(Long[] userIds) {
|
||||
for (Long userId : userIds) {
|
||||
checkUserAllowed(new SysUser(userId));
|
||||
checkUserDataScope(userId);
|
||||
}
|
||||
@@ -472,17 +542,15 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
|
||||
/**
|
||||
* 导入用户数据
|
||||
*
|
||||
* @param userList 用户数据列表
|
||||
*
|
||||
* @param userList 用户数据列表
|
||||
* @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
|
||||
* @param operName 操作用户
|
||||
* @param operName 操作用户
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName)
|
||||
{
|
||||
if (StringUtils.isNull(userList) || userList.size() == 0)
|
||||
{
|
||||
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) {
|
||||
if (StringUtils.isNull(userList) || userList.size() == 0) {
|
||||
throw new ServiceException("导入用户数据不能为空!");
|
||||
}
|
||||
int successNum = 0;
|
||||
@@ -490,23 +558,23 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
StringBuilder successMsg = new StringBuilder();
|
||||
StringBuilder failureMsg = new StringBuilder();
|
||||
String password = configService.selectConfigByKey("sys.user.initPassword");
|
||||
for (SysUser user : userList)
|
||||
{
|
||||
try
|
||||
{
|
||||
for (SysUser user : userList) {
|
||||
try {
|
||||
// 验证是否存在这个用户
|
||||
SysUser u = userMapper.selectUserByUserName(user.getUserName());
|
||||
if (StringUtils.isNull(u))
|
||||
{
|
||||
if (StringUtils.isNull(u)) {
|
||||
BeanValidators.validateWithException(validator, user);
|
||||
user.setPassword(SecurityUtils.encryptPassword(password));
|
||||
user.setCreateBy(operName);
|
||||
if(StrUtil.isNotEmpty(user.getPhonenumber())){
|
||||
if(userMapper.checkPhoneUnique(user.getPhonenumber())!=null){
|
||||
throw new ServiceException("导入用户'" + user.getUserName() + "'失败,手机号码已存在");
|
||||
}
|
||||
}
|
||||
userMapper.insertUser(user);
|
||||
successNum++;
|
||||
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 导入成功");
|
||||
}
|
||||
else if (isUpdateSupport)
|
||||
{
|
||||
} else if (isUpdateSupport) {
|
||||
BeanValidators.validateWithException(validator, user);
|
||||
checkUserAllowed(u);
|
||||
checkUserDataScope(u.getUserId());
|
||||
@@ -515,30 +583,25 @@ public class SysUserServiceImpl implements ISysUserService
|
||||
userMapper.updateUser(user);
|
||||
successNum++;
|
||||
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 更新成功");
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
failureNum++;
|
||||
failureMsg.append("<br/>" + failureNum + "、账号 " + user.getUserName() + " 已存在");
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
} catch (Exception e) {
|
||||
failureNum++;
|
||||
String msg = "<br/>" + failureNum + "、账号 " + user.getUserName() + " 导入失败:";
|
||||
failureMsg.append(msg + e.getMessage());
|
||||
log.error(msg, e);
|
||||
}
|
||||
}
|
||||
if (failureNum > 0)
|
||||
{
|
||||
if (failureNum > 0) {
|
||||
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
|
||||
throw new ServiceException(failureMsg.toString());
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
|
||||
}
|
||||
return successMsg.toString();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.ruoyi.wisdomarbitrate;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class StringIdsReq {
|
||||
private List<String> ids;
|
||||
/**
|
||||
* 签署人账号(即仲裁员手机号)
|
||||
*/
|
||||
private String psnAccount;
|
||||
/**
|
||||
* 签署人id
|
||||
*/
|
||||
private String psnId ;
|
||||
/**
|
||||
* 机构账户
|
||||
*/
|
||||
private String orgId ;
|
||||
/**
|
||||
* 批号
|
||||
*/
|
||||
private Integer batchNumber;
|
||||
}
|
||||
@@ -25,9 +25,54 @@ public class ArbitrateRecord extends BaseEntity {
|
||||
private String verificaOpinion;
|
||||
/** 审核裁决书意见 */
|
||||
private String checkOpinion;
|
||||
/** 仲裁员审核裁决书意见 */
|
||||
private String arbitraCheckOpinion;
|
||||
/** 裁决书附件id */
|
||||
private Integer annexId;
|
||||
private Long annexId;
|
||||
|
||||
/** 被申请人是否缺席 */
|
||||
private Integer isAbsence;
|
||||
/** 被申请人质证意见 */
|
||||
private String responCrossOpin;
|
||||
/** 申请人质证意见 */
|
||||
private String applicaCrossOpin;
|
||||
/** 申请人是否缺席 */
|
||||
private Integer appliIsAbsen;
|
||||
/** 被申请人质证意见 */
|
||||
private String responDefenOpini;
|
||||
/**
|
||||
* 本案争议焦点
|
||||
*/
|
||||
private String caseFocus;
|
||||
/**
|
||||
* 本案事实
|
||||
*/
|
||||
private String caseFacts;
|
||||
/**
|
||||
* 被申请人对上述材料的质证意见
|
||||
*/
|
||||
private String respondentOpinion;
|
||||
/**
|
||||
* 申请人对上述材料的质证意见
|
||||
*/
|
||||
private String applicantOpinion;
|
||||
|
||||
/**
|
||||
* 立案审查驳回原因
|
||||
*/
|
||||
private String caseCheckReject;
|
||||
/**
|
||||
* 裁决书驳回原因
|
||||
*/
|
||||
private String arbitrateReject;
|
||||
/**
|
||||
* 部门长确认裁决书驳回
|
||||
*/
|
||||
private String deptorReject;
|
||||
/**
|
||||
* 缴费确认驳回原因
|
||||
*/
|
||||
private String payRejectReason;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -9,6 +9,10 @@ public class Arbitrator extends BaseEntity {
|
||||
|
||||
/** ID */
|
||||
private Long id;
|
||||
/**
|
||||
* 案件id
|
||||
*/
|
||||
private Long caseId;
|
||||
/** 仲裁员姓名 */
|
||||
private String arbitratorName;
|
||||
/** 职称 */
|
||||
@@ -47,6 +51,14 @@ public class Arbitrator extends BaseEntity {
|
||||
/** 已结案数量 */
|
||||
private int closedCaseNum;
|
||||
|
||||
public Long getCaseId() {
|
||||
return caseId;
|
||||
}
|
||||
|
||||
public void setCaseId(Long caseId) {
|
||||
this.caseId = caseId;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.ruoyi.wisdomarbitrate.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author wangqiong
|
||||
* @description 批量操作案件
|
||||
* @date 2023-10-20 14:49
|
||||
*/
|
||||
@Data
|
||||
public class BatchCaseApplication {
|
||||
private List<Long> ids;
|
||||
/**
|
||||
* 是否同意,0拒绝,1同意
|
||||
*/
|
||||
private Integer agreeOrNotCheck;
|
||||
/**
|
||||
* 1同意,0拒绝
|
||||
*/
|
||||
private Integer opinion;
|
||||
/** 驳回原因 */
|
||||
private String caseCheckReject;
|
||||
/**
|
||||
* 批号
|
||||
*/
|
||||
private String batchNumber;
|
||||
|
||||
|
||||
}
|
||||
@@ -1,8 +1,11 @@
|
||||
package com.ruoyi.wisdomarbitrate.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class CaseAffiliate extends BaseEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
/** ID */
|
||||
@@ -10,11 +13,132 @@ public class CaseAffiliate extends BaseEntity {
|
||||
private Long id;
|
||||
/** 案件申请id */
|
||||
private Long caseAppliId;
|
||||
/**
|
||||
* 案件申请日志id
|
||||
*/
|
||||
private Long caseAppliLogId;
|
||||
/** 身份类型 */
|
||||
private int identityType;
|
||||
/** 姓名 */
|
||||
@Excel(name = "姓名")
|
||||
private String name;
|
||||
/**
|
||||
* 申请机构id
|
||||
*/
|
||||
private String applicationOrganId;
|
||||
/**
|
||||
* 申请机构名称
|
||||
*/
|
||||
private String applicationOrganName;
|
||||
|
||||
/**
|
||||
* 法定代表人
|
||||
*/
|
||||
private String compLegalPerson;
|
||||
/**
|
||||
* 邮箱
|
||||
*/
|
||||
private String email;
|
||||
/**
|
||||
* 法定代表人职位
|
||||
*/
|
||||
private String compLegalperPost;
|
||||
/**
|
||||
* 被申请人性别
|
||||
*/
|
||||
private String responSex;
|
||||
/**
|
||||
* 被申请人出生年月日
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date responBirth;
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
private Integer version;
|
||||
/**
|
||||
* 改变的字段
|
||||
*/
|
||||
private String changeColumn;
|
||||
|
||||
/**
|
||||
* 代理人邮箱
|
||||
*/
|
||||
private String agentEmail;
|
||||
|
||||
public String getAgentEmail() {
|
||||
return agentEmail;
|
||||
}
|
||||
|
||||
public void setAgentEmail(String agentEmail) {
|
||||
this.agentEmail = agentEmail;
|
||||
}
|
||||
|
||||
public String getChangeColumn() {
|
||||
return changeColumn;
|
||||
}
|
||||
|
||||
public void setChangeColumn(String changeColumn) {
|
||||
this.changeColumn = changeColumn;
|
||||
}
|
||||
|
||||
public Long getCaseAppliLogId() {
|
||||
return caseAppliLogId;
|
||||
}
|
||||
|
||||
public void setCaseAppliLogId(Long caseAppliLogId) {
|
||||
this.caseAppliLogId = caseAppliLogId;
|
||||
}
|
||||
|
||||
public Integer getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(Integer version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public Date getResponBirth() {
|
||||
return responBirth;
|
||||
}
|
||||
|
||||
public void setResponBirth(Date responBirth) {
|
||||
this.responBirth = responBirth;
|
||||
}
|
||||
|
||||
|
||||
public String getCompLegalPerson() {
|
||||
return compLegalPerson;
|
||||
}
|
||||
|
||||
public void setCompLegalPerson(String compLegalPerson) {
|
||||
this.compLegalPerson = compLegalPerson;
|
||||
}
|
||||
|
||||
public String getCompLegalperPost() {
|
||||
return compLegalperPost;
|
||||
}
|
||||
|
||||
public void setCompLegalperPost(String compLegalperPost) {
|
||||
this.compLegalperPost = compLegalperPost;
|
||||
}
|
||||
|
||||
public String getResponSex() {
|
||||
return responSex;
|
||||
}
|
||||
|
||||
public void setResponSex(String responSex) {
|
||||
this.responSex = responSex;
|
||||
}
|
||||
|
||||
/** 身份证号 */
|
||||
@Excel(name = "身份证号")
|
||||
private String identityNum;
|
||||
@@ -27,6 +151,29 @@ public class CaseAffiliate extends BaseEntity {
|
||||
/** 联系地址 */
|
||||
@Excel(name = "联系地址")
|
||||
private String contactAddress;
|
||||
/** 住所 */
|
||||
@Excel(name = "住所")
|
||||
private String residenAffili;
|
||||
/** 申请人代理人职称 */
|
||||
@Excel(name = "申请人代理人职称")
|
||||
private String appliAgentTitle;
|
||||
|
||||
public String getResidenAffili() {
|
||||
return residenAffili;
|
||||
}
|
||||
|
||||
public void setResidenAffili(String residenAffili) {
|
||||
this.residenAffili = residenAffili;
|
||||
}
|
||||
|
||||
public String getAppliAgentTitle() {
|
||||
return appliAgentTitle;
|
||||
}
|
||||
|
||||
public void setAppliAgentTitle(String appliAgentTitle) {
|
||||
this.appliAgentTitle = appliAgentTitle;
|
||||
}
|
||||
|
||||
/** 单位地址 */
|
||||
@Excel(name = "单位地址")
|
||||
private String workAddress;
|
||||
@@ -46,9 +193,44 @@ public class CaseAffiliate extends BaseEntity {
|
||||
|
||||
/** 送达电子邮件 */
|
||||
private String sendEmail;
|
||||
private String userId;
|
||||
private String applicantAgentUserId;
|
||||
|
||||
public String getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(String userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getApplicantAgentUserId() {
|
||||
return applicantAgentUserId;
|
||||
}
|
||||
|
||||
public void setApplicantAgentUserId(String applicantAgentUserId) {
|
||||
this.applicantAgentUserId = applicantAgentUserId;
|
||||
}
|
||||
|
||||
/** 快递单号 */
|
||||
private String trackNum;
|
||||
|
||||
public String getApplicationOrganId() {
|
||||
return applicationOrganId;
|
||||
}
|
||||
|
||||
public void setApplicationOrganId(String applicationOrganId) {
|
||||
this.applicationOrganId = applicationOrganId;
|
||||
}
|
||||
|
||||
public String getApplicationOrganName() {
|
||||
return applicationOrganName;
|
||||
}
|
||||
|
||||
public void setApplicationOrganName(String applicationOrganName) {
|
||||
this.applicationOrganName = applicationOrganName;
|
||||
}
|
||||
|
||||
public String getSendEmail() {
|
||||
return sendEmail;
|
||||
}
|
||||
|
||||
+273
-522
@@ -3,57 +3,86 @@ package com.ruoyi.wisdomarbitrate.domain;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.CaseAffiliateVO;
|
||||
import lombok.Data;
|
||||
|
||||
import com.ruoyi.wisdomarbitrate.domain.vo.ColumnValue;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class CaseApplication extends BaseEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
* 查询案件时区分是否待办案件,0待办案件,1已办案件
|
||||
*/
|
||||
private String selectCaseStatus;
|
||||
/**
|
||||
* 房间号
|
||||
*/
|
||||
private String roomId;
|
||||
/**
|
||||
* 仲裁员,0-否,1-是
|
||||
*/
|
||||
private Integer arbitratorFlag;
|
||||
/**
|
||||
* 第三方代理人,0-否,1-是
|
||||
*/
|
||||
private Integer agentFlag;
|
||||
|
||||
|
||||
/** ID */
|
||||
private Long id;
|
||||
/** 案件名称 */
|
||||
@Excel(name = "案件名称")
|
||||
private String caseName;
|
||||
/** 案件编号 */
|
||||
// @Excel(name = "案件编号")
|
||||
private String caseNum;
|
||||
/**
|
||||
* 是否同意,0-否
|
||||
*/
|
||||
private Integer opinion;
|
||||
/** 案件标的 */
|
||||
@Excel(name = "案件标的")
|
||||
private BigDecimal caseSubjectAmount;
|
||||
/**
|
||||
* 模板id
|
||||
*/
|
||||
private Long templateId;
|
||||
|
||||
|
||||
|
||||
/** 立案日期 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date registerDate;
|
||||
/** 仲裁方式 */
|
||||
/** 仲裁方式 ,1-开庭,2-书面*/
|
||||
private Integer arbitratMethod;
|
||||
|
||||
public Integer getArbitratMethod() {
|
||||
return arbitratMethod;
|
||||
}
|
||||
|
||||
public void setArbitratMethod(Integer arbitratMethod) {
|
||||
this.arbitratMethod = arbitratMethod;
|
||||
}
|
||||
/**
|
||||
* 是否导入,0手动录入,1导入,默认0
|
||||
*/
|
||||
private Integer importFlag;
|
||||
/** 仲裁方式名称 */
|
||||
private String arbitratMethodName;
|
||||
|
||||
public String getArbitratMethodName() {
|
||||
return arbitratMethodName;
|
||||
}
|
||||
|
||||
public void setArbitratMethodName(String arbitratMethodName) {
|
||||
this.arbitratMethodName = arbitratMethodName;
|
||||
}
|
||||
|
||||
/** 案件状态 */
|
||||
private Integer caseStatus;
|
||||
private String caseStatusstr;
|
||||
|
||||
public Integer getCaseStatus() {
|
||||
return caseStatus;
|
||||
}
|
||||
/** 申请人是否书面审理 */
|
||||
private Integer applicantIsWrittenHear;
|
||||
|
||||
public void setCaseStatus(Integer caseStatus) {
|
||||
this.caseStatus = caseStatus;
|
||||
}
|
||||
/** 被申请人是否书面审理 */
|
||||
private Integer respondentIsWrittenHear;
|
||||
/** 开庭方式是否一致 */
|
||||
private Integer arbitraMethodIssame;
|
||||
/** 仲裁方式说明 */
|
||||
private String arbitratMethodIllustrate;
|
||||
|
||||
|
||||
/** 案件申请表ID */
|
||||
private Long caseAppliId;
|
||||
|
||||
/** 开庭日期 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@@ -79,8 +108,15 @@ public class CaseApplication extends BaseEntity {
|
||||
/** 申请人主张违约金 */
|
||||
@Excel(name = "申请人主张违约金")
|
||||
private BigDecimal claimLiquidDamag;
|
||||
/** 申请人仲裁诉求 */
|
||||
@Excel(name = "申请人仲裁诉求")
|
||||
/** 申请人请求仲裁庭裁决 */
|
||||
@Excel(name = "申请人请求仲裁庭裁决",width = 36)
|
||||
private String requestRule;
|
||||
|
||||
/** 是否财产保全申请 */
|
||||
@Excel(name = "是否财产保全申请",width = 26,combo= {"是","否"},readConverterExp = "0=否,1=是")
|
||||
private Integer properPreser;
|
||||
/** 申请人仲裁请求及事实和理由 */
|
||||
@Excel(name = "申请人仲裁请求及事实和理由",width = 36)
|
||||
private String arbitratClaims;
|
||||
/** 仲裁应缴费用 */
|
||||
private BigDecimal feePayable;
|
||||
@@ -96,11 +132,10 @@ public class CaseApplication extends BaseEntity {
|
||||
/** 仲裁员名称 */
|
||||
private String arbitratorName;
|
||||
|
||||
/** 案件名称 */
|
||||
private String caseName;
|
||||
|
||||
/** 案件描述 */
|
||||
private String caseDescribe;
|
||||
/** 裁决书URL */
|
||||
private String filearbitraUrl;
|
||||
|
||||
/** 是否同意组庭 */
|
||||
private Integer isAgreePendTral;
|
||||
@@ -110,155 +145,103 @@ public class CaseApplication extends BaseEntity {
|
||||
/** 是否需要开庭审理 */
|
||||
private Integer openCourtHear;
|
||||
|
||||
/** 是否仲裁反请求 */
|
||||
private Integer adjudicaCounter;
|
||||
/**
|
||||
* 仲裁反请求原因
|
||||
*/
|
||||
private String adjudicaCounterReason;
|
||||
|
||||
/** 被申请人是否缺席 */
|
||||
private Integer isAbsence;
|
||||
/** 是否管辖异议申请 */
|
||||
private Integer objectiJuris;
|
||||
/** 被申请人质证意见 */
|
||||
private String responCrossOpin;
|
||||
/** 被申请人的答辩意见 */
|
||||
private String responDefenOpini;
|
||||
/** 申请人是否缺席 */
|
||||
private Integer appliIsAbsen;
|
||||
|
||||
/** 申请人质证意见 */
|
||||
private String applicaCrossOpin;
|
||||
|
||||
/** 支付状态 */
|
||||
private Integer paymentStatus;
|
||||
|
||||
/** 支付状态描述 */
|
||||
private String paymentStatusName;
|
||||
/**
|
||||
* 支付方式code,0线上支付,1线下支付
|
||||
*/
|
||||
private Integer payTypeCode;
|
||||
/**
|
||||
* 支付方式name,0线上支付,1线下支付
|
||||
*/
|
||||
private String payTypeName;
|
||||
|
||||
public Integer getPaymentStatus() {
|
||||
return paymentStatus;
|
||||
}
|
||||
|
||||
public void setPaymentStatus(Integer paymentStatus) {
|
||||
this.paymentStatus = paymentStatus;
|
||||
}
|
||||
|
||||
public String getPaymentStatusName() {
|
||||
return paymentStatusName;
|
||||
}
|
||||
|
||||
public void setPaymentStatusName(String paymentStatusName) {
|
||||
this.paymentStatusName = paymentStatusName;
|
||||
}
|
||||
|
||||
public Integer getIsAgreePendTral() {
|
||||
return isAgreePendTral;
|
||||
}
|
||||
|
||||
public void setIsAgreePendTral(Integer isAgreePendTral) {
|
||||
this.isAgreePendTral = isAgreePendTral;
|
||||
}
|
||||
|
||||
public Integer getObjectionAddEviden() {
|
||||
return objectionAddEviden;
|
||||
}
|
||||
|
||||
public void setObjectionAddEviden(Integer objectionAddEviden) {
|
||||
this.objectionAddEviden = objectionAddEviden;
|
||||
}
|
||||
|
||||
public Integer getOpenCourtHear() {
|
||||
return openCourtHear;
|
||||
}
|
||||
|
||||
public void setOpenCourtHear(Integer openCourtHear) {
|
||||
this.openCourtHear = openCourtHear;
|
||||
}
|
||||
|
||||
/**
|
||||
* 缴费凭证
|
||||
*/
|
||||
private List<CaseAttach> payOrderList;
|
||||
// 导入校验失败信息
|
||||
private StringBuilder errorMsg;
|
||||
/**
|
||||
* 是否锁定,0-否,1-是
|
||||
*/
|
||||
private Integer lockStatus;
|
||||
/** 案件状态名称 */
|
||||
private String caseStatusName;
|
||||
/** 是否同意审核 */
|
||||
private Integer agreeOrNotCheck;
|
||||
|
||||
public Integer getAgreeOrNotCheck() {
|
||||
return agreeOrNotCheck;
|
||||
}
|
||||
|
||||
public void setAgreeOrNotCheck(Integer agreeOrNotCheck) {
|
||||
this.agreeOrNotCheck = agreeOrNotCheck;
|
||||
}
|
||||
|
||||
public String getCaseStatusName() {
|
||||
return caseStatusName;
|
||||
}
|
||||
|
||||
public void setCaseStatusName(String caseStatusName) {
|
||||
this.caseStatusName = caseStatusName;
|
||||
}
|
||||
|
||||
/** 申请人名称 */
|
||||
private String applicantName;
|
||||
/** 被申请人名称 */
|
||||
private String respondentName;
|
||||
|
||||
public String getApplicantName() {
|
||||
return applicantName;
|
||||
}
|
||||
|
||||
public void setApplicantName(String applicantName) {
|
||||
this.applicantName = applicantName;
|
||||
}
|
||||
|
||||
public String getRespondentName() {
|
||||
return respondentName;
|
||||
}
|
||||
|
||||
public void setRespondentName(String respondentName) {
|
||||
this.respondentName = respondentName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String getCaseName() {
|
||||
return caseName;
|
||||
}
|
||||
|
||||
public void setCaseName(String caseName) {
|
||||
this.caseName = caseName;
|
||||
}
|
||||
|
||||
public String getCaseDescribe() {
|
||||
return caseDescribe;
|
||||
}
|
||||
|
||||
public void setCaseDescribe(String caseDescribe) {
|
||||
this.caseDescribe = caseDescribe;
|
||||
}
|
||||
|
||||
public String getCaseResult() {
|
||||
return caseResult;
|
||||
}
|
||||
|
||||
public void setCaseResult(String caseResult) {
|
||||
this.caseResult = caseResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户身份证号
|
||||
*/
|
||||
private String idCard;
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private Long userId;
|
||||
/**
|
||||
* 登录用户用户名
|
||||
*/
|
||||
private String loginUserName;
|
||||
/**
|
||||
* 登录人电话
|
||||
*/
|
||||
private String loginUserPhone;
|
||||
private List<Long> deptIds;
|
||||
/**
|
||||
* 部门长状态
|
||||
*/
|
||||
private List<Integer> deptHeadStatus;
|
||||
/**
|
||||
* 代理人角色有关部门
|
||||
*/
|
||||
private List<Long> agentDeptIds;
|
||||
/**
|
||||
* 财务状态
|
||||
*/
|
||||
private Integer financeStatus;
|
||||
/**
|
||||
* 是否查询全部节点
|
||||
*/
|
||||
private Integer isOtherRole;
|
||||
/**
|
||||
* 案件日志id
|
||||
*/
|
||||
private Long caseLogId;
|
||||
/** 仲裁结果 */
|
||||
private String caseResult;
|
||||
|
||||
|
||||
|
||||
public String getArbitratorName() {
|
||||
return arbitratorName;
|
||||
}
|
||||
|
||||
public void setArbitratorName(String arbitratorName) {
|
||||
this.arbitratorName = arbitratorName;
|
||||
}
|
||||
|
||||
/** 是否指派仲裁员 */
|
||||
private int pendingAppointArbotrar;
|
||||
|
||||
public int getPendingAppointArbotrar() {
|
||||
return pendingAppointArbotrar;
|
||||
}
|
||||
|
||||
public void setPendingAppointArbotrar(int pendingAppointArbotrar) {
|
||||
this.pendingAppointArbotrar = pendingAppointArbotrar;
|
||||
}
|
||||
|
||||
public String getArbitratorId() {
|
||||
return arbitratorId;
|
||||
}
|
||||
|
||||
public void setArbitratorId(String arbitratorId) {
|
||||
this.arbitratorId = arbitratorId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** 案件关联人信息 */
|
||||
private List<CaseAffiliate> caseAffiliates;
|
||||
private CaseAffiliateVO affiliate;
|
||||
|
||||
/** 案件仲裁员 */
|
||||
private List<Arbitrator> arbitrators;
|
||||
@@ -266,65 +249,19 @@ public class CaseApplication extends BaseEntity {
|
||||
private List<Integer> caseStatusList;
|
||||
|
||||
private List<Integer> annexTypeList;
|
||||
|
||||
/**
|
||||
* 立案申请书(1)、申请人证据材料(2)、裁决书(3)、案件视频(4)、身份证件(5)
|
||||
* 被申请人证据材料 (6)、庭审笔录(7)、缴费凭证(8)、视频录制(9)、公章图片(10)、语音转录文件(11)
|
||||
*/
|
||||
private Integer annexType;
|
||||
|
||||
public Integer getAnnexType() {
|
||||
return annexType;
|
||||
}
|
||||
|
||||
public void setAnnexType(Integer annexType) {
|
||||
this.annexType = annexType;
|
||||
}
|
||||
|
||||
public List<Integer> getAnnexTypeList() {
|
||||
return annexTypeList;
|
||||
}
|
||||
|
||||
public void setAnnexTypeList(List<Integer> annexTypeList) {
|
||||
this.annexTypeList = annexTypeList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 案件附件列表
|
||||
*/
|
||||
private List<CaseAttach> caseAttachList;
|
||||
|
||||
public List<CaseAttach> getCaseAttachList() {
|
||||
return caseAttachList;
|
||||
}
|
||||
|
||||
public void setCaseAttachList(List<CaseAttach> caseAttachList) {
|
||||
this.caseAttachList = caseAttachList;
|
||||
}
|
||||
|
||||
public List<Integer> getCaseStatusList() {
|
||||
return caseStatusList;
|
||||
}
|
||||
|
||||
public void setCaseStatusList(List<Integer> caseStatusList) {
|
||||
this.caseStatusList = caseStatusList;
|
||||
}
|
||||
|
||||
/** 仲裁记录 */
|
||||
private ArbitrateRecord arbitrateRecord;
|
||||
|
||||
public ArbitrateRecord getArbitrateRecord() {
|
||||
return arbitrateRecord;
|
||||
}
|
||||
|
||||
public void setArbitrateRecord(ArbitrateRecord arbitrateRecord) {
|
||||
this.arbitrateRecord = arbitrateRecord;
|
||||
}
|
||||
|
||||
public List<Arbitrator> getArbitrators() {
|
||||
return arbitrators;
|
||||
}
|
||||
|
||||
public void setArbitrators(List<Arbitrator> arbitrators) {
|
||||
this.arbitrators = arbitrators;
|
||||
}
|
||||
|
||||
/** 身份类型 */
|
||||
// @Excel(name = "身份类型")
|
||||
private int identityType;
|
||||
@@ -332,11 +269,21 @@ public class CaseApplication extends BaseEntity {
|
||||
* 申请人主体信息
|
||||
*/
|
||||
/** 姓名 */
|
||||
@Excel(name = "申请人主体信息-申请人姓名",width = 26)
|
||||
@Excel(name = "申请人主体信息-申请人(机构)",width = 26)
|
||||
private String name;
|
||||
/** 身份证号 */
|
||||
@Excel(name = "申请人主体信息-身份证号",width = 26)
|
||||
@Excel(name = "申请人主体信息-代码",width = 26)
|
||||
private String identityNum;
|
||||
/** 申请人主体信息-法定代表人 */
|
||||
@Excel(name = "申请人主体信息-法定代表人",width = 26)
|
||||
private String compLegalPerson;
|
||||
/** 申请人主体信息-法定代表人 */
|
||||
@Excel(name = "申请人主体信息-法定代表人职位",width = 26)
|
||||
private String compLegalperPost;
|
||||
/**
|
||||
* 申请人主体信息-申请人(机构)id
|
||||
*/
|
||||
private String nameId;
|
||||
|
||||
/** 联系电话 */
|
||||
@Excel(name = "申请人主体信息-联系电话",width = 26)
|
||||
@@ -351,19 +298,30 @@ public class CaseApplication extends BaseEntity {
|
||||
@Excel(name = "申请人主体信息-单位地址",width = 26)
|
||||
private String workAddress;
|
||||
|
||||
/** 申请人住所 */
|
||||
@Excel(name = "申请人主体信息-住所",width = 26)
|
||||
private String residenAffiliAppli;
|
||||
|
||||
/** 申请人邮箱 */
|
||||
@Excel(name = "申请人主体信息-邮箱",width = 26)
|
||||
private String email;
|
||||
/** 代理人姓名 */
|
||||
@Excel(name = "申请人主体信息-代理人姓名",width = 26)
|
||||
private String nameAgent;
|
||||
/** 身份证号 */
|
||||
@Excel(name = "申请人主体信息-代理人身份证号",width = 26)
|
||||
private String identityNumAgent;
|
||||
|
||||
/** 联系电话 */
|
||||
@Excel(name = "申请人主体信息-代理人联系电话",width = 26)
|
||||
private String contactTelphoneAgent;
|
||||
/** 联系地址 */
|
||||
@Excel(name = "申请人主体信息-代理人联系地址",width = 26)
|
||||
private String contactAddressAgent;
|
||||
/**
|
||||
/** 申请人代理人职称 */
|
||||
@Excel(name = "申请人主体信息-代理人职称",width = 26)
|
||||
private String appliAgentTitle;
|
||||
/**
|
||||
* 被申请人主体信息
|
||||
*/
|
||||
/** 姓名 */
|
||||
@@ -372,19 +330,31 @@ public class CaseApplication extends BaseEntity {
|
||||
/** 身份证号 */
|
||||
@Excel(name = "被申请人主体信息-身份证号",width = 26)
|
||||
private String debtorIdentityNum;
|
||||
|
||||
/** 被申请人主体信息-性别 */
|
||||
@Excel(name = "被申请人主体信息-性别",width = 26,combo= {"男","女"},readConverterExp = "0=男,1=女")
|
||||
private String responSex;
|
||||
/** 被申请人主体信息-出生年月日 */
|
||||
@Excel(name = "被申请人主体信息-出生年月日",width = 26)
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date responBirth;
|
||||
/** 联系电话 */
|
||||
@Excel(name = "被申请人主体信息-联系电话",width = 26)
|
||||
private String debtorContactTelphone;
|
||||
/** 联系地址 */
|
||||
@Excel(name = "被申请人主体信息-联系地址",width = 26)
|
||||
private String debtorContactAddress;
|
||||
/** 被申请人住所 */
|
||||
@Excel(name = "被申请人主体信息-住所",width = 26)
|
||||
private String residenAffiliRespon;
|
||||
/** 单位电话 */
|
||||
@Excel(name = "被申请人主体信息-单位电话",width = 26)
|
||||
private String debtorWorkTelphone;
|
||||
/** 单位地址 */
|
||||
@Excel(name = "被申请人主体信息-单位地址",width = 26)
|
||||
private String debtorWorkAddress;
|
||||
/** 邮箱 */
|
||||
@Excel(name = "被申请人主体信息-邮箱",width = 26)
|
||||
private String debtorEmail;
|
||||
|
||||
/** 代理人姓名 */
|
||||
@Excel(name = "被申请人主体信息-代理人姓名",width = 26)
|
||||
@@ -398,313 +368,94 @@ public class CaseApplication extends BaseEntity {
|
||||
/** 联系地址 */
|
||||
@Excel(name = "被申请人主体信息-代理人联系地址",width = 26)
|
||||
private String debtorContactAddressAgent;
|
||||
|
||||
public int getIdentityType() {
|
||||
return identityType;
|
||||
}
|
||||
|
||||
public void setIdentityType(int identityType) {
|
||||
this.identityType = identityType;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getIdentityNum() {
|
||||
return identityNum;
|
||||
}
|
||||
|
||||
public void setIdentityNum(String identityNum) {
|
||||
this.identityNum = identityNum;
|
||||
}
|
||||
|
||||
public String getWorkTelphone() {
|
||||
return workTelphone;
|
||||
}
|
||||
|
||||
public void setWorkTelphone(String workTelphone) {
|
||||
this.workTelphone = workTelphone;
|
||||
}
|
||||
|
||||
public String getContactTelphone() {
|
||||
return contactTelphone;
|
||||
}
|
||||
|
||||
public void setContactTelphone(String contactTelphone) {
|
||||
this.contactTelphone = contactTelphone;
|
||||
}
|
||||
|
||||
public String getContactAddress() {
|
||||
return contactAddress;
|
||||
}
|
||||
|
||||
public void setContactAddress(String contactAddress) {
|
||||
this.contactAddress = contactAddress;
|
||||
}
|
||||
|
||||
public String getWorkAddress() {
|
||||
return workAddress;
|
||||
}
|
||||
|
||||
public void setWorkAddress(String workAddress) {
|
||||
this.workAddress = workAddress;
|
||||
}
|
||||
|
||||
public String getNameAgent() {
|
||||
return nameAgent;
|
||||
}
|
||||
|
||||
public void setNameAgent(String nameAgent) {
|
||||
this.nameAgent = nameAgent;
|
||||
}
|
||||
|
||||
public String getIdentityNumAgent() {
|
||||
return identityNumAgent;
|
||||
}
|
||||
|
||||
public void setIdentityNumAgent(String identityNumAgent) {
|
||||
this.identityNumAgent = identityNumAgent;
|
||||
}
|
||||
|
||||
public String getContactTelphoneAgent() {
|
||||
return contactTelphoneAgent;
|
||||
}
|
||||
|
||||
public void setContactTelphoneAgent(String contactTelphoneAgent) {
|
||||
this.contactTelphoneAgent = contactTelphoneAgent;
|
||||
}
|
||||
|
||||
public String getContactAddressAgent() {
|
||||
return contactAddressAgent;
|
||||
}
|
||||
|
||||
public void setContactAddressAgent(String contactAddressAgent) {
|
||||
this.contactAddressAgent = contactAddressAgent;
|
||||
}
|
||||
|
||||
|
||||
public String getDebtorName() {
|
||||
return debtorName;
|
||||
}
|
||||
|
||||
public void setDebtorName(String debtorName) {
|
||||
this.debtorName = debtorName;
|
||||
}
|
||||
|
||||
public String getDebtorIdentityNum() {
|
||||
return debtorIdentityNum;
|
||||
}
|
||||
|
||||
public void setDebtorIdentityNum(String debtorIdentityNum) {
|
||||
this.debtorIdentityNum = debtorIdentityNum;
|
||||
}
|
||||
|
||||
public String getDebtorContactTelphone() {
|
||||
return debtorContactTelphone;
|
||||
}
|
||||
|
||||
public void setDebtorContactTelphone(String debtorContactTelphone) {
|
||||
this.debtorContactTelphone = debtorContactTelphone;
|
||||
}
|
||||
|
||||
public String getDebtorContactAddress() {
|
||||
return debtorContactAddress;
|
||||
}
|
||||
|
||||
public void setDebtorContactAddress(String debtorContactAddress) {
|
||||
this.debtorContactAddress = debtorContactAddress;
|
||||
}
|
||||
|
||||
public String getDebtorWorkTelphone() {
|
||||
return debtorWorkTelphone;
|
||||
}
|
||||
|
||||
public void setDebtorWorkTelphone(String debtorWorkTelphone) {
|
||||
this.debtorWorkTelphone = debtorWorkTelphone;
|
||||
}
|
||||
|
||||
public String getDebtorWorkAddress() {
|
||||
return debtorWorkAddress;
|
||||
}
|
||||
|
||||
public void setDebtorWorkAddress(String debtorWorkAddress) {
|
||||
this.debtorWorkAddress = debtorWorkAddress;
|
||||
}
|
||||
|
||||
public String getDebtorNameAgent() {
|
||||
return debtorNameAgent;
|
||||
}
|
||||
|
||||
public void setDebtorNameAgent(String debtorNameAgent) {
|
||||
this.debtorNameAgent = debtorNameAgent;
|
||||
}
|
||||
|
||||
public String getDebtorIdentityNumAgent() {
|
||||
return debtorIdentityNumAgent;
|
||||
}
|
||||
|
||||
public void setDebtorIdentityNumAgent(String debtorIdentityNumAgent) {
|
||||
this.debtorIdentityNumAgent = debtorIdentityNumAgent;
|
||||
}
|
||||
|
||||
public String getDebtorContactTelphoneAgent() {
|
||||
return debtorContactTelphoneAgent;
|
||||
}
|
||||
|
||||
public void setDebtorContactTelphoneAgent(String debtorContactTelphoneAgent) {
|
||||
this.debtorContactTelphoneAgent = debtorContactTelphoneAgent;
|
||||
}
|
||||
|
||||
public String getDebtorContactAddressAgent() {
|
||||
return debtorContactAddressAgent;
|
||||
}
|
||||
|
||||
public void setDebtorContactAddressAgent(String debtorContactAddressAgent) {
|
||||
this.debtorContactAddressAgent = debtorContactAddressAgent;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getCaseNum() {
|
||||
return caseNum;
|
||||
}
|
||||
|
||||
public void setCaseNum(String caseNum) {
|
||||
this.caseNum = caseNum;
|
||||
}
|
||||
|
||||
public String getContractNumber() {
|
||||
return contractNumber;
|
||||
}
|
||||
|
||||
public void setContractNumber(String contractNumber) {
|
||||
this.contractNumber = contractNumber;
|
||||
}
|
||||
|
||||
public BigDecimal getCaseSubjectAmount() {
|
||||
return caseSubjectAmount;
|
||||
}
|
||||
|
||||
public void setCaseSubjectAmount(BigDecimal caseSubjectAmount) {
|
||||
this.caseSubjectAmount = caseSubjectAmount;
|
||||
}
|
||||
|
||||
public Date getRegisterDate() {
|
||||
return registerDate;
|
||||
}
|
||||
|
||||
public void setRegisterDate(Date registerDate) {
|
||||
this.registerDate = registerDate;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public Date getHearDate() {
|
||||
return hearDate;
|
||||
}
|
||||
|
||||
public void setHearDate(Date hearDate) {
|
||||
this.hearDate = hearDate;
|
||||
}
|
||||
|
||||
public String getArbitratClaims() {
|
||||
return arbitratClaims;
|
||||
}
|
||||
|
||||
public void setArbitratClaims(String arbitratClaims) {
|
||||
this.arbitratClaims = arbitratClaims;
|
||||
}
|
||||
|
||||
public Date getLoanStartDate() {
|
||||
return loanStartDate;
|
||||
}
|
||||
|
||||
public void setLoanStartDate(Date loanStartDate) {
|
||||
this.loanStartDate = loanStartDate;
|
||||
}
|
||||
|
||||
public Date getLoanEndDate() {
|
||||
return loanEndDate;
|
||||
}
|
||||
|
||||
public void setLoanEndDate(Date loanEndDate) {
|
||||
this.loanEndDate = loanEndDate;
|
||||
}
|
||||
|
||||
public BigDecimal getClaimPrinciOwed() {
|
||||
return claimPrinciOwed;
|
||||
}
|
||||
|
||||
public void setClaimPrinciOwed(BigDecimal claimPrinciOwed) {
|
||||
this.claimPrinciOwed = claimPrinciOwed;
|
||||
}
|
||||
|
||||
public BigDecimal getClaimInterestOwed() {
|
||||
return claimInterestOwed;
|
||||
}
|
||||
|
||||
public void setClaimInterestOwed(BigDecimal claimInterestOwed) {
|
||||
this.claimInterestOwed = claimInterestOwed;
|
||||
}
|
||||
|
||||
public BigDecimal getClaimLiquidDamag() {
|
||||
return claimLiquidDamag;
|
||||
}
|
||||
|
||||
public void setClaimLiquidDamag(BigDecimal claimLiquidDamag) {
|
||||
this.claimLiquidDamag = claimLiquidDamag;
|
||||
}
|
||||
|
||||
public BigDecimal getFeePayable() {
|
||||
return feePayable;
|
||||
}
|
||||
|
||||
public void setFeePayable(BigDecimal feePayable) {
|
||||
this.feePayable = feePayable;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public Date getBeginVideoDate() {
|
||||
return beginVideoDate;
|
||||
}
|
||||
|
||||
public void setBeginVideoDate(Date beginVideoDate) {
|
||||
this.beginVideoDate = beginVideoDate;
|
||||
}
|
||||
|
||||
public String getOnlineVideoPerson() {
|
||||
return onlineVideoPerson;
|
||||
}
|
||||
|
||||
public void setOnlineVideoPerson(String onlineVideoPerson) {
|
||||
this.onlineVideoPerson = onlineVideoPerson;
|
||||
}
|
||||
|
||||
public List<CaseAffiliate> getCaseAffiliates() {
|
||||
return caseAffiliates;
|
||||
}
|
||||
|
||||
public void setCaseAffiliates(List<CaseAffiliate> caseAffiliates) {
|
||||
this.caseAffiliates = caseAffiliates;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 申请机构id
|
||||
*/
|
||||
private String applicationOrganId;
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
private Integer version;
|
||||
/**
|
||||
* 修改案件的提交状态,0-未提交,1-已提交,2-同意,3-拒绝,4-撤销
|
||||
*/
|
||||
private Integer updateSubmitStatus;
|
||||
/** 合同名称 */
|
||||
private String contractName;
|
||||
/**
|
||||
* 事实和理由
|
||||
*/
|
||||
private String facts;
|
||||
/**
|
||||
* 合同甲方
|
||||
*/
|
||||
private String partyA;
|
||||
/**
|
||||
* 利率
|
||||
*/
|
||||
private String interestRate;
|
||||
/**
|
||||
* 待还金额
|
||||
*/
|
||||
private String outstandingMoney;
|
||||
/**
|
||||
* 调解达成协议内容
|
||||
*/
|
||||
private String mediationAgreement;
|
||||
/**
|
||||
* 金融消费纠纷基本情况
|
||||
*/
|
||||
private String disputes;
|
||||
/**
|
||||
* 贷款类型
|
||||
*/
|
||||
private String loanType;
|
||||
/**
|
||||
* 贷款期限
|
||||
*/
|
||||
private String loanTerm;
|
||||
/**
|
||||
* 本案争议焦点
|
||||
*/
|
||||
private String caseFocus;
|
||||
/**
|
||||
* 本案事实
|
||||
*/
|
||||
private String caseFacts;
|
||||
/**
|
||||
* 被申请人对上述材料的质证意见
|
||||
*/
|
||||
private String respondentOpinion;
|
||||
/**
|
||||
* 申请人对上述材料的质证意见
|
||||
*/
|
||||
private String applicantOpinion;
|
||||
/**
|
||||
* 批号
|
||||
*/
|
||||
private Integer batchNumber;
|
||||
/**
|
||||
* 自定义字段
|
||||
*/
|
||||
private List<ColumnValue> columnValues;
|
||||
/**
|
||||
* 待办状态,0待办,1已办
|
||||
*/
|
||||
private Integer pendingStatus;
|
||||
/** e签宝流程id */
|
||||
private String signFlowId;
|
||||
/**
|
||||
* 登录用户名
|
||||
*/
|
||||
private String userName;
|
||||
// 缴费确认驳回原因
|
||||
private String payRejectReason;
|
||||
/**
|
||||
* 仲裁员确认裁决书驳回原因
|
||||
*/
|
||||
private String arbitrateReject;
|
||||
/**
|
||||
* deptorReject:部门长驳回原因
|
||||
*/
|
||||
private String deptorReject;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.ruoyi.wisdomarbitrate.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class CaseApplicationPay {
|
||||
/** 案件编号 */
|
||||
private String caseNum;
|
||||
/** 案件标的 */
|
||||
private BigDecimal caseSubjectAmount;
|
||||
/** 仲裁应缴费用 */
|
||||
private BigDecimal feePayable;
|
||||
/** 案件状态 */
|
||||
private Integer caseStatus;
|
||||
/**申请人 */
|
||||
private String caseAppName;
|
||||
/**被申请人 */
|
||||
private String caseResName;
|
||||
|
||||
}
|
||||
@@ -1,23 +1,34 @@
|
||||
package com.ruoyi.wisdomarbitrate.domain;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
import java.util.List;
|
||||
|
||||
@Builder
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CaseAttach {
|
||||
public class CaseAttach {
|
||||
/**
|
||||
* 附件id
|
||||
* 附件id
|
||||
*/
|
||||
private Integer annexId;
|
||||
private Long annexId;
|
||||
/**
|
||||
* 案件申请id
|
||||
*/
|
||||
private Long caseAppliId;
|
||||
/**
|
||||
* 案件记录id
|
||||
*/
|
||||
private Long caseAppliLogId;
|
||||
/**
|
||||
* onlyOffice附件id
|
||||
*/
|
||||
private String onlyOfficeFileId;
|
||||
/**
|
||||
* 附件名称
|
||||
*/
|
||||
@@ -27,7 +38,7 @@ public class CaseAttach {
|
||||
*/
|
||||
private String annexPath;
|
||||
/**
|
||||
* 附件类型,立案申请书(1)、证据材料(2)、仲裁文书(3)、案件视频(4)、身份证件(5)
|
||||
* 附件类型,立案申请书(1)、申请人证据材料(2)、裁决书(3)、案件视频(4)、身份证件(5)、被申请人证据材料 (6)、庭审笔录(7)、缴费凭证(8)'
|
||||
*/
|
||||
private Integer annexType;
|
||||
/**
|
||||
@@ -42,5 +53,17 @@ public class CaseAttach {
|
||||
* 用户账户
|
||||
*/
|
||||
private String userName;
|
||||
/**
|
||||
* 印章状态(0未启用,1已启用)
|
||||
*/
|
||||
private Integer sealStatus;
|
||||
/**
|
||||
* 是否是证据上传,0-否,1-是
|
||||
*/
|
||||
private Integer isBatchUpload;
|
||||
/**
|
||||
* 附件ids
|
||||
*/
|
||||
private List<Long> fileIds;
|
||||
|
||||
}
|
||||
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
package com.ruoyi.wisdomarbitrate.domain;
|
||||
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CaseEvidenceDirectory extends BaseEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 父id
|
||||
*/
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 证据名称
|
||||
*/
|
||||
private String evidenceName;
|
||||
|
||||
/**
|
||||
* 附件id
|
||||
*/
|
||||
private Long annexId;
|
||||
|
||||
/**
|
||||
* 级数
|
||||
*/
|
||||
private Integer series;
|
||||
|
||||
/**
|
||||
* 案件id
|
||||
*/
|
||||
private Long caseId;
|
||||
|
||||
/** 子目录 */
|
||||
private List<CaseEvidenceDirectory> children = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* 附件名称
|
||||
*/
|
||||
private String annexName;
|
||||
/**
|
||||
* 附件路径
|
||||
*/
|
||||
private String annexPath;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user