Commit 64217be78a55c26f88a0f078ab7512541aea39c9

Authored by 廖磊
2 parents 360a1cca 1af80940

Merge branch 'pudong' of http://222.66.0.204:8090/panzhaov5/bsth_control

into pudong
Showing 23 changed files with 229 additions and 87 deletions
src/main/java/com/bsth/XDApplication.java
1 package com.bsth; 1 package com.bsth;
2 2
3 import com.bsth.data.BasicData; 3 import com.bsth.data.BasicData;
  4 +import com.bsth.data.LineVersionsData;
4 import com.bsth.data.ThreadMonotor; 5 import com.bsth.data.ThreadMonotor;
5 import com.bsth.data.car_out_info.UpdateDBThread; 6 import com.bsth.data.car_out_info.UpdateDBThread;
6 import com.bsth.data.directive.DirectivesPstThread; 7 import com.bsth.data.directive.DirectivesPstThread;
7 import com.bsth.data.forecast.SampleTimeDataLoader; 8 import com.bsth.data.forecast.SampleTimeDataLoader;
8 import com.bsth.data.gpsdata_v2.thread.GpsDataLoaderThread; 9 import com.bsth.data.gpsdata_v2.thread.GpsDataLoaderThread;
9 import com.bsth.data.gpsdata_v2.thread.OfflineMonitorThread; 10 import com.bsth.data.gpsdata_v2.thread.OfflineMonitorThread;
10 -import com.bsth.data.line_version.thread.FixedEnableVerionsThread;  
11 import com.bsth.data.msg_queue.DirectivePushQueue; 11 import com.bsth.data.msg_queue.DirectivePushQueue;
12 import com.bsth.data.msg_queue.WebSocketPushQueue; 12 import com.bsth.data.msg_queue.WebSocketPushQueue;
13 import com.bsth.data.safe_driv.SafeDrivDataLoadThread; 13 import com.bsth.data.safe_driv.SafeDrivDataLoadThread;
@@ -73,11 +73,11 @@ public class XDApplication implements CommandLineRunner { @@ -73,11 +73,11 @@ public class XDApplication implements CommandLineRunner {
73 @Autowired 73 @Autowired
74 OfflineMonitorThread offlineMonitorThread; 74 OfflineMonitorThread offlineMonitorThread;
75 75
76 - //@Autowired  
77 - //LineVersionsData lineVersionsData;  
78 -  
79 @Autowired 76 @Autowired
80 - FixedEnableVerionsThread fixedEnableVerionsThread; 77 + LineVersionsData lineVersionsData;
  78 +
  79 + /*@Autowired
  80 + FixedEnableVerionsThread fixedEnableVerionsThread;*/
81 81
82 @Autowired 82 @Autowired
83 SafeDrivDataLoadThread safeDrivDataLoadThread; 83 SafeDrivDataLoadThread safeDrivDataLoadThread;
@@ -180,9 +180,9 @@ public class XDApplication implements CommandLineRunner { @@ -180,9 +180,9 @@ public class XDApplication implements CommandLineRunner {
180 sexec.scheduleAtFixedRate(calcOilThread, timeDiff / 1000, 60 * 60 * 24, TimeUnit.SECONDS); 180 sexec.scheduleAtFixedRate(calcOilThread, timeDiff / 1000, 60 * 60 * 24, TimeUnit.SECONDS);
181 181
182 //线路版本更新 182 //线路版本更新
183 - //sexec.scheduleWithFixedDelay(lineVersionsData, 60 * 5, 60 * 15, TimeUnit.SECONDS); 183 + sexec.scheduleWithFixedDelay(lineVersionsData, 60 * 5, 60 * 15, TimeUnit.SECONDS);
184 184
185 //线路版本更新 185 //线路版本更新
186 - sexec.scheduleWithFixedDelay(fixedEnableVerionsThread, 60 * 4, 60 * 2 , TimeUnit.SECONDS); 186 + //sexec.scheduleWithFixedDelay(fixedEnableVerionsThread, 60 * 4, 60 * 2 , TimeUnit.SECONDS);
187 } 187 }
188 } 188 }
src/main/java/com/bsth/controller/LineController.java
1 package com.bsth.controller; 1 package com.bsth.controller;
2 2
3 -import java.text.ParseException;  
4 -import java.text.SimpleDateFormat;  
5 -import java.util.Date;  
6 -import java.util.HashMap;  
7 -import java.util.Map;  
8 -  
9 -import org.springframework.beans.factory.annotation.Autowired;  
10 -import org.springframework.web.bind.annotation.RequestMapping;  
11 -import org.springframework.web.bind.annotation.RequestMethod;  
12 -import org.springframework.web.bind.annotation.RequestParam;  
13 -import org.springframework.web.bind.annotation.RestController;  
14 -  
15 import com.bsth.common.ResponseCode; 3 import com.bsth.common.ResponseCode;
16 import com.bsth.entity.Line; 4 import com.bsth.entity.Line;
17 import com.bsth.entity.LineVersions; 5 import com.bsth.entity.LineVersions;
18 import com.bsth.service.LineService; 6 import com.bsth.service.LineService;
19 import com.bsth.service.LineVersionsService; 7 import com.bsth.service.LineVersionsService;
20 import com.bsth.util.GetUIDAndCode; 8 import com.bsth.util.GetUIDAndCode;
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.web.bind.annotation.RequestMapping;
  11 +import org.springframework.web.bind.annotation.RequestMethod;
  12 +import org.springframework.web.bind.annotation.RequestParam;
  13 +import org.springframework.web.bind.annotation.RestController;
  14 +
  15 +import java.text.ParseException;
  16 +import java.text.SimpleDateFormat;
  17 +import java.util.Date;
  18 +import java.util.HashMap;
  19 +import java.util.Map;
