Commit 1ad45fdde4a35b5eeba192b09b37d02889321717

Authored by 潘钊
2 parents c946a0a6 1ff7296b

Merge branch 'minhang' into qingpu

Showing 37 changed files with 3200 additions and 1341 deletions

Too many changes to show.

To preserve performance only 37 of 60 files are displayed.

hs_err_pid6460.log deleted 100644 → 0
1 -#  
2 -# A fatal error has been detected by the Java Runtime Environment:  
3 -#  
4 -# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000535b9f79, pid=6460, tid=4048  
5 -#  
6 -# JRE version: Java(TM) SE Runtime Environment (7.0_80-b15) (build 1.7.0_80-b15)  
7 -# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.80-b11 mixed mode windows-amd64 compressed oops)  
8 -# Problematic frame:  
9 -# V [jvm.dll+0x199f79]  
10 -#  
11 -# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows  
12 -#  
13 -# If you would like to submit a bug report, please visit:  
14 -# http://bugreport.java.com/bugreport/crash.jsp  
15 -#  
16 -  
17 ---------------- T H R E A D ---------------  
18 -  
19 -Current thread (0x000000000e39e800): JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_in_vm, id=4048, stack(0x000000000e960000,0x000000000ea60000)]  
20 -  
21 -siginfo: ExceptionCode=0xc0000005, reading address 0x0000000000000000  
22 -  
23 -Registers:  
24 -RAX=0x0000000000000000, RBX=0x000000000e3930e8, RCX=0x0000000000000000, RDX=0x0000000000000000  
25 -RSP=0x000000000ea5f250, RBP=0x000000000ea5f2b9, RSI=0x0000000000000000, RDI=0x000000000e3930f0  
26 -R8 =0x0000000762fe21a8, R9 =0x0000000054bb0000, R10=0x0000000000000000, R11=0x0000000000000000  
27 -R12=0x000000000e39e800, R13=0x000000000ea5f730, R14=0x000000000e39e800, R15=0x000000000ea5f730  
28 -RIP=0x00000000535b9f79, EFLAGS=0x0000000000010246  
29 -  
30 -Top of Stack: (sp=0x000000000ea5f250)  
31 -0x000000000ea5f250: 000000000e3930e8 000000000ea5f2b9  
32 -0x000000000ea5f260: 0000000000000000 0000000000000001  
33 -0x000000000ea5f270: 0000000000000008 000000000e39e800  
34 -0x000000000ea5f280: 0000000000000000 0000000054c18d17  
35 -0x000000000ea5f290: 0000000000000002 000000000e39e800  
36 -0x000000000ea5f2a0: 0000000000000008 00000000128b0c20  
37 -0x000000000ea5f2b0: 0000000000000000 00000000535f8b35  
38 -0x000000000ea5f2c0: 0000000000000000 0000000000000000  
39 -0x000000000ea5f2d0: 00000000128628f0 000000000ea5f730  
40 -0x000000000ea5f2e0: 000000000ea5f730 000000000e39e800  
41 -0x000000000ea5f2f0: 000000000c3aef00 000000000e392870  
42 -0x000000000ea5f300: 0000000000000000 000000000e3a7de0  
43 -0x000000000ea5f310: 000000000ea5f3c9 00000000535ba905  
44 -0x000000000ea5f320: 000000000000068c 0000000000000000  
45 -0x000000000ea5f330: 000000000e3930b0 000000000e39e800  
46 -0x000000000ea5f340: 0000000000000000 0000000000000000  
47 -  
48 -Instructions: (pc=0x00000000535b9f79)  
49 -0x00000000535b9f59: 85 c0 75 05 48 8b c6 eb 10 49 8b 8c 24 20 01 00  
50 -0x00000000535b9f69: 00 48 8b d0 e8 ee ad e6 ff 48 89 45 c7 4c 8b 03  
51 -0x00000000535b9f79: 48 8b 08 41 8b 50 3c 85 d2 75 09 41 8b 40 34 89  
52 -0x00000000535b9f89: 41 3c eb 03 89 51 3c 4d 8b a4 24 18 01 00 00 33  
53 -  
54 -  
55 -Register to memory mapping:  
56 -  
57 -RAX=0x0000000000000000 is an unknown value  
58 -RBX=0x000000000e3930e8 is an unknown value  
59 -RCX=0x0000000000000000 is an unknown value  
60 -RDX=0x0000000000000000 is an unknown value  
61 -RSP=0x000000000ea5f250 is pointing into the stack for thread: 0x000000000e39e800  
62 -RBP=0x000000000ea5f2b9 is pointing into the stack for thread: 0x000000000e39e800  
63 -RSI=0x0000000000000000 is an unknown value  
64 -RDI=0x000000000e3930f0 is an unknown value  
65 -R8 =0x0000000762fe21a8 is an oop  
66 -  
67 -[error occurred during error reporting (printing register info), id 0xe0000000]  
68 -  
69 -Stack: [0x000000000e960000,0x000000000ea60000], sp=0x000000000ea5f250, free space=1020k  
70 -Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)  
71 -V [jvm.dll+0x199f79]  
72 -  
73 -  
74 ---------------- P R O C E S S ---------------  
75 -  
76 -Java Threads: ( => current thread )  
77 - 0x00000000115c3000 JavaThread "WebSocket background processing" daemon [_thread_blocked, id=6088, stack(0x00000000195c0000,0x00000000196c0000)]  
78 - 0x00000000115bb800 JavaThread "SockJS-8" [_thread_blocked, id=12788, stack(0x00000000194c0000,0x00000000195c0000)]  
79 - 0x00000000115c2000 JavaThread "SockJS-7" [_thread_blocked, id=9020, stack(0x00000000193c0000,0x00000000194c0000)]  
80 - 0x00000000115c0000 JavaThread "SockJS-6" [_thread_blocked, id=1068, stack(0x00000000192c0000,0x00000000193c0000)]  
81 - 0x00000000115bf000 JavaThread "SockJS-5" [_thread_blocked, id=6768, stack(0x00000000191c0000,0x00000000192c0000)]  
82 - 0x00000000115bd000 JavaThread "SockJS-4" [_thread_blocked, id=12372, stack(0x00000000190c0000,0x00000000191c0000)]  
83 - 0x00000000115be800 JavaThread "SockJS-3" [_thread_blocked, id=13176, stack(0x0000000018ec0000,0x0000000018fc0000)]  
84 - 0x00000000115c0800 JavaThread "WebSocketServer-localhost-ROOT-1" daemon [_thread_blocked, id=5664, stack(0x0000000018dc0000,0x0000000018ec0000)]  
85 - 0x00000000115bd800 JavaThread "SockJS-2" [_thread_blocked, id=12388, stack(0x0000000018cc0000,0x0000000018dc0000)]  
86 - 0x00000000115ba800 JavaThread "SockJS-1" [_thread_blocked, id=12812, stack(0x0000000018bc0000,0x0000000018cc0000)]  
87 - 0x00000000115c1800 JavaThread "pool-4-thread-2" [_thread_blocked, id=8172, stack(0x00000000189c0000,0x0000000018ac0000)]  
88 - 0x0000000010d23000 JavaThread "pool-4-thread-1" [_thread_blocked, id=8228, stack(0x00000000188c0000,0x00000000189c0000)]  
89 - 0x0000000010d20000 JavaThread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2" daemon [_thread_blocked, id=7532, stack(0x00000000187c0000,0x00000000188c0000)]  
90 - 0x0000000010d1b800 JavaThread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1" daemon [_thread_blocked, id=6200, stack(0x00000000186c0000,0x00000000187c0000)]  
91 - 0x0000000010d1e800 JavaThread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0" daemon [_thread_blocked, id=7872, stack(0x00000000185c0000,0x00000000186c0000)]  
92 - 0x0000000010d1d000 JavaThread "Timer-2" daemon [_thread_blocked, id=10996, stack(0x00000000184c0000,0x00000000185c0000)]  
93 - 0x0000000010d1e000 JavaThread "http-nio-9088-exec-10" daemon [_thread_blocked, id=13928, stack(0x00000000183c0000,0x00000000184c0000)]  
94 - 0x0000000010d21000 JavaThread "http-nio-9088-exec-9" daemon [_thread_blocked, id=9656, stack(0x00000000182c0000,0x00000000183c0000)]  
95 - 0x0000000010d21800 JavaThread "http-nio-9088-exec-8" daemon [_thread_blocked, id=13800, stack(0x00000000181c0000,0x00000000182c0000)]  
96 - 0x0000000010d1f800 JavaThread "http-nio-9088-exec-7" daemon [_thread_blocked, id=12916, stack(0x00000000180c0000,0x00000000181c0000)]  
97 - 0x0000000010d1c800 JavaThread "http-nio-9088-exec-6" daemon [_thread_blocked, id=13056, stack(0x0000000017fc0000,0x00000000180c0000)]  
98 - 0x0000000010d22800 JavaThread "http-nio-9088-exec-5" daemon [_thread_blocked, id=13128, stack(0x0000000017ec0000,0x0000000017fc0000)]  
99 - 0x0000000010d14000 JavaThread "http-nio-9088-exec-4" daemon [_thread_blocked, id=2376, stack(0x0000000017dc0000,0x0000000017ec0000)]  
100 - 0x0000000010d18000 JavaThread "http-nio-9088-exec-3" daemon [_thread_blocked, id=2028, stack(0x0000000017cc0000,0x0000000017dc0000)]  
101 - 0x0000000010d1a000 JavaThread "http-nio-9088-exec-2" daemon [_thread_blocked, id=13288, stack(0x0000000017bc0000,0x0000000017cc0000)]  
102 - 0x0000000010d18800 JavaThread "http-nio-9088-exec-1" daemon [_thread_blocked, id=13336, stack(0x0000000017ac0000,0x0000000017bc0000)]  
103 - 0x0000000010d17000 JavaThread "DestroyJavaVM" [_thread_blocked, id=13188, stack(0x0000000002810000,0x0000000002910000)]  
104 - 0x0000000010d15800 JavaThread "pool-3-thread-8" [_thread_blocked, id=10168, stack(0x00000000177c0000,0x00000000178c0000)]  
105 - 0x0000000010d15000 JavaThread "pool-3-thread-7" [_thread_blocked, id=13976, stack(0x00000000176c0000,0x00000000177c0000)]  
106 - 0x0000000010d16800 JavaThread "pool-3-thread-6" [_thread_blocked, id=6360, stack(0x00000000175c0000,0x00000000176c0000)]  
107 - 0x0000000010d1b000 JavaThread "pool-3-thread-5" [_thread_blocked, id=12004, stack(0x00000000174c0000,0x00000000175c0000)]  
108 - 0x0000000010d19800 JavaThread "pool-3-thread-4" [_thread_blocked, id=2952, stack(0x00000000173c0000,0x00000000174c0000)]  
109 - 0x000000000fe6b000 JavaThread "pool-3-thread-3" [_thread_blocked, id=12564, stack(0x00000000171c0000,0x00000000172c0000)]  
110 - 0x000000000fe6c800 JavaThread "pool-3-thread-2" [_thread_blocked, id=13104, stack(0x00000000170c0000,0x00000000171c0000)]  
111 - 0x000000000fe6b800 JavaThread "pool-3-thread-1" [_thread_blocked, id=11560, stack(0x0000000016fc0000,0x00000000170c0000)]  
112 - 0x000000000fe6e000 JavaThread "http-nio-9088-Acceptor-0" daemon [_thread_in_native, id=9136, stack(0x0000000015d50000,0x0000000015e50000)]  
113 - 0x0000000014c5a000 JavaThread "http-nio-9088-ClientPoller-1" daemon [_thread_in_native, id=7852, stack(0x0000000015c50000,0x0000000015d50000)]  
114 - 0x0000000013dc0000 JavaThread "http-nio-9088-ClientPoller-0" daemon [_thread_in_native, id=12424, stack(0x0000000015b50000,0x0000000015c50000)]  
115 - 0x0000000013dbf000 JavaThread "NioBlockingSelector.BlockPoller-1" daemon [_thread_in_native, id=13700, stack(0x0000000015a50000,0x0000000015b50000)]  
116 - 0x00000000120f5000 JavaThread "commons-pool-EvictionTimer" daemon [_thread_blocked, id=11380, stack(0x0000000015950000,0x0000000015a50000)]  
117 - 0x00000000104e5800 JavaThread "Timer-0" daemon [_thread_blocked, id=12924, stack(0x0000000015650000,0x0000000015750000)]  
118 - 0x0000000010084800 JavaThread "container-0" [_thread_blocked, id=9884, stack(0x00000000144f0000,0x00000000145f0000)]  
119 - 0x00000000135e3000 JavaThread "ContainerBackgroundProcessor[StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]" daemon [_thread_blocked, id=8248, stack(0x0000000013110000,0x0000000013210000)]  
120 - 0x0000000014ac9800 JavaThread "Abandoned connection cleanup thread" daemon [_thread_blocked, id=5796, stack(0x0000000013010000,0x0000000013110000)]  
121 - 0x000000001199d800 JavaThread "Tomcat JDBC Pool Cleaner[169174794:1470299944387]" daemon [_thread_blocked, id=2196, stack(0x0000000012f10000,0x0000000013010000)]  
122 - 0x000000000f1ee800 JavaThread "FileSystemWatcher: files=#243 cl=sun.misc.Launcher$AppClassLoader@a15670a" daemon [_thread_blocked, id=13032, stack(0x00000000109f0000,0x0000000010af0000)]  
123 - 0x000000000eec2000 JavaThread "Service Thread" daemon [_thread_blocked, id=11684, stack(0x000000000f710000,0x000000000f810000)]  
124 - 0x000000000eeca800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=13412, stack(0x000000000f610000,0x000000000f710000)]  
125 - 0x000000000eec9800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=5552, stack(0x000000000f510000,0x000000000f610000)]  
126 - 0x000000000e3ad000 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=8012, stack(0x000000000ec10000,0x000000000ed10000)]  
127 - 0x000000000e3ac000 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=6576, stack(0x000000000eb10000,0x000000000ec10000)]  
128 -=>0x000000000e39e800 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_in_vm, id=4048, stack(0x000000000e960000,0x000000000ea60000)]  
129 - 0x000000000e396800 JavaThread "Attach Listener" daemon [_thread_blocked, id=6340, stack(0x000000000e860000,0x000000000e960000)]  
130 - 0x000000000e391800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=4020, stack(0x000000000e760000,0x000000000e860000)]  
131 - 0x000000000c399000 JavaThread "Finalizer" daemon [_thread_blocked, id=10992, stack(0x000000000e260000,0x000000000e360000)]  
132 - 0x00000000029fe800 JavaThread "Reference Handler" daemon [_thread_blocked, id=9164, stack(0x000000000e160000,0x000000000e260000)]  
133 -  
134 -Other Threads:  
135 - 0x000000000c395000 VMThread [stack: 0x000000000e060000,0x000000000e160000] [id=2068]  
136 - 0x000000000eed9800 WatcherThread [stack: 0x000000000f810000,0x000000000f910000] [id=3876]  
137 -  
138 -VM state:not at safepoint (normal execution)  
139 -  
140 -VM Mutex/Monitor currently owned by a thread: None  
141 -  
142 -Heap  
143 - PSYoungGen total 765440K, used 370K [0x00000007cba80000, 0x00000007ff180000, 0x0000000800000000)  
144 - eden space 687104K, 0% used [0x00000007cba80000,0x00000007cbadc9c0,0x00000007f5980000)  
145 - from space 78336K, 0% used [0x00000007f5980000,0x00000007f5980000,0x00000007fa600000)  
146 - to space 74752K, 0% used [0x00000007fa880000,0x00000007fa880000,0x00000007ff180000)  
147 - ParOldGen total 1714688K, used 70227K [0x0000000763000000, 0x00000007cba80000, 0x00000007cba80000)  
148 - object space 1714688K, 4% used [0x0000000763000000,0x0000000767494d00,0x00000007cba80000)  
149 - PSPermGen total 83968K, used 83963K [0x000000075de00000, 0x0000000763000000, 0x0000000763000000)  
150 - object space 83968K, 99% used [0x000000075de00000,0x0000000762ffec28,0x0000000763000000)  
151 -  
152 -Card table byte_map: [0x0000000005b10000,0x0000000006030000] byte_map_base: 0x0000000002021000  
153 -  
154 -Polling page: 0x0000000000650000  
155 -  
156 -Code Cache [0x0000000002b10000, 0x00000000035e0000, 0x0000000005b10000)  
157 - total_blobs=3304 nmethods=2730 adapters=532 free_code_cache=38289Kb largest_free_block=39047680  
158 -  
159 -Compilation events (10 events):  
160 -Event: 1149.288 Thread 0x000000000eeca800 nmethod 3358 0x0000000003411550 code [0x00000000034116a0, 0x0000000003411868]  
161 -Event: 1149.288 Thread 0x000000000eeca800 3359 org.springsource.loaded.ri.Invoker::getJavaMethod (20 bytes)  
162 -Event: 1149.289 Thread 0x000000000eeca800 nmethod 3359 0x000000000359bad0 code [0x000000000359bc00, 0x000000000359bc78]  
163 -Event: 1149.301 Thread 0x000000000eec9800 nmethod 3353 0x00000000035b0c50 code [0x00000000035b0f60, 0x00000000035b2538]  
164 -Event: 1155.428 Thread 0x000000000eeca800 3360 sl.org.objectweb.asm.ClassReader::b (1124 bytes)  
165 -Event: 1155.431 Thread 0x000000000eec9800 3361 sl.org.objectweb.asm.ClassWriter::toByteArray (1303 bytes)  
166 -Event: 1155.832 Thread 0x000000000eec9800 nmethod 3361 0x00000000035bb890 code [0x00000000035bbea0, 0x00000000035c1bb8]  
167 -Event: 1155.832 Thread 0x000000000eec9800 3362 % org.springsource.loaded.TypeDescriptor::getByDescriptor @ 12 (60 bytes)  
168 -Event: 1155.840 Thread 0x000000000eec9800 nmethod 3362% 0x000000000359d4d0 code [0x000000000359d640, 0x000000000359e458]  
169 -Event: 1155.856 Thread 0x000000000eeca800 nmethod 3360 0x00000000035c74d0 code [0x00000000035c7900, 0x00000000035cc260]  
170 -  
171 -GC Heap History (10 events):  
172 -Event: 1156.624 GC heap before  
173 -{Heap before GC invocations=25 (full 8):  
174 - PSYoungGen total 764416K, used 0K [0x00000007cba80000, 0x00000007ff880000, 0x0000000800000000)  
175 - eden space 680448K, 0% used [0x00000007cba80000,0x00000007cba80000,0x00000007f5300000)  
176 - from space 83968K, 0% used [0x00000007f5300000,0x00000007f5300000,0x00000007fa500000)  
177 - to space 81408K, 0% used [0x00000007fa900000,0x00000007fa900000,0x00000007ff880000)  
178 - ParOldGen total 1714688K, used 70830K [0x0000000763000000, 0x00000007cba80000, 0x00000007cba80000)  
179 - object space 1714688K, 4% used [0x0000000763000000,0x000000076752bac8,0x00000007cba80000)  
180 - PSPermGen total 83968K, used 83967K [0x000000075de00000, 0x0000000763000000, 0x0000000763000000)  
181 - object space 83968K, 99% used [0x000000075de00000,0x0000000762ffffd0,0x0000000763000000)  
182 -Event: 1156.734 GC heap after  
183 -Heap after GC invocations=25 (full 8):  
184 - PSYoungGen total 764416K, used 0K [0x00000007cba80000, 0x00000007ff880000, 0x0000000800000000)  
185 - eden space 680448K, 0% used [0x00000007cba80000,0x00000007cba80000,0x00000007f5300000)  
186 - from space 83968K, 0% used [0x00000007f5300000,0x00000007f5300000,0x00000007fa500000)  
187 - to space 81408K, 0% used [0x00000007fa900000,0x00000007fa900000,0x00000007ff880000)  
188 - ParOldGen total 1714688K, used 70227K [0x0000000763000000, 0x00000007cba80000, 0x00000007cba80000)  
189 - object space 1714688K, 4% used [0x0000000763000000,0x0000000767494e10,0x00000007cba80000)  
190 - PSPermGen total 83968K, used 83950K [0x000000075de00000, 0x0000000763000000, 0x0000000763000000)  
191 - object space 83968K, 99% used [0x000000075de00000,0x0000000762ffb848,0x0000000763000000)  
192 -}  
193 -Event: 1156.734 GC heap before  
194 -{Heap before GC invocations=26 (full 8):  
195 - PSYoungGen total 764416K, used 6940K [0x00000007cba80000, 0x00000007ff880000, 0x0000000800000000)  
196 - eden space 680448K, 1% used [0x00000007cba80000,0x00000007cc1472a0,0x00000007f5300000)  
197 - from space 83968K, 0% used [0x00000007f5300000,0x00000007f5300000,0x00000007fa500000)  
198 - to space 81408K, 0% used [0x00000007fa900000,0x00000007fa900000,0x00000007ff880000)  
199 - ParOldGen total 1714688K, used 70227K [0x0000000763000000, 0x00000007cba80000, 0x00000007cba80000)  
200 - object space 1714688K, 4% used [0x0000000763000000,0x0000000767494e10,0x00000007cba80000)  
201 - PSPermGen total 83968K, used 83963K [0x000000075de00000, 0x0000000763000000, 0x0000000763000000)  
202 - object space 83968K, 99% used [0x000000075de00000,0x0000000762ffec28,0x0000000763000000)  
203 -Event: 1156.738 GC heap after  
204 -Heap after GC invocations=26 (full 8):  
205 - PSYoungGen total 762368K, used 0K [0x00000007cba80000, 0x00000007ff280000, 0x0000000800000000)  
206 - eden space 687104K, 0% used [0x00000007cba80000,0x00000007cba80000,0x00000007f5980000)  
207 - from space 75264K, 0% used [0x00000007fa900000,0x00000007fa900000,0x00000007ff280000)  
208 - to space 78336K, 0% used [0x00000007f5980000,0x00000007f5980000,0x00000007fa600000)  
209 - ParOldGen total 1714688K, used 70227K [0x0000000763000000, 0x00000007cba80000, 0x00000007cba80000)  
210 - object space 1714688K, 4% used [0x0000000763000000,0x0000000767494e10,0x00000007cba80000)  
211 - PSPermGen total 83968K, used 83963K [0x000000075de00000, 0x0000000763000000, 0x0000000763000000)  
212 - object space 83968K, 99% used [0x000000075de00000,0x0000000762ffec28,0x0000000763000000)  
213 -}  
214 -Event: 1156.738 GC heap before  
215 -{Heap before GC invocations=27 (full 9):  
216 - PSYoungGen total 762368K, used 0K [0x00000007cba80000, 0x00000007ff280000, 0x0000000800000000)  
217 - eden space 687104K, 0% used [0x00000007cba80000,0x00000007cba80000,0x00000007f5980000)  
218 - from space 75264K, 0% used [0x00000007fa900000,0x00000007fa900000,0x00000007ff280000)  
219 - to space 78336K, 0% used [0x00000007f5980000,0x00000007f5980000,0x00000007fa600000)  
220 - ParOldGen total 1714688K, used 70227K [0x0000000763000000, 0x00000007cba80000, 0x00000007cba80000)  
221 - object space 1714688K, 4% used [0x0000000763000000,0x0000000767494e10,0x00000007cba80000)  
222 - PSPermGen total 83968K, used 83963K [0x000000075de00000, 0x0000000763000000, 0x0000000763000000)  
223 - object space 83968K, 99% used [0x000000075de00000,0x0000000762ffec28,0x0000000763000000)  
224 -Event: 1156.915 GC heap after  
225 -Heap after GC invocations=27 (full 9):  
226 - PSYoungGen total 762368K, used 0K [0x00000007cba80000, 0x00000007ff280000, 0x0000000800000000)  
227 - eden space 687104K, 0% used [0x00000007cba80000,0x00000007cba80000,0x00000007f5980000)  
228 - from space 75264K, 0% used [0x00000007fa900000,0x00000007fa900000,0x00000007ff280000)  
229 - to space 78336K, 0% used [0x00000007f5980000,0x00000007f5980000,0x00000007fa600000)  
230 - ParOldGen total 1714688K, used 70227K [0x0000000763000000, 0x00000007cba80000, 0x00000007cba80000)  
231 - object space 1714688K, 4% used [0x0000000763000000,0x0000000767494d00,0x00000007cba80000)  
232 - PSPermGen total 83968K, used 83963K [0x000000075de00000, 0x0000000763000000, 0x0000000763000000)  
233 - object space 83968K, 99% used [0x000000075de00000,0x0000000762ffec28,0x0000000763000000)  
234 -}  
235 -Event: 1156.915 GC heap before  
236 -{Heap before GC invocations=28 (full 9):  
237 - PSYoungGen total 762368K, used 0K [0x00000007cba80000, 0x00000007ff280000, 0x0000000800000000)  
238 - eden space 687104K, 0% used [0x00000007cba80000,0x00000007cba80000,0x00000007f5980000)  
239 - from space 75264K, 0% used [0x00000007fa900000,0x00000007fa900000,0x00000007ff280000)  
240 - to space 78336K, 0% used [0x00000007f5980000,0x00000007f5980000,0x00000007fa600000)  
241 - ParOldGen total 1714688K, used 70227K [0x0000000763000000, 0x00000007cba80000, 0x00000007cba80000)  
242 - object space 1714688K, 4% used [0x0000000763000000,0x0000000767494d00,0x00000007cba80000)  
243 - PSPermGen total 83968K, used 83963K [0x000000075de00000, 0x0000000763000000, 0x0000000763000000)  
244 - object space 83968K, 99% used [0x000000075de00000,0x0000000762ffec28,0x0000000763000000)  
245 -Event: 1156.918 GC heap after  
246 -Heap after GC invocations=28 (full 9):  
247 - PSYoungGen total 765440K, used 0K [0x00000007cba80000, 0x00000007ff180000, 0x0000000800000000)  
248 - eden space 687104K, 0% used [0x00000007cba80000,0x00000007cba80000,0x00000007f5980000)  
249 - from space 78336K, 0% used [0x00000007f5980000,0x00000007f5980000,0x00000007fa600000)  
250 - to space 74752K, 0% used [0x00000007fa880000,0x00000007fa880000,0x00000007ff180000)  
251 - ParOldGen total 1714688K, used 70227K [0x0000000763000000, 0x00000007cba80000, 0x00000007cba80000)  
252 - object space 1714688K, 4% used [0x0000000763000000,0x0000000767494d00,0x00000007cba80000)  
253 - PSPermGen total 83968K, used 83963K [0x000000075de00000, 0x0000000763000000, 0x0000000763000000)  
254 - object space 83968K, 99% used [0x000000075de00000,0x0000000762ffec28,0x0000000763000000)  
255 -}  
256 -Event: 1156.918 GC heap before  
257 -{Heap before GC invocations=29 (full 10):  
258 - PSYoungGen total 765440K, used 0K [0x00000007cba80000, 0x00000007ff180000, 0x0000000800000000)  
259 - eden space 687104K, 0% used [0x00000007cba80000,0x00000007cba80000,0x00000007f5980000)  
260 - from space 78336K, 0% used [0x00000007f5980000,0x00000007f5980000,0x00000007fa600000)  
261 - to space 74752K, 0% used [0x00000007fa880000,0x00000007fa880000,0x00000007ff180000)  
262 - ParOldGen total 1714688K, used 70227K [0x0000000763000000, 0x00000007cba80000, 0x00000007cba80000)  
263 - object space 1714688K, 4% used [0x0000000763000000,0x0000000767494d00,0x00000007cba80000)  
264 - PSPermGen total 83968K, used 83963K [0x000000075de00000, 0x0000000763000000, 0x0000000763000000)  
265 - object space 83968K, 99% used [0x000000075de00000,0x0000000762ffec28,0x0000000763000000)  
266 -Event: 1157.029 GC heap after  
267 -Heap after GC invocations=29 (full 10):  
268 - PSYoungGen total 765440K, used 0K [0x00000007cba80000, 0x00000007ff180000, 0x0000000800000000)  
269 - eden space 687104K, 0% used [0x00000007cba80000,0x00000007cba80000,0x00000007f5980000)  
270 - from space 78336K, 0% used [0x00000007f5980000,0x00000007f5980000,0x00000007fa600000)  
271 - to space 74752K, 0% used [0x00000007fa880000,0x00000007fa880000,0x00000007ff180000)  
272 - ParOldGen total 1714688K, used 70227K [0x0000000763000000, 0x00000007cba80000, 0x00000007cba80000)  
273 - object space 1714688K, 4% used [0x0000000763000000,0x0000000767494d00,0x00000007cba80000)  
274 - PSPermGen total 83968K, used 83963K [0x000000075de00000, 0x0000000763000000, 0x0000000763000000)  
275 - object space 83968K, 99% used [0x000000075de00000,0x0000000762ffec28,0x0000000763000000)  
276 -}  
277 -  
278 -Deoptimization events (10 events):  
279 -Event: 938.332 Thread 0x0000000010d21000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00000000030b552c method=org.springsource.loaded.ri.ReflectiveInterceptor.getReloadableTypeIfHasBeenReloaded(Ljava/lang/Class;)Lorg/springsource/loaded/ReloadableType; @ 3  
280 -Event: 938.335 Thread 0x0000000010d21000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00000000030b9028 method=org.springsource.loaded.ri.ReflectiveInterceptor.getReloadableTypeIfHasBeenReloaded(Ljava/lang/Class;)Lorg/springsource/loaded/ReloadableType; @ 3  
281 -Event: 938.339 Thread 0x0000000010d21000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000002f85038 method=org.springsource.loaded.ri.ReflectiveInterceptor.getReloadableTypeIfHasBeenReloaded(Ljava/lang/Class;)Lorg/springsource/loaded/ReloadableType; @ 3  
282 -Event: 942.703 Thread 0x0000000010d15800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000002fd02f4 method=org.springsource.loaded.ri.ReflectiveInterceptor.getReloadableTypeIfHasBeenReloaded(Ljava/lang/Class;)Lorg/springsource/loaded/ReloadableType; @ 3  
283 -Event: 942.703 Thread 0x0000000010d15800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000002d56b88 method=org.springsource.loaded.ri.ReflectiveInterceptor.getReloadableTypeIfHasBeenReloaded(Ljava/lang/Class;)Lorg/springsource/loaded/ReloadableType; @ 3  
284 -Event: 942.703 Thread 0x0000000010d15800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00000000030f0a64 method=org.springsource.loaded.ri.ReflectiveInterceptor.getReloadableTypeIfHasBeenReloaded(Ljava/lang/Class;)Lorg/springsource/loaded/ReloadableType; @ 3  
285 -Event: 948.331 Thread 0x0000000010d1c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000002c56894 method=org.springsource.loaded.ri.ReflectiveInterceptor.getReloadableTypeIfHasBeenReloaded(Ljava/lang/Class;)Lorg/springsource/loaded/ReloadableType; @ 3  
286 -Event: 1155.432 Thread 0x000000000f1ee800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000003050388 method=sl.org.objectweb.asm.MethodWriter.visitIntInsn(II)V @ 15  
287 -Event: 1155.759 Thread 0x000000000f1ee800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00000000032fe19c method=org.springsource.loaded.TypeRegistry.getTypeRegistryFor(Ljava/lang/ClassLoader;)Lorg/springsource/loaded/TypeRegistry; @ 167  
288 -Event: 1155.759 Thread 0x000000000f1ee800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00000000032fe19c method=org.springsource.loaded.TypeRegistry.getTypeRegistryFor(Ljava/lang/ClassLoader;)Lorg/springsource/loaded/TypeRegistry; @ 167  
289 -  
290 -Internal exceptions (10 events):  
291 -Event: 935.722 Thread 0x000000000f1ee800 Threw 0x00000007cbde06a0 at C:\re\jdk7u80\2329\hotspot\src\share\vm\prims\jvm.cpp:1319  
292 -Event: 935.722 Thread 0x000000000f1ee800 Threw 0x00000007cbdf07b0 at C:\re\jdk7u80\2329\hotspot\src\share\vm\prims\jvm.cpp:1319  
293 -Event: 935.724 Thread 0x000000000f1ee800 Threw 0x00000007cbe22338 at C:\re\jdk7u80\2329\hotspot\src\share\vm\prims\jvm.cpp:1319  
294 -Event: 935.724 Thread 0x000000000f1ee800 Threw 0x00000007cbe2ec08 at C:\re\jdk7u80\2329\hotspot\src\share\vm\prims\jvm.cpp:1319  
295 -Event: 935.726 Thread 0x000000000f1ee800 Threw 0x00000007cbe770f0 at C:\re\jdk7u80\2329\hotspot\src\share\vm\prims\jvm.cpp:1319  
296 -Event: 935.728 Thread 0x000000000f1ee800 Implicit null exception at 0x0000000002de657f to 0x0000000002de6a1d  
297 -Event: 935.729 Thread 0x000000000f1ee800 Threw 0x00000007cbe8bdb8 at C:\re\jdk7u80\2329\hotspot\src\share\vm\prims\jvm.cpp:1319  
298 -Event: 935.730 Thread 0x000000000f1ee800 Implicit null exception at 0x0000000002d52e10 to 0x0000000002d52e5d  
299 -Event: 937.543 Thread 0x000000000fe6c800 Threw 0x00000007ccbe0330 at C:\re\jdk7u80\2329\hotspot\src\share\vm\prims\jvm.cpp:1319  
300 -Event: 1157.029 Thread 0x000000000e39e800 Threw 0x000000075dead638 at C:\re\jdk7u80\2329\hotspot\src\share\vm\gc_interface/collectedHeap.inline.hpp:225  
301 -  
302 -Events (10 events):  
303 -Event: 1155.759 Thread 0x000000000f1ee800 Uncommon trap: trap_request=0xffffffde fr.pc=0x00000000032fe19c  
304 -Event: 1155.759 Thread 0x000000000f1ee800 DEOPT PACKING pc=0x00000000032fe19c sp=0x0000000010aed6b0  
305 -Event: 1155.759 Thread 0x000000000f1ee800 DEOPT UNPACKING pc=0x0000000002b475a4 sp=0x0000000010aed600 mode 2  
306 -Event: 1155.856 Thread 0x000000000eeca800 flushing nmethod 0x0000000002c65150  
307 -Event: 1156.219 Executing VM operation: ParallelGCFailedPermanentAllocation  
308 -Event: 1156.352 Executing VM operation: ParallelGCFailedPermanentAllocation done  
309 -Event: 1156.352 Executing VM operation: ParallelGCFailedPermanentAllocation  
310 -Event: 1156.734 Executing VM operation: ParallelGCFailedPermanentAllocation done  
311 -Event: 1156.734 Executing VM operation: ParallelGCFailedPermanentAllocation  
312 -Event: 1157.029 Executing VM operation: ParallelGCFailedPermanentAllocation done  
313 -  
314 -  
315 -Dynamic libraries:  
316 -0x00007ff7f0560000 - 0x00007ff7f0593000 C:\Program Files\Java\jdk1.7.0_80\bin\javaw.exe  
317 -0x00007fff1e7c0000 - 0x00007fff1e981000 C:\WINDOWS\SYSTEM32\ntdll.dll  
318 -0x00007fff1bbc0000 - 0x00007fff1bc6d000 C:\WINDOWS\system32\KERNEL32.DLL  
319 -0x00007fff1b960000 - 0x00007fff1bb48000 C:\WINDOWS\system32\KERNELBASE.dll  
320 -0x00007fff1bc70000 - 0x00007fff1bd17000 C:\WINDOWS\system32\ADVAPI32.dll  
321 -0x00007fff1da50000 - 0x00007fff1daed000 C:\WINDOWS\system32\msvcrt.dll  
322 -0x00007fff1e490000 - 0x00007fff1e4eb000 C:\WINDOWS\system32\sechost.dll  
323 -0x00007fff1daf0000 - 0x00007fff1dc0c000 C:\WINDOWS\system32\RPCRT4.dll  
324 -0x00007fff1c1b0000 - 0x00007fff1c306000 C:\WINDOWS\system32\USER32.dll  
325 -0x00007fff1e5c0000 - 0x00007fff1e746000 C:\WINDOWS\system32\GDI32.dll  
326 -0x00007fff15b20000 - 0x00007fff15d94000 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.10586.494_none_a2d8b04ea53e3145\COMCTL32.dll  
327 -0x00007fff1e1b0000 - 0x00007fff1e42d000 C:\WINDOWS\system32\combase.dll  
328 -0x00007fff1bb50000 - 0x00007fff1bbba000 C:\WINDOWS\system32\bcryptPrimitives.dll  
329 -0x00007fff1e000000 - 0x00007fff1e03b000 C:\WINDOWS\system32\IMM32.DLL  
330 -0x0000000054bb0000 - 0x0000000054c82000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\msvcr100.dll  
331 -0x0000000053420000 - 0x0000000053bf9000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\server\jvm.dll  
332 -0x00007fff1e1a0000 - 0x00007fff1e1a8000 C:\WINDOWS\system32\PSAPI.DLL  
333 -0x00007fff18230000 - 0x00007fff18239000 C:\WINDOWS\SYSTEM32\WSOCK32.dll  
334 -0x00007fff18eb0000 - 0x00007fff18ed3000 C:\WINDOWS\SYSTEM32\WINMM.dll  
335 -0x00007fff1e750000 - 0x00007fff1e7bb000 C:\WINDOWS\system32\WS2_32.dll  
336 -0x00007fff18e30000 - 0x00007fff18e5c000 C:\WINDOWS\SYSTEM32\WINMMBASE.dll  
337 -0x00007fff1b240000 - 0x00007fff1b283000 C:\WINDOWS\system32\cfgmgr32.dll  
338 -0x0000000054ba0000 - 0x0000000054baf000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\verify.dll  
339 -0x0000000054b70000 - 0x0000000054b98000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\java.dll  
340 -0x0000000054b30000 - 0x0000000054b65000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\jdwp.dll  
341 -0x0000000054b20000 - 0x0000000054b28000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\npt.dll  
342 -0x0000000054af0000 - 0x0000000054b13000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\instrument.dll  
343 -0x0000000054ad0000 - 0x0000000054ae6000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\zip.dll  
344 -0x0000000054ac0000 - 0x0000000054ac9000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\dt_socket.dll  
345 -0x00007fff08350000 - 0x00007fff08366000 C:\WINDOWS\system32\napinsp.dll  
346 -0x00007fff08310000 - 0x00007fff0832a000 C:\WINDOWS\system32\pnrpnsp.dll  
347 -0x00007fff18e60000 - 0x00007fff18e78000 C:\WINDOWS\system32\NLAapi.dll  
348 -0x00007fff1a6b0000 - 0x00007fff1a70c000 C:\WINDOWS\System32\mswsock.dll  
349 -0x00007fff19760000 - 0x00007fff1980a000 C:\WINDOWS\SYSTEM32\DNSAPI.dll  
350 -0x00007fff1e500000 - 0x00007fff1e508000 C:\WINDOWS\system32\NSI.dll  
351 -0x00007fff09680000 - 0x00007fff0968d000 C:\WINDOWS\System32\winrnr.dll  
352 -0x00000000553e0000 - 0x0000000055406000 C:\Program Files\Bonjour\mdnsNSP.dll  
353 -0x00007fff12600000 - 0x00007fff12638000 C:\WINDOWS\SYSTEM32\Iphlpapi.DLL  
354 -0x00007fff11f80000 - 0x00007fff11fe7000 C:\WINDOWS\System32\fwpuclnt.dll  
355 -0x00007fff1ad10000 - 0x00007fff1ad39000 C:\WINDOWS\SYSTEM32\bcrypt.dll  
356 -0x00007fff0b3c0000 - 0x00007fff0b3ca000 C:\Windows\System32\rasadhlp.dll  
357 -0x0000000054aa0000 - 0x0000000054aba000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\net.dll  
358 -0x0000000054a80000 - 0x0000000054a91000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\nio.dll  
359 -0x0000000054a70000 - 0x0000000054a7b000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\management.dll  
360 -0x00007fff1a760000 - 0x00007fff1a777000 C:\WINDOWS\SYSTEM32\CRYPTSP.dll  
361 -0x00007fff1a3f0000 - 0x00007fff1a424000 C:\WINDOWS\system32\rsaenh.dll  
362 -0x00007fff1a540000 - 0x00007fff1a55f000 C:\WINDOWS\SYSTEM32\USERENV.dll  
363 -0x00007fff1ade0000 - 0x00007fff1adf4000 C:\WINDOWS\system32\profapi.dll  
364 -0x00007fff1a880000 - 0x00007fff1a88b000 C:\WINDOWS\SYSTEM32\CRYPTBASE.dll  
365 -0x00007fff11c80000 - 0x00007fff11c96000 C:\WINDOWS\SYSTEM32\dhcpcsvc6.DLL  
366 -0x00007fff11d40000 - 0x00007fff11d5a000 C:\WINDOWS\SYSTEM32\dhcpcsvc.DLL  
367 -0x0000000054a40000 - 0x0000000054a64000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\sunec.dll  
368 -0x0000000054a30000 - 0x0000000054a3b000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\sunmscapi.dll  
369 -0x00007fff1af30000 - 0x00007fff1b0f8000 C:\WINDOWS\system32\CRYPT32.dll  
370 -0x00007fff1ae50000 - 0x00007fff1ae60000 C:\WINDOWS\system32\MSASN1.dll  
371 -0x0000000054890000 - 0x0000000054a25000 C:\Program Files\Java\jdk1.7.0_80\jre\bin\awt.dll  
372 -0x00007fff1df10000 - 0x00007fff1dfd1000 C:\WINDOWS\system32\OLEAUT32.dll  
373 -0x00007fff195d0000 - 0x00007fff19649000 C:\WINDOWS\system32\apphelp.dll  
374 -0x00007fff17d40000 - 0x00007fff17ecc000 C:\WINDOWS\SYSTEM32\dbghelp.dll  
375 -  
376 -VM Arguments:  
377 -jvm_args: -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:61815 -javaagent:G:\springloaded-1.2.5.RELEASE.jar -Xverify:none -Xms1028m -Xmx2512m -Dfile.encoding=UTF-8  
378 -java_command: com.bsth.Application  
379 -Launcher Type: SUN_STANDARD  
380 -  
381 -Environment Variables:  
382 -JAVA_HOME=C:\Program Files\Java\jdk1.7.0_80  
383 -CLASSPATH=.;C:\Program Files\Java\jdk1.7.0_80\lib;C:\Program Files\Java\jdk1.7.0_80\lib\tools.jar  
384 -PATH=C:\Perl64\site\bin;C:\Perl64\bin;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Intel\IntelSGXPSW\bin\x64\Release\;C:\Program Files\Intel\IntelSGXPSW\bin\win32\Release\;C:\Program Files\Java\jdk1.7.0_80\bin;C:\Program Files\Java\jdk1.7.0_80\jre\bin;G:\apache-maven-3.3.9\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;G:\TortoiseSVN 1.9\bin;G:\Git\cmd;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin;D:\openssl\bin;C:\Program Files\nodejs\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Users\panzhao\AppData\Roaming\npm;C:\Program Files (x86)\SSH Communications Security\SSH Secure Shell  
385 -USERNAME=panzhao  
386 -OS=Windows_NT  
387 -PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 94 Stepping 3, GenuineIntel  
388 -  
389 -  
390 -  
391 ---------------- S Y S T E M ---------------  
392 -  
393 -OS: Windows 8.1 , 64 bit Build 9600  
394 -  
395 -CPU:total 8 (4 cores per cpu, 2 threads per core) family 6 model 94 stepping 3, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, erms, ht, tsc, tscinvbit  
396 -  
397 -Memory: 4k page, physical 8223456k(2856092k free), swap 9599712k(1366128k free)  
398 -  
399 -vm_info: Java HotSpot(TM) 64-Bit Server VM (24.80-b11) for windows-amd64 JRE (1.7.0_80-b15), built on Apr 10 2015 11:26:34 by "java_re" with unknown MS VC++:1600  
400 -  
401 -time: Thu Aug 04 16:58:12 2016  
402 -elapsed time: 1157 seconds  
403 -  
src/main/java/com/bsth/controller/DownloadController.java
@@ -28,11 +28,10 @@ public class DownloadController @@ -28,11 +28,10 @@ public class DownloadController
28 { 28 {
29 29
30 @RequestMapping("download") 30 @RequestMapping("download")
31 - public ResponseEntity<byte[]> download(String jName,String lpName) throws IOException {  
32 - String moudelPath = this.getClass().getResource("/").getPath()+ "static\\pages\\forms\\export\\"+jName+".xls";  
33 -// System.out.println(moudelPath);  
34 - String fileName = jName+lpName+".xls";  
35 -// String path="D:\\export\\target\\"+jName+".xls"; 31 + public ResponseEntity<byte[]> download(String fileName) throws IOException {
  32 + fileName = fileName+".xls";
  33 + String moudelPath = this.getClass().getResource("/").getPath()+ "static\\pages\\forms\\export\\"+fileName;
  34 +// String path="D:\\export\\target\\"+jName+".xls";
36 File file=new File(moudelPath); 35 File file=new File(moudelPath);
37 HttpHeaders headers = new HttpHeaders(); 36 HttpHeaders headers = new HttpHeaders();
38 String realFileName=new String(fileName.getBytes("UTF-8"),"iso-8859-1");//为了解决中文名称乱码问题 37 String realFileName=new String(fileName.getBytes("UTF-8"),"iso-8859-1");//为了解决中文名称乱码问题
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
@@ -300,8 +300,8 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -300,8 +300,8 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
300 } 300 }
301 301
302 @RequestMapping(value = "/dailyInfo") 302 @RequestMapping(value = "/dailyInfo")
303 - public List<Map<String, Object>> dailyInfo(@RequestParam String line, @RequestParam String date) {  
304 - return scheduleRealInfoService.dailyInfo(line, date); 303 + public List<Map<String, Object>> dailyInfo(@RequestParam String line, @RequestParam String date,@RequestParam String type) {
  304 + return scheduleRealInfoService.dailyInfo(line, date, type);
305 } 305 }
306 306
307 @RequestMapping(value = "/historyMessage") 307 @RequestMapping(value = "/historyMessage")
@@ -336,9 +336,33 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -336,9 +336,33 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
336 @RequestParam String endDate,@RequestParam String lpName,@RequestParam String code) { 336 @RequestParam String endDate,@RequestParam String lpName,@RequestParam String code) {
337 return scheduleRealInfoService.correctForm(line, startDate, endDate, lpName, code); 337 return scheduleRealInfoService.correctForm(line, startDate, endDate, lpName, code);
338 } 338 }
339 - 339 + /**
  340 + * @Title queryListWaybill
  341 + * @Description 查询行车路单列表
  342 + * @param jName 驾驶员名字
  343 + * @param clZbh 车辆自编号(内部编号)
  344 + * @param lpName 路牌
  345 + * @return
  346 + */
