Commit f5b73c76fc9538d2ada21420a93e29ceec08244b

Authored by ljq
1 parent 5da44207

智能排班的优化、自动调度里面与司售通对接的烂班、路牌对调等

Showing 27 changed files with 1096 additions and 175 deletions
src/main/java/com/bsth/controller/zndd/ZnddLbController.java 0 → 100644
  1 +package com.bsth.controller.zndd;
  2 +
  3 +import com.bsth.controller.BaseController;
  4 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  5 +import com.bsth.entity.zndd.ZnddLb;
  6 +import com.bsth.service.zndd.ZnddLbService;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.web.bind.annotation.RequestMapping;
  9 +import org.springframework.web.bind.annotation.RequestParam;
  10 +import org.springframework.web.bind.annotation.RestController;
  11 +
  12 +import java.util.Map;
  13 +
  14 +@RestController
  15 +@RequestMapping("znnd_lb")
  16 +public class ZnddLbController extends BaseController<ZnddLb, Integer> {
  17 +
  18 + @Autowired
  19 + ZnddLbService znddLbService;
  20 + //线路--车辆
  21 +
  22 + @RequestMapping("lineCar")
  23 + public ScheduleRealInfo queryLineCar(@RequestParam Map m){
  24 + return znddLbService.queryLineCar(m);
  25 +
  26 + }
  27 + //批量撤销烂班
  28 + @RequestMapping("cxlb")
  29 + public Map cxlb(@RequestParam Map m){
  30 + return znddLbService.cxlb(m);
  31 +
  32 + }
  33 +}
src/main/java/com/bsth/entity/zndd/ZnddLb.java 0 → 100644
  1 +package com.bsth.entity.zndd;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
  4 +
  5 +import javax.persistence.Entity;
  6 +import javax.persistence.Id;
  7 +import javax.persistence.Table;
  8 +import java.util.Date;
  9 +
  10 +@Entity
  11 +@Table(name = "zndd_lb") //智能调度记录查询表
  12 +@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"})
  13 +public class ZnddLb {
  14 +
  15 +
  16 + @Id
  17 + private Long id;
  18 +
  19 + private String lineCode;
  20 +
  21 + private String lineName;
  22 +
  23 + //车辆自编号
  24 + private String clZbh;
  25 +
  26 + //驾驶员工号
  27 + private String jGh;
  28 + //请假类型
  29 + private String qjType;
  30 + //请假日期
  31 + private String rqStr;
  32 + //请假状态
  33 + private String status;
  34 + //日期
  35 + private String rq;
  36 +
  37 +
  38 + public String getRq() {
  39 + return rq;
  40 + }
  41 +
  42 + public void setRq(String rq) {
  43 + this.rq = rq;
  44 + }
  45 +
  46 + public String getLineCode() {
  47 + return lineCode;
  48 + }
  49 +
  50 + public void setLineCode(String lineCode) {
  51 + this.lineCode = lineCode;
  52 + }
  53 +
  54 + public String getLineName() {
  55 + return lineName;
  56 + }
  57 +
  58 + public void setLineName(String lineName) {
  59 + this.lineName = lineName;
  60 + }
  61 +
  62 + public String getClZbh() {
  63 + return clZbh;
  64 + }
  65 +
  66 + public void setClZbh(String clZbh) {
  67 + this.clZbh = clZbh;
  68 + }
  69 +
  70 + public String getjGh() {
  71 + return jGh;
  72 + }
  73 +
  74 + public void setjGh(String jGh) {
  75 + this.jGh = jGh;
  76 + }
  77 +
  78 + public String getQjType() {
  79 + return qjType;
  80 + }
  81 +
  82 + public void setQjType(String qjType) {
  83 + this.qjType = qjType;
  84 + }
  85 +
  86 + public String getRqStr() {
  87 + return rqStr;
  88 + }
  89 +
  90 + public void setRqStr(String rqStr) {
  91 + this.rqStr = rqStr;
  92 + }
  93 +
  94 + public String getStatus() {
  95 + return status;
  96 + }
  97 +
  98 + public void setStatus(String status) {
  99 + this.status = status;
  100 + }
  101 +
  102 + public void setId(Long id) {
  103 + this.id = id;
  104 + }
  105 +
  106 + public Long getId() {
  107 + return id;
  108 + }
  109 +}
src/main/java/com/bsth/repository/zndd/ZnddLbRepository.java 0 → 100644
  1 +package com.bsth.repository.zndd;
  2 +
  3 +import com.bsth.entity.zndd.ZnddLb;
  4 +import com.bsth.repository.BaseRepository;
  5 +import org.springframework.stereotype.Repository;
  6 +
  7 +@Repository
  8 +public interface ZnddLbRepository extends BaseRepository<ZnddLb, Integer> {
  9 +}
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -1599,16 +1599,14 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1599,16 +1599,14 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1599 Long id = Long.parseLong(map.get("id")); 1599 Long id = Long.parseLong(map.get("id"));
1600 String remarks = map.get("remarks"), fcsjActual = map.get("fcsjActual"); 1600 String remarks = map.get("remarks"), fcsjActual = map.get("fcsjActual");
1601 1601
1602 - ScheduleRealInfo sch = dayOfSchedule.get(id);  
1603 -  
1604 - long time = System.currentTimeMillis();//实际时间+2分钟  
1605 - //超过待发时间 实发时间还是null的  
1606 - if (sch.getFcsjT() < time){  
1607 - return rs; 1602 + // 维修上报
  1603 + if (StringUtils.isNotBlank(map.get("reportTypes"))) {
  1604 + Map<String, Object> param = new HashMap<String, Object>();
  1605 + param.putAll(map);
  1606 + rs = repairReport(param, false);
1608 } 1607 }
1609 1608
1610 -  
1611 - 1609 + ScheduleRealInfo sch = dayOfSchedule.get(id);
1612 1610
1613 LineConfig config = lineConfigData.get(sch.getXlBm()); 1611 LineConfig config = lineConfigData.get(sch.getXlBm());
1614 //小于线路开始运营时间,则默认跨过24点 1612 //小于线路开始运营时间,则默认跨过24点
@@ -1739,7 +1737,6 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1739,7 +1737,6 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1739 ScheduleModifyLogger.cxsf(sch); 1737 ScheduleModifyLogger.cxsf(sch);
1740 1738
1741 sch.clearFcsjActual(); 1739 sch.clearFcsjActual();
1742 - sch.setRemarks(remarks);  
1743 rs.put("status", ResponseCode.SUCCESS); 1740 rs.put("status", ResponseCode.SUCCESS);
1744 1741
1745 ts.add(sch); 1742 ts.add(sch);
@@ -6835,13 +6832,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -6835,13 +6832,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
6835 rr.setRepairType(repairTypes); 6832 rr.setRepairType(repairTypes);
6836 rr.setReportType(reportTypes); 6833 rr.setReportType(reportTypes);
6837 rr.setReportDate(new Date()); 6834 rr.setReportDate(new Date());
6838 - rr.setReportState(reportState); 6835 + rr.setReportState(0);
6839 rr.setReportMode(isActive ? 1 : 0); 6836 rr.setReportMode(isActive ? 1 : 0);
6840 rr = repairReportRepository.save(rr); 6837 rr = repairReportRepository.save(rr);
6841 - dayOfSchedule.setLastestRepairReport(rr); 6838 +/* dayOfSchedule.setLastestRepairReport(rr);
6842 // 如果上报失败,放到重传队列 6839 // 如果上报失败,放到重传队列
6843 if (rr.getReportState() == -1) queue.add(rr); 6840 if (rr.getReportState() == -1) queue.add(rr);
6844 - 6841 + */
6845 return res; 6842 return res;
6846 } 6843 }
6847 6844
src/main/java/com/bsth/service/zndd/ZnddLbService.java 0 → 100644
  1 +package com.bsth.service.zndd;
  2 +
  3 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  4 +import com.bsth.entity.zndd.ZnddLb;
  5 +import com.bsth.service.BaseService;
  6 +
  7 +import java.util.Map;
  8 +
  9 +public interface ZnddLbService extends BaseService<ZnddLb, Integer> {
  10 +
  11 + ScheduleRealInfo queryLineCar(Map m);
  12 +
  13 +
  14 + Map cxlb(Map m);
  15 +}
src/main/java/com/bsth/service/zndd/impl/ZnddLbServiceImpl.java 0 → 100644
  1 +package com.bsth.service.zndd.impl;
  2 +
  3 +import com.bsth.common.ResponseCode;
  4 +import com.bsth.data.schedule.DayOfSchedule;
  5 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  6 +import com.bsth.entity.zndd.ZnddLb;
  7 +import com.bsth.service.impl.BaseServiceImpl;
  8 +import com.bsth.service.realcontrol.ScheduleRealInfoService;
  9 +import com.bsth.service.zndd.ZnddLbService;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.stereotype.Service;
  12 +
  13 +import java.util.ArrayList;
  14 +import java.util.HashMap;
  15 +import java.util.List;
  16 +import java.util.Map;
  17 +
  18 +@Service
  19 +public class ZnddLbServiceImpl extends BaseServiceImpl<ZnddLb, Integer> implements ZnddLbService {
  20 +
  21 + @Autowired
  22 + DayOfSchedule dayOfSchedule;
  23 +
  24 + @Autowired
  25 + ScheduleRealInfoService scheduleRealInfoService;
  26 + public ScheduleRealInfo queryLineCar(Map m){
  27 + String lineCode = m.get("lineCode").toString().trim();
  28 + String clZbh = m.get("clZbh").toString().trim();
  29 + List<ScheduleRealInfo> srList = dayOfSchedule.findByLineCode(lineCode);
  30 + for (ScheduleRealInfo st : srList){
  31 +
  32 + if(st.getClZbh().equals(clZbh) && st.getBcType().equals("normal")){
  33 + return st;
  34 + }
  35 + }
  36 + return null;
  37 + }
  38 +
  39 +
  40 + public Map cxlb(Map m){
  41 + Map<String, Object> rs = new HashMap<>();
  42 + String lineCode = m.get("lineCode").toString().trim();
  43 + String clZbh = m.get("clZbh").toString().trim();
  44 + List<ScheduleRealInfo> list = new ArrayList();
  45 + List<ScheduleRealInfo> srList = dayOfSchedule.findByLineCode(lineCode);
  46 + for (ScheduleRealInfo st : srList){
  47 +
  48 + if(st.getClZbh().equals(clZbh)){
  49 + Map<String, Object> remap = scheduleRealInfoService.revokeDestroy(st.getId());
  50 + //修改成功
  51 + if (remap.get("status").toString().equals("200")){
  52 + list.add(st);
  53 + }
  54 + }
  55 + }
  56 +
  57 + if (list.size() > 0){
  58 + rs.put("status", ResponseCode.SUCCESS);
  59 + rs.put("list", list);
  60 + return rs;
  61 + }
  62 +
  63 + return rs;
  64 + }
  65 +}
src/main/resources/static/pages/base/timesmodel/gantt.html
@@ -125,11 +125,11 @@ @@ -125,11 +125,11 @@
125 <i class="fa fa-close"></i>&nbsp;删除路牌 125 <i class="fa fa-close"></i>&nbsp;删除路牌
126 </a> 126 </a>
127 </li> 127 </li>
128 - <li> 128 + <!-- <li>
129 <a href="javascript:" class="tool-action balanceBc"> 129 <a href="javascript:" class="tool-action balanceBc">
130 <i class="fa fa-arrows-h"></i>&nbsp;均匀发车 130 <i class="fa fa-arrows-h"></i>&nbsp;均匀发车
131 </a> 131 </a>
132 - </li> 132 + </li>-->
133 <li> 133 <li>
134 <a href="javascript:" class="tool-action bcAdjust"> 134 <a href="javascript:" class="tool-action bcAdjust">
135 <i class="fa fa-arrows-v"></i>&nbsp;班次调整 135 <i class="fa fa-arrows-v"></i>&nbsp;班次调整
src/main/resources/static/pages/base/timesmodel/js/dateTimeTool.js
@@ -34,6 +34,20 @@ var DateTimeTool = function () { @@ -34,6 +34,20 @@ var DateTimeTool = function () {
34 } 34 }
35 return dateTime; 35 return dateTime;
36 }; 36 };
  37 +
  38 + var getDateTime2 = function(time,fcno) {
  39 + var dateTime = new Date();
  40 + if(time !=null && time !='' && typeof(time) !='undefined') {
  41 + timeArr = time.split(':');
  42 + dateTime.setHours(parseInt(timeArr[0]));
  43 + dateTime.setMinutes(parseInt(timeArr[1]));
  44 + dateTime.setSeconds(0);
  45 + // 在0-3点之间(包括0和3)的时间都默认为下一天的时间 &&fcno不是首班车
  46 + if(parseInt(timeArr[0]) <= 3 && parseInt(timeArr[0]) >= 0 && fcno > 5)
  47 + dateTime.setDate(dateTime.getDate() +1);
  48 + }
  49 + return dateTime;
  50 + };
