Commit e8b61c7dc9ea523e8fb63c0679ce84ae7d0e4089

Authored by 徐烜
2 parents 69932f97 5590fc42

PSM-12

Showing 24 changed files with 949 additions and 950 deletions

Too many changes to show.

To preserve performance only 24 of 57 files are displayed.

README.md
1   -公交调度系统BS版 0.1
2   -======
3   -----------
4   -## 目录
5   ----------
6   - * [字典表](#字典表)
7   - * [动态jpa查询实现](#动态jpa查询实现)
8   - * [车载 gps 相关数据](#gps)
9   - * [实时gps数据接口 http](#实时gps接口)
10   - * [进出站数据表结构](#进站数据)
11   - * [异常警报表结构](#异常警报)
12   - * [大间隔](#大间隔)
13   - * [超速](#超速)
14   - * [越界](#越界)
15   - * [越站](#越站)
16   - * [聚集](#聚集)
17   - * [掉线](#掉线)
18   - * [调度消息下发接口HTTP](#调度消息下发接口)
19   - * [调度消息上传接口HTTP](#调度消息上传接口)
20   - * [车辆历史GPS数据](#车辆历史GPS)
21   -
22   -----------
23   -
24   -## 字典表
25   -----------
26   -字典操作全部由前端负责,主要有2种。
27   -
28   -1、转换字典代码。
29   - 当pjax的`pjax:success`事件被触发(片段加载完成)
30   - 扫描容器内所有有 `$(".nt-dictionary")` 元素进行字典转换
31   -``` html
32   ---dom标签为span div p h1 h2 h3 h4 h5 h6 等等文本元素时,如下写法,text为要转换的代码
33   -<span class="nt-dictionary" data-group="ScheduleType">out</span>
34   ---to
35   -<span>出场</span>
36   -
37   -<!- dom标签为input时,如下 data-code为要转换的代码 -->
38   -<input class="nt-dictionary" data-group="ScheduleType" data-code="out">
39   ---to
40   -<input value="出场">
41   -
42   -<!- dom标签为select时 如下 data-code为要选中的项 -->
43   -<select class="nt-dictionary" data-group="ScheduleType" data-code="out"></select>
44   ---to
45   -<select>
46   - <option value="normal">正常班次</option>
47   - <option value="out" selected>出场</option>
48   - <option value="in">进场</option>
49   - <option value="oil">加油</option>
50   - <option value="temp">临加</option>
51   - <option value="region">区间</option>
52   - <option value="venting">放空</option>
53   - <option value="major">放大站</option>
54   -</select>
55   -```
56   -*原标签的class 除nt-dictionary 外,其余均会被保留*
57   -
58   -2、dictionary.js提供如下方法自行使用
59   -| 方法名 | 参数|返回|
60   -| ---- | ---- | ---- | ---- |
61   -| groups (获取所有字典组) | 无| | {LineTrend: 线路走向, ScheduleType: 班次类型} |
62   -| getByGroup (获取字典组下的字典)| (group) |{0: 上行, 1: 下行}|
63   -| transformCode (转换字典代码)| (group, code) | 上行 |
64   -
65   -## 动态jpa查询实现
66   -----------
67   -*参考调度系统枚举com.bsth.entity.search.SearchOperator*
68   -
69   -
70   -## gps
71   -----------
72   -### 实时gps接口
73   -
74   -所有在线GPS: [http://192.168.168.192:8080/transport_server/rtgps](http://192.168.168.192:8080/transport_server/rtgps/)
75   -根据设备号查询:[http://192.168.168.192:8080/transport_server/rtgps/05B01901](http://192.168.168.192:8080/transport_server/rtgps/05B01901)
76   -
77   -<span style="color: red">Response</span>:
78   -```json
79   -{
80   - "data":[
81   - {
82   - "companyCode":5,
83   - "lineId":10329,
84   - "deviceId":"05B01901",
85   - "carparkNo":"00000000",
86   - "stopNo":"7C890002",
87   - "lon":121.549866,
88   - "lat":31.238798,
89   - "timestamp":1397104499000,
90   - "speed":42.0,
91   - "direction":245.9,
92   - "state":0,
93   - "upDown":0
94   - }]
95   -}
96   -```
97   -
98   -| -- | --|--|
99   -| ---- | ---- | ---- |
100   -| companyCode | int | 公司代码 |
101   -| lineId | int | 线路编码 |
102   -| deviceId | String | 设备编号 |
103   -| carparkNo | String | 停车场编码 |
104   -| stopNo | String | 站点编码 |
105   -| lon | float | 经度 |
106   -| lat | float | 纬度 |
107   -| timestamp | long | 时间戳 |
108   -| speed | float | 速度|
109   -| direction | float | 方向(角度) |
110   -| state | int | 营运状态( 0 营运 ,1 非营运, -1 无效) |
111   -| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效)|
112   -
113   -
114   -### 进站数据
115   -----------
116   -表名:
117   -
118   -| .. | .. | .. |
119   -| ---- | ---- | ---- |
120   -| id | int | 主键 |
121   -| deviceId | String | 设备号 |
122   -| lineId | int | 线路编码 |
123   -| stopNo | long | 站点编码 |
124   -| timestamp | long | 时间戳 |
125   -| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
126   -| createDate | Date | 创建时间 |
127   -
128   -
129   -### 异常警报
130   -----------
131   -
132   -### 大间隔
133   -----------
134   -表名:
135   -
136   -| .. | .. | .. |
137   -| ---- | ---- | ---- |
138   -| id | int | 主键 |
139   -| line | int | 线路编码 |
140   -| station | String | 站点编码 |
141   -| cVehicle | String | 当前车辆编码 |
142   -| lastVehicle | String | 上一个车辆编码 |
143   -| interval | long | 间隔时间(秒) |
144   -| timestamp | long | 时间戳 |
145   -| createDate | Date | 创建时间 |
146   -
147   -### 超速
148   -----------
149   -表名:
150   -
151   -| .. | .. | .. |
152   -| ---- | ---- | ---- |
153   -| id | int | 主键 |
154   -| vehicle | String | 车辆编码 |
155   -| line | int | 线路编码 |
156   -| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
157   -| lon | float | 经度 |
158   -| lat | float | 纬度|
159   -| speed | float | 速度 |
160   -| timestamp | long | 时间戳 |
161   -| createDate | Date | 时间 |
162   -
163   -### 越界
164   -----------
165   -表名:
166   -
167   -| .. | .. | .. |
168   -| ---- | ---- | ---- |
169   -| id | int | 主键 |
170   -| vehicle | String | 车辆编码 |
171   -| line | int | 线路编码 |
172   -| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
173   -| lon | float | 经度 |
174   -| lat | float | 纬度|
175   -| location | String | 越界位置(由线调页面进行初始转换)意思是该字段默认为空,页面第一次查看时会写入值|
176   -| timestamp | long | 时间戳 |
177   -| createDate | Date | 时间 |
178   -
179   -
180   -### 越站
181   -----------
182   -表名:
183   -
184   -| .. | .. | .. |
185   -| ---- | ---- | ---- |
186   -| id | int | 主键 |
187   -| line | int | 线路编码 |
188   -| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
189   -| station | String | 站点编码 |
190   -| vehicle | String | 车辆编码 |
191   -| inData | Date | 进站时间 |
192   -| outDate | Date | 出站时间 |
193   -
194   -
195   -### 聚集
196   -----------
197   -表名:
198   -
199   -| .. | .. | .. |
200   -| ---- | ---- | ---- |
201   -| id | int | 主键 |
202   -| line | int | 线路编码 |
203   -| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
204   -| stations | String | 站点(多个用 , 号分隔。应该是连续站点) |
205   -| vehicles | String | 车辆编码(多个用 , 号分隔) |
206   -| timestamp | long | 时间戳 |
207   -| createDate | Date | 时间 |
208   -
209   -
210   -### 掉线
211   -----------
212   -表名:
213   -
214   -| .. | .. | .. |
215   -| ---- | ---- | ---- |
216   -| id | int | 主键 |
217   -| line | int | 线路编码 |
218   -| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
219   -| vehicle | String | 车辆编码 |
220   -| lon | float | 经度 |
221   -| lat | float | 纬度|
222   -| timestamp | long | 时间戳 |
223   -| createDate | Date | 时间 |
224   -
225   -
226   -### 调度消息下发接口
227   -----------
228   -[http://192.168.168.192:8080/transport_server/message](http://192.168.168.192:8080/transport_server/message/)
229   -
230   -<span style="color: red">Request</span>:
231   -```json
232   -{
233   - "deviceId":12345,
234   - "timestamp":44324,
235   - "operCode":0x60,
236   - "data":{
237   - "companyCode":22,
238   - "deviceId":"029L2222",
239   - "timestamp":134326,
240   - "instructType":00,
241   - "dispatchInstruct":0x00,
242   - "msgId":12345,
243   - "alarmTime":201606012000,
244   - "serviceState":00000000,
245   - "txtContent":"你好"
246   - }
247   -}
248   -```
249   -| .. | .. | .. |
250   -| ---- | ---- | ---- |
251   -| deviceId | string | 设备编号 |
252   -| timestamp | long | 时间戳(ms) |
253   -| operCode | short | 一级协议 |
254   -| data.companyCode | short | 公司代码 |
255   -| data.deviceId | string | 设备编号 |
256   -| data.timestamp | long | 时间戳 |
257   -| data.instructType | short | 保留 默认0 |
258   -| data.dispatchInstruct | short | 调度指令 调度指令。0X00表示信息短语,0X01表示取消上次指令+调度指令(闹钟有效),0x02表示为调度指令(闹钟有效); 0x03表示运营状态指令(闹钟无效);0x04表示其他指令。|
259   -| data.msgId | long | 同上 |
260   -| data.alarmTime | long | 闹钟 MMddhhmm|
261   -| data.serviceState | long | 多状态字节   先由车载发起车辆故障、事故报告、扣证、纠纷、加油等审请,经调度确认后,下发调度指令与运营状态。当调度指令为0X00终端需要提示信息。当调度指令为0x01和0x02,终端需要收到后提示信息。并且必须在闹钟结束后进行终端相关状态更新。在闹钟时间前120秒开始提示。当调度指令为0x03,收到后进行终端相关状态更新,终端不需要提示信息。当调度指令为0x04,暂不需要提示信息。|
262   -| data.txtContent | string | 下发的消息文本 |
263   -```json
264   -{
265   - "deviceId":12345,
266   - "timestamp":44324,
267   - "operCode":0x64,
268   - "data":{
269   - "cityCode":22,
270   - "deviceId":"029L2222",
271   - "lineId":"134326"
272   - }
273   -}
274   -```
275   -| .. | .. | .. |
276   -| ---- | ---- | ---- |
277   -| deviceId | string | 设备编号 |
278   -| timestamp | long | 时间戳(ms) |
279   -| operCode | short | 一级协议 |
280   -| data.cityCode | short | 城市区号 |
281   -| data.deviceId | string | 设备编号 |
282   -| data.lineId | string | 线路编号 6位 不足6位前面补0 如编号890 用000890表示 |
283   -
284   -```json
285   -{
286   - "deviceId":12345,
287   - "timestamp":44324,
288   - "operCode":0xC0,
289   - "data":{
290   - "operCode":0x86,
291   - "requestAck":0x06
292   - }
293   -}
294   -```
295   -| .. | .. | .. |
296   -| ---- | ---- | ---- |
297   -| deviceId | string | 设备编号 |
298   -| timestamp | long | 时间戳(ms) |
299   -| operCode | short | 一级协议 |
300   -| data.operCode | short | 二级协议 |
301   -| data.requestAck | short | 请求应答字 0x06同意 0x15不同意|
302   -
303   -```json
304   -{
305   - "deviceId":12345,
306   - "timestamp":44324,
307   - "operCode":0xC0,
308   - "data":{
309   - "operCode":0xa3,
310   - "deviceId":12345,
311   - "ipAddress":222.66.0.204,
312   - "port":8899,
313   - "reportMode":0,
314   - "interval":0,
315   - "distance":0,
316   - "speedingThreshold":0,
317   - "alarmThreshold":0,
318   - "posIpAddress":0,
319   - "posPort":0,
320   - "delay":0,
321   - "speedThreshold1":0,
322   - "speedThreshold2":0,
323   - "contrast":0,
324   - "brightness":0,
325   - "saturation":0
326   - }
327   -}
328   -```
329   -| .. | .. | .. |
330   -| ---- | ---- | ---- |
331   -| deviceId | string | 设备编号 |
332   -| timestamp | long | 时间戳(ms) |
333   -| operCode | short | 一级协议 |
334   -| data.operCode | short | 二级协议 |
335   -| data.deviceId | string | 设备编号|
336   -| data.ipAddress | string | 网关IP地址|
337   -| data.port | string | 网关端口|
338   -| data.reportMode | short | 定时定距上报模式|
339   -| data.interval | int | 定时上报时间间隔|
340   -| data.distance | string | 定距上报距离间隔|
341   -| data.speedingThreshold | short | 非线路状态超速阀门|
342   -| data.alarmThreshold | short | 预警阀门|
343   -| data.posIpAddress | string | pos机IP地址|
344   -| data.posPort | string | pos机端口|
345   -| data.delay | int | 延迟机关时间|
346   -| data.deviceId | short | 中门视频切换到码表界面速度阀门 默认45|
347   -| data.deviceId | short | 码表界面切换到中门视频速度阀门 默认35|
348   -| data.deviceId | short | 对比度|
349   -| data.deviceId | short | 亮度|
350   -| data.deviceId | short | 饱和度|
351   -
352   -```json
353   -{
354   - "deviceId":12345,
355   - "timestamp":44324,
356   - "operCode":0xC0,
357   - "data":{
358   - "operCode":0xa4
359   - }
360   -}
361   -```
362   -| .. | .. | .. |
363   -| ---- | ---- | ---- |
364   -| deviceId | string | 设备编号 |
365   -| timestamp | long | 时间戳(ms) |
366   -| operCode | short | 一级协议 |
367   -| data.operCode | short | 二级协议 |
368   -
369   -```json
370   -{
371   - "deviceId":12345,
372   - "timestamp":44324,
373   - "operCode":0xC0,
374   - "data":{
375   - "operCode":0xa5
376   - "programVersion":2
377   - }
378   -}
379   -```
380   -| .. | .. | .. |
381   -| ---- | ---- | ---- |
382   -| deviceId | string | 设备编号 |
383   -| timestamp | long | 时间戳(ms) |
384   -| operCode | short | 一级协议 |
385   -| data.operCode | short | 二级协议 |
386   -| data.programVersion | short | 程序版本 |
387   -
388   -<span style="color: red">Response</span>:
389   -```json
390   -{
391   - "errCode":0
392   -}
393   -```
394   -
395   -### 调度消息上传接口
396   -----------
397   -上行POST地址:[http://192.168.168.120:9088/control/upstream](http://192.168.168.120:9088/control/upstream)
398   -<span style="color: red">Request</span>:
399   -```json
400   -{
401   - "deviceId":12345,
402   - "timestamp":44324,
403   - "status":0,
404   - "operCode":0x80,
405   - "data":{
406   - "operCode":0x26,
407   - "requestCode":22
408   - }
409   -}
410   -```
411   -| .. | .. | .. |
412   -| ---- | ---- | ---- |
413   -| deviceId | string | 设备编号 |
414   -| timestamp | long | 时间戳(ms) |
415   -| status | int | 0x80时无数据 0表示失败 1表示成功或设备确认 2表示驾驶员阅读 |
416   -| operCode | short | 一级协议 消息确认将无数据 |
417   -| data.operCode | short | 二级协议 |
418   -| data.requestCode | short | 请求代码0xa1 恢复运营 0xa2 申请调档 0xa3 出场请求 0xa5 进场请求 0xa7 加油请求 0x50 车辆故障 0x70 路阻报告 0x60 事故报告 0x11 扣证纠纷 0x12 报警 |
419   -<span style="color: red">Response</span>:
420   -```json
421   -{
422   - "errCode":0
423   -}
424   -```
425   -
426   -### 车辆历史GPS
427   -----------
428   -表名:BSTH_C_GPS_INFO
429   -
430   -| .. | .. | .. |
431   -| ---- | ---- | ---- |
432   -| cityCode | int | 城市代码 |
433   -| industryCode | int | 行业代码 |
434   -| companyCode | int | 企业代码 |
435   -| lineId | int | 线路编号 |
436   -| deviceId | string | 设备编号 |
437   -| driverNo | int | 驾驶员工号 |
438   -| carparkSerialNo | int | 停车场序列号 |
439   -| carparkNo | string | 停车场编号 |
440   -| stopSerialNo | int | 站点序列号 |
441   -| stopNo | string | 停车场编号 |
442   -| lon | float | 经度 |
443   -| lat | float | 维度 |
444   -| ts | long | 时间戳 |
445   -| speedSensor | float | 发动机速度 |
446   -| speedGps | float | gps速度 |
447   -| direction | float | 角度0-359 |
448   -| inTemp | int | 车内温度 |
449   -| serviceState | long | 设备状态字 |
450   -| daysYear | int | 对应年中的天数 为分区字段 查询一定要用此字段过滤 |
451   -
  1 +公交调度系统BS版 0.1
  2 +======
  3 +----------
  4 +## 目录
  5 +---------
  6 + * [字典表](#字典表)
  7 + * [动态jpa查询实现](#动态jpa查询实现)
  8 + * [车载 gps 相关数据](#gps)
  9 + * [实时gps数据接口 http](#实时gps接口)
  10 + * [进出站数据表结构](#进站数据)
  11 + * [异常警报表结构](#异常警报)
  12 + * [大间隔](#大间隔)
  13 + * [超速](#超速)
  14 + * [越界](#越界)
  15 + * [越站](#越站)
  16 + * [聚集](#聚集)
  17 + * [掉线](#掉线)
  18 + * [调度消息下发接口HTTP](#调度消息下发接口)
  19 + * [调度消息上传接口HTTP](#调度消息上传接口)
  20 + * [车辆历史GPS数据](#车辆历史GPS)
  21 +
  22 +----------
  23 +
  24 +## 字典表
  25 +----------
  26 +字典操作全部由前端负责,主要有2种。
  27 +
  28 +1、转换字典代码。
  29 + 当pjax的`pjax:success`事件被触发(片段加载完成)
  30 + 扫描容器内所有有 `$(".nt-dictionary")` 元素进行字典转换
  31 +``` html
  32 +--dom标签为span div p h1 h2 h3 h4 h5 h6 等等文本元素时,如下写法,text为要转换的代码
  33 +<span class="nt-dictionary" data-group="ScheduleType">out</span>
  34 +--to
  35 +<span>出场</span>
  36 +
  37 +<!- dom标签为input时,如下 data-code为要转换的代码 -->
  38 +<input class="nt-dictionary" data-group="ScheduleType" data-code="out">
  39 +--to
  40 +<input value="出场">
  41 +
  42 +<!- dom标签为select时 如下 data-code为要选中的项 -->
  43 +<select class="nt-dictionary" data-group="ScheduleType" data-code="out"></select>
  44 +--to
  45 +<select>
  46 + <option value="normal">正常班次</option>
  47 + <option value="out" selected>出场</option>
  48 + <option value="in">进场</option>
  49 + <option value="oil">加油</option>
  50 + <option value="temp">临加</option>
  51 + <option value="region">区间</option>
  52 + <option value="venting">放空</option>
  53 + <option value="major">放大站</option>
  54 +</select>
  55 +```
  56 +*原标签的class 除nt-dictionary 外,其余均会被保留*
  57 +
  58 +2、dictionary.js提供如下方法自行使用
  59 +| 方法名 | 参数|返回|
  60 +| ---- | ---- | ---- | ---- |
  61 +| groups (获取所有字典组) | 无| | {LineTrend: 线路走向, ScheduleType: 班次类型} |
  62 +| getByGroup (获取字典组下的字典)| (group) |{0: 上行, 1: 下行}|
  63 +| transformCode (转换字典代码)| (group, code) | 上行 |
  64 +
  65 +## 动态jpa查询实现
  66 +----------
  67 +*参考调度系统枚举com.bsth.entity.search.SearchOperator*
  68 +
  69 +
  70 +## gps
  71 +----------
  72 +### 实时gps接口
  73 +
  74 +所有在线GPS: [http://192.168.168.192:8080/transport_server/rtgps](http://192.168.168.192:8080/transport_server/rtgps/)
  75 +根据设备号查询:[http://192.168.168.192:8080/transport_server/rtgps/05B01901](http://192.168.168.192:8080/transport_server/rtgps/05B01901)
  76 +
  77 +<span style="color: red">Response</span>:
  78 +```json
  79 +{
  80 + "data":[
  81 + {
  82 + "companyCode":5,
  83 + "lineId":10329,
  84 + "deviceId":"05B01901",
  85 + "carparkNo":"00000000",
  86 + "stopNo":"7C890002",
  87 + "lon":121.549866,
  88 + "lat":31.238798,
  89 + "timestamp":1397104499000,
  90 + "speed":42.0,
  91 + "direction":245.9,
  92 + "state":0,
  93 + "upDown":0
  94 + }]
  95 +}
  96 +```
  97 +
  98 +| -- | --|--|
  99 +| ---- | ---- | ---- |
  100 +| companyCode | int | 公司代码 |
  101 +| lineId | int | 线路编码 |
  102 +| deviceId | String | 设备编号 |
  103 +| carparkNo | String | 停车场编码 |
  104 +| stopNo | String | 站点编码 |
  105 +| lon | float | 经度 |
  106 +| lat | float | 纬度 |
  107 +| timestamp | long | 时间戳 |
  108 +| speed | float | 速度|
  109 +| direction | float | 方向(角度) |
  110 +| state | int | 营运状态( 0 营运 ,1 非营运, -1 无效) |
  111 +| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效)|
  112 +
  113 +
  114 +### 进站数据
  115 +----------
  116 +表名:
  117 +
  118 +| .. | .. | .. |
  119 +| ---- | ---- | ---- |
  120 +| id | int | 主键 |
  121 +| deviceId | String | 设备号 |
  122 +| lineId | int | 线路编码 |
  123 +| stopNo | long | 站点编码 |
  124 +| timestamp | long | 时间戳 |
  125 +| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
  126 +| createDate | Date | 创建时间 |
  127 +
  128 +
  129 +### 异常警报
  130 +----------
  131 +
  132 +### 大间隔
  133 +----------
  134 +表名:
  135 +
  136 +| .. | .. | .. |
  137 +| ---- | ---- | ---- |
  138 +| id | int | 主键 |
  139 +| line | int | 线路编码 |
  140 +| station | String | 站点编码 |
  141 +| cVehicle | String | 当前车辆编码 |
  142 +| lastVehicle | String | 上一个车辆编码 |
  143 +| interval | long | 间隔时间(秒) |
  144 +| timestamp | long | 时间戳 |
  145 +| createDate | Date | 创建时间 |
  146 +
  147 +### 超速
  148 +----------
  149 +表名:
  150 +
  151 +| .. | .. | .. |
  152 +| ---- | ---- | ---- |
  153 +| id | int | 主键 |
  154 +| vehicle | String | 车辆编码 |
  155 +| line | int | 线路编码 |
  156 +| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
  157 +| lon | float | 经度 |
  158 +| lat | float | 纬度|
  159 +| speed | float | 速度 |
  160 +| timestamp | long | 时间戳 |
  161 +| createDate | Date | 时间 |
  162 +
  163 +### 越界
  164 +----------
  165 +表名:
  166 +
  167 +| .. | .. | .. |
  168 +| ---- | ---- | ---- |
  169 +| id | int | 主键 |
  170 +| vehicle | String | 车辆编码 |
  171 +| line | int | 线路编码 |
  172 +| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
  173 +| lon | float | 经度 |
  174 +| lat | float | 纬度|
  175 +| location | String | 越界位置(由线调页面进行初始转换)意思是该字段默认为空,页面第一次查看时会写入值|
  176 +| timestamp | long | 时间戳 |
  177 +| createDate | Date | 时间 |
  178 +
  179 +
  180 +### 越站
  181 +----------
  182 +表名:
  183 +
  184 +| .. | .. | .. |
  185 +| ---- | ---- | ---- |
  186 +| id | int | 主键 |
  187 +| line | int | 线路编码 |
  188 +| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
  189 +| station | String | 站点编码 |
  190 +| vehicle | String | 车辆编码 |
  191 +| inData | Date | 进站时间 |
  192 +| outDate | Date | 出站时间 |
  193 +
  194 +
  195 +### 聚集
  196 +----------
  197 +表名:
  198 +
  199 +| .. | .. | .. |
  200 +| ---- | ---- | ---- |
  201 +| id | int | 主键 |
  202 +| line | int | 线路编码 |
  203 +| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
  204 +| stations | String | 站点(多个用 , 号分隔。应该是连续站点) |
  205 +| vehicles | String | 车辆编码(多个用 , 号分隔) |
  206 +| timestamp | long | 时间戳 |
  207 +| createDate | Date | 时间 |
  208 +
  209 +
  210 +### 掉线
  211 +----------
  212 +表名:
  213 +
  214 +| .. | .. | .. |
  215 +| ---- | ---- | ---- |
  216 +| id | int | 主键 |
  217 +| line | int | 线路编码 |
  218 +| upDown | int | 上下行(0 上行 , 1 下行 , -1 无效) |
  219 +| vehicle | String | 车辆编码 |
  220 +| lon | float | 经度 |
  221 +| lat | float | 纬度|
  222 +| timestamp | long | 时间戳 |
  223 +| createDate | Date | 时间 |
  224 +
  225 +
  226 +### 调度消息下发接口
  227 +----------
  228 +[http://192.168.168.192:8080/transport_server/message](http://192.168.168.192:8080/transport_server/message/)
  229 +
  230 +<span style="color: red">Request</span>:
  231 +```json
  232 +{
  233 + "deviceId":12345,
  234 + "timestamp":44324,
  235 + "operCode":0x60,
  236 + "data":{
  237 + "companyCode":22,
  238 + "deviceId":"029L2222",
  239 + "timestamp":134326,
  240 + "instructType":00,
  241 + "dispatchInstruct":0x00,
  242 + "msgId":12345,
  243 + "alarmTime":201606012000,
  244 + "serviceState":00000000,
  245 + "txtContent":"你好"
  246 + }
  247 +}
  248 +```
  249 +| .. | .. | .. |
  250 +| ---- | ---- | ---- |
  251 +| deviceId | string | 设备编号 |
  252 +| timestamp | long | 时间戳(ms) |
  253 +| operCode | short | 一级协议 |
  254 +| data.companyCode | short | 公司代码 |
  255 +| data.deviceId | string | 设备编号 |
  256 +| data.timestamp | long | 时间戳 |
  257 +| data.instructType | short | 保留 默认0 |
  258 +| data.dispatchInstruct | short | 调度指令 调度指令。0X00表示信息短语,0X01表示取消上次指令+调度指令(闹钟有效),0x02表示为调度指令(闹钟有效); 0x03表示运营状态指令(闹钟无效);0x04表示其他指令。|
  259 +| data.msgId | long | 同上 |
  260 +| data.alarmTime | long | 闹钟 MMddhhmm|
  261 +| data.serviceState | long | 多状态字节   先由车载发起车辆故障、事故报告、扣证、纠纷、加油等审请,经调度确认后,下发调度指令与运营状态。当调度指令为0X00终端需要提示信息。当调度指令为0x01和0x02,终端需要收到后提示信息。并且必须在闹钟结束后进行终端相关状态更新。在闹钟时间前120秒开始提示。当调度指令为0x03,收到后进行终端相关状态更新,终端不需要提示信息。当调度指令为0x04,暂不需要提示信息。|
  262 +| data.txtContent | string | 下发的消息文本 |
  263 +```json
  264 +{
  265 + "deviceId":12345,
  266 + "timestamp":44324,
  267 + "operCode":0x64,
  268 + "data":{
  269 + "cityCode":22,
  270 + "deviceId":"029L2222",
  271 + "lineId":"134326"
  272 + }
  273 +}
  274 +```
  275 +| .. | .. | .. |
  276 +| ---- | ---- | ---- |
  277 +| deviceId | string | 设备编号 |
  278 +| timestamp | long | 时间戳(ms) |
  279 +| operCode | short | 一级协议 |
  280 +| data.cityCode | short | 城市区号 |
  281 +| data.deviceId | string | 设备编号 |
  282 +| data.lineId | string | 线路编号 6位 不足6位前面补0 如编号890 用000890表示 |
  283 +
  284 +```json
  285 +{
  286 + "deviceId":12345,
  287 + "timestamp":44324,
  288 + "operCode":0xC0,
  289 + "data":{
  290 + "operCode":0x86,
  291 + "requestAck":0x06
  292 + }
  293 +}
  294 +```
  295 +| .. | .. | .. |
  296 +| ---- | ---- | ---- |
  297 +| deviceId | string | 设备编号 |
  298 +| timestamp | long | 时间戳(ms) |
  299 +| operCode | short | 一级协议 |
  300 +| data.operCode | short | 二级协议 |
  301 +| data.requestAck | short | 请求应答字 0x06同意 0x15不同意|
  302 +
  303 +```json
  304 +{
  305 + "deviceId":12345,
  306 + "timestamp":44324,
  307 + "operCode":0xC0,
  308 + "data":{
  309 + "operCode":0xa3,
  310 + "deviceId":12345,
  311 + "ipAddress":222.66.0.204,
  312 + "port":8899,
  313 + "reportMode":0,
  314 + "interval":0,
  315 + "distance":0,
  316 + "speedingThreshold":0,
  317 + "alarmThreshold":0,
  318 + "posIpAddress":0,
  319 + "posPort":0,
  320 + "delay":0,
  321 + "speedThreshold1":0,
  322 + "speedThreshold2":0,
  323 + "contrast":0,
  324 + "brightness":0,
  325 + "saturation":0
  326 + }
  327 +}
  328 +```
  329 +| .. | .. | .. |
  330 +| ---- | ---- | ---- |
  331 +| deviceId | string | 设备编号 |
  332 +| timestamp | long | 时间戳(ms) |
  333 +| operCode | short | 一级协议 |
  334 +| data.operCode | short | 二级协议 |
  335 +| data.deviceId | string | 设备编号|
  336 +| data.ipAddress | string | 网关IP地址|
  337 +| data.port | string | 网关端口|
  338 +| data.reportMode | short | 定时定距上报模式|
  339 +| data.interval | int | 定时上报时间间隔|
  340 +| data.distance | string | 定距上报距离间隔|
  341 +| data.speedingThreshold | short | 非线路状态超速阀门|
  342 +| data.alarmThreshold | short | 预警阀门|
  343 +| data.posIpAddress | string | pos机IP地址|
  344 +| data.posPort | string | pos机端口|
  345 +| data.delay | int | 延迟机关时间|
  346 +| data.deviceId | short | 中门视频切换到码表界面速度阀门 默认45|
  347 +| data.deviceId | short | 码表界面切换到中门视频速度阀门 默认35|
  348 +| data.deviceId | short | 对比度|
  349 +| data.deviceId | short | 亮度|
  350 +| data.deviceId | short | 饱和度|
  351 +
  352 +```json
  353 +{
  354 + "deviceId":12345,
  355 + "timestamp":44324,
  356 + "operCode":0xC0,
  357 + "data":{
  358 + "operCode":0xa4
  359 + }
  360 +}
  361 +```
  362 +| .. | .. | .. |
  363 +| ---- | ---- | ---- |
  364 +| deviceId | string | 设备编号 |
  365 +| timestamp | long | 时间戳(ms) |
  366 +| operCode | short | 一级协议 |
  367 +| data.operCode | short | 二级协议 |
  368 +
  369 +```json
  370 +{
  371 + "deviceId":12345,
  372 + "timestamp":44324,
  373 + "operCode":0xC0,
  374 + "data":{
  375 + "operCode":0xa5
  376 + "programVersion":2
  377 + }
  378 +}
  379 +```
  380 +| .. | .. | .. |
  381 +| ---- | ---- | ---- |
  382 +| deviceId | string | 设备编号 |
  383 +| timestamp | long | 时间戳(ms) |
  384 +| operCode | short | 一级协议 |
  385 +| data.operCode | short | 二级协议 |
  386 +| data.programVersion | short | 程序版本 |
  387 +
  388 +<span style="color: red">Response</span>:
  389 +```json
  390 +{
  391 + "errCode":0
  392 +}
  393 +```
  394 +
  395 +### 调度消息上传接口
  396 +----------
  397 +上行POST地址:[http://192.168.168.120:9088/control/upstream](http://192.168.168.120:9088/control/upstream)
  398 +<span style="color: red">Request</span>:
  399 +```json
  400 +{
  401 + "deviceId":12345,
  402 + "timestamp":44324,
  403 + "status":0,
  404 + "operCode":0x80,
  405 + "data":{
  406 + "operCode":0x26,
  407 + "requestCode":22
  408 + }
  409 +}
  410 +```
  411 +| .. | .. | .. |
  412 +| ---- | ---- | ---- |
  413 +| deviceId | string | 设备编号 |
  414 +| timestamp | long | 时间戳(ms) |
  415 +| status | int | 0x80时无数据 0表示失败 1表示成功或设备确认 2表示驾驶员阅读 |
  416 +| operCode | short | 一级协议 消息确认将无数据 |
  417 +| data.operCode | short | 二级协议 |
  418 +| data.requestCode | short | 请求代码0xa1 恢复运营 0xa2 申请调档 0xa3 出场请求 0xa5 进场请求 0xa7 加油请求 0x50 车辆故障 0x70 路阻报告 0x60 事故报告 0x11 扣证纠纷 0x12 报警 |
  419 +<span style="color: red">Response</span>:
  420 +```json
  421 +{
  422 + "errCode":0
  423 +}
  424 +```
  425 +
  426 +### 车辆历史GPS
  427 +----------
  428 +表名:BSTH_C_GPS_INFO
  429 +
  430 +| .. | .. | .. |
  431 +| ---- | ---- | ---- |
  432 +| cityCode | int | 城市代码 |
  433 +| industryCode | int | 行业代码 |
  434 +| companyCode | int | 企业代码 |
  435 +| lineId | int | 线路编号 |
  436 +| deviceId | string | 设备编号 |
  437 +| driverNo | int | 驾驶员工号 |
  438 +| carparkSerialNo | int | 停车场序列号 |
  439 +| carparkNo | string | 停车场编号 |
  440 +| stopSerialNo | int | 站点序列号 |
  441 +| stopNo | string | 停车场编号 |
  442 +| lon | float | 经度 |
  443 +| lat | float | 维度 |
  444 +| ts | long | 时间戳 |
  445 +| speedSensor | float | 发动机速度 |
  446 +| speedGps | float | gps速度 |
  447 +| direction | float | 角度0-359 |
  448 +| inTemp | int | 车内温度 |
  449 +| serviceState | long | 设备状态字 |
  450 +<<<<<<< HEAD
  451 +| daysYear | int | 对应年中的天数 为分区字段 查询一定要用此字段过滤 |
  452 +=======
  453 +| daysYear | int | 对应年中的天数 为分区字段 查询一定要用此字段过滤 |
  454 +
  455 +>>>>>>> af8ec3bedc8644f5813e9adab12a163e93cc7f50
... ...
src/main/java/com/bsth/controller/schedule/RerunController.java
1   -package com.bsth.controller.schedule;
2   -
3   -import com.bsth.controller.BaseController;
4   -import com.bsth.entity.schedule.rule.RerunRule;
5   -import com.bsth.repository.schedule.RerunRuleRepository;
6   -import org.springframework.beans.factory.annotation.Autowired;
7   -import org.springframework.web.bind.annotation.*;
8   -
9   -import java.util.Map;
10   -
11   -/**
12   - * Created by xu on 16/10/20.
13   - */
14   -@RestController
15   -@RequestMapping("rms")
16   -public class RerunController extends BaseController<RerunRule, Long> {
17   -
18   - @Autowired
19   - private RerunRuleRepository rerunRuleRepository;
20   -
21   - @Override
22   - public RerunRule findById(@PathVariable("id") Long aLong) {
23   - return rerunRuleRepository.findOneExtend(aLong);
24   - }
25   -
26   - /**
27   - * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
28   - * @Title: save
29   - * @Description: TODO(持久化对象)
30   - * @param @param t
31   - * @param @return 设定文件
32   - * @return Map<String,Object> {status: 1(成功),-1(失败)}
33   - * @throws
34   - */
35   - @RequestMapping(method = RequestMethod.POST)
36   - public Map<String, Object> save(@RequestBody RerunRule t){
37   - return baseService.save(t);
38   - }
39   -
40   -
41   -}
  1 +package com.bsth.controller.schedule;
  2 +
  3 +import com.bsth.controller.BaseController;
  4 +import com.bsth.entity.schedule.rule.RerunRule;
  5 +import com.bsth.repository.schedule.RerunRuleRepository;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.web.bind.annotation.*;
  8 +
  9 +import java.util.Map;
  10 +
  11 +/**
  12 + * Created by xu on 16/10/20.
  13 + */
  14 +@RestController
  15 +@RequestMapping("rms")
  16 +public class RerunController extends BaseController<RerunRule, Long> {
  17 +
  18 + @Autowired
  19 + private RerunRuleRepository rerunRuleRepository;
  20 +
  21 + @Override
  22 + public RerunRule findById(@PathVariable("id") Long aLong) {
  23 + return rerunRuleRepository.findOneExtend(aLong);
  24 + }
  25 +
  26 + /**
  27 + * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
  28 + * @Title: save
  29 + * @Description: TODO(持久化对象)
  30 + * @param @param t
  31 + * @param @return 设定文件
  32 + * @return Map<String,Object> {status: 1(成功),-1(失败)}
  33 + * @throws
  34 + */
  35 + @RequestMapping(method = RequestMethod.POST)
  36 + public Map<String, Object> save(@RequestBody RerunRule t){
  37 + return baseService.save(t);
  38 + }
  39 +
  40 +
  41 +}
... ...
src/main/java/com/bsth/data/arrival/ArrivalData_GPS.java
... ... @@ -51,7 +51,7 @@ public class ArrivalData_GPS implements CommandLineRunner{
51 51 @Override
52 52 public void run(String... arg0) throws Exception {
53 53 logger.info("ArrivalData_GPS,30,10");
54   - //Application.mainServices.scheduleWithFixedDelay(dataLoaderThread, 30, 12, TimeUnit.SECONDS);
  54 + //Application.mainServices.scheduleWithFixedDelay(dataLoaderThread, 30, 10, TimeUnit.SECONDS);
55 55 }
56 56  
57 57 @Component
... ... @@ -144,4 +144,4 @@ public class ArrivalData_GPS implements CommandLineRunner{
144 144 carIndexMap.put(nbbm, size);
145 145 return rs;
146 146 }
147   -}
  147 +}
148 148 \ No newline at end of file
... ...
src/main/java/com/bsth/data/gpsdata/GpsRealData.java
... ... @@ -72,7 +72,8 @@ public class GpsRealData implements CommandLineRunner{
72 72  
73 73 @Override
74 74 public void run(String... arg0) throws Exception {
75   - //Application.mainServices.scheduleWithFixedDelay(gpsDataLoader, 20, 6, TimeUnit.SECONDS);
  75 + logger.info("gpsDataLoader,20,6");
  76 + //Application.mainServices.scheduleWithFixedDelay(gpsDataLoader, 20, 7, TimeUnit.SECONDS);
76 77 }
77 78  
78 79 public GpsEntity add(GpsEntity gps) {
... ...
src/main/java/com/bsth/entity/schedule/rule/RerunRule.java
1   -package com.bsth.entity.schedule.rule;
2   -
3   -import com.bsth.entity.Line;
4   -import com.bsth.entity.schedule.CarConfigInfo;
5   -import com.bsth.entity.schedule.EmployeeConfigInfo;
6   -import com.bsth.entity.schedule.GuideboardInfo;
7   -import com.bsth.entity.schedule.TTInfo;
8   -import com.bsth.entity.sys.SysUser;
9   -
10   -import javax.persistence.*;
11   -import java.util.Date;
12   -
13   -/**
14   - * 套跑规则。
15   - */
16   -@Entity
17   -@Table(name = "bsth_c_s_rerun_rule")
18   -@NamedEntityGraphs({
19   - @NamedEntityGraph(name = "dylp", attributeNodes = {
20   - @NamedAttributeNode("rerunXl"),
21   - @NamedAttributeNode("rerunTtinfo"),
22   - @NamedAttributeNode("rerunLp"),
23   - @NamedAttributeNode("useXl"),
24   - @NamedAttributeNode("useLp"),
25   - @NamedAttributeNode("useCarConfig"),
26   - @NamedAttributeNode("useEmployeeConfig")
27   -
28   - // TODO:subgraph貌似没有用,再议
29   -// subgraphs = {
30   -// @NamedSubgraph(name = "useCarConfig", attributeNodes = {
31   -// @NamedAttributeNode("xl"),
32   -// @NamedAttributeNode("cl")
33   -// }),
34   -// @NamedSubgraph(name = "useEmployeeConfig", attributeNodes = {
35   -// @NamedAttributeNode("jsy"),
36   -// @NamedAttributeNode("spy"),
37   -// @NamedAttributeNode("xl")
38   -// })
39   -// }
40   - })
41   -})
42   -
43   -
44   -public class RerunRule {
45   - /** 主键Id */
46   - @Id
47   - @GeneratedValue
48   - private Long id;
49   -
50   - /** 套跑线路 */
51   - @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
52   - private Line rerunXl;
53   - /** 套跑时刻表 */
54   - @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
55   - private TTInfo rerunTtinfo;
56   - /** 套跑路牌 */
57   - @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
58   - private GuideboardInfo rerunLp;
59   - /** 套跑班次(时刻表明细ids,使用逗号连接) */
60   - private String rerunTtinfodetailIds;
61   -
62   -
63   - /** 套跑类型(dylp;对应路牌,dybc:对应班车) */
64   - @Column(nullable = false)
65   - private String rerunType;
66   -
67   - //--------- 对应路牌 ----------/
68   - /** 使用线路 */
69   - @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
70   - private Line useXl;
71   - /** 使用路牌 */
72   - @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
73   - private GuideboardInfo useLp;
74   -
75   - //--------- 对应班车 ----------/
76   - /** 车辆配置 */
77   - @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
78   - private CarConfigInfo useCarConfig;
79   - /** 人员配置 */
80   - @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
81   - private EmployeeConfigInfo useEmployeeConfig;
82   -
83   - /** 是否删除(标记) */
84   - @Column(nullable = false)
85   - private Boolean isCancel = false;
86   -
87   - /** 创建人 */
88   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
89   - private SysUser createBy;
90   - /** 修改人 */
91   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
92   - private SysUser updateBy;
93   - /** 创建日期 */
94   - @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
95   - private Date createDate;
96   - /** 修改日期 */
97   - @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
98   - private Date updateDate;
99   -
100   - public Long getId() {
101   - return id;
102   - }
103   -
104   - public void setId(Long id) {
105   - this.id = id;
106   - }
107   -
108   - public Line getRerunXl() {
109   - return rerunXl;
110   - }
111   -
112   - public void setRerunXl(Line rerunXl) {
113   - this.rerunXl = rerunXl;
114   - }
115   -
116   - public TTInfo getRerunTtinfo() {
117   - return rerunTtinfo;
118   - }
119   -
120   - public void setRerunTtinfo(TTInfo rerunTtinfo) {
121   - this.rerunTtinfo = rerunTtinfo;
122   - }
123   -
124   - public GuideboardInfo getRerunLp() {
125   - return rerunLp;
126   - }
127   -
128   - public void setRerunLp(GuideboardInfo rerunLp) {
129   - this.rerunLp = rerunLp;
130   - }
131   -
132   - public String getRerunTtinfodetailIds() {
133   - return rerunTtinfodetailIds;
134   - }
135   -
136   - public void setRerunTtinfodetailIds(String rerunTtinfodetailIds) {
137   - this.rerunTtinfodetailIds = rerunTtinfodetailIds;
138   - }
139   -
140   - public String getRerunType() {
141   - return rerunType;
142   - }
143   -
144   - public void setRerunType(String rerunType) {
145   - this.rerunType = rerunType;
146   - }
147   -
148   - public Line getUseXl() {
149   - return useXl;
150   - }
151   -
152   - public void setUseXl(Line useXl) {
153   - this.useXl = useXl;
154   - }
155   -
156   - public GuideboardInfo getUseLp() {
157   - return useLp;
158   - }
159   -
160   - public void setUseLp(GuideboardInfo useLp) {
161   - this.useLp = useLp;
162   - }
163   -
164   - public CarConfigInfo getUseCarConfig() {
165   - return useCarConfig;
166   - }
167   -
168   - public void setUseCarConfig(CarConfigInfo useCarConfig) {
169   - this.useCarConfig = useCarConfig;
170   - }
171   -
172   - public EmployeeConfigInfo getUseEmployeeConfig() {
173   - return useEmployeeConfig;
174   - }
175   -
176   - public void setUseEmployeeConfig(EmployeeConfigInfo useEmployeeConfig) {
177   - this.useEmployeeConfig = useEmployeeConfig;
178   - }
179   -
180   - public SysUser getCreateBy() {
181   - return createBy;
182   - }
183   -
184   - public void setCreateBy(SysUser createBy) {
185   - this.createBy = createBy;
186   - }
187   -
188   - public SysUser getUpdateBy() {
189   - return updateBy;
190   - }
191   -
192   - public void setUpdateBy(SysUser updateBy) {
193   - this.updateBy = updateBy;
194   - }
195   -
196   - public Date getCreateDate() {
197   - return createDate;
198   - }
199   -
200   - public void setCreateDate(Date createDate) {
201   - this.createDate = createDate;
202   - }
203   -
204   - public Date getUpdateDate() {
205   - return updateDate;
206   - }
207   -
208   - public Boolean getIsCancel() {
209   - return isCancel;
210   - }
211   -
212   - public void setIsCancel(Boolean isCancel) {
213   - this.isCancel = isCancel;
214   - }
215   -
216   - public void setUpdateDate(Date updateDate) {
217   - this.updateDate = updateDate;
218   - }
219   -}
  1 +package com.bsth.entity.schedule.rule;
  2 +
  3 +import com.bsth.entity.Line;
  4 +import com.bsth.entity.schedule.CarConfigInfo;
  5 +import com.bsth.entity.schedule.EmployeeConfigInfo;
  6 +import com.bsth.entity.schedule.GuideboardInfo;
  7 +import com.bsth.entity.schedule.TTInfo;
  8 +import com.bsth.entity.sys.SysUser;
  9 +
  10 +import javax.persistence.*;
  11 +import java.util.Date;
  12 +
  13 +/**
  14 + * 套跑规则。
  15 + */
  16 +@Entity
  17 +@Table(name = "bsth_c_s_rerun_rule")
  18 +@NamedEntityGraphs({
  19 + @NamedEntityGraph(name = "dylp", attributeNodes = {
  20 + @NamedAttributeNode("rerunXl"),
  21 + @NamedAttributeNode("rerunTtinfo"),
  22 + @NamedAttributeNode("rerunLp"),
  23 + @NamedAttributeNode("useXl"),
  24 + @NamedAttributeNode("useLp"),
  25 + @NamedAttributeNode("useCarConfig"),
  26 + @NamedAttributeNode("useEmployeeConfig")
  27 +
  28 + // TODO:subgraph貌似没有用,再议
  29 +// subgraphs = {
  30 +// @NamedSubgraph(name = "useCarConfig", attributeNodes = {
  31 +// @NamedAttributeNode("xl"),
  32 +// @NamedAttributeNode("cl")
  33 +// }),
  34 +// @NamedSubgraph(name = "useEmployeeConfig", attributeNodes = {
  35 +// @NamedAttributeNode("jsy"),
  36 +// @NamedAttributeNode("spy"),
  37 +// @NamedAttributeNode("xl")
  38 +// })
  39 +// }
  40 + })
  41 +})
  42 +
  43 +
  44 +public class RerunRule {
  45 + /** 主键Id */
  46 + @Id
  47 + @GeneratedValue
  48 + private Long id;
  49 +
  50 + /** 套跑线路 */
  51 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  52 + private Line rerunXl;
  53 + /** 套跑时刻表 */
  54 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  55 + private TTInfo rerunTtinfo;
  56 + /** 套跑路牌 */
  57 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  58 + private GuideboardInfo rerunLp;
  59 + /** 套跑班次(时刻表明细ids,使用逗号连接) */
  60 + private String rerunTtinfodetailIds;
  61 +
  62 +
  63 + /** 套跑类型(dylp;对应路牌,dybc:对应班车) */
  64 + @Column(nullable = false)
  65 + private String rerunType;
  66 +
  67 + //--------- 对应路牌 ----------/
  68 + /** 使用线路 */
  69 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  70 + private Line useXl;
  71 + /** 使用路牌 */
  72 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  73 + private GuideboardInfo useLp;
  74 +
  75 + //--------- 对应班车 ----------/
  76 + /** 车辆配置 */
  77 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  78 + private CarConfigInfo useCarConfig;
  79 + /** 人员配置 */
  80 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  81 + private EmployeeConfigInfo useEmployeeConfig;
  82 +
  83 + /** 是否删除(标记) */
  84 + @Column(nullable = false)
  85 + private Boolean isCancel = false;
  86 +
  87 + /** 创建人 */
  88 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  89 + private SysUser createBy;
  90 + /** 修改人 */
  91 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  92 + private SysUser updateBy;
  93 + /** 创建日期 */
  94 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  95 + private Date createDate;
  96 + /** 修改日期 */
  97 + @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
  98 + private Date updateDate;
  99 +
  100 + public Long getId() {
  101 + return id;
  102 + }
  103 +
  104 + public void setId(Long id) {
  105 + this.id = id;
  106 + }
  107 +
  108 + public Line getRerunXl() {
  109 + return rerunXl;
  110 + }
  111 +
  112 + public void setRerunXl(Line rerunXl) {
  113 + this.rerunXl = rerunXl;
  114 + }
  115 +
  116 + public TTInfo getRerunTtinfo() {
  117 + return rerunTtinfo;
  118 + }
  119 +
  120 + public void setRerunTtinfo(TTInfo rerunTtinfo) {
  121 + this.rerunTtinfo = rerunTtinfo;
  122 + }
  123 +
  124 + public GuideboardInfo getRerunLp() {
  125 + return rerunLp;
  126 + }
  127 +
  128 + public void setRerunLp(GuideboardInfo rerunLp) {
  129 + this.rerunLp = rerunLp;
  130 + }
  131 +
  132 + public String getRerunTtinfodetailIds() {
  133 + return rerunTtinfodetailIds;
  134 + }
  135 +
  136 + public void setRerunTtinfodetailIds(String rerunTtinfodetailIds) {
  137 + this.rerunTtinfodetailIds = rerunTtinfodetailIds;
  138 + }
  139 +
  140 + public String getRerunType() {
  141 + return rerunType;
  142 + }
  143 +
  144 + public void setRerunType(String rerunType) {
  145 + this.rerunType = rerunType;
  146 + }
  147 +
  148 + public Line getUseXl() {
  149 + return useXl;
  150 + }
  151 +
  152 + public void setUseXl(Line useXl) {
  153 + this.useXl = useXl;
  154 + }
  155 +
  156 + public GuideboardInfo getUseLp() {
  157 + return useLp;
  158 + }
  159 +
  160 + public void setUseLp(GuideboardInfo useLp) {
  161 + this.useLp = useLp;
  162 + }
  163 +
  164 + public CarConfigInfo getUseCarConfig() {
  165 + return useCarConfig;
  166 + }
  167 +
  168 + public void setUseCarConfig(CarConfigInfo useCarConfig) {
  169 + this.useCarConfig = useCarConfig;
  170 + }
  171 +
  172 + public EmployeeConfigInfo getUseEmployeeConfig() {
  173 + return useEmployeeConfig;
  174 + }
  175 +
  176 + public void setUseEmployeeConfig(EmployeeConfigInfo useEmployeeConfig) {
  177 + this.useEmployeeConfig = useEmployeeConfig;
  178 + }
  179 +
  180 + public SysUser getCreateBy() {
  181 + return createBy;
  182 + }
  183 +
  184 + public void setCreateBy(SysUser createBy) {
  185 + this.createBy = createBy;
  186 + }
  187 +
  188 + public SysUser getUpdateBy() {
  189 + return updateBy;
  190 + }
  191 +
  192 + public void setUpdateBy(SysUser updateBy) {
  193 + this.updateBy = updateBy;
  194 + }
  195 +
  196 + public Date getCreateDate() {
  197 + return createDate;
  198 + }
  199 +
  200 + public void setCreateDate(Date createDate) {
  201 + this.createDate = createDate;
  202 + }
  203 +
  204 + public Date getUpdateDate() {
  205 + return updateDate;
  206 + }
  207 +
  208 + public Boolean getIsCancel() {
  209 + return isCancel;
  210 + }
  211 +
  212 + public void setIsCancel(Boolean isCancel) {
  213 + this.isCancel = isCancel;
  214 + }
  215 +
  216 + public void setUpdateDate(Date updateDate) {
  217 + this.updateDate = updateDate;
  218 + }
  219 +}
... ...
src/main/java/com/bsth/repository/schedule/RerunRuleRepository.java
1   -package com.bsth.repository.schedule;
2   -
3   -import com.bsth.entity.schedule.rule.RerunRule;
4   -import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
5   -import com.bsth.repository.BaseRepository;
6   -import org.springframework.data.domain.Page;
7   -import org.springframework.data.domain.Pageable;
8   -import org.springframework.data.jpa.domain.Specification;
9   -import org.springframework.data.jpa.repository.EntityGraph;
10   -import org.springframework.data.jpa.repository.Query;
11   -import org.springframework.stereotype.Repository;
12   -
13   -/**
14   - * Created by xu on 16/10/18.
15   - */
16   -@Repository
17   -public interface RerunRuleRepository extends BaseRepository<RerunRule, Long> {
18   - @EntityGraph(value = "dylp", type = EntityGraph.EntityGraphType.FETCH)
19   - @Override
20   - Page<RerunRule> findAll(Specification<RerunRule> spec, Pageable pageable);
21   -
22   - @EntityGraph(value = "dylp", type = EntityGraph.EntityGraphType.FETCH)
23   - @Query("select cc from RerunRule cc where cc.id=?1")
24   - RerunRule findOneExtend(Long aLong);
25   -}
  1 +package com.bsth.repository.schedule;
  2 +
  3 +import com.bsth.entity.schedule.rule.RerunRule;
  4 +import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  5 +import com.bsth.repository.BaseRepository;
  6 +import org.springframework.data.domain.Page;
  7 +import org.springframework.data.domain.Pageable;
  8 +import org.springframework.data.jpa.domain.Specification;
  9 +import org.springframework.data.jpa.repository.EntityGraph;
  10 +import org.springframework.data.jpa.repository.Query;
  11 +import org.springframework.stereotype.Repository;
  12 +
  13 +/**
  14 + * Created by xu on 16/10/18.
  15 + */
  16 +@Repository
  17 +public interface RerunRuleRepository extends BaseRepository<RerunRule, Long> {
  18 + @EntityGraph(value = "dylp", type = EntityGraph.EntityGraphType.FETCH)
  19 + @Override
  20 + Page<RerunRule> findAll(Specification<RerunRule> spec, Pageable pageable);
  21 +
  22 + @EntityGraph(value = "dylp", type = EntityGraph.EntityGraphType.FETCH)
  23 + @Query("select cc from RerunRule cc where cc.id=?1")
  24 + RerunRule findOneExtend(Long aLong);
  25 +}
... ...
src/main/java/com/bsth/service/schedule/RerunService.java
1   -package com.bsth.service.schedule;
2   -
3   -import com.bsth.entity.schedule.rule.RerunRule;
4   -import com.bsth.service.BaseService;
5   -
6   -/**
7   - * Created by xu on 16/10/20.
8   - */
9   -public interface RerunService extends BaseService<RerunRule, Long> {
10   -}
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.entity.schedule.rule.RerunRule;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +/**
  7 + * Created by xu on 16/10/20.
  8 + */
  9 +public interface RerunService extends BaseService<RerunRule, Long> {
  10 +}
... ...
src/main/java/com/bsth/service/schedule/RerunServiceImpl.java
1   -package com.bsth.service.schedule;
2   -
3   -import com.bsth.common.ResponseCode;
4   -import com.bsth.entity.schedule.rule.RerunRule;
5   -import com.bsth.repository.schedule.RerunRuleRepository;
6   -import com.bsth.service.impl.BaseServiceImpl;
7   -import org.springframework.beans.factory.annotation.Autowired;
8   -import org.springframework.stereotype.Service;
9   -
10   -import javax.transaction.Transactional;
11   -import java.util.HashMap;
12   -import java.util.Map;
13   -
14   -/**
15   - * Created by xu on 16/10/20.
16   - */
17   -@Service
18   -public class RerunServiceImpl extends BaseServiceImpl<RerunRule, Long> implements RerunService {
19   -
20   - @Autowired
21   - private RerunRuleRepository rerunRuleRepository;
22   -
23   - @Override
24   - @Transactional
25   - public Map<String, Object> delete(Long aLong) {
26   - // 获取带作废的数据
27   - RerunRule rerunRule = rerunRuleRepository.findOne(aLong);
28   -
29   - toogleIsCancel(rerunRule);
30   -
31   - Map<String, Object> map = new HashMap<>();
32   - map.put("status", ResponseCode.SUCCESS);
33   -
34   - return map;
35   -
36   - }
37   -
38   - /**
39   - * 撤销/作废切换。
40   - * @param rerunRule
41   - */
42   - private void toogleIsCancel(RerunRule rerunRule) {
43   - boolean isCancel = rerunRule.getIsCancel();
44   - if (isCancel) {
45   - rerunRule.setIsCancel(false);
46   - } else {
47   - rerunRule.setIsCancel(true);
48   - }
49   - }
50   -}
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.common.ResponseCode;
  4 +import com.bsth.entity.schedule.rule.RerunRule;
  5 +import com.bsth.repository.schedule.RerunRuleRepository;
  6 +import com.bsth.service.impl.BaseServiceImpl;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.stereotype.Service;
  9 +
  10 +import javax.transaction.Transactional;
  11 +import java.util.HashMap;
  12 +import java.util.Map;
  13 +
  14 +/**
  15 + * Created by xu on 16/10/20.
  16 + */
  17 +@Service
  18 +public class RerunServiceImpl extends BaseServiceImpl<RerunRule, Long> implements RerunService {
  19 +
  20 + @Autowired
  21 + private RerunRuleRepository rerunRuleRepository;
  22 +
  23 + @Override
  24 + @Transactional
  25 + public Map<String, Object> delete(Long aLong) {
  26 + // 获取带作废的数据
  27 + RerunRule rerunRule = rerunRuleRepository.findOne(aLong);
  28 +
  29 + toogleIsCancel(rerunRule);
  30 +
  31 + Map<String, Object> map = new HashMap<>();
  32 + map.put("status", ResponseCode.SUCCESS);
  33 +
  34 + return map;
  35 +
  36 + }
  37 +
  38 + /**
  39 + * 撤销/作废切换。
  40 + * @param rerunRule
  41 + */
  42 + private void toogleIsCancel(RerunRule rerunRule) {
  43 + boolean isCancel = rerunRule.getIsCancel();
  44 + if (isCancel) {
  45 + rerunRule.setIsCancel(false);
  46 + } else {
  47 + rerunRule.setIsCancel(true);
  48 + }
  49 + }
  50 +}
... ...
src/main/java/com/bsth/websocket/handler/RealControlSocketHandler.java
... ... @@ -9,6 +9,7 @@ import java.util.Set;
9 9  
10 10 import org.slf4j.Logger;
11 11 import org.slf4j.LoggerFactory;
  12 +import org.springframework.context.annotation.Scope;
12 13 import org.springframework.stereotype.Component;
13 14 import org.springframework.web.socket.CloseStatus;
14 15 import org.springframework.web.socket.TextMessage;
... ... @@ -26,6 +27,7 @@ import com.google.common.collect.ArrayListMultimap;
26 27 * @author PanZhao
27 28 */
28 29 @Component
  30 +@Scope("prototype")
29 31 public class RealControlSocketHandler implements WebSocketHandler {
30 32  
31 33 Logger logger = LoggerFactory.getLogger(this.getClass());
... ... @@ -146,7 +148,7 @@ public class RealControlSocketHandler implements WebSocketHandler {
146 148 //Set<String> uids = BasicData.lineCode2SocketUserMap.get(lineCode);
147 149 //if(null == uids || uids.size() == 0)
148 150 // return;
149   -
  151 +
150 152 TextMessage message = new TextMessage(msg.getBytes());
151 153  
152 154 List<WebSocketSession> sessList = listenMap.get(lineCode);
... ...
src/main/resources/application-prod.properties
... ... @@ -8,9 +8,9 @@ spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
8 8 spring.jpa.database= MYSQL
9 9 spring.jpa.show-sql= true
10 10 spring.datasource.driver-class-name= com.mysql.jdbc.Driver
11   -spring.datasource.url= jdbc:mysql://192.168.168.171:3306/control
  11 +spring.datasource.url= jdbc:mysql://192.168.40.100:3306/qp_control
12 12 spring.datasource.username= root
13   -spring.datasource.password= root2jsp
  13 +spring.datasource.password= root@JSP2jsp
14 14 #DATASOURCE
15 15 spring.datasource.max-active=100
16 16 spring.datasource.max-idle=8
... ... @@ -26,6 +26,6 @@ spring.datasource.validation-query=select 1
26 26 ##
27 27 #222.66.0.204:5555
28 28 ##\u5B9E\u65F6gps
29   -http.gps.real.url= http://192.168.168.171:8080/transport_server/rtgps/
  29 +http.gps.real.url= http://192.168.40.82:8080/transport_server/rtgps/
30 30 ##\u6D88\u606F\u4E0B\u53D1
31   -http.send.directive = http://192.168.168.171:8080/transport_server/message/
32 31 \ No newline at end of file
  32 +http.send.directive = http://192.168.40.82:8080/transport_server/message/
33 33 \ No newline at end of file
... ...
src/main/resources/datatools/config-prod.properties
... ... @@ -4,13 +4,13 @@
4 4 datatools.kettle_properties=/datatools/kettle.properties
5 5 # 2、ktr文件通用配置变量(数据库连接,根据不同的环境需要修正)
6 6 #数据库ip地址
7   -datatools.kvars_dbip=192.168.168.171
  7 +datatools.kvars_dbip=192.168.40.82
8 8 #数据库用户名
9 9 datatools.kvars_dbuname=root
10 10 #数据库密码
11   -datatools.kvars_dbpwd=root2jsp
  11 +datatools.kvars_dbpwd=123456
12 12 #数据库库名
13   -datatools.kvars_dbdname=control
  13 +datatools.kvars_dbdname=qp_control
14 14  
15 15 # 3、上传数据配置信息
16 16 # 上传文件目录配置(根据不同的环境需要修正)
... ...
src/main/resources/ms-jdbc.properties
  1 +#ms.mysql.driver= com.mysql.jdbc.Driver
  2 +#ms.mysql.url= jdbc:mysql://192.168.40.82:3306/ms?useUnicode=true&characterEncoding=utf-8
  3 +#ms.mysql.username= root
  4 +#ms.mysql.password= 123456
  5 +
1 6 ms.mysql.driver= com.mysql.jdbc.Driver
2 7 ms.mysql.url= jdbc:mysql://192.168.168.201:3306/ms?useUnicode=true&characterEncoding=utf-8
3 8 ms.mysql.username= root
4 9 ms.mysql.password= 123456
5   -
6   -#ms.mysql.driver= com.mysql.jdbc.Driver
7   -#ms.mysql.url= jdbc:mysql://192.168.168.171:3306/ms?useUnicode=true&characterEncoding=utf-8
8   -#ms.mysql.username= root
9   -#ms.mysql.password= root2jsp
10 10 \ No newline at end of file
... ...
src/main/resources/static/assets/img/bg_9b9dcb65ff.png

5.9 KB | W: | H:

17.4 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
src/main/resources/static/assets/img/login_bgcenter.png

37.4 KB | W: | H:

40.8 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
src/main/resources/static/index.html
... ... @@ -143,7 +143,7 @@ tr.row-active td {
143 143 <div class="page-header-inner ">
144 144 <!-- LOGO -->
145 145 <div class="page-logo">
146   - <a href="index.html" class="logo-default logo-default-text" > 闵行公交调度系统 </a>
  146 + <a href="index.html" class="logo-default logo-default-text" > 青浦公交调度系统 </a>
147 147 <div class="menu-toggler sidebar-toggler">
148 148 </div>
149 149 </div>
... ...
src/main/resources/static/login.html
... ... @@ -180,7 +180,7 @@ h3.logo-text{
180 180 <div class="wrapper ng-scope">
181 181 <div id="loginPanel" class="dialog dialog-shadow">
182 182 <br>
183   - <h3 class="logo-text">闵行公交调度系统 </h3>
  183 + <h3 class="logo-text">青浦公交调度系统 </h3>
184 184 <hr>
185 185 <form style="padding: 0px 35px;">
186 186 <div class="form-group" style="margin-bottom: 0">
... ...
src/main/resources/static/pages/control/line/index.html
... ... @@ -18,7 +18,7 @@
18 18 <div class="portlet-title banner" >
19 19 <div class="caption col_hide_1280" style="color: #FFF;">
20 20 <i class="fa fa-life-ring" style="font-size: 22px;color: #FFF;"></i> <span
21   - class="caption-subject bold" style="font-size: 24px;">闵行公交线路调度系统</span>
  21 + class="caption-subject bold" style="font-size: 24px;">青浦公交线路调度系统</span>
22 22 </div>
23 23 <div class="col_hide_1440" style="color: white;font-size: 18px;position: absolute;right: 25px;top: 75px;">
24 24 <span class="top_username"></span> <span class="operation_mode_text animated" ></span>
... ...
src/main/resources/static/pages/control/line/js/webSocketHandle.js
... ... @@ -157,7 +157,7 @@ function appendLogItem(tempId, json, lineCode){
157 157 var text = $item.find('.log-item-text').text();
158 158 //线路名称
159 159 var lineName = _data.getLineIds()[lineCode];
160   - h5Speech.speak(lineName.replace('行', '航') + ' ' + text);
  160 + h5Speech.speak(lineName + ' ' + text);
161 161 }
162 162 //重新计算未处理消息
163 163 _messenger.setUntreatedNum(lineCode);
... ...
src/main/resources/static/pages/scheduleApp/module/common/dts1/select/saSelect4.js
1   -
2 1 /**
3 2 * saSelect4指令,封装angular-ui-select控件,并添加相应的业务。
4 3 * name(必须):控件的名字
... ... @@ -321,5 +320,4 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saSelect4&#39;, [
321 320  
322 321 };
323 322 }
324   -]);
325   -
  323 +]);
326 324 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/common/dts1/select/saSelect4Template.html
1   -<div class="input-group" name="指令compile阶段设定"
2   - ng-model="$saSelectCtrl.$$internalmodel">
3   - <ui-select ng-model="$saSelectCtrl.$$internal_select_value" on-select="$saSelectCtrl.$$internal_select_fn($item)"
4   - theme="bootstrap" >
5   - <ui-select-match placeholder="指令compile阶段设定">指令compile阶段设定</ui-select-match>
6   - <ui-select-choices repeat="指令compile阶段设定"
7   - refresh="$saSelectCtrl.$$internal_refresh_fn($select.search)"
8   - refresh-delay="10">
9   - <span ng-bind="指令compile阶段设定"></span>
10   - </ui-select-choices>
11   - </ui-select>
12   - <span class="input-group-btn">
13   - <button type="button" ng-click="$saSelectCtrl.$$internal_remove_fn()" class="btn btn-default">
14   - <span class="glyphicon glyphicon-trash"></span>
15   - </button>
16   - </span>
  1 +<div class="input-group" name="指令compile阶段设定"
  2 + ng-model="$saSelectCtrl.$$internalmodel">
  3 + <ui-select ng-model="$saSelectCtrl.$$internal_select_value" on-select="$saSelectCtrl.$$internal_select_fn($item)"
  4 + theme="bootstrap" >
  5 + <ui-select-match placeholder="指令compile阶段设定">指令compile阶段设定</ui-select-match>
  6 + <ui-select-choices repeat="指令compile阶段设定"
  7 + refresh="$saSelectCtrl.$$internal_refresh_fn($select.search)"
  8 + refresh-delay="10">
  9 + <span ng-bind="指令compile阶段设定"></span>
  10 + </ui-select-choices>
  11 + </ui-select>
  12 + <span class="input-group-btn">
  13 + <button type="button" ng-click="$saSelectCtrl.$$internal_remove_fn()" class="btn btn-default">
  14 + <span class="glyphicon glyphicon-trash"></span>
  15 + </button>
  16 + </span>
17 17 </div>
18 18 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/common/dts1/select/saSelect5.js
1   -
2   -
3 1 /**
4 2 * saSelect5指令,基于简拼查询的select,内部封装angular-ui-select控件,并嵌入相应的业务逻辑。
5 3 * name(必须):控件的名字
... ... @@ -381,5 +379,4 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saSelect5&#39;, [
381 379 }
382 380 };
383 381 }
384   -]);
385   -
  382 +]);
386 383 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/common/dts1/select/saSelect5Template.html
1   -<div class="input-group" name="指令compile阶段设定1"
2   - ng-model="$saSelectCtrl.$$internalmodel">
3   - <ui-select ng-model="$saSelectCtrl.$$internal_select_value" on-select="$saSelectCtrl.$$internal_select_fn($item)"
4   - theme="bootstrap" >
5   - <ui-select-match placeholder="指令compile阶段设定">指令compile阶段设定2</ui-select-match>
6   - <ui-select-choices repeat="指令compile阶段设定3"
7   - refresh="$saSelectCtrl.$$internal_refresh_fn($select.search)"
8   - refresh-delay="10">
9   -
10   - 指令compile阶段设定777
11   -
12   - </ui-select-choices>
13   - </ui-select>
14   - <span class="input-group-btn">
15   - <button type="button" ng-click="$saSelectCtrl.$$internal_remove_fn()" class="btn btn-default">
16   - <span class="glyphicon glyphicon-trash"></span>
17   - </button>
18   - </span>
  1 +<div class="input-group" name="指令compile阶段设定1"
  2 + ng-model="$saSelectCtrl.$$internalmodel">
  3 + <ui-select ng-model="$saSelectCtrl.$$internal_select_value" on-select="$saSelectCtrl.$$internal_select_fn($item)"
  4 + theme="bootstrap" >
  5 + <ui-select-match placeholder="指令compile阶段设定">指令compile阶段设定2</ui-select-match>
  6 + <ui-select-choices repeat="指令compile阶段设定3"
  7 + refresh="$saSelectCtrl.$$internal_refresh_fn($select.search)"
  8 + refresh-delay="10">
  9 +
  10 + 指令compile阶段设定777
  11 +
  12 + </ui-select-choices>
  13 + </ui-select>
  14 + <span class="input-group-btn">
  15 + <button type="button" ng-click="$saSelectCtrl.$$internal_remove_fn()" class="btn btn-default">
  16 + <span class="glyphicon glyphicon-trash"></span>
  17 + </button>
  18 + </span>
19 19 </div>
20 20 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/common/dts2/bcGroup/saBcgroup.js
1   -
2   -
3 1 /**
4 2 * saBcgroup指令,用于套跑界面中,从指定线路,指定时刻表,指定路牌的班次列表中选择套跑班次。
5 3 * 属性如下:
... ... @@ -285,5 +283,4 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saBcgroup&#39;, [
285 283 }
286 284 }
287 285 }
288   -]);
289   -
  286 +]);
290 287 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/common/dts2/bcGroup/saBcgroupTemplate.html
1   -<div name="{{$saBcgroupCtrl.$name_attr}}"
2   - ng-model="$saBcgroupCtrl.$$internalmodel">
3   -
4   - <style>
5   - .bc-select {
6   - min-height: 180px;
7   - border: 1px solid #ddd;
8   - }
9   - .bc-select .bc-input {
10   - margin: 5px 5px 0px 5px;
11   - padding-left: 0;
12   - }
13   - .bc-select .bc-select-cont {
14   - text-align: left;
15   - min-height: 60px;
16   - padding-right: 0px;
17   - }
18   - .bc-select .bc-select-body {
19   - margin-top: 5px;
20   - overflow: auto;
21   - width: auto;
22   - min-height: 5px;
23   - }
24   - .bc-select .bc {
25   - display: inline-block;
26   - padding: 8px;
27   - min-width: 50px;
28   - text-align: center;
29   - border: 1px solid #C1C1C1;
30   - color: #666;
31   - border-radius: 5px !important;
32   - margin: 5px;
33   - }
34   - .bc-select .bc.active {
35   - color: white;
36   - background: #4095E8;
37   - border: 1px solid #4095E8;
38   - }
39   -
40   -
41   - </style>
42   -
43   - <div class="col-md-12 bc-select">
44   - <div class="col-md-12 bc-input">
45   - <div class="col-md-9">
46   - 班次列表,共{{$saBcgroupCtrl.$$data.length}}个
47   - </div>
48   - </div>
49   - <div class="col-md-12 bc-select-cont">
50   - <div class="bc-select-body">
51   - <div class="bc active"
52   - ng-repeat="$d in $saBcgroupCtrl.$$data track by $index"
53   - ng-click="$saBcgroupCtrl.$$internal_bclist_click($index)">
54   - <i class="fa fa-list" aria-hidden="true"></i>
55   - <span ng-if="$d.bctype == 'out'">
56   - 出场
57   - </span>
58   - <span ng-if="$d.bctype == 'in'">
59   - 进场
60   - </span>
61   - {{"(" + $d.bcfcsj + ")"}}
62   - </div>
63   - </div>
64   - </div>
65   - <div class="col-md-12 bc-input">
66   - <div class="col-md-12">
67   - 已经选中的班次列表,共{{$saBcgroupCtrl.$$dataSelected.length}}个
68   - </div>
69   - </div>
70   - <div class="col-md-12 bc-select-cont">
71   - <div class="bc-select-body">
72   - <div ng-class="{bc: true, active: true}"
73   - ng-repeat="$d in $saBcgroupCtrl.$$dataSelected track by $index"
74   - ng-click="$saBcgroupCtrl.$$internal_selbclist_click($index)"
75   - ng-dblclick="$saBcgroupCtrl.$$internal_selbclist_dbclick($index)">
76   - <i class="fa fa-list" aria-hidden="true"></i>
77   - <span ng-if="$d.bctype == 'out'">
78   - 出场
79   - </span>
80   - <span ng-if="$d.bctype == 'in'">
81   - 进场
82   - </span>
83   - {{"(" + $d.bcfcsj + ")"}}
84   - </div>
85   - </div>
86   - </div>
87   - </div>
88   -
89   -
  1 +<div name="{{$saBcgroupCtrl.$name_attr}}"
  2 + ng-model="$saBcgroupCtrl.$$internalmodel">
  3 +
  4 + <style>
  5 + .bc-select {
  6 + min-height: 180px;
  7 + border: 1px solid #ddd;
  8 + }
  9 + .bc-select .bc-input {
  10 + margin: 5px 5px 0px 5px;
  11 + padding-left: 0;
  12 + }
  13 + .bc-select .bc-select-cont {
  14 + text-align: left;
  15 + min-height: 60px;
  16 + padding-right: 0px;
  17 + }
  18 + .bc-select .bc-select-body {
  19 + margin-top: 5px;
  20 + overflow: auto;
  21 + width: auto;
  22 + min-height: 5px;
  23 + }
  24 + .bc-select .bc {
  25 + display: inline-block;
  26 + padding: 8px;
  27 + min-width: 50px;
  28 + text-align: center;
  29 + border: 1px solid #C1C1C1;
  30 + color: #666;
  31 + border-radius: 5px !important;
  32 + margin: 5px;
  33 + }
  34 + .bc-select .bc.active {
  35 + color: white;
  36 + background: #4095E8;
  37 + border: 1px solid #4095E8;
  38 + }
  39 +
  40 +
  41 + </style>
  42 +
  43 + <div class="col-md-12 bc-select">
  44 + <div class="col-md-12 bc-input">
  45 + <div class="col-md-9">
  46 + 班次列表,共{{$saBcgroupCtrl.$$data.length}}个
  47 + </div>
  48 + </div>
  49 + <div class="col-md-12 bc-select-cont">
  50 + <div class="bc-select-body">
  51 + <div class="bc active"
  52 + ng-repeat="$d in $saBcgroupCtrl.$$data track by $index"
  53 + ng-click="$saBcgroupCtrl.$$internal_bclist_click($index)">
  54 + <i class="fa fa-list" aria-hidden="true"></i>
  55 + <span ng-if="$d.bctype == 'out'">
  56 + 出场
  57 + </span>
  58 + <span ng-if="$d.bctype == 'in'">
  59 + 进场
  60 + </span>
  61 + {{"(" + $d.bcfcsj + ")"}}
  62 + </div>
  63 + </div>
  64 + </div>
  65 + <div class="col-md-12 bc-input">
  66 + <div class="col-md-12">
  67 + 已经选中的班次列表,共{{$saBcgroupCtrl.$$dataSelected.length}}个
  68 + </div>
  69 + </div>
  70 + <div class="col-md-12 bc-select-cont">
  71 + <div class="bc-select-body">
  72 + <div ng-class="{bc: true, active: true}"
  73 + ng-repeat="$d in $saBcgroupCtrl.$$dataSelected track by $index"
  74 + ng-click="$saBcgroupCtrl.$$internal_selbclist_click($index)"
  75 + ng-dblclick="$saBcgroupCtrl.$$internal_selbclist_dbclick($index)">
  76 + <i class="fa fa-list" aria-hidden="true"></i>
  77 + <span ng-if="$d.bctype == 'out'">
  78 + 出场
  79 + </span>
  80 + <span ng-if="$d.bctype == 'in'">
  81 + 进场
  82 + </span>
  83 + {{"(" + $d.bcfcsj + ")"}}
  84 + </div>
  85 + </div>
  86 + </div>
  87 + </div>
  88 +
  89 +
90 90 </div>
91 91 \ No newline at end of file
... ...