340 @RequestMapping(value="/queryListWaybill") 347 @RequestMapping(value="/queryListWaybill")
341 public List<ScheduleRealInfo> queryListWaybill(@RequestParam String jName,@RequestParam String clZbh,@RequestParam String lpName){ 348 public List<ScheduleRealInfo> queryListWaybill(@RequestParam String jName,@RequestParam String clZbh,@RequestParam String lpName){
342 return scheduleRealInfoService.queryListWaybill(jName, clZbh,lpName); 349 return scheduleRealInfoService.queryListWaybill(jName, clZbh,lpName);
343 } 350 }
  351 +
  352 + @RequestMapping(value="/statisticsDaily")
  353 + public List<Map<String,Object>> statisticsDaily(@RequestParam String line,@RequestParam String date,@RequestParam String xlName){
  354 + return scheduleRealInfoService.statisticsDaily(line, date,xlName);
  355 + }
  356 +
  357 + /**
  358 + * @Title: scheduleDaily
  359 + * @Description: TODO(调度日报表)
  360 + * @param line 线路
  361 + * @param date 时间
  362 + * @return
  363 + */
  364 + @RequestMapping(value="/scheduleDaily")
  365 + public List<Object> scheduleDaily(@RequestParam String line,@RequestParam String date){
  366 + return scheduleRealInfoService.scheduleDaily(line,date);
  367 + }
344 } 368 }
src/main/java/com/bsth/controller/sys/UserController.java
@@ -4,23 +4,30 @@ import javax.servlet.http.HttpServletRequest; @@ -4,23 +4,30 @@ import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse; 4 import javax.servlet.http.HttpServletResponse;
5 import javax.servlet.http.HttpSession; 5 import javax.servlet.http.HttpSession;
6 6
  7 +import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.security.authentication.BadCredentialsException; 8 import org.springframework.security.authentication.BadCredentialsException;
8 import org.springframework.security.core.Authentication; 9 import org.springframework.security.core.Authentication;
9 import org.springframework.security.core.context.SecurityContextHolder; 10 import org.springframework.security.core.context.SecurityContextHolder;
  11 +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
10 import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; 12 import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
11 import org.springframework.security.web.authentication.session.SessionAuthenticationException; 13 import org.springframework.security.web.authentication.session.SessionAuthenticationException;
12 import org.springframework.web.bind.annotation.RequestMapping; 14 import org.springframework.web.bind.annotation.RequestMapping;
  15 +import org.springframework.web.bind.annotation.RequestParam;
13 import org.springframework.web.bind.annotation.RestController; 16 import org.springframework.web.bind.annotation.RestController;
14 import org.springframework.web.servlet.ModelAndView; 17 import org.springframework.web.servlet.ModelAndView;
15 18
16 import com.bsth.controller.BaseController; 19 import com.bsth.controller.BaseController;
17 import com.bsth.entity.sys.SysUser; 20 import com.bsth.entity.sys.SysUser;
18 import com.bsth.security.util.SecurityUtils; 21 import com.bsth.security.util.SecurityUtils;
  22 +import com.bsth.service.sys.SysUserService;
19 23
20 @RestController 24 @RestController
21 @RequestMapping("user") 25 @RequestMapping("user")
22 public class UserController extends BaseController<SysUser, Integer>{ 26 public class UserController extends BaseController<SysUser, Integer>{
23 27
  28 + @Autowired
  29 + SysUserService sysUserService;
  30 +
24 /** 31 /**
25 * 32 *
26 * @Title: loginFailure 33 * @Title: loginFailure
@@ -65,4 +72,45 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt;{ @@ -65,4 +72,45 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt;{
65 public SysUser currentUser(){ 72 public SysUser currentUser(){
66 return SecurityUtils.getCurrentUser(); 73 return SecurityUtils.getCurrentUser();
67 } 74 }
  75 +
  76 + /**
  77 + * @Title changeEnabled
  78 + * @Description: TODO(改变用户状态)
  79 + * @param id 用户ID
  80 + * @param enabled 状态
  81 + * @return
  82 + */
  83 + @RequestMapping("/changeEnabled")
  84 + public int changeEnabled(@RequestParam int id,@RequestParam int enabled){
  85 + return sysUserService.changeEnabled(id,enabled);
  86 + }
  87 +
  88 + /**
  89 + * @Title changePWD
  90 + * @Description: TODO(修改密码)
  91 + * @param oldPWD 原始密码
  92 + * @param newwPWD 新密码
  93 + * @param cnewPWD 确认新密码
  94 + * @return
  95 + */
  96 + @RequestMapping("/changePWD")
  97 + public String changePWD(@RequestParam String oldPWD,@RequestParam String newPWD,@RequestParam String cnewPWD){
  98 + SysUser sysUser = SecurityUtils.getCurrentUser();
  99 + String msg = "";
  100 + if(new BCryptPasswordEncoder(4).matches(oldPWD, sysUser.getPassword())){
  101 + if(oldPWD.equals(newPWD)){
  102 + msg = "新密码不能跟原始密码一样!";
  103 + }else{
  104 + if(newPWD.equals(cnewPWD)){
  105 + sysUserService.changePWD(sysUser.getId(),newPWD);
  106 + msg = "修改成功!";
  107 + }else{
  108 + msg= "新密码两次输入不一致!";
  109 + }
  110 + }
  111 + }else{
  112 + msg = "原始密码错误!";
  113 + }
  114 + return msg;
  115 + }
68 } 116 }
src/main/java/com/bsth/data/BasicData.java
1 package com.bsth.data; 1 package com.bsth.data;
2 2
  3 +import java.util.HashMap;
  4 +import java.util.Iterator;
  5 +import java.util.Map;
  6 +
  7 +import org.slf4j.Logger;
  8 +import org.slf4j.LoggerFactory;
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.stereotype.Component;
  11 +
  12 +import com.bsth.entity.CarPark;
  13 +import com.bsth.entity.Cars;
  14 +import com.bsth.entity.Line;
  15 +import com.bsth.entity.Station;
  16 +import com.bsth.entity.schedule.CarConfigInfo;
  17 +import com.bsth.repository.CarParkRepository;
  18 +import com.bsth.repository.CarsRepository;
  19 +import com.bsth.repository.LineRepository;
  20 +import com.bsth.repository.StationRepository;
  21 +import com.bsth.repository.schedule.CarConfigInfoRepository;
  22 +import com.google.common.collect.BiMap;
  23 +import com.google.common.collect.HashBiMap;
  24 +import com.google.common.collect.TreeMultimap;
  25 +
