Commit dbb8dd28dfaab8a6741829d94b0722b8b7d84886
1 parent
8912e3af
update
Showing
15 changed files
with
202 additions
and
77 deletions
src/main/java/com/bsth/StartCommand.java
| 1 | 1 | package com.bsth; |
| 2 | 2 | |
| 3 | 3 | |
| 4 | +import com.bsth.entity.Cars; | |
| 5 | +import com.bsth.entity.Line; | |
| 6 | +import com.bsth.entity.schedule.CarConfigInfo; | |
| 7 | +import com.bsth.repository.schedule.CarConfigInfoRepository; | |
| 4 | 8 | import com.bsth.security.SecurityMetadataSourceService; |
| 5 | 9 | import com.bsth.service.realcontrol.buffer.GetSchedulePlanThread; |
| 6 | 10 | import com.bsth.service.realcontrol.buffer.SchedulePersistenceThread; |
| 7 | 11 | import com.bsth.util.DateUtils; |
| 8 | 12 | import com.bsth.vehicle.common.CommonRefreshThread; |
| 13 | +import com.bsth.vehicle.directive.service.DirectiveService; | |
| 9 | 14 | import com.bsth.vehicle.directive.thread.DirectivePersistenceThread; |
| 10 | 15 | import com.bsth.vehicle.directive.thread.FirstScheduleIssuedThread; |
| 11 | 16 | import com.bsth.vehicle.gpsdata.GpsArrivalStationThread; |
| ... | ... | @@ -16,6 +21,9 @@ import org.springframework.beans.factory.annotation.Autowired; |
| 16 | 21 | import org.springframework.boot.CommandLineRunner; |
| 17 | 22 | import org.springframework.stereotype.Component; |
| 18 | 23 | |
| 24 | +import java.util.List; | |
| 25 | +import java.util.Timer; | |
| 26 | +import java.util.TimerTask; | |
| 19 | 27 | import java.util.concurrent.Executors; |
| 20 | 28 | import java.util.concurrent.ScheduledExecutorService; |
| 21 | 29 | import java.util.concurrent.TimeUnit; |
| ... | ... | @@ -50,6 +58,11 @@ public class StartCommand implements CommandLineRunner{ |
| 50 | 58 | @Autowired |
| 51 | 59 | FirstScheduleIssuedThread firstScheduleIssuedThread; |
| 52 | 60 | |
| 61 | + @Autowired | |
| 62 | + DirectiveService directiveService; | |
| 63 | + @Autowired | |
| 64 | + CarConfigInfoRepository carConfigInfoRepository; | |
| 65 | + | |
| 53 | 66 | static Long hourTime = 1000 * 60 * 60L; |
| 54 | 67 | |
| 55 | 68 | @Override |
| ... | ... | @@ -104,6 +117,30 @@ public class StartCommand implements CommandLineRunner{ |
| 104 | 117 | */ |
| 105 | 118 | scheduler.scheduleWithFixedDelay(firstScheduleIssuedThread, 60 , 60 * 2, TimeUnit.SECONDS); |
| 106 | 119 | |
| 120 | + | |
| 121 | +/* //延迟一会 | |
| 122 | + new Timer().schedule(new TimerTask() { | |
| 123 | + | |
| 124 | + @Override | |
| 125 | + public void run() { | |
| 126 | + //临时全量刷车辆线路 | |
| 127 | + List<CarConfigInfo> ccis = carConfigInfoRepository.findAll(); | |
| 128 | + Cars car; | |
| 129 | + Line line; | |
| 130 | + String lineCode; | |
| 131 | + int code; | |
| 132 | + for(CarConfigInfo cci : ccis){ | |
| 133 | + car = cci.getCl(); | |
| 134 | + line = cci.getXl(); | |
| 135 | + lineCode = line.getLineCode(); | |
| 136 | + System.out.println("车辆:" + car.getInsideCode() + "切换线路:" + line.getLineCode()); | |
| 137 | + code = directiveService.lineChange(car.getInsideCode(), Integer.parseInt(lineCode)); | |
| 138 | + //directiveService.send60Phrase(car.getInsideCode(), ""); | |
| 139 | + System.out.println("返回值:" + code); | |
| 140 | + } | |
| 141 | + } | |
| 142 | + }, 1000 * 10);*/ | |
| 143 | + | |
| 107 | 144 | } catch (Exception e) { |
| 108 | 145 | e.printStackTrace(); |
| 109 | 146 | } | ... | ... |
src/main/java/com/bsth/entity/realcontrol/ScheduleRealInfo.java
| ... | ... | @@ -4,6 +4,8 @@ import com.bsth.entity.sys.SysUser; |
| 4 | 4 | |
| 5 | 5 | import javax.persistence.*; |
| 6 | 6 | |
| 7 | +import org.apache.commons.lang3.StringUtils; | |
| 8 | + | |
| 7 | 9 | import java.text.ParseException; |
| 8 | 10 | import java.text.SimpleDateFormat; |
| 9 | 11 | import java.util.Date; |
| ... | ... | @@ -153,11 +155,15 @@ public class ScheduleRealInfo { |
| 153 | 155 | private String qdzArrDatesj; |
| 154 | 156 | |
| 155 | 157 | public void addRemarks(String remark){ |
| 156 | - String newRem = this.getRemarks(); | |
| 157 | - if(null == newRem || newRem.trim() == "") | |
| 158 | + if(StringUtils.isBlank(remark)) | |
| 158 | 159 | return; |
| 159 | - newRem += remark + ";"; | |
| 160 | - this.setRemarks(newRem); | |
| 160 | + String old = this.getRemarks(); | |
| 161 | + if(StringUtils.isBlank(old)) | |
| 162 | + old = ""; | |
| 163 | + | |
| 164 | + old += remark + ";"; | |
| 165 | + this.setRemarks(old); | |
| 166 | + | |
| 161 | 167 | } |
| 162 | 168 | |
| 163 | 169 | public Long getId() { |
| ... | ... | @@ -661,4 +667,27 @@ public class ScheduleRealInfo { |
| 661 | 667 | public void setRealExecDate(String realExecDate) { |
| 662 | 668 | this.realExecDate = realExecDate; |
| 663 | 669 | } |
| 670 | + | |
| 671 | + public void calcStatus() { | |
| 672 | + if(this.status == -1) | |
| 673 | + return; | |
| 674 | + | |
| 675 | + this.status = 0; | |
| 676 | + if(StringUtils.isNotBlank(this.fcsjActual)) | |
| 677 | + this.status = 1; | |
| 678 | + if(StringUtils.isNotBlank(this.zdsjActual)) | |
| 679 | + this.status = 2; | |
| 680 | + } | |
| 681 | + | |
| 682 | + public void destroy(){ | |
| 683 | + this.status = -1; | |
| 684 | + } | |
| 685 | + | |
| 686 | + public boolean isDestroy(){ | |
| 687 | + return this.status == -1; | |
| 688 | + } | |
| 689 | + | |
| 690 | + public boolean isNotDestroy(){ | |
| 691 | + return this.status != -1; | |
| 692 | + } | |
| 664 | 693 | } | ... | ... |
src/main/java/com/bsth/service/realcontrol/buffer/GetSchedulePlanThread.java
src/main/java/com/bsth/service/realcontrol/buffer/ScheduleBuffer.java
| ... | ... | @@ -204,9 +204,9 @@ public class ScheduleBuffer { |
| 204 | 204 | |
| 205 | 205 | //重新排序 |
| 206 | 206 | Collections.sort(schedulListMap.get(sch.getXlBm()), scheduleComparator); |
| 207 | + //Collections.sort(vehSchListMap.get(zbh), scheduleComparator); | |
| 207 | 208 | |
| 208 | 209 | //重新计算应到时间 |
| 209 | - //calcArrDateQd(vehLinkedMap.get(zbh)); | |
| 210 | 210 | calcArrDateQd(vehSchListMap.get(zbh)); |
| 211 | 211 | return 0; |
| 212 | 212 | } | ... | ... |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| 1 | 1 | package com.bsth.service.realcontrol.impl; |
| 2 | 2 | |
| 3 | -import java.io.File; | |
| 4 | 3 | import java.text.DecimalFormat; |
| 5 | 4 | import java.text.ParseException; |
| 6 | 5 | import java.text.SimpleDateFormat; |
| ... | ... | @@ -101,7 +100,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 101 | 100 | ScheduleRealInfo schedule = ScheduleBuffer.pkSchedulMap.get(id); |
| 102 | 101 | schedule.setDfsjT(sdfMinute.parse(schedule.getRealExecDate() + " " + dfsj).getTime()); |
| 103 | 102 | schedule.setDfsj(dfsj); |
| 104 | - schedule.addRemarks(remarks + ";"); | |
| 103 | + schedule.addRemarks(remarks); | |
| 105 | 104 | schedule.setClZbh(nbbm); |
| 106 | 105 | if(jsy != null && jsy.indexOf("/") != -1){ |
| 107 | 106 | String[] jsyArray = jsy.split("/"); |
| ... | ... | @@ -139,16 +138,15 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 139 | 138 | ScheduleRealInfo schedule = null; |
| 140 | 139 | for (String id : idList) { |
| 141 | 140 | schedule = ScheduleBuffer.pkSchedulMap.get(Long.parseLong(id)); |
| 142 | - /*if(schedule.getStatus() == -1){ | |
| 141 | + if(schedule.isDestroy()){ | |
| 143 | 142 | map.put("status", ResponseCode.ERROR); |
| 144 | - map.put("msg", value) | |
| 145 | - }*/ | |
| 146 | - if (null != schedule) { | |
| 147 | - schedule.setStatus(-1); | |
| 148 | - schedule.addRemarks(remarks); | |
| 149 | - | |
| 150 | - rsList.add(schedule); | |
| 143 | + map.put("msg", "不必要的重复烂班!"); | |
| 144 | + return map; | |
| 151 | 145 | } |
| 146 | + | |
| 147 | + schedule.destroy(); | |
| 148 | + schedule.addRemarks(remarks); | |
| 149 | + rsList.add(schedule); | |
| 152 | 150 | } |
| 153 | 151 | |
| 154 | 152 | // 调整间隔 |
| ... | ... | @@ -276,8 +274,10 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 276 | 274 | @Override |
| 277 | 275 | public Map<String, Object> save(ScheduleRealInfo t) { |
| 278 | 276 | SysUser user = SecurityUtils.getCurrentUser(); |
| 279 | - | |
| 280 | - t.setScheduleDate(new Date()); | |
| 277 | + Date d = new Date(); | |
| 278 | + | |
| 279 | + t.setScheduleDate(d); | |
| 280 | + t.setRealExecDate(sdfMonth.format(d)); | |
| 281 | 281 | t.setCreateBy(user); |
| 282 | 282 | t.syncTime(); |
| 283 | 283 | t.setSflj(true); |
| ... | ... | @@ -465,9 +465,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 465 | 465 | Map<String, Object> rs = new HashMap<>(); |
| 466 | 466 | try { |
| 467 | 467 | ScheduleRealInfo sch = ScheduleBuffer.findOne(id); |
| 468 | - String rq = sdfMonth.format(sch.getRealExecDate()); | |
| 469 | 468 | |
| 470 | - sch.setFcsjActualTime(sdfMinute.parse(rq + " " + fcsjActual).getTime()); | |
| 469 | + sch.setFcsjActualTime(sdfMinute.parse(sch.getRealExecDate() + " " + fcsjActual).getTime()); | |
| 471 | 470 | sch.setFcsjActual(fcsjActual); |
| 472 | 471 | sch.addRemarks(remarks); |
| 473 | 472 | //改变状态 |
| ... | ... | @@ -614,33 +613,43 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 614 | 613 | sch.setBcType(bcType); |
| 615 | 614 | sch.setClZbh(clZbh); |
| 616 | 615 | sch.setFcsjAll(fcsj); |
| 616 | + | |
| 617 | 617 | if(StringUtils.isNotBlank(fcsjActual)){ |
| 618 | 618 | //调整实发 |
| 619 | - sch.setFcsjActualAll(fcsjActual); | |
| 620 | - sch.setStatus(1); | |
| 619 | + if(!fcsjActual.equals(sch.getFcsjActual())) | |
| 620 | + sch.setFcsjActualAll(fcsjActual); | |
| 621 | 621 | } |
| 622 | 622 | else{ |
| 623 | 623 | sch.setFcsjActual(null); |
| 624 | 624 | sch.setFcsjActualTime(null); |
| 625 | 625 | } |
| 626 | 626 | |
| 627 | + //实达时间 | |
| 627 | 628 | if(StringUtils.isNotBlank(zdsjActual)){ |
| 628 | - //调整实达 | |
| 629 | - sch.setZdsjActualAll(zdsjActual); | |
| 630 | - sch.setStatus(2); | |
| 631 | - //下一班次起点到达 | |
| 632 | - ScheduleRealInfo next = ScheduleBuffer.getNext(sch); | |
| 633 | - next.setQdzArrDateSJ(zdsjActual); | |
| 634 | - rs.put("nextSch", next); | |
| 629 | + if(!zdsjActual.equals(sch.getZdsjActual())){ | |
| 630 | + //调整实达 | |
| 631 | + sch.setZdsjActualAll(zdsjActual); | |
| 632 | + //下一班次起点到达时间 | |
| 633 | + ScheduleRealInfo next = ScheduleBuffer.getNext(sch); | |
| 634 | + next.setQdzArrDateSJ(zdsjActual); | |
| 635 | + rs.put("nextSch", next); | |
| 636 | + } | |
| 635 | 637 | } |
| 636 | - else{ | |
| 638 | + else /*if(StringUtils.isNotBlank(sch.getZdsjActual()))*/{ | |
| 639 | + //清除实达时间 | |
| 637 | 640 | sch.setZdsjActual(null); |
| 638 | 641 | sch.setZdsjActualTime(null); |
| 642 | + //清除下一班次起点到达时间 | |
| 643 | + ScheduleRealInfo next = ScheduleBuffer.getNext(sch); | |
| 644 | + next.setQdzArrDateSJ(null); | |
| 645 | + rs.put("nextSch", next); | |
| 639 | 646 | } |
| 640 | 647 | |
| 641 | 648 | sch.setRemarks(remarks); |
| 642 | 649 | } |
| 643 | 650 | |
| 651 | + //班次状态 | |
| 652 | + sch.calcStatus(); | |
| 644 | 653 | ScheduleBuffer.persistentList.add(sch); |
| 645 | 654 | |
| 646 | 655 | rs.put("status", ResponseCode.SUCCESS); | ... | ... |
src/main/java/com/bsth/vehicle/directive/service/DirectiveServiceImpl.java
| ... | ... | @@ -85,7 +85,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl<Directive60, Integer> |
| 85 | 85 | try { |
| 86 | 86 | //如果发车时间距当前时间较远,则不发送 |
| 87 | 87 | if(Math.abs(sch.getFcsjT() - System.currentTimeMillis()) > schDiff){ |
| 88 | - return 0; | |
| 88 | + return -2; | |
| 89 | 89 | } |
| 90 | 90 | |
| 91 | 91 | String text = "已完成" + finish + "个班次,下一发车时间" + sdfHHmm.format(new Date(sch.getFcsjT())) | ... | ... |
src/main/resources/static/pages/control/line/child_pages/vehicAndper_adjust.html renamed to src/main/resources/static/pages/control/line/child_pages/car_and_persion.html
| ... | ... | @@ -253,7 +253,7 @@ |
| 253 | 253 | syncSubmit(idArray, params ,function(){ |
| 254 | 254 | layer.closeAll(); |
| 255 | 255 | layer.msg('操作完成!'); |
| 256 | - //刷新表格 | |
| 256 | + //刷新弹出层表格 | |
| 257 | 257 | refreshMainList(); |
| 258 | 258 | }); |
| 259 | 259 | }); |
| ... | ... | @@ -274,7 +274,7 @@ |
| 274 | 274 | $.post('/realSchedule/adjust', data, function(rs){ |
| 275 | 275 | //更新前端缓存 |
| 276 | 276 | if(rs.status == 200){ |
| 277 | - _data.updateSchedule(rs.t); | |
| 277 | + _alone.refreshSchedule(rs.t); | |
| 278 | 278 | } |
| 279 | 279 | |
| 280 | 280 | i ++; | ... | ... |
src/main/resources/static/pages/control/line/child_pages/outgo_adjust_all.html renamed to src/main/resources/static/pages/control/line/child_pages/dfsj_batch.html
src/main/resources/static/pages/control/line/index.html
| ... | ... | @@ -136,14 +136,15 @@ |
| 136 | 136 | <li class="menu-separator"></li> |
| 137 | 137 | <li class="menu-item" > |
| 138 | 138 | <button type="button" class="menu-btn" data-multi=1 data-method="spaceAdjust"> |
| 139 | - <span class="menu-text">间隔调整</span> | |
| 139 | + <span class="menu-text">待发间隔调整</span> | |
| 140 | 140 | </button> |
| 141 | 141 | </li> |
| 142 | - <li class="menu-item disabled" > | |
| 142 | + <!-- <li class="menu-item disabled" > | |
| 143 | 143 | <button type="button" class="menu-btn"> |
| 144 | 144 | <span class="menu-text">误点调整</span> |
| 145 | 145 | </button> |
| 146 | - </li> | |
| 146 | + </li> --> | |
| 147 | + <li class="menu-separator"></li> | |
| 147 | 148 | <li class="menu-item" > |
| 148 | 149 | <button type="button" class="menu-btn" data-method="schInfoFineTune"> |
| 149 | 150 | <span class="menu-text">发车信息微调</span> |
| ... | ... | @@ -156,13 +157,12 @@ |
| 156 | 157 | <span class="menu-text">临加/子任务</span> |
| 157 | 158 | </button> |
| 158 | 159 | </li> |
| 159 | - <li class="menu-separator"></li> | |
| 160 | - <li class="menu-item disabled" > | |
| 160 | +<!-- <li class="menu-item disabled" > | |
| 161 | 161 | <button type="button" class="menu-btn"> |
| 162 | 162 | <i class="fa fa-reply-all"></i> |
| 163 | 163 | <span class="menu-text">撤销执行</span> |
| 164 | 164 | </button> |
| 165 | - </li> | |
| 165 | + </li> --> | |
| 166 | 166 | <li class="menu-separator"></li> |
| 167 | 167 | <li class="menu-item" > |
| 168 | 168 | <button type="button" class="menu-btn" data-method="vehicAndPerAdjust"> | ... | ... |
src/main/resources/static/pages/control/line/js/alone.js
| ... | ... | @@ -49,7 +49,7 @@ var _alone = (function(){ |
| 49 | 49 | }); |
| 50 | 50 | }, |
| 51 | 51 | //刷新单个班次 |
| 52 | - refreshSchedule: function(schedule){ | |
| 52 | + refreshSchedule: function(schedule, isBatch){ | |
| 53 | 53 | //更新 _data |
| 54 | 54 | _data.updateSchedule(schedule); |
| 55 | 55 | var tab = '#tab_line_' + schedule.xlBm; |
| ... | ... | @@ -62,16 +62,20 @@ var _alone = (function(){ |
| 62 | 62 | |
| 63 | 63 | var type = schedule.xlDir==0?'up':'down'; |
| 64 | 64 | calculateLineNo($('.pb-table[data-type='+type+']', tab)[0]); |
| 65 | + | |
| 66 | + if(!isBatch) | |
| 67 | + goToSch(schedule); | |
| 65 | 68 | }, |
| 66 | 69 | //刷新多个班次,刷新完数据再统一计算行号 |
| 67 | 70 | refreshScheduleArray: function(array){ |
| 68 | 71 | if(!array || array.length == 0) |
| 69 | 72 | return; |
| 70 | 73 | $.each(array, function(){ |
| 71 | - aloneObject.refreshSchedule(this); | |
| 74 | + aloneObject.refreshSchedule(this, 1); | |
| 72 | 75 | }); |
| 73 | 76 | var table = $('tr[data-id='+array[0].id+']').parents('table')[0]; |
| 74 | 77 | calculateLineNo(table); |
| 78 | + initRemarksPop(); | |
| 75 | 79 | }, |
| 76 | 80 | //将班次所在的表格做全量更新 |
| 77 | 81 | updateTableBySch: function(schedule){ |
| ... | ... | @@ -83,24 +87,24 @@ var _alone = (function(){ |
| 83 | 87 | _data.pushSchedule(this); |
| 84 | 88 | }); |
| 85 | 89 | |
| 86 | - var upDown = xlDir==0?'up':'down'; | |
| 90 | + /*var upDown = xlDir==0?'up':'down'; | |
| 87 | 91 | var tab = $('#tab_line_' + xlBm); |
| 88 | 92 | //重新渲染表格 |
| 89 | - var table = tab.find('.pb-table[data-type='+upDown+']'); | |
| 93 | + var table = tab.find('.pb-table[data-type='+upDown+']');*/ | |
| 94 | + var table = getTableBySch(sch); | |
| 90 | 95 | var schArray = _data.findSchByLine(xlBm, xlDir); |
| 91 | 96 | calculateLineNo( |
| 92 | 97 | table.find('tbody').html(template('alone_plan_table_temp', {list: schArray}))[0] |
| 93 | 98 | ); |
| 94 | 99 | |
| 95 | - var half = tab.find('._body').height() / 2; | |
| 96 | - | |
| 97 | 100 | //定位到新添加的班次 |
| 98 | - var currTr = table.find('tr[data-id='+schedule.id+']') | |
| 101 | + goToSch(schedule); | |
| 102 | + /*var currTr = table.find('tr[data-id='+schedule.id+']') | |
| 99 | 103 | ,top = parseInt(currTr.find('td[name=lineNo]').text()) * 37 - half; |
| 100 | 104 | |
| 101 | 105 | top = top>0?top:0; |
| 102 | 106 | currTr.addClass('anim-delay animated flash'); |
| 103 | - currTr.parents('._body').slimScroll({ scrollTo: top + 'px' }); | |
| 107 | + currTr.parents('._body').slimScroll({ scrollTo: top + 'px' });*/ | |
| 104 | 108 | }); |
| 105 | 109 | }, |
| 106 | 110 | update2Table: function(xlBm, schedule){ |
| ... | ... | @@ -113,7 +117,7 @@ var _alone = (function(){ |
| 113 | 117 | |
| 114 | 118 | var rs = splitDir(array) |
| 115 | 119 | ,tab = $('#tab_line_' + xlBm) |
| 116 | - ,half = tab.find('._body').height() / 2; | |
| 120 | + /*,half = tab.find('._body').height() / 2*/; | |
| 117 | 121 | //填充表格数据 |
| 118 | 122 | calculateLineNo( |
| 119 | 123 | //上行 |
| ... | ... | @@ -123,19 +127,40 @@ var _alone = (function(){ |
| 123 | 127 | //下行 |
| 124 | 128 | tab.find('table[data-type=down] tbody').html(template('alone_plan_table_temp', {list: rs.down}))[0] |
| 125 | 129 | ); |
| 130 | + | |
| 126 | 131 | //定位到指定的班次 |
| 127 | - var currTr = tab.find('tr[data-id='+schedule.id+']') | |
| 132 | + goToSch(schedule); | |
| 133 | + /*var currTr = tab.find('tr[data-id='+schedule.id+']') | |
| 128 | 134 | ,top = parseInt(currTr.find('td[name=lineNo]').text()) * 37 - half; |
| 129 | 135 | |
| 130 | 136 | top = top>0?top:0; |
| 131 | 137 | currTr.addClass('anim-delay animated flash'); |
| 132 | - currTr.parents('._body').slimScroll({ scrollTo: top + 'px' }); | |
| 138 | + currTr.parents('._body').slimScroll({ scrollTo: top + 'px' });*/ | |
| 133 | 139 | }); |
| 134 | 140 | }, |
| 135 | 141 | //重新计算行号 |
| 136 | 142 | calculateLineNo: calculateLineNo |
| 137 | 143 | } |
| 138 | 144 | |
| 145 | + //获取班次所在table | |
| 146 | + function getTableBySch(sch){ | |
| 147 | + var upDown = sch.xlDir==0?'up':'down'; | |
| 148 | + var tab = $('#tab_line_' + sch.xlBm); | |
| 149 | + return tab.find('.pb-table[data-type='+upDown+']'); | |
| 150 | + } | |
| 151 | + | |
| 152 | + //定位到班次所在的行 | |
| 153 | + function goToSch(sch){ | |
| 154 | + var table = getTableBySch(sch) | |
| 155 | + ,half = table.parents('._body').height() / 2 | |
| 156 | + ,currTr = table.find('tr[data-id='+sch.id+']') | |
| 157 | + ,top = parseInt(currTr.find('td[name=lineNo]').text()) * 37 - half; | |
| 158 | + | |
| 159 | + top = top>0?top:0; | |
| 160 | + currTr.addClass('anim-delay animated flash'); | |
| 161 | + currTr.parents('._body').slimScroll({ scrollTo: top + 'px' }); | |
| 162 | + } | |
| 163 | + | |
| 139 | 164 | //计算行号 |
| 140 | 165 | function calculateLineNo(table){ |
| 141 | 166 | var rows = table.rows; | ... | ... |
src/main/resources/static/pages/control/line/js/main.js
| ... | ... | @@ -83,12 +83,9 @@ |
| 83 | 83 | setTimeout(function(){ |
| 84 | 84 | //打开GPS定时刷新 |
| 85 | 85 | _data.startRefreshGpsTimer(); |
| 86 | - | |
| 87 | - setTimeout(function(){ | |
| 88 | - //去掉loading | |
| 89 | - $('.load-anim').fadeOut(); | |
| 90 | - $('menu.menu').show(); | |
| 91 | - }, 100); | |
| 86 | + //去掉loading | |
| 87 | + $('.load-anim').fadeOut(); | |
| 88 | + $('menu.menu').show(); | |
| 92 | 89 | }, 400); |
| 93 | 90 | |
| 94 | 91 | } | ... | ... |
src/main/resources/static/pages/control/line/js/rightMenu.js
| ... | ... | @@ -83,11 +83,15 @@ var _menu = (function() { |
| 83 | 83 | |
| 84 | 84 | }); |
| 85 | 85 | |
| 86 | + function msg_ct(t){ | |
| 87 | + layer.msg(t,{offset: 'ct', shift : 5}); | |
| 88 | + } | |
| 89 | + | |
| 86 | 90 | //点击路牌 |
| 87 | 91 | var lps = '.pb-table.data tr td[data-name=lpName]'; |
| 88 | 92 | $('.portlet-fullscreen').on('click', lps, function(e){ |
| 89 | 93 | var lp = $(this).text(); |
| 90 | - layer.msg('高亮路牌:' + lp + '',{offset: 'ct', shift : 5}); | |
| 94 | + msg_ct('高亮路牌:' + lp); | |
| 91 | 95 | var lineCode = $(this).parents('.tab-pane').data('id'); |
| 92 | 96 | var schArray = _data.getLineLpMap()[lineCode][lp]; |
| 93 | 97 | |
| ... | ... | @@ -124,7 +128,7 @@ var _menu = (function() { |
| 124 | 128 | ,sch = _data.getSchedulById(schId); |
| 125 | 129 | |
| 126 | 130 | var scroll = false; |
| 127 | - console.log(_data.findByCl(clnbbm)); | |
| 131 | + | |
| 128 | 132 | $.each(_data.findByCl(clnbbm), function(){ |
| 129 | 133 | if(scroll){ |
| 130 | 134 | var nextTr = $('tr[data-id='+this.id+']'); |
| ... | ... | @@ -235,7 +239,7 @@ var _menu = (function() { |
| 235 | 239 | $post('/realSchedule/outgoAdjust', params, function(rs){ |
| 236 | 240 | layer.close(index); |
| 237 | 241 | if(rs.t){ |
| 238 | - layer.msg('调整成功!'); | |
| 242 | + msg_ct('调整成功!'); | |
| 239 | 243 | _alone.refreshSchedule(rs.t); |
| 240 | 244 | } |
| 241 | 245 | }); |
| ... | ... | @@ -245,10 +249,10 @@ var _menu = (function() { |
| 245 | 249 | }, |
| 246 | 250 | //计划烂班 |
| 247 | 251 | planDestroy: function(schedul){ |
| 248 | - /*if(schedul.status == -1){ | |
| 249 | - layer.alert('不能重复烂班!', {icon: 2, title: '提示', shift: 5}); | |
| 252 | + if(schedul.status == -1){ | |
| 253 | + layer.alert('没必要做重复烂班!', {icon: 2, title: '提示', shift: 5}); | |
| 250 | 254 | return; |
| 251 | - }*/ | |
| 255 | + } | |
| 252 | 256 | var array = []; |
| 253 | 257 | //获取未烂班的班次 |
| 254 | 258 | $.each(_data.getSchedulByVeh(schedul.clZbh),function(){ |
| ... | ... | @@ -325,7 +329,7 @@ var _menu = (function() { |
| 325 | 329 | layer.close(index); |
| 326 | 330 | //刷新数据 |
| 327 | 331 | _alone.refreshScheduleArray(rs.list); |
| 328 | - layer.msg('计划烂班成功!'); | |
| 332 | + msg_ct('计划烂班成功!'); | |
| 329 | 333 | }); |
| 330 | 334 | }); |
| 331 | 335 | return false; |
| ... | ... | @@ -354,7 +358,7 @@ var _menu = (function() { |
| 354 | 358 | $post('/realSchedule/realOutAdjust', params |
| 355 | 359 | ,function(rs){ |
| 356 | 360 | if(rs.t){ |
| 357 | - layer.msg('实发调整成功!'); | |
| 361 | + msg_ct('实发调整成功!'); | |
| 358 | 362 | //更新前端数据 |
| 359 | 363 | _alone.refreshSchedule(rs.t); |
| 360 | 364 | } |
| ... | ... | @@ -372,7 +376,7 @@ var _menu = (function() { |
| 372 | 376 | }, function(){ |
| 373 | 377 | $post('/realSchedule/revokeRealOutgo', {id: schedul.id}, function(rs){ |
| 374 | 378 | if(rs.t){ |
| 375 | - layer.msg('撤销实发成功!'); | |
| 379 | + msg_ct('撤销实发成功!'); | |
| 376 | 380 | //更新前端数据 |
| 377 | 381 | _alone.refreshSchedule(rs.t); |
| 378 | 382 | } |
| ... | ... | @@ -388,7 +392,7 @@ var _menu = (function() { |
| 388 | 392 | }, function(){ |
| 389 | 393 | $post('/realSchedule/revokeDestroy', {id: schedul.id}, function(rs){ |
| 390 | 394 | if(rs.t){ |
| 391 | - layer.msg('撤销烂班成功!'); | |
| 395 | + msg_ct('撤销烂班成功!'); | |
| 392 | 396 | //更新前端数据 |
| 393 | 397 | _alone.refreshSchedule(rs.t); |
| 394 | 398 | } |
| ... | ... | @@ -415,7 +419,7 @@ var _menu = (function() { |
| 415 | 419 | || rs.status == 200){ |
| 416 | 420 | //刷新数据 |
| 417 | 421 | _alone.refreshScheduleArray(rs.list); |
| 418 | - layer.msg('调整间隔成功!'); | |
| 422 | + msg_ct('调整间隔成功!'); | |
| 419 | 423 | } |
| 420 | 424 | }, |
| 421 | 425 | error: errorHandle |
| ... | ... | @@ -451,7 +455,7 @@ var _menu = (function() { |
| 451 | 455 | }, |
| 452 | 456 | //调整人车 |
| 453 | 457 | vehicAndPerAdjust: function(schedul){ |
| 454 | - $.get('/pages/control/line/child_pages/vehicAndper_adjust.html', function(content){ | |
| 458 | + $.get('/pages/control/line/child_pages/car_and_persion.html', function(content){ | |
| 455 | 459 | layer.open({ |
| 456 | 460 | type: 1, |
| 457 | 461 | area: '730px', |
| ... | ... | @@ -483,7 +487,10 @@ var _menu = (function() { |
| 483 | 487 | $.post('/directive/dispatch', {id: schedul.id}, |
| 484 | 488 | function(code){ |
| 485 | 489 | if(code == 0){ |
| 486 | - layer.msg('发送成功'); | |
| 490 | + msg_ct('发送成功'); | |
| 491 | + } | |
| 492 | + else if(code == -2){ | |
| 493 | + layer.alert('该班次发车时间距离当前时间较远,系统阻止了该调度指令的下发。', {icon: 2, title: '被拦截的指令'}); | |
| 487 | 494 | } |
| 488 | 495 | else |
| 489 | 496 | layer.alert('发送调度指令失败', {icon: 2, title: '操作失败'}); |
| ... | ... | @@ -494,7 +501,7 @@ var _menu = (function() { |
| 494 | 501 | schInfoFineTune: function(schedul){ |
| 495 | 502 | var index = layer.open({ |
| 496 | 503 | type: 1, |
| 497 | - area: '630px', | |
| 504 | + area: '680px', | |
| 498 | 505 | maxmin: true, |
| 499 | 506 | content: template('schinfo_fine_tune_temp', schedul), |
| 500 | 507 | shift: 5, |
| ... | ... | @@ -550,7 +557,7 @@ var _menu = (function() { |
| 550 | 557 | }, |
| 551 | 558 | //基于车辆的待发调整 |
| 552 | 559 | outgoAdjustAll: function(schedul){ |
| 553 | - $.get('/pages/control/line/child_pages/outgo_adjust_all.html', function(content){ | |
| 560 | + $.get('/pages/control/line/child_pages/dfsj_batch.html', function(content){ | |
| 554 | 561 | layer.open({ |
| 555 | 562 | type: 1, |
| 556 | 563 | area: '830px', | ... | ... |
src/main/resources/static/pages/control/line/temps/alone_tp.html
| ... | ... | @@ -136,7 +136,7 @@ |
| 136 | 136 | <td data-name="dfsj" data-time="{{item.zdsjT}}">{{item.dfsj}}</td> |
| 137 | 137 | |
| 138 | 138 | {{if item.status == -1}} |
| 139 | - <td class="tl-qrlb sfsj-item">烂班</td> | |
| 139 | + <td class="tl-qrlb sfsj-item" >烂班</td> | |
| 140 | 140 | |
| 141 | 141 | {{else if item.status == 2}} |
| 142 | 142 | <td data-name="sjfcsj" class="tl-yzx sfsj-item">{{item.fcsjActual == null?"?":item.fcsjActual}}<span class="fcsj-diff">{{item.fcsj_diff}}</span></td> |
| ... | ... | @@ -149,8 +149,8 @@ |
| 149 | 149 | {{/if}} |
| 150 | 150 | |
| 151 | 151 | <td class="hide-lt-1080" data-name="remarks"> |
| 152 | - {{if item.remarks != null && item.length > 0}} | |
| 153 | - <a class="remarks-popover" href="javascript:;" data-toggle="popover" data-content="{{item.remarks}}" >备注...</a> | |
| 152 | + {{if item.remarks != null && item.remarks.length > 0}} | |
| 153 | + <a class="remarks-popover" href="javascript:;" data-toggle="popover" data-content="{{item.remarks}}" >查看...</a> | |
| 154 | 154 | {{/if}} |
| 155 | 155 | </td> |
| 156 | 156 | <!--<td><a href="javascript:;">主</a></td>--> | ... | ... |
src/main/resources/static/pages/mapmonitor/real/js/real.js
| ... | ... | @@ -41,9 +41,9 @@ |
| 41 | 41 | } |
| 42 | 42 | var method = $(this).data('click'); |
| 43 | 43 | |
| 44 | - /*if (!method || playAnimation) | |
| 44 | + if (!method /*|| playAnimation*/) | |
| 45 | 45 | return; |
| 46 | - playAnimation = true;*/ | |
| 46 | + //playAnimation = true; | |
| 47 | 47 | |
| 48 | 48 | $('.mapTools').addClass('disable'); |
| 49 | 49 | $('.mapTools div.item.active').removeClass('active'); | ... | ... |
src/main/resources/static/pages/mapmonitor/real/js/vehicle.js
| ... | ... | @@ -4,6 +4,10 @@ |
| 4 | 4 | |
| 5 | 5 | var vehiclePanel = (function() { |
| 6 | 6 | |
| 7 | + //设备号和marker映射 | |
| 8 | + var gpsMarker = {} | |
| 9 | + ,cLineCode;// 当前线路编码 | |
| 10 | + | |
| 7 | 11 | function getCurrMap(){ |
| 8 | 12 | return realMap[realMap.getMap().fName]; |
| 9 | 13 | } |
| ... | ... | @@ -16,6 +20,7 @@ var vehiclePanel = (function() { |
| 16 | 20 | // 手风琴收拢 |
| 17 | 21 | $('.mapRightWrap').on('hide.bs.collapse', '.panel-collapse', function() { |
| 18 | 22 | $(this).prev().find('span.icon').addClass('rotate'); |
| 23 | + cLineCode = null; | |
| 19 | 24 | }); |
| 20 | 25 | |
| 21 | 26 | // 手风琴展开 |
| ... | ... | @@ -24,16 +29,19 @@ var vehiclePanel = (function() { |
| 24 | 29 | var lineCode = $(this).data('line'); |
| 25 | 30 | //收拢其他 |
| 26 | 31 | closeAll(); |
| 32 | + cLineCode = lineCode; | |
| 27 | 33 | drawLineAndGps(lineCode); |
| 28 | 34 | }); |
| 29 | 35 | |
| 30 | 36 | //绘制线路和GPS |
| 31 | 37 | function drawLineAndGps(lineCode){ |
| 32 | 38 | //过滤出该线路的GPS点 |
| 33 | - var showList = []; | |
| 39 | + var showList = [], gps; | |
| 34 | 40 | if(lineGps[lineCode]){ |
| 35 | 41 | $.each(lineGps[lineCode], function(){ |
| 36 | - showList.push(allGps[this]); | |
| 42 | + gps = allGps[this]; | |
| 43 | + showList.push(gps); | |
| 44 | + gpsMarker[gps.deviceId] = gps; | |
| 37 | 45 | }); |
| 38 | 46 | } |
| 39 | 47 | //显示车辆列表 |
| ... | ... | @@ -76,6 +84,7 @@ var vehiclePanel = (function() { |
| 76 | 84 | if(up) |
| 77 | 85 | temp = temp.concat(up); |
| 78 | 86 | |
| 87 | + var gps; | |
| 79 | 88 | if(!$(this).is(":hidden")){ |
| 80 | 89 | $.each(temp, function(){ |
| 81 | 90 | allGps[this.deviceId] = this; |
| ... | ... | @@ -88,6 +97,17 @@ var vehiclePanel = (function() { |
| 88 | 97 | lineGps[this.lineId].push(this.deviceId); |
| 89 | 98 | }) |
| 90 | 99 | } |
| 100 | + | |
| 101 | + //先暂时重绘,后面再优化 | |
| 102 | + if(cLineCode){ | |
| 103 | + var showList = []; | |
| 104 | + if(lineGps[cLineCode]){ | |
| 105 | + $.each(lineGps[cLineCode], function(){ | |
| 106 | + showList.push(allGps[this]); | |
| 107 | + }); | |
| 108 | + } | |
| 109 | + mapObj.drawGpsMarker(showList); | |
| 110 | + } | |
| 91 | 111 | }); |
| 92 | 112 | |
| 93 | 113 | var exports = { | ... | ... |