37 /** 51 /**
38 * @discription : (TODO) 获取时间格式[00:00] 52 * @discription : (TODO) 获取时间格式[00:00]
39 * 53 *
@@ -78,6 +92,7 @@ var DateTimeTool = function () { @@ -78,6 +92,7 @@ var DateTimeTool = function () {
78 initSJD : initSJD, 92 initSJD : initSJD,
79 calculateHours : calculateHours, 93 calculateHours : calculateHours,
80 getDateTime : getDateTime, 94 getDateTime : getDateTime,
  95 + getDateTime2:getDateTime2,
81 getHHmmStr : getHHmmStr, 96 getHHmmStr : getHHmmStr,
82 judgmentTimeQuantum : judgmentTimeQuantum, 97 judgmentTimeQuantum : judgmentTimeQuantum,
83 judgmentTimeQuantum1 : judgmentTimeQuantum1 98 judgmentTimeQuantum1 : judgmentTimeQuantum1
src/main/resources/static/pages/base/timesmodel/js/echartsDrawGanTT.js
@@ -35,6 +35,8 @@ var echartsDrawGTT = function () { @@ -35,6 +35,8 @@ var echartsDrawGTT = function () {
35 bcType["major"] = '站'; 35 bcType["major"] = '站';
36 bcType["venting"] = '直'; 36 bcType["venting"] = '直';
37 bcType["region"] = '区'; 37 bcType["region"] = '区';
  38 + bcType["ldks"] = '空';
  39 +
38 40
39 // 处理后班次数据 41 // 处理后班次数据
40 var data = []; 42 var data = [];
@@ -79,8 +81,8 @@ var echartsDrawGTT = function () { @@ -79,8 +81,8 @@ var echartsDrawGTT = function () {
79 data = []; 81 data = [];
80 bcData = newData; 82 bcData = newData;
81 echarts.util.each(bcData, function (bcObj, index) { 83 echarts.util.each(bcData, function (bcObj, index) {
82 - var fcsj = Date.parse(DateTimeTool.getDateTime(bcObj.fcsj)),  
83 - ARRIVALTIME = Date.parse(DateTimeTool.getDateTime(bcObj.ARRIVALTIME)), 84 + var fcsj = Date.parse(DateTimeTool.getDateTime2(bcObj.fcsj,bcObj.fcno)),
  85 + ARRIVALTIME = Date.parse(DateTimeTool.getDateTime2(bcObj.ARRIVALTIME,bcObj.fcno)),
84 colorStr = bcObj.xlDir, 86 colorStr = bcObj.xlDir,
85 xlDir; 87 xlDir;
86 if(bcObj.xlDir == 'relationshipGraph-up') 88 if(bcObj.xlDir == 'relationshipGraph-up')
@@ -146,18 +148,45 @@ var echartsDrawGTT = function () { @@ -146,18 +148,45 @@ var echartsDrawGTT = function () {
146 for(var j = 0,len=lpData.length; j < len; j++) { 148 for(var j = 0,len=lpData.length; j < len; j++) {
147 var type = true; 149 var type = true;
148 var name = lpData[j]; 150 var name = lpData[j];
149 - for(var i = 0,len2=data.length; i < len2; i++) {  
150 - if(name == data[i].value[0]) {  
151 - if(type){  
152 - lpDataCount[name] = [data[i].value[3]/60000+data[i].value[15],1,data[i].value[4]];  
153 - type = false;  
154 - } else if(data[i].value[6] == 'in' || data[i].value[16] == 1){  
155 - lpDataCount[name][0] += data[i].value[3]/60000;  
156 - lpDataCount[name][1] += 1;  
157 - } else {  
158 - lpDataCount[name][0] += (data[i].value[3]/60000+data[i].value[15]);  
159 - lpDataCount[name][1] += 1;  
160 - } 151 + let _datast = [];
  152 + var dataSize = data.length;
  153 + //把当前路牌的班次摘出来 重新计算
  154 + for (var t = 0 ; t < dataSize ; t++){
  155 + if(data[t].value[0] == name) {
  156 + _datast.push({
  157 + value: data[t].value,
  158 + itemStyle: data[t].itemStyle
  159 + })
  160 + }
  161 + }
  162 + //根据发车时间排序
  163 + _datast.sort(function(a,b){
  164 + return a.value[1]-b.value[1];
  165 + });
  166 + //计算停站时间
  167 + for(var i = 0; i < _datast.length -1; i++) {
  168 + //最后一个为0
  169 + if (i ==_datast.length -1){
  170 + _datast[i].value[15] = 0;
  171 + continue;
  172 + }
  173 + //出场班次空闲班次不算工时
  174 + if(_datast[i].value[6] == 'in' || _datast[i].value[16] == 1) {
  175 + _datast[i].value[15] = 0;
  176 + continue;
  177 + }
  178 + //同一路牌下的下一个班次的发车时间 - 本班次的到站时间 = 停车时间
  179 + _datast[i].value[15] = (_datast[i+1].value[1] - _datast[i].value[2])/60000;
  180 + }
  181 + //统计计算总计工时。
  182 + for (let n in _datast){
  183 + let das = _datast[n];
  184 + if(type){
  185 + lpDataCount[name] = [das.value[3]/60000+das.value[15],1,das.value[4]];
  186 + type = false;
  187 + } else {
  188 + lpDataCount[name][0] += (das.value[3]/60000+das.value[15]);
  189 + lpDataCount[name][1] += 1;
161 } 190 }
162 } 191 }
163 } 192 }
@@ -204,7 +233,7 @@ var echartsDrawGTT = function () { @@ -204,7 +233,7 @@ var echartsDrawGTT = function () {
204 +'<br>发车时间:' + getHoursAndMinutes(params.value[1]) 233 +'<br>发车时间:' + getHoursAndMinutes(params.value[1])
205 +'<br>到站时间:' + getHoursAndMinutes(params.value[2]) 234 +'<br>到站时间:' + getHoursAndMinutes(params.value[2])
206 +'<br>行驶时间:' + params.value[3]/60000 +'分钟' 235 +'<br>行驶时间:' + params.value[3]/60000 +'分钟'
207 - +'<br>停休时间:' + params.value[15] +'分钟' 236 + +'<br>停休时间:' + Math.round(params.value[15]) +'分钟'
208 +'<br>班次类型:' + bcTypeStr ; 237 +'<br>班次类型:' + bcTypeStr ;
209 return str; 238 return str;
210 } 239 }
@@ -240,10 +269,10 @@ var echartsDrawGTT = function () { @@ -240,10 +269,10 @@ var echartsDrawGTT = function () {
240 axisLabel:{ 269 axisLabel:{
241 formatter: function (value, index) { 270 formatter: function (value, index) {
242 var texts = [ 271 var texts = [
243 - value ,  
244 - '{yAxisLeft|总工时:'+(lpDataCount[value][0]==0 ? 0:(lpDataCount[value][0]/60).toFixed(2)) + '}',  
245 - '{yAxisLeft|总班次:'+lpDataCount[value][1] + '}'  
246 - ]; 272 + value ,
  273 + '{yAxisLeft|总工时:'+(lpDataCount[value][0]==0 ? 0:(lpDataCount[value][0]/60).toFixed(2)) + '}',
  274 + '{yAxisLeft|总班次:'+lpDataCount[value][1] + '}'
  275 + ];
247 return texts.join('\n'); 276 return texts.join('\n');
248 }, 277 },
249 rich: { 278 rich: {
@@ -321,7 +350,7 @@ var echartsDrawGTT = function () { @@ -321,7 +350,7 @@ var echartsDrawGTT = function () {
321 // 除了早晚例保,和进出场班次其余类型班次有停站时间 350 // 除了早晚例保,和进出场班次其余类型班次有停站时间
322 if(type!='bd' && type!='lc' && type!='out' && type!='in') { 351 if(type!='bd' && type!='lc' && type!='out' && type!='in') {
323 //if(params.data.value[15]>=0) 352 //if(params.data.value[15]>=0)
324 - stayStr = "停:" + params.data.value[15]; 353 + stayStr = "停: " + params.data.value[15];
325 } 354 }
326 // 分班显示‘分’ 355 // 分班显示‘分’
327 if(params.data.value[16] == 1) 356 if(params.data.value[16] == 1)
@@ -609,7 +638,7 @@ var echartsDrawGTT = function () { @@ -609,7 +638,7 @@ var echartsDrawGTT = function () {
609 bcTypeStr = bcType[type]; 638 bcTypeStr = bcType[type];
610 639
611 if(type == 'normal') { 640 if(type == 'normal') {
612 - stayStr = "停:" + params.data.value[15]; 641 + stayStr = "停:" + Math.round(params.data.value[15]);
613 } 642 }
614 var arr = [ 643 var arr = [
615 '{left|' + timeStr + '}{type|'+ ((dataZoomEnd - dataZoomStart) <= 70 ? bcType[type] : '') +'}', 644 '{left|' + timeStr + '}{type|'+ ((dataZoomEnd - dataZoomStart) <= 70 ? bcType[type] : '') +'}',
@@ -664,22 +693,55 @@ var echartsDrawGTT = function () { @@ -664,22 +693,55 @@ var echartsDrawGTT = function () {
664 var p2 = [item.value[2],item.value[0]]; 693 var p2 = [item.value[2],item.value[0]];
665 var pp= chart.convertToPixel({xAxisIndex: 0, yAxisIndex:0},p); 694 var pp= chart.convertToPixel({xAxisIndex: 0, yAxisIndex:0},p);
666 var pp2= chart.convertToPixel({xAxisIndex: 0, yAxisIndex:0},p2); 695 var pp2= chart.convertToPixel({xAxisIndex: 0, yAxisIndex:0},p2);
667 - 696 + let _datast = [];
668 var dataSize = data.length; 697 var dataSize = data.length;
669 - if(dataIndex<dataSize-1) {  
670 - for(var i=0;i<dataSize;i++) {  
671 - if(i==dataIndex)  
672 - continue;  
673 - if(data[dataIndex].value[6] == 'in' || data[dataIndex].value[16] == 1) {  
674 - data[dataIndex].value[15] = 0;  
675 - break;  
676 - }  
677 - if(data[dataIndex].value[4] == data[i].value[4] && data[dataIndex].value[7] == (data[i].value[7]-1)) {//同一路牌下的下一个班次的发车时间 - 本班次的到站时间 = 停车时间  
678 - data[dataIndex].value[15] = (data[dataIndex+1].value[1] - data[dataIndex].value[2])/60000;  
679 - break;  
680 - } 698 + //把当前路牌的班次摘出来 重新计算
  699 + for (var t = 0 ; t < dataSize ; t++){
  700 + if(data[t].value[0] == item.value[0]) {
  701 + _datast.push({
  702 + value: data[t].value,
  703 + itemStyle: data[t].itemStyle
  704 + })
681 } 705 }
682 } 706 }
  707 +
  708 + //根据发车时间排序
  709 + _datast.sort(function(a,b){
  710 + return a.value[1]-b.value[1];
  711 + });
  712 +
  713 + for(var i = 0; i < _datast.length -1; i++) {
  714 + //最后一个为0
  715 + if (i ==_datast.length -1){
  716 + _datast[i].value[15] = 0;
  717 + continue;
  718 + }
  719 + if(_datast[i].value[6] == 'in' || _datast[i].value[16] == 1) {
  720 + _datast[i].value[15] = 0;
  721 + continue
  722 + }
  723 + //同一路牌下的下一个班次的发车时间 - 本班次的到站时间 = 停车时间
  724 + _datast[i].value[15] = (_datast[i+1].value[1] - _datast[i].value[2])/60000;
  725 + }
  726 +
  727 +
  728 +
  729 + // rsultA = rsultA.concat(lpbc);
  730 + /* if(dataIndex<dataSize-1) { //点击阴影班次的总工时变化的罪魁祸首
  731 + for(var i=0;i<dataSize;i++) {
  732 + if(i==dataIndex)
  733 + continue;
  734 + if(data[dataIndex].value[6] == 'in' || data[dataIndex].value[16] == 1) {
  735 + data[dataIndex].value[15] = 0;
  736 + break;
  737 + }
  738 + //同一路牌下的下一个班次的发车时间 - 本班次的到站时间 = 停车时间
  739 + if(data[dataIndex].value[4] == data[i].value[4] && data[dataIndex].value[7] == (data[i].value[7]-1)) {
  740 + data[dataIndex].value[15] = (data[dataIndex+1].value[1] - data[dataIndex].value[2])/60000;
  741 + break;
  742 + }
  743 + }
  744 + }*/
