Commit 06356c2bf86a82402c64eef9b8e726aedda4e0ba

Authored by 潘钊
1 parent 657931da

update

... ... @@ -5,7 +5,7 @@
5 5 <groupId>com.bsth</groupId>
6 6 <artifactId>bsth_control</artifactId>
7 7 <version>0.0.1-SNAPSHOT</version>
8   - <packaging>jar</packaging>
  8 + <packaging>war</packaging>
9 9  
10 10 <parent>
11 11 <groupId>org.springframework.boot</groupId>
... ... @@ -19,11 +19,11 @@
19 19 <artifactId>spring-boot-starter-web</artifactId>
20 20 </dependency>
21 21  
22   - <!-- <dependency>
  22 + <dependency>
23 23 <groupId>org.springframework.boot</groupId>
24 24 <artifactId>spring-boot-starter-tomcat</artifactId>
25 25 <scope>provided</scope>
26   - </dependency> -->
  26 + </dependency>
27 27  
28 28 <dependency>
29 29 <groupId>org.springframework.boot</groupId>
... ...
src/main/java/com/bsth/Application.java
... ... @@ -4,21 +4,28 @@ import com.fasterxml.jackson.databind.ObjectMapper;
4 4 import com.fasterxml.jackson.databind.SerializationFeature;
5 5 import org.springframework.boot.SpringApplication;
6 6 import org.springframework.boot.autoconfigure.SpringBootApplication;
  7 +import org.springframework.boot.builder.SpringApplicationBuilder;
  8 +import org.springframework.boot.context.web.SpringBootServletInitializer;
