Commit 75aa8fc62821b2afd08ebac5f727638e33d64e28

Authored by ljq
1 parent 22320eab

时刻表加入看实际排班

src/main/resources/static/pages/base/timesmodel/gantt.html
... ... @@ -49,18 +49,22 @@
49 49 </div>
50 50 <!-- actions 组件START -->
51 51 <div class="actions">
52   - <div class="btn-group btn-group-devided countbtn" data-toggle="buttons">
53   - <a class="btn btn-circle blue jhpbonsjpb" href="javascript:;" data-pjax><i class="fa fa-database"></i> 计划排班与实际班次</a>
  52 + <div class="btn-group btn-group-devided " data-toggle="buttons">
  53 + <a class="btn btn-circle blue parambtns" href="javascript:;" data-pjax><i class="fa fa-list-ol" aria-hidden="true"></i> 只看实际</a>
54 54 </div>
  55 + <!-- <div class="btn-group btn-group-devided countbtn" data-toggle="buttons">
  56 + <a class="btn btn-circle blue jhpbonsjpb" href="javascript:;" data-pjax><i class="fa fa-database"></i> 计划排班与实际班次</a>
  57 + </div>-->
55 58 <div class="btn-group btn-group-devided countbtn" data-toggle="buttons">
56 59 <a class="btn btn-circle blue countAdd" href="javascript:;" data-pjax><i class="fa fa-database"></i> 排班统计</a>
57 60 </div>
58 61 <div class="btn-group btn-group-devided parambtn" data-toggle="buttons">
59 62 <a class="btn btn-circle blue paramAdd" href="javascript:;" data-pjax><i class="fa fa-list-ol" aria-hidden="true"></i> 重新生成</a>
60 63 </div>
61   - <!--<div class="btn-group btn-group-devided checkbtn" data-toggle="buttons">-->
62   - <!--<a class="btn btn-circle blue checkAdd" href="javascript:;" data-pjax><i class="fa fa-check"></i> 保存数据</a>-->
63   - <!--</div>-->
  64 +
  65 + <!--<div class="btn-group btn-group-devided checkbtn" data-toggle="buttons">
  66 + <a class="btn btn-circle blue checkAdd" href="javascript:;" data-pjax><i class="fa fa-check"></i> 保存数据</a>
  67 + </div>-->
