Commit 1ad45fdde4a35b5eeba192b09b37d02889321717

Authored by 潘钊
2 parents c946a0a6 1ff7296b

Merge branch 'minhang' into qingpu

Showing 60 changed files with 5765 additions and 2795 deletions
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>
src/main/resources/datatools/ktrs/employeesDataInput.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;&#x5bfc;&#x51fa;&#x7684;&#x8868;&#xff0c;&#x6709;&#x4e9b;&#x5b57;&#x6bb5;&#x662f;&#x6ca1;&#x6709;&#x7684;&#xff0c;&#xa;&#x4eba;&#x5458;&#x7f16;&#x7801; &#x6682;&#x65f6;&#x6ca1;&#x6709;&#x7a7a;&#x7740;&#xa;&#x7167;&#x7247;&#x5730;&#x5740; &#x6682;&#x65f6;&#x6ca1;&#x6709;&#x7a7a;&#x7740;&#xa;&#x7ebf;&#x8def;&#x7f16;&#x53f7; &#x6682;&#x65f6;&#x6ca1;&#x6709;&#x7a7a;&#x7740;&#xa;&#x8054;&#x7cfb;&#x7535;&#x8bdd; &#x6682;&#x65f6;&#x6ca1;&#x6709;&#x7a7a;&#x7740;&#xa;&#xa;&#x5b57;&#x5178;&#xa;&#x6027;&#x522b;sexType &#x7537;&#x6027; 1&#xa;&#x6027;&#x522b;sexType &#x5973;&#x6027; 2&#xa;&#xa;&#x5de5;&#x79cd;gzType &#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x9a7e;&#x9a76;&#x5458; 1&#xa;&#x5de5;&#x79cd;gzType &#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x8c03;&#x5ea6;&#x5458; 2&#xa;&#x5de5;&#x79cd;gzType &#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x552e;&#x7968;&#x5458; 3&#xa;&#x5de5;&#x79cd;gzType &#x7ad9;&#x5458; 4&#xa;&#x5de5;&#x79cd;gzType &#x7ba1;&#x7406;&#x5458; 5&#xa;&#x5de5;&#x79cd;gzType &#x5b89;&#x68c0;&#x5458; 6&#xa;&#x5de5;&#x79cd;gzType &#x673a;&#x52a1; 7&#xa;&#x5de5;&#x79cd;gzType &#x5f15;&#x5bfc;&#x5458; 8&#xa;&#x5de5;&#x79cd;gzType &#x4e58;&#x52a1;&#x5458; 9&#xa;&#x5de5;&#x79cd;gzType &#x8f66;&#x961f;&#x957f;&#xff08;&#x7ebf;&#x957f;&#x3001;&#x4e3b; 10&#xa;&#x5de5;&#x79cd;gzType &#x516c;&#x53f8;&#x7ba1;&#x7406;&#x4eba;&#x5458; 11&#xa;&#x5de5;&#x79cd;gzType &#x8b66;&#x6d88;&#x4eba;&#x5458; 12&#xa;&#x5de5;&#x79cd;gzType &#x7968;&#x52a1;&#x4eba;&#x5458; 13&#xa;&#x5de5;&#x79cd;gzType &#x5176;&#x4ed6;&#x670d;&#x52a1;&#x4eba;&#x5458; 14</note> 88 + <note>&#x539f;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;&#x8868;&#xff0c;&#x6709;&#x4e9b;&#x5b57;&#x6bb5;&#x662f;&#x6ca1;&#x6709;&#x7684;&#xff0c;&#xa;&#x4eba;&#x5458;&#x7f16;&#x7801; &#x6682;&#x65f6;&#x6ca1;&#x6709;&#x7a7a;&#x7740;&#xa;&#x7167;&#x7247;&#x5730;&#x5740; &#x6682;&#x65f6;&#x6ca1;&#x6709;&#x7a7a;&#x7740;&#xa;&#x7ebf;&#x8def;&#x7f16;&#x53f7; &#x6682;&#x65f6;&#x6ca1;&#x6709;&#x7a7a;&#x7740;&#xa;&#x8054;&#x7cfb;&#x7535;&#x8bdd; &#x6682;&#x65f6;&#x6ca1;&#x6709;&#x7a7a;&#x7740;&#xa;&#xa;&#xa;&#x5b57;&#x5178;&#xa;&#x6027;&#x522b;sexType &#x7537;&#x6027; 1&#xa;&#x6027;&#x522b;sexType &#x5973;&#x6027; 2&#xa;&#xa;&#xa;&#x5de5;&#x79cd;gzType &#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x9a7e;&#x9a76;&#x5458; 1&#xa;&#x5de5;&#x79cd;gzType &#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x8c03;&#x5ea6;&#x5458; 2&#xa;&#x5de5;&#x79cd;gzType &#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x552e;&#x7968;&#x5458; 3&#xa;&#x5de5;&#x79cd;gzType &#x7ad9;&#x5458; 4&#xa;&#x5de5;&#x79cd;gzType &#x7ba1;&#x7406;&#x5458; 5&#xa;&#x5de5;&#x79cd;gzType &#x5b89;&#x68c0;&#x5458; 6&#xa;&#x5de5;&#x79cd;gzType &#x673a;&#x52a1; 7&#xa;&#x5de5;&#x79cd;gzType &#x5f15;&#x5bfc;&#x5458; 8&#xa;&#x5de5;&#x79cd;gzType &#x4e58;&#x52a1;&#x5458; 9&#xa;&#x5de5;&#x79cd;gzType &#x8f66;&#x961f;&#x957f;&#xff08;&#x7ebf;&#x957f;&#x3001;&#x4e3b; 10&#xa;&#x5de5;&#x79cd;gzType &#x516c;&#x53f8;&#x7ba1;&#x7406;&#x4eba;&#x5458; 11&#xa;&#x5de5;&#x79cd;gzType &#x8b66;&#x6d88;&#x4eba;&#x5458; 12&#xa;&#x5de5;&#x79cd;gzType &#x7968;&#x52a1;&#x4eba;&#x5458; 13&#xa;&#x5de5;&#x79cd;gzType &#x5176;&#x4ed6;&#x670d;&#x52a1;&#x4eba;&#x5458; 14</note>
89 <xloc>200</xloc> 89 <xloc>200</xloc>
90 <yloc>160</yloc> 90 <yloc>160</yloc>
91 <width>214</width> 91 <width>214</width>
92 - <heigth>394</heigth> 92 + <heigth>426</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>
@@ -276,8 +276,8 @@ @@ -276,8 +276,8 @@
276 <hop> <from>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;&#x67e5;&#x8be2;</from><to>&#x5de5;&#x79cd;</to><enabled>Y</enabled> </hop> 276 <hop> <from>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;&#x67e5;&#x8be2;</from><to>&#x5de5;&#x79cd;</to><enabled>Y</enabled> </hop>
277 </order> 277 </order>
278 <step> 278 <step>
279 - <name>&#x5de5;&#x79cd;</name>  
280 - <type>ValueMapper</type> 279 + <name>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;&#x67e5;&#x8be2;</name>
  280 + <type>DBLookup</type>
281 <description/> 281 <description/>
282 <distribute>Y</distribute> 282 <distribute>Y</distribute>
283 <custom_distribution/> 283 <custom_distribution/>
@@ -286,71 +286,33 @@ @@ -286,71 +286,33 @@
286 <method>none</method> 286 <method>none</method>
287 <schema_name/> 287 <schema_name/>
288 </partitioning> 288 </partitioning>
289 - <field_to_use>posts</field_to_use>  
290 - <target_field/>  
291 - <non_match_default/>  
292 - <fields>  
293 - <field>  
294 - <source_value>&#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x9a7e;&#x9a76;&#x5458;</source_value>  
295 - <target_value>1</target_value>  
296 - </field>  
297 - <field>  
298 - <source_value>&#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x8c03;&#x5ea6;&#x5458;</source_value>  
299 - <target_value>2</target_value>  
300 - </field>  
301 - <field>  
302 - <source_value>&#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x552e;&#x7968;&#x5458;</source_value>  
303 - <target_value>3</target_value>  
304 - </field>  
305 - <field>  
306 - <source_value>&#x7ad9;&#x5458;</source_value>  
307 - <target_value>4</target_value>  
308 - </field>  
309 - <field>  
310 - <source_value>&#x7ba1;&#x7406;&#x5458;</source_value>  
311 - <target_value>5</target_value>  
312 - </field>  
313 - <field>  
314 - <source_value>&#x5b89;&#x68c0;&#x5458;</source_value>  
315 - <target_value>6</target_value>  
316 - </field>  
317 - <field>  
318 - <source_value>&#x673a;&#x52a1;</source_value>  
319 - <target_value>7</target_value>  
320 - </field>  
321 - <field>  
322 - <source_value>&#x5f15;&#x5bfc;&#x5458;</source_value>  
323 - <target_value>8</target_value>  
324 - </field>  
325 - <field>  
326 - <source_value>&#x4e58;&#x52a1;&#x5458;</source_value>  
327 - <target_value>9</target_value>  
328 - </field>  
329 - <field>  
330 - <source_value>&#x8f66;&#x961f;&#x957f;&#xff08;&#x7ebf;&#x957f;&#x3001;&#x4e3b;</source_value>  
331 - <target_value>10</target_value>  
332 - </field>  
333 - <field>  
334 - <source_value>&#x516c;&#x53f8;&#x7ba1;&#x7406;&#x4eba;&#x5458;</source_value>  
335 - <target_value>11</target_value>  
336 - </field>  
337 - <field>  
338 - <source_value>&#x8b66;&#x6d88;&#x4eba;&#x5458;</source_value>  
339 - <target_value>12</target_value>  
340 - </field>  
341 - <field>  
342 - <source_value>&#x7968;&#x52a1;&#x4eba;&#x5458;</source_value>  
343 - <target_value>13</target_value>  
344 - </field>  
345 - <field>  
346 - <source_value>&#x5176;&#x4ed6;&#x670d;&#x52a1;&#x4eba;&#x5458;</source_value>  
347 - <target_value>14</target_value>  
348 - </field>  
349 - </fields> 289 + <connection>bus_control_variable</connection>
  290 + <cache>N</cache>
  291 + <cache_load_all>N</cache_load_all>
  292 + <cache_size>0</cache_size>
  293 + <lookup>
  294 + <schema/>
  295 + <table>bsth_c_business</table>
  296 + <orderby/>
  297 + <fail_on_multiple>N</fail_on_multiple>
  298 + <eat_row_on_failure>N</eat_row_on_failure>
  299 + <key>
  300 + <name>company</name>
  301 + <field>business_name</field>
  302 + <condition>&#x3d;</condition>
  303 + <name2/>
  304 + </key>
  305 + <value>
  306 + <name>business_code</name>
  307 + <rename>companyCode</rename>
  308 + <default/>
  309 + <type>String</type>
  310 + </value>
  311 + </lookup>
350 <cluster_schema/> 312 <cluster_schema/>
351 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 313 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
352 - <xloc>543</xloc>  
353 - <yloc>152</yloc> 314 + <xloc>544</xloc>
  315 + <yloc>59</yloc>
354 <draw>Y</draw> 316 <draw>Y</draw>
355 </GUI> 317 </GUI>
356 </step> 318 </step>
@@ -408,7 +370,7 @@ @@ -408,7 +370,7 @@
408 <precision>-1</precision> 370 <precision>-1</precision>
409 <trim_type>none</trim_type> 371 <trim_type>none</trim_type>
410 <repeat>N</repeat> 372 <repeat>N</repeat>
411 - <format/> 373 + <format>&#x23;</format>
412 <currency/> 374 <currency/>
413 <decimal/> 375 <decimal/>
414 <group/> 376 <group/>
@@ -588,6 +550,86 @@ @@ -588,6 +550,86 @@
588 </step> 550 </step>
589 551
590 <step> 552 <step>
  553 + <name>&#x5de5;&#x79cd;</name>
  554 + <type>ValueMapper</type>
  555 + <description/>
  556 + <distribute>Y</distribute>
  557 + <custom_distribution/>
  558 + <copies>1</copies>
  559 + <partitioning>
  560 + <method>none</method>
  561 + <schema_name/>
  562 + </partitioning>
  563 + <field_to_use>posts</field_to_use>
  564 + <target_field/>
  565 + <non_match_default/>
  566 + <fields>
  567 + <field>
  568 + <source_value>&#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x9a7e;&#x9a76;&#x5458;</source_value>
  569 + <target_value>1</target_value>
  570 + </field>
  571 + <field>
  572 + <source_value>&#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x8c03;&#x5ea6;&#x5458;</source_value>
  573 + <target_value>2</target_value>
  574 + </field>
  575 + <field>
  576 + <source_value>&#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x552e;&#x7968;&#x5458;</source_value>
  577 + <target_value>3</target_value>
  578 + </field>
  579 + <field>
  580 + <source_value>&#x7ad9;&#x5458;</source_value>
  581 + <target_value>4</target_value>
  582 + </field>
  583 + <field>
  584 + <source_value>&#x7ba1;&#x7406;&#x5458;</source_value>
  585 + <target_value>5</target_value>
  586 + </field>
  587 + <field>
  588 + <source_value>&#x5b89;&#x68c0;&#x5458;</source_value>
  589 + <target_value>6</target_value>
  590 + </field>
  591 + <field>
  592 + <source_value>&#x673a;&#x52a1;</source_value>
  593 + <target_value>7</target_value>
  594 + </field>
  595 + <field>
  596 + <source_value>&#x5f15;&#x5bfc;&#x5458;</source_value>
  597 + <target_value>8</target_value>
  598 + </field>
  599 + <field>
  600 + <source_value>&#x4e58;&#x52a1;&#x5458;</source_value>
  601 + <target_value>9</target_value>
  602 + </field>
  603 + <field>
  604 + <source_value>&#x8f66;&#x961f;&#x957f;&#xff08;&#x7ebf;&#x957f;&#x3001;&#x4e3b;</source_value>
  605 + <target_value>10</target_value>
  606 + </field>
  607 + <field>
  608 + <source_value>&#x516c;&#x53f8;&#x7ba1;&#x7406;&#x4eba;&#x5458;</source_value>
  609 + <target_value>11</target_value>
  610 + </field>
  611 + <field>
  612 + <source_value>&#x8b66;&#x6d88;&#x4eba;&#x5458;</source_value>
  613 + <target_value>12</target_value>
  614 + </field>
  615 + <field>
  616 + <source_value>&#x7968;&#x52a1;&#x4eba;&#x5458;</source_value>
  617 + <target_value>13</target_value>
  618 + </field>
  619 + <field>
  620 + <source_value>&#x5176;&#x4ed6;&#x670d;&#x52a1;&#x4eba;&#x5458;</source_value>
  621 + <target_value>14</target_value>
  622 + </field>
  623 + </fields>
  624 + <cluster_schema/>
  625 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  626 + <xloc>543</xloc>
  627 + <yloc>152</yloc>
  628 + <draw>Y</draw>
  629 + </GUI>
  630 + </step>
  631 +
  632 + <step>
591 <name>&#x6027;&#x522b;&#x4ee3;&#x7801;</name> 633 <name>&#x6027;&#x522b;&#x4ee3;&#x7801;</name>
592 <type>ValueMapper</type> 634 <type>ValueMapper</type>
593 <description/> 635 <description/>
@@ -889,48 +931,6 @@ @@ -889,48 +931,6 @@
889 </GUI> 931 </GUI>
890 </step> 932 </step>
891 933
892 - <step>  
893 - <name>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;&#x67e5;&#x8be2;</name>  
894 - <type>DBLookup</type>  
895 - <description/>  
896 - <distribute>Y</distribute>  
897 - <custom_distribution/>  
898 - <copies>1</copies>  
899 - <partitioning>  
900 - <method>none</method>  
901 - <schema_name/>  
902 - </partitioning>  
903 - <connection>bus_control_variable</connection>  
904 - <cache>N</cache>  
905 - <cache_load_all>N</cache_load_all>  
906 - <cache_size>0</cache_size>  
907 - <lookup>  
908 - <schema/>  
909 - <table>bsth_c_business</table>  
910 - <orderby/>  
911 - <fail_on_multiple>N</fail_on_multiple>  
912 - <eat_row_on_failure>N</eat_row_on_failure>  
913 - <key>  
914 - <name>company</name>  
915 - <field>business_name</field>  
916 - <condition>&#x3d;</condition>  
917 - <name2/>  
918 - </key>  
919 - <value>  
920 - <name>business_code</name>  
921 - <rename>companyCode</rename>  
922 - <default/>  
923 - <type>String</type>  
924 - </value>  
925 - </lookup>  
926 - <cluster_schema/>  
927 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
928 - <xloc>544</xloc>  
929 - <yloc>59</yloc>  
930 - <draw>Y</draw>  
931 - </GUI>  
932 - </step>  
933 -  
934 <step_error_handling> 934 <step_error_handling>
935 <error> 935 <error>
936 <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_personnel</source_step> 936 <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_personnel</source_step>
src/main/resources/datatools/ktrs/employeesDataOutput.ktr
@@ -75,7 +75,7 @@ @@ -75,7 +75,7 @@
75 <created_date>2016&#x2f;08&#x2f;09 09&#x3a;57&#x3a;38.471</created_date> 75 <created_date>2016&#x2f;08&#x2f;09 09&#x3a;57&#x3a;38.471</created_date>
76 <modified_user>-</modified_user> 76 <modified_user>-</modified_user>
77 <modified_date>2016&#x2f;08&#x2f;09 09&#x3a;57&#x3a;38.471</modified_date> 77 <modified_date>2016&#x2f;08&#x2f;09 09&#x3a;57&#x3a;38.471</modified_date>
78 - <key_for_session_key/> 78 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
79 <is_key_private>N</is_key_private> 79 <is_key_private>N</is_key_private>
80 </info> 80 </info>
81 <notepads> 81 <notepads>
@@ -85,7 +85,7 @@ @@ -85,7 +85,7 @@
85 <server>&#x24;&#x7b;v_db_ip&#x7d;</server> 85 <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
86 <type>MYSQL</type> 86 <type>MYSQL</type>
87 <access>Native</access> 87 <access>Native</access>
88 - <database>control</database> 88 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
89 <port>3306</port> 89 <port>3306</port>
90 <username>&#x24;&#x7b;v_db_uname&#x7d;</username> 90 <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
91 <password>&#x24;&#x7b;v_db_pwd&#x7d;</password> 91 <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
@@ -249,8 +249,8 @@ @@ -249,8 +249,8 @@
249 <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop> 249 <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
250 </order> 250 </order>
251 <step> 251 <step>
252 - <name>&#x8868;&#x8f93;&#x5165;</name>  
253 - <type>TableInput</type> 252 + <name>Excel&#x8f93;&#x51fa;</name>
  253 + <type>ExcelOutput</type>
254 <description/> 254 <description/>
255 <distribute>Y</distribute> 255 <distribute>Y</distribute>
256 <custom_distribution/> 256 <custom_distribution/>
@@ -259,23 +259,165 @@ @@ -259,23 +259,165 @@
259 <method>none</method> 259 <method>none</method>
260 <schema_name/> 260 <schema_name/>
261 </partitioning> 261 </partitioning>
262 - <connection>bus_control_variable</connection>  
263 - <sql>SELECT &#x2a; FROM bsth_c_personnel&#x3b;</sql>  
264 - <limit>0</limit>  
265 - <lookup/>  
266 - <execute_each_row>N</execute_each_row>  
267 - <variables_active>N</variables_active>  
268 - <lazy_conversion_active>N</lazy_conversion_active> 262 + <header>Y</header>
  263 + <footer>N</footer>
  264 + <encoding/>
  265 + <append>N</append>
  266 + <add_to_result_filenames>Y</add_to_result_filenames>
  267 + <file>
  268 + <name>&#x24;&#x7b;filepath&#x7d;</name>
  269 + <extention/>
  270 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  271 + <create_parent_folder>N</create_parent_folder>
  272 + <split>N</split>
  273 + <add_date>N</add_date>
  274 + <add_time>N</add_time>
  275 + <SpecifyFormat>N</SpecifyFormat>
  276 + <date_time_format>yyyyMMddHHmmss</date_time_format>
  277 + <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>
  278 + <autosizecolums>N</autosizecolums>
  279 + <nullisblank>N</nullisblank>
  280 + <protect_sheet>N</protect_sheet>
  281 + <password>Encrypted </password>
  282 + <splitevery>0</splitevery>
  283 + <usetempfiles>N</usetempfiles>
  284 + <tempdirectory/>
  285 + </file>
  286 + <template>
  287 + <enabled>N</enabled>
  288 + <append>N</append>
  289 + <filename>template.xls</filename>
  290 + </template>
  291 + <fields>
  292 + <field>
  293 + <name>&#x59d3;&#x540d;</name>
  294 + <type>String</type>
  295 + <format/>
  296 + </field>
  297 + <field>
  298 + <name>&#x5de5;&#x53f7;</name>
  299 + <type>String</type>
  300 + <format/>
  301 + </field>
  302 + <field>
  303 + <name>&#x6027;&#x522b;</name>
  304 + <type>String</type>
  305 + <format/>
  306 + </field>
  307 + <field>
  308 + <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
  309 + <type>String</type>
  310 + <format/>
  311 + </field>
  312 + <field>
  313 + <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</name>
  314 + <type>String</type>
  315 + <format/>
  316 + </field>
  317 + <field>
  318 + <name>&#x4e00;&#x5361;&#x901a;&#x53f7;</name>
  319 + <type>String</type>
  320 + <format/>
  321 + </field>
  322 + <field>
  323 + <name>&#x8fd0;&#x8425;&#x670d;&#x52a1;&#x8bc1;&#x53f7;</name>
  324 + <type>String</type>
  325 + <format/>
  326 + </field>
  327 + <field>
  328 + <name>&#x5c97;&#x4f4d;</name>
  329 + <type>String</type>
  330 + <format/>
  331 + </field>
  332 + <field>
  333 + <name>&#x5907;&#x6ce8;</name>
  334 + <type>String</type>
  335 + <format/>
  336 + </field>
  337 + </fields>
  338 + <custom>
  339 + <header_font_name>arial</header_font_name>
  340 + <header_font_size>10</header_font_size>
  341 + <header_font_bold>N</header_font_bold>
  342 + <header_font_italic>N</header_font_italic>
  343 + <header_font_underline>no</header_font_underline>
  344 + <header_font_orientation>horizontal</header_font_orientation>
  345 + <header_font_color>black</header_font_color>
  346 + <header_background_color>none</header_background_color>
  347 + <header_row_height>255</header_row_height>
  348 + <header_alignment>left</header_alignment>
  349 + <header_image/>
  350 + <row_font_name>arial</row_font_name>
  351 + <row_font_size>10</row_font_size>
  352 + <row_font_color>black</row_font_color>
  353 + <row_background_color>none</row_background_color>
  354 + </custom>