3 /** 26 /**
4 * 27 *
5 - * @ClassName: BasicData  
6 - * @Description: TODO(基础的映射数据) 28 + * @ClassName: BasicData
  29 + * @Description: TODO(基础的映射数据)
7 * @author PanZhao 30 * @author PanZhao
8 - * @date 2016年8月10日 下午3:27:45 31 + * @date 2016年8月10日 下午3:27:45
9 * 32 *
10 */ 33 */
  34 +@Component
11 public class BasicData { 35 public class BasicData {
12 36
  37 + //设备号和车辆自编号 (K: 设备编码 ,V:车辆自编号)
  38 + public static BiMap<String, String> deviceId2NbbmMap;
  39 +
  40 + //车辆自编号和公司代码对照 (K: 车辆自编号 ,V:公司代码)
  41 + public static Map<String, String> nbbm2CompanyCodeMap;
  42 +
  43 + //站点编码和名称对照,包括停车场 (K: 站点编码 ,V:站点名称)
  44 + public static Map<String, String> stationCode2NameMap;
  45 +
  46 + //车辆和线路对照
  47 + public static Map<String, Line> nbbm2LineMap;
  48 +
  49 + //线路和用户对照 用于webSocket定向推送消息(用户进入线调时写入数据)
  50 + public static TreeMultimap<Integer, String> lineCode2SocketUserMap = TreeMultimap.create();
  51 +
  52 + //线路ID和code 对照
  53 + public static BiMap<Integer, Integer> lineId2CodeMap;
  54 +
  55 + @Autowired
  56 + BasicDataLoader basicDataLoader;
  57 +
  58 + Logger logger = LoggerFactory.getLogger(this.getClass());
  59 +
  60 + /**
  61 + *
  62 + * @Title: loadAllData
  63 + * @Description: TODO(加载所有数据)
  64 + * @throws
  65 + */
  66 + public int loadAllData(){
  67 + try{
  68 + basicDataLoader.loadDeviceInfo();
  69 + basicDataLoader.loadStationInfo();
  70 + basicDataLoader.loadLineInfo();
  71 + basicDataLoader.loadNbbm2LineInfo();
  72 + }catch(Exception e){
  73 + logger.error("加载基础数据时出现异常," , e);
  74 + }
  75 + return 0;
  76 + }
  77 +
  78 + @Component
  79 + public class BasicDataLoader{
  80 +
  81 + @Autowired
  82 + CarsRepository carsRepository;
  83 +
  84 + @Autowired
  85 + StationRepository stationRepository;
  86 +
  87 + @Autowired
  88 + CarParkRepository carParkRepository;
  89 +
  90 + @Autowired
  91 + CarConfigInfoRepository carConfigInfoRepository;
  92 +
  93 + @Autowired
  94 + LineRepository lineRepository;
  95 +
  96 + /**
  97 + *
  98 + * @Title: loadDeviceInfo
  99 + * @Description: TODO(加载设备相关信息)
  100 + * @throws
  101 + */
  102 + public void loadDeviceInfo(){
  103 + BiMap<String, String> deviceId2Nbbm = HashBiMap.create();
  104 + //车辆和公司代码对照
  105 + Map<String, String> nbbm2CompanyCode = new HashMap<>();
  106 + Iterator<Cars> carIterator = carsRepository.findAll().iterator();
  107 + Cars car;
  108 + while(carIterator.hasNext()){
  109 + car = carIterator.next();
  110 + deviceId2Nbbm.put(car.getEquipmentCode(), car.getInsideCode());
  111 + nbbm2CompanyCode.put(car.getInsideCode(), car.getBusinessCode());
  112 + }
  113 +
  114 + deviceId2NbbmMap = deviceId2Nbbm;
  115 + nbbm2CompanyCodeMap = nbbm2CompanyCode;
  116 + }
  117 +
  118 + /**
  119 + *
  120 + * @Title: loadStationInfo
  121 + * @Description: TODO(加载站点信息)
  122 + * @throws
  123 + */
  124 + public void loadStationInfo(){
  125 + Map<String, String> stationCode2Name = new HashMap<>();
  126 + Iterator<Station> iterator = stationRepository.findAll().iterator();
  127 + //站点
  128 + Station station;
  129 + while(iterator.hasNext()){
  130 + station = iterator.next();
  131 + stationCode2Name.put(station.getStationCod(), station.getStationName());
  132 + }
  133 + //停车场
  134 + Iterator<CarPark> iterator2 = carParkRepository.findAll().iterator();
  135 + CarPark carPark;
  136 + while(iterator2.hasNext()){
  137 + carPark = iterator2.next();
  138 + stationCode2Name.put(carPark.getParkCode(), carPark.getParkName());
  139 + }
  140 +
  141 + stationCode2NameMap = stationCode2Name;
  142 + }
  143 +
  144 + /**
  145 + *
  146 + * @Title: loadNbbm2LineInfo
  147 + * @Description: TODO(车辆和线路对照)
  148 + * @throws
  149 + */
  150 + public void loadNbbm2LineInfo(){
  151 + Iterator<CarConfigInfo> allIterator = carConfigInfoRepository.findAll().iterator();
  152 + Map<String, Line> ccMap = new HashMap<>();
  153 +
  154 + CarConfigInfo cci;
  155 + while(allIterator.hasNext()){
  156 + cci = allIterator.next();
  157 + ccMap.put(cci.getCl().getInsideCode(), cci.getXl());
  158 + }
  159 + nbbm2LineMap = ccMap;
  160 + }
  161 +
  162 + /**
  163 + *
  164 + * @Title: loadLineInfo
  165 + * @Description: TODO(加载线路相关信息)
  166 + * @throws
  167 + */
  168 + public void loadLineInfo(){
  169 + Iterator<Line> iterator = lineRepository.findAll().iterator();
  170 +
  171 + Line line;
  172 + BiMap<Integer, Integer> biMap = HashBiMap.create();
  173 + while(iterator.hasNext()){
  174 + line = iterator.next();
  175 + biMap.put(line.getId(), Integer.parseInt(line.getLineCode()));
  176 + }
  177 +
  178 + lineId2CodeMap = biMap;
  179 + }
  180 + }
13 } 181 }
src/main/java/com/bsth/data/DirectiveData.java
@@ -9,5 +9,6 @@ package com.bsth.data; @@ -9,5 +9,6 @@ package com.bsth.data;
9 * 9 *
10 */ 10 */
11 public class DirectiveData { 11 public class DirectiveData {
12 - 12 +
  13 +
13 } 14 }
src/main/java/com/bsth/data/ScheduleData.java
@@ -9,5 +9,5 @@ package com.bsth.data; @@ -9,5 +9,5 @@ package com.bsth.data;
9 * 9 *
10 */ 10 */
11 public class ScheduleData { 11 public class ScheduleData {
12 - 12 +
13 } 13 }
src/main/java/com/bsth/data/directive/Consts.java 0 → 100644
  1 +package com.bsth.data.directive;
  2 +
  3 +
  4 +public class Consts {
  5 +
  6 + /**
  7 + * 调度指令 -多营运状态 [0][0]上行营运 [0][1]上行非营运 [1][0]下行营运 [1][1]下行非营运
  8 + */
  9 + public static final int[][] SERVICE_STATE = { { 0, 0x02000000 }, { 0x10000000, 0x12000000 } };
  10 +
  11 +}
src/main/java/com/bsth/data/directive/MsgIdGenerator.java 0 → 100644
  1 +package com.bsth.data.directive;
  2 +
  3 +/**
  4 + *
  5 + * @ClassName: MsgIdGenerator
  6 + * @Description: TODO(指令下发 msgId 生成器)
  7 + * @author PanZhao
  8 + * @date 2016年6月7日 下午4:38:04
  9 + *
  10 + */
  11 +public class MsgIdGenerator {
  12 +
  13 + private static int msgId = 1;
  14 +
  15 + private final static int MAX_VALUE = Integer.MAX_VALUE - 10;
  16 +
  17 + public synchronized static int getMsgId(){
  18 + msgId ++;
  19 + if(msgId == MAX_VALUE)
  20 + msgId = 0;
  21 + return msgId;
  22 + }
  23 +
  24 + public static void setMsgId(int maxId){
  25 + msgId = maxId;
  26 + }
  27 +}
src/main/java/com/bsth/data/gpsdata/GpsRealDataList.java 0 → 100644
  1 +package com.bsth.data.gpsdata;
  2 +
  3 +import java.io.BufferedReader;
  4 +import java.io.InputStreamReader;
  5 +import java.util.ArrayList;
  6 +import java.util.HashMap;
  7 +import java.util.List;
  8 +import java.util.Map;
  9 +import java.util.NavigableSet;
  10 +
  11 +import org.apache.http.HttpEntity;
  12 +import org.apache.http.client.methods.CloseableHttpResponse;
  13 +import org.apache.http.client.methods.HttpGet;
  14 +import org.apache.http.impl.client.CloseableHttpClient;
  15 +import org.apache.http.impl.client.HttpClients;
  16 +import org.slf4j.Logger;
  17 +import org.slf4j.LoggerFactory;
  18 +
  19 +import com.alibaba.fastjson.JSON;
  20 +import com.alibaba.fastjson.JSONObject;
  21 +import com.bsth.data.BasicData;
  22 +import com.bsth.util.ConfigUtil;
  23 +import com.bsth.vehicle.gpsdata.entity.GpsRealData;
  24 +import com.google.common.collect.TreeMultimap;
  25 +
  26 +/**
  27 + *
  28 + * @ClassName: GpsRealDataBuffer
  29 + * @Description: TODO(实时GPS数据集合)
  30 + * @author PanZhao
  31 + * @date 2016年8月12日 下午2:04:41
  32 + *
  33 + */
  34 +public class GpsRealDataList {
  35 +
  36 + private static Map<String, GpsRealData> gpsMap;
  37 +
  38 + private static TreeMultimap<Integer, String> lineCode2Devices;
  39 +
  40 + // 网关数据接口地址
  41 + private static String url;
  42 +
  43 + static{
  44 + gpsMap = new HashMap<>();
  45 + lineCode2Devices = TreeMultimap.create();
  46 + url = ConfigUtil.get("http.gps.real.url");
  47 + }
  48 +
  49 + static Logger logger = LoggerFactory.getLogger(GpsRealDataList.class);
  50 +
  51 + public static GpsRealData add(GpsRealData gps) {
  52 + String device = gps.getDeviceId();
  53 + gpsMap.put(device, gps);
  54 + lineCode2Devices.put(gps.getLineId(), device);
  55 + return gps;
  56 + }
  57 +
  58 + /**
  59 + *
  60 + * @Title: get @Description: TODO(设备号获取GPS) @param @param deviceId @throws
  61 + */
  62 + public static GpsRealData get(String deviceId) {
  63 + return gpsMap.get(deviceId);
  64 + }
  65 +
  66 + /**
  67 + *
  68 + * @Title: get @Description: TODO(线路编码获取GPS集合) @throws
  69 + */
  70 + public static List<GpsRealData> get(Integer lineCode) {
  71 + NavigableSet<String> set = lineCode2Devices.get(lineCode);
  72 +
  73 + List<GpsRealData> rs = new ArrayList<>();
  74 + for(String device : set){
  75 + rs.add(gpsMap.get(device));
  76 + }
  77 +
  78 + return rs;
  79 + }
  80 +
  81 + public static void LoadGpsRealData() throws Exception {
  82 + List<GpsRealData> list = new ArrayList<>();
  83 + CloseableHttpClient httpClient = null;
  84 +
  85 + try {
  86 + httpClient = HttpClients.createDefault();
  87 + HttpGet get = new HttpGet(url);
  88 +
  89 + CloseableHttpResponse response = httpClient.execute(get);
  90 +
  91 + try {
  92 + HttpEntity entity = response.getEntity();
  93 + if (null != entity) {
  94 + // 返回数据量比较大,建议以流的形式读取
  95 + BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent()));
  96 + StringBuffer stringBuffer = new StringBuffer();
  97 + String str = "";
  98 + while ((str = br.readLine()) != null)
  99 + stringBuffer.append(str);
  100 +
  101 + JSONObject jsonObj = JSON.parseObject(stringBuffer.toString());
  102 +
  103 + if (jsonObj != null)
  104 + list = JSON.parseArray(jsonObj.getString("data"), GpsRealData.class);
  105 +
  106 + for(GpsRealData gps : list){
  107 + gps.setNbbm(BasicData.deviceId2NbbmMap.get(gps));
  108 + add(gps);
  109 + }
  110 + } else
  111 + logger.error("result is null");
  112 + } finally {
  113 + response.close();
  114 + }
  115 +
  116 + } finally {
  117 + if (null != httpClient)
  118 + httpClient.close();
  119 + }
  120 + }
  121 +}
src/main/java/com/bsth/data/gpsdata/GpsRealEntity.java 0 → 100644
  1 +package com.bsth.data.gpsdata;
  2 +
  3 +/**
  4 + *
  5 + * @ClassName: GpsRealData
  6 + * @Description: TODO(HTTP接口的实时GPS数据)
  7 + * @author PanZhao
  8 + * @date 2016年5月11日 下午4:32:07
  9 + *
  10 + */
  11 +public class GpsRealEntity {
  12 +
  13 + /** 公司代码 */
  14 + private Integer companyCode;
  15 +
  16 + /** 线路编码 */
  17 + private Integer lineId;
  18 +
  19 + /** 设备编码 */
  20 + private String deviceId;
  21 +
  22 + /** 停车场编码 */
  23 + private String carparkNo;
  24 +
  25 + /** 站点编码 */
  26 + private String stopNo;
  27 +
  28 + /** 经度 */
  29 + private Float lon;
  30 +
  31 + /** 纬度 */
  32 + private Float lat;
  33 +
  34 + /** 发送时间戳 */
  35 + private Long timestamp;
  36 +
  37 + /** 速度 */
  38 + private Float speed;
  39 +
  40 + /** 方向(角度) */
  41 + private Float direction;
  42 +
  43 + /** 营运状态( 0 营运 ,1 非营运, -1 无效) */
  44 + private Integer state;
  45 +
  46 + /** 上下行(0 上行 , 1 下行 , -1 无效) */
  47 + private Integer upDown;
  48 +
  49 + /** 车辆内部编码 */
  50 + private String nbbm;
  51 +
  52 + /** 站点名称 */
  53 + private String stationName;
  54 +
  55 + /** 当前班次ID */
  56 + private Long currSchId;
  57 +
  58 + /** 下一个班次ID */
  59 + private Long nextSchId;
  60 +
  61 + /** 设备是否在线 */
  62 + private boolean online;
  63 +
  64 + public Integer getCompanyCode() {
  65 + return companyCode;
  66 + }
  67 +
  68 + public void setCompanyCode(Integer companyCode) {
  69 + this.companyCode = companyCode;
  70 + }
  71 +
  72 + public Integer getLineId() {
  73 + return lineId;
  74 + }
  75 +
  76 + public void setLineId(Integer lineId) {
  77 + this.lineId = lineId;
  78 + }
  79 +
  80 + public String getDeviceId() {
  81 + return deviceId;
  82 + }
  83 +
  84 + public void setDeviceId(String deviceId) {
  85 + this.deviceId = deviceId;
  86 + }
  87 +
  88 + public String getCarparkNo() {
  89 + return carparkNo;
  90 + }
  91 +
  92 + public void setCarparkNo(String carparkNo) {
  93 + this.carparkNo = carparkNo;
  94 + }
  95 +
  96 + public String getStopNo() {
  97 + return stopNo;
  98 + }
  99 +
  100 + public void setStopNo(String stopNo) {
  101 + this.stopNo = stopNo;
  102 + }
  103 +
  104 + public Float getLon() {
  105 + return lon;
  106 + }
  107 +
  108 + public void setLon(Float lon) {
  109 + this.lon = lon;
  110 + }
  111 +
  112 + public Float getLat() {
  113 + return lat;
  114 + }
  115 +
  116 + public void setLat(Float lat) {
  117 + this.lat = lat;
  118 + }
  119 +
  120 + public Long getTimestamp() {
  121 + return timestamp;
  122 + }
  123 +
  124 + public void setTimestamp(Long timestamp) {
  125 + this.timestamp = timestamp;
  126 + }
  127 +
  128 + public Float getSpeed() {
  129 + return speed;
  130 + }
  131 +
  132 + public void setSpeed(Float speed) {
  133 + this.speed = speed;
  134 + }
  135 +
  136 + public Float getDirection() {
  137 + return direction;
  138 + }
  139 +
  140 + public void setDirection(Float direction) {
  141 + this.direction = direction;
  142 + }
  143 +
  144 + public Integer getState() {
  145 + return state;
  146 + }
  147 +
  148 + public void setState(Integer state) {
  149 + this.state = state;
  150 + }
  151 +
  152 + public Integer getUpDown() {
  153 + return upDown;
  154 + }
  155 +
  156 + public void setUpDown(Integer upDown) {
  157 + this.upDown = upDown;
  158 + }
  159 +
  160 + public Long getCurrSchId() {
  161 + return currSchId;
  162 + }
  163 +
  164 + public void setCurrSchId(Long currSchId) {
  165 + this.currSchId = currSchId;
  166 + }
  167 +
  168 + public Long getNextSchId() {
  169 + return nextSchId;
  170 + }
  171 +
  172 + public void setNextSchId(Long nextSchId) {
  173 + this.nextSchId = nextSchId;
  174 + }
  175 +
  176 + public String getNbbm() {
  177 + return nbbm;
  178 + }
  179 +
  180 + public void setNbbm(String nbbm) {
  181 + this.nbbm = nbbm;
  182 + }
  183 +
  184 + public String getStationName() {
  185 + return stationName;
  186 + }
  187 +
  188 + public void setStationName(String stationName) {
  189 + this.stationName = stationName;
  190 + }
  191 +
  192 + public boolean isOnline() {
  193 + return online;
  194 + }
  195 +
  196 + public void setOnline(boolean online) {
  197 + this.online = online;
  198 + }
  199 +}
src/main/java/com/bsth/entity/directive/D60.java 0 → 100644
  1 +package com.bsth.entity.directive;
  2 +
  3 +import javax.persistence.Embeddable;
  4 +import javax.persistence.Entity;
  5 +import javax.persistence.FetchType;
  6 +import javax.persistence.GeneratedValue;
  7 +import javax.persistence.Id;
  8 +import javax.persistence.ManyToOne;
  9 +import javax.persistence.NamedAttributeNode;
  10 +import javax.persistence.NamedEntityGraph;
  11 +import javax.persistence.NamedEntityGraphs;
  12 +import javax.persistence.Table;
  13 +import javax.persistence.Transient;
  14 +
  15 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  16 +import com.fasterxml.jackson.annotation.JsonIgnore;
  17 +
  18 +
  19 +/**
  20 + *
  21 + * @ClassName: D60
  22 + * @Description: TODO(调度指令)
  23 + * @author PanZhao
  24 + * @date 2016年6月7日 上午10:21:59
  25 + *
  26 + */
  27 +@Entity
  28 +@Table(name = "bsth_v_directive_60")
  29 +@NamedEntityGraphs({
  30 + @NamedEntityGraph(name = "directive60_sch", attributeNodes = {
  31 + @NamedAttributeNode("sch")
  32 + })
  33 +})
  34 +public class D60 extends Directive{
  35 +
  36 + @Id
  37 + @GeneratedValue
  38 + private Integer id;
  39 +
  40 + /**
  41 + * 数据
  42 + */
  43 + private DirectiveData data;
  44 +
  45 + /**
  46 + * 唯一标识
  47 + */
  48 + @Transient
  49 + private Integer msgId;
  50 +
  51 + /**
  52 + * 46上行
  53 + */
  54 + private Short reply46 = -1;
  55 +
  56 + /**
  57 + * 47上行
  58 + */
  59 + private Short reply47 = -1;
  60 +
  61 + /**
  62 + * 是否是调度指令
  63 + * 目前调度指令和消息短语都是短语下发,所以从协议上无法区分
  64 + */
  65 + private boolean isDispatch;
  66 +
  67 + /**
  68 + * 相关联的班次
  69 + */
  70 + @JsonIgnore
  71 + @ManyToOne(fetch = FetchType.LAZY)
  72 + private ScheduleRealInfo sch;
  73 +
  74 + @Embeddable
  75 + public static class DirectiveData {
  76 + // 公司代码
  77 + private short companyCode;
  78 +
  79 + // 设备号
  80 + @Transient
  81 + private String deviceId;
  82 +
  83 + // 时间戳
  84 + @Transient
  85 + private Long timestamp;
  86 +
  87 + // 保留 默认0
  88 + private short instructType = 0;
  89 +
  90 + /*
  91 + * 调度指令 调度指令。
  92 + * 0X00表示信息短语
  93 + * 0X01表示取消上次指令+调度指令(闹钟有效)
  94 + * 0x02表示为调度指令(闹钟有效)
  95 + * 0x03表示运营状态指令(闹钟无效)
  96 + * 0x04表示其他指令
  97 + */
  98 + private Short dispatchInstruct;
  99 +
  100 + // 唯一标识
  101 + private int msgId;
  102 +
  103 + // 闹钟
  104 + private Long alarmTime;
  105 +
  106 + // 多个运营状态字节
  107 + private Long serviceState;
  108 +
  109 + // 消息文本
  110 + private String txtContent;
  111 +
  112 + public short getCompanyCode() {
  113 + return companyCode;
  114 + }
  115 +
  116 + public void setCompanyCode(short companyCode) {
  117 + this.companyCode = companyCode;
  118 + }
  119 +
  120 + public String getDeviceId() {
  121 + return deviceId;
  122 + }
  123 +
  124 + public void setDeviceId(String deviceId) {
  125 + this.deviceId = deviceId;
  126 + }
  127 +
  128 + public Long getTimestamp() {
  129 + return timestamp;
  130 + }
  131 +
  132 + public void setTimestamp(Long timestamp) {
  133 + this.timestamp = timestamp;
  134 + }
  135 +
  136 + public short getInstructType() {
  137 + return instructType;
  138 + }
  139 +
  140 + public void setInstructType(short instructType) {
  141 + this.instructType = instructType;
  142 + }
  143 +
  144 + public Short getDispatchInstruct() {
  145 + return dispatchInstruct;
  146 + }
  147 +
  148 + public void setDispatchInstruct(Short dispatchInstruct) {
  149 + this.dispatchInstruct = dispatchInstruct;
  150 + }
  151 +
  152 + public int getMsgId() {
  153 + return msgId;
  154 + }
  155 +
  156 + public void setMsgId(int msgId) {
  157 + this.msgId = msgId;
  158 + }
  159 +
  160 + public Long getAlarmTime() {
  161 + return alarmTime;
  162 + }
  163 +
  164 + public void setAlarmTime(Long alarmTime) {
  165 + this.alarmTime = alarmTime;
  166 + }
  167 +
  168 + public Long getServiceState() {
  169 + return serviceState;
  170 + }
  171 +
  172 + public void setServiceState(Long serviceState) {
  173 + this.serviceState = serviceState;
  174 + }
  175 +
  176 + public String getTxtContent() {
  177 + return txtContent;
  178 + }
  179 +
  180 + public void setTxtContent(String txtContent) {
  181 + this.txtContent = txtContent;
  182 + }
  183 + }
  184 +
  185 + public Integer getId() {
  186 + return id;
  187 + }
  188 +
  189 + public void setId(Integer id) {
  190 + this.id = id;
  191 + }
  192 +
  193 + public short getOperCode() {
  194 + return operCode;
  195 + }
  196 +
  197 + public void setOperCode(short operCode) {
  198 + this.operCode = operCode;
  199 + }
  200 +
  201 + public DirectiveData getData() {
  202 + return data;
  203 + }
  204 +
  205 + public void setData(DirectiveData data) {
  206 + this.data = data;
  207 + }
  208 +
  209 + public Integer getMsgId() {
  210 + if(this.msgId != null)
  211 + return this.msgId;
  212 + else
  213 + return this.getData().getMsgId();
  214 + }
  215 +
  216 + public void setMsgId(Integer msgId) {
  217 + this.msgId = msgId;
  218 + }
  219 +
  220 + @Override
  221 + public void setTimestamp(Long timestamp) {
  222 + if(this.data != null)
  223 + this.data.setTimestamp(timestamp);
  224 +
  225 + this.timestamp = timestamp;
  226 + }
  227 +
  228 + @Override
  229 + public void setDeviceId(String deviceId) {
  230 + if(this.data != null)
  231 + this.data.setDeviceId(deviceId);
  232 +
  233 + this.deviceId = deviceId;
  234 + }
  235 +
  236 + public Short getReply46() {
  237 + return reply46;
  238 + }
  239 +
  240 + public void setReply46(Short reply46) {
  241 + this.reply46 = reply46;
  242 + }
  243 +
  244 + public Short getReply47() {
  245 + return reply47;
  246 + }
  247 +
  248 + public void setReply47(Short reply47) {
  249 + this.reply47 = reply47;
  250 + }
  251 +
  252 + public boolean isDispatch() {
  253 + return isDispatch;
  254 + }
  255 +
  256 + public void setDispatch(boolean isDispatch) {
  257 + this.isDispatch = isDispatch;
  258 + }
  259 +
  260 + public ScheduleRealInfo getSch() {
  261 + return sch;
  262 + }
  263 +
  264 + public void setSch(ScheduleRealInfo sch) {
  265 + this.sch = sch;
  266 + }
  267 +}