7 9 import org.springframework.context.annotation.Bean;
8 10 import org.springframework.context.annotation.Primary;
9 11  
10 12 @SpringBootApplication
11   -public class Application{
  13 +public class Application extends SpringBootServletInitializer {
12 14  
13   - @Bean
14   - @Primary
15   - public ObjectMapper objectMapper() {
16   - ObjectMapper objectMapper = new ObjectMapper();
17   - objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
  15 + @Override
  16 + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
  17 + return application.sources(Application.class);
  18 + }
  19 +
  20 + @Bean
  21 + @Primary
  22 + public ObjectMapper objectMapper() {
  23 + ObjectMapper objectMapper = new ObjectMapper();
  24 + objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
  25 +
  26 + return objectMapper;
  27 + }
18 28  
19   - return objectMapper;
20   - }
21   -
22 29 public static void main(String[] args) throws Exception {
23 30 SpringApplication.run(Application.class, args);
24 31 }
... ...
src/main/java/com/bsth/StartCommand.java
... ... @@ -93,7 +93,7 @@ public class StartCommand implements CommandLineRunner{
93 93 * 每15秒从数据库抓取到离站信息和班次匹配
94 94 * (网关生成的到离站数据也是延迟批量入库,所以缩短该线程执行周期并不会提高 “实际到离站” 的实时性)
95 95 */
96   - scheduler.scheduleWithFixedDelay(gpsArrivalStationThread, 35, 1200, TimeUnit.SECONDS);
  96 + //scheduler.scheduleWithFixedDelay(gpsArrivalStationThread, 35, 1200, TimeUnit.SECONDS);
97 97  
98 98 /**
99 99 * 首个调度指令下发(2分钟运行一次)
... ...
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
... ... @@ -216,6 +216,19 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
216 216 ScheduleBuffer.trustMap.put(lineCode, status);
217 217 return 200;
218 218 }
  219 +
  220 + /**
  221 + *
  222 + * @Title: findByLineAndUpDown
  223 + * @Description: TODO(根据线路和走向获取班次)
  224 + * @param @param line
  225 + * @param @param upDown
  226 + * @throws
  227 + */
  228 + @RequestMapping(value = "/findByLineAndUpDown")
  229 + public List<ScheduleRealInfo> findByLineAndUpDown(@RequestParam Integer line,@RequestParam Integer upDown){
  230 + return ScheduleBuffer.findByLineAndUpDown(line, upDown);
  231 + }
219 232  
220 233 @RequestMapping(value = "/queryUserInfo")
221 234 public List<ScheduleRealInfo> queryUserInfo(@RequestParam String line, @RequestParam String date) {
... ...
src/main/java/com/bsth/entity/realcontrol/ChildTaskPlan.java
... ... @@ -95,7 +95,7 @@ public class ChildTaskPlan {
95 95 /**
96 96 * 主排班计划
97 97 */
98   - @ManyToOne(fetch = FetchType.LAZY)
  98 + @ManyToOne
99 99 private ScheduleRealInfo schedule;
100 100  
101 101 private String remarks;
... ...
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
... ... @@ -4,10 +4,6 @@ import java.util.Date;
4 4 import java.util.List;
5 5 import java.util.Map;
6 6  
7   -import org.springframework.data.domain.Page;
8   -import org.springframework.data.domain.Pageable;
9   -import org.springframework.data.jpa.domain.Specification;
10   -import org.springframework.data.jpa.repository.EntityGraph;
11 7 import org.springframework.data.jpa.repository.Query;
12 8 import org.springframework.stereotype.Repository;
13 9  
... ... @@ -20,9 +16,6 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
20 16 @Query("select s from ScheduleRealInfo s where s.xlBm in ?1")
21 17 List<ScheduleRealInfo> findByLines(List<String> lines);
22 18  
23   - @EntityGraph(value = "scheduleRealInfo_childTasks", type = EntityGraph.EntityGraphType.FETCH)
24   - @Override
25   - Page<ScheduleRealInfo> findAll(Specification<ScheduleRealInfo> spec, Pageable pageable);
26 19  
27 20 @Query(value="select s from ScheduleRealInfo s where s.xlName = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 group by jName,clZbh,lpName")
28 21 List<ScheduleRealInfo> queryUserInfo(String line,String date);
... ...
src/main/java/com/bsth/service/realcontrol/buffer/ScheduleBuffer.java
... ... @@ -256,4 +256,16 @@ public class ScheduleBuffer {
256 256 public static ScheduleRealInfo findOne(Long id){
257 257 return pkSchedulMap.get(id);
258 258 }
  259 +
  260 + public static List<ScheduleRealInfo> findByLineAndUpDown(Integer lineCode, Integer upDown){
  261 + List<ScheduleRealInfo> list = schedulListMap.get(String.valueOf(lineCode))
  262 + ,subList = new ArrayList<>();
  263 + //按走向过滤
  264 + for(ScheduleRealInfo sch : list){
  265 + if(Integer.parseInt(sch.getXlDir()) == upDown){
  266 + subList.add(sch);
  267 + }
  268 + }
  269 + return subList;
  270 + }
259 271 }
... ...
src/main/java/com/bsth/service/realcontrol/impl/ChildTaskPlanServiceImpl.java
... ... @@ -12,6 +12,7 @@ import com.bsth.vehicle.common.CommonMapped;
12 12 @Service
13 13 public class ChildTaskPlanServiceImpl extends BaseServiceImpl<ChildTaskPlan, Long> implements ChildTaskPlanService{
14 14  
  15 +
15 16 @Override
16 17 public Map<String, Object> save(ChildTaskPlan t) {
17 18 //保存起终点名称
... ...
src/main/resources/application-dev.properties
... ... @@ -26,6 +26,6 @@ spring.datasource.validation-query=select 1
26 26 ##
27 27 #222.66.0.204:5555
28 28 ##\u5B9E\u65F6gps
29   -http.gps.real.url= http://192.168.168.192:8080/transport_server/rtgps/
  29 +http.gps.real.url= http://192.168.168.171:8080/transport_server/rtgps/
30 30 ##\u6D88\u606F\u4E0B\u53D1
31   -http.send.directive = http://192.168.168.192:8080/transport_server/message/
  31 +http.send.directive = http://192.168.168.171:8080/transport_server/message/
... ...
src/main/resources/application.properties
1 1 spring.profiles: dev,prod
2   -spring.profiles.active: prod
  2 +spring.profiles.active: dev
3 3  
4 4 spring.view.suffix=.html
5 5 server.session-timeout=-1
... ...
src/main/resources/fatso/start.js
... ... @@ -37,8 +37,9 @@ fs.mkdir(dest, function(e){
37 37 var cProcess;
38 38  
39 39 ep.tail('mvn-clean',function(){
  40 + ep.emit('copy-project');
40 41 //清理target
41   - logInfo('mvn clean...');
  42 + /*logInfo('mvn clean...');
42 43 cProcess = child_process.exec("mvn clean",{cwd: workspace + '\\' + pName},function(error){
43 44 if(error)
44 45 logError(error);
... ... @@ -46,7 +47,7 @@ ep.tail(&#39;mvn-clean&#39;,function(){
46 47 logSuccess('mvn clean success');
47 48  
48 49 ep.emit('copy-project');
49   - });
  50 + });*/
50 51 output(cProcess);
51 52 });
52 53  
... ...
src/main/resources/ftp.properties
... ... @@ -2,7 +2,7 @@ ftp.url=222.66.0.205
2 2 ftp.port=21
3 3 ftp.username=transport
4 4 ftp.password=transport123
5   -ftp.path= down/
  5 +ftp.path=down/
6 6  
7 7 #ftp.url=192.168.168.101
8 8 #ftp.port=21
... ...
src/main/resources/ms-jdbc.properties
1 1 ms.mysql.driver= com.mysql.jdbc.Driver
2   -ms.mysql.url= jdbc:mysql://192.168.168.192:3306/ms?useUnicode=true&characterEncoding=utf-8
  2 +ms.mysql.url= jdbc:mysql://192.168.168.171:3306/ms?useUnicode=true&characterEncoding=utf-8
3 3 ms.mysql.username= root
4 4 ms.mysql.password= root2jsp
5 5 \ No newline at end of file
... ...
src/main/resources/static/pages/control/line/child_pages/child_task.html
... ... @@ -433,9 +433,12 @@ $(function(){
433 433 //拆分驾驶员工号和姓名
434 434 param.jName = param.jGh.split('/')[1];
435 435 param.jGh = param.jGh.split('/')[0];
436   - //拆分售票员工号和姓名
437   - param.sName = param.sGh.split('/')[1];
438   - param.sGh = param.sGh.split('/')[0];
  436 +
  437 + if(param.sGh != null){
  438 + //拆分售票员工号和姓名
  439 + param.sName = param.sGh.split('/')[1];
  440 + param.sGh = param.sGh.split('/')[0];
  441 + }
439 442 //附加起终点名称
440 443 var route = stationRoute[param.xlDir];
441 444 param.qdzName = searchStationName(route, param.qdzCode);
... ... @@ -445,10 +448,13 @@ $(function(){
445 448 $post('/realSchedule', param, function(rs){
446 449 var sch = rs.t;
447 450 //前端缓存更新
448   - scheduleLineMap[param.xlBm][param.lpName].push(sch);
  451 + //scheduleLineMap[param.xlBm][param.lpName].push(sch);
  452 + /* var ups = rs.ups;
  453 + for(var i in ups){
  454 + _data.updateSchedule(ups[i]);
  455 + } */
449 456 //刷新表格
450 457 _alone.addScheduleToTable(sch);
451   - _alone.refreshScheduleArray(rs.ups);
452 458  
453 459 //关闭弹出层
454 460 layer.closeAll();
... ...
src/main/resources/static/pages/control/line/child_pages/outgo_adjust_all.html 0 → 100644
  1 +<!-- 待发调整 -->
  2 +<div id="outgoAdjustAllPanel">
  3 + <form action="#" class="form-horizontal form-custom">
  4 + <div class="form-body">
  5 + <div class="form-custom-row">
  6 + <div class="item" style="margin-top: 0">
  7 + <div class="input-icon right">
  8 + <span class="item-label" style="width: 40px;">线路: </span>
  9 + <select name="line" class="form-control lineSelect">
  10 + </select>
  11 + </div>
  12 + </div>
  13 + &nbsp;&nbsp;
  14 + <div class="item" style="margin-top: 0">
  15 + <span class="item-label" style="width: 40px;">车辆: </span>
  16 + <select name="nbbm" class="form-control vehicSelect">
  17 + </select>
  18 + </div>
  19 + </div>
  20 +
  21 + <div class="form-custom-row">
  22 + <div class="item" style="min-width: calc(100% - 10px);">
  23 + <div class="custom-table-panel" style="display: inline-block;height: 420px;">
  24 + <div style="height: 36px; position: relative;">
  25 + <div class="custom-table-header">
  26 + <table class="table table-bordered table-advance sch-table">
  27 + <thead>
  28 + <tr>
  29 + <th width="12%">车辆</th>
  30 + <th width="7%">路牌</th>
  31 + <th width="10%">驾驶员</th>
  32 + <th width="18%">起点</th>
  33 + <th width="18%">终点</th>
  34 + <th width="13%">计发</th>
  35 + <th width="22%">待发</th>
  36 + </tr>
  37 + </thead>
  38 + </table>
  39 + </div>
  40 + </div>
  41 +
  42 + <div class="custom-table-body" >
  43 + <table class="table table-bordered table-hover table-advance sch-table" >
  44 + <tbody></tbody>
  45 + </table>
  46 + </div>
  47 + </div>
  48 + </div>
  49 + </div>
  50 +
  51 + <hr>
  52 + <div class="form-custom-footer" style="margin-top: 15px;">
  53 + <button type="button" class="btn blue-madison confirm">
  54 + <i class="fa fa-check"></i> &nbsp;&nbsp;确&nbsp;&nbsp;定
  55 + </button>
  56 + <button type="button" class="btn layui-layer-close">取消</button>
  57 + </div>
  58 + <br>
  59 + </div>
  60 + </form>
  61 +
  62 +<script id="outgo_adjust_all_item_temp" type="text/html">
  63 +{{each list as item i}}
  64 +<tr data-id={{item.id}}>
  65 + <td width="12%">
  66 + {{item.clZbh}}
  67 + {{if item.bcType == "out"}}
  68 + <span class="out-badge short"></span>
  69 + {{else if item.bcType == "in"}}
  70 + <span class="in-badge short"></span>
  71 + {{/if}}
  72 + </td>
  73 + <td width="7%">{{item.lpName}}</td>
  74 + <td width="10%">{{item.jName}}</td>
  75 + <td width="18%" title="{{item.qdzName}}">{{item.qdzName}}</td>
  76 + <td width="18%" title="{{item.zdzName}}">{{item.zdzName}}</td>
  77 + <td width="13%">{{item.fcsj}}</td>
  78 + <td width="22%"><input value="{{item.dfsj}}" data-old="{{item.dfsj}}" type="time" class="form-control df-input" style="width: 100%;"></td>
  79 +</tr>
  80 +{{/each}}
  81 +
  82 +{{if list.length == 0 }}
  83 +<tr>
  84 + <td style="font-size: 12px;text-align: center;" colspan=7>该车辆今日无班次信息</td>
  85 +</tr>
  86 +{{/if}}
  87 +</script>
  88 +
  89 +<script id="outgo_adjust_change_text_temp" type="text/html">
  90 +<h5>B-89524(闵行11路)</h5>
  91 +<hr>
  92 +<div class="change-confirm-text">
  93 +{{each list as item i}}
  94 +<div>
  95 + <span>{{item.old}}</span><i class="fa fa-long-arrow-right"></i><span>{{item.t}}</span>
  96 +</div>
  97 +{{/each}}
  98 +</div>
  99 +</script>
  100 +
  101 +<script type="text/javascript">
  102 +!function(){
  103 + //滚动时固定表头
  104 + $('.custom-table-panel').on('scroll', function(){
  105 + var top = $(this).scrollTop()
  106 + ,$header = $(this).find('.custom-table-header');
  107 + $header.css('top', top);
  108 + });
  109 +
  110 + var _data, _alone, lineCodeMaps;
  111 +
  112 + var lineSelect = $('#outgoAdjustAllPanel .lineSelect');
  113 + var vehicSelect = $('#outgoAdjustAllPanel .vehicSelect');
  114 +
  115 + var initStatus, schedul;
  116 + $('#outgoAdjustAllPanel').on('init', function(e, ops){
  117 + initStatus = true;
  118 + _data = ops._data;
  119 + _alone = ops._alone;
  120 + schedul = ops.selected;
  121 +
  122 + //线路下拉框
  123 + var data = [];
  124 + lineCodeMaps = _data.getLineIds();
  125 + console.log(lineCodeMaps);
  126 + for(var line in lineCodeMaps){
  127 + data.push({id: line, text: lineCodeMaps[line]});
  128 + }
  129 +
  130 + initPinYinSelect2(lineSelect, data, function(){
  131 + //默认选中线路
  132 + lineSelect.val(schedul.xlBm).trigger("change");
  133 +
  134 +
  135 + }).on('change', lineSelectChange);
  136 +
  137 +
  138 + //线路切换事件
  139 + function lineSelectChange(){
  140 + var lineCode = $(this).val();
  141 +
  142 + var index = layer.msg('加载中', {icon: 16});
  143 + //查询线路配车
  144 + $get('/cci/all', {'xl.lineCode_eq': lineCode}, function(rs){
  145 + var data = [];
  146 + $.each(rs, function(){
  147 + data.push({id: this.cl.carCode, text: this.cl.carCode})
  148 + });
  149 + vehicSelect.html('').select2({data: data});
  150 +
  151 + layer.close(index);
  152 +
  153 + //初始选中车辆
  154 + if(initStatus)
  155 + vehicSelect.val(schedul.clZbh);
  156 + //触发change
  157 + vehicSelect.trigger("change")
  158 + });
  159 + }
  160 +
  161 + //车辆切换事件
  162 + vehicSelect.on('change', function(){
  163 + //根据车辆获取班次信息
  164 + var schArray = _data.getSchedulByVeh($(this).val());
  165 +
  166 + var htmlStr = template('outgo_adjust_all_item_temp', {list: schArray});
  167 +
  168 + var table = '#outgoAdjustAllPanel .sch-table ';
  169 + $('tbody', table).html(htmlStr);
  170 +
  171 + //初始选中班次
  172 + if(initStatus){
  173 + var $tr = $('tr[data-id='+schedul.id+']', table);
  174 + $tr.addClass('anim-delay animated flash');
  175 + //滚动条
  176 + var cont = $('#outgoAdjustAllPanel .custom-table-panel');
  177 + cont.animate({
  178 + scrollTop: $tr.offset().top - cont.offset().top + $tr.scrollTop() - 36 * 4
  179 + }, 500);
  180 +
  181 + initStatus = false;
  182 + }
  183 + });
  184 +
  185 + //确定
  186 + $('.confirm', '#outgoAdjustAllPanel').on('click', function(){
  187 + var es = $('#outgoAdjustAllPanel .df-input'),old, t;
  188 + var changes = [];
  189 + for(var i = 0, e;e = es[i++];){
  190 + t = $(e).val(), old = $(e).data('old');
  191 + if(t == ''){
  192 + layer.alert('待发时间不能为空!', {icon: 2, title: '提交失败'});
  193 + $(e).addClass('custom-val-error');
  194 + return false;
  195 + }
  196 + $(e).removeClass('custom-val-error');
  197 +
  198 + if(old != t)
  199 + changes.push({old: old, t: t});
  200 + }
  201 +
  202 + var text = template('outgo_adjust_change_text_temp', {list: changes});
  203 + layer.confirm(text, {
  204 + btn: ['确认调整','取消'],title:'待发调整确认'
  205 + }, function(){
  206 + layer.msg('确认调整', {icon: 1});
  207 + });
  208 + });
  209 + });
  210 +}();
  211 +</script>
  212 +</div>
0 213 \ No newline at end of file
... ...
src/main/resources/static/pages/control/line/css/lineControl.css
... ... @@ -2032,16 +2032,24 @@ span.log-item-handle a {
2032 2032 }
2033 2033  
2034 2034 .out-badge:BEFORE{
2035   - content: '出场'
  2035 + content: '出场';
  2036 +}
  2037 +
  2038 +.out-badge.short:BEFORE{
  2039 + content: '出';
  2040 +}
  2041 +
  2042 +.in-badge.short:BEFORE{
  2043 + content: '进';
2036 2044 }
2037 2045  
2038 2046 @media ( max-width : 1780px) {
2039 2047 .in-badge:BEFORE{
2040   - content: '进'
  2048 + content: '进';
2041 2049 }
2042 2050  
2043 2051 .out-badge:BEFORE{
2044   - content: '出'
  2052 + content: '出';
2045 2053 }
2046 2054 }
2047 2055  
... ... @@ -2187,4 +2195,58 @@ tr._tr_active.active-line-no .out-badge{
2187 2195 color: black;
2188 2196 }
2189 2197  
  2198 +.pb-table tr .anim-delay{
  2199 + animation-delay:.5s;
  2200 + -webkit-animation-delay:.5s;
  2201 +}
  2202 +
  2203 +.sch-table tr td:nth-of-type(1),
  2204 +.sch-table tr td:nth-of-type(2),
  2205 +.sch-table tr td:nth-of-type(3),
  2206 +.sch-table tr td:nth-of-type(4),
  2207 +.sch-table tr td:nth-of-type(5){
  2208 + color: #646363;
  2209 +}
  2210 +
  2211 +.sch-table tr td:nth-of-type(6),
  2212 +.sch-table tr td:nth-of-type(7){
  2213 + color: black;
  2214 +}
  2215 +
  2216 +
  2217 +.sch-table tr th:nth-of-type(1),
  2218 +.sch-table tr th:nth-of-type(2),
  2219 +.sch-table tr th:nth-of-type(3),
  2220 +.sch-table tr th:nth-of-type(4),
  2221 +.sch-table tr th:nth-of-type(5){
  2222 + color: #646363;
  2223 +}
  2224 +
  2225 +.sch-table tr th:nth-of-type(6),
  2226 +.sch-table tr th:nth-of-type(7){
  2227 + color: black;
  2228 +}
  2229 +
  2230 +.sch-table input{
  2231 + color: black;
  2232 +}
2190 2233  
  2234 +.sch-table td{
  2235 + text-overflow: ellipsis;
  2236 + overflow: hidden;
  2237 + white-space: nowrap;
  2238 + vertical-align: middle !important;
  2239 +}
  2240 +
  2241 +.change-confirm-text span{
  2242 + margin: 3px 8px 0 3px;
  2243 + font-family: arial;
  2244 +}
  2245 +
  2246 +.change-confirm-text div span:nth-of-type(1){
  2247 + color: gray;
  2248 +}
  2249 +
  2250 +.change-confirm-text i{
  2251 + color: #46c146;
  2252 +}
... ...
src/main/resources/static/pages/control/line/index.html
... ... @@ -90,13 +90,28 @@
90 90 </div>
91 91 <div id="tooltipShade" class="animated fadeIn"></div>
92 92  
  93 +<div id="menuWrap"></div>
93 94 <!-- 线路调度右键菜单 -->
94   -<menu class="menu" id="rightMenu">
95   - <li class="menu-item" >
  95 +<menu class="menu" id="rightMenu" style="display: none;">
  96 + <li class="menu-item submenu">
96 97 <button type="button" class="menu-btn" data-method="outgoAdjust">
97 98 <span class="menu-text">待发调整</span>
98 99 </button>
  100 + <menu class="menu">
  101 + <li class="menu-item">
  102 + <button type="button" class="menu-btn" data-method="outgoAdjust">
  103 + <span class="menu-text">基于班次</span>
  104 + </button>
  105 + </li>
  106 + <li class="menu-item">
  107 + <button type="button" class="menu-btn" data-method="outgoAdjustAll">
  108 + <span class="menu-text">基于车辆</span>
  109 + </button>
  110 + </li>
  111 + </menu>
99 112 </li>
  113 +
  114 +
100 115 <li class="menu-separator"></li>
101 116 <li class="menu-item" >
102 117 <button type="button" class="menu-btn" data-method="planDestroy">
... ... @@ -164,7 +179,7 @@
164 179 </li>
165 180 </menu>
166 181 <!-- 主页右键菜单 -->
167   -<menu class="menu" id="homeMenu">
  182 +<menu class="menu" id="homeMenu" style="display: none;">
168 183 <li class="menu-item disabled" id="menu-linename">
169 184 <button type="button" class="menu-btn">
170 185 <span class="menu-text">--- W2B-102 ---</span>
... ...
src/main/resources/static/pages/control/line/js/alone.js
... ... @@ -75,24 +75,33 @@ var _alone = (function(){
75 75 },
76 76 //添加一个班次到表格
77 77 addScheduleToTable: function(schedule){
78   - _data.pushSchedule(schedule);
79   -
80   - var upDown = schedule.xlDir==0?'up':'down';
81   - var tab = $('#tab_line_' + schedule.xlBm);
82   - //重新渲染表格
83   - var table = tab.find('.pb-table[data-type='+upDown+']');
84   - //获取班次信息
85   - var schArray = _data.findSchByLine(schedule.xlBm, schedule.xlDir);
86   - calculateLineNo(
87   - table.find('tbody').html(template('alone_plan_table_temp', {list: schArray}))[0]
88   - );
89   -
90   - //定位到新添加的班次
91   - var currTr = table.find('tr[data-id='+schedule.id+']')
92   - ,top = parseInt(currTr.find('td[name=lineNo]').text()) * 37;
93   -
94   - currTr.addClass('animated flash');
95   - currTr.parents('._body').slimScroll({ scrollTo: top + 'px' });
  78 + //将该线路走向班次 全部从服务器同步一次
  79 + var xlDir = schedule.xlDir, xlBm = schedule.xlBm;
  80 + $.get('/realSchedule/findByLineAndUpDown', {line: xlBm, upDown: xlDir}
  81 + ,function(list){
  82 + $.each(list, function(){
  83 + _data.pushSchedule(this);
  84 + });
  85 +
  86 + var upDown = xlDir==0?'up':'down';
  87 + var tab = $('#tab_line_' + xlBm);
  88 + //重新渲染表格
  89 + var table = tab.find('.pb-table[data-type='+upDown+']');
  90 + var schArray = _data.findSchByLine(xlBm, xlDir);
  91 + calculateLineNo(
  92 + table.find('tbody').html(template('alone_plan_table_temp', {list: schArray}))[0]
  93 + );
  94 +
  95 + var half = tab.find('._body').height() / 2;
  96 +
  97 + //定位到新添加的班次
  98 + var currTr = table.find('tr[data-id='+schedule.id+']')
  99 + ,top = parseInt(currTr.find('td[name=lineNo]').text()) * 37 - half;
  100 +
  101 + top = top>0?top:0;
  102 + currTr.addClass('anim-delay animated flash');
  103 + currTr.parents('._body').slimScroll({ scrollTo: top + 'px' });
  104 + });
96 105 },
97 106 //重新计算行号
98 107 calculateLineNo: calculateLineNo
... ...
src/main/resources/static/pages/control/line/js/data.js
... ... @@ -13,8 +13,7 @@ var _data = (function(){
13 13  
14 14 var dateStr = moment().format('YYYY-MM-DD');
15 15 //实际排班
16   - var schedules = {}
17   - ,scheduleList = [];
  16 + var schedules = {};
18 17  
19 18 //站点路由缓存
20 19 var stationRoute = {};
... ... @@ -38,10 +37,17 @@ var _data = (function(){
38 37 //根据线路和上下行获取计划排班
39 38 findSchByLine: function(xlbm, upDown){
40 39 var array = [];
41   - $.each(scheduleList, function(){
42   - if(this.xlBm == xlbm
43   - && this.xlDir == upDown)
44   - array.push(this);
  40 + var sch;
  41 + for(var id in schedules){
  42 + sch = schedules[id];
  43 + if(sch.xlBm == xlbm
  44 + && sch.xlDir == upDown){
  45 + array.push(sch);
  46 + }
  47 + }
  48 + //排序
  49 + array.sort(function(a, b){
  50 + return a.fcsjT - b.fcsjT;
45 51 });
46 52  
47 53 return array;
... ... @@ -54,8 +60,6 @@ var _data = (function(){
54 60 pushSchedule: function(sch){
55 61 //附加信息
56 62 attachInfo(sch);
57   - //加入缓存
58   - scheduleList.push(sch);
59 63 schedules[sch.id] = sch;
60 64 lineLpMap[sch.xlBm][sch.lpName].push(sch);
61 65 },
... ... @@ -124,7 +128,6 @@ var _data = (function(){
124 128 attachInfo(this);
125 129 //缓存排班计划
126 130 schedules[this.id] = this;
127   - scheduleList.push(this);
128 131 //构造 线路 ——> 路牌 ——> 班次 3层映射
129 132 if(!lineLpMap[lineCode][this.lpName])
130 133 lineLpMap[lineCode][this.lpName] = [];
... ... @@ -150,9 +153,16 @@ var _data = (function(){
150 153 //根据车辆内部编码获取排班数组
151 154 getSchedulByVeh: function(nbbm){
152 155 var array = [];
153   - $.each(scheduleList, function(){
154   - if(this.clZbh == nbbm)
155   - array.push(this);
  156 + var sch;
  157 + for(var id in schedules){
  158 + sch = schedules[id];
  159 + if(sch.clZbh == nbbm)
  160 + array.push(sch);
  161 + }
  162 +
  163 + //排序
  164 + array.sort(function(a, b){
  165 + return a.fcsjT - b.fcsjT;
156 166 });
157 167 return array;
158 168 },
... ...
src/main/resources/static/pages/control/line/js/main.js
... ... @@ -83,6 +83,7 @@
83 83 setTimeout(function(){
84 84 //去掉loading
85 85 $('.load-anim').fadeOut();
  86 + $('menu.menu').show();
86 87 }, 500);
87 88 }, 400);
88 89  
... ...
src/main/resources/static/pages/control/line/js/rightMenu.js
... ... @@ -511,6 +511,26 @@ var _menu = (function() {
511 511 });
512 512 }
513 513 });
  514 + },
  515 + //基于车辆的待发调整
  516 + outgoAdjustAll: function(schedul){
  517 + $.get('/pages/control/line/child_pages/outgo_adjust_all.html', function(content){
  518 + layer.open({
  519 + type: 1,
  520 + area: '830px',
  521 + maxmin: true,
  522 + content: content,
  523 + shift: 5,
  524 + title: '待发调整(车辆)',
  525 + success: function(){
  526 + $('#outgoAdjustAllPanel').trigger('init', {
  527 + selected: schedul,
  528 + _data: _data,
  529 + _alone: _alone
  530 + });
  531 + }
  532 + });
  533 + });
514 534 }
515 535 }
516 536  
... ...
src/main/resources/static/pages/control/line/temps/alone_tp.html
... ... @@ -486,7 +486,7 @@
486 486 <div class="form-custom-row">
487 487 <div class="item full" >
488 488 <p style="margin: 10px 0;">调整说明: <span class="font-red">(不超过20个字符)</span></p>
489   - <textarea class="form-control" name="remarks" rows="4" placeholder="说明,必填"></textarea>
  489 + <textarea class="form-control" name="remarks" rows="4" placeholder="调整说明"></textarea>
490 490 </div>
491 491 </div>
492 492 <hr>
... ...