21 20
22 /** 21 /**
23 * 22 *
@@ -123,4 +122,14 @@ public class LineController extends BaseController<Line, Integer> { @@ -123,4 +122,14 @@ public class LineController extends BaseController<Line, Integer> {
123 Line findByID(@RequestParam(defaultValue = "id") Integer id){ 122 Line findByID(@RequestParam(defaultValue = "id") Integer id){
124 return service.findById(id); 123 return service.findById(id);
125 } 124 }
  125 +
  126 + /**
  127 + * 删除线路
  128 + * @param id
  129 + * @return
  130 + */
  131 + @RequestMapping(value ="/remove" , method = RequestMethod.POST)
  132 + public Map<String, Object> remove(Integer id){
  133 + return service.remove(id);
  134 + }
126 } 135 }
src/main/java/com/bsth/data/directive/DirectivesPstThread.java
@@ -7,6 +7,8 @@ import com.bsth.entity.directive.Directive; @@ -7,6 +7,8 @@ import com.bsth.entity.directive.Directive;
7 import com.bsth.entity.realcontrol.ScheduleRealInfo; 7 import com.bsth.entity.realcontrol.ScheduleRealInfo;
8 import com.bsth.repository.directive.D60Repository; 8 import com.bsth.repository.directive.D60Repository;
9 import com.bsth.repository.directive.D64Repository; 9 import com.bsth.repository.directive.D64Repository;
  10 +import org.joda.time.format.DateTimeFormat;
  11 +import org.joda.time.format.DateTimeFormatter;
10 import org.slf4j.Logger; 12 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory; 13 import org.slf4j.LoggerFactory;
12 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,6 +34,8 @@ public class DirectivesPstThread extends Thread { @@ -32,6 +34,8 @@ public class DirectivesPstThread extends Thread {
32 @Autowired 34 @Autowired
33 DayOfSchedule dayOfSchedule; 35 DayOfSchedule dayOfSchedule;
34 36
  37 + private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd");
  38 +
35 @Override 39 @Override
36 public void run() { 40 public void run() {
37 41
@@ -52,6 +56,8 @@ public class DirectivesPstThread extends Thread { @@ -52,6 +56,8 @@ public class DirectivesPstThread extends Thread {
52 continue; 56 continue;
53 } 57 }
54 } 58 }
  59 + //日期
  60 + d60.setRq(fmtyyyyMMdd.print(d60.getTimestamp()));
55 d60Repository.save(d60); 61 d60Repository.save(d60);
56 } 62 }
57 63
src/main/java/com/bsth/data/gpsdata_v2/cache/GpsCacheData.java
@@ -9,6 +9,8 @@ import org.slf4j.Logger; @@ -9,6 +9,8 @@ import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory; 9 import org.slf4j.LoggerFactory;
10 10
11 import java.util.*; 11 import java.util.*;
  12 +import java.util.concurrent.ConcurrentHashMap;
  13 +import java.util.concurrent.ConcurrentMap;
12 14
13 /** 15 /**
14 * gps 数据缓存 16 * gps 数据缓存
@@ -17,10 +19,10 @@ import java.util.*; @@ -17,10 +19,10 @@ import java.util.*;
17 public class GpsCacheData { 19 public class GpsCacheData {
18 20
19 /** 21 /**
20 - * 每辆车缓存最后300条gps 22 + * 每辆车缓存最后200条gps
21 */ 23 */
22 - private static final int CACHE_SIZE = 300;  
23 - private static Map<String, CircleQueue<GpsEntity>> gpsCacheMap = new HashMap<>(); 24 + private static final int CACHE_SIZE = 200;
  25 + private static ConcurrentMap<String, CircleQueue<GpsEntity>> gpsCacheMap = new ConcurrentHashMap<>();