src/main/java/com/bsth/entity/directive/D64.java 0 → 100644
  1 +package com.bsth.entity.directive;
  2 +
  3 +import javax.persistence.Table;
  4 +import javax.persistence.Transient;
  5 +import javax.persistence.Embeddable;
  6 +import javax.persistence.Entity;
  7 +import javax.persistence.GeneratedValue;
  8 +import javax.persistence.Id;
  9 +
  10 +/**
  11 + *
  12 + * @ClassName: D64
  13 + * @Description: TODO(线路切换指令)
  14 + * @author PanZhao
  15 + * @date 2016年6月8日 下午1:41:15
  16 + *
  17 + */
  18 +@Entity
  19 +@Table(name = "bsth_v_directive_64")
  20 +public class D64 extends Directive{
  21 +
  22 + @Id
  23 + @GeneratedValue
  24 + private Integer id;
  25 +
  26 + /**
  27 + * 设备响应应答字
  28 + * 0x06同意 0x15不同意
  29 + */
  30 + private Short respAck;
  31 +
  32 + private LineChangeData data;
  33 +
  34 + @Embeddable
  35 + public static class LineChangeData {
  36 +
  37 + private Short cityCode;
  38 +
  39 + @Transient
  40 + private String deviceId;
  41 +
  42 + private String lineId;
  43 +
  44 + public Short getCityCode() {
  45 + return cityCode;
  46 + }
  47 +
  48 + public void setCityCode(Short cityCode) {
  49 + this.cityCode = cityCode;
  50 + }
  51 +
  52 + public String getDeviceId() {
  53 + return deviceId;
  54 + }
  55 +
  56 + public void setDeviceId(String deviceId) {
  57 + this.deviceId = deviceId;
  58 + }
  59 +
  60 + public String getLineId() {
  61 + return lineId;
  62 + }
  63 +
  64 + public void setLineId(String lineId) {
  65 + this.lineId = lineId;
  66 + }
  67 + }
  68 +
  69 + public Integer getId() {
  70 + return id;
  71 + }
  72 +
  73 + public void setId(Integer id) {
  74 + this.id = id;
  75 + }
  76 +
  77 + public LineChangeData getData() {
  78 + return data;
  79 + }
  80 +
  81 + public void setData(LineChangeData data) {
  82 + this.data = data;
  83 + }
  84 +
  85 + public Short getRespAck() {
  86 + return respAck;
  87 + }
  88 +
  89 + public void setRespAck(Short respAck) {
  90 + this.respAck = respAck;
  91 + }
  92 +
  93 + @Override
  94 + public void setDeviceId(String deviceId) {
  95 + if(this.data != null)
  96 + this.data.setDeviceId(deviceId);
  97 +
  98 + this.deviceId = deviceId;
  99 + }
  100 +}
src/main/java/com/bsth/entity/directive/D80.java 0 → 100644
  1 +package com.bsth.entity.directive;
  2 +
  3 +import java.util.Date;
  4 +
  5 +import javax.persistence.CascadeType;
  6 +import javax.persistence.Embeddable;
  7 +import javax.persistence.Entity;
  8 +import javax.persistence.FetchType;
  9 +import javax.persistence.GeneratedValue;
  10 +import javax.persistence.Id;
  11 +import javax.persistence.NamedAttributeNode;
  12 +import javax.persistence.NamedEntityGraph;
  13 +import javax.persistence.NamedEntityGraphs;
  14 +import javax.persistence.OneToOne;
  15 +import javax.persistence.Table;
  16 +import javax.persistence.Transient;
  17 +
  18 +/**
  19 + *
  20 + * @ClassName: D80
  21 + * @Description: TODO(驾驶员上报)
  22 + * @author PanZhao
  23 + * @date 2016年6月8日 下午12:36:42
  24 + *
  25 + */
  26 +@Entity
  27 +@Table(name = "bsth_v_report_80")
  28 +@NamedEntityGraphs({
  29 + @NamedEntityGraph(name = "directive80_c0", attributeNodes = {
  30 + @NamedAttributeNode("c0")
  31 + })
  32 +})
  33 +public class D80 {
  34 +
  35 + @Id
  36 + @GeneratedValue
  37 + private Integer id;
  38 +
  39 + /**
  40 + * 设备编号
  41 + */
  42 + private String deviceId;
  43 +
  44 + /**
  45 + * 时间戳(ms)
  46 + */
  47 + private Long timestamp;
  48 +
  49 + /**
  50 + * 一级协议 0xC0
  51 + */
  52 + private Short operCode;
  53 +
  54 + private DriverReportData data;
  55 +
  56 + /**
  57 + * c0 回复
  58 + */
  59 + @OneToOne(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
  60 + private DC0 c0;
  61 +
  62 + /** 调度员是否确认 */
  63 + private boolean confirm;
  64 +
  65 + /** 处理人 */
  66 + private String handleUser;
  67 +
  68 + /** 处理结果 0:同意 -1:不同意 */
  69 + private int confirmRs;
  70 +
  71 + /** 处理时间 */
  72 + private Date handleTime;
  73 +
  74 + @Embeddable
  75 + public static class DriverReportData {
  76 +
  77 + /**
  78 + * 0x86
  79 + */
  80 + private Short operCode2;
  81 +
  82 + /**
  83 + * 请求代码 0xa1 恢复运营 0xa2 申请调档 0xa3 出场请求 0xa5 进场请求 0xa7 加油请求 0x50 车辆故障 0x70
  84 + * 路阻报告 0x60 事故报告 0x11 扣证纠纷 0x12 报警
  85 + */
  86 + private Short requestCode;
  87 +
  88 + /**
  89 + * 线路编码
  90 + */
  91 + private Integer lineId;
  92 +
  93 + /**
  94 + * 车辆内部编码
  95 + */
  96 + @Transient
  97 + private String nbbm;
  98 +
  99 + public Short getOperCode2() {
  100 + return operCode2;
  101 + }
  102 +
  103 + public void setOperCode2(Short operCode2) {
  104 + this.operCode2 = operCode2;
  105 + }
  106 +
  107 + public Short getRequestCode() {
  108 + return requestCode;
  109 + }
  110 +
  111 + public void setRequestCode(Short requestCode) {
  112 + this.requestCode = requestCode;
  113 + }
  114 +
  115 + public Integer getLineId() {
  116 + return lineId;
  117 + }
  118 +
  119 + public void setLineId(Integer lineId) {
  120 + this.lineId = lineId;
  121 + }
  122 +
  123 + public String getNbbm() {
  124 + return nbbm;
  125 + }
  126 +
  127 + public void setNbbm(String nbbm) {
  128 + this.nbbm = nbbm;
  129 + }
  130 + }
  131 +
  132 + @Transient
  133 + private String timeStr;
  134 +
  135 + public Integer getId() {
  136 + return id;
  137 + }
  138 +
  139 + public void setId(Integer id) {
  140 + this.id = id;
  141 + }
  142 +
  143 + public String getDeviceId() {
  144 + return deviceId;
  145 + }
  146 +
  147 + public void setDeviceId(String deviceId) {
  148 + this.deviceId = deviceId;
  149 + }
  150 +
  151 + public Long getTimestamp() {
  152 + return timestamp;
  153 + }
  154 +
  155 + public void setTimestamp(Long timestamp) {
  156 + this.timestamp = timestamp;
  157 + }
  158 +
  159 + public Short getOperCode() {
  160 + return operCode;
  161 + }
  162 +
  163 + public void setOperCode(Short operCode) {
  164 + this.operCode = operCode;
  165 + }
  166 +
  167 + public DriverReportData getData() {
  168 + return data;
  169 + }
  170 +
  171 + public void setData(DriverReportData data) {
  172 + this.data = data;
  173 + }
  174 +
  175 + public DC0 getC0() {
  176 + return c0;
  177 + }
  178 +
  179 + public void setC0(DC0 c0) {
  180 + this.c0 = c0;
  181 + }
  182 +
  183 + public boolean isConfirm() {
  184 + return confirm;
  185 + }
  186 +
  187 + public void setConfirm(boolean confirm) {
  188 + this.confirm = confirm;
  189 + }
  190 +
  191 + public int getConfirmRs() {
  192 + return confirmRs;
  193 + }
  194 +
  195 + public void setConfirmRs(int confirmRs) {
  196 + this.confirmRs = confirmRs;
  197 + }
  198 +
  199 + public String getHandleUser() {
  200 + return handleUser;
  201 + }
  202 +
  203 + public void setHandleUser(String handleUser) {
  204 + this.handleUser = handleUser;
  205 + }
  206 +
  207 + public String getTimeStr() {
  208 + return timeStr;
  209 + }
  210 +
  211 + public void setTimeStr(String timeStr) {
  212 + this.timeStr = timeStr;
  213 + }
  214 +
  215 + public Date getHandleTime() {
  216 + return handleTime;
  217 + }
  218 +
  219 + public void setHandleTime(Date handleTime) {
  220 + this.handleTime = handleTime;
  221 + }
  222 +}
src/main/java/com/bsth/entity/directive/DC0.java 0 → 100644
  1 +package com.bsth.entity.directive;
  2 +
  3 +import javax.persistence.Embeddable;
  4 +import javax.persistence.Entity;
  5 +import javax.persistence.GeneratedValue;
  6 +import javax.persistence.Id;
  7 +import javax.persistence.Table;
  8 +
  9 +/**
  10 + *
  11 + * @ClassName: DC0
  12 + * @Description: TODO(C0协议,回复驾驶员上报)
  13 + * @author PanZhao
  14 + * @date 2016年7月8日 上午10:19:23
  15 + *
  16 + */
  17 +@Entity
  18 +@Table(name = "bsth_v_C0")
  19 +public class DC0 {
  20 +
  21 + @Id
  22 + @GeneratedValue
  23 + private Integer id;
  24 +
  25 + /**
  26 + * 设备号
  27 + */
  28 + private String deviceId;
  29 +
  30 + /**
  31 + * 时间戳
  32 + */
  33 + private Long timestamp;
  34 +
  35 + /**
  36 + * 一级协议
  37 + */
  38 + private Short operCode;
  39 +
  40 + private DC0Data data;
  41 +
  42 + @Embeddable
  43 + public static class DC0Data {
  44 +
  45 + /**
  46 + * 二级协议
  47 + */
  48 + private Short operCode2;
  49 +
  50 + /**
  51 + * 请求应答字 0x06同意 0x15不同意
  52 + */
  53 + private Short requestAck;
  54 +
  55 + public Short getOperCode2() {
  56 + return operCode2;
  57 + }
  58 +
  59 + public void setOperCode2(Short operCode2) {
  60 + this.operCode2 = operCode2;
  61 + }
  62 +
  63 + public Short getRequestAck() {
  64 + return requestAck;
  65 + }
  66 +
  67 + public void setRequestAck(Short requestAck) {
  68 + this.requestAck = requestAck;
  69 + }
  70 + }
  71 +
  72 + public Integer getId() {
  73 + return id;
  74 + }
  75 +
  76 + public void setId(Integer id) {
  77 + this.id = id;
  78 + }
  79 +
  80 + public String getDeviceId() {
  81 + return deviceId;
  82 + }
  83 +
  84 + public void setDeviceId(String deviceId) {
  85 + this.deviceId = deviceId;
  86 + }
  87 +
  88 + public Long getTimestamp() {
  89 + return timestamp;
  90 + }
  91 +
  92 + public void setTimestamp(Long timestamp) {
  93 + this.timestamp = timestamp;
  94 + }
  95 +
  96 + public Short getOperCode() {
  97 + return operCode;
  98 + }
  99 +
  100 + public void setOperCode(Short operCode) {
  101 + this.operCode = operCode;
  102 + }
  103 +
  104 + public DC0Data getData() {
  105 + return data;
  106 + }
  107 +
  108 + public void setData(DC0Data data) {
  109 + this.data = data;
  110 + }
  111 +}
src/main/java/com/bsth/entity/directive/Directive.java 0 → 100644
  1 +package com.bsth.entity.directive;
  2 +
  3 +import javax.persistence.MappedSuperclass;
  4 +import javax.persistence.Transient;
  5 +
  6 +/**
  7 + *
  8 + * @ClassName: Directive
  9 + * @Description: TODO(指令基础类)
  10 + * @author PanZhao
  11 + * @date 2016年7月31日 下午8:35:56
  12 + *
  13 + */
  14 +@MappedSuperclass
  15 +public class Directive {
  16 +
  17 + /**
  18 + * 一级协议
  19 + */
  20 + protected short operCode;
  21 +
  22 + /**
  23 + * 设备号
  24 + */
  25 + protected String deviceId;
  26 +
  27 + /**
  28 + * 时间戳
  29 + */
  30 + protected Long timestamp;
  31 +
  32 + /**
  33 + * 时间 HH:mm
  34 + */
  35 + @Transient
  36 + private String timeHHmm;
  37 +
  38 + /**
  39 + * 车辆内部编码
  40 + */
  41 + @Transient
  42 + private String nbbm;
  43 +
  44 + private String errorText;
  45 +
  46 + private int httpCode;
  47 +
  48 + /**
  49 + * 发送人
  50 + */
  51 + private String sender;
  52 +
  53 + public short getOperCode() {
  54 + return operCode;
  55 + }
  56 +
  57 + public void setOperCode(short operCode) {
  58 + this.operCode = operCode;
  59 + }
  60 +
  61 + public String getDeviceId() {
  62 + return deviceId;
  63 + }
  64 +
  65 + public void setDeviceId(String deviceId) {
  66 + this.deviceId = deviceId;
  67 + }
  68 +
  69 + public Long getTimestamp() {
  70 + return timestamp;
  71 + }
  72 +
  73 + public void setTimestamp(Long timestamp) {
  74 + this.timestamp = timestamp;
  75 + }
  76 +
  77 + public String getTimeHHmm() {
  78 + return timeHHmm;
  79 + }
  80 +
  81 + public void setTimeHHmm(String timeHHmm) {
  82 + this.timeHHmm = timeHHmm;
  83 + }
  84 +
  85 + public String getNbbm() {
  86 + return nbbm;
  87 + }
  88 +
  89 + public void setNbbm(String nbbm) {
  90 + this.nbbm = nbbm;
  91 + }
  92 +
  93 + public String getErrorText() {
  94 + return errorText;
  95 + }
  96 +
  97 + public void setErrorText(String errorText) {
  98 + this.errorText = errorText;
  99 + }
  100 +
  101 + public int getHttpCode() {
  102 + return httpCode;
  103 + }
  104 +
  105 + public void setHttpCode(int httpCode) {
  106 + this.httpCode = httpCode;
  107 + }
  108 +
  109 + public String getSender() {
  110 + return sender;
  111 + }
  112 +
  113 + public void setSender(String sender) {
  114 + this.sender = sender;
  115 + }
  116 +}
src/main/java/com/bsth/repository/directive/D60Repository.java 0 → 100644
  1 +package com.bsth.repository.directive;
  2 +
  3 +import java.util.List;
  4 +
  5 +import org.springframework.data.domain.Page;
  6 +import org.springframework.data.domain.Pageable;
  7 +import org.springframework.data.jpa.domain.Specification;
  8 +import org.springframework.data.jpa.repository.EntityGraph;
  9 +import org.springframework.data.jpa.repository.Query;
  10 +import org.springframework.stereotype.Repository;
  11 +
  12 +import com.bsth.entity.directive.D60;
  13 +import com.bsth.repository.BaseRepository;
  14 +
  15 +@Repository
  16 +public interface D60Repository extends BaseRepository<D60, Integer>{
  17 +
  18 + @EntityGraph(value = "directive60_sch", type = EntityGraph.EntityGraphType.FETCH)
  19 + @Query("select d from Directive60 d where d.timestamp > ?1")
  20 + public List<D60> findByGtTime(Long ts);
  21 +
  22 + @Query(value = "SELECT IFNULL(num,0) as maxId from (SELECT MAX(msg_id) as num FROM bsth_v_directive_60) d", nativeQuery = true)
  23 + Integer maxMsgId();
  24 +
  25 +
  26 + @EntityGraph(value = "directive60_sch", type = EntityGraph.EntityGraphType.FETCH)
  27 + @Override
  28 + Page<D60> findAll(Specification<D60> spec, Pageable pageable);
  29 +
  30 + @EntityGraph(value = "directive60_sch", type = EntityGraph.EntityGraphType.FETCH)
  31 + @Override
  32 + List<D60> findAll(Specification<D60> spec);
  33 +}
src/main/java/com/bsth/repository/directive/D64Repository.java 0 → 100644
  1 +package com.bsth.repository.directive;
  2 +
  3 +import org.springframework.stereotype.Repository;
  4 +
  5 +import com.bsth.entity.directive.D64;
  6 +import com.bsth.repository.BaseRepository;
  7 +
  8 +@Repository
  9 +public interface D64Repository extends BaseRepository<D64, Integer>{
  10 +
  11 +}
src/main/java/com/bsth/repository/directive/D80Repository.java 0 → 100644
  1 +package com.bsth.repository.directive;
  2 +
  3 +import java.util.List;
  4 +
  5 +import org.springframework.data.domain.Page;
  6 +import org.springframework.data.domain.Pageable;
  7 +import org.springframework.data.jpa.domain.Specification;
  8 +import org.springframework.data.jpa.repository.EntityGraph;
  9 +import org.springframework.data.jpa.repository.Query;
  10 +import org.springframework.stereotype.Repository;
  11 +
  12 +import com.bsth.entity.directive.D80;
  13 +import com.bsth.repository.BaseRepository;
  14 +
  15 +@Repository
  16 +public interface D80Repository extends BaseRepository<D80, Integer>{
  17 +
  18 + @EntityGraph(value = "directive80_c0", type = EntityGraph.EntityGraphType.FETCH)
  19 + @Override
  20 + Page<D80> findAll(Specification<D80> spec, Pageable pageable);
  21 +
  22 + @EntityGraph(value = "directive80_c0", type = EntityGraph.EntityGraphType.FETCH)
  23 + @Query("select d from Directive80 d where d.timestamp > ?1")
  24 + List<D80> findByGtTime(long timestamp);
  25 +}
src/main/java/com/bsth/repository/directive/DC0Repository.java 0 → 100644
  1 +package com.bsth.repository.directive;
  2 +
  3 +import org.springframework.stereotype.Repository;
  4 +
  5 +import com.bsth.entity.directive.DC0;
  6 +import com.bsth.repository.BaseRepository;
  7 +
  8 +@Repository
  9 +public interface DC0Repository extends BaseRepository<DC0, Integer>{
  10 +
  11 +}
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
@@ -54,4 +54,10 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -54,4 +54,10 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
54 54
55 @Query(value="select s from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 order by fcsj") 55 @Query(value="select s from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 order by fcsj")
56 List<ScheduleRealInfo> queryListWaybill(String jName,String clZbh,String lpName); 56 List<ScheduleRealInfo> queryListWaybill(String jName,String clZbh,String lpName);
  57 +
  58 + @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2")
  59 + List<ScheduleRealInfo> statisticsDaily(String line,String date);
  60 +
  61 + @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2")
  62 + List<ScheduleRealInfo> scheduleDaily(String line,String date);
57 } 63 }
src/main/java/com/bsth/repository/sys/SysUserRepository.java
1 package com.bsth.repository.sys; 1 package com.bsth.repository.sys;
2 2
  3 +import org.springframework.data.jpa.repository.Modifying;
  4 +import org.springframework.data.jpa.repository.Query;
3 import org.springframework.stereotype.Repository; 5 import org.springframework.stereotype.Repository;
  6 +import org.springframework.transaction.annotation.Transactional;
4 7
5 import com.bsth.entity.sys.SysUser; 8 import com.bsth.entity.sys.SysUser;
6 import com.bsth.repository.BaseRepository; 9 import com.bsth.repository.BaseRepository;
@@ -10,4 +13,13 @@ public interface SysUserRepository extends BaseRepository&lt;SysUser, Integer&gt;{ @@ -10,4 +13,13 @@ public interface SysUserRepository extends BaseRepository&lt;SysUser, Integer&gt;{
10 13
11 SysUser findByUserName(String userName); 14 SysUser findByUserName(String userName);
12 15
  16 + @Transactional
  17 + @Modifying
  18 + @Query(value="update bsth_c_sys_user set enabled=?2 where id=?1",nativeQuery=true)
  19 + int changeEnabled(int id,int enabled);
  20 +
  21 + @Transactional
  22 + @Modifying
  23 + @Query(value="update bsth_c_sys_user set password=?2 where id=?1",nativeQuery=true)
  24 + int changePWD(int id,String newPWD);
13 } 25 }
src/main/java/com/bsth/service/directive/DirectiveService.java 0 → 100644
  1 +package com.bsth.service.directive;
  2 +
  3 +
  4 +import java.util.List;
  5 +import java.util.Map;
  6 +
  7 +import org.springframework.data.domain.Page;
  8 +import org.springframework.data.domain.PageRequest;
  9 +
  10 +import com.bsth.entity.directive.D60;
  11 +import com.bsth.entity.directive.D80;
  12 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  13 +import com.bsth.service.BaseService;
  14 +
  15 +public interface DirectiveService extends BaseService<D60, Integer>{
  16 +
  17 + /**
  18 + *
  19 + * @Title: send60Phrase
  20 + * @Description: TODO(60短语下发)
  21 + * @param @param nbbm 车辆内部编码
  22 + * @param @param text 短语
  23 + * @return int 返回类型
  24 + * @throws
  25 + */
  26 + int send60Phrase(String nbbm, String text, String sender);
  27 +
  28 + /**
  29 + *
  30 + * @Title: send60Dispatch
  31 + * @Description: TODO(调度指令下发)
  32 + * @param @param sch 要下发的班次
  33 + * @param @param finish 已完成的班次数
  34 + * @throws
  35 + */
  36 + int send60Dispatch(ScheduleRealInfo sch, int finish, String sender);
  37 +
  38 + /**
  39 + *
  40 + * @Title: send60Dispatch
  41 + * @Description: TODO(调度指令下发)
  42 + * @param @param id 班次ID
  43 + * @throws
  44 + */
  45 + int send60Dispatch(Long id, String sender);
  46 +
  47 + //60营运指令
  48 + int send60Operation(String nbbm, int state, int upDown, ScheduleRealInfo sch, String sender);
  49 +
  50 + /**
  51 + *
  52 + * @Title: lineChange
  53 + * @Description: TODO(线路切换)
  54 + * @param @param nbbm 车辆内部编码
  55 + * @param @param lineId 新线路编码
  56 + * @throws
  57 + */
  58 + int lineChange(String nbbm, Integer lineId, String sender);
  59 +
  60 + /**
  61 + *
  62 + * @Title: upDownChange
  63 + * @Description: TODO(切换上下行)
  64 + * @param @param nbbm 车辆内部编码
  65 + * @param @param upDonw 上下行 0 上行 1 下行
  66 + * @throws
  67 + */
  68 + int upDownChange(String nbbm, Integer upDown, String sender);
  69 +
  70 + /**
  71 + *
  72 + * @Title: sendDirectiveState
  73 + * @Description: TODO(向页面推送班次指令状态)
  74 + * @throws
  75 + */
  76 + void sendDirectiveToPage(ScheduleRealInfo sch);
  77 +
  78 + Map<String, List<D80>> findNoCofm80(String lineCodes);
  79 +
  80 + Map<String, Object> reply80(int id, int reply);
  81 +
  82 + Map<String, Object> findDirective(String nbbm, int dType, int page, int size);
  83 +
  84 + Page<D80> findAll80(Map<String, Object> map, PageRequest pageRequest);
  85 +}