269 <cluster_schema/> 355 <cluster_schema/>
270 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 356 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
271 - <xloc>112</xloc>  
272 - <yloc>66</yloc> 357 + <xloc>695</xloc>
  358 + <yloc>180</yloc>
273 <draw>Y</draw> 359 <draw>Y</draw>
274 </GUI> 360 </GUI>
275 </step> 361 </step>
276 362
277 <step> 363 <step>
278 - <name>&#x6027;&#x522b;&#x6807;&#x8bc6;</name> 364 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  365 + <type>SelectValues</type>
  366 + <description/>
  367 + <distribute>Y</distribute>
  368 + <custom_distribution/>
  369 + <copies>1</copies>
  370 + <partitioning>
  371 + <method>none</method>
  372 + <schema_name/>
  373 + </partitioning>
  374 + <fields> <field> <name>personnel_name</name>
  375 + <rename>&#x59d3;&#x540d;</rename>
  376 + <length>-2</length>
  377 + <precision>-2</precision>
  378 + </field> <field> <name>job_code</name>
  379 + <rename>&#x5de5;&#x53f7;</rename>
  380 + <length>-2</length>
  381 + <precision>-2</precision>
  382 + </field> <field> <name>personnel_type_str</name>
  383 + <rename>&#x6027;&#x522b;</rename>
  384 + <length>-2</length>
  385 + <precision>-2</precision>
  386 + </field> <field> <name>company</name>
  387 + <rename>&#x6240;&#x5c5e;&#x516c;&#x53f8;</rename>
  388 + <length>-2</length>
  389 + <precision>-2</precision>
  390 + </field> <field> <name>branche_company</name>
  391 + <rename>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</rename>
  392 + <length>-2</length>
  393 + <precision>-2</precision>
  394 + </field> <field> <name>ic_card_code</name>
  395 + <rename>&#x4e00;&#x5361;&#x901a;&#x53f7;</rename>
  396 + <length>-2</length>
  397 + <precision>-2</precision>
  398 + </field> <field> <name>papers_code</name>
  399 + <rename>&#x8fd0;&#x8425;&#x670d;&#x52a1;&#x8bc1;&#x53f7;</rename>
  400 + <length>-2</length>
  401 + <precision>-2</precision>
  402 + </field> <field> <name>posts_str</name>
  403 + <rename>&#x5c97;&#x4f4d;</rename>
  404 + <length>-2</length>
  405 + <precision>-2</precision>
  406 + </field> <field> <name>descriptions</name>
  407 + <rename>&#x5907;&#x6ce8;</rename>
  408 + <length>-2</length>
  409 + <precision>-2</precision>
  410 + </field> <select_unspecified>N</select_unspecified>
  411 + </fields> <cluster_schema/>
  412 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  413 + <xloc>631</xloc>
  414 + <yloc>76</yloc>
  415 + <draw>Y</draw>
  416 + </GUI>
  417 + </step>
  418 +
  419 + <step>
  420 + <name>&#x5de5;&#x79cd;&#x6807;&#x8bc6;</name>
279 <type>Constant</type> 421 <type>Constant</type>
280 <description/> 422 <description/>
281 <distribute>Y</distribute> 423 <distribute>Y</distribute>
@@ -287,13 +429,13 @@ @@ -287,13 +429,13 @@
287 </partitioning> 429 </partitioning>
288 <fields> 430 <fields>
289 <field> 431 <field>
290 - <name>sexType</name> 432 + <name>gzType</name>
291 <type>String</type> 433 <type>String</type>
292 <format/> 434 <format/>
293 <currency/> 435 <currency/>
294 <decimal/> 436 <decimal/>
295 <group/> 437 <group/>
296 - <nullif>sexType</nullif> 438 + <nullif>gzType</nullif>
297 <length>-1</length> 439 <length>-1</length>
298 <precision>-1</precision> 440 <precision>-1</precision>
299 <set_empty_string>N</set_empty_string> 441 <set_empty_string>N</set_empty_string>
@@ -301,14 +443,14 @@ @@ -301,14 +443,14 @@
301 </fields> 443 </fields>
302 <cluster_schema/> 444 <cluster_schema/>
303 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 445 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
304 - <xloc>220</xloc>  
305 - <yloc>69</yloc> 446 + <xloc>418</xloc>
  447 + <yloc>73</yloc>
306 <draw>Y</draw> 448 <draw>Y</draw>
307 </GUI> 449 </GUI>
308 </step> 450 </step>
309 451
310 <step> 452 <step>
311 - <name>&#x6027;&#x522b;&#x6807;&#x8bc6;&#x67e5;&#x8be2;</name> 453 + <name>&#x5de5;&#x79cd;&#x6807;&#x8bc6;&#x67e5;&#x8be2;</name>
312 <type>DBLookup</type> 454 <type>DBLookup</type>
313 <description/> 455 <description/>
314 <distribute>Y</distribute> 456 <distribute>Y</distribute>
@@ -329,34 +471,34 @@ @@ -329,34 +471,34 @@
329 <fail_on_multiple>N</fail_on_multiple> 471 <fail_on_multiple>N</fail_on_multiple>
330 <eat_row_on_failure>N</eat_row_on_failure> 472 <eat_row_on_failure>N</eat_row_on_failure>
331 <key> 473 <key>
332 - <name>sexType</name> 474 + <name>gzType</name>
333 <field>d_group</field> 475 <field>d_group</field>
334 <condition>&#x3d;</condition> 476 <condition>&#x3d;</condition>
335 <name2/> 477 <name2/>
336 </key> 478 </key>
337 <key> 479 <key>
338 - <name>personnel_type</name> 480 + <name>posts</name>
339 <field>d_code</field> 481 <field>d_code</field>
340 <condition>&#x3d;</condition> 482 <condition>&#x3d;</condition>
341 <name2/> 483 <name2/>
342 </key> 484 </key>
343 <value> 485 <value>
344 <name>d_name</name> 486 <name>d_name</name>
345 - <rename>personnel_type_str</rename> 487 + <rename>posts_str</rename>
346 <default/> 488 <default/>
347 <type>String</type> 489 <type>String</type>
348 </value> 490 </value>
349 </lookup> 491 </lookup>
350 <cluster_schema/> 492 <cluster_schema/>
351 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 493 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
352 - <xloc>316</xloc>  
353 - <yloc>71</yloc> 494 + <xloc>509</xloc>
  495 + <yloc>75</yloc>
354 <draw>Y</draw> 496 <draw>Y</draw>
355 </GUI> 497 </GUI>
356 </step> 498 </step>
357 499
358 <step> 500 <step>
359 - <name>&#x5de5;&#x79cd;&#x6807;&#x8bc6;</name> 501 + <name>&#x6027;&#x522b;&#x6807;&#x8bc6;</name>
360 <type>Constant</type> 502 <type>Constant</type>
361 <description/> 503 <description/>
362 <distribute>Y</distribute> 504 <distribute>Y</distribute>
@@ -368,13 +510,13 @@ @@ -368,13 +510,13 @@
368 </partitioning> 510 </partitioning>
369 <fields> 511 <fields>
370 <field> 512 <field>
371 - <name>gzType</name> 513 + <name>sexType</name>
372 <type>String</type> 514 <type>String</type>
373 <format/> 515 <format/>
374 <currency/> 516 <currency/>
375 <decimal/> 517 <decimal/>
376 <group/> 518 <group/>
377 - <nullif>gzType</nullif> 519 + <nullif>sexType</nullif>
378 <length>-1</length> 520 <length>-1</length>
379 <precision>-1</precision> 521 <precision>-1</precision>
380 <set_empty_string>N</set_empty_string> 522 <set_empty_string>N</set_empty_string>
@@ -382,14 +524,14 @@ @@ -382,14 +524,14 @@
382 </fields> 524 </fields>
383 <cluster_schema/> 525 <cluster_schema/>
384 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 526 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
385 - <xloc>418</xloc>  
386 - <yloc>73</yloc> 527 + <xloc>220</xloc>
  528 + <yloc>69</yloc>
387 <draw>Y</draw> 529 <draw>Y</draw>
388 </GUI> 530 </GUI>
389 </step> 531 </step>
390 532
391 <step> 533 <step>
392 - <name>&#x5de5;&#x79cd;&#x6807;&#x8bc6;&#x67e5;&#x8be2;</name> 534 + <name>&#x6027;&#x522b;&#x6807;&#x8bc6;&#x67e5;&#x8be2;</name>
393 <type>DBLookup</type> 535 <type>DBLookup</type>
394 <description/> 536 <description/>
395 <distribute>Y</distribute> 537 <distribute>Y</distribute>
@@ -410,91 +552,35 @@ @@ -410,91 +552,35 @@
410 <fail_on_multiple>N</fail_on_multiple> 552 <fail_on_multiple>N</fail_on_multiple>
411 <eat_row_on_failure>N</eat_row_on_failure> 553 <eat_row_on_failure>N</eat_row_on_failure>
412 <key> 554 <key>
413 - <name>gzType</name> 555 + <name>sexType</name>
414 <field>d_group</field> 556 <field>d_group</field>
415 <condition>&#x3d;</condition> 557 <condition>&#x3d;</condition>
416 <name2/> 558 <name2/>
417 </key> 559 </key>
418 <key> 560 <key>
419 - <name>posts</name> 561 + <name>personnel_type</name>
420 <field>d_code</field> 562 <field>d_code</field>
421 <condition>&#x3d;</condition> 563 <condition>&#x3d;</condition>
422 <name2/> 564 <name2/>
423 </key> 565 </key>
424 <value> 566 <value>
425 <name>d_name</name> 567 <name>d_name</name>
426 - <rename>posts_str</rename> 568 + <rename>personnel_type_str</rename>
427 <default/> 569 <default/>
428 <type>String</type> 570 <type>String</type>
429 </value> 571 </value>
430 </lookup> 572 </lookup>
431 <cluster_schema/> 573 <cluster_schema/>
432 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 574 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
433 - <xloc>509</xloc>  
434 - <yloc>75</yloc>  
435 - <draw>Y</draw>  
436 - </GUI>  
437 - </step>  
438 -  
439 - <step>  
440 - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>  
441 - <type>SelectValues</type>  
442 - <description/>  
443 - <distribute>Y</distribute>  
444 - <custom_distribution/>  
445 - <copies>1</copies>  
446 - <partitioning>  
447 - <method>none</method>  
448 - <schema_name/>  
449 - </partitioning>  
450 - <fields> <field> <name>personnel_name</name>  
451 - <rename>&#x59d3;&#x540d;</rename>  
452 - <length>-2</length>  
453 - <precision>-2</precision>  
454 - </field> <field> <name>job_code</name>  
455 - <rename>&#x5de5;&#x53f7;</rename>  
456 - <length>-2</length>  
457 - <precision>-2</precision>  
458 - </field> <field> <name>personnel_type_str</name>  
459 - <rename>&#x6027;&#x522b;</rename>  
460 - <length>-2</length>  
461 - <precision>-2</precision>  
462 - </field> <field> <name>company</name>  
463 - <rename>&#x6240;&#x5c5e;&#x516c;&#x53f8;</rename>  
464 - <length>-2</length>  
465 - <precision>-2</precision>  
466 - </field> <field> <name>branche_company</name>  
467 - <rename>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</rename>  
468 - <length>-2</length>  
469 - <precision>-2</precision>  
470 - </field> <field> <name>ic_card_code</name>  
471 - <rename>&#x4e00;&#x5361;&#x901a;&#x53f7;</rename>  
472 - <length>-2</length>  
473 - <precision>-2</precision>  
474 - </field> <field> <name>papers_code</name>  
475 - <rename>&#x8fd0;&#x8425;&#x670d;&#x52a1;&#x8bc1;&#x53f7;</rename>  
476 - <length>-2</length>  
477 - <precision>-2</precision>  
478 - </field> <field> <name>posts_str</name>  
479 - <rename>&#x5c97;&#x4f4d;</rename>  
480 - <length>-2</length>  
481 - <precision>-2</precision>  
482 - </field> <field> <name>descriptions</name>  
483 - <rename>&#x5907;&#x6ce8;</rename>  
484 - <length>-2</length>  
485 - <precision>-2</precision>  
486 - </field> <select_unspecified>N</select_unspecified>  
487 - </fields> <cluster_schema/>  
488 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
489 - <xloc>631</xloc>  
490 - <yloc>76</yloc> 575 + <xloc>316</xloc>
  576 + <yloc>71</yloc>
491 <draw>Y</draw> 577 <draw>Y</draw>
492 </GUI> 578 </GUI>
493 </step> 579 </step>
494 580
495 <step> 581 <step>
496 - <name>Excel&#x8f93;&#x51fa;</name>  
497 - <type>ExcelOutput</type> 582 + <name>&#x8868;&#x8f93;&#x5165;</name>
  583 + <type>TableInput</type>
498 <description/> 584 <description/>
499 <distribute>Y</distribute> 585 <distribute>Y</distribute>
500 <custom_distribution/> 586 <custom_distribution/>
@@ -503,103 +589,17 @@ @@ -503,103 +589,17 @@
503 <method>none</method> 589 <method>none</method>
504 <schema_name/> 590 <schema_name/>
505 </partitioning> 591 </partitioning>
506 - <header>Y</header>  
507 - <footer>N</footer>  
508 - <encoding/>  
509 - <append>N</append>  
510 - <add_to_result_filenames>Y</add_to_result_filenames>  
511 - <file>  
512 - <name>&#x24;&#x7b;filepath&#x7d;</name>  
513 - <extention/>  
514 - <do_not_open_newfile_init>N</do_not_open_newfile_init>  
515 - <create_parent_folder>N</create_parent_folder>  
516 - <split>N</split>  
517 - <add_date>N</add_date>  
518 - <add_time>N</add_time>  
519 - <SpecifyFormat>N</SpecifyFormat>  
520 - <date_time_format>yyyyMMddHHmmss</date_time_format>  
521 - <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>  
522 - <autosizecolums>N</autosizecolums>  
523 - <nullisblank>N</nullisblank>  
524 - <protect_sheet>N</protect_sheet>  
525 - <password>Encrypted </password>  
526 - <splitevery>0</splitevery>  
527 - <usetempfiles>N</usetempfiles>  
528 - <tempdirectory/>  
529 - </file>  
530 - <template>  
531 - <enabled>N</enabled>  
532 - <append>N</append>  
533 - <filename>template.xls</filename>  
534 - </template>  
535 - <fields>  
536 - <field>  
537 - <name>&#x59d3;&#x540d;</name>  
538 - <type>String</type>  
539 - <format/>  
540 - </field>  
541 - <field>  
542 - <name>&#x5de5;&#x53f7;</name>  
543 - <type>String</type>  
544 - <format/>  
545 - </field>  
546 - <field>  
547 - <name>&#x6027;&#x522b;</name>  
548 - <type>String</type>  
549 - <format/>  
550 - </field>  
551 - <field>  
552 - <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>  
553 - <type>String</type>  
554 - <format/>  
555 - </field>  
556 - <field>  
557 - <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</name>  
558 - <type>String</type>  
559 - <format/>  
560 - </field>  
561 - <field>  
562 - <name>&#x4e00;&#x5361;&#x901a;&#x53f7;</name>  
563 - <type>String</type>  
564 - <format/>  
565 - </field>  
566 - <field>  
567 - <name>&#x8fd0;&#x8425;&#x670d;&#x52a1;&#x8bc1;&#x53f7;</name>  
568 - <type>String</type>  
569 - <format/>  
570 - </field>  
571 - <field>  
572 - <name>&#x5c97;&#x4f4d;</name>  
573 - <type>String</type>  
574 - <format/>  
575 - </field>  
576 - <field>  
577 - <name>&#x5907;&#x6ce8;</name>  
578 - <type>String</type>  
579 - <format/>  
580 - </field>  
581 - </fields>  
582 - <custom>  
583 - <header_font_name>arial</header_font_name>  
584 - <header_font_size>10</header_font_size>  
585 - <header_font_bold>N</header_font_bold>  
586 - <header_font_italic>N</header_font_italic>  
587 - <header_font_underline>no</header_font_underline>  
588 - <header_font_orientation>horizontal</header_font_orientation>  
589 - <header_font_color>black</header_font_color>  
590 - <header_background_color>none</header_background_color>  
591 - <header_row_height>255</header_row_height>  
592 - <header_alignment>left</header_alignment>  
593 - <header_image/>  
594 - <row_font_name>arial</row_font_name>  
595 - <row_font_size>10</row_font_size>  
596 - <row_font_color>black</row_font_color>  
597 - <row_background_color>none</row_background_color>  
598 - </custom> 592 + <connection>bus_control_variable</connection>
  593 + <sql>SELECT &#x2a; FROM bsth_c_personnel&#x3b;</sql>
  594 + <limit>0</limit>
  595 + <lookup/>
  596 + <execute_each_row>N</execute_each_row>
  597 + <variables_active>N</variables_active>
  598 + <lazy_conversion_active>N</lazy_conversion_active>
599 <cluster_schema/> 599 <cluster_schema/>
600 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 600 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
601 - <xloc>633</xloc>  
602 - <yloc>189</yloc> 601 + <xloc>112</xloc>
  602 + <yloc>66</yloc>
