Commit 5c10bae383ff435eccaa1f1a84ff28982608e0d2

Authored by 李强
1 parent 5d956c1b

bsthlq <2519941818@qq.com>

src/main/resources/static/pages/base/timesmodel/js/base-fun.js
@@ -229,7 +229,7 @@ var BaseFun = function() { @@ -229,7 +229,7 @@ var BaseFun = function() {
229 * @return : 返回一个数值。这里返回的是行驶时间数值 229 * @return : 返回一个数值。这里返回的是行驶时间数值
230 * 230 *
231 * */ 231 * */
232 - getxssj : function(zg,wg,sj,pc,gf,dir) { 232 + getByDirTravelTime : function(zg,wg,sj,pc,gf,dir) {
233 var xxsj = 0; 233 var xxsj = 0;
234 if(baseF.isgfsjd(zg[0].st,zg[0].ed,sj) || baseF.isgfsjd(wg[0].st,wg[0].ed,sj)) 234 if(baseF.isgfsjd(zg[0].st,zg[0].ed,sj) || baseF.isgfsjd(wg[0].st,wg[0].ed,sj))
235 xxsj = gf[dir]; 235 xxsj = gf[dir];
@@ -303,7 +303,7 @@ var BaseFun = function() { @@ -303,7 +303,7 @@ var BaseFun = function() {
303 dataMap.dira[cctag],xhNo++,0,gatps,0,null,null,null,0,0));// 晚餐班次 303 dataMap.dira[cctag],xhNo++,0,gatps,0,null,null,null,0,0));// 晚餐班次
304 } 304 }
305 var tzsj = dataMap.ztjxA[cctag]; 305 var tzsj = dataMap.ztjxA[cctag];
306 - var _xxsj = baseF.getxssj(dataMap.zgfsjd,dataMap.wgfsjd,kssj,dataMap.pcxssjArr,dataMap.gfxxsjArr,cctag);// 获取行驶时间 306 + var _xxsj = baseF.getByDirTravelTime(dataMap.zgfsjd,dataMap.wgfsjd,kssj,dataMap.pcxssjArr,dataMap.gfxxsjArr,cctag);// 获取行驶时间
307 var tzsj = baseF.isLastbc(kssj,endTime,tzsj,_xxsj) ? 0 : tzsj; 307 var tzsj = baseF.isLastbc(kssj,endTime,tzsj,_xxsj) ? 0 : tzsj;
308 jsonArray.push(baseF.getbcObj( 308 jsonArray.push(baseF.getbcObj(
309 kssj,_xxsj,carArray[a],dataMap.bcTypeArr.normal, 309 kssj,_xxsj,carArray[a],dataMap.bcTypeArr.normal,
@@ -325,20 +325,6 @@ var BaseFun = function() { @@ -325,20 +325,6 @@ var BaseFun = function() {
325 }, 325 },
326 326
327 /** 327 /**
328 - * @description (TODO) 剔除不在上、下行时间范围内的班次.  
329 - *  
330 - *  
331 - */  
332 - tcbzfwndbc02 : function(jsonArray,dataMap) {  
333 - var _obj = baseF.getsxAndxxbc(jsonArray,dataMap);  
334 - // 剔除上行不在时间范围内的班次  
335 - baseF.tcbc(_obj.sxbc,dataMap.smbcsjArr[0].kssj,dataMap.smbcsjArr[0].jssj);  
336 - // 剔除下行不在时间范围内的班次  
337 - baseF.tcbc(_obj.xxbc,dataMap.smbcsjArr[1].kssj,dataMap.smbcsjArr[1].jssj);  
338 - return _obj.sxbc.concat(_obj.xxbc);  
339 - },  
340 -  
341 - /**  
342 * @description : (TODO) 调整某班型下的各个路牌对应的班次以及工时、停站时间、是否分班. 328 * @description : (TODO) 调整某班型下的各个路牌对应的班次以及工时、停站时间、是否分班.
343 * @param bxlpbc 班型下的各个路牌的所有班次数组. 329 * @param bxlpbc 班型下的各个路牌的所有班次数组.
344 * @param map 表单参数信息 330 * @param map 表单参数信息
@@ -396,13 +382,13 @@ var BaseFun = function() { @@ -396,13 +382,13 @@ var BaseFun = function() {
396 * 382 *
397 * 383 *
398 **/ 384 **/
399 - tzlpgs02 : function(bxlpbc , map , dataMap , saa , cara , bxrcObj , dgminpcs) { 385 + abstractBcByWorkTime : function(bxlpbc , map , dataMap , saa , cara , bxrcObj , dgminpcs) {
400 var rsultA = new Array(); 386 var rsultA = new Array();
401 for(var a = 0 ; a < bxlpbc.length ; a++) { 387 for(var a = 0 ; a < bxlpbc.length ; a++) {
402 - // 定义该版型下对应的路牌的班次数组、班次数组长度。  
403 - var lpbc = bxlpbc[a].lpbc, lpbclen_; 388 + // 定义该版型下对应的路牌的班次数组、班次数组长度、该路牌上是否有首末班车。
  389 + var lpbc = bxlpbc[a].lpbc, lpbclen_ , isFlag = baseF.lpDownIsHaveFirstAndLastBc(lpbc , dataMap.smbcsjArr);
404 // 定义当前路牌的初始工时、班型对应的标准工时 390 // 定义当前路牌的初始工时、班型对应的标准工时
405 - var initCountGs = bxlpbc[a].initCountGs ,bzgs = bxlpbc[a].bzgs; 391 + var initCountGs = bxlpbc[a].initCountGs , bzgs = bxlpbc[a].bzgs;
406 // 定义初始工时与日平均工时差值 392 // 定义初始工时与日平均工时差值
407 var initdx = initCountGs - bxlpbc[a].gsavg; 393 var initdx = initCountGs - bxlpbc[a].gsavg;
408 // 定义剔除班次数、剔除的时间段. 394 // 定义剔除班次数、剔除的时间段.
@@ -436,24 +422,22 @@ var BaseFun = function() { @@ -436,24 +422,22 @@ var BaseFun = function() {
436 if( a % 2 == 0) { 422 if( a % 2 == 0) {
437 // 定义早高峰结束 ~ 12:30 剔除规则.如果剔除的班次数不够,则去晚高峰之后剔除剩下的班次. 423 // 定义早高峰结束 ~ 12:30 剔除规则.如果剔除的班次数不够,则去晚高峰之后剔除剩下的班次.
438 var swmaxtcbcNum = parseInt(( dgzjsj - dataMap.zgfsjd[0].ed) / (60000 * saa[0].zzsj.dgzzsj)); 424 var swmaxtcbcNum = parseInt(( dgzjsj - dataMap.zgfsjd[0].ed) / (60000 * saa[0].zzsj.dgzzsj));
439 - if(deletebcNum < swmaxtcbcNum) { 425 + if(deletebcNum < swmaxtcbcNum || isFlag) {
440 // tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'asc' , 'deletebcNum' : deletebcNum}); 426 // tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'asc' , 'deletebcNum' : deletebcNum});
441 - tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'asc' , 'deletebcNum' : deletebcNum}); 427 + tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'asc' , 'deletebcNum' : swmaxtcbcNum});
442 }else { 428 }else {
443 tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed, 'maxsj' : dgzjsj , 'order' : 'asc' , 'deletebcNum' : swmaxtcbcNum}, 429 tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed, 'maxsj' : dgzjsj , 'order' : 'asc' , 'deletebcNum' : swmaxtcbcNum},
444 {'minsj': dataMap.wgfsjd[0].ed , 'maxsj' : dataMap.wgfzhsjd[0].ed, 'order' : 'desc' , 'deletebcNum' : deletebcNum - swmaxtcbcNum}); 430 {'minsj': dataMap.wgfsjd[0].ed , 'maxsj' : dataMap.wgfzhsjd[0].ed, 'order' : 'desc' , 'deletebcNum' : deletebcNum - swmaxtcbcNum});
445 } 431 }
446 - // tcbcgzA.push({'minsj': dataMap.zgfsjd[0].ed , 'maxsj' : dgzjsj , 'order' : 'asc' , 'deletebcNum' : deletebcNum});  
447 }else { 432 }else {
448 // 定义12:30 ~ 晚高峰开始以前剔除规则. 如果剔除的班次数不够,则去晚高峰之后剔除剩下的班次. 433 // 定义12:30 ~ 晚高峰开始以前剔除规则. 如果剔除的班次数不够,则去晚高峰之后剔除剩下的班次.
449 var xwmaxtcbcNum = parseInt(( dataMap.wgfsjd[0].st - dgzjsj) / (60000 * saa[0].zzsj.dgzzsj)); 434 var xwmaxtcbcNum = parseInt(( dataMap.wgfsjd[0].st - dgzjsj) / (60000 * saa[0].zzsj.dgzzsj));
450 - if(deletebcNum < xwmaxtcbcNum) {  
451 - tcbcgzA.push({'minsj': dgzjsj , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'desc', 'deletebcNum' : deletebcNum}); 435 + if(deletebcNum < xwmaxtcbcNum || isFlag) {
  436 + tcbcgzA.push({'minsj': dgzjsj , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'desc', 'deletebcNum' : xwmaxtcbcNum});
452 }else { 437 }else {
453 tcbcgzA.push({'minsj': dataMap.wgfsjd[0].ed , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc', 'deletebcNum' : deletebcNum - xwmaxtcbcNum}, 438 tcbcgzA.push({'minsj': dataMap.wgfsjd[0].ed , 'maxsj' : dataMap.wgfzhsjd[0].ed , 'order' : 'desc', 'deletebcNum' : deletebcNum - xwmaxtcbcNum},
454 {'minsj': dgzjsj , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'desc', 'deletebcNum' : xwmaxtcbcNum}); 439 {'minsj': dgzjsj , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'desc', 'deletebcNum' : xwmaxtcbcNum});
455 } 440 }
456 - // tcbcgzA.push({'minsj': dgzjsj , 'maxsj' : dataMap.wgfsjd[0].st , 'order' : 'desc', 'deletebcNum' : deletebcNum});  
457 } 441 }
458 // 按规则剔除班次.并且分班.路牌班次断开. 442 // 按规则剔除班次.并且分班.路牌班次断开.
459 baseF.spliceBc02(lpbc , tcbcgzA , dataMap , true); 443 baseF.spliceBc02(lpbc , tcbcgzA , dataMap , true);
@@ -476,6 +460,20 @@ var BaseFun = function() { @@ -476,6 +460,20 @@ var BaseFun = function() {
476 } 460 }
477 return rsultA; 461 return rsultA;
478 }, 462 },
  463 + /**
  464 + * @description (TODO) 判断某路牌下是否存在首末班车时间班次.
  465 + * @param arr 某路牌下的班次.
  466 + * @param smbcsjArr 首末班车时间点数组集合.
  467 + */
  468 + lpDownIsHaveFirstAndLastBc : function(arr , smbcsjArr) {
  469 + for(var a = 0 ; a < arr.length ; a++) {
  470 + for(var s = 0 ; s < smbcsjArr.length ; s++) {
  471 + if(arr[a].fcsj == smbcsjArr[s].kssj || arr[a].fcsj == smbcsjArr[s].jssj)
  472 + return true;
  473 + }
  474 + }
  475 + return false;
  476 + },
479 477
480 /** 478 /**
481 * @description (TODO) 定义不断开班次的路牌剔除规则. 479 * @description (TODO) 定义不断开班次的路牌剔除规则.
@@ -518,7 +516,7 @@ var BaseFun = function() { @@ -518,7 +516,7 @@ var BaseFun = function() {
518 for(var a = 0 ; a < arr.length ; a ++) { 516 for(var a = 0 ; a < arr.length ; a ++) {
519 var fcsj = baseF.getDateTime(arr[a].fcsj); 517 var fcsj = baseF.getDateTime(arr[a].fcsj);
520 // 判断是否在高峰时间范围.【true--表示在,false--表示不在】. 518 // 判断是否在高峰时间范围.【true--表示在,false--表示不在】.
521 - if(!baseF.isgfsjd01(fcsj,dataMap) && fcsj > tcbcgzA[t].minsj && fcsj < tcbcgzA[t].maxsj) { 519 + if(!baseF.isPeakTimeScope(fcsj,dataMap) && fcsj > tcbcgzA[t].minsj && fcsj < tcbcgzA[t].maxsj) {
522 if(order == 'asc') { 520 if(order == 'asc') {
523 arr[a-1].isfb = isfb ? 1 : 0; 521 arr[a-1].isfb = isfb ? 1 : 0;
524 arr[a-1].STOPTIME = 0; 522 arr[a-1].STOPTIME = 0;
@@ -544,7 +542,7 @@ var BaseFun = function() { @@ -544,7 +542,7 @@ var BaseFun = function() {
544 * @map map 表单参数. 542 * @map map 表单参数.
545 * @return 返回一个满足单个路牌对应的标准工时、满足某班型下的所有路牌的平均工时对应的日平均工时、停站时间、路牌是否分班的班次集合. 543 * @return 返回一个满足单个路牌对应的标准工时、满足某班型下的所有路牌的平均工时对应的日平均工时、停站时间、路牌是否分班的班次集合.
546 */ 544 */
547 - jslpgsAndbcs : function(bxrclist , jsonArray , cara , saa , dataMap , map) { 545 + abstractCar : function(bxrclist , jsonArray , cara , saa , dataMap , map) {
548 // 定义低谷最大发车时间、最大停站时间来反算出低谷最少配车数. 546 // 定义低谷最大发车时间、最大停站时间来反算出低谷最少配车数.
549 var dgmaxfcjx = parseInt(map.dgmaxfcjx), 547 var dgmaxfcjx = parseInt(map.dgmaxfcjx),
550 dgmaxtzsj = parseInt(map.dgmaxtzsj); 548 dgmaxtzsj = parseInt(map.dgmaxtzsj);
@@ -618,7 +616,7 @@ var BaseFun = function() { @@ -618,7 +616,7 @@ var BaseFun = function() {
618 bxlpbc.sort(function(x,y){return x.fcint-y.fcint}); 616 bxlpbc.sort(function(x,y){return x.fcint-y.fcint});
619 // console.log(bxlpbc); 617 // console.log(bxlpbc);
620 // 调整某班型下的各个路牌对应的班次以及工时、停站时间、是否分班. 618 // 调整某班型下的各个路牌对应的班次以及工时、停站时间、是否分班.
621 - rs = rs.concat(baseF.tzlpgs02(bxlpbc , map , dataMap , saa , cara , bxrclist[x] , dgminpcs)); 619 + rs = rs.concat(baseF.abstractBcByWorkTime(bxlpbc , map , dataMap , saa , cara , bxrclist[x] , dgminpcs));
622 } 620 }
623 } 621 }
624 return rs; 622 return rs;
@@ -637,131 +635,495 @@ var BaseFun = function() { @@ -637,131 +635,495 @@ var BaseFun = function() {
637 } 635 }
638 }, 636 },
639 637
640 - BXPplaceClassesTime02 : function(saa , cara , map , seMap , dataMap , lpNoA) {  
641 - // 得到所有路牌下的班次数[从各路牌下的第一个班次发车时间 到 营运结束时间点并且是连续的班次数].  
642 - var jsonArray = baseF.plgfbc01(saa , cara , map , seMap , dataMap);  
643 - // return {'json':jsonArray,'bxrcgs':null}; 638 + /**
  639 + * @description (TODO) 根据班型/人次/配车 排列时刻表明细.
  640 + * @prarm saa 封装的一些 停站时间、周转时间、行驶时间、行驶里程等.
  641 + * @param cara 路牌数组.
  642 + * @param map 表单参数.
  643 + * @param seMap 营运开始 ~ 结束时间
  644 + * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行].
  645 + *
  646 + * ************************************ 思路 **********************************************
  647 + *
  648 + * 第一步 根据表单参数初始化时刻表明细. -- 这里我们也可以叫初始化时刻表明细.
  649 + *
  650 + * 第二步 均匀初始化时刻表明细的发车间隙. -- 这里我们也可以叫纵向调整.
  651 + *
  652 + * 第三步 剔除首末班车以外的班次,并确认首末班车.
  653 + *
  654 + * 第四步 调整均匀发车间隙过程中产生的停站时间问题. -- 这里我们也可以叫横向调整.
  655 + *
  656 + * 第五步 把班型合理的分配到各个路牌上.
  657 + *
  658 + * 切割班型/人次/配车数 字符串 为 数组对象.
  659 + *
  660 + * 把班型分配到对应的具体路牌上.
  661 + *
  662 + * 第六步 根据各个路牌上班型的工时按照规则进行切割. -- 这里我们也叫抽车.
  663 + *
  664 + * 均匀抽车;
  665 + *
  666 + * 各个路牌满足行业班型标准工时 范围在 [1-1.5小时]内浮动;
  667 + *
  668 + * 相同班型下的日平均工时满足 参数的日平均工时 范围在 [10分钟]内浮动.
  669 + *
  670 + *
  671 + * 第七步 确定吃饭时间.
  672 + *
  673 + * 第八步 确定进出场、早晚例保时间.
  674 + *
  675 + * ***************************************************************************************
  676 + */
  677 + BXPplaceClassesTime02 : function(saa , cara , map , seMap , dataMap) {
  678 +
  679 + // 第一步 根据表单中的参数得到所有路牌下的班次数[从各路牌下的第一个班次发车时间 到 营运结束时间点并且是连续的班次数].
  680 + var jsonArray = baseF.GetByArgusInitAllLpDownedBcCollections(saa , cara , map , seMap , dataMap);
  681 +
  682 + // 第二步 纵向调整
  683 + baseF.evenStartDepartSpace(jsonArray , dataMap);
644 684
  685 + // 第三步 剔除首末班车以外的班次,并确认首末班车.
  686 + var markArray = baseF.markFirstAndLastBusAlsoDietNotInRangeBc(jsonArray , dataMap);
  687 +
  688 + // 第四步 横向调整
  689 + baseF.resizeByPitStopTime(cara , jsonArray , dataMap);
  690 +
  691 + /**
  692 + * 第五步 把班型合理的分配到各个路牌上.
  693 + *
  694 + * 切割班型/人次/配车数 字符串 为 数组对象.
  695 + *
  696 + * 把班型分配到对应的具体路牌上.
  697 + */
645 // 切割班型/人次/配车数 字符串 为 数组对象. 698 // 切割班型/人次/配车数 字符串 为 数组对象.
646 - var list = baseF.splitBxRc02(map.bxrc); 699 + var list = baseF.getBxRcListCollection(map.bxrc);
647 // 把班型分配到对应的具体路牌上. 700 // 把班型分配到对应的具体路牌上.
648 - baseF.fprclp01(list,cara);  
649 - // console.log(list); 701 + baseF.bxAlloTotLp(list,cara);
  702 +
  703 + // 第六步 抽车来满足工时.
  704 + var tempA = baseF.abstractCar(list , markArray , cara , saa , dataMap , map);
650 705
651 - var tempA = baseF.jslpgsAndbcs(list.data , baseF.tcbzfwndbc02(jsonArray , dataMap) , cara , saa , dataMap , map);  
652 - // return {'json':tempA,'bxrcgs':null};  
653 return {'json':baseF.addjcclcbc01(cara,tempA,dataMap,saa,map),'bxrcgs':null}; 706 return {'json':baseF.addjcclcbc01(cara,tempA,dataMap,saa,map),'bxrcgs':null};
654 - var ttsmbA = baseF.tzsmbcsj01(tempA,dataMap.smbcsjArr,dataMap.ccsjArr,dataMap.cclcArr,dataMap.qdzArr,saa[0].lbsj,dataMap); 707 + // return {'json':baseF.addjcclcbc01(cara,tempA,dataMap,saa,map),'bxrcgs':null};
  708 + // return {'json':tempA,'bxrcgs':null};
  709 +
655 710
656 - baseF.jhfcjx02(ttsmbA,dataMap);  
657 - //return {'json':baseF.addjcclcbc01(cara,ttsmbA,dataMap,saa,map),'bxrcgs':null};  
658 - //return {'json':ttsmbA,'bxrcgs':null};  
659 - var rsjar = baseF.tzsztest02(cara,ttsmbA,dataMap);  
660 - return {'json':rsjar,'bxrcgs':null};  
661 - return {'json':baseF.addjcclcbc01(cara,rsjar,dataMap,saa,map),'bxrcgs':null}; 711 +
  712 + // return {'json':tempA,'bxrcgs':null};
  713 + // return {'json':baseF.addjcclcbc01(cara,ttsmbA,dataMap,saa,map),'bxrcgs':null};
  714 + // return {'json':ttsmbA,'bxrcgs':null};
  715 + // return {'json':rsjar,'bxrcgs':null};
  716 + // return {'json':baseF.addjcclcbc01(cara,rsjar,dataMap,saa,map),'bxrcgs':null};
662 }, 717 },
663 718
664 - tzsztest02 : function(cara,tempa,dataMap) {  
665 - var jsrs = new Array();  
666 - for(var t = 0 ; t < cara.length; t++) {  
667 - if(t>3)  
668 - continue;  
669 - var sslpbcA = new Array();  
670 - for(var j =0 ; j <tempa.length; j++) {  
671 - // 判断当期遍历的班次是否属于当前的路牌.  
672 - if(tempa[j].lpNo == cara[t].lpNo)  
673 - sslpbcA.push(tempa[j]); 719 + /**
  720 + * @description (TODO) 剔除不在上、下行时间范围内的班次.
  721 + * @param jsonArray 初始化路牌下的所有班次并且已经均匀发车间隙的数组集合.
  722 + * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行].
  723 + */
  724 + markFirstAndLastBusAlsoDietNotInRangeBc : function(jsonArray , dataMap) {
  725 + // 定义上、下行的正常、区间、空放、直放班次、返回数组集合.
  726 + var listMap = baseF.getUpAndDownBc( jsonArray , dataMap) , resultArray = new Array();
  727 + for(var i = 0 ; i < listMap.length ; i++) {
  728 + if(listMap[i].bc.length > 0){
  729 + // 剔除不在时间范围内的班次
  730 + baseF.dietNotInRangeBc(listMap[i].bc , dataMap.smbcsjArr[i].kssj, dataMap.smbcsjArr[i].jssj);
  731 + // 把班次顺序排序.
  732 + listMap[i].bc.sort(function(a,b){return a.fcint-b.fcint});
  733 + // 确定首末班车时间.
  734 + baseF.markFirstAndLastBusAlso(listMap[i].bc , dataMap , i);
674 } 735 }
675 - sslpbcA.sort(function(a,b){return a.fcno-b.fcno});  
676 - baseF.tztzsjInit02(sslpbcA,dataMap);  
677 - jsrs = jsrs.concat(sslpbcA); 736 + resultArray = resultArray.concat(listMap[i].bc);
678 } 737 }
679 - return jsrs; 738 + return resultArray;
680 }, 739 },
681 740
682 - tztzsjInit02 : function(ar,dataMap) {  
683 - var maxXxsjA = [parseInt(dataMap.map.upTravelTime),parseInt(dataMap.map.downTravelTime)];  
684 - var v1 = Math.max.apply(null, maxXxsjA) *1.5;  
685 - for(var r = 0 ; r< ar.length-1;r++) {  
686 - var sgbcfcsj = baseF.getDateTime(ar[r+1].fcsj),dqbcddsj = baseF.getDateTime(ar[r].ARRIVALTIME);  
687 - var dxmin = parseInt( (sgbcfcsj - dqbcddsj)/60000);  
688 - if(dxmin<0 || ar[r].STOPTIME<0) {  
689 - var cctag = baseF.dirDmToIndex(ar[r].xlDir);  
690 - dxmin = ar[r].bcType == dataMap.bcTypeArr.cf ? 0 : baseF.isgfsjd01(baseF.getDateTime(ar[r].fcsj),dataMap) ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag];  
691 - }else if(dxmin >= v1 && dxmin < 180) {  
692 - if(r==ar.length-2 || baseF.issmbcsjArr(ar[r+1].fcsj,dataMap.smbcsjArr)) {  
693 - dxmin = dxmin;  
694 - }else {  
695 - dxmin = v1;  
696 - } 741 + /**
  742 + * @description (TODO) 确定某方向下的首末班车.
  743 + * @param dirArray 某方向下的数组集合.
  744 + * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行].
  745 + * @param dir 方向.
  746 + */
  747 + markFirstAndLastBusAlso : function(dirArray , dataMap , dir) {
  748 + if(dirArray.length>=2) {
  749 + // 定义第一个、最后一个班次.
  750 + var dirFirstBc = dirArray[0],dirLastBc = dirArray[dirArray.length-1];
  751 + // 确认首班车时间
  752 + if(dirFirstBc.fcsj != dataMap.smbcsjArr[dir].kssj) {
  753 + // 定义第一个、最后一个班次.
  754 + var dirFirstBc = dirArray[0],dirLastBc = dirArray[dirArray.length-1];
  755 + // 修改第一个班次的发车时间.
  756 + dirFirstBc.fcsj = dataMap.smbcsjArr[dir].kssj;
  757 + // 修改第一个班次的班次时间.
  758 + dirFirstBc.bcsj = dataMap.gfxxsjArr[dir];
  759 + // 定义到达时间.
  760 + var ddsj = baseF.getDateTime(dirFirstBc.fcsj);
  761 + ddsj.setMinutes(ddsj.getMinutes() + dataMap.gfxxsjArr[dir]);
  762 + // 修改第一个班次的到达时间.
  763 + dirFirstBc.ARRIVALTIME = baseF.getTimeStr(ddsj);
  764 + // dirFirstBc.STOPTIME = parseInt( (baseF.getDateTime(dirArray[1].fcsj) - ddsj) / 60000) ;
  765 +
697 } 766 }
698 - if(ar[r].STOPTIME >0) {  
699 - dqbcddsj.setMinutes(dqbcddsj.getMinutes() + dxmin);  
700 - ar[r+1].fcsj = baseF.getTimeStr(dqbcddsj);  
701 - dqbcddsj.setMinutes(dqbcddsj.getMinutes() + ar[r+1].bcsj);  
702 - ar[r+1].ARRIVALTIME = baseF.getTimeStr(dqbcddsj);  
703 - ar[r].STOPTIME = dxmin >= 180 ? 0 : parseInt(dxmin); 767 + // 确认末班车时间
  768 + if(dirLastBc.fcsj != dataMap.smbcsjArr[dir].jssj) {
  769 + // 修改最后一个班次的发车时间.
  770 + dirLastBc.fcsj = dataMap.smbcsjArr[dir].jssj;
  771 + // 修改最后一个班次的班次时间.
  772 + dirLastBc.bcsj = dataMap.dgxxsjArr[dir];
  773 + // 定义到达时间.
  774 + var ddsj_ = baseF.getDateTime(dirLastBc.fcsj);
  775 + // 修改上一个班次的停站时间.
  776 + // dirArray[dirArray.length-2].STOPTIME = parseInt( (ddsj_ - baseF.getDateTime(dirArray[dirArray.length-2].ARRIVALTIME)) / 60000)
  777 + ddsj_.setMinutes(ddsj_.getMinutes() + dataMap.dgxxsjArr[dir]);
  778 + // 修改最后一个班次的到达时间.
  779 + dirLastBc.ARRIVALTIME = baseF.getTimeStr(ddsj_);
704 } 780 }
705 } 781 }
706 }, 782 },
707 783
  784 + /**
  785 + * @description (TODO) 判断是否首末班车.
  786 + */
  787 + issmbcsjArr : function(str,arr) {
  788 + var tag = false;
  789 + for(var a = 0 ;a < arr.length;a++) {
  790 + if(str == arr[a].kssj || str == arr[a].jssj)
  791 + tag = true;
  792 + }
  793 + return tag;
  794 + },
  795 +
  796 + /**
  797 + * @description (TODO) 获取 上、下行的正常、区间、空放、直放班次.
  798 + * @param 需要分割的班次数据集合.
  799 + * @param 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行].
  800 + */
  801 + getUpAndDownBc : function(json,dataMap) {
  802 + // 定义上行班次 、 下行班次 数组集合、返回数组集合对象.
  803 + var upArray = new Array(),downArray = new Array(),rs = new Array();
  804 + for(var j = 0 ; j< json.length ; j++) {
  805 + // 判断是否为正常、区间、空放、直放班次
  806 + if(json[j].bcType== dataMap.bcTypeArr.normal ||
  807 + json[j].bcType== dataMap.bcTypeArr.region ||
  808 + json[j].bcType== dataMap.bcTypeArr.major ||
  809 + json[j].bcType== dataMap.bcTypeArr.venting) {
  810 + if(json[j].xlDir == dataMap.dira[0])
  811 + upArray.push(json[j]);
  812 + else if(json[j].xlDir == dataMap.dira[1])
  813 + downArray.push(json[j]);
  814 + }
  815 + }
  816 + rs.push({'bc' : upArray},{'bc' : downArray})
  817 + // 返回数据.
  818 + return rs;
  819 + },
  820 +
  821 + /**
  822 + * @desription (TODO) 剔除不在时间范围内的班次.
  823 + * @param ar 某方向下的班次.
  824 + * @param 开始时间.
  825 + * @param 结束时间.
  826 + */
  827 + dietNotInRangeBc : function(ar , kssj , jssj) {
  828 + for(var s = 0 ; s < ar.length ; s++) {
  829 + if(baseF.isDelete(baseF.getDateTime(kssj),
  830 + baseF.getDateTime(jssj),
  831 + baseF.getDateTime(ar[s].fcsj))) {
  832 + ar.splice(s, 1);
  833 + s--;
  834 + }
  835 + }
  836 + },
  837 +
  838 + /**
  839 + * @description (TODO) 把班型人次合理的分配到不同的路牌上.
  840 + * @param list 班型人次数组集合.
  841 + * @param clzs 路牌数组.
  842 + * @return 返回一个把路牌合理的分配到班型人次下组成的数据集合.
  843 + * */
  844 + bxAlloTotLp : function(list,clzs) {
  845 + // 定义 班型人次数组集合长度 、路牌数组长度.
  846 + var lLen = list.length , cLen = clzs.length;
  847 + if(lLen<= 0 || cLen<=0 )
  848 + return false;
  849 + // 最多车次与总车次的比例.
  850 + var blnum = Math.round(cLen/list[0].fpcls);
  851 + // 定义已经分配出去的路牌.
  852 + var rs = new Array();
  853 + // 遍历
  854 + for(var r = 0 ; r < lLen ; r++) {
  855 + // 得到没有分配出去的路牌.
  856 + var dxa = baseF.chaji_array(clzs,rs);
  857 + // 定义当前车次数.
  858 + var rsnum = list[r].fpcls;
  859 + // 定义记录当前分割路牌的次数下标.分配到班型车次下的路牌数组.
  860 + var index = 0 , sslp = new Array();
  861 + // 当前车次所有占比例.
  862 + var tempint = parseInt(rsnum/blnum);
  863 + // 判断如果比例小1 则为当前车次数.
  864 + blnum = tempint <= 1 ? rsnum : blnum;
  865 + // 判断当前班型车次数组下标值.如果为倒数第二个或者之前.
  866 + if(r < lLen-1) {
  867 + // 遍历
  868 + for(var c = 0 ; c < tempint ; c++) {
  869 + // 创建新的没有分配出去的路牌数组.
  870 + var temp = dxa.concat();
  871 + // 创建切割路牌数组.
  872 + var tagA = new Array();
  873 + // 判断切割的下标值是否小于等于路牌数组的倒数第二个或者之前.
  874 + if(index <= (dxa.length-blnum) ) {
  875 + tagA = temp.splice(index,blnum);
  876 + }else {
  877 + tagA = temp.splice((dxa.length-blnum),blnum);
  878 + }
  879 + // 组合切割路牌数组.赋值给已分配出去的路牌.
  880 + rs = rs.concat(tagA);
  881 + // 赋值给分配到班型车次下的路牌数组.
  882 + sslp = sslp.concat(tagA);
  883 + // 记录切割下标.
  884 + index = index + 1 + blnum;
  885 + }
  886 + // 分配到班型车次下的路牌数组.
  887 + list[r].sslp = sslp;
  888 + }else {
  889 + list[r].sslp = dxa;
  890 + }
  891 + }
  892 + },
  893 + /**
  894 + * @description (TODO) [ 切割 班型/人次/配车数 ]参数 并封装成数组集合对象.
  895 + * @param str 切割 班型/人次/配车数 字符串.
  896 + */
  897 + getBxRcListCollection : function(str) {
  898 + // 如果为空 , 直接return
  899 + if(str=='' || str==null)
  900 + return false;
  901 + // 定义返回数组集合.
  902 + var list = new Array();
  903 + // 获取各个班型对应的工时数组.
  904 + var gsgd = baseF.getBcTypeAndWorkHuorsVConstant();
  905 + // 按多号切开.
  906 + var bxrcAr = str.split(',');
  907 + if(bxrcAr.length>0) {
  908 + for(var s = 0 ; s< bxrcAr.length;s++) {
  909 + // 按反斜杠切开.
  910 + var s1a = bxrcAr[s].split('/');
  911 + if(s1a.length >= 4) {
  912 + // 定义人数、配车数、日平均工时.
  913 + var rs = parseInt(s1a[1]),fpcls = parseInt(s1a[2]),gsavg = parseInt(s1a[3]);
  914 + // 定义班型标准小时系数 、 分钟系数.
  915 + var hoursV = 0.0 , minueV = '' ;
  916 + for(var g = 0 ; g < gsgd.length; g++) {
  917 + // 如果班型字符串相同.
  918 + if(gsgd[g].type == s1a[0]) {
  919 + hoursV = gsgd[g].hoursV;
  920 + minueV = gsgd[g].minueV;
  921 + break;
  922 + }
  923 + }
  924 + // 添加到返回数组集合中.
  925 + list.push({'type' : s1a[0] , 'rs' : rs , 'fpcls' : fpcls , 'hoursV' : hoursV ,
  926 + 'minueV' : minueV , 'gsavg' : gsavg});
  927 + }
  928 + }
  929 + }
  930 + // 返回数据.
  931 + return list.sort(function(a,b){return b.rs-a.rs});
  932 + },