src/main/java/com/bsth/service/directive/DirectiveServiceImpl.java 0 → 100644
  1 +package com.bsth.service.directive;
  2 +
  3 +import java.text.SimpleDateFormat;
  4 +import java.util.ArrayList;
  5 +import java.util.Collections;
  6 +import java.util.Date;
  7 +import java.util.HashMap;
  8 +import java.util.List;
  9 +import java.util.Map;
  10 +
  11 +import org.apache.commons.lang3.StringUtils;
  12 +import org.slf4j.Logger;
  13 +import org.slf4j.LoggerFactory;
  14 +import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.data.domain.Page;
  16 +import org.springframework.data.domain.PageRequest;
  17 +import org.springframework.stereotype.Service;
  18 +
  19 +import com.alibaba.fastjson.JSON;
  20 +import com.alibaba.fastjson.JSONObject;
  21 +import com.bsth.common.ResponseCode;
  22 +import com.bsth.entity.directive.D60;
  23 +import com.bsth.entity.directive.D64;
  24 +import com.bsth.entity.directive.D80;
  25 +import com.bsth.entity.directive.DC0;
  26 +import com.bsth.entity.directive.DC0.DC0Data;
  27 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  28 +import com.bsth.entity.search.CustomerSpecs;
  29 +import com.bsth.entity.sys.SysUser;
  30 +import com.bsth.repository.directive.D60Repository;
  31 +import com.bsth.repository.directive.D64Repository;
  32 +import com.bsth.repository.directive.D80Repository;
  33 +import com.bsth.security.util.SecurityUtils;
  34 +import com.bsth.service.impl.BaseServiceImpl;
  35 +import com.bsth.service.realcontrol.buffer.ScheduleBuffer;
  36 +import com.bsth.util.DateUtils;
  37 +import com.bsth.vehicle.common.CommonMapped;
  38 +import com.bsth.vehicle.directive.buffer.DirectiveBuffer;
  39 +import com.bsth.vehicle.directive.entity.Directive;
  40 +import com.bsth.vehicle.directive.util.DirectiveDataFactory;
  41 +import com.bsth.vehicle.directive.util.HttpUtils;
  42 +import com.bsth.vehicle.gpsdata.buffer.GpsRealDataBuffer;
  43 +import com.bsth.vehicle.gpsdata.entity.GpsRealData;
  44 +import com.bsth.websocket.handler.RealControlSocketHandler;
  45 +import com.google.common.base.Splitter;
  46 +
  47 +@Service
  48 +public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implements DirectiveService {
  49 +
  50 + Logger logger = LoggerFactory.getLogger(this.getClass());
  51 +
  52 + @Autowired
  53 + D60Repository d60Repository;
  54 +
  55 + @Autowired
  56 + GpsRealDataBuffer gpsRealDataBuffer;
  57 +
  58 + @Autowired
  59 + D64Repository d64Repository;
  60 +
  61 + @Autowired
  62 + RealControlSocketHandler socketHandler;
  63 +
  64 + @Autowired
  65 + D80Repository d80Repository;
  66 +
  67 + SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH点mm分"), sdfHHmm2 = new SimpleDateFormat("HH:mm");
  68 +
  69 + static Long schDiff = 1000 * 60 * 60L;
  70 +
  71 + @Override
  72 + public int send60Phrase(String nbbm, String text, String sender) {
  73 + D60 directive = null;
  74 + try {
  75 + directive = create60Data(nbbm, text, (short) 0x00, null);
  76 + } catch (Exception e) {
  77 + logger.error("发送消息短语出现异常", e);
  78 + return -1;
  79 + }
  80 +
  81 + if (null == directive)
  82 + return -1;
  83 +
  84 + // 发送指令
  85 + int code = HttpUtils.postJson(JSON.toJSONString(directive));
  86 + if(null != sender)
  87 + directive.setSender(sender);
  88 + directive.setHttpCode(code);
  89 + // 添加到缓存,等待入库
  90 + //DirectiveBuffer.put(directive);
  91 +
  92 + if (code != 0) {
  93 + directive.setErrorText("网关通讯失败, code: " + code);
  94 + //DirectiveBuffer.transientList.add(directive);
  95 + }
  96 + return code;
  97 + }
  98 +
  99 + @Override
  100 + public int send60Dispatch(ScheduleRealInfo sch, int finish, String sender) {
  101 + D60 directive = null;
  102 + try {
  103 + // 如果发车时间距当前时间较远,则不发送
  104 + /*if (Math.abs(sch.getFcsjT() - System.currentTimeMillis()) > schDiff) {
  105 + return -2;
  106 + }*/
  107 +
  108 + String text = "已完成" + finish + "个班次,下一发车时间" + sdfHHmm.format(new Date(sch.getDfsjT())) + ",由"
  109 + + sch.getQdzName() + "发往" + sch.getZdzName();
  110 +
  111 + ScheduleRealInfo nextSch = ScheduleBuffer.getNext(sch);
  112 + //下发0x02指令 调度指令(闹钟有效)
  113 + /*directive = DirectiveDataFactory.createDirective6002(sch.getClZbh(), text, (short) 0x02
  114 + , Integer.parseInt(nextSch.getXlDir()), 0, new Date(System.currentTimeMillis() + 1000 * 30));*/
  115 + } catch (Exception e) {
  116 + logger.error("生成调度指令时出现异常", e);
  117 + return -1;
  118 + }
  119 +
  120 + if (null == directive)
  121 + return -1;
  122 + if(null != sender)
  123 + directive.setSender(sender);
  124 + else
  125 + directive.setSender("系统");
  126 +
  127 + // 发送指令
  128 + int code = HttpUtils.postJson(JSON.toJSONString(directive));
  129 +
  130 + sch.setDirectiveState(60);
  131 + // 添加到缓存,等待入库
  132 + directive.setDispatch(true);
  133 + directive.setSch(sch);
  134 + directive.setHttpCode(code);
  135 + //DirectiveBuffer.put(directive);
  136 +
  137 + if (code == 0) {
  138 + // 通知页面,消息已发出
  139 + sendDirectiveToPage(sch);
  140 + } else {
  141 + directive.setErrorText("网关通讯失败, code: " + code);
  142 + //DirectiveBuffer.transientList.add(directive);
  143 + }
  144 + return code;
  145 + }
  146 +
  147 + /**
  148 + *
  149 + * @Title: sendDirectiveState @Description: TODO(向页面推送班次指令状态) @throws
  150 + */
  151 + @Override
  152 + public void sendDirectiveToPage(ScheduleRealInfo sch) {
  153 + JSONObject json = new JSONObject();
  154 + json.put("fn", "directive");
  155 + json.put("t", sch);
  156 + socketHandler.sendMessageToLine(Integer.parseInt(sch.getXlBm()), json.toJSONString());
  157 + }
  158 +
  159 + @Override
  160 + public int send60Dispatch(Long id, String sender) {
  161 + ScheduleRealInfo sch = ScheduleBuffer.findOne(id);
  162 + // 车辆已完成班次
  163 + int finish = ScheduleBuffer.getFinishSchNo(sch.getClZbh());
  164 + return send60Dispatch(sch, finish, sender);
  165 + }
  166 +
  167 + @Override
  168 + public int send60Operation(String nbbm, int state, int upDown, ScheduleRealInfo sch, String sender) {
  169 + logger.info("切换运营状态, nbbm: " + nbbm + " ,state: " + state + " ,upDown:" + upDown);
  170 +
  171 + String text = "切换为 " + (upDown == 0 ? "上行" : "下行") + (state == 0 ? "营运" : "未营运");
  172 + D60 directive = /*DirectiveDataFactory.createDirective60(nbbm, text, (short) 0x03, upDown, state)*/null;
  173 +
  174 + if (null == directive)
  175 + return -1;
  176 + if(null != sender)
  177 + directive.setSender(sender);
  178 + else
  179 + directive.setSender("系统");
  180 + // 发送指令
  181 + int code = HttpUtils.postJson(JSON.toJSONString(directive));
  182 + // 添加到缓存,等待入库
  183 + directive.setHttpCode(code);
  184 + if (null != sch)
  185 + directive.setSch(sch);
  186 + //DirectiveBuffer.put(directive);
  187 +
  188 + if (code != 0) {
  189 + directive.setErrorText("网关通讯失败, code: " + code);
  190 + //DirectiveBuffer.transientList.add(directive);
  191 + }
  192 + return code;
  193 + }
  194 +
  195 + /**
  196 + * 线路切换
  197 + */
  198 + @Override
  199 + public int lineChange(String nbbm, Integer lineCode, String sender) {
  200 + Long t = System.currentTimeMillis();
  201 + /*String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm);
  202 +
  203 + Directive64 change = new Directive64();
  204 + LineChangeData data = new LineChangeData();
  205 + data.setCityCode(cityCode);
  206 + data.setDeviceId(deviceId);
  207 + data.setLineId("00" + String.valueOf(lineCode));
  208 +
  209 + change.setDeviceId(deviceId);
  210 + change.setOperCode((short) 0X64);
  211 + change.setTimestamp(t);
  212 + change.setData(data);*/
  213 + D64 d64 = /*DirectiveDataFactory.createDirective64(nbbm, lineCode, t)*/null;
  214 +
  215 + if(null != sender)
  216 + d64.setSender(sender);
  217 + else
  218 + d64.setSender("系统");
  219 +
  220 + String deviceId = d64.getDeviceId();
  221 + int code = HttpUtils.postJson(JSON.toJSONString(d64));
  222 + // 入库
  223 + d64.setHttpCode(code);
  224 + //DirectiveBuffer.changeMap.put(deviceId + '_' + t, d64);
  225 +
  226 + // 通知设备刷新线路文件,忽略结果
  227 + if (code == 0)
  228 + HttpUtils.postJson(DirectiveDataFactory.createDeviceRefreshData(deviceId, lineCode));
  229 + else
  230 + d64.setErrorText("网关通讯失败, code: " + code);
  231 +
  232 + d64Repository.save(d64);
  233 + return code;
  234 + }
  235 +
  236 + public D60 create60Data(String nbbm, String text, Short dispatchInstruct, ScheduleRealInfo sch) {
  237 +
  238 + String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm);
  239 + if (null == deviceId) {
  240 + logger.error("没有设备号对照的车辆:" + nbbm);
  241 + return null;
  242 + }
  243 + // 上下行和营运状态
  244 + Integer upDown = null, state = null;
  245 + if (null == sch) {
  246 + GpsRealData gpsData = gpsRealDataBuffer.findOneByDeviceId(deviceId);
  247 + if (null == gpsData) {
  248 + logger.error("没有找到gps对照,无法确认营运状态和上下行:" + nbbm);
  249 + return null;
  250 + }
  251 + upDown = gpsData.getUpDown();
  252 + state = gpsData.getState();
  253 + } else {
  254 + upDown = Integer.parseInt(sch.getXlDir());
  255 + state = 0;
  256 + }
  257 +
  258 + return /*DirectiveDataFactory.createDirective60(nbbm, text, dispatchInstruct, upDown, state)*/null;
  259 + }
  260 +
  261 +/* public Directive60 createDirective60(String nbbm, String text, Short dispatchInstruct, int upDown, int state) {
  262 + Long timestamp = System.currentTimeMillis();
  263 +
  264 + Short company = Short.parseShort(CommonMapped.vehicCompanyMap.get(nbbm));
  265 + String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm);
  266 +
  267 + int msgId = MsgIdGenerator.getMsgId();
  268 +
  269 + Directive60 directive = new Directive60();
  270 + DirectiveData data = new DirectiveData();
  271 + // 一级协议
  272 + directive.setOperCode((short) 0x60);
  273 + // 设备号
  274 + directive.setDeviceId(deviceId);
  275 + // 时间戳
  276 + directive.setTimestamp(timestamp);
  277 + directive.setMsgId(msgId);
  278 + // 构造数据
  279 + data.setDeviceId(deviceId);
  280 + data.setDispatchInstruct(dispatchInstruct);
  281 + data.setTimestamp(timestamp);
  282 + data.setCompanyCode(company);
  283 + data.setMsgId(msgId);
  284 + directive.setData(data);
  285 + long serviceState;
  286 + try {
  287 + serviceState = Consts.SERVICE_STATE[upDown][state];
  288 + } catch (IndexOutOfBoundsException e) {
  289 + // 未知营运状态的直接默认为上行非营运
  290 + serviceState = Consts.SERVICE_STATE[0][1];
  291 + }
  292 + data.setServiceState(serviceState);
  293 + data.setTxtContent(text);
  294 +
  295 + return directive;
  296 + }*/
  297 +
  298 + @Override
  299 + public int upDownChange(String nbbm, Integer upDown, String sender) {
  300 + return send60Operation(nbbm, 0, upDown, null, sender);
  301 + }
  302 +
  303 + /**
  304 + *
  305 + * @Title: createDeviceRefreshData @Description:
  306 + * TODO(生成设备线路刷新数据包) @param @return 设定文件 @return String 返回类型 @throws
  307 + */
  308 +/* public String createDeviceRefreshData(String deviceId, Integer lineId) {
  309 + Long t = System.currentTimeMillis();
  310 + Map<String, Object> param = new HashMap<String, Object>();
  311 + param.put("deviceId", deviceId);
  312 + param.put("timestamp", t);
  313 + param.put("operCode", 0Xc0);
  314 +
  315 + Map<String, Object> data = new HashMap<String, Object>();
  316 + data.put("operCode2", 0xa1);
  317 + data.put("cityCode", cityCode);
  318 + data.put("deviceId", deviceId);
  319 + data.put("timestamp", t);
  320 + data.put("centerId", 1);
  321 + data.put("lineId", lineId);
  322 + data.put("lineVersion", 0);
  323 + data.put("carparkDataVersion", 0);
  324 + param.put("data", data);
  325 +
  326 + return JSON.toJSONString(param);
  327 + }*/
  328 +
  329 + @Override
  330 + public Map<String, List<D80>> findNoCofm80(String lineCodes) {
  331 + List<String> lineList = Splitter.on(",").trimResults().splitToList(lineCodes);
  332 +
  333 + Map<String, List<D80>> rs = new HashMap<>();
  334 + for (String code : lineList) {
  335 + rs.put(code, /*DirectiveBuffer.findNoCofm80(Integer.parseInt(code))*/null);
  336 + }
  337 +
  338 + return rs;
  339 + }
  340 +
  341 + @Override
  342 + public Map<String, Object> reply80(int id, int reply) {
  343 + Map<String, Object> rs = new HashMap<>();
  344 +
  345 + D80 d80 = /*DirectiveBuffer.findById80(id)*/null;
  346 + if (null == d80) {
  347 + rs.put("status", ResponseCode.ERROR);
  348 + rs.put("msg", "服务器没有找到对应数据!");
  349 + } else if (d80.isConfirm()) {
  350 + rs.put("status", ResponseCode.ERROR);
  351 + rs.put("msg", "该数据已经被处理了!");
  352 + } else {
  353 + SysUser user = SecurityUtils.getCurrentUser();
  354 +
  355 + d80.setConfirm(true);
  356 + d80.setHandleUser(user.getUserName());
  357 + d80.setConfirmRs(reply);
  358 + d80.setHandleTime(new Date());
  359 + // 封装C0数据包并回复设备
  360 + DC0 c0 = new DC0();
  361 + c0.setDeviceId(d80.getDeviceId());
  362 + c0.setTimestamp(d80.getTimestamp());
  363 + c0.setOperCode((short) 0xC0);
  364 +
  365 + DC0Data data = new DC0Data();
  366 + data.setOperCode2((short) 0x86);
  367 + data.setRequestAck((short) (reply == 0 ? 0x06 : 0x15));
  368 +
  369 + c0.setData(data);
  370 +
  371 + d80.setC0(c0);
  372 + // 入库
  373 + d80Repository.save(d80);
  374 +
  375 + int code = HttpUtils.postJson(JSON.toJSONString(c0));
  376 +
  377 + rs.put("status", ResponseCode.SUCCESS);
  378 + if (code != 0)
  379 + rs.put("msg", "发送C0响应指令到车载设备失败,但该操作已经被系统记录!");
  380 +
  381 + // 通知页面
  382 + Map<String, Object> sockMap = new HashMap<>();
  383 + sockMap.put("fn", "d80Confirm");
  384 + sockMap.put("id", d80.getId());
  385 + socketHandler.sendMessageToLine(d80.getData().getLineId(), JSON.toJSONString(sockMap));
  386 + }
  387 +
  388 + return rs;
  389 + }
  390 +
  391 + @Override
  392 + public Map<String, Object> findDirective(String nbbm, int dType, int page, int size) {
  393 + Map<String, Object> rsMap = new HashMap<>();
  394 + List<Directive> list = null;
  395 +
  396 + switch (dType) {
  397 + case -1:
  398 + //所有指令
  399 + list = DirectiveBuffer.findAll();
  400 + break;
  401 + case 0:
  402 + //调度指令
  403 + list = DirectiveBuffer.findDispatch();
  404 + break;
  405 + case 1:
  406 + //运营指令
  407 + list = DirectiveBuffer.findByDispatchInstruct((short)0x03);
  408 + break;
  409 + case 2:
  410 + //线路切换指令
  411 + list = DirectiveBuffer.findLineChange();
  412 + break;
  413 + case 3:
  414 + //消息短语
  415 + list = DirectiveBuffer.findByDispatchInstruct((short)0x00);
  416 + break;
  417 + }
  418 +
  419 + // 时间倒序
  420 + Collections.sort(list, new DirectiveBuffer.DComparator());
  421 + if(StringUtils.isNotBlank(nbbm)){
  422 + String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm);
  423 + //按车辆过滤
  424 + List<Directive> subList = new ArrayList<>();
  425 + for(Directive d : list){
  426 + if(d.getDeviceId().equals(deviceId)){
  427 + subList.add(d);
  428 + }
  429 + }
  430 + list = subList;
  431 + }
  432 +
  433 + int count = list.size();
  434 + // 分页
  435 + int s = page * size, e = s + size;
  436 +
  437 + if (e > count)
  438 + e = count;
  439 +
  440 + List<Directive> rs = list.subList(s, e);
  441 +
  442 + // 时间格式化,车辆自编号转换
  443 + for (Directive d : rs) {
  444 + if (d.getTimeHHmm() == null)
  445 + d.setTimeHHmm(sdfHHmm2.format(new Date(d.getTimestamp())));
  446 + if (d.getNbbm() == null)
  447 + d.setNbbm(CommonMapped.vehicDeviceBiMap.get(d.getDeviceId()));
  448 + }
  449 +
  450 + rsMap.put("list", rs);
  451 + rsMap.put("totalPages", count % size == 0 ? count / size : count / size + 1);
  452 + rsMap.put("page", page);
  453 + return rsMap;
  454 + }
  455 +
  456 + @Override
  457 + public Page<D80> findAll80(Map<String, Object> map, PageRequest pageRequest) {
  458 + //默认只查看当天的
  459 + map.put("timestamp_gt", DateUtils.getTimestamp());
  460 +
  461 + Object nbbm = map.get("nbbm");
  462 + if(null != nbbm && StringUtils.isNotBlank(nbbm.toString())){
  463 + map.put("deviceId_eq", CommonMapped.vehicDeviceBiMap.inverse().get(nbbm.toString()));
  464 + }
  465 +
  466 + Page<D80> pageData = d80Repository.findAll(new CustomerSpecs<D80>(map), pageRequest);
  467 + //格式化时间和转换车辆自编号
  468 + List<D80> list = pageData.getContent();
  469 + for(D80 d80 : list){
  470 + d80.setTimeStr(sdfHHmm2.format(new Date(d80.getTimestamp())));
  471 + d80.getData().setNbbm(CommonMapped.vehicDeviceBiMap.get(d80.getDeviceId()));
  472 + }
  473 + return pageData;
  474 + }
  475 +}
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
@@ -62,7 +62,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L @@ -62,7 +62,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
62 62
63 List<ScheduleRealInfo> exportWaybill(String jName,String clZbh,String lpName); 63 List<ScheduleRealInfo> exportWaybill(String jName,String clZbh,String lpName);
64 64
65 - List<Map<String,Object>> dailyInfo(String line,String date); 65 + List<Map<String,Object>> dailyInfo(String line,String date,String type);
66 66
67 List<Object[]> historyMessage(String line,String date,String code); 67 List<Object[]> historyMessage(String line,String date,String code);
68 68
@@ -95,4 +95,8 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L @@ -95,4 +95,8 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
95 List<ScheduleRealInfo> queryListWaybill(String jName,String clZbh,String lpName); 95 List<ScheduleRealInfo> queryListWaybill(String jName,String clZbh,String lpName);
96 96
97 Map<String, Object> removeChildTask(Long taskId); 97 Map<String, Object> removeChildTask(Long taskId);
  98 +
  99 + List<Map<String,Object>> statisticsDaily(String line,String date,String xlName);
  100 +
  101 + List<Object> scheduleDaily(String line,String date);
98 } 102 }
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -42,7 +42,9 @@ import com.bsth.service.SectionRouteService; @@ -42,7 +42,9 @@ import com.bsth.service.SectionRouteService;
42 import com.bsth.service.impl.BaseServiceImpl; 42 import com.bsth.service.impl.BaseServiceImpl;
43 import com.bsth.service.realcontrol.ScheduleRealInfoService; 43 import com.bsth.service.realcontrol.ScheduleRealInfoService;
44 import com.bsth.service.realcontrol.buffer.ScheduleBuffer; 44 import com.bsth.service.realcontrol.buffer.ScheduleBuffer;
  45 +import com.bsth.util.ReportRelatedUtils;
45 import com.bsth.util.ReportUtils; 46 import com.bsth.util.ReportUtils;
  47 +import com.bsth.util.TimeUtils;
46 import com.bsth.util.TransGPS; 48 import com.bsth.util.TransGPS;
47 import com.bsth.util.TransGPS.Location; 49 import com.bsth.util.TransGPS.Location;
48 import com.bsth.vehicle.BorrowCenter; 50 import com.bsth.vehicle.BorrowCenter;
@@ -87,7 +89,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -87,7 +89,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
87 Logger logger = LoggerFactory.getLogger(this.getClass()); 89 Logger logger = LoggerFactory.getLogger(this.getClass());
88 90
89 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), 91 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
90 - sdfMinute = new SimpleDateFormat("yyyy-MM-dd HH:mm"), sdfShort = new SimpleDateFormat("HH:mm"); 92 + sdfMinute = new SimpleDateFormat("yyyy-MM-dd HH:mm"), sdfShort = new SimpleDateFormat("HH:mm"),
  93 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
91 94
92 @Override 95 @Override
93 public Map<String, Collection<ScheduleRealInfo>> findByLines(String lines) { 96 public Map<String, Collection<ScheduleRealInfo>> findByLines(String lines) {
@@ -426,13 +429,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -426,13 +429,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
426 public List<ScheduleRealInfo> queryUserInfo(String line, String date) { 429 public List<ScheduleRealInfo> queryUserInfo(String line, String date) {
427 return scheduleRealInfoRepository.queryUserInfo(line, date); 430 return scheduleRealInfoRepository.queryUserInfo(line, date);
428 } 431 }
429 - 432 + /**
  433 + *
  434 + */
430 @Override 435 @Override
431 public List<ScheduleRealInfo> exportWaybill(String jName, String clZbh, String lpName) { 436 public List<ScheduleRealInfo> exportWaybill(String jName, String clZbh, String lpName) {
432 ReportUtils ee = new ReportUtils(); 437 ReportUtils ee = new ReportUtils();
  438 + ReportRelatedUtils rru = new ReportRelatedUtils();
433 List<Iterator<?>> list = new ArrayList<Iterator<?>>(); 439 List<Iterator<?>> list = new ArrayList<Iterator<?>>();
434 List<ScheduleRealInfo> scheduleRealInfos = scheduleRealInfoRepository.exportWaybill(jName, clZbh, lpName); 440 List<ScheduleRealInfo> scheduleRealInfos = scheduleRealInfoRepository.exportWaybill(jName, clZbh, lpName);
435 - ScheduleRealInfo scheduleReal = scheduleRealInfoRepository.findOne(scheduleRealInfos.get(0).getId()); 441 + List<Map<String,Object>> listMap = new ArrayList<Map<String,Object>>();
436 442
437 DecimalFormat format = new DecimalFormat("0.00"); 443 DecimalFormat format = new DecimalFormat("0.00");
438 int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName); 444 int cjbc = scheduleRealInfoRepository.findCjbc(jName, clZbh, lpName);
@@ -440,7 +446,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -440,7 +446,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
440 int jhbc = 0; 446 int jhbc = 0;
441 double jhlc = 0; 447 double jhlc = 0;
442 float realMileage = 0l,addMileage = 0l,remMileage = 0l; 448 float realMileage = 0l,addMileage = 0l,remMileage = 0l;
443 - Map<String,Object> map = new HashMap<String, Object>(); 449 +
  450 + Map<String,Object> map;
444 for(ScheduleRealInfo scheduleRealInfo : scheduleRealInfos){ 451 for(ScheduleRealInfo scheduleRealInfo : scheduleRealInfos){
445 if(scheduleRealInfo != null){ 452 if(scheduleRealInfo != null){
446 jhlc += scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc(); 453 jhlc += scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
@@ -448,8 +455,34 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -448,8 +455,34 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
448 addMileage += scheduleRealInfo.getAddMileage()==null?0:scheduleRealInfo.getAddMileage(); 455 addMileage += scheduleRealInfo.getAddMileage()==null?0:scheduleRealInfo.getAddMileage();
449 remMileage += scheduleRealInfo.getRemMileage()==null?0:scheduleRealInfo.getRemMileage(); 456 remMileage += scheduleRealInfo.getRemMileage()==null?0:scheduleRealInfo.getRemMileage();
450 jhbc++; 457 jhbc++;
  458 +
  459 + map = new HashMap<String, Object>();
  460 + try {
  461 + map = rru.getMapValue(scheduleRealInfo);
  462 + String zdsj = scheduleRealInfo.getZdsj();
  463 + String zdsjActual = scheduleRealInfo.getZdsjActual();
  464 + if(zdsj != null && zdsjActual != null &&
  465 + !zdsj.equals(zdsjActual)){
  466 + if(zdsj.compareTo(zdsjActual) > 0){
  467 + map.put("fast", TimeUtils.getTimeDifference(zdsj, zdsjActual));
  468 + map.put("slow", "");
  469 + } else {
  470 + map.put("fast", "");
  471 + map.put("slow", TimeUtils.getTimeDifference(zdsj, zdsjActual));
  472 + }
  473 + } else {
  474 + map.put("fast", "");
  475 + map.put("slow", "");
  476 + }
  477 + listMap.add(map);
  478 + } catch (Exception e) {
  479 + e.printStackTrace();
  480 + }
451 } 481 }
452 } 482 }
  483 +
  484 + //计算里程和班次数,并放入Map里
  485 + map = new HashMap<String, Object>();
453 map.put("jhlc", format.format(jhlc)); 486 map.put("jhlc", format.format(jhlc));
454 map.put("remMileage", format.format(remMileage)); 487 map.put("remMileage", format.format(remMileage));
455 map.put("addMileage", format.format(addMileage)); 488 map.put("addMileage", format.format(addMileage));
@@ -463,19 +496,50 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -463,19 +496,50 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
463 496
464 String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\"; 497 String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";
465 498
466 - list.add(scheduleRealInfos.iterator());  
467 - ee.excelReplace(list, new Object[] { scheduleReal,map }, path+"mould\\waybill.xls", 499 + list.add(listMap.iterator());
  500 + ee.excelReplace(list, new Object[] { scheduleRealInfos.get(0),map }, path+"mould\\waybill.xls",
468 path+"export\\" + jName + ".xls"); 501 path+"export\\" + jName + ".xls");
469 return scheduleRealInfos; 502 return scheduleRealInfos;
470 } 503 }
471 504
472 @Override 505 @Override
473 - public List<Map<String, Object>> dailyInfo(String line, String date) { 506 + public List<Map<String, Object>> dailyInfo(String line, String date,String type) {
474 DecimalFormat format = new DecimalFormat("0.00"); 507 DecimalFormat format = new DecimalFormat("0.00");
  508 + ReportUtils ee = new ReportUtils();
  509 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
475 List<Map<String, Object>> list = scheduleRealInfoRepository.dailyInfo(line, date); 510 List<Map<String, Object>> list = scheduleRealInfoRepository.dailyInfo(line, date);
  511 +
  512 + double totalZGL = 0,totalKSGL=0,totalYH=0;
  513 + int totalBCS=0;
476 for(int i = 0;i < list.size();i++){ 514 for(int i = 0;i < list.size();i++){
477 - list.get(i).put("zgl", format.format(Double.parseDouble(list.get(i).get("zgl")==null?"0":list.get(i).get("zgl").toString())));  
478 - list.get(i).put("ksgl", format.format(Double.parseDouble(list.get(i).get("ksgl")==null?"0":list.get(i).get("ksgl").toString()))); 515 + String zgl = format.format(Double.parseDouble(list.get(i).get("zgl")==null?"0":list.get(i).get("zgl").toString()));
  516 + String ksgl = format.format(Double.parseDouble(list.get(i).get("ksgl")==null?"0":list.get(i).get("ksgl").toString()));
  517 + if(type.equals("export")){
  518 + totalZGL += Double.parseDouble(zgl);
  519 + totalKSGL += Double.parseDouble(ksgl);
  520 + totalBCS += Integer.parseInt(list.get(i).get("bcs").toString());
  521 + }
  522 + list.get(i).put("zgl", zgl);
  523 + list.get(i).put("ksgl", ksgl);
  524 + }
  525 + if(type.equals("export")){
  526 + Map<String,Object> map = new HashMap<String, Object>();
  527 + map.put("line", line);
  528 + map.put("date", date);
  529 + map.put("totalZGL", totalZGL);
  530 + map.put("totalKSGL", totalKSGL);
  531 + map.put("totalYH", totalYH);
  532 + map.put("totalBCS", totalBCS);
  533 +
  534 + String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";
  535 +
  536 + listI.add(list.iterator());
  537 + try {
  538 + ee.excelReplace(listI, new Object[] { map }, path+"mould\\daily.xls",
  539 + path+"export\\班次日报" + sdfSimple.format(sdfMonth.parse(date)) + ".xls");
  540 + } catch (ParseException e) {
  541 + e.printStackTrace();
  542 + }
479 } 543 }
480 return list; 544 return list;
481 } 545 }
@@ -907,9 +971,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -907,9 +971,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
907 map.put("jhlc", format.format(jhlc)); 971 map.put("jhlc", format.format(jhlc));
908 map.put("remMileage", format.format(remMileage)); 972 map.put("remMileage", format.format(remMileage));
909 map.put("addMileage", format.format(addMileage)); 973 map.put("addMileage", format.format(addMileage));
910 - map.put("yygl", format.format(realMileage-addMileage)); 974 + map.put("yygl", format.format(jhlc));
911 map.put("ksgl", format.format(realMileage-addMileage)); 975 map.put("ksgl", format.format(realMileage-addMileage));
912 - map.put("realMileage", format.format(realMileage)); 976 + map.put("realMileage", format.format(jhlc));
913 map.put("jhbc", jhbc); 977 map.put("jhbc", jhbc);
914 map.put("cjbc", cjbc); 978 map.put("cjbc", cjbc);
915 map.put("ljbc", ljbc); 979 map.put("ljbc", ljbc);
@@ -967,4 +1031,40 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -967,4 +1031,40 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
967 } 1031 }
968 return rs; 1032 return rs;
969 } 1033 }
  1034 +
  1035 + @Override
  1036 + public List<Map<String, Object>> statisticsDaily(String line, String date,
  1037 + String xlName) {
  1038 + List<ScheduleRealInfo> list = scheduleRealInfoRepository.statisticsDaily(line, date);
  1039 + double jhlc = 0.00;
  1040 + float realMileage = 0l;
  1041 + for(ScheduleRealInfo scheduleRealInfo: list){
  1042 + if(scheduleRealInfo != null){
  1043 + jhlc += scheduleRealInfo.getJhlc();
  1044 + if(scheduleRealInfo.getsName().equals("1")){
  1045 + realMileage += scheduleRealInfo.getRealMileage();
  1046 + }
  1047 + }
  1048 + }
  1049 + return null;
  1050 + }
  1051 +
  1052 + @Override
  1053 + public List<Object> scheduleDaily(String line, String date) {
  1054 + Map<String,String> tempMap = null;
  1055 + List<ScheduleRealInfo> scheduleRealInfos = scheduleRealInfoRepository.scheduleDaily(line, date);
  1056 + Map<String, Object> map = new HashMap<String, Object>();
  1057 + Double jhlc = 0.00;
  1058 + for(ScheduleRealInfo scheduleRealInfo:scheduleRealInfos){
  1059 + if(scheduleRealInfo != null){
  1060 + jhlc += scheduleRealInfo.getJhlc();
  1061 + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
  1062 + if(childTaskPlans.isEmpty()){
  1063 +
  1064 + }
  1065 + }
  1066 + }
  1067 + map.put("jhlc", jhlc);
  1068 + return null;
  1069 + }