603 <draw>Y</draw> 603 <draw>Y</draw>
604 </GUI> 604 </GUI>
605 </step> 605 </step>
src/main/resources/datatools/ktrs/guideboardDataInput.ktr
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<transformation>  
3 - <info>  
4 - <name>guideboardDataInput</name>  
5 - <description>&#x8def;&#x724c;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>  
6 - <extended_description>&#x7ebf;&#x8def;&#x8fd0;&#x8425;&#x7684;&#x8def;&#x724c;&#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 17&#x3a;00&#x3a;01.094</created_date>  
81 - <modified_user>-</modified_user>  
82 - <modified_date>2016&#x2f;06&#x2f;29 17&#x3a;00&#x3a;01.094</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>&#x8def;&#x724c;&#x4fe1;&#x606f;&#x8f93;&#x5165;&#xff0c;&#x8def;&#x724c;&#x540d;&#x5b57;&#x662f;&#x4e0d;&#x80fd;&#x91cd;&#x590d;&#x7684;&#xa;&#x4e00;&#x822c;&#x6765;&#x8bf4;&#xff0c;&#x5e94;&#x8be5;&#x662f;&#x5bfc;&#x5165;&#x65f6;&#x523b;&#x6570;&#x636e;&#x81ea;&#x52a8;&#x751f;&#x6210;&#x7684;&#xff0c;&#x8fd9;&#x4e2a;&#x518d;&#x8bae;</note>  
89 - <xloc>218</xloc>  
90 - <yloc>141</yloc>  
91 - <width>298</width>  
92 - <heigth>42</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>&#x5b57;&#x6bb5;&#x6539;&#x540d;</from><to>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>  
271 - <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>  
272 - <hop> <from>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</to><enabled>Y</enabled> </hop>  
273 - <hop> <from>&#x8def;&#x724c;_85&#x8def;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x6539;&#x540d;</to><enabled>Y</enabled> </hop>  
274 - <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x8def;&#x724c;_85&#x8def;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>  
275 - </order>  
276 - <step>  
277 - <name>&#x5b57;&#x6bb5;&#x6539;&#x540d;</name>  
278 - <type>SelectValues</type>  
279 - <description/>  
280 - <distribute>Y</distribute>  
281 - <custom_distribution/>  
282 - <copies>1</copies>  
283 - <partitioning>  
284 - <method>none</method>  
285 - <schema_name/>  
286 - </partitioning>  
287 - <fields> <select_unspecified>N</select_unspecified>  
288 - <meta> <name>&#x7ebf;&#x8def;</name>  
289 - <rename>xl</rename>  
290 - <type>String</type>  
291 - <length>-2</length>  
292 - <precision>-2</precision>  
293 - <conversion_mask/>  
294 - <date_format_lenient>false</date_format_lenient>  
295 - <date_format_locale/>  
296 - <date_format_timezone/>  
297 - <lenient_string_to_number>false</lenient_string_to_number>  
298 - <encoding/>  
299 - <decimal_symbol/>  
300 - <grouping_symbol/>  
301 - <currency_symbol/>  
302 - <storage_type/>  
303 - </meta> <meta> <name>&#x8def;&#x724c;&#x7f16;&#x53f7;</name>  
304 - <rename>lpno</rename>  
305 - <type>Integer</type>  
306 - <length>-2</length>  
307 - <precision>-2</precision>  
308 - <conversion_mask/>  
309 - <date_format_lenient>false</date_format_lenient>  
310 - <date_format_locale/>  
311 - <date_format_timezone/>  
312 - <lenient_string_to_number>false</lenient_string_to_number>  
313 - <encoding/>  
314 - <decimal_symbol/>  
315 - <grouping_symbol/>  
316 - <currency_symbol/>  
317 - <storage_type/>  
318 - </meta> <meta> <name>&#x8def;&#x724c;&#x540d;&#x79f0;</name>  
319 - <rename>lpname</rename>  
320 - <type>String</type>  
321 - <length>-2</length>  
322 - <precision>-2</precision>  
323 - <conversion_mask/>  
324 - <date_format_lenient>false</date_format_lenient>  
325 - <date_format_locale/>  
326 - <date_format_timezone/>  
327 - <lenient_string_to_number>false</lenient_string_to_number>  
328 - <encoding/>  
329 - <decimal_symbol/>  
330 - <grouping_symbol/>  
331 - <currency_symbol/>  
332 - <storage_type/>  
333 - </meta> <meta> <name>&#x8def;&#x724c;&#x7c7b;&#x578b;</name>  
334 - <rename>lptype</rename>  
335 - <type>String</type>  
336 - <length>-2</length>  
337 - <precision>-2</precision>  
338 - <conversion_mask/>  
339 - <date_format_lenient>false</date_format_lenient>  
340 - <date_format_locale/>  
341 - <date_format_timezone/>  
342 - <lenient_string_to_number>false</lenient_string_to_number>  
343 - <encoding/>  
344 - <decimal_symbol/>  
345 - <grouping_symbol/>  
346 - <currency_symbol/>  
347 - <storage_type/>  
348 - </meta> </fields> <cluster_schema/>  
349 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
350 - <xloc>295</xloc>  
351 - <yloc>68</yloc>  
352 - <draw>Y</draw>  
353 - </GUI>  
354 - </step>  
355 -  
356 - <step>  
357 - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</name>  
358 - <type>InsertUpdate</type>  
359 - <description/>  
360 - <distribute>Y</distribute>  
361 - <custom_distribution/>  
362 - <copies>1</copies>  
363 - <partitioning>  
364 - <method>none</method>  
365 - <schema_name/>  
366 - </partitioning>  
367 - <connection>bus_control_variable</connection>  
368 - <commit>100</commit>  
369 - <update_bypassed>N</update_bypassed>  
370 - <lookup>  
371 - <schema/>  
372 - <table>bsth_c_s_gbi</table>  
373 - <key>  
374 - <name>xlid</name>  
375 - <field>xl</field>  
376 - <condition>&#x3d;</condition>  
377 - <name2/>  
378 - </key>  
379 - <key>  
380 - <name>lpname</name>  
381 - <field>lp_name</field>  
382 - <condition>&#x3d;</condition>  
383 - <name2/>  
384 - </key>  
385 - <value>  
386 - <name>xl</name>  
387 - <rename>xlid</rename>  
388 - <update>Y</update>  
389 - </value>  
390 - <value>  
391 - <name>lp_no</name>  
392 - <rename>lpno</rename>  
393 - <update>Y</update>  
394 - </value>  
395 - <value>  
396 - <name>lp_name</name>  
397 - <rename>lpname</rename>  
398 - <update>Y</update>  
399 - </value>  
400 - <value>  
401 - <name>lp_type</name>  
402 - <rename>lptype</rename>  
403 - <update>Y</update>  
404 - </value>  
405 - </lookup>  
406 - <cluster_schema/>  
407 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
408 - <xloc>576</xloc>  
409 - <yloc>69</yloc>  
410 - <draw>Y</draw>  
411 - </GUI>  
412 - </step>  
413 -  
414 - <step>  
415 - <name>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>  
416 - <type>DBLookup</type>  
417 - <description/>  
418 - <distribute>Y</distribute>  
419 - <custom_distribution/>  
420 - <copies>1</copies>  
421 - <partitioning>  
422 - <method>none</method>  
423 - <schema_name/>  
424 - </partitioning>  
425 - <connection>bus_control_variable</connection>  
426 - <cache>N</cache>  
427 - <cache_load_all>N</cache_load_all>  
428 - <cache_size>0</cache_size>  
429 - <lookup>  
430 - <schema/>  
431 - <table>bsth_c_line</table>  
432 - <orderby/>  
433 - <fail_on_multiple>N</fail_on_multiple>  
434 - <eat_row_on_failure>N</eat_row_on_failure>  
435 - <key>  
436 - <name>xl</name>  
437 - <field>name</field>  
438 - <condition>&#x3d;</condition>  
439 - <name2/>  
440 - </key>  
441 - <value>  
442 - <name>id</name>  
443 - <rename>xlid</rename>  
444 - <default/>  
445 - <type>Integer</type>  
446 - </value>  
447 - </lookup>  
448 - <cluster_schema/>  
449 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
450 - <xloc>428</xloc>  
451 - <yloc>69</yloc>  
452 - <draw>Y</draw>  
453 - </GUI>  
454 - </step>  
455 -  
456 - <step>  
457 - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>  
458 - <type>GetVariable</type>  
459 - <description/>  
460 - <distribute>Y</distribute>  
461 - <custom_distribution/>  
462 - <copies>1</copies>  
463 - <partitioning>  
464 - <method>none</method>  
465 - <schema_name/>  
466 - </partitioning>  
467 - <fields>  
468 - <field>  
469 - <name>filepath_</name>  
470 - <variable>&#x24;&#x7b;filepath&#x7d;</variable>  
471 - <type>String</type>  
472 - <format/>  
473 - <currency/>  
474 - <decimal/>  
475 - <group/>  
476 - <length>-1</length>  
477 - <precision>-1</precision>  
478 - <trim_type>none</trim_type>  
479 - </field>  
480 - <field>  
481 - <name>erroroutputdir_</name>  
482 - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>  
483 - <type>String</type>  
484 - <format/>  
485 - <currency/>  
486 - <decimal/>  
487 - <group/>  
488 - <length>-1</length>  
489 - <precision>-1</precision>  
490 - <trim_type>none</trim_type>  
491 - </field>  
492 - </fields>  
493 - <cluster_schema/>  
494 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
495 - <xloc>152</xloc>  
496 - <yloc>193</yloc>  
497 - <draw>Y</draw>  
498 - </GUI>  
499 - </step>  
500 -  
501 - <step>  
502 - <name>&#x8def;&#x724c;_85&#x8def;Excel&#x8f93;&#x5165;</name>  
503 - <type>ExcelInput</type>  
504 - <description/>  
505 - <distribute>Y</distribute>  
506 - <custom_distribution/>  
507 - <copies>1</copies>  
508 - <partitioning>  
509 - <method>none</method>  
510 - <schema_name/>  
511 - </partitioning>  
512 - <header>Y</header>  
513 - <noempty>Y</noempty>  
514 - <stoponempty>N</stoponempty>  
515 - <filefield/>  
516 - <sheetfield/>  
517 - <sheetrownumfield/>  
518 - <rownumfield/>  
519 - <sheetfield/>  
520 - <filefield/>  
521 - <limit>0</limit>  
522 - <encoding/>  
523 - <add_to_result_filenames>Y</add_to_result_filenames>  
524 - <accept_filenames>Y</accept_filenames>  
525 - <accept_field>filepath_</accept_field>  
526 - <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>  
527 - <file>  
528 - <name/>  
529 - <filemask/>  
530 - <exclude_filemask/>  
531 - <file_required>N</file_required>  
532 - <include_subfolders>N</include_subfolders>  
533 - </file>  
534 - <fields>  
535 - <field>  
536 - <name>&#x7ebf;&#x8def;</name>  
537 - <type>String</type>  
538 - <length>-1</length>  
539 - <precision>-1</precision>  
540 - <trim_type>none</trim_type>  
541 - <repeat>N</repeat>  
542 - <format/>  
543 - <currency/>  
544 - <decimal/>  
545 - <group/>  
546 - </field>  
547 - <field>  
548 - <name>&#x8def;&#x724c;&#x7f16;&#x53f7;</name>  
549 - <type>String</type>  
550 - <length>-1</length>  
551 - <precision>-1</precision>  
552 - <trim_type>none</trim_type>  
553 - <repeat>N</repeat>  
554 - <format>&#x23;</format>  
555 - <currency/>  
556 - <decimal/>  
557 - <group/>  
558 - </field>  
559 - <field>  
560 - <name>&#x8def;&#x724c;&#x540d;&#x79f0;</name>  
561 - <type>String</type>  
562 - <length>-1</length>  
563 - <precision>-1</precision>  
564 - <trim_type>none</trim_type>  
565 - <repeat>N</repeat>  
566 - <format>&#x23;</format>  
567 - <currency/>  
568 - <decimal/>  
569 - <group/>  
570 - </field>  
571 - <field>  
572 - <name>&#x8def;&#x724c;&#x7c7b;&#x578b;</name>  
573 - <type>String</type>  
574 - <length>-1</length>  
575 - <precision>-1</precision>  
576 - <trim_type>none</trim_type>  
577 - <repeat>N</repeat>  
578 - <format/>  
579 - <currency/>  
580 - <decimal/>  
581 - <group/>  
582 - </field>  
583 - </fields>  
584 - <sheets>  
585 - <sheet>  
586 - <name>&#x5de5;&#x4f5c;&#x8868;1</name>  
587 - <startrow>0</startrow>  
588 - <startcol>0</startcol>  
589 - </sheet>  
590 - </sheets>  
591 - <strict_types>N</strict_types>  
592 - <error_ignored>N</error_ignored>  
593 - <error_line_skipped>N</error_line_skipped>  
594 - <bad_line_files_destination_directory/>  
595 - <bad_line_files_extension>warning</bad_line_files_extension>  
596 - <error_line_files_destination_directory/>  
597 - <error_line_files_extension>error</error_line_files_extension>  
598 - <line_number_files_destination_directory/>  
599 - <line_number_files_extension>line</line_number_files_extension>  
600 - <shortFileFieldName/>  
601 - <pathFieldName/>  
602 - <hiddenFieldName/>  
603 - <lastModificationTimeFieldName/>  
604 - <uriNameFieldName/>  
605 - <rootUriNameFieldName/>  
606 - <extensionFieldName/>  
607 - <sizeFieldName/>  
608 - <spreadsheet_type>JXL</spreadsheet_type>  
609 - <cluster_schema/>  
610 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
611 - <xloc>150</xloc>  
612 - <yloc>68</yloc>  
613 - <draw>Y</draw>  
614 - </GUI>  
615 - </step>  
616 -  
617 - <step>  
618 - <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>  
619 - <type>ExcelOutput</type>  
620 - <description/>  
621 - <distribute>Y</distribute>  
622 - <custom_distribution/>  
623 - <copies>1</copies>  
624 - <partitioning>  
625 - <method>none</method>  
626 - <schema_name/>  
627 - </partitioning>  
628 - <header>Y</header>  
629 - <footer>N</footer>  
630 - <encoding>UTF-8</encoding>  
631 - <append>N</append>  
632 - <add_to_result_filenames>Y</add_to_result_filenames>  
633 - <file>  
634 - <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x8def;&#x724c;_&#x9519;&#x8bef;</name>  
635 - <extention>xls</extention>  
636 - <do_not_open_newfile_init>N</do_not_open_newfile_init>  
637 - <create_parent_folder>N</create_parent_folder>  
638 - <split>N</split>  
639 - <add_date>N</add_date>  
640 - <add_time>N</add_time>  
641 - <SpecifyFormat>N</SpecifyFormat>  
642 - <date_time_format/>  
643 - <sheetname>Sheet1</sheetname>  
644 - <autosizecolums>N</autosizecolums>  
645 - <nullisblank>N</nullisblank>  
646 - <protect_sheet>N</protect_sheet>  
647 - <password>Encrypted </password>  
648 - <splitevery>0</splitevery>  
649 - <usetempfiles>N</usetempfiles>  
650 - <tempdirectory/>  
651 - </file>  
652 - <template>  
653 - <enabled>N</enabled>  
654 - <append>N</append>  
655 - <filename>template.xls</filename>  
656 - </template>  
657 - <fields>  
658 - <field>  
659 - <name>xl</name>  
660 - <type>String</type>  
661 - <format/>  
662 - </field>  
663 - <field>  
664 - <name>lpno</name>  
665 - <type>Integer</type>  
666 - <format/>  
667 - </field>  
668 - <field>  
669 - <name>lpname</name>  
670 - <type>String</type>  
671 - <format/>  
672 - </field>  
673 - <field>  
674 - <name>lptype</name>  
675 - <type>String</type>  
676 - <format/>  
677 - </field>  
678 - <field>  
679 - <name>xlid</name>  
680 - <type>Integer</type>  
681 - <format/>  
682 - </field>  
683 - <field>  
684 - <name>error_count</name>  
685 - <type>Integer</type>  
686 - <format/>  
687 - </field>  
688 - <field>  
689 - <name>error_desc</name>  
690 - <type>String</type>  
691 - <format/>  
692 - </field>  
693 - <field>  
694 - <name>error_column1</name>  
695 - <type>String</type>  
696 - <format/>  
697 - </field>  
698 - <field>  
699 - <name>error_column2</name>  
700 - <type>String</type>  
701 - <format/>  
702 - </field>  
703 - </fields>  
704 - <custom>  
705 - <header_font_name>arial</header_font_name>  
706 - <header_font_size>10</header_font_size>  
707 - <header_font_bold>N</header_font_bold>  
708 - <header_font_italic>N</header_font_italic>  
709 - <header_font_underline>no</header_font_underline>  
710 - <header_font_orientation>horizontal</header_font_orientation>  
711 - <header_font_color>black</header_font_color>  
712 - <header_background_color>none</header_background_color>  
713 - <header_row_height>255</header_row_height>  
714 - <header_alignment>left</header_alignment>  
715 - <header_image/>  
716 - <row_font_name>arial</row_font_name>  
717 - <row_font_size>10</row_font_size>  
718 - <row_font_color>black</row_font_color>  
719 - <row_background_color>none</row_background_color>  
720 - </custom>  
721 - <cluster_schema/>  
722 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
723 - <xloc>576</xloc>  
724 - <yloc>192</yloc>  
725 - <draw>Y</draw>  
726 - </GUI>  
727 - </step>  
728 -  
729 - <step_error_handling>  
730 - <error>  
731 - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</source_step>  
732 - <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>  
733 - <is_enabled>Y</is_enabled>  
734 - <nr_valuename>error_count</nr_valuename>  
735 - <descriptions_valuename>error_desc</descriptions_valuename>  
736 - <fields_valuename>error_column1</fields_valuename>  
737 - <codes_valuename>error_column2</codes_valuename>  
738 - <max_errors/>  
739 - <max_pct_errors/>  
740 - <min_pct_rows/>  
741 - </error>  
742 - </step_error_handling>  
743 - <slave-step-copy-partition-distribution>  
744 -</slave-step-copy-partition-distribution>  
745 - <slave_transformation>N</slave_transformation>  
746 -  
747 -</transformation> 1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>guideboardDataInput</name>
  5 + <description>&#x8def;&#x724c;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x7ebf;&#x8def;&#x8fd0;&#x8425;&#x7684;&#x8def;&#x724c;&#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 17&#x3a;00&#x3a;01.094</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2016&#x2f;06&#x2f;29 17&#x3a;00&#x3a;01.094</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>&#x8def;&#x724c;&#x4fe1;&#x606f;&#x8f93;&#x5165;&#xff0c;&#x8def;&#x724c;&#x540d;&#x5b57;&#x662f;&#x4e0d;&#x80fd;&#x91cd;&#x590d;&#x7684;&#xa;&#x4e00;&#x822c;&#x6765;&#x8bf4;&#xff0c;&#x5e94;&#x8be5;&#x662f;&#x5bfc;&#x5165;&#x65f6;&#x523b;&#x6570;&#x636e;&#x81ea;&#x52a8;&#x751f;&#x6210;&#x7684;&#xff0c;&#x8fd9;&#x4e2a;&#x518d;&#x8bae;&#xa;&#xa;</note>
  89 + <xloc>218</xloc>
  90 + <yloc>141</yloc>
  91 + <width>298</width>
  92 + <heigth>74</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>&#x5b57;&#x6bb5;&#x6539;&#x540d;</from><to>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  271 + <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  272 + <hop> <from>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</to><enabled>Y</enabled> </hop>
  273 + <hop> <from>&#x8def;&#x724c;_85&#x8def;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x6539;&#x540d;</to><enabled>Y</enabled> </hop>
  274 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x8def;&#x724c;_85&#x8def;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  275 + </order>
  276 + <step>
  277 + <name>&#x5b57;&#x6bb5;&#x6539;&#x540d;</name>
  278 + <type>SelectValues</type>
  279 + <description/>
  280 + <distribute>Y</distribute>
  281 + <custom_distribution/>
  282 + <copies>1</copies>
  283 + <partitioning>
  284 + <method>none</method>
  285 + <schema_name/>
  286 + </partitioning>
  287 + <fields> <select_unspecified>N</select_unspecified>
  288 + <meta> <name>&#x7ebf;&#x8def;</name>
  289 + <rename>xl</rename>
  290 + <type>String</type>
  291 + <length>-2</length>
  292 + <precision>-2</precision>
  293 + <conversion_mask/>
  294 + <date_format_lenient>false</date_format_lenient>
  295 + <date_format_locale/>
  296 + <date_format_timezone/>
  297 + <lenient_string_to_number>false</lenient_string_to_number>
  298 + <encoding/>
  299 + <decimal_symbol/>
  300 + <grouping_symbol/>
  301 + <currency_symbol/>
  302 + <storage_type/>
  303 + </meta> <meta> <name>&#x8def;&#x724c;&#x7f16;&#x53f7;</name>
  304 + <rename>lpno</rename>
  305 + <type>Integer</type>
  306 + <length>-2</length>
  307 + <precision>-2</precision>
  308 + <conversion_mask/>
  309 + <date_format_lenient>false</date_format_lenient>
  310 + <date_format_locale/>
  311 + <date_format_timezone/>
  312 + <lenient_string_to_number>false</lenient_string_to_number>
  313 + <encoding/>
  314 + <decimal_symbol/>
  315 + <grouping_symbol/>
  316 + <currency_symbol/>
  317 + <storage_type/>
  318 + </meta> <meta> <name>&#x8def;&#x724c;&#x540d;&#x79f0;</name>
  319 + <rename>lpname</rename>
  320 + <type>String</type>
  321 + <length>-2</length>
  322 + <precision>-2</precision>
  323 + <conversion_mask/>
  324 + <date_format_lenient>false</date_format_lenient>
  325 + <date_format_locale/>
  326 + <date_format_timezone/>
  327 + <lenient_string_to_number>false</lenient_string_to_number>
  328 + <encoding/>
  329 + <decimal_symbol/>
  330 + <grouping_symbol/>
  331 + <currency_symbol/>
  332 + <storage_type/>
  333 + </meta> <meta> <name>&#x8def;&#x724c;&#x7c7b;&#x578b;</name>
  334 + <rename>lptype</rename>
  335 + <type>String</type>
  336 + <length>-2</length>
  337 + <precision>-2</precision>
  338 + <conversion_mask/>
  339 + <date_format_lenient>false</date_format_lenient>
  340 + <date_format_locale/>
  341 + <date_format_timezone/>
  342 + <lenient_string_to_number>false</lenient_string_to_number>
  343 + <encoding/>
  344 + <decimal_symbol/>
  345 + <grouping_symbol/>
  346 + <currency_symbol/>
  347 + <storage_type/>
  348 + </meta> </fields> <cluster_schema/>
  349 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  350 + <xloc>295</xloc>
  351 + <yloc>68</yloc>
  352 + <draw>Y</draw>
  353 + </GUI>
  354 + </step>
  355 +
  356 + <step>
  357 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</name>
  358 + <type>InsertUpdate</type>
  359 + <description/>
  360 + <distribute>Y</distribute>
  361 + <custom_distribution/>
  362 + <copies>1</copies>
  363 + <partitioning>
  364 + <method>none</method>
  365 + <schema_name/>
  366 + </partitioning>
  367 + <connection>bus_control_variable</connection>
  368 + <commit>100</commit>
  369 + <update_bypassed>N</update_bypassed>
  370 + <lookup>
  371 + <schema/>
  372 + <table>bsth_c_s_gbi</table>
  373 + <key>
  374 + <name>xlid</name>
  375 + <field>xl</field>
  376 + <condition>&#x3d;</condition>
  377 + <name2/>
  378 + </key>
  379 + <key>
  380 + <name>lpname</name>
  381 + <field>lp_name</field>
  382 + <condition>&#x3d;</condition>
  383 + <name2/>
  384 + </key>
  385 + <value>
  386 + <name>xl</name>
  387 + <rename>xlid</rename>
  388 + <update>Y</update>
  389 + </value>
  390 + <value>
  391 + <name>lp_no</name>
  392 + <rename>lpno</rename>
  393 + <update>Y</update>
  394 + </value>
  395 + <value>
  396 + <name>lp_name</name>
  397 + <rename>lpname</rename>
  398 + <update>Y</update>
  399 + </value>
  400 + <value>
  401 + <name>lp_type</name>
  402 + <rename>lptype</rename>
  403 + <update>Y</update>
  404 + </value>
  405 + </lookup>
  406 + <cluster_schema/>
  407 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  408 + <xloc>576</xloc>
  409 + <yloc>69</yloc>
  410 + <draw>Y</draw>
  411 + </GUI>
  412 + </step>
  413 +
  414 + <step>
  415 + <name>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
  416 + <type>DBLookup</type>
  417 + <description/>
  418 + <distribute>Y</distribute>
  419 + <custom_distribution/>
  420 + <copies>1</copies>
  421 + <partitioning>
  422 + <method>none</method>
  423 + <schema_name/>
  424 + </partitioning>
  425 + <connection>bus_control_variable</connection>
  426 + <cache>N</cache>
  427 + <cache_load_all>N</cache_load_all>
  428 + <cache_size>0</cache_size>
  429 + <lookup>
  430 + <schema/>
  431 + <table>bsth_c_line</table>
  432 + <orderby/>
  433 + <fail_on_multiple>N</fail_on_multiple>
  434 + <eat_row_on_failure>N</eat_row_on_failure>
  435 + <key>
  436 + <name>xl</name>
  437 + <field>name</field>
  438 + <condition>&#x3d;</condition>
  439 + <name2/>
  440 + </key>
  441 + <value>
  442 + <name>id</name>
  443 + <rename>xlid</rename>
  444 + <default/>
  445 + <type>Integer</type>
  446 + </value>
  447 + </lookup>
  448 + <cluster_schema/>
  449 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  450 + <xloc>428</xloc>
  451 + <yloc>69</yloc>
  452 + <draw>Y</draw>
  453 + </GUI>
  454 + </step>
  455 +
  456 + <step>
  457 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  458 + <type>GetVariable</type>
  459 + <description/>
  460 + <distribute>Y</distribute>
  461 + <custom_distribution/>
  462 + <copies>1</copies>
  463 + <partitioning>
  464 + <method>none</method>
  465 + <schema_name/>
  466 + </partitioning>
  467 + <fields>
  468 + <field>
  469 + <name>filepath_</name>
  470 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  471 + <type>String</type>
  472 + <format/>
  473 + <currency/>
  474 + <decimal/>
  475 + <group/>
  476 + <length>-1</length>
  477 + <precision>-1</precision>
  478 + <trim_type>none</trim_type>
  479 + </field>
  480 + <field>
  481 + <name>erroroutputdir_</name>
  482 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  483 + <type>String</type>
  484 + <format/>
  485 + <currency/>
  486 + <decimal/>
  487 + <group/>
  488 + <length>-1</length>
  489 + <precision>-1</precision>
  490 + <trim_type>none</trim_type>
  491 + </field>
  492 + </fields>
  493 + <cluster_schema/>
  494 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  495 + <xloc>152</xloc>
  496 + <yloc>193</yloc>
  497 + <draw>Y</draw>
  498 + </GUI>
  499 + </step>
  500 +
  501 + <step>
  502 + <name>&#x8def;&#x724c;_85&#x8def;Excel&#x8f93;&#x5165;</name>
  503 + <type>ExcelInput</type>
  504 + <description/>
  505 + <distribute>Y</distribute>
  506 + <custom_distribution/>
  507 + <copies>1</copies>
  508 + <partitioning>
  509 + <method>none</method>
  510 + <schema_name/>
  511 + </partitioning>
  512 + <header>Y</header>
  513 + <noempty>Y</noempty>
  514 + <stoponempty>N</stoponempty>
  515 + <filefield/>
  516 + <sheetfield/>
  517 + <sheetrownumfield/>
  518 + <rownumfield/>
  519 + <sheetfield/>
  520 + <filefield/>
  521 + <limit>0</limit>
  522 + <encoding/>
  523 + <add_to_result_filenames>Y</add_to_result_filenames>
  524 + <accept_filenames>Y</accept_filenames>
  525 + <accept_field>filepath_</accept_field>
  526 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  527 + <file>
  528 + <name/>
  529 + <filemask/>
  530 + <exclude_filemask/>
  531 + <file_required>N</file_required>
  532 + <include_subfolders>N</include_subfolders>
  533 + </file>
  534 + <fields>
  535 + <field>
  536 + <name>&#x7ebf;&#x8def;</name>
  537 + <type>String</type>
  538 + <length>-1</length>
  539 + <precision>-1</precision>
  540 + <trim_type>none</trim_type>
  541 + <repeat>N</repeat>
  542 + <format/>
  543 + <currency/>
  544 + <decimal/>
  545 + <group/>
  546 + </field>
  547 + <field>
  548 + <name>&#x8def;&#x724c;&#x7f16;&#x53f7;</name>
  549 + <type>String</type>
  550 + <length>-1</length>
  551 + <precision>-1</precision>
  552 + <trim_type>none</trim_type>
  553 + <repeat>N</repeat>
  554 + <format>&#x23;</format>
  555 + <currency/>
  556 + <decimal/>
  557 + <group/>
  558 + </field>
  559 + <field>
  560 + <name>&#x8def;&#x724c;&#x540d;&#x79f0;</name>
  561 + <type>String</type>
  562 + <length>-1</length>
  563 + <precision>-1</precision>
  564 + <trim_type>none</trim_type>
  565 + <repeat>N</repeat>
  566 + <format>&#x23;</format>
  567 + <currency/>
  568 + <decimal/>
  569 + <group/>
  570 + </field>
  571 + <field>
  572 + <name>&#x8def;&#x724c;&#x7c7b;&#x578b;</name>
  573 + <type>String</type>
  574 + <length>-1</length>
  575 + <precision>-1</precision>
  576 + <trim_type>none</trim_type>
  577 + <repeat>N</repeat>
  578 + <format/>
  579 + <currency/>
  580 + <decimal/>
  581 + <group/>
  582 + </field>
  583 + </fields>
  584 + <sheets>
  585 + <sheet>
  586 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  587 + <startrow>0</startrow>
  588 + <startcol>0</startcol>
  589 + </sheet>
  590 + </sheets>
  591 + <strict_types>N</strict_types>
  592 + <error_ignored>N</error_ignored>
  593 + <error_line_skipped>N</error_line_skipped>
  594 + <bad_line_files_destination_directory/>
  595 + <bad_line_files_extension>warning</bad_line_files_extension>
  596 + <error_line_files_destination_directory/>
  597 + <error_line_files_extension>error</error_line_files_extension>
  598 + <line_number_files_destination_directory/>
  599 + <line_number_files_extension>line</line_number_files_extension>
  600 + <shortFileFieldName/>
  601 + <pathFieldName/>
  602 + <hiddenFieldName/>
  603 + <lastModificationTimeFieldName/>
  604 + <uriNameFieldName/>
  605 + <rootUriNameFieldName/>
  606 + <extensionFieldName/>
  607 + <sizeFieldName/>
  608 + <spreadsheet_type>JXL</spreadsheet_type>
  609 + <cluster_schema/>
  610 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  611 + <xloc>150</xloc>
  612 + <yloc>68</yloc>
  613 + <draw>Y</draw>
  614 + </GUI>
  615 + </step>
  616 +
  617 + <step>
  618 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
  619 + <type>ExcelOutput</type>
  620 + <description/>
  621 + <distribute>Y</distribute>
  622 + <custom_distribution/>
  623 + <copies>1</copies>
  624 + <partitioning>
  625 + <method>none</method>
  626 + <schema_name/>
  627 + </partitioning>
  628 + <header>Y</header>
  629 + <footer>N</footer>
  630 + <encoding>UTF-8</encoding>
  631 + <append>N</append>
  632 + <add_to_result_filenames>Y</add_to_result_filenames>
  633 + <file>
  634 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x8def;&#x724c;_&#x9519;&#x8bef;</name>
  635 + <extention>xls</extention>
  636 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  637 + <create_parent_folder>N</create_parent_folder>
  638 + <split>N</split>
  639 + <add_date>N</add_date>
  640 + <add_time>N</add_time>
  641 + <SpecifyFormat>N</SpecifyFormat>
  642 + <date_time_format/>
  643 + <sheetname>Sheet1</sheetname>
  644 + <autosizecolums>N</autosizecolums>
  645 + <nullisblank>N</nullisblank>
  646 + <protect_sheet>N</protect_sheet>
  647 + <password>Encrypted </password>
  648 + <splitevery>0</splitevery>
  649 + <usetempfiles>N</usetempfiles>
  650 + <tempdirectory/>
  651 + </file>
  652 + <template>
  653 + <enabled>N</enabled>
  654 + <append>N</append>
  655 + <filename>template.xls</filename>
  656 + </template>
  657 + <fields>
  658 + <field>
  659 + <name>xl</name>
  660 + <type>String</type>
  661 + <format/>
  662 + </field>
  663 + <field>
  664 + <name>lpno</name>
  665 + <type>Integer</type>
  666 + <format/>
  667 + </field>
  668 + <field>
  669 + <name>lpname</name>
  670 + <type>String</type>
  671 + <format/>
  672 + </field>
  673 + <field>
  674 + <name>lptype</name>
  675 + <type>String</type>
  676 + <format/>
  677 + </field>
  678 + <field>
  679 + <name>xlid</name>
  680 + <type>Integer</type>
  681 + <format/>
  682 + </field>
  683 + <field>
  684 + <name>error_count</name>
  685 + <type>Integer</type>
  686 + <format/>
  687 + </field>
  688 + <field>
  689 + <name>error_desc</name>
  690 + <type>String</type>
  691 + <format/>
  692 + </field>
  693 + <field>
  694 + <name>error_column1</name>
  695 + <type>String</type>
  696 + <format/>
  697 + </field>
  698 + <field>
  699 + <name>error_column2</name>
  700 + <type>String</type>
  701 + <format/>
  702 + </field>
  703 + </fields>
  704 + <custom>
  705 + <header_font_name>arial</header_font_name>
  706 + <header_font_size>10</header_font_size>
  707 + <header_font_bold>N</header_font_bold>
  708 + <header_font_italic>N</header_font_italic>
  709 + <header_font_underline>no</header_font_underline>
  710 + <header_font_orientation>horizontal</header_font_orientation>
  711 + <header_font_color>black</header_font_color>
  712 + <header_background_color>none</header_background_color>
  713 + <header_row_height>255</header_row_height>
  714 + <header_alignment>left</header_alignment>
  715 + <header_image/>
  716 + <row_font_name>arial</row_font_name>
  717 + <row_font_size>10</row_font_size>
  718 + <row_font_color>black</row_font_color>
  719 + <row_background_color>none</row_background_color>
  720 + </custom>
  721 + <cluster_schema/>
  722 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  723 + <xloc>576</xloc>
  724 + <yloc>192</yloc>
  725 + <draw>Y</draw>
  726 + </GUI>
  727 + </step>
  728 +
  729 + <step_error_handling>
  730 + <error>
  731 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</source_step>
  732 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
  733 + <is_enabled>Y</is_enabled>
  734 + <nr_valuename>error_count</nr_valuename>
  735 + <descriptions_valuename>error_desc</descriptions_valuename>
  736 + <fields_valuename>error_column1</fields_valuename>
  737 + <codes_valuename>error_column2</codes_valuename>
  738 + <max_errors/>
  739 + <max_pct_errors/>
  740 + <min_pct_rows/>
  741 + </error>
  742 + </step_error_handling>
  743 + <slave-step-copy-partition-distribution>
  744 +</slave-step-copy-partition-distribution>
  745 + <slave_transformation>N</slave_transformation>
  746 +
  747 +</transformation>