64 68  
65 69 <div class="btn-group exportbtn">
66 70 <a href="javascript:" class="btn red btn-outline btn-circle exportAdd" data-toggle="dropdown">
... ...
src/main/resources/static/pages/base/timesmodel/js/echartsDrawGanTT.js
... ... @@ -41,8 +41,8 @@ var echartsDrawGTT = function () {
41 41 // 单个班次高度
42 42 var height;
43 43 // 坐标轴位置
44   - var baseTop = 70;
45   - var gridHeight = 60;
  44 + var baseTop = 50;
  45 + var gridHeight = 70;
46 46  
47 47 $("#bcContainer").bind("contextmenu", function(){
48 48 return false;
... ... @@ -111,9 +111,11 @@ var echartsDrawGTT = function () {
111 111 bcObj.qs,
112 112 //bcObj.isSwitchXl,
113 113 //bcObj.bz,
114   - bcObj.isjh ? 0:1,
115   - bcObj.fcsj,
116   - bcObj.ARRIVALTIME,
  114 + bcObj.qs,
  115 + bcObj.ttinfo,
  116 + bcObj.qs,
  117 + bcObj.fcsj_1,//开始时间//21 和 1对应
  118 + bcObj.ARRIVALTIME_1,//结束时间
117 119 ],
118 120 itemStyle: {
119 121 normal: {
... ... @@ -208,9 +210,8 @@ var echartsDrawGTT = function () {
208 210 +'<br>发车时间:' + getHoursAndMinutes(params.value[1])
209 211 +'<br>到站时间:' + getHoursAndMinutes(params.value[2])
210 212 +'<br>行驶时间:' + params.value[3]/60000 +'分钟'
211   - +'<br>停休时间:' + params.value[15] +'分钟'
  213 + /* +'<br>停休时间:' + params.value[15] +'分钟'*/
212 214 +'<br>班次类型:' + bcTypeStr
213   - +'<br>班次情况:' +(params.value[18] == 0 ? '调度': '计划');
214 215 return str;
215 216 },
216 217 },
... ... @@ -306,36 +307,49 @@ var echartsDrawGTT = function () {
306 307 lastStr = '',// 班次历时
307 308 stayStr = '',// 停站时间
308 309 timeStr = '',
  310 + timeStr_1 = null,
309 311 bcTypeStr = '';
310   - if(type=='bd' || type=='lc' || type=='out' || type=='in')
311   - timeStr = getHoursAndMinutes(params.data.value[1]);
312   - else
313   - timeStr = getHoursAndMinutes(params.data.value[1])+'~'+getHoursAndMinutes(params.data.value[2]);
314 312  
  313 + if (type == 'bd' || type == 'lc' || type == 'out' || type == 'in') {
  314 + debugger
  315 + timeStr = getHoursAndMinutes(params.data.value[1]);
  316 + timeStr_1 = params.data.value[21] !== undefined ? params.data.value[21] : null;
  317 + } else {
  318 + timeStr = getHoursAndMinutes(params.data.value[1]) + '~' + getHoursAndMinutes(params.data.value[2]);
  319 + var t1 = params.data.value[21] !== undefined ? params.data.value[21] : null;
  320 + var t2 = params.data.value[22] !== undefined ? params.data.value[22] : null;
  321 + if (t1 != null && t2 != null)
  322 + timeStr_1 = t1 + '~' + t2;
  323 + }
315 324 var last = params.data.value[3] / 60000;
316   - if(last>0) {
317   - if(type=='bd' || type=='lc')
  325 + if (last > 0) {
  326 + if (type == 'bd' || type == 'lc')
318 327 lastStr = "保:" + last;
319   - else if(type=='cf')
  328 + else if (type == 'cf')
320 329 lastStr = "吃:" + last;
321 330 else
322 331 lastStr = "行:" + last;
323 332 }
324 333 // 除了早晚例保,和进出场班次其余类型班次有停站时间
325   - if(type!='bd' && type!='lc' && type!='out' && type!='in') {
  334 + if (type != 'bd' && type != 'lc' && type != 'out' && type != 'in') {
326 335 //if(params.data.value[15]>=0)
327 336 stayStr = "停:" + params.data.value[15];
328 337 }
329 338 // 分班显示‘分’
330   - if(params.data.value[16] == 1)
  339 + if (params.data.value[16] == 1)
331 340 bcTypeStr = "分";
332 341 else
333 342 bcTypeStr = bcType[type];
334 343  
335 344 var arr = [
336   - '{left|' + timeStr + '}{type|'+ ((dataZoomEnd - dataZoomStart) <= 70 ? bcType[type] : '') +'}',
337   - '{left|' + lastStr + '}{left|' + stayStr + '}'
  345 + '{left|' + timeStr + '}{type|' + ((dataZoomEnd - dataZoomStart) <= 70 ? bcType[type] : '') + '}',
338 346 ];
  347 + timeStr_1 != null ? arr.push('{left|' + timeStr_1 + '}{type|' + '实' + '}') : null;
  348 + var n ='';
  349 + if (params.data.value[2] !== undefined && params.data.value[22] !== undefined)
  350 + n = getHoursAndMinutes(params.data.value[2]) == params.data.value[22] ? '' : '偏差';
  351 +
  352 + arr.push('{left|' + lastStr + '}{left|' + n + '}');
339 353 return arr.join('\n');
340 354 },
341 355 rich: {
... ... @@ -588,12 +602,18 @@ var echartsDrawGTT = function () {
588 602 var type = params.data.value[6],
589 603 lastStr = '',// 班次历时
590 604 stayStr = '',// 停站时间
591   - timeStr = '';
592   - if(type=='bd' || type=='lc' || type=='out' || type=='in')
  605 + timeStr = '',
  606 + timeStr_1 ;
  607 + if (type == 'bd' || type == 'lc' || type == 'out' || type == 'in') {
593 608 timeStr = getHoursAndMinutes(params.data.value[1]);
594   - else
595   - timeStr = getHoursAndMinutes(params.data.value[1])+'~'+getHoursAndMinutes(params.data.value[2]);
596   -
  609 + timeStr_1 = params.data.value[21] != undefined? params.data.value[21] : null;
  610 + } else {
  611 + timeStr = getHoursAndMinutes(params.data.value[1]) + '~' + getHoursAndMinutes(params.data.value[2]);
  612 + var t1 = params.data.value[21] !== undefined ? params.data.value[21]: null;
  613 + var t2 = params.data.value[22] !== undefined ? params.data.value[22]: null;
  614 + if (t1 != null && t2 != null)
  615 + timeStr_1 =t1+ '~' +t2;
  616 + }
597 617 var last = params.data.value[3] / 60000;
598 618 if(last>0) {
599 619 if(type=='bd' || type=='lc')
... ... @@ -614,9 +634,14 @@ var echartsDrawGTT = function () {
614 634 stayStr = "停:" + params.data.value[15];
615 635 }
616 636 var arr = [
617   - '{left|' + timeStr + '}{type|'+ ((dataZoomEnd - dataZoomStart) <= 70 ? bcType[type] : '') +'}',
618   - '{left|' + lastStr + '}{left|' + stayStr + '}'
  637 + '{left|' + timeStr + '}{type|' + ((dataZoomEnd - dataZoomStart) <= 70 ? bcType[type] : '') + '}',
619 638 ];
  639 + timeStr_1 != null ? arr.push('{left|' + timeStr_1 + '}{type|' + '实' + '}') : '';
  640 + var n ='';
  641 + if (params.data.value[2] !== undefined && params.data.value[22] !== undefined)
  642 + n = getHoursAndMinutes(params.data.value[2]) == params.data.value[22] ? '' : '偏差';
  643 +
  644 + arr.push('{left|' + lastStr + '}{left|' + n + '}');
620 645  
621 646 return arr.join('\n');
622 647 },
... ...
src/main/resources/static/pages/base/timesmodel/js/gantt.js
... ... @@ -121,19 +121,18 @@
121 121 // 使用已有的时刻表明细数据渲染视图.
122 122 var rsjar = jsonA.rsD;
123 123 var rsLP = jsonA.rsLP;
124   - debugger
  124 +
125 125 //查询出当日所有班次,并加入data,json里面一块输送给
126 126 $.get('/logZndd/sch_qbc', {xl : rsjar[0].xl},function (data) {
127 127 for (let t in data){
128 128 var sch = data[t];
129 129 if (sch.status == -1)
130 130 continue;
131   - for (let lp in rsLP){
132   - var lps = rsLP[lp];
  131 + for (let rs in rsjar){
  132 + var rsj = rsjar[rs];
133 133 //相同路牌加入到rsjar里,并特殊标注一个,提高一点y坐标
134   - if(sch.lpName == lps.lpName){
135   - rsjar.push(schonmap(sch,lps));
136   -
  134 + if(sch.lpName == rsj.lpName && sch.fcsj == rsj.fcsj && sch.bcType == rsj.bcType){
  135 + schonmap(sch,rsj);
137 136 }
138 137 }
139 138 }
... ... @@ -212,32 +211,23 @@
212 211 },500);
213 212  
214 213  
215   - function schonmap(sch,lp){
216   - var maps = {};
217   - maps.ARRIVALTIME = sch.zdsj;
218   - maps.STOPTIME= 0;
219   - maps.bcType = sch.bcType;
220   - maps.bcs = sch.bcs;
221   - maps.bcsj= sch.bcsj;
222   - maps.fcno= sch.fcno;
223   - maps.fcsj= sch.fcsj;
224   - maps.isSwitchXl= 0;
225   - maps.isfb =0;
226   - maps.jhlc = sch.jhlc;
227   - maps.lp = lp.lp;
228   - maps.lpName = sch.lpName;
229   - maps.lpNo = lp.lpNo;
230   - maps.lpType = lp.lpType;
231   - maps.parent= 1;
232   - maps.qdz= sch.qdzCode;
233   - maps.tcc = 98;
234   - //maps.ttinfo: 7061
235   - maps.xl = sch.xlBm;
236   - maps.xlDir= sch.xlDir == 0 ? "relationshipGraph-up" : "relationshipGraph-down";
237   - maps.zdz= sch.zdzCode;
238   - maps.isjh = true;
239   - maps.lpName = sch.lpName + "_实际排班";
240   - return maps;
  214 + function schonmap(sch,rsj){
  215 + rsj.ARRIVALTIME_1 = sch.zdsjActual;
  216 + rsj.bcType_1 = sch.bcType;
  217 + rsj.bcs_1 = sch.bcs;
  218 + rsj.bcsj_1= sch.bcsj;
  219 + rsj.fcno_1= sch.fcno;
  220 + rsj.fcsj_1= sch.fcsjActual;
  221 + rsj.isSwitchXl_1= 0;
  222 + rsj.isfb_1 =0;
  223 + rsj.jhlc_1 = sch.jhlc;
  224 + rsj.lpName_1 = sch.lpName;
  225 + rsj.parent_1= 1;
  226 + rsj.qdz_1= sch.qdzCode;
  227 + rsj.xl_1 = sch.xlBm;
  228 + rsj.xlDir_1= sch.xlDir == 0 ? "relationshipGraph-up" : "relationshipGraph-down";
  229 + rsj.zdz_1= sch.zdzCode;
  230 + rsj.isjh_1 = true;
241 231 }
242 232  
243 233 /**
... ...
src/main/resources/static/pages/base/timesmodel/js/systemTools.js
... ... @@ -457,7 +457,7 @@ $(&#39;.jhpbonsjpb&#39;).on(&#39;click&#39;,function() {
457 457 var lp = LpData[p];
458 458 var m = {}; // 单个路牌统计数据
459 459 var bcs = 0 ; //班次数
460   - var yylc = 0.0; //营运里程
  460 + var yylc = 0; //营运里程
461 461 var jclc = 0.0 ;//进场时间
462 462 var cllc = 0.0; //出场时间
463 463 var ksyyList = [];//开始营运时间
... ... @@ -466,18 +466,28 @@ $(&#39;.jhpbonsjpb&#39;).on(&#39;click&#39;,function() {
466 466 var bcObj = list[i].value;
467 467 //相同路牌
468 468 if (lp == bcObj[0]) {
469   - bcs++;
470   - yylc += bcObj[9];
  469 +
471 470  
472 471 if (bcObj[6] == "in") {
473 472 jclc += bcObj[3] /60000;
474 473 } else if (bcObj[6] == "out") {
475 474 cllc += bcObj[3] /60000;
  475 + }else {
  476 + bcs++;
  477 +
  478 + yylc += bcObj[9];
476 479 }
477 480 ksyyList.push(bcObj[19]);
478 481 jsyyList.push(bcObj[20]);
479 482 }
480 483 }
  484 + ksyyList.sort(function(a,b){
  485 + return hhmmToTimestamp(a) - hhmmToTimestamp(b);
  486 + });
  487 + jsyyList.sort(function(a,b){
  488 + return hhmmToTimestamp(a) - hhmmToTimestamp(b);
  489 + });
  490 +
481 491 m.lp = lp;
482 492 m.bcs = bcs;
483 493 m.yylc = yylc;
... ... @@ -498,6 +508,19 @@ $(&#39;.jhpbonsjpb&#39;).on(&#39;click&#39;,function() {
498 508 LPGroupBy.push(lp);
499 509  
500 510 }
  511 +
  512 + //转时间戳
  513 + function hhmmToTimestamp(hhmm, date = new Date()) {
  514 + // 分割小时和分钟
  515 + const [hours, minutes] = hhmm.split(':').map(Number);
  516 +
  517 + // 设置日期对象的小时和分钟
  518 + date.setHours(hours, minutes, 0, 0); // 设置秒和毫秒为0
  519 +
  520 + // 返回时间戳
  521 + return date.getTime();
  522 + }
  523 +
501 524 LPGroupBy.sort(function(a,b){
502 525 return a - b;
503 526 });
... ... @@ -545,6 +568,110 @@ $(&#39;.jhpbonsjpb&#39;).on(&#39;click&#39;,function() {
545 568 });
546 569  
547 570  
  571 +
  572 +$('.parambtns').on('click',function (){
  573 + var historyData = echartsDrawGTT.getHistoryData(),
  574 + list = historyData[0];
  575 + var rsLP = echartsDrawGTT.getLpData(),
  576 + rsjar = [];
  577 + debugger
  578 + rsLP.sort(function(m,n){return m-n})
  579 + //查询出当日所有班次,并加入data,json里面一块输送给
  580 + $.get('/logZndd/sch_qbc', {xl : list[0].value[12]},function (data) {
  581 + for (let t in data){
  582 + var sch = data[t];
  583 + if (sch.status == -1)
  584 + continue;
  585 + for (let lp in rsLP){
  586 + var lps = rsLP[lp];
  587 + //相同路牌加入到rsjar里,并特殊标注一个,提高一点y坐标
  588 + if(sch.lpName == lps){
  589 + rsjar.push(schonmap(sch));
  590 + }
  591 + }
  592 + }
  593 + // 2、重新刷新表单数据
  594 + echartsDrawGTT.init(rsjar,true,true);
  595 + })
  596 +})
  597 +
  598 +/**
  599 + * @description : (TODO) 监听保存数据事件.
  600 + *
  601 + * @status OK.
  602 + ************************************************************************************************************************************************/
  603 +$('.checkAdd').on('click',function() {
  604 + var historyData = echartsDrawGTT.getHistoryData(),
  605 + list = historyData[0];
  606 + var rsLP = echartsDrawGTT.getLpData(),
  607 +
  608 + bcData = echartsDrawGTT.getHistoryData(),
  609 + bcData
  610 + rsjar = [];
  611 + debugger
  612 + var xl = list[0].value[12];
  613 + // 判断选择框是否存在.、
  614 + // 关闭所有提示弹出层.
  615 + layer.closeAll();
  616 + layer.confirm('您正处于【批量班次操作】过程中...是否确定退出当前操作进行【保存数据】!', {
  617 + btn : [ '确认提示并提交', '取消' ]
  618 + },function () {
  619 + // 关闭所有提示弹出层.
  620 + layer.closeAll();
  621 +
  622 + layer.confirm('系统已存在-->线路【'+
  623 + xl +'】-->时刻表明细!是否覆盖!', {
  624 + btn : [ '确认并提交', '取消' ]
  625 + },function () {
  626 + // 关闭所有提示弹出层.
  627 + layer.closeAll();
  628 + // 2、弹出提示层.
  629 + var index = layer.load(1, {
  630 + shade: [0.1,'#fff'] // 0.1透明度的白色背景
  631 + });
  632 + var skb = list[0].value[19];
  633 + // 3、post请求保存数据.
  634 + $post('/tidc/skbDetailMxSave',{'d':JSON.stringify(list), 'xl':xl, 'skb':skb},function(result) {
  635 + // 3.1、关闭弹出层.
  636 + layer.close(index);
  637 + if(result){
  638 + if(result.status=='SUCCESS') {
  639 + layer.msg('保存成功...');// 弹出添加成功提示消息
  640 + } else if(result.status=='ERROR') {
  641 + layer.msg('保存失败...');// 弹出添加失败提示消息
  642 + }
  643 + }
  644 + loadPage('index.html');// 返回index.html页面
  645 + });
  646 + });
  647 + });
  648 +});
  649 +function schonmap(sch){
  650 + var maps = {};
  651 + maps.ARRIVALTIME = sch.zdsjActual;
  652 + maps.STOPTIME= 0;
  653 + maps.bcType = sch.bcType;
  654 + maps.bcs = sch.bcs;
  655 + maps.bcsj= sch.bcsj;
  656 + maps.fcno= sch.fcno;
  657 + maps.fcsj= sch.fcsjActual;
  658 + maps.isSwitchXl= 0;
  659 + maps.isfb =0;
  660 + maps.jhlc = sch.jhlc;
  661 + maps.lp = sch.lpName;
  662 + maps.lpNo = Math.max(sch.lpName);
  663 + maps.lpName = sch.lpName;
  664 + maps.lpType = '普通路牌';
  665 + maps.parent= 1;
  666 + maps.qdz= sch.qdzCode;
  667 + maps.tcc = 98;
  668 + //maps.ttinfo: 7061
  669 + maps.xl = sch.xlBm;
  670 + maps.xlDir= sch.xlDir == 0 ? "relationshipGraph-up" : "relationshipGraph-down";
  671 + maps.zdz= sch.zdzCode;
  672 + maps.isjh = true;
  673 + return maps;
  674 +}
548 675 /**
549 676 * @description : (TODO) 重新生成事件.
550 677 *
... ...