970 } 1070 }
src/main/java/com/bsth/service/sys/SysUserService.java
@@ -6,4 +6,8 @@ import com.bsth.service.BaseService; @@ -6,4 +6,8 @@ import com.bsth.service.BaseService;
6 public interface SysUserService extends BaseService<SysUser, Integer>{ 6 public interface SysUserService extends BaseService<SysUser, Integer>{
7 7
8 SysUser findByUserName(String name); 8 SysUser findByUserName(String name);
  9 +
  10 + int changeEnabled(int id,int enabled);
  11 +
  12 + int changePWD(int id,String newPWD);
9 } 13 }
src/main/java/com/bsth/service/sys/impl/SysUserServiceImpl.java
1 package com.bsth.service.sys.impl; 1 package com.bsth.service.sys.impl;
2 2
  3 +import java.util.Map;
  4 +
3 import org.springframework.beans.factory.annotation.Autowired; 5 import org.springframework.beans.factory.annotation.Autowired;
  6 +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
4 import org.springframework.stereotype.Service; 7 import org.springframework.stereotype.Service;
5 8
6 import com.bsth.entity.sys.SysUser; 9 import com.bsth.entity.sys.SysUser;
@@ -18,4 +21,22 @@ public class SysUserServiceImpl extends BaseServiceImpl&lt;SysUser, Integer&gt; implem @@ -18,4 +21,22 @@ public class SysUserServiceImpl extends BaseServiceImpl&lt;SysUser, Integer&gt; implem
18 public SysUser findByUserName(String name) { 21 public SysUser findByUserName(String name) {
19 return sysUserRepository.findByUserName(name); 22 return sysUserRepository.findByUserName(name);
20 } 23 }
  24 +
  25 + @Override
  26 + public Map<String, Object> save(SysUser t) {
  27 + //
  28 + t.setPassword(new BCryptPasswordEncoder(4).encode(t.getPassword()));
  29 + return super.save(t);
  30 + }
  31 +
  32 + @Override
  33 + public int changeEnabled(int id, int enabled) {
  34 + sysUserRepository.changeEnabled(id,enabled);
  35 + return 0;
  36 + }
  37 +
  38 + @Override
  39 + public int changePWD(int id,String newPWD) {
  40 + return sysUserRepository.changePWD(id,new BCryptPasswordEncoder(4).encode(newPWD));
  41 + }
21 } 42 }
src/main/java/com/bsth/util/ReportRelatedUtils.java
1 package com.bsth.util; 1 package com.bsth.util;
2 2
  3 +import java.lang.reflect.Field;
3 import java.lang.reflect.InvocationTargetException; 4 import java.lang.reflect.InvocationTargetException;
4 import java.lang.reflect.Method; 5 import java.lang.reflect.Method;
  6 +import java.util.HashMap;
  7 +import java.util.Map;
  8 +
  9 +import org.apache.poi.ss.formula.functions.T;
5 10
6 import com.bsth.entity.Line; 11 import com.bsth.entity.Line;
7 12
@@ -52,6 +57,42 @@ public class ReportRelatedUtils { @@ -52,6 +57,42 @@ public class ReportRelatedUtils {
52 } 57 }
53 return value; 58 return value;
54 } 59 }
  60 +
  61 + /**
  62 + * 通过字段名取到对象中该字段的相应值
  63 + *
  64 + * @param t
  65 + * 对象
  66 + * @param fieldName
  67 + * 字段名
  68 + * @return
  69 + * @throws ClassNotFoundException
  70 + * @throws IllegalAccessException
  71 + * @throws InvocationTargetException
  72 + * @throws NoSuchMethodException
  73 + * @throws NoSuchFieldException
  74 + */
  75 + public Map<String,Object> getMapValue(Object t)
  76 + throws ClassNotFoundException, IllegalAccessException,
  77 + InvocationTargetException, NoSuchMethodException,
  78 + NoSuchFieldException {
  79 + Map<String,Object> map = new HashMap<String, Object>();
  80 + Object value = "";
  81 + Field[] fields = t.getClass().getDeclaredFields();
  82 + for(Field field:fields){
  83 + String fieldName = field.getName();
  84 + String tmpFieldName = firstCharToUpperCase(fieldName);
  85 + Method method = null;
  86 + try {
  87 + method = t.getClass().getMethod("get" + tmpFieldName);
  88 + value = method.invoke(t)==null?"":method.invoke(t);
  89 + } catch (NoSuchMethodException e) {
  90 + value = "";
  91 + }
  92 + map.put(fieldName, value);
  93 + }
  94 + return map;
  95 + }
