Commit 21398848a98c3e1af1a72b32309c5bcd64c216a4

Authored by 游瑞烽
1 parent d4c54fa6

Merge branch 'pudong' of 192.168.168.201:panzhaov5/bsth_control into pudong

# Conflicts:
#	src/main/resources/static/pages/base/timesmodel/add.html
#	src/main/resources/static/pages/base/timesmodel/fragments/addbc.html
#	src/main/resources/static/pages/base/timesmodel/fragments/deletelp.html
#	src/main/resources/static/pages/base/timesmodel/fragments/editbc.html
#	src/main/resources/static/pages/base/timesmodel/js/add-form-wizard.js
#	src/main/resources/static/pages/base/timesmodel/js/dateTimeTool.js
#	src/main/resources/static/pages/base/timesmodel/js/echartsDrawGanTT.js
#	src/main/resources/static/pages/base/timesmodel/js/gantt.js
#	src/main/resources/static/pages/base/timesmodel/js/systemTools.js
#	src/main/resources/static/pages/base/timesmodel/js/v1/AdjustTrip.js
#	src/main/resources/static/pages/base/timesmodel/js/v1/bcFun.js
#	src/main/resources/static/pages/base/timesmodel/js/v1/lpFun.js
#	src/main/resources/static/pages/base/timesmodel/js/v1/scheduleInitialize.js
src/main/java/com/bsth/controller/StationController.java
1 package com.bsth.controller; 1 package com.bsth.controller;
2 2
3 -import java.util.Map;  
4 - 3 +import com.bsth.entity.Station;
  4 +import com.bsth.service.StationService;
  5 +import com.bsth.util.GetUIDAndCode;
5 import org.slf4j.Logger; 6 import org.slf4j.Logger;
6 import org.slf4j.LoggerFactory; 7 import org.slf4j.LoggerFactory;
7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
@@ -10,9 +11,7 @@ import org.springframework.web.bind.annotation.RequestMethod; @@ -10,9 +11,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
10 import org.springframework.web.bind.annotation.RequestParam; 11 import org.springframework.web.bind.annotation.RequestParam;
11 import org.springframework.web.bind.annotation.RestController; 12 import org.springframework.web.bind.annotation.RestController;
12 13
13 -import com.bsth.entity.Station;  
14 -import com.bsth.service.StationService;  
15 -import com.bsth.util.GetUIDAndCode; 14 +import java.util.Map;
16 15
17 /** 16 /**
18 * 17 *
@@ -160,11 +159,11 @@ public class StationController extends BaseController<Station, Integer> { @@ -160,11 +159,11 @@ public class StationController extends BaseController<Station, Integer> {
160 public int updateStationAndSectionCode(@RequestParam Integer stationCount, Integer sectionCount) { 159 public int updateStationAndSectionCode(@RequestParam Integer stationCount, Integer sectionCount) {
161 System.out.println(stationCount+" _ "+ sectionCount ); 160 System.out.println(stationCount+" _ "+ sectionCount );
162 for(int i = 0; i < stationCount; i++) { 161 for(int i = 0; i < stationCount; i++) {
163 - System.out.println(stationCount); 162 + System.out.println(i);
164 GetUIDAndCode.getStationId(); 163 GetUIDAndCode.getStationId();
165 } 164 }
166 - for(int i = 0; i < sectionCount; i++) {  
167 - System.out.println(sectionCount); 165 + for(int j = 0; j < sectionCount; j++) {
  166 + System.out.println(j);
168 GetUIDAndCode.getSectionId(); 167 GetUIDAndCode.getSectionId();
169 } 168 }
170 return 1; 169 return 1;
src/main/java/com/bsth/controller/StationRouteController.java
1 package com.bsth.controller; 1 package com.bsth.controller;
2 2
3 -import com.bsth.entity.Station;  
4 import com.bsth.entity.StationRoute; 3 import com.bsth.entity.StationRoute;
5 import com.bsth.entity.StationRouteCache; 4 import com.bsth.entity.StationRouteCache;
6 import com.bsth.repository.StationRouteCacheRepository; 5 import com.bsth.repository.StationRouteCacheRepository;
@@ -12,11 +11,10 @@ import org.springframework.web.bind.annotation.RequestMethod; @@ -12,11 +11,10 @@ import org.springframework.web.bind.annotation.RequestMethod;
12 import org.springframework.web.bind.annotation.RequestParam; 11 import org.springframework.web.bind.annotation.RequestParam;
13 import org.springframework.web.bind.annotation.RestController; 12 import org.springframework.web.bind.annotation.RestController;
14 13
  14 +import javax.servlet.http.HttpServletResponse;
15 import java.util.List; 15 import java.util.List;
16 import java.util.Map; 16 import java.util.Map;
17 17
18 -import javax.servlet.http.HttpServletResponse;  
19 -  
20 /** 18 /**
21 * 19 *
22 * @ClassName: StationRouteController(站点路由控制器) 20 * @ClassName: StationRouteController(站点路由控制器)
src/main/resources/static/pages/base/line/js/line-list-table.js
@@ -386,8 +386,6 @@ @@ -386,8 +386,6 @@
386 } 386 }
387 387
388 }); 388 });
389 -  
390 -  
391 } 389 }
392 }); 390 });
393 /** 生成路线(路段和站点) */ 391 /** 生成路线(路段和站点) */
src/main/resources/static/pages/base/stationroute/js/stationroute-list-map.js
@@ -58,15 +58,17 @@ window.WorldsBMap = function () { @@ -58,15 +58,17 @@ window.WorldsBMap = function () {
58 marker.enableDragging(); 58 marker.enableDragging();
59 dragMarker = marker; 59 dragMarker = marker;
60 dragMarker._old_point = dragMarker._position; 60 dragMarker._old_point = dragMarker._position;
  61 + centerPoint = dragMarker._position;
61 //监听拖拽事件 dragging 62 //监听拖拽事件 dragging
62 dragMarker.addEventListener('dragging', dragMarkerDragEvent); 63 dragMarker.addEventListener('dragging', dragMarkerDragEvent);
63 }; 64 };
64 65
65 var dragMarkerDragEvent = function (e) { 66 var dragMarkerDragEvent = function (e) {
66 if (editPolygon) { 67 if (editPolygon) {
67 - if (!BMapLib.GeoUtils.isPointInPolygon(e.target._position, editPolygon)) 68 + // 中心点是否超出多边形
  69 + if (!BMapLib.GeoUtils.isPointInPolygon(e.target._position, editPolygon)) {
68 dragMarker.setPosition(dragMarker._old_point);//还原位置 70 dragMarker.setPosition(dragMarker._old_point);//还原位置
69 - 71 + }
70 centerPoint = e.target._position; 72 centerPoint = e.target._position;
71 } 73 }
72 else if (editCircle) { 74 else if (editCircle) {
src/main/resources/static/pages/base/timesmodel/css/index.css
@@ -217,11 +217,11 @@ text.alert-danger { @@ -217,11 +217,11 @@ text.alert-danger {
217 } 217 }
218 218
219 .sx { 219 .sx {
220 - background-color: #233f5d; 220 + background-color: #ff2949;
221 } 221 }
222 222
223 .xx { 223 .xx {
224 - background-color: #31394a; 224 + background-color: #518fe3;
225 } 225 }
226 226
227 .tipso_bubble { 227 .tipso_bubble {
src/main/resources/static/pages/base/timesmodel/fragments/addbc.html
@@ -259,12 +259,12 @@ $(&#39;#addBc_mobal&#39;).on(&#39;addBcMobal.show&#39;, function(e,lpData,lpDataCount,echartsDra @@ -259,12 +259,12 @@ $(&#39;#addBc_mobal&#39;).on(&#39;addBcMobal.show&#39;, function(e,lpData,lpDataCount,echartsDra
259 layer.confirm('添加的班次与前后班次有时间冲突,是否添加?', { 259 layer.confirm('添加的班次与前后班次有时间冲突,是否添加?', {
260 btn : [ '添加','取消' ], icon: 3, title:'提示' 260 btn : [ '添加','取消' ], icon: 3, title:'提示'
261 }, function(){ 261 }, function(){
262 - echartsDrawGTT.init(data,false,true); 262 + echartsDrawGTT.init(data,false,true,false);
263 echartsDrawGTT.refreshDrag(); 263 echartsDrawGTT.refreshDrag();
264 layer.msg('路牌:'+params.lpName+' fnco:'+params.fcno+' 班次添加成功,注意修改冲突班次!'); 264 layer.msg('路牌:'+params.lpName+' fnco:'+params.fcno+' 班次添加成功,注意修改冲突班次!');
265 }); 265 });
266 } else { 266 } else {
267 - echartsDrawGTT.init(data,false,true); 267 + echartsDrawGTT.init(data,false,true,false);
268 echartsDrawGTT.refreshDrag(); 268 echartsDrawGTT.refreshDrag();
269 layer.msg('路牌:'+params.lpName+' fnco:'+params.fcno+' 班次添加成功!'); 269 layer.msg('路牌:'+params.lpName+' fnco:'+params.fcno+' 班次添加成功!');
270 } 270 }
src/main/resources/static/pages/base/timesmodel/fragments/deletelp.html
@@ -104,7 +104,7 @@ $(&#39;#deletelp_mobal&#39;).on(&#39;deletelpMobal.show&#39;, function(e,lpData,echartsDrawGTT){ @@ -104,7 +104,7 @@ $(&#39;#deletelp_mobal&#39;).on(&#39;deletelpMobal.show&#39;, function(e,lpData,echartsDrawGTT){
104 lpData.splice(index,1); 104 lpData.splice(index,1);
105 }); 105 });
106 echartsDrawGTT.setLpData(lpData); 106 echartsDrawGTT.setLpData(lpData);
107 - echartsDrawGTT.init(data,false,true); 107 + echartsDrawGTT.init(data,false,true,false);
108 echartsDrawGTT.refreshDrag(); 108 echartsDrawGTT.refreshDrag();
109 $('#deletelp_mobal').modal('hide'); 109 $('#deletelp_mobal').modal('hide');
110 layer.msg('删除路牌【'+ params.lpName +'】成功!'); 110 layer.msg('删除路牌【'+ params.lpName +'】成功!');
src/main/resources/static/pages/base/timesmodel/fragments/editbc.html
@@ -192,7 +192,7 @@ $(&#39;#editBc_mobal&#39;).on(&#39;editBcMobal.show&#39;, function(e,index,echartsDrawGTT){ @@ -192,7 +192,7 @@ $(&#39;#editBc_mobal&#39;).on(&#39;editBcMobal.show&#39;, function(e,index,echartsDrawGTT){
192 bcObj.value[7] = parseInt(params.fcno); 192 bcObj.value[7] = parseInt(params.fcno);
193 bcObj.value[16] = parseInt(params.isfb); 193 bcObj.value[16] = parseInt(params.isfb);
194 194
195 - echartsDrawGTT.init(data,false,true); 195 + echartsDrawGTT.init(data,false,true,false);
196 echartsDrawGTT.refreshDrag(); 196 echartsDrawGTT.refreshDrag();
197 layer.msg('路牌:'+params.lpName+' fnco:'+params.fcno+' 班次修改成功!'); 197 layer.msg('路牌:'+params.lpName+' fnco:'+params.fcno+' 班次修改成功!');
198 $('#editBc_mobal').modal('hide'); 198 $('#editBc_mobal').modal('hide');
src/main/resources/static/pages/base/timesmodel/js/add-form-wizard.js
1 -  
2 /** 1 /**
3 * @description : (TODO) 表单的导航向导、验证、提交 2 * @description : (TODO) 表单的导航向导、验证、提交
4 */ 3 */
@@ -288,12 +287,12 @@ var SKBFormWizard = function() { @@ -288,12 +287,12 @@ var SKBFormWizard = function() {
288 // 4、返回判断结果布尔值. 287 // 4、返回判断结果布尔值.
289 return tag; 288 return tag;
290 } 289 }
291 - 290 +
292 /** 291 /**
293 * @description : (TODO) 获取客流数据. 292 * @description : (TODO) 获取客流数据.
294 - * 293 + *
295 * @params [url--请求地址;data--请求参数;cb--回调函数] 294 * @params [url--请求地址;data--请求参数;cb--回调函数]
296 - * 295 + *
297 * */ 296 * */
298 function getJSONP(url, data, cb) { 297 function getJSONP(url, data, cb) {
299 $.ajax({ 298 $.ajax({
@@ -305,24 +304,24 @@ var SKBFormWizard = function() { @@ -305,24 +304,24 @@ var SKBFormWizard = function() {
305 success : cb 304 success : cb
306 }); 305 });
307 } 306 }
308 - 307 +
309 /** 308 /**
310 * @description : (TODO) 根据获取参数方式来获取表单参数详情html模版页. 309 * @description : (TODO) 根据获取参数方式来获取表单参数详情html模版页.
311 - * 310 + *
312 * @param [n--获取参数方式;map--表单参数;lineId--线路ID;krl--客容量;cb--回调函数] 311 * @param [n--获取参数方式;map--表单参数;lineId--线路ID;krl--客容量;cb--回调函数]
313 - * 312 + *
314 * @return 返回表单参数详情html模版页. 313 * @return 返回表单参数详情html模版页.
315 - * 314 + *
316 * @status OK. 315 * @status OK.
317 * */ 316 * */
318 var getHtmlTemp = function(n,map,lineId,krl,cb) { 317 var getHtmlTemp = function(n,map,lineId,krl,cb) {
319 // 1、定义模版名称. 318 // 1、定义模版名称.
320 var tempName = ''; 319 var tempName = '';
321 - if(n==0) 320 + if(n==0)
322 tempName = 'carnum_temp'; 321 tempName = 'carnum_temp';
323 else if(n==1) 322 else if(n==1)
324 tempName = 'bctype_temp'; 323 tempName = 'bctype_temp';
325 - else if (n==2 || n == 3) 324 + else if (n==2)
326 tempName = 'fcjx_temp'; 325 tempName = 'fcjx_temp';
327 // 2、获参数详情模版html内容. 326 // 2、获参数详情模版html内容.
328 $.get('/pages/base/timesmodel/tepms/'+ tempName + '.html', function(html){ 327 $.get('/pages/base/timesmodel/tepms/'+ tempName + '.html', function(html){
@@ -348,9 +347,9 @@ var SKBFormWizard = function() { @@ -348,9 +347,9 @@ var SKBFormWizard = function() {
348 var params = {'xlid':lineId,'startDateTime':startDateTime,'endDateTime':endDateTime,'zzsj':zzsj}; 347 var params = {'xlid':lineId,'startDateTime':startDateTime,'endDateTime':endDateTime,'zzsj':zzsj};
349 /** 348 /**
350 * getJSONP请求获取客流数据. 349 * getJSONP请求获取客流数据.
351 - * 350 + *
352 * 返回的是一个每次以半小时为间隔作为开始时间点, 在加上周转时间作为结束时间点的 时段段内的客流最大通过量. 351 * 返回的是一个每次以半小时为间隔作为开始时间点, 在加上周转时间作为结束时间点的 时段段内的客流最大通过量.
353 - * */ 352 + * */
354 getJSONP("http://139.196.13.237:8080/bsth-busfareflow-gj/Crlcxb/selectsjbctgl.do",params,function(json){ 353 getJSONP("http://139.196.13.237:8080/bsth-busfareflow-gj/Crlcxb/selectsjbctgl.do",params,function(json){
355 // 定义时段集合,可容量. 354 // 定义时段集合,可容量.
356 var sjdArr = getsjdArr(map),krlInt = parseInt(krl); 355 var sjdArr = getsjdArr(map),krlInt = parseInt(krl);
@@ -390,11 +389,29 @@ var SKBFormWizard = function() { @@ -390,11 +389,29 @@ var SKBFormWizard = function() {
390 389
391 // 返回参数详情模版. 390 // 返回参数详情模版.
392 return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})}); 391 return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})});
393 - }); 392 + });
394 }else if(n==1) { 393 }else if(n==1) {
395 - // 返回参数详情模版.  
396 - return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})});  
397 - }else if (n==2 || n == 3) { 394 + // 更具站点路由版本获取起点终点站
  395 + var iversion = $('#lineVersionSelect').val();
  396 + $get('/stationroute/all',{'line.id_eq':lineId,'destroy_eq':0, 'versions_eq': iversion},function(result) {
  397 + $.each(result, function(i, d) {
  398 + if (d.stationMark == 'B' && d.directions == 0) {
  399 + // alert(d.stationName);
  400 + map.line.startStationName = d.stationName;
  401 + } else if (d.stationMark == 'E' && d.directions == 0) {
  402 + // alert(d.stationName);
  403 + map.line.endStationName = d.stationName;
  404 + }
  405 + });
  406 +
  407 + // return cb && cb({
  408 + // 'forminput': template(tempName, {map: map}),
  409 + // 'datadisplay': template(tempName + '_config', {map: null})
  410 + // });
  411 + // 返回参数详情模版.
  412 + return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})});
  413 + });
  414 + }else if (n==2) {
398 // 更具站点路由版本获取起点终点站 415 // 更具站点路由版本获取起点终点站
399 var iversion = $('#lineVersionSelect').val(); 416 var iversion = $('#lineVersionSelect').val();
400 $get('/stationroute/all',{'line.id_eq':lineId,'destroy_eq':0, 'versions_eq': iversion},function(result) { 417 $get('/stationroute/all',{'line.id_eq':lineId,'destroy_eq':0, 'versions_eq': iversion},function(result) {
@@ -417,8 +434,8 @@ var SKBFormWizard = function() { @@ -417,8 +434,8 @@ var SKBFormWizard = function() {
417 434
418 } 435 }
419 }); 436 });
420 - }  
421 - 437 + };
  438 +