src/main/resources/datatools/ktrs/ttinfoDataInput.ktr
@@ -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>
@@ -685,8 +685,8 @@ @@ -685,8 +685,8 @@
685 </fields> 685 </fields>
686 <cluster_schema/> 686 <cluster_schema/>
687 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 687 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
688 - <xloc>162</xloc>  
689 - <yloc>191</yloc> 688 + <xloc>161</xloc>
  689 + <yloc>159</yloc>
690 <draw>Y</draw> 690 <draw>Y</draw>
691 </GUI> 691 </GUI>
692 </step> 692 </step>
src/main/resources/datatools/ktrs/ttinfodetailDataInput.ktr
@@ -96,11 +96,11 @@ @@ -96,11 +96,11 @@
96 <drawshadow>Y</drawshadow> 96 <drawshadow>Y</drawshadow>
97 </notepad> 97 </notepad>
98 <notepad> 98 <notepad>
99 - <note>&#x56e0;&#x4e3a;&#x65f6;&#x523b;&#x8868;&#x8f93;&#x5165;&#x683c;&#x5f0f;&#x4e0d;&#x786e;&#x5b9a;&#x6027;&#xff0c;&#x4e3b;&#x8981;&#x56e0;&#x4e3a;&#x8868;&#x7ed3;&#x6784;&#x662f;&#x53cd;&#x8303;&#x5f0f;&#x5316;&#x7684;&#xff0c;&#xa;&#x6240;&#x4ee5;&#x9700;&#x8981;&#x5916;&#x90e8;&#x52a8;&#x6001;&#x6307;&#x5b9a;&#x613f;&#x6570;&#x636e;&#xff0c;&#x5934;&#x4e09;&#x4e2a;step&#x52a8;&#x6001;&#x6307;&#x5b9a;&#x613f;&#x6570;&#x636e;&#xa;</note>  
100 - <xloc>64</xloc>  
101 - <yloc>224</yloc> 99 + <note>&#x56e0;&#x4e3a;&#x65f6;&#x523b;&#x8868;&#x8f93;&#x5165;&#x683c;&#x5f0f;&#x4e0d;&#x786e;&#x5b9a;&#x6027;&#xff0c;&#x4e3b;&#x8981;&#x56e0;&#x4e3a;&#x8868;&#x7ed3;&#x6784;&#x662f;&#x53cd;&#x8303;&#x5f0f;&#x5316;&#x7684;&#xff0c;&#xa;&#x6240;&#x4ee5;&#x9700;&#x8981;&#x5916;&#x90e8;&#x52a8;&#x6001;&#x6307;&#x5b9a;&#x613f;&#x6570;&#x636e;&#xff0c;&#x5934;&#x4e09;&#x4e2a;step&#x52a8;&#x6001;&#x6307;&#x5b9a;&#x613f;&#x6570;&#x636e;&#xa;&#xa;</note>
  100 + <xloc>79</xloc>
  101 + <yloc>206</yloc>
102 <width>346</width> 102 <width>346</width>
103 - <heigth>58</heigth> 103 + <heigth>74</heigth>
104 <fontname>YaHei Consolas Hybrid</fontname> 104 <fontname>YaHei Consolas Hybrid</fontname>
105 <fontsize>12</fontsize> 105 <fontsize>12</fontsize>
106 <fontbold>N</fontbold> 106 <fontbold>N</fontbold>
@@ -122,7 +122,7 @@ @@ -122,7 +122,7 @@
122 <server>&#x24;&#x7b;v_db_ip&#x7d;</server> 122 <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
123 <type>MYSQL</type> 123 <type>MYSQL</type>
124 <access>Native</access> 124 <access>Native</access>
125 - <database>control</database> 125 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
126 <port>3306</port> 126 <port>3306</port>
127 <username>&#x24;&#x7b;v_db_uname&#x7d;</username> 127 <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
128 <password>&#x24;&#x7b;v_db_pwd&#x7d;</password> 128 <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
src/main/resources/datatools/ktrs/ttinfodetailMetaData.ktr
@@ -120,7 +120,7 @@ @@ -120,7 +120,7 @@
120 <server>&#x24;&#x7b;v_db_ip&#x7d;</server> 120 <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
121 <type>MYSQL</type> 121 <type>MYSQL</type>
122 <access>Native</access> 122 <access>Native</access>
123 - <database>control</database> 123 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
124 <port>3306</port> 124 <port>3306</port>
125 <username>&#x24;&#x7b;v_db_uname&#x7d;</username> 125 <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
126 <password>&#x24;&#x7b;v_db_pwd&#x7d;</password> 126 <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
@@ -398,41 +398,41 @@ @@ -398,41 +398,41 @@
398 <target_detail>Y</target_detail> 398 <target_detail>Y</target_detail>
399 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step> 399 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
400 <source_field>fieldName</source_field> 400 <source_field>fieldName</source_field>
  401 + </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
  402 + <target_attribute_key>VALUE</target_attribute_key>
  403 + <target_detail>Y</target_detail>
  404 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
  405 + <source_field>fieldName</source_field>
401 </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name> 406 </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
402 <target_attribute_key>TRIM_TYPE</target_attribute_key> 407 <target_attribute_key>TRIM_TYPE</target_attribute_key>
403 <target_detail>Y</target_detail> 408 <target_detail>Y</target_detail>
404 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step> 409 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
405 <source_field>trim_type</source_field> 410 <source_field>trim_type</source_field>
406 </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name> 411 </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
407 - <target_attribute_key>VALUE</target_attribute_key> 412 + <target_attribute_key>NORMALISED</target_attribute_key>
408 <target_detail>Y</target_detail> 413 <target_detail>Y</target_detail>
409 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step> 414 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
410 - <source_field>fieldName</source_field> 415 + <source_field>value</source_field>
411 </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name> 416 </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
412 <target_attribute_key>REPEAT</target_attribute_key> 417 <target_attribute_key>REPEAT</target_attribute_key>
413 <target_detail>Y</target_detail> 418 <target_detail>Y</target_detail>
414 <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step> 419 <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
415 <source_field>repeat</source_field> 420 <source_field>repeat</source_field>
416 - </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>  
417 - <target_attribute_key>NORMALISED</target_attribute_key>  
418 - <target_detail>Y</target_detail>  
419 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>  
420 - <source_field>value</source_field>  
421 </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name> 421 </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
422 <target_attribute_key>NORMALISED</target_attribute_key> 422 <target_attribute_key>NORMALISED</target_attribute_key>
423 <target_detail>Y</target_detail> 423 <target_detail>Y</target_detail>
424 <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step> 424 <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
425 <source_field>valuefield</source_field> 425 <source_field>valuefield</source_field>
426 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
427 - <target_attribute_key>FORMAT</target_attribute_key>  
428 - <target_detail>Y</target_detail>  
429 - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>  
430 - <source_field>format</source_field>  
431 </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name> 426 </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
432 <target_attribute_key>VALUE</target_attribute_key> 427 <target_attribute_key>VALUE</target_attribute_key>
433 <target_detail>Y</target_detail> 428 <target_detail>Y</target_detail>
434 <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step> 429 <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
435 <source_field>nfieldname</source_field> 430 <source_field>nfieldname</source_field>
  431 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  432 + <target_attribute_key>FORMAT</target_attribute_key>
  433 + <target_detail>Y</target_detail>
  434 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  435 + <source_field>format</source_field>
436 </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name> 436 </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
437 <target_attribute_key>PRECISION</target_attribute_key> 437 <target_attribute_key>PRECISION</target_attribute_key>
438 <target_detail>Y</target_detail> 438 <target_detail>Y</target_detail>
@@ -1006,7 +1006,7 @@ @@ -1006,7 +1006,7 @@
1006 <cluster_schema/> 1006 <cluster_schema/>
1007 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1007 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1008 <xloc>73</xloc> 1008 <xloc>73</xloc>
1009 - <yloc>50</yloc> 1009 + <yloc>62</yloc>
1010 <draw>Y</draw> 1010 <draw>Y</draw>
1011 </GUI> 1011 </GUI>
1012 </step> 1012 </step>
src/main/resources/datatools/ktrs/ttinfodetailoutputforedit.ktr
@@ -95,7 +95,7 @@ @@ -95,7 +95,7 @@
95 <server>&#x24;&#x7b;v_db_ip&#x7d;</server> 95 <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
96 <type>MYSQL</type> 96 <type>MYSQL</type>
97 <access>Native</access> 97 <access>Native</access>
98 - <database>control</database> 98 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
99 <port>3306</port> 99 <port>3306</port>
100 <username>&#x24;&#x7b;v_db_uname&#x7d;</username> 100 <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
101 <password>&#x24;&#x7b;v_db_pwd&#x7d;</password> 101 <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
@@ -4145,8 +4145,8 @@ @@ -4145,8 +4145,8 @@
4145 </fields> 4145 </fields>
4146 <cluster_schema/> 4146 <cluster_schema/>
4147 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 4147 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
4148 - <xloc>72</xloc>  
4149 - <yloc>202</yloc> 4148 + <xloc>45</xloc>
  4149 + <yloc>189</yloc>