708 933
709 /** 934 /**
710 - * @description : (TODO) 均匀发车间隙 935 + * @description : (TODO) 纵向调整 均匀发车间隙.
  936 + * @params : bcArr--初始化路牌下的所有班次数组集合.
  937 + * @params : dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行].
  938 + * @return : 返回一个数组.这里返回的是调整过后 发车间距均匀的班次数组.
711 * 939 *
712 - * @params : [arr--某个方向下的班次数组;dir--方向;zzsj--周转时间] 940 + * ***********************************思路***************************************************
  941 + * 高峰时段发车间隙 : 行业标准,不得超过20分钟.
  942 + * 低谷最大发车间隙 : 以参数设定为准.
  943 + *
  944 + *
  945 + * 第一步 获取某放下的班次数组集合.并按发车时间顺序排序.
  946 + *
  947 + * 第二步 以某方向下的首、末班车时间点作为开始、结束时间点 开始循环. 每一次循环以开始时间点加上不同时间段内的周转时间作为结束点,
  948 + * 来作为一个调整发车间隙过程的时间区间.
  949 + *
  950 + * 均匀发车间隙规则:
  951 + * 算出时间区间内的所有车辆数.
  952 + * 发车间隙 = 该时间段内的周转时间 / 该时间段内的车辆数.
  953 + * 第三步 调整时间区间内的班次[发车时间、行驶时间、到达时间].
  954 + * *****************************************************************************************
713 * 955 *
714 - * @return : 返回一个数组.这里返回的是调整过后 发车间距均匀的班次数组  
715 **/ 956 **/
716 - jhfcjx02 : function(bcArr,dataMap) { 957 + evenStartDepartSpace : function(bcArr,dataMap) {
  958 + // 定义行业标准高峰最大发车间隙、低谷最大发车间隙(包括吃饭时间)
  959 + var gfmaxfcjx = 20 , dgmaxfcjx = dataMap.dgmaxfcjx;
  960 + // 判断班次数组集合长度是否为零.
717 if(bcArr.length<=0) 961 if(bcArr.length<=0)
718 return; 962 return;
  963 + // 定义方向数组集合.
719 var dirA = dataMap.dira; 964 var dirA = dataMap.dira;
  965 + // 定义配车总数(相当于路牌总数).
720 var clzs = parseInt(dataMap.map.clzs); 966 var clzs = parseInt(dataMap.map.clzs);
721 for(var d = 0 ; d < dirA.length; d++) { 967 for(var d = 0 ; d < dirA.length; d++) {
  968 + // 定义方向、该方向下的班次数组集合.
722 var fxdm = dirA[d],fxbc = new Array(); 969 var fxdm = dirA[d],fxbc = new Array();
  970 + // 方向代码转为下标[0代表上行 ; 1代表下行].
723 var cctag = baseF.dirDmToIndex(fxdm); 971 var cctag = baseF.dirDmToIndex(fxdm);
724 for(var b = 0;b<bcArr.length ; b++) { 972 for(var b = 0;b<bcArr.length ; b++) {
  973 + // 获取发车时间转为毫秒数.(用于后面按发车时间顺序排序)
725 bcArr[b].fcint = baseF.getDateTime(bcArr[b].fcsj).getTime(); 974 bcArr[b].fcint = baseF.getDateTime(bcArr[b].fcsj).getTime();
  975 + // 如果方向相同则添加到该方向下的班次数组集合中.
726 if(bcArr[b].xlDir == fxdm) 976 if(bcArr[b].xlDir == fxdm)
727 fxbc.push(bcArr[b]); 977 fxbc.push(bcArr[b]);
728 } 978 }
729 - var kssj = baseF.getDateTime(dataMap.smbcsjArr[cctag].kssj),// 开始时间.  
730 - jssj = baseF.getDateTime(dataMap.smbcsjArr[cctag].jssj);// 结束时间.  
731 - fxbc.sort(function(m,n){return m.fcint - n.fcint});  
732 - while(kssj<=jssj) {  
733 - var tagboolean = baseF.isgfsjd01(kssj,dataMap);  
734 - var zzsj = tagboolean ? dataMap.zzsj.gfzzsj : dataMap.zzsj.dgzzsj;  
735 - if(true){ 979 + // 判断某方向下的班次数组集合的长度是否小于零.
  980 + if(fxbc.length>0) {
  981 + // 按发车时间顺序排序.
  982 + fxbc.sort(function(m,n){return m.fcint - n.fcint});
  983 + // 定义某方向下的开始、结束时间.
  984 + var kssj = baseF.getDateTime(dataMap.smbcsjArr[cctag].kssj),
  985 + jssj = baseF.getDateTime(dataMap.smbcsjArr[cctag].jssj);
  986 + while(kssj<=jssj) {
  987 + // 判断是否高峰时段.
  988 + var tagboolean = baseF.isPeakTimeScope(kssj,dataMap);
  989 + // 定义不同时间段内的周转时间.
  990 + var zzsj = tagboolean ? dataMap.zzsj.gfzzsj : dataMap.zzsj.dgzzsj;
  991 + // 定义时间区间的结束点.
736 var temp = new Date(); 992 var temp = new Date();
737 temp.setHours(kssj.getHours()); 993 temp.setHours(kssj.getHours());
738 temp.setMinutes(kssj.getMinutes()+zzsj); 994 temp.setMinutes(kssj.getMinutes()+zzsj);
739 - var sjdbcArr = baseF.getObjRegion(kssj,temp,fxbc,dataMap);  
740 - var len_ = sjdbcArr.length;  
741 - var bcCount = baseF.getlpNum(sjdbcArr);// 定长度 995 + // 定义该时间区间内的班次数组集合、该数组集合长度.
  996 + var sjdbcArr = baseF.getObjRegion(kssj,temp,fxbc,dataMap),
  997 + len_ = sjdbcArr.length;
  998 + // 定义该时间区间内的车辆数.
  999 + var bcCount = baseF.getlpNum(sjdbcArr);
742 if(len_>0 && bcCount > 0) { 1000 if(len_>0 && bcCount > 0) {
  1001 + // 定义该时间区间内的发车间隙.
743 var _fcjx = parseInt(Math.ceil(zzsj/bcCount)); 1002 var _fcjx = parseInt(Math.ceil(zzsj/bcCount));
744 - console.log(_fcjx); 1003 + if(tagboolean) {
  1004 + if(_fcjx>gfmaxfcjx)
  1005 + _fcjx = 20;
  1006 + }else {
  1007 + if(_fcjx>dgmaxfcjx)
  1008 + _fcjx = dgmaxfcjx;
  1009 + }
  1010 + // console.log(_fcjx);
  1011 + // 定义修改班次的起始时间点.
745 var fcnosj = new Date(kssj); 1012 var fcnosj = new Date(kssj);
746 for(var l = 0 ; l< len_ ; l++) { 1013 for(var l = 0 ; l< len_ ; l++) {
747 - // 每个路牌的末班车发车时间不准动.  
748 - /*if(baseF.iszhclzsbc(fxbc, sjdbcArr[l].fcno , clzs)) {  
749 - continue;  
750 - }*/ 1014 + // 修改班次发车时间.
751 sjdbcArr[l].fcsj = baseF.getTimeStr(fcnosj); 1015 sjdbcArr[l].fcsj = baseF.getTimeStr(fcnosj);
752 - var _xxsj = baseF.getxssj(dataMap.zgfsjd, 1016 + sjdbcArr[l].fcint = fcnosj.getTime();
  1017 + // 获取行驶时间.
  1018 + var _xxsj = baseF.getByDirTravelTime(dataMap.zgfsjd,
753 dataMap.wgfsjd,fcnosj,dataMap.pcxssjArr, 1019 dataMap.wgfsjd,fcnosj,dataMap.pcxssjArr,
754 - dataMap.gfxxsjArr,baseF.dirDmToIndex(sjdbcArr[l].xlDir));// 获取行驶时间 1020 + dataMap.gfxxsjArr,baseF.dirDmToIndex(sjdbcArr[l].xlDir));
  1021 + // 修改行驶时间.
755 sjdbcArr[l].bcsj = _xxsj; 1022 sjdbcArr[l].bcsj = _xxsj;
  1023 + // 定义到达时间.
756 var ddsj = new Date(); 1024 var ddsj = new Date();
757 ddsj.setHours(fcnosj.getHours()); 1025 ddsj.setHours(fcnosj.getHours());
758 ddsj.setMinutes(fcnosj.getMinutes()+_xxsj); 1026 ddsj.setMinutes(fcnosj.getMinutes()+_xxsj);
  1027 + // 修改到达时间.
759 sjdbcArr[l].ARRIVALTIME = baseF.getTimeStr(ddsj); 1028 sjdbcArr[l].ARRIVALTIME = baseF.getTimeStr(ddsj);
  1029 + // 重新赋值起始时间点.
760 fcnosj.setMinutes(fcnosj.getMinutes() + _fcjx); 1030 fcnosj.setMinutes(fcnosj.getMinutes() + _fcjx);
761 } 1031 }
762 } 1032 }
  1033 + // 重新赋值开始时间点.来作为下一次的开始时间.
  1034 + kssj = new Date(kssj.setMinutes(kssj.getMinutes() + zzsj));
  1035 + }
  1036 + }
  1037 + }
  1038 + },
  1039 +
  1040 + /**
  1041 + * @description (TODO) 横向调整 调整停站时间.
  1042 + * @param cara 路牌数组.
  1043 + * @param tempa 所有的班次数组集合.
  1044 + * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行].
  1045 + *
  1046 + * ******************************** 思路 *************************************************
  1047 + * 第一步 等到每个路牌下的班次数组集合.
  1048 + *
  1049 + * 第二步 顺序排序每个路牌下的班次数组集合.
  1050 + *
  1051 + * 第三步 从第二个班次开始,用第二个班次的发车时间 - 上一个班次的到达时间 得到 上一个班次的停站时间.
  1052 + *
  1053 + * 第四步 修改上一个班次的停站时间.
  1054 + *
  1055 + * 修改停站时间规则:以行驶时间的10%-15% 为标准。
  1056 + * 如果超出该范围。则以录入参数低谷最大停站间隙为准。
  1057 + * 停站时间最大不能超过该停站时间。
  1058 + * 高峰附近的班次的停站时间在离高峰最近一个班次的停站时间浮动范围【1-2】分钟。
  1059 + *
  1060 + * ****************************************************************************************
  1061 + */
  1062 + resizeByPitStopTime : function(cara,tempa,dataMap) {
  1063 + var cLen = cara.length,tLen = tempa.length;
  1064 + if(cLen<= 0 || tLen<=0 || dataMap==null)
  1065 + return;
  1066 + // 定义低谷最大停站时间、行业标准最小、最大停站时间(行驶时间的10%~15%).
  1067 + var dgmaxtzsj = dataMap.dgmaxtzsj,normmintzsj, normmaxtzsj;
  1068 + for(var t = 0 ; t < cLen ; t++) {
  1069 + // 定义当前路牌班次数组集合.
  1070 + var sslpbcA = new Array();
  1071 + for(var j =0 ; j < tLen ; j++) {
  1072 + // 判断当期遍历的班次是否属于当前的路牌.如果是则添加到当前的路牌班次数组集合.
  1073 + if(tempa[j].lpNo == cara[t].lpNo)
  1074 + sslpbcA.push(tempa[j]);
  1075 + }
  1076 + if(sslpbcA.length > 0) {
  1077 + // 按发车时间顺序排序.
  1078 + sslpbcA.sort(function(a,b){return a.fcint-b.fcint});
  1079 + // 按照规则修改停站时间.
  1080 + for(var r = 0 ; r < sslpbcA.length-1 ; r++) {
  1081 + // 定义上一个班次的发车时间、当前班次的到达时间、发车时间.
  1082 + var sgbcfcsj = baseF.getDateTime(sslpbcA[r+1].fcsj),
  1083 + dqbcddsj = baseF.getDateTime(sslpbcA[r].ARRIVALTIME),
  1084 + dqbcfcsj = baseF.getDateTime(sslpbcA[r].fcsj);
  1085 + // 定义每每相邻两个班次之间的时间差分钟数(也就是停站时间.)
  1086 + var dxmin = parseInt( (sgbcfcsj - dqbcddsj)/60000);
  1087 + // 定义当前班次方向下标代码[0代表上行;1代表下行].
  1088 + var cctag = baseF.dirDmToIndex(sslpbcA[r].xlDir);
  1089 + // 定义是否高峰
  1090 + var flag = baseF.isPeakTimeScope(dqbcfcsj , dataMap);
  1091 + // 获取行驶时间.
  1092 + var xxsj = baseF.getByDirTravelTime(dataMap.zgfsjd , dataMap.wgfsjd , dqbcfcsj,
  1093 + dataMap.pcxssjArr , dataMap.gfxxsjArr ,
  1094 + baseF.dirDmToIndex(sslpbcA[r].xlDir));
  1095 + normmintzsj = xxsj*0.1;
  1096 + normmaxtzsj = xxsj*0.15;
  1097 + // 如果小于零
  1098 + if(dxmin <= 0 && sslpbcA[r].isfb ==0 ) {
  1099 + // 根据不同时段的停站时间.重新赋值停站时间.
  1100 + dxmin = flag ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag];
  1101 + }else {
  1102 + // 如果 大于等于低谷最大停站时间 并且 小于等于三小时.则把低谷最大停站时间 作为 停站时间.
  1103 + if(dxmin >= dgmaxtzsj && dxmin < 180) {
  1104 + dxmin = dgmaxtzsj;
  1105 + // 如果大于零 并且 小于等于行业标准的最小停站时间
  1106 + }else if(dxmin > 0 && dxmin <= normmintzsj ) {
  1107 + // dxmin = dxmin;
  1108 + // 如果大于行业标准的最小停站时间 并且 小于等于行业标准的最大停站时间
  1109 + }else if(dxmin > normmintzsj && dxmin <= normmaxtzsj ) {
  1110 + // dxmin = dxmin;
  1111 + // 如果大于行业标准的最大停站时间 并且 小于低谷最大停站时间
  1112 + }else if(dxmin > normmaxtzsj && dxmin < dgmaxtzsj ) {
  1113 + // dxmin = dxmin;
  1114 + }
  1115 + }
  1116 + // 修改当前班次的停站时间.
  1117 + sslpbcA[r].STOPTIME = parseInt(dxmin) ;
  1118 + // 当前班次的到达时间 + 停站时间 作为下一个班次的发车时间.
  1119 + dqbcddsj.setMinutes(dqbcddsj.getMinutes() + dxmin);
  1120 + // 修改下一个班次的发车时间.
  1121 + sslpbcA[r+1].fcsj = baseF.getTimeStr(dqbcddsj);
  1122 + // 下一个班次的发车时间 + 行驶时间 作为下一个班次的到达时间.
  1123 + dqbcddsj.setMinutes(dqbcddsj.getMinutes() + sslpbcA[r+1].bcsj);
  1124 + // 修改下一个班次的到达时间.
  1125 + sslpbcA[r+1].ARRIVALTIME = baseF.getTimeStr(dqbcddsj);
763 } 1126 }
764 - kssj = new Date(kssj.setMinutes(kssj.getMinutes() + zzsj));  
765 } 1127 }
766 } 1128 }
767 }, 1129 },
@@ -769,7 +1131,7 @@ var BaseFun = function() { @@ -769,7 +1131,7 @@ var BaseFun = function() {
769 BXPplaceClassesTime01 : function(saa,cara,map,seMap,dataMap,lpNoA) { 1131 BXPplaceClassesTime01 : function(saa,cara,map,seMap,dataMap,lpNoA) {
770 var jsonArray = baseF.plgfbc(saa,cara,map,seMap,dataMap); 1132 var jsonArray = baseF.plgfbc(saa,cara,map,seMap,dataMap);
771 var list = baseF.splitBxRc(map.bxrc); 1133 var list = baseF.splitBxRc(map.bxrc);
772 - baseF.fprclp01(list,cara); 1134 + baseF.bxAlloTotLp(list,cara);
773 var bxrclist = list.data; 1135 var bxrclist = list.data;
774 var rs = new Array(),bxrcgs= new Array(); 1136 var rs = new Array(),bxrcgs= new Array();
775 // 遍历已分配好路牌的班型人次数组. 1137 // 遍历已分配好路牌的班型人次数组.
@@ -804,7 +1166,7 @@ var BaseFun = function() { @@ -804,7 +1166,7 @@ var BaseFun = function() {
804 cara[l].lpName = bxrclist[x].type + '_' + lpNo ; 1166 cara[l].lpName = bxrclist[x].type + '_' + lpNo ;
805 } 1167 }
806 } 1168 }
807 - var _obj = baseF.getsxAndxxbc(lpbc,dataMap); 1169 + var _obj = baseF.getUpAndDownBc(lpbc,dataMap);
808 baseF.tcbc(_obj.sxbc,dataMap.smbcsjArr[0].kssj,dataMap.smbcsjArr[0].jssj);// 剔除上行不在时间范围内的班次 1170 baseF.tcbc(_obj.sxbc,dataMap.smbcsjArr[0].kssj,dataMap.smbcsjArr[0].jssj);// 剔除上行不在时间范围内的班次
809 baseF.tcbc(_obj.xxbc,dataMap.smbcsjArr[1].kssj,dataMap.smbcsjArr[1].jssj);// 剔除下行不在时间范围内的班次 1171 baseF.tcbc(_obj.xxbc,dataMap.smbcsjArr[1].kssj,dataMap.smbcsjArr[1].jssj);// 剔除下行不在时间范围内的班次
810 var tcnofwlpbc = _obj.sxbc.concat(_obj.xxbc); 1172 var tcnofwlpbc = _obj.sxbc.concat(_obj.xxbc);
@@ -1137,15 +1499,6 @@ var BaseFun = function() { @@ -1137,15 +1499,6 @@ var BaseFun = function() {
1137 obj.ARRIVALTIME = baseF.getTimeStr(zhygbcydx); 1499 obj.ARRIVALTIME = baseF.getTimeStr(zhygbcydx);
1138 }, 1500 },
1139 1501
1140 - issmbcsjArr : function(str,arr) {  
1141 - var tag = false;  
1142 - for(var a = 0 ;a < arr.length;a++) {  
1143 - if(str == arr[a].kssj || str == arr[a].jssj)  
1144 - tag = true;  
1145 - }  
1146 - return tag;  
1147 - },  
1148 -  
1149 getlpbcA : function(lpN_,jar) { 1502 getlpbcA : function(lpN_,jar) {
1150 var lpA = new Array(); 1503 var lpA = new Array();
1151 for(var p = 0 ; p < jar.length; p++ ) { 1504 for(var p = 0 ; p < jar.length; p++ ) {
@@ -1211,7 +1564,7 @@ var BaseFun = function() { @@ -1211,7 +1564,7 @@ var BaseFun = function() {
1211 var dxmin = parseInt( (sgbcfcsj - dqbcddsj)/60000); 1564 var dxmin = parseInt( (sgbcfcsj - dqbcddsj)/60000);
1212 if(dxmin<0 || ar[r].STOPTIME<0) { 1565 if(dxmin<0 || ar[r].STOPTIME<0) {
1213 var cctag = baseF.dirDmToIndex(ar[r].xlDir); 1566 var cctag = baseF.dirDmToIndex(ar[r].xlDir);
1214 - dxmin = ar[r].bcType == dataMap.bcTypeArr.cf ? 0 : baseF.isgfsjd01(baseF.getDateTime(ar[r].fcsj),dataMap) ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag]; 1567 + dxmin = ar[r].bcType == dataMap.bcTypeArr.cf ? 0 : baseF.isPeakTimeScope(baseF.getDateTime(ar[r].fcsj),dataMap) ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag];
1215 /*dqbcddsj.setMinutes(dqbcddsj.getMinutes() + dxmin); 1568 /*dqbcddsj.setMinutes(dqbcddsj.getMinutes() + dxmin);
1216 ar[r+1].fcsj = baseF.getTimeStr(dqbcddsj); 1569 ar[r+1].fcsj = baseF.getTimeStr(dqbcddsj);
1217 dqbcddsj.setMinutes(dqbcddsj.getMinutes() + ar[r+1].bcsj); 1570 dqbcddsj.setMinutes(dqbcddsj.getMinutes() + ar[r+1].bcsj);
@@ -1261,7 +1614,7 @@ var BaseFun = function() { @@ -1261,7 +1614,7 @@ var BaseFun = function() {
1261 jssj = baseF.getDateTime(dataMap.smbcsjArr[cctag].jssj);// 结束时间. 1614 jssj = baseF.getDateTime(dataMap.smbcsjArr[cctag].jssj);// 结束时间.
1262 fxbc.sort(function(m,n){return m.fcint - n.fcint}); 1615 fxbc.sort(function(m,n){return m.fcint - n.fcint});
1263 while(kssj<=jssj) { 1616 while(kssj<=jssj) {
1264 - var tagboolean = baseF.isgfsjd01(kssj,dataMap); 1617 + var tagboolean = baseF.isPeakTimeScope(kssj,dataMap);
1265 var zzsj = tagboolean ? dataMap.zzsj.gfzzsj : dataMap.zzsj.dgzzsj; 1618 var zzsj = tagboolean ? dataMap.zzsj.gfzzsj : dataMap.zzsj.dgzzsj;
1266 if(!tagboolean){ 1619 if(!tagboolean){
1267 var temp = new Date(); 1620 var temp = new Date();
@@ -1280,7 +1633,7 @@ var BaseFun = function() { @@ -1280,7 +1633,7 @@ var BaseFun = function() {
1280 continue; 1633 continue;
1281 } 1634 }
1282 sjdbcArr[l].fcsj = baseF.getTimeStr(fcnosj); 1635 sjdbcArr[l].fcsj = baseF.getTimeStr(fcnosj);
1283 - var _xxsj = baseF.getxssj(dataMap.zgfsjd, 1636 + var _xxsj = baseF.getByDirTravelTime(dataMap.zgfsjd,
1284 dataMap.wgfsjd,fcnosj,dataMap.pcxssjArr, 1637 dataMap.wgfsjd,fcnosj,dataMap.pcxssjArr,
1285 dataMap.gfxxsjArr,baseF.dirDmToIndex(sjdbcArr[l].xlDir));// 获取行驶时间 1638 dataMap.gfxxsjArr,baseF.dirDmToIndex(sjdbcArr[l].xlDir));// 获取行驶时间
1286 sjdbcArr[l].bcsj = _xxsj; 1639 sjdbcArr[l].bcsj = _xxsj;
@@ -1462,8 +1815,8 @@ var BaseFun = function() { @@ -1462,8 +1815,8 @@ var BaseFun = function() {
1462 kssj.setMinutes(parseInt(strArray[1]) + lastObj.STOPTIME); 1815 kssj.setMinutes(parseInt(strArray[1]) + lastObj.STOPTIME);
1463 var cctag = baseF.dirDmToIndex(lastObj.xlDir); 1816 var cctag = baseF.dirDmToIndex(lastObj.xlDir);
1464 cctag = baseF.getfx(1,cctag); 1817 cctag = baseF.getfx(1,cctag);
1465 - var tzsj = baseF.isgfsjd01(kssj,dataMap) ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag];  
1466 - var _xxsj = baseF.getxssj(dataMap.zgfsjd,dataMap.wgfsjd,kssj,dataMap.pcxssjArr,dataMap.gfxxsjArr,cctag);// 获取行驶时间 1818 + var tzsj = baseF.isPeakTimeScope(kssj,dataMap) ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag];
  1819 + var _xxsj = baseF.getByDirTravelTime(dataMap.zgfsjd,dataMap.wgfsjd,kssj,dataMap.pcxssjArr,dataMap.gfxxsjArr,cctag);// 获取行驶时间
1467 // 定义班次序号 1820 // 定义班次序号
1468 var xhNo = lastObj.fcno+1; 1821 var xhNo = lastObj.fcno+1;
1469 var carArray = {'lp':lastObj.lp,'lpNo':lastObj.lpNo,'lpName':lastObj.lpName,'lpType':lastObj.lpType}; 1822 var carArray = {'lp':lastObj.lp,'lpNo':lastObj.lpNo,'lpName':lastObj.lpName,'lpType':lastObj.lpType};
@@ -1514,64 +1867,6 @@ var BaseFun = function() { @@ -1514,64 +1867,6 @@ var BaseFun = function() {
1514 }, 1867 },
1515 1868
1516 /** 1869 /**
1517 - * @description (TODO) 把班型人次合理的分配到不同的路牌上.  
1518 - *  
1519 - * @param [bxgs--班型人次数组长度;list--班型人次数组集合;clzs--路牌数组]  
1520 - *  
1521 - * @return 返回一个把路牌合理的分配到班型人次下组成的数据集合.  
1522 - * */  
1523 - fprclp01 : function(list,clzs) {  
1524 - var bxgs = list.data.length;  
1525 - // 定义总车数.  
1526 - var dxcount = clzs.length;  
1527 - /*for(var t = 1 ; t<bxgs ; t++) {  
1528 - dxcount = dxcount + list.data[t].rs;  
1529 - }*/  
1530 - // 最多车次与总车次的比例.  
1531 - var blnum = Math.round(dxcount/list.data[0].fpcls);  
1532 - var rs = new Array();  
1533 - // 遍历  
1534 - for(var r = 0 ; r<bxgs ;r++) {  
1535 - // 得到没有分配出去的路牌.  
1536 - var dxa = baseF.chaji_array(clzs,rs);  
1537 - // 定义当前车次数.  
1538 - var rsnum = list.data[r].fpcls;  
1539 - // 定义记录当前分割路牌的次数下标.分配到班型车次下的路牌数组.  
1540 - var index = 0,sslp = new Array();  
1541 - // 当前车次所有占比例.  
1542 - var tempint = parseInt(rsnum/blnum);  
1543 - // 判断如果比例小1 则为当前车次数.  
1544 - blnum = tempint <=1 ? rsnum : blnum;  
1545 - // 判断当前班型车次数组下标值.如果为倒数第二个或者之前  
1546 - if(r<bxgs-1) {  
1547 - // 遍历  
1548 - for(var c = 0 ; c<tempint;c++) {  
1549 - // 创建新的没有分配出去的路牌数组.  
1550 - var temp = dxa.concat();  
1551 - // 创建切割路牌数组.  
1552 - var tagA = new Array();  
1553 - // 判断切割的下标值是否小于等于路牌数组的倒数第二个或者之前.  
1554 - if(index<=dxa.length-blnum) {  
1555 - tagA = temp.splice(index,blnum);  
1556 - }else {  
1557 - tagA = temp.splice(dxa.length-blnum,blnum);  
1558 - }  
1559 - // 组合切割路牌数组.赋值给已分配出去的路牌.  
1560 - rs = rs.concat(tagA);  
1561 - // 赋值给分配到班型车次下的路牌数组.  
1562 - sslp = sslp.concat(tagA);  
1563 - // 记录切割下标.  
1564 - index = index + 1 + blnum;  
1565 - }  
1566 - // 分配到班型车次下的路牌数组.  
1567 - list.data[r].sslp = sslp;  
1568 - }else {  
1569 - list.data[r].sslp = dxa;  
1570 - }  
1571 - }  
1572 - },  
1573 -  
1574 - /**  
1575 * @description : (TODO) 根据班型人次与车辆总数排列班次时刻数据. 1870 * @description : (TODO) 根据班型人次与车辆总数排列班次时刻数据.
1576 * 1871 *
1577 * @param [saa--数据配置参数;cara--路牌数组;map--表单配置参数;dataMap--方向成对的数据集合]. 1872 * @param [saa--数据配置参数;cara--路牌数组;map--表单配置参数;dataMap--方向成对的数据集合].
@@ -2045,7 +2340,7 @@ var BaseFun = function() { @@ -2045,7 +2340,7 @@ var BaseFun = function() {
2045 * 2340 *
2046 * ******************************** 思路 ********************************************************* 2341 * ******************************** 思路 *********************************************************
2047 * 2342 *
2048 - * 首先,以早高峰开始时间作为开始点 , 并且作为最后一个路牌的第一个班次的发车时间展开。 2343 + * 首先,以早高峰开始时间作为开始点,并且作为最后一个路牌的第一个班次的发车时间展开。(这里的原因是所有的车必须在早高峰开始点全部出车.)
2049 * 2344 *
2050 * 纵向展开: 2345 * 纵向展开:
2051 * 以最后一个路牌的第一个班次发车时间为开始点,以阶梯形式向上展开. 2346 * 以最后一个路牌的第一个班次发车时间为开始点,以阶梯形式向上展开.
@@ -2059,6 +2354,7 @@ var BaseFun = function() { @@ -2059,6 +2354,7 @@ var BaseFun = function() {
2059 * 倒数第二个路牌的第一个班次的发车时间为 6:39 = 6:31 + 某周转时间段内的发车间隙为:8 2354 * 倒数第二个路牌的第一个班次的发车时间为 6:39 = 6:31 + 某周转时间段内的发车间隙为:8
2060 * 倒数第三个路牌的第一个班次的发车时间为 6:47 = 6:39 + 某周转时间段内的发车间隙为:8 2355 * 倒数第三个路牌的第一个班次的发车时间为 6:47 = 6:39 + 某周转时间段内的发车间隙为:8
2061 * 倒数第四个.... 2356 * 倒数第四个....
  2357 + * ............
2062 * 以此类推. 2358 * 以此类推.
2063 * 2359 *
2064 * 横向展开: 2360 * 横向展开:
@@ -2080,8 +2376,9 @@ var BaseFun = function() { @@ -2080,8 +2376,9 @@ var BaseFun = function() {
2080 * 第四个班次 2376 * 第四个班次
2081 * 第五个班次 2377 * 第五个班次
2082 * ........ 2378 * ........
  2379 + * 以此类推.
2083 */ 2380 */
2084 - plgfbc01 : function(saa , cara , map, seMap , dataMap) { 2381 + GetByArgusInitAllLpDownedBcCollections : function(saa , cara , map, seMap , dataMap) {
2085 // 定义路牌长度 、所有路牌默认出场方向 [0--上行出场;1--下行出场] 、营运结束时间、返回数组. 2382 // 定义路牌长度 、所有路牌默认出场方向 [0--上行出场;1--下行出场] 、营运结束时间、返回数组.
2086 var len = cara.length , cctag , endTime = baseF.getDateTime(seMap.e) , rs = new Array(); 2383 var len = cara.length , cctag , endTime = baseF.getDateTime(seMap.e) , rs = new Array();
2087 // 获取所有路牌默认出场方向.如果是环线则只有一个上行方向. 2384 // 获取所有路牌默认出场方向.如果是环线则只有一个上行方向.
@@ -2098,12 +2395,12 @@ var BaseFun = function() { @@ -2098,12 +2395,12 @@ var BaseFun = function() {
2098 // 开启方向切换. 2395 // 开启方向切换.
2099 fxflag = 1; 2396 fxflag = 1;
2100 // 定义在某时间段内[高峰时间段、低谷时间段]的停站时间. 2397 // 定义在某时间段内[高峰时间段、低谷时间段]的停站时间.
2101 - var tzsj = baseF.isgfsjd01(kssj,dataMap) ? dataMap.gftzsj[fxTagDm] : dataMap.dgtzsj[fxTagDm]; 2398 + var tzsj = baseF.isPeakTimeScope(kssj,dataMap) ? dataMap.gftzsj[fxTagDm] : dataMap.dgtzsj[fxTagDm];
2102 // 定义在某时间段内的行驶时间. 2399 // 定义在某时间段内的行驶时间.
2103 - var _xxsj = baseF.getxssj(dataMap.zgfsjd,dataMap.wgfsjd,kssj,dataMap.pcxssjArr,dataMap.gfxxsjArr,fxTagDm); 2400 + var _xxsj = baseF.getByDirTravelTime(dataMap.zgfsjd,dataMap.wgfsjd,kssj,dataMap.pcxssjArr,dataMap.gfxxsjArr,fxTagDm);
2104 // 定义当前班次的停站时间,这里是为了当计算到了最后一个班次的时候,那么停站时间为0 ,但是后续的班次的发车时间需要加上前一个班次的停站时间. 2401 // 定义当前班次的停站时间,这里是为了当计算到了最后一个班次的时候,那么停站时间为0 ,但是后续的班次的发车时间需要加上前一个班次的停站时间.
2105 var xs_tzsj = baseF.isLastbc(kssj,endTime,tzsj,_xxsj) ? 0 : tzsj; 2402 var xs_tzsj = baseF.isLastbc(kssj,endTime,tzsj,_xxsj) ? 0 : tzsj;
2106 - // 添加正常班次对象. 2403 + // 添加正常班次对象.(这里初始化时,都是正常班次类型.)
2107 rs.push(baseF.getbcObj(kssj , _xxsj , cara[c] , 2404 rs.push(baseF.getbcObj(kssj , _xxsj , cara[c] ,
2108 dataMap.bcTypeArr.normal, 2405 dataMap.bcTypeArr.normal,
2109 dataMap.dira[fxTagDm] , xhNo++, 2406 dataMap.dira[fxTagDm] , xhNo++,
@@ -2114,6 +2411,7 @@ var BaseFun = function() { @@ -2114,6 +2411,7 @@ var BaseFun = function() {
2114 kssj = new Date(kssj.setMinutes(kssj.getMinutes() + tzsj)); 2411 kssj = new Date(kssj.setMinutes(kssj.getMinutes() + tzsj));
2115 } 2412 }
2116 } 2413 }
  2414 + // 返回结果集.
2117 return rs; 2415 return rs;
2118 }, 2416 },
2119 2417
@@ -2148,9 +2446,9 @@ var BaseFun = function() { @@ -2148,9 +2446,9 @@ var BaseFun = function() {
2148 kssj,dataMap.zwcArr[1],cara[c],dataMap.bcTypeArr.cf, 2446 kssj,dataMap.zwcArr[1],cara[c],dataMap.bcTypeArr.cf,
2149 dataMap.dira[cctag],xhNo++,0,map,0,null,null,null,0,0));// 晚餐班次 2447 dataMap.dira[cctag],xhNo++,0,map,0,null,null,null,0,0));// 晚餐班次
2150 }*/ 2448 }*/
2151 - var tzsj = baseF.isgfsjd01(kssj,dataMap) ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag]; 2449 + var tzsj = baseF.isPeakTimeScope(kssj,dataMap) ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag];
2152 // var tzsj = dataMap.ztjxA[cctag]; 2450 // var tzsj = dataMap.ztjxA[cctag];
2153 - var _xxsj = baseF.getxssj(dataMap.zgfsjd,dataMap.wgfsjd,kssj,dataMap.pcxssjArr,dataMap.gfxxsjArr,cctag);// 获取行驶时间 2451 + var _xxsj = baseF.getByDirTravelTime(dataMap.zgfsjd,dataMap.wgfsjd,kssj,dataMap.pcxssjArr,dataMap.gfxxsjArr,cctag);// 获取行驶时间
2154 var xs_tzsj = baseF.isLastbc(kssj,endTime,tzsj,_xxsj) ? 0 : tzsj; 2452 var xs_tzsj = baseF.isLastbc(kssj,endTime,tzsj,_xxsj) ? 0 : tzsj;
2155 rs.push(baseF.getbcObj( 2453 rs.push(baseF.getbcObj(
2156 kssj,_xxsj,cara[c],dataMap.bcTypeArr.normal, 2454 kssj,_xxsj,cara[c],dataMap.bcTypeArr.normal,
@@ -2162,7 +2460,7 @@ var BaseFun = function() { @@ -2162,7 +2460,7 @@ var BaseFun = function() {
2162 return rs; 2460 return rs;
2163 }, 2461 },
2164 2462
2165 - isgfsjd01 : function(kssj,dataMap) { 2463 + isPeakTimeScope : function(kssj,dataMap) {
2166 var tag = false; 2464 var tag = false;
2167 if((dataMap.zgfsjd[0].st <= kssj && kssj<= dataMap.zgfsjd[0].ed ) || 2465 if((dataMap.zgfsjd[0].st <= kssj && kssj<= dataMap.zgfsjd[0].ed ) ||
2168 ( dataMap.wgfsjd[0].st <= kssj && kssj <= dataMap.wgfsjd[0].ed)) 2466 ( dataMap.wgfsjd[0].st <= kssj && kssj <= dataMap.wgfsjd[0].ed))
@@ -2205,38 +2503,9 @@ var BaseFun = function() { @@ -2205,38 +2503,9 @@ var BaseFun = function() {
2205 } 2503 }
2206 return result; 2504 return result;
2207 }, 2505 },
2208 -  
2209 - splitBxRc02 : function(str) {  
2210 - var list = new Array(),rsa = new Array();  
2211 - var gsgd = baseF.getBxLs();  
2212 - var bxrcAr = str.split(',');  
2213 - for(var s = 0 ; s< bxrcAr.length;s++) {  
2214 - var s1a = bxrcAr[s].split('/');  
2215 - var rs = parseInt(s1a[1]);  
2216 - var fpcls = parseInt(s1a[2]);  
2217 - var gsavg = parseInt(s1a[3]);  
2218 - var gsgdIndex = 0,hoursV = 0.0,minueV='' ;  
2219 - for(var g = 0 ; g < gsgd.length; g++) {  
2220 - if(gsgd[g].type == s1a[0]) {  
2221 - gsgdIndex = g;  
2222 - hoursV = gsgd[g].hoursV;  
2223 - minueV = gsgd[g].minueV;  
2224 - }  
2225 - }  
2226 - list.push({'type':s1a[0],  
2227 - 'rs':rs,  
2228 - 'fpcls':fpcls,  
2229 - 'hoursV':hoursV,  
2230 - 'minueV':minueV,  
2231 - 'gsavg' : gsavg});  
2232 - rsa.push(rs);  
2233 - }  
2234 - return {'data':list.sort(function(a,b){return b.rs-a.rs}),'rsa':rsa.sort().reverse()};  
2235 - },  
2236 -  
2237 splitBxRc : function(str) { 2506 splitBxRc : function(str) {
2238 var list = new Array(),rsa = new Array();; 2507 var list = new Array(),rsa = new Array();;
2239 - var gsgd = baseF.getBxLs(); 2508 + var gsgd = baseF.getBcTypeAndWorkHuorsVConstant();
2240 var bxrcAr = str.split(','); 2509 var bxrcAr = str.split(',');
2241 for(var s = 0 ; s< bxrcAr.length;s++) { 2510 for(var s = 0 ; s< bxrcAr.length;s++) {
2242 var s1a = bxrcAr[s].split('/'); 2511 var s1a = bxrcAr[s].split('/');
@@ -2265,7 +2534,7 @@ var BaseFun = function() { @@ -2265,7 +2534,7 @@ var BaseFun = function() {
2265 * 2534 *
2266 * @return 返回一个工时规定数组集合. 2535 * @return 返回一个工时规定数组集合.
2267 * */ 2536 * */
2268 - getBxLs : function() { 2537 + getBcTypeAndWorkHuorsVConstant : function() {
2269 return [{'type':'六工一休','hoursV':6.66, 'minueV':'6:40'}, 2538 return [{'type':'六工一休','hoursV':6.66, 'minueV':'6:40'},
2270 {'type':'五工一休','hoursV':6.85, 'minueV':'6:51'}, 2539 {'type':'五工一休','hoursV':6.85, 'minueV':'6:51'},
2271 {'type':'四工一休','hoursV':7.14, 'minueV':'7:08'}, 2540 {'type':'四工一休','hoursV':7.14, 'minueV':'7:08'},
@@ -2318,7 +2587,7 @@ var BaseFun = function() { @@ -2318,7 +2587,7 @@ var BaseFun = function() {
2318 * @return : 返回一个数组对象。这里返回的是时刻表明细数据 2587 * @return : 返回一个数组对象。这里返回的是时刻表明细数据
2319 **/ 2588 **/
2320 tzsmbcsj : function(list,smbcsj,sj,cl,zd,lbsj) { 2589 tzsmbcsj : function(list,smbcsj,sj,cl,zd,lbsj) {
2321 - var _obj = baseF.getsxAndxxbc(list); 2590 + var _obj = baseF.getUpAndDownBc(list);
2322 baseF.tcbc(_obj.sxbc,smbcsj[0].kssj,smbcsj[0].jssj);// 剔除上行不在时间范围内的班次 2591 baseF.tcbc(_obj.sxbc,smbcsj[0].kssj,smbcsj[0].jssj);// 剔除上行不在时间范围内的班次
2323 baseF.tcbc(_obj.xxbc,smbcsj[1].kssj,smbcsj[1].jssj);// 剔除下行不在时间范围内的班次 2592 baseF.tcbc(_obj.xxbc,smbcsj[1].kssj,smbcsj[1].jssj);// 剔除下行不在时间范围内的班次
2324 baseF.dzsmsj(_obj.xxbc,smbcsj[1].kssj,smbcsj[1].jssj,_obj.sxbc);// 调整下行首末班车时间 2593 baseF.dzsmsj(_obj.xxbc,smbcsj[1].kssj,smbcsj[1].jssj,_obj.sxbc);// 调整下行首末班车时间
@@ -2335,7 +2604,7 @@ var BaseFun = function() { @@ -2335,7 +2604,7 @@ var BaseFun = function() {
2335 * @return : 返回一个数组对象。这里返回的是时刻表明细数据 2604 * @return : 返回一个数组对象。这里返回的是时刻表明细数据
2336 **/ 2605 **/
2337 tzsmbcsj01 : function(list,smbcsj,sj,cl,zd,lbsj,dm) { 2606 tzsmbcsj01 : function(list,smbcsj,sj,cl,zd,lbsj,dm) {
2338 - var _obj = baseF.getsxAndxxbc(list,dm); 2607 + var _obj = baseF.getUpAndDownBc(list,dm);
2339 baseF.tcbc(_obj.sxbc,smbcsj[0].kssj,smbcsj[0].jssj ,_obj.xxbc);// 剔除上行不在时间范围内的班次 2608 baseF.tcbc(_obj.sxbc,smbcsj[0].kssj,smbcsj[0].jssj ,_obj.xxbc);// 剔除上行不在时间范围内的班次
2340 baseF.tcbc(_obj.xxbc,smbcsj[1].kssj,smbcsj[1].jssj,_obj.sxbc);// 剔除下行不在时间范围内的班次 2609 baseF.tcbc(_obj.xxbc,smbcsj[1].kssj,smbcsj[1].jssj,_obj.sxbc);// 剔除下行不在时间范围内的班次
2341 if(smbcsj[1].jssj < smbcsj[0].jssj ) { 2610 if(smbcsj[1].jssj < smbcsj[0].jssj ) {
@@ -2493,23 +2762,6 @@ var BaseFun = function() { @@ -2493,23 +2762,6 @@ var BaseFun = function() {
2493 return tag; 2762 return tag;
2494 }, 2763 },
2495 2764
2496 - getsxAndxxbc : function(json,dataMap) {  
2497 - var upArray = new Array(),downArray = new Array(),qt = new Array();  
2498 - for(var j = 0 ; j< json.length ; j++) {  
2499 - if(json[j].bcType== dataMap.bcTypeArr.normal ||  
2500 - json[j].bcType== dataMap.bcTypeArr.region ||  
2501 - json[j].bcType== dataMap.bcTypeArr.major ||  
2502 - json[j].bcType== dataMap.bcTypeArr.venting) {  
2503 - if(json[j].xlDir == dataMap.dira[0])  
2504 - upArray.push(json[j]);  
2505 - else if(json[j].xlDir == dataMap.dira[1])  
2506 - downArray.push(json[j]);  
2507 - }else if(json[j].bcType == dataMap.bcTypeArr.cf) {  
2508 - qt.push(json[j]);  
2509 - }  
2510 - }  
2511 - return {'sxbc' : upArray,'xxbc' : downArray,'qt': qt};  
2512 - },  
2513 /** 2765 /**
2514 * @description : (TODO) 在同一块路牌下,根据发车序号进行顺序排序 2766 * @description : (TODO) 在同一块路牌下,根据发车序号进行顺序排序
2515 * 2767 *
@@ -2541,13 +2793,13 @@ var BaseFun = function() { @@ -2541,13 +2793,13 @@ var BaseFun = function() {
2541 var ags = {'tcc_id':lastObj.tcc,'skbName':lastObj.ttinfo,'lineName':lastObj.xl+'_'}; 2793 var ags = {'tcc_id':lastObj.tcc,'skbName':lastObj.ttinfo,'lineName':lastObj.xl+'_'};
2542 for(var t = 0 ; t<num;t++){ 2794 for(var t = 0 ; t<num;t++){
2543 cctag = obj.configuration.dataMap.map.linePlayType=='1'? 0: baseF.getfx(1,cctag); 2795 cctag = obj.configuration.dataMap.map.linePlayType=='1'? 0: baseF.getfx(1,cctag);
2544 - var _xxsj = baseF.getxssj(obj.configuration.dataMap.zgfsjd, 2796 + var _xxsj = baseF.getByDirTravelTime(obj.configuration.dataMap.zgfsjd,
2545 obj.configuration.dataMap.wgfsjd, 2797 obj.configuration.dataMap.wgfsjd,
2546 kssj, 2798 kssj,
2547 obj.configuration.dataMap.pcxssjArr, 2799 obj.configuration.dataMap.pcxssjArr,
2548 obj.configuration.dataMap.gfxxsjArr,cctag);// 获取行驶时间 2800 obj.configuration.dataMap.gfxxsjArr,cctag);// 获取行驶时间
2549 // tzsj = obj.configuration.dataMap.ztjxA[cctag]; 2801 // tzsj = obj.configuration.dataMap.ztjxA[cctag];
2550 - var tzjx = baseF.isgfsjd01(kssj,obj.configuration.dataMap) ? obj.configuration.dataMap.gftzsj[cctag] : obj.configuration.dataMap.dgtzsj[cctag]; 2802 + var tzjx = baseF.isPeakTimeScope(kssj,obj.configuration.dataMap) ? obj.configuration.dataMap.gftzsj[cctag] : obj.configuration.dataMap.dgtzsj[cctag];
2551 var temptzsj = ((t == num-1) ? 0 : tzsj); 2803 var temptzsj = ((t == num-1) ? 0 : tzsj);
2552 /*var xs_tzsj = baseF.isLastbc(kssj,endTime,tzsj,_xxsj) ? 0 : tzsj;*/ 2804 /*var xs_tzsj = baseF.isLastbc(kssj,endTime,tzsj,_xxsj) ? 0 : tzsj;*/
2553 jsonArray.push(baseF.getbcObj( kssj, 2805 jsonArray.push(baseF.getbcObj( kssj,
@@ -2643,7 +2895,7 @@ var BaseFun = function() { @@ -2643,7 +2895,7 @@ var BaseFun = function() {
2643 for(var i = 0 ; i<numqs;i++) { 2895 for(var i = 0 ; i<numqs;i++) {
2644 cctag = obj.configuration.dataMap.map.linePlayType=='1' ? 0 : bf.getfx(fxTagDm,cctag); 2896 cctag = obj.configuration.dataMap.map.linePlayType=='1' ? 0 : bf.getfx(fxTagDm,cctag);
2645 fxTagDm = 1; 2897 fxTagDm = 1;
2646 - var _xxsj = bf.getxssj(obj.configuration.dataMap.zgfsjd, 2898 + var _xxsj = bf.getByDirTravelTime(obj.configuration.dataMap.zgfsjd,
2647 obj.configuration.dataMap.wgfsjd,kssj, 2899 obj.configuration.dataMap.wgfsjd,kssj,
2648 obj.configuration.dataMap.pcxssjArr, 2900 obj.configuration.dataMap.pcxssjArr,
2649 obj.configuration.dataMap.gfxxsjArr,cctag);// 获取行驶时间 2901 obj.configuration.dataMap.gfxxsjArr,cctag);// 获取行驶时间
@@ -2743,7 +2995,7 @@ var BaseFun = function() { @@ -2743,7 +2995,7 @@ var BaseFun = function() {
2743 /*if(parseInt((baseF.getDateTime(bcArr[l+1].fcsj) - baseF.getDateTime(bcArr[l].fcsj))/60000) ==_fcjx) 2995 /*if(parseInt((baseF.getDateTime(bcArr[l+1].fcsj) - baseF.getDateTime(bcArr[l].fcsj))/60000) ==_fcjx)
2744 continue;*/ 2996 continue;*/
2745 bcArr[l].fcsj = baseF.getTimeStr(fcnosj); 2997 bcArr[l].fcsj = baseF.getTimeStr(fcnosj);
2746 - var _xxsj = baseF.getxssj(dataMap.zgfsjd, 2998 + var _xxsj = baseF.getByDirTravelTime(dataMap.zgfsjd,
2747 dataMap.wgfsjd,fcnosj,dataMap.pcxssjArr, 2999 dataMap.wgfsjd,fcnosj,dataMap.pcxssjArr,
2748 dataMap.gfxxsjArr,baseF.dirDmToIndex(bcArr[l].xlDir));// 获取行驶时间 3000 dataMap.gfxxsjArr,baseF.dirDmToIndex(bcArr[l].xlDir));// 获取行驶时间
2749 bcArr[l].bcsj = _xxsj; 3001 bcArr[l].bcsj = _xxsj;
@@ -2762,7 +3014,7 @@ var BaseFun = function() { @@ -2762,7 +3014,7 @@ var BaseFun = function() {
2762 ddsj.setHours(fcsj.getHours()); 3014 ddsj.setHours(fcsj.getHours());
2763 ddsj.setMinutes(fcsj.getMinutes()+_fcjx); 3015 ddsj.setMinutes(fcsj.getMinutes()+_fcjx);
2764 sjdbcArr[l].fcsj = baseF.getTimeStr(ddsj); 3016 sjdbcArr[l].fcsj = baseF.getTimeStr(ddsj);
2765 - var _xxsj = baseF.getxssj(dataMap.zgfsjd, 3017 + var _xxsj = baseF.getByDirTravelTime(dataMap.zgfsjd,
2766 dataMap.wgfsjd,ddsj,dataMap.pcxssjArr, 3018 dataMap.wgfsjd,ddsj,dataMap.pcxssjArr,
2767 dataMap.gfxxsjArr,baseF.dirDmToIndex(sjdbcArr[l].xlDir));// 获取行驶时间 3019 dataMap.gfxxsjArr,baseF.dirDmToIndex(sjdbcArr[l].xlDir));// 获取行驶时间
2768 sjdbcArr[l].bcsj = _xxsj; 3020 sjdbcArr[l].bcsj = _xxsj;
@@ -2835,7 +3087,7 @@ var BaseFun = function() { @@ -2835,7 +3087,7 @@ var BaseFun = function() {
2835 xgbc.fcsj = baseF.getTimeStr(dqbcddsj);// 修改下个班次的发车时间. 3087 xgbc.fcsj = baseF.getTimeStr(dqbcddsj);// 修改下个班次的发车时间.
2836 var _xxsj = xgbc.bcsj; 3088 var _xxsj = xgbc.bcsj;
2837 /*if(!tagb && type=='cf') { 3089 /*if(!tagb && type=='cf') {
2838 - _xxsj = baseF.getxssj(dataMap.zgfsjd, 3090 + _xxsj = baseF.getByDirTravelTime(dataMap.zgfsjd,
2839 dataMap.wgfsjd,dqbcddsj,dataMap.pcxssjArr, 3091 dataMap.wgfsjd,dqbcddsj,dataMap.pcxssjArr,
2840 dataMap.gfxxsjArr,baseF.dirDmToIndex(xgbc.xlDir));// 获取行驶时间 3092 dataMap.gfxxsjArr,baseF.dirDmToIndex(xgbc.xlDir));// 获取行驶时间
2841 }*/ 3093 }*/
@@ -2986,7 +3238,7 @@ var BaseFun = function() { @@ -2986,7 +3238,7 @@ var BaseFun = function() {
2986 var cf = 0; 3238 var cf = 0;
2987 while(d1<d2) { 3239 while(d1<d2) {
2988 dir = baseF.getfx(1,dir); 3240 dir = baseF.getfx(1,dir);
2989 - var dx = baseF.getxssj(zg,wa,d1,pc,gf,dir) + ztjxA[dir]; 3241 + var dx = baseF.getByDirTravelTime(zg,wa,d1,pc,gf,dir) + ztjxA[dir];
2990 if(d1> new Date (baseF.getCFDate(10,30)) && 3242 if(d1> new Date (baseF.getCFDate(10,30)) &&
2991 d1<new Date (baseF.getCFDate(12,0)) && cf <=0) { 3243 d1<new Date (baseF.getCFDate(12,0)) && cf <=0) {
2992 dx = dx + 20; 3244 dx = dx + 20;
src/main/resources/static/pages/base/timesmodel/js/gantt.js
@@ -65,7 +65,7 @@ @@ -65,7 +65,7 @@
65 // 采用班型人次数据获取渲染时刻表明细图形的配置参数数据. 65 // 采用班型人次数据获取渲染时刻表明细图形的配置参数数据.
66 // data = BaseFun.BXPplaceClassesTime(stopAraay,CSMap.maxCar,map,seMap,dataMap,getylp(CSMap.maxCar).lpNoA); 66 // data = BaseFun.BXPplaceClassesTime(stopAraay,CSMap.maxCar,map,seMap,dataMap,getylp(CSMap.maxCar).lpNoA);
67 // data = BaseFun.BXPplaceClassesTime01(stopAraay,CSMap.maxCar,map,seMap,dataMap,getylp(CSMap.maxCar).lpNoA); 67 // data = BaseFun.BXPplaceClassesTime01(stopAraay,CSMap.maxCar,map,seMap,dataMap,getylp(CSMap.maxCar).lpNoA);
68 - data = BaseFun.BXPplaceClassesTime02(stopAraay,CSMap.maxCar,map,seMap,dataMap,getylp(CSMap.maxCar).lpNoA); 68 + data = BaseFun.BXPplaceClassesTime02(stopAraay,CSMap.maxCar,map,seMap,dataMap);
69 } 69 }
70 70
71 }else { 71 }else {