55 96
56 /** 97 /**
57 * 首字母大写 98 * 首字母大写
src/main/java/com/bsth/util/ReportUtils.java
@@ -279,6 +279,9 @@ public class ReportUtils { @@ -279,6 +279,9 @@ public class ReportUtils {
279 } 279 }
280 } else if (obj.getClass().getName().equals(classWholeName)) { 280 } else if (obj.getClass().getName().equals(classWholeName)) {
281 cellValue = cellValue.replace("$" + tmpKey + "$",getKeyValue(obj, fieldName) + ""); 281 cellValue = cellValue.replace("$" + tmpKey + "$",getKeyValue(obj, fieldName) + "");
  282 + } else if (obj.getClass().getName().equals("java.util.HashMap")){
  283 + Map<String,Object> map = (HashMap<String,Object>)obj;
  284 + cellValue = cellValue.replace("$" + tmpKey + "$",map.get(fieldName)+"");
282 } 285 }
283 } 286 }
284 } 287 }
src/main/java/com/bsth/util/TimeUtils.java 0 → 100644
  1 +package com.bsth.util;
  2 +
  3 +public class TimeUtils {
  4 + public static String getTimeDifference(String date1,String date2){
  5 + String[] temp1 = date1.split(":");
  6 + String[] temp2 = date2.split(":");
  7 + int m1 = Integer.parseInt(temp1[0])*60;
  8 + int s1 = Integer.parseInt(temp1[1]);
  9 + int m2 = Integer.parseInt(temp2[0])*60;
  10 + int s2 = Integer.parseInt(temp2[1]);
  11 + if(date1.compareTo(date2) > 0){
  12 + return ((m1+s1)-(m2+s2))+"";
  13 + } else {
  14 + return ((m2+s2)-(m1+s1))+"";
  15 + }
  16 + }
  17 +}
src/main/java/com/bsth/vehicle/directive/entity/DirectiveReply.java
@@ -57,4 +57,4 @@ public class DirectiveReply { @@ -57,4 +57,4 @@ public class DirectiveReply {
57 public void setStatus(Integer status) { 57 public void setStatus(Integer status) {
58 this.status = status; 58 this.status = status;
59 } 59 }
60 -} 60 +}
61 \ No newline at end of file 61 \ No newline at end of file
src/main/resources/application-dev.properties
@@ -26,6 +26,6 @@ spring.datasource.validation-query=select 1 @@ -26,6 +26,6 @@ spring.datasource.validation-query=select 1
26 ## 26 ##
27 #222.66.0.204:5555 27 #222.66.0.204:5555
28 ##\u5B9E\u65F6gps 28 ##\u5B9E\u65F6gps
29 -http.gps.real.url= http://27.115.69.123:8800/transport_server/rtgps/ 29 +http.gps.real.url= http://192.168.168.192:8080/transport_server/rtgps/
30 ##\u6D88\u606F\u4E0B\u53D1 30 ##\u6D88\u606F\u4E0B\u53D1
31 http.send.directive = http://192.168.168.192:8080/transport_server/message/ 31 http.send.directive = http://192.168.168.192:8080/transport_server/message/
32 \ No newline at end of file 32 \ No newline at end of file
src/main/resources/datatools/ktrs/carsConfigDataInput.ktr
@@ -85,11 +85,11 @@ @@ -85,11 +85,11 @@
85 </info> 85 </info>
86 <notepads> 86 <notepads>
87 <notepad> 87 <notepad>
88 - <note>&#x914d;&#x8f66;&#x5206;&#x5f53;&#x524d;&#x2f;&#x5386;&#x53f2;&#x2f;&#x8ba1;&#x5212;&#xff0c;&#x5386;&#x53f2;&#x914d;&#x8f66;&#x6709;&#x7ec8;&#x6b62;&#x65f6;&#x95f4;&#xff0c;&#x7136;&#x540e;&#x662f;&#x5426;&#x5207;&#x6362;&#x57fa;&#x672c;&#x90fd;&#x662f;1&#xa;&#x662f;&#x5426;&#x5207;&#x6362; &#x6682;&#x65f6;&#x4e0d;&#x77e5;&#x9053;&#x4ec0;&#x4e48;&#x610f;&#x601d;&#xff0c;&#x5f53;&#x524d;&#x914d;&#x8f66;&#x90fd;&#x8bbe;&#x7f6e;&#x4e3a;0&#xa;&#x7ec8;&#x6b62;&#x65f6;&#x95f4; &#x5f53;&#x524d;&#x914d;&#x8f66;&#x6ca1;&#x6709;&#x7ec8;&#x6b62;&#x65f6;&#x95f4;&#xff0c;&#x8fd9;&#x4e2a;&#x4f30;&#x8ba1;&#x8981;&#x4f5c;&#x4e3a;&#x67e5;&#x8be2;&#x6761;&#x4ef6;&#x7684;&#xa;&#x65e9;&#x73ed;&#x65f6;&#x95f4; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;&#x672b;&#x73ed;&#x65f6;&#x95f4; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;</note> 88 + <note>&#x914d;&#x8f66;&#x5206;&#x5f53;&#x524d;&#x2f;&#x5386;&#x53f2;&#x2f;&#x8ba1;&#x5212;&#xff0c;&#x5386;&#x53f2;&#x914d;&#x8f66;&#x6709;&#x7ec8;&#x6b62;&#x65f6;&#x95f4;&#xff0c;&#x7136;&#x540e;&#x662f;&#x5426;&#x5207;&#x6362;&#x57fa;&#x672c;&#x90fd;&#x662f;1&#xa;&#x662f;&#x5426;&#x5207;&#x6362; &#x6682;&#x65f6;&#x4e0d;&#x77e5;&#x9053;&#x4ec0;&#x4e48;&#x610f;&#x601d;&#xff0c;&#x5f53;&#x524d;&#x914d;&#x8f66;&#x90fd;&#x8bbe;&#x7f6e;&#x4e3a;0&#xa;&#x7ec8;&#x6b62;&#x65f6;&#x95f4; &#x5f53;&#x524d;&#x914d;&#x8f66;&#x6ca1;&#x6709;&#x7ec8;&#x6b62;&#x65f6;&#x95f4;&#xff0c;&#x8fd9;&#x4e2a;&#x4f30;&#x8ba1;&#x8981;&#x4f5c;&#x4e3a;&#x67e5;&#x8be2;&#x6761;&#x4ef6;&#x7684;&#xa;&#x65e9;&#x73ed;&#x65f6;&#x95f4; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;&#x672b;&#x73ed;&#x65f6;&#x95f4; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;</note>
89 <xloc>260</xloc> 89 <xloc>260</xloc>
90 <yloc>124</yloc> 90 <yloc>124</yloc>
91 <width>391</width> 91 <width>391</width>
92 - <heigth>90</heigth> 92 + <heigth>106</heigth>
93 <fontname>YaHei Consolas Hybrid</fontname> 93 <fontname>YaHei Consolas Hybrid</fontname>
94 <fontsize>12</fontsize> 94 <fontsize>12</fontsize>
95 <fontbold>N</fontbold> 95 <fontbold>N</fontbold>
@@ -111,7 +111,7 @@ @@ -111,7 +111,7 @@
111 <server>&#x24;&#x7b;v_db_ip&#x7d;</server> 111 <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
112 <type>MYSQL</type> 112 <type>MYSQL</type>
113 <access>Native</access> 113 <access>Native</access>
114 - <database>control</database> 114 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
115 <port>3306</port> 115 <port>3306</port>
116 <username>&#x24;&#x7b;v_db_uname&#x7d;</username> 116 <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
117 <password>&#x24;&#x7b;v_db_pwd&#x7d;</password> 117 <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
@@ -329,7 +329,7 @@ @@ -329,7 +329,7 @@
329 <precision>-1</precision> 329 <precision>-1</precision>
330 <trim_type>none</trim_type> 330 <trim_type>none</trim_type>
331 <repeat>N</repeat> 331 <repeat>N</repeat>
332 - <format/> 332 + <format>&#x23;</format>
333 <currency/> 333 <currency/>
334 <decimal/> 334 <decimal/>
335 <group/> 335 <group/>
@@ -513,6 +513,41 @@ @@ -513,6 +513,41 @@
513 </step> 513 </step>
514 514
515 <step> 515 <step>
  516 + <name>&#x65e5;&#x671f;&#x8f6c;&#x6362;</name>
  517 + <type>SelectValues</type>
  518 + <description/>
  519 + <distribute>Y</distribute>
  520 + <custom_distribution/>
  521 + <copies>1</copies>
  522 + <partitioning>
  523 + <method>none</method>
  524 + <schema_name/>
  525 + </partitioning>
  526 + <fields> <select_unspecified>N</select_unspecified>
  527 + <meta> <name>qyrq</name>
  528 + <rename>qyrq</rename>
  529 + <type>Date</type>
  530 + <length>-2</length>
  531 + <precision>-2</precision>
  532 + <conversion_mask>yyyy-MM-dd</conversion_mask>
  533 + <date_format_lenient>false</date_format_lenient>
  534 + <date_format_locale/>
  535 + <date_format_timezone/>
  536 + <lenient_string_to_number>false</lenient_string_to_number>
  537 + <encoding/>
  538 + <decimal_symbol/>
  539 + <grouping_symbol/>
  540 + <currency_symbol/>
  541 + <storage_type/>
  542 + </meta> </fields> <cluster_schema/>
  543 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  544 + <xloc>913</xloc>
  545 + <yloc>54</yloc>
  546 + <draw>Y</draw>
  547 + </GUI>
  548 + </step>
  549 +
  550 + <step>
516 <name>&#x662f;&#x5426;&#x5207;&#x6362;</name> 551 <name>&#x662f;&#x5426;&#x5207;&#x6362;</name>
517 <type>Constant</type> 552 <type>Constant</type>
518 <description/> 553 <description/>
@@ -801,41 +836,6 @@ @@ -801,41 +836,6 @@
801 </GUI> 836 </GUI>
802 </step> 837 </step>
803 838
804 - <step>  
805 - <name>&#x65e5;&#x671f;&#x8f6c;&#x6362;</name>  
806 - <type>SelectValues</type>  
807 - <description/>  
808 - <distribute>Y</distribute>  
809 - <custom_distribution/>  
810 - <copies>1</copies>  
811 - <partitioning>  
812 - <method>none</method>  
813 - <schema_name/>  
814 - </partitioning>  
815 - <fields> <select_unspecified>N</select_unspecified>  
816 - <meta> <name>qyrq</name>  
817 - <rename>qyrq</rename>  
818 - <type>Date</type>  
819 - <length>-2</length>  
820 - <precision>-2</precision>  
821 - <conversion_mask>yyyy-MM-dd</conversion_mask>  
822 - <date_format_lenient>false</date_format_lenient>  
823 - <date_format_locale/>  
824 - <date_format_timezone/>  
825 - <lenient_string_to_number>false</lenient_string_to_number>  
826 - <encoding/>  
827 - <decimal_symbol/>  
828 - <grouping_symbol/>  
829 - <currency_symbol/>  
830 - <storage_type/>  
831 - </meta> </fields> <cluster_schema/>  
832 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
833 - <xloc>913</xloc>  
834 - <yloc>54</yloc>  
835 - <draw>Y</draw>  
836 - </GUI>  
837 - </step>  
838 -  
839 <step_error_handling> 839 <step_error_handling>
840 <error> 840 <error>
841 <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</source_step> 841 <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</source_step>
src/main/resources/datatools/ktrs/carsDataInput.ktr
@@ -85,11 +85,11 @@ @@ -85,11 +85,11 @@
85 </info> 85 </info>
86 <notepads> 86 <notepads>
87 <notepad> 87 <notepad>
88 - <note>&#x539f;&#x7cfb;&#x7edf;&#x7684;&#x5bfc;&#x51fa;&#x8868;&#xff0c;&#x6709;&#x4e9b;&#x6570;&#x636e;&#x662f;&#x6ca1;&#x6709;&#x7684;&#xff0c;&#x6709;&#x4e9b;&#x6570;&#x636e;&#x4e5f;&#x6709;&#x95ee;&#x9898;&#xff0c;&#x5982;&#x4e0b;&#xa;&#x62a5;&#x5e9f;&#x65e5;&#x671f;&#x53bb;&#x6389;&#xa;&#x8f66;&#x8f86;&#x7f16;&#x7801;&#xff0c;&#x6682;&#x65f6;&#x7528;1&#x4ee3;&#x66ff;&#xa;&#x662f;&#x5426;&#x7535;&#x8f66; &#x6ca1;&#x6709;&#xa;&#x8f66;&#x8f86;&#x5e8f;&#x53f7; &#x6ca1;&#x6709;&#xa;&#x662f;&#x5426;&#x5207;&#x6362; &#x6ca1;&#x6709;&#xa;&#x7ebf;&#x8def;&#x540d;&#x79f0;&#xff08;&#x8fd9;&#x91cc;&#x4e0d;&#x505a;&#x5173;&#x8054;&#xff0c;&#x53ea;&#x662f;&#x767b;&#x8bb0;&#x7684;&#x65f6;&#x5019;&#x4f7f;&#x7528;&#xff09; &#x54a9;&#x6709;&#xa;&#xa;&#x5b57;&#x5178;&#xa;&#x662f;&#x4e0e;&#x5426;truefalseType &#x662f; 1&#xa;&#x662f;&#x4e0e;&#x5426;truefalseType &#x5426; 0&#xa;&#xa;&#x4f9b;&#x5e94;&#x5546;&#x540d;&#x79f0;snames &#x5df4;&#x58eb;&#x62d3;&#x534e; 1&#xa;&#x4f9b;&#x5e94;&#x5546;&#x540d;&#x79f0;snames &#x535a;&#x5eb7; 2&#xa;&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x8425;&#x8fd0; 1&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x505c;&#x8fd0; 2&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x6302;&#x5931; 3&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x8fc1;&#x51fa;&#xff08;&#x8fc7;&#x6237;&#xff09; 4&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x8fc1;&#x51fa;&#xff08;&#x8f6c;&#x7c4d;&#xff09; 5&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x62a5;&#x5e9f; 6&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x6b47;&#x4e1a; 7&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x6ce8;&#x9500; 8&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x6d4b;&#x8bd5; 9&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x5176;&#x4ed6; 10&#xa;&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x975e;&#x673a;&#x52a8;&#x8f66; 1&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x673a;&#x52a8;&#x4e00;&#x961f; 2&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x673a;&#x52a8;&#x4e8c;&#x961f; 3&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x673a;&#x52a8;&#x4e09;&#x961f; 4&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x5907;&#x8f66; 5&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x62a2;&#x4fee;&#x8f66; 6&#xa;&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x8425;&#x8fd0;&#x8f66; 1&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x5305;&#x8f66; 2&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x5b66;&#x6821;&#x73ed;&#x8f66; 3&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x516c;&#x53f8;&#x73ed;&#x8f66; 4&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x5f85;&#x62a5;&#x5e9f;&#x8f66; 5&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x5907;&#x8f66; 6&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x6d4b;&#x8bd5;&#x8bbe;&#x5907; 7&#xa;&#xa;&#xa;&#xa;</note> 88 + <note>&#x539f;&#x7cfb;&#x7edf;&#x7684;&#x5bfc;&#x51fa;&#x8868;&#xff0c;&#x6709;&#x4e9b;&#x6570;&#x636e;&#x662f;&#x6ca1;&#x6709;&#x7684;&#xff0c;&#x6709;&#x4e9b;&#x6570;&#x636e;&#x4e5f;&#x6709;&#x95ee;&#x9898;&#xff0c;&#x5982;&#x4e0b;&#xa;&#x62a5;&#x5e9f;&#x65e5;&#x671f;&#x53bb;&#x6389;&#xa;&#x8f66;&#x8f86;&#x7f16;&#x7801;&#xff0c;&#x6682;&#x65f6;&#x7528;1&#x4ee3;&#x66ff;&#xa;&#x662f;&#x5426;&#x7535;&#x8f66; &#x6ca1;&#x6709;&#xa;&#x8f66;&#x8f86;&#x5e8f;&#x53f7; &#x6ca1;&#x6709;&#xa;&#x662f;&#x5426;&#x5207;&#x6362; &#x6ca1;&#x6709;&#xa;&#x7ebf;&#x8def;&#x540d;&#x79f0;&#xff08;&#x8fd9;&#x91cc;&#x4e0d;&#x505a;&#x5173;&#x8054;&#xff0c;&#x53ea;&#x662f;&#x767b;&#x8bb0;&#x7684;&#x65f6;&#x5019;&#x4f7f;&#x7528;&#xff09; &#x54a9;&#x6709;&#xa;&#xa;&#x5b57;&#x5178;&#xa;&#x662f;&#x4e0e;&#x5426;truefalseType &#x662f; 1&#xa;&#x662f;&#x4e0e;&#x5426;truefalseType &#x5426; 0&#xa;&#xa;&#xa;&#x4f9b;&#x5e94;&#x5546;&#x540d;&#x79f0;snames &#x5df4;&#x58eb;&#x62d3;&#x534e; 1&#xa;&#x4f9b;&#x5e94;&#x5546;&#x540d;&#x79f0;snames &#x535a;&#x5eb7; 2&#xa;&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x8425;&#x8fd0; 1&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x505c;&#x8fd0; 2&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x6302;&#x5931; 3&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x8fc1;&#x51fa;&#xff08;&#x8fc7;&#x6237;&#xff09; 4&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x8fc1;&#x51fa;&#xff08;&#x8f6c;&#x7c4d;&#xff09; 5&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x62a5;&#x5e9f; 6&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x6b47;&#x4e1a; 7&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x6ce8;&#x9500; 8&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x6d4b;&#x8bd5; 9&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x5176;&#x4ed6; 10&#xa;&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x975e;&#x673a;&#x52a8;&#x8f66; 1&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x673a;&#x52a8;&#x4e00;&#x961f; 2&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x673a;&#x52a8;&#x4e8c;&#x961f; 3&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x673a;&#x52a8;&#x4e09;&#x961f; 4&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x5907;&#x8f66; 5&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x62a2;&#x4fee;&#x8f66; 6&#xa;&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x8425;&#x8fd0;&#x8f66; 1&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x5305;&#x8f66; 2&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x5b66;&#x6821;&#x73ed;&#x8f66; 3&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x516c;&#x53f8;&#x73ed;&#x8f66; 4&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x5f85;&#x62a5;&#x5e9f;&#x8f66; 5&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x5907;&#x8f66; 6&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x6d4b;&#x8bd5;&#x8bbe;&#x5907; 7&#xa;&#xa;&#xa;&#xa;</note>
89 <xloc>45</xloc> 89 <xloc>45</xloc>
90 <yloc>254</yloc> 90 <yloc>254</yloc>
91 <width>346</width> 91 <width>346</width>
92 - <heigth>714</heigth> 92 + <heigth>730</heigth>
93 <fontname>YaHei Consolas Hybrid</fontname> 93 <fontname>YaHei Consolas Hybrid</fontname>
94 <fontsize>12</fontsize> 94 <fontsize>12</fontsize>
95 <fontbold>N</fontbold> 95 <fontbold>N</fontbold>
src/main/resources/datatools/ktrs/carsDataOutput.ktr
@@ -1357,8 +1357,8 @@ @@ -1357,8 +1357,8 @@
1357 </fields> 1357 </fields>
1358 <cluster_schema/> 1358 <cluster_schema/>
1359 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1359 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1360 - <xloc>206</xloc>  
1361 - <yloc>154</yloc> 1360 + <xloc>208</xloc>
  1361 + <yloc>157</yloc>
1362 <draw>Y</draw> 1362 <draw>Y</draw>
1363 </GUI> 1363 </GUI>
1364 </step> 1364 </step>
src/main/resources/datatools/ktrs/employeesConfigDataInput.ktr
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<transformation>  
3 - <info>  
4 - <name>employeesConfigDataInput</name>  
5 - <description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>  
6 - <extended_description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;</extended_description>  
7 - <trans_version/>  
8 - <trans_type>Normal</trans_type>  
9 - <trans_status>0</trans_status>  
10 - <directory>&#x2f;</directory>  
11 - <parameters>  
12 - <parameter>  
13 - <name>erroroutputdir</name>  
14 - <default_value/>  
15 - <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>  
16 - </parameter>  
17 - <parameter>  
18 - <name>filepath</name>  
19 - <default_value/>  
20 - <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>  
21 - </parameter>  
22 - </parameters>  
23 - <log>  
24 -<trans-log-table><connection/>  
25 -<schema/>  
26 -<table/>  
27 -<size_limit_lines/>  
28 -<interval/>  
29 -<timeout_days/>  
30 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>  
31 -<perf-log-table><connection/>  
32 -<schema/>  
33 -<table/>  
34 -<interval/>  
35 -<timeout_days/>  
36 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>  
37 -<channel-log-table><connection/>  
38 -<schema/>  
39 -<table/>  
40 -<timeout_days/>  
41 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>  
42 -<step-log-table><connection/>  
43 -<schema/>  
44 -<table/>  
45 -<timeout_days/>  
46 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>  
47 -<metrics-log-table><connection/>  
48 -<schema/>  
49 -<table/>  
50 -<timeout_days/>  
51 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>  
52 - </log>  
53 - <maxdate>  
54 - <connection/>  
55 - <table/>  
56 - <field/>  
57 - <offset>0.0</offset>  
58 - <maxdiff>0.0</maxdiff>  
59 - </maxdate>  
60 - <size_rowset>10000</size_rowset>  
61 - <sleep_time_empty>50</sleep_time_empty>  
62 - <sleep_time_full>50</sleep_time_full>  
63 - <unique_connections>N</unique_connections>  
64 - <feedback_shown>Y</feedback_shown>  
65 - <feedback_size>50000</feedback_size>  
66 - <using_thread_priorities>Y</using_thread_priorities>  
67 - <shared_objects_file/>  
68 - <capture_step_performance>N</capture_step_performance>  
69 - <step_performance_capturing_delay>1000</step_performance_capturing_delay>  
70 - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>  
71 - <dependencies>  
72 - </dependencies>  
73 - <partitionschemas>  
74 - </partitionschemas>  
75 - <slaveservers>  
76 - </slaveservers>  
77 - <clusterschemas>  
78 - </clusterschemas>  
79 - <created_user>-</created_user>  
80 - <created_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</created_date>  
81 - <modified_user>-</modified_user>  
82 - <modified_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</modified_date>  
83 - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>  
84 - <is_key_private>N</is_key_private>  
85 - </info>  
86 - <notepads>  
87 - <notepad>  
88 - <note>&#x539f;&#x7cfb;&#x7edf;&#x7684;&#x8868;&#x4e2d;&#xff0c;&#x8f66;&#x8f86;&#x5185;&#x90e8;&#x7f16;&#x7801;&#x662f;&#x6ca1;&#x7684;&#xff0c;&#xa;&#x642d;&#x73ed;&#x7f16;&#x7801; &#x8fd9;&#x4e2a;&#x8c8c;&#x4f3c;&#x7528;&#x4e8e;&#x9a7e;&#x9a76;&#x5458;&#x548c;&#x552e;&#x7968;&#x5458;&#x7528;&#x7684;&#xff0c;&#x597d;&#x50cf;&#x4e0d;&#x80fd;&#x4e00;&#x6837;&#x7684;&#xa;&#x8f66;&#x8f86;&#x5185;&#x90e8;&#x7f16;&#x7801; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;</note>  
89 - <xloc>252</xloc>  
90 - <yloc>178</yloc>  
91 - <width>341</width>  
92 - <heigth>58</heigth>  
93 - <fontname>YaHei Consolas Hybrid</fontname>  
94 - <fontsize>12</fontsize>  
95 - <fontbold>N</fontbold>  
96 - <fontitalic>N</fontitalic>  
97 - <fontcolorred>0</fontcolorred>  
98 - <fontcolorgreen>0</fontcolorgreen>  
99 - <fontcolorblue>0</fontcolorblue>  
100 - <backgroundcolorred>255</backgroundcolorred>  
101 - <backgroundcolorgreen>205</backgroundcolorgreen>  
102 - <backgroundcolorblue>112</backgroundcolorblue>  
103 - <bordercolorred>100</bordercolorred>  
104 - <bordercolorgreen>100</bordercolorgreen>  
105 - <bordercolorblue>100</bordercolorblue>  
106 - <drawshadow>Y</drawshadow>  
107 - </notepad>  
108 - </notepads>  
109 - <connection>  
110 - <name>bus_control_variable</name>  
111 - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>  
112 - <type>MYSQL</type>  
113 - <access>Native</access>  
114 - <database>control</database>  
115 - <port>3306</port>  
116 - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>  
117 - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>  
118 - <servername/>  
119 - <data_tablespace/>  
120 - <index_tablespace/>  
121 - <attributes>  
122 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
123 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
124 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
125 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
126 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
127 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
128 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
129 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
130 - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>  
131 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
132 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
133 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
134 - </attributes>  
135 - </connection>  
136 - <connection>  
137 - <name>bus_control_&#x516c;&#x53f8;_201</name>  
138 - <server>localhost</server>  
139 - <type>MYSQL</type>  
140 - <access>Native</access>  
141 - <database>control</database>  
142 - <port>3306</port>  
143 - <username>root</username>  
144 - <password>Encrypted </password>  
145 - <servername/>  
146 - <data_tablespace/>  
147 - <index_tablespace/>  
148 - <attributes>  
149 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
150 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
151 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
152 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
153 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
154 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
155 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
156 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
157 - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>  
158 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
159 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
160 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
161 - </attributes>  
162 - </connection>  
163 - <connection>  
164 - <name>bus_control_&#x672c;&#x673a;</name>  
165 - <server>localhost</server>  
166 - <type>MYSQL</type>  
167 - <access>Native</access>  
168 - <database>control</database>  
169 - <port>3306</port>  
170 - <username>root</username>  
171 - <password>Encrypted </password>  
172 - <servername/>  
173 - <data_tablespace/>  
174 - <index_tablespace/>  
175 - <attributes>  
176 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
177 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
178 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
179 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
180 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
181 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
182 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
183 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
184 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
185 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
186 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
187 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
188 - </attributes>  
189 - </connection>  
190 - <connection>  
191 - <name>xlab_mysql_youle</name>  
192 - <server>101.231.124.8</server>  
193 - <type>MYSQL</type>  
194 - <access>Native</access>  
195 - <database>xlab_youle</database>  
196 - <port>45687</port>  
197 - <username>xlab-youle</username>  
198 - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>  
199 - <servername/>  
200 - <data_tablespace/>  
201 - <index_tablespace/>  
202 - <attributes>  
203 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
204 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
205 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
206 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
207 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
208 - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>  
209 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
210 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
211 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
212 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>  
213 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>  
214 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
215 - </attributes>  
216 - </connection>  
217 - <connection>  
218 - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>  
219 - <server>localhost</server>  
220 - <type>MYSQL</type>  
221 - <access>Native</access>  
222 - <database>xlab_youle</database>  
223 - <port>3306</port>  
224 - <username>root</username>  
225 - <password>Encrypted </password>  
226 - <servername/>  
227 - <data_tablespace/>  
228 - <index_tablespace/>  
229 - <attributes>  
230 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
231 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
232 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
233 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
234 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
235 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
236 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
237 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
238 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
239 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>  
240 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>  
241 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
242 - </attributes>  
243 - </connection>  
244 - <connection>  
245 - <name>xlab_youle</name>  
246 - <server/>  
247 - <type>MYSQL</type>  
248 - <access>JNDI</access>  
249 - <database>xlab_youle</database>  
250 - <port>1521</port>  
251 - <username/>  
252 - <password>Encrypted </password>  
253 - <servername/>  
254 - <data_tablespace/>  
255 - <index_tablespace/>  
256 - <attributes>  
257 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
258 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
259 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
260 - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>  
261 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
262 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
263 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
264 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
265 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
266 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
267 - </attributes>  
268 - </connection>  
269 - <order>  
270 - <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>  
271 - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>  
272 - <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>  
273 - <hop> <from>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</to><enabled>Y</enabled> </hop>  
274 - <hop> <from>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>  
275 - <hop> <from>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</from><to>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>  
276 - <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>  
277 - </order>  
278 - <step>  
279 - <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>  
280 - <type>ExcelInput</type>  
281 - <description/>  
282 - <distribute>Y</distribute>  
283 - <custom_distribution/>  
284 - <copies>1</copies>  
285 - <partitioning>  
286 - <method>none</method>  
287 - <schema_name/>  
288 - </partitioning>  
289 - <header>Y</header>  
290 - <noempty>Y</noempty>  
291 - <stoponempty>N</stoponempty>  
292 - <filefield/>  
293 - <sheetfield/>  
294 - <sheetrownumfield/>  
295 - <rownumfield/>  
296 - <sheetfield/>  
297 - <filefield/>  
298 - <limit>0</limit>  
299 - <encoding/>  
300 - <add_to_result_filenames>Y</add_to_result_filenames>  
301 - <accept_filenames>Y</accept_filenames>  
302 - <accept_field>filepath_</accept_field>  
303 - <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>  
304 - <file>  
305 - <name/>  
306 - <filemask/>  
307 - <exclude_filemask/>  
308 - <file_required>N</file_required>  
309 - <include_subfolders>N</include_subfolders>  
310 - </file>  
311 - <fields>  
312 - <field>  
313 - <name>&#x7ebf;&#x8def;</name>  
314 - <type>String</type>  
315 - <length>-1</length>  
316 - <precision>-1</precision>  
317 - <trim_type>none</trim_type>  
318 - <repeat>N</repeat>  
319 - <format/>  
320 - <currency/>  
321 - <decimal/>  
322 - <group/>  
323 - </field>  
324 - <field>  
325 - <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>  
326 - <type>String</type>  
327 - <length>-1</length>  
328 - <precision>-1</precision>  
329 - <trim_type>none</trim_type>  
330 - <repeat>N</repeat>  
331 - <format/>  
332 - <currency/>  
333 - <decimal/>  
334 - <group/>  
335 - </field>  
336 - <field>  
337 - <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>  
338 - <type>String</type>  
339 - <length>-1</length>  
340 - <precision>-1</precision>  
341 - <trim_type>none</trim_type>  
342 - <repeat>N</repeat>  
343 - <format/>  
344 - <currency/>  
345 - <decimal/>  
346 - <group/>  
347 - </field>  
348 - <field>  
349 - <name>&#x9a7e;&#x9a76;&#x5458;</name>  
350 - <type>String</type>  
351 - <length>-1</length>  
352 - <precision>-1</precision>  
353 - <trim_type>none</trim_type>  
354 - <repeat>N</repeat>  
355 - <format/>  
356 - <currency/>  
357 - <decimal/>  
358 - <group/>  
359 - </field>  
360 - <field>  
361 - <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>  
362 - <type>String</type>  
363 - <length>-1</length>  
364 - <precision>-1</precision>  
365 - <trim_type>none</trim_type>  
366 - <repeat>N</repeat>  
367 - <format/>  
368 - <currency/>  
369 - <decimal/>  
370 - <group/>  
371 - </field>  
372 - <field>  
373 - <name>&#x552e;&#x7968;&#x5458;</name>  
374 - <type>String</type>  
375 - <length>-1</length>  
376 - <precision>-1</precision>  
377 - <trim_type>none</trim_type>  
378 - <repeat>N</repeat>  
379 - <format/>  
380 - <currency/>  
381 - <decimal/>  
382 - <group/>  
383 - </field>  
384 - <field>  
385 - <name>&#x8f66;&#x8f86;</name>  
386 - <type>String</type>  
387 - <length>-1</length>  
388 - <precision>-1</precision>  
389 - <trim_type>none</trim_type>  
390 - <repeat>N</repeat>  
391 - <format/>  
392 - <currency/>  
393 - <decimal/>  
394 - <group/>  
395 - </field>  
396 - </fields>  
397 - <sheets>  
398 - <sheet>  
399 - <name>&#x5de5;&#x4f5c;&#x8868;1</name>  
400 - <startrow>0</startrow>  
401 - <startcol>0</startcol>  
402 - </sheet>  
403 - </sheets>  
404 - <strict_types>N</strict_types>  
405 - <error_ignored>N</error_ignored>  
406 - <error_line_skipped>N</error_line_skipped>  
407 - <bad_line_files_destination_directory/>  
408 - <bad_line_files_extension>warning</bad_line_files_extension>  
409 - <error_line_files_destination_directory/>  
410 - <error_line_files_extension>error</error_line_files_extension>  
411 - <line_number_files_destination_directory/>  
412 - <line_number_files_extension>line</line_number_files_extension>  
413 - <shortFileFieldName/>  
414 - <pathFieldName/>  
415 - <hiddenFieldName/>  
416 - <lastModificationTimeFieldName/>  
417 - <uriNameFieldName/>  
418 - <rootUriNameFieldName/>  
419 - <extensionFieldName/>  
420 - <sizeFieldName/>  
421 - <spreadsheet_type>JXL</spreadsheet_type>  
422 - <cluster_schema/>  
423 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
424 - <xloc>144</xloc>  
425 - <yloc>49</yloc>  
426 - <draw>Y</draw>  
427 - </GUI>  
428 - </step>  
429 -  
430 - <step>  
431 - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>  
432 - <type>SelectValues</type>  
433 - <description/>  
434 - <distribute>Y</distribute>  
435 - <custom_distribution/>  
436 - <copies>1</copies>  
437 - <partitioning>  
438 - <method>none</method>  
439 - <schema_name/>  
440 - </partitioning>  
441 - <fields> <field> <name>&#x7ebf;&#x8def;</name>  
442 - <rename>xl</rename>  
443 - <length>-2</length>  
444 - <precision>-2</precision>  
445 - </field> <field> <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>  
446 - <rename>dbbm</rename>  
447 - <length>-2</length>  
448 - <precision>-2</precision>  
449 - </field> <field> <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>  
450 - <rename>jsy_no</rename>  
451 - <length>-2</length>  
452 - <precision>-2</precision>  
453 - </field> <field> <name>&#x9a7e;&#x9a76;&#x5458;</name>  
454 - <rename>jsy_name</rename>  
455 - <length>-2</length>  
456 - <precision>-2</precision>  
457 - </field> <field> <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>  
458 - <rename>spy_no</rename>  
459 - <length>-2</length>  
460 - <precision>-2</precision>  
461 - </field> <field> <name>&#x552e;&#x7968;&#x5458;</name>  
462 - <rename>spy_name</rename>  
463 - <length>-2</length>  
464 - <precision>-2</precision>  
465 - </field> <field> <name>&#x8f66;&#x8f86;</name>  
466 - <rename>cl</rename>  
467 - <length>-2</length>  
468 - <precision>-2</precision>  
469 - </field> <select_unspecified>N</select_unspecified>  
470 - </fields> <cluster_schema/>  
471 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
472 - <xloc>294</xloc>  
473 - <yloc>50</yloc>  
474 - <draw>Y</draw>  
475 - </GUI>  
476 - </step>  
477 -  
478 - <step>  
479 - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</name>  
480 - <type>InsertUpdate</type>  
481 - <description/>  
482 - <distribute>Y</distribute>  
483 - <custom_distribution/>  
484 - <copies>1</copies>  
485 - <partitioning>  
486 - <method>none</method>  
487 - <schema_name/>  
488 - </partitioning>  
489 - <connection>bus_control_variable</connection>  
490 - <commit>100</commit>  
491 - <update_bypassed>N</update_bypassed>  
492 - <lookup>  
493 - <schema/>  
494 - <table>bsth_c_s_ecinfo</table>  
495 - <key>  
496 - <name>xlid</name>  
497 - <field>xl</field>  
498 - <condition>&#x3d;</condition>  
499 - <name2/>  
500 - </key>  
501 - <key>  
502 - <name>jsyid</name>  
503 - <field>jsy</field>  
504 - <condition>&#x3d;</condition>  
505 - <name2/>  
506 - </key>  
507 - <key>  
508 - <name>spyid</name>  
509 - <field>spy</field>  
510 - <condition>&#x3d;</condition>  
511 - <name2/>  
512 - </key>  
513 - <value>  
514 - <name>xl</name>  
515 - <rename>xlid</rename>  
516 - <update>Y</update>  
517 - </value>  
518 - <value>  
519 - <name>dbbm</name>  
520 - <rename>dbbm</rename>  
521 - <update>Y</update>  
522 - </value>  
523 - <value>  
524 - <name>jsy</name>  
525 - <rename>jsyid</rename>  
526 - <update>Y</update>  
527 - </value>  
528 - <value>  
529 - <name>spy</name>  
530 - <rename>spyid</rename>  
531 - <update>Y</update>  
532 - </value>  
533 - </lookup>  
534 - <cluster_schema/>  
535 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
536 - <xloc>721</xloc>  
537 - <yloc>181</yloc>  
538 - <draw>Y</draw>  
539 - </GUI>  
540 - </step>  
541 -  
542 - <step>  
543 - <name>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</name>  
544 - <type>DBLookup</type>  
545 - <description/>  
546 - <distribute>Y</distribute>  
547 - <custom_distribution/>  
548 - <copies>1</copies>  
549 - <partitioning>  
550 - <method>none</method>  
551 - <schema_name/>  
552 - </partitioning>  
553 - <connection>bus_control_variable</connection>  
554 - <cache>N</cache>  
555 - <cache_load_all>N</cache_load_all>  
556 - <cache_size>0</cache_size>  
557 - <lookup>  
558 - <schema/>  
559 - <table>bsth_c_personnel</table>  
560 - <orderby/>  
561 - <fail_on_multiple>N</fail_on_multiple>  
562 - <eat_row_on_failure>N</eat_row_on_failure>  
563 - <key>  
564 - <name>spy_no</name>  
565 - <field>job_code</field>  
566 - <condition>&#x3d;</condition>  
567 - <name2/>  
568 - </key>  
569 - <value>  
570 - <name>id</name>  
571 - <rename>spyid</rename>  
572 - <default/>  
573 - <type>Integer</type>  
574 - </value>  
575 - </lookup>  
576 - <cluster_schema/>  
577 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
578 - <xloc>720</xloc>  
579 - <yloc>51</yloc>  
580 - <draw>Y</draw>  
581 - </GUI>  
582 - </step>  
583 -  
584 - <step>  
585 - <name>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>  
586 - <type>DBLookup</type>  
587 - <description/>  
588 - <distribute>Y</distribute>  
589 - <custom_distribution/>  
590 - <copies>1</copies>  
591 - <partitioning>  
592 - <method>none</method>  
593 - <schema_name/>  
594 - </partitioning>  
595 - <connection>bus_control_variable</connection>  
596 - <cache>N</cache>  
597 - <cache_load_all>N</cache_load_all>  
598 - <cache_size>0</cache_size>  
599 - <lookup>  
600 - <schema/>  
601 - <table>bsth_c_line</table>  
602 - <orderby/>  
603 - <fail_on_multiple>N</fail_on_multiple>  
604 - <eat_row_on_failure>N</eat_row_on_failure>  
605 - <key>  
606 - <name>xl</name>  
607 - <field>name</field>  
608 - <condition>&#x3d;</condition>  
609 - <name2/>  
610 - </key>  
611 - <value>  
612 - <name>id</name>  
613 - <rename>xlid</rename>  
614 - <default/>  
615 - <type>Integer</type>  
616 - </value>  
617 - </lookup>  
618 - <cluster_schema/>  
619 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
620 - <xloc>429</xloc>  
621 - <yloc>51</yloc>  
622 - <draw>Y</draw>  
623 - </GUI>  
624 - </step>  
625 -  
626 - <step>  
627 - <name>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</name>  
628 - <type>DBLookup</type>  
629 - <description/>  
630 - <distribute>Y</distribute>  
631 - <custom_distribution/>  
632 - <copies>1</copies>  
633 - <partitioning>  
634 - <method>none</method>  
635 - <schema_name/>  
636 - </partitioning>  
637 - <connection>bus_control_variable</connection>  
638 - <cache>N</cache>  
639 - <cache_load_all>N</cache_load_all>  
640 - <cache_size>0</cache_size>  
641 - <lookup>  
642 - <schema/>  
643 - <table>bsth_c_personnel</table>  
644 - <orderby/>  
645 - <fail_on_multiple>N</fail_on_multiple>  
646 - <eat_row_on_failure>N</eat_row_on_failure>  
647 - <key>  
648 - <name>jsy_no</name>  
649 - <field>job_code</field>  
650 - <condition>&#x3d;</condition>  
651 - <name2/>  
652 - </key>  
653 - <value>  
654 - <name>id</name>  
655 - <rename>jsyid</rename>  
656 - <default/>  
657 - <type>Integer</type>  
658 - </value>  
659 - </lookup>  
660 - <cluster_schema/>  
661 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
662 - <xloc>573</xloc>  
663 - <yloc>51</yloc>  
664 - <draw>Y</draw>  
665 - </GUI>  
666 - </step>  
667 -  
668 - <step>  
669 - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>  
670 - <type>GetVariable</type>  
671 - <description/>  
672 - <distribute>Y</distribute>  
673 - <custom_distribution/>  
674 - <copies>1</copies>  
675 - <partitioning>  
676 - <method>none</method>  
677 - <schema_name/>  
678 - </partitioning>  
679 - <fields>  
680 - <field>  
681 - <name>filepath_</name>  
682 - <variable>&#x24;&#x7b;filepath&#x7d;</variable>  
683 - <type>String</type>  
684 - <format/>  
685 - <currency/>  
686 - <decimal/>  
687 - <group/>  
688 - <length>-1</length>  
689 - <precision>-1</precision>  
690 - <trim_type>none</trim_type>  
691 - </field>  
692 - <field>  
693 - <name>erroroutputdir_</name>  
694 - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>  
695 - <type>String</type>  
696 - <format/>  
697 - <currency/>  
698 - <decimal/>  
699 - <group/>  
700 - <length>-1</length>  
701 - <precision>-1</precision>  
702 - <trim_type>none</trim_type>  
703 - </field>  
704 - </fields>  
705 - <cluster_schema/>  
706 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
707 - <xloc>94</xloc>  
708 - <yloc>178</yloc>  
709 - <draw>Y</draw>  
710 - </GUI>  
711 - </step>  
712 -  
713 - <step>  
714 - <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>  
715 - <type>ExcelOutput</type>  
716 - <description/>  
717 - <distribute>Y</distribute>  
718 - <custom_distribution/>  
719 - <copies>1</copies>  
720 - <partitioning>  
721 - <method>none</method>  
722 - <schema_name/>  
723 - </partitioning>  
724 - <header>Y</header>  
725 - <footer>N</footer>  
726 - <encoding>UTF-8</encoding>  
727 - <append>N</append>  
728 - <add_to_result_filenames>Y</add_to_result_filenames>  
729 - <file>  
730 - <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x4eba;&#x5458;&#x914d;&#x7f6e;_&#x9519;&#x8bef;</name>  
731 - <extention>xls</extention>  
732 - <do_not_open_newfile_init>N</do_not_open_newfile_init>  
733 - <create_parent_folder>N</create_parent_folder>  
734 - <split>N</split>  
735 - <add_date>N</add_date>  
736 - <add_time>N</add_time>  
737 - <SpecifyFormat>N</SpecifyFormat>  
738 - <date_time_format/>  
739 - <sheetname>Sheet1</sheetname>  
740 - <autosizecolums>N</autosizecolums>  
741 - <nullisblank>N</nullisblank>  
742 - <protect_sheet>N</protect_sheet>  
743 - <password>Encrypted </password>  
744 - <splitevery>0</splitevery>  
745 - <usetempfiles>N</usetempfiles>  
746 - <tempdirectory/>  
747 - </file>  
748 - <template>  
749 - <enabled>N</enabled>  
750 - <append>N</append>  
751 - <filename>template.xls</filename>  
752 - </template>  
753 - <fields>  
754 - <field>  
755 - <name>xl</name>  
756 - <type>String</type>  
757 - <format/>  
758 - </field>  
759 - <field>  
760 - <name>dbbm</name>  
761 - <type>String</type>  
762 - <format/>  
763 - </field>  
764 - <field>  
765 - <name>jsy_no</name>  
766 - <type>String</type>  
767 - <format/>  
768 - </field>  
769 - <field>  
770 - <name>jsy_name</name>  
771 - <type>String</type>  
772 - <format/>  
773 - </field>  
774 - <field>  
775 - <name>spy_no</name>  
776 - <type>String</type>  
777 - <format/>  
778 - </field>  
779 - <field>  
780 - <name>spy_name</name>  
781 - <type>String</type>  
782 - <format/>  
783 - </field>  
784 - <field>  
785 - <name>cl</name>  
786 - <type>String</type>  
787 - <format/>  
788 - </field>  
789 - <field>  
790 - <name>xlid</name>  
791 - <type>Integer</type>  
792 - <format/>  
793 - </field>  
794 - <field>  
795 - <name>jsyid</name>  
796 - <type>Integer</type>  
797 - <format/>  
798 - </field>  
799 - <field>  
800 - <name>spyid</name>  
801 - <type>Integer</type>  
802 - <format/>  
803 - </field>  
804 - <field>  
805 - <name>error_count</name>  
806 - <type>Integer</type>  
807 - <format/>  
808 - </field>  
809 - <field>  
810 - <name>error_desc</name>  
811 - <type>String</type>  
812 - <format/>  
813 - </field>  
814 - <field>  
815 - <name>error_column1</name>  
816 - <type>String</type>  
817 - <format/>  
818 - </field>  
819 - <field>  
820 - <name>error_column2</name>  
821 - <type>String</type>  
822 - <format/>  
823 - </field>  
824 - </fields>  
825 - <custom>  
826 - <header_font_name>arial</header_font_name>  
827 - <header_font_size>10</header_font_size>  
828 - <header_font_bold>N</header_font_bold>  
829 - <header_font_italic>N</header_font_italic>  
830 - <header_font_underline>no</header_font_underline>  
831 - <header_font_orientation>horizontal</header_font_orientation>  
832 - <header_font_color>black</header_font_color>  
833 - <header_background_color>none</header_background_color>  
834 - <header_row_height>255</header_row_height>  
835 - <header_alignment>left</header_alignment>  
836 - <header_image/>  
837 - <row_font_name>arial</row_font_name>  
838 - <row_font_size>10</row_font_size>  
839 - <row_font_color>black</row_font_color>  
840 - <row_background_color>none</row_background_color>  
841 - </custom>  
842 - <cluster_schema/>  
843 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
844 - <xloc>721</xloc>  
845 - <yloc>304</yloc>  
846 - <draw>Y</draw>  
847 - </GUI>  
848 - </step>  
849 -  
850 - <step_error_handling>  
851 - <error>  
852 - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</source_step>  
853 - <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>  
854 - <is_enabled>Y</is_enabled>  
855 - <nr_valuename>error_count</nr_valuename>  
856 - <descriptions_valuename>error_desc</descriptions_valuename>  
857 - <fields_valuename>error_column1</fields_valuename>  
858 - <codes_valuename>error_column2</codes_valuename>  
859 - <max_errors/>  
860 - <max_pct_errors/>  
861 - <min_pct_rows/>  
862 - </error>  
863 - </step_error_handling>  
864 - <slave-step-copy-partition-distribution>  
865 -</slave-step-copy-partition-distribution>  
866 - <slave_transformation>N</slave_transformation>  
867 -  
868 -</transformation> 1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>employeesConfigDataInput</name>
  5 + <description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;</extended_description>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>erroroutputdir</name>
  14 + <default_value/>
  15 + <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>filepath</name>
  19 + <default_value/>
  20 + <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
  21 + </parameter>
  22 + </parameters>
  23 + <log>
  24 +<trans-log-table><connection/>
  25 +<schema/>
  26 +<table/>
  27 +<size_limit_lines/>
  28 +<interval/>
  29 +<timeout_days/>
  30 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  31 +<perf-log-table><connection/>
  32 +<schema/>
  33 +<table/>
  34 +<interval/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  37 +<channel-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  42 +<step-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  47 +<metrics-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  52 + </log>
  53 + <maxdate>
  54 + <connection/>
  55 + <table/>
  56 + <field/>
  57 + <offset>0.0</offset>
  58 + <maxdiff>0.0</maxdiff>
  59 + </maxdate>
  60 + <size_rowset>10000</size_rowset>
  61 + <sleep_time_empty>50</sleep_time_empty>
  62 + <sleep_time_full>50</sleep_time_full>
  63 + <unique_connections>N</unique_connections>
  64 + <feedback_shown>Y</feedback_shown>
  65 + <feedback_size>50000</feedback_size>
  66 + <using_thread_priorities>Y</using_thread_priorities>
  67 + <shared_objects_file/>
  68 + <capture_step_performance>N</capture_step_performance>
  69 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  70 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  71 + <dependencies>
  72 + </dependencies>
  73 + <partitionschemas>
  74 + </partitionschemas>
  75 + <slaveservers>
  76 + </slaveservers>
  77 + <clusterschemas>
  78 + </clusterschemas>
  79 + <created_user>-</created_user>
  80 + <created_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</modified_date>
  83 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  84 + <is_key_private>N</is_key_private>
  85 + </info>
  86 + <notepads>
  87 + <notepad>
  88 + <note>&#x539f;&#x7cfb;&#x7edf;&#x7684;&#x8868;&#x4e2d;&#xff0c;&#x8f66;&#x8f86;&#x5185;&#x90e8;&#x7f16;&#x7801;&#x662f;&#x6ca1;&#x7684;&#xff0c;&#xa;&#x642d;&#x73ed;&#x7f16;&#x7801; &#x8fd9;&#x4e2a;&#x8c8c;&#x4f3c;&#x7528;&#x4e8e;&#x9a7e;&#x9a76;&#x5458;&#x548c;&#x552e;&#x7968;&#x5458;&#x7528;&#x7684;&#xff0c;&#x597d;&#x50cf;&#x4e0d;&#x80fd;&#x4e00;&#x6837;&#x7684;&#xa;&#x8f66;&#x8f86;&#x5185;&#x90e8;&#x7f16;&#x7801; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;&#xa;</note>
  89 + <xloc>252</xloc>
  90 + <yloc>178</yloc>
  91 + <width>341</width>
  92 + <heigth>90</heigth>
  93 + <fontname>YaHei Consolas Hybrid</fontname>
  94 + <fontsize>12</fontsize>
  95 + <fontbold>N</fontbold>
  96 + <fontitalic>N</fontitalic>
  97 + <fontcolorred>0</fontcolorred>
  98 + <fontcolorgreen>0</fontcolorgreen>
  99 + <fontcolorblue>0</fontcolorblue>
  100 + <backgroundcolorred>255</backgroundcolorred>
  101 + <backgroundcolorgreen>205</backgroundcolorgreen>
  102 + <backgroundcolorblue>112</backgroundcolorblue>
  103 + <bordercolorred>100</bordercolorred>
  104 + <bordercolorgreen>100</bordercolorgreen>
  105 + <bordercolorblue>100</bordercolorblue>
  106 + <drawshadow>Y</drawshadow>
  107 + </notepad>
  108 + </notepads>
  109 + <connection>
  110 + <name>bus_control_variable</name>
  111 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  112 + <type>MYSQL</type>
  113 + <access>Native</access>
  114 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  115 + <port>3306</port>
  116 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  117 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  118 + <servername/>
  119 + <data_tablespace/>
  120 + <index_tablespace/>
  121 + <attributes>
  122 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  123 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  124 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  125 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  126 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  127 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  128 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  129 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  130 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  131 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  132 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  133 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  134 + </attributes>
  135 + </connection>
  136 + <connection>
  137 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  138 + <server>localhost</server>
  139 + <type>MYSQL</type>
  140 + <access>Native</access>
  141 + <database>control</database>
  142 + <port>3306</port>
  143 + <username>root</username>
  144 + <password>Encrypted </password>
  145 + <servername/>
  146 + <data_tablespace/>
  147 + <index_tablespace/>
  148 + <attributes>
  149 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  150 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  151 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  152 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  153 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  154 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  155 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  156 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  157 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  158 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  159 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  160 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  161 + </attributes>
  162 + </connection>
  163 + <connection>
  164 + <name>bus_control_&#x672c;&#x673a;</name>
  165 + <server>localhost</server>
  166 + <type>MYSQL</type>
  167 + <access>Native</access>
  168 + <database>control</database>
  169 + <port>3306</port>
  170 + <username>root</username>
  171 + <password>Encrypted </password>
  172 + <servername/>
  173 + <data_tablespace/>
  174 + <index_tablespace/>
  175 + <attributes>
  176 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  177 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  178 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  179 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  180 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  181 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  182 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  183 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  184 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  185 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  186 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  187 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  188 + </attributes>
  189 + </connection>
  190 + <connection>
  191 + <name>xlab_mysql_youle</name>
  192 + <server>101.231.124.8</server>
  193 + <type>MYSQL</type>
  194 + <access>Native</access>
  195 + <database>xlab_youle</database>
  196 + <port>45687</port>
  197 + <username>xlab-youle</username>
  198 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  199 + <servername/>
  200 + <data_tablespace/>
  201 + <index_tablespace/>
  202 + <attributes>
  203 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  204 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  205 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  206 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  207 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  208 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  209 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  210 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  211 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  212 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  213 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  214 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  215 + </attributes>
  216 + </connection>
  217 + <connection>
  218 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  219 + <server>localhost</server>
  220 + <type>MYSQL</type>
  221 + <access>Native</access>
  222 + <database>xlab_youle</database>
  223 + <port>3306</port>
  224 + <username>root</username>
  225 + <password>Encrypted </password>
  226 + <servername/>
  227 + <data_tablespace/>
  228 + <index_tablespace/>
  229 + <attributes>
  230 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  231 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  232 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  233 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  234 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  235 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  236 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  237 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  238 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  239 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  240 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  241 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  242 + </attributes>
  243 + </connection>
  244 + <connection>
  245 + <name>xlab_youle</name>
  246 + <server/>
  247 + <type>MYSQL</type>
  248 + <access>JNDI</access>
  249 + <database>xlab_youle</database>
  250 + <port>1521</port>
  251 + <username/>
  252 + <password>Encrypted </password>
  253 + <servername/>
  254 + <data_tablespace/>
  255 + <index_tablespace/>
  256 + <attributes>
  257 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  258 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  259 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  260 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  261 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  262 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  263 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  264 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  265 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  266 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  267 + </attributes>
  268 + </connection>
  269 + <order>
  270 + <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  271 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  272 + <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  273 + <hop> <from>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</to><enabled>Y</enabled> </hop>
  274 + <hop> <from>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  275 + <hop> <from>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</from><to>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  276 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  277 + </order>
  278 + <step>
  279 + <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
  280 + <type>ExcelInput</type>
  281 + <description/>
  282 + <distribute>Y</distribute>
  283 + <custom_distribution/>
  284 + <copies>1</copies>
  285 + <partitioning>
  286 + <method>none</method>
  287 + <schema_name/>
  288 + </partitioning>
  289 + <header>Y</header>
  290 + <noempty>Y</noempty>
  291 + <stoponempty>N</stoponempty>
  292 + <filefield/>
  293 + <sheetfield/>
  294 + <sheetrownumfield/>
  295 + <rownumfield/>
  296 + <sheetfield/>
  297 + <filefield/>
  298 + <limit>0</limit>
  299 + <encoding/>
  300 + <add_to_result_filenames>Y</add_to_result_filenames>
  301 + <accept_filenames>Y</accept_filenames>
  302 + <accept_field>filepath_</accept_field>
  303 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  304 + <file>
  305 + <name/>
  306 + <filemask/>
  307 + <exclude_filemask/>
  308 + <file_required>N</file_required>
  309 + <include_subfolders>N</include_subfolders>
  310 + </file>
  311 + <fields>
  312 + <field>
  313 + <name>&#x7ebf;&#x8def;</name>
  314 + <type>String</type>
  315 + <length>-1</length>
  316 + <precision>-1</precision>
  317 + <trim_type>none</trim_type>
  318 + <repeat>N</repeat>
  319 + <format/>
  320 + <currency/>
  321 + <decimal/>
  322 + <group/>
  323 + </field>
  324 + <field>
  325 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  326 + <type>String</type>
  327 + <length>-1</length>
  328 + <precision>-1</precision>
  329 + <trim_type>none</trim_type>
  330 + <repeat>N</repeat>
  331 + <format/>
  332 + <currency/>
  333 + <decimal/>
  334 + <group/>
  335 + </field>
  336 + <field>
  337 + <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  338 + <type>String</type>
  339 + <length>-1</length>
  340 + <precision>-1</precision>
  341 + <trim_type>none</trim_type>
  342 + <repeat>N</repeat>
  343 + <format>&#x23;</format>
  344 + <currency/>
  345 + <decimal/>
  346 + <group/>
  347 + </field>
  348 + <field>
  349 + <name>&#x9a7e;&#x9a76;&#x5458;</name>
  350 + <type>String</type>
  351 + <length>-1</length>
  352 + <precision>-1</precision>
  353 + <trim_type>none</trim_type>
  354 + <repeat>N</repeat>
  355 + <format/>
  356 + <currency/>
  357 + <decimal/>
  358 + <group/>
  359 + </field>
  360 + <field>
  361 + <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  362 + <type>String</type>
  363 + <length>-1</length>
  364 + <precision>-1</precision>
  365 + <trim_type>none</trim_type>
  366 + <repeat>N</repeat>
  367 + <format>&#x23;</format>
  368 + <currency/>
  369 + <decimal/>
  370 + <group/>
  371 + </field>
  372 + <field>
  373 + <name>&#x552e;&#x7968;&#x5458;</name>
  374 + <type>String</type>
  375 + <length>-1</length>
  376 + <precision>-1</precision>
  377 + <trim_type>none</trim_type>
  378 + <repeat>N</repeat>
  379 + <format/>
  380 + <currency/>
  381 + <decimal/>
  382 + <group/>
  383 + </field>
  384 + <field>
  385 + <name>&#x8f66;&#x8f86;</name>
  386 + <type>String</type>
  387 + <length>-1</length>
  388 + <precision>-1</precision>
  389 + <trim_type>none</trim_type>
  390 + <repeat>N</repeat>
  391 + <format/>
  392 + <currency/>
  393 + <decimal/>
  394 + <group/>
  395 + </field>
  396 + </fields>
  397 + <sheets>
  398 + <sheet>
  399 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  400 + <startrow>0</startrow>
  401 + <startcol>0</startcol>
  402 + </sheet>
  403 + </sheets>
  404 + <strict_types>N</strict_types>
  405 + <error_ignored>N</error_ignored>
  406 + <error_line_skipped>N</error_line_skipped>
  407 + <bad_line_files_destination_directory/>
  408 + <bad_line_files_extension>warning</bad_line_files_extension>
  409 + <error_line_files_destination_directory/>
  410 + <error_line_files_extension>error</error_line_files_extension>
  411 + <line_number_files_destination_directory/>
  412 + <line_number_files_extension>line</line_number_files_extension>
  413 + <shortFileFieldName/>
  414 + <pathFieldName/>
  415 + <hiddenFieldName/>
  416 + <lastModificationTimeFieldName/>
  417 + <uriNameFieldName/>
  418 + <rootUriNameFieldName/>
  419 + <extensionFieldName/>
  420 + <sizeFieldName/>
  421 + <spreadsheet_type>JXL</spreadsheet_type>
  422 + <cluster_schema/>
  423 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  424 + <xloc>144</xloc>
  425 + <yloc>49</yloc>
  426 + <draw>Y</draw>
  427 + </GUI>
  428 + </step>
  429 +
  430 + <step>
  431 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  432 + <type>SelectValues</type>
  433 + <description/>
  434 + <distribute>Y</distribute>
  435 + <custom_distribution/>
  436 + <copies>1</copies>
  437 + <partitioning>
  438 + <method>none</method>
  439 + <schema_name/>
  440 + </partitioning>
  441 + <fields> <field> <name>&#x7ebf;&#x8def;</name>
  442 + <rename>xl</rename>
  443 + <length>-2</length>
  444 + <precision>-2</precision>
  445 + </field> <field> <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  446 + <rename>dbbm</rename>
  447 + <length>-2</length>
  448 + <precision>-2</precision>
  449 + </field> <field> <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  450 + <rename>jsy_no</rename>
  451 + <length>-2</length>
  452 + <precision>-2</precision>
  453 + </field> <field> <name>&#x9a7e;&#x9a76;&#x5458;</name>
  454 + <rename>jsy_name</rename>
  455 + <length>-2</length>
  456 + <precision>-2</precision>
  457 + </field> <field> <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  458 + <rename>spy_no</rename>
  459 + <length>-2</length>
  460 + <precision>-2</precision>
  461 + </field> <field> <name>&#x552e;&#x7968;&#x5458;</name>
  462 + <rename>spy_name</rename>
  463 + <length>-2</length>
  464 + <precision>-2</precision>
  465 + </field> <field> <name>&#x8f66;&#x8f86;</name>
  466 + <rename>cl</rename>
  467 + <length>-2</length>
  468 + <precision>-2</precision>
  469 + </field> <select_unspecified>N</select_unspecified>
  470 + </fields> <cluster_schema/>
  471 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  472 + <xloc>294</xloc>
  473 + <yloc>50</yloc>
  474 + <draw>Y</draw>
  475 + </GUI>
  476 + </step>
  477 +
  478 + <step>
  479 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</name>
  480 + <type>InsertUpdate</type>
  481 + <description/>
  482 + <distribute>Y</distribute>
  483 + <custom_distribution/>
  484 + <copies>1</copies>
  485 + <partitioning>
  486 + <method>none</method>
  487 + <schema_name/>
  488 + </partitioning>
  489 + <connection>bus_control_variable</connection>
  490 + <commit>100</commit>
  491 + <update_bypassed>N</update_bypassed>
  492 + <lookup>
  493 + <schema/>
  494 + <table>bsth_c_s_ecinfo</table>
  495 + <key>
  496 + <name>xlid</name>
  497 + <field>xl</field>
  498 + <condition>&#x3d;</condition>
  499 + <name2/>
  500 + </key>
  501 + <key>
  502 + <name>jsyid</name>
  503 + <field>jsy</field>
  504 + <condition>&#x3d;</condition>
  505 + <name2/>
  506 + </key>
  507 + <key>
  508 + <name>spyid</name>
  509 + <field>spy</field>
  510 + <condition>&#x3d;</condition>
  511 + <name2/>
  512 + </key>
  513 + <value>
  514 + <name>xl</name>
  515 + <rename>xlid</rename>
  516 + <update>Y</update>
  517 + </value>
  518 + <value>
  519 + <name>dbbm</name>
  520 + <rename>dbbm</rename>
  521 + <update>Y</update>
  522 + </value>
  523 + <value>
  524 + <name>jsy</name>
  525 + <rename>jsyid</rename>
  526 + <update>Y</update>
  527 + </value>
  528 + <value>
  529 + <name>spy</name>
  530 + <rename>spyid</rename>
  531 + <update>Y</update>
  532 + </value>
  533 + </lookup>
  534 + <cluster_schema/>
  535 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  536 + <xloc>721</xloc>
  537 + <yloc>181</yloc>
  538 + <draw>Y</draw>
  539 + </GUI>
  540 + </step>
  541 +
  542 + <step>
  543 + <name>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</name>
  544 + <type>DBLookup</type>
  545 + <description/>
  546 + <distribute>Y</distribute>
  547 + <custom_distribution/>
  548 + <copies>1</copies>
  549 + <partitioning>
  550 + <method>none</method>
  551 + <schema_name/>
  552 + </partitioning>
  553 + <connection>bus_control_variable</connection>
  554 + <cache>N</cache>
  555 + <cache_load_all>N</cache_load_all>
  556 + <cache_size>0</cache_size>
  557 + <lookup>
  558 + <schema/>
  559 + <table>bsth_c_personnel</table>
  560 + <orderby/>
  561 + <fail_on_multiple>N</fail_on_multiple>
  562 + <eat_row_on_failure>N</eat_row_on_failure>
  563 + <key>
  564 + <name>spy_no</name>
  565 + <field>job_code</field>
  566 + <condition>&#x3d;</condition>
  567 + <name2/>
  568 + </key>
  569 + <value>
  570 + <name>id</name>
  571 + <rename>spyid</rename>
  572 + <default/>
  573 + <type>Integer</type>
  574 + </value>
  575 + </lookup>
  576 + <cluster_schema/>
  577 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  578 + <xloc>720</xloc>
  579 + <yloc>51</yloc>
  580 + <draw>Y</draw>
  581 + </GUI>
  582 + </step>
  583 +
  584 + <step>
  585 + <name>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
  586 + <type>DBLookup</type>
  587 + <description/>
  588 + <distribute>Y</distribute>
  589 + <custom_distribution/>
  590 + <copies>1</copies>
  591 + <partitioning>
  592 + <method>none</method>
  593 + <schema_name/>
  594 + </partitioning>
  595 + <connection>bus_control_variable</connection>
  596 + <cache>N</cache>
  597 + <cache_load_all>N</cache_load_all>
  598 + <cache_size>0</cache_size>
  599 + <lookup>
  600 + <schema/>
  601 + <table>bsth_c_line</table>
  602 + <orderby/>
  603 + <fail_on_multiple>N</fail_on_multiple>
  604 + <eat_row_on_failure>N</eat_row_on_failure>
  605 + <key>
  606 + <name>xl</name>
  607 + <field>name</field>
  608 + <condition>&#x3d;</condition>
  609 + <name2/>
  610 + </key>
  611 + <value>
  612 + <name>id</name>
  613 + <rename>xlid</rename>
  614 + <default/>
  615 + <type>Integer</type>
  616 + </value>
  617 + </lookup>
  618 + <cluster_schema/>
  619 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  620 + <xloc>429</xloc>
  621 + <yloc>51</yloc>
  622 + <draw>Y</draw>
  623 + </GUI>
  624 + </step>
  625 +
  626 + <step>
  627 + <name>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</name>
  628 + <type>DBLookup</type>
  629 + <description/>
  630 + <distribute>Y</distribute>
  631 + <custom_distribution/>
  632 + <copies>1</copies>
  633 + <partitioning>
  634 + <method>none</method>
  635 + <schema_name/>
  636 + </partitioning>
  637 + <connection>bus_control_variable</connection>
  638 + <cache>N</cache>
  639 + <cache_load_all>N</cache_load_all>
  640 + <cache_size>0</cache_size>
  641 + <lookup>
  642 + <schema/>
  643 + <table>bsth_c_personnel</table>
  644 + <orderby/>
  645 + <fail_on_multiple>N</fail_on_multiple>
  646 + <eat_row_on_failure>N</eat_row_on_failure>
  647 + <key>
  648 + <name>jsy_no</name>
  649 + <field>job_code</field>
  650 + <condition>&#x3d;</condition>
  651 + <name2/>
  652 + </key>
  653 + <value>
  654 + <name>id</name>
  655 + <rename>jsyid</rename>
  656 + <default/>
  657 + <type>Integer</type>
  658 + </value>
  659 + </lookup>
  660 + <cluster_schema/>
  661 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  662 + <xloc>573</xloc>
  663 + <yloc>51</yloc>
  664 + <draw>Y</draw>
  665 + </GUI>
  666 + </step>
  667 +
  668 + <step>
  669 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  670 + <type>GetVariable</type>
  671 + <description/>
  672 + <distribute>Y</distribute>
  673 + <custom_distribution/>
  674 + <copies>1</copies>
  675 + <partitioning>
  676 + <method>none</method>
  677 + <schema_name/>
  678 + </partitioning>
  679 + <fields>
  680 + <field>
  681 + <name>filepath_</name>
  682 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  683 + <type>String</type>
  684 + <format/>
  685 + <currency/>
  686 + <decimal/>
  687 + <group/>
  688 + <length>-1</length>
  689 + <precision>-1</precision>
  690 + <trim_type>none</trim_type>
  691 + </field>
  692 + <field>
  693 + <name>erroroutputdir_</name>
  694 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  695 + <type>String</type>
  696 + <format/>
  697 + <currency/>
  698 + <decimal/>
  699 + <group/>
  700 + <length>-1</length>
  701 + <precision>-1</precision>
  702 + <trim_type>none</trim_type>
  703 + </field>
  704 + </fields>
  705 + <cluster_schema/>
  706 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  707 + <xloc>94</xloc>
  708 + <yloc>178</yloc>
  709 + <draw>Y</draw>
  710 + </GUI>
  711 + </step>
  712 +
  713 + <step>
  714 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
  715 + <type>ExcelOutput</type>
  716 + <description/>
  717 + <distribute>Y</distribute>
  718 + <custom_distribution/>
  719 + <copies>1</copies>
  720 + <partitioning>
  721 + <method>none</method>
  722 + <schema_name/>
  723 + </partitioning>
  724 + <header>Y</header>
  725 + <footer>N</footer>
  726 + <encoding>UTF-8</encoding>
  727 + <append>N</append>
  728 + <add_to_result_filenames>Y</add_to_result_filenames>
  729 + <file>
  730 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x4eba;&#x5458;&#x914d;&#x7f6e;_&#x9519;&#x8bef;</name>
  731 + <extention>xls</extention>
  732 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  733 + <create_parent_folder>N</create_parent_folder>
  734 + <split>N</split>
  735 + <add_date>N</add_date>
  736 + <add_time>N</add_time>
  737 + <SpecifyFormat>N</SpecifyFormat>
  738 + <date_time_format/>
  739 + <sheetname>Sheet1</sheetname>
  740 + <autosizecolums>N</autosizecolums>
  741 + <nullisblank>N</nullisblank>
  742 + <protect_sheet>N</protect_sheet>
  743 + <password>Encrypted </password>
  744 + <splitevery>0</splitevery>
  745 + <usetempfiles>N</usetempfiles>
  746 + <tempdirectory/>
  747 + </file>
  748 + <template>
  749 + <enabled>N</enabled>
  750 + <append>N</append>
  751 + <filename>template.xls</filename>
  752 + </template>
  753 + <fields>
  754 + <field>
  755 + <name>xl</name>
  756 + <type>String</type>
  757 + <format/>
  758 + </field>
  759 + <field>
  760 + <name>dbbm</name>
  761 + <type>String</type>
  762 + <format/>
  763 + </field>
  764 + <field>
  765 + <name>jsy_no</name>
  766 + <type>String</type>
  767 + <format/>
  768 + </field>
  769 + <field>
  770 + <name>jsy_name</name>
  771 + <type>String</type>
  772 + <format/>
  773 + </field>
  774 + <field>
  775 + <name>spy_no</name>
  776 + <type>String</type>
  777 + <format/>
  778 + </field>
  779 + <field>
  780 + <name>spy_name</name>
  781 + <type>String</type>
  782 + <format/>
  783 + </field>
  784 + <field>
  785 + <name>cl</name>
  786 + <type>String</type>
  787 + <format/>
  788 + </field>
  789 + <field>
  790 + <name>xlid</name>
  791 + <type>Integer</type>
  792 + <format/>
  793 + </field>
  794 + <field>
  795 + <name>jsyid</name>
  796 + <type>Integer</type>
  797 + <format/>
  798 + </field>
  799 + <field>
  800 + <name>spyid</name>
  801 + <type>Integer</type>
  802 + <format/>
  803 + </field>
  804 + <field>
  805 + <name>error_count</name>
  806 + <type>Integer</type>
  807 + <format/>
  808 + </field>
  809 + <field>
  810 + <name>error_desc</name>
  811 + <type>String</type>
  812 + <format/>
  813 + </field>
  814 + <field>
  815 + <name>error_column1</name>
  816 + <type>String</type>
  817 + <format/>
  818 + </field>
  819 + <field>
  820 + <name>error_column2</name>
  821 + <type>String</type>
  822 + <format/>
  823 + </field>
  824 + </fields>
  825 + <custom>
  826 + <header_font_name>arial</header_font_name>
  827 + <header_font_size>10</header_font_size>
  828 + <header_font_bold>N</header_font_bold>
  829 + <header_font_italic>N</header_font_italic>
  830 + <header_font_underline>no</header_font_underline>
  831 + <header_font_orientation>horizontal</header_font_orientation>
  832 + <header_font_color>black</header_font_color>
  833 + <header_background_color>none</header_background_color>
  834 + <header_row_height>255</header_row_height>
  835 + <header_alignment>left</header_alignment>
  836 + <header_image/>
  837 + <row_font_name>arial</row_font_name>
  838 + <row_font_size>10</row_font_size>
  839 + <row_font_color>black</row_font_color>
  840 + <row_background_color>none</row_background_color>
  841 + </custom>
  842 + <cluster_schema/>
  843 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  844 + <xloc>721</xloc>
  845 + <yloc>304</yloc>
  846 + <draw>Y</draw>
  847 + </GUI>
  848 + </step>
  849 +
  850 + <step_error_handling>
  851 + <error>
  852 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</source_step>
  853 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
  854 + <is_enabled>Y</is_enabled>
  855 + <nr_valuename>error_count</nr_valuename>
  856 + <descriptions_valuename>error_desc</descriptions_valuename>
  857 + <fields_valuename>error_column1</fields_valuename>
  858 + <codes_valuename>error_column2</codes_valuename>
  859 + <max_errors/>
  860 + <max_pct_errors/>
  861 + <min_pct_rows/>
  862 + </error>
  863 + </step_error_handling>
  864 + <slave-step-copy-partition-distribution>
  865 +</slave-step-copy-partition-distribution>
  866 + <slave_transformation>N</slave_transformation>
  867 +
  868 +</transformation>