4150 <draw>Y</draw> 4150 <draw>Y</draw>
4151 </GUI> 4151 </GUI>
4152 </step> 4152 </step>
src/main/resources/static/index.html
@@ -166,6 +166,10 @@ tr.row-active td { @@ -166,6 +166,10 @@ tr.row-active td {
166 <a href="javascript:;"> 166 <a href="javascript:;">
167 <i class="fa fa-user"></i> 我的信息 </a> 167 <i class="fa fa-user"></i> 我的信息 </a>
168 </li> 168 </li>
  169 + <li>
  170 + <a href="javascript:;" id="changePWD">
  171 + <i class="fa fa-unlock-alt"></i> 修改密码</a>
  172 + </li>
169 <li class="divider"> </li> 173 <li class="divider"> </li>
170 <li> 174 <li>
171 <a href="javascript:;"> 175 <a href="javascript:;">
@@ -391,6 +395,22 @@ $(function(){ @@ -391,6 +395,22 @@ $(function(){
391 loadPage('/pages/home.html'); 395 loadPage('/pages/home.html');
392 } 396 }
393 }); 397 });
  398 +
  399 + //修改密码
  400 + $('#changePWD').on('click', function(){
  401 + $.get('/pages/permission/user/changePWD.html', function(content){
  402 + layer.open({
  403 + type: 1,
  404 + area: ['600px','360px'],
  405 + content: content,
  406 + title : '修改密码',
  407 + shift: 5,
  408 + scrollbar: false,
  409 + success: function(){
  410 + }
  411 + });
  412 + });
  413 + });
394 }); 414 });
395 415
396 //modal关闭时销毁dom 416 //modal关闭时销毁dom
src/main/resources/static/pages/forms/mould/daily.xls 0 → 100644
No preview for this file type
src/main/resources/static/pages/forms/mould/waybill.xls
No preview for this file type
src/main/resources/static/pages/forms/statement/daily.html
@@ -130,10 +130,12 @@ @@ -130,10 +130,12 @@
130 } 130 }
131 }); 131 });
132 132
  133 + var line;
  134 + var date;
133 $("#query").on("click",function(){ 135 $("#query").on("click",function(){
134 - var line = $("#line").val();  
135 - var date = $("#date").val();  
136 - $get('/realSchedule/dailyInfo',{line:line,date:date},function(result){ 136 + line = $("#line").val();
  137 + date = $("#date").val();
  138 + $get('/realSchedule/dailyInfo',{line:line,date:date,type:'query'},function(result){
137 $("#form_line").text(line); 139 $("#form_line").text(line);
138 $("#form_date").text(date); 140 $("#form_date").text(date);
139 var total_zgl = 0,total_ksgl = 0,total_yh = 0,total_bcs = 0; 141 var total_zgl = 0,total_ksgl = 0,total_yh = 0,total_bcs = 0;
@@ -153,6 +155,11 @@ @@ -153,6 +155,11 @@
153 // 把渲染好的模版html文本追加到表格中 155 // 把渲染好的模版html文本追加到表格中
154 $('#forms .dailyInfo').html(tbodyHtml); 156 $('#forms .dailyInfo').html(tbodyHtml);
155 }); 157 });
  158 + });
  159 + $("#export").on("click",function(){
  160 + $get('/realSchedule/dailyInfo',{line:line,date:date,type:'export'},function(result){
  161 + window.open("/downloadFile/download?fileName=班次日报"+moment(date).format("YYYYMMDD"));
  162 + });
156 }); 163 });
157 }); 164 });
158 </script> 165 </script>
src/main/resources/static/pages/forms/statement/historyMessage.html
@@ -168,8 +168,8 @@ @@ -168,8 +168,8 @@
168 $('#forms tbody').html(tbodyHtml); 168 $('#forms tbody').html(tbodyHtml);
169 }); 169 });
170 }); 170 });
171 - $("#export").click(function(){  
172 - $('#forms').tableExport({ type: 'excel', escape: 'false' }); 171 + $("#export").on("click",function(){
  172 + $('#forms').tableExport({ type: 'excel', escape: 'false',filename:'(2016-02-29_2016-03-06)'});
173 }); 173 });
174 174
175 }); 175 });
@@ -191,7 +191,4 @@ @@ -191,7 +191,4 @@
191 <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td> 191 <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td>
192 </tr> 192 </tr>
193 {{/if}} 193 {{/if}}
194 -</script>  
195 -  
196 -<script src="/pages/forms/statement/js/tableExport.js"></script>  
197 -<script src="/pages/forms/statement/js/jquery.base64.js"></script>  
198 \ No newline at end of file 194 \ No newline at end of file
  195 +</script>
199 \ No newline at end of file 196 \ No newline at end of file
src/main/resources/static/pages/forms/statement/js/tableExport.js
1 -/*The MIT License (MIT)  
2 -  
3 -Copyright (c) 2014 https://github.com/kayalshri/  
4 -  
5 -Permission is hereby granted, free of charge, to any person obtaining a copy  
6 -of this software and associated documentation files (the "Software"), to deal  
7 -in the Software without restriction, including without limitation the rights  
8 -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell  
9 -copies of the Software, and to permit persons to whom the Software is  
10 -furnished to do so, subject to the following conditions:  
11 -  
12 -The above copyright notice and this permission notice shall be included in  
13 -all copies or substantial portions of the Software.  
14 -  
15 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  
16 -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,  
17 -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE  
18 -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER  
19 -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,  
20 -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN  
21 -THE SOFTWARE.*/  
22 - 1 +// 此函数引用自: http://www.alloyteam.com/2014/01/use-js-file-download/
  2 +function downloadFile(fileName, content){
  3 + var aLink = document.createElement('a');
  4 + var blob = new Blob([content]);
  5 + var evt = document.createEvent("HTMLEvents");
  6 + evt.initEvent("click", false, false);//initEvent 不加后两个参数在FF下会报错, 感谢 Barret Lee 的反馈
  7 + aLink.download = fileName;
  8 + aLink.href = URL.createObjectURL(blob);
  9 + aLink.dispatchEvent(evt);
  10 +}
  11 +
  12 +
23 (function($){ 13 (function($){
24 - $.fn.extend({  
25 - tableExport: function(options) {  
26 - var defaults = {  
27 - separator: ',',  
28 - ignoreColumn: [],  
29 - tableName:'yourTableName',  
30 - type:'csv',  
31 - pdfFontSize:14,  
32 - pdfLeftMargin:20,  
33 - escape:'true',  
34 - htmlContent:'false',  
35 - consoleLog:'false'  
36 - };  
37 -  
38 - var options = $.extend(defaults, options);  
39 - var el = this;  
40 -  
41 - if(defaults.type == 'csv' || defaults.type == 'txt'){  
42 -  
43 - // Header  
44 - var tdData ="";  
45 - $(el).find('thead').find('tr').each(function() {  
46 - tdData += "\n";  
47 - $(this).filter(':visible').find('th').each(function(index,data) {  
48 - if ($(this).css('display') != 'none'){  
49 - if(defaults.ignoreColumn.indexOf(index) == -1){  
50 - tdData += '"' + parseString($(this)) + '"' + defaults.separator;  
51 - }  
52 - }  
53 -  
54 - });  
55 - tdData = $.trim(tdData);  
56 - tdData = $.trim(tdData).substring(0, tdData.length -1);  
57 - });  
58 -  
59 - // Row vs Column  
60 - $(el).find('tbody').find('tr').each(function() {  
61 - tdData += "\n";  
62 - $(this).filter(':visible').find('td').each(function(index,data) {  
63 - if ($(this).css('display') != 'none'){  
64 - if(defaults.ignoreColumn.indexOf(index) == -1){  
65 - tdData += '"'+ parseString($(this)) + '"'+ defaults.separator;  
66 - }  
67 - }  
68 - });  
69 - //tdData = $.trim(tdData);  
70 - tdData = $.trim(tdData).substring(0, tdData.length -1);  
71 - });  
72 -  
73 - //output  
74 - if(defaults.consoleLog == 'true'){  
75 - console.log(tdData);  
76 - }  
77 - var base64data = "base64," + $.base64.encode(tdData);  
78 - window.open('data:application/'+defaults.type+';filename=exportData;' + base64data);  
79 - }else if(defaults.type == 'sql'){  
80 -  
81 - // Header  
82 - var tdData ="INSERT INTO `"+defaults.tableName+"` (";  
83 - $(el).find('thead').find('tr').each(function() {  
84 -  
85 - $(this).filter(':visible').find('th').each(function(index,data) {  
86 - if ($(this).css('display') != 'none'){  
87 - if(defaults.ignoreColumn.indexOf(index) == -1){  
88 - tdData += '`' + parseString($(this)) + '`,' ;  
89 - }  
90 - }  
91 -  
92 - });  
93 - tdData = $.trim(tdData);  
94 - tdData = $.trim(tdData).substring(0, tdData.length -1);  
95 - });  
96 - tdData += ") VALUES ";  
97 - // Row vs Column  
98 - $(el).find('tbody').find('tr').each(function() {  
99 - tdData += "(";  
100 - $(this).filter(':visible').find('td').each(function(index,data) {  
101 - if ($(this).css('display') != 'none'){  
102 - if(defaults.ignoreColumn.indexOf(index) == -1){  
103 - tdData += '"'+ parseString($(this)) + '",';  
104 - }  
105 - }  
106 - });  
107 -  
108 - tdData = $.trim(tdData).substring(0, tdData.length -1);  
109 - tdData += "),";  
110 - });  
111 - tdData = $.trim(tdData).substring(0, tdData.length -1);  
112 - tdData += ";";  
113 -  
114 - //output  
115 - //console.log(tdData);  
116 -  
117 - if(defaults.consoleLog == 'true'){  
118 - console.log(tdData);  
119 - }  
120 -  
121 - var base64data = "base64," + $.base64.encode(tdData);  
122 - window.open('data:application/sql;filename=exportData;' + base64data);  
123 -  
124 -  
125 - }else if(defaults.type == 'json'){  
126 -  
127 - var jsonHeaderArray = [];  
128 - $(el).find('thead').find('tr').each(function() {  
129 - var tdData ="";  
130 - var jsonArrayTd = [];  
131 -  
132 - $(this).filter(':visible').find('th').each(function(index,data) {  
133 - if ($(this).css('display') != 'none'){  
134 - if(defaults.ignoreColumn.indexOf(index) == -1){  
135 - jsonArrayTd.push(parseString($(this)));  
136 - }  
137 - }  
138 - });  
139 - jsonHeaderArray.push(jsonArrayTd);  
140 -  
141 - });  
142 -  
143 - var jsonArray = [];  
144 - $(el).find('tbody').find('tr').each(function() {  
145 - var tdData ="";  
146 - var jsonArrayTd = [];  
147 -  
148 - $(this).filter(':visible').find('td').each(function(index,data) {  
149 - if ($(this).css('display') != 'none'){  
150 - if(defaults.ignoreColumn.indexOf(index) == -1){  
151 - jsonArrayTd.push(parseString($(this)));  
152 - }  
153 - }  
154 - });  
155 - jsonArray.push(jsonArrayTd);  
156 -  
157 - });  
158 -  
159 - var jsonExportArray =[];  
160 - jsonExportArray.push({header:jsonHeaderArray,data:jsonArray});  
161 -  
162 - //Return as JSON  
163 - //console.log(JSON.stringify(jsonExportArray));  
164 -  
165 - //Return as Array  
166 - //console.log(jsonExportArray);  
167 - if(defaults.consoleLog == 'true'){  
168 - console.log(JSON.stringify(jsonExportArray));  
169 - }  
170 - var base64data = "base64," + $.base64.encode(JSON.stringify(jsonExportArray));  
171 - window.open('data:application/json;filename=exportData;' + base64data);  
172 - }else if(defaults.type == 'xml'){  
173 -  
174 - var xml = '<?xml version="1.0" encoding="utf-8"?>';  
175 - xml += '<tabledata><fields>';  
176 - // Header  
177 - $(el).find('thead').find('tr').each(function() {  
178 - $(this).filter(':visible').find('th').each(function(index,data) {  
179 - if ($(this).css('display') != 'none'){  
180 - if(defaults.ignoreColumn.indexOf(index) == -1){  
181 - xml += "<field>" + parseString($(this)) + "</field>";  
182 - }  
183 - }  
184 - });  
185 - });  
186 - xml += '</fields><data>';  
187 -  
188 - // Row Vs Column  
189 - var rowCount=1;  
190 - $(el).find('tbody').find('tr').each(function() {  
191 - xml += '<row id="'+rowCount+'">';  
192 - var colCount=0;  
193 - $(this).filter(':visible').find('td').each(function(index,data) {  
194 - if ($(this).css('display') != 'none'){  
195 - if(defaults.ignoreColumn.indexOf(index) == -1){  
196 - xml += "<column-"+colCount+">"+parseString($(this))+"</column-"+colCount+">";  
197 - }  
198 - }  
199 - colCount++;  
200 - });  
201 - rowCount++;  
202 - xml += '</row>';  
203 - });  
204 - xml += '</data></tabledata>'  
205 -  
206 - if(defaults.consoleLog == 'true'){  
207 - console.log(xml);  
208 - }  
209 -  
210 - var base64data = "base64," + $.base64.encode(xml);  
211 - window.open('data:application/xml;filename=exportData;' + base64data);  
212 - }else if(defaults.type == 'excel' || defaults.type == 'doc'|| defaults.type == 'powerpoint' ){  
213 - //console.log($(this).html());  
214 - var excel="<table>";  
215 - // Header  
216 - $(el).find('thead').find('tr').each(function() {  
217 - excel += "<tr>";  
218 - $(this).filter(':visible').find('th').each(function(index,data) {  
219 - if ($(this).css('display') != 'none'){  
220 - if(defaults.ignoreColumn.indexOf(index) == -1){  
221 - excel += "<td>" + parseString($(this))+ "</td>";  
222 - }  
223 - }  
224 - });  
225 - excel += '</tr>';  
226 -  
227 - });  
228 -  
229 -  
230 - // Row Vs Column  
231 - var rowCount=1;  
232 - $(el).find('tbody').find('tr').each(function() {  
233 - excel += "<tr>";  
234 - var colCount=0;  
235 - $(this).filter(':visible').find('td').each(function(index,data) {  
236 - if ($(this).css('display') != 'none'){  
237 - if(defaults.ignoreColumn.indexOf(index) == -1){  
238 - excel += "<td>"+parseString($(this))+"</td>";  
239 - }  
240 - }  
241 - colCount++;  
242 - });  
243 - rowCount++;  
244 - excel += '</tr>';  
245 - });  
246 - excel += '</table>'  
247 -  
248 - if(defaults.consoleLog == 'true'){  
249 - console.log(excel);  
250 - }  
251 -  
252 - var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:"+defaults.type+"' xmlns='http://www.w3.org/TR/REC-html40'>";  
253 - excelFile += "<head>";  
254 - excelFile += "<!--[if gte mso 9]>";  
255 - excelFile += "<xml>";  
256 - excelFile += "<x:ExcelWorkbook>";  
257 - excelFile += "<x:ExcelWorksheets>";  
258 - excelFile += "<x:ExcelWorksheet>";  
259 - excelFile += "<x:Name>";  
260 - excelFile += "{worksheet}";  
261 - excelFile += "</x:Name>";  
262 - excelFile += "<x:WorksheetOptions>";  
263 - excelFile += "<x:DisplayGridlines/>";  
264 - excelFile += "</x:WorksheetOptions>";  
265 - excelFile += "</x:ExcelWorksheet>";  
266 - excelFile += "</x:ExcelWorksheets>";  
267 - excelFile += "</x:ExcelWorkbook>";  
268 - excelFile += "</xml>";  
269 - excelFile += "<![endif]-->";  
270 - excelFile += "</head>";  
271 - excelFile += "<body>";  
272 - excelFile += excel;  
273 - excelFile += "</body>";  
274 - excelFile += "</html>";  
275 - var base64data = "base64," + $.base64({ data: excelFile, type: 0 });  
276 - window.open('data:application/vnd.ms-'+defaults.type+';filename=exportData.doc;' + base64data);  
277 -  
278 - }else if(defaults.type == 'png'){  
279 - html2canvas($(el), {  
280 - onrendered: function(canvas) {  
281 - var img = canvas.toDataURL("image/png");  
282 - window.open(img);  
283 -  
284 -  
285 - }  
286 - });  
287 - }else if(defaults.type == 'pdf'){  
288 -  
289 - var doc = new jsPDF('p','pt', 'a4', true);  
290 - doc.setFontSize(defaults.pdfFontSize);  
291 -  
292 - // Header  
293 - var startColPosition=defaults.pdfLeftMargin;  
294 - $(el).find('thead').find('tr').each(function() {  
295 - $(this).filter(':visible').find('th').each(function(index,data) {  
296 - if ($(this).css('display') != 'none'){  
297 - if(defaults.ignoreColumn.indexOf(index) == -1){  
298 - var colPosition = startColPosition+ (index * 50);  
299 - doc.text(colPosition,20, parseString($(this)));  
300 - }  
301 - }  
302 - });  
303 - });  
304 -  
305 -  
306 - // Row Vs Column  
307 - var startRowPosition = 20; var page =1;var rowPosition=0;  
308 - $(el).find('tbody').find('tr').each(function(index,data) {  
309 - rowCalc = index+1;  
310 -  
311 - if (rowCalc % 26 == 0){  
312 - doc.addPage();  
313 - page++;  
314 - startRowPosition=startRowPosition+10;  
315 - }  
316 - rowPosition=(startRowPosition + (rowCalc * 10)) - ((page -1) * 280);  
317 -  
318 - $(this).filter(':visible').find('td').each(function(index,data) {  
319 - if ($(this).css('display') != 'none'){  
320 - if(defaults.ignoreColumn.indexOf(index) == -1){  
321 - var colPosition = startColPosition+ (index * 50);  
322 - doc.text(colPosition,rowPosition, parseString($(this))); 14 + $.fn.extend({
  15 + tableExport: function(options) {
  16 + var defaults = {
  17 + separator: ',',
  18 + ignoreColumn: [],
  19 + tableName:'yourTableName',
  20 + type:'csv',
  21 + pdfFontSize:14,
  22 + pdfLeftMargin:20,
  23 + escape:'true',
  24 + htmlContent:'false',
  25 + consoleLog:'false'
  26 + };
  27 +
  28 + var options = $.extend(defaults, options);
  29 + var el = this;
  30 +
  31 + if(defaults.type == 'csv' || defaults.type == 'txt'){
  32 +
  33 + // Header
  34 + var tdData ="";
  35 + $(el).find('thead').find('tr').each(function() {
  36 + tdData += "\n";
  37 + $(this).filter(':visible').find('th').each(function(index,data) {
  38 + if ($(this).css('display') != 'none'){
  39 + if(defaults.ignoreColumn.indexOf(index) == -1){
  40 + tdData += '"' + parseString($(this)) + '"' + defaults.separator;
  41 + }
  42 + }
  43 +
  44 + });
  45 + tdData = $.trim(tdData);
  46 + tdData = $.trim(tdData).substring(0, tdData.length -1);
  47 + });
  48 +
  49 + // Row vs Column
  50 + $(el).find('tbody').find('tr').each(function() {
  51 + tdData += "\n";
  52 + $(this).filter(':visible').find('td').each(function(index,data) {
  53 + if ($(this).css('display') != 'none'){
  54 + if(defaults.ignoreColumn.indexOf(index) == -1){
  55 + tdData += '"'+ parseString($(this)) + '"'+ defaults.separator;
  56 + }
  57 + }
  58 + });
  59 + //tdData = $.trim(tdData);
  60 + tdData = $.trim(tdData).substring(0, tdData.length -1);
  61 + });
  62 +
  63 + //output
  64 + if(defaults.consoleLog == 'true'){
  65 + console.log(tdData);
  66 + }
  67 + var base64data = "base64," + $.base64({ data: tdData, type: 0 });
  68 + //window.open('data:application/'+defaults.type+';filename=exportData;' + base64data);
  69 + downloadFile(defaults.filename + '.' + defaults.type, tdData);
  70 + }else if(defaults.type == 'sql'){
  71 +
  72 + // Header
  73 + var tdData ="INSERT INTO `"+defaults.tableName+"` (";
  74 + $(el).find('thead').find('tr').each(function() {
  75 +
  76 + $(this).filter(':visible').find('th').each(function(index,data) {
  77 + if ($(this).css('display') != 'none'){
  78 + if(defaults.ignoreColumn.indexOf(index) == -1){
  79 + tdData += '`' + parseString($(this)) + '`,' ;
  80 + }
  81 + }
  82 +
  83 + });
  84 + tdData = $.trim(tdData);
  85 + tdData = $.trim(tdData).substring(0, tdData.length -1);
  86 + });
  87 + tdData += ") VALUES ";
  88 + // Row vs Column
  89 + $(el).find('tbody').find('tr').each(function() {
  90 + tdData += "(";
  91 + $(this).filter(':visible').find('td').each(function(index,data) {
  92 + if ($(this).css('display') != 'none'){
  93 + if(defaults.ignoreColumn.indexOf(index) == -1){
  94 + tdData += '"'+ parseString($(this)) + '",';
  95 + }
  96 + }
  97 + });
  98 +
  99 + tdData = $.trim(tdData).substring(0, tdData.length -1);
  100 + tdData += "),";
  101 + });
  102 + tdData = $.trim(tdData).substring(0, tdData.length -1);
  103 + tdData += ";";
  104 +
  105 + //output
  106 + //console.log(tdData);
  107 +
  108 + if(defaults.consoleLog == 'true'){
  109 + console.log(tdData);
  110 + }
  111 +
  112 + var base64data = "base64," + $.base64.encode(tdData);
  113 + window.open('data:application/sql;filename=exportData;' + base64data);
  114 +
  115 +
  116 + }else if(defaults.type == 'json'){
  117 +
  118 + var jsonHeaderArray = [];
  119 + $(el).find('thead').find('tr').each(function() {
  120 + var tdData ="";
  121 + var jsonArrayTd = [];
  122 +
  123 + $(this).filter(':visible').find('th').each(function(index,data) {
  124 + if ($(this).css('display') != 'none'){
  125 + if(defaults.ignoreColumn.indexOf(index) == -1){
  126 + jsonArrayTd.push(parseString($(this)));
  127 + }
  128 + }
  129 + });
  130 + jsonHeaderArray.push(jsonArrayTd);
  131 +
  132 + });
  133 +
  134 + var jsonArray = [];
  135 + $(el).find('tbody').find('tr').each(function() {
  136 + var tdData ="";
  137 + var jsonArrayTd = [];
  138 +
  139 + $(this).filter(':visible').find('td').each(function(index,data) {
  140 + if ($(this).css('display') != 'none'){
  141 + if(defaults.ignoreColumn.indexOf(index) == -1){
  142 + jsonArrayTd.push(parseString($(this)));
  143 + }
  144 + }
  145 + });
  146 + jsonArray.push(jsonArrayTd);
  147 +
  148 + });
  149 +
  150 + var jsonExportArray =[];
  151 + jsonExportArray.push({header:jsonHeaderArray,data:jsonArray});
  152 +
  153 + //Return as JSON
  154 + //console.log(JSON.stringify(jsonExportArray));
  155 +
  156 + //Return as Array
  157 + //console.log(jsonExportArray);
  158 + if(defaults.consoleLog == 'true'){
  159 + console.log(JSON.stringify(jsonExportArray));
  160 + }
  161 + var base64data = "base64," + $.base64.encode(JSON.stringify(jsonExportArray));
  162 + window.open('data:application/json;filename=exportData;' + base64data);
  163 + }else if(defaults.type == 'xml'){
  164 +
  165 + var xml = '<?xml version="1.0" encoding="utf-8"?>';
  166 + xml += '<tabledata><fields>';
  167 + // Header
  168 + $(el).find('thead').find('tr').each(function() {
  169 + $(this).filter(':visible').find('th').each(function(index,data) {
  170 + if ($(this).css('display') != 'none'){
  171 + if(defaults.ignoreColumn.indexOf(index) == -1){
  172 + xml += "<field>" + parseString($(this)) + "</field>";
  173 + }
  174 + }
  175 + });
  176 + });
  177 + xml += '</fields><data>';
  178 +
  179 + // Row Vs Column
  180 + var rowCount=1;
  181 + $(el).find('tbody').find('tr').each(function() {
  182 + xml += '<row id="'+rowCount+'">';
  183 + var colCount=0;
  184 + $(this).filter(':visible').find('td').each(function(index,data) {
  185 + if ($(this).css('display') != 'none'){
  186 + if(defaults.ignoreColumn.indexOf(index) == -1){
  187 + xml += "<column-"+colCount+">"+parseString($(this))+"</column-"+colCount+">";
  188 + }
  189 + }
  190 + colCount++;
  191 + });
  192 + rowCount++;
  193 + xml += '</row>';
  194 + });
  195 + xml += '</data></tabledata>'
  196 +
  197 + if(defaults.consoleLog == 'true'){
  198 + console.log(xml);
  199 + }
  200 +
  201 + var base64data = "base64," + $.base64.encode(xml);
  202 + window.open('data:application/xml;filename=exportData;' + base64data);
  203 + }else if(defaults.type == 'excel' || defaults.type == 'doc'|| defaults.type == 'powerpoint' ){
  204 + //console.log($(this).html());
  205 + var excel="<table>";
  206 + // Header
  207 + $(el).find('thead').find('tr').each(function() {
  208 + excel += "<tr>";
  209 + $(this).filter(':visible').find('th').each(function(index,data) {
  210 + if ($(this).css('display') != 'none'){
  211 + if(defaults.ignoreColumn.indexOf(index) == -1){
  212 + excel += "<td>" + parseString($(this))+ "</td>";
  213 + }
  214 + }
  215 + });
  216 + excel += '</tr>';
  217 +
  218 + });
  219 +
  220 +
  221 + // Row Vs Column
  222 + var rowCount=1;
  223 + $(el).find('tbody').find('tr').each(function() {
  224 + excel += "<tr>";
  225 + var colCount=0;
  226 + $(this).filter(':visible').find('td').each(function(index,data) {
  227 + if ($(this).css('display') != 'none'){
  228 + if(defaults.ignoreColumn.indexOf(index) == -1){
  229 + excel += "<td>"+parseString($(this))+"</td>";
  230 + }
  231 + }
  232 + colCount++;
  233 + });
  234 + rowCount++;
  235 + excel += '</tr>';
  236 + });
  237 + excel += '</table>'
  238 +
  239 + if(defaults.consoleLog == 'true'){
  240 + console.log(excel);
  241 + }
  242 +
  243 + var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:"+defaults.type+"' xmlns='http://www.w3.org/TR/REC-html40'>";
  244 + excelFile += "<head>";
  245 + excelFile += "<!--[if gte mso 9]>";
  246 + excelFile += "<xml>";
  247 + excelFile += "<x:ExcelWorkbook>";
  248 + excelFile += "<x:ExcelWorksheets>";
  249 + excelFile += "<x:ExcelWorksheet>";
  250 + excelFile += "<x:Name>";
  251 + excelFile += "{worksheet}";
  252 + excelFile += "</x:Name>";
  253 + excelFile += "<x:WorksheetOptions>";
  254 + excelFile += "<x:DisplayGridlines/>";
  255 + excelFile += "</x:WorksheetOptions>";
  256 + excelFile += "</x:ExcelWorksheet>";
  257 + excelFile += "</x:ExcelWorksheets>";
  258 + excelFile += "</x:ExcelWorkbook>";
  259 + excelFile += "</xml>";
  260 + excelFile += "<![endif]-->";
  261 + excelFile += "</head>";
  262 + excelFile += "<body>";
  263 + excelFile += excel;
  264 + excelFile += "</body>";
  265 + excelFile += "</html>";
  266 + var base64data = "base64," + $.base64({ data: excelFile, type: 0 });
  267 +
  268 + if(defaults.type == "doc") {
  269 + window.open('data:application/msword;filename=exportData.'+defaults.type+';' + base64data);
  270 + }
  271 + else {
  272 + window.open('data:application/vnd.ms-'+defaults.type+';filename=exportData.'+defaults.type+';' + base64data);
  273 + }
  274 + }else if(defaults.type == 'png'){
  275 + html2canvas($(el), {
  276 + onrendered: function(canvas) {
  277 + var img = canvas.toDataURL("image/png");
  278 + window.open(img);
  279 +
  280 +
  281 + }
  282 + });
  283 + }else if(defaults.type == 'pdf'){
  284 +
  285 + var doc = new jsPDF('p','pt', 'a4', true);
  286 + doc.setFontSize(defaults.pdfFontSize);
  287 +
  288 + // Header
  289 + var startColPosition=defaults.pdfLeftMargin;
  290 + $(el).find('thead').find('tr').each(function() {
  291 + $(this).filter(':visible').find('th').each(function(index,data) {
  292 + if ($(this).css('display') != 'none'){
  293 + if(defaults.ignoreColumn.indexOf(index) == -1){
  294 + var colPosition = startColPosition+ (index * 50);
  295 + doc.text(colPosition,20, parseString($(this)));
  296 + }
  297 + }
  298 + });
  299 + });
  300 +
  301 +
  302 + // Row Vs Column
  303 + var startRowPosition = 20; var page =1;var rowPosition=0;
  304 + $(el).find('tbody').find('tr').each(function(index,data) {
  305 + rowCalc = index+1;
  306 +
  307 + if (rowCalc % 26 == 0){
  308 + doc.addPage();
  309 + page++;
  310 + startRowPosition=startRowPosition+10;
  311 + }
  312 + rowPosition=(startRowPosition + (rowCalc * 10)) - ((page -1) * 280);
  313 +
  314 + $(this).filter(':visible').find('td').each(function(index,data) {
  315 + if ($(this).css('display') != 'none'){
  316 + if(defaults.ignoreColumn.indexOf(index) == -1){
  317 + var colPosition = startColPosition+ (index * 50);
  318 + doc.text(colPosition,rowPosition, parseString($(this)));
  319 + }
  320 + }
  321 +
  322 + });
  323 +
  324 + });
  325 +
  326 + // Output as Data URI
  327 + doc.output('datauri');
  328 +
  329 + }
  330 +
  331 +
  332 + function parseString(data){
  333 +
  334 + if(defaults.htmlContent == 'true'){
  335 + content_data = data.html().trim();
  336 + }else{
  337 + content_data = data.text().trim();
  338 + }
  339 +
  340 + if(defaults.escape == 'true'){
  341 + content_data = escape(content_data);
  342 + }
  343 +
  344 +
  345 +
  346 + return content_data;
  347 + }
  348 +
323 } 349 }
324 - }  
325 -  
326 - });  
327 -  
328 - });  
329 -  
330 - // Output as Data URI  
331 - doc.output('datauri');  
332 -  
333 - }  
334 -  
335 -  
336 - function parseString(data){  
337 -  
338 - if(defaults.htmlContent == 'true'){  
339 - content_data = data.html().trim();  
340 - }else{  
341 - content_data = data.text().trim();  
342 - }  
343 -  
344 - if(defaults.escape == 'true'){  
345 - content_data = escape(content_data);  
346 - }  
347 -  
348 -  
349 -  
350 - return content_data;  
351 - }  
352 -  
353 - }  
354 - });  
355 - })(jQuery);  
356 - 350 + });
  351 +})(jQuery);