24 26
25 /** 27 /**
26 * 车辆执行班次的详细 进出站数据 28 * 车辆执行班次的详细 进出站数据
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -104,6 +104,7 @@ public class DayOfSchedule { @@ -104,6 +104,7 @@ public class DayOfSchedule {
104 static { 104 static {
105 nbbmScheduleMap = ArrayListMultimap.create(); 105 nbbmScheduleMap = ArrayListMultimap.create();
106 lpScheduleMap = ArrayListMultimap.create(); 106 lpScheduleMap = ArrayListMultimap.create();
  107 + lineNbbmsMap = HashMultimap.create();
107 108
108 id2SchedulMap = new ConcurrentHashMap<>(); 109 id2SchedulMap = new ConcurrentHashMap<>();
109 pstBuffer = new ConcurrentLinkedQueue<>(); 110 pstBuffer = new ConcurrentLinkedQueue<>();
src/main/java/com/bsth/data/summary/entity/TempSchSituation.java
@@ -31,8 +31,6 @@ public class TempSchSituation { @@ -31,8 +31,6 @@ public class TempSchSituation {
31 31
32 private String sGh; 32 private String sGh;
33 33
34 - private String reason;  
35 -  
36 private int size; 34 private int size;
37 35
38 private Double mileage; 36 private Double mileage;
@@ -99,14 +97,6 @@ public class TempSchSituation { @@ -99,14 +97,6 @@ public class TempSchSituation {
99 this.sGh = sGh; 97 this.sGh = sGh;
100 } 98 }
101 99
102 - public String getReason() {  
103 - return reason;  
104 - }  
105 -  
106 - public void setReason(String reason) {  
107 - this.reason = reason;  
108 - }  
109 -  
110 public int getSize() { 100 public int getSize() {
111 return size; 101 return size;
112 } 102 }
@@ -162,4 +152,4 @@ public class TempSchSituation { @@ -162,4 +152,4 @@ public class TempSchSituation {
162 public void setFgsBm(String fgsBm) { 152 public void setFgsBm(String fgsBm) {
163 this.fgsBm = fgsBm; 153 this.fgsBm = fgsBm;
164 } 154 }
165 -} 155 +}
166 \ No newline at end of file 156 \ No newline at end of file
src/main/java/com/bsth/data/summary/service/impl/TempSchSituationServiceImpl.java
@@ -37,19 +37,14 @@ public class TempSchSituationServiceImpl extends BaseServiceImpl&lt;TempSchSituatio @@ -37,19 +37,14 @@ public class TempSchSituationServiceImpl extends BaseServiceImpl&lt;TempSchSituatio
37 @Override 37 @Override
38 public int compare(TempSchSituation o1, TempSchSituation o2) { 38 public int compare(TempSchSituation o1, TempSchSituation o2) {
39 int i = o1.getRq().compareTo(o2.getRq()); 39 int i = o1.getRq().compareTo(o2.getRq());
40 - if(i != 0) 40 + if (i != 0)
41 return i; 41 return i;
42 42
43 i = o1.getLineName().compareTo(o2.getLineName()); 43 i = o1.getLineName().compareTo(o2.getLineName());
44 - if(i != 0) 44 + if (i != 0)
45 return i; 45 return i;
46 46
47 i = (int) (o1.getT() - o2.getT()); 47 i = (int) (o1.getT() - o2.getT());
48 - if(i != 0)  
49 - return i;  
50 -  
51 - i = o1.getReason().compareTo(o2.getReason());  
52 -  
53 return i; 48 return i;
54 } 49 }
55 }); 50 });
@@ -64,10 +59,10 @@ public class TempSchSituationServiceImpl extends BaseServiceImpl&lt;TempSchSituatio @@ -64,10 +59,10 @@ public class TempSchSituationServiceImpl extends BaseServiceImpl&lt;TempSchSituatio
64 59
65 List<TempSchSituation> list = (List<TempSchSituation>) super.list(map); 60 List<TempSchSituation> list = (List<TempSchSituation>) super.list(map);
66 61
67 - if(list.size() == 0){ 62 + if (list.size() == 0) {
68 response.setHeader("Content-type", "text/html;charset=UTF-8"); 63 response.setHeader("Content-type", "text/html;charset=UTF-8");
69 response.getWriter().print("<span style='color:red;font-size:24px;'>根据查询条件没有搜索到数据,别导了!</span>"); 64 response.getWriter().print("<span style='color:red;font-size:24px;'>根据查询条件没有搜索到数据,别导了!</span>");
70 - return ; 65 + return;
71 } 66 }
72 67
73 //排序 68 //排序
@@ -75,19 +70,14 @@ public class TempSchSituationServiceImpl extends BaseServiceImpl&lt;TempSchSituatio @@ -75,19 +70,14 @@ public class TempSchSituationServiceImpl extends BaseServiceImpl&lt;TempSchSituatio
75 @Override 70 @Override
76 public int compare(TempSchSituation o1, TempSchSituation o2) { 71 public int compare(TempSchSituation o1, TempSchSituation o2) {
77 int i = o1.getRq().compareTo(o2.getRq()); 72 int i = o1.getRq().compareTo(o2.getRq());
78 - if(i != 0) 73 + if (i != 0)
79 return i; 74 return i;
80 75
81 i = o1.getLineName().compareTo(o2.getLineName()); 76 i = o1.getLineName().compareTo(o2.getLineName());
82 - if(i != 0) 77 + if (i != 0)
83 return i; 78 return i;
84 79
85 i = (int) (o1.getT() - o2.getT()); 80 i = (int) (o1.getT() - o2.getT());
86 - if(i != 0)  
87 - return i;  
88 -  
89 - i = o1.getReason().compareTo(o2.getReason());  
90 -  
91 return i; 81 return i;
92 } 82 }
93 }); 83 });
@@ -103,7 +93,7 @@ public class TempSchSituationServiceImpl extends BaseServiceImpl&lt;TempSchSituatio @@ -103,7 +93,7 @@ public class TempSchSituationServiceImpl extends BaseServiceImpl&lt;TempSchSituatio
103 Row row; 93 Row row;
104 TempSchSituation tss; 94 TempSchSituation tss;
105 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); 95 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
106 - for(int i = 0; i < list.size(); i++){ 96 + for (int i = 0; i < list.size(); i++) {
107 tss = list.get(i); 97 tss = list.get(i);
108 row = sheet.createRow(i + 1); 98 row = sheet.createRow(i + 1);
109 row.createCell(0).setCellValue(tss.getRq()); 99 row.createCell(0).setCellValue(tss.getRq());
@@ -132,5 +122,4 @@ public class TempSchSituationServiceImpl extends BaseServiceImpl&lt;TempSchSituatio @@ -132,5 +122,4 @@ public class TempSchSituationServiceImpl extends BaseServiceImpl&lt;TempSchSituatio
132 logger.error("", e); 122 logger.error("", e);
133 } 123 }
134 } 124 }
135 -  
136 } 125 }
137 \ No newline at end of file 126 \ No newline at end of file
src/main/java/com/bsth/entity/Line.java
@@ -160,6 +160,11 @@ public class Line implements Serializable { @@ -160,6 +160,11 @@ public class Line implements Serializable {
160 160
161 /** 是否在使用 <1:是;0:否> bit length(50) */ 161 /** 是否在使用 <1:是;0:否> bit length(50) */
162 private Integer inUse; 162 private Integer inUse;
  163 +
  164 + /**
  165 + * 逻辑删除标记 为 1:标识已删除
  166 + */
  167 + private Integer remove;