422 /** 439 /**
423 * @description (TODO) 格式化成渲染图形数据格式. 440 * @description (TODO) 格式化成渲染图形数据格式.
424 * 441 *
@@ -540,7 +557,17 @@ var SKBFormWizard = function() { @@ -540,7 +557,17 @@ var SKBFormWizard = function() {
540 'bxrc' : {required : true},// 班型人次,必填项 557 'bxrc' : {required : true},// 班型人次,必填项
541 'linePlayType' : {required : true},// 线路规划类型,必填项 558 'linePlayType' : {required : true},// 线路规划类型,必填项
542 'zdzcrl' : {number : true,digits : true}, 559 'zdzcrl' : {number : true,digits : true},
543 - 560 + // 新增时间段字段
  561 + 'start1' : {required : true},
  562 + 'end1' : {required : true},
  563 + 'start2' : {required : true},
  564 + 'end2' : {required : true},
  565 + 'start3' : {required : true},
  566 + 'end3' : {required : true},
  567 + 'start4' : {required : true},
  568 + 'end4' : {required : true},
  569 + 'start5' : {required : true},
  570 + 'end5' : {required : true},
544 571
545 'gfupStopTime' : {required : true,number : true}, // 高峰上行停站时间,必填项、必须为整数. 572 'gfupStopTime' : {required : true,number : true}, // 高峰上行停站时间,必填项、必须为整数.
546 'gfdownStopTime' : {required : true,number : true}, // 高峰下行停站时间,必填项、必须为整数. 573 'gfdownStopTime' : {required : true,number : true}, // 高峰下行停站时间,必填项、必须为整数.
@@ -957,6 +984,16 @@ var SKBFormWizard = function() { @@ -957,6 +984,16 @@ var SKBFormWizard = function() {
957 $('#zgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 早高峰结束时间 984 $('#zgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 早高峰结束时间
958 $('#wgfkssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰开始时间 985 $('#wgfkssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰开始时间
959 $('#wgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰结束时间 986 $('#wgfjssjInput').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});// 晚高峰结束时间
  987 + $('#startInput1').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
  988 + $('#endInput1').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
  989 + $('#startInput2').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
  990 + $('#endInput2').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
  991 + $('#startInput3').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
  992 + $('#endInput3').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
  993 + $('#startInput4').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
  994 + $('#endInput4').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
  995 + $('#startInput5').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
  996 + $('#endInput5').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
960 // 初始化停车场下拉框. 997 // 初始化停车场下拉框.
961 gettccInfo(function(cd) { 998 gettccInfo(function(cd) {
962 var options = '<option value="">请选择...</option><optgroup label="停车场">'; 999 var options = '<option value="">请选择...</option><optgroup label="停车场">';
@@ -974,7 +1011,7 @@ var SKBFormWizard = function() { @@ -974,7 +1011,7 @@ var SKBFormWizard = function() {
974 layer.close(i); 1011 layer.close(i);
975 }); 1012 });
976 1013
977 - } else if (baseRes == 2 || baseRes == 3) { // 发车间隔分析 1014 + } else if (baseRes == 2) { // 发车间隔分析
978 // 上下行首末班日期控件 1015 // 上下行首末班日期控件
979 $('#startStationFirstTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); 1016 $('#startStationFirstTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
980 $('#startStationEndTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'}); 1017 $('#startStationEndTime_id').datetimepicker({format : 'HH:mm',locale: 'zh-cn'});
src/main/resources/static/pages/base/timesmodel/js/dateTimeTool.js
1 /** 时间工具类*/ 1 /** 时间工具类*/
2 var DateTimeTool = function () { 2 var DateTimeTool = function () {
  3 + var jsd = [];
  4 + var initSJD = function (map) {
  5 + jsd = map;
  6 + };
3 // 数字格式转化为时间格式 7 // 数字格式转化为时间格式
4 var calculateHours = function (time) { 8 var calculateHours = function (time) {
5 if(!time) 9 if(!time)
@@ -44,9 +48,38 @@ var DateTimeTool = function () { @@ -44,9 +48,38 @@ var DateTimeTool = function () {
44 +':' 48 +':'
45 +(date.getMinutes()<10? '0' + date.getMinutes() : date.getMinutes()); 49 +(date.getMinutes()<10? '0' + date.getMinutes() : date.getMinutes());
46 }; 50 };
  51 + // 判断时间在什么时间段段内
  52 + var judgmentTimeQuantum = function (t) {
  53 + if(t <= getDateTime(jsd[0].end))
  54 + return 0;
  55 + else if(t > getDateTime(jsd[1].start) && t <= getDateTime(jsd[1].end))
  56 + return 1;
  57 + else if(t > getDateTime(jsd[2].start) && t <= getDateTime(jsd[2].end))
  58 + return 2;
  59 + else if(t > getDateTime(jsd[3].start) && t <= getDateTime(jsd[3].end))
  60 + return 3;
  61 + else if(t > getDateTime(jsd[4].start))
  62 + return 4;
  63 + };
  64 +
  65 + // 8:31-16:00专用
  66 + var judgmentTimeQuantum1 = function (t) {
  67 + var start = DateTimeTool.getDateTime(jsd[2].start);
  68 + if(t > start && t <= start.setHours(start.getHours() + 2))
  69 + return 1;
  70 + else if(t > start.setHours(start.getHours() + 2) && t <= start.setHours(start.getHours() + 4))
  71 + return 2;
  72 + else if(t > start.setHours(start.getHours() + 4) && t <= start.setHours(start.getHours() + 6))
  73 + return 2;
  74 + else if(t > start.setHours(start.getHours() + 6) && t <= DateTimeTool.getDateTime(jsd[2].end))
  75 + return 1;
  76 + };
47 return{ 77 return{
  78 + initSJD : initSJD,
48 calculateHours : calculateHours, 79 calculateHours : calculateHours,
49 getDateTime : getDateTime, 80 getDateTime : getDateTime,
50 - getHHmmStr : getHHmmStr 81 + getHHmmStr : getHHmmStr,
  82 + judgmentTimeQuantum : judgmentTimeQuantum,
  83 + judgmentTimeQuantum1 : judgmentTimeQuantum1
51 } 84 }
52 }(); 85 }();
src/main/resources/static/pages/base/timesmodel/js/echartsDrawGanTT.js
@@ -5,7 +5,7 @@ var echartsDrawGTT = function () { @@ -5,7 +5,7 @@ var echartsDrawGTT = function () {
5 var upDowndom = document.getElementById("upDownContainer"); 5 var upDowndom = document.getElementById("upDownContainer");
6 var upDownChart = echarts.init(upDowndom); 6 var upDownChart = echarts.init(upDowndom);
7 // upDowndom.style.height = '200px'; 7 // upDowndom.style.height = '200px';
8 - var option,upDownOption,dataZoomStart = 0,dataZoomEnd = 80;//图层对象 8 + var option,upDownOption,dataZoomStart = 0,dataZoomEnd = 70;//图层对象
9 var historyData = [],// 保存操作图形后的数据集合(撤销与恢复操作) 9 var historyData = [],// 保存操作图形后的数据集合(撤销与恢复操作)
10 _keyIndex = -1,// 记录当前操作步骤 (在撤销与恢复操作时) 10 _keyIndex = -1,// 记录当前操作步骤 (在撤销与恢复操作时)
11 dataUp = [],// (上/下)行发车时刻表数据 11 dataUp = [],// (上/下)行发车时刻表数据
@@ -107,7 +107,8 @@ var echartsDrawGTT = function () { @@ -107,7 +107,8 @@ var echartsDrawGTT = function () {
107 bcObj.qdz, 107 bcObj.qdz,
108 bcObj.zdz, 108 bcObj.zdz,
109 bcObj.STOPTIME, 109 bcObj.STOPTIME,
110 - bcObj.isfb = 0 110 + bcObj.isfb ? 1:0,
  111 + bcObj.qs
111 //bcObj.isSwitchXl, 112 //bcObj.isSwitchXl,
112 //bcObj.bz, 113 //bcObj.bz,
113 ], 114 ],
@@ -329,7 +330,7 @@ var echartsDrawGTT = function () { @@ -329,7 +330,7 @@ var echartsDrawGTT = function () {
329 bcTypeStr = bcType[type]; 330 bcTypeStr = bcType[type];
330 331
331 var arr = [ 332 var arr = [
332 - '{left|' + timeStr + '}{type|' + bcTypeStr +'}', 333 + '{left|' + timeStr + '}{type|'+ ((dataZoomEnd - dataZoomStart) <= 70 ? bcType[type] : '') +'}',
333 '{left|' + lastStr + '}{left|' + stayStr + '}' 334 '{left|' + lastStr + '}{left|' + stayStr + '}'
334 ]; 335 ];
335 return arr.join('\n'); 336 return arr.join('\n');
@@ -601,11 +602,17 @@ var echartsDrawGTT = function () { @@ -601,11 +602,17 @@ var echartsDrawGTT = function () {
601 lastStr = "行:" + last; 602 lastStr = "行:" + last;
602 } 603 }
603 604
  605 + // 分班显示‘分’
  606 + if(params.data.value[16] == 1)
  607 + bcTypeStr = "分";
  608 + else
  609 + bcTypeStr = bcType[type];
  610 +
604 if(type == 'normal') { 611 if(type == 'normal') {
605 stayStr = "停:" + params.data.value[15]; 612 stayStr = "停:" + params.data.value[15];
606 } 613 }
607 var arr = [ 614 var arr = [
608 - '{left|' + timeStr + '}{type|'+ ((e.end - e.start) < 80 ? bcType[type] : '') +'}', 615 + '{left|' + timeStr + '}{type|'+ ((dataZoomEnd - dataZoomStart) <= 70 ? bcType[type] : '') +'}',
609 '{left|' + lastStr + '}{left|' + stayStr + '}' 616 '{left|' + lastStr + '}{left|' + stayStr + '}'
610 ]; 617 ];
611 618
@@ -895,14 +902,15 @@ var echartsDrawGTT = function () { @@ -895,14 +902,15 @@ var echartsDrawGTT = function () {
895 data[dataIndex].value[2] = xMax; 902 data[dataIndex].value[2] = xMax;
896 data[dataIndex].value[1] = data[dataIndex].value[2] - data[dataIndex].value[3]; 903 data[dataIndex].value[1] = data[dataIndex].value[2] - data[dataIndex].value[3];
897 } 904 }
898 -  
899 } 905 }
900 - _keyIndex++; 906 +
  907 + set_keyIndex(++_keyIndex);
901 908
902 historyData[_keyIndex] = $.extend(true, [], historyData[_keyIndex], data);// 历史数组增加一次数据 909 historyData[_keyIndex] = $.extend(true, [], historyData[_keyIndex], data);// 历史数组增加一次数据
903 refreshDrag(); 910 refreshDrag();
904 refreshUpDownData(); 911 refreshUpDownData();
905 historyData.splice(_keyIndex + 1, historyData.length);// 数据改变后过后清除多余的历史数据 912 historyData.splice(_keyIndex + 1, historyData.length);// 数据改变后过后清除多余的历史数据
  913 + init(historyData[_keyIndex],false,false);
906 } else { 914 } else {
907 refreshDrag(); 915 refreshDrag();
908 } 916 }
@@ -936,7 +944,12 @@ var echartsDrawGTT = function () { @@ -936,7 +944,12 @@ var echartsDrawGTT = function () {
936 color: '#333' 944 color: '#333'
937 }, 945 },
938 min: 0, 946 min: 0,
939 - max: 30, 947 + max: function(value) {
  948 + if(value.max < 30)
  949 + return 30;
  950 + else
  951 + return value.max + 5;
  952 + },
940 axisTick: {show: false}, 953 axisTick: {show: false},
941 //axisLine: {lineStyle: {color: '#ccc'}}, 954 //axisLine: {lineStyle: {color: '#ccc'}},
942 axisLabel: {show: false}, 955 axisLabel: {show: false},
src/main/resources/static/pages/base/timesmodel/js/gantt.js
1 (function() { 1 (function() {
  2 + var indexLoad = layer.load(0, {content:'拼命计算中...',time: 10*1000,success: function(layero){
  3 + layero.find('.layui-layer-content').css('padding-top', '40px');
  4 + }});
2 // 全屏模式点击事件. 5 // 全屏模式点击事件.
3 // $(document).on('click','.fullscreen',function() { 6 // $(document).on('click','.fullscreen',function() {
4 // if($('.ganttSvgContainer').height()>400) 7 // if($('.ganttSvgContainer').height()>400)
@@ -34,7 +37,7 @@ @@ -34,7 +37,7 @@
34 offsetX : offsetX, 37 offsetX : offsetX,
35 offsetY : offsetY, 38 offsetY : offsetY,
36 content :'<div class="tipsdscontinue"> <span>图例:</span> <div class="dscrp sx"></div><span>:上行</span> <div class="dscrp xx"></div> <span>:下行</span></br><div/></br>' + 39 content :'<div class="tipsdscontinue"> <span>图例:</span> <div class="dscrp sx"></div><span>:上行</span> <div class="dscrp xx"></div> <span>:下行</span></br><div/></br>' +
37 - '<div class="tipsdscontinue"> <span>该模块支持鼠标拖拽、鼠标绘制(鼠标右键按下3S开始)框选功能.</span> <div/>' 40 + '<div class="tipsdscontinue"> <span>该模块支持鼠标拖拽功能.</span> <div/>'
38 41
39 }); 42 });
40 $('.tipso-animation').tipso('show'); 43 $('.tipso-animation').tipso('show');
@@ -72,10 +75,6 @@ @@ -72,10 +75,6 @@
72 _paramObj = Main_v2.getFactory().createParameterObj(map, dataMap); 75 _paramObj = Main_v2.getFactory().createParameterObj(map, dataMap);
73 map.clzs = _paramObj.calcuClzx(); 76 map.clzs = _paramObj.calcuClzx();
74 CSMap = getMaxCarAndStopSpace1(map); 77 CSMap = getMaxCarAndStopSpace1(map);
75 - } else if (map.baseRes == '3') { // 主站停站使用v2_2版本  
76 - _paramObj = Main_v2.getFactory().createParameterObj(map, dataMap); // TODO:暂时使用v2_1版本的方法,通用的,后续再放到v2_2版本中  
77 - map.clzs = InternalScheduleObj_v2_2.calcuClzx(_paramObj);  
78 - CSMap = getMaxCarAndStopSpace1(map);  
79 } 78 }
80 79
81 // 定义时间参数. 80 // 定义时间参数.
@@ -97,8 +96,6 @@ @@ -97,8 +96,6 @@
97 // TODO:CSMap.maxCar 之后要设定一下的 96 // TODO:CSMap.maxCar 之后要设定一下的
98 data = Main_v2.BXPplaceClassesTime03(_paramObj, CSMap.maxCar); 97 data = Main_v2.BXPplaceClassesTime03(_paramObj, CSMap.maxCar);
99 Main_v2.exportDataConfig(data.aInternalLpObj); 98 Main_v2.exportDataConfig(data.aInternalLpObj);
100 - } else if (map.baseRes == '3') { // 主站停站使用v2_2版本  
101 - data = Main_v2_2.BXPplaceClassesTime03(_paramObj, CSMap.maxCar);  
102 } 99 }
103 100
104 }else { 101 }else {
@@ -139,11 +136,8 @@ @@ -139,11 +136,8 @@
139 // graph.addHistory(); 136 // graph.addHistory();
140 // // 初始化右键菜单. 137 // // 初始化右键菜单.
141 // contextInit(graph); 138 // contextInit(graph);
142 -  
143 - if (map.baseRes == '3') {  
144 - // 导入导出设置  
145 - Main_v2_2.exportExcelConfig($_GlobalGraph.getDataArray);  
146 - } 139 + // 关闭弹出层
  140 + layer.close(indexLoad);
147 },500); 141 },500);
148 142
149 /** 143 /**
@@ -218,9 +212,10 @@ @@ -218,9 +212,10 @@
218 'gftzsj': BaseFun.formatPairing(gatps.gfupStopTime,gatps.gfdownStopTime),// 高峰停站时间. 212 'gftzsj': BaseFun.formatPairing(gatps.gfupStopTime,gatps.gfdownStopTime),// 高峰停站时间.
219 'dgtzsj' : BaseFun.formatPairing(gatps.dgupStopTime,gatps.dgdownStopTime),// 低谷停站时间. 213 'dgtzsj' : BaseFun.formatPairing(gatps.dgupStopTime,gatps.dgdownStopTime),// 低谷停站时间.
220 'dgmaxtzsj' : parseInt(gatps.dgmaxtzsj),// 低谷最大停站时间. 214 'dgmaxtzsj' : parseInt(gatps.dgmaxtzsj),// 低谷最大停站时间.
221 - 'dgmaxfcjx' : parseInt(gatps.dgmaxfcjx),// 低谷最大发车间隙. 215 + // 'dgmaxfcjx' : parseInt(gatps.dgmaxfcjx),// 低谷最大发车间隙.
  216 + 'dgmaxfcjx' : 20,// 低谷最大发车间隙.
222 'map' : gatps, 217 'map' : gatps,
223 - 'zzsj':gatps.zzsj,// 周转时间. 218 + 'zzsj':gatps.zzsj// 周转时间.
224 }; 219 };
225 } 220 }
226 221
src/main/resources/static/pages/base/timesmodel/js/systemTools.js
@@ -13,8 +13,7 @@ $(&#39;.recover&#39;).on(&#39;click&#39;,function() { @@ -13,8 +13,7 @@ $(&#39;.recover&#39;).on(&#39;click&#39;,function() {
13 echartsDrawGTT.set_keyIndex(++_keyIndex); 13 echartsDrawGTT.set_keyIndex(++_keyIndex);
14 var historyData = echartsDrawGTT.getHistoryData(); 14 var historyData = echartsDrawGTT.getHistoryData();
15 var data = $.extend(true, [], data, historyData[_keyIndex]); 15 var data = $.extend(true, [], data, historyData[_keyIndex]);
16 - echartsDrawGTT.init(data,false,false);  
17 - echartsDrawGTT.refreshDrag(); 16 + echartsDrawGTT.init(data,false,false,false);
18 layer.msg('恢复到操作记录的【第'+(_keyIndex+1)+'步】了!'); 17 layer.msg('恢复到操作记录的【第'+(_keyIndex+1)+'步】了!');
19 } 18 }
20 }); 19 });
@@ -33,8 +32,7 @@ $(&quot;.revoke&quot;).on(&quot;click&quot;,function(){ @@ -33,8 +32,7 @@ $(&quot;.revoke&quot;).on(&quot;click&quot;,function(){
33 echartsDrawGTT.set_keyIndex(--_keyIndex); 32 echartsDrawGTT.set_keyIndex(--_keyIndex);
34 var historyData = echartsDrawGTT.getHistoryData(); 33 var historyData = echartsDrawGTT.getHistoryData();
35 var data = $.extend(true, [], data, historyData[_keyIndex]); 34 var data = $.extend(true, [], data, historyData[_keyIndex]);
36 - echartsDrawGTT.init(data,false,false);  
37 - echartsDrawGTT.refreshDrag(); 35 + echartsDrawGTT.init(data,false,false,false);
38 layer.msg('撤销到操作记录的【第'+(_keyIndex+1)+'步】了!'); 36 layer.msg('撤销到操作记录的【第'+(_keyIndex+1)+'步】了!');
39 } 37 }
40 }); 38 });
@@ -101,8 +99,7 @@ $(&#39;#bcAdjustListSubmit&#39;).on(&#39;click&#39;,function() { @@ -101,8 +99,7 @@ $(&#39;#bcAdjustListSubmit&#39;).on(&#39;click&#39;,function() {
101 data[bcAdjustList[i]].value[0] = lpName; 99 data[bcAdjustList[i]].value[0] = lpName;
102 data[bcAdjustList[i]].value[4] = lpDataCount[lpName][2]; 100 data[bcAdjustList[i]].value[4] = lpDataCount[lpName][2];
103 } 101 }
104 - echartsDrawGTT.init(data,false,true);  
105 - echartsDrawGTT.refreshDrag(); 102 + echartsDrawGTT.init(data,false,true,false);
106 } else 103 } else
107 layer.msg('没有找到目标路牌,请重新选择!'); 104 layer.msg('没有找到目标路牌,请重新选择!');
108 $('.bc-adjust-list').addClass('hidden'); 105 $('.bc-adjust-list').addClass('hidden');
@@ -148,8 +145,7 @@ function dropdownMenuDelete(dataIndex) { @@ -148,8 +145,7 @@ function dropdownMenuDelete(dataIndex) {
148 // 关闭弹出层. 145 // 关闭弹出层.
149 layer.closeAll(); 146 layer.closeAll();
150 data.splice(dataIndex,1); 147 data.splice(dataIndex,1);
151 - echartsDrawGTT.init(data,false,true);  
152 - echartsDrawGTT.refreshDrag(); 148 + echartsDrawGTT.init(data,false,true,false);
153 layer.msg('删除成功!'); 149 layer.msg('删除成功!');
154 }); 150 });
155 } 151 }
@@ -180,8 +176,7 @@ function dropdownMenuSwitchUpDown(dataIndex) { @@ -180,8 +176,7 @@ function dropdownMenuSwitchUpDown(dataIndex) {
180 data[dataIndex].value[3] = parseInt(dataMap.map.downInTimer)*60000; 176 data[dataIndex].value[3] = parseInt(dataMap.map.downInTimer)*60000;
181 data[dataIndex].value[2] = data[dataIndex].value[1] + data[dataIndex].value[3]; 177 data[dataIndex].value[2] = data[dataIndex].value[1] + data[dataIndex].value[3];
182 } 178 }
183 - echartsDrawGTT.init(data,false,true);  
184 - echartsDrawGTT.refreshDrag(); 179 + echartsDrawGTT.init(data,false,true,false);
185 layer.msg('设置为上行成功!'); 180 layer.msg('设置为上行成功!');
186 } 181 }
187 // 路牌切换上下行 182 // 路牌切换上下行
@@ -213,8 +208,7 @@ function dropdownMenuLpSwitchUpDown(dataIndex) { @@ -213,8 +208,7 @@ function dropdownMenuLpSwitchUpDown(dataIndex) {
213 } 208 }
214 } 209 }
215 } 210 }
216 - echartsDrawGTT.init(data,false,true);  
217 - echartsDrawGTT.refreshDrag(); 211 + echartsDrawGTT.init(data,false,true,false);
218 layer.msg('路牌切换上下行成功!'); 212 layer.msg('路牌切换上下行成功!');
219 } 213 }
220 // 设为正常 214 // 设为正常
@@ -226,11 +220,7 @@ function dropdownMenuSetNormal(dataIndex) { @@ -226,11 +220,7 @@ function dropdownMenuSetNormal(dataIndex) {
226 220
227 if(!isType(data[dataIndex].value[6],'设置为正常班次','normal','正常班次')) { 221 if(!isType(data[dataIndex].value[6],'设置为正常班次','normal','正常班次')) {
228 data[dataIndex].value[6] = 'normal'; 222 data[dataIndex].value[6] = 'normal';
229 - historyData.push(data);  
230 - echartsDrawGTT.set_keyIndex(++_keyIndex);  
231 - echartsDrawGTT.setHistoryData(historyData);  
232 - echartsDrawGTT.refreshDrag();  
233 - echartsDrawGTT.refreshUpDownData(); 223 + echartsDrawGTT.init(data,false,true,false);
234 layer.msg('设置为正常成功!'); 224 layer.msg('设置为正常成功!');
235 } 225 }
236 } 226 }
@@ -242,11 +232,7 @@ function dropdownMenuSetRegion(dataIndex) { @@ -242,11 +232,7 @@ function dropdownMenuSetRegion(dataIndex) {
242 data = $.extend(true, [], data, historyData[_keyIndex]); 232 data = $.extend(true, [], data, historyData[_keyIndex]);
243 if(!isType(data[dataIndex].value[6],'设置为区间班次','region','区间班次')) { 233 if(!isType(data[dataIndex].value[6],'设置为区间班次','region','区间班次')) {
244 data[dataIndex].value[6] = 'region'; 234 data[dataIndex].value[6] = 'region';
245 - historyData.push(data);  
246 - echartsDrawGTT.set_keyIndex(++_keyIndex);  
247 - echartsDrawGTT.setHistoryData(historyData);  
248 - echartsDrawGTT.refreshDrag();  
249 - echartsDrawGTT.refreshUpDownData(); 235 + echartsDrawGTT.init(data,false,true,false);
250 layer.msg('设置为区间成功!'); 236 layer.msg('设置为区间成功!');
251 } 237 }
252 } 238 }
@@ -258,11 +244,7 @@ function dropdownMenuSetFb(dataIndex) { @@ -258,11 +244,7 @@ function dropdownMenuSetFb(dataIndex) {
258 data = $.extend(true, [], data, historyData[_keyIndex]); 244 data = $.extend(true, [], data, historyData[_keyIndex]);
259 if(!isType(data[dataIndex].value[6],'设置为分班班次') && !isType(data[dataIndex].value[16],'设置为分班班次',1,'分班班次')) { 245 if(!isType(data[dataIndex].value[6],'设置为分班班次') && !isType(data[dataIndex].value[16],'设置为分班班次',1,'分班班次')) {
260 data[dataIndex].value[16] = 1; 246 data[dataIndex].value[16] = 1;
261 - historyData.push(data);  
262 - echartsDrawGTT.set_keyIndex(++_keyIndex);  
263 - echartsDrawGTT.setHistoryData(historyData);  
264 - echartsDrawGTT.refreshDrag();  
265 - echartsDrawGTT.refreshUpDownData(); 247 + echartsDrawGTT.init(data,false,true,false);
266 layer.msg('设置为分班成功!'); 248 layer.msg('设置为分班成功!');
267 } 249 }
268 } 250 }
@@ -274,11 +256,7 @@ function dropdownMenuSetNoFb(dataIndex) { @@ -274,11 +256,7 @@ function dropdownMenuSetNoFb(dataIndex) {
274 data = $.extend(true, [], data, historyData[_keyIndex]); 256 data = $.extend(true, [], data, historyData[_keyIndex]);
275 if(!isType(data[dataIndex].value[6],'取消分班') && !isType(data[dataIndex].value[16],0,'不是分班班次')) { 257 if(!isType(data[dataIndex].value[6],'取消分班') && !isType(data[dataIndex].value[16],0,'不是分班班次')) {
276 data[dataIndex].value[16] = 0; 258 data[dataIndex].value[16] = 0;
277 - historyData.push(data);  
278 - echartsDrawGTT.set_keyIndex(++_keyIndex);  
279 - echartsDrawGTT.setHistoryData(historyData);  
280 - echartsDrawGTT.refreshDrag();  
281 - echartsDrawGTT.refreshUpDownData(); 259 + echartsDrawGTT.init(data,false,true,false);
282 layer.msg('取消分班成功!'); 260 layer.msg('取消分班成功!');
283 } 261 }
284 } 262 }
@@ -290,11 +268,7 @@ function dropdownMenuSetVenting(dataIndex) { @@ -290,11 +268,7 @@ function dropdownMenuSetVenting(dataIndex) {
290 data = $.extend(true, [], data, historyData[_keyIndex]); 268 data = $.extend(true, [], data, historyData[_keyIndex]);
291 if(!isType(data[dataIndex].value[6],'设置为直放班次','venting','直放班次')) { 269 if(!isType(data[dataIndex].value[6],'设置为直放班次','venting','直放班次')) {
292 data[dataIndex].value[6] = 'venting'; 270 data[dataIndex].value[6] = 'venting';
293 - historyData.push(data);  
294 - echartsDrawGTT.set_keyIndex(++_keyIndex);  
295 - echartsDrawGTT.setHistoryData(historyData);  
296 - echartsDrawGTT.refreshDrag();  
297 - echartsDrawGTT.refreshUpDownData(); 271 + echartsDrawGTT.init(data,false,true,false);
298 layer.msg('设置为直放成功!'); 272 layer.msg('设置为直放成功!');
299 } 273 }
300 } 274 }
@@ -306,11 +280,7 @@ function dropdownMenuSetMajor(dataIndex) { @@ -306,11 +280,7 @@ function dropdownMenuSetMajor(dataIndex) {
306 data = $.extend(true, [], data, historyData[_keyIndex]); 280 data = $.extend(true, [], data, historyData[_keyIndex]);
307 if(!isType(data[dataIndex].value[6],'设置为放站班次','major','放站班次')){ 281 if(!isType(data[dataIndex].value[6],'设置为放站班次','major','放站班次')){
308 data[dataIndex].value[6] = 'major' ; 282 data[dataIndex].value[6] = 'major' ;
309 - historyData.push(data);  
310 - echartsDrawGTT.set_keyIndex(++_keyIndex);  
311 - echartsDrawGTT.setHistoryData(historyData);  
312 - echartsDrawGTT.refreshDrag();  
313 - echartsDrawGTT.refreshUpDownData(); 283 + echartsDrawGTT.init(data,false,true,false);
314 layer.msg('设置为放站成功!'); 284 layer.msg('设置为放站成功!');
315 } 285 }
316 } 286 }
@@ -460,6 +430,6 @@ $(&#39;.parambtn&#39;).on(&#39;click&#39;, function() { @@ -460,6 +430,6 @@ $(&#39;.parambtn&#39;).on(&#39;click&#39;, function() {
460 $.get('/pages/base/timesmodel/paramadd.html', function(m){ 430 $.get('/pages/base/timesmodel/paramadd.html', function(m){
461 $(pjaxContainer).append(m); 431 $(pjaxContainer).append(m);
462 // 规定被选元素要触发的事件。可以使自定义事件(使用 bind() 函数来附加),或者任何标准事件。 432 // 规定被选元素要触发的事件。可以使自定义事件(使用 bind() 函数来附加),或者任何标准事件。
463 - $('#paramadd_mobal').trigger('paramAddMobal.show', [Main_v2, Main_v2_2, InternalScheduleObj_v2_2]); 433 + $('#paramadd_mobal').trigger('paramAddMobal.show', Main_v2);
464 }); 434 });
465 }); 435 });
466 \ No newline at end of file 436 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/js/v1/AdjustTrip.js
@@ -15,26 +15,47 @@ @@ -15,26 +15,47 @@
15 */ 15 */
16 var AdjustTrip = function () { 16 var AdjustTrip = function () {
17 var departureClearanceAdjust = function (bcList, dataMap) { 17 var departureClearanceAdjust = function (bcList, dataMap) {
18 - var upBc = new Array(), downBc = new Array();  
19 - // 取出上下行班次,并按发车时间排序  
20 - $.each(bcList, function () {  
21 - if(this.bcType == "normal"){  
22 - if(this.xlDir == "relationshipGraph-up")  
23 - upBc.push(this);  
24 - if(this.xlDir == "relationshipGraph-down")  
25 - downBc.push(this); 18 + var upDownbc = bcFun.getUpAndDownBc(bcList, dataMap);
  19 +
  20 + // 升序排序
  21 + // upDownbc[0].sort(function(a,b){return DateTimeTool.getDateTime(a.fcsj)-DateTimeTool.getDateTime(b.fcsj)});
  22 + // upDownbc[1].sort(function(a,b){return DateTimeTool.getDateTime(a.fcsj)-DateTimeTool.getDateTime(b.fcsj)});
  23 + for(var i=1; i<20; i++) {
  24 + if(i%2 == 0) {
  25 + calculate(upDownbc[1], bcList, dataMap, 5);
  26 + calculate(upDownbc[0], bcList, dataMap, 5);
  27 + } else {
  28 + calculate(upDownbc[0], bcList, dataMap, 5);
  29 + calculate(upDownbc[1], bcList, dataMap, 5);
  30 +
26 } 31 }
27 - });  
28 - // upBc.sort(function(a,b){return a.fcint-b.fcint});  
29 - // downBc.sort(function(a,b){return a.fcint-b.fcint});  
30 - calculate(upBc, bcList, dataMap, 11);  
31 - calculate(downBc, bcList, dataMap, 11); 32 + }
  33 + for(var i=1; i<20; i++) {
  34 + if(i%2 == 0) {
  35 + calculateReverse(upDownbc[1], bcList, dataMap, 5);
  36 + calculateReverse(upDownbc[0], bcList, dataMap, 5);
  37 + } else {
  38 + calculateReverse(upDownbc[0], bcList, dataMap, 5);
  39 + calculateReverse(upDownbc[1], bcList, dataMap, 5);
  40 +
  41 + }
  42 + }
  43 + for(var i=1; i<10; i++) {
  44 + if(i%2 == 0) {
  45 + calculate(upDownbc[1], bcList, dataMap, 5);
  46 + calculate(upDownbc[0], bcList, dataMap, 5);
  47 + } else {
  48 + calculate(upDownbc[0], bcList, dataMap, 5);
  49 + calculate(upDownbc[1], bcList, dataMap, 5);
  50 +
  51 + }
  52 + }
32 }; 53 };
33 54
34 var iBcCountOfGroup = 3; // 3个班次一次参与计算 55 var iBcCountOfGroup = 3; // 3个班次一次参与计算
35 var dirBcOfGroup = []; 56 var dirBcOfGroup = [];
36 var dirBcIntervalOfGroup = []; // 班次间隔列表,3个班次,2个间隔 57 var dirBcIntervalOfGroup = []; // 班次间隔列表,3个班次,2个间隔
37 - var oBcFcTime; // 班次发车时间 58 + var oBcFcTime = null; // 班次发车时间
38 /** 59 /**
39 * 平衡车距内部方法。 60 * 平衡车距内部方法。
40 * @param dirBc {array} 单方向班次列表 61 * @param dirBc {array} 单方向班次列表
@@ -46,19 +67,20 @@ var AdjustTrip = function () { @@ -46,19 +67,20 @@ var AdjustTrip = function () {
46 var calculate = function (dirBc, bcList, dataMap, iFre) { 67 var calculate = function (dirBc, bcList, dataMap, iFre) {
47 if(iFre > 0){ 68 if(iFre > 0){
48 // 升序排序 69 // 升序排序
49 - dirBc.sort(function(a,b){return a.fcint-b.fcint}); 70 + dirBc.sort(function(a,b){return DateTimeTool.getDateTime(a.fcsj)-DateTimeTool.getDateTime(b.fcsj)});
50 71
51 for (var i = 0; i <= dirBc.length; i++) { 72 for (var i = 0; i <= dirBc.length; i++) {
52 // 获取班次列表 73 // 获取班次列表
53 _calcuBcGroup(i, dirBc); 74 _calcuBcGroup(i, dirBc);
54 75
55 - if (dirBcOfGroup.length > 0) { 76 + if (dirBcOfGroup.length > 2) {
56 // 获取中间预调整的班次时间 77 // 获取中间预调整的班次时间
57 - oBcFcTime = dirBcOfGroup[1].fcint; 78 + oBcFcTime = dirBcOfGroup[1].fcsj;
58 // 获取发车间隙:用发车时间判断 79 // 获取发车间隙:用发车时间判断
59 - var fcjx = dataMap.fcjx[judgmentTimeQuantum(oBcFcTime)]; 80 + var fcjx = dataMap.fcjx[DateTimeTool.judgmentTimeQuantum(DateTimeTool.getDateTime(oBcFcTime))];
60 // 发车时间所在时间段 81 // 发车时间所在时间段
61 - // var timeQuantum = judgmentTimeQuantum(oBcFcTime); 82 + // var timeQuantum = DateTimeTool.judgmentTimeQuantum(oBcFcTime);
  83 +
62 if (dirBcIntervalOfGroup[0] < fcjx.min) { 84 if (dirBcIntervalOfGroup[0] < fcjx.min) {
63 // 发车间隙调整为高峰发车间隙 +时间 85 // 发车间隙调整为高峰发车间隙 +时间
64 if (_isModifyBcFcsj( 86 if (_isModifyBcFcsj(
@@ -73,6 +95,21 @@ var AdjustTrip = function () { @@ -73,6 +95,21 @@ var AdjustTrip = function () {
73 dataMap, 95 dataMap,
74 1 96 1
75 ); 97 );
  98 + } else {
  99 + // 最后一个班次不能为末班车 中间班次不能调整,就调整后一个的班次
  100 + if (!bcFun.lpBcIsHaveLast(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj(
  101 + bcList,
  102 + dirBcOfGroup[2],
  103 + dataMap,
  104 + -1
  105 + )) {
  106 + _modifyFcsj(
  107 + bcList,
  108 + dirBcOfGroup[2],
  109 + dataMap,
  110 + -1
  111 + );
  112 + }
76 } 113 }
77 } else if (dirBcIntervalOfGroup[0] > fcjx.max) { 114 } else if (dirBcIntervalOfGroup[0] > fcjx.max) {
78 // 发车间隙调整为高峰发车间隙 -时间 115 // 发车间隙调整为高峰发车间隙 -时间
@@ -81,17 +118,35 @@ var AdjustTrip = function () { @@ -81,17 +118,35 @@ var AdjustTrip = function () {
81 dirBcOfGroup[1], 118 dirBcOfGroup[1],
82 dataMap, 119 dataMap,
83 -1 120 -1
  121 + // fcjx.max - dirBcIntervalOfGroup[0]
84 )) { 122 )) {
85 _modifyFcsj( 123 _modifyFcsj(
86 bcList, 124 bcList,
87 dirBcOfGroup[1], 125 dirBcOfGroup[1],
88 dataMap, 126 dataMap,
89 -1 127 -1
  128 + // fcjx.max - dirBcIntervalOfGroup[0]
90 ); 129 );
  130 + } else {
  131 + // 下一个班次不能为首班车 中间班次不能调整,就调整下一个的班次
  132 + if (!bcFun.lpBcIsHaveLast(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj(
  133 + bcList,
  134 + dirBcOfGroup[2],
  135 + dataMap,
  136 + fcjx.max - dirBcIntervalOfGroup[0]
  137 + )) {
  138 + _modifyFcsj(
  139 + bcList,
  140 + dirBcOfGroup[2],
  141 + dataMap,
  142 + fcjx.max - dirBcIntervalOfGroup[0]
  143 + );
  144 + }
91 } 145 }
92 } else { 146 } else {
93 // -1或+1分钟 147 // -1或+1分钟
94 if (Math.abs(dirBcIntervalOfGroup[0] - dirBcIntervalOfGroup[1]) <= 1) { 148 if (Math.abs(dirBcIntervalOfGroup[0] - dirBcIntervalOfGroup[1]) <= 1) {
  149 + continue;
95 // 两个间隔相差1分钟,不处理 150 // 两个间隔相差1分钟,不处理
96 } else if (dirBcIntervalOfGroup[0] > dirBcIntervalOfGroup[1]) { 151 } else if (dirBcIntervalOfGroup[0] > dirBcIntervalOfGroup[1]) {
97 if (_isModifyBcFcsj( 152 if (_isModifyBcFcsj(
@@ -106,6 +161,21 @@ var AdjustTrip = function () { @@ -106,6 +161,21 @@ var AdjustTrip = function () {
106 dataMap, 161 dataMap,
107 -1 162 -1
108 ); 163 );
  164 + } else {
  165 + // 前一个班次不能为首班车 中间班次不能调整,就调整前一个的班次
  166 + if (!bcFun.lpBcIsHaveFirst(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj(
  167 + bcList,
  168 + dirBcOfGroup[0],
  169 + dataMap,
  170 + 1
  171 + )) {
  172 + _modifyFcsj(
  173 + bcList,
  174 + dirBcOfGroup[0],
  175 + dataMap,
  176 + 1
  177 + );
  178 + }
109 } 179 }
110 } else { 180 } else {
111 if (_isModifyBcFcsj( 181 if (_isModifyBcFcsj(
@@ -120,6 +190,21 @@ var AdjustTrip = function () { @@ -120,6 +190,21 @@ var AdjustTrip = function () {
120 dataMap, 190 dataMap,
121 1 191 1
122 ); 192 );
  193 + } else {
  194 + // 最后一个班次不能为末班车 中间班次不能调整,就调整后一个的班次
  195 + if (!bcFun.lpBcIsHaveLast(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj(
  196 + bcList,
  197 + dirBcOfGroup[2],
  198 + dataMap,
  199 + -1
  200 + )) {
  201 + _modifyFcsj(
  202 + bcList,
  203 + dirBcOfGroup[2],
  204 + dataMap,
  205 + -1
  206 + );
  207 + }
123 } 208 }
124 } 209 }
125 } 210 }
@@ -140,7 +225,10 @@ var AdjustTrip = function () { @@ -140,7 +225,10 @@ var AdjustTrip = function () {
140 dirBcOfGroup = []; 225 dirBcOfGroup = [];
141 dirBcIntervalOfGroup = []; 226 dirBcIntervalOfGroup = [];
142 for (var i = iStartIndex; i < iStartIndex + iBcCountOfGroup && iStartIndex < dirBc.length - 2; i++) { 227 for (var i = iStartIndex; i < iStartIndex + iBcCountOfGroup && iStartIndex < dirBc.length - 2; i++) {
143 - dirBcOfGroup.push(dirBc[i]); 228 + if(dirBc[i].bcType == 'cf')
  229 + iStartIndex++;
  230 + else
  231 + dirBcOfGroup.push(dirBc[i]);
144 } 232 }
145 for (var j = 0; j < dirBcOfGroup.length - 1; j++) { 233 for (var j = 0; j < dirBcOfGroup.length - 1; j++) {
146 dirBcIntervalOfGroup.push((DateTimeTool.getDateTime(dirBcOfGroup[j + 1].fcsj).getTime() - DateTimeTool.getDateTime(dirBcOfGroup[j].fcsj).getTime())/60000); 234 dirBcIntervalOfGroup.push((DateTimeTool.getDateTime(dirBcOfGroup[j + 1].fcsj).getTime() - DateTimeTool.getDateTime(dirBcOfGroup[j].fcsj).getTime())/60000);
@@ -149,6 +237,201 @@ var AdjustTrip = function () { @@ -149,6 +237,201 @@ var AdjustTrip = function () {
149 }; 237 };
150 238
151 /** 239 /**
  240 + * 平衡车距内部方法(反方向)。
  241 + * @param dirBc {array} 单方向班次列表
  242 + * @param bcList {array} 所有班次列表对象
  243 + * @param dataMap {array} 参数对象
  244 + * @param iFre {int} 递归次数
  245 + * @private
  246 + */
  247 + var calculateReverse = function (dirBc, bcList, dataMap, iFre) {
  248 + if(iFre > 0){
  249 + // 降序排序
  250 + dirBc.sort(function(a,b){return DateTimeTool.getDateTime(b.fcsj)-DateTimeTool.getDateTime(a.fcsj)});
  251 +
  252 + for (var i = 0; i <= dirBc.length; i++) {
  253 + // 获取班次列表
  254 + _calcuReverseBcGroup(i, dirBc);
  255 +
  256 + if (dirBcOfGroup.length > 2) {
  257 + // 获取中间预调整的班次时间
  258 + oBcFcTime = dirBcOfGroup[1].fcsj;
  259 + // 获取发车间隙:用发车时间判断
  260 + var fcjx = dataMap.fcjx[DateTimeTool.judgmentTimeQuantum(DateTimeTool.getDateTime(oBcFcTime))];
  261 + // 发车时间所在时间段
  262 + // var timeQuantum = DateTimeTool.judgmentTimeQuantum(oBcFcTime);
  263 +
  264 + if (dirBcIntervalOfGroup[0] < fcjx.min) {
  265 + // 发车间隙调整为高峰发车间隙 +时间
  266 + if (_isModifyBcFcsj(
  267 + bcList,
  268 + dirBcOfGroup[1],
  269 + dataMap,
  270 + -1
  271 + )) {
  272 + _modifyFcsj(
  273 + bcList,
  274 + dirBcOfGroup[1],
  275 + dataMap,
  276 + -1
  277 + );
  278 + } else {
  279 + // 最后一个班次不能为末班车 中间班次不能调整,就调整后一个的班次
  280 + if (!bcFun.lpBcIsHaveFirst(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj(
  281 + bcList,
  282 + dirBcOfGroup[2],
  283 + dataMap,
  284 + 1
  285 + )) {
  286 + _modifyFcsj(
  287 + bcList,
  288 + dirBcOfGroup[2],
  289 + dataMap,
  290 + 1
  291 + );
  292 + }
  293 + }
  294 + } else if (dirBcIntervalOfGroup[0] > fcjx.max) {
  295 + // 发车间隙调整为高峰发车间隙 -时间
  296 + if (_isModifyBcFcsj(
  297 + bcList,
  298 + dirBcOfGroup[1],
  299 + dataMap,
  300 + 1
  301 + // fcjx.max - dirBcIntervalOfGroup[0]
  302 + )) {
  303 + _modifyFcsj(
  304 + bcList,
  305 + dirBcOfGroup[1],
  306 + dataMap,
  307 + 1
  308 + // fcjx.max - dirBcIntervalOfGroup[0]
  309 + );
  310 + } else {
  311 + // 最后一个班次不能为首班车 中间班次不能调整,就调整后一个的班次
  312 + if (!bcFun.lpBcIsHaveFirst(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj(
  313 + bcList,
  314 + dirBcOfGroup[2],
  315 + dataMap,
  316 + dirBcIntervalOfGroup[0] - fcjx.max
  317 + )) {
  318 + _modifyFcsj(
  319 + bcList,
  320 + dirBcOfGroup[2],
  321 + dataMap,
  322 + dirBcIntervalOfGroup[0] - fcjx.max
  323 + );
  324 + } else {
  325 + // 前一个班次不能为首班车 中间班次不能调整,就调整前一个的班次
  326 + if (!bcFun.lpBcIsHaveLast(dirBcOfGroup[0]) && _isModifyBcFcsj(
  327 + bcList,
  328 + dirBcOfGroup[0],
  329 + dataMap,
  330 + -1
  331 + )) {
  332 + _modifyFcsj(
  333 + bcList,
  334 + dirBcOfGroup[0],
  335 + dataMap,
  336 + -1
  337 + );
  338 + }
  339 + }
  340 + }
  341 + } else {
  342 + // -1或+1分钟
  343 + if (Math.abs(dirBcIntervalOfGroup[0] - dirBcIntervalOfGroup[1]) <= 1) {
  344 + continue;
  345 + // 两个间隔相差1分钟,不处理
  346 + } else if (dirBcIntervalOfGroup[0] > dirBcIntervalOfGroup[1]) {
  347 + if (_isModifyBcFcsj(
  348 + bcList,
  349 + dirBcOfGroup[1],
  350 + dataMap,
  351 + 1
  352 + )) {
  353 + _modifyFcsj(
  354 + bcList,
  355 + dirBcOfGroup[1],
  356 + dataMap,
  357 + 1
  358 + );
  359 + } else {
  360 + // 前一个班次不能为首班车 中间班次不能调整,就调整前一个的班次
  361 + if (!bcFun.lpBcIsHaveLast(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj(
  362 + bcList,
  363 + dirBcOfGroup[0],
  364 + dataMap,
  365 + -1
  366 + )) {
  367 + _modifyFcsj(
  368 + bcList,
  369 + dirBcOfGroup[0],
  370 + dataMap,
  371 + -1
  372 + );
  373 + }
  374 + }
  375 + } else {
  376 + if (_isModifyBcFcsj(
  377 + bcList,
  378 + dirBcOfGroup[1],
  379 + dataMap,
  380 + -1
  381 + )) {
  382 + _modifyFcsj(
  383 + bcList,
  384 + dirBcOfGroup[1],
  385 + dataMap,
  386 + -1
  387 + );
  388 + } else {
  389 + // 最后一个班次不能为末班车 中间班次不能调整,就调整后一个的班次
  390 + if (!bcFun.lpBcIsHaveFirst(dirBcOfGroup,dataMap.smbcsjArr) && _isModifyBcFcsj(
  391 + bcList,
  392 + dirBcOfGroup[2],
  393 + dataMap,
  394 + 1
  395 + )) {
  396 + _modifyFcsj(
  397 + bcList,
  398 + dirBcOfGroup[2],
  399 + dataMap,
  400 + 1
  401 + );
  402 + }
  403 + }
  404 + }
  405 + }
  406 + }
  407 + }
  408 + // bcFun.deleteNotInRangeBc(dirBc, dataMap.smbcsjArr[].kssj, dataMap.smbcsjArr[].jssj);
  409 + // 递归迭代
  410 + calculateReverse(dirBc, bcList, dataMap, iFre - 1);
  411 + }
  412 + };
  413 + /**
  414 + * 按照规则计算班次列表()。
  415 + * @param iStartIndex {int} 开始索引
  416 + * @param dirBc {array} 班次列表
  417 + * @private
  418 + */
  419 + var _calcuReverseBcGroup = function(iStartIndex, dirBc) {
  420 + dirBcOfGroup = [];
  421 + dirBcIntervalOfGroup = [];
  422 + for (var i = iStartIndex; i < iStartIndex + iBcCountOfGroup && iStartIndex < dirBc.length - 2; i++) {
  423 + if(dirBc[i].bcType == 'cf')
  424 + iStartIndex++;
  425 + else
  426 + dirBcOfGroup.push(dirBc[i]);
  427 + }
  428 + for (var j = 0; j < dirBcOfGroup.length - 1; j++) {
  429 + dirBcIntervalOfGroup.push((DateTimeTool.getDateTime(dirBcOfGroup[j].fcsj).getTime() - DateTimeTool.getDateTime(dirBcOfGroup[j + 1].fcsj).getTime())/60000);
  430 + // dirBcIntervalOfGroup.push(Math.round((dirBcOfGroup[j + 1].fcint - dirBcOfGroup[j].fcint)/360000));
  431 + }
  432 + };
  433 +
  434 + /**
152 * 是否可以调整班次发车时间。 435 * 是否可以调整班次发车时间。
153 * @param bcList {InternalLpObj} 所有班次对象 436 * @param bcList {InternalLpObj} 所有班次对象
154 * @param oBc {InternalBcObj} 调整班次对象 437 * @param oBc {InternalBcObj} 调整班次对象
@@ -159,19 +442,21 @@ var AdjustTrip = function () { @@ -159,19 +442,21 @@ var AdjustTrip = function () {
159 // 获取前后班次 442 // 获取前后班次
160 var bc = getLpPrevAndNextBc(bcList, oBc), 443 var bc = getLpPrevAndNextBc(bcList, oBc),
161 prevBc = bc[0], 444 prevBc = bc[0],
162 - nextBc = bc[1]; 445 + nextBc = bc[1],
  446 + cfBc = bc[2],
  447 + cfBcsj = 0;
  448 + if(cfBc != null){
  449 + cfBcsj = cfBc.bcsj;
  450 + }
163 if (prevBc != null && nextBc != null){ 451 if (prevBc != null && nextBc != null){
164 - if (prevBc.bcType == 'cf') { // 如果是吃饭班次,不能修改发车时间  
165 - return false;  
166 - }  
167 // 上一个班次的停站范围, 本班次停站范围, 上一班次停站时间, 本班次停站时间 452 // 上一个班次的停站范围, 本班次停站范围, 上一班次停站时间, 本班次停站时间
168 - var prevStopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(prevBc.xlDir)][judgmentTimeQuantum(prevBc.fcint)],  
169 - StopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(oBc.xlDir)][judgmentTimeQuantum(oBc.fcint)], 453 + var prevStopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(prevBc.xlDir)][DateTimeTool.judgmentTimeQuantum(prevBc.fcint)],
  454 + StopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(oBc.xlDir)][DateTimeTool.judgmentTimeQuantum(oBc.fcint)],
170 // prevBcStopTime = prevBc.STOPTIME + iStep, 455 // prevBcStopTime = prevBc.STOPTIME + iStep,
171 // BcStopTime = oBc.STOPTIME + iStep; 456 // BcStopTime = oBc.STOPTIME + iStep;
172 // iStep为班次往后移动的时间,调整后的时间 = 停站 - 往后移动的时间 457 // iStep为班次往后移动的时间,调整后的时间 = 停站 - 往后移动的时间
173 prevBcStopTime = (DateTimeTool.getDateTime(oBc.fcsj) - DateTimeTool.getDateTime(prevBc.ARRIVALTIME))/60000 + iStep, 458 prevBcStopTime = (DateTimeTool.getDateTime(oBc.fcsj) - DateTimeTool.getDateTime(prevBc.ARRIVALTIME))/60000 + iStep,
174 - BcStopTime = (DateTimeTool.getDateTime(nextBc.fcsj) - DateTimeTool.getDateTime(oBc.ARRIVALTIME))/60000 - iStep; 459 + BcStopTime = (DateTimeTool.getDateTime(nextBc.fcsj) - DateTimeTool.getDateTime(oBc.ARRIVALTIME))/60000 - iStep - cfBcsj; // 如果有吃饭,则多减掉一个吃饭班次的运行时间
175 // 班次移动调整发车间隔时,需要考录的移动班次的前后停站 460 // 班次移动调整发车间隔时,需要考录的移动班次的前后停站
176 if (prevBcStopTime >= 0 && BcStopTime >= 0) { 461 if (prevBcStopTime >= 0 && BcStopTime >= 0) {
177 return true; 462 return true;
@@ -179,9 +464,9 @@ var AdjustTrip = function () { @@ -179,9 +464,9 @@ var AdjustTrip = function () {
179 return false; 464 return false;
180 } 465 }
181 } else if(prevBc == null && nextBc != null) { 466 } else if(prevBc == null && nextBc != null) {
182 - var StopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(nextBc.xlDir)][judgmentTimeQuantum(nextBc.fcint)],  
183 - BcStopTime = (DateTimeTool.getDateTime(nextBc.fcsj) - DateTimeTool.getDateTime(oBc.ARRIVALTIME))/60000 - iStep;  
184 - // 班次移动调整发车间隔时,需要考录的移动班次的前后停站 TODO:没有判定调整发车时间后会不会不够 467 + var StopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(nextBc.xlDir)][DateTimeTool.judgmentTimeQuantum(nextBc.fcint)],
  468 + BcStopTime = (DateTimeTool.getDateTime(nextBc.fcsj) - DateTimeTool.getDateTime(oBc.ARRIVALTIME))/60000 - iStep - cfBcsj; // 如果有吃饭,则多减掉一个吃饭班次的运行时间
  469 + // 班次移动调整发车间隔时,需要考录的移动班次的前后停站
185 if (BcStopTime >= 0) { 470 if (BcStopTime >= 0) {
186 return true; 471 return true;
187 } else { 472 } else {
@@ -189,10 +474,7 @@ var AdjustTrip = function () { @@ -189,10 +474,7 @@ var AdjustTrip = function () {
189 } 474 }
190 // 如果是第一个班次为空 475 // 如果是第一个班次为空
191 } else if(prevBc != null && nextBc == null) { 476 } else if(prevBc != null && nextBc == null) {
192 - if (prevBc.bcType == 'cf') { // 如果是吃饭班次,不能修改发车时间  
193 - return false;  
194 - }  
195 - var prevStopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(prevBc.xlDir)][judgmentTimeQuantum(prevBc.fcint)], 477 + var prevStopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(prevBc.xlDir)][DateTimeTool.judgmentTimeQuantum(prevBc.fcint)],
196 prevBcStopTime = (DateTimeTool.getDateTime(oBc.fcsj) - DateTimeTool.getDateTime(prevBc.ARRIVALTIME))/60000 + iStep; 478 prevBcStopTime = (DateTimeTool.getDateTime(oBc.fcsj) - DateTimeTool.getDateTime(prevBc.ARRIVALTIME))/60000 + iStep;
197 // 班次移动调整发车间隔时,需要考录的移动班次的前后停站 479 // 班次移动调整发车间隔时,需要考录的移动班次的前后停站
198 if (prevBcStopTime >= 0) { 480 if (prevBcStopTime >= 0) {
@@ -202,53 +484,6 @@ var AdjustTrip = function () { @@ -202,53 +484,6 @@ var AdjustTrip = function () {
202 } 484 }
203 } 485 }
204 } 486 }
205 - /*function _isModifyBcFcsj(bcList, oBc, dataMap, iStep) {  
206 - // 获取前后班次  
207 - var bc = getLpPrevAndNextBc(bcList, oBc),  
208 - prevBc = bc[0],  
209 - nextBc = bc[1];  
210 - if (prevBc != null && nextBc != null){  
211 - if (prevBc.bcType == 'cf') { // 如果是吃饭班次,不能修改发车时间  
212 - return false;  
213 - }  
214 - // 上一个班次的停站范围, 本班次停站范围, 上一班次停站时间, 本班次停站时间  
215 - var prevStopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(prevBc.xlDir)][judgmentTimeQuantum(prevBc.fcint)],  
216 - StopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(oBc.xlDir)][judgmentTimeQuantum(oBc.fcint)],  
217 - // prevBcStopTime = prevBc.STOPTIME + iStep,  
218 - // BcStopTime = oBc.STOPTIME + iStep;  
219 - // iStep为班次往后移动的时间,调整后的时间 = 停站 - 往后移动的时间  
220 - prevBcStopTime = (DateTimeTool.getDateTime(oBc.fcsj) - DateTimeTool.getDateTime(prevBc.ARRIVALTIME))/60000 + iStep,  
221 - BcStopTime = (DateTimeTool.getDateTime(nextBc.fcsj) - DateTimeTool.getDateTime(oBc.ARRIVALTIME))/60000 - iStep;  
222 - // 班次移动调整发车间隔时,需要考录的移动班次的前后停站  
223 - if (prevBcStopTime >= prevStopTimeScope.min && BcStopTime >= StopTimeScope.min) {  
224 - return true;  
225 - } else {  
226 - return false;  
227 - }  
228 - } else if(prevBc == null && nextBc != null) {  
229 - var StopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(nextBc.xlDir)][judgmentTimeQuantum(nextBc.fcint)],  
230 - BcStopTime = (DateTimeTool.getDateTime(nextBc.fcsj) - DateTimeTool.getDateTime(oBc.ARRIVALTIME))/60000 - iStep;  
231 - // 班次移动调整发车间隔时,需要考录的移动班次的前后停站 TODO:没有判定调整发车时间后会不会不够  
232 - if (BcStopTime >= StopTimeScope.min) {  
233 - return true;  
234 - } else {  
235 - return false;  
236 - }  
237 - // 如果是第一个班次为空  
238 - } else if(prevBc != null && nextBc == null) {  
239 - if (prevBc.bcType == 'cf') { // 如果是吃饭班次,不能修改发车时间  
240 - return false;  
241 - }  
242 - var prevStopTimeScope = dataMap.tzsj[bcFun.upDownStrConvertNum(prevBc.xlDir)][judgmentTimeQuantum(prevBc.fcint)],  
243 - prevBcStopTime = (DateTimeTool.getDateTime(oBc.fcsj) - DateTimeTool.getDateTime(prevBc.ARRIVALTIME))/60000 + iStep;  
244 - // 班次移动调整发车间隔时,需要考录的移动班次的前后停站  
245 - if (prevBcStopTime >= prevStopTimeScope.min) {  
246 - return true;  
247 - } else {  
248 - return false;  
249 - }  
250 - }  
251 - }*/  
252 487
253 /** 488 /**
254 * 调整发车时间(调整当前班次后,需要处理后续路牌的所有班次)。 489 * 调整发车时间(调整当前班次后,需要处理后续路牌的所有班次)。
@@ -261,19 +496,26 @@ var AdjustTrip = function () { @@ -261,19 +496,26 @@ var AdjustTrip = function () {
261 function _modifyFcsj(bcList, oBc, dataMap, iMin) { 496 function _modifyFcsj(bcList, oBc, dataMap, iMin) {
262 var bc = getLpPrevAndNextBc(bcList, oBc), 497 var bc = getLpPrevAndNextBc(bcList, oBc),
263 prevBc = bc[0], 498 prevBc = bc[0],
264 - nextBc = bc[1]; 499 + nextBc = bc[1],
  500 + cfBc = bc[2];
265 var fcsj = DateTimeTool.getDateTime(oBc.fcsj); 501 var fcsj = DateTimeTool.getDateTime(oBc.fcsj);
266 fcsj.setMinutes(fcsj.getMinutes() + iMin); 502 fcsj.setMinutes(fcsj.getMinutes() + iMin);
267 $.each(bcList, function () { 503 $.each(bcList, function () {
268 - if(this.lpNo == oBc.lpNo && this.fcno == oBc.fcno){ 504 + if(this.lpNo == oBc.lpNo && this.fcno == oBc.fcno && this.bcType != 'cf'){
269 var time = new Date(fcsj); 505 var time = new Date(fcsj);
270 - this.ARRIVALTIME = DateTimeTool.getHHmmStr(time.setMinutes(time.getMinutes() + this.bcsj)); 506 + time.setMinutes(time.getMinutes() + this.bcsj);
  507 + this.ARRIVALTIME = DateTimeTool.getHHmmStr(time);
271 this.fcsj = DateTimeTool.getHHmmStr(fcsj); 508 this.fcsj = DateTimeTool.getHHmmStr(fcsj);
272 this.fcint = fcsj.getTime(); 509 this.fcint = fcsj.getTime();
273 - // 前一个班次停站时间 = 原停站时间 - 中间班次移动时间  
274 - this.STOPTIME -= iMin; 510 + // 不是分班班次这调整停站 前一个班次停站时间 = 原停站时间 - 中间班次移动时间
  511 + if(this.isfb == 0)
  512 + this.STOPTIME -= iMin;
  513 + if(cfBc != null) {
  514 + cfBc.fcsj = this.ARRIVALTIME;
  515 + cfBc.ARRIVALTIME = DateTimeTool.getHHmmStr(time.setMinutes(time.getMinutes() + cfBc.bcsj));
  516 + }
275 } 517 }
276 - if(prevBc != undefined && prevBc != null && this.lpNo == oBc.lpNo && this.fcno == prevBc.fcno){ 518 + if(prevBc != undefined && prevBc != null && this.lpNo == oBc.lpNo && this.fcno == prevBc.fcno && this.isfb == 0){
277 // 前一个班次停站时间 = 原停站时间 + 中间班次移动时间 519 // 前一个班次停站时间 = 原停站时间 + 中间班次移动时间
278 this.STOPTIME += iMin; 520 this.STOPTIME += iMin;
279 } 521 }
@@ -283,37 +525,25 @@ var AdjustTrip = function () { @@ -283,37 +525,25 @@ var AdjustTrip = function () {
283 var getLpPrevAndNextBc = function (bcList, oBc) { 525 var getLpPrevAndNextBc = function (bcList, oBc) {
284 var lpBc = new Array(), 526 var lpBc = new Array(),
285 // 前一个班次 527 // 前一个班次
286 - prevBc = null, nextBc = null; 528 + prevBc = null, nextBc = null, cfBc = null;
287 $.each(bcList, function () { 529 $.each(bcList, function () {
288 if(this.lpNo == oBc.lpNo) 530 if(this.lpNo == oBc.lpNo)
289 lpBc.push(this); 531 lpBc.push(this);
290 }); 532 });
291 - lpBc.sort(function (a,b) {return a.fcint - b.fcint;}); 533 + lpBc.sort(function (a,b) {return DateTimeTool.getDateTime(a.fcsj)-DateTimeTool.getDateTime(b.fcsj);});
292 for(var n = 0; n < lpBc.length; n++) { 534 for(var n = 0; n < lpBc.length; n++) {
293 if(lpBc[n].fcno == oBc.fcno && n > 0) 535 if(lpBc[n].fcno == oBc.fcno && n > 0)
294 prevBc = lpBc[n-1]; 536 prevBc = lpBc[n-1];
295 - if(lpBc[n].fcno == oBc.fcno && n < lpBc.length-1)  
296 - nextBc = lpBc[n+1]; 537 + if(lpBc[n].fcno == oBc.fcno && n < lpBc.length-1){
  538 + if(lpBc[n+1].bcType == 'cf'){
  539 + nextBc = lpBc[n+2];
  540 + cfBc = lpBc[n+1];
  541 + } else {
  542 + nextBc = lpBc[n+1];
  543 + }
  544 + }
297 } 545 }
298 - return [prevBc, nextBc];  
299 - };  
300 - // 判断时间在什么时间段段内  
301 - /**  
302 - * 判断时间在什么时间段段内  
303 - * @param t 时间  
304 - * @private  
305 - */  
306 - var judgmentTimeQuantum = function (t) {  
307 - if(t <= DateTimeTool.getDateTime('6:30'))  
308 - return 0;  
309 - else if(t > DateTimeTool.getDateTime('6:30') && t <= DateTimeTool.getDateTime('8:30'))  
310 - return 1;  
311 - else if(t > DateTimeTool.getDateTime('8:30') && t <= DateTimeTool.getDateTime('16:00'))  
312 - return 2;  
313 - else if(t > DateTimeTool.getDateTime('16:00') && t <= DateTimeTool.getDateTime('18:00'))  
314 - return 3;  
315 - else if(t > DateTimeTool.getDateTime('18:00'))  
316 - return 4; 546 + return [prevBc, nextBc, cfBc];
317 }; 547 };
318 return { 548 return {
319 departureClearanceAdjust : departureClearanceAdjust 549 departureClearanceAdjust : departureClearanceAdjust
src/main/resources/static/pages/base/timesmodel/js/v1/bcFun.js
@@ -30,6 +30,7 @@ var bcFun = function() { @@ -30,6 +30,7 @@ var bcFun = function() {
30 obj.bcType = type; 30 obj.bcType = type;
31 obj.xlDir = dir; 31 obj.xlDir = dir;
32 obj.fcno = xh; 32 obj.fcno = xh;
  33 + obj.qs = xh;
33 obj.jhlc = jhlc;// 计划里程 34 obj.jhlc = jhlc;// 计划里程
34 obj.tcc = gatps.tcc_id;// 停车场id 35 obj.tcc = gatps.tcc_id;// 停车场id
35 obj.ttinfo = gatps.skbName;// 时刻表id 36 obj.ttinfo = gatps.skbName;// 时刻表id
@@ -125,6 +126,7 @@ var bcFun = function() { @@ -125,6 +126,7 @@ var bcFun = function() {
125 } 126 }
126 } 127 }
127 }; 128 };
  129 +
128 /** 130 /**
129 * @description (TODO) 获取 上、下行的正常、区间、空放、直放班次. 131 * @description (TODO) 获取 上、下行的正常、区间、空放、直放班次.
130 * @param 需要分割的班次数据集合. 132 * @param 需要分割的班次数据集合.
@@ -135,7 +137,7 @@ var bcFun = function() { @@ -135,7 +137,7 @@ var bcFun = function() {
135 var upArray = new Array(),downArray = new Array(),rs = new Array(); 137 var upArray = new Array(),downArray = new Array(),rs = new Array();
136 for(var j = 0 ; j< json.length ; j++) { 138 for(var j = 0 ; j< json.length ; j++) {
137 // 判断是否为正常、区间、空放、直放班次 139 // 判断是否为正常、区间、空放、直放班次
138 - if(json[j].bcType== dataMap.bcTypeArr.normal || 140 + /*if(json[j].bcType== dataMap.bcTypeArr.normal ||
139 json[j].bcType== dataMap.bcTypeArr.region || 141 json[j].bcType== dataMap.bcTypeArr.region ||
140 json[j].bcType== dataMap.bcTypeArr.major || 142 json[j].bcType== dataMap.bcTypeArr.major ||
141 json[j].bcType== dataMap.bcTypeArr.venting) { 143 json[j].bcType== dataMap.bcTypeArr.venting) {
@@ -143,9 +145,13 @@ var bcFun = function() { @@ -143,9 +145,13 @@ var bcFun = function() {
143 upArray.push(json[j]); 145 upArray.push(json[j]);
144 else if(json[j].xlDir == dataMap.dira[1]) 146 else if(json[j].xlDir == dataMap.dira[1])
145 downArray.push(json[j]); 147 downArray.push(json[j]);
146 - } 148 + }*/
  149 + if(json[j].xlDir == dataMap.dira[0])
  150 + upArray.push(json[j]);
  151 + else if(json[j].xlDir == dataMap.dira[1])
  152 + downArray.push(json[j]);
147 } 153 }
148 - rs.push(upArray,downArray); 154 + rs.push(upArray, downArray);
149 // 返回数据. 155 // 返回数据.
150 return rs; 156 return rs;
151 }; 157 };
@@ -180,9 +186,9 @@ var bcFun = function() { @@ -180,9 +186,9 @@ var bcFun = function() {
180 } 186 }
181 // 按照发车序号顺序排序. 187 // 按照发车序号顺序排序.
182 lpbc_.sort(function(a,b){return a.fcno-b.fcno}); 188 lpbc_.sort(function(a,b){return a.fcno-b.fcno});
183 - addcfbc01(lpbc_,dataMap,map);  
184 - // 按照发车序号顺序排序.  
185 - lpbc_.sort(function(a,b){return a.fcno-b.fcno}); 189 + // addcfbc01(lpbc_,dataMap,map);
  190 + // // 按照发车序号顺序排序.
  191 + // lpbc_.sort(function(a,b){return a.fcno-b.fcno});