357 \ No newline at end of file 352 \ No newline at end of file
src/main/resources/static/pages/forms/statement/scheduleDaily_minhang.html 0 → 100644
  1 +<style type="text/css">
  2 + .table-bordered {
  3 + border: 1px solid; }
  4 + .table-bordered > thead > tr > th,
  5 + .table-bordered > thead > tr > td,
  6 + .table-bordered > tbody > tr > th,
  7 + .table-bordered > tbody > tr > td,
  8 + .table-bordered > tfoot > tr > th,
  9 + .table-bordered > tfoot > tr > td {
  10 + border: 1px solid; }
  11 + .table-bordered > thead > tr > th,
  12 + .table-bordered > thead > tr > td {
  13 + border-bottom-width: 2px; }
  14 +
  15 + .table > tbody + tbody {
  16 + border-top: 1px solid; }
  17 +</style>
  18 +
  19 +<div class="page-head">
  20 + <div class="page-title">
  21 + <h1>调度日报</h1>
  22 + </div>
  23 +</div>
  24 +
  25 +<div class="row">
  26 + <div class="col-md-12">
  27 + <div class="portlet light porttlet-fit bordered">
  28 + <div class="portlet-title">
  29 + <form class="form-inline" action="">
  30 + <div style="display: inline-block;">
  31 + <span class="item-label" style="width: 80px;">线路: </span>
  32 + <select class="form-control" name="line" id="line" style="width: 180px;"></select>
  33 + </div>
  34 + <div style="display: inline-block;margin-left: 15px;">
  35 + <span class="item-label" style="width: 80px;">时间: </span>
  36 + <input class="form-control" type="text" id="date" style="width: 180px;"/>
  37 + </div>
  38 + <div class="form-group">
  39 + <input class="btn btn-default" type="button" id="query" value="查询"/>
  40 + <input class="btn btn-default" type="button" id="export" value="导出"/>
  41 + </div>
  42 + </form>
  43 + </div>
  44 + <div class="portlet-body">
  45 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
  46 + <table class="table table-bordered table-hover table-checkable" id="forms">
  47 + <thead>
  48 + <tr>
  49 + <th colspan="40">线路调度日报</th>
  50 + </tr>
  51 + <tr>
  52 + <td rowspan="3">路线别</td>
  53 + <td colspan="15">全日营运里程(公里)</td>
  54 + <td colspan="15">全日营运班次</td>
  55 + <td colspan="9">大间隔情况</td>
  56 + </tr>
  57 + <tr>
  58 + <td rowspan="2">计划</td>
  59 + <td rowspan="2">实驶</td>
  60 + <td rowspan="2">少驶</td>
  61 + <td colspan="11">少驶原因(公里)</td>
  62 + <td rowspan="2">临加公里</td>
  63 + <td colspan="3">计划班次</td>
  64 + <td colspan="3">实际班次</td>
  65 + <td colspan="3">临加班次</td>
  66 + <td colspan="3">放站班次</td>
  67 + <td colspan="3">调头班次</td>
  68 + <td colspan="3">发生次数</td>
  69 + <td rowspan="2">最大间隔时间(秒)</td>
  70 + <td colspan="5" rowspan="2">原因</td>
  71 + </tr>
  72 + <tr>
  73 + <td>路阻</td>
  74 + <td>吊慢</td>
  75 + <td>故障</td>
  76 + <td>纠纷</td>
  77 + <td>肇事</td>
  78 + <td>缺人</td>
  79 + <td>缺车</td>
  80 + <td>客稀</td>
  81 + <td>气候</td>
  82 + <td>援外</td>
  83 + <td>其他</td>
  84 + <td>全日</td>
  85 + <td>6:31~8:30</td>
  86 + <td>16:01~18:00</td>
  87 + <td>全日</td>
  88 + <td>6:31~8:30</td>
  89 + <td>16:01~18:00</td>
  90 + <td>全日</td>
  91 + <td>6:31~8:30</td>
  92 + <td>16:01~18:00</td>
  93 + <td>全日</td>
  94 + <td>6:31~8:30</td>
  95 + <td>16:01~18:00</td>
  96 + <td>全日</td>
  97 + <td>6:31~8:30</td>
  98 + <td>16:01~18:00</td>
  99 + <td>全日</td>
  100 + <td>6:31~8:30</td>
  101 + <td>16:01~18:00</td>
  102 + </tr>
  103 + </thead>
  104 + <tr>
  105 + <td colspan="40">&nbsp;</td>
  106 + </tr>
  107 + <tr>
  108 + <td colspan="40">合计</td>
  109 + </tr>
  110 + <tr>
  111 + <td colspan="40">&nbsp;</td>
  112 + </tr>
  113 + <tr>
  114 + <td colspan="2">班次</td>
  115 + <td colspan="2">车号</td>
  116 + <td>司早</td>
  117 + <td>售早</td>
  118 + <td>司晚</td>
  119 + <td>售晚</td>
  120 + <td colspan="2">班次</td>
  121 + <td colspan="2">车号</td>
  122 + <td>司早</td>
  123 + <td>售早</td>
  124 + <td>司晚</td>
  125 + <td>售晚</td>
  126 + <td colspan="2">班次</td>
  127 + <td colspan="2">车号</td>
  128 + <td>司早</td>
  129 + <td>售早</td>
  130 + <td>司晚</td>
  131 + <td>售晚</td>
  132 + <td colspan="2">班次</td>
  133 + <td colspan="2">车号</td>
  134 + <td>司早</td>
  135 + <td>售早</td>
  136 + <td>司晚</td>
  137 + <td>售晚</td>
  138 + <td colspan="2">班次</td>
  139 + <td colspan="2">车号</td>
  140 + <td>司早</td>
  141 + <td>售早</td>
  142 + <td>司晚</td>
  143 + <td>售晚</td>
  144 + </tr>
  145 + <tr>
  146 + <td colspan="40">&nbsp;</td>
  147 + </tr>
  148 + <tr>
  149 + <td rowspan="2">路牌</td>
  150 + <td colspan="2" rowspan="2">起点站</td>
  151 + <td colspan="4">到达时间</td>
  152 + <td colspan="4">发车时间</td>
  153 + <td colspan="2" rowspan="2">备注</td>
  154 + <td rowspan="2">路牌</td>
  155 + <td colspan="2" rowspan="2">起点站</td>
  156 + <td colspan="4">到达时间</td>
  157 + <td colspan="4">发车时间</td>
  158 + <td colspan="2" rowspan="2">备注</td>
  159 + <td rowspan="2">路牌</td>
  160 + <td colspan="2" rowspan="2">起点站</td>
  161 + <td colspan="4">到达时间</td>
  162 + <td colspan="4">发车时间</td>
  163 + <td colspan="2" rowspan="2">备注</td>
  164 + <td>&nbsp;</td>
  165 + </tr>
  166 + <tr>
  167 + <td>应到</td>
  168 + <td>实到</td>
  169 + <td>快</td>
  170 + <td>慢</td>
  171 + <td>应发</td>
  172 + <td>实发</td>
  173 + <td>快</td>
  174 + <td>慢</td>
  175 + <td>应到</td>
  176 + <td>实到</td>
  177 + <td>快</td>
  178 + <td>慢</td>
  179 + <td>应发</td>
  180 + <td>实发</td>
  181 + <td>快</td>
  182 + <td>慢</td>
  183 + <td>应到</td>
  184 + <td>实到</td>
  185 + <td>快</td>
  186 + <td>慢</td>
  187 + <td>应发</td>
  188 + <td>实发</td>
  189 + <td>快</td>
  190 + <td>慢</td>
  191 + <td>&nbsp;</td>
  192 + </tr>
  193 + <tbody>
  194 +
  195 + </tbody>
  196 + </table>
  197 + </div>
  198 + </div>
  199 + </div>
  200 + </div>
  201 +</div>
  202 +
  203 +<script>
  204 + $(function(){
  205 + // 关闭左侧栏
  206 + if (!$('body').hasClass('page-sidebar-closed'))
  207 + $('.menu-toggler.sidebar-toggler').click();
  208 +
  209 + $("#date").datetimepicker({
  210 + format : 'YYYY-MM-DD',
  211 + locale : 'zh-cn'
  212 + });
  213 +
  214 + $('#line').select2({
  215 + ajax: {
  216 + url: '/realSchedule/findLine',
  217 + dataType: 'json',
  218 + delay: 150,
  219 + data: function(params){
  220 + return{line: params.term};
  221 + },
  222 + processResults: function (data) {
  223 + return {
  224 + results: data
  225 + };
  226 + },
  227 + cache: true
  228 + },
  229 + templateResult: function(repo){
  230 + if (repo.loading) return repo.text;
  231 + var h = '<span>'+repo.text+'</span>';
  232 + return h;
  233 + },
  234 + escapeMarkup: function (markup) { return markup; },
  235 + minimumInputLength: 1,
  236 + templateSelection: function(repo){
  237 + return repo.text;
  238 + },
  239 + language: {
  240 + noResults: function(){
  241 + return '<span style="color:red;font-size: 12px;">没有搜索到线路!</span>';
  242 + },
  243 + inputTooShort : function(e) {
  244 + return '<span style="color:gray;font-size: 12px;"><i class="fa fa-search"></i> 输入线路搜索线路</span>';
  245 + },
  246 + searching : function() {
  247 + return '<span style="color:gray;font-size: 12px;"> 正在搜索线路...</span>';
  248 + }
  249 + }
  250 + });
  251 +
  252 + //查询
  253 + $("#query").on('click',function(){
  254 + var line = $("#line").val();
  255 + var date = $("#date").val();
  256 + $.get('/realSchedule/scheduleDaily',{line:line,date:date},function(result){
  257 +
  258 + });
  259 + });
  260 + });
  261 +</script>
  262 +<script type="text/html" id="list_forms">
  263 + {{each list as obj i}}
  264 + <tr>
  265 +
  266 + </tr>
  267 + {{/each}}
  268 + {{if list.length == 0}}
  269 + <tr>
  270 + <td colspan="6"><h6 class="muted">没有找到相关数据</h6></td>
  271 + </tr>
  272 + {{/if}}
  273 +</script>
