Commit 88927f88927233f657467689be1184aba8d2d4ba
1 parent
c04ee95e
时刻表对比与智能调度微调
Showing
15 changed files
with
393 additions
and
33 deletions
src/main/java/com/bsth/controller/zndd/LoggerZnddController.java
| @@ -65,4 +65,25 @@ public class LoggerZnddController extends BaseController<LoggerZndd, Integer> { | @@ -65,4 +65,25 @@ public class LoggerZnddController extends BaseController<LoggerZndd, Integer> { | ||
| 65 | return loggerZnddService.nextSch(id); | 65 | return loggerZnddService.nextSch(id); |
| 66 | 66 | ||
| 67 | } | 67 | } |
| 68 | + | ||
| 69 | + /** | ||
| 70 | + * schDeepSeep查询班次情况 | ||
| 71 | + * @param | ||
| 72 | + * @return | ||
| 73 | + */ | ||
| 74 | + @RequestMapping(value = "schDeepSeep", method = RequestMethod.GET) | ||
| 75 | + public Map schDeepSeep(@RequestParam String message){ | ||
| 76 | + return loggerZnddService.schDeepSeep(message); | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + | ||
| 80 | + /** | ||
| 81 | + * 时刻表 查询前一天的班次和时刻表作对比 | ||
| 82 | + * @param | ||
| 83 | + * @return | ||
| 84 | + */ | ||
| 85 | + @RequestMapping(value = "sch_qbc", method = RequestMethod.GET) | ||
| 86 | + public List<ScheduleRealInfo> schQbc(@RequestParam String xl){ | ||
| 87 | + return loggerZnddService.schQbc(xl); | ||
| 88 | + } | ||
| 68 | } | 89 | } |
src/main/java/com/bsth/data/zndd/AutomaticSch.java
| @@ -219,7 +219,7 @@ public class AutomaticSch { | @@ -219,7 +219,7 @@ public class AutomaticSch { | ||
| 219 | //rfid 判断 | 219 | //rfid 判断 |
| 220 | List<RfidInfo> list = RfidHttpLoader.load(); | 220 | List<RfidInfo> list = RfidHttpLoader.load(); |
| 221 | for (RfidInfo ri : list) { | 221 | for (RfidInfo ri : list) { |
| 222 | - if (ri.getRecogTime() != null && ri.getRecogTime().getTime() > System.currentTimeMillis() - 300000) { | 222 | + if (ri.getRecogTime() != null && ri.getRecogTime().getTime() > System.currentTimeMillis() - 300000 && ri.getInoutStation().getTimestamp() > System.currentTimeMillis() - 300000 ) { |
| 223 | //最新的rfid是出站状态 | 223 | //最新的rfid是出站状态 |
| 224 | if (ri.getNbbm().equals(sr.getClZbh())){ | 224 | if (ri.getNbbm().equals(sr.getClZbh())){ |
| 225 | sfsj = sdfHHmm.format(ri.getInoutStation().getTimestamp()); | 225 | sfsj = sdfHHmm.format(ri.getInoutStation().getTimestamp()); |
| @@ -450,7 +450,8 @@ public class AutomaticSch { | @@ -450,7 +450,8 @@ public class AutomaticSch { | ||
| 450 | List<ScheduleRealInfo> schadd = new ArrayList<>(); | 450 | List<ScheduleRealInfo> schadd = new ArrayList<>(); |
| 451 | //每辆车下的班次 | 451 | //每辆车下的班次 |
| 452 | for (ScheduleRealInfo sch : srList) { | 452 | for (ScheduleRealInfo sch : srList) { |
| 453 | - if (s.getClZbh().equals(sch.getClZbh())) { | 453 | + //筛选掉烂班 |
| 454 | + if (s.getClZbh().equals(sch.getClZbh()) && sch.getStatus() != -1) { | ||
| 454 | schadd.add(sch); | 455 | schadd.add(sch); |
| 455 | } | 456 | } |
| 456 | } | 457 | } |
src/main/java/com/bsth/data/zndd/ZnddTwoThread.java
| @@ -104,7 +104,7 @@ public class ZnddTwoThread extends Thread{ | @@ -104,7 +104,7 @@ public class ZnddTwoThread extends Thread{ | ||
| 104 | @Override | 104 | @Override |
| 105 | public void run() { | 105 | public void run() { |
| 106 | automaticSch.TowdescSch(); | 106 | automaticSch.TowdescSch(); |
| 107 | - logger.info("末二班车"); | 107 | + logger.info("末二班车执行完毕"); |
| 108 | } | 108 | } |
| 109 | }.start();//启动线程 | 109 | }.start();//启动线程 |
| 110 | 110 |
src/main/java/com/bsth/service/zndd/LoggerZnddService.java
| @@ -25,4 +25,9 @@ public interface LoggerZnddService extends BaseService<LoggerZndd, Integer> { | @@ -25,4 +25,9 @@ public interface LoggerZnddService extends BaseService<LoggerZndd, Integer> { | ||
| 25 | Map<String, Object> schTZSF(String line,String date,String endDate,String changType,String type); | 25 | Map<String, Object> schTZSF(String line,String date,String endDate,String changType,String type); |
| 26 | 26 | ||
| 27 | ScheduleRealInfo nextSch(Long id); | 27 | ScheduleRealInfo nextSch(Long id); |
| 28 | + | ||
| 29 | + Map schDeepSeep(String message); | ||
| 30 | + | ||
| 31 | + List<ScheduleRealInfo> schQbc(String xl); | ||
| 32 | + | ||
| 28 | } | 33 | } |
src/main/java/com/bsth/service/zndd/impl/LoggerZnddServiceImpl.java
| @@ -3,6 +3,7 @@ package com.bsth.service.zndd.impl; | @@ -3,6 +3,7 @@ package com.bsth.service.zndd.impl; | ||
| 3 | import com.alibaba.fastjson.JSON; | 3 | import com.alibaba.fastjson.JSON; |
| 4 | import com.bsth.common.ResponseCode; | 4 | import com.bsth.common.ResponseCode; |
| 5 | import com.bsth.controller.realcontrol.dto.DfsjChange; | 5 | import com.bsth.controller.realcontrol.dto.DfsjChange; |
| 6 | +import com.bsth.data.BasicData; | ||
| 6 | import com.bsth.data.schedule.DayOfSchedule; | 7 | import com.bsth.data.schedule.DayOfSchedule; |
| 7 | import com.bsth.data.schedule.ScheduleComparator; | 8 | import com.bsth.data.schedule.ScheduleComparator; |
| 8 | import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto; | 9 | import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto; |
| @@ -18,6 +19,7 @@ import com.bsth.service.realcontrol.ScheduleRealInfoService; | @@ -18,6 +19,7 @@ import com.bsth.service.realcontrol.ScheduleRealInfoService; | ||
| 18 | import com.bsth.service.report.ReportService; | 19 | import com.bsth.service.report.ReportService; |
| 19 | import com.bsth.service.sys.RealControAuthorityService; | 20 | import com.bsth.service.sys.RealControAuthorityService; |
| 20 | import com.bsth.service.zndd.LoggerZnddService; | 21 | import com.bsth.service.zndd.LoggerZnddService; |
| 22 | +import com.bsth.util.DateUtils; | ||
| 21 | import com.bsth.util.ReportUtils; | 23 | import com.bsth.util.ReportUtils; |
| 22 | import org.slf4j.Logger; | 24 | import org.slf4j.Logger; |
| 23 | import org.slf4j.LoggerFactory; | 25 | import org.slf4j.LoggerFactory; |
| @@ -343,4 +345,70 @@ public class LoggerZnddServiceImpl extends BaseServiceImpl<LoggerZndd, Integer> | @@ -343,4 +345,70 @@ public class LoggerZnddServiceImpl extends BaseServiceImpl<LoggerZndd, Integer> | ||
| 343 | public ScheduleRealInfo nextSch(Long id){ | 345 | public ScheduleRealInfo nextSch(Long id){ |
| 344 | return dayOfSchedule.next(dayOfSchedule.get(id)); | 346 | return dayOfSchedule.next(dayOfSchedule.get(id)); |
| 345 | } | 347 | } |
| 348 | + | ||
| 349 | + | ||
| 350 | + public Map schDeepSeep(String message){ | ||
| 351 | + | ||
| 352 | + Map m = new HashMap<>(); | ||
| 353 | + String xl = null; //线路编码 | ||
| 354 | + String xlName = null; | ||
| 355 | + //获取所有线路 | ||
| 356 | + Map<String, String> lineMap = BasicData.lineCode2NameMap; | ||
| 357 | + for (Map.Entry<String, String> t : lineMap.entrySet()){ | ||
| 358 | + if (message.contains(t.getValue())){ | ||
| 359 | + xl = t.getKey(); | ||
| 360 | + xlName = t.getValue(); | ||
| 361 | + } | ||
| 362 | + } | ||
| 363 | + if (xl != null){ | ||
| 364 | + //总班次、进场班次、出场班次、临加班次、正常班次、区间班次。0 未执行 1 正在执行 2 已执行 -1 已烂班 | ||
| 365 | + Integer inbcs = 0,outbcs = 0,ljbcs = 0,normalbcs = 0,regionbcs =0,wzxbcs = 0 ,zzxbcs = 0,yzxbcs = 0,lbbcs = 0; | ||
| 366 | + List<ScheduleRealInfo> srList = dayOfSchedule.findByLineCode(xl);//当日所有班次 | ||
| 367 | + for(ScheduleRealInfo sc : srList) { | ||
| 368 | + if (sc.getBcType().equals("in")) | ||
| 369 | + inbcs = inbcs + 1; | ||
| 370 | + if (sc.getBcType().equals("out")) | ||
| 371 | + outbcs = outbcs + 1; | ||
| 372 | + if (sc.isSflj()) | ||
| 373 | + ljbcs = ljbcs + 1; | ||
| 374 | + if (sc.getBcType().equals("normal")) | ||
| 375 | + normalbcs = normalbcs + 1; | ||
| 376 | + if (sc.getBcType().equals("region")) | ||
| 377 | + regionbcs = regionbcs + 1; | ||
| 378 | + if (sc.getStatus() == 0) | ||
| 379 | + wzxbcs = wzxbcs + 1; | ||
| 380 | + if (sc.getStatus() == 1) | ||
| 381 | + zzxbcs = zzxbcs + 1; | ||
| 382 | + if (sc.getStatus() == 2) | ||
| 383 | + yzxbcs = yzxbcs + 1; | ||
| 384 | + if (sc.getStatus() == -1) | ||
| 385 | + lbbcs = lbbcs + 1; | ||
| 386 | + } | ||
| 387 | + m.put("code","200"); | ||
| 388 | + m.put("inbcs",inbcs); | ||
| 389 | + m.put("outbcs",outbcs); | ||
| 390 | + m.put("ljbcs",ljbcs); | ||
| 391 | + m.put("normalbcs",normalbcs); | ||
| 392 | + m.put("regionbcs",regionbcs); | ||
| 393 | + m.put("wzxbcs",wzxbcs); | ||
| 394 | + m.put("zzxbcs",zzxbcs); | ||
| 395 | + m.put("yzxbcs",yzxbcs); | ||
| 396 | + m.put("lbbcs",lbbcs); | ||
| 397 | + m.put("bcs",srList.size()); | ||
| 398 | + m.put("xlName",xlName); | ||
| 399 | + }else { | ||
| 400 | + m.put("code","100"); | ||
| 401 | + m.put("message","无法找到线路"); | ||
| 402 | + } | ||
| 403 | + | ||
| 404 | + return m; | ||
| 405 | + } | ||
| 406 | + | ||
| 407 | + | ||
| 408 | + public List<ScheduleRealInfo> schQbc(String xl){ | ||
| 409 | + //获取前一天的班次 | ||
| 410 | + List<ScheduleRealInfo> list = scheduleRealInfoRepository.scheduleByDateAndLineTjrb(xl, DateUtils.qyt_date()); | ||
| 411 | + | ||
| 412 | + return list; | ||
| 413 | + } | ||
| 346 | } | 414 | } |
src/main/java/com/bsth/util/DateUtils.java
| @@ -152,4 +152,22 @@ public class DateUtils { | @@ -152,4 +152,22 @@ public class DateUtils { | ||
| 152 | } | 152 | } |
| 153 | return num; | 153 | return num; |
| 154 | } | 154 | } |
| 155 | + //前一天 | ||
| 156 | + public static String qyt_date(){ | ||
| 157 | + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); | ||
| 158 | + | ||
| 159 | + String rq = ""; | ||
| 160 | + try { | ||
| 161 | + Date dNow = new Date(); //当前时间 | ||
| 162 | + Date dBefore = new Date(); | ||
| 163 | + Calendar calendar = Calendar.getInstance(); //得到日历 | ||
| 164 | + calendar.setTime(dNow);//把当前时间赋给日历 | ||
| 165 | + calendar.add(Calendar.DAY_OF_MONTH, -1); //设置为前一天 | ||
| 166 | + dBefore = calendar.getTime(); //得到前一天的时间 | ||
| 167 | + rq=sdf.format(dBefore); | ||
| 168 | + } catch (Exception e) { | ||
| 169 | + e.printStackTrace(); | ||
| 170 | + } | ||
| 171 | + return rq; | ||
| 172 | + } | ||
| 155 | } | 173 | } |
src/main/resources/static/pages/base/timesmodel/gantt.html
| @@ -49,6 +49,9 @@ | @@ -49,6 +49,9 @@ | ||
| 49 | </div> | 49 | </div> |
| 50 | <!-- actions 组件START --> | 50 | <!-- actions 组件START --> |
| 51 | <div class="actions"> | 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> | ||
| 54 | + </div> | ||
| 52 | <div class="btn-group btn-group-devided countbtn" data-toggle="buttons"> | 55 | <div class="btn-group btn-group-devided countbtn" data-toggle="buttons"> |
| 53 | <a class="btn btn-circle blue countAdd" href="javascript:;" data-pjax><i class="fa fa-database"></i> 排班统计</a> | 56 | <a class="btn btn-circle blue countAdd" href="javascript:;" data-pjax><i class="fa fa-database"></i> 排班统计</a> |
| 54 | </div> | 57 | </div> |
src/main/resources/static/pages/base/timesmodel/jhpbonsjpb.html
0 → 100644
| 1 | +<!-- 统计数据 --> | ||
| 2 | +<div class="modal fade" id="jhpbonsjpb_mobal" tabindex="-1" role="basic" aria-hidden="true"> | ||
| 3 | + <div class="modal-dialog" style="width: 1400px;justify-content: center; /* 水平居中 */ | ||
| 4 | + align-items: center; height: 90%; overflow-y: auto;/* 垂直居中 */"> | ||
| 5 | + <div class="modal-content"> | ||
| 6 | + <div class="modal-header"> | ||
| 7 | + <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button> | ||
| 8 | + <h4 class="modal-title">计划排班与实际班次统计数据 </h4> | ||
| 9 | + </div> | ||
| 10 | + <div class="modal-body"> | ||
| 11 | + <div class="portlet-body"> | ||
| 12 | + <div class="table-container" style="margin-top: 10px"> | ||
| 13 | + <table class="table table-striped table-bordered table-hover table-checkable" id="datatable_jhpbOnsjpd"> | ||
| 14 | + <thead> | ||
| 15 | + <tr role="row" class="heading"> | ||
| 16 | + <th>序号</th> | ||
| 17 | + <th>路牌</th> | ||
| 18 | + <th>班次数(实际)</th> | ||
| 19 | + <th>班次数</th> | ||
| 20 | + <th>营运里程(km)(实际)</th> | ||
| 21 | + <th>营运里程(km)</th> | ||
| 22 | + <th>进场时间(分)(实际)</th> | ||
| 23 | + <th>进场时间(分)</th> | ||
| 24 | + <th>出场时间(分)(实际)</th> | ||
| 25 | + <th>出场时间(分)</th> | ||
| 26 | + <th>开始营运时间(实际)</th> | ||
| 27 | + <th>开始营运时间</th> | ||
| 28 | + <th>结束营运时间(实际)</th> | ||
| 29 | + <th>结束营运时间</th> | ||
| 30 | + </tr> | ||
| 31 | + </thead> | ||
| 32 | + <tbody></tbody> | ||
| 33 | + </table> | ||
| 34 | + </div> | ||
| 35 | + </div> | ||
| 36 | + </div> | ||
| 37 | + <div class="modal-footer"> | ||
| 38 | + <button type="button" class="btn default" data-dismiss="modal">关闭</button> | ||
| 39 | + </div> | ||
| 40 | + </div> | ||
| 41 | + </div> | ||
| 42 | +</div> | ||
| 43 | +<script type="text/html" id="jhpbOnsjpd_temp"> | ||
| 44 | + {{each list as obj i }} | ||
| 45 | + <tr role="row" class="filter"> | ||
| 46 | + <td>{{i+1}}</td> | ||
| 47 | + <td>{{obj.lp}}</td> | ||
| 48 | + <td>{{obj.bcs_s}}</td> | ||
| 49 | + <td>{{obj.bcs}}</td> | ||
| 50 | + <td>{{obj.yylc_s}}</td> | ||
| 51 | + <td>{{obj.yylc}}</td> | ||
| 52 | + <td>{{obj.jclc_s}}</td> | ||
| 53 | + <td>{{obj.jclc}}</td> | ||
| 54 | + <td>{{obj.cllc_s}}</td> | ||
| 55 | + <td>{{obj.cllc}} | ||
| 56 | + <td>{{obj.ksyysj_s}}</td> | ||
| 57 | + <td>{{obj.ksyysj}} | ||
| 58 | + <td>{{obj.jsyysj_s}}</td> | ||
| 59 | + <td>{{obj.jsyysj}} | ||
| 60 | + | ||
| 61 | + | ||
| 62 | + </tr> | ||
| 63 | + {{/each}} | ||
| 64 | + {{if list.length == 0}} | ||
| 65 | + <tr> | ||
| 66 | + <td colspan=3><h6 class="muted">没有找到相关数据</h6></td> | ||
| 67 | + </tr> | ||
| 68 | + {{/if}} | ||
| 69 | +</script> | ||
| 70 | +<script type="text/javascript"> | ||
| 71 | + $('#jhpbonsjpb_mobal').on('jhpbOnsjpdMobal.show', function(e,countDate){ | ||
| 72 | + debugger | ||
| 73 | + // 加载延迟200毫秒显示mobal | ||
| 74 | + setTimeout(function(){$('#jhpbonsjpb_mobal').modal({show : true,backdrop: 'static', keyboard: false});},200); | ||
| 75 | + // 当模态框对用户可见时触发(将等待 CSS 过渡效果完成)。 | ||
| 76 | + $('#jhpbonsjpb_mobal').on('show.bs.modal', function () { | ||
| 77 | + debugger | ||
| 78 | + // 把数据填充到模版中 | ||
| 79 | + var tbodyHtml = template('jhpbOnsjpd_temp',{list:countDate}); | ||
| 80 | + // 把渲染好的模版html文本追加到表格中 | ||
| 81 | + $('#datatable_jhpbOnsjpd tbody').html(tbodyHtml); | ||
| 82 | + $('#star').raty({ readOnly: true,score: 4.5 }); | ||
| 83 | + }); | ||
| 84 | + }); | ||
| 85 | +</script> | ||
| 0 | \ No newline at end of file | 86 | \ No newline at end of file |
src/main/resources/static/pages/base/timesmodel/js/echartsDrawGanTT.js
| @@ -91,7 +91,7 @@ var echartsDrawGTT = function () { | @@ -91,7 +91,7 @@ var echartsDrawGTT = function () { | ||
| 91 | xlDir = -1; | 91 | xlDir = -1; |
| 92 | data.push({ | 92 | data.push({ |
| 93 | value: [ | 93 | value: [ |
| 94 | - bcObj.lpName,//纵坐标 | 94 | + bcObj.lpName ,//纵坐标 |
| 95 | fcsj,//开始时间 | 95 | fcsj,//开始时间 |
| 96 | ARRIVALTIME,//结束时间 | 96 | ARRIVALTIME,//结束时间 |
| 97 | bcObj.bcsj*60000,//横坐标长度(持续时间) | 97 | bcObj.bcsj*60000,//横坐标长度(持续时间) |
| @@ -108,9 +108,12 @@ var echartsDrawGTT = function () { | @@ -108,9 +108,12 @@ var echartsDrawGTT = function () { | ||
| 108 | bcObj.zdz, | 108 | bcObj.zdz, |
| 109 | bcObj.STOPTIME, | 109 | bcObj.STOPTIME, |
| 110 | bcObj.isfb ? 1:0, | 110 | bcObj.isfb ? 1:0, |
| 111 | - bcObj.qs | 111 | + bcObj.qs, |
| 112 | //bcObj.isSwitchXl, | 112 | //bcObj.isSwitchXl, |
| 113 | //bcObj.bz, | 113 | //bcObj.bz, |
| 114 | + bcObj.isjh ? 0:1, | ||
| 115 | + bcObj.fcsj, | ||
| 116 | + bcObj.ARRIVALTIME, | ||
| 114 | ], | 117 | ], |
| 115 | itemStyle: { | 118 | itemStyle: { |
| 116 | normal: { | 119 | normal: { |
| @@ -177,6 +180,7 @@ var echartsDrawGTT = function () { | @@ -177,6 +180,7 @@ var echartsDrawGTT = function () { | ||
| 177 | }, | 180 | }, |
| 178 | backgroundColor: '#fff', | 181 | backgroundColor: '#fff', |
| 179 | borderColor: 'rgba(0, 0, 20, 0.2)', | 182 | borderColor: 'rgba(0, 0, 20, 0.2)', |
| 183 | + | ||
| 180 | formatter: function (params) { | 184 | formatter: function (params) { |
| 181 | //bd--早例保;out--出场;normal--正常;cf--吃饭;in--进场;lc--晚例保;major--放站;venting--直放;region--区间 | 185 | //bd--早例保;out--出场;normal--正常;cf--吃饭;in--进场;lc--晚例保;major--放站;venting--直放;region--区间 |
| 182 | var bcTypeStr; | 186 | var bcTypeStr; |
| @@ -205,9 +209,10 @@ var echartsDrawGTT = function () { | @@ -205,9 +209,10 @@ var echartsDrawGTT = function () { | ||
| 205 | +'<br>到站时间:' + getHoursAndMinutes(params.value[2]) | 209 | +'<br>到站时间:' + getHoursAndMinutes(params.value[2]) |
| 206 | +'<br>行驶时间:' + params.value[3]/60000 +'分钟' | 210 | +'<br>行驶时间:' + params.value[3]/60000 +'分钟' |
| 207 | +'<br>停休时间:' + params.value[15] +'分钟' | 211 | +'<br>停休时间:' + params.value[15] +'分钟' |
| 208 | - +'<br>班次类型:' + bcTypeStr ; | 212 | + +'<br>班次类型:' + bcTypeStr |
| 213 | + +'<br>班次情况:' +(params.value[18] == 0 ? '调度': '计划'); | ||
| 209 | return str; | 214 | return str; |
| 210 | - } | 215 | + }, |
| 211 | }, | 216 | }, |
| 212 | grid: { | 217 | grid: { |
| 213 | top: '0px', | 218 | top: '0px', |
| @@ -297,8 +302,6 @@ var echartsDrawGTT = function () { | @@ -297,8 +302,6 @@ var echartsDrawGTT = function () { | ||
| 297 | fontWeight: 65, | 302 | fontWeight: 65, |
| 298 | formatter: function (params) { | 303 | formatter: function (params) { |
| 299 | 304 | ||
| 300 | - var p= chart.convertToPixel({xAxisIndex: 0, yAxisIndex:0},[params.data.value[1],params.data.value[2]]); | ||
| 301 | - var a = p[1]-p[0]; | ||
| 302 | var type = params.data.value[6], | 305 | var type = params.data.value[6], |
| 303 | lastStr = '',// 班次历时 | 306 | lastStr = '',// 班次历时 |
| 304 | stayStr = '',// 停站时间 | 307 | stayStr = '',// 停站时间 |
| @@ -580,7 +583,6 @@ var echartsDrawGTT = function () { | @@ -580,7 +583,6 @@ var echartsDrawGTT = function () { | ||
| 580 | textBorderWidth: 0, | 583 | textBorderWidth: 0, |
| 581 | textBorderColor: '#000', | 584 | textBorderColor: '#000', |
| 582 | formatter: function (params) { | 585 | formatter: function (params) { |
| 583 | - | ||
| 584 | var p= chart.convertToPixel({xAxisIndex: 0, yAxisIndex:0},[params.data.value[1],params.data.value[2]]); | 586 | var p= chart.convertToPixel({xAxisIndex: 0, yAxisIndex:0},[params.data.value[1],params.data.value[2]]); |
| 585 | var a = p[1]-p[0]; | 587 | var a = p[1]-p[0]; |
| 586 | var type = params.data.value[6], | 588 | var type = params.data.value[6], |
src/main/resources/static/pages/base/timesmodel/js/gantt.js
| @@ -18,7 +18,6 @@ | @@ -18,7 +18,6 @@ | ||
| 18 | }); | 18 | }); |
| 19 | // 获取已存在的该时刻表明细数据. | 19 | // 获取已存在的该时刻表明细数据. |
| 20 | var objD = window.localStorage.isDoDate; | 20 | var objD = window.localStorage.isDoDate; |
| 21 | - debugger; | ||
| 22 | // 获取表单参数配置数据. | 21 | // 获取表单参数配置数据. |
| 23 | var map = JSON.parse(window.localStorage.Gantt_AgursData); | 22 | var map = JSON.parse(window.localStorage.Gantt_AgursData); |
| 24 | $('.skmxTitle').text( '【' + map.skbmc + '】' + '时刻表明细模型'); | 23 | $('.skmxTitle').text( '【' + map.skbmc + '】' + '时刻表明细模型'); |
| @@ -120,28 +119,32 @@ | @@ -120,28 +119,32 @@ | ||
| 120 | }else { | 119 | }else { |
| 121 | var jsonA = JSON.parse(objD); | 120 | var jsonA = JSON.parse(objD); |
| 122 | // 使用已有的时刻表明细数据渲染视图. | 121 | // 使用已有的时刻表明细数据渲染视图. |
| 123 | - // data = {'json':jsonA.rsD,'bxrcgs':null}; | ||
| 124 | - CSMap = {'gattA':null,'stopSpace': Math.round(map.zzsj/map.clzs),'maxCar':jsonA.rsLP}; | ||
| 125 | - var cara = jsonA.rsLP; | ||
| 126 | var rsjar = jsonA.rsD; | 122 | var rsjar = jsonA.rsD; |
| 127 | - var resultJA = new Array(); | ||
| 128 | - for(var m = 0 ; m < cara.length; m++) { | ||
| 129 | - // 获取路牌编号. | ||
| 130 | - var lpNo_ = cara[m].lpNo; | ||
| 131 | - // 定义路牌下的所有班次. | ||
| 132 | - var lpbc_ = new Array(); | ||
| 133 | - // 遍历班次数. | ||
| 134 | - for(var x =0 ; x <rsjar.length; x++) { | ||
| 135 | - // 判断当期遍历的班次是否属于当前的路牌. | ||
| 136 | - if(rsjar[x].lpNo == lpNo_) { | ||
| 137 | - lpbc_.push(rsjar[x]); | 123 | + var rsLP = jsonA.rsLP; |
| 124 | + debugger | ||
| 125 | + //查询出当日所有班次,并加入data,json里面一块输送给 | ||
| 126 | + $.get('/logZndd/sch_qbc', {xl : rsjar[0].xl},function (data) { | ||
| 127 | + for (let t in data){ | ||
| 128 | + var sch = data[t]; | ||
| 129 | + if (sch.status == -1) | ||
| 130 | + continue; | ||
| 131 | + for (let lp in rsLP){ | ||
| 132 | + var lps = rsLP[lp]; | ||
| 133 | + //相同路牌加入到rsjar里,并特殊标注一个,提高一点y坐标 | ||
| 134 | + if(sch.lpName == lps.lpName){ | ||
| 135 | + rsjar.push(schonmap(sch,lps)); | ||
| 136 | + | ||
| 137 | + } | ||
| 138 | } | 138 | } |
| 139 | } | 139 | } |
| 140 | - // 按照发车序号顺序排序. | ||
| 141 | - lpbc_.sort(function(a,b){return a.fcno-b.fcno}); | ||
| 142 | - resultJA = resultJA.concat(BaseFun.addjclbbc01(lpbc_,dataMap,stopArray[0].lbsj,map)); | ||
| 143 | - } | ||
| 144 | - data = {'json':rsjar,'bxrcgs':null}; | 140 | + |
| 141 | + data = {'json':rsjar,'bxrcgs':null}; | ||
| 142 | + echartsDrawGTT.init(data.json,true,true); | ||
| 143 | + | ||
| 144 | + | ||
| 145 | + }); | ||
| 146 | + | ||
| 147 | + return; | ||
| 145 | } | 148 | } |
| 146 | echartsDrawGTT.init(data.json,true,true); | 149 | echartsDrawGTT.init(data.json,true,true); |
| 147 | // console.log(data.json); | 150 | // console.log(data.json); |
| @@ -208,6 +211,35 @@ | @@ -208,6 +211,35 @@ | ||
| 208 | layer.close(indexLoad); | 211 | layer.close(indexLoad); |
| 209 | },500); | 212 | },500); |
| 210 | 213 | ||
| 214 | + | ||
| 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; | ||
| 241 | + } | ||
| 242 | + | ||
| 211 | /** | 243 | /** |
| 212 | * @description : (TODO) 根据客流数据分析各个时间段内的配车数、获取发车间隙与车辆数的最大值. | 244 | * @description : (TODO) 根据客流数据分析各个时间段内的配车数、获取发车间隙与车辆数的最大值. |
| 213 | * | 245 | * |
src/main/resources/static/pages/base/timesmodel/js/systemTools.js
| @@ -440,6 +440,111 @@ $('.countAdd').on('click',function() { | @@ -440,6 +440,111 @@ $('.countAdd').on('click',function() { | ||
| 440 | }); | 440 | }); |
| 441 | }); | 441 | }); |
| 442 | 442 | ||
| 443 | + | ||
| 444 | +/**计划排班与实际班次的统计数据 | ||
| 445 | + * | ||
| 446 | + */ | ||
| 447 | + | ||
| 448 | +$('.jhpbonsjpb').on('click',function() { | ||
| 449 | + | ||
| 450 | + var historyData = echartsDrawGTT.getHistoryData(), | ||
| 451 | + list = historyData[0], | ||
| 452 | + LpData = echartsDrawGTT.getLpData(); | ||
| 453 | + //每个路牌单独计算出统计 | ||
| 454 | + var LPGroupBy = []; | ||
| 455 | + var ListLPDaata =[]; //所有路牌统计数据 | ||
| 456 | + for (var p in LpData){ | ||
| 457 | + var lp = LpData[p]; | ||
| 458 | + var m = {}; // 单个路牌统计数据 | ||
| 459 | + var bcs = 0 ; //班次数 | ||
| 460 | + var yylc = 0.0; //营运里程 | ||
| 461 | + var jclc = 0.0 ;//进场时间 | ||
| 462 | + var cllc = 0.0; //出场时间 | ||
| 463 | + var ksyyList = [];//开始营运时间 | ||
| 464 | + var jsyyList = [];//结束营运时间 | ||
| 465 | + for(var i = 0;i<list.length;i++) { | ||
| 466 | + var bcObj = list[i].value; | ||
| 467 | + //相同路牌 | ||
| 468 | + if (lp == bcObj[0]) { | ||
| 469 | + bcs++; | ||
| 470 | + yylc += bcObj[9]; | ||
| 471 | + | ||
| 472 | + if (bcObj[6] == "in") { | ||
| 473 | + jclc += bcObj[3] /60000; | ||
| 474 | + } else if (bcObj[6] == "out") { | ||
| 475 | + cllc += bcObj[3] /60000; | ||
| 476 | + } | ||
| 477 | + ksyyList.push(bcObj[19]); | ||
| 478 | + jsyyList.push(bcObj[20]); | ||
| 479 | + } | ||
| 480 | + } | ||
| 481 | + m.lp = lp; | ||
| 482 | + m.bcs = bcs; | ||
| 483 | + m.yylc = yylc; | ||
| 484 | + m.jclc = jclc; | ||
| 485 | + m.cllc = cllc; | ||
| 486 | + m.ksyysj = ksyyList[0]; | ||
| 487 | + m.jsyysj = jsyyList[jsyyList.length - 1]; | ||
| 488 | + ListLPDaata.push(m); | ||
| 489 | + var lpBole = true | ||
| 490 | + | ||
| 491 | + for(var lpg in LPGroupBy){ | ||
| 492 | + var lpn = LPGroupBy[lpg]; | ||
| 493 | + if (lpn == lp || lp.includes("_实际排班")){ | ||
| 494 | + lpBole = false; | ||
| 495 | + } | ||
| 496 | + } | ||
| 497 | + if (lpBole) | ||
| 498 | + LPGroupBy.push(lp); | ||
| 499 | + | ||
| 500 | + } | ||
| 501 | + LPGroupBy.sort(function(a,b){ | ||
| 502 | + return a - b; | ||
| 503 | + }); | ||
| 504 | + //组合成报表样式 | ||
| 505 | + BData = []; | ||
| 506 | + debugger | ||
| 507 | + //相同路牌进行数据合并 (_实际排班) | ||
| 508 | + for (let lps in LPGroupBy){ | ||
| 509 | + var map = {}; | ||
| 510 | + var lp = LPGroupBy[lps]; | ||
| 511 | + map.lp = lp; | ||
| 512 | + for (ld in ListLPDaata){ | ||
| 513 | + var data = ListLPDaata[ld]; | ||
| 514 | + //计划 | ||
| 515 | + if (lp == data.lp){ | ||
| 516 | + map.bcs = data.bcs; | ||
| 517 | + map.yylc = data.yylc; | ||
| 518 | + map.jclc = data.jclc; | ||
| 519 | + map.cllc = data.cllc; | ||
| 520 | + map.ksyysj = data.ksyysj; | ||
| 521 | + map.jsyysj = data.jsyysj; | ||
| 522 | + } | ||
| 523 | + | ||
| 524 | + //实际 | ||
| 525 | + if(lp+"_实际排班" == data.lp){ | ||
| 526 | + map.bcs_s = data.bcs; | ||
| 527 | + map.yylc_s = data.yylc; | ||
| 528 | + map.jclc_s = data.jclc; | ||
| 529 | + map.cllc_s = data.cllc; | ||
| 530 | + map.ksyysj_s = data.ksyysj; | ||
| 531 | + map.jsyysj_s = data.jsyysj; | ||
| 532 | + } | ||
| 533 | + } | ||
| 534 | + BData.push(map); | ||
| 535 | + } | ||
| 536 | + | ||
| 537 | + debugger | ||
| 538 | + | ||
| 539 | + // 弹出层mobal页面 | ||
| 540 | + $.get('/pages/base/timesmodel/jhpbonsjpb.html', function(m){ | ||
| 541 | + $(pjaxContainer).append(m); | ||
| 542 | + // 规定被选元素要触发的事件。可以使自定义事件(使用 bind() 函数来附加),或者任何标准事件。 | ||
| 543 | + $('#jhpbonsjpb_mobal').trigger('jhpbOnsjpdMobal.show',[BData]); | ||
| 544 | + }); | ||
| 545 | +}); | ||
| 546 | + | ||
| 547 | + | ||
| 443 | /** | 548 | /** |
| 444 | * @description : (TODO) 重新生成事件. | 549 | * @description : (TODO) 重新生成事件. |
| 445 | * | 550 | * |
src/main/resources/static/pages/permission/authorize_all/user_auth.html
| @@ -83,6 +83,8 @@ | @@ -83,6 +83,8 @@ | ||
| 83 | <li><label><input class="uk-checkbox" type="checkbox" data-event="signal_state"> 信号标记</label></li> | 83 | <li><label><input class="uk-checkbox" type="checkbox" data-event="signal_state"> 信号标记</label></li> |
| 84 | <li><label><input class="uk-checkbox" type="checkbox" data-event="kl_config"> 客流信息</label></li> | 84 | <li><label><input class="uk-checkbox" type="checkbox" data-event="kl_config"> 客流信息</label></li> |
| 85 | <li><label><input class="uk-checkbox" type="checkbox" data-event="zndd_status"> 智能调度开关</label></li> | 85 | <li><label><input class="uk-checkbox" type="checkbox" data-event="zndd_status"> 智能调度开关</label></li> |
| 86 | + <li><label><input class="uk-checkbox" type="checkbox" data-event="deepseek"> 调度助手(deepseek)</label></li> | ||
| 87 | + | ||
| 86 | </ul> | 88 | </ul> |
| 87 | </div> | 89 | </div> |
| 88 | <div> | 90 | <div> |
src/main/resources/static/real_control_v2/js/zndd/data_zndd.js
| @@ -5,7 +5,7 @@ var gb_dataZndd = (function (){ | @@ -5,7 +5,7 @@ var gb_dataZndd = (function (){ | ||
| 5 | var $pop =$('.multi_plat_msg_pop_zndd'); | 5 | var $pop =$('.multi_plat_msg_pop_zndd'); |
| 6 | 6 | ||
| 7 | var codes = { | 7 | var codes = { |
| 8 | - 'DJG': '大间隔', | 8 | + 'DJG': '行车大间隔', |
| 9 | 'FCJG': '发车间隔', | 9 | 'FCJG': '发车间隔', |
| 10 | 'WD': '误点', | 10 | 'WD': '误点', |
| 11 | 'MZ': '满载率高', | 11 | 'MZ': '满载率高', |
| @@ -103,6 +103,12 @@ var gb_dataZndd = (function (){ | @@ -103,6 +103,12 @@ var gb_dataZndd = (function (){ | ||
| 103 | }); | 103 | }); |
| 104 | 104 | ||
| 105 | 105 | ||
| 106 | + $pop.on('click', '.multi_plat_config_s .msg-times', function () { | ||
| 107 | + $(this).parent().parent().remove(); | ||
| 108 | + }); | ||
| 109 | + | ||
| 110 | + | ||
| 111 | + | ||
| 106 | var closetwo = true; //关闭弹出框的时候不弹出 | 112 | var closetwo = true; //关闭弹出框的时候不弹出 |
| 107 | $pop.on('click', '.multi_plat_msg_zndd .msg-times', function () { | 113 | $pop.on('click', '.multi_plat_msg_zndd .msg-times', function () { |
| 108 | $(this).parent().parent().remove(); | 114 | $(this).parent().parent().remove(); |
| @@ -127,6 +133,18 @@ var gb_dataZndd = (function (){ | @@ -127,6 +133,18 @@ var gb_dataZndd = (function (){ | ||
| 127 | } | 133 | } |
| 128 | 134 | ||
| 129 | 135 | ||
| 136 | + | ||
| 137 | + | ||
| 138 | + /* //演示-----大客流 | ||
| 139 | + $(".ys_dkl").click(function (){ | ||
| 140 | + folder = '/real_control_v2/zndd/yanshi'; | ||
| 141 | + open_modal(folder + '/yanshi.html', { | ||
| 142 | + }, {center: true, bgclose: false, modal: true}); | ||
| 143 | + | ||
| 144 | + }); | ||
| 145 | + | ||
| 146 | +*/ | ||
| 147 | + | ||
| 130 | //发车信息微调 | 148 | //发车信息微调 |
| 131 | $pop.on('click', '.fcxxwts', function () { | 149 | $pop.on('click', '.fcxxwts', function () { |
| 132 | if (close) close = false | 150 | if (close) close = false |
src/main/resources/static/real_control_v2/zndd/type/djg1.html
| @@ -476,7 +476,7 @@ | @@ -476,7 +476,7 @@ | ||
| 476 | <div class="uk-grid"> | 476 | <div class="uk-grid"> |
| 477 | <div class="uk-width-4-2"> | 477 | <div class="uk-width-4-2"> |
| 478 | <div class="uk-form-row"> | 478 | <div class="uk-form-row"> |
| 479 | - <label class="uk-form-labels" >{{lineName}} -> 起点站开往终点站 出现大间隔</label> | 479 | + <label class="uk-form-labels" >{{lineName}} -> 开往{{sch.zdzName}}方向 出现大间隔</label> |
| 480 | </div> | 480 | </div> |
| 481 | </div> | 481 | </div> |
| 482 | </div> | 482 | </div> |
src/main/resources/static/real_control_v2/zndd/zndd_status.html
| @@ -69,7 +69,7 @@ | @@ -69,7 +69,7 @@ | ||
| 69 | <td>{{obj.name}}</td> | 69 | <td>{{obj.name}}</td> |
| 70 | <td> | 70 | <td> |
| 71 | {{if obj.openStatus == 0}} | 71 | {{if obj.openStatus == 0}} |
| 72 | - <div class="uk-badge uk-badge-danger"> 开</div> | 72 | + <div class="uk-badge uk-badge-success"> 开</div> |
| 73 | {{else}} | 73 | {{else}} |
| 74 | <div class="uk-badge uk-badge-danger"> 关</div> | 74 | <div class="uk-badge uk-badge-danger"> 关</div> |
| 75 | {{/if}} | 75 | {{/if}} |