Commit 16a6e003c41b183df2c634ed70fd87659c78f955

Authored by 徐烜
1 parent bc0ca3e9

时刻表v2.7.14

1、添加吃饭班次标记
2、修正进场班次里程统计bug
3、将调整班次车距平衡逻辑调整到AdjustTripStratgy.js里的策略类里
src/main/resources/static/pages/base/timesmodel/gantt.html
@@ -152,6 +152,7 @@ @@ -152,6 +152,7 @@
152 <script src="/pages/base/timesmodel/js/v2/core/InternalGroupObj.js"></script> 152 <script src="/pages/base/timesmodel/js/v2/core/InternalGroupObj.js"></script>
153 <script src="/pages/base/timesmodel/js/v2/core/InternalLpObj.js"></script> 153 <script src="/pages/base/timesmodel/js/v2/core/InternalLpObj.js"></script>
154 <script src="/pages/base/timesmodel/js/v2/core/InternalScheduleObj.js"></script> 154 <script src="/pages/base/timesmodel/js/v2/core/InternalScheduleObj.js"></script>
  155 +<script src="/pages/base/timesmodel/js/v2/AdjustTripStrategy.js"></script>
155 <script src="/pages/base/timesmodel/js/v2/main_v2.js"></script> 156 <script src="/pages/base/timesmodel/js/v2/main_v2.js"></script>
156 <script src="/pages/base/timesmodel/js/d3.relationshipgraph.js"></script> 157 <script src="/pages/base/timesmodel/js/d3.relationshipgraph.js"></script>
157 <script src="/pages/base/timesmodel/js/errorinfo.js"></script> 158 <script src="/pages/base/timesmodel/js/errorinfo.js"></script>
src/main/resources/static/pages/base/timesmodel/js/v2/AdjustTripStrategy.js 0 → 100644
  1 +//------------------ 策略模块(以下) -----------------//
  2 +
  3 +var AdjustTripS1 = (function() {
  4 +
  5 + function _f1(aBc, schedule, paramObj, fre) {
  6 + if (fre > 0) {
  7 + aBc.sort(function (o1, o2) {
  8 + if (o1.getFcTimeObj().isBefore(o2.getFcTimeObj())) {
  9 + return -1;
  10 + } else {
  11 + return 1;
  12 + }
  13 + });
  14 +
  15 + var i;
  16 + var j;
  17 +
  18 + var iBcCountOfGroup = 3; // 3个班次取一次计算
  19 + var aBcOfGroup; // 3个班次列表
  20 + var aBcIntervalOfGroup; // 班次间隔列表,如:3个班次,2个间隔
  21 + var oBcFcTime; // 班次发车时间
  22 +
  23 + for (i = 0; i <= aBc.length - iBcCountOfGroup; i++) {
  24 + aBcOfGroup = [];
  25 + aBcIntervalOfGroup = [];
  26 + for (j = i; j < i + iBcCountOfGroup; j++) {
  27 + aBcOfGroup.push(aBc[j]);
  28 + }
  29 +
  30 + for (j = 0; j < aBcOfGroup.length; j++) {
  31 + if (j < aBcOfGroup.length - 1) {
  32 + aBcIntervalOfGroup.push(aBcOfGroup[j + 1].getFcTimeObj().diff(
  33 + aBcOfGroup[j].getFcTimeObj(), "m"));
  34 + }
  35 + }
  36 +
  37 + // 判定规则
  38 + oBcFcTime = aBcOfGroup[1].getFcTimeObj();
  39 +
  40 + // 第一个班次发车时间不动,根据间隔,调整中间一个班次
  41 + // 如果3个班次2个间隔时间差1分钟,不调整
  42 + // 如果第一个间隔大,调整第二个班次往前1分钟
  43 + // 如果第二个间隔大,调整第二个班次往后1分钟
  44 +
  45 + if (paramObj.isTroughBc(oBcFcTime) &&
  46 + aBcIntervalOfGroup[0] > paramObj.getTroughMaxFcjx()) {
  47 +
  48 + // aBcOfGroup[1].addMinuteToFcsj(-1);
  49 +
  50 + // 判定是否能调整发车时间
  51 + // if (aBcOfGroup[1].getGroup().getLp().isModifyBcFcsj(aBcOfGroup[1], -1, _paramObj)) {
  52 + aBcOfGroup[1]._$_fcsjObj.add(-1, "m");
  53 + aBcOfGroup[1].setArrTimeObj(paramObj.addMinute(
  54 + aBcOfGroup[1].getFcTimeObj(),
  55 + paramObj.calcuTravelTime(
  56 + aBcOfGroup[1].getFcTimeObj(),
  57 + aBcOfGroup[1].isUp())
  58 + ));
  59 +
  60 + // }
  61 + }
  62 +
  63 + //else if (_paramObj.isMPeakBc(oBcFcTime) &&
  64 + // aBcIntervalOfGroup[0] < _paramObj.getMPeakMinFcjx()) {
  65 + // aBcOfGroup[1].addMinuteToFcsj(1);
  66 + //} else if (_paramObj.isMPeakBc(oBcFcTime) &&
  67 + // aBcIntervalOfGroup[0] > _paramObj.getMPeakMaxFcjx()) {
  68 + // aBcOfGroup[1].addMinuteToFcsj(-1);
  69 + //} else if (_paramObj.isEPeakBc(oBcFcTime) &&
  70 + // aBcIntervalOfGroup[0] < _paramObj.getEPeakMinFcjx()) {
  71 + // aBcOfGroup[1].addMinuteToFcsj(1);
  72 + //} else if (_paramObj.isEPeakBc(oBcFcTime) &&
  73 + // aBcIntervalOfGroup[0] > _paramObj.getEPeakMaxFcjx()) {
  74 + // aBcOfGroup[1].addMinuteToFcsj(-1);
  75 + //}
  76 +
  77 +
  78 + else {
  79 + if (Math.abs(aBcIntervalOfGroup[0] - aBcIntervalOfGroup[1]) <= 1) {
  80 + //continue;
  81 + } else if (aBcIntervalOfGroup[0] > aBcIntervalOfGroup[1]) {
  82 +
  83 +
  84 + // 判定是否能调整发车时间
  85 + // if (aBcOfGroup[1].getGroup().getLp().isModifyBcFcsj(aBcOfGroup[1], -1, _paramObj)) {
  86 + aBcOfGroup[1]._$_fcsjObj.add(-1, "m");
  87 + aBcOfGroup[1].setArrTimeObj(paramObj.addMinute(
  88 + aBcOfGroup[1].getFcTimeObj(),
  89 + paramObj.calcuTravelTime(
  90 + aBcOfGroup[1].getFcTimeObj(),
  91 + aBcOfGroup[1].isUp())
  92 + ));
  93 + // }
  94 +
  95 + // aBcOfGroup[1].addMinuteToFcsj(-1);
  96 + } else {
  97 + // aBcOfGroup[1].addMinuteToFcsj(1);
  98 +
  99 + // 判定是否能调整发车时间
  100 + // if (aBcOfGroup[1].getGroup().getLp().isModifyBcFcsj(aBcOfGroup[1], 1, _paramObj)) {
  101 + aBcOfGroup[1]._$_fcsjObj.add(1, "m");
  102 + aBcOfGroup[1].setArrTimeObj(paramObj.addMinute(
  103 + aBcOfGroup[1].getFcTimeObj(),
  104 + paramObj.calcuTravelTime(
  105 + aBcOfGroup[1].getFcTimeObj(),
  106 + aBcOfGroup[1].isUp())
  107 + ));
  108 + // }
  109 + }
  110 + }
  111 +
  112 + //if (Math.abs(aBcIntervalOfGroup[0] - aBcIntervalOfGroup[1]) <= 1) {
  113 + // //continue;
  114 + //} else if (aBcIntervalOfGroup[0] > aBcIntervalOfGroup[1]) {
  115 + // aBcOfGroup[1].addMinuteToFcsj(-1);
  116 + //} else {
  117 + // aBcOfGroup[1].addMinuteToFcsj(1);
  118 + //}
  119 +
  120 +
  121 + }
  122 +
  123 + _f1(aBc, schedule, paramObj, fre - 1);
  124 +
  125 + }
  126 + }
  127 +
  128 +
  129 + function f1(aUpBc, aDownBc, schedule, paramObj) {
  130 + // TODO:9、调整纵向班次间隔
  131 + _f1(aUpBc, schedule, paramObj, 5);
  132 + _f1(aDownBc, schedule, paramObj, 5);
  133 +
  134 + schedule.fnAdjustLpBcInterval(1);
  135 +
  136 + _f1(aUpBc, schedule, paramObj, 5);
  137 + _f1(aDownBc, schedule, paramObj, 5);
  138 + }
  139 +
  140 + return f1;
  141 +}());
  142 +
  143 +//------------------ 策略模块(以上) -----------------//
  144 +
  145 +
  146 +
  147 +
  148 +
  149 +// 调整班次策略类
  150 +var AdjustTripStrategy = (function() {
  151 +
  152 + /**
  153 + * 内部策略配置封装类。
  154 + * @constructor
  155 + */
  156 + function InternalStrategy() {
  157 + // 策略函数对应,每个函数都由一个标识符号对应,类似配置函数
  158 + this._oSTRATIGIS = {
  159 + "ADJUST_TRIP": AdjustTripS1
  160 + };
  161 + }
  162 +
  163 + /**
  164 + * 返回策略函数
  165 + * @param str 标识
  166 + * @returns {function}
  167 + */
  168 + InternalStrategy.prototype.sFn = function(str) {
  169 + if (!this._oSTRATIGIS[str]) {
  170 + throw "指定标识" + str + "策略函数不存在!";
  171 + }
  172 + return this._oSTRATIGIS[str];
  173 + };
  174 + /**
  175 + * 替换策略配置
  176 + * @param str 策略函数标识
  177 + * @param fn 策略函数
  178 + */
  179 + InternalStrategy.prototype.sConfig = function(str, fn) {
  180 + this._oSTRATIGIS[str] = fn;
  181 + };
  182 +
  183 + return new InternalStrategy();
  184 +}());
