Commit 98fe281e84c3ec101999de09265344c378305fde

Authored by 李强
2 parents efbd3894 e60deedd

Merge branch 'master' of git@192.168.168.201:panzhaov5/bsth_control.git

Showing 36 changed files with 1995 additions and 1571 deletions

Too many changes to show.

To preserve performance only 36 of 64 files are displayed.

hs_err_pid6460.log 0 → 100644
  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/StartCommand.java
@@ -133,22 +133,26 @@ public class StartCommand implements CommandLineRunner{ @@ -133,22 +133,26 @@ public class StartCommand implements CommandLineRunner{
133 */ 133 */
134 scheduler.scheduleWithFixedDelay(firstScheduleIssuedThread, 60 , 60 * 2, TimeUnit.SECONDS); 134 scheduler.scheduleWithFixedDelay(firstScheduleIssuedThread, 60 , 60 * 2, TimeUnit.SECONDS);
135 135
136 - //延迟一会 136 +
137 /* new Timer().schedule(new TimerTask() { 137 /* new Timer().schedule(new TimerTask() {
138 138
139 @Override 139 @Override
140 public void run() { 140 public void run() {
141 - //临时全量刷车辆线路  
142 List<CarConfigInfo> ccis = carConfigInfoRepository.findAll(); 141 List<CarConfigInfo> ccis = carConfigInfoRepository.findAll();
143 Cars car; 142 Cars car;
144 Line line; 143 Line line;
145 String lineCode; 144 String lineCode;
146 - int code; 145 + System.out.println("ccis size: " + ccis.size());
147 for(CarConfigInfo cci : ccis){ 146 for(CarConfigInfo cci : ccis){
148 car = cci.getCl(); 147 car = cci.getCl();
149 line = cci.getXl(); 148 line = cci.getXl();
150 lineCode = line.getLineCode(); 149 lineCode = line.getLineCode();
151 - System.out.println("车辆:" + car.getInsideCode() + "切换线路:" + line.getLineCode()); 150 +
  151 + String data = directiveService.createDeviceRefreshData(CommonMapped.vehicDeviceBiMap.inverse().get(car.getInsideCode())
  152 + , Integer.parseInt(lineCode));
  153 + System.out.println(data);
  154 + int code = HttpUtils.postJson(data);
  155 + System.out.println("车辆:" + car.getInsideCode() + "刷新线路:" + line.getLineCode());
152 code = directiveService.lineChange(car.getInsideCode(), Integer.parseInt(lineCode)); 156 code = directiveService.lineChange(car.getInsideCode(), Integer.parseInt(lineCode));
153 //directiveService.send60Phrase(car.getInsideCode(), ""); 157 //directiveService.send60Phrase(car.getInsideCode(), "");
154 System.out.println("返回值:" + code); 158 System.out.println("返回值:" + code);
src/main/java/com/bsth/Test.java 0 → 100644
  1 +//package com.bsth;
  2 +//
  3 +//import java.io.ByteArrayOutputStream;
  4 +//import java.io.IOException;
  5 +//import java.io.InputStream;
  6 +//import java.io.OutputStream;
  7 +//import java.net.HttpURLConnection;
  8 +//import java.net.URL;
  9 +//import java.util.HashMap;
  10 +//import java.util.Map;
  11 +//
  12 +//import org.apache.commons.io.IOUtils;
  13 +//
  14 +//import com.fasterxml.jackson.databind.ObjectMapper;
  15 +//
  16 +//public class Test {
  17 +//
  18 +// public static void main(String[] args) {
  19 +// Map<String, Object> map = new HashMap<>();
  20 +// map.put("timestamp", 1469764939000L);
  21 +// map.put("operCode", 128);
  22 +// map.put("deviceId", "66ML0007");
  23 +//
  24 +// Map<String , Object> dataMap = new HashMap<>();
  25 +// dataMap.put("requestCode", 161);
  26 +// dataMap.put("lineId", 1025);
  27 +// dataMap.put("operCode2", 38);
  28 +//
  29 +// map.put("data", dataMap);
  30 +// request(map, "http://192.168.168.171:9088/control/upstream");
  31 +//
  32 +// }
  33 +//
  34 +// private static Map<String, Object> request(Map<String, Object> map, String url) {
  35 +// InputStream in = null;
  36 +// OutputStream out = null;
  37 +// HttpURLConnection con = null;
  38 +// try {
  39 +// con = (HttpURLConnection)new URL(url).openConnection();
  40 +// con.setRequestMethod("POST");
  41 +// con.setRequestProperty("keep-alive", "true");
  42 +// con.setRequestProperty("accept", "*/*");
  43 +// con.setDoInput(true);
  44 +// con.setDoOutput(true);
  45 +// con.setReadTimeout(2500);
  46 +// con.setConnectTimeout(2500);
  47 +// out = con.getOutputStream();
  48 +// out.write("json=".getBytes());
  49 +// out.write(new ObjectMapper().writeValueAsBytes(map));
  50 +// out.flush();
  51 +// System.out.println("con.getResponseCode(): " + con.getResponseCode());
  52 +// if (con.getResponseCode() == 200) {
  53 +// in = con.getInputStream();
  54 +// ByteArrayOutputStream bout = new ByteArrayOutputStream();
  55 +// IOUtils.copy(in, bout); bout.close();
  56 +// System.out.println("Message:" + new String(bout.toByteArray()));
  57 +// return new ObjectMapper().readValue(bout.toByteArray(), Map.class);
  58 +// }
  59 +// } catch (IOException e) {
  60 +// e.printStackTrace();
  61 +// } finally {
  62 +// con.disconnect();
  63 +// try {
  64 +// if (in != null) in.close();
  65 +// if (out != null) out.close();
  66 +// } catch (IOException e) {
  67 +// e.printStackTrace();
  68 +// }
  69 +// }
  70 +// return null;
  71 +// }
  72 +//}
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
@@ -255,8 +255,8 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -255,8 +255,8 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
255 * @throws 255 * @throws
256 */ 256 */
257 @RequestMapping(value = "/findRouteByLine") 257 @RequestMapping(value = "/findRouteByLine")
258 - public Map<String, Object> findRouteByLine(@RequestParam Integer lineId){  
259 - return scheduleRealInfoService.findRouteByLine(lineId); 258 + public Map<String, Object> findRouteByLine(@RequestParam Integer lineCode){
  259 + return scheduleRealInfoService.findRouteByLine(lineCode);
260 } 260 }
261 261
262 @RequestMapping(value = "/test/getSch") 262 @RequestMapping(value = "/test/getSch")
@@ -264,6 +264,18 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -264,6 +264,18 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
264 getSchedulePlanThread.start(); 264 getSchedulePlanThread.start();
265 return 1; 265 return 1;
266 } 266 }
  267 +
  268 + /**
  269 + *
  270 + * @Title: removeChildTask
  271 + * @Description: TODO(删除子任务)
  272 + * @param @param taskId 子任务ID
  273 + * @throws
  274 + */
  275 + @RequestMapping(value = "/childTask/{taskId}", method = RequestMethod.DELETE)
  276 + public Map<String, Object> removeChildTask(@PathVariable("taskId") Long taskId){
  277 + return scheduleRealInfoService.removeChildTask(taskId);
  278 + }
267 279
268 /** 280 /**
269 * 281 *
src/main/java/com/bsth/controller/schedule/TTInfoController.java
@@ -7,6 +7,7 @@ import com.bsth.repository.schedule.TTInfoRepository; @@ -7,6 +7,7 @@ import com.bsth.repository.schedule.TTInfoRepository;
7 import com.bsth.service.schedule.utils.DataToolsProperties; 7 import com.bsth.service.schedule.utils.DataToolsProperties;
8 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.boot.context.properties.EnableConfigurationProperties; 9 import org.springframework.boot.context.properties.EnableConfigurationProperties;
  10 +import org.springframework.data.domain.Page;
10 import org.springframework.web.bind.annotation.*; 11 import org.springframework.web.bind.annotation.*;
11 12
12 import java.util.Map; 13 import java.util.Map;
@@ -59,4 +60,13 @@ public class TTInfoController extends BaseController&lt;TTInfo, Long&gt; { @@ -59,4 +60,13 @@ public class TTInfoController extends BaseController&lt;TTInfo, Long&gt; {
59 // 一般比较自编号是否重复 60 // 一般比较自编号是否重复
60 return baseService.validateEquale(map); 61 return baseService.validateEquale(map);
61 } 62 }
  63 +
  64 + @Override
  65 + public Page<TTInfo> list(@RequestParam Map<String, Object> map, @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size, @RequestParam(defaultValue = "id") String order, @RequestParam(defaultValue = "DESC") String direction) {
  66 + // 如果有isCancel键值,将其值变成boolean
  67 + if (map.get("isCancel_eq") != null)
  68 + map.put("isCancel_eq", new Boolean(map.get("isCancel_eq").toString()));
  69 +
  70 + return super.list(map, page, size, order, direction);
  71 + }
62 } 72 }
src/main/java/com/bsth/entity/realcontrol/ChildTaskPlan.java
@@ -223,5 +223,14 @@ public class ChildTaskPlan { @@ -223,5 +223,14 @@ public class ChildTaskPlan {
223 public void setEndStationName(String endStationName) { 223 public void setEndStationName(String endStationName) {
224 this.endStationName = endStationName; 224 this.endStationName = endStationName;
225 } 225 }
226 - 226 +
  227 + @Override
  228 + public int hashCode() {
  229 + return ("" + this.getId() + this.getSchedule().getId()).hashCode();
  230 + }
  231 +
  232 + @Override
  233 + public boolean equals(Object obj) {
  234 + return this.id.equals(((ChildTaskPlan)obj).getId());
  235 + }
227 } 236 }
src/main/java/com/bsth/entity/realcontrol/ScheduleRealInfo.java
@@ -183,7 +183,7 @@ public class ScheduleRealInfo { @@ -183,7 +183,7 @@ public class ScheduleRealInfo {
183 private String qdzArrDatesj; 183 private String qdzArrDatesj;
184 184
185 /** 子任务 */ 185 /** 子任务 */
186 - @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 186 + @OneToMany(fetch = FetchType.LAZY/*, cascade = CascadeType.ALL*/)
187 private Set<ChildTaskPlan> cTasks = new HashSet<>(); 187 private Set<ChildTaskPlan> cTasks = new HashSet<>();
188 188
189 /** ---------------- */ 189 /** ---------------- */
src/main/java/com/bsth/entity/schedule/TTInfo.java
@@ -41,6 +41,9 @@ public class TTInfo { @@ -41,6 +41,9 @@ public class TTInfo {
41 /** 是否启用调度模版 */ 41 /** 是否启用调度模版 */
42 @Column(nullable = false) 42 @Column(nullable = false)
43 private Boolean isEnableDisTemplate; 43 private Boolean isEnableDisTemplate;
  44 + /** 是否删除(标记) */
  45 + @Column(nullable = false)
  46 + private Boolean isCancel = false;
44 47
45 /** 模版类型(TODO:时刻表,间隔式,这个以后用枚举还是字典再议,现在先用文字) */ 48 /** 模版类型(TODO:时刻表,间隔式,这个以后用枚举还是字典再议,现在先用文字) */
46 private String templateType; 49 private String templateType;
@@ -193,4 +196,11 @@ public class TTInfo { @@ -193,4 +196,11 @@ public class TTInfo {
193 this.updateDate = updateDate; 196 this.updateDate = updateDate;
194 } 197 }
195 198
  199 + public Boolean getIsCancel() {
  200 + return isCancel;
  201 + }
  202 +
  203 + public void setIsCancel(Boolean isCancel) {
  204 + this.isCancel = isCancel;
  205 + }
196 } 206 }
src/main/java/com/bsth/filter/AccessLogFilter.java
@@ -38,7 +38,7 @@ public class AccessLogFilter extends BaseFilter { @@ -38,7 +38,7 @@ public class AccessLogFilter extends BaseFilter {
38 HttpServletResponse response, FilterChain chain) 38 HttpServletResponse response, FilterChain chain)
39 throws IOException, ServletException { 39 throws IOException, ServletException {
40 40
41 - String username = SecurityUtils.getCurrentUser().getName(); //等集成shiro之后再取 41 + String username = /*SecurityUtils.getCurrentUser().getName()*/"test"; //等集成shiro之后再取
42 String jsessionId = request.getRequestedSessionId(); 42 String jsessionId = request.getRequestedSessionId();
43 String ip = IpUtils.getIpAddr(request); 43 String ip = IpUtils.getIpAddr(request);
44 String userAgent = request.getHeader("User-Agent"); 44 String userAgent = request.getHeader("User-Agent");
src/main/java/com/bsth/repository/schedule/SchedulePlanInfoRepository.java
@@ -21,4 +21,6 @@ public interface SchedulePlanInfoRepository extends BaseRepository&lt;SchedulePlanI @@ -21,4 +21,6 @@ public interface SchedulePlanInfoRepository extends BaseRepository&lt;SchedulePlanI
21 @Query(value = "select s from SchedulePlanInfo s where scheduleDate=?1") 21 @Query(value = "select s from SchedulePlanInfo s where scheduleDate=?1")
22 List<SchedulePlanInfo> findByDate(Date date); 22 List<SchedulePlanInfo> findByDate(Date date);
23 23
  24 + Long deleteByXlAndScheduleDateGreaterThanEqualAndScheduleDateLessThanEqual(Integer xlid, Date startDate, Date endDate);
  25 +
24 } 26 }
src/main/java/com/bsth/repository/schedule/TTInfoDetailRepository.java
@@ -32,7 +32,7 @@ public interface TTInfoDetailRepository extends BaseRepository&lt;TTInfoDetail, Lon @@ -32,7 +32,7 @@ public interface TTInfoDetailRepository extends BaseRepository&lt;TTInfoDetail, Lon
32 32
33 void deleteByTtinfoId(Long ttid); 33 void deleteByTtinfoId(Long ttid);
34 34
35 - @Query(value = "select max(tt.fcno) from TTInfoDetail tt where tt.xl.id =?1 and tt.ttinfo.id =?2") 35 + @Query(value = "select max(tt.fcno) as mx from bsth_c_s_ttinfo_detail tt where tt.xl =?1 and tt.ttinfo =?2", nativeQuery = true)
36 Long findMaxFcno(Integer xlid, Long ttinfoid); 36 Long findMaxFcno(Integer xlid, Long ttinfoid);
37 37
38 } 38 }
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
@@ -80,7 +80,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L @@ -80,7 +80,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
80 80
81 Map<String, Object> outgoAdjustAll(String params); 81 Map<String, Object> outgoAdjustAll(String params);
82 82
83 - Map<String, Object> findRouteByLine(Integer lineId); 83 + Map<String, Object> findRouteByLine(Integer lineCode);
84 84
85 List<Map<String,String>> findLine(String line); 85 List<Map<String,String>> findLine(String line);
86 86
@@ -93,4 +93,6 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L @@ -93,4 +93,6 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
93 List<ScheduleRealInfo> correctForm(String line,String startDate,String endDate,String lpName,String code); 93 List<ScheduleRealInfo> correctForm(String line,String startDate,String endDate,String lpName,String code);
94 94
95 List<ScheduleRealInfo> queryListWaybill(String jName,String clZbh,String lpName); 95 List<ScheduleRealInfo> queryListWaybill(String jName,String clZbh,String lpName);
  96 +
  97 + Map<String, Object> removeChildTask(Long taskId);
96 } 98 }
src/main/java/com/bsth/service/realcontrol/impl/ChildTaskPlanServiceImpl.java
@@ -9,6 +9,7 @@ import org.springframework.stereotype.Service; @@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
9 9
10 import com.bsth.entity.realcontrol.ChildTaskPlan; 10 import com.bsth.entity.realcontrol.ChildTaskPlan;
11 import com.bsth.entity.realcontrol.ScheduleRealInfo; 11 import com.bsth.entity.realcontrol.ScheduleRealInfo;
  12 +import com.bsth.repository.realcontrol.ChildTaskPlanRepository;
12 import com.bsth.service.impl.BaseServiceImpl; 13 import com.bsth.service.impl.BaseServiceImpl;
13 import com.bsth.service.realcontrol.ChildTaskPlanService; 14 import com.bsth.service.realcontrol.ChildTaskPlanService;
14 import com.bsth.service.realcontrol.buffer.ScheduleBuffer; 15 import com.bsth.service.realcontrol.buffer.ScheduleBuffer;
@@ -17,8 +18,11 @@ import com.bsth.vehicle.common.CommonMapped; @@ -17,8 +18,11 @@ import com.bsth.vehicle.common.CommonMapped;
17 @Service 18 @Service
18 public class ChildTaskPlanServiceImpl extends BaseServiceImpl<ChildTaskPlan, Long> implements ChildTaskPlanService{ 19 public class ChildTaskPlanServiceImpl extends BaseServiceImpl<ChildTaskPlan, Long> implements ChildTaskPlanService{
19 20
  21 + /*@Autowired
  22 + ScheduleRealInfoServiceImpl scheduleRealInfoService;*/
  23 +
20 @Autowired 24 @Autowired
21 - ScheduleRealInfoServiceImpl scheduleRealInfoService; 25 + ChildTaskPlanRepository childTaskPlanRepository;
22 26
23 @Transactional 27 @Transactional
24 @Override 28 @Override
@@ -29,14 +33,28 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon @@ -29,14 +33,28 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon
29 33
30 t.setStartStationName(map.get(t.getStartStation())); 34 t.setStartStationName(map.get(t.getStartStation()));
31 t.setEndStationName(map.get(t.getEndStation())); 35 t.setEndStationName(map.get(t.getEndStation()));
32 -  
33 - //rs = super.save(t);  
34 - 36 + //先持久化子任务
  37 + rs = super.save(t);
  38 + //再关联主任务
35 ScheduleRealInfo sch = ScheduleBuffer.findOne(t.getSchedule().getId()); 39 ScheduleRealInfo sch = ScheduleBuffer.findOne(t.getSchedule().getId());
36 sch.getcTasks().add(t); 40 sch.getcTasks().add(t);
37 - rs = scheduleRealInfoService.save(sch); 41 + //rs = scheduleRealInfoService.save(sch);
38 42
  43 + rs.put("t", sch);
  44 + return rs;
  45 + }
  46 +
  47 + @Override
  48 + public Map<String, Object> delete(Long id) {
  49 + Map<String, Object> rs;
  50 +
  51 + ChildTaskPlan cPlan = childTaskPlanRepository.findOne(id);
  52 + //解除和主任务关联
  53 + ScheduleRealInfo sch = ScheduleBuffer.findOne(cPlan.getSchedule().getId());
  54 + sch.getcTasks().remove(cPlan);
  55 + //删除子任务
  56 + rs = super.delete(id);
  57 + rs.put("t", sch);
39 return rs; 58 return rs;
40 } 59 }
41 -  
42 } 60 }
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -25,12 +25,14 @@ import com.bsth.common.ResponseCode; @@ -25,12 +25,14 @@ import com.bsth.common.ResponseCode;
25 import com.bsth.entity.Cars; 25 import com.bsth.entity.Cars;
26 import com.bsth.entity.Line; 26 import com.bsth.entity.Line;
27 import com.bsth.entity.Personnel; 27 import com.bsth.entity.Personnel;
  28 +import com.bsth.entity.realcontrol.ChildTaskPlan;
28 import com.bsth.entity.realcontrol.ScheduleRealInfo; 29 import com.bsth.entity.realcontrol.ScheduleRealInfo;
29 import com.bsth.entity.schedule.CarConfigInfo; 30 import com.bsth.entity.schedule.CarConfigInfo;
30 import com.bsth.entity.schedule.EmployeeConfigInfo; 31 import com.bsth.entity.schedule.EmployeeConfigInfo;
31 import com.bsth.entity.schedule.GuideboardInfo; 32 import com.bsth.entity.schedule.GuideboardInfo;
32 import com.bsth.entity.sys.SysUser; 33 import com.bsth.entity.sys.SysUser;
33 import com.bsth.repository.LineRepository; 34 import com.bsth.repository.LineRepository;
  35 +import com.bsth.repository.realcontrol.ChildTaskPlanRepository;
34 import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; 36 import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
35 import com.bsth.repository.schedule.CarConfigInfoRepository; 37 import com.bsth.repository.schedule.CarConfigInfoRepository;
36 import com.bsth.repository.schedule.EmployeeConfigInfoRepository; 38 import com.bsth.repository.schedule.EmployeeConfigInfoRepository;
@@ -74,6 +76,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -74,6 +76,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
74 76
75 @Autowired 77 @Autowired
76 GuideboardInfoRepository guideboardInfoRepository; 78 GuideboardInfoRepository guideboardInfoRepository;
  79 +
  80 + @Autowired
  81 + ChildTaskPlanRepository cTaskPlanRepository;
77 82
78 Logger logger = LoggerFactory.getLogger(this.getClass()); 83 Logger logger = LoggerFactory.getLogger(this.getClass());
79 84
@@ -757,9 +762,10 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -757,9 +762,10 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
757 } 762 }
758 763
759 @Override 764 @Override
760 - public Map<String, Object> findRouteByLine(Integer lineId) { 765 + public Map<String, Object> findRouteByLine(Integer lineCode) {
761 Map<String, Object> map = new HashMap<>(); 766 Map<String, Object> map = new HashMap<>();
762 //上行 767 //上行
  768 + Integer lineId = CommonMapped.lineIdToCode.inverse().get(lineCode);
763 map.put("line.id_eq", lineId); 769 map.put("line.id_eq", lineId);
764 map.put("directions_eq", 0); 770 map.put("directions_eq", 0);
765 List<Map<String, Object>> upList = sectionRouteService.getSectionRoute(map); 771 List<Map<String, Object>> upList = sectionRouteService.getSectionRoute(map);
@@ -923,4 +929,22 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -923,4 +929,22 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
923 String lpName) { 929 String lpName) {
924 return scheduleRealInfoRepository.queryListWaybill(jName,clZbh,lpName); 930 return scheduleRealInfoRepository.queryListWaybill(jName,clZbh,lpName);
925 } 931 }
  932 +
  933 + @Override
  934 + public Map<String, Object> removeChildTask(Long taskId) {
  935 + Map<String, Object> rs = new HashMap<>();
  936 + ChildTaskPlan chTask = cTaskPlanRepository.findOne(taskId);
  937 +
  938 + ScheduleRealInfo sch = ScheduleBuffer.findOne(chTask.getSchedule().getId());
  939 + try {
  940 +
  941 + sch.getcTasks().remove(chTask);
  942 + scheduleRealInfoRepository.save(sch);
  943 + rs.put("status", ResponseCode.SUCCESS);
  944 + } catch (Exception e) {
  945 + logger.error("", e);
  946 + rs.put("status", ResponseCode.ERROR);
  947 + }
  948 + return rs;
  949 + }
926 } 950 }
src/main/java/com/bsth/service/schedule/SchedulePlanServiceImpl.java
@@ -3,6 +3,7 @@ package com.bsth.service.schedule; @@ -3,6 +3,7 @@ package com.bsth.service.schedule;
3 import com.bsth.entity.Line; 3 import com.bsth.entity.Line;
4 import com.bsth.entity.schedule.*; 4 import com.bsth.entity.schedule.*;
5 import com.bsth.entity.schedule.rule.ScheduleRule1Flat; 5 import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  6 +import com.bsth.repository.schedule.SchedulePlanInfoRepository;
6 import com.bsth.repository.schedule.SchedulePlanRepository; 7 import com.bsth.repository.schedule.SchedulePlanRepository;
7 import com.bsth.service.LineService; 8 import com.bsth.service.LineService;
8 import com.bsth.service.impl.BaseServiceImpl; 9 import com.bsth.service.impl.BaseServiceImpl;
@@ -37,20 +38,15 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt; @@ -37,20 +38,15 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt;
37 private IStrategy strategy; 38 private IStrategy strategy;
38 @Autowired 39 @Autowired
39 private SchedulePlanRepository schedulePlanRepository; 40 private SchedulePlanRepository schedulePlanRepository;
  41 + @Autowired
  42 + private SchedulePlanInfoRepository schedulePlanInfoRepository;