683 return { 745 return {
684 type: 'rect', 746 type: 'rect',
685 borderWidth: 4, 747 borderWidth: 4,
@@ -707,7 +769,7 @@ var echartsDrawGTT = function () { @@ -707,7 +769,7 @@ var echartsDrawGTT = function () {
707 }) 769 })
708 }); 770 });
709 }; 771 };
710 - // 刷新上下行发车时刻表数据 772 + // 刷新上下行发车时刻表数据 正常和区间的
711 var refreshUpDownData = function () { 773 var refreshUpDownData = function () {
712 // 清空数据 774 // 清空数据
713 dataUp=[]; 775 dataUp=[];
@@ -717,7 +779,7 @@ var echartsDrawGTT = function () { @@ -717,7 +779,7 @@ var echartsDrawGTT = function () {
717 for(var i = 0,len=data.length; i < len; i++) { 779 for(var i = 0,len=data.length; i < len; i++) {
718 var type = []; 780 var type = [];
719 type = $.extend(true, [], type, data[i].value); 781 type = $.extend(true, [], type, data[i].value);
720 - if(data[i].value[6] == 'normal') { 782 + if(data[i].value[6] == 'normal' || data[i].value[6] == 'region') {
721 if (data[i].value[8] == 0) { 783 if (data[i].value[8] == 0) {
722 dataUp.push(type); 784 dataUp.push(type);
723 } else if (data[i].value[8] == 1) { 785 } else if (data[i].value[8] == 1) {
src/main/resources/static/pages/base/timesmodel/js/gantt.js
@@ -62,7 +62,6 @@ @@ -62,7 +62,6 @@
62 62
63 // 创建ParameterObj 63 // 创建ParameterObj
64 var _paramObj; 64 var _paramObj;
65 -debugger;  
66 if(map.baseRes== '0') { 65 if(map.baseRes== '0') {
67 CSMap = getMaxCarAndStopSpace0(map,seMap); 66 CSMap = getMaxCarAndStopSpace0(map,seMap);
68 // 发车间隙 67 // 发车间隙
@@ -71,19 +70,21 @@ debugger; @@ -71,19 +70,21 @@ debugger;
71 _paramObj = Main_v2.getFactory().createParameterObj(map, dataMap); 70 _paramObj = Main_v2.getFactory().createParameterObj(map, dataMap);
72 }else if(map.baseRes== '1') { 71 }else if(map.baseRes== '1') {
73 CSMap = getMaxCarAndStopSpace1(map); 72 CSMap = getMaxCarAndStopSpace1(map);
74 - // 发车间隙  
75 - map.fcjx = CSMap.fcjx; 73 + // 发车间隙
  74 + map.fcjx = CSMap.fcjx;
  75 + map.stt = "1";
  76 + _paramObj = Main_v2.getFactory().createParameterObj(map, dataMap);
76 }else if (map.baseRes == '2') { 77 }else if (map.baseRes == '2') {
77 - // TODO:之后可能有新的参数加入  
78 - _paramObj = Main_v2.getFactory().createParameterObj(map, dataMap);  
79 - map.clzs = _paramObj.calcuClzx();  
80 - CSMap = getMaxCarAndStopSpace1(map);  
81 - } else if (map.baseRes == '3') { // 主站停站使用v2_2版本  
82 - _paramObj = Main_v2.getFactory().createParameterObj(map, dataMap); // TODO:暂时使用v2_1版本的方法,通用的,后续再放到v2_2版本中  
83 - console.log(_paramObj);  
84 - map.clzs = InternalScheduleObj_v2_2.calcuClzx(_paramObj);  
85 - CSMap = getMaxCarAndStopSpace1(map);  
86 - } 78 + // TODO:之后可能有新的参数加入
  79 + _paramObj = Main_v2.getFactory().createParameterObj(map, dataMap);
  80 + map.clzs = _paramObj.calcuClzx();
  81 + CSMap = getMaxCarAndStopSpace1(map);
  82 + } else if (map.baseRes == '3') { // 主站停站使用v2_2版本
  83 + _paramObj = Main_v2.getFactory().createParameterObj(map, dataMap); // TODO:暂时使用v2_1版本的方法,通用的,后续再放到v2_2版本中
  84 + console.log(_paramObj);
  85 + map.clzs = InternalScheduleObj_v2_2.calcuClzx(_paramObj);
  86 + CSMap = getMaxCarAndStopSpace1(map);
  87 + }
87 88
88 // 定义时间参数. 89 // 定义时间参数.
89 var stopArray = getsj(map); 90 var stopArray = getsj(map);
@@ -93,20 +94,20 @@ debugger; @@ -93,20 +94,20 @@ debugger;
93 data = BaseFun.KLplaceClassesTime(CSMap.gattA,stopArray,CSMap.maxCar,map,seMap,dataMap); 94 data = BaseFun.KLplaceClassesTime(CSMap.gattA,stopArray,CSMap.maxCar,map,seMap,dataMap);
94 }else if(map.baseRes== '1') { 95 }else if(map.baseRes== '1') {
95 // 采用班型人次数据获取渲染时刻表明细图形的配置参数数据. 96 // 采用班型人次数据获取渲染时刻表明细图形的配置参数数据.
96 - // data = BaseFun.BXPplaceClassesTime(stopArray,CSMap.maxCar,map,seMap,dataMap,getylp(CSMap.maxCar).lpNoA);  
97 - // data = BaseFun.BXPplaceClassesTime01(stopArray,CSMap.maxCar,map,seMap,dataMap,getylp(CSMap.maxCar).lpNoA);  
98 - // data = BaseFun.BXPplaceClassesTime02(stopArray,CSMap.maxCar,map,seMap,dataMap);  
99 - data = scheduleInitialize.scheduleInit(stopArray,CSMap.maxCar,map,seMap,dataMap);  
100 - $(".paramAdd").addClass("hidden");  
101 - } else if (map.baseRes == '2') {  
102 - // TODO:绘制gantt图表  
103 - // TODO:var seDate = getksjssj(null,seMap.s); 关联参数必须设置  
104 - // TODO:CSMap.maxCar 之后要设定一下的  
105 - data = Main_v2.BXPplaceClassesTime03(_paramObj, CSMap.maxCar);  
106 - Main_v2.exportDataConfig(data.aInternalLpObj);  
107 - } else if (map.baseRes == '3') { // 主站停站使用v2_2版本  
108 - data = Main_v2_2.BXPplaceClassesTime03(_paramObj, CSMap.maxCar);  
109 - } 97 + // data = BaseFun.BXPplaceClassesTime(stopArray,CSMap.maxCar,map,seMap,dataMap,getylp(CSMap.maxCar).lpNoA);
  98 + // data = BaseFun.BXPplaceClassesTime01(stopArray,CSMap.maxCar,map,seMap,dataMap,getylp(CSMap.maxCar).lpNoA);
  99 + // data = BaseFun.BXPplaceClassesTime02(stopArray,CSMap.maxCar,map,seMap,dataMap);
  100 + data = scheduleInitialize.scheduleInit(stopArray,CSMap.maxCar,map,seMap,dataMap);
  101 + $(".paramAdd").addClass("hidden");
  102 + } else if (map.baseRes == '2') {
  103 + // TODO:绘制gantt图表
  104 + // TODO:var seDate = getksjssj(null,seMap.s); 关联参数必须设置
  105 + // TODO:CSMap.maxCar 之后要设定一下的
  106 + data = Main_v2.BXPplaceClassesTime03(_paramObj, CSMap.maxCar);
  107 + Main_v2.exportDataConfig(data.aInternalLpObj);
  108 + } else if (map.baseRes == '3') { // 主站停站使用v2_2版本
  109 + data = Main_v2_2.BXPplaceClassesTime03(_paramObj, CSMap.maxCar);
  110 + }
110 111
111 }else { 112 }else {
112 var jsonA = JSON.parse(objD); 113 var jsonA = JSON.parse(objD);
@@ -130,23 +131,23 @@ debugger; @@ -130,23 +131,23 @@ debugger;
130 } 131 }
131 // 按照发车序号顺序排序. 132 // 按照发车序号顺序排序.
132 lpbc_.sort(function(a,b){return a.fcno-b.fcno}); 133 lpbc_.sort(function(a,b){return a.fcno-b.fcno});
133 - resultJA = resultJA.concat(BaseFun.addjclbbc01(lpbc_,dataMap,stopArray[0].lbsj,map)); 134 + resultJA = resultJA.concat(BaseFun.addjclbbc01(lpbc_,dataMap,stopArray[0].lbsj,map));
134 } 135 }
135 data = {'json':rsjar,'bxrcgs':null}; 136 data = {'json':rsjar,'bxrcgs':null};
136 } 137 }
137 - debugger;  
138 - echartsDrawGTT.init(data.json,true,true); 138 + echartsDrawGTT.init(data.json,true,true);
139 // console.log(data.json); 139 // console.log(data.json);
140 - // 创建甘特图对象.  
141 - // var graph = d3.select('#ganttSvg').relationshipGraph(  
142 - // getGraphArgus({'ganttInitParams': map,'yAxisCarArray':CSMap.maxCar,  
143 - // 'startDateTime':seDate.kssj,'endDateTime':seDate.jssj,'stopArray':stopArray,'dataMap':dataMap,'bxrcgs':data.bxrcgs}));  
144 - // // 渲染数据.  
145 - // graph.data(data.json);  
146 - // // 记录操作记录.  
147 - // graph.addHistory();  
148 - // // 初始化右键菜单.  
149 - // contextInit(graph); 140 + // 创建甘特图对象.
  141 + // var graph = d3.select('#ganttSvg').relationshipGraph(
  142 + // getGraphArgus({'ganttInitParams': map,'yAxisCarArray':CSMap.maxCar,
  143 + // 'startDateTime':seDate.kssj,'endDateTime':seDate.jssj,'stopArray':stopArray,'dataMap':dataMap,'bxrcgs':data.bxrcgs}));
  144 + // // 渲染数据.
  145 + // graph.data(data.json);
  146 + // // 记录操作记录.
  147 + // graph.addHistory();
  148 + // // 初始化右键菜单.
  149 + // contextInit(graph);
  150 +
150 151
151 if (map.baseRes == '3' || map.baseRes == '1' || map.baseRes == '0') { 152 if (map.baseRes == '3' || map.baseRes == '1' || map.baseRes == '0') {
152 // 导入导出设置 153 // 导入导出设置
@@ -186,13 +187,14 @@ debugger; @@ -186,13 +187,14 @@ debugger;
186 }); 187 });
187 } 188 }
188 189
189 - console.log("重组前数据=" + _data);  
190 - console.log("重组后数据=" + _rtnBcArray);  
191 - return _rtnBcArray;  
192 - };  
193 -  
194 - Main_v2_2.exportExcelConfig(_paramObj, _dfun);  
195 - } 190 + console.log("重组前数据=" + _data);
  191 + console.log("重组后数据=" + _rtnBcArray);
  192 + return _rtnBcArray;
  193 + };
  194 + if (_paramObj == null)
  195 + return
  196 + Main_v2_2.exportExcelConfig(_paramObj, _dfun);
  197 + }