186 var tt = addjclbbc01(lpbc_,dataMap,dataMap.lbsj,map); 192 var tt = addjclbbc01(lpbc_,dataMap,dataMap.lbsj,map);
187 bcs = updfcno(tt,bcs); 193 bcs = updfcno(tt,bcs);
188 resultJA = resultJA.concat(tt); 194 resultJA = resultJA.concat(tt);
@@ -227,24 +233,39 @@ var bcFun = function() { @@ -227,24 +233,39 @@ var bcFun = function() {
227 result.push(getbcObj( 233 result.push(getbcObj(
228 dqbcfcsj,dataMap.ccsjArr[fxdm],car,dataMap.bcTypeArr.out, 234 dqbcfcsj,dataMap.ccsjArr[fxdm],car,dataMap.bcTypeArr.out,
229 dataMap.dira[fxdm],2,dataMap.cclcArr[fxdm],gatps,0,dataMap.qdzArr[fxdm],null,null,0,0));// 出场班次 235 dataMap.dira[fxdm],2,dataMap.cclcArr[fxdm],gatps,0,dataMap.qdzArr[fxdm],null,null,0,0));// 出场班次
230 - fcno ++; 236 + fcno = 3;
231 }else if(b==bc.length-1){ 237 }else if(b==bc.length-1){
232 - var fcno_ = dxfno + 2; 238 + fxdm = fxdm == 0 ? 1:0;
  239 + // var fcno_ = dxfno + 2;
233 var qdbcddsj = DateTimeTool.getDateTime(bc[b].ARRIVALTIME); 240 var qdbcddsj = DateTimeTool.getDateTime(bc[b].ARRIVALTIME);
234 - result.push(getbcObj(  
235 - qdbcddsj,dataMap.jcsjArr[fxdm],car,dataMap.bcTypeArr.in_,  
236 - dataMap.dira[fxdm],fcno_++,dataMap.jclcArr[fxdm],gatps,0,dataMap.qdzArr[fxdm],null,null,0,0));// 进场班次 241 + if(dataMap.jcsjArr[fxdm] > 0){
  242 + result.push(getbcObj(
  243 + qdbcddsj,dataMap.jcsjArr[fxdm],car,dataMap.bcTypeArr.in_,
  244 + dataMap.dira[fxdm],++fcno,dataMap.jclcArr[fxdm],gatps,0,dataMap.qdzArr[fxdm],null,null,0,0));// 进场班次
  245 + }
237 result.push(getbcObj( 246 result.push(getbcObj(
238 qdbcddsj,dataMap.jcsjArr[fxdm],car,dataMap.bcTypeArr.lc, 247 qdbcddsj,dataMap.jcsjArr[fxdm],car,dataMap.bcTypeArr.lc,
239 - dataMap.dira[fxdm],fcno_++,0,gatps,0,null,null,null,0,lbsj));// 晚班例保班次 248 + dataMap.dira[fxdm],++fcno,0,gatps,0,null,null,null,0,lbsj));// 晚班例保班次
  249 + } else if(bc[b].isfb && b!=bc.length-1){
  250 + fxdm = fxdm == 0 ? 1:0;
  251 + var qdbcddsj = DateTimeTool.getDateTime(bc[b].ARRIVALTIME);
  252 + if(dataMap.jcsjArr[fxdm] > 0){
  253 + result.push(getbcObj(
  254 + qdbcddsj,dataMap.jcsjArr[fxdm],car,dataMap.bcTypeArr.in_,
  255 + dataMap.dira[fxdm],++fcno,dataMap.jclcArr[fxdm],gatps,0,dataMap.qdzArr[fxdm],null,null,0,0));// 进场班次
  256 + }
240 } 257 }
241 - dxfno = bc[b].fcno + fcno;  
242 - bc[b].fcno = dxfno;  
243 - if(stas) { 258 + // dxfno = bc[b].fcno + fcno;
  259 + // bc[b].fcno = dxfno;
  260 +
  261 + bc[b].fcno = fcno;
  262 + result.push(bc[b]);
  263 + fcno++;
  264 +
  265 + /*if(stas) {
244 fcno ++; 266 fcno ++;
245 stas = false; 267 stas = false;
246 - }  
247 - result.push(bc[b]); 268 + }*/
248 } 269 }
249 return result; 270 return result;
250 }; 271 };
@@ -254,7 +275,7 @@ var bcFun = function() { @@ -254,7 +275,7 @@ var bcFun = function() {
254 for(var g = 0 ; g <lpbcar.length-1;g++ ) { 275 for(var g = 0 ; g <lpbcar.length-1;g++ ) {
255 if( parseInt((DateTimeTool.getDateTime(lpbcar[g+1].fcsj) - DateTimeTool.getDateTime(lpbcar[g].ARRIVALTIME))/60000) > 180 276 if( parseInt((DateTimeTool.getDateTime(lpbcar[g+1].fcsj) - DateTimeTool.getDateTime(lpbcar[g].ARRIVALTIME))/60000) > 180
256 && lpbcar[g].STOPTIME==0 && lpbcar[g].bcType =='normal' ) { 277 && lpbcar[g].STOPTIME==0 && lpbcar[g].bcType =='normal' ) {
257 - lpbcar[g].isfb = 1; 278 + lpbcar[g].isfb = true;
258 } 279 }
259 } 280 }
260 }; 281 };
@@ -265,6 +286,222 @@ var bcFun = function() { @@ -265,6 +286,222 @@ var bcFun = function() {
265 return 1; 286 return 1;
266 }; 287 };
267 288
  289 + /**
  290 + * @description (TODO) 横向调整 调整停站时间.
  291 + * @param cara 路牌数组.
  292 + * @param tempa 所有的班次数组集合.
  293 + * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行].
  294 + *
  295 + * ******************************** 思路 *************************************************
  296 + * 第一步 等到每个路牌下的班次数组集合.
  297 + *
  298 + * 第二步 顺序排序每个路牌下的班次数组集合.
  299 + *
  300 + * 第三步 从第二个班次开始,用第二个班次的发车时间 - 上一个班次的到达时间 得到 上一个班次的停站时间.
  301 + *
  302 + * 第四步 修改上一个班次的停站时间.
  303 + *
  304 + * 修改停站时间规则:以行驶时间的10%-15% 为标准。
  305 + * 如果超出该范围。则以录入参数低谷最大停站间隙为准。
  306 + * 停站时间最大不能超过该停站时间。
  307 + * 高峰附近的班次的停站时间在离高峰最近一个班次的停站时间浮动范围【1-2】分钟。
  308 + *
  309 + * ****************************************************************************************
  310 + */
  311 + var resizeByPitStopTime = function(cara,tempa,dataMap) {
  312 + var cLen = cara.length,tLen = tempa.length;
  313 + if(cLen<= 0 || tLen<=0 || dataMap==null)
  314 + return;
  315 + // 定义低谷最大停站时间、行业标准最小、最大停站时间(行驶时间的10%~15%).
  316 + var dgmaxtzsj = dataMap.dgmaxtzsj,normmintzsj, normmaxtzsj;
  317 + for(var t = 0 ; t < cLen ; t++) {
  318 + // 定义当前路牌班次数组集合.
  319 + var sslpbcA = new Array();
  320 + for(var j =0 ; j < tLen ; j++) {
  321 + // 判断当期遍历的班次是否属于当前的路牌.如果是则添加到当前的路牌班次数组集合.
  322 + if(tempa[j].lpNo == cara[t].lpNo) {
  323 + tempa[j].fcint = DateTimeTool.getDateTime(tempa[j].fcsj).getTime();
  324 + sslpbcA.push(tempa[j]);
  325 + }
  326 + }
  327 + if(sslpbcA.length > 0) {
  328 + // 按发车时间顺序排序.
  329 + sslpbcA.sort(function(a,b){return a.fcint-b.fcint});
  330 + // 按照规则修改停站时间.
  331 + for(var r = 0 ; r < sslpbcA.length-1 ; r++) {
  332 + if(sslpbcA[r].isfb)
  333 + continue;
  334 + // test
  335 + //if(sslpbcA[r].bcType == 'cf') {
  336 + // alert('cf' + sslpbcA[r-1].fcsj);
  337 + //}
  338 + // 定义上一个班次的发车时间、当前班次的到达时间、发车时间.
  339 + var sgbcfcsj = DateTimeTool.getDateTime(sslpbcA[r+1].fcsj),
  340 + dqbcddsj = DateTimeTool.getDateTime(sslpbcA[r].ARRIVALTIME),
  341 + dqbcfcsj = DateTimeTool.getDateTime(sslpbcA[r].fcsj);
  342 + // 定义当前班次方向下标代码[0代表上行;1代表下行].
  343 + var cctag = dirDmToIndex(sslpbcA[r].xlDir); // dataMap.smbcsjArr
  344 + // 定义每每相邻两个班次之间的时间差分钟数(也就是停站时间.)
  345 + var dxmin = parseInt( (sgbcfcsj - dqbcddsj)/60000);
  346 + // 定义是否高峰
  347 + var tt_flag = scheduleInitialize.isPeakTimeScope(dqbcfcsj , dataMap);
  348 + // 获取行驶时间.
  349 + var xxsj = scheduleInitialize.judgeXSSJ(cctag, dqbcfcsj, dataMap);
  350 + var time = dataMap.tzsj[cctag][DateTimeTool.judgmentTimeQuantum(xxsj)];
  351 +
  352 + normmintzsj = time.min;
  353 + normmaxtzsj = time.max;
  354 + var flag = false;
  355 +
  356 + // 如果小于零
  357 + if(dxmin < 0 && sslpbcA[r].isfb ==0) {
  358 + // 根据不同时段的停站时间.重新赋值停站时间.
  359 + if(sslpbcA[r].bcType=='normal' && sslpbcA[r+1].bcType =='normal')
  360 + //dxmin = tt_flag ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag];
  361 + dxmin = 1;
  362 + else
  363 + dxmin = 0;
  364 + flag = true;
  365 + }else if(dxmin==0){
  366 + if (sslpbcA[r].bcType == 'cf') { // 如果是吃饭班次,停站为0
  367 + dxmin = 0;
  368 + } else {
  369 + // 这里区分,如果下一个班次是吃饭班次,停站为0
  370 + if (sslpbcA[r + 1].bcType=='cf') {
  371 + dxmin = 0;
  372 + } else { // 否则使用最小停站时间
  373 + dxmin = normmintzsj;
  374 + }
  375 + }
  376 +
  377 + flag = true;
  378 + }else {
  379 + // 如果 大于等于低谷最大停站时间 并且 小于等于三小时.则把低谷最大停站时间 作为 停站时间.
  380 + if(dxmin >= dgmaxtzsj && dxmin < 180 && sslpbcA[r].isfb==false) {
  381 + dxmin = dgmaxtzsj;
  382 + flag = true;
  383 + // 如果大于零 并且 小于等于行业标准的最小停站时间
  384 + }else if(dxmin > 0 && dxmin <= normmintzsj ) {
  385 + // dxmin = dxmin;
  386 + flag = true;
  387 + // 如果大于行业标准的最小停站时间 并且 小于等于行业标准的最大停站时间
  388 + }else if(dxmin > normmintzsj && dxmin <= normmaxtzsj ) {
  389 + // dxmin = dxmin;
  390 + flag = true;
  391 + // 如果大于行业标准的最大停站时间 并且 小于低谷最大停站时间
  392 + }else if(dxmin > normmaxtzsj && dxmin < dgmaxtzsj ) {
  393 + // dxmin = dxmin;
  394 + flag = true;
  395 + }else if (dxmin >= 180){
  396 + dxmin = 0;
  397 + }
  398 + }
  399 + if(flag) {
  400 + if(!isDirSmbc(dirDmToIndex(sslpbcA[r+1].xlDir) , sslpbcA[r+1].fcsj , dataMap)) {
  401 + // 修改当前班次的停站时间.
  402 + sslpbcA[r].STOPTIME = parseInt(dxmin) ;
  403 + // 当前班次的到达时间 + 停站时间 作为下一个班次的发车时间.
  404 + dqbcddsj.setMinutes(dqbcddsj.getMinutes() + dxmin);
  405 + // 修改下一个班次的发车时间.
  406 + sslpbcA[r+1].fcsj = DateTimeTool.getHHmmStr(dqbcddsj);
  407 + // 下一个班次的发车时间 + 行驶时间 作为下一个班次的到达时间.
  408 + dqbcddsj.setMinutes(dqbcddsj.getMinutes() + sslpbcA[r+1].bcsj);
  409 + // 修改下一个班次的到达时间.
  410 + sslpbcA[r+1].ARRIVALTIME = DateTimeTool.getHHmmStr(dqbcddsj);
  411 + }else {
  412 + if(r>0) {
  413 + // 修改当前班次的停站时间.
  414 + sslpbcA[r].STOPTIME = parseInt(dxmin) ;
  415 + sgbcfcsj.setMinutes(sgbcfcsj.getMinutes() - sslpbcA[r].STOPTIME);
  416 + sslpbcA[r].ARRIVALTIME = DateTimeTool.getHHmmStr(sgbcfcsj);
  417 + sgbcfcsj.setMinutes(sgbcfcsj.getMinutes() - sslpbcA[r].bcsj);
  418 + sslpbcA[r].fcsj = DateTimeTool.getHHmmStr(sgbcfcsj);
  419 + sslpbcA[r-1].STOPTIME = parseInt( ( sgbcfcsj - DateTimeTool.getDateTime(sslpbcA[r-1].ARRIVALTIME))/60000);
  420 + }
  421 + }
  422 + }
  423 + }
  424 + }
  425 + }
  426 + };
  427 +
  428 + var isDirSmbc = function(dirDm , fcsj , dataMap) {
  429 + var falg = false;
  430 + if(fcsj == dataMap.smbcsjArr[dirDm].kssj || fcsj == dataMap.smbcsjArr[dirDm].jssj)
  431 + falg = true;
  432 + return falg;
  433 + };
  434 +
  435 +
  436 +
  437 + /**
  438 + * @description (TODO) 标记上、下行首末班车.
  439 + * @param jsonArray 初始化路牌下的所有班次并且已经均匀发车间隙的数组集合.
  440 + * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行].
  441 + */
  442 + var markLastBus = function(jsonArray , dataMap) {
  443 + // 定义上、下行的正常、区间、空放、直放班次、返回数组集合.
  444 + var listMap = getUpAndDownBc( jsonArray , dataMap) , resultArray = new Array();
  445 + for(var i = 0 ; i < listMap.length ; i++) {
  446 + if(listMap[i].length > 0){
  447 + // 把班次顺序排序.
  448 + listMap[i].sort(function(a,b){return a.fcint-b.fcint});
  449 + // 确定首末班车时间.
  450 + markFirstAndLastBusAlso(listMap[i] , dataMap , i);
  451 + }
  452 + resultArray = resultArray.concat(listMap[i]);
  453 + }
  454 + return resultArray;
  455 + };
  456 +
  457 + /**
  458 + * @description (TODO) 确定某方向下的末班车.
  459 + * @param dirArray 某方向下的数组集合.
  460 + * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行].
  461 + * @param dir 方向.
  462 + */
  463 + var markFirstAndLastBusAlso = function(dirArray , dataMap , dir) {
  464 + if(dirArray.length>=2) {
  465 + // 定义最后一个班次.
  466 + var dirLastBc = dirArray[dirArray.length-1];
  467 + // 确认末班车时间
  468 + if(dirLastBc.fcsj != dataMap.smbcsjArr[dir].jssj) {
  469 + // 修改最后一个班次的发车时间.
  470 + dirLastBc.fcsj = dataMap.smbcsjArr[dir].jssj;
  471 + // 定义到达时间.
  472 + var ddsj_ = DateTimeTool.getDateTime(dirLastBc.fcsj);
  473 + ddsj_.setMinutes(ddsj_.getMinutes() + dataMap.xssj[dir][4]);
  474 + // 修改最后一个班次的到达时间.
  475 + dirLastBc.ARRIVALTIME = DateTimeTool.getHHmmStr(ddsj_);
  476 + dirLastBc.bcsj = dataMap.xssj[dir][4];
  477 + }
  478 + }
  479 + };
  480 +
  481 + /**
  482 + * @description (TODO) 判断某路牌下是否存在末班车时间班次.
  483 + * @param arr 某路牌下的班次.
  484 + * @param smbcsjArr 首末班车时间点数组集合.
  485 + */
  486 + var lpBcIsHaveLast = function(arr , smbcsjArr) {
  487 + for(var a = 0 ; a < arr.length ; a++) {
  488 + for(var s = 0 ; s < smbcsjArr.length ; s++) {
  489 + if(arr[a].fcsj == smbcsjArr[s].jssj && dirDmToIndex(arr[a].xlDir) == s)
  490 + return true;
  491 + }
  492 + }
  493 + return false;
  494 + };
  495 + var lpBcIsHaveFirst = function(arr , smbcsjArr) {
  496 + for(var a = 0 ; a < arr.length ; a++) {
  497 + for(var s = 0 ; s < smbcsjArr.length ; s++) {
  498 + if(arr[a].fcsj == smbcsjArr[s].kssj && dirDmToIndex(arr[a].xlDir) == s)
  499 + return true;
  500 + }
  501 + }
  502 + return false;
  503 + };
  504 +
