Commit dbb8dd28dfaab8a6741829d94b0722b8b7d84886

Authored by 潘钊
1 parent 8912e3af

update

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