196 198
197 // 关闭弹出层 199 // 关闭弹出层
198 layer.close(indexLoad); 200 layer.close(indexLoad);
src/main/resources/static/pages/base/timesmodel/js/systemTools.js
@@ -66,10 +66,10 @@ $(&#39;.deleteLp&#39;).on(&#39;click&#39;,function() { @@ -66,10 +66,10 @@ $(&#39;.deleteLp&#39;).on(&#39;click&#39;,function() {
66 $('#deletelp_mobal').trigger('deletelpMobal.show',[lpData,echartsDrawGTT]); 66 $('#deletelp_mobal').trigger('deletelpMobal.show',[lpData,echartsDrawGTT]);
67 }); 67 });
68 }); 68 });
69 -/** 监听均匀发车事件.(点击) **/ 69 +/** 监听均匀发车事件.(点击) *
70 $('.balanceBc').on('click',function() { 70 $('.balanceBc').on('click',function() {
71 layer.msg('功能暂未开放'); 71 layer.msg('功能暂未开放');
72 -}); 72 +});*/
73 /** 监听班次调整事件.(点击) **/ 73 /** 监听班次调整事件.(点击) **/
74 $('.bcAdjust').on('click',function() { 74 $('.bcAdjust').on('click',function() {
75 var lpData = echartsDrawGTT.getLpData(); 75 var lpData = echartsDrawGTT.getLpData();
src/main/resources/static/pages/base/timesmodel/js/v1/AdjustTrip.js
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 * 4、如果还有没有满足要求的班次,此时需要智能修改分班路牌头尾班次,删除,或这加入,然后再次迭代 14 * 4、如果还有没有满足要求的班次,此时需要智能修改分班路牌头尾班次,删除,或这加入,然后再次迭代
15 */ 15 */
16 var AdjustTrip = function () { 16 var AdjustTrip = function () {
17 - var departureClearanceAdjust = function (bcList, dataMap) { 17 + var departureClearanceAdjust = function (carListH,bcList, dataMap,map) {
18 var upDownbc = bcFun.getUpAndDownBc(bcList, dataMap); 18 var upDownbc = bcFun.getUpAndDownBc(bcList, dataMap);
19 19
20 // 升序排序 20 // 升序排序
@@ -52,6 +52,329 @@ var AdjustTrip = function () { @@ -52,6 +52,329 @@ var AdjustTrip = function () {
52 } 52 }
53 }; 53 };
54 54
  55 +
  56 +
  57 + var departureClearanceZDY = function (carListH,bcList, dataMap,map){
  58 + var upDownbc = bcFun.getUpAndDownBc(bcList, dataMap);
  59 + let nk = 0;
  60 + debugger
  61 + jyFCjg(upDownbc[0], dataMap, bcList, 0);
  62 +
  63 + jyFCjg(upDownbc[1], dataMap, bcList, 1);
  64 + //横向停站时间---
  65 + //tzsjT(carListH, bcList);
  66 + //竖向判断
  67 + //jyFCjgX(upDownbc[0], dataMap, bcList, 0, nk);
  68 + //jyFCjgX(upDownbc[1], dataMap, bcList, 1, nk);
  69 + //jyFCjgY(upDownbc[0], dataMap, bcList, 0, nk);
  70 +
  71 + //横向停站时间
  72 + tzsj(carListH, bcList);
  73 + // 第三步 剔除营运时间外的班次
  74 + bcList = bcFun.markFirstAndLastBusAlsoDietNotInRangeBc(bcList, dataMap,carListH);
  75 +
  76 + }
  77 + /**
  78 + * 均匀发车间隔时间 高峰时间为低谷时间的2/3
  79 + * @param upDownbc
  80 + * @param bcList
  81 + * @param dataMap
  82 + */
  83 + var departFcjg = function (carListH,upDownbc, bcList, dataMap){
  84 + //排序
  85 + upDownbc.sort(function(a,b){return DateTimeTool.getDateTime(a.fcsj)-DateTimeTool.getDateTime(b.fcsj)});
  86 + //算出总工时
  87 + let zgs = DateTimeTool.getDateTime(upDownbc[upDownbc.length - 1].fcsj ) - DateTimeTool.getDateTime(upDownbc[0].fcsj);
  88 + //平均发车间隙 毫秒
  89 + let fcjx = (zgs / (upDownbc.length - 1)) - upDownbc[0].bcsj;
  90 + let k = carListH.length;
  91 + let k1 = 0;
  92 + //根据时间重新分配路牌
  93 + for (let i = 0 ; i < upDownbc.length; i++){
  94 + if (k1 == k)
  95 + k1 = 0;
  96 + upDownbc[i].parent = carListH[k1].parent;
  97 + upDownbc[i].lpNo = carListH[k1].lpNo;
  98 + upDownbc[i].lpName = carListH[k1].lpName;
  99 + upDownbc[i].lpType = carListH[k1].lpType;
  100 + upDownbc[i].parent = carListH[k1].lpNo;
  101 + k1 ++;
  102 + }
  103 +
  104 + for (let i = 0 ; i < upDownbc.length -1; i++){
  105 + //修改发车时间
  106 + upDownbc[i + 1].fcsj = DateTimeTool.getHHmmStr(DateTimeTool.getDateTime(upDownbc[i].fcsj).getTime() + fcjx);
  107 + //修改到站时间
  108 + upDownbc[i + 1].ARRIVALTIME = DateTimeTool.getHHmmStr(DateTimeTool.getDateTime(upDownbc[i+1].fcsj).getTime() + upDownbc[i+1].bcsj * 60000 );
  109 +
  110 + }
  111 + }
  112 +
  113 + //平均分配班次
  114 + var jyFCjgX =function (upDownbc, dataMap,bcList,dir){
  115 +
  116 + //排序
  117 + upDownbc.sort(function(a,b){return DateTimeTool.getDateTime(a.fcsj)-DateTimeTool.getDateTime(b.fcsj)});
  118 + //早高峰
  119 + let zgfsjd = dataMap.zgfsjd;
  120 + //晚高峰
  121 + let wgfsjd = dataMap.wgfsjd
  122 + for (let i = 0 ; i < upDownbc.length -1; i++){
  123 + /* //算出后一个班次 同一路牌下 横向发车间隔
  124 + var bc = getLpPrevAndNextBc(bcList, upDownbc[i]),
  125 + nextBc = bc[1];*/
  126 +
  127 + let fcsj = DateTimeTool.getDateTime(upDownbc[i].fcsj);
  128 + let fcsj1 = DateTimeTool.getDateTime(upDownbc[i + 1].fcsj);
  129 + // 获取发车间隙:用发车时间判断
  130 + let fcjxc = dataMap.fcjx[DateTimeTool.judgmentTimeQuantum(DateTimeTool.getDateTime(upDownbc[i + 1].fcsj))];
  131 + let fcjx = fcjxc.max * 60 *1000;
  132 + //早晚高峰
  133 + if (zgfsjd[0].st.getTime() < fcsj && zgfsjd[0].ed.getTime() > fcsj){
  134 + //修改发车时间
  135 + upDownbc[i+1].fcsj = DateTimeTool.getHHmmStr( fcsj.getTime()+ fcjx);
  136 + upDownbc[i].ARRIVALTIME = DateTimeTool.getHHmmStr(DateTimeTool.getDateTime(upDownbc[i].fcsj).getTime() + upDownbc[i].bcsj * 60000);
  137 + continue
  138 +
  139 + //晚高峰
  140 + } else if (wgfsjd[0].st.getTime() < fcsj && wgfsjd[0].ed.getTime() > fcsj){
  141 + //修改发车时间
  142 + upDownbc[i+1].fcsj = DateTimeTool.getHHmmStr( fcsj.getTime()+ fcjx);
  143 + upDownbc[i].ARRIVALTIME = DateTimeTool.getHHmmStr(DateTimeTool.getDateTime(upDownbc[i].fcsj).getTime() + upDownbc[i].bcsj * 60000);
  144 + continue
  145 + //平时
  146 + }else{
  147 + upDownbc[i+1].fcsj = DateTimeTool.getHHmmStr( fcsj.getTime()+ fcjx);
  148 + upDownbc[i].ARRIVALTIME = DateTimeTool.getHHmmStr(DateTimeTool.getDateTime(upDownbc[i].fcsj).getTime() + upDownbc[i].bcsj * 60000);
  149 + continue
  150 + }
  151 +
  152 +
  153 + }
  154 +
  155 + }
  156 +
  157 + var jyFCjg =function (upDownbc, dataMap,bcList,dir){
  158 + //排序
  159 + upDownbc.sort(function(a,b){return DateTimeTool.getDateTime(a.fcsj)-DateTimeTool.getDateTime(b.fcsj)});
  160 + for (let i = 0 ; i < upDownbc.length -1; i++){
  161 + //间隔过大的时间
  162 + let zgs = DateTimeTool.getDateTime(upDownbc[i + 1].fcsj ) - DateTimeTool.getDateTime(upDownbc[i].fcsj);
  163 + // 获取发车间隙:用发车时间判断
  164 + var fcjxx = dataMap.fcjx[DateTimeTool.judgmentTimeQuantum(DateTimeTool.getDateTime(upDownbc[i].fcsj))];
  165 +
  166 + //最大间隔时间
  167 + if (zgs > (fcjxx.max * 60000)){
  168 + let fcsj = DateTimeTool.getDateTime(upDownbc[i].fcsj);
  169 + let c = upDownbc[i+1];
  170 + c.fcsj = DateTimeTool.getHHmmStr( fcsj.getTime()+ (fcjxx.max * 60000));
  171 + c.ARRIVALTIME = DateTimeTool.getHHmmStr(DateTimeTool.getDateTime(upDownbc[i].fcsj).getTime() + upDownbc[i].bcsj * 60000);
  172 + }
  173 + }
  174 + }
  175 +
  176 +
  177 + /*var jyFCjgX =function (upDownbc, dataMap,bcList,dir){
  178 + let j = 0 ; //超时次数
  179 + let k = 0; //超时时间
  180 + //排序
  181 + upDownbc.sort(function(a,b){return DateTimeTool.getDateTime(a.fcsj)-DateTimeTool.getDateTime(b.fcsj)});
  182 + for (let i = 0 ; i < upDownbc.length -1; i++){
  183 + //间隔过大的时间
  184 + let zgs = DateTimeTool.getDateTime(upDownbc[i + 1].fcsj ) - DateTimeTool.getDateTime(upDownbc[i].fcsj);
  185 + // 获取发车间隙:用发车时间判断
  186 + var fcjxx = dataMap.fcjx[DateTimeTool.judgmentTimeQuantum(DateTimeTool.getDateTime(upDownbc[i].fcsj))];
  187 +
  188 + //最大间隔时间
  189 + if (zgs > (fcjxx.max * 60000)){
  190 + j ++ ;
  191 + k = k + zgs;
  192 + }
  193 + }
  194 +
  195 + //算出总工时
  196 + let zgs = DateTimeTool.getDateTime(dataMap.smbcsjArr[dir].jssj) - DateTimeTool.getDateTime(dataMap.smbcsjArr[dir].kssj);
  197 + //平均发车间隙 毫秒
  198 + let fcjx = Math.floor(zgs / (upDownbc.length - 1)) - upDownbc[0].bcsj;
  199 + let l = k / (upDownbc.length - j - 1)
  200 +
  201 + //早高峰
  202 + let zgfsjd = dataMap.zgfsjd;
  203 + //晚高峰
  204 + let wgfsjd = dataMap.wgfsjd
  205 + for (let i = 0 ; i < upDownbc.length -1; i++){
  206 + //算出后一个班次 同一路牌下 横向发车间隔
  207 + var bc = getLpPrevAndNextBc(bcList, upDownbc[i]),
  208 + nextBc = bc[1];
  209 +
  210 + let fcsj = DateTimeTool.getDateTime(upDownbc[i].fcsj);
  211 + let fcsj1 = DateTimeTool.getDateTime(upDownbc[i + 1].fcsj);
  212 + // 获取发车间隙:用发车时间判断
  213 + let fcjxc = dataMap.fcjx[DateTimeTool.judgmentTimeQuantum(DateTimeTool.getDateTime(upDownbc[i + 1].fcsj))];
  214 + let fcjx = fcjxc.max * 60 *1000;
  215 + //早晚高峰
  216 + if (zgfsjd[0].st.getTime() < fcsj && zgfsjd[0].ed.getTime() > fcsj){
  217 + if ((fcsj1 - fcsj) < fcjx){
  218 + //修改发车时间
  219 + upDownbc[i+1].fcsj = DateTimeTool.getHHmmStr( fcsj1.getTime()+ c);
  220 + k = k - c;
  221 + }
  222 + //晚高峰
  223 + } else if (wgfsjd[0].st.getTime() < fcsj && wgfsjd[0].ed.getTime() > fcsj){
  224 + if ((fcsj1 - fcsj) < fcjx){
  225 + //修改发车时间
  226 + upDownbc[i+1].fcsj = DateTimeTool.getHHmmStr( fcsj1.getTime()+ c);
  227 + k = k - c;
  228 + }
  229 + //平时
  230 + }else if ((fcsj1 - fcsj) < (fcjxc.min * 60 *1000)){
  231 + upDownbc[i+1].fcsj = DateTimeTool.getHHmmStr( fcsj1.getTime()+ c);
  232 + k = k - c;
  233 + }
  234 + //修改对应的到站时间
  235 + upDownbc[i].ARRIVALTIME = DateTimeTool.getHHmmStr(DateTimeTool.getDateTime(upDownbc[i].fcsj).getTime() + upDownbc[i].bcsj * 60000);
  236 + if (i == upDownbc.length -2 && k > 0){
  237 + i = 1;
  238 + }
  239 +
  240 + }
  241 +
  242 + }*/
  243 + var jyFCjgY =function (upDownbc, dataMap,bcList,dir,nk){
  244 + let j = 0 ; //超时次数
  245 + let k = 0; //超时时间
  246 + //排序
  247 + upDownbc.sort(function(a,b){return DateTimeTool.getDateTime(a.fcsj)-DateTimeTool.getDateTime(b.fcsj)});
  248 + for (let i = 0 ; i < upDownbc.length -1; i++){
  249 + //间隔过大的时间
  250 + let zgs = DateTimeTool.getDateTime(upDownbc[i + 1].fcsj ) - DateTimeTool.getDateTime(upDownbc[i].fcsj);
  251 + // 获取发车间隙:用发车时间判断
  252 + var fcjxx = dataMap.fcjx[DateTimeTool.judgmentTimeQuantum(DateTimeTool.getDateTime(upDownbc[i].fcsj))];
  253 +
  254 + //最大间隔时间
  255 + if (zgs > (fcjxx.max * 60000)){
  256 + j ++ ;
  257 + k = k + zgs;
  258 + }
  259 + }
  260 +
  261 + //算出总工时
  262 + let zgs = DateTimeTool.getDateTime(dataMap.smbcsjArr[dir].jssj) - DateTimeTool.getDateTime(dataMap.smbcsjArr[dir].kssj);
  263 + //平均发车间隙 毫秒
  264 + let fcjx = Math.floor(zgs / (upDownbc.length - 1)) - upDownbc[0].bcsj;
  265 + let l = k / (upDownbc.length - j - 1)
  266 +
  267 + //早高峰
  268 + let zgfsjd = dataMap.zgfsjd;
  269 + //晚高峰
  270 + let wgfsjd = dataMap.wgfsjd
  271 + for (let i = upDownbc.length -1 ; i > 0; i--){
  272 + /* if (nk != 0)
  273 + i = nk;
  274 +
  275 + if (k < 0) {
  276 + nk = i;
  277 + return
  278 + }*/
  279 +
  280 + /* //算出后一个班次 同一路牌下 横向发车间隔
  281 + var bc = getLpPrevAndNextBc(bcList, upDownbc[i]),
  282 + nextBc = bc[1];*/
  283 +
  284 + let fcsj = DateTimeTool.getDateTime(upDownbc[i].fcsj);
  285 + let fcsj1 = DateTimeTool.getDateTime(upDownbc[i - 1].fcsj);
  286 + // 获取发车间隙:用发车时间判断
  287 + let fcjxc = dataMap.fcjx[DateTimeTool.judgmentTimeQuantum(DateTimeTool.getDateTime(upDownbc[i - 1].fcsj))];
  288 + let fcjx = fcjxc.max * 60 *1000;
  289 + //早晚高峰
  290 + let c = (fcjx - (fcsj1 - fcsj)) / 2 ;
  291 + if (zgfsjd[0].st.getTime() < fcsj && zgfsjd[0].ed.getTime() > fcsj){
  292 + if ((fcsj1 - fcsj) < fcjx){
  293 +
  294 + //修改发车时间
  295 + upDownbc[i-1].fcsj = DateTimeTool.getHHmmStr( fcsj1.getTime()-c);
  296 + k = k - c;
  297 + }
  298 + //晚高峰
  299 + } else if (wgfsjd[0].st.getTime() < fcsj && wgfsjd[0].ed.getTime() > fcsj){
  300 + if ((fcsj1 - fcsj) < fcjx){
  301 + //修改发车时间
  302 + upDownbc[i-1].fcsj = DateTimeTool.getHHmmStr( fcsj1.getTime()- c);
  303 + k = k - c;
  304 + }
  305 + //平时
  306 + }else if ((fcsj1 - fcsj) < (fcjxc.min * 60 *1000)){
  307 + upDownbc[i-1].fcsj = DateTimeTool.getHHmmStr( fcsj1.getTime()- c);
  308 + k = k - c;
  309 + }
  310 + //修改对应的到站时间
  311 + upDownbc[i].ARRIVALTIME = DateTimeTool.getHHmmStr(DateTimeTool.getDateTime(upDownbc[i].fcsj).getTime() + upDownbc[i].bcsj * 60000);
  312 + /*if (i == upDownbc.length -2 && k > 0){
  313 + i = 1;
  314 + }*/
  315 +
  316 + }
  317 +
  318 + }
  319 +
  320 +
  321 +
  322 + var tzsj = function(carListH,bcList){
  323 +
  324 +
  325 + for (let cah in carListH){
  326 + let lpbc = [];
  327 + for (var i = 0; i < bcList.length; i++) {
  328 + // 判断当期遍历的班次是否属于当前的路牌.
  329 + if (bcList[i].lpNo == carListH[cah].lpNo) {
  330 + lpbc.push(bcList[i]);
  331 + }
  332 + }
  333 + // 定义路牌编号、定义当前路牌下的所有班次.
  334 + lpbc.sort(function (a,b) { return a.fcno - b.fcno;});
  335 +
  336 + for (let j = 0 ; j < lpbc.length - 1 ; j++){
  337 + let zdsj = DateTimeTool.getDateTime(lpbc[j].ARRIVALTIME).getTime();
  338 + let fcsj = DateTimeTool.getDateTime(lpbc[j].fcsj);
  339 + let fcsj1 = DateTimeTool.getDateTime(lpbc[j + 1].fcsj);
  340 + if (zdsj > fcsj1.getTime()){
  341 + lpbc[j + 1].fcsj = lpbc[j].ARRIVALTIME;
  342 + lpbc[j + 1].ARRIVALTIME = DateTimeTool.getHHmmStr(DateTimeTool.getDateTime(lpbc[j + 1].fcsj).getTime() + lpbc[j + 1].bcsj * 60000);
  343 + }
  344 + }
  345 + }
  346 + }
  347 +
  348 +
  349 +
  350 + var tzsjT = function(carListH,bcList){
  351 +
  352 +
  353 + for (let cah in carListH){
  354 + let lpbc = [];
  355 + for (var i = 0; i < bcList.length; i++) {
  356 + // 判断当期遍历的班次是否属于当前的路牌.
  357 + if (bcList[i].lpNo == carListH[cah].lpNo) {
  358 + lpbc.push(bcList[i]);
  359 + }
  360 + }
  361 + // 定义路牌编号、定义当前路牌下的所有班次.
  362 + lpbc.sort(function (a,b) { return a.fcno - b.fcno;});
  363 +
  364 + for (let j = 0 ; j < lpbc.length - 1 ; j++){
  365 + //不考虑别的 两个相连的班次紧凑起来
  366 + if (j % 2 == 0){
  367 + let zdsj = DateTimeTool.getDateTime(lpbc[j].ARRIVALTIME).getTime();
  368 + let fcsj = DateTimeTool.getDateTime(lpbc[j].fcsj);
  369 + let fcsj1 = DateTimeTool.getDateTime(lpbc[j + 1].fcsj);
  370 + lpbc[j + 1].fcsj = lpbc[j].ARRIVALTIME;
  371 + lpbc[j + 1].ARRIVALTIME = DateTimeTool.getHHmmStr(DateTimeTool.getDateTime(lpbc[j + 1].fcsj).getTime() + lpbc[j + 1].bcsj * 60000);
  372 + }
  373 + }
  374 + }
  375 + }
  376 +
  377 +
55 var iBcCountOfGroup = 3; // 3个班次一次参与计算 378 var iBcCountOfGroup = 3; // 3个班次一次参与计算
56 var dirBcOfGroup = []; 379 var dirBcOfGroup = [];
57 var dirBcIntervalOfGroup = []; // 班次间隔列表,3个班次,2个间隔 380 var dirBcIntervalOfGroup = []; // 班次间隔列表,3个班次,2个间隔
@@ -546,6 +869,7 @@ var AdjustTrip = function () { @@ -546,6 +869,7 @@ var AdjustTrip = function () {
546 return [prevBc, nextBc, cfBc]; 869 return [prevBc, nextBc, cfBc];
547 }; 870 };
548 return { 871 return {
549 - departureClearanceAdjust : departureClearanceAdjust 872 + departureClearanceAdjust : departureClearanceAdjust,
  873 + departureClearanceZDY : departureClearanceZDY
550 } 874 }
551 }(); 875 }();
552 \ No newline at end of file 876 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/js/v1/bcFun.js
@@ -98,7 +98,8 @@ var bcFun = function() { @@ -98,7 +98,8 @@ var bcFun = function() {
98 * @param jsonArray 初始化路牌下的所有班次并且已经均匀发车间隙的数组集合. 98 * @param jsonArray 初始化路牌下的所有班次并且已经均匀发车间隙的数组集合.
99 * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行]. 99 * @param dataMap 封装的 以上、下行方向成对存在的 一些参数数组 [下标0 -- 代表上行 ; 下标1 -- 代表下行].
100 */ 100 */
101 - var markFirstAndLastBusAlsoDietNotInRangeBc = function(jsonArray , dataMap) { 101 + var markFirstAndLastBusAlsoDietNotInRangeBc = function(jsonArray , dataMap,carListH) {
  102 +
102 // 定义上、下行的正常、区间、空放、直放班次、返回数组集合. 103 // 定义上、下行的正常、区间、空放、直放班次、返回数组集合.
103 var listMap = getUpAndDownBc( jsonArray , dataMap) , resultArray = new Array(); 104 var listMap = getUpAndDownBc( jsonArray , dataMap) , resultArray = new Array();
104 for(var i = 0 ; i < listMap.length ; i++) { 105 for(var i = 0 ; i < listMap.length ; i++) {
@@ -106,12 +107,39 @@ var bcFun = function() { @@ -106,12 +107,39 @@ var bcFun = function() {
106 // 剔除不在时间范围内的班次 107 // 剔除不在时间范围内的班次
107 deleteNotInRangeBc(listMap[i] , dataMap.smbcsjArr[i].kssj, dataMap.smbcsjArr[i].jssj); 108 deleteNotInRangeBc(listMap[i] , dataMap.smbcsjArr[i].kssj, dataMap.smbcsjArr[i].jssj);
108 // 把班次顺序排序. 109 // 把班次顺序排序.
109 - listMap[i].sort(function(a,b){return a.fcint-b.fcint}); 110 + listMap[i].sort(function(a,b){return a.lpNo-b.lpNo});
110 } 111 }
111 resultArray = resultArray.concat(listMap[i]); 112 resultArray = resultArray.concat(listMap[i]);
112 } 113 }
  114 + //横向相同方向两个班次
  115 + if (carListH != null) {
  116 + debugger
  117 + resultArray.sort(function(a,b){return a.lpNo-b.lpNo});
  118 + for (let cah in carListH) {
  119 + let lpbc = [];
  120 + for (var i = 0; i < resultArray.length; i++) {
  121 + // 判断当期遍历的班次是否属于当前的路牌.
  122 + if (resultArray[i].lpNo == carListH[cah].lpNo) {
  123 + lpbc.push(resultArray[i]);
  124 + resultArray.splice(i, 1);
  125 + i --;
  126 + }
  127 + }
  128 + // 定义路牌编号、定义当前路牌下的所有班次.
  129 + lpbc.sort(function (a, b) {
  130 + return a.fcsj - b.fcsj;
  131 + });
  132 + for (let j = 0; j < lpbc.length - 1; j++) {
  133 + if (lpbc[j].xlDir == lpbc[j + 1].xlDir) {
  134 + lpbc.splice(j + 1, 1);
  135 + }
  136 + }
  137 + resultArray = resultArray.concat(lpbc);
  138 + }
  139 + }
113 return resultArray; 140 return resultArray;
114 }; 141 };
  142 +
115 /** 143 /**
116 * @desription (TODO) 剔除不在时间范围内的班次. 144 * @desription (TODO) 剔除不在时间范围内的班次.
117 * @param ar 某方向下的班次. 145 * @param ar 某方向下的班次.
@@ -249,11 +277,11 @@ var bcFun = function() { @@ -249,11 +277,11 @@ var bcFun = function() {
249 } else if(bc[b].isfb && b!=bc.length-1){ 277 } else if(bc[b].isfb && b!=bc.length-1){
250 fxdm = fxdm == 0 ? 1:0; 278 fxdm = fxdm == 0 ? 1:0;
251 var qdbcddsj = DateTimeTool.getDateTime(bc[b].ARRIVALTIME); 279 var qdbcddsj = DateTimeTool.getDateTime(bc[b].ARRIVALTIME);
252 - if(dataMap.jcsjArr[fxdm] > 0){ 280 + /* if(dataMap.jcsjArr[fxdm] > 0){
253 result.push(getbcObj( 281 result.push(getbcObj(
254 qdbcddsj,dataMap.jcsjArr[fxdm],car,dataMap.bcTypeArr.in_, 282 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));// 进场班次 283 dataMap.dira[fxdm],++fcno,dataMap.jclcArr[fxdm],gatps,0,dataMap.qdzArr[fxdm],null,null,0,0));// 进场班次
256 - } 284 + }*/
257 } 285 }
258 // dxfno = bc[b].fcno + fcno; 286 // dxfno = bc[b].fcno + fcno;
259 // bc[b].fcno = dxfno; 287 // bc[b].fcno = dxfno;
@@ -502,6 +530,9 @@ var bcFun = function() { @@ -502,6 +530,9 @@ var bcFun = function() {
502 return false; 530 return false;
503 }; 531 };
504 532
  533 +
  534 +
  535 +
505 return{ 536 return{
506 getbcObj : getbcObj, //封装班次属性值 537 getbcObj : getbcObj, //封装班次属性值
507 upDownStrConvertNum : upDownStrConvertNum, 538 upDownStrConvertNum : upDownStrConvertNum,
src/main/resources/static/pages/base/timesmodel/js/v1/lpFun.js
@@ -195,7 +195,9 @@ var lpFun = function () { @@ -195,7 +195,9 @@ var lpFun = function () {
195 bxRcList[i] = {'bx':bxRcList[i],'len':bxRcList[i].fpcls, 'ratio':Math.round(bxRcList[i].fpcls/count)} 195 bxRcList[i] = {'bx':bxRcList[i],'len':bxRcList[i].fpcls, 'ratio':Math.round(bxRcList[i].fpcls/count)}
196 } 196 }
197 for(var i=0; i<bxRcList.length; i++) { 197 for(var i=0; i<bxRcList.length; i++) {
198 - for(var j=0; j<bxRcList[i].ratio; j++) { 198 + //重新生成的时候
  199 + var ration = bxRcList[i].ratio != null ? bxRcList[i].ratio : bxRcList[i].bx.ratio;
  200 + for(var j=0; j<ration; j++) {
199 mode.push(i); 201 mode.push(i);
200 } 202 }
201 } 203 }
src/main/resources/static/pages/base/timesmodel/js/v1/scheduleInitialize.js
@@ -213,7 +213,7 @@ var scheduleInitialize = function () { @@ -213,7 +213,7 @@ var scheduleInitialize = function () {
213 } 213 }
214 } 214 }
215 } 215 }
216 - var excessHours = (hoursV/60).toFixed(2) - car.hoursV, 216 + var excessHours = ((hoursV/60) - car.hoursV).toFixed(2),
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; 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 218
219 // 抽车全在低谷,所以用低谷平均行驶时间 TODO:(分班本来需要大于3小时,现在暂时改为1小时) 219 // 抽车全在低谷,所以用低谷平均行驶时间 TODO:(分班本来需要大于3小时,现在暂时改为1小时)
@@ -726,7 +726,7 @@ var scheduleInitialize = function () { @@ -726,7 +726,7 @@ var scheduleInitialize = function () {
726 arr.sort(function(m,n){return n.fcno-m.fcno}); 726 arr.sort(function(m,n){return n.fcno-m.fcno});
727 // 主站停车类型,分班班次只能主站停车 727 // 主站停车类型,分班班次只能主站停车
728 if(dataMap.isMasterStop) { 728 if(dataMap.isMasterStop) {
729 - for(var a = 0 ; a < arr.length ; a ++) { 729 + for(var a = 1 ; a < arr.length ; a ++) {
730 var fcsj = DateTimeTool.getDateTime(arr[a].fcsj); 730 var fcsj = DateTimeTool.getDateTime(arr[a].fcsj);
731 // 判断是否在高峰时间范围.【true--表示在,false--表示不在】. 731 // 判断是否在高峰时间范围.【true--表示在,false--表示不在】.
732 if(!isPeakTimeScope(fcsj,dataMap) && fcsj > tcbcgzA[t].minsj && fcsj < tcbcgzA[t].maxsj) { 732 if(!isPeakTimeScope(fcsj,dataMap) && fcsj > tcbcgzA[t].minsj && fcsj < tcbcgzA[t].maxsj) {
@@ -737,7 +737,7 @@ var scheduleInitialize = function () { @@ -737,7 +737,7 @@ var scheduleInitialize = function () {
737 // 分班路牌需要主站停车 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){ 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++; 739 a++;
740 - if(isPeakTimeScope(arr[a+tcbcgzA[t].deletebcNum].fcsj,dataMap)) 740 + if((a+tcbcgzA[t].deletebcNum) > arr.length && isPeakTimeScope(arr[a+tcbcgzA[t].deletebcNum].fcsj,dataMap))
741 tcbcgzA[t].deletebcNum--; 741 tcbcgzA[t].deletebcNum--;
742 } 742 }
743 arr[a - 1].isfb = true; 743 arr[a - 1].isfb = true;
src/main/resources/static/pages/base/timesmodel/js/v2_2/InternalScheduleObj.js
@@ -224,6 +224,8 @@ var InternalScheduleObj_v2_2 = (function() { @@ -224,6 +224,8 @@ var InternalScheduleObj_v2_2 = (function() {
224 224
225 bcCount ++; 225 bcCount ++;
226 isUp = !isUp; 226 isUp = !isUp;
  227 + if (bcCount > 10000)
  228 + break;
227 } while(_kssj.isBefore(et)); 229 } while(_kssj.isBefore(et));
228 bcCount--; // 因为先做do,所以总的班次要减1 230 bcCount--; // 因为先做do,所以总的班次要减1
229 231
@@ -406,26 +408,32 @@ var InternalScheduleObj_v2_2 = (function() { @@ -406,26 +408,32 @@ var InternalScheduleObj_v2_2 = (function() {
406 408
407 for (i = 0; i < this._iBx_5_2_fb_lpcount - iC2; i++) { 409 for (i = 0; i < this._iBx_5_2_fb_lpcount - iC2; i++) {
408 iLpIndex = aNotLbIndexes[i * iC1]; 410 iLpIndex = aNotLbIndexes[i * iC1];
409 - this._internalLpArray[iLpIndex].setBxLb(false);  
410 - this._internalLpArray[iLpIndex].setBxFb(true);  
411 - this._internalLpArray[iLpIndex].setBxFb5_2(true);  
412 - this._internalLpArray[iLpIndex].setBxDesc("5休2分班"); 411 + if (iLpIndex !=null) {
  412 + this._internalLpArray[iLpIndex].setBxLb(false);
  413 + this._internalLpArray[iLpIndex].setBxFb(true);
  414 + this._internalLpArray[iLpIndex].setBxFb5_2(true);
  415 + this._internalLpArray[iLpIndex].setBxDesc("5休2分班");
  416 + }
413 } 417 }
414 for (i = 0; i < iC2; i++) { 418 for (i = 0; i < iC2; i++) {
415 iLpIndex = aNotLbIndexes[this._iBx_5_2_fb_lpcount - iC2 + i * (iC1 + 1)]; 419 iLpIndex = aNotLbIndexes[this._iBx_5_2_fb_lpcount - iC2 + i * (iC1 + 1)];
416 - this._internalLpArray[iLpIndex].setBxLb(false);  
417 - this._internalLpArray[iLpIndex].setBxFb(true);  
418 - this._internalLpArray[iLpIndex].setBxFb5_2(true);  
419 - this._internalLpArray[iLpIndex].setBxDesc("5休2分班"); 420 + if (iLpIndex !=null) {
  421 + this._internalLpArray[iLpIndex].setBxLb(false);
  422 + this._internalLpArray[iLpIndex].setBxFb(true);
  423 + this._internalLpArray[iLpIndex].setBxFb5_2(true);
  424 + this._internalLpArray[iLpIndex].setBxDesc("5休2分班");
  425 + }
420 } 426 }
421 // 其他分班 427 // 其他分班
422 for (i = 0; i < aNotLbIndexes.length; i++) { 428 for (i = 0; i < aNotLbIndexes.length; i++) {
423 iLpIndex = aNotLbIndexes[i]; 429 iLpIndex = aNotLbIndexes[i];
424 - if (!this._internalLpArray[iLpIndex].isBxFb5_2()) {  
425 - this._internalLpArray[iLpIndex].setBxLb(false);  
426 - this._internalLpArray[iLpIndex].setBxFb(true);  
427 - this._internalLpArray[iLpIndex].setBxFb5_2(false);  
428 - this._internalLpArray[iLpIndex].setBxDesc("其他分班"); 430 + if (iLpIndex !=null) {
  431 + if (!this._internalLpArray[iLpIndex].isBxFb5_2()) {
  432 + this._internalLpArray[iLpIndex].setBxLb(false);
  433 + this._internalLpArray[iLpIndex].setBxFb(true);
  434 + this._internalLpArray[iLpIndex].setBxFb5_2(false);
  435 + this._internalLpArray[iLpIndex].setBxDesc("其他分班");
  436 + }
429 } 437 }
430 } 438 }
431 439
src/main/resources/static/pages/base/timesmodel/paramadd.html
@@ -177,14 +177,14 @@ @@ -177,14 +177,14 @@
177 <div class="col-md-6"> 177 <div class="col-md-6">
178 <label class="control-label col-md-5">早高峰上行时间 :</label> 178 <label class="control-label col-md-5">早高峰上行时间 :</label>
179 <div class="col-md-5"> 179 <div class="col-md-5">
180 - <input type="text" class="form-control" name="earlyUpTime" value="{{map.earlyUpTime}}" id="earlyUpTime_id" 180 + <input type="text" class="form-control" name="earlyUpTime" value="{{map.earlyUpTime == null ? map.upTravelTime : map.earlyUpTime}}" id="earlyUpTime_id"
181 placeholder="请输入早高峰上行时间"> 181 placeholder="请输入早高峰上行时间">
182 </div> 182 </div>
183 </div> 183 </div>
184 <div class="col-md-6"> 184 <div class="col-md-6">
185 <label class="control-label col-md-5">早高峰下行时间 :</label> 185 <label class="control-label col-md-5">早高峰下行时间 :</label>
186 <div class="col-md-5"> 186 <div class="col-md-5">
187 - <input type="text" class="form-control" name="earlyDownTime" value="{{map.earlyDownTime}}" id="earlyDownTime_id" 187 + <input type="text" class="form-control" name="earlyDownTime" value="{{map.earlyDownTime== null ? map.downTravelTime :map.earlyDownTime}}" id="earlyDownTime_id"
188 placeholder="请输入早高峰下行时间"> 188 placeholder="请输入早高峰下行时间">
189 </div> 189 </div>
190 </div> 190 </div>
@@ -194,14 +194,14 @@ @@ -194,14 +194,14 @@
194 <div class="col-md-6"> 194 <div class="col-md-6">
195 <label class="control-label col-md-5">晚高峰上行时间 :</label> 195 <label class="control-label col-md-5">晚高峰上行时间 :</label>
196 <div class="col-md-5"> 196 <div class="col-md-5">
197 - <input type="text" class="form-control" name="lateUpTime" value="{{map.lateUpTime}}" id="lateUpTime_id" 197 + <input type="text" class="form-control" name="lateUpTime" value="{{map.lateUpTime == null ? map.upTravelTime :map.lateUpTime }}" id="lateUpTime_id"
198 placeholder="请输入晚高峰上行时间"> 198 placeholder="请输入晚高峰上行时间">
199 </div> 199 </div>
200 </div> 200 </div>
201 <div class="col-md-6"> 201 <div class="col-md-6">
202 <label class="control-label col-md-5">晚高峰下行时间 :</label> 202 <label class="control-label col-md-5">晚高峰下行时间 :</label>
203 <div class="col-md-5"> 203 <div class="col-md-5">
204 - <input type="text" class="form-control" name="lateDownTime" value="{{map.lateDownTime}}" id="lateDownTime_id" 204 + <input type="text" class="form-control" name="lateDownTime" value="{{map.lateDownTime== null ? map.downTravelTime :map.lateDownTime }}" id="lateDownTime_id"
205 placeholder="请输入晚高峰下行时间"> 205 placeholder="请输入晚高峰下行时间">
206 </div> 206 </div>
207 </div> 207 </div>
@@ -211,14 +211,14 @@ @@ -211,14 +211,14 @@
211 <div class="col-md-6"> 211 <div class="col-md-6">
212 <label class="control-label col-md-5">低谷上行时间  :</label> 212 <label class="control-label col-md-5">低谷上行时间  :</label>
213 <div class="col-md-5"> 213 <div class="col-md-5">
214 - <input type="text" class="form-control" name="troughUpTime" value="{{map.troughUpTime}}" id="troughUpTime_id" 214 + <input type="text" class="form-control" name="troughUpTime" value="{{map.troughUpTime == null ? map.upTravelTime :map.troughUpTime}}" id="troughUpTime_id"
215 placeholder="请输入低谷上行时间"> 215 placeholder="请输入低谷上行时间">
216 </div> 216 </div>
217 </div> 217 </div>
218 <div class="col-md-6"> 218 <div class="col-md-6">
219 <label class="control-label col-md-5">低谷下行时间  :</label> 219 <label class="control-label col-md-5">低谷下行时间  :</label>
220 <div class="col-md-5"> 220 <div class="col-md-5">
221 - <input type="text" class="form-control" name="troughDownTime" value="{{map.troughDownTime}}" id="troughDownTime_id" 221 + <input type="text" class="form-control" name="troughDownTime" value="{{map.troughDownTime == null ? map.downTravelTime :map.troughDownTime }}" id="troughDownTime_id"
222 placeholder="请输入低谷下行时间"> 222 placeholder="请输入低谷下行时间">
223 </div> 223 </div>
224 </div> 224 </div>
@@ -425,8 +425,8 @@ @@ -425,8 +425,8 @@
425 <script type="text/javascript"> 425 <script type="text/javascript">
426 $('#paramadd_mobal').on('paramAddMobal.show', function(e, mainFun, mainFun2_2, oSchedule_v2_2){ 426 $('#paramadd_mobal').on('paramAddMobal.show', function(e, mainFun, mainFun2_2, oSchedule_v2_2){
427 var _mainFun = mainFun; 427 var _mainFun = mainFun;
428 - var _mainFun_v2_2 = mainFun2_2;  
429 - var _oSchedule_v2_2 = oSchedule_v2_2; 428 + var _mainFun_v2_2 = Main_v2_2;
  429 + var _oSchedule_v2_2 = InternalScheduleObj_v2_2;
430 430
431 // 加载延迟200毫秒显示mobal 431 // 加载延迟200毫秒显示mobal
432 setTimeout(function(){$('#paramadd_mobal').modal({show : true,backdrop: 'static', keyboard: false});},200); 432 setTimeout(function(){$('#paramadd_mobal').modal({show : true,backdrop: 'static', keyboard: false});},200);
@@ -546,7 +546,8 @@ @@ -546,7 +546,8 @@
546 if (ganttMap.baseRes == "2") { // v2版本 546 if (ganttMap.baseRes == "2") { // v2版本
547 data = _mainFun.BXPplaceClassesTime03(paramObj, csMap.maxCar); 547 data = _mainFun.BXPplaceClassesTime03(paramObj, csMap.maxCar);
548 _mainFun.exportDataConfig(data.aInternalLpObj); 548 _mainFun.exportDataConfig(data.aInternalLpObj);
549 - } else if (ganttMap.baseRes == "3") { // v2_2版本 549 + /* } else if (ganttMap.baseRes == "3") { // v2_2版本*/
  550 + } else { // v2_2版本
550 csMap = getCSMap_v2(paramObj); 551 csMap = getCSMap_v2(paramObj);
551 data = _mainFun_v2_2.BXPplaceClassesTime03(paramObj, csMap.maxCar); 552 data = _mainFun_v2_2.BXPplaceClassesTime03(paramObj, csMap.maxCar);
552 } 553 }
@@ -915,7 +916,7 @@ @@ -915,7 +916,7 @@
915 var _paramObj = _mainFun.getFactory().createParameterObj(map, dataMap); 916 var _paramObj = _mainFun.getFactory().createParameterObj(map, dataMap);
916 917
917 if (!_paramObj.isTwoWayStop()) { // 主站停站使用v2_2版本 918 if (!_paramObj.isTwoWayStop()) { // 主站停站使用v2_2版本
918 - map.clzs = InternalScheduleObj.calcuClzx(_paramObj); 919 + map.clzs = InternalScheduleObj_v2_2.calcuClzx(_paramObj);
919 } else { 920 } else {
920 map.clzs = _paramObj.calcuClzx(); 921 map.clzs = _paramObj.calcuClzx();
921 } 922 }
src/main/resources/static/pages/base/timesmodel/tepms/bctype_temp.html
@@ -245,14 +245,14 @@ @@ -245,14 +245,14 @@
245 <label class="control-label col-md-1"> : </label> 245 <label class="control-label col-md-1"> : </label>
246 <!-- 早高峰开始时间 (* 必填项) END --> 246 <!-- 早高峰开始时间 (* 必填项) END -->
247 <div class="col-md-4"> 247 <div class="col-md-4">
248 - <input type="text" class="form-control" name="upTravelTime1" value="{{map.troughUpTime}}" id="upTravelTimeInput1" 248 + <input type="text" class="form-control" value="{{map.upTravelTime}}" name="upTravelTime1" id="upTravelTimeInput1"
249 placeholder="上行行驶时间"> 249 placeholder="上行行驶时间">
250 </div> 250 </div>
251 </div> 251 </div>
252 <div class="col-md-6"> 252 <div class="col-md-6">
253 <div class="col-md-5"></div> 253 <div class="col-md-5"></div>
254 <div class="col-md-5"> 254 <div class="col-md-5">
255 - <input type="text" class="form-control" name="downTravelTime1" value="{{map.troughDownTime}}" id="downTravelTimeInput1" 255 + <input type="text" class="form-control" value="{{map.downTravelTime}}" name="downTravelTime1" id="downTravelTimeInput1"
256 placeholder="下行行驶时间"> 256 placeholder="下行行驶时间">
257 </div> 257 </div>
258 </div> 258 </div>
@@ -276,14 +276,14 @@ @@ -276,14 +276,14 @@
276 <label class="control-label col-md-1"> : </label> 276 <label class="control-label col-md-1"> : </label>
277 <!-- 表单分组组件 form-group END --> 277 <!-- 表单分组组件 form-group END -->
278 <div class="col-md-4"> 278 <div class="col-md-4">
279 - <input type="text" class="form-control" value="{{map.earlyUpTime}}" name="upTravelTime2" id="upTravelTimeInput2" 279 + <input type="text" class="form-control" value="{{map.upTravelTime}}" name="upTravelTime2" id="upTravelTimeInput2"
280 placeholder="上行行驶时间"> 280 placeholder="上行行驶时间">
281 </div> 281 </div>
282 </div> 282 </div>
283 <div class="col-md-6"> 283 <div class="col-md-6">
284 <div class="col-md-5"></div> 284 <div class="col-md-5"></div>
285 <div class="col-md-5"> 285 <div class="col-md-5">
286 - <input type="text" class="form-control" value="{{map.earlyDownTime}}" name="downTravelTime2" id="downTravelTimeInput2" 286 + <input type="text" class="form-control" value="{{map.downTravelTime}}" name="downTravelTime2" id="downTravelTimeInput2"
287 placeholder="下行行驶时间"> 287 placeholder="下行行驶时间">
288 </div> 288 </div>
289 </div> 289 </div>
@@ -306,14 +306,14 @@ @@ -306,14 +306,14 @@
306 </div> 306 </div>
307 <label class="control-label col-md-1"> : </label> 307 <label class="control-label col-md-1"> : </label>
308 <div class="col-md-4"> 308 <div class="col-md-4">
309 - <input type="text" class="form-control" value="{{map.troughUpTime}}" name="upTravelTime3" id="upTravelTimeInput3" 309 + <input type="text" class="form-control" value="{{map.upTravelTime}}" name="upTravelTime3" id="upTravelTimeInput3"
310 placeholder="上行行驶时间"> 310 placeholder="上行行驶时间">
311 </div> 311 </div>
312 </div> 312 </div>
313 <div class="col-md-6"> 313 <div class="col-md-6">
314 <div class="col-md-5"></div> 314 <div class="col-md-5"></div>
315 <div class="col-md-5"> 315 <div class="col-md-5">
316 - <input type="text" class="form-control" value="{{map.troughDownTime}}" name="downTravelTime3" id="downTravelTimeInput3" 316 + <input type="text" class="form-control" value="{{map.downTravelTime}}" name="downTravelTime3" id="downTravelTimeInput3"
317 placeholder="下行行驶时间"> 317 placeholder="下行行驶时间">
318 </div> 318 </div>
319 </div> 319 </div>
@@ -336,14 +336,14 @@ @@ -336,14 +336,14 @@
336 </div> 336 </div>
337 <label class="control-label col-md-1"> : </label> 337 <label class="control-label col-md-1"> : </label>
338 <div class="col-md-4"> 338 <div class="col-md-4">
339 - <input type="text" class="form-control" value="{{map.lateUpTime}}" name="upTravelTime4" id="upTravelTimeInput4" 339 + <input type="text" class="form-control" value="{{map.upTravelTime}}" name="upTravelTime4" id="upTravelTimeInput4"
340 placeholder="上行行驶时间"> 340 placeholder="上行行驶时间">
341 </div> 341 </div>
342 </div> 342 </div>
343 <div class="col-md-6"> 343 <div class="col-md-6">
344 <div class="col-md-5"></div> 344 <div class="col-md-5"></div>
345 <div class="col-md-5"> 345 <div class="col-md-5">
346 - <input type="text" class="form-control" value="{{map.lateDownTime}}" name="downTravelTime4" id="downTravelTimeInput4" 346 + <input type="text" class="form-control" value="{{map.downTravelTime}}" name="downTravelTime4" id="downTravelTimeInput4"
347 placeholder="下行行驶时间"> 347 placeholder="下行行驶时间">
348 </div> 348 </div>
349 </div> 349 </div>
@@ -366,14 +366,14 @@ @@ -366,14 +366,14 @@
366 </div> 366 </div>
367 <label class="control-label col-md-1"> : </label> 367 <label class="control-label col-md-1"> : </label>
368 <div class="col-md-4"> 368 <div class="col-md-4">
369 - <input type="text" class="form-control" value="{{map.troughUpTime}}" name="upTravelTime5" id="upTravelTimeInput5" 369 + <input type="text" class="form-control"value="{{map.upTravelTime}}" name="upTravelTime5" id="upTravelTimeInput5"
370 placeholder="上行行驶时间"> 370 placeholder="上行行驶时间">
371 </div> 371 </div>
372 </div> 372 </div>
373 <div class="col-md-6"> 373 <div class="col-md-6">
374 <div class="col-md-5"></div> 374 <div class="col-md-5"></div>
375 <div class="col-md-5"> 375 <div class="col-md-5">
376 - <input type="text" class="form-control" value="{{map.troughDownTime}}" name="downTravelTime5" id="downTravelTimeInput5" 376 + <input type="text" class="form-control" value="{{map.downTravelTime}}" name="downTravelTime5" id="downTravelTimeInput5"
377 placeholder="下行行驶时间"> 377 placeholder="下行行驶时间">
378 </div> 378 </div>
379 </div> 379 </div>
src/main/resources/static/pages/base/timesmodel/tepms/fcjx_temp.html
@@ -126,14 +126,14 @@ @@ -126,14 +126,14 @@
126 <div class="col-md-6"> 126 <div class="col-md-6">
127 <label class="control-label col-md-5">早高峰上行时间 :</label> 127 <label class="control-label col-md-5">早高峰上行时间 :</label>
128 <div class="col-md-5"> 128 <div class="col-md-5">
129 - <input type="text" class="form-control" name="earlyUpTime" value="{{map.earlyUpTime}}" id="earlyUpTime_id" 129 + <input type="text" class="form-control" name="earlyUpTime" value="{{map.upTravelTime}}" id="earlyUpTime_id"
130 placeholder="请输入早高峰上行时间"> 130 placeholder="请输入早高峰上行时间">
131 </div> 131 </div>
132 </div> 132 </div>
133 <div class="col-md-6"> 133 <div class="col-md-6">
134 <label class="control-label col-md-5">早高峰下行时间 :</label> 134 <label class="control-label col-md-5">早高峰下行时间 :</label>
135 <div class="col-md-5"> 135 <div class="col-md-5">
136 - <input type="text" class="form-control" name="earlyDownTime" value="{{map.earlyDownTime}}" id="earlyDownTime_id" 136 + <input type="text" class="form-control" name="earlyDownTime" value="{{map.downTravelTime}}" id="earlyDownTime_id"
137 placeholder="请输入早高峰下行时间"> 137 placeholder="请输入早高峰下行时间">
138 </div> 138 </div>
139 </div> 139 </div>
@@ -143,14 +143,14 @@ @@ -143,14 +143,14 @@
143 <div class="col-md-6"> 143 <div class="col-md-6">
144 <label class="control-label col-md-5">晚高峰上行时间 :</label> 144 <label class="control-label col-md-5">晚高峰上行时间 :</label>
145 <div class="col-md-5"> 145 <div class="col-md-5">
146 - <input type="text" class="form-control" name="lateUpTime" value="{{map.lateUpTime}}" id="lateUpTime_id" 146 + <input type="text" class="form-control" name="lateUpTime" value="{{map.upTravelTime}}" id="lateUpTime_id"
147 placeholder="请输入晚高峰上行时间"> 147 placeholder="请输入晚高峰上行时间">
148 </div> 148 </div>
149 </div> 149 </div>
150 <div class="col-md-6"> 150 <div class="col-md-6">
151 <label class="control-label col-md-5">晚高峰下行时间 :</label> 151 <label class="control-label col-md-5">晚高峰下行时间 :</label>
152 <div class="col-md-5"> 152 <div class="col-md-5">
153 - <input type="text" class="form-control" name="lateDownTime" value="{{map.lateDownTime}}" id="lateDownTime_id" 153 + <input type="text" class="form-control" name="lateDownTime" value="{{map.downTravelTime}}" id="lateDownTime_id"
154 placeholder="请输入晚高峰下行时间"> 154 placeholder="请输入晚高峰下行时间">
155 </div> 155 </div>
156 </div> 156 </div>
@@ -160,14 +160,14 @@ @@ -160,14 +160,14 @@
160 <div class="col-md-6"> 160 <div class="col-md-6">
161 <label class="control-label col-md-5">低谷上行时间  :</label> 161 <label class="control-label col-md-5">低谷上行时间  :</label>
162 <div class="col-md-5"> 162 <div class="col-md-5">
163 - <input type="text" class="form-control" name="troughUpTime" value="{{map.troughUpTime}}" id="troughUpTime_id" 163 + <input type="text" class="form-control" name="troughUpTime" value="{{map.upTravelTime}}" id="troughUpTime_id"
164 placeholder="请输入低谷上行时间"> 164 placeholder="请输入低谷上行时间">
165 </div> 165 </div>
166 </div> 166 </div>
167 <div class="col-md-6"> 167 <div class="col-md-6">
168 <label class="control-label col-md-5">低谷下行时间  :</label> 168 <label class="control-label col-md-5">低谷下行时间  :</label>
169 <div class="col-md-5"> 169 <div class="col-md-5">
170 - <input type="text" class="form-control" name="troughDownTime" value="{{map.troughDownTime}}" id="troughDownTime_id" 170 + <input type="text" class="form-control" name="troughDownTime" value="{{map.downTravelTime}}" id="troughDownTime_id"
171 placeholder="请输入低谷下行时间"> 171 placeholder="请输入低谷下行时间">
172 </div> 172 </div>
173 </div> 173 </div>
@@ -237,24 +237,24 @@ @@ -237,24 +237,24 @@
237 <div class="col-md-6"> 237 <div class="col-md-6">
238 <label class="control-label col-md-5"><span class="required"> * </span>早高峰发车间隔 :</label> 238 <label class="control-label col-md-5"><span class="required"> * </span>早高峰发车间隔 :</label>
239 <div class="col-md-3" style="padding-right: 0px;"> 239 <div class="col-md-3" style="padding-right: 0px;">
240 - <input type="text" class="form-control" name="zgffcjxmin" id="zgffcjxmin_id" 240 + <input type="text" class="form-control" value="8" name="zgffcjxmin" id="zgffcjxmin_id"
241 placeholder="最小间隔"> 241 placeholder="最小间隔">
242 </div> 242 </div>
243 <div class="col-md-1" style="padding-top: 10px; font-size: 85%;">至</div> 243 <div class="col-md-1" style="padding-top: 10px; font-size: 85%;">至</div>
244 <div class="col-md-3" style="padding-left: 0px;"> 244 <div class="col-md-3" style="padding-left: 0px;">
245 - <input type="text" class="form-control" name="zgffcjxmax" id="zgffcjxmax_id" 245 + <input type="text" class="form-control" value="8" name="zgffcjxmax" id="zgffcjxmax_id"
246 placeholder="最大间隔"> 246 placeholder="最大间隔">
247 </div> 247 </div>
248 </div> 248 </div>
249 <div class="col-md-6"> 249 <div class="col-md-6">
250 <label class="control-label col-md-5"><span class="required"> * </span>晚高峰发车间隔 :</label> 250 <label class="control-label col-md-5"><span class="required"> * </span>晚高峰发车间隔 :</label>
251 <div class="col-md-3" style="padding-right: 0px;"> 251 <div class="col-md-3" style="padding-right: 0px;">
252 - <input type="text" class="form-control" name="wffcjxmin" id="wffcjxmin_id" 252 + <input type="text" class="form-control" value="8" name="wffcjxmin" id="wffcjxmin_id"
253 placeholder="最小间隔"> 253 placeholder="最小间隔">
254 </div> 254 </div>
255 <div class="col-md-1" style="padding-top: 10px; font-size: 85%;">至</div> 255 <div class="col-md-1" style="padding-top: 10px; font-size: 85%;">至</div>
256 <div class="col-md-3" style="padding-left: 0px;"> 256 <div class="col-md-3" style="padding-left: 0px;">
257 - <input type="text" class="form-control" name="wffcjxmax" id="wffcjxmax_id" 257 + <input type="text" class="form-control" value="8" name="wffcjxmax" id="wffcjxmax_id"
258 placeholder="最大间隔"> 258 placeholder="最大间隔">
259 </div> 259 </div>
260 </div> 260 </div>
@@ -264,19 +264,19 @@ @@ -264,19 +264,19 @@
264 <div class="col-md-6"> 264 <div class="col-md-6">
265 <label class="control-label col-md-5"><span class="required"> * </span>低谷发车间隔 :</label> 265 <label class="control-label col-md-5"><span class="required"> * </span>低谷发车间隔 :</label>
266 <div class="col-md-3" style="padding-right: 0px;"> 266 <div class="col-md-3" style="padding-right: 0px;">
267 - <input type="text" class="form-control" name="dgfcjxmin" id="dgfcjxmin_id" 267 + <input type="text" class="form-control" value="10" name="dgfcjxmin" id="dgfcjxmin_id"
268 placeholder="最小间隔"> 268 placeholder="最小间隔">
269 </div> 269 </div>
270 <div class="col-md-1" style="padding-top: 10px; font-size: 85%;">至</div> 270 <div class="col-md-1" style="padding-top: 10px; font-size: 85%;">至</div>
271 <div class="col-md-3" style="padding-left: 0px;"> 271 <div class="col-md-3" style="padding-left: 0px;">
272 - <input type="text" class="form-control" name="dgfcjxmax" id="dgfcjxmax_id" 272 + <input type="text" class="form-control" value="20" name="dgfcjxmax" id="dgfcjxmax_id"
273 placeholder="最大间隔"> 273 placeholder="最大间隔">
274 </div> 274 </div>
275 </div> 275 </div>
276 <div class="col-md-6"> 276 <div class="col-md-6">
277 <label class="control-label col-md-5"><span class="required"> * </span>建议加班路牌数 :</label> 277 <label class="control-label col-md-5"><span class="required"> * </span>建议加班路牌数 :</label>
278 <div class="col-md-5"> 278 <div class="col-md-5">
279 - <input type="text" class="form-control" name="jbclcount" id="jbclcount_id" 279 + <input type="text" class="form-control" value="0" name="jbclcount" id="jbclcount_id"
280 placeholder="为0表示是周末时刻表"> 280 placeholder="为0表示是周末时刻表">
281 </div> 281 </div>
282 </div> 282 </div>
@@ -323,7 +323,7 @@ @@ -323,7 +323,7 @@
323 <label class="control-label col-md-5"> 323 <label class="control-label col-md-5">
324 <span class="required"> * </span> 建议高峰配车数 :</label> 324 <span class="required"> * </span> 建议高峰配车数 :</label>
325 <div class="col-md-5"> 325 <div class="col-md-5">
326 - <input type="text" class="form-control" placeholder="车辆数" name="gfjypcs" id="gfjypcsInput" min="1"> 326 + <input type="text" class="form-control" value="1" placeholder="车辆数" name="gfjypcs" id="gfjypcsInput" min="1">
327 </div> 327 </div>
328 </div> 328 </div>
329 329
src/main/resources/static/pages/permission/authorize_all/user_auth.html
@@ -36,6 +36,7 @@ @@ -36,6 +36,7 @@
36 <li><label><input class="uk-checkbox" type="checkbox" data-event="cache_data_manage"> 缓存数据管理</label></li> 36 <li><label><input class="uk-checkbox" type="checkbox" data-event="cache_data_manage"> 缓存数据管理</label></li>
37 <li><label><input class="uk-checkbox" type="checkbox" data-event="history_sch_maintain"> 历史路单维护</label></li> 37 <li><label><input class="uk-checkbox" type="checkbox" data-event="history_sch_maintain"> 历史路单维护</label></li>
38 <li><label><input class="uk-checkbox" type="checkbox" data-event="sch_edit_info"> 班次修正日志</label></li> 38 <li><label><input class="uk-checkbox" type="checkbox" data-event="sch_edit_info"> 班次修正日志</label></li>
  39 + <li><label><input class="uk-checkbox" type="checkbox" data-event="sch_edit_qjgz"> 请假故障清单</label></li>
39 </ul> 40 </ul>
40 </div> 41 </div>
41 42
src/main/resources/static/real_control_v2/js/data/json/north_toolbar.json
@@ -27,6 +27,11 @@ @@ -27,6 +27,11 @@
27 "id": 1.41, 27 "id": 1.41,
28 "text": "班次修正日志", 28 "text": "班次修正日志",
29 "event": "sch_edit_info" 29 "event": "sch_edit_info"
  30 + },
  31 + {
  32 + "id": 1.5,
  33 + "text": "请假故障清单",
  34 + "event": "sch_edit_qjgz"
30 } 35 }
31 ] 36 ]
32 }, 37 },
src/main/resources/static/real_control_v2/js/north/toolbar.js
@@ -253,6 +253,10 @@ var gb_northToolbar = (function () { @@ -253,6 +253,10 @@ var gb_northToolbar = (function () {
253 form_loggerr_zndd: function () { 253 form_loggerr_zndd: function () {
254 gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/zndd/logger_zndd.html', '智能调度执行记录'); 254 gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/zndd/logger_zndd.html', '智能调度执行记录');
255 }, 255 },
  256 +
  257 + sch_edit_qjgz: function () {
  258 + open_modal('/real_control_v2/zndd/qjgz/list.html', {}, modal_opts);
  259 + },
256 }; 260 };
257 261
258 return { 262 return {
src/main/resources/static/real_control_v2/js/zndd/data_zndd.js
@@ -123,7 +123,6 @@ var gb_dataZndd = (function (){ @@ -123,7 +123,6 @@ var gb_dataZndd = (function (){
123 alt_confirm(content, function () { 123 alt_confirm(content, function () {
124 gb_common.$post('/realSchedule/revokeRealOutgo_zndd', { 124 gb_common.$post('/realSchedule/revokeRealOutgo_zndd', {
125 id: that.data('id'), 125 id: that.data('id'),
126 - remarks:"_智能调度-异常实发",  
127 }, function (rs) { 126 }, function (rs) {
128 gb_schedule_table.updateSchedule(rs.ts); 127 gb_schedule_table.updateSchedule(rs.ts);
129 notify_succ('撤销实发操作成功!'); 128 notify_succ('撤销实发操作成功!');
src/main/resources/static/real_control_v2/zndd/qjgz/list.html 0 → 100644
  1 +<div class="uk-modal" id="report-80-modal">
  2 + <div class="uk-modal-dialog" style="width: 1260px;">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>人员请假车辆故障清单</h2></div>
  6 +
  7 + <div class="uk-panel uk-panel-box uk-panel-box-primary">
  8 + <form class="uk-form search-form">
  9 + <fieldset data-uk-margin>
  10 + <span class="horizontal-field">线路</span>
  11 + <select name="lineId" style="width: 140px;"></select>
  12 + <span class="horizontal-field">车辆</span>
  13 + <div class="uk-autocomplete uk-form autocomplete-cars" >
  14 + <input type="text" name="nbbm" placeholder="车辆自编号">
  15 + </div>
  16 +
  17 + <button class="uk-button">检索</button>
  18 + </fieldset>
  19 + </form>
  20 + </div>
  21 + <div style="height: 495px;margin:5px 0 -18px;">
  22 + <table class="ct-fixed-table uk-table uk-table-hover">
  23 + <thead>
  24 + <tr>
  25 + <th style="width: 10%;">线路</th>
  26 + <th style="width: 10%;">车辆</th>
  27 + <th style="width: 10%;">人员</th>
  28 + <th style="width: 10%;">请假类型</th>
  29 + <th style="width: 15%;">时间</th>
  30 + <th style="width: 35%;">处理方式</th>
  31 + </tr>
  32 + </thead>
  33 + <tbody>
  34 + </tbody>
  35 + </table>
  36 + </div>
  37 + <div class="uk-modal-footer uk-text-right pagination-wrap">
  38 + </div>
  39 + </div>
  40 +
  41 + <script id="qjqz-modal-table-temp" type="text/html">
  42 + {{each list as obj i}}
  43 + <tr>
  44 + <td>{{obj.lineName}}</td>
  45 + <td>{{obj.clZbh}}</td>
  46 + <td>{{obj.jGh}}</td>
  47 + <td>
  48 + {{if obj.qjType == 0}}
  49 + 短假
  50 + {{else}}
  51 + 长假
  52 + {{/if}}
  53 + </td>
  54 + <td>{{obj.rq}}</td>
  55 + <td >
  56 + {{if obj.qjType == 0}}
  57 + <button class="uk-button" id = "pllbon" data-id="{{obj.id}}"> 批量烂班</button>
  58 + <button class="uk-button" id = "hrhc" data-id="{{obj.id}}"> 批量换人换车</button>
  59 + <button class="uk-button" id ="lp_change" data-id="{{obj.id}}"> 路牌对调</button>
  60 + <button class="uk-button" id ="cxlb" data-id="{{obj.id}}"> 恢复烂班</button>
  61 + {{else}}
  62 + 计划调度 -> 调度执勤日报
  63 + {{/if}}
  64 + </td>
  65 + </tr>
  66 + {{/each}}
  67 + </script>
  68 +
  69 + <script>
  70 + (function() {
  71 + var modal = '#report-80-modal';
  72 + var form = $('.search-form', modal);
  73 + var page = 0;
  74 + var pageSize = 12;
  75 + var datas;
  76 + //线路下拉框
  77 + var opts = '<option value="">全部</option>';
  78 + $.each(gb_data_basic.activeLines, function () {
  79 + opts += '<option value="'+this.lineCode+'">'+this.name+'</option>';
  80 + });
  81 + $('[name=lineId]', form).html(opts);
  82 +
  83 + $(modal).on('init', function(e, data) {
  84 + e.stopPropagation();
  85 + query();
  86 + });
  87 +
  88 + //sumit event
  89 + form.on('submit', function(e) {
  90 + e.preventDefault();
  91 + resetPagination = true;
  92 + page=0;
  93 + query();
  94 + });
  95 + var modal_opts = {
  96 + center: false,
  97 + bgclose: false
  98 + }
  99 +
  100 +
  101 + var folder = '/real_control_v2/fragments/line_schedule/context_menu';
  102 + var query = function() {
  103 + var data = form.serializeJSON();
  104 + data.page = page;
  105 + data.size = pageSize;
  106 + $.get('/znnd_lb', data, function(rs) {
  107 +
  108 + datas = rs.content;
  109 +
  110 + var bodyHtml = template('qjqz-modal-table-temp', {
  111 + list: datas
  112 + });
  113 +
  114 + $('table tbody', modal).html(bodyHtml);
  115 +
  116 + //pagination
  117 + if (resetPagination)
  118 + pagination(rs.totalPages, rs.page);
  119 + //烂班
  120 + $("#pllbon").on('click',function(e){
  121 + debugger
  122 + var id = $(this).data('id');
  123 + let datans = returndatas(id,datas);
  124 + $.get('/znnd_lb/lineCar', datans, function(rs) {
  125 + open_modal(folder + '/jhlb.html', {
  126 + sch: rs
  127 + }, modal_opts);
  128 + });
  129 + })
  130 +
  131 +
  132 + //换人换车
  133 + $("#hrhc").on('click',function(e){
  134 + var id = $(this).data('id');
  135 + let datans = returndatas(id,datas);
  136 + debugger
  137 + $.get('/znnd_lb/lineCar', datans, function(rs) {
  138 + open_modal(folder + '/tzrc.html', {
  139 + sch: rs
  140 + }, modal_opts);
  141 + });
  142 +
  143 + })
  144 + //路牌对调
  145 + $("#lp_change").on('click',function(e){
  146 + var id = $(this).data('id');
  147 + let datans = returndatas(id,datas);
  148 +
  149 + $.get('/znnd_lb/lineCar', datans, function(rs) {
  150 + open_modal(folder + '/lp_change.html', {
  151 + sch: rs
  152 + }, modal_opts);
  153 + });
  154 + });
  155 +
  156 +
  157 + $("#cxlb").on('click',function(e){
  158 +
  159 + var id = $(this).data('id');
  160 + let datans = returndatas(id,datas);
  161 +
  162 + var content = '<h3>确定要撤销<span style="color:red;margin: 0 5px;">' + datans.clZbh + '</span>所有的的烂班设置?</h3>'
  163 + alt_confirm(content, function () {
  164 + gb_common.$post('/znnd_lb/cxlb',datans, function (rs) {
  165 + debugger
  166 + if(rs.status!= null && rs.status == "SUCCESS"){
  167 + for(var sc in rs.list){
  168 + gb_schedule_table.updateSchedule(rs.list[sc]);
  169 + }
  170 + notify_succ('撤销烂班操作成功!');
  171 + //calc 应发未发
  172 + gb_schedule_table.calc_yfwf_num(datans.lineCode);
  173 + }else {
  174 + notify_err('无烂班班次可撤销,撤销失败!');
  175 + }
  176 + });
  177 + }, '确认撤销');
  178 +
  179 +
  180 +
  181 + });
  182 +
  183 +
  184 + })
  185 + };
  186 +
  187 +
  188 + function returndatas(id,datas){
  189 + let datans;
  190 + for (var t in datas){
  191 + if(id == datas[t].id){
  192 + datans = datas[t];
  193 + }
  194 + }
  195 + return datans;
  196 + }
  197 + var resetPagination = true;
  198 + var pagination = function(pages, currentPage) {
  199 + var wrap = $('.pagination-wrap', modal).empty()
  200 + ,e = $('<ul class="uk-pagination"></ul>').appendTo(wrap);
  201 +
  202 + var pagination = UIkit.pagination(e, {
  203 + pages: pages,
  204 + currentPage: currentPage
  205 + });
  206 +
  207 + e.on('select.uk.pagination', function(e, pageIndex){
  208 + page = pageIndex;
  209 + query();
  210 + });
  211 +
  212 + resetPagination = false;
  213 + }
  214 +
  215 +
  216 +
  217 + })();
  218 + </script>
  219 +</div>
src/main/resources/static/real_control_v2/zndd/type/djg1.html
@@ -119,7 +119,7 @@ @@ -119,7 +119,7 @@
119 var st_doms = gb_schedule_context_menu.get_add_sch_doms_v2(); 119 var st_doms = gb_schedule_context_menu.get_add_sch_doms_v2();
120 120
121 121
122 - $.post('/realSchedule/thissch/'+sch.sch.id, function(res) { 122 + $.post('/logZndd/thissch/'+sch.sch.id, function(res) {
123 123
124 //normal 124 //normal
125 $('.normalCont', modal).html(st_doms.normal_dom) 125 $('.normalCont', modal).html(st_doms.normal_dom)
src/main/resources/static/real_control_v2/zndd/type/mz.html
@@ -77,7 +77,7 @@ @@ -77,7 +77,7 @@
77 77
78 var st_doms = gb_schedule_context_menu.get_add_sch_doms_v2(); 78 var st_doms = gb_schedule_context_menu.get_add_sch_doms_v2();
79 79
80 - $.post('/znddLogger/thissch/'+sch.ids, function(res) { 80 + $.post('/logZndd/thissch/'+sch.ids, function(res) {
81 //to and fro 81 //to and fro
82 $('.toAndFroCont', modal).html(st_doms.two_way_dom) 82 $('.toAndFroCont', modal).html(st_doms.two_way_dom)
83 .trigger('init', {sch: res, submitFun: submit_temp_schedule_form, stationRoutes: stationRoutes}); 83 .trigger('init', {sch: res, submitFun: submit_temp_schedule_form, stationRoutes: stationRoutes});
@@ -445,7 +445,7 @@ @@ -445,7 +445,7 @@
445 </div> 445 </div>
446 </div> 446 </div>
447 <div class="uk-grid"> 447 <div class="uk-grid">
448 - 448 +
449 <div class="uk-width-1-1"> 449 <div class="uk-width-1-1">
450 <div class="uk-form-row"> 450 <div class="uk-form-row">
451 <label class="uk-form-label">车内视频:</label> 451 <label class="uk-form-label">车内视频:</label>
src/main/resources/static/real_control_v2/zndd/type/sftz_1.html
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
11 var modal = '#sftz-addsch-modal', 11 var modal = '#sftz-addsch-modal',
12 sch, stationRoutes, parks, information, carsArray, st_park_data,conf; 12 sch, stationRoutes, parks, information, carsArray, st_park_data,conf;
13 var f = $('.uk-form-horizontal', modal); 13 var f = $('.uk-form-horizontal', modal);
  14 + var reportTypes = [{name:"无到", code:"9101"}, {name:"无出", code:"9109"}, {name:"掉线", code:"9102"}, {name:"指令故障", code:"9103"}, {name:"车辆漂移", code:"9104"}];
14 15
15 $(modal).on('init', function (e, data) { 16 $(modal).on('init', function (e, data) {
16 e.stopPropagation(); 17 e.stopPropagation();
@@ -24,7 +25,7 @@ @@ -24,7 +25,7 @@
24 let route = stationRoutes[sch.xlDir]; 25 let route = stationRoutes[sch.xlDir];
25 sch.startStation = route[0]; 26 sch.startStation = route[0];
26 sch.stopStation = route[route.length - 1]; 27 sch.stopStation = route[route.length - 1];
27 - var formHtml = template('sftz-form-temp', sch); 28 + var formHtml = template('sftz-form-temp',{sch: sch, reportTypes:reportTypes});
28 $('form', modal).html(formHtml); 29 $('form', modal).html(formHtml);
29 30
30 //frequent_phrases.init(modal); 31 //frequent_phrases.init(modal);
@@ -42,6 +43,8 @@ @@ -42,6 +43,8 @@
42 id: sch.sch.id, 43 id: sch.sch.id,
43 remarks:"_自动调度实发未发-车辆掉线", 44 remarks:"_自动调度实发未发-车辆掉线",
44 fcsjActual:data.fcsjActual, 45 fcsjActual:data.fcsjActual,
  46 + reportTypes : data.reportTypes.join(";"),
  47 + clZbh:sch.sch.clZbh,
45 }, function (rs) { 48 }, function (rs) {
46 gb_schedule_table.updateSchedule(rs.ts); 49 gb_schedule_table.updateSchedule(rs.ts);
47 notify_succ('实发未发操作成功!'); 50 notify_succ('实发未发操作成功!');
@@ -145,7 +148,7 @@ @@ -145,7 +148,7 @@
145 148
146 149
147 <script id="sftz-form-temp" type="text/html"> 150 <script id="sftz-form-temp" type="text/html">
148 - <input type="hidden" name="id" value=""/> 151 + <input type="hidden" name="sch.id" value=""/>
149 152
150 <div class="uk-grid"> 153 <div class="uk-grid">
151 <div class="uk-width-4-2"> 154 <div class="uk-width-4-2">
@@ -157,14 +160,14 @@ @@ -157,14 +160,14 @@
157 <div class="uk-grid"> 160 <div class="uk-grid">
158 <div class="uk-width-4-2"> 161 <div class="uk-width-4-2">
159 <div class="uk-form-row"> 162 <div class="uk-form-row">
160 - <label class="uk-form-labels" >{{lineName}} {{startStation.stationName}} -> {{stopStation.stationName}}方向 的 {{clzbh}} 出现实发异常</label> 163 + <label class="uk-form-labels" >{{sch.lineName}} {{sch.startStation.stationName}} -> {{sch.stopStation.stationName}}方向 的 {{sch.clzbh}} 出现实发异常</label>
161 </div> 164 </div>
162 </div> 165 </div>
163 </div> 166 </div>
164 <div class="uk-grid"> 167 <div class="uk-grid">
165 <div class="uk-width-1-1"> 168 <div class="uk-width-1-1">
166 <div class="uk-form-row"> 169 <div class="uk-form-row">
167 - <label class="uk-form-labels">待发时间 {{sch.fcsj}}-> 实发时间 {{sch.fcsjActual}}</label> 170 + <label class="uk-form-labels">待发时间 {{sch.sch.fcsj}}-> 实发时间 {{sch.sch.fcsjActual}}</label>
168 171
169 </div> 172 </div>
170 </div> 173 </div>
@@ -191,7 +194,7 @@ @@ -191,7 +194,7 @@
191 <div class="uk-form-row"> 194 <div class="uk-form-row">
192 <label class="uk-form-label">线路名称</label> 195 <label class="uk-form-label">线路名称</label>
193 <div class="uk-form-controls"> 196 <div class="uk-form-controls">
194 - <input value="{{sch.xlName}}" disabled> 197 + <input value="{{sch.sch.xlName}}" disabled>
195 </div> 198 </div>
196 </div> 199 </div>
197 </div> 200 </div>
@@ -199,7 +202,7 @@ @@ -199,7 +202,7 @@
199 <div class="uk-form-row"> 202 <div class="uk-form-row">
200 <label class="uk-form-label">线路名称</label> 203 <label class="uk-form-label">线路名称</label>
201 <div class="uk-form-controls"> 204 <div class="uk-form-controls">
202 - <input value="{{sch.xlName}}" disabled> 205 + <input value="{{sch.sch.xlName}}" disabled>
203 </div> 206 </div>
204 </div> 207 </div>
205 </div> 208 </div>
@@ -209,7 +212,7 @@ @@ -209,7 +212,7 @@
209 <div class="uk-form-row"> 212 <div class="uk-form-row">
210 <label class="uk-form-label">待发时间</label> 213 <label class="uk-form-label">待发时间</label>
211 <div class="uk-form-controls"> 214 <div class="uk-form-controls">
212 - <input value="{{sch.dfsj}}" disabled> 215 + <input value="{{sch.sch.dfsj}}" disabled>
213 </div> 216 </div>
214 </div> 217 </div>
215 </div> 218 </div>
@@ -217,7 +220,7 @@ @@ -217,7 +220,7 @@
217 <div class="uk-form-row"> 220 <div class="uk-form-row">
218 <label class="uk-form-label">待发时间</label> 221 <label class="uk-form-label">待发时间</label>
219 <div class="uk-form-controls"> 222 <div class="uk-form-controls">
220 - <input value="{{sch.dfsj}}" disabled> 223 + <input value="{{sch.sch.dfsj}}" disabled>
221 </div> 224 </div>
222 </div> 225 </div>
223 </div> 226 </div>
@@ -227,7 +230,7 @@ @@ -227,7 +230,7 @@
227 <div class="uk-form-row"> 230 <div class="uk-form-row">
228 <label class="uk-form-label">实发时间</label> 231 <label class="uk-form-label">实发时间</label>
229 <div class="uk-form-controls"> 232 <div class="uk-form-controls">
230 - <input value="{{sch.fcsjActual}}" disabled> 233 + <input value="{{sch.sch.fcsjActual}}" disabled>
231 </div> 234 </div>
232 </div> 235 </div>
233 </div> 236 </div>
@@ -235,7 +238,7 @@ @@ -235,7 +238,7 @@
235 <div class="uk-form-row"> 238 <div class="uk-form-row">
236 <label class="uk-form-label">实发时间</label> 239 <label class="uk-form-label">实发时间</label>
237 <div class="uk-form-controls"> 240 <div class="uk-form-controls">
238 - <input type="time" value="{{sch.fcsj}}" name="fcsjActual"> 241 + <input type="time" value="{{sch.sch.fcsj}}" name="fcsjActual">
239 </div> 242 </div>
240 </div> 243 </div>
241 </div> 244 </div>
@@ -245,7 +248,7 @@ @@ -245,7 +248,7 @@
245 <div class="uk-form-row"> 248 <div class="uk-form-row">
246 <label class="uk-form-label">车辆</label> 249 <label class="uk-form-label">车辆</label>
247 <div class="uk-form-controls"> 250 <div class="uk-form-controls">
248 - <input value="{{sch.clZbh}}" disabled> 251 + <input value="{{sch.sch.clZbh}}" disabled>
249 </div> 252 </div>
250 </div> 253 </div>
251 </div> 254 </div>
@@ -253,7 +256,7 @@ @@ -253,7 +256,7 @@
253 <div class="uk-form-row"> 256 <div class="uk-form-row">
254 <label class="uk-form-label">车辆</label> 257 <label class="uk-form-label">车辆</label>
255 <div class="uk-form-controls"> 258 <div class="uk-form-controls">
256 - <input value="{{sch.clZbh}}" disabled> 259 + <input value="{{sch.sch.clZbh}}" disabled>
257 </div> 260 </div>
258 </div> 261 </div>
259 </div> 262 </div>
@@ -263,7 +266,7 @@ @@ -263,7 +266,7 @@
263 <div class="uk-form-row"> 266 <div class="uk-form-row">
264 <label class="uk-form-label">路牌</label> 267 <label class="uk-form-label">路牌</label>
265 <div class="uk-form-controls"> 268 <div class="uk-form-controls">
266 - <input value="{{sch.lpName}}" disabled> 269 + <input value="{{sch.sch.lpName}}" disabled>
267 </div> 270 </div>
268 </div> 271 </div>
269 </div> 272 </div>
@@ -271,7 +274,7 @@ @@ -271,7 +274,7 @@
271 <div class="uk-form-row"> 274 <div class="uk-form-row">
272 <label class="uk-form-label">路牌</label> 275 <label class="uk-form-label">路牌</label>
273 <div class="uk-form-controls"> 276 <div class="uk-form-controls">
274 - <input value="{{sch.lpName}}" disabled> 277 + <input value="{{sch.sch.lpName}}" disabled>
275 </div> 278 </div>
276 </div> 279 </div>
277 </div> 280 </div>
@@ -283,7 +286,7 @@ @@ -283,7 +286,7 @@
283 <div class="uk-form-row"> 286 <div class="uk-form-row">
284 <label class="uk-form-label">备注</label> 287 <label class="uk-form-label">备注</label>
285 <div class="uk-form-controls"> 288 <div class="uk-form-controls">
286 - <input value="{{sch.remarks}}" disabled> 289 + <input value="{{sch.sch.remarks}}" disabled>
287 </div> 290 </div>
288 </div> 291 </div>
289 </div> 292 </div>
@@ -298,6 +301,23 @@ @@ -298,6 +301,23 @@
298 </div> 301 </div>
299 302
300 303
  304 + <div class="uk-grid">
  305 + <div class="uk-width-1-1">
  306 + <div class="uk-form-row">
  307 + <label class="uk-form-label" >上报类型</label>
  308 + <div class="uk-form-controls report-type-checkbox-list">
  309 + {{each reportTypes as report i}}
  310 + <label>
  311 + <input class="i-cbox" name="reportTypes[]" value="{{report.code}}" type="checkbox" title="{{report.name}}">
  312 + {{report.name}}
  313 + </label>
  314 + {{/each}}
  315 + </div>
  316 + </div>
  317 + </div>
  318 + </div>
  319 +
  320 +
301 <!-- <div class="uk-grid"> 321 <!-- <div class="uk-grid">
302 <div class="uk-width-4-2"> 322 <div class="uk-width-4-2">
303 <div class="uk-form-row"> 323 <div class="uk-form-row">