268 return{ 505 return{
269 getbcObj : getbcObj, //封装班次属性值 506 getbcObj : getbcObj, //封装班次属性值
270 upDownStrConvertNum : upDownStrConvertNum, 507 upDownStrConvertNum : upDownStrConvertNum,
@@ -272,6 +509,11 @@ var bcFun = function() { @@ -272,6 +509,11 @@ var bcFun = function() {
272 markFirstAndLastBusAlsoDietNotInRangeBc : markFirstAndLastBusAlsoDietNotInRangeBc, 509 markFirstAndLastBusAlsoDietNotInRangeBc : markFirstAndLastBusAlsoDietNotInRangeBc,
273 getUpAndDownBc : getUpAndDownBc, 510 getUpAndDownBc : getUpAndDownBc,
274 addInOutFieldBc : addInOutFieldBc, //添加进出场班次 511 addInOutFieldBc : addInOutFieldBc, //添加进出场班次
275 - updfcno : updfcno 512 + updfcno : updfcno,
  513 + resizeByPitStopTime : resizeByPitStopTime,
  514 + markLastBus : markLastBus, //标记上、下行末班车
  515 + lpBcIsHaveLast : lpBcIsHaveLast, // 判断路牌班次是否有末班车
  516 + lpBcIsHaveFirst : lpBcIsHaveFirst, // 判断路牌班次是否有首班车
  517 + dirDmToIndex : dirDmToIndex // 字符串转换为方向
276 } 518 }
277 }(); 519 }();
src/main/resources/static/pages/base/timesmodel/js/v1/lpFun.js
@@ -64,49 +64,6 @@ var lpFun = function () { @@ -64,49 +64,6 @@ var lpFun = function () {
64 // 返回数据. 64 // 返回数据.
65 return list.sort(function(a,b){return b.hoursV-a.hoursV}); 65 return list.sort(function(a,b){return b.hoursV-a.hoursV});
66 }; 66 };
67 - /**  
68 - * @description (TODO) 把班型人次合理的分配到不同的路牌上.  
69 - * @param list 班型人次数组集合.  
70 - * @param clzs 路牌数组.  
71 - * @return 返回一个把路牌合理的分配到班型人次下组成的数据集合.  
72 - * */  
73 - var bxAlloTotLp = function(arr,clzs){  
74 - var cLen = clzs.length;  
75 - var type = getMode(arr);  
76 - var i=0;  
77 - while(clzs.length > i){  
78 - for(var j=0; j<type.length; j++) {  
79 - if(arr[type[j]].len-- > 0) {  
80 - arr[type[j]].bx.sslp.push(clzs[i]);  
81 - i++  
82 - }  
83 - }  
84 - }  
85 - };  
86 - var getMode = function(arr){  
87 - var mode = [], bxRcList = arr;  
88 - var count = bxRcList[0].lps;  
89 - for(var i=1; i<bxRcList.length; i++) {  
90 - if(bxRcList[i].lps < count)  
91 - count = bxRcList[i].lps;  
92 - }  
93 - for(var i=0; i<bxRcList.length; i++) {  
94 - bxRcList[i] = {'bx':bxRcList[i],'len':bxRcList[i].lps, 'ratio':Math.round(bxRcList[i].lps/count)}  
95 - }  
96 - for(var i=0; i<bxRcList.length; i++) {  
97 - for(var j=0; j<bxRcList[i].ratio; j++) {  
98 - mode.push(i);  
99 - }  
100 - }  
101 - // for(var m=0; m<mode.length-2; m++) {  
102 - // if(mode[m] == mode[m+1]) {  
103 - // var a = mode[m+1];  
104 - // mode[m+1] = mode[m+2];  
105 - // mode[m+2] = a;  
106 - // }  
107 - // }  
108 - return mode;  
109 - };  
110 // 路牌整理 67 // 路牌整理
111 var lpNeaten = function (bxRcList, carList, dataMap) { 68 var lpNeaten = function (bxRcList, carList, dataMap) {
112 var carListH = new Array(); 69 var carListH = new Array();
@@ -132,11 +89,12 @@ var lpFun = function () { @@ -132,11 +89,12 @@ var lpFun = function () {
132 // carListH:带工时和圈数的车辆list,carListCache:缓存为分班车辆 89 // carListH:带工时和圈数的车辆list,carListCache:缓存为分班车辆
133 var carListH = [],carListCache = []; 90 var carListH = [],carListCache = [];
134 91
135 - // 最分班路牌 = 总路牌 - (低谷周转/低谷最大发车间隔)向上取整 92 + // 最分班路牌 = 总路牌 - (低谷周转/低谷最大发车间隔)向上取整
136 var fblps = carList.length - Math.ceil((dataMap.zzsj[2]) / map.dgmaxfcjx); 93 var fblps = carList.length - Math.ceil((dataMap.zzsj[2]) / map.dgmaxfcjx);
137 // 取出有工时的路牌 94 // 取出有工时的路牌
138 for (var i = 0; i < bxRcList.length; i++) { 95 for (var i = 0; i < bxRcList.length; i++) {
139 var sslp = bxRcList[i].bx.sslp, bx = bxRcList[i].bx; 96 var sslp = bxRcList[i].bx.sslp, bx = bxRcList[i].bx;
  97 + // 路牌能有多少圈
140 var count = Math.round(bx.hoursV / (dataMap.zzsj[1]/60));// 早高峰周转:dataMap.zzsj[1] 98 var count = Math.round(bx.hoursV / (dataMap.zzsj[1]/60));// 早高峰周转:dataMap.zzsj[1]
141 if(bx.type == '五工二休') { 99 if(bx.type == '五工二休') {
142 $.each(sslp, function () { 100 $.each(sslp, function () {
@@ -167,7 +125,7 @@ var lpFun = function () { @@ -167,7 +125,7 @@ var lpFun = function () {
167 cutCar(carListH,carListCache); 125 cutCar(carListH,carListCache);
168 var index = Math.floor(carListH.length / fblps); 126 var index = Math.floor(carListH.length / fblps);
169 for(var s=1; s<=fblps; s++){ 127 for(var s=1; s<=fblps; s++){
170 - carListH[s*index].isfb = true; 128 + carListH[s*index - 1].isfb = true;
171 } 129 }
172 } 130 }
173 carListH = carListH.concat(carListCache); 131 carListH = carListH.concat(carListCache);
@@ -179,6 +137,16 @@ var lpFun = function () { @@ -179,6 +137,16 @@ var lpFun = function () {
179 } 137 }
180 return carListH; 138 return carListH;
181 }; 139 };
  140 + // 切割出连班路牌
  141 + var cutCar = function(carListH,carListCache) {
  142 + for(var c=0; c<carListH.length; c++){
  143 + if(carListH[c].isfb) {
  144 + carListCache.push(carListH[c]);
  145 + carListH.splice(c,1);
  146 + cutCar(carListH,carListCache);
  147 + }
  148 + }
  149 + };
182 // 确定路牌分班数 150 // 确定路牌分班数
183 var lpfbs = function (fblps, bxRcList, index) { 151 var lpfbs = function (fblps, bxRcList, index) {
184 if(fblps > bxRcList[index].lps){ 152 if(fblps > bxRcList[index].lps){
src/main/resources/static/pages/base/timesmodel/js/v1/scheduleInitialize.js
@@ -33,8 +33,8 @@ var scheduleInitialize = function () { @@ -33,8 +33,8 @@ var scheduleInitialize = function () {
33 return; 33 return;
34 } 34 }
35 35
36 - // 行驶时间、停站时间、周转时间。发车间隙获取  
37 - getParaTime(map,dataMap); 36 + // 行驶时间、停站时间、周转时间、发车间隙获取、时间段
  37 + getParaTime(map,dataMap,seMap);
38 38
39 // 第一步 路牌分配 39 // 第一步 路牌分配
40 var bxRcList = lpFun.getBxRcListCollection(map.bxrc); 40 var bxRcList = lpFun.getBxRcListCollection(map.bxrc);
@@ -49,24 +49,28 @@ var scheduleInitialize = function () { @@ -49,24 +49,28 @@ var scheduleInitialize = function () {
49 // 第三步 剔除营运时间外的班次 49 // 第三步 剔除营运时间外的班次
50 var operationBcData = bcFun.markFirstAndLastBusAlsoDietNotInRangeBc(bcData, dataMap); 50 var operationBcData = bcFun.markFirstAndLastBusAlsoDietNotInRangeBc(bcData, dataMap);
51 // 第四步 横向调整停站时间 51 // 第四步 横向调整停站时间
52 - resizeByPitStopTime(carListH , operationBcData , dataMap); 52 + bcFun.resizeByPitStopTime(carListH , operationBcData , dataMap);
53 53
54 // 第五步 确认首末班车 54 // 第五步 确认首末班车
55 - markFirstAndLastBus(operationBcData, dataMap); 55 + bcFun.markLastBus(operationBcData, dataMap);
  56 + // return {'json':operationBcData,'bxrcgs':null};
56 57
57 // 第六步 抽车来满足工时. 58 // 第六步 抽车来满足工时.
58 var tempA = takeCar(operationBcData, carListH , seMap, dataMap , map); 59 var tempA = takeCar(operationBcData, carListH , seMap, dataMap , map);
  60 + // return {'json':tempA,'bxrcgs':null};
59 61
60 // 第七步 确定吃饭时间. 62 // 第七步 确定吃饭时间.
61 if (map.cfdd) { // NEW,没有选择吃饭地点,不设定吃饭班次 63 if (map.cfdd) { // NEW,没有选择吃饭地点,不设定吃饭班次
62 markeEatTime(bxRcList , tempA , carListH , seMap , dataMap ,map); 64 markeEatTime(bxRcList , tempA , carListH , seMap , dataMap ,map);
63 } 65 }
  66 +
64 // 横向调整停站时间 67 // 横向调整停站时间
65 - // resizeByPitStopTime(carListH , tempA , dataMap); 68 + bcFun.resizeByPitStopTime(carListH , tempA , dataMap);
  69 +
66 // 第八步 纵向调整(发车间隔调整) 70 // 第八步 纵向调整(发车间隔调整)
67 AdjustTrip.departureClearanceAdjust(tempA,dataMap); 71 AdjustTrip.departureClearanceAdjust(tempA,dataMap);
68 - // AdjustTrip2.departureClearanceAdjust(tempA,dataMap);  
69 bcFun.updfcno(tempA,0); 72 bcFun.updfcno(tempA,0);
  73 +
70 // 第九步 添加进出场和早晚例保 74 // 第九步 添加进出场和早晚例保
71 var data = bcFun.addInOutFieldBc(carListH,tempA,dataMap,map); 75 var data = bcFun.addInOutFieldBc(carListH,tempA,dataMap,map);
72 return {'json':data,'bxrcgs':null}; 76 return {'json':data,'bxrcgs':null};
@@ -108,16 +112,18 @@ var scheduleInitialize = function () { @@ -108,16 +112,18 @@ var scheduleInitialize = function () {
108 // count:班次圈数,type:是否跳过低谷班次(只对工时小于10了车辆有效) 112 // count:班次圈数,type:是否跳过低谷班次(只对工时小于10了车辆有效)
109 var count = 0, type = true; 113 var count = 0, type = true;
110 // 定义当前路牌的第一个班次的开始时间. 114 // 定义当前路牌的第一个班次的开始时间.
  115 + if(c > 0)
  116 + sbxfcTime.setMinutes(sbxfcTime.getMinutes() + judgeFCJX(sbxfcTime, dataMap));
111 var kssj = new Date(sbxfcTime); 117 var kssj = new Date(sbxfcTime);
112 // 进入早高峰按高峰发车间隙,否则按低估: TODO:暂时直接按早高峰 118 // 进入早高峰按高峰发车间隙,否则按低估: TODO:暂时直接按早高峰
113 - kssj.setMinutes(kssj.getMinutes() + (c * dataMap.fcjx[1].max)); 119 + // kssj.setMinutes(kssj.getMinutes() + (c * dataMap.fcjx[1].max));
114 // lpKssj:中标线之后的开始时间 120 // lpKssj:中标线之后的开始时间
115 var lpKssj, ZBXAfter = false; 121 var lpKssj, ZBXAfter = false;
116 // 判断是否中标线 122 // 判断是否中标线
117 if(c < ZBXCarNum) { 123 if(c < ZBXCarNum) {
118 lpKssj = new Date(kssj); 124 lpKssj = new Date(kssj);
119 // 判断中标线时间 = 发车时间 -(反方向停站时间+反方向行驶时间:早高峰之前行驶时间) 早高峰结束之前都用的最小停站时间 125 // 判断中标线时间 = 发车时间 -(反方向停站时间+反方向行驶时间:早高峰之前行驶时间) 早高峰结束之前都用的最小停站时间
120 - lpKssj.setMinutes(lpKssj.getMinutes()-(judgeTZSJ(fxTagDm==0 ? 1:0,zbxfcTime,dataMap) + dataMap.xssj[fxTagDm==0 ? 1:0][judgmentTimeQuantum(zbxfcTime)])); 126 + lpKssj.setMinutes(lpKssj.getMinutes()-(judgeTZSJ(fxTagDm==0 ? 1:0,zbxfcTime,dataMap) + dataMap.xssj[fxTagDm==0 ? 1:0][DateTimeTool.judgmentTimeQuantum(zbxfcTime)]));
121 // 中标线发车时间 与 判断中标线时间的上下差值在 高峰发车间隔的一般以内,为中标线 127 // 中标线发车时间 与 判断中标线时间的上下差值在 高峰发车间隔的一般以内,为中标线
122 if(Math.abs((zbxfcTime.getTime() - lpKssj.getTime())/60000) < dataMap.fcjx[1].max){ 128 if(Math.abs((zbxfcTime.getTime() - lpKssj.getTime())/60000) < dataMap.fcjx[1].max){
123 ZBXCarNum = c; 129 ZBXCarNum = c;
@@ -136,12 +142,12 @@ var scheduleInitialize = function () { @@ -136,12 +142,12 @@ var scheduleInitialize = function () {
136 // 定义在某时间段内[高峰时间段、低谷时间段]的停站时间. 142 // 定义在某时间段内[高峰时间段、低谷时间段]的停站时间.
137 var tzsj = judgeTZSJ(fxTagDm,lpKssj,dataMap); 143 var tzsj = judgeTZSJ(fxTagDm,lpKssj,dataMap);
138 // 定义在某时间段内的行驶时间. 144 // 定义在某时间段内的行驶时间.
139 - var xssj = dataMap.xssj[fxTagDm][judgmentTimeQuantum(lpKssj)]; 145 + var xssj = dataMap.xssj[fxTagDm][DateTimeTool.judgmentTimeQuantum(lpKssj)];
140 // 定义当前班次的停站时间,这里是为了当计算到了最后一个班次的时候,那么停站时间为0 ,但是后续的班次的发车时间需要加上前一个班次的停站时间. 146 // 定义当前班次的停站时间,这里是为了当计算到了最后一个班次的时候,那么停站时间为0 ,但是后续的班次的发车时间需要加上前一个班次的停站时间.
141 var xs_tzsj = isLastbc(lpKssj, endTime, tzsj, xssj) ? 0 : tzsj; 147 var xs_tzsj = isLastbc(lpKssj, endTime, tzsj, xssj) ? 0 : tzsj;
142 rs.push(bcFun.getbcObj(lpKssj, xssj, carListH[c], 148 rs.push(bcFun.getbcObj(lpKssj, xssj, carListH[c],
143 dataMap.bcTypeArr.normal, 149 dataMap.bcTypeArr.normal,
144 - dataMap.dira[fxTagDm], xhNo++, 150 + dataMap.dira[fxTagDm], xhNo-1,
145 dataMap.pcxslcArr[fxTagDm], map, 0, 151 dataMap.pcxslcArr[fxTagDm], map, 0,
146 dataMap.qdzArr[fxTagDm], 152 dataMap.qdzArr[fxTagDm],
147 dataMap.zdzArr[fxTagDm], null, xs_tzsj, 0)); 153 dataMap.zdzArr[fxTagDm], null, xs_tzsj, 0));
@@ -156,7 +162,7 @@ var scheduleInitialize = function () { @@ -156,7 +162,7 @@ var scheduleInitialize = function () {
156 // 定义在某时间段内[高峰时间段、低谷时间段]的停站时间. 162 // 定义在某时间段内[高峰时间段、低谷时间段]的停站时间.
157 var tzsj = judgeTZSJ(fxTagDm,kssj,dataMap); 163 var tzsj = judgeTZSJ(fxTagDm,kssj,dataMap);
158 // 定义在某时间段内的行驶时间. 164 // 定义在某时间段内的行驶时间.
159 - var xssj = dataMap.xssj[fxTagDm][judgmentTimeQuantum(kssj)]; 165 + var xssj = dataMap.xssj[fxTagDm][DateTimeTool.judgmentTimeQuantum(kssj)];
160 // 定义当前班次的停站时间,这里是为了当计算到了最后一个班次的时候,那么停站时间为0 ,但是后续的班次的发车时间需要加上前一个班次的停站时间. 166 // 定义当前班次的停站时间,这里是为了当计算到了最后一个班次的时候,那么停站时间为0 ,但是后续的班次的发车时间需要加上前一个班次的停站时间.
161 var xs_tzsj = isLastbc(kssj, endTime, tzsj, xssj) ? 0 : tzsj; 167 var xs_tzsj = isLastbc(kssj, endTime, tzsj, xssj) ? 0 : tzsj;
162 // 添加正常班次对象.(这里初始化时,都是正常班次类型.) 168 // 添加正常班次对象.(这里初始化时,都是正常班次类型.)
@@ -183,29 +189,45 @@ var scheduleInitialize = function () { @@ -183,29 +189,45 @@ var scheduleInitialize = function () {
183 * @return 返回一个满足单个路牌对应的标准工时、满足某班型下的所有路牌的平均工时对应的日平均工时、停站时间、路牌是否分班的班次集合. 189 * @return 返回一个满足单个路牌对应的标准工时、满足某班型下的所有路牌的平均工时对应的日平均工时、停站时间、路牌是否分班的班次集合.
184 */ 190 */
185 var takeCar = function (jsonArray, cara, saa, dataMap, map) { 191 var takeCar = function (jsonArray, cara, saa, dataMap, map) {
186 - // 定义低谷最大发车时间、最大停站时间来反算出低谷最少配车数.  
187 - var dgmaxfcjx = parseInt(map.dgmaxfcjx),  
188 - dgmaxtzsj = parseInt(map.dgmaxtzsj);  
189 - // 计算低谷最少配车数 (低谷上行行驶时间 + 低谷下行行驶时间 + 低谷最大停站时间*2) / 低谷最大发车间隙.  
190 - // var dgminpcs = Math.round((dataMap.xssj[0][3] + dataMap.xssj[1][3] + dataMap.dgtzsj[0] + dataMap.dgtzsj[1]) / dgmaxfcjx);  
191 - // var zwxeLpNum = cuontZwxeLpNum(bxRcList);  
192 - // var dgminpcs = 4;  
193 // 定义返回数组. 192 // 定义返回数组.
194 var rs = new Array(); 193 var rs = new Array();
195 for(var s = 0 ; s < cara.length; s++) { 194 for(var s = 0 ; s < cara.length; s++) {
196 // 定义路牌编号、定义当前路牌下的所有班次. 195 // 定义路牌编号、定义当前路牌下的所有班次.
197 - var lpNo = cara[s].lpNo, car = cara[s], lpbc = new Array(); 196 + var lpNo = cara[s].lpNo, car = cara[s], lpbc = new Array(), hoursV = 0;
198 for (var i = 0; i < jsonArray.length; i++) { 197 for (var i = 0; i < jsonArray.length; i++) {
199 // 判断当期遍历的班次是否属于当前的路牌. 198 // 判断当期遍历的班次是否属于当前的路牌.
200 if (jsonArray[i].lpNo == lpNo) { 199 if (jsonArray[i].lpNo == lpNo) {
201 lpbc.push(jsonArray[i]); 200 lpbc.push(jsonArray[i]);
202 } 201 }
203 } 202 }
204 - var avgMakerCarNum = lpbc.length - car.count*2; 203 + lpbc.sort(function (a,b) { return a.fcno - b.fcno;});
  204 + // hoursV 分钟为单位(先添加进出场时间)
  205 + hoursV = dataMap.zwcArr[0] + dataMap.zwcArr[1] + dataMap.lbsj*2;
  206 + if(car.isfb){
  207 + hoursV += (DateTimeTool.getDateTime(lpbc[lpbc.length-1].ARRIVALTIME) - DateTimeTool.getDateTime(lpbc[0].fcsj)) / 60000;
  208 + } else {
  209 + for (var i = 0; i < jsonArray.length; i++) {
  210 + // 判断当期遍历的班次是否属于当前的路牌.
  211 + if (jsonArray[i].lpNo == lpNo) {
  212 + hoursV += jsonArray[i].bcsj + jsonArray[i].STOPTIME;
  213 + }
  214 + }
  215 + }
  216 + var excessHours = (hoursV/60).toFixed(2) - car.hoursV,
  217 + dgAvgXssj = (dataMap.xssj[0][0]+dataMap.xssj[0][2]+dataMap.xssj[0][4]+dataMap.xssj[1][0]+dataMap.xssj[1][2]+dataMap.xssj[1][4])/6;
  218 +
  219 + // 抽车全在低谷,所以用低谷平均行驶时间 TODO:(分班本来需要大于3小时,现在暂时改为1小时)
  220 + var avgMakerCarNum = 0;
  221 + if(excessHours >= 1){
  222 + avgMakerCarNum = Math.floor(excessHours*60/dgAvgXssj);
  223 + }
  224 + // var avgMakerCarNum = lpbc.length - car.count*2;
205 rs = rs.concat(abstractBcByWorkTime(lpbc, map, dataMap, saa, cara, avgMakerCarNum)); 225 rs = rs.concat(abstractBcByWorkTime(lpbc, map, dataMap, saa, cara, avgMakerCarNum));
206 } 226 }
207 return rs; 227 return rs;
208 }; 228 };
  229 +
  230 + // 数据排序
209 function sortDeepArr(arr, sortTypes) { 231 function sortDeepArr(arr, sortTypes) {
210 var i = 0; 232 var i = 0;
211 var len = sortTypes.length; 233 var len = sortTypes.length;
@@ -231,7 +253,7 @@ var scheduleInitialize = function () { @@ -231,7 +253,7 @@ var scheduleInitialize = function () {
231 } else { 253 } else {
232 var nextSortType = sortTypes[i]; 254 var nextSortType = sortTypes[i];
233 $.each(arrObj[sortType.name], function(key, val) { 255 $.each(arrObj[sortType.name], function(key, val) {
234 - console.log(i) 256 + // console.log(i);
235 itSelf(val, nextSortType) 257 itSelf(val, nextSortType)
236 }) 258 })
237 } 259 }
@@ -242,12 +264,27 @@ var scheduleInitialize = function () { @@ -242,12 +264,27 @@ var scheduleInitialize = function () {
242 * @param map 264 * @param map
243 * @param dataMap 265 * @param dataMap
244 */ 266 */
245 - var getParaTime = function (map,dataMap) { 267 + var getParaTime = function (map,dataMap,seMap) {
246 // 停站类型:tzlx,主站方向:zzfx 268 // 停站类型:tzlx,主站方向:zzfx
247 var tzlx = map.tzlx.split('/'),zzfx = 0; 269 var tzlx = map.tzlx.split('/'),zzfx = 0;
  270 + var isMasterStop = false; // 是否主站停
  271 + if (map) {
  272 + var tzlx = map.tzlx.split("/");
  273 + if (tzlx.length == 1) { // 双向停站
  274 + isMasterStop = false;
  275 + } else if(tzlx.length > 1){
  276 + isMasterStop = true;
  277 + zzfx = tzlx[1] == 0 ? 0 : 1;
  278 + }
  279 + }
  280 + dataMap.isMasterStop = isMasterStop; // 是否主站停
  281 + dataMap.zzfx = zzfx; //主站方向
  282 +
  283 + // 停站类型:tzlx,主站方向:zzfx
  284 + /*var tzlx = map.tzlx.split('/'),zzfx = 0;
248 if(tzlx.length > 1 && tzlx[0] == 1) { 285 if(tzlx.length > 1 && tzlx[0] == 1) {
249 zzfx = tzlx[1] == 0 ? 0 : 1; 286 zzfx = tzlx[1] == 0 ? 0 : 1;
250 - } 287 + }*/
251 288
252 // 行驶时间 上下行分别5个时间段 0:上行,1:下行 289 // 行驶时间 上下行分别5个时间段 0:上行,1:下行
253 var xssj = [[],[]]; 290 var xssj = [[],[]];
@@ -263,6 +300,7 @@ var scheduleInitialize = function () { @@ -263,6 +300,7 @@ var scheduleInitialize = function () {
263 xssj[1].push(parseInt(map.downTravelTime5)); 300 xssj[1].push(parseInt(map.downTravelTime5));
264 // 停站时间 上下行分别5个时间段 0:上行,1:下行 TODO:暂时只支持单向停站 301 // 停站时间 上下行分别5个时间段 0:上行,1:下行 TODO:暂时只支持单向停站
265 var tzsj = [[],[]]; 302 var tzsj = [[],[]];
  303 + // 是否主站停站
266 var upDownTravelTimeMin1 =Math.round((parseInt(map.upTravelTime1)+parseInt(map.downTravelTime1))*0.15), 304 var upDownTravelTimeMin1 =Math.round((parseInt(map.upTravelTime1)+parseInt(map.downTravelTime1))*0.15),
267 upDownTravelTimeMin2 =Math.round((parseInt(map.upTravelTime2)+parseInt(map.downTravelTime2))*0.1), 305 upDownTravelTimeMin2 =Math.round((parseInt(map.upTravelTime2)+parseInt(map.downTravelTime2))*0.1),
268 upDownTravelTimeMin3 =Math.round((parseInt(map.upTravelTime3)+parseInt(map.downTravelTime3))*0.15), 306 upDownTravelTimeMin3 =Math.round((parseInt(map.upTravelTime3)+parseInt(map.downTravelTime3))*0.15),
@@ -274,20 +312,33 @@ var scheduleInitialize = function () { @@ -274,20 +312,33 @@ var scheduleInitialize = function () {
274 upDownTravelTimeMax3 =Math.round((parseInt(map.upTravelTime3)+parseInt(map.downTravelTime3))*0.2), 312 upDownTravelTimeMax3 =Math.round((parseInt(map.upTravelTime3)+parseInt(map.downTravelTime3))*0.2),
275 upDownTravelTimeMax4 =Math.round((parseInt(map.upTravelTime4)+parseInt(map.downTravelTime4))*0.15), 313 upDownTravelTimeMax4 =Math.round((parseInt(map.upTravelTime4)+parseInt(map.downTravelTime4))*0.15),
276 upDownTravelTimeMax5 =Math.round((parseInt(map.upTravelTime5)+parseInt(map.downTravelTime5))*0.2); 314 upDownTravelTimeMax5 =Math.round((parseInt(map.upTravelTime5)+parseInt(map.downTravelTime5))*0.2);
277 - if(zzfx == 0) {  
278 - tzsj[0].push({'min':upDownTravelTimeMin1 < 10 ? 10 : upDownTravelTimeMin1, 'max':upDownTravelTimeMax1});  
279 - tzsj[0].push({'min':upDownTravelTimeMin2 < 10 ? 10 : upDownTravelTimeMin2, 'max':upDownTravelTimeMax2});  
280 - tzsj[0].push({'min':upDownTravelTimeMin3 < 10 ? 10 : upDownTravelTimeMin3, 'max':upDownTravelTimeMax3});  
281 - tzsj[0].push({'min':upDownTravelTimeMin4 < 10 ? 10 : upDownTravelTimeMin4, 'max':upDownTravelTimeMax4});  
282 - tzsj[0].push({'min':upDownTravelTimeMin5 < 10 ? 10 : upDownTravelTimeMin5, 'max':upDownTravelTimeMax5});  
283 - tzsj[1] = [{'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}]; 315 + if(isMasterStop) {
  316 + if(zzfx == 0) {
  317 + tzsj[0].push({'min':upDownTravelTimeMin1 < 10 ? 10 : upDownTravelTimeMin1, 'max':upDownTravelTimeMax1});
  318 + tzsj[0].push({'min':upDownTravelTimeMin2 < 3 ? 3 : upDownTravelTimeMin2, 'max':upDownTravelTimeMax2});
  319 + tzsj[0].push({'min':upDownTravelTimeMin3 < 10 ? 10 : upDownTravelTimeMin3, 'max':upDownTravelTimeMax3});
  320 + tzsj[0].push({'min':upDownTravelTimeMin4 < 3 ? 3 : upDownTravelTimeMin4, 'max':upDownTravelTimeMax4});
  321 + tzsj[0].push({'min':upDownTravelTimeMin5 < 10 ? 10 : upDownTravelTimeMin5, 'max':upDownTravelTimeMax5});
  322 + tzsj[1] = [{'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}];
  323 + } else {
  324 + tzsj[1].push({'min':upDownTravelTimeMin1 < 10 ? 10 : upDownTravelTimeMin1, 'max':upDownTravelTimeMax1});
  325 + tzsj[1].push({'min':upDownTravelTimeMin2 < 3 ? 3 : upDownTravelTimeMin2, 'max':upDownTravelTimeMax2});
  326 + tzsj[1].push({'min':upDownTravelTimeMin3 < 10 ? 10 : upDownTravelTimeMin3, 'max':upDownTravelTimeMax3});
  327 + tzsj[1].push({'min':upDownTravelTimeMin4 < 3 ? 3 : upDownTravelTimeMin4, 'max':upDownTravelTimeMax4});
  328 + tzsj[1].push({'min':upDownTravelTimeMin5 < 10 ? 10 : upDownTravelTimeMin5, 'max':upDownTravelTimeMax5});
  329 + tzsj[0] = [{'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}];
  330 + }
284 } else { 331 } else {
285 - tzsj[1].push({'min':upDownTravelTimeMin1 < 10 ? 10 : upDownTravelTimeMin1, 'max':upDownTravelTimeMax1});  
286 - tzsj[1].push({'min':upDownTravelTimeMin2 < 10 ? 10 : upDownTravelTimeMin2, 'max':upDownTravelTimeMax2});  
287 - tzsj[1].push({'min':upDownTravelTimeMin3 < 10 ? 10 : upDownTravelTimeMin3, 'max':upDownTravelTimeMax3});  
288 - tzsj[1].push({'min':upDownTravelTimeMin4 < 10 ? 10 : upDownTravelTimeMin4, 'max':upDownTravelTimeMax4});  
289 - tzsj[1].push({'min':upDownTravelTimeMin5 < 10 ? 10 : upDownTravelTimeMin5, 'max':upDownTravelTimeMax5});  
290 - tzsj[0] = [{'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}, {'min':1, 'max':3}]; 332 + tzsj[0].push({'min':upDownTravelTimeMin1/2 < 10 ? 10 : upDownTravelTimeMin1/2, 'max':upDownTravelTimeMax1/2});
  333 + tzsj[0].push({'min':upDownTravelTimeMin2/2 < 3 ? 3 : upDownTravelTimeMin2/2, 'max':upDownTravelTimeMax2/2});
  334 + tzsj[0].push({'min':upDownTravelTimeMin3/2 < 10 ? 10 : upDownTravelTimeMin3/2, 'max':upDownTravelTimeMax3/2});
  335 + tzsj[0].push({'min':upDownTravelTimeMin4/2 < 3 ? 3 : upDownTravelTimeMin4/2, 'max':upDownTravelTimeMax4/2});
  336 + tzsj[0].push({'min':upDownTravelTimeMin5/2 < 10 ? 10 : upDownTravelTimeMin5/2, 'max':upDownTravelTimeMax5/2});
  337 + tzsj[1].push({'min':upDownTravelTimeMin1/2 < 10 ? 10 : upDownTravelTimeMin1/2, 'max':upDownTravelTimeMax1/2});
  338 + tzsj[1].push({'min':upDownTravelTimeMin2/2 < 3 ? 3 : upDownTravelTimeMin2/2, 'max':upDownTravelTimeMax2/2});
  339 + tzsj[1].push({'min':upDownTravelTimeMin3/2 < 10 ? 10 : upDownTravelTimeMin3/2, 'max':upDownTravelTimeMax3/2});
  340 + tzsj[1].push({'min':upDownTravelTimeMin4/2 < 3 ? 3 : upDownTravelTimeMin4/2, 'max':upDownTravelTimeMax4/2});
  341 + tzsj[1].push({'min':upDownTravelTimeMin5/2 < 10 ? 10 : upDownTravelTimeMin5/2, 'max':upDownTravelTimeMax5/2});
291 } 342 }
292 // 周转时间 分别5个时间段 343 // 周转时间 分别5个时间段
293 var zzsj = []; 344 var zzsj = [];
@@ -299,55 +350,61 @@ var scheduleInitialize = function () { @@ -299,55 +350,61 @@ var scheduleInitialize = function () {
299 // 发车间隙 分别5个时间段 350 // 发车间隙 分别5个时间段
300 var fcjx = []; 351 var fcjx = [];
301 var clzs = parseInt(map.clzs); 352 var clzs = parseInt(map.clzs);
302 - // fcjx.push(Math.round(zzsj[0] / clzs > 20.4 ? 20 : (zzsj[0] / clzs < 15 ? 15 : zzsj[1] / clzs)));  
303 - fcjx.push({'min':10, 'max':12});  
304 - // fcjx.push({'min':5, 'max':Math.round(zzsj[1] / clzs > 8.4 ? 8 : zzsj[1] / clzs)});  
305 - fcjx.push({'min':5, 'max':Math.round(zzsj[1] / clzs)});  
306 - fcjx.push({'min':8, 'max':20});  
307 - fcjx.push({'min':5, 'max':Math.round(zzsj[1] / clzs)});  
308 - fcjx.push({'min':8, 'max':20});  
309 353
310 - dataMap.xssj = xssj;  
311 - dataMap.tzsj = tzsj;  
312 - dataMap.zzsj = zzsj;  
313 - dataMap.fcjx = fcjx;  
314 - // map.dgmaxfcjx = 20; 354 + var dgmaxfcjx = parseInt(dataMap.dgmaxfcjx);
  355 + // 一级线路要满足8分20分的发车间隔
  356 + if(map.level == '1') {
  357 + fcjx.push({'min':10, 'max':15});
  358 + fcjx.push({'min':5, 'max':Math.round(zzsj[1] / clzs > 8 ? 8 : zzsj[1] / clzs)});
  359 + fcjx.push({'min':8, 'max':20});
  360 + fcjx.push({'min':5, 'max':Math.round(zzsj[1] / clzs > 8 ? 8 : zzsj[1] / clzs)});
  361 + fcjx.push({'min':8, 'max':20});
  362 + } else {
  363 + // fcjx.push(Math.round(zzsj[0] / clzs > 20.4 ? 20 : (zzsj[0] / clzs < 15 ? 15 : zzsj[1] / clzs)));
  364 + fcjx.push({'min':10, 'max':15});
  365 + fcjx.push({'min':5, 'max':Math.floor(zzsj[1] / clzs)});
  366 + fcjx.push({'min':8, 'max':20});
  367 + fcjx.push({'min':5, 'max':Math.floor(zzsj[1] / clzs)});
  368 + fcjx.push({'min':8, 'max':20});
  369 + }
  370 + var sjd = [];
  371 + sjd.push({'start':seMap.s, 'end':map.end1});
  372 + sjd.push({'start':map.start2, 'end':map.end2});
  373 + sjd.push({'start':map.start3, 'end':map.end3});
  374 + sjd.push({'start':map.start4, 'end':map.end4});
  375 + sjd.push({'start':map.start5, 'end':seMap.e});
  376 + DateTimeTool.initSJD(sjd);
  377 +
  378 + dataMap.zgfzqsjd = [{'st':DateTimeTool.getDateTime(seMap.s), 'ed':DateTimeTool.getDateTime(map.end1)}];
  379 + dataMap.zgfsjd = [{'st':DateTimeTool.getDateTime(map.start2), 'ed':DateTimeTool.getDateTime(map.end2)}];
  380 + dataMap.gfzjsjd = [{'st':DateTimeTool.getDateTime(map.start3), 'ed':DateTimeTool.getDateTime(map.end3)}];
  381 + dataMap.wgfsjd = [{'st':DateTimeTool.getDateTime(map.start4), 'ed':DateTimeTool.getDateTime(map.end4)}];
  382 + dataMap.wgfzhsjd = [{'st':DateTimeTool.getDateTime(map.start5), 'ed':DateTimeTool.getDateTime(seMap.e)}];
  383 + dataMap.sjd = sjd;
  384 + dataMap.xssj = xssj; // 行驶时间
  385 + dataMap.tzsj = tzsj; // 停站时间zse31
  386 + dataMap.zzsj = zzsj; // 周转时间
  387 + dataMap.fcjx = fcjx; // 发车间隙
  388 + // 清除不用的元素
  389 + delete dataMap.dgtzsj;
  390 + delete dataMap.dgxxsjArr;
  391 + delete dataMap.gftzsj;
  392 + delete dataMap.gfxxsjArr;
  393 + map.dgmaxfcjx = 20;
315 // map.dgmaxtzsj = upDownTravelTime3 < 10 ? 10 : upDownTravelTime3; 394 // map.dgmaxtzsj = upDownTravelTime3 < 10 ? 10 : upDownTravelTime3;
316 }; 395 };
317 - // 判断时间在什么时间段段内  
318 - var judgmentTimeQuantum = function (t) {  
319 - if(t <= DateTimeTool.getDateTime('6:30'))  
320 - return 0;  
321 - else if(t > DateTimeTool.getDateTime('6:30') && t <= DateTimeTool.getDateTime('8:30'))  
322 - return 1;  
323 - else if(t > DateTimeTool.getDateTime('8:30') && t <= DateTimeTool.getDateTime('16:00'))  
324 - return 2;  
325 - else if(t > DateTimeTool.getDateTime('16:00') && t <= DateTimeTool.getDateTime('18:00'))  
326 - return 3;  
327 - else if(t > DateTimeTool.getDateTime('18:00'))  
328 - return 4;  
329 - };  
330 - // 8:31-16:00专用  
331 - var judgmentTimeQuantum1 = function (t) {  
332 - if(t > DateTimeTool.getDateTime('8:30') && t <= DateTimeTool.getDateTime('10:30'))  
333 - return 1;  
334 - else if(t > DateTimeTool.getDateTime('10:30') && t <= DateTimeTool.getDateTime('12:30'))  
335 - return 2;  
336 - else if(t > DateTimeTool.getDateTime('12:30') && t <= DateTimeTool.getDateTime('14:30'))  
337 - return 2;  
338 - else if(t > DateTimeTool.getDateTime('14:30') && t <= DateTimeTool.getDateTime('16:00'))  
339 - return 1;  
340 - };  
341 396
342 // 判断发车间隙 397 // 判断发车间隙
343 var judgeFCJX = function (kssj, dataMap) { 398 var judgeFCJX = function (kssj, dataMap) {
344 - var time = dataMap.fcjx[judgmentTimeQuantum(kssj)]; 399 + var time = dataMap.fcjx[DateTimeTool.judgmentTimeQuantum(kssj)];
345 if(time == null) 400 if(time == null)
346 return 0; 401 return 0;
347 - if(judgmentTimeQuantum(kssj) == 2) { 402 + if(DateTimeTool.judgmentTimeQuantum(kssj) == 2) {
348 // 为了从大到小在从小到大 403 // 为了从大到小在从小到大
349 - var time = Math.round((time.max - time.min)/2);  
350 - return time*judgmentTimeQuantum1(kssj) + time.min; 404 + var resultTime = Math.round((time.max - time.min)/2);
  405 + return resultTime*DateTimeTool.judgmentTimeQuantum1(kssj) + time.min;
  406 + }else if(DateTimeTool.judgmentTimeQuantum(kssj) == 1 || DateTimeTool.judgmentTimeQuantum(kssj) == 3) {
  407 + return time.max;
351 } else { 408 } else {
352 return Math.round((time.max + time.min)/2); 409 return Math.round((time.max + time.min)/2);
353 } 410 }
@@ -355,8 +412,8 @@ var scheduleInitialize = function () { @@ -355,8 +412,8 @@ var scheduleInitialize = function () {
355 // 判断停站时间 412 // 判断停站时间
356 var judgeTZSJ = function (dir, kssj, dataMap) { 413 var judgeTZSJ = function (dir, kssj, dataMap) {
357 var sj = new Date(kssj); 414 var sj = new Date(kssj);
358 - sj.setMinutes(sj.getMinutes() + dataMap.xssj[dir][judgmentTimeQuantum(sj)]);  
359 - var sjd = judgmentTimeQuantum(sj); 415 + sj.setMinutes(sj.getMinutes() + dataMap.xssj[dir][DateTimeTool.judgmentTimeQuantum(sj)]);
  416 + var sjd = DateTimeTool.judgmentTimeQuantum(sj);
360 var time = dataMap.tzsj[dir][sjd]; 417 var time = dataMap.tzsj[dir][sjd];
361 if(time == null) 418 if(time == null)
362 return 0; 419 return 0;
@@ -370,9 +427,9 @@ var scheduleInitialize = function () { @@ -370,9 +427,9 @@ var scheduleInitialize = function () {
370 }; 427 };
371 // 判断行驶时间 428 // 判断行驶时间
372 var judgeXSSJ = function (dir, kssj, dataMap) { 429 var judgeXSSJ = function (dir, kssj, dataMap) {
373 - var xssj = dataMap.xssj[dir][judgmentTimeQuantum(kssj)]; 430 + var xssj = dataMap.xssj[dir][DateTimeTool.judgmentTimeQuantum(kssj)];
374 431
375 - var sjd = judgmentTimeQuantum(sj); 432 + /*var sjd = DateTimeTool.judgmentTimeQuantum(kssj);
376 var time = dataMap.tzsj[dir][sjd]; 433 var time = dataMap.tzsj[dir][sjd];
377 if(time == null) 434 if(time == null)
378 return 0; 435 return 0;
@@ -383,6 +440,18 @@ var scheduleInitialize = function () { @@ -383,6 +440,18 @@ var scheduleInitialize = function () {
383 } else { 440 } else {
384 return time.max; 441 return time.max;
385 } 442 }
  443 +
  444 + var time = dataMap.fcjx[DateTimeTool.judgmentTimeQuantum(kssj)];
  445 + if(time == null)
  446 + return 0;
  447 + if(DateTimeTool.judgmentTimeQuantum(kssj) == 2) {
  448 + // 为了从大到小在从小到大
  449 + var time = Math.round((time.max - time.min)/2);
  450 + return time*DateTimeTool.judgmentTimeQuantum1(kssj) + time.min;
  451 + } else {
  452 + return Math.round((time.max + time.min)/2);
  453 + }*/
  454 + return xssj;
386 }; 455 };
387 /** 456 /**
388 * @discription : (TODO) 判断是否为最后一个班次 457 * @discription : (TODO) 判断是否为最后一个班次
@@ -400,22 +469,6 @@ var scheduleInitialize = function () { @@ -400,22 +469,6 @@ var scheduleInitialize = function () {
400 return tag; 469 return tag;
401 }; 470 };
402 /** 471 /**
403 - * @discription : (TODO) 获取行驶时间  
404 - *  
405 - * @parmas : [zg--早高峰时间段;wg--晚高峰时间段;sj--当前时间;pc--平常行驶时间;gf--高峰行驶时间;dir--方向]  
406 - *  
407 - * @return : 返回一个数值。这里返回的是行驶时间数值  
408 - *  
409 - * */  
410 - var getByDirTravelTime = function(zg,wg,sj,pc,gf,dir) {  
411 - var xxsj = 0;  
412 - if(isgfsjd(zg[0].st,zg[0].ed,sj) || isgfsjd(wg[0].st,wg[0].ed,sj))  
413 - xxsj = gf[dir];  
414 - else  
415 - xxsj = pc[dir];  
416 - return xxsj;  
417 - };  
418 - /**  
419 * @discription : (TODO) 比较一个时间是否在某个时间段内 472 * @discription : (TODO) 比较一个时间是否在某个时间段内
420 * 473 *
421 * @params : [st--开始时间;ed--结束时间;sj--当前时间] 474 * @params : [st--开始时间;ed--结束时间;sj--当前时间]
@@ -503,77 +556,6 @@ var scheduleInitialize = function () { @@ -503,77 +556,6 @@ var scheduleInitialize = function () {
503 }; 556 };
504 557
505 /** 558 /**
506 - * @description (TODO) 标记上、下行首末班车.  
507 - * @param jsonArray 初始化路牌下的所有班次并且已经均匀发车间隙的数组集合.  
508 - * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行].  
509 - */  
510 - var markFirstAndLastBus = function(jsonArray , dataMap) {  
511 - // 定义上、下行的正常、区间、空放、直放班次、返回数组集合.  
512 - var listMap = getUpAndDownBc( jsonArray , dataMap) , resultArray = new Array();  
513 - for(var i = 0 ; i < listMap.length ; i++) {  
514 - if(listMap[i].bc.length > 0){  
515 - // 把班次顺序排序.  
516 - listMap[i].bc.sort(function(a,b){return a.fcint-b.fcint});  
517 - // 确定首末班车时间.  
518 - markFirstAndLastBusAlso(listMap[i].bc , dataMap , i);  
519 - }  
520 - resultArray = resultArray.concat(listMap[i].bc);  
521 - }  
522 - return resultArray;  
523 - };  
524 -  
525 - /**  
526 - * @description (TODO) 确定某方向下的末班车.  
527 - * @param dirArray 某方向下的数组集合.  
528 - * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行].  
529 - * @param dir 方向.  
530 - */  
531 - var markFirstAndLastBusAlso = function(dirArray , dataMap , dir) {  
532 - if(dirArray.length>=2) {  
533 - // 定义最后一个班次.  
534 - var dirLastBc = dirArray[dirArray.length-1];  
535 - // 确认末班车时间  
536 - if(dirLastBc.fcsj != dataMap.smbcsjArr[dir].jssj) {  
537 - // 修改最后一个班次的发车时间.  
538 - dirLastBc.fcsj = dataMap.smbcsjArr[dir].jssj;  
539 - // 修改最后一个班次的班次时间.  
540 - dirLastBc.bcsj = dataMap.dgxxsjArr[dir];  
541 - // 定义到达时间.  
542 - var ddsj_ = DateTimeTool.getDateTime(dirLastBc.fcsj);  
543 - ddsj_.setMinutes(ddsj_.getMinutes() + dataMap.xssj[dir][4]);  
544 - // 修改最后一个班次的到达时间.  
545 - dirLastBc.ARRIVALTIME = DateTimeTool.getHHmmStr(ddsj_);  
546 - dirLastBc.bcsj = dataMap.xssj[dir][4];  
547 - }  
548 - }  
549 - };  
550 -  
551 - /**  
552 - * @description (TODO) 获取 上、下行的正常、区间、空放、直放班次.  
553 - * @param 需要分割的班次数据集合.  
554 - * @param 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行].  
555 - */  
556 - var getUpAndDownBc = function(json,dataMap) {  
557 - // 定义上行班次 、 下行班次 数组集合、返回数组集合对象.  
558 - var upArray = new Array(),downArray = new Array(),rs = new Array();  
559 - for(var j = 0 ; j< json.length ; j++) {  
560 - // 判断是否为正常、区间、空放、直放班次  
561 - if(json[j].bcType== dataMap.bcTypeArr.normal ||  
562 - json[j].bcType== dataMap.bcTypeArr.region ||  
563 - json[j].bcType== dataMap.bcTypeArr.major ||  
564 - json[j].bcType== dataMap.bcTypeArr.venting) {  
565 - if(json[j].xlDir == dataMap.dira[0])  
566 - upArray.push(json[j]);  
567 - else if(json[j].xlDir == dataMap.dira[1])  
568 - downArray.push(json[j]);  
569 - }  
570 - }  
571 - rs.push({'bc' : upArray},{'bc' : downArray});  
572 - // 返回数据.  
573 - return rs;  
574 - };  
575 -  
576 - /**  
577 * @description : (TODO) 调整某班型下的各个路牌对应的班次以及工时、停站时间、是否分班. -- 这里我们也叫抽车 559 * @description : (TODO) 调整某班型下的各个路牌对应的班次以及工时、停站时间、是否分班. -- 这里我们也叫抽车
578 * @param bxlpbc 班型下的各个路牌的所有班次数组. 560 * @param bxlpbc 班型下的各个路牌的所有班次数组.
579 * @param map 表单参数信息 561 * @param map 表单参数信息
@@ -636,106 +618,95 @@ var scheduleInitialize = function () { @@ -636,106 +618,95 @@ var scheduleInitialize = function () {
636 var sumGs = 0; 618 var sumGs = 0;
637 if(lpbc.length<=0) 619 if(lpbc.length<=0)
638 return; 620 return;
639 - var isLastFlag = lpDownIsHaveLastBc(lpbc , dataMap.smbcsjArr) , tcbcgzA = new Array();  
640 - var isFirstFlag = lpDownIsHaveFirstBc(lpbc , dataMap.smbcsjArr); 621 + var isLastFlag = bcFun.lpBcIsHaveLast(lpbc , dataMap.smbcsjArr) , tcbcgzA = new Array();
  622 + var isFirstFlag = bcFun.lpBcIsHaveFirst(lpbc , dataMap.smbcsjArr);
641 var bxStr = lpbc[0].lpName.split('_'); 623 var bxStr = lpbc[0].lpName.split('_');
642 /** 满足工时需要剔除的班次 624 /** 满足工时需要剔除的班次
643 * wgfhtcbcNum,zgfqtcbcNum 定义晚高峰后,早高峰前 能剔除多少班次数(适用于单挡连班) 625 * wgfhtcbcNum,zgfqtcbcNum 定义晚高峰后,早高峰前 能剔除多少班次数(适用于单挡连班)
644 - * dgzjtcbcNum: 低估中间能剔除多少班次数(适用于五休二以外的分班) 626 + * dgzjtcbcNum1: 低估中间能剔除多少班次数(适用于五休二以外的分班)
645 * dgtcbcNum: 低估能剔除多少班次数(适用于五休二分班) 627 * dgtcbcNum: 低估能剔除多少班次数(适用于五休二分班)
646 */ 628 */
647 - var wgfhtcbcNum=0,zgfqtcbcNum=0,dgzjtcbcNum=0,dgtcbcNum=0; 629 + var wgfhtcbcNum=0,zgfqtcbcNum=0,dgzjtcbcNum1=0,dgzjtcbcNum2=0,dgtcbcNum=0;
648 $.each(lpbc, function () { 630 $.each(lpbc, function () {
649 if(DateTimeTool.getDateTime(this.fcsj) > dataMap.wgfzhsjd[0].st) 631 if(DateTimeTool.getDateTime(this.fcsj) > dataMap.wgfzhsjd[0].st)
650 wgfhtcbcNum++; 632 wgfhtcbcNum++;
651 if(DateTimeTool.getDateTime(this.fcsj) < dataMap.zgfsjd[0].st) 633 if(DateTimeTool.getDateTime(this.fcsj) < dataMap.zgfsjd[0].st)
652 zgfqtcbcNum++; 634 zgfqtcbcNum++;
653 if(DateTimeTool.getDateTime(this.fcsj) > dgzjsj && DateTimeTool.getDateTime(this.fcsj) < dataMap.wgfsjd[0].st) 635 if(DateTimeTool.getDateTime(this.fcsj) > dgzjsj && DateTimeTool.getDateTime(this.fcsj) < dataMap.wgfsjd[0].st)
654 - dgzjtcbcNum++; 636 + dgzjtcbcNum1++;
  637 + if(DateTimeTool.getDateTime(this.fcsj) > dataMap.zgfsjd[0].ed && DateTimeTool.getDateTime(this.fcsj) < dgzjsj)
  638 + dgzjtcbcNum2++;
655 if(DateTimeTool.getDateTime(this.fcsj) > dataMap.zgfsjd[0].ed && DateTimeTool.getDateTime(this.fcsj) < dataMap.wgfsjd[0].st) 639 if(DateTimeTool.getDateTime(this.fcsj) > dataMap.zgfsjd[0].ed && DateTimeTool.getDateTime(this.fcsj) < dataMap.wgfsjd[0].st)
656 dgtcbcNum++; 640 dgtcbcNum++;
657 -  
658 }); 641 });
  642 + // dgtcbcNum = dgzjtcbcNum1+dgzjtcbcNum2
659 if(bxStr[0] == '五工二休'){ 643 if(bxStr[0] == '五工二休'){
660 - if(isLastFlag) { 644 + if(isLastFlag && !isFirstFlag) {
661 // 定义时间段内剔除班次规则. 645 // 定义时间段内剔除班次规则.
662 - tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'asc' , 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgtcbcNum: deletebcNum}); 646 + tcbcgzA.push({'minsj': dgzjsj , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'asc' , 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1: deletebcNum},
  647 + {'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgzjtcbcNum2: deletebcNum-dgzjtcbcNum1},
  648 + {'minsj': dataMap.zgfzqsjd[0].st , 'maxsj' : dataMap.zgfzqsjd[0].ed , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum - zgfqtcbcNum > 0 ? zgfqtcbcNum: deletebcNum-dgtcbcNum});
663 }else { 649 }else {
664 - tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dataMap.wgfsjd[0].st ,'order' : 'asc' , 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgtcbcNum: deletebcNum},  
665 - {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum}); 650 + tcbcgzA.push({'minsj': dgzjsj , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'asc' , 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1: deletebcNum},
  651 + {'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgzjtcbcNum2: deletebcNum-dgzjtcbcNum1},
  652 + {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum - zgfqtcbcNum > 0 ? zgfqtcbcNum: deletebcNum-dgtcbcNum});
666 } 653 }
667 } else { 654 } else {
668 if(lpbc.isfb) { 655 if(lpbc.isfb) {
669 - if(isLastFlag) {  
670 - tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum > 0 ? dgzjtcbcNum: deletebcNum},  
671 - {'minsj': dataMap.zgfzqsjd[0].st , 'maxsj' : dataMap.zgfzqsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum});  
672 - } else if(isFirstFlag){  
673 - tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum > 0 ? dgzjtcbcNum: deletebcNum},  
674 - {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum}); 656 + if(isLastFlag && !isFirstFlag) {
  657 + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'desc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1 : deletebcNum},
  658 + {'minsj': dataMap.zgfzqsjd[0].st , 'maxsj' : dataMap.zgfzqsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 - zgfqtcbcNum > 0 ? zgfqtcbcNum : deletebcNum - dgzjtcbcNum1});
  659 + } else if(isFirstFlag && !isLastFlag){
  660 + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1 : deletebcNum},
  661 + {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 - wgfhtcbcNum > 0 ? wgfhtcbcNum : deletebcNum-dgzjtcbcNum1},
  662 + {'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgzjtcbcNum2 : deletebcNum-dgzjtcbcNum1});
  663 + } else if(isFirstFlag && isLastFlag){
  664 + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgtcbcNum : deletebcNum});
675 } else { 665 } else {
676 - tcbcgzA.push({'minsj': dataMap.wgfsjd[0].ed, 'maxsj' : dataMap.wgfzhsjd[0].ed,'order' : 'desc', 'deletebcNum' : deletebcNum - dgzjtcbcNum},  
677 - {'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum > 0 ? dgzjtcbcNum: deletebcNum}); 666 + tcbcgzA.push({'minsj': dgzjsj , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'asc' , 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1: deletebcNum},
  667 + {'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgzjtcbcNum2: deletebcNum-dgzjtcbcNum1},
  668 + {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc' , 'deletebcNum' : deletebcNum - dgtcbcNum - zgfqtcbcNum > 0 ? zgfqtcbcNum: deletebcNum-dgtcbcNum});
678 } 669 }
679 }else { 670 }else {
  671 + if(isLastFlag && !isFirstFlag) {
  672 + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 - zgfqtcbcNum > 0 ? dgzjtcbcNum1 : deletebcNum-zgfqtcbcNum},
  673 + {'minsj': dataMap.zgfzqsjd[0].st , 'maxsj' : dataMap.zgfzqsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - zgfqtcbcNum > 0 ? zgfqtcbcNum : deletebcNum});
  674 + } else if(!isLastFlag && isFirstFlag){
  675 + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - wgfhtcbcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1 : deletebcNum-wgfhtcbcNum},
  676 + {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc', 'deletebcNum' : deletebcNum - wgfhtcbcNum > 0 ? wgfhtcbcNum : deletebcNum});
  677 + } else if(isFirstFlag && isLastFlag){
  678 + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgtcbcNum : deletebcNum});
  679 + } else {
  680 + tcbcgzA.push({'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed, 'order' : 'desc', 'deletebcNum' : deletebcNum - zgfqtcbcNum - wgfhtcbcNum > 0 ? wgfhtcbcNum : deletebcNum-zgfqtcbcNum},
  681 + {'minsj': dataMap.zgfzqsjd[0].st, 'maxsj' : dataMap.zgfzqsjd[0].ed, 'order' : 'asc','deletebcNum' : deletebcNum - zgfqtcbcNum > 0 ? zgfqtcbcNum : deletebcNum});
  682 + }
680 // 单档 一个路牌一档劳动力 683 // 单档 一个路牌一档劳动力
681 /*if(deletebcNum - (wgfhtcbcNum+zgfqtcbcNum) > 0) { 684 /*if(deletebcNum - (wgfhtcbcNum+zgfqtcbcNum) > 0) {
682 // TODO:可能删除末班车 685 // TODO:可能删除末班车
683 - tcbcgzA.push({'minsj': dataMap.wgfsjd[0].ed, 'maxsj' : dataMap.wgfzhsjd[0].ed,'order' : 'desc', 'deletebcNum' : deletebcNum - dgzjtcbcNum},  
684 - {'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum > 0 ? dgzjtcbcNum: deletebcNum}); 686 + tcbcgzA.push({'minsj': dataMap.wgfsjd[0].ed, 'maxsj' : dataMap.wgfzhsjd[0].ed,'order' : 'desc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1},
  687 + {'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1: deletebcNum});
685 } else { 688 } else {
686 if(isLastFlag) { 689 if(isLastFlag) {
687 - tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum > 0 ? dgzjtcbcNum: deletebcNum},  
688 - {'minsj': dataMap.zgfzqsjd[0].st , 'maxsj' : dataMap.zgfzqsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum}); 690 + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1: deletebcNum},
  691 + {'minsj': dataMap.zgfzqsjd[0].st , 'maxsj' : dataMap.zgfzqsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1});
689 } else if(isFirstFlag){ 692 } else if(isFirstFlag){
690 - tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum > 0 ? dgzjtcbcNum: deletebcNum},  
691 - {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum}); 693 + tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1 > 0 ? dgzjtcbcNum1: deletebcNum},
  694 + {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum1});
692 } else { 695 } else {
693 tcbcgzA.push({'minsj': dataMap.wgfsjd[0].ed, 'maxsj' : dataMap.wgfzhsjd[0].ed, 'order' : 'desc', 'deletebcNum' : deletebcNum - zgfqtcbcNum}, 696 tcbcgzA.push({'minsj': dataMap.wgfsjd[0].ed, 'maxsj' : dataMap.wgfzhsjd[0].ed, 'order' : 'desc', 'deletebcNum' : deletebcNum - zgfqtcbcNum},
694 {'minsj': dataMap.zgfzqsjd[0].st, 'maxsj' : dataMap.zgfzqsjd[0].ed, 'order' : 'asc','deletebcNum' : zgfqtcbcNum}); 697 {'minsj': dataMap.zgfzqsjd[0].st, 'maxsj' : dataMap.zgfzqsjd[0].ed, 'order' : 'asc','deletebcNum' : zgfqtcbcNum});
695 } 698 }
696 }*/ 699 }*/
697 - if(isLastFlag) {  
698 - tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgtcbcNum > 0 ? dgtcbcNum: deletebcNum});  
699 - } else if(isFirstFlag){  
700 - tcbcgzA.push({'minsj': dgzjsj, 'maxsj' : dataMap.wgfsjd[0].st, 'order' : 'asc', 'deletebcNum' : deletebcNum - dgzjtcbcNum > 0 ? dgzjtcbcNum: deletebcNum},  
701 - {'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc', 'deletebcNum' : deletebcNum - dgzjtcbcNum});  
702 - } else {  
703 - tcbcgzA.push({'minsj': dataMap.wgfzhsjd[0].st , 'maxsj' : dataMap.wgfzhsjd[0].ed, 'order' : 'desc', 'deletebcNum' : deletebcNum - zgfqtcbcNum},  
704 - {'minsj': dataMap.zgfzqsjd[0].st, 'maxsj' : dataMap.zgfzqsjd[0].ed, 'order' : 'asc','deletebcNum' : zgfqtcbcNum});  
705 - }  
706 } 700 }
707 } 701 }
708 // 剔除不在高峰时间段内的班次. 702 // 剔除不在高峰时间段内的班次.
709 spliceBc02(lpbc , tcbcgzA , dataMap , false); 703 spliceBc02(lpbc , tcbcgzA , dataMap , false);
  704 + lpbc.sort(function(x,y){return x.fcno-y.fcno});
710 rsultA = rsultA.concat(lpbc); 705 rsultA = rsultA.concat(lpbc);
711 return rsultA; 706 return rsultA;
712 }; 707 };
713 708
714 /** 709 /**
715 - * @description (TODO) 判断某路牌下是否存在末班车时间班次.  
716 - * @param arr 某路牌下的班次.  
717 - * @param smbcsjArr 首末班车时间点数组集合.  
718 - */  
719 - var lpDownIsHaveLastBc = function(arr , smbcsjArr) {  
720 - for(var a = 0 ; a < arr.length ; a++) {  
721 - for(var s = 0 ; s < smbcsjArr.length ; s++) {  
722 - if(arr[a].fcsj == smbcsjArr[s].jssj && dirDmToIndex(arr[a].xlDir) == s)  
723 - return true;  
724 - }  
725 - }  
726 - return false;  
727 - };  
728 - var lpDownIsHaveFirstBc = function(arr , smbcsjArr) {  
729 - for(var a = 0 ; a < arr.length ; a++) {  
730 - for(var s = 0 ; s < smbcsjArr.length ; s++) {  
731 - if(arr[a].fcsj == smbcsjArr[s].kssj && dirDmToIndex(arr[a].xlDir) == s)  
732 - return true;  
733 - }  
734 - }  
735 - return false;  
736 - };  
737 -  
738 - /**  
739 * @description (TODO) 根据定义规则剔除班次. 710 * @description (TODO) 根据定义规则剔除班次.
740 * @param arr 班次数组. 711 * @param arr 班次数组.
741 * @param tcbcgzA 剔除规则. 712 * @param tcbcgzA 剔除规则.
@@ -743,7 +714,8 @@ var scheduleInitialize = function () { @@ -743,7 +714,8 @@ var scheduleInitialize = function () {
743 * @param isfb 剔除过程中是否会产生分班. 714 * @param isfb 剔除过程中是否会产生分班.
744 */ 715 */
745 var spliceBc02 = function (arr , tcbcgzA , dataMap , isfb) { 716 var spliceBc02 = function (arr , tcbcgzA , dataMap , isfb) {
746 - for(var t = 0 ; t < tcbcgzA.length ; t++) { 717 + tcbcgzA.sort();
  718 + for(var t = tcbcgzA.length-1 ; t >=0 ; t--) {
747 if(tcbcgzA[t].deletebcNum <= 0) { 719 if(tcbcgzA[t].deletebcNum <= 0) {
748 continue; 720 continue;
749 } 721 }
@@ -752,22 +724,73 @@ var scheduleInitialize = function () { @@ -752,22 +724,73 @@ var scheduleInitialize = function () {
752 arr.sort(function(x,y){return x.fcno-y.fcno}); 724 arr.sort(function(x,y){return x.fcno-y.fcno});
753 else if(order == 'desc') 725 else if(order == 'desc')
754 arr.sort(function(m,n){return n.fcno-m.fcno}); 726 arr.sort(function(m,n){return n.fcno-m.fcno});
755 - for(var a = 0 ; a < arr.length ; a ++) {  
756 - var fcsj = DateTimeTool.getDateTime(arr[a].fcsj);  
757 - // 判断是否在高峰时间范围.【true--表示在,false--表示不在】.  
758 - if(!isPeakTimeScope(fcsj,dataMap) && fcsj > tcbcgzA[t].minsj && fcsj < tcbcgzA[t].maxsj) {  
759 - if(order == 'asc') {  
760 - if(a>0) {  
761 - arr[a-1].isfb = isfb ? 1 : 0;  
762 - arr[a-1].STOPTIME = 0; 727 + // 主站停车类型,分班班次只能主站停车
  728 + if(dataMap.isMasterStop) {
  729 + for(var a = 0 ; a < arr.length ; a ++) {
  730 + var fcsj = DateTimeTool.getDateTime(arr[a].fcsj);
  731 + // 判断是否在高峰时间范围.【true--表示在,false--表示不在】.
  732 + if(!isPeakTimeScope(fcsj,dataMap) && fcsj > tcbcgzA[t].minsj && fcsj < tcbcgzA[t].maxsj) {
  733 + // 判断早高峰两小时之后的剔除班次,是否需要考虑主站停车(默认需要考录,但是早高峰之后两小时内有需要剔除的班次,那就不考虑)
  734 + var sjdtype = true;
  735 + if(order == 'asc') {
  736 + if(a>0 && arr[a-1] != undefined && arr[a-1] != null) {
  737 + // 分班路牌需要主站停车
  738 + if(sjdtype && tcbcgzA[t].minsj >= dataMap.zgfsjd[0].ed && tcbcgzA[t].maxsj <= dataMap.wgfsjd[0].st && bcFun.dirDmToIndex(arr[a-1].xlDir) == dataMap.zzfx){
  739 + a++;
  740 + if(isPeakTimeScope(arr[a+tcbcgzA[t].deletebcNum].fcsj,dataMap))
  741 + tcbcgzA[t].deletebcNum--;
  742 + }
  743 + arr[a - 1].isfb = true;
  744 + arr[a - 1].STOPTIME = 0;
  745 + if(tcbcgzA[t].deletebcNum > 0) {
  746 + }
  747 + }
  748 + }else if(order == 'desc') {
  749 + var index_ = a + tcbcgzA[t].deletebcNum;
  750 + if(arr[index_] != undefined && arr[index_] != null){
  751 + // 分班路牌需要主站停车
  752 + if(tcbcgzA[t].minsj >= dataMap.zgfsjd[0].ed && tcbcgzA[t].maxsj <= dataMap.wgfsjd[0].st){
  753 + // 早高峰之后两小时内有需要剔除的班次标记(使标记失效)
  754 + sjdtype = false;
  755 + if(bcFun.dirDmToIndex(arr[index_].xlDir) == dataMap.zzfx) {
  756 + tcbcgzA[t].deletebcNum--;
  757 + index_--;
  758 + }
  759 + }
  760 + if(tcbcgzA[t].deletebcNum > 0){
  761 + arr[index_].STOPTIME = 0;
  762 + arr[index_].isfb = true;
  763 + }
  764 + }
763 } 765 }
764 - }else if(order == 'desc') {  
765 - var index_ = a + tcbcgzA[t].deletebcNum;  
766 - arr[index_].STOPTIME = 0;  
767 - arr[index_].isfb = isfb && a > 0 ? 1 : 0; 766 + arr.splice( a , tcbcgzA[t].deletebcNum);
  767 + break;
  768 + }
  769 + }
  770 +
  771 + } else {
  772 + // 双向停站没有停站限制
  773 + for(var a = 0 ; a < arr.length ; a ++) {
  774 + var fcsj = DateTimeTool.getDateTime(arr[a].fcsj);
  775 + // 判断是否在高峰时间范围.【true--表示在,false--表示不在】.
  776 + if(!isPeakTimeScope(fcsj,dataMap) && fcsj > tcbcgzA[t].minsj && fcsj < tcbcgzA[t].maxsj) {
  777 + if(order == 'asc') {
  778 + if(a>0 && arr[a-1] != undefined && arr[a-1] != null) {
  779 + // arr[a-1].isfb = isfb ? 1 : 0;
  780 + arr[a-1].isfb = true;
  781 + arr[a-1].STOPTIME = 0;
  782 + }
  783 + }else if(order == 'desc') {
  784 + var index_ = a + tcbcgzA[t].deletebcNum;
  785 + if(arr[index_] != undefined && arr[index_] != null){
  786 + arr[index_].STOPTIME = 0;
  787 + arr[index_].isfb = true;
  788 + // arr[index_].isfb = isfb && a > 0 ? 1 : 0;
  789 + }
  790 + }
  791 + arr.splice( a , tcbcgzA[t].deletebcNum);
  792 + break;
768 } 793 }
769 - arr.splice( a , tcbcgzA[t].deletebcNum);  
770 - break;  
771 } 794 }
772 } 795 }
773 } 796 }
@@ -837,16 +860,6 @@ var scheduleInitialize = function () { @@ -837,16 +860,6 @@ var scheduleInitialize = function () {
837 } 860 }
838 return parseFloat((sumWorkTime/60).toFixed(2)); 861 return parseFloat((sumWorkTime/60).toFixed(2));
839 }; 862 };
840 - // 切割出连班路牌  
841 - var cutCar = function(carListH,carListCache) {  
842 - for(var c=0; c<carListH.length; c++){  
843 - if(carListH[c].isfb) {  
844 - carListCache.push(carListH[c]);  
845 - carListH.splice(c,1);  
846 - cutCar(carListH,carListCache);  
847 - }  
848 - }  
849 - };  
850 var dirDmToIndex = function (str) { 863 var dirDmToIndex = function (str) {
851 if(str == 'relationshipGraph-up') 864 if(str == 'relationshipGraph-up')
852 return 0; 865 return 0;
@@ -893,6 +906,7 @@ var scheduleInitialize = function () { @@ -893,6 +906,7 @@ var scheduleInitialize = function () {
893 if(canCf.length>0 && canCf[canCf.length-1].isfb == 0) { // NEW,如果班次是分班班次,就不吃饭 906 if(canCf.length>0 && canCf[canCf.length-1].isfb == 0) { // NEW,如果班次是分班班次,就不吃饭
894 console.log('countTzsj:' + countTzsj + 'length:' + canCf.length); 907 console.log('countTzsj:' + countTzsj + 'length:' + canCf.length);
895 var fxDm = dirDmToIndex(canCf[canCf.length-1].xlDir); 908 var fxDm = dirDmToIndex(canCf[canCf.length-1].xlDir);
  909 + cfddDm = (cfddDm == 1 ? 0:1);
896 if (map.cfdd == "allYes") { // NEW,如果选择的吃饭地点是所有,则使用班次的方向作为吃饭班次的方向 910 if (map.cfdd == "allYes") { // NEW,如果选择的吃饭地点是所有,则使用班次的方向作为吃饭班次的方向
897 cfddDm = fxDm; 911 cfddDm = fxDm;
898 } 912 }
@@ -921,154 +935,12 @@ var scheduleInitialize = function () { @@ -921,154 +935,12 @@ var scheduleInitialize = function () {
921 } 935 }
922 } 936 }
923 }; 937 };
924 -  
925 - /**  
926 - * @description (TODO) 横向调整 调整停站时间.  
927 - * @param cara 路牌数组.  
928 - * @param tempa 所有的班次数组集合.  
929 - * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行].  
930 - *  
931 - * ******************************** 思路 *************************************************  
932 - * 第一步 等到每个路牌下的班次数组集合.  
933 - *  
934 - * 第二步 顺序排序每个路牌下的班次数组集合.  
935 - *  
936 - * 第三步 从第二个班次开始,用第二个班次的发车时间 - 上一个班次的到达时间 得到 上一个班次的停站时间.  
937 - *  
938 - * 第四步 修改上一个班次的停站时间.  
939 - *  
940 - * 修改停站时间规则:以行驶时间的10%-15% 为标准。  
941 - * 如果超出该范围。则以录入参数低谷最大停站间隙为准。  
942 - * 停站时间最大不能超过该停站时间。  
943 - * 高峰附近的班次的停站时间在离高峰最近一个班次的停站时间浮动范围【1-2】分钟。  
944 - *  
945 - * ****************************************************************************************  
946 - */  
947 - var resizeByPitStopTime = function(cara,tempa,dataMap) {  
948 - var cLen = cara.length,tLen = tempa.length;  
949 - if(cLen<= 0 || tLen<=0 || dataMap==null)  
950 - return;  
951 - // 定义低谷最大停站时间、行业标准最小、最大停站时间(行驶时间的10%~15%).  
952 - var dgmaxtzsj = dataMap.dgmaxtzsj,normmintzsj, normmaxtzsj;  
953 - for(var t = 0 ; t < cLen ; t++) {  
954 - // 定义当前路牌班次数组集合.  
955 - var sslpbcA = new Array();  
956 - for(var j =0 ; j < tLen ; j++) {  
957 - // 判断当期遍历的班次是否属于当前的路牌.如果是则添加到当前的路牌班次数组集合.  
958 - if(tempa[j].lpNo == cara[t].lpNo) {  
959 - tempa[j].fcint = DateTimeTool.getDateTime(tempa[j].fcsj).getTime();  
960 - sslpbcA.push(tempa[j]);  
961 - }  
962 - }  
963 - if(sslpbcA.length > 0) {  
964 - // 按发车时间顺序排序.  
965 - sslpbcA.sort(function(a,b){return a.fcint-b.fcint});  
966 - // 按照规则修改停站时间.  
967 - for(var r = 0 ; r < sslpbcA.length-1 ; r++) {  
968 - // test  
969 - //if(sslpbcA[r].bcType == 'cf') {  
970 - // alert('cf' + sslpbcA[r-1].fcsj);  
971 - //}  
972 - // 定义上一个班次的发车时间、当前班次的到达时间、发车时间.  
973 - var sgbcfcsj = DateTimeTool.getDateTime(sslpbcA[r+1].fcsj),  
974 - dqbcddsj = DateTimeTool.getDateTime(sslpbcA[r].ARRIVALTIME),  
975 - dqbcfcsj = DateTimeTool.getDateTime(sslpbcA[r].fcsj);  
976 - // 定义当前班次方向下标代码[0代表上行;1代表下行].  
977 - var cctag = dirDmToIndex(sslpbcA[r].xlDir); // dataMap.smbcsjArr  
978 - // 定义每每相邻两个班次之间的时间差分钟数(也就是停站时间.)  
979 - var dxmin = parseInt( (sgbcfcsj - dqbcddsj)/60000);  
980 - // 定义是否高峰  
981 - var tt_flag = isPeakTimeScope(dqbcfcsj , dataMap);  
982 - // 获取行驶时间.  
983 - var xxsj = getByDirTravelTime(dataMap.zgfsjd , dataMap.wgfsjd , dqbcfcsj,  
984 - dataMap.pcxssjArr , dataMap.gfxxsjArr ,  
985 - dirDmToIndex(sslpbcA[r].xlDir));  
986 - normmintzsj = xxsj*0.1;  
987 - normmaxtzsj = xxsj*0.15;  
988 - var flag = false;  
989 -  
990 - // 如果小于零  
991 - if(dxmin < 0 && sslpbcA[r].isfb ==0) {  
992 - // 根据不同时段的停站时间.重新赋值停站时间.  
993 - if(sslpbcA[r].bcType=='normal' && sslpbcA[r+1].bcType =='normal')  
994 - //dxmin = tt_flag ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag];  
995 - dxmin = 1;  
996 - else  
997 - dxmin = 0;  
998 - flag = true;  
999 - }else if(dxmin==0){  
1000 - if (sslpbcA[r].bcType == 'cf') { // 如果是吃饭班次,停站为0  
1001 - dxmin = 0;  
1002 - } else {  
1003 - // 这里区分,如果下一个班次是吃饭班次,停站为0  
1004 - if (sslpbcA[r + 1].bcType=='cf') {  
1005 - dxmin = 0;  
1006 - } else { // 否则使用最小停站时间  
1007 - dxmin = normmintzsj;  
1008 - }  
1009 - }  
1010 -  
1011 - flag = true;  
1012 - }else {  
1013 - // 如果 大于等于低谷最大停站时间 并且 小于等于三小时.则把低谷最大停站时间 作为 停站时间.  
1014 - if(dxmin >= dgmaxtzsj && dxmin < 180 && sslpbcA[r].isfb==0) {  
1015 - dxmin = dgmaxtzsj;  
1016 - flag = true;  
1017 - // 如果大于零 并且 小于等于行业标准的最小停站时间  
1018 - }else if(dxmin > 0 && dxmin <= normmintzsj ) {  
1019 - // dxmin = dxmin;  
1020 - flag = true;  
1021 - // 如果大于行业标准的最小停站时间 并且 小于等于行业标准的最大停站时间  
1022 - }else if(dxmin > normmintzsj && dxmin <= normmaxtzsj ) {  
1023 - // dxmin = dxmin;  
1024 - flag = true;  
1025 - // 如果大于行业标准的最大停站时间 并且 小于低谷最大停站时间  
1026 - }else if(dxmin > normmaxtzsj && dxmin < dgmaxtzsj ) {  
1027 - // dxmin = dxmin;  
1028 - flag = true;  
1029 - }else if (dxmin >= 180){  
1030 - dxmin = 0;  
1031 - }  
1032 - }  
1033 - if(flag) {  
1034 - if(!isDirSmbc(dirDmToIndex(sslpbcA[r+1].xlDir) , sslpbcA[r+1].fcsj , dataMap)) {  
1035 - // 修改当前班次的停站时间.  
1036 - sslpbcA[r].STOPTIME = parseInt(dxmin) ;  
1037 - // 当前班次的到达时间 + 停站时间 作为下一个班次的发车时间.  
1038 - dqbcddsj.setMinutes(dqbcddsj.getMinutes() + dxmin);  
1039 - // 修改下一个班次的发车时间.  
1040 - sslpbcA[r+1].fcsj = DateTimeTool.getHHmmStr(dqbcddsj);  
1041 - // 下一个班次的发车时间 + 行驶时间 作为下一个班次的到达时间.  
1042 - dqbcddsj.setMinutes(dqbcddsj.getMinutes() + sslpbcA[r+1].bcsj);  
1043 - // 修改下一个班次的到达时间.  
1044 - sslpbcA[r+1].ARRIVALTIME = DateTimeTool.getHHmmStr(dqbcddsj);  
1045 - }else {  
1046 - if(r>0) {  
1047 - // 修改当前班次的停站时间.  
1048 - sslpbcA[r].STOPTIME = parseInt(dxmin) ;  
1049 - sgbcfcsj.setMinutes(sgbcfcsj.getMinutes() - sslpbcA[r].STOPTIME);  
1050 - sslpbcA[r].ARRIVALTIME = DateTimeTool.getHHmmStr(sgbcfcsj);  
1051 - sgbcfcsj.setMinutes(sgbcfcsj.getMinutes() - sslpbcA[r].bcsj);  
1052 - sslpbcA[r].fcsj = DateTimeTool.getHHmmStr(sgbcfcsj);  
1053 - sslpbcA[r-1].STOPTIME = parseInt( ( sgbcfcsj - DateTimeTool.getDateTime(sslpbcA[r-1].ARRIVALTIME))/60000);  
1054 - }  
1055 - }  
1056 - }  
1057 - }  
1058 - }  
1059 - }  
1060 - };  
1061 -  
1062 - var isDirSmbc = function(dirDm , fcsj , dataMap) {  
1063 - var falg = false;  
1064 - if(fcsj == dataMap.smbcsjArr[dirDm].kssj || fcsj == dataMap.smbcsjArr[dirDm].jssj)  
1065 - falg = true;  
1066 - return falg;  
1067 - };  
1068 - 938 +
1069 return { 939 return {
1070 scheduleInit : scheduleInit, 940 scheduleInit : scheduleInit,
1071 - judgeFCJX : judgeFCJX,  
1072 - judgeTZSJ : judgeTZSJ 941 + judgeFCJX : judgeFCJX, //判断发车间隙
  942 + judgeTZSJ : judgeTZSJ, //判断停站时间
  943 + judgeXSSJ : judgeXSSJ, //判断行驶时间
  944 + isPeakTimeScope : isPeakTimeScope //判断是否高峰
1073 } 945 }
1074 }(); 946 }();
1075 \ No newline at end of file 947 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/tepms/bctype_temp.html
@@ -58,62 +58,6 @@ @@ -58,62 +58,6 @@
58 58
59 <!-- 表单分组组件 form-group START --> 59 <!-- 表单分组组件 form-group START -->
60 <div class="form-group"> 60 <div class="form-group">
61 - <!-- 早高峰开始时间 (* 必填项) START -->  
62 - <div class="col-md-6">  
63 - <label class="control-label col-md-5">  
64 - <span class="required"> * </span> 早高峰开始时间 :  
65 - </label>  
66 - <div class="col-md-5">  
67 - <input type="text" class="form-control" name="earlyStartTime" value="{{map.earlyStartTime}}" id="zgfkssjInput"  
68 - placeholder="请输入早高峰开始时间">  
69 - </div>  
70 - </div>  
71 - <!-- 早高峰开始时间 (* 必填项) END -->  
72 -  
73 - <!-- 早高峰结束时间 (* 必填项) START -->  
74 - <div class="col-md-6">  
75 - <label class="control-label col-md-5">  
76 - <span class="required"> * </span> 早高峰结束时间 :  
77 - </label>  
78 - <div class="col-md-5">  
79 - <input type="text" class="form-control" name="earlyEndTime" value="{{map.earlyEndTime}}" id="zgfjssjInput"  
80 - placeholder="请输入早高峰结束时间">  
81 - </div>  
82 - </div>  
83 - <!-- 早高峰结束时间 (* 必填项) END -->  
84 - </div>  
85 - <!-- 表单分组组件 form-group END -->  
86 -  
87 - <!-- 表单分组组件 form-group START -->  
88 - <div class="form-group">  
89 - <!-- 晚高峰开始时间 (* 必填项) START -->  
90 - <div class="col-md-6">  
91 - <label class="control-label col-md-5">  
92 - <span class="required"> * </span> 晚高峰开始时间 :  
93 - </label>  
94 - <div class="col-md-5">  
95 - <input type="text" class="form-control" name="lateStartTime" value="{{map.lateStartTime}}" id="wgfkssjInput"  
96 - placeholder="请输入晚高峰开始时间">  
97 - </div>  
98 - </div>  
99 - <!-- 晚高峰开始时间 (* 必填项) END -->  
100 -  
101 - <!-- 晚高峰结束 (* 必填项) START -->  
102 - <div class="col-md-6">  
103 - <label class="control-label col-md-5">  
104 - <span class="required"> * </span> 晚高峰结束时间 :  
105 - </label>  
106 - <div class="col-md-5">  
107 - <input type="text" class="form-control" name="lateEndTime" value="{{map.lateEndTime}}" id="wgfjssjInput"  
108 - placeholder="请输入晚高峰结束时间">  
109 - </div>  
110 - </div>  
111 - <!-- 晚高峰结束 (* 必填项) END -->  
112 - </div>  
113 - <!-- 表单分组组件 form-group END -->  
114 -  
115 - <!-- 表单分组组件 form-group START -->  
116 - <div class="form-group">  
117 <!-- 线路规划类型 (* 必填项) START --> 61 <!-- 线路规划类型 (* 必填项) START -->
118 <div class="col-md-6"> 62 <div class="col-md-6">
119 <label class="control-label col-md-5"> 63 <label class="control-label col-md-5">
@@ -237,76 +181,102 @@ @@ -237,76 +181,102 @@
237 </div> 181 </div>
238 <!-- 表单分组组件 form-group END --> 182 <!-- 表单分组组件 form-group END -->
239 183
240 - <!-- 表单分组组件 form-group START --> 184 + <!-- 表单分组组件 form-group START -->
  185 + <!--<div class="form-group">
  186 + &lt;!&ndash; 低谷最大发车间隙(* 必填项) START &ndash;&gt;
  187 + <div class="col-md-6">
  188 + <label class="control-label col-md-5">
  189 + <span class="required"> * </span> 低谷最大发车间隙:
  190 + </label>
  191 + <div class="col-md-5">
  192 + <input type="text" class="form-control" name="dgmaxfcjx" id="dgmaxfcjxInput" placeholder="请输入低谷最大发车间隙">
  193 + </div>
  194 + </div>
  195 + &lt;!&ndash; 低谷最大发车间隙(* 必填项) END &ndash;&gt;
  196 +
  197 + &lt;!&ndash; 低谷最大停站时间(* 必填项) START &ndash;&gt;
  198 + <div class="col-md-6">
  199 + <label class="control-label col-md-5">
  200 + <span class="required"> * </span> 低谷最大停站时间:
  201 + </label>
  202 + <div class="col-md-5">
  203 + <input type="text" class="form-control" name="dgmaxtzsj" id="dgmaxtzsjInput"
  204 + placeholder="请输入低谷最大停站时间">
  205 + </div>
  206 + </div>
  207 + &lt;!&ndash; 低谷停站时间 (* 必填项) END &ndash;&gt;
  208 + </div>-->
  209 + <!-- 表单分组组件 form-group END -->
  210 +
  211 + <!-- 表单分组组件 form-group START -->
241 <div class="form-group"> 212 <div class="form-group">
242 <div class="col-md-12"> 213 <div class="col-md-12">
243 <div class="col-md-6"> 214 <div class="col-md-6">
244 - <label class="control-label col-md-5"></label>  
245 - <label class="col-md-5">上行行驶时间</label> 215 + <label class="control-label col-md-2"></label>
  216 + <div class="col-md-5">
  217 + <label class="col-md-5">开始时间</label>
  218 + <label class="control-label col-md-1">-</label>
  219 + <label class="col-md-5">结束时间</label>
  220 + </div>
  221 + <label class="control-label col-md-1"> : </label>
  222 + <label class="col-md-4">上行行驶时间</label>
246 </div> 223 </div>
247 <div class="col-md-6"> 224 <div class="col-md-6">
248 <div class="col-md-5"></div> 225 <div class="col-md-5"></div>
249 <label class="col-md-5">下行行驶时间</label> 226 <label class="col-md-5">下行行驶时间</label>
250 -  
251 - <!--<label class="control-label col-md-1"></label>  
252 - <label class="control-label col-md-1">上行发车间隔</label>  
253 - &lt;!&ndash;<label class="control-label col-md-1">上行最大发车间隔</label>&ndash;&gt;  
254 -  
255 - <label class="control-label col-md-2"></label>  
256 - <label class="control-label col-md-1">下行发车间隔</label>-->  
257 - <!--<label class="control-label col-md-1">下行最大发车间隔</label>-->  
258 </div> 227 </div>
259 </div> 228 </div>
260 229
261 <div class="col-md-12"> 230 <div class="col-md-12">
262 <div class="col-md-6"> 231 <div class="col-md-6">
263 - <label class="control-label col-md-5"><span class="required"> * </span>首班-6:30  :</label> 232 + <label class="control-label col-md-2"><span class="required"> * </span>早高峰之前:</label>
  233 + <!-- 早高峰开始时间 (* 必填项) START -->
264 <div class="col-md-5"> 234 <div class="col-md-5">
265 - <input type="text" class="form-control" name="upTravelTime1" id="upTravelTimeInput1" 235 + <div class="col-md-5">
  236 + <input type="text" class="form-control" name="start1" value="04:00" id="startInput1"
  237 + placeholder="开始时间">
  238 + </div>
  239 + <label class="control-label col-md-1">-</label>
  240 + <div class="col-md-5">
  241 + <input type="text" class="form-control" name="end1" value="{{map.earlyStartTime}}" id="endInput1"
  242 + placeholder="结束时间">
  243 + </div>
  244 + </div>
  245 + <label class="control-label col-md-1"> : </label>
  246 + <!-- 早高峰开始时间 (* 必填项) END -->
  247 + <div class="col-md-4">
  248 + <input type="text" class="form-control" name="upTravelTime1" value="{{map.troughUpTime}}" id="upTravelTimeInput1"
266 placeholder="上行行驶时间"> 249 placeholder="上行行驶时间">
267 </div> 250 </div>
268 </div> 251 </div>
269 <div class="col-md-6"> 252 <div class="col-md-6">
270 <div class="col-md-5"></div> 253 <div class="col-md-5"></div>
271 <div class="col-md-5"> 254 <div class="col-md-5">
272 - <input type="text" class="form-control" name="downTravelTime1" id="downTravelTimeInput1" 255 + <input type="text" class="form-control" name="downTravelTime1" value="{{map.troughDownTime}}" id="downTravelTimeInput1"
273 placeholder="下行行驶时间"> 256 placeholder="下行行驶时间">
274 </div> 257 </div>
275 </div> 258 </div>
276 -  
277 - <!--<div class="col-md-3">  
278 - <label class="control-label col-md-1"></label>  
279 - <div class="col-md-5">  
280 - <input type="text" class="form-control" name="upfcjjMin1" id="upfcjjMinInput1"  
281 - placeholder="上行最小间隔">  
282 - </div>  
283 - <label class="control-label col-md-1">-</label>  
284 - <div class="col-md-5">  
285 - <input type="text" class="form-control" name="upfcjjMax1" id="upfcjjMaxInput1"  
286 - placeholder="上行最大间隔">  
287 - </div>  
288 - </div>  
289 -  
290 - <div class="col-md-3">  
291 - <label class="control-label col-md-1"></label>  
292 - <div class="col-md-5">  
293 - <input type="text" class="form-control" name="downfcjjMin1" id="downfcjjMinInput1"  
294 - placeholder="下行最小间隔">  
295 - </div>  
296 - <label class="control-label col-md-1">-</label>  
297 - <div class="col-md-5">  
298 - <input type="text" class="form-control" name="downfcjjMax1" id="downfcjjMaxInput1"  
299 - placeholder="下行最大间隔">  
300 - </div>  
301 - </div>-->  
302 </div> 259 </div>
303 260
304 <!-- 6:31-8:30--> 261 <!-- 6:31-8:30-->
305 <div class="col-md-12"> 262 <div class="col-md-12">
306 <div class="col-md-6"> 263 <div class="col-md-6">
307 - <label class="control-label col-md-5"><span class="required"> * </span>6:31-8:30  :</label>  
308 - <div class="col-md-5">  
309 - <input type="text" class="form-control" valer="{{map.earlyUpTime}}" name="upTravelTime2" id="upTravelTimeInput2" 264 + <label class="control-label col-md-2"><span class="required"> * </span>早高峰:</label>
  265 + <div class="col-md-5">
  266 + <div class="col-md-5">
  267 + <input type="text" class="form-control" name="start2" value="{{map.earlyStartTime}}" id="startInput2"
  268 + placeholder="开始时间">
  269 + </div>
  270 + <label class="control-label col-md-1">-</label>
  271 + <div class="col-md-5">
  272 + <input type="text" class="form-control" name="end2" value="{{map.earlyEndTime}}" id="endInput2"
  273 + placeholder="结束时间">
  274 + </div>
  275 + </div>
  276 + <label class="control-label col-md-1"> : </label>
  277 + <!-- 表单分组组件 form-group END -->
  278 + <div class="col-md-4">
  279 + <input type="text" class="form-control" value="{{map.earlyUpTime}}" name="upTravelTime2" id="upTravelTimeInput2"
310 placeholder="上行行驶时间"> 280 placeholder="上行行驶时间">
311 </div> 281 </div>
312 </div> 282 </div>
@@ -317,39 +287,25 @@ @@ -317,39 +287,25 @@
317 placeholder="下行行驶时间"> 287 placeholder="下行行驶时间">
318 </div> 288 </div>
319 </div> 289 </div>
320 -  
321 - <!--<div class="col-md-3">  
322 - <label class="control-label col-md-1"></label>  
323 - <div class="col-md-5">  
324 - <input type="text" class="form-control" name="upfcjjMin2" id="upfcjjMinInput2"  
325 - placeholder="上行最小间隔">  
326 - </div>  
327 - <label class="control-label col-md-1">-</label>  
328 - <div class="col-md-5">  
329 - <input type="text" class="form-control" name="upfcjjMax2" id="upfcjjMaxInput2"  
330 - placeholder="上行最大间隔">  
331 - </div>  
332 - </div>  
333 -  
334 - <div class="col-md-3">  
335 - <label class="control-label col-md-1"></label>  
336 - <div class="col-md-5">  
337 - <input type="text" class="form-control" name="downfcjjMin2" id="downfcjjMinInput2"  
338 - placeholder="下行最小间隔">  
339 - </div>  
340 - <label class="control-label col-md-1">-</label>  
341 - <div class="col-md-5">  
342 - <input type="text" class="form-control" name="downfcjjMax2" id="downfcjjMaxInput2"  
343 - placeholder="下行最大间隔">  
344 - </div>  
345 - </div>-->  
346 </div> 290 </div>
347 291
348 <!-- 8:31-16:00--> 292 <!-- 8:31-16:00-->
349 <div class="col-md-12"> 293 <div class="col-md-12">
350 <div class="col-md-6"> 294 <div class="col-md-6">
351 - <label class="control-label col-md-5"><span class="required"> * </span>8:31-16:00  :</label> 295 + <label class="control-label col-md-2"><span class="required"> * </span>高峰之间:</label>
352 <div class="col-md-5"> 296 <div class="col-md-5">
  297 + <div class="col-md-5">
  298 + <input type="text" class="form-control" name="start3" value="{{map.earlyEndTime}}" id="startInput3"
  299 + placeholder="开始时间">
  300 + </div>
  301 + <label class="control-label col-md-1">-</label>
  302 + <div class="col-md-5">
  303 + <input type="text" class="form-control" name="end3" value="{{map.lateStartTime}}" id="endInput3"
  304 + placeholder="结束时间">
  305 + </div>
  306 + </div>
  307 + <label class="control-label col-md-1"> : </label>
  308 + <div class="col-md-4">
353 <input type="text" class="form-control" value="{{map.troughUpTime}}" name="upTravelTime3" id="upTravelTimeInput3" 309 <input type="text" class="form-control" value="{{map.troughUpTime}}" name="upTravelTime3" id="upTravelTimeInput3"
354 placeholder="上行行驶时间"> 310 placeholder="上行行驶时间">
355 </div> 311 </div>
@@ -361,39 +317,25 @@ @@ -361,39 +317,25 @@
361 placeholder="下行行驶时间"> 317 placeholder="下行行驶时间">
362 </div> 318 </div>
363 </div> 319 </div>
364 -  
365 - <!--<div class="col-md-3">  
366 - <label class="control-label col-md-1"></label>  
367 - <div class="col-md-5">  
368 - <input type="text" class="form-control" name="upfcjjMin3" id="upfcjjMinInput3"  
369 - placeholder="上行最小间隔">  
370 - </div>  
371 - <label class="control-label col-md-1">-</label>  
372 - <div class="col-md-5">  
373 - <input type="text" class="form-control" name="upfcjjMax3" id="upfcjjMaxInput3"  
374 - placeholder="上行最大间隔">  
375 - </div>  
376 - </div>  
377 -  
378 - <div class="col-md-3">  
379 - <label class="control-label col-md-1"></label>  
380 - <div class="col-md-5">  
381 - <input type="text" class="form-control" name="downfcjjMin3" id="downfcjjMinInput3"  
382 - placeholder="下行最小间隔">  
383 - </div>  
384 - <label class="control-label col-md-1">-</label>  
385 - <div class="col-md-5">  
386 - <input type="text" class="form-control" name="downfcjjMax3" id="downfcjjMaxInput3"  
387 - placeholder="下行最大间隔">  
388 - </div>  
389 - </div>-->  
390 </div> 320 </div>
391 321
392 <!-- 16:01-18:00--> 322 <!-- 16:01-18:00-->
393 <div class="col-md-12"> 323 <div class="col-md-12">
394 <div class="col-md-6"> 324 <div class="col-md-6">
395 - <label class="control-label col-md-5"><span class="required"> * </span>16:01-18:00  :</label> 325 + <label class="control-label col-md-2"><span class="required"> * </span>晚高峰:</label>
396 <div class="col-md-5"> 326 <div class="col-md-5">
  327 + <div class="col-md-5">
  328 + <input type="text" class="form-control" name="start4" value="{{map.lateStartTime}}" id="startInput4"
  329 + placeholder="开始时间">
  330 + </div>
  331 + <label class="control-label col-md-1">-</label>
  332 + <div class="col-md-5">
  333 + <input type="text" class="form-control" name="end4" value="{{map.lateEndTime}}" id="endInput4"
  334 + placeholder="结束时间">
  335 + </div>
  336 + </div>
  337 + <label class="control-label col-md-1"> : </label>
  338 + <div class="col-md-4">
397 <input type="text" class="form-control" value="{{map.lateUpTime}}" name="upTravelTime4" id="upTravelTimeInput4" 339 <input type="text" class="form-control" value="{{map.lateUpTime}}" name="upTravelTime4" id="upTravelTimeInput4"
398 placeholder="上行行驶时间"> 340 placeholder="上行行驶时间">
399 </div> 341 </div>
@@ -405,76 +347,36 @@ @@ -405,76 +347,36 @@
405 placeholder="下行行驶时间"> 347 placeholder="下行行驶时间">
406 </div> 348 </div>
407 </div> 349 </div>
408 -  
409 - <!--<div class="col-md-3">  
410 - <label class="control-label col-md-1"></label>  
411 - <div class="col-md-5">  
412 - <input type="text" class="form-control" name="upfcjjMin4" id="upfcjjMinInput4"  
413 - placeholder="上行最小间隔">  
414 - </div>  
415 - <label class="control-label col-md-1">-</label>  
416 - <div class="col-md-5">  
417 - <input type="text" class="form-control" name="upfcjjMax4" id="upfcjjMaxInput4"  
418 - placeholder="上行最大间隔">  
419 - </div>  
420 - </div>  
421 -  
422 - <div class="col-md-3">  
423 - <label class="control-label col-md-1"></label>  
424 - <div class="col-md-5">  
425 - <input type="text" class="form-control" name="downfcjjMin4" id="downfcjjMinInput4"  
426 - placeholder="下行最小间隔">  
427 - </div>  
428 - <label class="control-label col-md-1">-</label>  
429 - <div class="col-md-5">  
430 - <input type="text" class="form-control" name="downfcjjMax4" id="downfcjjMaxInput4"  
431 - placeholder="下行最大间隔">  
432 - </div>  
433 - </div>-->  
434 </div> 350 </div>
435 351
436 <!-- 18:00-末班--> 352 <!-- 18:00-末班-->
437 <div class="col-md-12"> 353 <div class="col-md-12">
438 <div class="col-md-6"> 354 <div class="col-md-6">
439 - <label class="control-label col-md-5"><span class="required"> * </span>18:00-末班  :</label> 355 + <label class="control-label col-md-2"><span class="required"> * </span>晚高峰之后:</label>
440 <div class="col-md-5"> 356 <div class="col-md-5">
441 - <input type="text" class="form-control" name="upTravelTime5" id="upTravelTimeInput5" 357 + <div class="col-md-5">
  358 + <input type="text" class="form-control" name="start5" value="{{map.lateEndTime}}" id="startInput5"
  359 + placeholder="开始时间">
  360 + </div>
  361 + <label class="control-label col-md-1">-</label>
  362 + <div class="col-md-5">
  363 + <input type="text" class="form-control" name="end5" value="23:59" id="endInput5"
  364 + placeholder="结束时间">
  365 + </div>
  366 + </div>
  367 + <label class="control-label col-md-1"> : </label>
  368 + <div class="col-md-4">
  369 + <input type="text" class="form-control" value="{{map.troughUpTime}}" name="upTravelTime5" id="upTravelTimeInput5"
442 placeholder="上行行驶时间"> 370 placeholder="上行行驶时间">
443 </div> 371 </div>
444 </div> 372 </div>
445 <div class="col-md-6"> 373 <div class="col-md-6">
446 <div class="col-md-5"></div> 374 <div class="col-md-5"></div>
447 <div class="col-md-5"> 375 <div class="col-md-5">
448 - <input type="text" class="form-control" name="downTravelTime5" id="downTravelTimeInput5" 376 + <input type="text" class="form-control" value="{{map.troughDownTime}}" name="downTravelTime5" id="downTravelTimeInput5"
449 placeholder="下行行驶时间"> 377 placeholder="下行行驶时间">
450 </div> 378 </div>
451 </div> 379 </div>
452 -  
453 - <!--<div class="col-md-3">  
454 - <label class="control-label col-md-1"></label>  
455 - <div class="col-md-5">  
456 - <input type="text" class="form-control" name="upfcjjMin5" id="upfcjjMinInput5"  
457 - placeholder="上行最小间隔">  
458 - </div>  
459 - <label class="control-label col-md-1">-</label>  
460 - <div class="col-md-5">  
461 - <input type="text" class="form-control" name="upfcjjMax5" id="upfcjjMaxInput5"  
462 - placeholder="上行最大间隔">  
463 - </div>  
464 - </div>  
465 -  
466 - <div class="col-md-3">  
467 - <label class="control-label col-md-1"></label>  
468 - <div class="col-md-5">  
469 - <input type="text" class="form-control" name="downfcjjMin5" id="downfcjjMinInput5"  
470 - placeholder="下行最小间隔">  
471 - </div>  
472 - <label class="control-label col-md-1">-</label>  
473 - <div class="col-md-5">  
474 - <input type="text" class="form-control" name="downfcjjMax5" id="downfcjjMaxInput5"  
475 - placeholder="下行最大间隔">  
476 - </div>  
477 - </div>-->  
478 </div> 380 </div>
479 </div> 381 </div>
480 <!-- 表单分组组件 form-group END --> 382 <!-- 表单分组组件 form-group END -->
@@ -602,6 +504,8 @@ @@ -602,6 +504,8 @@
602 <input type="hidden" name="downInMileage" value="{{map.downInMileage}}" id="downInlcInput"/> 504 <input type="hidden" name="downInMileage" value="{{map.downInMileage}}" id="downInlcInput"/>
603 <input type="hidden" name="upOutMileage" value="{{map.upOutMileage}}" id="upOutlcInput"/> 505 <input type="hidden" name="upOutMileage" value="{{map.upOutMileage}}" id="upOutlcInput"/>
604 <input type="hidden" name="downOutMileage" value="{{map.downOutMileage}}" id="downOutlcInput"/> 506 <input type="hidden" name="downOutMileage" value="{{map.downOutMileage}}" id="downOutlcInput"/>
  507 + <!--线路等级-->
  508 + <input type="hidden" name="level" value="{{map.line.level}}" id="level"/>
605 509
606 </script> 510 </script>
607 511
@@ -675,56 +579,6 @@ @@ -675,56 +579,6 @@
675 579
676 <!-- 表单分组组件 form-group START --> 580 <!-- 表单分组组件 form-group START -->
677 <div class="form-group"> 581 <div class="form-group">
678 - <!-- 早高峰开始时间(* 必填项) START -->  
679 - <div class="col-md-6">  
680 - <label class="control-label col-md-5">  
681 - <span class="required"> * </span> 早高峰开始时间 :  
682 - </label>  
683 - <div class="col-md-4">  
684 - <p class="form-control-static" data-display="earlyStartTime"> </p>  
685 - </div>  
686 - </div>  
687 - <!-- 早高峰开始时间 (* 必填项) END -->  
688 - <!-- 早高峰结束时间 (* 必填项) START -->  
689 - <div class="col-md-6">  
690 - <label class="control-label col-md-5">  
691 - <span class="required"> * </span> 早高峰结束时间 :  
692 - </label>  
693 - <div class="col-md-4">  
694 - <p class="form-control-static" data-display="earlyEndTime"> </p>  
695 - </div>  
696 - </div>  
697 - <!-- 早高峰结束时间 (* 必填项) END -->  
698 - </div>  
699 - <!-- 表单分组组件 form-group END -->  
700 -  
701 - <!-- 表单分组组件 form-group START -->  
702 - <div class="form-group">  
703 - <!-- 晚高峰开始时间(* 必填项) START -->  
704 - <div class="col-md-6">  
705 - <label class="control-label col-md-5">  
706 - <span class="required"> * </span> 晚高峰开始时间 :  
707 - </label>  
708 - <div class="col-md-4">  
709 - <p class="form-control-static" data-display="lateStartTime"> </p>  
710 - </div>  
711 - </div>  
712 - <!-- 晚高峰开始时间(* 必填项) END -->  
713 - <!-- 晚高峰结束时间(* 必填项) START -->  
714 - <div class="col-md-6">  
715 - <label class="control-label col-md-5">  
716 - <span class="required"> * </span> 晚高峰结束时间 :  
717 - </label>  
718 - <div class="col-md-4">  
719 - <p class="form-control-static" data-display="lateEndTime"> </p>  
720 - </div>  
721 - </div>  
722 - <!-- 晚高峰结束时间(* 必填项) END -->  
723 - </div>  
724 - <!-- 表单分组组件 form-group END -->  
725 -  
726 - <!-- 表单分组组件 form-group START -->  
727 - <div class="form-group">  
728 <!-- 线路规划类型 (* 必填项) START --> 582 <!-- 线路规划类型 (* 必填项) START -->
729 <div class="col-md-6"> 583 <div class="col-md-6">
730 <label class="control-label col-md-5"> 584 <label class="control-label col-md-5">
@@ -829,38 +683,44 @@ @@ -829,38 +683,44 @@
829 </div> 683 </div>
830 <!-- 表单分组组件 form-group END --> 684 <!-- 表单分组组件 form-group END -->
831 685
832 - <!-- 表单分组组件 form-group START -->  
833 - <div class="form-group">  
834 - <!-- 班型与人次 START -->  
835 - <div class="col-md-6">  
836 - <label class="control-label col-md-5">  
837 - <span class="required"> * </span> 班型/人次/车辆 :  
838 - </label>  
839 - <div class="col-md-4">  
840 - <p class="form-control-static" data-display="bxrc"> </p>  
841 - </div>  
842 - </div>  
843 - <!-- 班型与人次 END -->  
844 - <!-- 车辆总数 START -->  
845 - <div class="col-md-6">  
846 - <label class="control-label col-md-5">  
847 - <span class="required"> * </span> 车辆总数    :  
848 - </label>  
849 - <div class="col-md-4">  
850 - <p class="form-control-static" data-display="clzs"> </p>  
851 - </div>  
852 - </div>  
853 - <!-- 车辆总数 END -->  
854 - </div>  
855 - <!-- 表单分组组件 form-group END --> 686 + <!-- 表单分组组件 form-group START -->
  687 + <!-- <div class="form-group">
  688 + &lt;!&ndash; 低谷最大发车间隙(* 必填项) START &ndash;&gt;
  689 + <div class="col-md-6">
  690 + <label class="control-label col-md-5">
  691 + <span class="required"> * </span> 低谷最大发车间隙:
  692 + </label>
  693 + <div class="col-md-4">
  694 + <p class="form-control-static" data-display="dgmaxfcjx"> </p>
  695 + </div>
  696 + </div>
  697 + &lt;!&ndash; 低谷最大发车间隙(* 必填项) END &ndash;&gt;
856 698
  699 + &lt;!&ndash; 低谷最大停站时间(* 必填项) START &ndash;&gt;
  700 + <div class="col-md-6">
  701 + <label class="control-label col-md-5">
  702 + <span class="required"> * </span> 低谷最大停站时间:
  703 + </label>
  704 + <div class="col-md-4">
  705 + <p class="form-control-static" data-display="dgmaxtzsj"> </p>
  706 + </div>
  707 + </div>
  708 + &lt;!&ndash; 低谷最大停站时间(* 必填项) END &ndash;&gt;
  709 + </div>-->
  710 + <!-- 表单分组组件 form-group END -->
857 711
858 <!-- 表单分组组件 form-group START --> 712 <!-- 表单分组组件 form-group START -->
859 <div class="form-group"> 713 <div class="form-group">
860 <div class="col-md-12"> 714 <div class="col-md-12">
861 <div class="col-md-6"> 715 <div class="col-md-6">
862 - <label class="control-label col-md-5"></label>  
863 - <label class="col-md-5">上行行驶时间</label> 716 + <label class="control-label col-md-2"></label>
  717 + <div class="col-md-5">
  718 + <label class="col-md-5">开始时间</label>
  719 + <label class="control-label col-md-1">-</label>
  720 + <label class="col-md-5">结束时间</label>
  721 + </div>
  722 + <label class="control-label col-md-1"> : </label>
  723 + <label class="col-md-4">上行行驶时间</label>
864 </div> 724 </div>
865 <div class="col-md-6"> 725 <div class="col-md-6">
866 <div class="col-md-5"></div> 726 <div class="col-md-5"></div>
@@ -870,8 +730,18 @@ @@ -870,8 +730,18 @@
870 730
871 <div class="col-md-12"> 731 <div class="col-md-12">
872 <div class="col-md-6"> 732 <div class="col-md-6">
873 - <label class="control-label col-md-5"><span class="required"> * </span>首班-6:30  :</label> 733 + <label class="control-label col-md-2"><span class="required"> * </span>早高峰之前:</label>
874 <div class="col-md-5"> 734 <div class="col-md-5">
  735 + <div class="col-md-5">
  736 + <p class="form-control-static" data-display="start1"></p>
  737 + </div>
  738 + <label class="control-label col-md-1">-</label>
  739 + <div class="col-md-5">
  740 + <p class="form-control-static" data-display="end1"></p>
  741 + </div>
  742 + </div>
  743 + <label class="control-label col-md-1"> : </label>
  744 + <div class="col-md-4">
875 <p class="form-control-static" data-display="upTravelTime1"> </p> 745 <p class="form-control-static" data-display="upTravelTime1"> </p>
876 </div> 746 </div>
877 </div> 747 </div>
@@ -886,8 +756,18 @@ @@ -886,8 +756,18 @@
886 <!-- 6:31-8:30--> 756 <!-- 6:31-8:30-->
887 <div class="col-md-12"> 757 <div class="col-md-12">
888 <div class="col-md-6"> 758 <div class="col-md-6">
889 - <label class="control-label col-md-5"><span class="required"> * </span>6:31-8:30  :</label> 759 + <label class="control-label col-md-2"><span class="required"> * </span>早高峰:</label>
890 <div class="col-md-5"> 760 <div class="col-md-5">
  761 + <div class="col-md-5">
  762 + <p class="form-control-static" data-display="start2"></p>
  763 + </div>
  764 + <label class="control-label col-md-1">-</label>
  765 + <div class="col-md-5">
  766 + <p class="form-control-static" data-display="end2"></p>
  767 + </div>
  768 + </div>
  769 + <label class="control-label col-md-1"> : </label>
  770 + <div class="col-md-4">
891 <p class="form-control-static" data-display="upTravelTime2"> </p> 771 <p class="form-control-static" data-display="upTravelTime2"> </p>
892 </div> 772 </div>
893 </div> 773 </div>
@@ -902,8 +782,18 @@ @@ -902,8 +782,18 @@
902 <!-- 8:31-16:00--> 782 <!-- 8:31-16:00-->
903 <div class="col-md-12"> 783 <div class="col-md-12">
904 <div class="col-md-6"> 784 <div class="col-md-6">
905 - <label class="control-label col-md-5"><span class="required"> * </span>8:31-16:00  :</label> 785 + <label class="control-label col-md-2"><span class="required"> * </span>早高峰之后:</label>
906 <div class="col-md-5"> 786 <div class="col-md-5">
  787 + <div class="col-md-5">
  788 + <p class="form-control-static" data-display="start3"></p>
  789 + </div>
  790 + <label class="control-label col-md-1">-</label>
  791 + <div class="col-md-5">
  792 + <p class="form-control-static" data-display="end3"></p>
  793 + </div>
  794 + </div>
  795 + <label class="control-label col-md-1"> : </label>
  796 + <div class="col-md-4">
907 <p class="form-control-static" data-display="upTravelTime3"> </p> 797 <p class="form-control-static" data-display="upTravelTime3"> </p>
908 </div> 798 </div>
909 </div> 799 </div>
@@ -918,8 +808,18 @@ @@ -918,8 +808,18 @@
918 <!-- 16:01-18:00--> 808 <!-- 16:01-18:00-->
919 <div class="col-md-12"> 809 <div class="col-md-12">
920 <div class="col-md-6"> 810 <div class="col-md-6">
921 - <label class="control-label col-md-5"><span class="required"> * </span>16:01-18:00  :</label> 811 + <label class="control-label col-md-2"><span class="required"> * </span>晚高峰:</label>
922 <div class="col-md-5"> 812 <div class="col-md-5">
  813 + <div class="col-md-5">
  814 + <p class="form-control-static" data-display="start4"></p>
  815 + </div>
  816 + <label class="control-label col-md-1">-</label>
  817 + <div class="col-md-5">
  818 + <p class="form-control-static" data-display="end4"></p>
  819 + </div>
  820 + </div>
  821 + <label class="control-label col-md-1"> : </label>
  822 + <div class="col-md-4">
923 <p class="form-control-static" data-display="upTravelTime4"> </p> 823 <p class="form-control-static" data-display="upTravelTime4"> </p>
924 </div> 824 </div>
925 </div> 825 </div>
@@ -934,8 +834,18 @@ @@ -934,8 +834,18 @@
934 <!-- 18:00-末班--> 834 <!-- 18:00-末班-->
935 <div class="col-md-12"> 835 <div class="col-md-12">
936 <div class="col-md-6"> 836 <div class="col-md-6">
937 - <label class="control-label col-md-5"><span class="required"> * </span>18:00-末班  :</label> 837 + <label class="control-label col-md-2"><span class="required"> * </span>晚高峰之后:</label>
938 <div class="col-md-5"> 838 <div class="col-md-5">
  839 + <div class="col-md-5">
  840 + <p class="form-control-static" data-display="start5"></p>
  841 + </div>
  842 + <label class="control-label col-md-1">-</label>
  843 + <div class="col-md-5">
  844 + <p class="form-control-static" data-display="end5"></p>
  845 + </div>
  846 + </div>
  847 + <label class="control-label col-md-1"> : </label>
  848 + <div class="col-md-4">
939 <p class="form-control-static" data-display="upTravelTime5"> </p> 849 <p class="form-control-static" data-display="upTravelTime5"> </p>
940 </div> 850 </div>
941 </div> 851 </div>
@@ -948,4 +858,29 @@ @@ -948,4 +858,29 @@
948 </div> 858 </div>
949 </div> 859 </div>
950 <!-- 表单分组组件 form-group END --> 860 <!-- 表单分组组件 form-group END -->
  861 +
  862 + <!-- 表单分组组件 form-group START -->
  863 + <div class="form-group">
  864 + <!-- 班型与人次 START -->
  865 + <div class="col-md-6">
  866 + <label class="control-label col-md-5">
  867 + <span class="required"> * </span> 班型/人次/车辆 :
  868 + </label>
  869 + <div class="col-md-4">
  870 + <p class="form-control-static" data-display="bxrc"> </p>
  871 + </div>
  872 + </div>
  873 + <!-- 班型与人次 END -->
  874 + <!-- 车辆总数 START -->
  875 + <div class="col-md-6">
  876 + <label class="control-label col-md-5">
  877 + <span class="required"> * </span> 车辆总数    :
  878 + </label>
  879 + <div class="col-md-4">
  880 + <p class="form-control-static" data-display="clzs"> </p>
  881 + </div>
  882 + </div>
  883 + <!-- 车辆总数 END -->
  884 + </div>
  885 + <!-- 表单分组组件 form-group END -->
951 </script> 886 </script>
952 \ No newline at end of file 887 \ No newline at end of file