0 \ No newline at end of file 274 \ No newline at end of file
src/main/resources/static/pages/forms/statement/scheduleRealDaily.html 0 → 100644
  1 +<style type="text/css">
  2 + .table-bordered {
  3 + border: 1px solid; }
  4 + .table-bordered > thead > tr > th,
  5 + .table-bordered > thead > tr > td,
  6 + .table-bordered > tbody > tr > th,
  7 + .table-bordered > tbody > tr > td,
  8 + .table-bordered > tfoot > tr > th,
  9 + .table-bordered > tfoot > tr > td {
  10 + border: 1px solid; }
  11 + .table-bordered > thead > tr > th,
  12 + .table-bordered > thead > tr > td {
  13 + border-bottom-width: 2px; }
  14 +
  15 + .table > tbody + tbody {
  16 + border-top: 1px solid; }
  17 +</style>
  18 +
  19 +<div class="page-head">
  20 + <div class="page-title">
  21 + <h1>计划实际日报</h1>
  22 + </div>
  23 +</div>
  24 +
  25 +<div class="row">
  26 + <div class="col-md-12">
  27 + <div class="portlet light porttlet-fit bordered">
  28 + <div class="portlet-title">
  29 + <form class="form-inline" action="">
  30 + <div style="display: inline-block;">
  31 + <span class="item-label" style="width: 80px;">线路: </span>
  32 + <select class="form-control" name="line" id="line" style="width: 180px;"></select>
  33 + </div>
  34 + <div style="display: inline-block;margin-left: 15px;">
  35 + <span class="item-label" style="width: 80px;">时间: </span>
  36 + <input class="form-control" type="text" id="date" style="width: 180px;"/>
  37 + </div>
  38 + <div class="form-group">
  39 + <input class="btn btn-default" type="button" id="query" value="筛选"/>
  40 + <input class="btn btn-default" type="button" id="export" value="导出"/>
  41 + </div>
  42 + </form>
  43 + </div>
  44 + <div class="portlet-body">
  45 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
  46 + <table class="table table-bordered table-hover table-checkable" id="forms">
  47 + <thead>
  48 + <tr>
  49 + <th colspan="7">计划实际日报</th>
  50 + </tr>
  51 + <tr>
  52 + <td>路线:</td>
  53 + <td colspan="2"><span id="form_line">&nbsp;</span></td>
  54 + <td>时间:</td>
  55 + <td colspan="3"><span id="form_date">&nbsp;</span></td>
  56 + </tr>
  57 + <tr>
  58 + <td>计划里程</td>
  59 + <td>实际计划里程</td>
  60 + <td>营运里程</td>
  61 + <td>空驶里程</td>
  62 + <td>抽减里程</td>
  63 + <td>增加里程</td>
  64 + <td>总里程</td>
  65 + <td>计划班次</td>
  66 + <td>实际计划班次</td>
  67 + <td>抽减班次</td>
  68 + <td>增加班次</td>
  69 + <td>实际班次</td>
  70 + </tr>
  71 + </thead>
  72 + <tbody class="scheduleRealDaily">
  73 +
  74 + </tbody>
  75 + </table>
  76 + </div>
  77 + </div>
  78 + </div>
  79 + </div>
  80 +</div>
  81 +
  82 +<script>
  83 + $(function(){
  84 + // 关闭左侧栏
  85 + if (!$('body').hasClass('page-sidebar-closed'))
  86 + $('.menu-toggler.sidebar-toggler').click();
  87 +
  88 + $("#date").datetimepicker({
  89 + format : 'YYYY-MM-DD',
  90 + locale : 'zh-cn'
  91 + });
  92 +
  93 + $('#line').select2({
  94 + ajax: {
  95 + url: '/realSchedule/findLine',
  96 + dataType: 'json',
  97 + delay: 150,
  98 + data: function(params){
  99 + return{line: params.term};
  100 + },
  101 + processResults: function (data) {
  102 + return {
  103 + results: data
  104 + };
  105 + },
  106 + cache: true
  107 + },
  108 + templateResult: function(repo){
  109 + if (repo.loading) return repo.text;
  110 + var h = '<span>'+repo.text+'</span>';
  111 + return h;
  112 + },
  113 + escapeMarkup: function (markup) { return markup; },
  114 + minimumInputLength: 1,
  115 + templateSelection: function(repo){
  116 + return repo.text;
  117 + },
  118 + language: {
  119 + noResults: function(){
  120 + return '<span style="color:red;font-size: 12px;">没有搜索到线路!</span>';
  121 + },
  122 + inputTooShort : function(e) {
  123 + return '<span style="color:gray;font-size: 12px;"><i class="fa fa-search"></i> 输入线路搜索线路</span>';
  124 + },
  125 + searching : function() {
  126 + return '<span style="color:gray;font-size: 12px;"> 正在搜索线路...</span>';
  127 + }
  128 + }
  129 + });
  130 +
  131 + var line;
  132 + var date;
  133 + $("#query").on("click",function(){
  134 + line = $("#line").val();
  135 + date = $("#date").val();
  136 +
  137 + });
  138 + });
  139 +</script>
  140 +<script type="text/html" id="scheduleRealDaily">
  141 + {{each list as obj i}}
  142 + <tr>
  143 + <td></td>
  144 + </tr>
  145 + {{/each}}
  146 + {{if list.length == 0}}
  147 + <tr>
  148 + <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td>
  149 + </tr>
  150 + {{/if}}
  151 +</script>
0 \ No newline at end of file 152 \ No newline at end of file
src/main/resources/static/pages/forms/statement/statisticsDaily .html
@@ -200,7 +200,18 @@ @@ -200,7 +200,18 @@
200 return '<span style="color:gray;font-size: 12px;"> 正在搜索线路...</span>'; 200 return '<span style="color:gray;font-size: 12px;"> 正在搜索线路...</span>';
201 } 201 }
202 } 202 }
203 - }); 203 + });
  204 + $("#query").on("click",function(){
  205 + var line = $("#line").val();
  206 + var xlName = $("#line").text();
  207 + var date = $("#date").val();
  208 + $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName},function(result){
  209 + // 把数据填充到模版中
  210 + var tbodyHtml = template('list_account',{list:result});
  211 + // 把渲染好的模版html文本追加到表格中
  212 + $('#forms tbody').html(tbodyHtml);
  213 + });
  214 + });
204 }); 215 });
205 </script> 216 </script>
206 <script type="text/html" id="list_forms"> 217 <script type="text/html" id="list_forms">
src/main/resources/static/pages/forms/statement/waybill.html
@@ -99,6 +99,7 @@ @@ -99,6 +99,7 @@
99 $('#line').select2({ 99 $('#line').select2({
100 ajax: { 100 ajax: {
101 url: '/realSchedule/findLine', 101 url: '/realSchedule/findLine',
  102 + type: 'post',
102 dataType: 'json', 103 dataType: 'json',
103 delay: 150, 104 delay: 150,
104 data: function(params){ 105 data: function(params){
@@ -165,18 +166,18 @@ @@ -165,18 +166,18 @@
165 $get('/realSchedule/'+id,null,function(result){ 166 $get('/realSchedule/'+id,null,function(result){
166 result.scheduleDate = moment(result.scheduleDate).format("YYYY/MM/DD"); 167 result.scheduleDate = moment(result.scheduleDate).format("YYYY/MM/DD");
167 var ludan_1 = template('ludan_1',result); 168 var ludan_1 = template('ludan_1',result);
168 - var ludan_4 = template('ludan_4',result); 169 + //var ludan_4 = template('ludan_4',result);
169 // 把渲染好的模版html文本追加到表格中 170 // 把渲染好的模版html文本追加到表格中
170 $('#forms .ludan_1').append(ludan_1); 171 $('#forms .ludan_1').append(ludan_1);
171 - $('#forms .ludan_4').append(ludan_4); 172 + //$('#forms .ludan_4').append(ludan_4);
172 }); 173 });
173 - $get('/realSchedule/queryListWaybill',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){ 174 + $post('/realSchedule/queryListWaybill',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){
174 getTime(result); 175 getTime(result);
175 var ludan_2 = template('ludan_2',{list:result}); 176 var ludan_2 = template('ludan_2',{list:result});
176 // 把渲染好的模版html文本追加到表格中 177 // 把渲染好的模版html文本追加到表格中
177 $('#forms .ludan_2').append(ludan_2); 178 $('#forms .ludan_2').append(ludan_2);
178 }); 179 });
179 - $get('/realSchedule/findKMBC',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){ 180 + $post('/realSchedule/findKMBC',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){
180 var ludan_3 = template('ludan_3',result); 181 var ludan_3 = template('ludan_3',result);
181 $('#forms .ludan_3').append(ludan_3); 182 $('#forms .ludan_3').append(ludan_3);
182 }); 183 });
@@ -184,8 +185,8 @@ @@ -184,8 +185,8 @@
184 }); 185 });
185 186
186 $("#export").on("click",function(){ 187 $("#export").on("click",function(){
187 - $get('/realSchedule/exportWaybill',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){  
188 - window.open("/downloadFile/download?jName="+jName+"&lpName="+params[2]); 188 + $post('/realSchedule/exportWaybill',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){
  189 + window.open("/downloadFile/download?fileName="+jName);
189 }); 190 });
190 }); 191 });
191 192
@@ -198,11 +199,11 @@ @@ -198,11 +199,11 @@
198 if(obj.zdsj != null && obj.zdsjActual != null ){ 199 if(obj.zdsj != null && obj.zdsjActual != null ){
199 var zdsjActual = (obj.zdsjActual).split(":"); 200 var zdsjActual = (obj.zdsjActual).split(":");
200 var zdsj = (obj.zdsj).split(":"); 201 var zdsj = (obj.zdsj).split(":");
201 - if(zdsjActual[0]*60+zdsjActual[1] > zdsj[0]*60+zdsj[1]){  
202 - obj["slow"] = (zdsjActual[0]*60+zdsjActual[1]) - (zdsj[0]*60+zdsj[1]); 202 + if(zdsjActual[0]*60+Number(zdsjActual[1]) > zdsj[0]*60+Number(zdsj[1])){
  203 + obj["slow"] = (zdsjActual[0]*60+Number(zdsjActual[1])) - (zdsj[0]*60+Number(zdsj[1]));
203 } 204 }
204 - else{  
205 - obj["fast"] = (zdsj[0]*60+zdsj[1]) - (zdsjActual[0]*60+zdsjActual[1]); 205 + else if(zdsjActual[0]*60+Number(zdsjActual[1]) < zdsj[0]*60+Number(zdsj[1])){
  206 + obj["fast"] = (zdsj[0]*60+Number(zdsj[1])) - (zdsjActual[0]*60+Number(zdsjActual[1]));
206 } 207 }
207 } 208 }
208 }); 209 });
@@ -228,7 +229,7 @@ @@ -228,7 +229,7 @@
228 <td colspan="14">行车路单</td> 229 <td colspan="14">行车路单</td>
229 </tr> 230 </tr>
230 <tr> 231 <tr>
231 - <td colspan="14">路别:{{xlName}} 路牌:{{lpName}} 车号:{{clZbh}} 出场时间:{{ccTime}} 到达站名:{{zdzName}} 当班调派:&nbsp; 日期:{{scheduleDate}}</td> 232 + <td colspan="14">路别:{{xlName}} 路牌:{{lpName}} 车号:{{clZbh}} 出场时间:{{fcsjActual}} 到达站名:{{zdzName}} 当班调派:&nbsp; 日期:{{scheduleDate}}</td>
232 </tr> 233 </tr>
233 <tr> 234 <tr>
234 <td colspan="2">出场存油 &nbsp;升</td> 235 <td colspan="2">出场存油 &nbsp;升</td>
src/main/resources/static/pages/forms/statement/waybill_minhang.html 0 → 100644
  1 +<style type="text/css">
  2 + .table-bordered {
  3 + border: 1px solid; }
  4 + .table-bordered > thead > tr > th,
  5 + .table-bordered > thead > tr > td,
  6 + .table-bordered > tbody > tr > th,
  7 + .table-bordered > tbody > tr > td,
  8 + .table-bordered > tfoot > tr > th,
  9 + .table-bordered > tfoot > tr > td {
  10 + border: 1px solid; }
  11 + .table-bordered > thead > tr > th,
  12 + .table-bordered > thead > tr > td {
  13 + border-bottom-width: 2px; }
  14 +
  15 + .table > tbody + tbody {
  16 + border-top: 1px solid; }
  17 +</style>
  18 +
  19 +<div class="page-head">
  20 + <div class="page-title">
  21 + <h1>行车路单</h1>
  22 + </div>
  23 +</div>
  24 +
  25 +<div class="row">
  26 + <div class="col-md-12">
  27 + <div class="portlet light porttlet-fit bordered">
  28 + <div class="portlet-title">
  29 + <form class="form-inline" action="">
  30 + <div style="display: inline-block;">
  31 + <span class="item-label" style="width: 80px;">线路: </span>
  32 + <select class="form-control" name="line" id="line" style="width: 180px;"></select>
  33 + </div>
  34 + <div style="display: inline-block;margin-left: 15px;">
  35 + <span class="item-label" style="width: 80px;">时间: </span>
  36 + <input class="form-control" type="text" id="date" style="width: 180px;"/>
  37 + </div>
  38 + <div class="form-group" style="display: inline-block;margin-left: 15px;">
  39 + <input class="btn btn-default" type="button" id="query" value="查询"/>
  40 + <input class="btn btn-default" type="button" id="export" value="导出"/>
  41 + <input class="btn btn-default" type="button" id="print" value="打印"/>
  42 + <input class="btn btn-default" type="button" id="exportMore" value="批量导出"/>
  43 + </div>
  44 + </form>
  45 + </div>
  46 + <div class="portlet-body">
  47 + <div class="row">
  48 + <div class="col-md-3">
  49 + <div class="" style="margin-top: 10px;overflow:auto;height: 860px">
  50 + <table class="table table-bordered table-hover table-checkable pre-scrollable" id="info">
  51 + <thead>
  52 + <tr class="hidden">
  53 + <th>人员</th>
  54 + <th>自编号</th>
  55 + <th>路牌</th>
  56 + </tr>
  57 + </thead>
  58 + <tbody>
  59 +
  60 + </tbody>
  61 + </table>
  62 + </div>
  63 + </div>
  64 + <div class="col-md-9" id="printArea">
  65 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
  66 + <table class="table table-bordered table-checkable" id="forms">
  67 + <tbody class="ludan_1">
  68 +
  69 + </tbody>
  70 + <tbody class="ludan_2">
  71 +
  72 + </tbody>
  73 + <tbody class="ludan_3">
  74 +
  75 + </tbody>
  76 + <tbody class="ludan_4">
  77 +
  78 + </tbody>
  79 + </table>
  80 + </div>
  81 + </div>
  82 + </div>
  83 + </div>
  84 + </div>
  85 + </div>
  86 +</div>
  87 +
  88 +<script>
  89 + $(function(){
  90 + // 关闭左侧栏
  91 + if (!$('body').hasClass('page-sidebar-closed'))
  92 + $('.menu-toggler.sidebar-toggler').click();
  93 +
  94 + $("#date").datetimepicker({
  95 + format : 'YYYY-MM-DD',
  96 + locale : 'zh-cn'
  97 + });
  98 +
  99 + $('#line').select2({
  100 + ajax: {
  101 + url: '/realSchedule/findLine',
  102 + dataType: 'json',
  103 + delay: 150,
  104 + data: function(params){
  105 + return{line: params.term};
  106 + },
  107 + processResults: function (data) {
  108 + return {
  109 + results: data
  110 + };
  111 + },
  112 + cache: true
  113 + },
  114 + templateResult: function(repo){
  115 + if (repo.loading) return repo.text;
  116 + var h = '<span>'+repo.text+'</span>';
  117 + return h;
  118 + },
  119 + escapeMarkup: function (markup) { return markup; },
  120 + minimumInputLength: 1,
  121 + templateSelection: function(repo){
  122 + return repo.text;
  123 + },
  124 + language: {
  125 + noResults: function(){
  126 + return '<span style="color:red;font-size: 12px;">没有搜索到线路!</span>';
  127 + },
  128 + inputTooShort : function(e) {
  129 + return '<span style="color:gray;font-size: 12px;"><i class="fa fa-search"></i> 输入线路搜索线路</span>';
  130 + },
  131 + searching : function() {
  132 + return '<span style="color:gray;font-size: 12px;"> 正在搜索线路...</span>';
  133 + }
  134 + }
  135 + });
  136 +
  137 + $("#query").on("click",function(){
  138 + var line = $("#line").val();
  139 + var date = $("#date").val();
  140 + $(".hidden").removeClass("hidden");
  141 + $get('/realSchedule/queryUserInfo',{line:line,date:date},function(result){
  142 + // 把数据填充到模版中
  143 + var tbodyHtml = template('list_info',{list:result});
  144 + // 把渲染好的模版html文本追加到表格中
  145 + $('#info tbody').html(tbodyHtml);
  146 + });
  147 + });
  148 +
  149 + var params = {};
  150 + var jName;
  151 + $("#info tbody").on("click","tr",function(){
  152 + $('#forms .ludan_1').html('');
  153 + $('#forms .ludan_2').html('');
  154 + $('#forms .ludan_3').html('');
  155 + $('#forms .ludan_4').html('');
  156 + if($(this).children().size() < 2){
  157 + return;
  158 + }
  159 +
  160 + $(this).children().each(function(index){
  161 + params[index] = $(this).text();
  162 + });
  163 + jName = params[0].split("\\")[0];
  164 + var id = $("#"+params[1]).val();
  165 + $get('/realSchedule/'+id,null,function(result){
  166 + result.scheduleDate = moment(result.scheduleDate).format("YYYY/MM/DD");
  167 + var ludan_1 = template('ludan_1',result);
  168 + //var ludan_4 = template('ludan_4',result);
  169 + // 把渲染好的模版html文本追加到表格中
  170 + $('#forms .ludan_1').append(ludan_1);
  171 + //$('#forms .ludan_4').append(ludan_4);
  172 + });
  173 + $get('/realSchedule/queryListWaybill',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){
  174 + getTime(result);
  175 + var ludan_2 = template('ludan_2',{list:result});
  176 + // 把渲染好的模版html文本追加到表格中
  177 + $('#forms .ludan_2').append(ludan_2);
  178 + });
  179 + $get('/realSchedule/findKMBC',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){
  180 + var ludan_3 = template('ludan_3',result);
  181 + $('#forms .ludan_3').append(ludan_3);
  182 + });
  183 +
  184 + });
  185 +
  186 + $("#export").on("click",function(){
  187 + $get('/realSchedule/exportWaybill',{jName:jName,clZbh:params[1],lpName:params[2]},function(result){
  188 + window.open("/downloadFile/download?fileName="+jName);
  189 + });
  190 + });
  191 +
  192 + $("#print").click(function(){
  193 + $("#printArea").printArea();
  194 + });
  195 +
  196 + function getTime(list){
  197 + $.each(list, function(i, obj) {
  198 + if(obj.zdsj != null && obj.zdsjActual != null ){
  199 + var zdsjActual = (obj.zdsjActual).split(":");
  200 + var zdsj = (obj.zdsj).split(":");
  201 + if(zdsjActual[0]*60+Number(zdsjActual[1]) > zdsj[0]*60+Number(zdsj[1])){
  202 + obj["slow"] = (zdsjActual[0]*60+Number(zdsjActual[1])) - (zdsj[0]*60+Number(zdsj[1]));
  203 + }
  204 + else if(zdsjActual[0]*60+Number(zdsjActual[1]) < zdsj[0]*60+Number(zdsj[1])){
  205 + obj["fast"] = (zdsj[0]*60+Number(zdsj[1])) - (zdsjActual[0]*60+Number(zdsjActual[1]));
  206 + }
  207 + }
  208 + });
  209 + }
  210 + });
  211 +</script>
  212 +<script type="text/html" id="list_info">
  213 + {{each list as obj i}}
  214 + <tr>
  215 + <td width="45%">{{obj.jName}}\{{obj.jGh}}</td>
  216 + <td width="32%">{{obj.clZbh}}</td>
  217 + <td width="23%">{{obj.lpName}}<input type="hidden" id="{{obj.clZbh}}" value="{{obj.id}}"></td>
  218 + </tr>
  219 + {{/each}}
  220 + {{if list.length == 0}}
  221 + <tr>
  222 + <td colspan="3"><h6 class="muted">没有找到相关数据</h6></td>
  223 + </tr>
  224 + {{/if}}
  225 +</script>
  226 +<script type="text/html" id="ludan_1">
  227 + <tr>
  228 + <td colspan="13">行车路单</td>
  229 + </tr>
  230 + <tr>
  231 + <td colspan="13">路别:{{xlName}} 路牌:{{lpName}} 车号:{{clZbh}} 出场时间:{{fcsjActual}} 到达站名:{{zdzName}} 当班调度:&nbsp; 日期:{{scheduleDate}} 本日耗油:&nbsp;升</td>
  232 + </tr>
  233 +<!--
  234 + <tr>
  235 + <td rowspan="2">调度章</td>
  236 + <td colspan="1">&nbsp;</td>
  237 + <td rowspan="2">早班</td>
  238 + <td colspan="1">&nbsp;</td>
  239 + <td rowspan="2">夜班</td>
  240 + <td colspan="1">&nbsp;</td>
  241 + <td rowspan="2" colspan="2">交叉</td>
  242 + <td colspan="2">&nbsp;</td>
  243 + <td rowspan="2">其他</td>
  244 + <td colspan="1">&nbsp;</td>
  245 + <td colspan="1">&nbsp;</td>
  246 + <td colspan="1">&nbsp;</td>
  247 + </tr>
  248 + <tr>
  249 + <td colspan="1">&nbsp;</td>
  250 + <td colspan="1">&nbsp;</td>
  251 + <td colspan="1">&nbsp;</td>
  252 + <td colspan="2">&nbsp;</td>
  253 + <td colspan="1">&nbsp;</td>
  254 + <td colspan="1">&nbsp;</td>
  255 + <td colspan="1">&nbsp;</td>
  256 + </tr>
  257 +-->
  258 + <tr>
  259 + <td rowspan="2">车次</td>
  260 + <td colspan="2">工号</td>
  261 + <!-- <td rowspan="2">公里耗油</td> -->
  262 + <td colspan="2">起讫站</td>
  263 + <td colspan="4">时间</td>
  264 + <td colspan="2">误点</td>
  265 + <td rowspan="2" width="66px">里程(公里)计划</td>
  266 + <td rowspan="2">备注</td>
  267 + </tr>
  268 + <tr>
  269 + <td colspan="1" width="60px">司&nbsp;机</td>
  270 + <td colspan="1" width="60px">售&nbsp;票</td>
  271 + <td colspan="1">起点</td>
  272 + <td colspan="1">终点</td>
  273 + <td colspan="1">计发</td>
  274 + <td colspan="1">实发</td>
  275 + <td colspan="1">应到</td>
  276 + <td colspan="1">实到</td>
  277 + <td colspan="1">快</td>
  278 + <td colspan="1">慢</td>
  279 + </tr>
  280 +</script>
  281 +<script type="text/html" id="ludan_2">
  282 + {{each list as obj i}}
  283 + <tr>
  284 + <td>{{i+1}}</td>
  285 + <td>{{obj.jName}}</td>
  286 + <td>{{obj.sName}}</td>
  287 + <td>{{obj.qdzName}}</td>
  288 + <td>{{obj.zdzName}}</td>
  289 + <td>{{obj.fcsj}}</td>
  290 + <td>{{obj.fcsjActual}}</td>
  291 + <td>{{obj.zdsj}}</td>
  292 + <td>{{obj.zdsjActual}}</td>
  293 + <td>{{obj.fast}}</td>
  294 + <td>{{obj.slow}}</td>
  295 + <td>{{obj.jhlc}}</td>
  296 + <td>{{obj.remarks}}</td>
  297 + </tr>
  298 + {{/each}}
  299 + {{if list.length == 0}}
  300 + <tr>
  301 + <td colspan="13"><h6 class="muted">没有找到相关数据</h6></td>
  302 + </tr>
  303 + {{/if}}
  304 +</script>
  305 +<script type="text/html" id="ludan_3">
  306 + <tr>
  307 + <td colspan="2">计划公里</td>
  308 + <td>{{jhlc}}</td>
  309 + <td>抽减公里</td>
  310 + <td>{{remMileage}}</td>
  311 + <td colspan="2">增加公里</td>
  312 + <td>{{addMileage}}</td>
  313 + <td colspan="2">实际计划公里</td>
  314 + <td colspan="3">{{jhlc}}</td>
  315 + </tr>
  316 + <tr>
  317 + <td colspan="2">营运公里</td>
  318 + <td>{{realMileage}}</td>
  319 + <td>空驶公里</td>
  320 + <td>{{ksgl}}</td>
  321 + <td colspan="2">总公里</td>
  322 + <td>{{realMileage}}</td>
  323 + <td colspan="2">计划班次</td>
  324 + <td colspan="3">{{jhbc}}</td>
  325 + </tr>
  326 + <tr>
  327 + <td colspan="2">抽减班次</td>
  328 + <td>{{cjbc}}</td>
  329 + <td>增加班次</td>
  330 + <td>{{ljbc}}</td>
  331 + <td colspan="2">实际计划班次</td>
  332 + <td>{{jhbc}}</td>
  333 + <td colspan="2">实际班次</td>
  334 + <td colspan="3">{{sjbc}}</td>
  335 + </tr>
  336 +</script>
  337 +<script type="text/html" id="ludan_4">
  338 + <tr>
  339 + <td colspan="12">认真做好终点项目的例保保修工作,杜绝机械火警事故!</td>
  340 + <td>轮胎</td>
  341 + <td>&nbsp;</td>
  342 + </tr>
  343 + <tr>
  344 + <td colspan="3">重点例保项目</td>
  345 + <td>1</td>
  346 + <td>2</td>
  347 + <td>3</td>
  348 + <td colspan="3">重点例保项目</td>
  349 + <td>1</td>
  350 + <td>2</td>
  351 + <td>3</td>
  352 + <td>灭火机</td>
  353 + <td>&nbsp;</td>
  354 + </tr>
  355 + <tr>
  356 + <td colspan="3">各类制动</td>
  357 + <td>&nbsp;</td>
  358 + <td>&nbsp;</td>
  359 + <td>&nbsp;</td>
  360 + <td colspan="3">各类灯光</td>
  361 + <td>&nbsp;</td>
  362 + <td>&nbsp;</td>
  363 + <td>&nbsp;</td>
  364 + <td colspan="2">出场路码表里程</td>
  365 + </tr>
  366 + <tr>
  367 + <td colspan="3">方向机</td>
  368 + <td>&nbsp;</td>
  369 + <td>&nbsp;</td>
  370 + <td>&nbsp;</td>
  371 + <td colspan="3">各类仪表</td>
  372 + <td>&nbsp;</td>
  373 + <td>&nbsp;</td>
  374 + <td>&nbsp;</td>
  375 + <td colspan="2" rowspan="2">&nbsp;</td>
  376 + </tr>
  377 + <tr>
  378 + <td colspan="3">欠压报警器</td>
  379 + <td>&nbsp;</td>
  380 + <td>&nbsp;</td>
  381 + <td>&nbsp;</td>
  382 + <td colspan="3">各类皮带</td>
  383 + <td>&nbsp;</td>
  384 + <td>&nbsp;</td>
  385 + <td>&nbsp;</td>
  386 + </tr>
  387 + <tr>
  388 + <td colspan="3">发动机清洁及响声</td>
  389 + <td>&nbsp;</td>
  390 + <td>&nbsp;</td>
  391 + <td>&nbsp;</td>
  392 + <td colspan="3">油箱及托架</td>
  393 + <td>&nbsp;</td>
  394 + <td>&nbsp;</td>
  395 + <td>&nbsp;</td>
  396 + <td colspan="2">出场路码表里程</td>
  397 + </tr>
  398 + <tr>
  399 + <td colspan="3">地盘响声</td>
  400 + <td>&nbsp;</td>
  401 + <td>&nbsp;</td>
  402 + <td>&nbsp;</td>
  403 + <td colspan="3">轮胎、半轴螺栓螺母</td>
  404 + <td>&nbsp;</td>
  405 + <td>&nbsp;</td>
  406 + <td>&nbsp;</td>
  407 + <td colspan="2" rowspan="3">&nbsp;</td>
  408 + </tr>
  409 + <tr>
  410 + <td colspan="3">化油器及油路</td>
  411 + <td>&nbsp;</td>
  412 + <td>&nbsp;</td>
  413 + <td>&nbsp;</td>
  414 + <td colspan="3">油、电、水、气</td>
  415 + <td>&nbsp;</td>
  416 + <td>&nbsp;</td>
  417 + <td>&nbsp;</td>
  418 + </tr>
  419 + <tr>
  420 + <td colspan="3">进排歧管及排气管</td>
  421 + <td>&nbsp;</td>
  422 + <td>&nbsp;</td>
  423 + <td>&nbsp;</td>
  424 + <td colspan="3">内外车身及附件</td>
  425 + <td>&nbsp;</td>
  426 + <td>&nbsp;</td>
  427 + <td>&nbsp;</td>
  428 + </tr>
  429 + <tr>
  430 + <td colspan="14">1 首次出场,2 复使中途,3 某次进场。√正常,ⓧ报修,×尚未报修</td>
  431 + </tr>
  432 +</script>