40 43
41 @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) 44 @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
42 @Override 45 @Override
43 public Map<String, Object> save(SchedulePlan schedulePlan) { 46 public Map<String, Object> save(SchedulePlan schedulePlan) {
44 - // 查询参数  
45 - Map<String, Object> param = new HashMap<>();  
46 -  
47 - // 1、查出指定线路的所有规则  
48 - Line xl = lineService.findById(schedulePlan.getXl().getId()); // 查找线路具体信息  
49 - param.clear();  
50 - param.put("xl.id_eq", xl.getId());  
51 - Iterable<ScheduleRule1Flat> scheduleRule1FlatIterable = scheduleRule1FlatService.list(param);  
52 - if (!scheduleRule1FlatIterable.iterator().hasNext())  
53 - throw new RuntimeException("线路:" + xl.getName() + " 没有配置规则!"); 47 + // 1-1、查找线路具体信息
  48 + Line xl = strategy.getLine(schedulePlan.getXl().getId());
  49 + // 1-2、查出指定线路的所有规则
54 TTInfo ttInfo = strategy.getTTInfo(xl.getId()); // 时刻表id 50 TTInfo ttInfo = strategy.getTTInfo(xl.getId()); // 时刻表id
55 schedulePlan.setTtInfo(ttInfo); // 关联的时刻表 51 schedulePlan.setTtInfo(ttInfo); // 关联的时刻表
56 52
@@ -59,7 +55,7 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt; @@ -59,7 +55,7 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt;
59 ScheduleCalcuParam_input scheduleCalcuParam_input = new ScheduleCalcuParam_input(schedulePlan); 55 ScheduleCalcuParam_input scheduleCalcuParam_input = new ScheduleCalcuParam_input(schedulePlan);
60 // 每个规则对应的输入参数 56 // 每个规则对应的输入参数
61 List<ScheduleRule_input> scheduleRule_inputs = new ArrayList<>(); 57 List<ScheduleRule_input> scheduleRule_inputs = new ArrayList<>();
62 - Iterator<ScheduleRule1Flat> scheduleRule1FlatIterator = scheduleRule1FlatIterable.iterator(); 58 + Iterator<ScheduleRule1Flat> scheduleRule1FlatIterator = strategy.getScheduleRule(xl.getId()).iterator();
63 while (scheduleRule1FlatIterator.hasNext()) { 59 while (scheduleRule1FlatIterator.hasNext()) {
64 ScheduleRule1Flat scheduleRule1Flat_temp = scheduleRule1FlatIterator.next(); 60 ScheduleRule1Flat scheduleRule1Flat_temp = scheduleRule1FlatIterator.next();
65 ScheduleRule_input scheduleRule_input = new ScheduleRule_input(scheduleRule1Flat_temp); 61 ScheduleRule_input scheduleRule_input = new ScheduleRule_input(scheduleRule1Flat_temp);
@@ -86,6 +82,11 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt; @@ -86,6 +82,11 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt;
86 82
87 System.out.println(scheduleResults_output.showGuideboardDesc1()); 83 System.out.println(scheduleResults_output.showGuideboardDesc1());
88 84
  85 + // 2-3、如果排班的数据之前已经有了,删除之前的数据
  86 + schedulePlanInfoRepository.deleteByXlAndScheduleDateGreaterThanEqualAndScheduleDateLessThanEqual(
  87 + xl.getId(), schedulePlan.getScheduleFromTime(), schedulePlan.getScheduleToTime()
  88 + );
  89 +
89 // 3、根据规则返回,组合最后的输出数据 90 // 3、根据规则返回,组合最后的输出数据
90 // 3-1、根据注入的策略服务,获取原始数据 91 // 3-1、根据注入的策略服务,获取原始数据
91 Multimap<Long, TTInfoDetail> gbdTTinfoMaps = strategy.getGuideboardXlTTInfoDetailMaps(xl.getId()); // 路牌对应时刻明细 92 Multimap<Long, TTInfoDetail> gbdTTinfoMaps = strategy.getGuideboardXlTTInfoDetailMaps(xl.getId()); // 路牌对应时刻明细
src/main/java/com/bsth/service/schedule/TTInfoDetailServiceImpl.java
@@ -9,7 +9,6 @@ import jxl.Sheet; @@ -9,7 +9,6 @@ import jxl.Sheet;
9 import jxl.Workbook; 9 import jxl.Workbook;
10 import org.apache.commons.lang3.StringUtils; 10 import org.apache.commons.lang3.StringUtils;
11 import org.joda.time.DateTime; 11 import org.joda.time.DateTime;
12 -import org.pentaho.di.core.logging.LogLevel;  
13 import org.pentaho.di.trans.Trans; 12 import org.pentaho.di.trans.Trans;
14 import org.pentaho.di.trans.TransMeta; 13 import org.pentaho.di.trans.TransMeta;
15 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.beans.factory.annotation.Autowired;
@@ -45,14 +44,26 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt; @@ -45,14 +44,26 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt;
45 private String fcsj; 44 private String fcsj;
46 /** 班次类型 */ 45 /** 班次类型 */
47 private String bc_type; 46 private String bc_type;
  47 + /** 线路上下行 */
  48 + private String xldir;
  49 + /** 是偶分班 */
  50 + private Boolean isfb;
48 51
49 public FcInfo() { 52 public FcInfo() {
50 } 53 }
51 54
52 - public FcInfo(Long ttdid, String bc_type, String fcsj) {  
53 - this.ttdid = ttdid; 55 + public FcInfo(String ttdid_str, String bc_type, String fcsj, String xldir, String isfb) {
  56 + this.ttdid = StringUtils.isEmpty(ttdid_str) ? null : Long.valueOf(ttdid_str);
54 this.bc_type = bc_type; 57 this.bc_type = bc_type;
55 this.fcsj = fcsj; 58 this.fcsj = fcsj;
  59 + this.xldir = xldir;
  60 + if ("N".equals(isfb))
  61 + this.isfb = false;
  62 + else if ("Y".equals(isfb))
  63 + this.isfb = true;
  64 + else
  65 + this.isfb = false;
  66 +
56 } 67 }
57 68
58 public Long getTtdid() { 69 public Long getTtdid() {
@@ -78,6 +89,22 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt; @@ -78,6 +89,22 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt;
78 public void setBc_type(String bc_type) { 89 public void setBc_type(String bc_type) {
79 this.bc_type = bc_type; 90 this.bc_type = bc_type;
80 } 91 }
  92 +
  93 + public String getXldir() {
  94 + return xldir;
  95 + }
  96 +
  97 + public void setXldir(String xldir) {
  98 + this.xldir = xldir;
  99 + }
  100 +
  101 + public Boolean getIsfb() {
  102 + return isfb;
  103 + }
  104 +
  105 + public void setIsfb(Boolean isfb) {
  106 + this.isfb = isfb;
  107 + }
81 } 108 }
82 109
83 /** 110 /**
@@ -119,7 +146,7 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt; @@ -119,7 +146,7 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt;
119 dataToolsProperties.getTtinfodetailForeditktr()).toURI()); 146 dataToolsProperties.getTtinfodetailForeditktr()).toURI());
120 TransMeta transMeta = new TransMeta(ktrFile.getAbsolutePath()); 147 TransMeta transMeta = new TransMeta(ktrFile.getAbsolutePath());
121 Trans trans = new Trans(transMeta); 148 Trans trans = new Trans(transMeta);
122 - trans.setLogLevel(LogLevel.DEBUG); 149 +// trans.setLogLevel(LogLevel.DEBUG);
123 // 1.2、设定命名参数,TODO:之后还要添加其他命名参数 150 // 1.2、设定命名参数,TODO:之后还要添加其他命名参数
124 String outputFilePath = "ttinfodetail_" + new DateTime().toString("yyyy-MM-dd_HH-mm-ss"); 151 String outputFilePath = "ttinfodetail_" + new DateTime().toString("yyyy-MM-dd_HH-mm-ss");
125 trans.setParameterValue("tempfilepath", dataToolsProperties.getTransTempdir() + File.separator + outputFilePath); // 数据输出文件路径 152 trans.setParameterValue("tempfilepath", dataToolsProperties.getTransTempdir() + File.separator + outputFilePath); // 数据输出文件路径
@@ -152,21 +179,22 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt; @@ -152,21 +179,22 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt;
152 for (int r = 1; r < sheet.getRows(); r++) { 179 for (int r = 1; r < sheet.getRows(); r++) {
153 List<FcInfo> fcInfos = new ArrayList<>(); 180 List<FcInfo> fcInfos = new ArrayList<>();
154 // 每行第一列都是路牌 181 // 每行第一列都是路牌
155 - fcInfos.add(new FcInfo(null, null, sheet.getCell(0, r).getContents())); // 用fcsj放置路牌显示  
156 - for (int c = 1; c <= maxfcno * 4; ) {  
157 - Long ttdid = StringUtils.isEmpty(sheet.getCell(c, r).getContents()) ? null :  
158 - Long.valueOf(sheet.getCell(c, r).getContents());  
159 - String fcsj = sheet.getCell(c + 1, r).getContents();  
160 - String fzdname = sheet.getCell(c + 2, r).getContents();  
161 - String bctype = sheet.getCell(c + 3, r).getContents();  
162 -  
163 - FcInfo fcInfo = new FcInfo(ttdid, bctype, fcsj);  
164 -  
165 - if (StringUtils.isNotEmpty(fzdname ))  
166 - headarrays[(int)(c / 4) + 1] = fzdname; 182 + fcInfos.add(new FcInfo(null, null, sheet.getCell(0, r).getContents(), null, null)); // 用fcsj放置路牌显示
  183 + for (int c = 1; c <= maxfcno * 6; ) {
  184 + String ttdid_str = sheet.getCell(c, r).getContents(); // 时刻表明细id
  185 + String fcsj = sheet.getCell(c + 1, r).getContents(); // 发车时间
  186 + String fzdname = sheet.getCell(c + 2, r).getContents(); // 发车站点名称
  187 + String bctype = sheet.getCell(c + 3, r).getContents(); // 班次类型
  188 + String xldir = sheet.getCell(c + 4, r).getContents(); // 线路上下行
  189 + String isfb = sheet.getCell(c + 5, r).getContents(); // 是否分班
  190 +
  191 + FcInfo fcInfo = new FcInfo(ttdid_str, bctype, fcsj, xldir, isfb);
  192 +
  193 + if (StringUtils.isNotEmpty(fzdname))
  194 + headarrays[(int)(c / 6) + 1] = fzdname;
167 fcInfos.add(fcInfo); 195 fcInfos.add(fcInfo);
168 196
169 - c += 4; 197 + c += 6;
170 } 198 }
171 editInfo.getContents().add(fcInfos); 199 editInfo.getContents().add(fcInfos);
172 } 200 }
src/main/java/com/bsth/service/schedule/TTInfoServiceImpl.java
1 package com.bsth.service.schedule; 1 package com.bsth.service.schedule;
2 2
  3 +import com.bsth.common.ResponseCode;
3 import com.bsth.entity.schedule.TTInfo; 4 import com.bsth.entity.schedule.TTInfo;
4 -import com.bsth.repository.schedule.TTInfoDetailRepository; 5 +import com.bsth.repository.schedule.TTInfoRepository;
5 import com.bsth.service.impl.BaseServiceImpl; 6 import com.bsth.service.impl.BaseServiceImpl;
6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.dao.DataIntegrityViolationException;
7 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
8 10
9 import javax.transaction.Transactional; 11 import javax.transaction.Transactional;
  12 +import java.util.HashMap;
10 import java.util.Map; 13 import java.util.Map;
11 14
12 /** 15 /**
@@ -16,11 +19,21 @@ import java.util.Map; @@ -16,11 +19,21 @@ import java.util.Map;
16 @Transactional 19 @Transactional
17 public class TTInfoServiceImpl extends BaseServiceImpl<TTInfo, Long> implements TTInfoService { 20 public class TTInfoServiceImpl extends BaseServiceImpl<TTInfo, Long> implements TTInfoService {
18 @Autowired 21 @Autowired
19 - private TTInfoDetailRepository ttInfoDetailRepository; 22 + private TTInfoRepository ttInfoRepository;
20 23
21 @Override 24 @Override
22 public Map<String, Object> delete(Long aLong) { 25 public Map<String, Object> delete(Long aLong) {
23 - ttInfoDetailRepository.deleteByTtinfoId(aLong);  
24 - return super.delete(aLong); 26 + TTInfo ttInfo = ttInfoRepository.findOne(aLong);
  27 + ttInfo.setIsCancel(true);
  28 +
  29 + Map<String, Object> map = new HashMap<>();
  30 + try{
  31 + ttInfoRepository.save(ttInfo);
  32 + map.put("status", ResponseCode.SUCCESS);
  33 + }catch(DataIntegrityViolationException de){
  34 + map.put("status", ResponseCode.ERROR);
  35 + map.put("msg", "“完整性约束”校验失败,请检查要删除的对象是否存在外键约束");
  36 + }
  37 + return map;
25 } 38 }
26 } 39 }
src/main/java/com/bsth/service/schedule/rules/strategy/IStrategy.java
1 package com.bsth.service.schedule.rules.strategy; 1 package com.bsth.service.schedule.rules.strategy;
2 2
  3 +import com.bsth.entity.Line;
3 import com.bsth.entity.schedule.CarConfigInfo; 4 import com.bsth.entity.schedule.CarConfigInfo;
4 import com.bsth.entity.schedule.EmployeeConfigInfo; 5 import com.bsth.entity.schedule.EmployeeConfigInfo;
5 import com.bsth.entity.schedule.TTInfo; 6 import com.bsth.entity.schedule.TTInfo;
6 import com.bsth.entity.schedule.TTInfoDetail; 7 import com.bsth.entity.schedule.TTInfoDetail;
  8 +import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
7 import com.google.common.collect.Multimap; 9 import com.google.common.collect.Multimap;
8 10
9 import java.util.Map; 11 import java.util.Map;
@@ -14,28 +16,42 @@ import java.util.Map; @@ -14,28 +16,42 @@ import java.util.Map;
14 public interface IStrategy { 16 public interface IStrategy {
15 17
16 /** 18 /**
17 - * 查找指定线路下,可用的时刻表; 19 + * 获取线路信息。
  20 + * @param xlId 线路id
  21 + * @return
  22 + */
  23 + Line getLine(Integer xlId);
  24 +
  25 + /**
  26 + * 获取指定线路下,可用的时刻表。
18 * @param xlId 线路id 27 * @param xlId 线路id
19 * @return 时刻表 28 * @return 时刻表
20 */ 29 */
21 TTInfo getTTInfo(Integer xlId); 30 TTInfo getTTInfo(Integer xlId);
22 31
23 /** 32 /**
24 - * 查找指定线路下,路牌与时刻明细对应的Map。 33 + * 获取指定线路下,可用的排班规则。
  34 + * @param xlId
  35 + * @return
  36 + */
  37 + Iterable<ScheduleRule1Flat> getScheduleRule(Integer xlId);
  38 +
  39 + /**
  40 + * 获取指定线路下,路牌与时刻明细对应的Map。
25 * @param xlId 线路id 41 * @param xlId 线路id
26 * @return 路牌id为key,时刻明细 Collection<TTInfoDetail> 为value 42 * @return 路牌id为key,时刻明细 Collection<TTInfoDetail> 为value
27 */ 43 */
28 Multimap<Long, TTInfoDetail> getGuideboardXlTTInfoDetailMaps(Integer xlId); 44 Multimap<Long, TTInfoDetail> getGuideboardXlTTInfoDetailMaps(Integer xlId);
29 45
30 /** 46 /**
31 - * 查找指定线路下,车辆配置与车辆信息对应的Map。 47 + * 获取指定线路下,车辆配置与车辆信息对应的Map。
32 * @param xlId 线路id 48 * @param xlId 线路id
33 * @return 车辆配置id为key,具体车辆配置信息为value。 49 * @return 车辆配置id为key,具体车辆配置信息为value。
34 */ 50 */
35 Map<Long, CarConfigInfo> getCarConfigMaps(Integer xlId); 51 Map<Long, CarConfigInfo> getCarConfigMaps(Integer xlId);
36 52
37 /** 53 /**
38 - * 查找指定线路下,人员配置与人员对应的Map。 54 + * 获取指定线路下,人员配置与人员对应的Map。
39 * @param xlId 线路id 55 * @param xlId 线路id
40 * @return 人员配置id为key,具体人员配置信息为value。 56 * @return 人员配置id为key,具体人员配置信息为value。
41 */ 57 */
src/main/java/com/bsth/service/schedule/rules/strategy/IStrategyImpl.java
1 package com.bsth.service.schedule.rules.strategy; 1 package com.bsth.service.schedule.rules.strategy;
2 2
  3 +import com.bsth.entity.Line;
3 import com.bsth.entity.schedule.CarConfigInfo; 4 import com.bsth.entity.schedule.CarConfigInfo;
4 import com.bsth.entity.schedule.EmployeeConfigInfo; 5 import com.bsth.entity.schedule.EmployeeConfigInfo;
5 import com.bsth.entity.schedule.TTInfo; 6 import com.bsth.entity.schedule.TTInfo;
6 import com.bsth.entity.schedule.TTInfoDetail; 7 import com.bsth.entity.schedule.TTInfoDetail;
7 -import com.bsth.service.schedule.CarConfigInfoService;  
8 -import com.bsth.service.schedule.EmployeeConfigInfoService;  
9 -import com.bsth.service.schedule.TTInfoDetailService;  
10 -import com.bsth.service.schedule.TTInfoService; 8 +import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  9 +import com.bsth.service.LineService;
  10 +import com.bsth.service.schedule.*;
11 import com.google.common.collect.ArrayListMultimap; 11 import com.google.common.collect.ArrayListMultimap;
12 import com.google.common.collect.Multimap; 12 import com.google.common.collect.Multimap;
13 import org.springframework.beans.factory.annotation.Autowired; 13 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,13 +30,24 @@ public class IStrategyImpl implements IStrategy { @@ -30,13 +30,24 @@ public class IStrategyImpl implements IStrategy {
30 private EmployeeConfigInfoService employeeConfigInfoService; 30 private EmployeeConfigInfoService employeeConfigInfoService;
31 @Autowired 31 @Autowired
32 private TTInfoDetailService ttInfoDetailService; 32 private TTInfoDetailService ttInfoDetailService;
  33 + @Autowired
  34 + private LineService lineService;
  35 + @Autowired
  36 + private ScheduleRule1FlatService scheduleRule1FlatService;
  37 +
  38 + @Override
  39 + public Line getLine(Integer xlId) {
  40 + Line xl = lineService.findById(xlId); // 查找线路具体信息
  41 + return xl;
  42 + }
33 43
34 @Override 44 @Override
35 public TTInfo getTTInfo(Integer xlId) { 45 public TTInfo getTTInfo(Integer xlId) {
36 // TODO:本来要使用规则判定到底使用哪张时刻表,这里选用第一张 46 // TODO:本来要使用规则判定到底使用哪张时刻表,这里选用第一张
37 - // 查询参数  
38 - Map<String, Object> param = new HashMap<>(); 47 + Map<String, Object> param = new HashMap<>(); // 查询参数
  48 + param.clear();
39 param.put("xl.id_eq", xlId); // 线路id 49 param.put("xl.id_eq", xlId); // 线路id
  50 + param.put("isCancel_eq", false); // 没有作废
40 param.put("isEnableDisTemplate_eq", true); // 是否启用 51 param.put("isEnableDisTemplate_eq", true); // 是否启用
41 Iterable<TTInfo> ttInfoIterable = ttInfoService.list(param); 52 Iterable<TTInfo> ttInfoIterable = ttInfoService.list(param);
42 Iterator<TTInfo> ttInfoIterator = ttInfoIterable.iterator(); 53 Iterator<TTInfo> ttInfoIterator = ttInfoIterable.iterator();
@@ -46,6 +57,19 @@ public class IStrategyImpl implements IStrategy { @@ -46,6 +57,19 @@ public class IStrategyImpl implements IStrategy {
46 } 57 }
47 58
48 @Override 59 @Override
  60 + public Iterable<ScheduleRule1Flat> getScheduleRule(Integer xlId) {
  61 + Map<String, Object> param = new HashMap<>(); // 查询参数
  62 + Line xl = lineService.findById(xlId); // 查找线路具体信息
  63 + param.clear();
  64 + param.put("xl.id_eq", xl.getId());
  65 + Iterable<ScheduleRule1Flat> scheduleRule1FlatIterable = scheduleRule1FlatService.list(param);
  66 + if (!scheduleRule1FlatIterable.iterator().hasNext())
  67 + throw new RuntimeException("线路:" + xl.getName() + " 没有配置规则!");
  68 +
  69 + return scheduleRule1FlatIterable;
  70 + }
  71 +
  72 + @Override
49 public Multimap<Long, TTInfoDetail> getGuideboardXlTTInfoDetailMaps(Integer xlId) { 73 public Multimap<Long, TTInfoDetail> getGuideboardXlTTInfoDetailMaps(Integer xlId) {
50 TTInfo ttInfo = getTTInfo(xlId); 74 TTInfo ttInfo = getTTInfo(xlId);
51 // 查询参数 75 // 查询参数
src/main/java/com/bsth/vehicle/BorrowCenter.java
@@ -73,10 +73,10 @@ public class BorrowCenter { @@ -73,10 +73,10 @@ public class BorrowCenter {
73 @Override 73 @Override
74 public void run() { 74 public void run() {
75 logger.info("nbbm " + (type==0?"借出":"归还") + "线路代码 " + lineCode); 75 logger.info("nbbm " + (type==0?"借出":"归还") + "线路代码 " + lineCode);
76 - directiveService.lineChange(nbbm, lineCode); 76 + directiveService.lineChange(nbbm, lineCode, null);
77 if(upDown != -1){ 77 if(upDown != -1){
78 //切换走向 78 //切换走向
79 - directiveService.upDownChange(nbbm, upDown); 79 + directiveService.upDownChange(nbbm, upDown, null);
80 } 80 }
81 } 81 }
82 } 82 }
src/main/java/com/bsth/vehicle/UpstreamEntrance.java
@@ -32,7 +32,7 @@ public class UpstreamEntrance { @@ -32,7 +32,7 @@ public class UpstreamEntrance {
32 DirectiveBuffer directiveBuffer; 32 DirectiveBuffer directiveBuffer;
33 33
34 @RequestMapping(value = "/upstream", method = RequestMethod.POST) 34 @RequestMapping(value = "/upstream", method = RequestMethod.POST)
35 - public int main(@RequestParam String json) { 35 + public String main(@RequestParam String json) {
36 logger.info("upstream: " + json); 36 logger.info("upstream: " + json);
37 try { 37 try {
38 JSONObject jsonParam = JSONObject.parseObject(json); 38 JSONObject jsonParam = JSONObject.parseObject(json);
@@ -66,6 +66,6 @@ public class UpstreamEntrance { @@ -66,6 +66,6 @@ public class UpstreamEntrance {
66 } catch (Exception e) { 66 } catch (Exception e) {
67 logger.error("", e); 67 logger.error("", e);
68 } 68 }
69 - return 0; 69 + return "{\"errCode\":0}";
70 } 70 }
71 } 71 }
src/main/java/com/bsth/vehicle/common/CommonMapped.java
1 package com.bsth.vehicle.common; 1 package com.bsth.vehicle.common;
2 2
3 -import java.util.List;  
4 import java.util.Map; 3 import java.util.Map;
5 4
6 import com.bsth.entity.Line; 5 import com.bsth.entity.Line;
7 -import com.bsth.entity.StationRoute;  
8 -import com.google.common.collect.ArrayListMultimap;  
9 import com.google.common.collect.BiMap; 6 import com.google.common.collect.BiMap;
10 import com.google.common.collect.TreeMultimap; 7 import com.google.common.collect.TreeMultimap;
11 8
@@ -54,12 +51,17 @@ public class CommonMapped { @@ -54,12 +51,17 @@ public class CommonMapped {
54 * 线路站点路由对照 51 * 线路站点路由对照
55 * (K:线路编码, V:站点路由) 52 * (K:线路编码, V:站点路由)
56 */ 53 */
57 - public static Map<Integer, List<StationRoute>> lineStationRouteMap; 54 + //public static Map<Integer, List<StationRoute>> lineStationRouteMap;
58 55
59 /** 56 /**
60 * 线路和用户名对照 57 * 线路和用户名对照
61 * 用于webSocket定向推送消息 58 * 用于webSocket定向推送消息
62 */ 59 */
63 public static TreeMultimap<Integer, String> lineUserMap = TreeMultimap.create(); 60 public static TreeMultimap<Integer, String> lineUserMap = TreeMultimap.create();
  61 +
  62 + /**
  63 + * 线路ID和code 对照
  64 + */
  65 + public static BiMap<Integer, Integer> lineIdToCode;
64 66
65 } 67 }
src/main/java/com/bsth/vehicle/common/CommonRefreshThread.java
1 package com.bsth.vehicle.common; 1 package com.bsth.vehicle.common;
2 2
3 -import java.util.ArrayList;  
4 -import java.util.Collections;  
5 import java.util.Comparator; 3 import java.util.Comparator;
6 import java.util.HashMap; 4 import java.util.HashMap;
7 import java.util.Iterator; 5 import java.util.Iterator;
8 -import java.util.List;  
9 import java.util.Map; 6 import java.util.Map;
10 7
11 import org.slf4j.Logger; 8 import org.slf4j.Logger;
@@ -21,6 +18,7 @@ import com.bsth.entity.StationRoute; @@ -21,6 +18,7 @@ import com.bsth.entity.StationRoute;
21 import com.bsth.entity.schedule.CarConfigInfo; 18 import com.bsth.entity.schedule.CarConfigInfo;
22 import com.bsth.repository.CarParkRepository; 19 import com.bsth.repository.CarParkRepository;
23 import com.bsth.repository.CarsRepository; 20 import com.bsth.repository.CarsRepository;
  21 +import com.bsth.repository.LineRepository;
24 import com.bsth.repository.StationRepository; 22 import com.bsth.repository.StationRepository;
25 import com.bsth.repository.StationRouteRepository; 23 import com.bsth.repository.StationRouteRepository;
26 import com.bsth.repository.schedule.CarConfigInfoRepository; 24 import com.bsth.repository.schedule.CarConfigInfoRepository;
@@ -53,6 +51,9 @@ public class CommonRefreshThread extends Thread{ @@ -53,6 +51,9 @@ public class CommonRefreshThread extends Thread{
53 @Autowired 51 @Autowired
54 StationRouteRepository sRouteRepository; 52 StationRouteRepository sRouteRepository;
55 53
  54 + @Autowired
  55 + LineRepository lineRepository;
  56 +
56 Logger logger = LoggerFactory.getLogger(this.getClass()); 57 Logger logger = LoggerFactory.getLogger(this.getClass());
57 58
58 @Override 59 @Override
@@ -62,7 +63,9 @@ public class CommonRefreshThread extends Thread{ @@ -62,7 +63,9 @@ public class CommonRefreshThread extends Thread{
62 initStationCodeMap(); 63 initStationCodeMap();
63 initVehicLineMap(); 64 initVehicLineMap();
64 65
65 - initLineStationRouteMap(); 66 + //initLineStationRouteMap();
  67 +
  68 + initLineIdToCode();
66 } catch (Exception e) { 69 } catch (Exception e) {
67 e.printStackTrace(); 70 e.printStackTrace();
68 logger.error("", e); 71 logger.error("", e);
@@ -75,7 +78,7 @@ public class CommonRefreshThread extends Thread{ @@ -75,7 +78,7 @@ public class CommonRefreshThread extends Thread{
75 * @Description: TODO(加载线路站点路由信息) 78 * @Description: TODO(加载线路站点路由信息)
76 * @throws 79 * @throws
77 */ 80 */
78 - private void initLineStationRouteMap() { 81 +/* private void initLineStationRouteMap() {
79 List<StationRoute> routes = sRouteRepository.findAll2(); 82 List<StationRoute> routes = sRouteRepository.findAll2();
80 83
81 Map<Integer, List<StationRoute>> map = new HashMap<>(); 84 Map<Integer, List<StationRoute>> map = new HashMap<>();
@@ -97,6 +100,19 @@ public class CommonRefreshThread extends Thread{ @@ -97,6 +100,19 @@ public class CommonRefreshThread extends Thread{
97 temp = iterator.next(); 100 temp = iterator.next();
98 Collections.sort(temp, sRouteComp); 101 Collections.sort(temp, sRouteComp);
99 } 102 }
  103 + }*/
  104 +
  105 + private void initLineIdToCode() {
  106 + Iterator<Line> iterator = lineRepository.findAll().iterator();
  107 +
  108 + Line line;
  109 + BiMap<Integer, Integer> biMap = HashBiMap.create();
  110 + while(iterator.hasNext()){
  111 + line = iterator.next();
  112 + biMap.put(line.getId(), Integer.parseInt(line.getLineCode()));
  113 + }
  114 +
  115 + CommonMapped.lineIdToCode = biMap;
100 } 116 }
101 117
102 /** 118 /**
src/main/java/com/bsth/vehicle/directive/buffer/DirectiveBuffer.java
@@ -5,7 +5,6 @@ import java.util.Calendar; @@ -5,7 +5,6 @@ import java.util.Calendar;
5 import java.util.Collection; 5 import java.util.Collection;
6 import java.util.Comparator; 6 import java.util.Comparator;
7 import java.util.HashMap; 7 import java.util.HashMap;
8 -import java.util.Iterator;  
9 import java.util.LinkedList; 8 import java.util.LinkedList;
10 import java.util.List; 9 import java.util.List;
11 import java.util.Map; 10 import java.util.Map;
src/main/java/com/bsth/vehicle/directive/controller/DirectiveController.java
@@ -9,6 +9,8 @@ import org.springframework.web.bind.annotation.RequestMethod; @@ -9,6 +9,8 @@ import org.springframework.web.bind.annotation.RequestMethod;
9 import org.springframework.web.bind.annotation.RequestParam; 9 import org.springframework.web.bind.annotation.RequestParam;
10 import org.springframework.web.bind.annotation.RestController; 10 import org.springframework.web.bind.annotation.RestController;
11 11
  12 +import com.bsth.entity.sys.SysUser;
  13 +import com.bsth.security.util.SecurityUtils;
12 import com.bsth.vehicle.directive.entity.Directive80; 14 import com.bsth.vehicle.directive.entity.Directive80;
13 import com.bsth.vehicle.directive.service.DirectiveService; 15 import com.bsth.vehicle.directive.service.DirectiveService;
14 16
@@ -35,7 +37,8 @@ public class DirectiveController { @@ -35,7 +37,8 @@ public class DirectiveController {
35 */ 37 */
36 @RequestMapping(value = "/phrase", method = RequestMethod.POST) 38 @RequestMapping(value = "/phrase", method = RequestMethod.POST)
37 public int send60Phrase(@RequestParam String nbbm, @RequestParam String text){ 39 public int send60Phrase(@RequestParam String nbbm, @RequestParam String text){
38 - return directiveService.send60Phrase(nbbm, text); 40 + SysUser user = SecurityUtils.getCurrentUser();
  41 + return directiveService.send60Phrase(nbbm, text, user.getUserName());
39 } 42 }
40 43
41 /** 44 /**
@@ -47,7 +50,8 @@ public class DirectiveController { @@ -47,7 +50,8 @@ public class DirectiveController {
47 */ 50 */
48 @RequestMapping(value = "/dispatch", method = RequestMethod.POST) 51 @RequestMapping(value = "/dispatch", method = RequestMethod.POST)
49 public int send60Dispatch(@RequestParam Long id){ 52 public int send60Dispatch(@RequestParam Long id){
50 - return directiveService.send60Dispatch(id); 53 + SysUser user = SecurityUtils.getCurrentUser();
  54 + return directiveService.send60Dispatch(id, user.getUserName());
51 } 55 }
52 56
53 /** 57 /**
@@ -60,7 +64,8 @@ public class DirectiveController { @@ -60,7 +64,8 @@ public class DirectiveController {
60 */ 64 */
61 @RequestMapping(value = "/lineChnage", method = RequestMethod.POST) 65 @RequestMapping(value = "/lineChnage", method = RequestMethod.POST)
62 public int lineChange(@RequestParam String nbbm, @RequestParam Integer lineId){ 66 public int lineChange(@RequestParam String nbbm, @RequestParam Integer lineId){
63 - return directiveService.lineChange(nbbm, lineId); 67 + SysUser user = SecurityUtils.getCurrentUser();
  68 + return directiveService.lineChange(nbbm, lineId, user.getUserName());
64 } 69 }
65 70
66 /** 71 /**
@@ -71,9 +76,10 @@ public class DirectiveController { @@ -71,9 +76,10 @@ public class DirectiveController {
71 * @param @param upDon 76 * @param @param upDon
72 * @throws 77 * @throws
73 */ 78 */
74 - @RequestMapping(value = "/upDownChange", method = RequestMethod.POST) 79 + @RequestMapping(value = "/upDownChange", method = RequestMethod.GET)
75 public int upDownChange(@RequestParam String nbbm, @RequestParam Integer upDown){ 80 public int upDownChange(@RequestParam String nbbm, @RequestParam Integer upDown){
76 - return directiveService.upDownChange(nbbm, upDown); 81 + SysUser user = SecurityUtils.getCurrentUser();
  82 + return directiveService.upDownChange(nbbm, upDown, user.getUserName());
77 } 83 }
78 84
79 /** 85 /**
src/main/java/com/bsth/vehicle/directive/entity/Directive.java
@@ -44,6 +44,11 @@ public class Directive { @@ -44,6 +44,11 @@ public class Directive {
44 private String errorText; 44 private String errorText;
45 45
46 private int httpCode; 46 private int httpCode;
  47 +
  48 + /**
  49 + * 发送人
  50 + */
  51 + private String sender;
47 52
48 public short getOperCode() { 53 public short getOperCode() {
49 return operCode; 54 return operCode;
@@ -100,4 +105,12 @@ public class Directive { @@ -100,4 +105,12 @@ public class Directive {
100 public void setHttpCode(int httpCode) { 105 public void setHttpCode(int httpCode) {
101 this.httpCode = httpCode; 106 this.httpCode = httpCode;
102 } 107 }
  108 +
  109 + public String getSender() {
  110 + return sender;
  111 + }
  112 +
  113 + public void setSender(String sender) {
  114 + this.sender = sender;
  115 + }
103 } 116 }
src/main/java/com/bsth/vehicle/directive/entity/Directive60.java
@@ -13,7 +13,6 @@ import javax.persistence.Table; @@ -13,7 +13,6 @@ import javax.persistence.Table;
13 import javax.persistence.Transient; 13 import javax.persistence.Transient;
14 14
15 import com.bsth.entity.realcontrol.ScheduleRealInfo; 15 import com.bsth.entity.realcontrol.ScheduleRealInfo;
16 -import com.bsth.entity.sys.SysUser;  
17 import com.fasterxml.jackson.annotation.JsonIgnore; 16 import com.fasterxml.jackson.annotation.JsonIgnore;
18 17
19 18
@@ -72,12 +71,6 @@ public class Directive60 extends Directive{ @@ -72,12 +71,6 @@ public class Directive60 extends Directive{
72 @ManyToOne(fetch = FetchType.LAZY) 71 @ManyToOne(fetch = FetchType.LAZY)
73 private ScheduleRealInfo sch; 72 private ScheduleRealInfo sch;
74 73
75 - /**  
76 - * 发送人  
77 - */  
78 - @ManyToOne  
79 - private SysUser sender;  
80 -  
81 @Embeddable 74 @Embeddable
82 public static class DirectiveData { 75 public static class DirectiveData {
83 // 公司代码 76 // 公司代码
@@ -271,12 +264,4 @@ public class Directive60 extends Directive{ @@ -271,12 +264,4 @@ public class Directive60 extends Directive{
271 public void setSch(ScheduleRealInfo sch) { 264 public void setSch(ScheduleRealInfo sch) {
272 this.sch = sch; 265 this.sch = sch;
273 } 266 }
274 -  
275 - public SysUser getSender() {  
276 - return sender;  
277 - }  
278 -  
279 - public void setSender(SysUser sender) {  
280 - this.sender = sender;  
281 - }  
282 } 267 }
src/main/java/com/bsth/vehicle/directive/service/DirectiveService.java
@@ -20,7 +20,7 @@ public interface DirectiveService extends BaseService&lt;Directive60, Integer&gt;{ @@ -20,7 +20,7 @@ public interface DirectiveService extends BaseService&lt;Directive60, Integer&gt;{
20 * @return int 返回类型 20 * @return int 返回类型
21 * @throws 21 * @throws
22 */ 22 */
23 - int send60Phrase(String nbbm, String text); 23 + int send60Phrase(String nbbm, String text, String sender);
24 24
25 /** 25 /**
26 * 26 *
@@ -30,7 +30,7 @@ public interface DirectiveService extends BaseService&lt;Directive60, Integer&gt;{ @@ -30,7 +30,7 @@ public interface DirectiveService extends BaseService&lt;Directive60, Integer&gt;{
30 * @param @param finish 已完成的班次数 30 * @param @param finish 已完成的班次数
31 * @throws 31 * @throws
32 */ 32 */
33 - int send60Dispatch(ScheduleRealInfo sch, int finish); 33 + int send60Dispatch(ScheduleRealInfo sch, int finish, String sender);
34 34
35 /** 35 /**
36 * 36 *
@@ -39,10 +39,10 @@ public interface DirectiveService extends BaseService&lt;Directive60, Integer&gt;{ @@ -39,10 +39,10 @@ public interface DirectiveService extends BaseService&lt;Directive60, Integer&gt;{
39 * @param @param id 班次ID 39 * @param @param id 班次ID
40 * @throws 40 * @throws
41 */ 41 */
42 - int send60Dispatch(Long id); 42 + int send60Dispatch(Long id, String sender);
43 43
44 //60营运指令 44 //60营运指令
45 - int send60Operation(String nbbm, int state, int upDown, ScheduleRealInfo sch); 45 + int send60Operation(String nbbm, int state, int upDown, ScheduleRealInfo sch, String sender);
46 46
47 /** 47 /**
48 * 48 *
@@ -52,7 +52,7 @@ public interface DirectiveService extends BaseService&lt;Directive60, Integer&gt;{ @@ -52,7 +52,7 @@ public interface DirectiveService extends BaseService&lt;Directive60, Integer&gt;{
52 * @param @param lineId 新线路编码 52 * @param @param lineId 新线路编码
53 * @throws 53 * @throws
54 */ 54 */
55 - int lineChange(String nbbm, Integer lineId); 55 + int lineChange(String nbbm, Integer lineId, String sender);
56 56
57 /** 57 /**
58 * 58 *
@@ -62,7 +62,7 @@ public interface DirectiveService extends BaseService&lt;Directive60, Integer&gt;{ @@ -62,7 +62,7 @@ public interface DirectiveService extends BaseService&lt;Directive60, Integer&gt;{
62 * @param @param upDonw 上下行 0 上行 1 下行 62 * @param @param upDonw 上下行 0 上行 1 下行
63 * @throws 63 * @throws
64 */ 64 */
65 - int upDownChange(String nbbm, Integer upDown); 65 + int upDownChange(String nbbm, Integer upDown, String sender);
66 66
67 /** 67 /**
68 * 68 *
src/main/java/com/bsth/vehicle/directive/service/DirectiveServiceImpl.java
1 package com.bsth.vehicle.directive.service; 1 package com.bsth.vehicle.directive.service;
2 2
3 import java.text.SimpleDateFormat; 3 import java.text.SimpleDateFormat;
  4 +import java.util.ArrayList;
4 import java.util.Collections; 5 import java.util.Collections;
5 import java.util.Date; 6 import java.util.Date;
6 import java.util.HashMap; 7 import java.util.HashMap;
@@ -20,20 +21,17 @@ import com.bsth.entity.realcontrol.ScheduleRealInfo; @@ -20,20 +21,17 @@ import com.bsth.entity.realcontrol.ScheduleRealInfo;
20 import com.bsth.service.impl.BaseServiceImpl; 21 import com.bsth.service.impl.BaseServiceImpl;
21 import com.bsth.service.realcontrol.buffer.ScheduleBuffer; 22 import com.bsth.service.realcontrol.buffer.ScheduleBuffer;
22 import com.bsth.vehicle.common.CommonMapped; 23 import com.bsth.vehicle.common.CommonMapped;
23 -import com.bsth.vehicle.directive.Consts;  
24 -import com.bsth.vehicle.directive.MsgIdGenerator;  
25 import com.bsth.vehicle.directive.buffer.DirectiveBuffer; 24 import com.bsth.vehicle.directive.buffer.DirectiveBuffer;
26 import com.bsth.vehicle.directive.entity.Directive; 25 import com.bsth.vehicle.directive.entity.Directive;
27 import com.bsth.vehicle.directive.entity.Directive60; 26 import com.bsth.vehicle.directive.entity.Directive60;
28 -import com.bsth.vehicle.directive.entity.Directive60.DirectiveData;  
29 import com.bsth.vehicle.directive.entity.DirectiveC0.DirectiveC0Data; 27 import com.bsth.vehicle.directive.entity.DirectiveC0.DirectiveC0Data;
30 import com.bsth.vehicle.directive.entity.Directive80; 28 import com.bsth.vehicle.directive.entity.Directive80;
31 import com.bsth.vehicle.directive.entity.DirectiveC0; 29 import com.bsth.vehicle.directive.entity.DirectiveC0;
32 import com.bsth.vehicle.directive.entity.Directive64; 30 import com.bsth.vehicle.directive.entity.Directive64;
33 -import com.bsth.vehicle.directive.entity.Directive64.LineChangeData;  
34 import com.bsth.vehicle.directive.repository.Directive60Repository; 31 import com.bsth.vehicle.directive.repository.Directive60Repository;
35 import com.bsth.vehicle.directive.repository.Directive80Repository; 32 import com.bsth.vehicle.directive.repository.Directive80Repository;
36 import com.bsth.vehicle.directive.repository.LineChangeRepository; 33 import com.bsth.vehicle.directive.repository.LineChangeRepository;
  34 +import com.bsth.vehicle.directive.util.DirectiveDataFactory;
37 import com.bsth.vehicle.directive.util.HttpUtils; 35 import com.bsth.vehicle.directive.util.HttpUtils;
38 import com.bsth.vehicle.gpsdata.buffer.GpsRealDataBuffer; 36 import com.bsth.vehicle.gpsdata.buffer.GpsRealDataBuffer;
39 import com.bsth.vehicle.gpsdata.entity.GpsRealData; 37 import com.bsth.vehicle.gpsdata.entity.GpsRealData;
@@ -64,11 +62,8 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -64,11 +62,8 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
64 62
65 static Long schDiff = 1000 * 60 * 60L; 63 static Long schDiff = 1000 * 60 * 60L;
66 64
67 - // 城市代码  
68 - static final short cityCode = 22;  
69 -  
70 @Override 65 @Override
71 - public int send60Phrase(String nbbm, String text) { 66 + public int send60Phrase(String nbbm, String text, String sender) {
72 Directive60 directive = null; 67 Directive60 directive = null;
73 try { 68 try {
74 directive = create60Data(nbbm, text, (short) 0x00, null); 69 directive = create60Data(nbbm, text, (short) 0x00, null);
@@ -82,6 +77,8 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -82,6 +77,8 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
82 77
83 // 发送指令 78 // 发送指令
84 int code = HttpUtils.postJson(JSON.toJSONString(directive)); 79 int code = HttpUtils.postJson(JSON.toJSONString(directive));
  80 + if(null != sender)
  81 + directive.setSender(sender);
85 directive.setHttpCode(code); 82 directive.setHttpCode(code);
86 // 添加到缓存,等待入库 83 // 添加到缓存,等待入库
87 DirectiveBuffer.put(directive); 84 DirectiveBuffer.put(directive);
@@ -94,13 +91,13 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -94,13 +91,13 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
94 } 91 }
95 92
96 @Override 93 @Override
97 - public int send60Dispatch(ScheduleRealInfo sch, int finish) { 94 + public int send60Dispatch(ScheduleRealInfo sch, int finish, String sender) {
98 Directive60 directive = null; 95 Directive60 directive = null;
99 try { 96 try {
100 // 如果发车时间距当前时间较远,则不发送 97 // 如果发车时间距当前时间较远,则不发送
101 - if (Math.abs(sch.getFcsjT() - System.currentTimeMillis()) > schDiff) { 98 + /*if (Math.abs(sch.getFcsjT() - System.currentTimeMillis()) > schDiff) {
102 return -2; 99 return -2;
103 - } 100 + }*/
104 101
105 String text = "已完成" + finish + "个班次,下一发车时间" + sdfHHmm.format(new Date(sch.getFcsjT())) + ",由" 102 String text = "已完成" + finish + "个班次,下一发车时间" + sdfHHmm.format(new Date(sch.getFcsjT())) + ",由"
106 + sch.getQdzName() + "发往" + sch.getZdzName(); 103 + sch.getQdzName() + "发往" + sch.getZdzName();
@@ -114,6 +111,10 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -114,6 +111,10 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
114 111
115 if (null == directive) 112 if (null == directive)
116 return -1; 113 return -1;
  114 + if(null != sender)
  115 + directive.setSender(sender);
  116 + else
  117 + directive.setSender("系统");
117 118
118 // 发送指令 119 // 发送指令
119 int code = HttpUtils.postJson(JSON.toJSONString(directive)); 120 int code = HttpUtils.postJson(JSON.toJSONString(directive));
@@ -148,22 +149,26 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -148,22 +149,26 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
148 } 149 }
149 150
150 @Override 151 @Override
151 - public int send60Dispatch(Long id) { 152 + public int send60Dispatch(Long id, String sender) {
152 ScheduleRealInfo sch = ScheduleBuffer.findOne(id); 153 ScheduleRealInfo sch = ScheduleBuffer.findOne(id);
153 // 车辆已完成班次 154 // 车辆已完成班次
154 int finish = ScheduleBuffer.getFinishSchNo(sch.getClZbh()); 155 int finish = ScheduleBuffer.getFinishSchNo(sch.getClZbh());
155 - return send60Dispatch(sch, finish); 156 + return send60Dispatch(sch, finish, sender);
156 } 157 }
157 158
158 @Override 159 @Override
159 - public int send60Operation(String nbbm, int state, int upDown, ScheduleRealInfo sch) { 160 + public int send60Operation(String nbbm, int state, int upDown, ScheduleRealInfo sch, String sender) {
160 logger.info("切换运营状态, nbbm: " + nbbm + " ,state: " + state + " ,upDown:" + upDown); 161 logger.info("切换运营状态, nbbm: " + nbbm + " ,state: " + state + " ,upDown:" + upDown);
161 162
162 String text = "切换为 " + (upDown == 0 ? "上行" : "下行") + (state == 0 ? "营运" : "未营运"); 163 String text = "切换为 " + (upDown == 0 ? "上行" : "下行") + (state == 0 ? "营运" : "未营运");
163 - Directive60 directive = createDirective60(nbbm, text, (short) 0x03, upDown, state); 164 + Directive60 directive = DirectiveDataFactory.createDirective60(nbbm, text, (short) 0x03, upDown, state);
164 165
165 if (null == directive) 166 if (null == directive)
166 return -1; 167 return -1;
  168 + if(null != sender)
  169 + directive.setSender(sender);
  170 + else
  171 + directive.setSender("系统");
167 // 发送指令 172 // 发送指令
168 int code = HttpUtils.postJson(JSON.toJSONString(directive)); 173 int code = HttpUtils.postJson(JSON.toJSONString(directive));
169 // 添加到缓存,等待入库 174 // 添加到缓存,等待入库
@@ -183,21 +188,28 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -183,21 +188,28 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
183 * 线路切换 188 * 线路切换
184 */ 189 */
185 @Override 190 @Override
186 - public int lineChange(String nbbm, Integer lineId) { 191 + public int lineChange(String nbbm, Integer lineCode, String sender) {
187 Long t = System.currentTimeMillis(); 192 Long t = System.currentTimeMillis();
188 - String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm); 193 + /*String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm);
189 194
190 Directive64 change = new Directive64(); 195 Directive64 change = new Directive64();
191 LineChangeData data = new LineChangeData(); 196 LineChangeData data = new LineChangeData();
192 data.setCityCode(cityCode); 197 data.setCityCode(cityCode);
193 data.setDeviceId(deviceId); 198 data.setDeviceId(deviceId);
194 - data.setLineId("00" + String.valueOf(lineId)); 199 + data.setLineId("00" + String.valueOf(lineCode));
195 200
196 change.setDeviceId(deviceId); 201 change.setDeviceId(deviceId);
197 change.setOperCode((short) 0X64); 202 change.setOperCode((short) 0X64);
198 change.setTimestamp(t); 203 change.setTimestamp(t);
199 - change.setData(data); 204 + change.setData(data);*/
  205 + Directive64 change = DirectiveDataFactory.createDirective64(nbbm, lineCode, t);
  206 +
  207 + if(null != sender)
  208 + change.setSender(sender);
  209 + else
  210 + change.setSender("系统");
200 211
  212 + String deviceId = change.getDeviceId();
201 int code = HttpUtils.postJson(JSON.toJSONString(change)); 213 int code = HttpUtils.postJson(JSON.toJSONString(change));
202 // 入库 214 // 入库
203 change.setHttpCode(code); 215 change.setHttpCode(code);
@@ -205,7 +217,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -205,7 +217,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
205 217
206 // 通知设备刷新线路文件,忽略结果 218 // 通知设备刷新线路文件,忽略结果
207 if (code == 0) 219 if (code == 0)
208 - HttpUtils.postJson(createDeviceRefreshData(deviceId, lineId)); 220 + HttpUtils.postJson(DirectiveDataFactory.createDeviceRefreshData(deviceId, lineCode));
209 else 221 else
210 change.setErrorText("网关通讯失败, code: " + code); 222 change.setErrorText("网关通讯失败, code: " + code);
211 223
@@ -215,10 +227,6 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -215,10 +227,6 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
215 227
216 public Directive60 create60Data(String nbbm, String text, Short dispatchInstruct, ScheduleRealInfo sch) { 228 public Directive60 create60Data(String nbbm, String text, Short dispatchInstruct, ScheduleRealInfo sch) {
217 229
218 - /*  
219 - * //向测试设备发送 String deviceId = "ABCDFEGH"; Short company = 5;  
220 - */  
221 -  
222 String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm); 230 String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm);
223 if (null == deviceId) { 231 if (null == deviceId) {
224 logger.error("没有设备号对照的车辆:" + nbbm); 232 logger.error("没有设备号对照的车辆:" + nbbm);
@@ -239,10 +247,10 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -239,10 +247,10 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
239 state = 0; 247 state = 0;
240 } 248 }
241 249
242 - return createDirective60(nbbm, text, dispatchInstruct, upDown, state); 250 + return DirectiveDataFactory.createDirective60(nbbm, text, dispatchInstruct, upDown, state);
243 } 251 }
244 252
245 - public Directive60 createDirective60(String nbbm, String text, Short dispatchInstruct, int upDown, int state) { 253 +/* public Directive60 createDirective60(String nbbm, String text, Short dispatchInstruct, int upDown, int state) {
246 Long timestamp = System.currentTimeMillis(); 254 Long timestamp = System.currentTimeMillis();
247 255
248 Short company = Short.parseShort(CommonMapped.vehicCompanyMap.get(nbbm)); 256 Short company = Short.parseShort(CommonMapped.vehicCompanyMap.get(nbbm));
@@ -277,21 +285,11 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -277,21 +285,11 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
277 data.setTxtContent(text); 285 data.setTxtContent(text);
278 286
279 return directive; 287 return directive;
280 - } 288 + }*/
281 289
282 @Override 290 @Override
283 - public int upDownChange(String nbbm, Integer upDown) {  
284 - /*  
285 - * Directive60 directive = createDirective60(nbbm, nbbm + "_" + upDown,  
286 - * (short) 0x03, upDown, 0);  
287 - *  
288 - * if(null == directive) return -1;  
289 - *  
290 - * int code = HttpUtils.postJson(JSON.toJSONString(directive)); if(code  
291 - * == 0){ //添加到缓存,等待入库 DirectiveBuffer.put(directive); }else{  
292 - * logger.error("send60 upDownChange error, code: " + code); }  
293 - */  
294 - return send60Operation(nbbm, 0, upDown, null); 291 + public int upDownChange(String nbbm, Integer upDown, String sender) {
  292 + return send60Operation(nbbm, 0, upDown, null, sender);
295 } 293 }
296 294
297 /** 295 /**
@@ -299,7 +297,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -299,7 +297,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
299 * @Title: createDeviceRefreshData @Description: 297 * @Title: createDeviceRefreshData @Description:
300 * TODO(生成设备线路刷新数据包) @param @return 设定文件 @return String 返回类型 @throws 298 * TODO(生成设备线路刷新数据包) @param @return 设定文件 @return String 返回类型 @throws
301 */ 299 */
302 - public String createDeviceRefreshData(String deviceId, Integer lineId) { 300 +/* public String createDeviceRefreshData(String deviceId, Integer lineId) {
303 Long t = System.currentTimeMillis(); 301 Long t = System.currentTimeMillis();
304 Map<String, Object> param = new HashMap<String, Object>(); 302 Map<String, Object> param = new HashMap<String, Object>();
305 param.put("deviceId", deviceId); 303 param.put("deviceId", deviceId);
@@ -307,7 +305,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -307,7 +305,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
307 param.put("operCode", 0Xc0); 305 param.put("operCode", 0Xc0);
308 306
309 Map<String, Object> data = new HashMap<String, Object>(); 307 Map<String, Object> data = new HashMap<String, Object>();
310 - data.put("operCode", 0xa1); 308 + data.put("operCode2", 0xa1);
311 data.put("cityCode", cityCode); 309 data.put("cityCode", cityCode);
312 data.put("deviceId", deviceId); 310 data.put("deviceId", deviceId);
313 data.put("timestamp", t); 311 data.put("timestamp", t);
@@ -318,7 +316,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -318,7 +316,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
318 param.put("data", data); 316 param.put("data", data);
319 317
320 return JSON.toJSONString(param); 318 return JSON.toJSONString(param);
321 - } 319 + }*/
322 320
323 @Override 321 @Override
324 public Map<String, List<Directive80>> findNoCofm80(String lineCodes) { 322 public Map<String, List<Directive80>> findNoCofm80(String lineCodes) {
@@ -409,8 +407,15 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt; @@ -409,8 +407,15 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
409 // 时间倒序 407 // 时间倒序
410 Collections.sort(list, new DirectiveBuffer.DComparator()); 408 Collections.sort(list, new DirectiveBuffer.DComparator());
411 if(StringUtils.isNotBlank(nbbm)){ 409 if(StringUtils.isNotBlank(nbbm)){
  410 + String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm);
412 //按车辆过滤 411 //按车辆过滤
413 - 412 + List<Directive> subList = new ArrayList<>();
  413 + for(Directive d : list){
  414 + if(d.getDeviceId().equals(deviceId)){
  415 + subList.add(d);
  416 + }
  417 + }
  418 + list = subList;
414 } 419 }
415 420
416 int count = list.size(); 421 int count = list.size();
src/main/java/com/bsth/vehicle/directive/thread/FirstScheduleIssuedThread.java
@@ -69,7 +69,7 @@ public class FirstScheduleIssuedThread extends Thread{ @@ -69,7 +69,7 @@ public class FirstScheduleIssuedThread extends Thread{
69 //切换营运状态 69 //切换营运状态
70 directiveService.send60Operation(sch.getClZbh() 70 directiveService.send60Operation(sch.getClZbh()
71 , 0, Integer.parseInt(sch.getXlDir()) 71 , 0, Integer.parseInt(sch.getXlDir())
72 - , sch); 72 + , sch, null);
73 } 73 }
74 } 74 }
75 } 75 }
src/main/java/com/bsth/vehicle/directive/util/DirectiveDataFactory.java 0 → 100644
  1 +package com.bsth.vehicle.directive.util;
  2 +
  3 +import java.util.HashMap;
  4 +import java.util.Map;
  5 +
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
  8 +
  9 +import com.alibaba.fastjson.JSON;
  10 +import com.bsth.vehicle.common.CommonMapped;
  11 +import com.bsth.vehicle.directive.Consts;
  12 +import com.bsth.vehicle.directive.MsgIdGenerator;
  13 +import com.bsth.vehicle.directive.entity.Directive60;
  14 +import com.bsth.vehicle.directive.entity.Directive64;
  15 +import com.bsth.vehicle.directive.entity.Directive60.DirectiveData;
  16 +import com.bsth.vehicle.directive.entity.Directive64.LineChangeData;
  17 +
  18 +/**
  19 + *
  20 + * @ClassName: DirectiveDataFactory
  21 + * @Description: TODO(生成调度指令数据)
  22 + * @author PanZhao
  23 + * @date 2016年8月3日 下午3:32:27
  24 + *
  25 + */
  26 +public class DirectiveDataFactory {
  27 +
  28 + private DirectiveDataFactory() {}
  29 +
  30 + // 城市代码
  31 + static final short cityCode = 22;
  32 +
  33 + static Logger logger = LoggerFactory.getLogger(DirectiveDataFactory.class);
  34 +
  35 + /**
  36 + *
  37 + * @Title: createDirective60
  38 + * @Description: TODO(创建60数据包)
  39 + * @param @param nbbm 车辆内部编码
  40 + * @param @param text 文本
  41 + * @param @param dispatchInstruct 指令类型(0X00表示信息短语,0X01表示取消上次指令+调度指令(闹钟有效),0x02表示为调度指令(闹钟有效); 0x03表示运营状态指令(闹钟无效);0x04表示其他指令)
  42 + * @param @param upDown 上下行(0 上行 1 下行)
  43 + * @param @param state 营运状态(0 营运 1 非营运)
  44 + * @param @return 设定文件
  45 + * @return Directive60 返回类型
  46 + * @throws
  47 + */
  48 + public static Directive60 createDirective60(String nbbm, String text, Short dispatchInstruct, int upDown, int state) {
  49 + Long timestamp = System.currentTimeMillis();
  50 +
  51 + Short company = Short.parseShort(CommonMapped.vehicCompanyMap.get(nbbm));
  52 + String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm);
  53 +
  54 + int msgId = MsgIdGenerator.getMsgId();
  55 +
  56 + Directive60 directive = new Directive60();
  57 + DirectiveData data = new DirectiveData();
  58 + // 一级协议
  59 + directive.setOperCode((short) 0x60);
  60 + // 设备号
  61 + directive.setDeviceId(deviceId);
  62 + // 时间戳
  63 + directive.setTimestamp(timestamp);
  64 + directive.setMsgId(msgId);
  65 + // 构造数据
  66 + data.setDeviceId(deviceId);
  67 + data.setDispatchInstruct(dispatchInstruct);
  68 + data.setTimestamp(timestamp);
  69 + data.setCompanyCode(company);
  70 + data.setMsgId(msgId);
  71 + directive.setData(data);
  72 + long serviceState;
  73 + try {
  74 + serviceState = Consts.SERVICE_STATE[upDown][state];
  75 + } catch (IndexOutOfBoundsException e) {
  76 + // 未知营运状态的直接默认为上行非营运
  77 + serviceState = Consts.SERVICE_STATE[0][1];
  78 + }
  79 + data.setServiceState(serviceState);
  80 + data.setTxtContent(text);
  81 +
  82 + return directive;
  83 + }
  84 +
  85 + /**
  86 + *
  87 + * @Title: createDirective64
  88 + * @Description: TODO(创建线路切换指令 64)
  89 + * @param @param nbbm 车辆内部编码
  90 + * @param @param lineId 线路编码
  91 + * @param @param t 时间戳
  92 + * @throws
  93 + */
  94 + public static Directive64 createDirective64(String nbbm, Integer lineCode, long t){
  95 + String deviceId = CommonMapped.vehicDeviceBiMap.inverse().get(nbbm);
  96 +
  97 + Directive64 change = new Directive64();
  98 + LineChangeData data = new LineChangeData();
  99 + data.setCityCode(cityCode);
  100 + data.setDeviceId(deviceId);
  101 + //线路编码补满6位数
  102 + if(lineCode > 99999){
  103 + logger.error("线路编码不能超过6位,code:" + lineCode);
  104 + return null;
  105 + }
  106 + String lineCodeStr = String.format("%06d", lineCode.toString());
  107 + data.setLineId(lineCodeStr);
  108 +
  109 + change.setDeviceId(deviceId);
  110 + change.setOperCode((short) 0X64);
  111 + change.setTimestamp(t);
  112 + change.setData(data);
  113 +
  114 + return change;
  115 + }
  116 +
  117 + /**
  118 + *
  119 + * @Title: createDeviceRefreshData
  120 + * @Description: TODO(线路刷新指令(用于切换线路后,要求设置重新下载线路文件))
  121 + * @param @param deviceId 设备编号
  122 + * @param @param lineId 线路ID
  123 + * @throws
  124 + */
  125 + public static String createDeviceRefreshData(String deviceId, Integer lineId) {
  126 + Long t = System.currentTimeMillis();
  127 + Map<String, Object> param = new HashMap<String, Object>();
  128 + param.put("deviceId", deviceId);
  129 + param.put("timestamp", t);
  130 + param.put("operCode", 0Xc0);
  131 +
  132 + Map<String, Object> data = new HashMap<String, Object>();
  133 + data.put("operCode2", 0xa1);
  134 + data.put("cityCode", cityCode);
  135 + data.put("deviceId", deviceId);
  136 + data.put("timestamp", t);
  137 + data.put("centerId", 1);
  138 + data.put("lineId", lineId);
  139 + data.put("lineVersion", 0);
  140 + data.put("carparkDataVersion", 0);
  141 + param.put("data", data);
  142 +
  143 + return JSON.toJSONString(param);
  144 + }
  145 +}
src/main/java/com/bsth/vehicle/gpsdata/ArrivalThread.java
@@ -66,145 +66,8 @@ public class ArrivalThread extends Thread{ @@ -66,145 +66,8 @@ public class ArrivalThread extends Thread{
66 for(String lineCode : newSet){ 66 for(String lineCode : newSet){
67 MatchService.addService(lineCode); 67 MatchService.addService(lineCode);
68 } 68 }
69 -  
70 -  
71 - /*try {  
72 - Bootstrap bs = Bootstrap.instance();  
73 - bs.start();  
74 - } catch (Exception e) {  
75 - e.printStackTrace();  
76 - }*/  
77 -  
78 - /*//车辆  
79 - Set<String> set = new HashSet<>();  
80 - for(ArrivalInfo arr : list)  
81 - set.add(CommonMapped.vehicDeviceBiMap.get(arr.getDeviceId()));  
82 -  
83 - List<ArrivalInfo> rsList = null;  
84 - List<ScheduleRealInfo> subList = null;  
85 - ArrivalInfo[] status;  
86 - for(String nbbm : set){  
87 - rsList = GpsArrivalDataBuffer.pops(nbbm);  
88 - //和该车辆班次进行匹配  
89 - subList = ScheduleBuffer.vehSchListMap.get(nbbm);  
90 -  
91 - if(null == subList || subList.size() == 0)  
92 - continue;  
93 -  
94 - try{  
95 - for(ScheduleRealInfo schedule : subList){  
96 - //匹配结果  
97 - status = match(rsList, schedule);  
98 -  
99 - //发车  
100 - if(status[0] != null){  
101 - //班次状态改为正在执行  
102 - schedule.setStatus(1);  
103 - ScheduleBuffer.persistentList.add(schedule);  
104 - //推送到页面  
105 - sendFcsj(schedule);  
106 -  
107 - rsList.remove(status[0]);  
108 - }  
109 -  
110 - //到达终点  
111 - if(status[1] != null){  
112 - //完成当前班次  
113 - ScheduleRealInfo nextSch = ScheduleBuffer.finishSch(schedule);  
114 - //到达终点,发送下一班次的调度指令  
115 - int finish = ScheduleBuffer.getFinishSchNo(nextSch.getClZbh());  
116 - directiveService.send60Dispatch(nextSch, finish);  
117 - //推送到页面  
118 - sendZdsj(schedule, nextSch, finish);  
119 -  
120 - rsList.remove(status[1]);  
121 - }  
122 - }  
123 - }catch(Exception e){  
124 - e.printStackTrace();  
125 - }  
126 - }*/  
127 - }  
128 -  
129 -/* public ArrivalInfo[] match(List<ArrivalInfo> arrList, ScheduleRealInfo sch){  
130 - //进出分组  
131 - List<ArrivalInfo> in = new ArrayList<>(), out = new ArrayList<>();  
132 - for(ArrivalInfo arr : arrList){  
133 - if(arr.getInOut() == 0)  
134 - in.add(arr);  
135 - else  
136 - out.add(arr);  
137 - }  
138 - ArrivalInfo a1 = null, a2 = null;  
139 - //匹配发车时间  
140 - if(sch.getFcsjActual() == null && sch.getFcsj() != null)  
141 - a1 = matchOut(out, sch);  
142 -  
143 - //匹配终点时间  
144 - if(sch.getZdsjActual() == null && sch.getZdsj() != null)  
145 - a2 = matchIn(in, sch);  
146 -  
147 - return new ArrivalInfo[]{a1,a2};  
148 - }  
149 -  
150 - public ArrivalInfo matchOut(List<ArrivalInfo> arrList, ScheduleRealInfo sch){  
151 - Long space = ScheduleBuffer.schSpaceMap.get(sch.getXlBm() + "_" + sch.getXlDir())diff;  
152 - for(ArrivalInfo arr : arrList){  
153 - if(arr.getStopNo().equals(sch.getQdzCode())  
154 - && Math.abs((arr.getTs() - sch.getFcsjT())) < space){  
155 - sch.setFcsjActualAll(arr.getTs());  
156 -  
157 - return arr;  
158 -  
159 - }  
160 - }  
161 - return null;  
162 } 69 }
163 70
164 - public ArrivalInfo matchIn(List<ArrivalInfo> arrList, ScheduleRealInfo sch){  
165 - Long space = ScheduleBuffer.schSpaceMap.get(sch.getXlBm() + "_" + sch.getXlDir())diff;  
166 - for(ArrivalInfo arr : arrList){  
167 - if(arr.getStopNo().equals(sch.getZdzCode())  
168 - && Math.abs((arr.getTs() - sch.getZdsjT())) < space){  
169 - sch.setZdsjActualAll(arr.getTs());  
170 -  
171 - return arr;  
172 - }  
173 - }  
174 - return null;  
175 - }*/  
176 -  
177 -  
178 - /**  
179 - * @Title: sendFcsj  
180 - * @Description: TODO(推送发车信息)  
181 - * @param @param schedule 班次  
182 - * @throws  
183 - */  
184 -/* public void sendFcsj(ScheduleRealInfo schedule){  
185 - JSONObject json = new JSONObject();  
186 - json.put("fn", "faChe");  
187 - json.put("t", schedule);  
188 - json.put("dataStr", sdf.format(new Date()));  
189 - socketHandler.sendMessageToLine(Integer.parseInt(schedule.getXlBm()), json.toJSONString());  
190 - }  
191 -  
192 - *//**  
193 - * @Title: sendFcsj  
194 - * @Description: TODO(推送到达终点时间)  
195 - * @param @param schedule 班次  
196 - * @throws  
197 - *//*  
198 - public void sendZdsj(ScheduleRealInfo schedule,ScheduleRealInfo nextSch, int finish){  
199 - JSONObject json = new JSONObject();  
200 - json.put("fn", "zhongDian");  
201 - json.put("t", schedule);  
202 - json.put("nt", nextSch);  
203 - json.put("finish", finish);  
204 - json.put("dataStr", sdf.format(new Date()));  
205 -  
206 - socketHandler.sendMessageToLine(Integer.parseInt(schedule.getXlBm()), json.toJSONString());  
207 - }*/  
208 71
209 /** 72 /**
210 * @throws ParseException 73 * @throws ParseException
@@ -258,24 +121,4 @@ public class ArrivalThread extends Thread{ @@ -258,24 +121,4 @@ public class ArrivalThread extends Thread{
258 } 121 }
259 return list; 122 return list;
260 } 123 }
261 -  
262 - Long rang = 1000 * 60 * 60L;  
263 - /**  
264 - *  
265 - * @Title: extractSched  
266 - * @Description: TODO(提取当前时间前后一小时的计划)  
267 - * @param @param allList  
268 - * @throws  
269 -  
270 - public List<ScheduleRealInfo> extractSched(List<ScheduleRealInfo> allList){  
271 - List<ScheduleRealInfo> subList = new ArrayList<>();  
272 - Long t = System.currentTimeMillis();  
273 - for(ScheduleRealInfo sch : allList){  
274 - if(Math.abs(sch.getFcsjT() - t) < rang  
275 - || (sch.getZdsjT() != null && Math.abs(sch.getZdsjT()) - t < rang)){  
276 - subList.add(sch);  
277 - }  
278 - }  
279 - return subList;  
280 - } */  
281 } 124 }
src/main/java/com/bsth/vehicle/gpsdata/GpsArrivalStationThread_old.java deleted 100644 → 0
1 -package com.bsth.vehicle.gpsdata;  
2 -  
3 -import java.sql.Connection;  
4 -import java.sql.PreparedStatement;  
5 -import java.sql.ResultSet;  
6 -import java.text.ParseException;  
7 -import java.text.SimpleDateFormat;  
8 -import java.util.ArrayList;  
9 -import java.util.Calendar;  
10 -import java.util.Date;  
11 -import java.util.Iterator;  
12 -import java.util.List;  
13 -import java.util.Set;  
14 -  
15 -import org.slf4j.Logger;  
16 -import org.slf4j.LoggerFactory;  
17 -import org.springframework.beans.factory.annotation.Autowired;  
18 -import org.springframework.stereotype.Component;  
19 -  
20 -import com.alibaba.fastjson.JSONObject;  
21 -import com.bsth.entity.realcontrol.ScheduleRealInfo;  
22 -import com.bsth.service.realcontrol.buffer.ScheduleBuffer;  
23 -import com.bsth.util.DateUtils;  
24 -import com.bsth.util.db.DBUtils_MS;  
25 -import com.bsth.vehicle.directive.service.DirectiveService;  
26 -import com.bsth.vehicle.gpsdata.buffer.ArrivalDataBuffer;  
27 -import com.bsth.vehicle.gpsdata.entity.ArrivalInfo;  
28 -import com.bsth.websocket.handler.RealControlSocketHandler;  
29 -  
30 -/**  
31 - *  
32 - * @ClassName: GpsArrivalStationThread  
33 - * @Description: TODO(GPS到离站)  
34 - * @author PanZhao  
35 - * @date 2016年6月27日 上午10:58:13  
36 - *  
37 - */  
38 -@Component  
39 -public class GpsArrivalStationThread_old extends Thread{  
40 -  
41 - Logger logger = LoggerFactory.getLogger(this.getClass());  
42 - SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");  
43 -  
44 - @Autowired  
45 - DirectiveService directiveService;  
46 -  
47 - @Autowired  
48 - RealControlSocketHandler socketHandler;  
49 -  
50 - private static int diff = 1000 * 60 * 20;  
51 -  
52 - @Override  
53 - public void run() {  
54 - List<ArrivalInfo> list = null;  
55 - try {  
56 - list = loadData();  
57 - } catch (ParseException e) {  
58 - e.printStackTrace();  
59 - }  
60 - ArrivalDataBuffer.putAll(list);  
61 - //实际到离站和计划排班相匹配  
62 -  
63 - Set<String> keySet = ArrivalDataBuffer.allMap.keySet();  
64 - System.out.println("开始...");  
65 - List<ScheduleRealInfo> schList;  
66 - for(String key : keySet){  
67 - schList = extractSched(ScheduleBuffer.carSchListMap.get(key));  
68 - if(null != schList)  
69 - match(ArrivalDataBuffer.allMap.get(key), schList);  
70 - }  
71 - System.out.println("结束...");  
72 - }  
73 -  
74 -  
75 - /**  
76 - *  
77 - * @Title: match  
78 - * @Description: TODO(实际和计划进行匹配)  
79 - * @param @param arrList 实际GPS到离站链表  
80 - * @param @param schList 计划排班链表  
81 - * @throws  
82 - */  
83 - public void match(List<ArrivalInfo> arrList, List<ScheduleRealInfo> schList){  
84 - Iterator<ScheduleRealInfo> schIterator = schList.iterator();  
85 -  
86 - while(schIterator.hasNext())  
87 - match(schIterator.next(), arrList);  
88 - }  
89 -  
90 -  
91 - public void match(ScheduleRealInfo scInfo, List<ArrivalInfo> arrList){  
92 - for(ArrivalInfo arr : arrList){  
93 - match(scInfo, arr);  
94 - }  
95 - }  
96 -  
97 - public void match(ScheduleRealInfo scInfo, ArrivalInfo arr){  
98 - try{  
99 - //匹配起点  
100 - matchStart(scInfo, arr);  
101 -  
102 - //匹配终点  
103 - matchEnd(scInfo, arr);  
104 - }catch(Exception e){  
105 - e.printStackTrace();  
106 - }  
107 - }  
108 -  
109 - /**  
110 - *  
111 - * @Title: matchStart  
112 - * @Description: TODO(匹配起点 出站时间)  
113 - * @param @param scInfo  
114 - * @throws  
115 - */  
116 - public void matchStart(ScheduleRealInfo scInfo, ArrivalInfo arr){  
117 - if(scInfo.getFcsjT() == null  
118 - || arr.getInOut() != 1 || scInfo.getFcsjActual() != null)  
119 - return;  
120 -  
121 - Long ts = arr.getTs();  
122 - //起点站和发车时间比比较  
123 - if(scInfo.getQdzCode().equals(arr.getStopNo())  
124 - && Math.abs(scInfo.getFcsjT() - ts) < diff){  
125 - scInfo.setFcsjActualTime(ts);  
126 - scInfo.setFcsjActual(sdf.format(ts));  
127 -  
128 - System.out.println("成功匹配一个起点...");  
129 - //班次状态改为正在执行  
130 - scInfo.setStatus(1);  
131 - ScheduleBuffer.persistentList.add(scInfo);  
132 - //推送到页面  
133 - sendFcsj(scInfo);  
134 - }  
135 - }  
136 -  
137 - /**  
138 - * @Title: sendFcsj  
139 - * @Description: TODO(推送发车信息)  
140 - * @param @param schedule 班次  
141 - * @throws  
142 - */  
143 - public void sendFcsj(ScheduleRealInfo schedule){  
144 - JSONObject json = new JSONObject();  
145 - json.put("fn", "faChe");  
146 - json.put("t", schedule);  
147 - json.put("dataStr", sdf.format(new Date()));  
148 - socketHandler.sendMessageToLine(Integer.parseInt(schedule.getXlBm()), json.toJSONString());  
149 - }  
150 -  
151 - /**  
152 - *  
153 - * @Title: matchEnd  
154 - * @Description: TODO(匹配终点 进站时间)  
155 - * @throws  
156 - */  
157 - public void matchEnd(ScheduleRealInfo scInfo, ArrivalInfo arr){  
158 - if(scInfo.getZdsjT() == null  
159 - || arr.getInOut() != 0 || scInfo.getZdsjActual() != null)  
160 - return;  
161 -  
162 - Long ts = arr.getTs();  
163 - //终点站和发车时间比较  
164 - if(scInfo.getZdzCode().equals(arr.getStopNo())  
165 - && Math.abs(scInfo.getZdsjT() - ts) < diff){  
166 - scInfo.setZdsjActualTime(ts);  
167 - scInfo.setZdsjActual(sdf.format(ts));  
168 -  
169 - System.out.println("成功匹配一个终点...");  
170 - //完成当前班次  
171 - ScheduleRealInfo nextSch = ScheduleBuffer.finishSch(scInfo);  
172 - //到达终点,发送下一班次的调度指令  
173 - int finish = ScheduleBuffer.getFinishSchNo(nextSch.getClZbh());  
174 - directiveService.send60Dispatch(nextSch, finish);  
175 - //推送到页面  
176 - sendZdsj(scInfo, nextSch, finish);  
177 - }  
178 - }  
179 -  
180 - /**  
181 - * @Title: sendFcsj  
182 - * @Description: TODO(推送到达终点时间)  
183 - * @param @param schedule 班次  
184 - * @throws  
185 - */  
186 - public void sendZdsj(ScheduleRealInfo schedule,ScheduleRealInfo nextSch, int finish){  
187 - JSONObject json = new JSONObject();  
188 - json.put("fn", "zhongDian");  
189 - json.put("t", schedule);  
190 - json.put("nt", nextSch);  
191 - json.put("finish", finish);  
192 - json.put("dataStr", sdf.format(new Date()));  
193 -  
194 - socketHandler.sendMessageToLine(Integer.parseInt(schedule.getXlBm()), json.toJSONString());  
195 - }  
196 -  
197 - /**  
198 - * @throws ParseException  
199 - *  
200 - * @Title: loadData  
201 - * @Description: TODO(从数据库加载到离站信息)  
202 - * @return List<ArrivalInfo> 返回类型  
203 - * @throws  
204 - */  
205 - private List<ArrivalInfo> loadData() throws ParseException{  
206 - Calendar cal = Calendar.getInstance();  
207 - //周数,表分区字段  
208 - int weeks_year = cal.get(Calendar.WEEK_OF_YEAR);  
209 - //按时间标记增量加载  
210 - if(null == ArrivalDataBuffer.markTime){  
211 - //第一次从当天0点开始  
212 - ArrivalDataBuffer.markTime = DateUtils.getTimesmorning() * 1000L;  
213 - }  
214 -  
215 - String sql = "select * from bsth_c_arrival_info where weeks_year=? and create_date > ? order by ts";  
216 -  
217 - List<ArrivalInfo> list = new ArrayList<>();  
218 - Connection conn = null;  
219 - PreparedStatement ps = null;  
220 - ResultSet rs = null;  
221 - try {  
222 - conn = DBUtils_MS.getConnection();  
223 - ps = conn.prepareStatement(sql);  
224 - ps.setInt(1, weeks_year);  
225 - ps.setLong(2, ArrivalDataBuffer.markTime);  
226 -  
227 - Long t = System.currentTimeMillis();  
228 - rs = ps.executeQuery();  
229 -  
230 - while(rs.next()){  
231 - list.add(new ArrivalInfo(rs.getString("device_id"), rs.getLong("ts"), rs.getString("line_id")  
232 - , rs.getInt("up_down"), rs.getString("stop_no"), rs.getInt("in_out"), rs.getLong("create_date"), rs.getInt("weeks_year")));  
233 - }  
234 -  
235 - //重新打时间标记  
236 - ArrivalDataBuffer.markTime = t;  
237 -  
238 - } catch (Exception e) {  
239 - logger.error("", e);  
240 - }finally {  
241 - DBUtils_MS.close(rs, ps, conn);  
242 - }  
243 - return list;  
244 - }  
245 -  
246 - Long rang = 1000 * 60 * 60L;  
247 - /**  
248 - *  
249 - * @Title: extractSched  
250 - * @Description: TODO(提取当前时间前后一小时的计划)  
251 - * @param @param allList  
252 - * @throws  
253 - */  
254 - public List<ScheduleRealInfo> extractSched(List<ScheduleRealInfo> allList){  
255 - List<ScheduleRealInfo> subList = new ArrayList<>();  
256 - System.out.println("原计划:" + allList.size());  
257 - Long t = System.currentTimeMillis();  
258 - for(ScheduleRealInfo sch : allList){  
259 - if(Math.abs(sch.getFcsjT() - t) < rang  
260 - || (sch.getZdsjT() != null && Math.abs(sch.getZdsjT()) - t < rang)){  
261 - subList.add(sch);  
262 - }  
263 - }  
264 - System.out.println("按时间提取:" + subList.size());  
265 - return subList;  
266 - }  
267 -}  
src/main/java/com/bsth/vehicle/gpsdata/arrival/match/ScheduleRealMatcher.java
@@ -155,18 +155,20 @@ public class ScheduleRealMatcher implements ApplicationContextAware{ @@ -155,18 +155,20 @@ public class ScheduleRealMatcher implements ApplicationContextAware{
155 } 155 }
156 156
157 finish = ScheduleBuffer.getFinishSchNo(sch.getClZbh()); 157 finish = ScheduleBuffer.getFinishSchNo(sch.getClZbh());
158 - upDown = Integer.parseInt(sch.getXlDir()); 158 +
159 if(nextSch != null){ 159 if(nextSch != null){
160 - //发送下一班次的调度指令  
161 - directiveService.send60Dispatch(nextSch, finish); 160 + //发送下一班次的调度指令(并切换营运状态)
  161 + directiveService.send60Dispatch(nextSch, finish, null);
  162 +
  163 + //upDown = Integer.parseInt(nextSch.getXlDir());
162 //切换下一个班次的走向 164 //切换下一个班次的走向
163 - logger.info(sch.getClZbh() + " 切换下一班次走向");  
164 - directiveService.send60Operation(nextSch.getClZbh(), 0, upDown, nextSch); 165 + //directiveService.send60Operation(nextSch.getClZbh(), 0, upDown, nextSch, null);
165 } 166 }
166 else{ 167 else{
  168 + upDown = Integer.parseInt(sch.getXlDir());
167 //没有下一个班次了,切换为非营运状态 169 //没有下一个班次了,切换为非营运状态
168 logger.info(sch.getClZbh() + " 完成所有班次,切换为非营运状态"); 170 logger.info(sch.getClZbh() + " 完成所有班次,切换为非营运状态");
169 - directiveService.send60Operation(sch.getClZbh(), 1, upDown, sch); 171 + directiveService.send60Operation(sch.getClZbh(), 1, upDown, sch, null);
170 } 172 }
171 173
172 sendZdsj(sch, nextSch, finish);//推送到页面 174 sendZdsj(sch, nextSch, finish);//推送到页面
@@ -183,10 +185,6 @@ public class ScheduleRealMatcher implements ApplicationContextAware{ @@ -183,10 +185,6 @@ public class ScheduleRealMatcher implements ApplicationContextAware{
183 * @throws 185 * @throws
184 */ 186 */
185 public void sendFcsj(ScheduleRealInfo schedule) { 187 public void sendFcsj(ScheduleRealInfo schedule) {
186 - /*JSONObject json = new JSONObject();  
187 - json.put("fn", "faChe");  
188 - json.put("t", schedule);  
189 - json.put("dataStr", sdf.format(new Date()));*/  
190 188
191 Map<String, Object> map = new HashMap<>(); 189 Map<String, Object> map = new HashMap<>();
192 map.put("fn", "faChe"); 190 map.put("fn", "faChe");
@@ -212,12 +210,6 @@ public class ScheduleRealMatcher implements ApplicationContextAware{ @@ -212,12 +210,6 @@ public class ScheduleRealMatcher implements ApplicationContextAware{
212 * @throws 210 * @throws
213 */ 211 */
214 public void sendZdsj(ScheduleRealInfo schedule,ScheduleRealInfo nextSch, int finish) { 212 public void sendZdsj(ScheduleRealInfo schedule,ScheduleRealInfo nextSch, int finish) {
215 - /*JSONObject json = new JSONObject();  
216 - json.put("fn", "zhongDian");  
217 - json.put("t", schedule);  
218 - json.put("nt", nextSch);  
219 - json.put("finish", finish);  
220 - json.put("dataStr", sdf.format(new Date()));*/  
221 213
222 Map<String, Object> map = new HashMap<>(); 214 Map<String, Object> map = new HashMap<>();
223 map.put("fn", "zhongDian"); 215 map.put("fn", "zhongDian");
src/main/java/com/bsth/vehicle/gpsdata/buffer/GpsRealDataBuffer.java
@@ -103,11 +103,9 @@ public class GpsRealDataBuffer { @@ -103,11 +103,9 @@ public class GpsRealDataBuffer {
103 103
104 //更新GPS点 104 //更新GPS点
105 for(GpsRealData newGps : upGpsList){ 105 for(GpsRealData newGps : upGpsList){
106 - if(t - newGps.getTimestamp() < OFFLINE_TIME  
107 - && !newGps.isOnline()){  
108 - logger.info("设备:" + newGps.getDeviceId() + " 上线"); 106 +
  107 + if(t - newGps.getTimestamp() < OFFLINE_TIME )
109 newGps.setOnline(true); 108 newGps.setOnline(true);
110 - }  
111 109
112 deviceGpsMap.put(newGps.getDeviceId(), newGps); 110 deviceGpsMap.put(newGps.getDeviceId(), newGps);
113 } 111 }
src/main/resources/datatools/ktrs/ttinfodetailDataInput.ktr
@@ -587,13 +587,31 @@ @@ -587,13 +587,31 @@
587 <optimizationLevel>9</optimizationLevel> 587 <optimizationLevel>9</optimizationLevel>
588 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> 588 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
589 <jsScript_name>Script 1</jsScript_name> 589 <jsScript_name>Script 1</jsScript_name>
590 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x4e2d;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x5c;d&#x2b;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;&#xa;</jsScript_script> 590 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x4e2d;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x5c;d&#x2b;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; sendtime&#x5904;&#x7406;&#xa;var sendtime_calcu&#x3b;&#xa;if &#x28;sendtime.length &#x21;&#x3d; 5&#x29; &#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa;else &#xa; sendtime_calcu &#x3d; sendtime&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x5206;&#x73ed;&#xa;var isfb &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;isCanceled&#xa;var iscanceled &#x3d; 0&#x3b;</jsScript_script>
591 </jsScript> </jsScripts> <fields> <field> <name>qdzname</name> 591 </jsScript> </jsScripts> <fields> <field> <name>qdzname</name>
592 <rename>qdzname</rename> 592 <rename>qdzname</rename>
593 <type>String</type> 593 <type>String</type>
594 <length>-1</length> 594 <length>-1</length>
595 <precision>-1</precision> 595 <precision>-1</precision>
596 <replace>Y</replace> 596 <replace>Y</replace>
  597 + </field> <field> <name>isfb</name>
  598 + <rename>isfb</rename>
  599 + <type>Integer</type>
  600 + <length>-1</length>
  601 + <precision>-1</precision>
  602 + <replace>N</replace>
  603 + </field> <field> <name>iscanceled</name>
  604 + <rename>iscanceled</rename>
  605 + <type>Integer</type>
  606 + <length>-1</length>
  607 + <precision>-1</precision>
  608 + <replace>N</replace>
  609 + </field> <field> <name>sendtime_calcu</name>
  610 + <rename>sendtime_calcu</rename>
  611 + <type>String</type>
  612 + <length>-1</length>
  613 + <precision>-1</precision>
  614 + <replace>N</replace>
597 </field> </fields> <cluster_schema/> 615 </field> </fields> <cluster_schema/>
598 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 616 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
599 <xloc>788</xloc> 617 <xloc>788</xloc>
@@ -693,76 +711,8 @@ @@ -693,76 +711,8 @@
693 </step> 711 </step>
694 712
695 <step> 713 <step>
696 - <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</name>  
697 - <type>ExcelInput</type>  
698 - <description/>  
699 - <distribute>Y</distribute>  
700 - <custom_distribution/>  
701 - <copies>1</copies>  
702 - <partitioning>  
703 - <method>none</method>  
704 - <schema_name/>  
705 - </partitioning>  
706 - <header>Y</header>  
707 - <noempty>Y</noempty>  
708 - <stoponempty>N</stoponempty>  
709 - <filefield/>  
710 - <sheetfield/>  
711 - <sheetrownumfield/>  
712 - <rownumfield/>  
713 - <sheetfield/>  
714 - <filefield/>  
715 - <limit>0</limit>  
716 - <encoding/>  
717 - <add_to_result_filenames>Y</add_to_result_filenames>  
718 - <accept_filenames>N</accept_filenames>  
719 - <accept_field/>  
720 - <accept_stepname/>  
721 - <file>  
722 - <name/>  
723 - <filemask/>  
724 - <exclude_filemask/>  
725 - <file_required>N</file_required>  
726 - <include_subfolders>N</include_subfolders>  
727 - </file>  
728 - <fields>  
729 - </fields>  
730 - <sheets>  
731 - <sheet>  
732 - <name>&#x5de5;&#x4f5c;&#x8868;1</name>  
733 - <startrow>0</startrow>  
734 - <startcol>0</startcol>  
735 - </sheet>  
736 - </sheets>  
737 - <strict_types>N</strict_types>  
738 - <error_ignored>N</error_ignored>  
739 - <error_line_skipped>N</error_line_skipped>  
740 - <bad_line_files_destination_directory/>  
741 - <bad_line_files_extension>warning</bad_line_files_extension>  
742 - <error_line_files_destination_directory/>  
743 - <error_line_files_extension>error</error_line_files_extension>  
744 - <line_number_files_destination_directory/>  
745 - <line_number_files_extension>line</line_number_files_extension>  
746 - <shortFileFieldName/>  
747 - <pathFieldName/>  
748 - <hiddenFieldName/>  
749 - <lastModificationTimeFieldName/>  
750 - <uriNameFieldName/>  
751 - <rootUriNameFieldName/>  
752 - <extensionFieldName/>  
753 - <sizeFieldName/>  
754 - <spreadsheet_type>JXL</spreadsheet_type>  
755 - <cluster_schema/>  
756 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
757 - <xloc>112</xloc>  
758 - <yloc>44</yloc>  
759 - <draw>Y</draw>  
760 - </GUI>  
761 - </step>  
762 -  
763 - <step>  
764 - <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</name>  
765 - <type>DBLookup</type> 714 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail</name>
  715 + <type>InsertUpdate</type>
766 <description/> 716 <description/>
767 <distribute>Y</distribute> 717 <distribute>Y</distribute>
768 <custom_distribution/> 718 <custom_distribution/>
@@ -772,141 +722,118 @@ @@ -772,141 +722,118 @@
772 <schema_name/> 722 <schema_name/>
773 </partitioning> 723 </partitioning>
774 <connection>bus_control_variable</connection> 724 <connection>bus_control_variable</connection>
775 - <cache>N</cache>  
776 - <cache_load_all>N</cache_load_all>  
777 - <cache_size>0</cache_size> 725 + <commit>100</commit>
  726 + <update_bypassed>N</update_bypassed>
778 <lookup> 727 <lookup>
779 <schema/> 728 <schema/>
780 - <table>bsth_c_car_park</table>  
781 - <orderby/>  
782 - <fail_on_multiple>N</fail_on_multiple>  
783 - <eat_row_on_failure>N</eat_row_on_failure> 729 + <table>bsth_c_s_ttinfo_detail</table>
784 <key> 730 <key>
785 - <name>tccname_</name>  
786 - <field>park_name</field> 731 + <name>xlid</name>
  732 + <field>xl</field>
787 <condition>&#x3d;</condition> 733 <condition>&#x3d;</condition>
788 <name2/> 734 <name2/>
789 </key> 735 </key>
790 - <value>  
791 - <name>id</name>  
792 - <rename>qdzid</rename>  
793 - <default/>  
794 - <type>Integer</type>  
795 - </value>  
796 - </lookup>  
797 - <cluster_schema/>  
798 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
799 - <xloc>755</xloc>  
800 - <yloc>504</yloc>  
801 - <draw>Y</draw>  
802 - </GUI>  
803 - </step>  
804 -  
805 - <step>  
806 - <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</name>  
807 - <type>DBLookup</type>  
808 - <description/>  
809 - <distribute>Y</distribute>  
810 - <custom_distribution/>  
811 - <copies>1</copies>  
812 - <partitioning>  
813 - <method>none</method>  
814 - <schema_name/>  
815 - </partitioning>  
816 - <connection>bus_control_variable</connection>  
817 - <cache>N</cache>  
818 - <cache_load_all>N</cache_load_all>  
819 - <cache_size>0</cache_size>  
820 - <lookup>  
821 - <schema/>  
822 - <table>bsth_c_car_park</table>  
823 - <orderby/>  
824 - <fail_on_multiple>N</fail_on_multiple>  
825 - <eat_row_on_failure>N</eat_row_on_failure>  
826 <key> 736 <key>
827 - <name>tccname_</name>  
828 - <field>park_name</field> 737 + <name>ttid</name>
  738 + <field>ttinfo</field>
829 <condition>&#x3d;</condition> 739 <condition>&#x3d;</condition>
830 <name2/> 740 <name2/>
831 </key> 741 </key>
832 - <value>  
833 - <name>id</name>  
834 - <rename>zdzid</rename>  
835 - <default/>  
836 - <type>Integer</type>  
837 - </value>  
838 - </lookup>  
839 - <cluster_schema/>  
840 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
841 - <xloc>887</xloc>  
842 - <yloc>608</yloc>  
843 - <draw>Y</draw>  
844 - </GUI>  
845 - </step>  
846 -  
847 - <step>  
848 - <name>&#x67e5;&#x627e;&#x51fa;&#x573a;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>  
849 - <type>DBLookup</type>  
850 - <description/>  
851 - <distribute>Y</distribute>  
852 - <custom_distribution/>  
853 - <copies>1</copies>  
854 - <partitioning>  
855 - <method>none</method>  
856 - <schema_name/>  
857 - </partitioning>  
858 - <connection>bus_control_variable</connection>  
859 - <cache>N</cache>  
860 - <cache_load_all>N</cache_load_all>  
861 - <cache_size>0</cache_size>  
862 - <lookup>  
863 - <schema/>  
864 - <table>bsth_c_stationroute</table>  
865 - <orderby/>  
866 - <fail_on_multiple>N</fail_on_multiple>  
867 - <eat_row_on_failure>N</eat_row_on_failure>  
868 <key> 742 <key>
869 - <name>xlid</name>  
870 - <field>line</field> 743 + <name>lpid</name>
  744 + <field>lp</field>
871 <condition>&#x3d;</condition> 745 <condition>&#x3d;</condition>
872 <name2/> 746 <name2/>
873 </key> 747 </key>
874 <key> 748 <key>
875 - <name>zdzname</name>  
876 - <field>station_name</field> 749 + <name>fcno</name>
  750 + <field>fcno</field>
877 <condition>&#x3d;</condition> 751 <condition>&#x3d;</condition>
878 <name2/> 752 <name2/>
879 </key> 753 </key>
880 <key> 754 <key>
881 - <name>endZdtype</name>  
882 - <field>station_mark</field> 755 + <name>bcs</name>
  756 + <field>bcs</field>
883 <condition>&#x3d;</condition> 757 <condition>&#x3d;</condition>
884 <name2/> 758 <name2/>
885 </key> 759 </key>
886 <value> 760 <value>
887 - <name>station</name> 761 + <name>lp</name>
  762 + <rename>lpid</rename>
  763 + <update>Y</update>
  764 + </value>
  765 + <value>
  766 + <name>bc_type</name>
  767 + <rename>bctype_code</rename>
  768 + <update>Y</update>
  769 + </value>
  770 + <value>
  771 + <name>bcs</name>
  772 + <rename>bcs</rename>
  773 + <update>Y</update>
  774 + </value>
  775 + <value>
  776 + <name>bcsj</name>
  777 + <rename>bcsj</rename>
  778 + <update>Y</update>
  779 + </value>
  780 + <value>
  781 + <name>fcno</name>
  782 + <rename>fcno</rename>
  783 + <update>Y</update>
  784 + </value>
  785 + <value>
  786 + <name>jhlc</name>
  787 + <rename>jhlc</rename>
  788 + <update>Y</update>
  789 + </value>
  790 + <value>
  791 + <name>fcsj</name>
  792 + <rename>sendtime_calcu</rename>
  793 + <update>Y</update>
  794 + </value>
  795 + <value>
  796 + <name>ttinfo</name>
  797 + <rename>ttid</rename>
  798 + <update>Y</update>
  799 + </value>
  800 + <value>
  801 + <name>xl</name>
  802 + <rename>xlid</rename>
  803 + <update>Y</update>
  804 + </value>
  805 + <value>
  806 + <name>qdz</name>
  807 + <rename>qdzid</rename>
  808 + <update>Y</update>
  809 + </value>
  810 + <value>
  811 + <name>zdz</name>
888 <rename>zdzid</rename> 812 <rename>zdzid</rename>
889 - <default/>  
890 - <type>Integer</type> 813 + <update>Y</update>
891 </value> 814 </value>
892 <value> 815 <value>
893 - <name>directions</name> 816 + <name>xl_dir</name>
894 <rename>sxx</rename> 817 <rename>sxx</rename>
895 - <default/>  
896 - <type>Integer</type> 818 + <update>Y</update>
  819 + </value>
  820 + <value>
  821 + <name>isfb</name>
  822 + <rename>isfb</rename>
  823 + <update>Y</update>
897 </value> 824 </value>
898 </lookup> 825 </lookup>
899 <cluster_schema/> 826 <cluster_schema/>
900 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 827 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
901 - <xloc>329</xloc>  
902 - <yloc>505</yloc> 828 + <xloc>143</xloc>
  829 + <yloc>860</yloc>
903 <draw>Y</draw> 830 <draw>Y</draw>
904 </GUI> 831 </GUI>
905 </step> 832 </step>
906 833
907 <step> 834 <step>
908 - <name>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</name>  
909 - <type>DBLookup</type> 835 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 2</name>
  836 + <type>InsertUpdate</type>
910 <description/> 837 <description/>
911 <distribute>Y</distribute> 838 <distribute>Y</distribute>
912 <custom_distribution/> 839 <custom_distribution/>
@@ -916,15 +843,11 @@ @@ -916,15 +843,11 @@
916 <schema_name/> 843 <schema_name/>
917 </partitioning> 844 </partitioning>
918 <connection>bus_control_variable</connection> 845 <connection>bus_control_variable</connection>
919 - <cache>N</cache>  
920 - <cache_load_all>N</cache_load_all>  
921 - <cache_size>0</cache_size> 846 + <commit>100</commit>
  847 + <update_bypassed>N</update_bypassed>
922 <lookup> 848 <lookup>
923 <schema/> 849 <schema/>
924 - <table>bsth_c_s_ttinfo</table>  
925 - <orderby/>  
926 - <fail_on_multiple>N</fail_on_multiple>  
927 - <eat_row_on_failure>N</eat_row_on_failure> 850 + <table>bsth_c_s_ttinfo_detail</table>
928 <key> 851 <key>
929 <name>xlid</name> 852 <name>xlid</name>
930 <field>xl</field> 853 <field>xl</field>
@@ -932,89 +855,106 @@ @@ -932,89 +855,106 @@
932 <name2/> 855 <name2/>
933 </key> 856 </key>
934 <key> 857 <key>
935 - <name>ttinfoname_</name>  
936 - <field>name</field> 858 + <name>ttid</name>
  859 + <field>ttinfo</field>
937 <condition>&#x3d;</condition> 860 <condition>&#x3d;</condition>
938 <name2/> 861 <name2/>
939 </key> 862 </key>
940 - <value>  
941 - <name>id</name>  
942 - <rename>ttid</rename>  
943 - <default/>  
944 - <type>Integer</type>  
945 - </value>  
946 - </lookup>  
947 - <cluster_schema/>  
948 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
949 - <xloc>1011</xloc>  
950 - <yloc>134</yloc>  
951 - <draw>Y</draw>  
952 - </GUI>  
953 - </step>  
954 -  
955 - <step>  
956 - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>  
957 - <type>DBLookup</type>  
958 - <description/>  
959 - <distribute>Y</distribute>  
960 - <custom_distribution/>  
961 - <copies>1</copies>  
962 - <partitioning>  
963 - <method>none</method>  
964 - <schema_name/>  
965 - </partitioning>  
966 - <connection>bus_control_variable</connection>  
967 - <cache>N</cache>  
968 - <cache_load_all>N</cache_load_all>  
969 - <cache_size>0</cache_size>  
970 - <lookup>  
971 - <schema/>  
972 - <table>bsth_c_line_information</table>  
973 - <orderby/>  
974 - <fail_on_multiple>N</fail_on_multiple>  
975 - <eat_row_on_failure>N</eat_row_on_failure>  
976 <key> 863 <key>
977 - <name>xlid</name>  
978 - <field>line</field> 864 + <name>lpid</name>
  865 + <field>lp</field>
  866 + <condition>&#x3d;</condition>
  867 + <name2/>
  868 + </key>
  869 + <key>
  870 + <name>fcno</name>
  871 + <field>fcno</field>
  872 + <condition>&#x3d;</condition>
  873 + <name2/>
  874 + </key>
  875 + <key>
  876 + <name>bcs</name>
  877 + <field>bcs</field>
979 <condition>&#x3d;</condition> 878 <condition>&#x3d;</condition>
980 <name2/> 879 <name2/>
981 </key> 880 </key>
982 <value> 881 <value>
983 - <name>up_mileage</name>  
984 - <rename>up_mileage</rename>  
985 - <default/>  
986 - <type>Number</type> 882 + <name>tcc</name>
  883 + <rename>qdzid</rename>
  884 + <update>Y</update>
987 </value> 885 </value>
988 <value> 886 <value>
989 - <name>down_mileage</name>  
990 - <rename>down_mileage</rename>  
991 - <default/>  
992 - <type>Number</type> 887 + <name>zdz</name>
  888 + <rename>zdzid</rename>
  889 + <update>Y</update>
993 </value> 890 </value>
994 <value> 891 <value>
995 - <name>up_travel_time</name>  
996 - <rename>up_travel_time</rename>  
997 - <default/>  
998 - <type>Number</type> 892 + <name>xl</name>
  893 + <rename>xlid</rename>
  894 + <update>Y</update>
999 </value> 895 </value>
1000 <value> 896 <value>
1001 - <name>down_travel_time</name>  
1002 - <rename>down_travel_time</rename>  
1003 - <default/>  
1004 - <type>Number</type> 897 + <name>ttinfo</name>
  898 + <rename>ttid</rename>
  899 + <update>Y</update>
  900 + </value>
  901 + <value>
  902 + <name>xl_dir</name>
  903 + <rename>sxx</rename>
  904 + <update>Y</update>
  905 + </value>
  906 + <value>
  907 + <name>lp</name>
  908 + <rename>lpid</rename>
  909 + <update>Y</update>
  910 + </value>
  911 + <value>
  912 + <name>jhlc</name>
  913 + <rename>out_mileage</rename>
  914 + <update>Y</update>
  915 + </value>
  916 + <value>
  917 + <name>fcsj</name>
  918 + <rename>sendtime_calcu</rename>
  919 + <update>Y</update>
  920 + </value>
  921 + <value>
  922 + <name>bcsj</name>
  923 + <rename>out_time</rename>
  924 + <update>Y</update>
  925 + </value>
  926 + <value>
  927 + <name>bcs</name>
  928 + <rename>bcs</rename>
  929 + <update>Y</update>
  930 + </value>
  931 + <value>
  932 + <name>fcno</name>
  933 + <rename>fcno</rename>
  934 + <update>Y</update>
  935 + </value>
  936 + <value>
  937 + <name>bc_type</name>
  938 + <rename>bctype_code</rename>
  939 + <update>Y</update>
  940 + </value>
  941 + <value>
  942 + <name>isfb</name>
  943 + <rename>isfb</rename>
  944 + <update>Y</update>
1005 </value> 945 </value>
1006 </lookup> 946 </lookup>
1007 <cluster_schema/> 947 <cluster_schema/>
1008 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 948 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1009 - <xloc>149</xloc>  
1010 - <yloc>581</yloc> 949 + <xloc>340</xloc>
  950 + <yloc>890</yloc>
1011 <draw>Y</draw> 951 <draw>Y</draw>
1012 </GUI> 952 </GUI>
1013 </step> 953 </step>
1014 954
1015 <step> 955 <step>
1016 - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>  
1017 - <type>DBLookup</type> 956 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 3</name>
  957 + <type>InsertUpdate</type>
1018 <description/> 958 <description/>
1019 <distribute>Y</distribute> 959 <distribute>Y</distribute>
1020 <custom_distribution/> 960 <custom_distribution/>
@@ -1024,39 +964,118 @@ @@ -1024,39 +964,118 @@
1024 <schema_name/> 964 <schema_name/>
1025 </partitioning> 965 </partitioning>
1026 <connection>bus_control_variable</connection> 966 <connection>bus_control_variable</connection>
1027 - <cache>N</cache>  
1028 - <cache_load_all>N</cache_load_all>  
1029 - <cache_size>0</cache_size> 967 + <commit>100</commit>
  968 + <update_bypassed>N</update_bypassed>
1030 <lookup> 969 <lookup>
1031 <schema/> 970 <schema/>
1032 - <table>bsth_c_line</table>  
1033 - <orderby/>  
1034 - <fail_on_multiple>N</fail_on_multiple>  
1035 - <eat_row_on_failure>N</eat_row_on_failure> 971 + <table>bsth_c_s_ttinfo_detail</table>
1036 <key> 972 <key>
1037 - <name>xlname_</name>  
1038 - <field>name</field> 973 + <name>xlid</name>
  974 + <field>xl</field>
  975 + <condition>&#x3d;</condition>
  976 + <name2/>
  977 + </key>
  978 + <key>
  979 + <name>ttid</name>
  980 + <field>ttinfo</field>
  981 + <condition>&#x3d;</condition>
  982 + <name2/>
  983 + </key>
  984 + <key>
  985 + <name>lpid</name>
  986 + <field>lp</field>
  987 + <condition>&#x3d;</condition>
  988 + <name2/>
  989 + </key>
  990 + <key>
  991 + <name>fcno</name>
  992 + <field>fcno</field>
  993 + <condition>&#x3d;</condition>
  994 + <name2/>
  995 + </key>
  996 + <key>
  997 + <name>bcs</name>
  998 + <field>bcs</field>
1039 <condition>&#x3d;</condition> 999 <condition>&#x3d;</condition>
1040 <name2/> 1000 <name2/>
1041 </key> 1001 </key>
1042 <value> 1002 <value>
1043 - <name>id</name> 1003 + <name>fcno</name>
  1004 + <rename>fcno</rename>
  1005 + <update>Y</update>
  1006 + </value>
  1007 + <value>
  1008 + <name>bcs</name>
  1009 + <rename>bcs</rename>
  1010 + <update>Y</update>
  1011 + </value>
  1012 + <value>
  1013 + <name>xl</name>
1044 <rename>xlid</rename> 1014 <rename>xlid</rename>
1045 - <default/>  
1046 - <type>Integer</type> 1015 + <update>Y</update>
  1016 + </value>
  1017 + <value>
  1018 + <name>ttinfo</name>
  1019 + <rename>ttid</rename>
  1020 + <update>Y</update>
  1021 + </value>
  1022 + <value>
  1023 + <name>lp</name>
  1024 + <rename>lpid</rename>
  1025 + <update>Y</update>
  1026 + </value>
  1027 + <value>
  1028 + <name>bc_type</name>
  1029 + <rename>bctype_code</rename>
  1030 + <update>Y</update>
  1031 + </value>
  1032 + <value>
  1033 + <name>bcsj</name>
  1034 + <rename>parade_time</rename>
  1035 + <update>Y</update>
  1036 + </value>
  1037 + <value>
  1038 + <name>jhlc</name>
  1039 + <rename>parade_mileage</rename>
  1040 + <update>Y</update>
  1041 + </value>
  1042 + <value>
  1043 + <name>fcsj</name>
  1044 + <rename>sendtime_calcu</rename>
  1045 + <update>Y</update>
  1046 + </value>
  1047 + <value>
  1048 + <name>xl_dir</name>
  1049 + <rename>sxx</rename>
  1050 + <update>Y</update>
  1051 + </value>
  1052 + <value>
  1053 + <name>qdz</name>
  1054 + <rename>qdzid</rename>
  1055 + <update>Y</update>
  1056 + </value>
  1057 + <value>
  1058 + <name>tcc</name>
  1059 + <rename>zdzid</rename>
  1060 + <update>Y</update>
  1061 + </value>
  1062 + <value>
  1063 + <name>isfb</name>
  1064 + <rename>isfb</rename>
  1065 + <update>Y</update>
1047 </value> 1066 </value>
1048 </lookup> 1067 </lookup>
1049 <cluster_schema/> 1068 <cluster_schema/>
1050 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1069 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1051 - <xloc>1007</xloc>  
1052 - <yloc>43</yloc> 1070 + <xloc>770</xloc>
  1071 + <yloc>923</yloc>
1053 <draw>Y</draw> 1072 <draw>Y</draw>
1054 </GUI> 1073 </GUI>
1055 </step> 1074 </step>
1056 1075
1057 <step> 1076 <step>
1058 - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>  
1059 - <type>DBLookup</type> 1077 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</name>
  1078 + <type>ExcelInput</type>
1060 <description/> 1079 <description/>
1061 <distribute>Y</distribute> 1080 <distribute>Y</distribute>
1062 <custom_distribution/> 1081 <custom_distribution/>
@@ -1065,45 +1084,65 @@ @@ -1065,45 +1084,65 @@
1065 <method>none</method> 1084 <method>none</method>
1066 <schema_name/> 1085 <schema_name/>
1067 </partitioning> 1086 </partitioning>
1068 - <connection>bus_control_variable</connection>  
1069 - <cache>N</cache>  
1070 - <cache_load_all>N</cache_load_all>  
1071 - <cache_size>0</cache_size>  
1072 - <lookup>  
1073 - <schema/>  
1074 - <table>bsth_c_line_information</table>  
1075 - <orderby/>  
1076 - <fail_on_multiple>N</fail_on_multiple>  
1077 - <eat_row_on_failure>N</eat_row_on_failure>  
1078 - <key>  
1079 - <name>xlid</name>  
1080 - <field>line</field>  
1081 - <condition>&#x3d;</condition>  
1082 - <name2/>  
1083 - </key>  
1084 - <value>  
1085 - <name>out_mileage</name>  
1086 - <rename>out_mileage</rename>  
1087 - <default/>  
1088 - <type>Number</type>  
1089 - </value>  
1090 - <value>  
1091 - <name>out_time</name>  
1092 - <rename>out_time</rename>  
1093 - <default/>  
1094 - <type>Number</type>  
1095 - </value>  
1096 - </lookup> 1087 + <header>Y</header>
  1088 + <noempty>Y</noempty>
  1089 + <stoponempty>N</stoponempty>
  1090 + <filefield/>
  1091 + <sheetfield/>
  1092 + <sheetrownumfield/>
  1093 + <rownumfield/>
  1094 + <sheetfield/>
  1095 + <filefield/>
  1096 + <limit>0</limit>
  1097 + <encoding/>
  1098 + <add_to_result_filenames>Y</add_to_result_filenames>
  1099 + <accept_filenames>N</accept_filenames>
  1100 + <accept_field/>
  1101 + <accept_stepname/>
  1102 + <file>
  1103 + <name/>
  1104 + <filemask/>
  1105 + <exclude_filemask/>
  1106 + <file_required>N</file_required>
  1107 + <include_subfolders>N</include_subfolders>
  1108 + </file>
  1109 + <fields>
  1110 + </fields>
  1111 + <sheets>
  1112 + <sheet>
  1113 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  1114 + <startrow>0</startrow>
  1115 + <startcol>0</startcol>
  1116 + </sheet>
  1117 + </sheets>
  1118 + <strict_types>N</strict_types>
  1119 + <error_ignored>N</error_ignored>
  1120 + <error_line_skipped>N</error_line_skipped>
  1121 + <bad_line_files_destination_directory/>
  1122 + <bad_line_files_extension>warning</bad_line_files_extension>
  1123 + <error_line_files_destination_directory/>
  1124 + <error_line_files_extension>error</error_line_files_extension>
  1125 + <line_number_files_destination_directory/>
  1126 + <line_number_files_extension>line</line_number_files_extension>
  1127 + <shortFileFieldName/>
  1128 + <pathFieldName/>
  1129 + <hiddenFieldName/>
  1130 + <lastModificationTimeFieldName/>
  1131 + <uriNameFieldName/>
  1132 + <rootUriNameFieldName/>
  1133 + <extensionFieldName/>
  1134 + <sizeFieldName/>
  1135 + <spreadsheet_type>JXL</spreadsheet_type>
1097 <cluster_schema/> 1136 <cluster_schema/>
1098 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1137 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1099 - <xloc>335</xloc>  
1100 - <yloc>763</yloc> 1138 + <xloc>112</xloc>
  1139 + <yloc>44</yloc>
1101 <draw>Y</draw> 1140 <draw>Y</draw>
1102 </GUI> 1141 </GUI>
1103 </step> 1142 </step>
1104 1143
1105 <step> 1144 <step>
1106 - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name> 1145 + <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</name>
1107 <type>DBLookup</type> 1146 <type>DBLookup</type>
1108 <description/> 1147 <description/>
1109 <distribute>Y</distribute> 1148 <distribute>Y</distribute>
@@ -1119,39 +1158,33 @@ @@ -1119,39 +1158,33 @@
1119 <cache_size>0</cache_size> 1158 <cache_size>0</cache_size>
1120 <lookup> 1159 <lookup>
1121 <schema/> 1160 <schema/>
1122 - <table>bsth_c_line_information</table> 1161 + <table>bsth_c_car_park</table>
1123 <orderby/> 1162 <orderby/>
1124 <fail_on_multiple>N</fail_on_multiple> 1163 <fail_on_multiple>N</fail_on_multiple>
1125 <eat_row_on_failure>N</eat_row_on_failure> 1164 <eat_row_on_failure>N</eat_row_on_failure>
1126 <key> 1165 <key>
1127 - <name>xlid</name>  
1128 - <field>line</field> 1166 + <name>tccname_</name>
  1167 + <field>park_name</field>
1129 <condition>&#x3d;</condition> 1168 <condition>&#x3d;</condition>
1130 <name2/> 1169 <name2/>
1131 </key> 1170 </key>
1132 <value> 1171 <value>
1133 - <name>parade_mileage</name>  
1134 - <rename>parade_mileage</rename>  
1135 - <default/>  
1136 - <type>Number</type>  
1137 - </value>  
1138 - <value>  
1139 - <name>parade_time</name>  
1140 - <rename>parade_time</rename> 1172 + <name>id</name>
  1173 + <rename>qdzid</rename>
1141 <default/> 1174 <default/>
1142 - <type>Number</type> 1175 + <type>Integer</type>
1143 </value> 1176 </value>
1144 </lookup> 1177 </lookup>
1145 <cluster_schema/> 1178 <cluster_schema/>
1146 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1179 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1147 - <xloc>550</xloc>  
1148 - <yloc>920</yloc> 1180 + <xloc>755</xloc>
  1181 + <yloc>504</yloc>
1149 <draw>Y</draw> 1182 <draw>Y</draw>
1150 </GUI> 1183 </GUI>
1151 </step> 1184 </step>
1152 1185
1153 <step> 1186 <step>
1154 - <name>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</name> 1187 + <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</name>
1155 <type>DBLookup</type> 1188 <type>DBLookup</type>
1156 <description/> 1189 <description/>
1157 <distribute>Y</distribute> 1190 <distribute>Y</distribute>
@@ -1167,36 +1200,18 @@ @@ -1167,36 +1200,18 @@
1167 <cache_size>0</cache_size> 1200 <cache_size>0</cache_size>
1168 <lookup> 1201 <lookup>
1169 <schema/> 1202 <schema/>
1170 - <table>bsth_c_stationroute</table> 1203 + <table>bsth_c_car_park</table>
1171 <orderby/> 1204 <orderby/>
1172 <fail_on_multiple>N</fail_on_multiple> 1205 <fail_on_multiple>N</fail_on_multiple>
1173 <eat_row_on_failure>N</eat_row_on_failure> 1206 <eat_row_on_failure>N</eat_row_on_failure>
1174 <key> 1207 <key>
1175 - <name>xlid</name>  
1176 - <field>line</field>  
1177 - <condition>&#x3d;</condition>  
1178 - <name2/>  
1179 - </key>  
1180 - <key>  
1181 - <name>sxx</name>  
1182 - <field>directions</field>  
1183 - <condition>&#x3d;</condition>  
1184 - <name2/>  
1185 - </key>  
1186 - <key>  
1187 - <name>endZdtype</name>  
1188 - <field>station_mark</field> 1208 + <name>tccname_</name>
  1209 + <field>park_name</field>
1189 <condition>&#x3d;</condition> 1210 <condition>&#x3d;</condition>
1190 <name2/> 1211 <name2/>
1191 </key> 1212 </key>
1192 <value> 1213 <value>
1193 - <name>station_name</name>  
1194 - <rename>zdzname</rename>  
1195 - <default/>  
1196 - <type>String</type>  
1197 - </value>  
1198 - <value>  
1199 - <name>station</name> 1214 + <name>id</name>
1200 <rename>zdzid</rename> 1215 <rename>zdzid</rename>
1201 <default/> 1216 <default/>
1202 <type>Integer</type> 1217 <type>Integer</type>
@@ -1204,14 +1219,14 @@ @@ -1204,14 +1219,14 @@
1204 </lookup> 1219 </lookup>
1205 <cluster_schema/> 1220 <cluster_schema/>
1206 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1221 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1207 - <xloc>280</xloc>  
1208 - <yloc>404</yloc> 1222 + <xloc>887</xloc>
  1223 + <yloc>608</yloc>
1209 <draw>Y</draw> 1224 <draw>Y</draw>
1210 </GUI> 1225 </GUI>
1211 </step> 1226 </step>
1212 1227
1213 <step> 1228 <step>
1214 - <name>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name> 1229 + <name>&#x67e5;&#x627e;&#x51fa;&#x573a;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
1215 <type>DBLookup</type> 1230 <type>DBLookup</type>
1216 <description/> 1231 <description/>
1217 <distribute>Y</distribute> 1232 <distribute>Y</distribute>
@@ -1238,20 +1253,20 @@ @@ -1238,20 +1253,20 @@
1238 <name2/> 1253 <name2/>
1239 </key> 1254 </key>
1240 <key> 1255 <key>
1241 - <name>qdzname</name> 1256 + <name>zdzname</name>
1242 <field>station_name</field> 1257 <field>station_name</field>
1243 <condition>&#x3d;</condition> 1258 <condition>&#x3d;</condition>
1244 <name2/> 1259 <name2/>
1245 </key> 1260 </key>
1246 <key> 1261 <key>
1247 - <name>sendZdtype</name> 1262 + <name>endZdtype</name>
1248 <field>station_mark</field> 1263 <field>station_mark</field>
1249 <condition>&#x3d;</condition> 1264 <condition>&#x3d;</condition>
1250 <name2/> 1265 <name2/>
1251 </key> 1266 </key>
1252 <value> 1267 <value>
1253 <name>station</name> 1268 <name>station</name>
1254 - <rename>qdzid</rename> 1269 + <rename>zdzid</rename>
1255 <default/> 1270 <default/>
1256 <type>Integer</type> 1271 <type>Integer</type>
1257 </value> 1272 </value>
@@ -1264,14 +1279,14 @@ @@ -1264,14 +1279,14 @@
1264 </lookup> 1279 </lookup>
1265 <cluster_schema/> 1280 <cluster_schema/>
1266 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1281 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1267 - <xloc>430</xloc>  
1268 - <yloc>403</yloc> 1282 + <xloc>329</xloc>
  1283 + <yloc>505</yloc>
1269 <draw>Y</draw> 1284 <draw>Y</draw>
1270 </GUI> 1285 </GUI>
1271 </step> 1286 </step>
1272 1287
1273 <step> 1288 <step>
1274 - <name>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</name> 1289 + <name>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</name>
1275 <type>DBLookup</type> 1290 <type>DBLookup</type>
1276 <description/> 1291 <description/>
1277 <distribute>Y</distribute> 1292 <distribute>Y</distribute>
@@ -1287,7 +1302,7 @@ @@ -1287,7 +1302,7 @@
1287 <cache_size>0</cache_size> 1302 <cache_size>0</cache_size>
1288 <lookup> 1303 <lookup>
1289 <schema/> 1304 <schema/>
1290 - <table>bsth_c_s_gbi</table> 1305 + <table>bsth_c_s_ttinfo</table>
1291 <orderby/> 1306 <orderby/>
1292 <fail_on_multiple>N</fail_on_multiple> 1307 <fail_on_multiple>N</fail_on_multiple>
1293 <eat_row_on_failure>N</eat_row_on_failure> 1308 <eat_row_on_failure>N</eat_row_on_failure>
@@ -1298,28 +1313,34 @@ @@ -1298,28 +1313,34 @@
1298 <name2/> 1313 <name2/>
1299 </key> 1314 </key>
1300 <key> 1315 <key>
1301 - <name>lp</name>  
1302 - <field>lp_name</field> 1316 + <name>ttinfoname_</name>
  1317 + <field>name</field>
  1318 + <condition>&#x3d;</condition>
  1319 + <name2/>
  1320 + </key>
  1321 + <key>
  1322 + <name>iscanceled</name>
  1323 + <field>is_cancel</field>
1303 <condition>&#x3d;</condition> 1324 <condition>&#x3d;</condition>
1304 <name2/> 1325 <name2/>
1305 </key> 1326 </key>
1306 <value> 1327 <value>
1307 <name>id</name> 1328 <name>id</name>
1308 - <rename>lpid</rename> 1329 + <rename>ttid</rename>
1309 <default/> 1330 <default/>
1310 <type>Integer</type> 1331 <type>Integer</type>
1311 </value> 1332 </value>
1312 </lookup> 1333 </lookup>
1313 <cluster_schema/> 1334 <cluster_schema/>
1314 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1335 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1315 - <xloc>1013</xloc>  
1316 - <yloc>265</yloc> 1336 + <xloc>1011</xloc>
  1337 + <yloc>134</yloc>
1317 <draw>Y</draw> 1338 <draw>Y</draw>
1318 </GUI> 1339 </GUI>
1319 </step> 1340 </step>
1320 1341
1321 <step> 1342 <step>
1322 - <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ebf;&#x8def;&#x65b9;&#x5411;</name> 1343 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
1323 <type>DBLookup</type> 1344 <type>DBLookup</type>
1324 <description/> 1345 <description/>
1325 <distribute>Y</distribute> 1346 <distribute>Y</distribute>
@@ -1335,7 +1356,7 @@ @@ -1335,7 +1356,7 @@
1335 <cache_size>0</cache_size> 1356 <cache_size>0</cache_size>
1336 <lookup> 1357 <lookup>
1337 <schema/> 1358 <schema/>
1338 - <table>bsth_c_stationroute</table> 1359 + <table>bsth_c_line_information</table>
1339 <orderby/> 1360 <orderby/>
1340 <fail_on_multiple>N</fail_on_multiple> 1361 <fail_on_multiple>N</fail_on_multiple>
1341 <eat_row_on_failure>N</eat_row_on_failure> 1362 <eat_row_on_failure>N</eat_row_on_failure>
@@ -1345,35 +1366,41 @@ @@ -1345,35 +1366,41 @@
1345 <condition>&#x3d;</condition> 1366 <condition>&#x3d;</condition>
1346 <name2/> 1367 <name2/>
1347 </key> 1368 </key>
1348 - <key>  
1349 - <name>startZdtype_calcu</name>  
1350 - <field>station_mark</field>  
1351 - <condition>&#x3d;</condition>  
1352 - <name2/>  
1353 - </key>  
1354 - <key>  
1355 - <name>qdzname_calcu</name>  
1356 - <field>station_name</field>  
1357 - <condition>&#x3d;</condition>  
1358 - <name2/>  
1359 - </key>  
1360 <value> 1369 <value>
1361 - <name>directions</name>  
1362 - <rename>sxx</rename> 1370 + <name>up_mileage</name>
  1371 + <rename>up_mileage</rename>
1363 <default/> 1372 <default/>
1364 - <type>String</type> 1373 + <type>Number</type>
  1374 + </value>
  1375 + <value>
  1376 + <name>down_mileage</name>
  1377 + <rename>down_mileage</rename>
  1378 + <default/>
  1379 + <type>Number</type>
  1380 + </value>
  1381 + <value>
  1382 + <name>up_travel_time</name>
  1383 + <rename>up_travel_time</rename>
  1384 + <default/>
  1385 + <type>Number</type>
  1386 + </value>
  1387 + <value>
  1388 + <name>down_travel_time</name>
  1389 + <rename>down_travel_time</rename>
  1390 + <default/>
  1391 + <type>Number</type>
1365 </value> 1392 </value>
1366 </lookup> 1393 </lookup>
1367 <cluster_schema/> 1394 <cluster_schema/>
1368 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1395 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1369 - <xloc>548</xloc>  
1370 - <yloc>610</yloc> 1396 + <xloc>149</xloc>
  1397 + <yloc>581</yloc>
1371 <draw>Y</draw> 1398 <draw>Y</draw>
1372 </GUI> 1399 </GUI>
1373 </step> 1400 </step>
1374 1401
1375 <step> 1402 <step>
1376 - <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x5e76;&#x4f5c;&#x4e3a;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;</name> 1403 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
1377 <type>DBLookup</type> 1404 <type>DBLookup</type>
1378 <description/> 1405 <description/>
1379 <distribute>Y</distribute> 1406 <distribute>Y</distribute>
@@ -1389,46 +1416,34 @@ @@ -1389,46 +1416,34 @@
1389 <cache_size>0</cache_size> 1416 <cache_size>0</cache_size>
1390 <lookup> 1417 <lookup>
1391 <schema/> 1418 <schema/>
1392 - <table>bsth_c_stationroute</table> 1419 + <table>bsth_c_line</table>
1393 <orderby/> 1420 <orderby/>
1394 <fail_on_multiple>N</fail_on_multiple> 1421 <fail_on_multiple>N</fail_on_multiple>
1395 <eat_row_on_failure>N</eat_row_on_failure> 1422 <eat_row_on_failure>N</eat_row_on_failure>
1396 <key> 1423 <key>
1397 - <name>xlid</name>  
1398 - <field>line</field>  
1399 - <condition>&#x3d;</condition>  
1400 - <name2/>  
1401 - </key>  
1402 - <key>  
1403 - <name>endZdtype_calcu</name>  
1404 - <field>station_mark</field>  
1405 - <condition>&#x3d;</condition>  
1406 - <name2/>  
1407 - </key>  
1408 - <key>  
1409 - <name>sxx</name>  
1410 - <field>directions</field> 1424 + <name>xlname_</name>
  1425 + <field>name</field>
1411 <condition>&#x3d;</condition> 1426 <condition>&#x3d;</condition>
1412 <name2/> 1427 <name2/>
1413 </key> 1428 </key>
1414 <value> 1429 <value>
1415 - <name>station</name>  
1416 - <rename>qdzid</rename> 1430 + <name>id</name>
  1431 + <rename>xlid</rename>
1417 <default/> 1432 <default/>
1418 <type>Integer</type> 1433 <type>Integer</type>
1419 </value> 1434 </value>
1420 </lookup> 1435 </lookup>
1421 <cluster_schema/> 1436 <cluster_schema/>
1422 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1437 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1423 - <xloc>550</xloc>  
1424 - <yloc>701</yloc> 1438 + <xloc>1007</xloc>
  1439 + <yloc>43</yloc>
1425 <draw>Y</draw> 1440 <draw>Y</draw>
1426 </GUI> 1441 </GUI>
1427 </step> 1442 </step>
1428 1443
1429 <step> 1444 <step>
1430 - <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</name>  
1431 - <type>ScriptValueMod</type> 1445 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  1446 + <type>DBLookup</type>
1432 <description/> 1447 <description/>
1433 <distribute>Y</distribute> 1448 <distribute>Y</distribute>
1434 <custom_distribution/> 1449 <custom_distribution/>
@@ -1437,34 +1452,46 @@ @@ -1437,34 +1452,46 @@
1437 <method>none</method> 1452 <method>none</method>
1438 <schema_name/> 1453 <schema_name/>
1439 </partitioning> 1454 </partitioning>
1440 - <compatible>N</compatible>  
1441 - <optimizationLevel>9</optimizationLevel>  
1442 - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>  
1443 - <jsScript_name>Script 1</jsScript_name>  
1444 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var sendZdtype &#x3d; &#x27;B&#x27;&#x3b;&#xa;var endZdtype &#x3d; &#x27;E&#x27;&#x3b;&#xa;</jsScript_script>  
1445 - </jsScript> </jsScripts> <fields> <field> <name>sendZdtype</name>  
1446 - <rename>sendZdtype</rename>  
1447 - <type>String</type>  
1448 - <length>-1</length>  
1449 - <precision>-1</precision>  
1450 - <replace>N</replace>  
1451 - </field> <field> <name>endZdtype</name>  
1452 - <rename>endZdtype</rename>  
1453 - <type>String</type>  
1454 - <length>-1</length>  
1455 - <precision>-1</precision>  
1456 - <replace>N</replace>  
1457 - </field> </fields> <cluster_schema/> 1455 + <connection>bus_control_variable</connection>
  1456 + <cache>N</cache>
  1457 + <cache_load_all>N</cache_load_all>
  1458 + <cache_size>0</cache_size>
  1459 + <lookup>
  1460 + <schema/>
  1461 + <table>bsth_c_line_information</table>
  1462 + <orderby/>
  1463 + <fail_on_multiple>N</fail_on_multiple>
  1464 + <eat_row_on_failure>N</eat_row_on_failure>
  1465 + <key>
  1466 + <name>xlid</name>
  1467 + <field>line</field>
  1468 + <condition>&#x3d;</condition>
  1469 + <name2/>
  1470 + </key>
  1471 + <value>
  1472 + <name>out_mileage</name>
  1473 + <rename>out_mileage</rename>
  1474 + <default/>
  1475 + <type>Number</type>
  1476 + </value>
  1477 + <value>
  1478 + <name>out_time</name>
  1479 + <rename>out_time</rename>
  1480 + <default/>
  1481 + <type>Number</type>
  1482 + </value>
  1483 + </lookup>
  1484 + <cluster_schema/>
1458 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1485 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1459 - <xloc>588</xloc>  
1460 - <yloc>403</yloc> 1486 + <xloc>335</xloc>
  1487 + <yloc>763</yloc>
1461 <draw>Y</draw> 1488 <draw>Y</draw>
1462 </GUI> 1489 </GUI>
1463 </step> 1490 </step>
1464 1491
1465 <step> 1492 <step>
1466 - <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>  
1467 - <type>Dummy</type> 1493 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  1494 + <type>DBLookup</type>
1468 <description/> 1495 <description/>
1469 <distribute>Y</distribute> 1496 <distribute>Y</distribute>
1470 <custom_distribution/> 1497 <custom_distribution/>
@@ -1473,17 +1500,46 @@ @@ -1473,17 +1500,46 @@
1473 <method>none</method> 1500 <method>none</method>
1474 <schema_name/> 1501 <schema_name/>
1475 </partitioning> 1502 </partitioning>
  1503 + <connection>bus_control_variable</connection>
  1504 + <cache>N</cache>
  1505 + <cache_load_all>N</cache_load_all>
  1506 + <cache_size>0</cache_size>
  1507 + <lookup>
  1508 + <schema/>
  1509 + <table>bsth_c_line_information</table>
  1510 + <orderby/>
  1511 + <fail_on_multiple>N</fail_on_multiple>
  1512 + <eat_row_on_failure>N</eat_row_on_failure>
  1513 + <key>
  1514 + <name>xlid</name>
  1515 + <field>line</field>
  1516 + <condition>&#x3d;</condition>
  1517 + <name2/>
  1518 + </key>
  1519 + <value>
  1520 + <name>parade_mileage</name>
  1521 + <rename>parade_mileage</rename>
  1522 + <default/>
  1523 + <type>Number</type>
  1524 + </value>
  1525 + <value>
  1526 + <name>parade_time</name>
  1527 + <rename>parade_time</rename>
  1528 + <default/>
  1529 + <type>Number</type>
  1530 + </value>
  1531 + </lookup>
1476 <cluster_schema/> 1532 <cluster_schema/>
1477 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1533 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1478 - <xloc>725</xloc>  
1479 - <yloc>404</yloc> 1534 + <xloc>550</xloc>
  1535 + <yloc>920</yloc>
1480 <draw>Y</draw> 1536 <draw>Y</draw>
1481 </GUI> 1537 </GUI>
1482 </step> 1538 </step>
1483 1539
1484 <step> 1540 <step>
1485 - <name>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</name>  
1486 - <type>GroupBy</type> 1541 + <name>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</name>
  1542 + <type>DBLookup</type>
1487 <description/> 1543 <description/>
1488 <distribute>Y</distribute> 1544 <distribute>Y</distribute>
1489 <custom_distribution/> 1545 <custom_distribution/>
@@ -1492,32 +1548,58 @@ @@ -1492,32 +1548,58 @@
1492 <method>none</method> 1548 <method>none</method>
1493 <schema_name/> 1549 <schema_name/>
1494 </partitioning> 1550 </partitioning>
1495 - <all_rows>Y</all_rows>  
1496 - <ignore_aggregate>N</ignore_aggregate>  
1497 - <field_ignore/>  
1498 - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>  
1499 - <prefix>grp</prefix>  
1500 - <add_linenr>Y</add_linenr>  
1501 - <linenr_fieldname>fcno</linenr_fieldname>  
1502 - <give_back_row>N</give_back_row>  
1503 - <group>  
1504 - <field>  
1505 - <name>lp</name>  
1506 - </field>  
1507 - </group>  
1508 - <fields>  
1509 - </fields> 1551 + <connection>bus_control_variable</connection>
  1552 + <cache>N</cache>
  1553 + <cache_load_all>N</cache_load_all>
  1554 + <cache_size>0</cache_size>
  1555 + <lookup>
  1556 + <schema/>
  1557 + <table>bsth_c_stationroute</table>
  1558 + <orderby/>
  1559 + <fail_on_multiple>N</fail_on_multiple>
  1560 + <eat_row_on_failure>N</eat_row_on_failure>
  1561 + <key>
  1562 + <name>xlid</name>
  1563 + <field>line</field>
  1564 + <condition>&#x3d;</condition>
  1565 + <name2/>
  1566 + </key>
  1567 + <key>
  1568 + <name>sxx</name>
  1569 + <field>directions</field>
  1570 + <condition>&#x3d;</condition>
  1571 + <name2/>
  1572 + </key>
  1573 + <key>
  1574 + <name>endZdtype</name>
  1575 + <field>station_mark</field>
  1576 + <condition>&#x3d;</condition>
  1577 + <name2/>
  1578 + </key>
  1579 + <value>
  1580 + <name>station_name</name>
  1581 + <rename>zdzname</rename>
  1582 + <default/>
  1583 + <type>String</type>
  1584 + </value>
  1585 + <value>
  1586 + <name>station</name>
  1587 + <rename>zdzid</rename>
  1588 + <default/>
  1589 + <type>Integer</type>
  1590 + </value>
  1591 + </lookup>
1510 <cluster_schema/> 1592 <cluster_schema/>
1511 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1593 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1512 - <xloc>442</xloc>  
1513 - <yloc>44</yloc> 1594 + <xloc>280</xloc>
  1595 + <yloc>404</yloc>
1514 <draw>Y</draw> 1596 <draw>Y</draw>
1515 </GUI> 1597 </GUI>
1516 </step> 1598 </step>
1517 1599
1518 <step> 1600 <step>
1519 - <name>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</name>  
1520 - <type>GroupBy</type> 1601 + <name>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
  1602 + <type>DBLookup</type>
1521 <description/> 1603 <description/>
1522 <distribute>Y</distribute> 1604 <distribute>Y</distribute>
1523 <custom_distribution/> 1605 <custom_distribution/>
@@ -1526,29 +1608,58 @@ @@ -1526,29 +1608,58 @@
1526 <method>none</method> 1608 <method>none</method>
1527 <schema_name/> 1609 <schema_name/>
1528 </partitioning> 1610 </partitioning>
1529 - <all_rows>Y</all_rows>  
1530 - <ignore_aggregate>N</ignore_aggregate>  
1531 - <field_ignore/>  
1532 - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>  
1533 - <prefix>grp</prefix>  
1534 - <add_linenr>Y</add_linenr>  
1535 - <linenr_fieldname>bcs</linenr_fieldname>  
1536 - <give_back_row>N</give_back_row>  
1537 - <group>  
1538 - </group>  
1539 - <fields>  
1540 - </fields> 1611 + <connection>bus_control_variable</connection>
  1612 + <cache>N</cache>
  1613 + <cache_load_all>N</cache_load_all>
  1614 + <cache_size>0</cache_size>
  1615 + <lookup>
  1616 + <schema/>
  1617 + <table>bsth_c_stationroute</table>
  1618 + <orderby/>
  1619 + <fail_on_multiple>N</fail_on_multiple>
  1620 + <eat_row_on_failure>N</eat_row_on_failure>
  1621 + <key>
  1622 + <name>xlid</name>
  1623 + <field>line</field>
  1624 + <condition>&#x3d;</condition>
  1625 + <name2/>
  1626 + </key>
  1627 + <key>
  1628 + <name>qdzname</name>
  1629 + <field>station_name</field>
  1630 + <condition>&#x3d;</condition>
  1631 + <name2/>
  1632 + </key>
  1633 + <key>
  1634 + <name>sendZdtype</name>
  1635 + <field>station_mark</field>
  1636 + <condition>&#x3d;</condition>
  1637 + <name2/>
  1638 + </key>
  1639 + <value>
  1640 + <name>station</name>
  1641 + <rename>qdzid</rename>
  1642 + <default/>
  1643 + <type>Integer</type>
  1644 + </value>
  1645 + <value>
  1646 + <name>directions</name>
  1647 + <rename>sxx</rename>
  1648 + <default/>
  1649 + <type>Integer</type>
  1650 + </value>
  1651 + </lookup>
1541 <cluster_schema/> 1652 <cluster_schema/>
1542 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1653 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1543 - <xloc>692</xloc>  
1544 - <yloc>44</yloc> 1654 + <xloc>430</xloc>
  1655 + <yloc>403</yloc>
1545 <draw>Y</draw> 1656 <draw>Y</draw>
1546 </GUI> 1657 </GUI>
1547 </step> 1658 </step>
1548 1659
1549 <step> 1660 <step>
1550 - <name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</name>  
1551 - <type>Normaliser</type> 1661 + <name>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</name>
  1662 + <type>DBLookup</type>
1552 <description/> 1663 <description/>
1553 <distribute>Y</distribute> 1664 <distribute>Y</distribute>
1554 <custom_distribution/> 1665 <custom_distribution/>
@@ -1557,18 +1668,46 @@ @@ -1557,18 +1668,46 @@
1557 <method>none</method> 1668 <method>none</method>
1558 <schema_name/> 1669 <schema_name/>
1559 </partitioning> 1670 </partitioning>
1560 - <typefield>&#x7ad9;&#x70b9;&#x540d;&#x79f0;</typefield>  
1561 - <fields> </fields> <cluster_schema/> 1671 + <connection>bus_control_variable</connection>
  1672 + <cache>N</cache>
  1673 + <cache_load_all>N</cache_load_all>
  1674 + <cache_size>0</cache_size>
  1675 + <lookup>
  1676 + <schema/>
  1677 + <table>bsth_c_s_gbi</table>
  1678 + <orderby/>
  1679 + <fail_on_multiple>N</fail_on_multiple>
  1680 + <eat_row_on_failure>N</eat_row_on_failure>
  1681 + <key>
  1682 + <name>xlid</name>
  1683 + <field>xl</field>
  1684 + <condition>&#x3d;</condition>
  1685 + <name2/>
  1686 + </key>
  1687 + <key>
  1688 + <name>lp</name>
  1689 + <field>lp_name</field>
  1690 + <condition>&#x3d;</condition>
  1691 + <name2/>
  1692 + </key>
  1693 + <value>
  1694 + <name>id</name>
  1695 + <rename>lpid</rename>
  1696 + <default/>
  1697 + <type>Integer</type>
  1698 + </value>
  1699 + </lookup>
  1700 + <cluster_schema/>
1562 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1701 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1563 - <xloc>248</xloc>  
1564 - <yloc>44</yloc> 1702 + <xloc>1013</xloc>
  1703 + <yloc>265</yloc>
1565 <draw>Y</draw> 1704 <draw>Y</draw>
1566 </GUI> 1705 </GUI>
1567 </step> 1706 </step>
1568 1707
1569 <step> 1708 <step>
1570 - <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</name>  
1571 - <type>ValueMapper</type> 1709 + <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ebf;&#x8def;&#x65b9;&#x5411;</name>
  1710 + <type>DBLookup</type>
1572 <description/> 1711 <description/>
1573 <distribute>Y</distribute> 1712 <distribute>Y</distribute>
1574 <custom_distribution/> 1713 <custom_distribution/>
@@ -1577,54 +1716,52 @@ @@ -1577,54 +1716,52 @@
1577 <method>none</method> 1716 <method>none</method>
1578 <schema_name/> 1717 <schema_name/>
1579 </partitioning> 1718 </partitioning>
1580 - <field_to_use>bctype</field_to_use>  
1581 - <target_field>bctype_code</target_field>  
1582 - <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>  
1583 - <fields>  
1584 - <field>  
1585 - <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>  
1586 - <target_value>normal</target_value>  
1587 - </field>  
1588 - <field>  
1589 - <source_value>&#x51fa;&#x573a;</source_value>  
1590 - <target_value>out</target_value>  
1591 - </field>  
1592 - <field>  
1593 - <source_value>&#x8fdb;&#x573a;</source_value>  
1594 - <target_value>in</target_value>  
1595 - </field>  
1596 - <field>  
1597 - <source_value>&#x52a0;&#x6cb9;</source_value>  
1598 - <target_value>oil</target_value>  
1599 - </field>  
1600 - <field>  
1601 - <source_value>&#x4e34;&#x52a0;</source_value>  
1602 - <target_value>temp</target_value>  
1603 - </field>  
1604 - <field>  
1605 - <source_value>&#x533a;&#x95f4;</source_value>  
1606 - <target_value>region</target_value>  
1607 - </field>  
1608 - <field>  
1609 - <source_value>&#x653e;&#x7a7a;</source_value>  
1610 - <target_value>venting</target_value>  
1611 - </field>  
1612 - <field>  
1613 - <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>  
1614 - <target_value>major</target_value>  
1615 - </field>  
1616 - </fields> 1719 + <connection>bus_control_variable</connection>
  1720 + <cache>N</cache>
  1721 + <cache_load_all>N</cache_load_all>
  1722 + <cache_size>0</cache_size>
  1723 + <lookup>
  1724 + <schema/>
  1725 + <table>bsth_c_stationroute</table>
  1726 + <orderby/>
  1727 + <fail_on_multiple>N</fail_on_multiple>
  1728 + <eat_row_on_failure>N</eat_row_on_failure>
  1729 + <key>
  1730 + <name>xlid</name>
  1731 + <field>line</field>
  1732 + <condition>&#x3d;</condition>
  1733 + <name2/>
  1734 + </key>
  1735 + <key>
  1736 + <name>startZdtype_calcu</name>
  1737 + <field>station_mark</field>
  1738 + <condition>&#x3d;</condition>
  1739 + <name2/>
  1740 + </key>
  1741 + <key>
  1742 + <name>qdzname_calcu</name>
  1743 + <field>station_name</field>
  1744 + <condition>&#x3d;</condition>
  1745 + <name2/>
  1746 + </key>
  1747 + <value>
  1748 + <name>directions</name>
  1749 + <rename>sxx</rename>
  1750 + <default/>
  1751 + <type>String</type>
  1752 + </value>
  1753 + </lookup>
1617 <cluster_schema/> 1754 <cluster_schema/>
1618 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1755 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1619 - <xloc>149</xloc>  
1620 - <yloc>491</yloc> 1756 + <xloc>548</xloc>
  1757 + <yloc>610</yloc>
1621 <draw>Y</draw> 1758 <draw>Y</draw>
1622 </GUI> 1759 </GUI>
1623 </step> 1760 </step>
1624 1761
1625 <step> 1762 <step>
1626 - <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</name>  
1627 - <type>ValueMapper</type> 1763 + <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x5e76;&#x4f5c;&#x4e3a;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;</name>
  1764 + <type>DBLookup</type>
1628 <description/> 1765 <description/>
1629 <distribute>Y</distribute> 1766 <distribute>Y</distribute>
1630 <custom_distribution/> 1767 <custom_distribution/>
@@ -1633,54 +1770,52 @@ @@ -1633,54 +1770,52 @@
1633 <method>none</method> 1770 <method>none</method>
1634 <schema_name/> 1771 <schema_name/>
1635 </partitioning> 1772 </partitioning>
1636 - <field_to_use>bctype</field_to_use>  
1637 - <target_field>bctype_code</target_field>  
1638 - <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>  
1639 - <fields>  
1640 - <field>  
1641 - <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>  
1642 - <target_value>normal</target_value>  
1643 - </field>  
1644 - <field>  
1645 - <source_value>&#x51fa;&#x573a;</source_value>  
1646 - <target_value>out</target_value>  
1647 - </field>  
1648 - <field>  
1649 - <source_value>&#x8fdb;&#x573a;</source_value>  
1650 - <target_value>in</target_value>  
1651 - </field>  
1652 - <field>  
1653 - <source_value>&#x52a0;&#x6cb9;</source_value>  
1654 - <target_value>oil</target_value>  
1655 - </field>  
1656 - <field>  
1657 - <source_value>&#x4e34;&#x52a0;</source_value>  
1658 - <target_value>temp</target_value>  
1659 - </field>  
1660 - <field>  
1661 - <source_value>&#x533a;&#x95f4;</source_value>  
1662 - <target_value>region</target_value>  
1663 - </field>  
1664 - <field>  
1665 - <source_value>&#x653e;&#x7a7a;</source_value>  
1666 - <target_value>venting</target_value>  
1667 - </field>  
1668 - <field>  
1669 - <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>  
1670 - <target_value>major</target_value>  
1671 - </field>  
1672 - </fields> 1773 + <connection>bus_control_variable</connection>
  1774 + <cache>N</cache>
  1775 + <cache_load_all>N</cache_load_all>
  1776 + <cache_size>0</cache_size>
  1777 + <lookup>
  1778 + <schema/>
  1779 + <table>bsth_c_stationroute</table>
  1780 + <orderby/>
  1781 + <fail_on_multiple>N</fail_on_multiple>
  1782 + <eat_row_on_failure>N</eat_row_on_failure>
  1783 + <key>
  1784 + <name>xlid</name>
  1785 + <field>line</field>
  1786 + <condition>&#x3d;</condition>
  1787 + <name2/>
  1788 + </key>
  1789 + <key>
  1790 + <name>endZdtype_calcu</name>
  1791 + <field>station_mark</field>
  1792 + <condition>&#x3d;</condition>
  1793 + <name2/>
  1794 + </key>
  1795 + <key>
  1796 + <name>sxx</name>
  1797 + <field>directions</field>
  1798 + <condition>&#x3d;</condition>
  1799 + <name2/>
  1800 + </key>
  1801 + <value>
  1802 + <name>station</name>
  1803 + <rename>qdzid</rename>
  1804 + <default/>
  1805 + <type>Integer</type>
  1806 + </value>
  1807 + </lookup>
1673 <cluster_schema/> 1808 <cluster_schema/>
1674 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1809 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1675 - <xloc>333</xloc>  
1676 - <yloc>681</yloc> 1810 + <xloc>550</xloc>
  1811 + <yloc>701</yloc>
1677 <draw>Y</draw> 1812 <draw>Y</draw>
1678 </GUI> 1813 </GUI>
1679 </step> 1814 </step>
1680 1815
1681 <step> 1816 <step>
1682 - <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</name>  
1683 - <type>ValueMapper</type> 1817 + <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</name>
  1818 + <type>ScriptValueMod</type>
1684 <description/> 1819 <description/>
1685 <distribute>Y</distribute> 1820 <distribute>Y</distribute>
1686 <custom_distribution/> 1821 <custom_distribution/>
@@ -1689,54 +1824,34 @@ @@ -1689,54 +1824,34 @@
1689 <method>none</method> 1824 <method>none</method>
1690 <schema_name/> 1825 <schema_name/>
1691 </partitioning> 1826 </partitioning>
1692 - <field_to_use>bctype</field_to_use>  
1693 - <target_field>bctype_code</target_field>  
1694 - <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>  
1695 - <fields>  
1696 - <field>  
1697 - <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>  
1698 - <target_value>normal</target_value>  
1699 - </field>  
1700 - <field>  
1701 - <source_value>&#x51fa;&#x573a;</source_value>  
1702 - <target_value>out</target_value>  
1703 - </field>  
1704 - <field>  
1705 - <source_value>&#x8fdb;&#x573a;</source_value>  
1706 - <target_value>in</target_value>  
1707 - </field>  
1708 - <field>  
1709 - <source_value>&#x52a0;&#x6cb9;</source_value>  
1710 - <target_value>oil</target_value>  
1711 - </field>  
1712 - <field>  
1713 - <source_value>&#x4e34;&#x52a0;</source_value>  
1714 - <target_value>temp</target_value>  
1715 - </field>  
1716 - <field>  
1717 - <source_value>&#x533a;&#x95f4;</source_value>  
1718 - <target_value>region</target_value>  
1719 - </field>  
1720 - <field>  
1721 - <source_value>&#x653e;&#x7a7a;</source_value>  
1722 - <target_value>venting</target_value>  
1723 - </field>  
1724 - <field>  
1725 - <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>  
1726 - <target_value>major</target_value>  
1727 - </field>  
1728 - </fields>  
1729 - <cluster_schema/> 1827 + <compatible>N</compatible>
  1828 + <optimizationLevel>9</optimizationLevel>
  1829 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  1830 + <jsScript_name>Script 1</jsScript_name>
  1831 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var sendZdtype &#x3d; &#x27;B&#x27;&#x3b;&#xa;var endZdtype &#x3d; &#x27;E&#x27;&#x3b;&#xa;</jsScript_script>
  1832 + </jsScript> </jsScripts> <fields> <field> <name>sendZdtype</name>
  1833 + <rename>sendZdtype</rename>
  1834 + <type>String</type>
  1835 + <length>-1</length>
  1836 + <precision>-1</precision>
  1837 + <replace>N</replace>
  1838 + </field> <field> <name>endZdtype</name>
  1839 + <rename>endZdtype</rename>
  1840 + <type>String</type>
  1841 + <length>-1</length>
  1842 + <precision>-1</precision>
  1843 + <replace>N</replace>
  1844 + </field> </fields> <cluster_schema/>
1730 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1845 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1731 - <xloc>548</xloc>  
1732 - <yloc>844</yloc> 1846 + <xloc>588</xloc>
  1847 + <yloc>403</yloc>
1733 <draw>Y</draw> 1848 <draw>Y</draw>
1734 </GUI> 1849 </GUI>
1735 </step> 1850 </step>
1736 1851
1737 <step> 1852 <step>
1738 - <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</name>  
1739 - <type>SelectValues</type> 1853 + <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
  1854 + <type>Dummy</type>
1740 <description/> 1855 <description/>
1741 <distribute>Y</distribute> 1856 <distribute>Y</distribute>
1742 <custom_distribution/> 1857 <custom_distribution/>
@@ -1745,48 +1860,17 @@ @@ -1745,48 +1860,17 @@
1745 <method>none</method> 1860 <method>none</method>
1746 <schema_name/> 1861 <schema_name/>
1747 </partitioning> 1862 </partitioning>
1748 - <fields> <select_unspecified>N</select_unspecified>  
1749 - <meta> <name>jhlc</name>  
1750 - <rename>jhlc</rename>  
1751 - <type>Number</type>  
1752 - <length>-2</length>  
1753 - <precision>-2</precision>  
1754 - <conversion_mask/>  
1755 - <date_format_lenient>false</date_format_lenient>  
1756 - <date_format_locale/>  
1757 - <date_format_timezone/>  
1758 - <lenient_string_to_number>false</lenient_string_to_number>  
1759 - <encoding/>  
1760 - <decimal_symbol/>  
1761 - <grouping_symbol/>  
1762 - <currency_symbol/>  
1763 - <storage_type/>  
1764 - </meta> <meta> <name>bcsj</name>  
1765 - <rename>bcsj</rename>  
1766 - <type>Integer</type>  
1767 - <length>-2</length>  
1768 - <precision>-2</precision>  
1769 - <conversion_mask/>  
1770 - <date_format_lenient>false</date_format_lenient>  
1771 - <date_format_locale/>  
1772 - <date_format_timezone/>  
1773 - <lenient_string_to_number>false</lenient_string_to_number>  
1774 - <encoding/>  
1775 - <decimal_symbol/>  
1776 - <grouping_symbol/>  
1777 - <currency_symbol/>  
1778 - <storage_type/>  
1779 - </meta> </fields> <cluster_schema/> 1863 + <cluster_schema/>
1780 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1864 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1781 - <xloc>146</xloc>  
1782 - <yloc>768</yloc> 1865 + <xloc>725</xloc>
  1866 + <yloc>404</yloc>
1783 <draw>Y</draw> 1867 <draw>Y</draw>
1784 </GUI> 1868 </GUI>
1785 </step> 1869 </step>
1786 1870
1787 <step> 1871 <step>
1788 - <name>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</name>  
1789 - <type>ValueMapper</type> 1872 + <name>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</name>
  1873 + <type>GroupBy</type>
1790 <description/> 1874 <description/>
1791 <distribute>Y</distribute> 1875 <distribute>Y</distribute>
1792 <custom_distribution/> 1876 <custom_distribution/>
@@ -1795,30 +1879,32 @@ @@ -1795,30 +1879,32 @@
1795 <method>none</method> 1879 <method>none</method>
1796 <schema_name/> 1880 <schema_name/>
1797 </partitioning> 1881 </partitioning>
1798 - <field_to_use>qdzname</field_to_use>  
1799 - <target_field>bctype</target_field>  
1800 - <non_match_default>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</non_match_default>  
1801 - <fields>  
1802 - <field>  
1803 - <source_value>&#x51fa;&#x573a;</source_value>  
1804 - <target_value>&#x51fa;&#x573a;</target_value>  
1805 - </field>  
1806 - <field>  
1807 - <source_value>&#x8fdb;&#x573a;</source_value>  
1808 - <target_value>&#x8fdb;&#x573a;</target_value>  
1809 - </field>  
1810 - </fields> 1882 + <all_rows>Y</all_rows>
  1883 + <ignore_aggregate>N</ignore_aggregate>
  1884 + <field_ignore/>
  1885 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  1886 + <prefix>grp</prefix>
  1887 + <add_linenr>Y</add_linenr>
  1888 + <linenr_fieldname>fcno</linenr_fieldname>
  1889 + <give_back_row>N</give_back_row>
  1890 + <group>
  1891 + <field>
  1892 + <name>lp</name>
  1893 + </field>
  1894 + </group>
  1895 + <fields>
  1896 + </fields>
1811 <cluster_schema/> 1897 <cluster_schema/>
1812 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1898 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1813 - <xloc>1014</xloc>  
1814 - <yloc>401</yloc> 1899 + <xloc>442</xloc>
  1900 + <yloc>44</yloc>
1815 <draw>Y</draw> 1901 <draw>Y</draw>
1816 </GUI> 1902 </GUI>
1817 </step> 1903 </step>
1818 1904
1819 <step> 1905 <step>
1820 - <name>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</name>  
1821 - <type>JoinRows</type> 1906 + <name>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</name>
  1907 + <type>GroupBy</type>
1822 <description/> 1908 <description/>
1823 <distribute>Y</distribute> 1909 <distribute>Y</distribute>
1824 <custom_distribution/> 1910 <custom_distribution/>
@@ -1827,29 +1913,29 @@ @@ -1827,29 +1913,29 @@
1827 <method>none</method> 1913 <method>none</method>
1828 <schema_name/> 1914 <schema_name/>
1829 </partitioning> 1915 </partitioning>
  1916 + <all_rows>Y</all_rows>
  1917 + <ignore_aggregate>N</ignore_aggregate>
  1918 + <field_ignore/>
1830 <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory> 1919 <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
1831 - <prefix>out</prefix>  
1832 - <cache_size>500</cache_size>  
1833 - <main/>  
1834 - <compare>  
1835 -<condition>  
1836 - <negated>N</negated>  
1837 - <leftvalue/>  
1838 - <function>&#x3d;</function>  
1839 - <rightvalue/>  
1840 - </condition>  
1841 - </compare> 1920 + <prefix>grp</prefix>
  1921 + <add_linenr>Y</add_linenr>
  1922 + <linenr_fieldname>bcs</linenr_fieldname>
  1923 + <give_back_row>N</give_back_row>
  1924 + <group>
  1925 + </group>
  1926 + <fields>
  1927 + </fields>
1842 <cluster_schema/> 1928 <cluster_schema/>
1843 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1929 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1844 - <xloc>310</xloc>  
1845 - <yloc>133</yloc> 1930 + <xloc>692</xloc>
  1931 + <yloc>44</yloc>
1846 <draw>Y</draw> 1932 <draw>Y</draw>
1847 </GUI> 1933 </GUI>
1848 </step> 1934 </step>
1849 1935
1850 <step> 1936 <step>
1851 - <name>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</name>  
1852 - <type>FilterRows</type> 1937 + <name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</name>
  1938 + <type>Normaliser</type>
1853 <description/> 1939 <description/>
1854 <distribute>Y</distribute> 1940 <distribute>Y</distribute>
1855 <custom_distribution/> 1941 <custom_distribution/>
@@ -1858,27 +1944,18 @@ @@ -1858,27 +1944,18 @@
1858 <method>none</method> 1944 <method>none</method>
1859 <schema_name/> 1945 <schema_name/>
1860 </partitioning> 1946 </partitioning>
1861 -<send_true_to/>  
1862 -<send_false_to/>  
1863 - <compare>  
1864 -<condition>  
1865 - <negated>N</negated>  
1866 - <leftvalue>sendtime</leftvalue>  
1867 - <function>IS NOT NULL</function>  
1868 - <rightvalue/>  
1869 - </condition>  
1870 - </compare>  
1871 - <cluster_schema/> 1947 + <typefield>&#x7ad9;&#x70b9;&#x540d;&#x79f0;</typefield>
  1948 + <fields> </fields> <cluster_schema/>
1872 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1949 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1873 - <xloc>571</xloc> 1950 + <xloc>248</xloc>
1874 <yloc>44</yloc> 1951 <yloc>44</yloc>
1875 <draw>Y</draw> 1952 <draw>Y</draw>
1876 </GUI> 1953 </GUI>
1877 </step> 1954 </step>
1878 1955
1879 <step> 1956 <step>
1880 - <name>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</name>  
1881 - <type>ScriptValueMod</type> 1957 + <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</name>
  1958 + <type>ValueMapper</type>
1882 <description/> 1959 <description/>
1883 <distribute>Y</distribute> 1960 <distribute>Y</distribute>
1884 <custom_distribution/> 1961 <custom_distribution/>
@@ -1887,40 +1964,54 @@ @@ -1887,40 +1964,54 @@
1887 <method>none</method> 1964 <method>none</method>
1888 <schema_name/> 1965 <schema_name/>
1889 </partitioning> 1966 </partitioning>
1890 - <compatible>N</compatible>  
1891 - <optimizationLevel>9</optimizationLevel>  
1892 - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>  
1893 - <jsScript_name>Script 1</jsScript_name>  
1894 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var cc_groups &#x3d; qdzgroups.split&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x6240;&#x6709;&#x73ed;&#x6b21;&#x8d77;&#x70b9;&#x7ad9;&#x6570;&#x7ec4;&#xa;var qdzname_calcu &#x3d; cc_groups&#x5b;gno - 2&#x5d;&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;&#x662f;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x8fd9;&#x91cc;&#x53ea;&#x6709;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;&#xff0c;&#x8fd8;&#x9700;&#x8981;&#x8ba1;&#x7b97;&#xa;var startZdtype_calcu &#x3d; &#x27;B&#x27;&#x3b;&#xa;var endZdtype_calcu &#x3d; &#x27;E&#x27;&#x3b;</jsScript_script>  
1895 - </jsScript> </jsScripts> <fields> <field> <name>qdzname_calcu</name>  
1896 - <rename>qdzname_calcu</rename>  
1897 - <type>String</type>  
1898 - <length>-1</length>  
1899 - <precision>-1</precision>  
1900 - <replace>N</replace>  
1901 - </field> <field> <name>startZdtype_calcu</name>  
1902 - <rename>startZdtype_calcu</rename>  
1903 - <type>String</type>  
1904 - <length>-1</length>  
1905 - <precision>-1</precision>  
1906 - <replace>N</replace>  
1907 - </field> <field> <name>endZdtype_calcu</name>  
1908 - <rename>endZdtype_calcu</rename>  
1909 - <type>String</type>  
1910 - <length>-1</length>  
1911 - <precision>-1</precision>  
1912 - <replace>N</replace>  
1913 - </field> </fields> <cluster_schema/> 1967 + <field_to_use>bctype</field_to_use>
  1968 + <target_field>bctype_code</target_field>
  1969 + <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
  1970 + <fields>
  1971 + <field>
  1972 + <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
  1973 + <target_value>normal</target_value>
  1974 + </field>
  1975 + <field>
  1976 + <source_value>&#x51fa;&#x573a;</source_value>
  1977 + <target_value>out</target_value>
  1978 + </field>
  1979 + <field>
  1980 + <source_value>&#x8fdb;&#x573a;</source_value>
  1981 + <target_value>in</target_value>
  1982 + </field>
  1983 + <field>
  1984 + <source_value>&#x52a0;&#x6cb9;</source_value>
  1985 + <target_value>oil</target_value>
  1986 + </field>
  1987 + <field>
  1988 + <source_value>&#x4e34;&#x52a0;</source_value>
  1989 + <target_value>temp</target_value>
  1990 + </field>
  1991 + <field>
  1992 + <source_value>&#x533a;&#x95f4;</source_value>
  1993 + <target_value>region</target_value>
  1994 + </field>
  1995 + <field>
  1996 + <source_value>&#x653e;&#x7a7a;</source_value>
  1997 + <target_value>venting</target_value>
  1998 + </field>
  1999 + <field>
  2000 + <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
  2001 + <target_value>major</target_value>
  2002 + </field>
  2003 + </fields>
  2004 + <cluster_schema/>
1914 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 2005 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1915 - <xloc>754</xloc>  
1916 - <yloc>610</yloc> 2006 + <xloc>149</xloc>
  2007 + <yloc>491</yloc>
1917 <draw>Y</draw> 2008 <draw>Y</draw>
1918 </GUI> 2009 </GUI>
1919 </step> 2010 </step>
1920 2011
1921 <step> 2012 <step>
1922 - <name>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>  
1923 - <type>Dummy</type> 2013 + <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</name>
  2014 + <type>ValueMapper</type>
1924 <description/> 2015 <description/>
1925 <distribute>Y</distribute> 2016 <distribute>Y</distribute>
1926 <custom_distribution/> 2017 <custom_distribution/>
@@ -1929,17 +2020,54 @@ @@ -1929,17 +2020,54 @@
1929 <method>none</method> 2020 <method>none</method>
1930 <schema_name/> 2021 <schema_name/>
1931 </partitioning> 2022 </partitioning>
  2023 + <field_to_use>bctype</field_to_use>
  2024 + <target_field>bctype_code</target_field>
  2025 + <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
  2026 + <fields>
  2027 + <field>
  2028 + <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
  2029 + <target_value>normal</target_value>
  2030 + </field>
  2031 + <field>
  2032 + <source_value>&#x51fa;&#x573a;</source_value>
  2033 + <target_value>out</target_value>
  2034 + </field>
  2035 + <field>
  2036 + <source_value>&#x8fdb;&#x573a;</source_value>
  2037 + <target_value>in</target_value>
  2038 + </field>
  2039 + <field>
  2040 + <source_value>&#x52a0;&#x6cb9;</source_value>
  2041 + <target_value>oil</target_value>
  2042 + </field>
  2043 + <field>
  2044 + <source_value>&#x4e34;&#x52a0;</source_value>
  2045 + <target_value>temp</target_value>
  2046 + </field>
  2047 + <field>
  2048 + <source_value>&#x533a;&#x95f4;</source_value>
  2049 + <target_value>region</target_value>
  2050 + </field>
  2051 + <field>
  2052 + <source_value>&#x653e;&#x7a7a;</source_value>
  2053 + <target_value>venting</target_value>
  2054 + </field>
  2055 + <field>
  2056 + <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
  2057 + <target_value>major</target_value>
  2058 + </field>
  2059 + </fields>
1932 <cluster_schema/> 2060 <cluster_schema/>
1933 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 2061 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1934 - <xloc>997</xloc>  
1935 - <yloc>606</yloc> 2062 + <xloc>333</xloc>
  2063 + <yloc>681</yloc>
1936 <draw>Y</draw> 2064 <draw>Y</draw>
1937 </GUI> 2065 </GUI>
1938 </step> 2066 </step>
1939 2067
1940 <step> 2068 <step>
1941 - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail</name>  
1942 - <type>InsertUpdate</type> 2069 + <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</name>
  2070 + <type>ValueMapper</type>
1943 <description/> 2071 <description/>
1944 <distribute>Y</distribute> 2072 <distribute>Y</distribute>
1945 <custom_distribution/> 2073 <custom_distribution/>
@@ -1948,114 +2076,136 @@ @@ -1948,114 +2076,136 @@
1948 <method>none</method> 2076 <method>none</method>
1949 <schema_name/> 2077 <schema_name/>
1950 </partitioning> 2078 </partitioning>
1951 - <connection>bus_control_variable</connection>  
1952 - <commit>100</commit>  
1953 - <update_bypassed>N</update_bypassed>  
1954 - <lookup>  
1955 - <schema/>  
1956 - <table>bsth_c_s_ttinfo_detail</table>  
1957 - <key>  
1958 - <name>xlid</name>  
1959 - <field>xl</field>  
1960 - <condition>&#x3d;</condition>  
1961 - <name2/>  
1962 - </key>  
1963 - <key>  
1964 - <name>ttid</name>  
1965 - <field>ttinfo</field>  
1966 - <condition>&#x3d;</condition>  
1967 - <name2/>  
1968 - </key>  
1969 - <key>  
1970 - <name>lpid</name>  
1971 - <field>lp</field>  
1972 - <condition>&#x3d;</condition>  
1973 - <name2/>  
1974 - </key>  
1975 - <key>  
1976 - <name>fcno</name>  
1977 - <field>fcno</field>  
1978 - <condition>&#x3d;</condition>  
1979 - <name2/>  
1980 - </key>  
1981 - <key>  
1982 - <name>bcs</name>  
1983 - <field>bcs</field>  
1984 - <condition>&#x3d;</condition>  
1985 - <name2/>  
1986 - </key>  
1987 - <value>  
1988 - <name>lp</name>  
1989 - <rename>lpid</rename>  
1990 - <update>Y</update>  
1991 - </value>  
1992 - <value>  
1993 - <name>bc_type</name>  
1994 - <rename>bctype_code</rename>  
1995 - <update>Y</update>  
1996 - </value>  
1997 - <value>  
1998 - <name>bcs</name>  
1999 - <rename>bcs</rename>  
2000 - <update>Y</update>  
2001 - </value>  
2002 - <value>  
2003 - <name>bcsj</name>  
2004 - <rename>bcsj</rename>  
2005 - <update>Y</update>  
2006 - </value>  
2007 - <value>  
2008 - <name>fcno</name>  
2009 - <rename>fcno</rename>  
2010 - <update>Y</update>  
2011 - </value>  
2012 - <value>  
2013 - <name>jhlc</name> 2079 + <field_to_use>bctype</field_to_use>
  2080 + <target_field>bctype_code</target_field>
  2081 + <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
  2082 + <fields>
  2083 + <field>
  2084 + <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
  2085 + <target_value>normal</target_value>
  2086 + </field>
  2087 + <field>
  2088 + <source_value>&#x51fa;&#x573a;</source_value>
  2089 + <target_value>out</target_value>
  2090 + </field>
  2091 + <field>
  2092 + <source_value>&#x8fdb;&#x573a;</source_value>
  2093 + <target_value>in</target_value>
  2094 + </field>
  2095 + <field>
  2096 + <source_value>&#x52a0;&#x6cb9;</source_value>
  2097 + <target_value>oil</target_value>
  2098 + </field>
  2099 + <field>
  2100 + <source_value>&#x4e34;&#x52a0;</source_value>
  2101 + <target_value>temp</target_value>
  2102 + </field>
  2103 + <field>
  2104 + <source_value>&#x533a;&#x95f4;</source_value>
  2105 + <target_value>region</target_value>
  2106 + </field>
  2107 + <field>
  2108 + <source_value>&#x653e;&#x7a7a;</source_value>
  2109 + <target_value>venting</target_value>
  2110 + </field>
  2111 + <field>
  2112 + <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
  2113 + <target_value>major</target_value>
  2114 + </field>
  2115 + </fields>
  2116 + <cluster_schema/>
  2117 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2118 + <xloc>548</xloc>
  2119 + <yloc>844</yloc>
  2120 + <draw>Y</draw>
  2121 + </GUI>
  2122 + </step>
  2123 +
  2124 + <step>
  2125 + <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</name>
  2126 + <type>SelectValues</type>
  2127 + <description/>
  2128 + <distribute>Y</distribute>
  2129 + <custom_distribution/>
  2130 + <copies>1</copies>
  2131 + <partitioning>
  2132 + <method>none</method>
  2133 + <schema_name/>
  2134 + </partitioning>
  2135 + <fields> <select_unspecified>N</select_unspecified>
  2136 + <meta> <name>jhlc</name>
2014 <rename>jhlc</rename> 2137 <rename>jhlc</rename>
2015 - <update>Y</update>  
2016 - </value>  
2017 - <value>  
2018 - <name>fcsj</name>  
2019 - <rename>sendtime</rename>  
2020 - <update>Y</update>  
2021 - </value>  
2022 - <value>  
2023 - <name>ttinfo</name>  
2024 - <rename>ttid</rename>  
2025 - <update>Y</update>  
2026 - </value>  
2027 - <value>  
2028 - <name>xl</name>  
2029 - <rename>xlid</rename>  
2030 - <update>Y</update>  
2031 - </value>  
2032 - <value>  
2033 - <name>qdz</name>  
2034 - <rename>qdzid</rename>  
2035 - <update>Y</update>  
2036 - </value>  
2037 - <value>  
2038 - <name>zdz</name>  
2039 - <rename>zdzid</rename>  
2040 - <update>Y</update>  
2041 - </value>  
2042 - <value>  
2043 - <name>xl_dir</name>  
2044 - <rename>sxx</rename>  
2045 - <update>Y</update>  
2046 - </value>  
2047 - </lookup> 2138 + <type>Number</type>
  2139 + <length>-2</length>
  2140 + <precision>-2</precision>
  2141 + <conversion_mask/>
  2142 + <date_format_lenient>false</date_format_lenient>
  2143 + <date_format_locale/>
  2144 + <date_format_timezone/>
  2145 + <lenient_string_to_number>false</lenient_string_to_number>
  2146 + <encoding/>
  2147 + <decimal_symbol/>
  2148 + <grouping_symbol/>
  2149 + <currency_symbol/>
  2150 + <storage_type/>
  2151 + </meta> <meta> <name>bcsj</name>
  2152 + <rename>bcsj</rename>
  2153 + <type>Integer</type>
  2154 + <length>-2</length>
  2155 + <precision>-2</precision>
  2156 + <conversion_mask/>
  2157 + <date_format_lenient>false</date_format_lenient>
  2158 + <date_format_locale/>
  2159 + <date_format_timezone/>
  2160 + <lenient_string_to_number>false</lenient_string_to_number>
  2161 + <encoding/>
  2162 + <decimal_symbol/>
  2163 + <grouping_symbol/>
  2164 + <currency_symbol/>
  2165 + <storage_type/>
  2166 + </meta> </fields> <cluster_schema/>
  2167 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2168 + <xloc>146</xloc>
  2169 + <yloc>768</yloc>
  2170 + <draw>Y</draw>
  2171 + </GUI>
  2172 + </step>
  2173 +
  2174 + <step>
  2175 + <name>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</name>
  2176 + <type>ValueMapper</type>
  2177 + <description/>
  2178 + <distribute>Y</distribute>
  2179 + <custom_distribution/>
  2180 + <copies>1</copies>
  2181 + <partitioning>
  2182 + <method>none</method>
  2183 + <schema_name/>
  2184 + </partitioning>
  2185 + <field_to_use>qdzname</field_to_use>
  2186 + <target_field>bctype</target_field>
  2187 + <non_match_default>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</non_match_default>
  2188 + <fields>
  2189 + <field>
  2190 + <source_value>&#x51fa;&#x573a;</source_value>
  2191 + <target_value>&#x51fa;&#x573a;</target_value>
  2192 + </field>
  2193 + <field>
  2194 + <source_value>&#x8fdb;&#x573a;</source_value>
  2195 + <target_value>&#x8fdb;&#x573a;</target_value>
  2196 + </field>
  2197 + </fields>
2048 <cluster_schema/> 2198 <cluster_schema/>
2049 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 2199 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2050 - <xloc>143</xloc>  
2051 - <yloc>860</yloc> 2200 + <xloc>1014</xloc>
  2201 + <yloc>401</yloc>
2052 <draw>Y</draw> 2202 <draw>Y</draw>
2053 </GUI> 2203 </GUI>
2054 </step> 2204 </step>
2055 2205
2056 <step> 2206 <step>
2057 - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 2</name>  
2058 - <type>InsertUpdate</type> 2207 + <name>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</name>
  2208 + <type>JoinRows</type>
2059 <description/> 2209 <description/>
2060 <distribute>Y</distribute> 2210 <distribute>Y</distribute>
2061 <custom_distribution/> 2211 <custom_distribution/>
@@ -2064,114 +2214,29 @@ @@ -2064,114 +2214,29 @@
2064 <method>none</method> 2214 <method>none</method>
2065 <schema_name/> 2215 <schema_name/>
2066 </partitioning> 2216 </partitioning>
2067 - <connection>bus_control_variable</connection>  
2068 - <commit>100</commit>  
2069 - <update_bypassed>N</update_bypassed>  
2070 - <lookup>  
2071 - <schema/>  
2072 - <table>bsth_c_s_ttinfo_detail</table>  
2073 - <key>  
2074 - <name>xlid</name>  
2075 - <field>xl</field>  
2076 - <condition>&#x3d;</condition>  
2077 - <name2/>  
2078 - </key>  
2079 - <key>  
2080 - <name>ttid</name>  
2081 - <field>ttinfo</field>  
2082 - <condition>&#x3d;</condition>  
2083 - <name2/>  
2084 - </key>  
2085 - <key>  
2086 - <name>lpid</name>  
2087 - <field>lp</field>  
2088 - <condition>&#x3d;</condition>  
2089 - <name2/>  
2090 - </key>  
2091 - <key>  
2092 - <name>fcno</name>  
2093 - <field>fcno</field>  
2094 - <condition>&#x3d;</condition>  
2095 - <name2/>  
2096 - </key>  
2097 - <key>  
2098 - <name>bcs</name>  
2099 - <field>bcs</field>  
2100 - <condition>&#x3d;</condition>  
2101 - <name2/>  
2102 - </key>  
2103 - <value>  
2104 - <name>tcc</name>  
2105 - <rename>qdzid</rename>  
2106 - <update>Y</update>  
2107 - </value>  
2108 - <value>  
2109 - <name>zdz</name>  
2110 - <rename>zdzid</rename>  
2111 - <update>Y</update>  
2112 - </value>  
2113 - <value>  
2114 - <name>xl</name>  
2115 - <rename>xlid</rename>  
2116 - <update>Y</update>  
2117 - </value>  
2118 - <value>  
2119 - <name>ttinfo</name>  
2120 - <rename>ttid</rename>  
2121 - <update>Y</update>  
2122 - </value>  
2123 - <value>  
2124 - <name>xl_dir</name>  
2125 - <rename>sxx</rename>  
2126 - <update>Y</update>  
2127 - </value>  
2128 - <value>  
2129 - <name>lp</name>  
2130 - <rename>lpid</rename>  
2131 - <update>Y</update>  
2132 - </value>  
2133 - <value>  
2134 - <name>jhlc</name>  
2135 - <rename>out_mileage</rename>  
2136 - <update>Y</update>  
2137 - </value>  
2138 - <value>  
2139 - <name>fcsj</name>  
2140 - <rename>sendtime</rename>  
2141 - <update>Y</update>  
2142 - </value>  
2143 - <value>  
2144 - <name>bcsj</name>  
2145 - <rename>out_time</rename>  
2146 - <update>Y</update>  
2147 - </value>  
2148 - <value>  
2149 - <name>bcs</name>  
2150 - <rename>bcs</rename>  
2151 - <update>Y</update>  
2152 - </value>  
2153 - <value>  
2154 - <name>fcno</name>  
2155 - <rename>fcno</rename>  
2156 - <update>Y</update>  
2157 - </value>  
2158 - <value>  
2159 - <name>bc_type</name>  
2160 - <rename>bctype_code</rename>  
2161 - <update>Y</update>  
2162 - </value>  
2163 - </lookup> 2217 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  2218 + <prefix>out</prefix>
  2219 + <cache_size>500</cache_size>
  2220 + <main/>
  2221 + <compare>
  2222 +<condition>
  2223 + <negated>N</negated>
  2224 + <leftvalue/>
  2225 + <function>&#x3d;</function>
  2226 + <rightvalue/>
  2227 + </condition>
  2228 + </compare>
2164 <cluster_schema/> 2229 <cluster_schema/>
2165 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 2230 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2166 - <xloc>340</xloc>  
2167 - <yloc>890</yloc> 2231 + <xloc>310</xloc>
  2232 + <yloc>133</yloc>
2168 <draw>Y</draw> 2233 <draw>Y</draw>
2169 </GUI> 2234 </GUI>
2170 </step> 2235 </step>
2171 2236
2172 <step> 2237 <step>
2173 - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 3</name>  
2174 - <type>InsertUpdate</type> 2238 + <name>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</name>
  2239 + <type>FilterRows</type>
2175 <description/> 2240 <description/>
2176 <distribute>Y</distribute> 2241 <distribute>Y</distribute>
2177 <custom_distribution/> 2242 <custom_distribution/>
@@ -2180,107 +2245,81 @@ @@ -2180,107 +2245,81 @@
2180 <method>none</method> 2245 <method>none</method>
2181 <schema_name/> 2246 <schema_name/>
2182 </partitioning> 2247 </partitioning>
2183 - <connection>bus_control_variable</connection>  
2184 - <commit>100</commit>  
2185 - <update_bypassed>N</update_bypassed>  
2186 - <lookup>  
2187 - <schema/>  
2188 - <table>bsth_c_s_ttinfo_detail</table>  
2189 - <key>  
2190 - <name>xlid</name>  
2191 - <field>xl</field>  
2192 - <condition>&#x3d;</condition>  
2193 - <name2/>  
2194 - </key>  
2195 - <key>  
2196 - <name>ttid</name>  
2197 - <field>ttinfo</field>  
2198 - <condition>&#x3d;</condition>  
2199 - <name2/>  
2200 - </key>  
2201 - <key>  
2202 - <name>lpid</name>  
2203 - <field>lp</field>  
2204 - <condition>&#x3d;</condition>  
2205 - <name2/>  
2206 - </key>  
2207 - <key>  
2208 - <name>fcno</name>  
2209 - <field>fcno</field>  
2210 - <condition>&#x3d;</condition>  
2211 - <name2/>  
2212 - </key>  
2213 - <key>  
2214 - <name>bcs</name>  
2215 - <field>bcs</field>  
2216 - <condition>&#x3d;</condition>  
2217 - <name2/>  
2218 - </key>  
2219 - <value>  
2220 - <name>fcno</name>  
2221 - <rename>fcno</rename>  
2222 - <update>Y</update>  
2223 - </value>  
2224 - <value>  
2225 - <name>bcs</name>  
2226 - <rename>bcs</rename>  
2227 - <update>Y</update>  
2228 - </value>  
2229 - <value>  
2230 - <name>xl</name>  
2231 - <rename>xlid</rename>  
2232 - <update>Y</update>  
2233 - </value>  
2234 - <value>  
2235 - <name>ttinfo</name>  
2236 - <rename>ttid</rename>  
2237 - <update>Y</update>  
2238 - </value>  
2239 - <value>  
2240 - <name>lp</name>  
2241 - <rename>lpid</rename>  
2242 - <update>Y</update>  
2243 - </value>  
2244 - <value>  
2245 - <name>bc_type</name>  
2246 - <rename>bctype_code</rename>  
2247 - <update>Y</update>  
2248 - </value>  
2249 - <value>  
2250 - <name>bcsj</name>  
2251 - <rename>parade_time</rename>  
2252 - <update>Y</update>  
2253 - </value>  
2254 - <value>  
2255 - <name>jhlc</name>  
2256 - <rename>parade_mileage</rename>  
2257 - <update>Y</update>  
2258 - </value>  
2259 - <value>  
2260 - <name>fcsj</name>  
2261 - <rename>sendtime</rename>  
2262 - <update>Y</update>  
2263 - </value>  
2264 - <value>  
2265 - <name>xl_dir</name>  
2266 - <rename>sxx</rename>  
2267 - <update>Y</update>  
2268 - </value>  
2269 - <value>  
2270 - <name>qdz</name>  
2271 - <rename>qdzid</rename>  
2272 - <update>Y</update>  
2273 - </value>  
2274 - <value>  
2275 - <name>tcc</name>  
2276 - <rename>zdzid</rename>  
2277 - <update>Y</update>  
2278 - </value>  
2279 - </lookup> 2248 +<send_true_to/>
  2249 +<send_false_to/>
  2250 + <compare>
  2251 +<condition>
  2252 + <negated>N</negated>
  2253 + <leftvalue>sendtime</leftvalue>
  2254 + <function>IS NOT NULL</function>
  2255 + <rightvalue/>
  2256 + </condition>
  2257 + </compare>
2280 <cluster_schema/> 2258 <cluster_schema/>
2281 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 2259 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2282 - <xloc>770</xloc>  
2283 - <yloc>923</yloc> 2260 + <xloc>571</xloc>
  2261 + <yloc>44</yloc>
  2262 + <draw>Y</draw>
  2263 + </GUI>
  2264 + </step>
  2265 +
  2266 + <step>
  2267 + <name>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</name>
  2268 + <type>ScriptValueMod</type>
  2269 + <description/>
  2270 + <distribute>Y</distribute>
  2271 + <custom_distribution/>
  2272 + <copies>1</copies>
  2273 + <partitioning>
  2274 + <method>none</method>
  2275 + <schema_name/>
  2276 + </partitioning>
  2277 + <compatible>N</compatible>
  2278 + <optimizationLevel>9</optimizationLevel>
  2279 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  2280 + <jsScript_name>Script 1</jsScript_name>
  2281 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var cc_groups &#x3d; qdzgroups.split&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x6240;&#x6709;&#x73ed;&#x6b21;&#x8d77;&#x70b9;&#x7ad9;&#x6570;&#x7ec4;&#xa;var qdzname_calcu &#x3d; cc_groups&#x5b;gno - 2&#x5d;&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;&#x662f;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x8fd9;&#x91cc;&#x53ea;&#x6709;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;&#xff0c;&#x8fd8;&#x9700;&#x8981;&#x8ba1;&#x7b97;&#xa;var startZdtype_calcu &#x3d; &#x27;B&#x27;&#x3b;&#xa;var endZdtype_calcu &#x3d; &#x27;E&#x27;&#x3b;</jsScript_script>
  2282 + </jsScript> </jsScripts> <fields> <field> <name>qdzname_calcu</name>
  2283 + <rename>qdzname_calcu</rename>
  2284 + <type>String</type>
  2285 + <length>-1</length>
  2286 + <precision>-1</precision>
  2287 + <replace>N</replace>
  2288 + </field> <field> <name>startZdtype_calcu</name>
  2289 + <rename>startZdtype_calcu</rename>
  2290 + <type>String</type>
  2291 + <length>-1</length>
  2292 + <precision>-1</precision>
  2293 + <replace>N</replace>
  2294 + </field> <field> <name>endZdtype_calcu</name>
  2295 + <rename>endZdtype_calcu</rename>
  2296 + <type>String</type>
  2297 + <length>-1</length>
  2298 + <precision>-1</precision>
  2299 + <replace>N</replace>
  2300 + </field> </fields> <cluster_schema/>
  2301 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2302 + <xloc>754</xloc>
  2303 + <yloc>610</yloc>
  2304 + <draw>Y</draw>
  2305 + </GUI>
  2306 + </step>
  2307 +
  2308 + <step>
  2309 + <name>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
  2310 + <type>Dummy</type>
  2311 + <description/>
  2312 + <distribute>Y</distribute>
  2313 + <custom_distribution/>
  2314 + <copies>1</copies>
  2315 + <partitioning>
  2316 + <method>none</method>
  2317 + <schema_name/>
  2318 + </partitioning>
  2319 + <cluster_schema/>
  2320 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2321 + <xloc>997</xloc>
  2322 + <yloc>606</yloc>
2284 <draw>Y</draw> 2323 <draw>Y</draw>
2285 </GUI> 2324 </GUI>
2286 </step> 2325 </step>