Commit 101f51c9493d1d7a3dc64498d448e367ed49c225

Authored by 潘钊
2 parents f92205dc ade54c1f

Merge branch 'minhang' into qingpu

src/main/java/com/bsth/controller/directive/DirectiveController.java~HEAD deleted 100644 → 0
1 -//package com.bsth.controller.directive;  
2 -//  
3 -//import java.util.List;  
4 -//import java.util.Map;  
5 -//  
6 -//import org.springframework.beans.factory.annotation.Autowired;  
7 -//import org.springframework.data.domain.Page;  
8 -//import org.springframework.data.domain.PageRequest;  
9 -//import org.springframework.data.domain.Sort;  
10 -//import org.springframework.data.domain.Sort.Direction;  
11 -//import org.springframework.web.bind.annotation.RequestMapping;  
12 -//import org.springframework.web.bind.annotation.RequestMethod;  
13 -//import org.springframework.web.bind.annotation.RequestParam;  
14 -//import org.springframework.web.bind.annotation.RestController;  
15 -//  
16 -//import com.bsth.entity.directive.D80;  
17 -//import com.bsth.entity.sys.SysUser;  
18 -//import com.bsth.security.util.SecurityUtils;  
19 -//import com.bsth.service.directive.DirectiveService;  
20 -//  
21 -///**  
22 -// *  
23 -// * @ClassName: DirectiveController  
24 -// * @Description: TODO(页面下发调度指令) .0  
25 -// * @author PanZhao  
26 -// * @date 2016年6月8日 上午9:34:51  
27 -// *  
28 -// */  
29 -//@RestController  
30 -//@RequestMapping("/directive")  
31 -//public class DirectiveController {  
32 -//  
33 -// @Autowired  
34 -// DirectiveService directiveService;  
35 -//  
36 -// /**  
37 -// *  
38 -// * @Title: send60  
39 -// * @Description: TODO(60协议短语下发)  
40 -// * @throws  
41 -// */  
42 -// @RequestMapping(value = "/phrase", method = RequestMethod.POST)  
43 -// public int send60Phrase(@RequestParam String nbbm, @RequestParam String text){  
44 -// SysUser user = SecurityUtils.getCurrentUser();  
45 -// return directiveService.send60Phrase(nbbm, text, user.getUserName());  
46 -// }  
47 -//  
48 -// /**  
49 -// *  
50 -// * @Title: send60Dispatch  
51 -// * @Description: TODO(班次信息下发)  
52 -// * @param @param id  
53 -// * @throws  
54 -// */  
55 -// @RequestMapping(value = "/dispatch", method = RequestMethod.POST)  
56 -// public int send60Dispatch(@RequestParam Long id){  
57 -// SysUser user = SecurityUtils.getCurrentUser();  
58 -// return directiveService.send60Dispatch(id, user.getUserName());  
59 -// }  
60 -//  
61 -// /**  
62 -// *  
63 -// * @Title: lineChange  
64 -// * @Description: TODO(切换线路)  
65 -// * @param @param nbbm 车辆内部编码  
66 -// * @param @param lineId 新线路编码  
67 -// * @throws  
68 -// */  
69 -// @RequestMapping(value = "/lineChnage", method = RequestMethod.POST)  
70 -// public int lineChange(@RequestParam String nbbm, @RequestParam Integer lineId){  
71 -// SysUser user = SecurityUtils.getCurrentUser();  
72 -// return directiveService.lineChange(nbbm, lineId, user.getUserName());  
73 -// }  
74 -//  
75 -// /**  
76 -// *  
77 -// * @Title: upDownChange  
78 -// * @Description: TODO(上下行切换)  
79 -// * @param @param nbbm 车辆内部编码  
80 -// * @param @param upDon  
81 -// * @throws  
82 -// */  
83 -// @RequestMapping(value = "/upDownChange", method = RequestMethod.POST)  
84 -// public int upDownChange(@RequestParam String nbbm, @RequestParam Integer upDown){  
85 -// SysUser user = SecurityUtils.getCurrentUser();  
86 -// return directiveService.upDownChange(nbbm, upDown, user.getUserName());  
87 -// }  
88 -//  
89 -// /**  
90 -// *  
91 -// * @Title: findNoCofm80  
92 -// * @Description: TODO(根据线路获取未确认的80驾驶员上报数据)  
93 -// * @throws  
94 -// */  
95 -// @RequestMapping(value = "/findNoCofm80", method = RequestMethod.GET)  
96 -// public Map<String, List<D80>> findNoCofm80(@RequestParam String lineCodes){  
97 -// return directiveService.findNoCofm80(lineCodes);  
98 -// }  
99 -//  
100 -// @RequestMapping(value = "/findAll80", method = RequestMethod.GET)  
101 -// public Page<D80> findAll80(@RequestParam Map<String, Object> map,  
102 -// @RequestParam(defaultValue = "0") int page,  
103 -// @RequestParam(defaultValue = "12") int size){  
104 -//  
105 -// return directiveService.findAll80(map, new PageRequest(page, size, new Sort(Direction.DESC, "timestamp")));  
106 -// }  
107 -//  
108 -// /**  
109 -// *  
110 -// * @Title: reply80  
111 -// * @Description: TODO(回复80)  
112 -// * @param @param reply 0:同意 -1:不同意  
113 -// * @throws  
114 -// */  
115 -// @RequestMapping(value = "/reply80", method = RequestMethod.POST)  
116 -// public Map<String, Object> reply80(@RequestParam int id, @RequestParam int reply){  
117 -// return directiveService.reply80(id, reply);  
118 -// }  
119 -//  
120 -// /**  
121 -// *  
122 -// * @Title: findDirective  
123 -// * @Description: TODO(查询调度指令)  
124 -// * @param @param nbbm 车辆  
125 -// * @param @param dType 类型  
126 -// * @param @param page 页号  
127 -// * @param @param size 每页数量  
128 -// * @throws  
129 -// */  
130 -// @RequestMapping(value = "/list", method = RequestMethod.GET)  
131 -// public Map<String, Object> findDirective(String nbbm,@RequestParam int dType  
132 -// , @RequestParam(defaultValue = "0") int page,  
133 -// @RequestParam(defaultValue = "10") int size){  
134 -//  
135 -// return directiveService.findDirective(nbbm, dType, page, size);  
136 -// }  
137 -//}  
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -300,6 +300,7 @@ public class DayOfSchedule implements CommandLineRunner { @@ -300,6 +300,7 @@ public class DayOfSchedule implements CommandLineRunner {
300 try{ 300 try{
301 sch.setZdsjT(DateUtils.sdfHHmm.parse(sch.getFcsj()).getTime() + (sch.getBcsj() * 60 * 1000)); 301 sch.setZdsjT(DateUtils.sdfHHmm.parse(sch.getFcsj()).getTime() + (sch.getBcsj() * 60 * 1000));
302 sch.setZdsj(DateUtils.sdfHHmm.format(sch.getZdsjT())); 302 sch.setZdsj(DateUtils.sdfHHmm.format(sch.getZdsjT()));
  303 + sch.setLate(false);
303 }catch(ParseException pe){ 304 }catch(ParseException pe){
304 logger.error("loadPlanSch... 计算终点时间失败..."); 305 logger.error("loadPlanSch... 计算终点时间失败...");
305 } 306 }
src/main/java/com/bsth/entity/forecast/Sample.java
@@ -37,9 +37,13 @@ public class Sample { @@ -37,9 +37,13 @@ public class Sample {
37 37
38 // 开始站点 38 // 开始站点
39 private String sStation; 39 private String sStation;
  40 + @Transient
  41 + private String sName;
40 42
41 // 结束站点 43 // 结束站点
42 private String eStation; 44 private String eStation;
  45 + @Transient
  46 + private String eName;
43 47
44 // 0:gps分析生成, 1:人工录入 48 // 0:gps分析生成, 1:人工录入
45 private int type; 49 private int type;
@@ -146,4 +150,20 @@ public class Sample { @@ -146,4 +150,20 @@ public class Sample {
146 public void setUpdown(int updown) { 150 public void setUpdown(int updown) {
147 this.updown = updown; 151 this.updown = updown;
148 } 152 }
  153 +
  154 + public String getsName() {
  155 + return sName;
  156 + }
  157 +
  158 + public void setsName(String sName) {
  159 + this.sName = sName;
  160 + }
  161 +
  162 + public String geteName() {
  163 + return eName;
  164 + }
  165 +
  166 + public void seteName(String eName) {
  167 + this.eName = eName;
  168 + }
149 } 169 }
src/main/java/com/bsth/entity/realcontrol/ScheduleRealInfo.java
@@ -140,6 +140,7 @@ public class ScheduleRealInfo { @@ -140,6 +140,7 @@ public class ScheduleRealInfo {
140 private boolean sflj; 140 private boolean sflj;
141 141
142 /** 是否误点*/ 142 /** 是否误点*/
  143 + @Transient
143 private boolean late; 144 private boolean late;
144 145
145 /**实际里程*/ 146 /**实际里程*/
src/main/java/com/bsth/service/forecast/SampleServiceImpl.java
1 package com.bsth.service.forecast; 1 package com.bsth.service.forecast;
2 2
  3 +import java.util.Iterator;
  4 +import java.util.Map;
  5 +
3 import org.springframework.stereotype.Service; 6 import org.springframework.stereotype.Service;
4 7
  8 +import com.bsth.data.BasicData;
5 import com.bsth.entity.forecast.Sample; 9 import com.bsth.entity.forecast.Sample;
6 import com.bsth.service.impl.BaseServiceImpl; 10 import com.bsth.service.impl.BaseServiceImpl;
7 11
8 @Service 12 @Service
9 public class SampleServiceImpl extends BaseServiceImpl<Sample, Long>{ 13 public class SampleServiceImpl extends BaseServiceImpl<Sample, Long>{
10 14
  15 + @Override
  16 + public Iterable<Sample> list(Map<String, Object> map) {
  17 + Iterable<Sample> rs = super.list(map);
  18 +
  19 + //转换站点名称
  20 + Iterator<Sample> iterator = rs.iterator();
  21 + Sample s;
  22 + while(iterator.hasNext()){
  23 + s = iterator.next();
  24 + s.setsName(BasicData.stationCode2NameMap.get(s.getsStation()));
  25 + s.seteName(BasicData.stationCode2NameMap.get(s.geteStation()));
  26 + }
  27 + return rs;
  28 + }
11 } 29 }
src/main/resources/application-dev.properties
@@ -8,7 +8,7 @@ spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy @@ -8,7 +8,7 @@ spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
8 spring.jpa.database= MYSQL 8 spring.jpa.database= MYSQL
9 spring.jpa.show-sql= true 9 spring.jpa.show-sql= true
10 spring.datasource.driver-class-name= com.mysql.jdbc.Driver 10 spring.datasource.driver-class-name= com.mysql.jdbc.Driver
11 -spring.datasource.url= jdbc:mysql://127.0.0.1:3306/qp_control 11 +spring.datasource.url= jdbc:mysql://127.0.0.1:3306/control
12 spring.datasource.username= root 12 spring.datasource.username= root
13 spring.datasource.password= panzhao 13 spring.datasource.password= panzhao
14 #DATASOURCE 14 #DATASOURCE
src/main/resources/application-prod.properties
@@ -8,9 +8,9 @@ spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy @@ -8,9 +8,9 @@ spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
8 spring.jpa.database= MYSQL 8 spring.jpa.database= MYSQL
9 spring.jpa.show-sql= true 9 spring.jpa.show-sql= true
10 spring.datasource.driver-class-name= com.mysql.jdbc.Driver 10 spring.datasource.driver-class-name= com.mysql.jdbc.Driver
11 -spring.datasource.url= jdbc:mysql://192.168.40.82:3306/qp_control 11 +spring.datasource.url= jdbc:mysql://192.168.168.171:3306/control
12 spring.datasource.username= root 12 spring.datasource.username= root
13 -spring.datasource.password= 123456 13 +spring.datasource.password= root2jsp
14 #DATASOURCE 14 #DATASOURCE
15 spring.datasource.max-active=100 15 spring.datasource.max-active=100
16 spring.datasource.max-idle=8 16 spring.datasource.max-idle=8
@@ -26,6 +26,6 @@ spring.datasource.validation-query=select 1 @@ -26,6 +26,6 @@ spring.datasource.validation-query=select 1
26 ## 26 ##
27 #222.66.0.204:5555 27 #222.66.0.204:5555
28 ##\u5B9E\u65F6gps 28 ##\u5B9E\u65F6gps
29 -http.gps.real.url= http://192.168.40.82:8080/transport_server/rtgps/ 29 +http.gps.real.url= http://192.168.168.171:8080/transport_server/rtgps/
30 ##\u6D88\u606F\u4E0B\u53D1 30 ##\u6D88\u606F\u4E0B\u53D1
31 -http.send.directive = http://192.168.40.82:8080/transport_server/message/ 31 +http.send.directive = http://192.168.168.171:8080/transport_server/message/
32 \ No newline at end of file 32 \ No newline at end of file
src/main/resources/ms-jdbc.properties
@@ -4,6 +4,6 @@ @@ -4,6 +4,6 @@
4 #ms.mysql.password= panzhao 4 #ms.mysql.password= panzhao
5 5
6 ms.mysql.driver= com.mysql.jdbc.Driver 6 ms.mysql.driver= com.mysql.jdbc.Driver
7 -ms.mysql.url= jdbc:mysql://192.168.40.82:3306/ms?useUnicode=true&characterEncoding=utf-8 7 +ms.mysql.url= jdbc:mysql://192.168.168.171:3306/ms?useUnicode=true&characterEncoding=utf-8
8 ms.mysql.username= root 8 ms.mysql.username= root
9 -ms.mysql.password= 123456 9 +ms.mysql.password= root2jsp
src/main/resources/static/assets/img/login_bgcenter.png

40.8 KB | W: | H:

37.4 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
src/main/resources/static/assets/img/logo_text.png deleted 100644 → 0

15 KB

src/main/resources/static/index.html
@@ -143,7 +143,7 @@ tr.row-active td { @@ -143,7 +143,7 @@ tr.row-active td {
143 <div class="page-header-inner "> 143 <div class="page-header-inner ">
144 <!-- LOGO --> 144 <!-- LOGO -->
145 <div class="page-logo"> 145 <div class="page-logo">
146 - <a href="index.html" class="logo-default logo-default-text" > 青浦公交调度系统 </a> 146 + <a href="index.html" class="logo-default logo-default-text" > 闵行公交调度系统 </a>
147 <div class="menu-toggler sidebar-toggler"> 147 <div class="menu-toggler sidebar-toggler">
148 </div> 148 </div>
149 </div> 149 </div>
src/main/resources/static/pages/base/lineinformation/add.html
@@ -252,6 +252,83 @@ @@ -252,6 +252,83 @@
252 </div> 252 </div>
253 </div> 253 </div>
254 254
  255 +
  256 + <!-- 上行进场时间 -->
  257 + <div class="form-group">
  258 + <label class="control-label col-md-3"> 上行进场时间 : </label>
  259 + <div class="col-md-4">
  260 + <input type="text" class="form-control" name="upInTimer" id="upInTimerInput" placeholder="上行进场时间">
  261 + <span class="help-block"> 描述:上行起点至停车场的进场时间 </span>
  262 + </div>
  263 + </div>
  264 +
  265 + <!--上行出场时间 -->
  266 + <div class="form-group">
  267 + <label class="control-label col-md-3"> 上行出场时间 : </label>
  268 + <div class="col-md-4">
  269 + <input type="text" class="form-control" name="upOutTimer" id="upOutTimerInput" placeholder="上行出场时间">
  270 + <span class="help-block"> 描述:上行起点至停车场的出场时间 </span>
  271 + </div>
  272 + </div>
  273 +
  274 + <!-- 下行进场时间 -->
  275 + <div class="form-group">
  276 + <label class="control-label col-md-3"> 下行进场时间 : </label>
  277 + <div class="col-md-4">
  278 + <input type="text" class="form-control" name="downInTimer" id="downInTimerInput" placeholder="下行进场时间">
  279 + <span class="help-block"> 描述:下行起点至停车场的进场时间 </span>
  280 + </div>
  281 + </div>
  282 +
  283 + <!-- 下行出场时间 -->
  284 + <div class="form-group">
  285 + <label class="control-label col-md-3"> 下行出场时间: </label>
  286 + <div class="col-md-4">
  287 + <input type="text" class="form-control" name="downOutTimer" id="downOutTimerInput" placeholder="下行出场时间">
  288 + <span class="help-block"> 描述:下行起点至停车场的出场时间 </span>
  289 + </div>
  290 + </div>
  291 +
  292 +
  293 +
  294 + <!-- 上行进场里程 -->
  295 + <div class="form-group">
  296 + <label class="control-label col-md-3"> 上行进场里程 : </label>
  297 + <div class="col-md-4">
  298 + <input type="text" class="form-control" name="upInMileage" id="upInMileageInput" placeholder="上行进场里程">
  299 + <span class="help-block"> 描述:上行起点至停车场的进场里程 </span>
  300 + </div>
  301 + </div>
  302 +
  303 + <!-- 上行出场里程 -->
  304 + <div class="form-group">
  305 + <label class="control-label col-md-3"> 上行出场里程: </label>
  306 + <div class="col-md-4">
  307 + <input type="text" class="form-control" name="upOutMileage" id="upOutMileageInput" placeholder="上行出场里程">
  308 + <span class="help-block"> 描述:上行起点至停车场的出场里程 </span>
  309 + </div>
  310 + </div>
  311 +
  312 + <!-- 下行进场里程 -->
  313 + <div class="form-group">
  314 + <label class="control-label col-md-3"> 下行进场里程 : </label>
  315 + <div class="col-md-4">
  316 + <input type="text" class="form-control" name="downInMileage" id="downInMileageInput" placeholder="下行进场里程">
  317 + <span class="help-block"> 描述:下行起点至停车场的进场里程 </span>
  318 + </div>
  319 + </div>
  320 +
  321 + <!-- 下行出场里程 -->
  322 + <div class="form-group">
  323 + <label class="control-label col-md-3"> 下行出场里程: </label>
  324 + <div class="col-md-4">
  325 + <input type="text" class="form-control" name="downOutMileage" id="downOutMileageInput" placeholder="下行出场里程">
  326 + <span class="help-block"> 描述:下行起点至停车场的出场里程 </span>
  327 + </div>
  328 + </div>
  329 +
  330 +
  331 +
255 <!-- 出场里程 --> 332 <!-- 出场里程 -->
256 <div class="form-group"> 333 <div class="form-group">
257 <label class="control-label col-md-3"> 出场里程: </label> 334 <label class="control-label col-md-3"> 出场里程: </label>
src/main/resources/static/pages/base/lineinformation/details.html
@@ -250,6 +250,81 @@ @@ -250,6 +250,81 @@
250 </div> 250 </div>
251 </div> 251 </div>
252 252
  253 +
  254 + <!-- 上行进场时间 -->
  255 + <div class="form-group">
  256 + <label class="control-label col-md-3"> 上行进场时间 : </label>
  257 + <div class="col-md-4">
  258 + <input type="text" class="form-control" name="upInTimer" id="upInTimerInput" placeholder="上行进场时间">
  259 + <span class="help-block"> 描述:上行起点至停车场的进场时间 </span>
  260 + </div>
  261 + </div>
  262 +
  263 + <!--上行出场时间 -->
  264 + <div class="form-group">
  265 + <label class="control-label col-md-3"> 上行出场时间 : </label>
  266 + <div class="col-md-4">
  267 + <input type="text" class="form-control" name="upOutTimer" id="upOutTimerInput" placeholder="上行出场时间">
  268 + <span class="help-block"> 描述:上行起点至停车场的出场时间 </span>
  269 + </div>
  270 + </div>
  271 +
  272 + <!-- 下行进场时间 -->
  273 + <div class="form-group">
  274 + <label class="control-label col-md-3"> 下行进场时间 : </label>
  275 + <div class="col-md-4">
  276 + <input type="text" class="form-control" name="downInTimer" id="downInTimerInput" placeholder="下行进场时间">
  277 + <span class="help-block"> 描述:下行起点至停车场的进场时间 </span>
  278 + </div>
  279 + </div>
  280 +
  281 + <!-- 下行出场时间 -->
  282 + <div class="form-group">
  283 + <label class="control-label col-md-3"> 下行出场时间: </label>
  284 + <div class="col-md-4">
  285 + <input type="text" class="form-control" name="downOutTimer" id="downOutTimerInput" placeholder="下行出场时间">
  286 + <span class="help-block"> 描述:下行起点至停车场的出场时间 </span>
  287 + </div>
  288 + </div>
  289 +
  290 +
  291 +
  292 + <!-- 上行进场里程 -->
  293 + <div class="form-group">
  294 + <label class="control-label col-md-3"> 上行进场里程 : </label>
  295 + <div class="col-md-4">
  296 + <input type="text" class="form-control" name="upInMileage" id="upInMileageInput" placeholder="上行进场里程">
  297 + <span class="help-block"> 描述:上行起点至停车场的进场里程 </span>
  298 + </div>
  299 + </div>
  300 +
  301 + <!-- 上行出场里程 -->
  302 + <div class="form-group">
  303 + <label class="control-label col-md-3"> 上行出场里程: </label>
  304 + <div class="col-md-4">
  305 + <input type="text" class="form-control" name="upOutMileage" id="upOutMileageInput" placeholder="上行出场里程">
  306 + <span class="help-block"> 描述:上行起点至停车场的出场里程 </span>
  307 + </div>
  308 + </div>
  309 +
  310 + <!-- 下行进场里程 -->
  311 + <div class="form-group">
  312 + <label class="control-label col-md-3"> 下行进场里程 : </label>
  313 + <div class="col-md-4">
  314 + <input type="text" class="form-control" name="downInMileage" id="downInMileageInput" placeholder="下行进场里程">
  315 + <span class="help-block"> 描述:下行起点至停车场的进场里程 </span>
  316 + </div>
  317 + </div>
  318 +
  319 + <!-- 下行出场里程 -->
  320 + <div class="form-group">
  321 + <label class="control-label col-md-3"> 下行出场里程: </label>
  322 + <div class="col-md-4">
  323 + <input type="text" class="form-control" name="downOutMileage" id="downOutMileageInput" placeholder="下行出场里程">
  324 + <span class="help-block"> 描述:下行起点至停车场的出场里程 </span>
  325 + </div>
  326 + </div>
  327 +
253 <!-- 进场里程 --> 328 <!-- 进场里程 -->
254 <div class="form-group"> 329 <div class="form-group">
255 <label class="control-label col-md-3"> 进场里程 : </label> 330 <label class="control-label col-md-3"> 进场里程 : </label>
src/main/resources/static/pages/base/lineinformation/edit.html
@@ -253,6 +253,81 @@ @@ -253,6 +253,81 @@
253 </div> 253 </div>
254 </div> 254 </div>
255 255
  256 +
  257 + <!-- 上行进场时间 -->
  258 + <div class="form-group">
  259 + <label class="control-label col-md-3"> 上行进场时间 : </label>
  260 + <div class="col-md-4">
  261 + <input type="text" class="form-control" name="upInTimer" id="upInTimerInput" placeholder="上行进场时间">
  262 + <span class="help-block"> 描述:上行起点至停车场的进场时间 </span>
  263 + </div>
  264 + </div>
  265 +
  266 + <!--上行出场时间 -->
  267 + <div class="form-group">
  268 + <label class="control-label col-md-3"> 上行出场时间 : </label>
  269 + <div class="col-md-4">
  270 + <input type="text" class="form-control" name="upOutTimer" id="upOutTimerInput" placeholder="上行出场时间">
  271 + <span class="help-block"> 描述:上行起点至停车场的出场时间 </span>
  272 + </div>
  273 + </div>
  274 +
  275 + <!-- 下行进场时间 -->
  276 + <div class="form-group">
  277 + <label class="control-label col-md-3"> 下行进场时间 : </label>
  278 + <div class="col-md-4">
  279 + <input type="text" class="form-control" name="downInTimer" id="downInTimerInput" placeholder="下行进场时间">
  280 + <span class="help-block"> 描述:下行起点至停车场的进场时间 </span>
  281 + </div>
  282 + </div>
  283 +
  284 + <!-- 下行出场时间 -->
  285 + <div class="form-group">
  286 + <label class="control-label col-md-3"> 下行出场时间: </label>
  287 + <div class="col-md-4">
  288 + <input type="text" class="form-control" name="downOutTimer" id="downOutTimerInput" placeholder="下行出场时间">
  289 + <span class="help-block"> 描述:下行起点至停车场的出场时间 </span>
  290 + </div>
  291 + </div>
  292 +
  293 +
  294 +
  295 + <!-- 上行进场里程 -->
  296 + <div class="form-group">
  297 + <label class="control-label col-md-3"> 上行进场里程 : </label>
  298 + <div class="col-md-4">
  299 + <input type="text" class="form-control" name="upInMileage" id="upInMileageInput" placeholder="上行进场里程">
  300 + <span class="help-block"> 描述:上行起点至停车场的进场里程 </span>
  301 + </div>
  302 + </div>
  303 +
  304 + <!-- 上行出场里程 -->
  305 + <div class="form-group">
  306 + <label class="control-label col-md-3"> 上行出场里程: </label>
  307 + <div class="col-md-4">
  308 + <input type="text" class="form-control" name="upOutMileage" id="upOutMileageInput" placeholder="上行出场里程">
  309 + <span class="help-block"> 描述:上行起点至停车场的出场里程 </span>
  310 + </div>
  311 + </div>
  312 +
  313 + <!-- 下行进场里程 -->
  314 + <div class="form-group">
  315 + <label class="control-label col-md-3"> 下行进场里程 : </label>
  316 + <div class="col-md-4">
  317 + <input type="text" class="form-control" name="downInMileage" id="downInMileageInput" placeholder="下行进场里程">
  318 + <span class="help-block"> 描述:下行起点至停车场的进场里程 </span>
  319 + </div>
  320 + </div>
  321 +
  322 + <!-- 下行出场里程 -->
  323 + <div class="form-group">
  324 + <label class="control-label col-md-3"> 下行出场里程: </label>
  325 + <div class="col-md-4">
  326 + <input type="text" class="form-control" name="downOutMileage" id="downOutMileageInput" placeholder="下行出场里程">
  327 + <span class="help-block"> 描述:下行起点至停车场的出场里程 </span>
  328 + </div>
  329 + </div>
  330 +
256 <!-- 进场里程 --> 331 <!-- 进场里程 -->
257 <div class="form-group"> 332 <div class="form-group">
258 <label class="control-label col-md-3"> 进场里程 : </label> 333 <label class="control-label col-md-3"> 进场里程 : </label>
src/main/resources/static/pages/control/line/index.html
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 <div class="portlet-title banner" > 18 <div class="portlet-title banner" >
19 <div class="caption col_hide_1280" style="color: #FFF;"> 19 <div class="caption col_hide_1280" style="color: #FFF;">
20 <i class="fa fa-life-ring" style="font-size: 22px;color: #FFF;"></i> <span 20 <i class="fa fa-life-ring" style="font-size: 22px;color: #FFF;"></i> <span
21 - class="caption-subject bold" style="font-size: 24px;">青浦公交线路调度系统</span> 21 + class="caption-subject bold" style="font-size: 24px;">闵行公交线路调度系统</span>
22 </div> 22 </div>
23 <div class="col_hide_1440" style="color: white;font-size: 18px;position: absolute;right: 25px;top: 75px;"> 23 <div class="col_hide_1440" style="color: white;font-size: 18px;position: absolute;right: 25px;top: 75px;">
24 <span class="top_username"></span> <span class="operation_mode_text animated" ></span> 24 <span class="top_username"></span> <span class="operation_mode_text animated" ></span>
src/main/resources/static/pages/control/line/js/home.js
@@ -85,7 +85,7 @@ var _home = (function() { @@ -85,7 +85,7 @@ var _home = (function() {
85 $('menu.menu').show(); 85 $('menu.menu').show();
86 }, 400); 86 }, 400);
87 87
88 - setTimeout(function() { 88 + /*setTimeout(function() {
89 // 提示文本 89 // 提示文本
90 var promptFlag = storage.getItem('promptFlag_0828'); 90 var promptFlag = storage.getItem('promptFlag_0828');
91 if (!promptFlag) { 91 if (!promptFlag) {
@@ -96,7 +96,7 @@ var _home = (function() { @@ -96,7 +96,7 @@ var _home = (function() {
96 }); 96 });
97 storage.setItem('promptFlag_0828', 1); 97 storage.setItem('promptFlag_0828', 1);
98 } 98 }
99 - }, 1500); 99 + }, 1500);*/
100 } 100 }
101 } 101 }
102 102
src/main/resources/static/pages/control/line/js/webSocketHandle.js
@@ -151,7 +151,7 @@ function appendLogItem(tempId, json, lineCode){ @@ -151,7 +151,7 @@ function appendLogItem(tempId, json, lineCode){
151 var text = $item.find('.log-item-text').text(); 151 var text = $item.find('.log-item-text').text();
152 //线路名称 152 //线路名称
153 var lineName = _data.getLineIds()[lineCode]; 153 var lineName = _data.getLineIds()[lineCode];
154 - h5Speech.speak(lineName + ' ' + text); 154 + h5Speech.speak(lineName.replace('行', '航') + ' ' + text);
155 } 155 }
156 //重新计算未处理消息 156 //重新计算未处理消息
157 _messenger.setUntreatedNum(lineCode); 157 _messenger.setUntreatedNum(lineCode);
src/main/resources/static/pages/forecast/sample/css/main.css
@@ -106,6 +106,7 @@ @@ -106,6 +106,7 @@
106 font-size: 85%; 106 font-size: 85%;
107 fill: #6b6666; 107 fill: #6b6666;
108 font-weight: bold; 108 font-weight: bold;
  109 + pointer-events: none;
109 } 110 }
110 111
111 #lineConfigPanel #trafficChart .sample_tags a.tag.active{ 112 #lineConfigPanel #trafficChart .sample_tags a.tag.active{
@@ -192,6 +193,7 @@ rect.f_rect{ @@ -192,6 +193,7 @@ rect.f_rect{
192 height: 20px; 193 height: 20px;
193 fill: #32c2a5; 194 fill: #32c2a5;
194 rx: 3px; 195 rx: 3px;
  196 + cursor: pointer;
195 } 197 }
196 198
197 #lineConfigPanel #trafficChart svg text.f_text{ 199 #lineConfigPanel #trafficChart svg text.f_text{
src/main/resources/static/pages/forecast/sample/js/svg.js
@@ -93,6 +93,7 @@ var sampleSvg = (function(){ @@ -93,6 +93,7 @@ var sampleSvg = (function(){
93 showTags(); 93 showTags();
94 } 94 }
95 95
  96 + //tag 点击事件
96 $('#trafficChart').on('click', '.sample_tags a.tag', function(){ 97 $('#trafficChart').on('click', '.sample_tags a.tag', function(){
97 $('.sample_tags a.tag.active').removeClass('active'); 98 $('.sample_tags a.tag.active').removeClass('active');
98 $(this).addClass('active'); 99 $(this).addClass('active');
@@ -114,6 +115,7 @@ var sampleSvg = (function(){ @@ -114,6 +115,7 @@ var sampleSvg = (function(){
114 .attr('data-sid', this.id); 115 .attr('data-sid', this.id);
115 }); 116 });
116 117
  118 + console.log('showRunTimeE...', rs);
117 //背景 119 //背景
118 svg.selectAll('.f_rect') 120 svg.selectAll('.f_rect')
119 .data(rs).enter().append('rect') 121 .data(rs).enter().append('rect')
@@ -123,7 +125,9 @@ var sampleSvg = (function(){ @@ -123,7 +125,9 @@ var sampleSvg = (function(){
123 .attr('width', function(d){ 125 .attr('width', function(d){
124 return (d.runTime + '').length * 7 + 20; 126 return (d.runTime + '').length * 7 + 20;
125 }) 127 })
126 - .classed('f_rect', true); 128 + .attr('data-id', function(d){return d.eStation;})
  129 + .classed('f_rect', true)
  130 + .on('click', function(){popAddModal($(this).data('id'))});
127 131
128 //时间text 132 //时间text
129 svg.selectAll('.f_text') 133 svg.selectAll('.f_text')
@@ -168,7 +172,6 @@ var sampleSvg = (function(){ @@ -168,7 +172,6 @@ var sampleSvg = (function(){
168 .text(text) 172 .text(text)
169 } 173 }
170 174
171 - var tagRange = {'早高峰': {s: '06:31', e: '08:30'}, '平峰': {s: '08:31', e: '16:00'}, '晚高峰': {s: '16:01', e: '18:00'}};  
172 function popAddModal(id){ 175 function popAddModal(id){
173 //var eid = id ,sid = prve(id); 176 //var eid = id ,sid = prve(id);
174 //if(!sid)return; 177 //if(!sid)return;
@@ -181,8 +184,9 @@ var sampleSvg = (function(){ @@ -181,8 +184,9 @@ var sampleSvg = (function(){
181 content: rs, 184 content: rs,
182 shift: 5, 185 shift: 5,
183 // title: '...', 186 // title: '...',
184 - success: function(){  
185 - $('#forecast_sample_modal').trigger('init', {_opt: _opt, _data: _data, id: id}); 187 + success: function(layero, index){
  188 + var activeTag = $('.sample_tags a.tag.active');
  189 + $('#forecast_sample_modal').trigger('init', {layero: layero, _opt: _opt, _data: _data, id: id, tag: activeTag.length > 0?activeTag.text():''});
186 /*$("#addSampleForm select[name=tag]").select2({ 190 /*$("#addSampleForm select[name=tag]").select2({
187 maximumSelectionLength: 1, 191 maximumSelectionLength: 1,
188 tags: true 192 tags: true
src/main/resources/static/pages/forecast/sample/modal.html
1 <div id="forecast_sample_modal"> 1 <div id="forecast_sample_modal">
  2 +<div class="row" style="margin: 15px 0;">
  3 +</div>
2 </div> 4 </div>
3 5
4 -<script id="forecast_addSample_temp" type="text/html">  
5 -<form class="form-horizontal" role="form" style="padding: 35px 25px;" id="addSampleForm">  
6 - <input type="hidden" name="sStation" value="{{sid}}"/>  
7 - <input type="hidden" name="eStation" value="{{eid}}"/>  
8 - <div class="form-body">  
9 - <div class="form-group">  
10 - <label class="col-md-3 control-label">开始站:</label>  
11 - <div class="col-md-9">  
12 - <input type="text" class="form-control " value="{{sName}}" readonly>  
13 - </div>  
14 - </div>  
15 - <div class="form-group">  
16 - <label class="col-md-3 control-label">截止站:</label>  
17 - <div class="col-md-9">  
18 - <input type="text" class="form-control" value="{{eName}}" readonly>  
19 - </div>  
20 - </div>  
21 - <div class="form-group">  
22 - <label class="col-md-3 control-label">标签:</label>  
23 - <div class="col-md-9">  
24 - <select class="form-control" name="tag" multiple required>  
25 - <option value="早高峰">早高峰</option>  
26 - <option value="平峰">平峰</option>  
27 - <option value="晚高峰">晚高峰</option>  
28 - </select>  
29 - </div>  
30 - </div>  
31 - <div class="form-group">  
32 - <label class="col-md-3 control-label">时段:</label>  
33 - <div class="col-md-4" style="padding-right: 0;">  
34 - <input type="time" class="form-control" name="sDate" required>  
35 - </div>  
36 - <div class="col-md-1" style="margin-top: 10px;font-size: 85%;color: gray;">至</div>  
37 - <div class="col-md-4" style="padding-left: 0;">  
38 - <input type="time" class="form-control" name="eDate" required>  
39 - </div>  
40 - </div>  
41 - <div class="form-group">  
42 - <label class="col-md-3 control-label">耗时(分):</label>  
43 - <div class="col-md-9">  
44 - <input type="number" class="form-control" name="runTime" required>  
45 - </div>  
46 - </div>  
47 - </div>  
48 -<br>  
49 - <div class="form-actions">  
50 - <div class="row">  
51 - <div class="col-md-offset-4 col-md-8">  
52 - <button type="button" class="btn green confirm"><i class="fa fa-check"></i> 提交</button>&nbsp;&nbsp;  
53 - <button type="button" class="btn layui-layer-close">取消</button>  
54 - </div>  
55 - </div> 6 +<script id="forecast_sample_tab_detail_temp" type="text/html">
  7 +<div class="col-md-3 col-sm-3 col-xs-3">
  8 + <ul class="nav nav-tabs tabs-left">
  9 +{{each data as obj i}}
  10 + <li >
  11 + <a href="#tab_sample_{{i}}" data-toggle="tab" title="{{obj.t}}"> {{obj.t}} </a>
  12 + </li>
  13 +{{/each}}
  14 +<li ><a href="#tab_sample_add" data-toggle="tab" style="font-size: 12px;color: red;"> <i class="fa fa-plus"></i> 新增 </a></li>
  15 + </ul>
  16 +</div>
  17 +
  18 +<div class="col-md-9 col-sm-9 col-xs-9">
  19 +<div class="tab-content">
  20 +{{each data as obj i}}
  21 + <div class="tab-pane" id="tab_sample_{{i}}">
  22 + <form class="form-horizontal" role="form" style="padding: 35px 25px;" id="addSampleForm">
  23 + <input type="hidden" name="sStation" value="{{obj.d.sid}}"/>
  24 + <input type="hidden" name="eStation" value="{{obj.d.eid}}"/>
  25 + <div class="form-body">
  26 + <div class="form-group">
  27 + <label class="col-md-3 control-label">开始站:</label>
  28 + <div class="col-md-9">
  29 + <input type="text" class="form-control " value="{{obj.d.sName}}" readonly>
  30 + </div>
  31 + </div>
  32 + <div class="form-group">
  33 + <label class="col-md-3 control-label">截止站:</label>
  34 + <div class="col-md-9">
  35 + <input type="text" class="form-control" value="{{obj.d.eName}}" readonly>
  36 + </div>
  37 + </div>
  38 + <div class="form-group">
  39 + <label class="col-md-3 control-label">时段:</label>
  40 + <div class="col-md-4" style="padding-right: 0;">
  41 + <input type="time" class="form-control" name="sDate" value="{{obj.d.sDate}}" required>
  42 + </div>
  43 + <div class="col-md-1" style="margin-top: 10px;font-size: 85%;color: gray;">至</div>
  44 + <div class="col-md-4" style="padding-left: 0;">
  45 + <input type="time" class="form-control" name="eDate" value="{{obj.d.eDate}}" required>
  46 + </div>
  47 + </div>
  48 + <div class="form-group">
  49 + <label class="col-md-3 control-label">用时:</label>
  50 + <div class="col-md-9">
  51 + <input type="number" class="form-control" name="runTime" value="{{obj.d.runTime}}" required>
  52 + </div>
  53 + </div>
  54 + </div>
  55 + <br>
  56 + <div class="form-actions">
  57 + <div class="row">
  58 + <div class="col-md-offset-4 col-md-8">
  59 + <button type="button" class="btn green confirm"><i class="fa fa-check"></i> 保存</button>&nbsp;&nbsp;
  60 + <button type="button" class="btn red layui-layer-close">删除</button>
  61 + </div>
  62 + </div>
  63 + </div>
  64 + </form>
56 </div> 65 </div>
57 -</form> 66 +{{/each}}
  67 +
  68 +<div class="tab-pane" id="tab_sample_add">
  69 + <form class="form-horizontal" role="form" style="padding: 35px 25px;" id="addSampleForm">
  70 + <input type="hidden" name="sStation" value="{{base.sid}}"/>
  71 + <input type="hidden" name="eStation" value="{{base.eid}}"/>
  72 + <div class="form-body">
  73 + <div class="form-group">
  74 + <label class="col-md-3 control-label">开始站:</label>
  75 + <div class="col-md-9">
  76 + <input type="text" class="form-control " value="{{base.sName}}" readonly>
  77 + </div>
  78 + </div>
  79 + <div class="form-group">
  80 + <label class="col-md-3 control-label">截止站:</label>
  81 + <div class="col-md-9">
  82 + <input type="text" class="form-control" value="{{base.eName}}" readonly>
  83 + </div>
  84 + </div>
  85 + <div class="form-group">
  86 + <label class="col-md-3 control-label">标签:</label>
  87 + <div class="col-md-9">
  88 + <select class="form-control" name="tag" style="width:100%;" multiple required>
  89 + <option value="早高峰">早高峰</option>
  90 + <option value="平峰">平峰</option>
  91 + <option value="晚高峰">晚高峰</option>
  92 + </select>
  93 + </div>
  94 + </div>
  95 + <div class="form-group">
  96 + <label class="col-md-3 control-label">时段:</label>
  97 + <div class="col-md-4" style="padding-right: 0;">
  98 + <input type="time" class="form-control" name="sDate" required>
  99 + </div>
  100 + <div class="col-md-1" style="margin-top: 10px;font-size: 85%;color: gray;">至</div>
  101 + <div class="col-md-4" style="padding-left: 0;">
  102 + <input type="time" class="form-control" name="eDate" required>
  103 + </div>
  104 + </div>
  105 + <div class="form-group">
  106 + <label class="col-md-3 control-label">用时:</label>
  107 + <div class="col-md-9">
  108 + <input type="number" class="form-control" name="runTime" required>
  109 + </div>
  110 + </div>
  111 + </div>
  112 + <br>
  113 + <div class="form-actions">
  114 + <div class="row">
  115 + <div class="col-md-offset-4 col-md-8">
  116 + <button type="button" class="btn green confirm"><i class="fa fa-check"></i> 提交</button>&nbsp;&nbsp;
  117 + </div>
  118 + </div>
  119 + </div>
  120 + </form>
  121 + </div>
  122 +</div>
  123 +</div>
58 </script> 124 </script>
59 125
60 <script> 126 <script>
61 !function(){ 127 !function(){
62 - var _data,_opt,id;  
63 - 128 + var _data,_opt,id, currentData, layero;
  129 + var tagRange = {'早高峰': {s: '06:31', e: '08:30'}, '平峰': {s: '08:31', e: '16:00'}, '晚高峰': {s: '16:01', e: '18:00'}};
64 130
65 $('#forecast_sample_modal').on('init', function(e, rs){ 131 $('#forecast_sample_modal').on('init', function(e, rs){
66 _data = rs._data; 132 _data = rs._data;
67 _opt = rs._opt; 133 _opt = rs._opt;
  134 + layero = rs.layero;
68 id = rs.id; 135 id = rs.id;
69 - //console.log(rs); 136 +
  137 + var eid = id, sid = prve(id).stationCode;
  138 + var sampData = searchData(sid, eid);
  139 + var baseData = {sid: sid, eid: eid, sName: toName(sid), eName: toName(eid)};
  140 + var html = template('forecast_sample_tab_detail_temp', {data: sampData, base: baseData});
  141 + $('#forecast_sample_modal .row').html(html);
  142 + //默认选中tab
  143 + defaultSelect(rs.tag);
  144 +
  145 + //标签select2
  146 + $("select[name=tag]").select2({
  147 + maximumSelectionLength: 1,
  148 + tags: true
  149 + })
  150 + .on('change', function(){
  151 + var t = $(this).val();
  152 + if(tagRange[t]){
  153 + $("input[name=sDate]").val(tagRange[t].s);
  154 + $("input[name=eDate]").val(tagRange[t].e);
  155 + }
  156 + });
  157 +
  158 + toCenter(layero);
  159 +
  160 + //currentData = searchData(sid, eid)[rs.tag];
  161 +
  162 + //console.log('当前站点: ' , getById(id));
  163 + //console.log('上一个站点: ' , prve(id));
  164 + //console.log('当前数据:', currentData);
  165 +
  166 + //forecast_sample_tab_detail_temp
70 }); 167 });
71 168
72 169
73 function prve(that){ 170 function prve(that){
74 for(var i = 0; i < _opt.rts.length; i ++){ 171 for(var i = 0; i < _opt.rts.length; i ++){
75 - if(routes[i].stationCode == that){ 172 + if(_opt.rts[i].stationCode == that){
76 if(i == 0) 173 if(i == 0)
77 return null; 174 return null;
78 - return routes[i - 1].stationCode; 175 + return _opt.rts[i - 1];
  176 +
  177 +
79 } 178 }
80 } 179 }
81 180
82 return null; 181 return null;
83 } 182 }
  183 +
  184 + function getById(id){
  185 + var rts = _opt.rts;
  186 + for(var i = 0;i < rts.length ; i ++){
  187 + if(rts[i].stationCode == id)
  188 + return rts[i];
  189 + }
  190 +
  191 + return null;
  192 + }
  193 +
  194 + function searchData(sid, eid){
  195 + var rs = [];
  196 +
  197 + for(var tag in _data){
  198 + $.each(_data[tag], function(){
  199 + if(this.sStation == sid && this.eStation == eid)
  200 + rs.push({t: tag, d: this});
  201 + })
  202 + }
  203 + return rs;
  204 + }
  205 +
  206 + function toCenter($e){
  207 + var h = $(document.body).height();
  208 + var eh = $e.height();
  209 + if(eh < h){
  210 + $e.css('top', (h - eh) /2);
  211 + }
  212 + else{
  213 + $e.css('top', h - eh);
  214 + layer.msg('页面高度不够了,但是并没有出现滚动条!');
  215 + }
  216 + }
  217 +
  218 + function toName(id){
  219 + var rts = _opt.rts;
  220 + for(var i = 0;i < rts.length ; i ++){
  221 + if(rts[i].stationCode == id)
  222 + return rts[i].stationName;
  223 + }
  224 +
  225 + return null;
  226 + }
  227 +
  228 + function defaultSelect(tag){
  229 + var firstTab = $('ul.tabs-left li:eq(0) a');
  230 + if(tag){
  231 + var _tab = $('ul.tabs-left li a[title='+tag+']');
  232 + if(_tab.length > 0)
  233 + _tab.click();
  234 + else
  235 + firstTab.click();
  236 + }
  237 + else
  238 + firstTab.click();
  239 + }
84 }(); 240 }();
85 </script> 241 </script>
86 \ No newline at end of file 242 \ No newline at end of file