163 168
164 public Integer getSpacGrade() { 169 public Integer getSpacGrade() {
165 return spacGrade; 170 return spacGrade;
@@ -492,6 +497,13 @@ public class Line implements Serializable { @@ -492,6 +497,13 @@ public class Line implements Serializable {
492 public void setSfyy(Integer sfyy) { 497 public void setSfyy(Integer sfyy) {
493 this.sfyy = sfyy; 498 this.sfyy = sfyy;
494 } 499 }
495 -  
496 - 500 +
  501 +
  502 + public Integer getRemove() {
  503 + return remove;
  504 + }
  505 +
  506 + public void setRemove(Integer remove) {
  507 + this.remove = remove;
  508 + }
497 } 509 }
src/main/java/com/bsth/entity/directive/Directive.java
@@ -28,6 +28,8 @@ public class Directive { @@ -28,6 +28,8 @@ public class Directive {
28 * 时间戳 28 * 时间戳
29 */ 29 */
30 protected Long timestamp; 30 protected Long timestamp;
  31 +
  32 + private String rq;
31 33
32 /** 34 /**
33 * 时间 HH:mm 35 * 时间 HH:mm
@@ -113,4 +115,12 @@ public class Directive { @@ -113,4 +115,12 @@ public class Directive {
113 public void setSender(String sender) { 115 public void setSender(String sender) {
114 this.sender = sender; 116 this.sender = sender;
115 } 117 }
  118 +
  119 + public String getRq() {
  120 + return rq;
  121 + }
  122 +
  123 + public void setRq(String rq) {
  124 + this.rq = rq;
  125 + }
116 } 126 }
src/main/java/com/bsth/service/LineService.java
1 package com.bsth.service; 1 package com.bsth.service;
2 2
3 -import java.util.Map;  
4 -  
5 -import org.springframework.web.bind.annotation.RequestMapping;  
6 -import org.springframework.web.bind.annotation.RequestMethod;  
7 -  
8 import com.bsth.entity.Line; 3 import com.bsth.entity.Line;
9 4
  5 +import java.util.Map;
  6 +
10 /** 7 /**
11 * 8 *
12 * @Interface: LineService(线路service业务层实现接口) 9 * @Interface: LineService(线路service业务层实现接口)
@@ -38,4 +35,6 @@ public interface LineService extends BaseService&lt;Line, Integer&gt; { @@ -38,4 +35,6 @@ public interface LineService extends BaseService&lt;Line, Integer&gt; {
38 String lineCodeVerification(String lineCode); 35 String lineCodeVerification(String lineCode);
39 36
40 Map<String, Object> update(Line l); 37 Map<String, Object> update(Line l);
  38 +
  39 + Map<String,Object> remove(Integer id);
41 } 40 }
src/main/java/com/bsth/service/impl/LineServiceImpl.java
1 package com.bsth.service.impl; 1 package com.bsth.service.impl;
2 2
3 -import java.util.HashMap;  
4 -import java.util.Map;  
5 -  
6 -import org.springframework.beans.factory.annotation.Autowired;  
7 -import org.springframework.stereotype.Service;  
8 -import org.springframework.transaction.annotation.Transactional;  
9 -  
10 import com.bsth.common.ResponseCode; 3 import com.bsth.common.ResponseCode;
11 import com.bsth.entity.Line; 4 import com.bsth.entity.Line;
12 import com.bsth.repository.LineRepository; 5 import com.bsth.repository.LineRepository;
13 import com.bsth.service.LineService; 6 import com.bsth.service.LineService;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.jdbc.core.JdbcTemplate;
  9 +import org.springframework.stereotype.Service;
  10 +import org.springframework.transaction.annotation.Transactional;
  11 +
  12 +import java.util.HashMap;
  13 +import java.util.Map;
14 14
15 /** 15 /**
16 * 16 *
@@ -34,6 +34,9 @@ public class LineServiceImpl extends BaseServiceImpl&lt;Line, Integer&gt; implements L @@ -34,6 +34,9 @@ public class LineServiceImpl extends BaseServiceImpl&lt;Line, Integer&gt; implements L
34 @Autowired 34 @Autowired
35 private LineRepository repository; 35 private LineRepository repository;
36 36
  37 + @Autowired
  38 + JdbcTemplate jdbcTemplate;
  39 +
37 /** 40 /**
38 * 获取线路编码 41 * 获取线路编码
39 * 42 *
@@ -86,4 +89,32 @@ public class LineServiceImpl extends BaseServiceImpl&lt;Line, Integer&gt; implements L @@ -86,4 +89,32 @@ public class LineServiceImpl extends BaseServiceImpl&lt;Line, Integer&gt; implements L
86 return map; 89 return map;
87 } 90 }
88 91
  92 + @Override
  93 + public Map<String, Object> remove(Integer id) {
  94 + Map<String, Object> map = new HashMap<>();
  95 +
  96 + try{
  97 + if(null == id){
  98 + map.put("status", ResponseCode.ERROR);
  99 + map.put("msg", "参数异常");
  100 + return map;
  101 + }
  102 +
  103 + int destroy = jdbcTemplate.queryForObject("select destroy from bsth_c_line where id=" + id, Integer.class);
  104 +
  105 + if(destroy==0){
  106 + map.put("status", ResponseCode.ERROR);
  107 + map.put("msg", "你只能删除已撤销的线路!");
  108 + return map;
  109 + }
  110 +
  111 + jdbcTemplate.update("update bsth_c_line set `remove`=1 where id=?", id);
  112 + map.put("status", ResponseCode.SUCCESS);
  113 + }catch (Exception e){
  114 + logger.error("", e);
  115 + map.put("status", ResponseCode.ERROR);
  116 + map.put("msg", e.getMessage());
  117 + }
  118 + return map;
  119 + }
89 } 120 }
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -1234,7 +1234,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1234,7 +1234,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1234 ScheduleModifyLogger.sftz(sch, fcsjActual, remarks); 1234 ScheduleModifyLogger.sftz(sch, fcsjActual, remarks);
1235 1235
1236 sch.setFcsjActualAll(fcsjActual); 1236 sch.setFcsjActualAll(fcsjActual);
1237 - sch.addRemarks(remarks); 1237 + sch.setRemark(remarks);
1238 sch.calcStatus(); 1238 sch.calcStatus();
1239 //if(sch.isLate2()){ 1239 //if(sch.isLate2()){
1240 //取消应发未到标记 1240 //取消应发未到标记
src/main/resources/static/pages/base/line/js/line-list-table.js
@@ -180,6 +180,7 @@ @@ -180,6 +180,7 @@
180 params['order'] = 'id'; 180 params['order'] = 'id';
181 // 记录当前页数 181 // 记录当前页数
182 params['page'] = page; 182 params['page'] = page;
  183 + params['remove_ne'] = 1;
183 // 弹出正在加载层 184 // 弹出正在加载层
184 var i = layer.load(2); 185 var i = layer.load(2);
185 getComp(function(rs) { 186 getComp(function(rs) {
src/main/resources/static/pages/base/line/list.html
1 <!-- <link href="/pages/base/line/css/animate.css" rel="stylesheet" type="text/css" /> 1 <!-- <link href="/pages/base/line/css/animate.css" rel="stylesheet" type="text/css" />
2 <link href="/pages/base/line/css/tipso.css" rel="stylesheet" type="text/css" /> --> 2 <link href="/pages/base/line/css/tipso.css" rel="stylesheet" type="text/css" /> -->
3 <!-- 片段标题 START --> 3 <!-- 片段标题 START -->
  4 +<style>
  5 + a.ct_base_line_delete_link{
  6 + font-size: 12px;
  7 + color: red;
  8 + vertical-align: bottom;
  9 + display: inline-block;
  10 + margin-left: 5px;
  11 + text-decoration: underline;
  12 + }
  13 +
  14 + a.ct_base_line_delete_link:hover{
  15 + color: #d11608;
  16 + }
  17 +</style>
4 <div class="page-head"> 18 <div class="page-head">
5 <div class="page-title"> 19 <div class="page-title">
6 <h1>线路信息</h1> 20 <h1>线路信息</h1>
@@ -355,6 +369,10 @@ @@ -355,6 +369,10 @@
355 <td> 369 <td>
356 <a href="details.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 详细 </a> 370 <a href="details.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 详细 </a>
357 <a href="edit.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 修改 </a> 371 <a href="edit.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 修改 </a>
  372 +
  373 + {{if obj.destroy==1}}
  374 + <a class="ct_base_line_delete_link" data-id="{{obj.id}}" data-name="{{obj.name}}"> 删除 </a>
  375 + {{/if}}
358 </td> 376 </td>
359 </tr> 377 </tr>
360 {{/each}} 378 {{/each}}
@@ -365,4 +383,23 @@ @@ -365,4 +383,23 @@
365 {{/if}} 383 {{/if}}
366 </script> 384 </script>
367 <!-- 线路信息片段JS模块 --> 385 <!-- 线路信息片段JS模块 -->
368 -<script src="/pages/base/line/js/line-list-table.js"></script>  
369 \ No newline at end of file 386 \ No newline at end of file
  387 +<script src="/pages/base/line/js/line-list-table.js"></script>
  388 +<script>
  389 + (function () {
  390 + $(document).on('click', 'a.ct_base_line_delete_link', function () {
  391 + var id = $(this).data('id'),
  392 + name = $(this).data('name');
  393 +
  394 + layer.confirm('你确定要删除线路【'+name+'】?', {
  395 + btn: ['确定删除','取消'] //按钮
  396 + }, function(){
  397 + layer.msg('操作中...', {icon: 16,shade: 0.01});
  398 + $post('/line/remove', {id: id}, function (rs) {
  399 + layer.msg('删除成功!');
  400 + $('.filter-submit.margin-bottom').trigger('click');
  401 + });
  402 +
  403 + });
  404 + });
  405 + })();
  406 +</script>
370 \ No newline at end of file 407 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/js/v2/ParameterObj.js
@@ -390,9 +390,18 @@ var ParameterObj = function() { @@ -390,9 +390,18 @@ var ParameterObj = function() {
390 */ 390 */
391 getUpLastDtimeObj: function() { 391 getUpLastDtimeObj: function() {
392 _validInternal(); // 验证 392 _validInternal(); // 验证
393 - return this.toTimeObj( 393 + var oStartTime = this.toTimeObj(
  394 + _firstLastDepartureTimeStrObj.up.firstVehicleDepartureTimeStr
  395 + );
  396 + var oEndTime = this.toTimeObj(
394 _firstLastDepartureTimeStrObj.up.lastVehicleDepartureTimeStr 397 _firstLastDepartureTimeStrObj.up.lastVehicleDepartureTimeStr
395 ); 398 );
  399 + if (oEndTime.isBefore(oStartTime)) {
  400 + // 如果末班车时间早于首班车时间,则末班车时间跨天,需要加1天
  401 + oEndTime.add(1, "day");
  402 + }
  403 +
  404 + return oEndTime;
396 }, 405 },
397 /** 406 /**
398 * 获取下行首班时间对象。 407 * 获取下行首班时间对象。
@@ -410,9 +419,18 @@ var ParameterObj = function() { @@ -410,9 +419,18 @@ var ParameterObj = function() {
410 */ 419 */
411 getDownLastDTimeObj: function() { 420 getDownLastDTimeObj: function() {
412 _validInternal(); // 验证 421 _validInternal(); // 验证
413 - return this.toTimeObj( 422 + var oStartTime = this.toTimeObj(
  423 + _firstLastDepartureTimeStrObj.down.firstVehicleDepartureTimeStr
  424 + );
  425 + var oEndTime = this.toTimeObj(
414 _firstLastDepartureTimeStrObj.down.lastVehicleDepartureTimeStr 426 _firstLastDepartureTimeStrObj.down.lastVehicleDepartureTimeStr
415 ); 427 );
  428 + if (oEndTime.isBefore(oStartTime)) {
  429 + // 如果末班车时间早于首班车时间,则末班车时间跨天,需要加1天
  430 + oEndTime.add(1, "day");
  431 + }
  432 +
  433 + return oEndTime;
416 }, 434 },
417 435
418 //-------------- 获取吃饭时间 ----------------// 436 //-------------- 获取吃饭时间 ----------------//
src/main/resources/static/pages/mforms/singledatas/jquery.table2excel.min.js
1 -/*  
2 - * jQuery table2excel - v1.1.1  
3 - * jQuery plugin to export an .xls file in browser from an HTML table  
4 - * https://github.com/rainabba/jquery-table2excel  
5 - *  
6 - * Made by rainabba  
7 - * Under MIT License  
8 - */ 1 +/*
  2 + * jQuery table2excel - v1.1.1
  3 + * jQuery plugin to export an .xls file in browser from an HTML table
  4 + * https://github.com/rainabba/jquery-table2excel
  5 + *
  6 + * Made by rainabba
  7 + * Under MIT License
  8 + */
9 !function(a,b,c,d){function e(b,c){this.element=b,this.settings=a.extend({},k,c),this._defaults=k,this._name=j,this.init()}function f(a){return a.filename?a.filename:"table2excel"}function g(a){var b=/(\s+alt\s*=\s*"([^"]*)"|\s+alt\s*=\s*'([^']*)')/i;return a.replace(/<img[^>]*>/gi,function(a){var c=b.exec(a);return null!==c&&c.length>=2?c[2]:""})}function h(a){return a.replace(/<a[^>]*>|<\/a>/gi,"")}function i(a){var b=/(\s+value\s*=\s*"([^"]*)"|\s+value\s*=\s*'([^']*)')/i;return a.replace(/<input[^>]*>|<\/input>/gi,function(a){var c=b.exec(a);return null!==c&&c.length>=2?c[2]:""})}var j="table2excel",k={exclude:".noExl",name:"Table2Excel",filename:"table2excel",fileext:".xls",exclude_img:!0,exclude_links:!0,exclude_inputs:!0};e.prototype={init:function(){var b=this;b.template={head:'<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><head>\x3c!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets>',sheet:{head:"<x:ExcelWorksheet><x:Name>",tail:"</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>"},mid:"</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--\x3e</head><body>",table:{head:"<table>",tail:"</table>"},foot:"</body></html>"},b.tableRows=[],a(b.element).each(function(c,d){var e="";a(d).find("tr").not(b.settings.exclude).each(function(c,d){e+="<tr>",a(d).find("td,th").not(b.settings.exclude).each(function(c,d){var f={rows:a(this).attr("rowspan"),cols:a(this).attr("colspan"),flag:a(d).find(b.settings.exclude)};f.flag.length>0?e+="<td> </td>":f.rows&f.cols?e+="<td>"+a(d).html()+"</td>":(e+="<td",f.rows>0&&(e+=" rowspan='"+f.rows+"' "),f.cols>0&&(e+=" colspan='"+f.cols+"' "),e+="/>"+a(d).html()+"</td>")}),e+="</tr>"}),b.settings.exclude_img&&(e=g(e)),b.settings.exclude_links&&(e=h(e)),b.settings.exclude_inputs&&(e=i(e)),b.tableRows.push(e)}),b.tableToExcel(b.tableRows,b.settings.name,b.settings.sheetName)},tableToExcel:function(d,e,g){var h,i,j,k=this,l="";if(k.format=function(a,b){return a.replace(/{(\w+)}/g,function(a,c){return b[c]})},g=void 0===g?"Sheet":g,k.ctx={worksheet:e||"Worksheet",table:d,sheetName:g},l=k.template.head,a.isArray(d))for(h in d)l+=k.template.sheet.head+g+h+k.template.sheet.tail;if(l+=k.template.mid,a.isArray(d))for(h in d)l+=k.template.table.head+"{table"+h+"}"+k.template.table.tail;l+=k.template.foot;for(h in d)k.ctx["table"+h]=d[h];if(delete k.ctx.table,!c.documentMode){var m=new Blob([k.format(l,k.ctx)],{type:"application/vnd.ms-excel"});b.URL=b.URL||b.webkitURL,i=b.URL.createObjectURL(m),j=c.createElement("a"),j.download=f(k.settings),j.href=i,c.body.appendChild(j),j.click(),c.body.removeChild(j)}else if("undefined"!=typeof Blob){l=k.format(l,k.ctx),l=[l];var n=new Blob(l,{type:"text/html"});b.navigator.msSaveBlob(n,f(k.settings))}else txtArea1.document.open("text/html","replace"),txtArea1.document.write(k.format(l,k.ctx)),txtArea1.document.close(),txtArea1.focus(),sa=txtArea1.document.execCommand("SaveAs",!0,f(k.settings));return!0}},a.fn[j]=function(b){var c=this;return c.each(function(){a.data(c,"plugin_"+j)||a.data(c,"plugin_"+j,new e(this,b))}),c}}(jQuery,window,document); 9 !function(a,b,c,d){function e(b,c){this.element=b,this.settings=a.extend({},k,c),this._defaults=k,this._name=j,this.init()}function f(a){return a.filename?a.filename:"table2excel"}function g(a){var b=/(\s+alt\s*=\s*"([^"]*)"|\s+alt\s*=\s*'([^']*)')/i;return a.replace(/<img[^>]*>/gi,function(a){var c=b.exec(a);return null!==c&&c.length>=2?c[2]:""})}function h(a){return a.replace(/<a[^>]*>|<\/a>/gi,"")}function i(a){var b=/(\s+value\s*=\s*"([^"]*)"|\s+value\s*=\s*'([^']*)')/i;return a.replace(/<input[^>]*>|<\/input>/gi,function(a){var c=b.exec(a);return null!==c&&c.length>=2?c[2]:""})}var j="table2excel",k={exclude:".noExl",name:"Table2Excel",filename:"table2excel",fileext:".xls",exclude_img:!0,exclude_links:!0,exclude_inputs:!0};e.prototype={init:function(){var b=this;b.template={head:'<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><head>\x3c!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets>',sheet:{head:"<x:ExcelWorksheet><x:Name>",tail:"</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>"},mid:"</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--\x3e</head><body>",table:{head:"<table>",tail:"</table>"},foot:"</body></html>"},b.tableRows=[],a(b.element).each(function(c,d){var e="";a(d).find("tr").not(b.settings.exclude).each(function(c,d){e+="<tr>",a(d).find("td,th").not(b.settings.exclude).each(function(c,d){var f={rows:a(this).attr("rowspan"),cols:a(this).attr("colspan"),flag:a(d).find(b.settings.exclude)};f.flag.length>0?e+="<td> </td>":f.rows&f.cols?e+="<td>"+a(d).html()+"</td>":(e+="<td",f.rows>0&&(e+=" rowspan='"+f.rows+"' "),f.cols>0&&(e+=" colspan='"+f.cols+"' "),e+="/>"+a(d).html()+"</td>")}),e+="</tr>"}),b.settings.exclude_img&&(e=g(e)),b.settings.exclude_links&&(e=h(e)),b.settings.exclude_inputs&&(e=i(e)),b.tableRows.push(e)}),b.tableToExcel(b.tableRows,b.settings.name,b.settings.sheetName)},tableToExcel:function(d,e,g){var h,i,j,k=this,l="";if(k.format=function(a,b){return a.replace(/{(\w+)}/g,function(a,c){return b[c]})},g=void 0===g?"Sheet":g,k.ctx={worksheet:e||"Worksheet",table:d,sheetName:g},l=k.template.head,a.isArray(d))for(h in d)l+=k.template.sheet.head+g+h+k.template.sheet.tail;if(l+=k.template.mid,a.isArray(d))for(h in d)l+=k.template.table.head+"{table"+h+"}"+k.template.table.tail;l+=k.template.foot;for(h in d)k.ctx["table"+h]=d[h];if(delete k.ctx.table,!c.documentMode){var m=new Blob([k.format(l,k.ctx)],{type:"application/vnd.ms-excel"});b.URL=b.URL||b.webkitURL,i=b.URL.createObjectURL(m),j=c.createElement("a"),j.download=f(k.settings),j.href=i,c.body.appendChild(j),j.click(),c.body.removeChild(j)}else if("undefined"!=typeof Blob){l=k.format(l,k.ctx),l=[l];var n=new Blob(l,{type:"text/html"});b.navigator.msSaveBlob(n,f(k.settings))}else txtArea1.document.open("text/html","replace"),txtArea1.document.write(k.format(l,k.ctx)),txtArea1.document.close(),txtArea1.focus(),sa=txtArea1.document.execCommand("SaveAs",!0,f(k.settings));return!0}},a.fn[j]=function(b){var c=this;return c.each(function(){a.data(c,"plugin_"+j)||a.data(c,"plugin_"+j,new e(this,b))}),c}}(jQuery,window,document);
10 \ No newline at end of file 10 \ No newline at end of file
src/main/resources/static/pages/summary/temp_sch_detail/list.html
@@ -172,8 +172,8 @@ @@ -172,8 +172,8 @@
172 <th>司机</th> 172 <th>司机</th>
173 <th>售票员</th> 173 <th>售票员</th>
174 <th>班次</th> 174 <th>班次</th>
175 - <th>烂班公里</th>  
176 - <th>烂班时间</th> 175 + <th>临加公里</th>
  176 + <th>临加时间</th>
177 <th>备注</th> 177 <th>备注</th>
178 </tr> 178 </tr>
179 </thead> 179 </thead>
src/main/resources/static/real_control_v2/css/main.css
@@ -338,6 +338,9 @@ svg.line-chart g.merge-item text { @@ -338,6 +338,9 @@ svg.line-chart g.merge-item text {
338 .tooltip span.field { 338 .tooltip span.field {
339 color: #7d7d7b; 339 color: #7d7d7b;
340 margin-right: 5px; 340 margin-right: 5px;
  341 + width: 52px;
  342 + display: inline-block;
  343 + text-align: right;
341 } 344 }
342 345
343 .tooltip .tip_map_wrap { 346 .tooltip .tip_map_wrap {
@@ -2026,4 +2029,10 @@ dl.active &gt; dd.disabled { @@ -2026,4 +2029,10 @@ dl.active &gt; dd.disabled {
2026 100% { 2029 100% {
2027 background: rgba(254, 235, 69, 0.38); 2030 background: rgba(254, 235, 69, 0.38);
2028 } 2031 }
  2032 +}
  2033 +
  2034 +.home_svg_tips>div{
  2035 + overflow: hidden;
  2036 + text-overflow: ellipsis;
  2037 + white-space: nowrap;
2029 } 2038 }
2030 \ No newline at end of file 2039 \ No newline at end of file
src/main/resources/static/real_control_v2/fragments/home/tooltip.html
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 <div class="tooltip" data-id="{{deviceId}}"> 3 <div class="tooltip" data-id="{{deviceId}}">
4 <div class="tooltip-container"> 4 <div class="tooltip-container">
5 5
6 - <div class="cont-text-panel"> 6 + <div class="cont-text-panel home_svg_tips">
7 <div class="title"> 7 <div class="title">
8 <a href="javascript:;" data-for="station" class="tip_modal"> 8 <a href="javascript:;" data-for="station" class="tip_modal">
9 {{nbbm}} 9 {{nbbm}}
@@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
21 <div> 21 <div>
22 <span class="field">车牌号:</span>{{plateNo}} 22 <span class="field">车牌号:</span>{{plateNo}}
23 </div> 23 </div>
24 - <div> 24 + <div title="{{stationName}}">
25 <span class="field">站点:</span>{{stationName}} 25 <span class="field">站点:</span>{{stationName}}
26 </div> 26 </div>
27 <!-- <div> 27 <!-- <div>
@@ -30,9 +30,19 @@ @@ -30,9 +30,19 @@
30 <div> 30 <div>
31 <span class="field">设备:</span>{{deviceId}} 31 <span class="field">设备:</span>{{deviceId}}
32 </div> 32 </div>
33 - <div> 33 + <!--<div>
34 <span class="field">坐标:</span>{{lon}} {{lat}} 34 <span class="field">坐标:</span>{{lon}} {{lat}}
35 - </div> 35 + </div>-->
  36 + {{if sch!=null}}
  37 + <div>
  38 + <span class="field">驾驶员:</span>{{sch.jGh}}/{{sch.jName}}
  39 + </div>
  40 + {{if sch.sGh!=null && sch.sGh!=""}}
  41 + <div>
  42 + <span class="field">售票员:</span>{{sch.sGh}}/{{sch.sName}}
  43 + </div>
  44 + {{/if}}
  45 + {{/if}}
36 <div> 46 <div>
37 <span class="field">速度:</span>{{speed>99?'..':speed}}</div> 47 <span class="field">速度:</span>{{speed>99?'..':speed}}</div>
38 <div> 48 <div>
src/main/resources/static/real_control_v2/fragments/north/nav/all_devices.html
@@ -181,7 +181,7 @@ @@ -181,7 +181,7 @@
181 if(lineCode) 181 if(lineCode)
182 data.lineId=lineCode; 182 data.lineId=lineCode;
183 } 183 }
184 - $.get('/gps/real/all', data, function(rs) { 184 + $.get('/gps/real/all?t=' + Math.random(), data, function(rs) {
185 //数据转换 185 //数据转换
186 var code2Name=gb_data_basic.lineCode2NameAll(); 186 var code2Name=gb_data_basic.lineCode2NameAll();
187 $.each(rs.list, function(){ 187 $.each(rs.list, function(){
src/main/resources/static/real_control_v2/fragments/north/nav/history_sch_maintain.html
@@ -438,9 +438,9 @@ @@ -438,9 +438,9 @@
438 }); 438 });
439 439
440 //统计路单 -娄高峰 440 //统计路单 -娄高峰
441 - /*gb_common.$get('/calcWaybill/generateNew', {date:rq, line: lineCode}, function () { 441 + gb_common.$get('/calcWaybill/generateNew', {date:rq, line: lineCode}, function () {
442 reCountEp.emitLater('calcWaybill'); 442 reCountEp.emitLater('calcWaybill');
443 - });*/ 443 + });
444 444
445 //统计油 -廖磊 445 //统计油 -廖磊
446 gb_common.$post('/ylb/updateHistory', {date:rq, line: lineCode}, function () { 446 gb_common.$post('/ylb/updateHistory', {date:rq, line: lineCode}, function () {
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
@@ -472,6 +472,11 @@ var gb_schedule_table = (function () { @@ -472,6 +472,11 @@ var gb_schedule_table = (function () {
472 //滚动到下一个班次 472 //滚动到下一个班次
473 scroToDl(nextSch); 473 scroToDl(nextSch);
474 } 474 }
  475 +
  476 + //如果有打开轨迹回放
  477 + if($('.layui-layer.play_back-layer').is(':visible')){
  478 + gb_map_play_back.setParam(sch);
  479 + }
475 }); 480 });
476 481
477 //路牌点击 482 //路牌点击
src/main/resources/static/real_control_v2/mapmonitor/js/playback.js
@@ -10,6 +10,18 @@ var gb_map_play_back = (function () { @@ -10,6 +10,18 @@ var gb_map_play_back = (function () {
10 dom = rs; 10 dom = rs;
11 }); 11 });
12 12
  13 + var setParam = function (sch) {
  14 + console.log('sch', sch);
  15 + var f = $('.play-back-form form'),
  16 + st = (sch['fcsjActualTime']?sch['fcsjActualTime']:sch['dfsjT']) - 1000 * 60 * 5,
  17 + et = (sch['zdsjActualTime']?sch['zdsjActualTime']:sch['zdsjT']) + 1000 * 60 * 5,
  18 + fs = 'YYYY-MM-DD HH:mm';
  19 +
  20 + $('[name=nbbm]', f).val(sch.clZbh);
  21 + $('[name=startTime]', f).val(moment(st).format(fs));
  22 + $('[name=endTime]', f).val(moment(et).format(fs));
  23 + };
  24 +
13 var initParams = function (deviceId, nbbm) { 25 var initParams = function (deviceId, nbbm) {
14 //关闭infowindow 26 //关闭infowindow
15 if (deviceId) 27 if (deviceId)
@@ -96,6 +108,7 @@ var gb_map_play_back = (function () { @@ -96,6 +108,7 @@ var gb_map_play_back = (function () {
96 108
97 return { 109 return {
98 initParams: initParams, 110 initParams: initParams,
99 - listToExcel: listToExcel 111 + listToExcel: listToExcel,
  112 + setParam: setParam
100 } 113 }
101 })(); 114 })();
102 \ No newline at end of file 115 \ No newline at end of file