0 \ No newline at end of file 185 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/js/v2/ParameterObj.js
@@ -1236,7 +1236,7 @@ var ParameterObj = function() { @@ -1236,7 +1236,7 @@ var ParameterObj = function() {
1236 var paramObj = this; 1236 var paramObj = this;
1237 1237
1238 if (isUp) { 1238 if (isUp) {
1239 - if (bcType == "in_") { 1239 + if (bcType == "in_" || bcType == "in") {
1240 return paramObj.getUpInLc(); 1240 return paramObj.getUpInLc();
1241 } else if (bcType == "out") { 1241 } else if (bcType == "out") {
1242 return paramObj.getUpOutLc(); 1242 return paramObj.getUpOutLc();
@@ -1250,7 +1250,7 @@ var ParameterObj = function() { @@ -1250,7 +1250,7 @@ var ParameterObj = function() {
1250 return paramObj.getUpNormalLc(); 1250 return paramObj.getUpNormalLc();
1251 } 1251 }
1252 } else { 1252 } else {
1253 - if (bcType == "in_") { 1253 + if (bcType == "in_" || bcType == "in") {
1254 return paramObj.getDownInLc(); 1254 return paramObj.getDownInLc();
1255 } else if (bcType == "out") { 1255 } else if (bcType == "out") {
1256 return paramObj.getDownOutLc(); 1256 return paramObj.getDownOutLc();
src/main/resources/static/pages/base/timesmodel/js/v2/core/InternalBcObj.js
@@ -94,6 +94,10 @@ InternalBcObj.prototype.setGroup = function(groupObj) { @@ -94,6 +94,10 @@ InternalBcObj.prototype.setGroup = function(groupObj) {
94 this._$$_internal_group_obj = groupObj; 94 this._$$_internal_group_obj = groupObj;
95 }; 95 };
96 96
  97 +InternalBcObj.prototype.getGroup = function() {
  98 + return this._$$_internal_group_obj
  99 +};
  100 +
97 /** 101 /**
98 * 是否上行。 102 * 是否上行。
99 * @returns boolean 103 * @returns boolean
src/main/resources/static/pages/base/timesmodel/js/v2/core/InternalGroupObj.js
@@ -53,6 +53,9 @@ InternalGroupObj.prototype.setLp = function(lpObj) { @@ -53,6 +53,9 @@ InternalGroupObj.prototype.setLp = function(lpObj) {
53 bc2.setLp(lpObj); 53 bc2.setLp(lpObj);
54 } 54 }
55 }; 55 };
  56 +InternalGroupObj.prototype.getLp = function() {
  57 + return this._$$_internal_lp_obj;
  58 +};
56 59
57 60
58 61
src/main/resources/static/pages/base/timesmodel/js/v2/core/InternalLpObj.js
@@ -962,6 +962,58 @@ InternalLpObj.prototype.fnAdjustBcTime = function(oParam) { @@ -962,6 +962,58 @@ InternalLpObj.prototype.fnAdjustBcTime = function(oParam) {
962 }; 962 };
963 963
964 /** 964 /**
  965 + * 返回指定班次的上一个班次。
  966 + * @param oBc {moment} 指定班次
  967 + * @returns {object} 上一个班次,如果没有,返回false
  968 + */
  969 +InternalLpObj.prototype.getPreBc = function(oBc) {
  970 + // 获取车次链个数
  971 + var iBcChainCount = this.fnGetBcChainCount();
  972 +
  973 + var i;
  974 + var j;
  975 + var oBcIndex;
  976 + var iQIndex;
  977 + var iBcIndex;
  978 + var iBcCount;
  979 + var _oPreBc;
  980 + var _bFindCurrentBc = false;
  981 +
  982 + for (i = 0; i < iBcChainCount; i++) {
  983 + oBcIndex = this.fnGetBcChainInfo(i);
  984 + iQIndex = oBcIndex["s_q"];
  985 + iBcIndex = oBcIndex["s_b"];
  986 + iBcCount = oBcIndex["bcount"];
  987 +
  988 + for (j = 0; j < iBcCount - 1; j++) {
  989 + if (oBc.getFcTimeObj().format("HH:mm") ==
  990 + this.getBc(iQIndex, iBcIndex).getFcTimeObj().format("HH:mm")) {
  991 + _bFindCurrentBc = true;
  992 + break;
  993 + }
  994 +
  995 + // 进入到下一圈
  996 + iBcIndex = iBcIndex == 0 ? 1 : 0;
  997 + iQIndex = iBcIndex == 0 ? iQIndex + 1 : iQIndex;
  998 + }
  999 +
  1000 + if (_bFindCurrentBc) {
  1001 + if (iQIndex == oBcIndex["s_q"] && iBcIndex == oBcIndex["s_q"]) { // 第一个班次
  1002 + break;
  1003 + } else {
  1004 + _oPreBc = this.getBc(
  1005 + iBcIndex == 0 ? iQIndex - 1 : iQIndex,
  1006 + iBcIndex == 0 ? 1 : 0);
  1007 + }
  1008 + }
  1009 +
  1010 + }
  1011 +
  1012 + return _oPreBc || false;
  1013 +
  1014 +};
  1015 +
  1016 +/**
965 * 是否能调整班次的发车时间。 1017 * 是否能调整班次的发车时间。
966 * @param oBc 指定班次 1018 * @param oBc 指定班次
967 * @param iStep 修正步长 1019 * @param iStep 修正步长
@@ -977,7 +1029,6 @@ InternalLpObj.prototype.isModifyBcFcsj = function(oBc, iStep, oParam) { @@ -977,7 +1029,6 @@ InternalLpObj.prototype.isModifyBcFcsj = function(oBc, iStep, oParam) {
977 var iQIndex; 1029 var iQIndex;
978 var iBcIndex; 1030 var iBcIndex;
979 var iBcCount; 1031 var iBcCount;
980 - var oBc;  
981 var oPreBc; 1032 var oPreBc;
982 1033
983 var iBcStopTime; 1034 var iBcStopTime;
@@ -990,9 +1041,7 @@ InternalLpObj.prototype.isModifyBcFcsj = function(oBc, iStep, oParam) { @@ -990,9 +1041,7 @@ InternalLpObj.prototype.isModifyBcFcsj = function(oBc, iStep, oParam) {
990 iBcIndex = oBcIndex["s_b"]; 1041 iBcIndex = oBcIndex["s_b"];
991 iBcCount = oBcIndex["bcount"]; 1042 iBcCount = oBcIndex["bcount"];
992 1043
993 - oPreBc = this.getBc(  
994 - iBcIndex == 0 ? iQIndex - 1 : iQIndex,  
995 - iBcIndex == 0 ? 1 : 0); 1044 + oPreBc = this.getPreBc(oBc);
996 1045
997 // 如果是第一个班次 1046 // 如果是第一个班次
998 if (!oPreBc) { 1047 if (!oPreBc) {
@@ -1003,6 +1052,10 @@ InternalLpObj.prototype.isModifyBcFcsj = function(oBc, iStep, oParam) { @@ -1003,6 +1052,10 @@ InternalLpObj.prototype.isModifyBcFcsj = function(oBc, iStep, oParam) {
1003 } 1052 }
1004 } 1053 }
1005 1054
  1055 + if (oPreBc.fnGetEatTime() > 0) { // 如果是吃饭班次,不能修改发车时间
  1056 + return false;
  1057 + }
  1058 +
1006 aRangeStopTime = oParam.calcuTripLayoverTimeRange( 1059 aRangeStopTime = oParam.calcuTripLayoverTimeRange(
1007 oPreBc.getArrTimeObj(), oPreBc.isUp(), oPreBc.getBcTime() 1060 oPreBc.getArrTimeObj(), oPreBc.isUp(), oPreBc.getBcTime()
1008 ); 1061 );
src/main/resources/static/pages/base/timesmodel/js/v2/core/InternalScheduleObj.js
@@ -1732,133 +1732,15 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) { @@ -1732,133 +1732,15 @@ var InternalScheduleObj = function(paramObj, lpArray, factory) {
1732 }, 1732 },
1733 1733
1734 /** 1734 /**
1735 - * 调整班次间隔。  
1736 - * @param boolean isUp 是否上行 1735 + * 调整班次间隔(使用策略类)。
1737 * @param oStartTime 开始时间对象 1736 * @param oStartTime 开始时间对象
1738 - * @param fre int 迭代次数  
1739 */ 1737 */
1740 - fnAdjustBcInterval: function(isUp, oStartTime, fre) {  
1741 - if (fre > 0) {  
1742 - var aBc = !oStartTime ? _fnGetBcList(isUp) : _fnGetBcList2(isUp, oStartTime); // 指定方向的班次列表  
1743 -  
1744 - aBc.sort(function(o1, o2) {  
1745 - if (o1.getFcTimeObj().isBefore(o2.getFcTimeObj())) {  
1746 - return -1;  
1747 - } else {  
1748 - return 1;  
1749 - }  
1750 - });  
1751 -  
1752 - var i;  
1753 - var j;  
1754 -  
1755 - var iBcCountOfGroup = 3; // 3个班次取一次计算  
1756 - var aBcOfGroup; // 3个班次列表  
1757 - var aBcIntervalOfGroup; // 班次间隔列表,如:3个班次,2个间隔  
1758 - var oBcFcTime; // 班次发车时间  
1759 -  
1760 - for (i = 0; i <= aBc.length - iBcCountOfGroup; i++) {  
1761 - aBcOfGroup = [];  
1762 - aBcIntervalOfGroup = [];  
1763 - for (j = i; j < i + iBcCountOfGroup; j++) {  
1764 - aBcOfGroup.push(aBc[j]);  
1765 - }  
1766 -  
1767 - for (j = 0; j < aBcOfGroup.length; j++) {  
1768 - if (j < aBcOfGroup.length - 1) {  
1769 - aBcIntervalOfGroup.push(aBcOfGroup[j + 1].getFcTimeObj().diff(  
1770 - aBcOfGroup[j].getFcTimeObj(), "m"));  
1771 - }  
1772 - }  
1773 -  
1774 - // 判定规则  
1775 - oBcFcTime = aBcOfGroup[1].getFcTimeObj();  
1776 -  
1777 - // 第一个班次发车时间不动,根据间隔,调整中间一个班次  
1778 - // 如果3个班次2个间隔时间差1分钟,不调整  
1779 - // 如果第一个间隔大,调整第二个班次往前1分钟  
1780 - // 如果第二个间隔大,调整第二个班次往后1分钟  
1781 -  
1782 - if (_paramObj.isTroughBc(oBcFcTime) &&  
1783 - aBcIntervalOfGroup[0] > _paramObj.getTroughMaxFcjx()) {  
1784 -  
1785 - // aBcOfGroup[1].addMinuteToFcsj(-1);  
1786 -  
1787 - // 判定是否能调整发车时间  
1788 - if (aBcOfGroup[1]._$$_internal_lp_obj.isModifyBcFcsj(aBcOfGroup[1], -1, _paramObj)) {  
1789 - aBcOfGroup[1]._$_fcsjObj.add(-1, "m");  
1790 - aBcOfGroup[1].setArrTimeObj(_paramObj.addMinute(  
1791 - aBcOfGroup[1].getFcTimeObj(),  
1792 - _paramObj.calcuTravelTime(  
1793 - aBcOfGroup[1].getFcTimeObj(),  
1794 - aBcOfGroup[1].isUp())  
1795 - ));  
1796 -  
1797 - }  
1798 - }  
1799 -  
1800 - //else if (_paramObj.isMPeakBc(oBcFcTime) &&  
1801 - // aBcIntervalOfGroup[0] < _paramObj.getMPeakMinFcjx()) {  
1802 - // aBcOfGroup[1].addMinuteToFcsj(1);  
1803 - //} else if (_paramObj.isMPeakBc(oBcFcTime) &&  
1804 - // aBcIntervalOfGroup[0] > _paramObj.getMPeakMaxFcjx()) {  
1805 - // aBcOfGroup[1].addMinuteToFcsj(-1);  
1806 - //} else if (_paramObj.isEPeakBc(oBcFcTime) &&  
1807 - // aBcIntervalOfGroup[0] < _paramObj.getEPeakMinFcjx()) {  
1808 - // aBcOfGroup[1].addMinuteToFcsj(1);  
1809 - //} else if (_paramObj.isEPeakBc(oBcFcTime) &&  
1810 - // aBcIntervalOfGroup[0] > _paramObj.getEPeakMaxFcjx()) {  
1811 - // aBcOfGroup[1].addMinuteToFcsj(-1);  
1812 - //}  
1813 -  
1814 -  
1815 - else {  
1816 - if (Math.abs(aBcIntervalOfGroup[0] - aBcIntervalOfGroup[1]) <= 1) {  
1817 - //continue;  
1818 - } else if (aBcIntervalOfGroup[0] > aBcIntervalOfGroup[1]) {  
1819 -  
1820 -  
1821 - // 判定是否能调整发车时间  
1822 - if (aBcOfGroup[1]._$$_internal_lp_obj.isModifyBcFcsj(aBcOfGroup[1], -1, _paramObj)) {  
1823 - aBcOfGroup[1]._$_fcsjObj.add(-1, "m");  
1824 - aBcOfGroup[1].setArrTimeObj(_paramObj.addMinute(  
1825 - aBcOfGroup[1].getFcTimeObj(),  
1826 - _paramObj.calcuTravelTime(  
1827 - aBcOfGroup[1].getFcTimeObj(),  
1828 - aBcOfGroup[1].isUp())  
1829 - ));  
1830 - }  
1831 -  
1832 - // aBcOfGroup[1].addMinuteToFcsj(-1);  
1833 - } else {  
1834 - // aBcOfGroup[1].addMinuteToFcsj(1);  
1835 -  
1836 - // 判定是否能调整发车时间  
1837 - if (aBcOfGroup[1]._$$_internal_lp_obj.isModifyBcFcsj(aBcOfGroup[1], 1, _paramObj)) {  
1838 - aBcOfGroup[1]._$_fcsjObj.add(1, "m");  
1839 - aBcOfGroup[1].setArrTimeObj(_paramObj.addMinute(  
1840 - aBcOfGroup[1].getFcTimeObj(),  
1841 - _paramObj.calcuTravelTime(  
1842 - aBcOfGroup[1].getFcTimeObj(),  
1843 - aBcOfGroup[1].isUp())  
1844 - ));  
1845 - }  
1846 - }  
1847 - }  
1848 -  
1849 - //if (Math.abs(aBcIntervalOfGroup[0] - aBcIntervalOfGroup[1]) <= 1) {  
1850 - // //continue;  
1851 - //} else if (aBcIntervalOfGroup[0] > aBcIntervalOfGroup[1]) {  
1852 - // aBcOfGroup[1].addMinuteToFcsj(-1);  
1853 - //} else {  
1854 - // aBcOfGroup[1].addMinuteToFcsj(1);  
1855 - //}  
1856 -  
1857 -  
1858 - }  
1859 -  
1860 - this.fnAdjustBcInterval(isUp, oStartTime, fre - 1);  
1861 - } 1738 + fnAdjustBcInterval: function(oStartTime) {
  1739 + // 获取上行班次列表
  1740 + var aUpBc = !oStartTime ? _fnGetBcList(true) : _fnGetBcList2(true, oStartTime); // 指定方向的班次列表
  1741 + var aDownBc = !oStartTime ? _fnGetBcList(false) : _fnGetBcList2(false, oStartTime); // 指定方向的班次列表
  1742 + // 使用策略类调用指定策略函数,注意 AdjustTripStrategy.js 导入
  1743 + AdjustTripStrategy.sFn("ADJUST_TRIP")(aUpBc, aDownBc, this, _paramObj);
1862 1744
1863 }, 1745 },
1864 1746
src/main/resources/static/pages/base/timesmodel/js/v2/main_v2.js
@@ -540,6 +540,7 @@ var Main_v2 = function() { @@ -540,6 +540,7 @@ var Main_v2 = function() {
540 z == 1 ? j + 1 : j, 540 z == 1 ? j + 1 : j,
541 z == 1 ? 0 : 1); 541 z == 1 ? 0 : 1);
542 542
  543 + oInternalBc_temp._$_isRealEat = true;
543 oInternalBc_temp._$_fcsj_desc = "(吃" + oInternalBc_temp.getFcTimeObj().format("HH:mm") + ")"; 544 oInternalBc_temp._$_fcsj_desc = "(吃" + oInternalBc_temp.getFcTimeObj().format("HH:mm") + ")";
544 } 545 }
545 546
@@ -555,7 +556,9 @@ var Main_v2 = function() { @@ -555,7 +556,9 @@ var Main_v2 = function() {
555 "isUp": oInternalBc._$_isUp, // 是否上行 556 "isUp": oInternalBc._$_isUp, // 是否上行
556 557
557 "bcType": oInternalBc._$_bcType, // 班次类型 558 "bcType": oInternalBc._$_bcType, // 班次类型
558 - "fcsj": oInternalBc._$_fcsjObj.format("HH:mm"), // 发车时间描述 559 + "fcsj": oInternalBc._$_isRealEat ?
  560 + ("*" + oInternalBc._$_fcsjObj.format("HH:mm")) :
  561 + oInternalBc._$_fcsjObj.format("HH:mm"), // 发车时间描述
559 "fcsjDesc" : oInternalBc._$_fcsj_desc || oInternalBc._$_fcsjObj.format("HH:mm"), 562 "fcsjDesc" : oInternalBc._$_fcsj_desc || oInternalBc._$_fcsjObj.format("HH:mm"),
560 563
561 "groupNo": j, // 第几圈 564 "groupNo": j, // 第几圈
@@ -791,24 +794,18 @@ var Main_v2 = function() { @@ -791,24 +794,18 @@ var Main_v2 = function() {
791 // 8、调整路牌班次间隔(使用平均停站时间) 794 // 8、调整路牌班次间隔(使用平均停站时间)
792 schedule.fnAdjustLpBcInterval(1); 795 schedule.fnAdjustLpBcInterval(1);
793 796
794 - // TODO:9、调整纵向班次间隔  
795 - schedule.fnAdjustBcInterval(true, false, 5);  
796 - schedule.fnAdjustBcInterval(false, false, 5);  
797 -  
798 - schedule.fnAdjustLpBcInterval(1);  
799 -  
800 - schedule.fnAdjustBcInterval(true, false, 5);  
801 - schedule.fnAdjustBcInterval(false, false, 5); 797 + // 9、调整纵向班次间隔
  798 + schedule.fnAdjustBcInterval(false);
802 799
803 // 10、确定末班车 800 // 10、确定末班车
804 schedule.fnCalcuLastBc(); 801 schedule.fnCalcuLastBc();
805 802
806 // 11、祛除上标线结尾有删除标记的班次 803 // 11、祛除上标线结尾有删除标记的班次
807 schedule.fnRemoveDelLastFlagBc(); 804 schedule.fnRemoveDelLastFlagBc();
808 - //  
809 - // // // TODO:12、平均化指定时间后的班次列表间隔  
810 - // // schedule.fnAdjustBcInterval2_avg(true, _paramObj.toTimeObj("19:50"));  
811 - // // schedule.fnAdjustBcInterval2_avg(false, _paramObj.toTimeObj("19:50")); 805 +
  806 + // TODO:12、平均化指定时间后的班次列表间隔
  807 + // schedule.fnAdjustBcInterval2_avg(true, _paramObj.toTimeObj("19:50"));
  808 + // schedule.fnAdjustBcInterval2_avg(false, _paramObj.toTimeObj("19:50"));
812 809
813 // 10、补进出场例保班次 810 // 10、补进出场例保班次
814 schedule.fnCalcuOtherBc(); 811 schedule.fnCalcuOtherBc();