Commit 24e0b591148b1d3734f847a1f204f0a7a71fd00f
1 parent
9977b66b
update...
Showing
10 changed files
with
202 additions
and
62 deletions
src/main/java/com/bsth/data/gpsdata/arrival/handlers/InOutStationSignalHandle.java
| @@ -253,20 +253,22 @@ public class InOutStationSignalHandle extends SignalHandle{ | @@ -253,20 +253,22 @@ public class InOutStationSignalHandle extends SignalHandle{ | ||
| 253 | //已完成班次数 | 253 | //已完成班次数 |
| 254 | int doneSum = dayOfSchedule.doneSum(sch.getClZbh()); | 254 | int doneSum = dayOfSchedule.doneSum(sch.getClZbh()); |
| 255 | ScheduleRealInfo next = dayOfSchedule.next(sch); | 255 | ScheduleRealInfo next = dayOfSchedule.next(sch); |
| 256 | - //通知客户端 | ||
| 257 | - sendUtils.sendZdsj(sch, next, doneSum); | ||
| 258 | //持久化 | 256 | //持久化 |
| 259 | dayOfSchedule.save(sch); | 257 | dayOfSchedule.save(sch); |
| 260 | 258 | ||
| 261 | - //准备执行下一个班次 | ||
| 262 | - if (next != null) { | 259 | + if(next != null){ |
| 263 | next.setQdzArrDatesj(sch.getZdsjActual()); | 260 | next.setQdzArrDatesj(sch.getZdsjActual()); |
| 264 | dayOfSchedule.addExecPlan(next); | 261 | dayOfSchedule.addExecPlan(next); |
| 265 | //进站既进场 | 262 | //进站既进场 |
| 266 | inStationAndInPark(sch, next); | 263 | inStationAndInPark(sch, next); |
| 264 | + } | ||
| 265 | + //通知客户端 | ||
| 266 | + sendUtils.sendZdsj(sch, next, doneSum); | ||
| 267 | + | ||
| 268 | + //准备执行下一个班次 | ||
| 269 | + if (next != null) { | ||
| 267 | //将gps转换为下一个班次走向的站内信号 | 270 | //将gps转换为下一个班次走向的站内信号 |
| 268 | transformUpdown(gps, next); | 271 | transformUpdown(gps, next); |
| 269 | - | ||
| 270 | //下发调度指令 | 272 | //下发调度指令 |
| 271 | directiveService.send60Dispatch(next, doneSum, "到站@系统"); | 273 | directiveService.send60Dispatch(next, doneSum, "到站@系统"); |
| 272 | 274 |
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
| @@ -11,7 +11,10 @@ import com.bsth.data.directive.DirectivesPstThread; | @@ -11,7 +11,10 @@ import com.bsth.data.directive.DirectivesPstThread; | ||
| 11 | import com.bsth.data.gpsdata.GpsRealData; | 11 | import com.bsth.data.gpsdata.GpsRealData; |
| 12 | import com.bsth.data.gpsdata.recovery.GpsDataRecovery; | 12 | import com.bsth.data.gpsdata.recovery.GpsDataRecovery; |
| 13 | import com.bsth.data.schedule.late_adjust.ScheduleLateThread; | 13 | import com.bsth.data.schedule.late_adjust.ScheduleLateThread; |
| 14 | -import com.bsth.data.schedule.thread.*; | 14 | +import com.bsth.data.schedule.thread.CalcOilThread; |
| 15 | +import com.bsth.data.schedule.thread.SchedulePstThread; | ||
| 16 | +import com.bsth.data.schedule.thread.ScheduleRefreshThread; | ||
| 17 | +import com.bsth.data.schedule.thread.SubmitToTrafficManage; | ||
| 15 | import com.bsth.entity.realcontrol.LineConfig; | 18 | import com.bsth.entity.realcontrol.LineConfig; |
| 16 | import com.bsth.entity.realcontrol.ScheduleRealInfo; | 19 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 17 | import com.bsth.entity.schedule.SchedulePlanInfo; | 20 | import com.bsth.entity.schedule.SchedulePlanInfo; |
| @@ -146,7 +149,7 @@ public class DayOfSchedule implements CommandLineRunner { | @@ -146,7 +149,7 @@ public class DayOfSchedule implements CommandLineRunner { | ||
| 146 | //入库 | 149 | //入库 |
| 147 | // Application.mainServices.scheduleWithFixedDelay(schedulePstThread, 60, 30, TimeUnit.SECONDS); | 150 | // Application.mainServices.scheduleWithFixedDelay(schedulePstThread, 60, 30, TimeUnit.SECONDS); |
| 148 | //班次误点扫描 | 151 | //班次误点扫描 |
| 149 | -// Application.mainServices.scheduleWithFixedDelay(scheduleLateThread, 60, 60, TimeUnit.SECONDS); | 152 | +// Application.mainServices.scheduleWithFixedDelay(scheduleLateThread, 60, 30, TimeUnit.SECONDS); |
| 150 | 153 | ||
| 151 | //每天凌晨2点20提交数据到运管处 | 154 | //每天凌晨2点20提交数据到运管处 |
| 152 | long diff = (DateUtils.getTimestamp() + 1000 * 60 * 140) - System.currentTimeMillis(); | 155 | long diff = (DateUtils.getTimestamp() + 1000 * 60 * 140) - System.currentTimeMillis(); |
src/main/java/com/bsth/data/schedule/late_adjust/LateAdjustHandle.java
| @@ -116,17 +116,20 @@ public class LateAdjustHandle implements ApplicationContextAware{ | @@ -116,17 +116,20 @@ public class LateAdjustHandle implements ApplicationContextAware{ | ||
| 116 | return; | 116 | return; |
| 117 | 117 | ||
| 118 | //进的是班次起点 | 118 | //进的是班次起点 |
| 119 | - if(gps.getStopNo().equals(sch.getQdzCode()) | 119 | + if(gps.getStationName().equals(sch.getQdzName()) |
| 120 | && sch.getLateMinute() > 0){ | 120 | && sch.getLateMinute() > 0){ |
| 121 | //自动调整待发 到达时间 + 停靠时间 | 121 | //自动调整待发 到达时间 + 停靠时间 |
| 122 | - long dt = gps.getTimestamp() + (Long.parseLong(String.valueOf(sch.getLateMinute() * 60 * 1000))); | 122 | + long dt = (long) (gps.getTimestamp() + (sch.getLateMinute() * 60 * 1000)); |
| 123 | sch.setDfsjAll(dt); | 123 | sch.setDfsjAll(dt); |
| 124 | sch.setDfAuto(true); | 124 | sch.setDfAuto(true); |
| 125 | + //取消应发未到标记 | ||
| 126 | + sch.setLate2(false); | ||
| 125 | 127 | ||
| 126 | lateSchMap.remove(sch.getClZbh()); | 128 | lateSchMap.remove(sch.getClZbh()); |
| 127 | logger.info("【应发未到】车辆到站 " + sch.getClZbh() + " -" + sch.getDfsj() + " -到站时间:" + gps.getTimestamp() + " -停靠时间:" + sch.getLateMinute() + " -自动设置的待发时间:" + dt); | 129 | logger.info("【应发未到】车辆到站 " + sch.getClZbh() + " -" + sch.getDfsj() + " -到站时间:" + gps.getTimestamp() + " -停靠时间:" + sch.getLateMinute() + " -自动设置的待发时间:" + dt); |
| 128 | } | 130 | } |
| 129 | }catch (Exception e){ | 131 | }catch (Exception e){ |
| 132 | + e.printStackTrace(); | ||
| 130 | logger.error("", e); | 133 | logger.error("", e); |
| 131 | } | 134 | } |
| 132 | } | 135 | } |
src/main/java/com/bsth/data/schedule/late_adjust/ScheduleLateThread.java
| @@ -44,11 +44,14 @@ public class ScheduleLateThread extends Thread{ | @@ -44,11 +44,14 @@ public class ScheduleLateThread extends Thread{ | ||
| 44 | ScheduleRealInfo sch; | 44 | ScheduleRealInfo sch; |
| 45 | for(int i = 0; i < size; i ++){ | 45 | for(int i = 0; i < size; i ++){ |
| 46 | sch = all.get(i); | 46 | sch = all.get(i); |
| 47 | - if(sch.getDfsjT() > t || sch.isLate()) | 47 | + if(sch.getDfsjT() > t) |
| 48 | break; | 48 | break; |
| 49 | 49 | ||
| 50 | + if(sch.isLate()) | ||
| 51 | + continue; | ||
| 52 | + | ||
| 50 | if(sch.getStatus() == 0 | 53 | if(sch.getStatus() == 0 |
| 51 | - && sch.getFcsjActual() == null){ | 54 | + && StringUtils.isEmpty(sch.getFcsjActual())){ |
| 52 | 55 | ||
| 53 | //检查应发未到 当前班次无起点到达时间 | 56 | //检查应发未到 当前班次无起点到达时间 |
| 54 | if(StringUtils.isEmpty(sch.getQdzArrDateSJ())){ | 57 | if(StringUtils.isEmpty(sch.getQdzArrDateSJ())){ |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| @@ -1049,6 +1049,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | @@ -1049,6 +1049,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf | ||
| 1049 | ScheduleRealInfo next = dayOfSchedule.next(sch); | 1049 | ScheduleRealInfo next = dayOfSchedule.next(sch); |
| 1050 | if (null != next) { | 1050 | if (null != next) { |
| 1051 | next.setQdzArrDateSJ(zdsjActual); | 1051 | next.setQdzArrDateSJ(zdsjActual); |
| 1052 | + next.setLate2(false); | ||
| 1052 | ts.add(next); | 1053 | ts.add(next); |
| 1053 | } | 1054 | } |
| 1054 | 1055 |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_range_turn.html
| @@ -27,8 +27,11 @@ | @@ -27,8 +27,11 @@ | ||
| 27 | </div> | 27 | </div> |
| 28 | </div> | 28 | </div> |
| 29 | </div> | 29 | </div> |
| 30 | - <div class="uk-width-2-4" style="padding-left: 28px;"> | ||
| 31 | - <h6 style="color: #a7a5a5;margin-top: 35px;"><i class="uk-icon-question-circle"> </i> | 30 | + <div class="uk-width-2-4" style="padding: 20px 0 0 28px;"> |
| 31 | + <label> | ||
| 32 | + <input type="checkbox" id="emptyTurnCbox"> 调头后空驶回起点 | ||
| 33 | + </label> | ||
| 34 | + <h6 style="color: #a7a5a5;margin-top: 0;"><i class="uk-icon-question-circle"> </i> | ||
| 32 | 如果“调头站点”在另一个走向不存在,你需要手动选择第二个营运起点</h6> | 35 | 如果“调头站点”在另一个走向不存在,你需要手动选择第二个营运起点</h6> |
| 33 | </div> | 36 | </div> |
| 34 | </div> | 37 | </div> |
| @@ -178,7 +181,7 @@ | @@ -178,7 +181,7 @@ | ||
| 178 | </div> | 181 | </div> |
| 179 | </div> | 182 | </div> |
| 180 | <div class="uk-width-7-10 pl5"> | 183 | <div class="uk-width-7-10 pl5"> |
| 181 | - <input type="time" name="startDate" value="{{sch.dfsj}}" required disabled> | 184 | + <input type="time" name="startDate" value="{{sch.dfsj}}" required > |
| 182 | </div> | 185 | </div> |
| 183 | </div> | 186 | </div> |
| 184 | <div class="uk-grid"> | 187 | <div class="uk-grid"> |
| @@ -188,7 +191,7 @@ | @@ -188,7 +191,7 @@ | ||
| 188 | </div> | 191 | </div> |
| 189 | </div> | 192 | </div> |
| 190 | <div class="uk-width-7-10 pl5"> | 193 | <div class="uk-width-7-10 pl5"> |
| 191 | - <input type="time" name="endDate" value="{{sch.zdsj}}" required> | 194 | + <input type="time" name="endDate" value="{{sch.zdsj}}" > |
| 192 | </div> | 195 | </div> |
| 193 | </div> | 196 | </div> |
| 194 | </script> | 197 | </script> |
| @@ -295,7 +298,7 @@ | @@ -295,7 +298,7 @@ | ||
| 295 | 298 | ||
| 296 | //营运2 | 299 | //营运2 |
| 297 | nsf.html(template('range_turn_child_service-temp', nextData)); | 300 | nsf.html(template('range_turn_child_service-temp', nextData)); |
| 298 | - disabledField(nsf, 'endDate'); | 301 | + disabledField(nsf, 'startDate'); |
| 299 | //烂班1 | 302 | //烂班1 |
| 300 | cdf.html(template('range_turn_child_destroy-temp', currData)); | 303 | cdf.html(template('range_turn_child_destroy-temp', currData)); |
| 301 | disabledField(cdf, 'endStation'); | 304 | disabledField(cdf, 'endStation'); |
| @@ -585,6 +588,21 @@ | @@ -585,6 +588,21 @@ | ||
| 585 | btmDrawer.data('name', id).data('url', url).trigger('drawer_show'); | 588 | btmDrawer.data('name', id).data('url', url).trigger('drawer_show'); |
| 586 | } | 589 | } |
| 587 | } | 590 | } |
| 591 | + | ||
| 592 | + /** | ||
| 593 | + * 选择空驶调头 | ||
| 594 | + */ | ||
| 595 | + $('#emptyTurnCbox', modal).on('click', function () { | ||
| 596 | + if(this.checked){ | ||
| 597 | + //全程烂班 | ||
| 598 | + $('[name=endStation]', ndf).val(nextSch.zdzCode).attr('disabled'); | ||
| 599 | + //空驶回起点 | ||
| 600 | + | ||
| 601 | + } | ||
| 602 | + else{ | ||
| 603 | + | ||
| 604 | + } | ||
| 605 | + }); | ||
| 588 | })(); | 606 | })(); |
| 589 | </script> | 607 | </script> |
| 590 | </div> | 608 | </div> |
| 591 | \ No newline at end of file | 609 | \ No newline at end of file |
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
| @@ -100,49 +100,12 @@ var gb_schedule_table = (function () { | @@ -100,49 +100,12 @@ var gb_schedule_table = (function () { | ||
| 100 | gb_ct_table.enableSort($('.ct_table', content), reset_seq_no, gb_schedule_table_dbclick.init); | 100 | gb_ct_table.enableSort($('.ct_table', content), reset_seq_no, gb_schedule_table_dbclick.init); |
| 101 | //dbclick event | 101 | //dbclick event |
| 102 | gb_schedule_table_dbclick.init(); | 102 | gb_schedule_table_dbclick.init(); |
| 103 | - //点击实发,show detail | ||
| 104 | - fcsjActualCellQtip(); | 103 | + //双击实发 |
| 104 | + gb_schedule_table_dbclick.sfsjCellClick($('dd.fcsjActualCell')); | ||
| 105 | cb && cb(); | 105 | cb && cb(); |
| 106 | }); | 106 | }); |
| 107 | }; | 107 | }; |
| 108 | 108 | ||
| 109 | - function fcsjActualCellQtip() { | ||
| 110 | - //单击实发单元格显示详细信息 | ||
| 111 | - $(document).on('click', 'dd.fcsjActualCell', function () { | ||
| 112 | - var that = this; | ||
| 113 | - $(that).qtip({ | ||
| 114 | - show: true, | ||
| 115 | - content: { | ||
| 116 | - text: function (e) { | ||
| 117 | - var lineCode = $(that).parents('li.line_schedule').data('id') | ||
| 118 | - , id = $(that).parents('dl').data('id') | ||
| 119 | - , sch = line2Schedule[lineCode][id]; | ||
| 120 | - return temps['sfsj_sch-detail-temp'](sch); | ||
| 121 | - } | ||
| 122 | - } | ||
| 123 | - , style: { | ||
| 124 | - classes: 'qtip-dark qtip-rounded qtip-shadow' | ||
| 125 | - }, | ||
| 126 | - hide: { | ||
| 127 | - fixed: true, | ||
| 128 | - delay: 300 | ||
| 129 | - }, | ||
| 130 | - position: { | ||
| 131 | - target: that, | ||
| 132 | - my: 'center left', | ||
| 133 | - at: 'center right' | ||
| 134 | - }, | ||
| 135 | - events: { | ||
| 136 | - hidden: function (event, api) { | ||
| 137 | - $(this).qtip('destroy', true); | ||
| 138 | - } | ||
| 139 | - } | ||
| 140 | - }); | ||
| 141 | - }); | ||
| 142 | - | ||
| 143 | - //双击 | ||
| 144 | - gb_schedule_table_dbclick.sfsjCellClick($('dd.fcsjActualCell')); | ||
| 145 | - } | ||
| 146 | 109 | ||
| 147 | //重置序号 | 110 | //重置序号 |
| 148 | var reset_seq_no = function (dls) { | 111 | var reset_seq_no = function (dls) { |
| @@ -174,16 +137,21 @@ var gb_schedule_table = (function () { | @@ -174,16 +137,21 @@ var gb_schedule_table = (function () { | ||
| 174 | 137 | ||
| 175 | //新增一个班次,附带更新的班次 | 138 | //新增一个班次,附带更新的班次 |
| 176 | var insertSchedule = function (sch, upArr) { | 139 | var insertSchedule = function (sch, upArr) { |
| 140 | + var xls = {}; | ||
| 141 | + xls[sch.xlBm] = 1; | ||
| 177 | line2Schedule[sch.xlBm][sch.id] = sch; | 142 | line2Schedule[sch.xlBm][sch.id] = sch; |
| 178 | //update | 143 | //update |
| 179 | if (isArray(upArr)) { | 144 | if (isArray(upArr)) { |
| 180 | $.each(upArr, function () { | 145 | $.each(upArr, function () { |
| 181 | line2Schedule[this.xlBm][this.id] = this; | 146 | line2Schedule[this.xlBm][this.id] = this; |
| 147 | + xls[this.xlBm] = 1; | ||
| 182 | }); | 148 | }); |
| 183 | } | 149 | } |
| 184 | 150 | ||
| 185 | //重新渲染表格 | 151 | //重新渲染表格 |
| 186 | - reRenderTable(sch.xlBm); | 152 | + for(var xlBm in xls){ |
| 153 | + reRenderTable(sch.xlBm); | ||
| 154 | + } | ||
| 187 | //定位到新添加的班次 | 155 | //定位到新添加的班次 |
| 188 | scroToDl(sch); | 156 | scroToDl(sch); |
| 189 | }; | 157 | }; |
| @@ -350,6 +318,39 @@ var gb_schedule_table = (function () { | @@ -350,6 +318,39 @@ var gb_schedule_table = (function () { | ||
| 350 | markerLastSch([sch]); | 318 | markerLastSch([sch]); |
| 351 | }; | 319 | }; |
| 352 | 320 | ||
| 321 | + //单击实发单元格显示详细信息 | ||
| 322 | + $(document).on('click', 'dd.fcsjActualCell', function () { | ||
| 323 | + var that = this; | ||
| 324 | + $(that).qtip({ | ||
| 325 | + show: true, | ||
| 326 | + content: { | ||
| 327 | + text: function (e) { | ||
| 328 | + var lineCode = $(that).parents('li.line_schedule').data('id') | ||
| 329 | + , id = $(that).parents('dl').data('id') | ||
| 330 | + , sch = line2Schedule[lineCode][id]; | ||
| 331 | + return temps['sfsj_sch-detail-temp'](sch); | ||
| 332 | + } | ||
| 333 | + } | ||
| 334 | + , style: { | ||
| 335 | + classes: 'qtip-dark qtip-rounded qtip-shadow' | ||
| 336 | + }, | ||
| 337 | + hide: { | ||
| 338 | + fixed: true, | ||
| 339 | + delay: 300 | ||
| 340 | + }, | ||
| 341 | + position: { | ||
| 342 | + target: that, | ||
| 343 | + my: 'center left', | ||
| 344 | + at: 'center right' | ||
| 345 | + }, | ||
| 346 | + events: { | ||
| 347 | + hidden: function (event, api) { | ||
| 348 | + $(this).qtip('destroy', true); | ||
| 349 | + } | ||
| 350 | + } | ||
| 351 | + }); | ||
| 352 | + }); | ||
| 353 | + | ||
| 353 | //拖拽选中... | 354 | //拖拽选中... |
| 354 | var seq_nos = '.line-schedule-table .ct_table_body>dl>dd.seq_no'; | 355 | var seq_nos = '.line-schedule-table .ct_table_body>dl>dd.seq_no'; |
| 355 | var drag_strat; | 356 | var drag_strat; |
| @@ -601,6 +602,14 @@ var gb_schedule_table = (function () { | @@ -601,6 +602,14 @@ var gb_schedule_table = (function () { | ||
| 601 | return dfCell; | 602 | return dfCell; |
| 602 | }; | 603 | }; |
| 603 | 604 | ||
| 605 | + | ||
| 606 | + /** | ||
| 607 | + * 刷新页面的所有线路班次 | ||
| 608 | + */ | ||
| 609 | + var refreshAll = function () { | ||
| 610 | + show(); | ||
| 611 | + }; | ||
| 612 | + | ||
| 604 | return { | 613 | return { |
| 605 | show: show, | 614 | show: show, |
| 606 | findScheduleByLine: findScheduleByLine, | 615 | findScheduleByLine: findScheduleByLine, |
| @@ -620,6 +629,7 @@ var gb_schedule_table = (function () { | @@ -620,6 +629,7 @@ var gb_schedule_table = (function () { | ||
| 620 | addRemarks: addRemarks, | 629 | addRemarks: addRemarks, |
| 621 | reLoadAndRefresh: reLoadAndRefresh, | 630 | reLoadAndRefresh: reLoadAndRefresh, |
| 622 | showLateBadge: showLateBadge, | 631 | showLateBadge: showLateBadge, |
| 623 | - cancelLateBadge: cancelLateBadge | 632 | + cancelLateBadge: cancelLateBadge, |
| 633 | + refreshAll: refreshAll | ||
| 624 | }; | 634 | }; |
| 625 | })(); | 635 | })(); |
src/main/resources/static/real_control_v2/js/line_schedule/search.js
| @@ -78,6 +78,8 @@ var gb_sch_search = (function() { | @@ -78,6 +78,8 @@ var gb_sch_search = (function() { | ||
| 78 | //uikit 会记住上一次搜索值,触发keyup以清空该值 | 78 | //uikit 会记住上一次搜索值,触发keyup以清空该值 |
| 79 | $('.sch-search-autocom input', cont).val('').trigger('keyup').parent().removeClass('active'); | 79 | $('.sch-search-autocom input', cont).val('').trigger('keyup').parent().removeClass('active'); |
| 80 | $('.line-schedule-table .ct_table_body dl._search_hide', cont).removeClass('_search_hide'); | 80 | $('.line-schedule-table .ct_table_body dl._search_hide', cont).removeClass('_search_hide'); |
| 81 | + //更新滚动条高度 | ||
| 82 | + $('.ct_table_wrap', cont).perfectScrollbar('update'); | ||
| 81 | } | 83 | } |
| 82 | 84 | ||
| 83 | function execSch(gps) { | 85 | function execSch(gps) { |
| @@ -109,6 +111,9 @@ var gb_sch_search = (function() { | @@ -109,6 +111,9 @@ var gb_sch_search = (function() { | ||
| 109 | if (car != $(dds[2]).data('nbbm')) | 111 | if (car != $(dds[2]).data('nbbm')) |
| 110 | $(this).addClass('_search_hide'); | 112 | $(this).addClass('_search_hide'); |
| 111 | }); | 113 | }); |
| 114 | + | ||
| 115 | + //滚动条置顶 | ||
| 116 | + $(tbody).parents('.ct_table_wrap')[0].scrollTop = 0; | ||
| 112 | } | 117 | } |
| 113 | 118 | ||
| 114 | return { | 119 | return { |
src/main/resources/static/real_control_v2/js/websocket/sch_websocket.js
| @@ -13,6 +13,10 @@ var gb_sch_websocket = (function () { | @@ -13,6 +13,10 @@ var gb_sch_websocket = (function () { | ||
| 13 | var new_conn = function () { | 13 | var new_conn = function () { |
| 14 | schSock = new SockJS('/sockjs/realcontrol'); | 14 | schSock = new SockJS('/sockjs/realcontrol'); |
| 15 | schSock.onopen = function (e) { | 15 | schSock.onopen = function (e) { |
| 16 | + if(reConnCount && reConnCount > 1){ | ||
| 17 | + gb_schedule_table.refreshAll(); | ||
| 18 | + console.log('重新连接,刷新班次'); | ||
| 19 | + } | ||
| 16 | reConnCount = 1; | 20 | reConnCount = 1; |
| 17 | clearInterval(recInterval); | 21 | clearInterval(recInterval); |
| 18 | console.log('webSocket[realcontrol] onopen'); | 22 | console.log('webSocket[realcontrol] onopen'); |
| @@ -101,6 +105,7 @@ var gb_sch_websocket = (function () { | @@ -101,6 +105,7 @@ var gb_sch_websocket = (function () { | ||
| 101 | * @param msg | 105 | * @param msg |
| 102 | */ | 106 | */ |
| 103 | var autoWdtz = function (msg) { | 107 | var autoWdtz = function (msg) { |
| 108 | + debugger | ||
| 104 | var schId = msg.id; | 109 | var schId = msg.id; |
| 105 | var minute = msg.minute; | 110 | var minute = msg.minute; |
| 106 | var lineCode = msg.lineCode; | 111 | var lineCode = msg.lineCode; |
src/main/resources/static/real_control_v2/mapmonitor/fragments/playback_v2/main.html
| @@ -169,7 +169,14 @@ | @@ -169,7 +169,14 @@ | ||
| 169 | <input type="checkbox" name="stationName"> 站点名称 | 169 | <input type="checkbox" name="stationName"> 站点名称 |
| 170 | </label> | 170 | </label> |
| 171 | <label> | 171 | <label> |
| 172 | - <a>停车场 <i class="uk-icon-angle-down"></i></a> | 172 | + <div class="uk-button-dropdown" data-uk-dropdown> |
| 173 | + <a>停车场 <i class="uk-icon-angle-down"></i></a> | ||
| 174 | + <div class="uk-dropdown uk-dropdown-scrollable" style="max-height: 300px;"> | ||
| 175 | + <ul class="uk-nav uk-nav-dropdown parks_list"> | ||
| 176 | + | ||
| 177 | + </ul> | ||
| 178 | + </div> | ||
| 179 | + </div> | ||
| 173 | </label> | 180 | </label> |
| 174 | </form> | 181 | </form> |
| 175 | </div> | 182 | </div> |
| @@ -249,6 +256,15 @@ | @@ -249,6 +256,15 @@ | ||
| 249 | </dl> | 256 | </dl> |
| 250 | {{/each}} | 257 | {{/each}} |
| 251 | </script> | 258 | </script> |
| 259 | + | ||
| 260 | + <script id="pb_park_list_dropdown-temp" type="text/html"> | ||
| 261 | + {{each list as p i}} | ||
| 262 | + <li data-code="{{p.parkCode}}" ><a>{{p.parkName}}</a></li> | ||
| 263 | + {{if i == 0}} | ||
| 264 | + <li class="uk-nav-divider"></li> | ||
| 265 | + {{/if}} | ||
| 266 | + {{/each}} | ||
| 267 | + </script> | ||
| 252 | <script> | 268 | <script> |
| 253 | (function () { | 269 | (function () { |
| 254 | var modal = '#map-playback2-modal', gpsArray; | 270 | var modal = '#map-playback2-modal', gpsArray; |
| @@ -713,6 +729,8 @@ | @@ -713,6 +729,8 @@ | ||
| 713 | var routes;//路段 | 729 | var routes;//路段 |
| 714 | var stations;//站点 | 730 | var stations;//站点 |
| 715 | var parks;//停车场 | 731 | var parks;//停车场 |
| 732 | + //停车场编码和Polygon对照 | ||
| 733 | + var parkPolygons={}; | ||
| 716 | 734 | ||
| 717 | var initData = function (rs) { | 735 | var initData = function (rs) { |
| 718 | var gpsArray = rs.list; | 736 | var gpsArray = rs.list; |
| @@ -721,13 +739,70 @@ | @@ -721,13 +739,70 @@ | ||
| 721 | var lineCode = gpsArray[0].lineId; | 739 | var lineCode = gpsArray[0].lineId; |
| 722 | //从地图模块获取站点数据 | 740 | //从地图模块获取站点数据 |
| 723 | stations = gb_map_spatial_data.getStationArray(lineCode); | 741 | stations = gb_map_spatial_data.getStationArray(lineCode); |
| 724 | - //从地图模块获取停车场数据 | ||
| 725 | - parks = gb_map_spatial_data.carparkArray(); | 742 | + //停车场下拉菜单 |
| 743 | + initDropdownList(lineCode); | ||
| 744 | + | ||
| 726 | //从localStorage 获取路段 | 745 | //从localStorage 获取路段 |
| 727 | routes = JSON.parse(storage.getItem(lineCode + '_route')); | 746 | routes = JSON.parse(storage.getItem(lineCode + '_route')); |
| 728 | routes = [routes.up_bd, routes.down_bd]; | 747 | routes = [routes.up_bd, routes.down_bd]; |
| 729 | }; | 748 | }; |
| 730 | 749 | ||
| 750 | + /** | ||
| 751 | + * 初始化停车场下拉菜单 | ||
| 752 | + */ | ||
| 753 | + var initDropdownList = function (lineCode) { | ||
| 754 | + //从地图模块获取停车场数据 | ||
| 755 | + parks = gb_map_spatial_data.carparkArray(); | ||
| 756 | + console.log('parksparks', parks); | ||
| 757 | + //将线路标准停车场排在第一个 | ||
| 758 | + var information = gb_data_basic.getLineInformation(lineCode); | ||
| 759 | + var index; | ||
| 760 | + for(var i = 0,p; p=parks[i++];){ | ||
| 761 | + if(p.parkCode == information.carPark){ | ||
| 762 | + index = i - 1; | ||
| 763 | + break; | ||
| 764 | + } | ||
| 765 | + } | ||
| 766 | + parks[index] = parks.splice(0, 1 , parks[index])[0]; | ||
| 767 | + //渲染 | ||
| 768 | + var htmlStr = template('pb_park_list_dropdown-temp', {list: parks}); | ||
| 769 | + $('.buffer_area_form .parks_list', modal).html(htmlStr); | ||
| 770 | + | ||
| 771 | + //停车场点击 | ||
| 772 | + $('.buffer_area_form .parks_list>li', modal).on('click', function () { | ||
| 773 | + var code = $(this).data('code'); | ||
| 774 | + | ||
| 775 | + if(!parkPolygons[code]){ | ||
| 776 | + var park; | ||
| 777 | + $.each(parks, function () { | ||
| 778 | + if(this.parkCode==code){park = this;return false;} | ||
| 779 | + }); | ||
| 780 | + | ||
| 781 | + transMultiWGSToBd(park); | ||
| 782 | + var polygon = new BMap.Polygon(park.bdPoints, {strokeColor: 'red', strokeWeight: 1}); | ||
| 783 | + map.addOverlay(polygon); | ||
| 784 | + parkPolygons[code] = polygon; | ||
| 785 | + //中心点 | ||
| 786 | + var ts = park.gCenterPoint.split(' ') | ||
| 787 | + ,coord = TransGPS.wgsToBD(parseFloat(ts[1]), parseFloat(ts[0])); | ||
| 788 | + polygon._centerPoint = new BMap.Point(coord.lng, coord.lat); | ||
| 789 | + //绘制名称label | ||
| 790 | + var style = {backgroundColor: "rgba(255, 255, 255, 0.69)",color : "red", borderColor: "red", fontSize : "12px", height : "16px", lineHeight : "16px", fontFamily:"微软雅黑"} | ||
| 791 | + var width = park.parkName.length * 12; | ||
| 792 | + var label = new BMap.Label(park.parkName, { | ||
| 793 | + position:polygon._centerPoint, | ||
| 794 | + offset: new BMap.Size(-(width / 2), -27) | ||
| 795 | + }); | ||
| 796 | + label.setStyle(style); | ||
| 797 | + map.addOverlay(label); | ||
| 798 | + } | ||
| 799 | + | ||
| 800 | + //定位到polygon | ||
| 801 | + var polygon=parkPolygons[code]; | ||
| 802 | + map.panTo(polygon._centerPoint); | ||
| 803 | + }); | ||
| 804 | + }; | ||
| 805 | + | ||
| 731 | 806 | ||
| 732 | /** | 807 | /** |
| 733 | * 更新车辆位置 | 808 | * 更新车辆位置 |
| @@ -866,8 +941,10 @@ | @@ -866,8 +941,10 @@ | ||
| 866 | map.addOverlay(circle); | 941 | map.addOverlay(circle); |
| 867 | }; | 942 | }; |
| 868 | 943 | ||
| 869 | - var drawPolygon = function () { | ||
| 870 | - | 944 | + var drawPolygon = function (station) { |
| 945 | + transMultiWGSToBd(station); | ||
| 946 | + var polygon = new BMap.Polygon(station.bdPoints, {strokeColor: '#000000', strokeWeight: 1}); | ||
| 947 | + map.addOverlay(polygon); | ||
| 871 | }; | 948 | }; |
| 872 | 949 | ||
| 873 | /** | 950 | /** |
| @@ -883,6 +960,7 @@ | @@ -883,6 +960,7 @@ | ||
| 883 | trailArray=[]; | 960 | trailArray=[]; |
| 884 | trailPolyline = null; | 961 | trailPolyline = null; |
| 885 | gpsMarker = null; | 962 | gpsMarker = null; |
| 963 | + parkPolygons = {}; | ||
| 886 | }; | 964 | }; |
| 887 | 965 | ||
| 888 | /** | 966 | /** |
| @@ -1012,6 +1090,18 @@ | @@ -1012,6 +1090,18 @@ | ||
| 1012 | reset: reset | 1090 | reset: reset |
| 1013 | } | 1091 | } |
| 1014 | })(); | 1092 | })(); |
| 1093 | + | ||
| 1094 | + function transMultiWGSToBd(obj) { | ||
| 1095 | + if(!obj._gPoints) | ||
| 1096 | + return; | ||
| 1097 | + var bdPoints = [],coord; | ||
| 1098 | + $.each(obj._gPoints, function () { | ||
| 1099 | + coord = TransGPS.wgsToBD(this.lat, this.lng); | ||
| 1100 | + bdPoints.push(new BMap.Point(coord.lng, coord.lat)); | ||
| 1101 | + }); | ||
| 1102 | + | ||
| 1103 | + obj.bdPoints=bdPoints; | ||
| 1104 | + } | ||
| 1015 | })(); | 1105 | })(); |
| 1016 | </script> | 1106 | </script> |
| 1017 | </div> | 1107 | </div> |
| 1018 | \ No newline at end of file | 1108 | \ No newline at end of file |