0 \ No newline at end of file 433 \ No newline at end of file
src/main/resources/static/pages/permission/user/add.html
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 </div> 19 </div>
20 </div> 20 </div>
21 <div class="portlet-body form"> 21 <div class="portlet-body form">
22 - <form action="/resource" class="form-horizontal" id="resource_add_form" > 22 + <form action="/addUser" class="form-horizontal" id="user_add_form" >
23 <div class="alert alert-danger display-hide"> 23 <div class="alert alert-danger display-hide">
24 <button class="close" data-close="alert"></button> 24 <button class="close" data-close="alert"></button>
25 您的输入有误,请检查下面的输入项 25 您的输入有误,请检查下面的输入项
@@ -41,7 +41,7 @@ @@ -41,7 +41,7 @@
41 <div class="form-group"> 41 <div class="form-group">
42 <label class="col-md-3 control-label">密码</label> 42 <label class="col-md-3 control-label">密码</label>
43 <div class="col-md-4"> 43 <div class="col-md-4">
44 - <input type="password" class="form-control" name="password" > 44 + <input type="password" class="form-control" id="password" name="password" >
45 <span class="help-block"> 请输入6位以上密码</span> 45 <span class="help-block"> 请输入6位以上密码</span>
46 </div> 46 </div>
47 </div> 47 </div>
@@ -62,8 +62,8 @@ @@ -62,8 +62,8 @@
62 <div class="form-group"> 62 <div class="form-group">
63 <label class="col-md-3 control-label">角色</label> 63 <label class="col-md-3 control-label">角色</label>
64 <div class="col-md-4"> 64 <div class="col-md-4">
65 - <select class="form-control" name="role[]" style="width: 160px;" multiple="multiple">  
66 - <option>请选择...</option> 65 + <select class="form-control" id="role" name="roles[]" style="width: 160px;" multiple="multiple">
  66 +
67 </select> 67 </select>
68 </div> 68 </div>
69 </div> 69 </div>
@@ -72,7 +72,7 @@ @@ -72,7 +72,7 @@
72 <label class="col-md-3 control-label">是否启用</label> 72 <label class="col-md-3 control-label">是否启用</label>
73 <div class="col-md-4"> 73 <div class="col-md-4">
74 <div class="input-group"> 74 <div class="input-group">
75 - <select class="form-control" name="enable" style="width: 160px;"> 75 + <select class="form-control" name="enabled" style="width: 160px;">
76 <option value="1">可用</option> 76 <option value="1">可用</option>
77 <option value="0">禁用</option> 77 <option value="0">禁用</option>
78 </select> 78 </select>
@@ -93,5 +93,88 @@ @@ -93,5 +93,88 @@
93 </div> 93 </div>
94 </div> 94 </div>
95 <script> 95 <script>
96 - 96 + $(function(){
  97 + $get('/role/all',null,function(result){
  98 + $.each(result,function(i,obj){
  99 + $("#role").append("<option value='"+obj.id+"'>"+obj.roleName+"</option>");
  100 + });
  101 + });
  102 +
  103 + var form = $('#user_add_form');
  104 + var error = $('.alert-danger', form);
  105 +
  106 + //表单 validate
  107 + form.validate({
  108 + errorElement : 'span',
  109 + errorClass : 'help-block help-block-error',
  110 + focusInvalid : false,
  111 + rules : {
  112 + 'userName' : {
  113 + required : true,
  114 + maxlength: 25
  115 + },
  116 + 'name' : {
  117 + required : true,
  118 + maxlength: 25
  119 + },
  120 + 'password' : {
  121 + required : true,
  122 + minlength: 6,
  123 + maxlength: 25
  124 + },
  125 + 'cfmPassword' : {
  126 + equalTo: '#password'
  127 + },
  128 + 'role' : {
  129 + required : true,
  130 + minlength: 1
  131 + }
  132 + },
  133 + invalidHandler : function(event, validator) {
  134 + error.show();
  135 + App.scrollTo(error, -200);
  136 + },
  137 +
  138 + highlight : function(element) {
  139 + $(element).closest('.form-group').addClass('has-error');
  140 + },
  141 +
  142 + unhighlight : function(element) {
  143 + $(element).closest('.form-group').removeClass('has-error');
  144 + },
  145 +
  146 + success : function(label) {
  147 + label.closest('.form-group').removeClass('has-error');
  148 + },
  149 +
  150 + submitHandler : function(f) {
  151 + var params = form.serializeJSON();
  152 + error.hide();
  153 + console.log(params);
  154 +
  155 + //检查一下用户是否存在
  156 + $get('/user/all', {userName_eq: params.userName}, function(list){
  157 + if(!list || list.length == 0){
  158 + console.log(params);
  159 + $.ajax({
  160 + url: '/user',
  161 + type: 'POST',
  162 + traditional: true,
  163 + data: params,
  164 + success: function(res){
  165 + layer.msg('添加用户成功.');
  166 + loadPage('list.html');
  167 + }
  168 + });
  169 + /* $post('/user', params, function(res){
  170 + layer.msg('添加用户成功.');
  171 + loadPage('list.html');
  172 + }); */
  173 + }
  174 + else
  175 + layer.alert('用户【' + params.userName + '】已存在', {icon: 2, title: '提交被拒绝'});
  176 + });
  177 + }
  178 + });
  179 + });
97 </script> 180 </script>
98 \ No newline at end of file 181 \ No newline at end of file
src/main/resources/static/pages/permission/user/changePWD.html 0 → 100644
  1 +<div class="row">
  2 +<div class="col-md-12">
  3 +<!-- BEGIN VALIDATION STATES-->
  4 +<div class="portlet light portlet-fit portlet-form bordered">
  5 +<div class="portlet-body">
  6 + <form action="/user/changePWD" class="form-horizontal" id="changePWD">
  7 + <div class="form-group" style="margin-top: 60px">
  8 + <label class="control-label col-md-5">原始密码:
  9 + </label>
  10 + <div class="col-md-4">
  11 + <div class="input-icon right">
  12 + <i class="fa"></i>
  13 + <input type="password" class="form-control" name="oldPWD" /> </div>
  14 + </div>
  15 + </div>
  16 + <div class="form-group">
  17 + <label class="control-label col-md-5">输入新密码:
  18 + </label>
  19 + <div class="col-md-4">
  20 + <div class="input-icon right">
  21 + <i class="fa"></i>
  22 + <input type="password" class="form-control" name="newPWD" /> </div>
  23 + </div>
  24 + </div>
  25 + <div class="form-group">
  26 + <label class="control-label col-md-5">确认新密码:
  27 + </label>
  28 + <div class="col-md-4">
  29 + <div class="input-icon right">
  30 + <i class="fa"></i>
  31 + <input type="password" class="form-control" name="cnewPWD" /> </div>
  32 + </div>
  33 + </div>
  34 + <div class="form-actions">
  35 + <div class="row">
  36 + <div class="col-md-offset-5 col-md-7">
  37 + <button type="button" id="confirm" class="btn green">确定</button>
  38 + <button type="reset" class="btn default">取消</button>
  39 + </div>
  40 + </div>
  41 + </div>
  42 + </form>
  43 +</div>
  44 +</div>
  45 +</div>
  46 +</div>
  47 +
  48 +<script>
  49 +$(function(){
  50 + $("#confirm").on("click",function(){
  51 + $.get('/user/changePWD',null,function(){
  52 +
  53 + });
  54 + });
  55 +});
  56 +</script>
0 \ No newline at end of file 57 \ No newline at end of file
src/main/resources/static/pages/permission/user/list.html
@@ -75,7 +75,7 @@ @@ -75,7 +75,7 @@
75 </td> 75 </td>
76 <td></td> 76 <td></td>
77 <td> 77 <td>
78 - <select class="form-control form-filter " name="enable_eq"> 78 + <select class="form-control form-filter " name="enabled_eq">
79 <option value="">请选择...</option> 79 <option value="">请选择...</option>
80 <option value="1">可用</option> 80 <option value="1">可用</option>
81 <option value="0">禁用</option> 81 <option value="0">禁用</option>
@@ -132,7 +132,13 @@ @@ -132,7 +132,13 @@
132 <td> 132 <td>
133 {{obj.lastLoginDate}} 133 {{obj.lastLoginDate}}
134 </td> 134 </td>
135 - <td><a href="edit.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 详细 </a></td> 135 + <td>
  136 + {{if obj.enabled}}
  137 + <button type="button" onclick="changeEnabled({{obj.id}},0)" class="btn btn-warning btn-sm">禁用</button>
  138 + {{else}}
  139 + <button type="button" onclick="changeEnabled({{obj.id}},1)" class="btn btn-success btn-sm">启用</button>
  140 + {{/if}}
  141 + </td>
136 </tr> 142 </tr>
137 {{/each}} 143 {{/each}}
138 {{if list.length == 0}} 144 {{if list.length == 0}}
@@ -252,4 +258,11 @@ $(function(){ @@ -252,4 +258,11 @@ $(function(){
252 }); 258 });
253 }); 259 });
254 }); 260 });
  261 +//改变状态
  262 +function changeEnabled(id,enabled){
  263 + debugger
  264 + $get('/user/changeEnabled',{id:id,enabled:enabled},function(result){
  265 + jsDoQuery(null, true);
  266 + })
  267 +}
255 </script> 268 </script>
256 \ No newline at end of file 269 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/common/dt/MyGuideboardGroupWrapTemplate.html 0 → 100644
  1 +<div name="{{$saGuideboardgroupCtrl.$name_attr}}"
  2 + ng-model="$saGuideboardgroupCtrl.$$internalmodel">
  3 +
  4 + <style>
  5 + .guideboard-select {
  6 + height: 180px;
  7 + border: 1px solid #ddd;
  8 + }
  9 + .guideboard-select .guideboard-input {
  10 + margin: 2px 5px 5px 5px;
  11 + padding-left: 0;
  12 + }
  13 + .guideboard-select .guideboard-select-cont {
  14 + text-align: left;
  15 + height: 100px;
  16 + padding-right: 0px;
  17 + }
  18 + .guideboard-select .guideboard-select-body {
  19 + margin-top: 10px;
  20 + overflow: auto;
  21 + width: auto;
  22 + height: 100px;
  23 + }
  24 + .guideboard-select .guideboard {
  25 + display: inline-block;
  26 + padding: 8px;
  27 + min-width: 85px;
  28 + text-align: center;
  29 + border: 1px solid #C1C1C1;
  30 + color: #666;
  31 + border-radius: 5px !important;
  32 + margin: 5px;
  33 + }
  34 + .guideboard-select .guideboard.active {
  35 + color: white;
  36 + background: #4095E8;
  37 + border: 1px solid #4095E8;
  38 + }
  39 +
  40 + </style>
  41 +
  42 + <div class="col-md-12 guideboard-select">
  43 + <div class="col-md-12 guideboard-input">
  44 + <div class="col-md-9">
  45 + 某某线路的路牌列表
  46 + </div>
  47 + </div>
  48 + <div class="col-md-12 guideboard-select-cont">
  49 + <div class="guideboard-select-body">
  50 + <div class="guideboard active">
  51 + 1
  52 + </div>
  53 + <div class="guideboard active">
  54 + 2
  55 + </div>
  56 + <div class="guideboard active">
  57 + 3
  58 + </div>
  59 + <div class="guideboard active">
  60 + 4
  61 + </div>
  62 + </div>
  63 + </div>
  64 + </div>
  65 +
  66 +
  67 +</div>
0 \ No newline at end of file 68 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/employeeConfig.js
@@ -213,6 +213,11 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;EmployeeConfigFormCtrl&#39;, [&#39;EmployeeCon @@ -213,6 +213,11 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;EmployeeConfigFormCtrl&#39;, [&#39;EmployeeCon
213 self.submit = function() { 213 self.submit = function() {
214 console.log(self.employeeConfigForSave); 214 console.log(self.employeeConfigForSave);
215 215
  216 + // 如果自对象没id值,设置成null
  217 + if (self.employeeConfigForSave.spy && !self.employeeConfigForSave.spy.id) {
  218 + self.employeeConfigForSave.spy = null;
  219 + }
  220 +
216 employeeConfigService.saveDetail(self.employeeConfigForSave).then( 221 employeeConfigService.saveDetail(self.employeeConfigForSave).then(
217 function(result) { 222 function(result) {
218 // TODO:弹出框方式以后改 223 // TODO:弹出框方式以后改