Commit 755a9fa61aeb12e203f8671fcfaafdd3eac4d60a

Authored by 徐烜
2 parents 853edc1e 263fb4ef

Merge branch 'lggj' of http://192.168.168.245:8888/panzhaov5/bsth_control into lggj

Showing 77 changed files with 1106 additions and 115 deletions
src/main/java/com/bsth/controller/zndd/LoggerZnddController.java
... ... @@ -44,4 +44,14 @@ public class LoggerZnddController extends BaseController<LoggerZndd, Integer> {
44 44 public ScheduleRealInfo thissch(@PathVariable("id") Integer id){
45 45 return loggerZnddService.thissch(id);
46 46 }
  47 +
  48 + @RequestMapping(value = "LineUserAll", method = RequestMethod.GET)
  49 + public String LineUserAll(@RequestParam Integer userId) {
  50 +
  51 + return loggerZnddService.LineUserAll(userId);
  52 + }
  53 + @RequestMapping(value = "schTZSF", method = RequestMethod.GET)
  54 + public Map<String, Object> schTZSF(String line,String date,String endDate,String changType,String type){
  55 + return loggerZnddService.schTZSF(line,date,endDate,changType,type);
  56 + }
47 57 }
... ...
src/main/java/com/bsth/data/gpsdata_v2/handlers/StationInsideProcess.java
... ... @@ -5,6 +5,8 @@ import com.bsth.data.gpsdata_v2.cache.GpsCacheData;
5 5 import com.bsth.data.gpsdata_v2.entity.GpsEntity;
6 6 import com.bsth.data.gpsdata_v2.entity.StationRoute;
7 7 import com.bsth.data.gpsdata_v2.utils.GeoUtils;
  8 +import com.bsth.data.schedule.DayOfSchedule;
  9 +import org.springframework.beans.factory.annotation.Autowired;
8 10 import org.springframework.stereotype.Component;
9 11  
10 12 import java.util.List;
... ... @@ -16,6 +18,9 @@ import java.util.List;
16 18 @Component
17 19 public class StationInsideProcess {
18 20  
  21 + @Autowired
  22 + DayOfSchedule dayOfSchedule;
  23 +
19 24 public void process(GpsEntity gps) {
20 25 //是否在场内
21 26 String parkCode = GeoUtils.gpsInCarpark(gps);
... ... @@ -25,7 +30,8 @@ public class StationInsideProcess {
25 30 gps.setStopNo(parkCode);
26 31 gps.setCarparkNo(parkCode);
27 32 }
28   -
  33 + //重新计算车辆执行班次
  34 + dayOfSchedule.reCalcExecPlan(gps.getNbbm());
29 35 //是否在站内
30 36 List<StationRoute> srs = GeoCacheData.getStationRoute(gps.getLineId(), gps.getUpDown());
31 37 StationRoute station = GeoUtils.gpsInStation(gps, srs);
... ...
src/main/java/com/bsth/data/pilot80/PilotReport.java
... ... @@ -13,6 +13,7 @@ import com.bsth.entity.realcontrol.LineConfig;
13 13 import com.bsth.entity.realcontrol.ScheduleRealInfo;
14 14 import com.bsth.repository.directive.D80Repository;
15 15 import com.bsth.repository.directive.DC0A4Repository;
  16 +import com.bsth.service.SystemParamService;
16 17 import com.bsth.service.directive.DirectiveService;
17 18 import com.bsth.util.HttpClientUtils;
18 19 import com.bsth.websocket.handler.SendUtils;
... ... @@ -53,6 +54,8 @@ public class PilotReport {
53 54 @Autowired
54 55 GpsStatusManager gpsStatusManager;
55 56  
  57 + @Autowired
  58 + private SystemParamService systemParamService;
56 59 private static ConcurrentHashMap<Integer, D80> d80Maps;
57 60  
58 61 /**
... ... @@ -101,7 +104,7 @@ public class PilotReport {
101 104 //报警请求
102 105 case 0x10:
103 106 try {
104   - String url = "http://58.34.52.130:9103/dataDockingApi/accident/saveAccident?";
  107 + String url = systemParamService.getValue("url.yjbj")+"dataDockingApi/accident/saveAccident?";
105 108 url = url + "accidentTime=" + new Date().getTime() + "&nbbm=" + nbbm;
106 109 logger.info("url===="+url);
107 110 String res = HttpClientUtils.get(url).toString();
... ...
src/main/java/com/bsth/data/schedule/edit_logs/service/dto/SchEditInfoDto.java
... ... @@ -59,6 +59,10 @@ public class SchEditInfoDto {
59 59 */
60 60 private long ts;
61 61  
  62 + private String xlName;
  63 +
  64 + private String text;
  65 +
62 66 public long getId() {
63 67 return id;
64 68 }
... ... @@ -219,4 +223,20 @@ public class SchEditInfoDto {
219 223 public void setTs(long ts) {
220 224 this.ts = ts;
221 225 }
  226 +
  227 + public String getXlName() {
  228 + return xlName;
  229 + }
  230 +
  231 + public void setXlName(String xlName) {
  232 + this.xlName = xlName;
  233 + }
  234 +
  235 + public String getText() {
  236 + return text;
  237 + }
  238 +
  239 + public void setText(String text) {
  240 + this.text = text;
  241 + }
222 242 }
... ...
src/main/java/com/bsth/data/zndd/AutomaticSch.java
... ... @@ -82,7 +82,7 @@ public class AutomaticSch {
82 82 public void mz(){
83 83 try {
84 84  
85   - List<ScheduleRealInfo> sr = dayOfSchedule.findByBcType("W1Q-006","normal");
  85 + List<ScheduleRealInfo> sr = dayOfSchedule.findByBcType("W9G-041","normal");
86 86 ts(addStationPeople(sr.get(5), "MZ", 0L));//第二种 设备未离线 出站时间内未出站
87 87 }
88 88 catch (Exception e){
... ... @@ -106,10 +106,14 @@ public class AutomaticSch {
106 106 }else {
107 107 continue;
108 108 }
109   - if (k == 0 && lg.getlGType() == 0){
110   - ts(ConvertDJK(lg,sch,"FCJG"));
  109 + if (k == 0 ){
  110 + if(lg.getlGType() == 0){
  111 + ts(ConvertDJK(lg,sch,"FCJG"));
  112 + }
111 113 }else {
112   - ts(ConvertDJK(lg,sch,"DJG"));
  114 + if(lg.getlGType() != 0){
  115 + ts(ConvertDJK(lg,sch,"DJG"));
  116 + }
113 117 }
114 118  
115 119 }
... ...
src/main/java/com/bsth/data/zndd/OutEntrance.java
1 1 package com.bsth.data.zndd;
  2 +
2 3 import com.alibaba.fastjson.JSONArray;
3 4 import com.alibaba.fastjson.JSONObject;
4 5 import com.bsth.common.ResponseCode;
5 6 import com.bsth.data.BasicData;
6 7 import com.bsth.data.schedule.DayOfSchedule;
7 8 import com.bsth.data.schedule.ScheduleComparator;
8   -import com.bsth.entity.StationRoute;
9 9 import com.bsth.entity.realcontrol.ScheduleRealInfo;
10 10 import com.bsth.entity.zndd.StationPeopleLogger;
11 11 import com.bsth.entity.zndd.StationSignsLogger;
12   -import com.bsth.service.schedule.utils.Md5Util;
13 12 import com.bsth.util.HttpClientUtils;
14 13 import com.bsth.util.SignUtils;
15 14 import com.bsth.websocket.handler.SendUtils;
... ... @@ -18,8 +17,18 @@ import org.slf4j.Logger;
18 17 import org.slf4j.LoggerFactory;
19 18 import org.springframework.beans.factory.annotation.Autowired;
20 19 import org.springframework.beans.factory.annotation.Value;
  20 +import org.springframework.scheduling.annotation.Scheduled;
21 21 import org.springframework.web.bind.annotation.*;
22 22 import java.io.*;
  23 +import java.nio.file.Files;
  24 +import java.nio.file.Path;
  25 +import java.nio.file.Paths;
  26 +import java.nio.file.StandardCopyOption;
  27 +
  28 +import java.io.ByteArrayInputStream;
  29 +import java.io.File;
  30 +import java.io.FileOutputStream;
  31 +import java.io.InputStream;
23 32 import java.text.SimpleDateFormat;
24 33 import java.time.Duration;
25 34 import java.time.LocalTime;
... ... @@ -65,6 +74,7 @@ public class OutEntrance {
65 74 public Map OutCarOutCar(@RequestParam Map m,@RequestBody StationSignsLogger ssLogger) {
66 75 Map rtn = new HashMap<>();
67 76 try {
  77 + logger.info("催发接口调用----");
68 78 if(!SignUtils.validation(ssLogger.getTimestamp(),ssLogger.getSign())){
69 79 rtn.put("status", "验证失败");
70 80 return rtn;
... ... @@ -99,21 +109,26 @@ public class OutEntrance {
99 109 rtn.put("message",s+"车辆预计还有"+dzList.get(0).get("sj")+"抵达,请耐心等待");
100 110 }else {
101 111 //筛选方向
102   - List<ScheduleRealInfo> rs = dayOfSchedule.findByLineCode(ssLogger.getLineCode());
  112 + List<ScheduleRealInfo> rs = dayOfSchedule.findByLineAndUpDown(ssLogger.getLineCode(),Integer.parseInt(ssLogger.getDir()));
103 113 if(rs.size()>0){
104 114 //排序
105 115 Collections.sort(rs,new ScheduleComparator.FCSJ());
106   - SimpleDateFormat sdf= new SimpleDateFormat("HH:ss");
107   - String sjtext = "";
  116 + SimpleDateFormat sdf= new SimpleDateFormat("HH:mm");
  117 + String sjtext = null;
108 118 LocalTime t1 = LocalTime.parse(sdf.format(new Date()), DateTimeFormatter.ofPattern("HH:mm"));
109 119 for (ScheduleRealInfo sr:rs) {
110 120 LocalTime t2 = LocalTime.parse(sr.getFcsj(), DateTimeFormatter.ofPattern("HH:mm"));
111   - //判断上下行
112   - if(t1.isAfter(t2)){
  121 + //最近的运营班次
  122 + if(t2.isAfter(t1) && (sr.getBcType().equals("normal")||sr.getBcType().equals("region"))){
113 123 sjtext = sr.getFcsj();
  124 + break;
114 125 }
115 126 }
116   - rtn.put("message","车辆预计"+sjtext+"发车,请耐心等待");
  127 + if(sjtext!=null){
  128 + rtn.put("message","车辆预计"+sjtext+"发车,请耐心等待");
  129 + }else {
  130 + rtn.put("message","当日运营已结束");
  131 + }
117 132 }else {
118 133 rtn.put("message","当日运营已结束");
119 134 }
... ... @@ -133,6 +148,7 @@ public class OutEntrance {
133 148 public Map klyj(@RequestBody JSONObject jsonObject) {
134 149 Map rtn = new HashMap<>();
135 150 try {
  151 + logger.info("大客流接口调用----");
136 152 if(!SignUtils.validation(Long.parseLong(jsonObject.getString("timestamp")),jsonObject.getString("sign"))){
137 153 rtn.put("status", "验证失败");
138 154 return rtn;
... ... @@ -257,7 +273,7 @@ public class OutEntrance {
257 273 rtn.put("status",ResponseCode.SUCCESS);
258 274 } catch (Exception e) {
259 275 rtn.put("status", ResponseCode.ERROR);
260   - Logger logger = LoggerFactory.getLogger(this.getClass());
  276 + logger.error("大客流推送异常----",e);
261 277 }
262 278 return rtn;
263 279 }
... ... @@ -303,7 +319,7 @@ public class OutEntrance {
303 319 destfile.mkdirs();
304 320 }
305 321 //文件新名称
306   - String fileNameNew = "666"+ ".png";
  322 + String fileNameNew = AutomaticSch.UUID()+ ".png";
307 323 File f = new File(destfile.getAbsoluteFile() + File.separator + fileNameNew);
308 324 // 将字符串转换成二进制,用于显示图片
309 325 // 将上面生成的图片格式字符串 imgStr,还原成图片显示
... ... @@ -329,6 +345,30 @@ public class OutEntrance {
329 345 return null;
330 346 }
331 347  
  348 + /**
  349 + * 转移文件图片
  350 + * @param url 文件路径
  351 + * @param (示例:D:\\1.png)
  352 + * @return
  353 + */
  354 + public String moveImg(String url) throws Exception {
  355 + try {
  356 + String file = url.replace("/"+profile+"/avat",imgurl+"/img");
  357 + String destDir = file.substring(0,file.lastIndexOf("/"));
  358 + File destPath = new File(destDir);
  359 + if (!destPath.exists()) {
  360 + destPath.mkdirs();
  361 + }
  362 + Path sourceFile= Paths.get(url.replace("/"+profile,imgurl));
  363 + Path destFile= Paths.get(url.replace("/"+profile+"/avat",imgurl+"/img"));
  364 + Files.copy(sourceFile, destFile,StandardCopyOption.REPLACE_EXISTING);
  365 + return file;
  366 + } catch (IOException e) {
  367 + e.printStackTrace();
  368 + return null;
  369 + }
  370 + }
  371 +
332 372 private static ConcurrentMap<String, Map<String,Object>> trafficMap = new ConcurrentHashMap<>();
333 373 public String getTraffic(String nbbm,String lon,String lat){
334 374 Map<String,Object> traffic=trafficMap.get(nbbm);
... ... @@ -354,5 +394,26 @@ public class OutEntrance {
354 394 return traffic.get("trafficStatus").toString();
355 395 }
356 396  
  397 + @Scheduled(cron = "0 0 0 * * ?")
  398 + public void clearImg(){
  399 + try {
  400 + File folder=new File(imgurl+"/avat");
  401 + delete(folder);
  402 + } catch (Exception e) {
  403 + e.printStackTrace();
  404 + }
  405 + }
  406 +
  407 + public static void delete(File folder) throws Exception{
  408 + if(folder.isDirectory()) {
  409 + File[] files = folder.listFiles();
  410 + if(files != null) { // 如果文件夹为空,files可能为null
  411 + for(File file : files) {
  412 + delete(file); // 递归删除子文件夹和文件
  413 + }
  414 + }
  415 + }
  416 + folder.delete(); // 删除空文件夹或者文件
  417 + }
357 418  
358 419 }
... ...
src/main/java/com/bsth/data/zndd/carMonitor.java
1 1 package com.bsth.data.zndd;
2 2  
  3 +import com.bsth.service.SystemParamService;
3 4 import org.apache.commons.io.IOUtils;
4 5 import org.dom4j.Document;
5 6 import org.dom4j.DocumentHelper;
6 7 import org.dom4j.Element;
7 8 import org.slf4j.Logger;
8 9 import org.slf4j.LoggerFactory;
  10 +import org.springframework.beans.factory.annotation.Autowired;
9 11 import org.springframework.stereotype.Component;
10 12  
11 13 import java.io.ByteArrayOutputStream;
... ... @@ -20,13 +22,13 @@ import java.util.*;
20 22 public class carMonitor {
21 23 Logger logger = LoggerFactory.getLogger(this.getClass());
22 24  
23   - static String url;
24   -
  25 + @Autowired
  26 + private SystemParamService systemParamService;
25 27  
26 28 public List<Map> carMonitor(String lineCode,String directions,String station) {
27 29  
28 30 List<Map> list = new ArrayList<>(); //返回的接口数据
29   - url = "http://58.34.52.130:9777/xxfb/jd/carMonitor?lineid="+lineCode+"&stopid="+station+"&direction="+directions;
  31 + String url = systemParamService.getValue("url.xxfb")+"xxfb/jd/carMonitor?lineid="+lineCode+"&stopid="+station+"&direction="+directions;
30 32 InputStream in = null;
31 33 OutputStream out = null;
32 34 try {
... ...
src/main/java/com/bsth/entity/realcontrol/ScheduleRealInfo.java
... ... @@ -245,6 +245,18 @@ public class ScheduleRealInfo {
245 245 @Transient
246 246 private String kxcl;
247 247  
  248 + /**
  249 + * 大客流图片
  250 + */
  251 + @Transient
  252 + private String img;
  253 +
  254 + /**
  255 + * 操作类型 大客流-1
  256 + */
  257 + @Transient
  258 + private String operationType;
  259 +
248 260 public Integer getLpChange() {
249 261 return lpChange;
250 262 }
... ... @@ -1026,4 +1038,20 @@ public class ScheduleRealInfo {
1026 1038 public void setKxcl(String kxcl) {
1027 1039 this.kxcl = kxcl;
1028 1040 }
  1041 +
  1042 + public String getImg() {
  1043 + return img;
  1044 + }
  1045 +
  1046 + public void setImg(String img) {
  1047 + this.img = img;
  1048 + }
  1049 +
  1050 + public String getOperationType() {
  1051 + return operationType;
  1052 + }
  1053 +
  1054 + public void setOperationType(String operationType) {
  1055 + this.operationType = operationType;
  1056 + }
1029 1057 }
... ...
src/main/java/com/bsth/entity/sys/SysUser.java
... ... @@ -3,6 +3,7 @@ package com.bsth.entity.sys;
3 3 import com.fasterxml.jackson.annotation.JsonIgnore;
4 4 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
5 5 import org.joda.time.DateTime;
  6 +import org.springframework.format.annotation.DateTimeFormat;
6 7  
7 8 import javax.persistence.*;
8 9 import java.io.Serializable;
... ... @@ -36,10 +37,12 @@ public class SysUser implements Serializable {
36 37  
37 38 @Column(name = "update_date", columnDefinition = "timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
38 39 private Date updateDate;
39   -
  40 +
  41 + @DateTimeFormat(pattern = "yyyy-MM-dd")
40 42 private Date lastLoginDate;
41 43  
42 44 /** 最近密码更新时间 */
  45 + @DateTimeFormat(pattern = "yyyy-MM-dd")
43 46 private Date lastPwdDate;
44 47 /** 密码有效期 */
45 48 private Integer pwdValidPeriod;
... ...
src/main/java/com/bsth/entity/zndd/LoggerZndd.java
... ... @@ -32,6 +32,8 @@ public class LoggerZndd implements Serializable {
32 32  
33 33 private String dir;
34 34  
  35 + private String img;
  36 +
35 37 // 创建日期
36 38 @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
37 39 private Date createDate;
... ... @@ -107,4 +109,12 @@ public class LoggerZndd implements Serializable {
107 109 public void setDir(String dir) {
108 110 this.dir = dir;
109 111 }
  112 +
  113 + public String getImg() {
  114 + return img;
  115 + }
  116 +
  117 + public void setImg(String img) {
  118 + this.img = img;
  119 + }
110 120 }
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
... ... @@ -11,6 +11,7 @@ import java.sql.SQLException;
11 11 import java.text.DecimalFormat;
12 12 import java.text.ParseException;
13 13 import java.text.SimpleDateFormat;
  14 +import java.time.LocalDate;
14 15 import java.util.ArrayList;
15 16 import java.util.Calendar;
16 17 import java.util.Collection;
... ... @@ -29,6 +30,7 @@ import java.util.concurrent.*;
29 30 import java.util.regex.Pattern;
30 31  
31 32 import com.bsth.data.SystemParamCache;
  33 +import com.bsth.data.zndd.OutEntrance;
32 34 import com.bsth.entity.zndd.LoggerZndd;
33 35 import com.bsth.repository.zndd.LoggerZnddRepository;
34 36 import org.apache.commons.io.IOUtils;
... ... @@ -228,6 +230,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
228 230 @Autowired
229 231 LoggerZnddRepository loggerZnddRepository;
230 232  
  233 + @Autowired
  234 + OutEntrance outEntrance;
  235 +
231 236 Logger logger = LoggerFactory.getLogger(this.getClass());
232 237  
233 238 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
... ... @@ -728,6 +733,26 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
728 733 public Map<String, Object> save(ScheduleRealInfo sch) {
729 734 Map<String, Object> rs = new HashMap<>();
730 735 try {
  736 + if("1".equals(sch.getOperationType())){//大客流临加班次
  737 + String img = outEntrance.moveImg(sch.getImg());
  738 + if(img==null){
  739 + rs.put("status", ResponseCode.ERROR);
  740 + rs.put("msg", "照片缺失");
  741 + return rs;
  742 + }
  743 + LoggerZndd lz = addZndd(sch);
  744 + String text = "大客流预警:"+sch.getXlName()+"_"+sch.getFcsj()+"新增临加班次";
  745 + lz.setText(text);
  746 + lz.setCreateBy(SecurityUtils.getCurrentUser().getId());
  747 + lz.setCreateDate(new Date());
  748 + lz.setLineCode(sch.getXlBm());
  749 + lz.setLineName(sch.getXlName());
  750 + lz.setDir(sch.getXlDir());
  751 + lz.setImg(img);
  752 + String rq=java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd").format(LocalDate.now());
  753 + lz.setRq(rq);
  754 + loggerZnddRepository.save(lz);
  755 + }
731 756 String clZbh = sch.getClZbh(), lpName = sch.getLpName();
732 757 if (StringUtils.isEmpty(lpName) || StringUtils.isEmpty(lpName.trim())) {
733 758 rs.put("status", ResponseCode.ERROR);
... ...
src/main/java/com/bsth/service/report/impl/CalcSheetServiceImpl.java
... ... @@ -121,12 +121,12 @@ public class CalcSheetServiceImpl extends BaseServiceImpl&lt;CalcSheet, Integer&gt; im
121 121 s.setXl(rs.getString("xl"));
122 122 s.setXlName(rs.getString("xl_name"));
123 123 s.setId(rs.getInt("id"));
124   - s.setJhszfcs(rs.getString("jhszfcs"));
125   - s.setSjszfczds(rs.getString("sjszfczds"));
126   - s.setSjszddzds(rs.getString("sjszddzds"));
127   - int jhfc=Integer.parseInt(rs.getString("jhszfcs"));
128   - int zdfc=Integer.parseInt(rs.getString("sjszfczds"));
129   - int zddd=Integer.parseInt(rs.getString("sjszddzds"));
  124 + s.setJhszfcs(rs.getString("jhszfcs").split("\\.")[0]);
  125 + s.setSjszfczds(rs.getString("sjszfczds").split("\\.")[0]);
  126 + s.setSjszddzds(rs.getString("sjszddzds").split("\\.")[0]);
  127 + int jhfc=Integer.parseInt(rs.getString("jhszfcs").split("\\.")[0]);
  128 + int zdfc=Integer.parseInt(rs.getString("sjszfczds").split("\\.")[0]);
  129 + int zddd=Integer.parseInt(rs.getString("sjszddzds").split("\\.")[0]);
130 130 if(jhfc>0){
131 131 double zdl=(zdfc*1.0)/(jhfc*1.0)*100;
132 132 s.setSzfczdl(df.format(zdl)+"%");
... ...
src/main/java/com/bsth/service/schedule/datatools/TTInfoDetailDataToolsImpl.java
... ... @@ -471,8 +471,8 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
471 471 // 构造表头
472 472 excelPoiOperator.createStringCell(wb, lpHeadRow, (short) 0, "路牌", new Color(0x96b9d7));
473 473  
474   - StationRoute station1 = stationRouteService.findById(lpObjList.get(0).getStationRouteId1());
475   - StationRoute station2 = stationRouteService.findById(lpObjList.get(1).getStationRouteId2());
  474 + StationRoute station1 = null;
  475 + StationRoute station2 = null;
476 476  
477 477 // TODO
478 478 Map<String, Object> param = new HashMap<>();
... ... @@ -596,8 +596,8 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
596 596 excelPoiOperator.createStringCell(wb, lpHeadRow, (short) 2, "出场", new Color(0x96b9d7));
597 597  
598 598  
599   - StationRoute station1 = stationRouteService.findById(lpObjList.get(0).getStationRouteId1());
600   - StationRoute station2 = stationRouteService.findById(lpObjList.get(1).getStationRouteId2());
  599 + StationRoute station1 = null;
  600 + StationRoute station2 = null;
601 601  
602 602 // TODO
603 603 Map<String, Object> param = new HashMap<>();
... ...
src/main/java/com/bsth/service/zndd/LoggerZnddService.java
... ... @@ -3,6 +3,7 @@ package com.bsth.service.zndd;
3 3 import com.bsth.entity.realcontrol.ScheduleRealInfo;
4 4 import com.bsth.entity.zndd.LoggerZndd;
5 5 import com.bsth.service.BaseService;
  6 +import org.springframework.web.bind.annotation.RequestParam;
6 7  
7 8 import java.util.List;
8 9 import java.util.Map;
... ... @@ -18,4 +19,8 @@ public interface LoggerZnddService extends BaseService&lt;LoggerZndd, Integer&gt; {
18 19  
19 20  
20 21 ScheduleRealInfo thissch(Integer ids);
  22 +
  23 + String LineUserAll(@RequestParam Integer userId);
  24 +
  25 + Map<String, Object> schTZSF(String line,String date,String endDate,String changType,String type);
21 26 }
... ...
src/main/java/com/bsth/service/zndd/impl/LoggerZnddServiceImpl.java
1 1 package com.bsth.service.zndd.impl;
2 2  
  3 +import com.alibaba.fastjson.JSON;
  4 +import com.bsth.common.ResponseCode;
3 5 import com.bsth.controller.realcontrol.dto.DfsjChange;
4 6 import com.bsth.data.schedule.DayOfSchedule;
5 7 import com.bsth.data.schedule.ScheduleComparator;
  8 +import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto;
  9 +import com.bsth.entity.Line;
6 10 import com.bsth.entity.realcontrol.ScheduleRealInfo;
  11 +import com.bsth.entity.sys.RealControAuthority;
7 12 import com.bsth.entity.zndd.LoggerZndd;
8 13 import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
9 14 import com.bsth.repository.zndd.LoggerZnddRepository;
  15 +import com.bsth.service.LineService;
10 16 import com.bsth.service.impl.BaseServiceImpl;
11 17 import com.bsth.service.realcontrol.ScheduleRealInfoService;
  18 +import com.bsth.service.report.ReportService;
  19 +import com.bsth.service.sys.RealControAuthorityService;
12 20 import com.bsth.service.zndd.LoggerZnddService;
  21 +import com.bsth.util.ReportUtils;
13 22 import org.slf4j.Logger;
14 23 import org.slf4j.LoggerFactory;
15 24 import org.springframework.beans.factory.annotation.Autowired;
16   -
17 25 import org.springframework.data.domain.Sort;
  26 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  27 +import org.springframework.jdbc.core.JdbcTemplate;
18 28 import org.springframework.stereotype.Service;
19 29 import org.springframework.transaction.annotation.Transactional;
  30 +import org.springframework.web.bind.annotation.RequestParam;
20 31  
21 32 import java.text.SimpleDateFormat;
22 33 import java.time.LocalTime;
... ... @@ -34,8 +45,15 @@ public class LoggerZnddServiceImpl extends BaseServiceImpl&lt;LoggerZndd, Integer&gt;
34 45 ScheduleRealInfoService scheduleRealInfoService;
35 46 @Autowired
36 47 ScheduleRealInfoRepository scheduleRealInfoRepository;
  48 + @Autowired
  49 + LineService lineService;
  50 + @Autowired
  51 + ReportService reportService;
37 52  
38   -
  53 + @Autowired
  54 + RealControAuthorityService realControAuthorityService;
  55 + @Autowired
  56 + JdbcTemplate jdbcTemplate;
39 57 Logger logger = LoggerFactory.getLogger(this.getClass());
40 58 private static SimpleDateFormat sdfMonth = new SimpleDateFormat("HH:mm");
41 59 private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
... ... @@ -137,28 +155,38 @@ public class LoggerZnddServiceImpl extends BaseServiceImpl&lt;LoggerZndd, Integer&gt;
137 155  
138 156 public ScheduleRealInfo thissch(Integer ids){
139 157 ScheduleRealInfo sch=dayOfSchedule.get(ids);
140   - Set<String> set = dayOfSchedule.findCarByLineCode(sch.getXlBm());
  158 + Line line = lineService.findByLineCode(sch.getXlBm());
  159 + List<Map<String, Object>> lineList=reportService.lineList();
  160 + Set<String> lines = new HashSet<>();
  161 + for (Map<String, Object> map : lineList) {
  162 + if(line.getBrancheCompany().equals(map.get("fgsbm").toString())){
  163 + lines.add(map.get("xlbm").toString());
  164 + }
  165 + }
141 166 List<String> nbbms=new ArrayList<>();
142 167 List<String> jghs=new ArrayList<>();
143 168 List<String> jNames=new ArrayList<>();
144   - LocalTime localTime=LocalTime.now().plusHours(1);
145   - DateTimeFormatter dtf=DateTimeFormatter.ofPattern("HH:mm");
146   - for (String nbbm : set) {
147   - ScheduleRealInfo s=dayOfSchedule.executeCurr(nbbm);//当前执行班次
148   - if(s==null){//当日班次执行完毕
149   - List<ScheduleRealInfo> list=dayOfSchedule.findByNbbm(nbbm);
150   - if(list.size()>0){
151   - ScheduleRealInfo s2=list.get(list.size()-1);//最后一个班次
152   - nbbms.add(s2.getClZbh());
153   - jghs.add(s2.getjGh());
154   - jNames.add(s2.getjName());
155   - }
156   - }else {//1小时内是否有待执行班次
157   - LocalTime fcsj=LocalTime.parse(s.getFcsj(),dtf);
158   - if(fcsj.isAfter(localTime)){
159   - nbbms.add(s.getClZbh());
160   - jghs.add(s.getjGh());
161   - jNames.add(s.getjName());
  169 + for (String lineCode : lines) {
  170 + Set<String> set = dayOfSchedule.findCarByLineCode(lineCode);
  171 + LocalTime localTime=LocalTime.now().plusHours(1);
  172 + DateTimeFormatter dtf=DateTimeFormatter.ofPattern("HH:mm");
  173 + for (String nbbm : set) {
  174 + ScheduleRealInfo s=dayOfSchedule.executeCurr(nbbm);//当前执行班次
  175 + if(s==null){//当日班次执行完毕
  176 + List<ScheduleRealInfo> list=dayOfSchedule.findByNbbm(nbbm);
  177 + if(list.size()>0){
  178 + ScheduleRealInfo s2=list.get(list.size()-1);//最后一个班次
  179 + nbbms.add(s2.getClZbh());
  180 + jghs.add(s2.getjGh());
  181 + jNames.add(s2.getjName());
  182 + }
  183 + }else {//1小时内是否有待执行班次
  184 + LocalTime fcsj=LocalTime.parse(s.getFcsj(),dtf);
  185 + if(fcsj.isAfter(localTime)){
  186 + nbbms.add(s.getClZbh());
  187 + jghs.add(s.getjGh());
  188 + jNames.add(s.getjName());
  189 + }
162 190 }
163 191 }
164 192 }
... ... @@ -168,7 +196,8 @@ public class LoggerZnddServiceImpl extends BaseServiceImpl&lt;LoggerZndd, Integer&gt;
168 196 sch.setClZbh(nbbms.get(0));
169 197 sch.setjGh(jghs.get(0));
170 198 sch.setjName(jNames.get(0));
171   - for (int i = 0; i < nbbms.size(); i++) {
  199 + int size =nbbms.size()>10?9:nbbms.size();
  200 + for (int i = 0; i < size; i++) {
172 201 sb.append(nbbms.get(i)+"/");
173 202 sb.append(jNames.get(i)+",");
174 203 }
... ... @@ -179,4 +208,93 @@ public class LoggerZnddServiceImpl extends BaseServiceImpl&lt;LoggerZndd, Integer&gt;
179 208 }
180 209  
181 210  
  211 +
  212 + public String LineUserAll(@RequestParam Integer userId){
  213 + String xlNames ="";
  214 + RealControAuthority rcay = realControAuthorityService.findByUserId(userId);
  215 + String lineCodeStr = rcay.getLineCodeStr();
  216 + String[] lineArray = lineCodeStr.split(",");
  217 + for(String line : lineArray){
  218 + List<ScheduleRealInfo> schList = dayOfSchedule.findByLineCode(line);
  219 + for(ScheduleRealInfo sc : schList){
  220 + if (sc.getStatus() == 0 || sc.getStatus() == 1){
  221 + xlNames += sc.getXlName()+",";
  222 + break;
  223 + }
  224 + }
  225 + }
  226 + return xlNames;
  227 +
  228 + }
  229 +
  230 + public Map<String, Object> schTZSF(String line,String date,String endDate,String changType,String type){
  231 +
  232 + Map<String, Object> rs = new HashMap();
  233 + try {
  234 + String cont = "";
  235 + if (line != null && !line.equals("")){
  236 + cont = " and line_code ="+line;
  237 + }
  238 + String bcType ="";
  239 + if (changType.equals("0")){
  240 + bcType = " and bc_type not in ('in','out','venting')";
  241 + }else {
  242 + bcType =" and bc_type in ('out')";
  243 + }
  244 +
  245 + //拼接除rq、lineCode 外的其他where 条件
  246 + String sql = "select t1.*, t2.fcsj,t2.lp_name,t2.cl_zbh,t2.j_gh,t2.j_name,t2.xl_dir,t2.real_exec_date,t2.xl_name from (select * from logger_sch_modify where rq >=? and rq <=? and type in('SFTZ','FCXXWT') and remarks !='自动调度实发未发-车辆掉线'"+cont+" ) t1 INNER JOIN bsth_c_s_sp_info_real t2 on t1.sch_id=t2.id where 1=1 " +bcType;
  247 + List<SchEditInfoDto> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(SchEditInfoDto.class), date,endDate);
  248 + rs.put("status", ResponseCode.SUCCESS);
  249 + List<SchEditInfoDto> listnew = new ArrayList<>();
  250 + for(SchEditInfoDto item : list){
  251 + List<Map> lists = (List) JSON.parse(item.getJsonArray());
  252 + for(Map its : lists){
  253 + if (item.getType().equals("FCXXWT")) {
  254 + if (its.get("old") != null && its.get("title").equals("调整实发时间")) {
  255 + String text = "调整前:" + its.get("old") + ",调整后:" + its.get("now");
  256 + item.setText(text);
  257 + listnew.add(item);
  258 + break;
  259 + }
  260 + }else {
  261 + if(its.get("old") != null){
  262 + String text = "调整前:" + its.get("old") + ",调整后:" + its.get("now");
  263 + item.setText(text);
  264 + break;
  265 + }
  266 + }
  267 + };
  268 + };
  269 +
  270 + rs.put("list", listnew);
  271 +
  272 + if(type.equals("export")){
  273 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  274 + Map<String, Object> m = new HashMap<String, Object>();
  275 + ReportUtils ee = new ReportUtils();
  276 + List list1 = new ArrayList();
  277 + for(SchEditInfoDto sed : listnew){
  278 + Map map = JSON.parseObject(JSON.toJSONString(sed), Map.class);
  279 + list1.add(map);
  280 + }
  281 +
  282 + try {
  283 + listI.add(list1.iterator());
  284 + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
  285 + ee.excelReplace(listI, new Object[]{m}, path + "mould/" + "sch_tzsf.xls",
  286 + path + "export/"+date+"-"+endDate+"-异常调整实发.xls");
  287 + } catch (Exception e) {
  288 + // TODO: handle exception
  289 + e.printStackTrace();
  290 + }
  291 + }
  292 +
  293 + }catch (Exception e){
  294 + logger.error("", e);
  295 + rs.put("status", ResponseCode.ERROR);
  296 + rs.put("msg", e.getMessage());
  297 + }
  298 + return rs;
  299 + }
182 300 }
... ...
src/main/resources/fatso/start.js
... ... @@ -16,7 +16,7 @@ var platform = process.platform;
16 16 var iswin = platform == 'win32';
17 17 var sp = platform == 'win32' ? '\\' : '/';
18 18 //不参与的目录
19   -var excludes = ['scheduleApp', 'trafficManage', 'control', 'permission' + sp + 'authorize_all','permission' + sp + 'user', 'summary', 'history_sch', 'report' + sp + 'oil', 'base' + sp + 'geo_data_edit', 'base' + sp + 'carpark', 'forms', 'mforms', 'report', 'punctual', 'base' + sp + 'timesmodel', 'base' + sp + 'stationroute','zndd_yuan','zndd_yuan' + sp + 'call']
  19 +var excludes = ['scheduleApp', 'trafficManage', 'control', 'permission' + sp + 'authorize_all','permission' + sp + 'user', 'summary', 'history_sch', 'report' + sp + 'oil', 'base' + sp + 'geo_data_edit', 'base' + sp + 'carpark', 'forms', 'mforms', 'report', 'punctual', 'base' + sp + 'timesmodel', 'base' + sp + 'stationroute','zndd_yuan','call']
20 20 , ep = new EventProxy()
21 21 , pName = 'bsth_control'
22 22 , path = process.cwd()
... ...
src/main/resources/static/pages/base/timesmodel/add.html
... ... @@ -38,7 +38,7 @@
38 38  
39 39 <div class="actions">
40 40 <div class="btn-group btn-group-devided" data-toggle="buttons">
41   - <a class="btn btn-circle blue openHaveSkb" href="javascript:;" data-pjax><i class="fa fa-check"></i> 打开现有时刻表明细</a>
  41 + <a class="btn btn-circle blue openHaveSkb" href="javascript:;" data-pjax><i class="fa fa-check"></i> 排班诊断</a>
42 42 </div>
43 43 <div class="btn-group btn-group-devided" data-toggle="buttons">
44 44 <a class="btn btn-circle default" href="/pages/base/timesmodel/index.html" style="float: right;padding: 4px 23px;" data-pjax=""><i class="fa fa-reply"></i> 退出</a>
... ...
src/main/resources/static/pages/base/timesmodel/gantt.html
... ... @@ -50,7 +50,7 @@
50 50 <!-- actions 组件START -->
51 51 <div class="actions">
52 52 <div class="btn-group btn-group-devided countbtn" data-toggle="buttons">
53   - <a class="btn btn-circle blue countAdd" href="javascript:;" data-pjax><i class="fa fa-database"></i> 统计数据</a>
  53 + <a class="btn btn-circle blue countAdd" href="javascript:;" data-pjax><i class="fa fa-database"></i> 排班统计</a>
54 54 </div>
55 55 <div class="btn-group btn-group-devided parambtn" data-toggle="buttons">
56 56 <a class="btn btn-circle blue paramAdd" href="javascript:;" data-pjax><i class="fa fa-list-ol" aria-hidden="true"></i> 重新生成</a>
... ...
src/main/resources/static/pages/base/timesmodel/js/systemTools.js
... ... @@ -42,7 +42,7 @@ $(&#39;.addBc&#39;).on(&#39;click&#39;,function() {
42 42 var lpData = echartsDrawGTT.getLpData();
43 43 var lpDataCount = echartsDrawGTT.getLpDataCount();
44 44 // 弹出层mobal页面
45   - $.get('/pages/base/timesmodel/fragments/addBc.html', function(m){
  45 + $.get('/pages/base/timesmodel/fragments/addbc.html', function(m){
46 46 $(pjaxContainer).append(m);
47 47 // 规定被选元素要触发的事件。可以使自定义事件(使用 bind() 函数来附加),或者任何标准事件。
48 48 $('#addBc_mobal').trigger('addBcMobal.show',[lpData,lpDataCount,echartsDrawGTT]);
... ...
src/main/resources/static/pages/forms/mould/sch_tzsf.xls 0 → 100644
No preview for this file type
src/main/resources/static/pages/forms/zndd/sch_tzsf.html 0 → 100644
  1 +<style type="text/css">
  2 + .table-bordered {
  3 + border: 1px solid; }
  4 + .table-bordered > thead > tr > th,
  5 + .table-bordered > thead > tr > td,
  6 + .table-bordered > tbody > tr > th,
  7 + .table-bordered > tbody > tr > td,
  8 + .table-bordered > tfoot > tr > th,
  9 + .table-bordered > tfoot > tr > td {
  10 + border: 1px solid; }
  11 + .table-bordered > thead > tr > th,
  12 + .table-bordered > thead > tr > td {
  13 + border-bottom-width: 2px; }
  14 +
  15 + .table > tbody + tbody {
  16 + border-top: 1px solid; }
  17 +</style>
  18 +
  19 +<div class="page-head">
  20 + <div class="page-title">
  21 + <h1>异常调整实发</h1>
  22 + </div>
  23 +</div>
  24 +
  25 +<div class="row">
  26 + <div class="col-md-12">
  27 + <div class="portlet light porttlet-fit bordered">
  28 + <div class="portlet-title">
  29 + <form class="form-inline" action="">
  30 + <div style="display: inline-block;">
  31 + <span class="item-label" style="width: 140px;">线路: </span>
  32 + <select class="form-control" name="line" id="line" style="width: 136px;"></select>
  33 + </div>
  34 + <div style="display: inline-block;margin-left: 15px;">
  35 + <span class="item-label" style="width: 80px;">开始时间: </span>
  36 + <input class="form-control" type="text" id="date" style="width: 160px;" />
  37 + </div>
  38 + <div style="display: inline-block;margin-left: 15px;">
  39 + <span class="item-label" style="width: 80px;">结束时间: </span>
  40 + <input class="form-control" type="text" id="endDate" style="width: 160px;" />
  41 + </div>
  42 +
  43 +
  44 + <div style="display: inline-block;margin-left: 15px;">
  45 + <select name="type" class="form-control" id="changType">
  46 + <option value="0">营运</option>
  47 + <option value="1">出场</option>
  48 + </select>
  49 + </div>
  50 +
  51 + <div class="form-group">
  52 + <input class="btn btn-default" type="button" id="query" value="筛选"/>
  53 + <input class="btn btn-default" type="button" id="export" value="导出"/>
  54 + </div>
  55 + </form>
  56 + </div>
  57 + <div class="portlet-body">
  58 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
  59 + <table class="table table-bordered table-hover table-checkable" id="forms">
  60 + <thead>
  61 + <tr>
  62 + <th colspan="10">异常调整实发明细表</th>
  63 + </tr>
  64 + <tr>
  65 + <td>编号</td>
  66 + <td>日期</td>
  67 + <td>线路</td>
  68 + <td>路牌</td>
  69 + <td>车号</td>
  70 + <td>司机</td>
  71 + <td>计发</td>
  72 + <td>修改详细</td>
  73 + <td>修改人</td>
  74 + <td>备注</td>
  75 + </tr>
  76 + </thead>
  77 + <tbody class="list_correctForm">
  78 +
  79 + </tbody>
  80 + <tbody class="list_correctForm_statistics">
  81 +
  82 + </tbody>
  83 + </table>
  84 + </div>
  85 + </div>
  86 + </div>
  87 + </div>
  88 +</div>
  89 +
  90 +<script>
  91 + $(function(){
  92 + $("#export").attr('disabled',"true");
  93 +
  94 + // 关闭左侧栏
  95 + if (!$('body').hasClass('page-sidebar-closed'))
  96 + $('.menu-toggler.sidebar-toggler').click();
  97 +
  98 + var d = new Date();
  99 + //d.setTime(d.getTime() - 1*1000*60*60*24);
  100 + var year = d.getFullYear();
  101 + var month = d.getMonth() + 1;
  102 + var day = d.getDate();
  103 + if(month < 10)
  104 + month = "0" + month;
  105 + if(day < 10)
  106 + day = "0" + day;
  107 + var dateTime = year + "-" + month + "-" + day;
  108 + $("#date").datetimepicker({
  109 + format : 'YYYY-MM-DD',
  110 + locale : 'zh-cn',
  111 + maxDate : dateTime
  112 + });
  113 + $("#endDate").datetimepicker({
  114 + format : 'YYYY-MM-DD',
  115 + locale : 'zh-cn',
  116 + maxDate : dateTime
  117 + });
  118 + $("#date").val(dateTime);
  119 + $("#endDate").val(dateTime);
  120 +
  121 + $.get('/report/lineList',function(xlList){
  122 + var data = [];
  123 + data.push({id: "", text: "全部线路"});
  124 + $.get('/user/companyData', function(result){
  125 + for(var i = 0; i < result.length; i++){
  126 + var companyCode = result[i].companyCode;
  127 + var children = result[i].children;
  128 + for(var j = 0; j < children.length; j++){
  129 + var code = children[j].code;
  130 + for(var k=0;k < xlList.length;k++ ){
  131 + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){
  132 + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]});
  133 +// tempData[xlList[k]["xlbm"]] = companyCode+":"+code;
  134 + }
  135 + }
  136 + }
  137 + }
  138 + initPinYinSelect2('#line',data,'');
  139 +
  140 + });
  141 + });
  142 +
  143 + $('#czcl').on('click', function () {
  144 + $('#code').val('').change();
  145 + });
  146 +
  147 +
  148 + $("#query").on("click",function(){
  149 + var line = $("#line").val();
  150 + var date = $("#date").val();
  151 + var endDate = $("#endDate").val();
  152 + var changType =$("#changType").val();
  153 + if (line == "全部线路")
  154 + line = "";
  155 + var type = "query";
  156 + $get("/logZndd/schTZSF",{line:line,date:date,endDate:endDate,changType:changType,type:type},function(result){
  157 + //两种情况
  158 + // 1.发车信息微调 是实发调整
  159 + // 2.实发调整 old不是空调整
  160 + var list = result.list;
  161 +
  162 + var list_correctForm = template('list_correctForm',{list});
  163 + // 把渲染好的模版html文本追加到表格中
  164 + $('#forms .list_correctForm').html(list_correctForm);
  165 +
  166 + if(list.length == 0)
  167 + $("#export").attr('disabled',"true");
  168 + else
  169 + $("#export").removeAttr("disabled");
  170 +
  171 + });
  172 + });
  173 +
  174 + $("#export").on("click",function(){
  175 + var line = $("#line").val();
  176 + var date = $("#date").val();
  177 + var endDate = $("#endDate").val();
  178 + var changType =$("#changType").val();
  179 + if (line == "全部线路")
  180 + line = "";
  181 + var type = "export";
  182 + $get('/logZndd/schTZSF',{line:line,date:date,endDate:endDate,changType:changType,type:type},function(result){
  183 + window.open("/downloadFile/download?fileName="
  184 + +date+"-"+endDate+"-异常调整实发");
  185 + });
  186 + });
  187 +
  188 + });
  189 +</script>
  190 +<script type="text/html" id="list_correctForm">
  191 + {{each list as obj i}}
  192 + <tr>
  193 + <td>{{i+1}}</td>
  194 + <td>{{obj.rq}}</td>
  195 + <td>{{obj.xlName}}</td>
  196 + <td>{{obj.lpName}}</td>
  197 + <td>{{obj.clZbh}}</td>
  198 + <td>{{obj.jName}}/{{obj.jGh}}</td>
  199 + <td>{{obj.fcsj}}</td>
  200 + <td>{{obj.text}}</td>
  201 + <td>{{obj.user}}</td>
  202 + <td>{{obj.remarks}}</td>
  203 + </tr>
  204 + {{/each}}
  205 + {{if list.length == 0}}
  206 + <tr>
  207 + <td colspan="10"><h6 class="muted">没有找到相关数据</h6></td>
  208 + </tr>
  209 + {{/if}}
  210 +</script>
... ...
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/list.html
... ... @@ -192,7 +192,7 @@
192 192 <a ui-sref="ttInfoDetailManage_edit3({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name, rflag : true, lineversion : info.lineVersion})"
193 193 class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 编辑 </a>
194 194 <a ng-click="ctrl.toTtInfoDetailAuto(info.id)"
195   - class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 生成 </a>
  195 + class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 排班优化 </a>
196 196 <a ui-sref="ttInfoDetailManage_form({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name})"
197 197 class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 导入 </a>
198 198 <a href="javascript:" class="btn btn-info btn-sm" ng-click="ctrl.exportData(info.id)"> 导出 </a>
... ...
src/main/resources/static/pages/zndd_yuan/DKL.html
... ... @@ -182,8 +182,8 @@
182 182 id: 'card4',
183 183 x: 100,
184 184 y: 400,
185   - label: '待发调整',
186   - type: "待发调整",
  185 + label: '待发调整工具',
  186 + type: "待发调整工具",
187 187 nodes: [{
188 188 type: "in",
189 189 level: 0,
... ... @@ -199,13 +199,35 @@
199 199 }
200 200 ],
201 201 titleBarColor: ['#3950e8', '#25f6d0']
202   - },
  202 + },
203 203 {
204 204 id: 'card5',
205 205 x: 100,
206 206 y: 400,
207   - label: '班次取消(烂班)',
208   - type: "班次取消(烂班)",
  207 + label: '班次取消(烂班)工具',
  208 + type: "班次取消(烂班)工具",
  209 + nodes: [{
  210 + type: "in",
  211 + level: 0,
  212 + enumType: 'call',
  213 + color: '#fff',
  214 +
  215 + },
  216 + {
  217 + type: "out",
  218 + level: 0,
  219 + enumType: 'call',
  220 + color: '#3C8CE7',
  221 + }
  222 + ],
  223 + titleBarColor: ['#3950e8', '#25f6d0']
  224 + },
  225 + {
  226 + id: 'card51',
  227 + x: 100,
  228 + y: 400,
  229 + label: '撤销班次取消(烂班)工具',
  230 + type: "撤销班次取消(烂班)工具",
209 231 nodes: [{
210 232 type: "in",
211 233 level: 0,
... ... @@ -226,8 +248,30 @@
226 248 id: 'card6',
227 249 x: 100,
228 250 y: 400,
229   - label: '实发调整',
230   - type: "实发调整",
  251 + label: '实发调整工具',
  252 + type: "实发调整工具",
  253 + nodes: [{
  254 + type: "in",
  255 + level: 0,
  256 + enumType: 'call',
  257 + color: '#fff',
  258 +
  259 + },
  260 + {
  261 + type: "out",
  262 + level: 0,
  263 + enumType: 'call',
  264 + color: '#3C8CE7',
  265 + }
  266 + ],
  267 + titleBarColor: ['#3950e8', '#25f6d0']
  268 + },
  269 + {
  270 + id: 'card7',
  271 + x: 100,
  272 + y: 400,
  273 + label: '实发撤销工具',
  274 + type: "实发撤销工具",
231 275 nodes: [{
232 276 type: "in",
233 277 level: 0,
... ... @@ -248,8 +292,8 @@
248 292 id: 'card7',
249 293 x: 100,
250 294 y: 400,
251   - label: '实发撤销',
252   - type: "实发撤销",
  295 + label: '发车信息微调工具',
  296 + type: "发车信息微调工具",
253 297 nodes: [{
254 298 type: "in",
255 299 level: 0,
... ... @@ -270,8 +314,8 @@
270 314 id: 'card8',
271 315 x: 100,
272 316 y: 400,
273   - label: '新增临加班次',
274   - type: "新增临加班次",
  317 + label: '新增临加班次工具',
  318 + type: "新增临加班次工具",
275 319 nodes: [{
276 320 type: "in",
277 321 level: 0,
... ... @@ -292,8 +336,8 @@
292 336 id: 'card9',
293 337 x: 100,
294 338 y: 400,
295   - label: '调整人车',
296   - type: "调整人车",
  339 + label: '调整人车工具',
  340 + type: "调整人车工具",
297 341 nodes: [{
298 342 type: "in",
299 343 level: 0,
... ... @@ -314,8 +358,8 @@
314 358 id: 'card10',
315 359 x: 100,
316 360 y: 400,
317   - label: '指令重发',
318   - type: "指令重发",
  361 + label: '指令重发工具',
  362 + type: "指令重发工具",
319 363 nodes: [{
320 364 type: "in",
321 365 level: 0,
... ... @@ -336,8 +380,8 @@
336 380 id: 'card11',
337 381 x: 100,
338 382 y: 400,
339   - label: '路牌对调',
340   - type: "路牌对调",
  383 + label: '路牌对调工具',
  384 + type: "路牌对调工具",
341 385 nodes: [{
342 386 type: "in",
343 387 level: 0,
... ... @@ -358,8 +402,8 @@
358 402 id: 'card12',
359 403 x: 100,
360 404 y: 400,
361   - label: '误点调整',
362   - type: "误点调整",
  405 + label: '误点调整工具',
  406 + type: "误点调整工具",
363 407 nodes: [{
364 408 type: "in",
365 409 level: 0,
... ...
src/main/resources/static/real_control_v2/js/main.js
... ... @@ -30,7 +30,7 @@ var gb_main_ep = new EventProxy(),
30 30 //判断如果用户按下了回车键(keycody=13)
31 31 if (keyNum == 13) {
32 32 fired = true;
33   - debugger
  33 +
34 34 let lineCode = gb_schedule_table.TablelineCode;
35 35 document.getElementById("recidress").style.display = 'none';
36 36 recorder.upload("zndd/do/"+lineCode, function (state, e) {
... ...
src/main/resources/static/real_control_v2/js/north/toolbar.js
... ... @@ -36,17 +36,30 @@ var gb_northToolbar = (function () {
36 36 //exit
37 37 $('.north .north-toolbar .exit-system').on('click', function () {
38 38 //调度员退出时提示未全部完成班次的线路
39   - debugger
40 39 //默认只取一个角色
41   - /* if(currentUser.currentUser[0].codeName == "BSTH_A"){
  40 + if(user.roles[0].codeName == "LG_DDY" || user.roles[0].codeName == "LG_GLY"){
42 41 //提示未完成线路 搜索该用户下所有的线路 判断是否完成
43   -
  42 + $.get('/logZndd/LineUserAll', {userId: user.id}, function (rs) {
  43 + if(rs.length > 0){
  44 + notify_err(rs+"班次还有未完成");
  45 + layer.confirm('班次还有未完成,是否要退出线调?', {
  46 + btn: ['确定','取消'] //按钮
  47 + }, function(){
  48 + gb_sch_websocket.sock().close(1000, '退出线调');
  49 + window.location.href = '/pages/control/lineallot_v2/iframe_wrap.html';
  50 + }, function(){
  51 + });
  52 + }else {
  53 + //关闭websocket 连接
  54 + gb_sch_websocket.sock().close(1000, '退出线调');
  55 + window.location.href = '/pages/control/lineallot_v2/iframe_wrap.html';
  56 + }
  57 + })
  58 + }else {
  59 + //关闭websocket 连接
  60 + gb_sch_websocket.sock().close(1000, '退出线调');
  61 + window.location.href = '/pages/control/lineallot_v2/iframe_wrap.html';
44 62 }
45   -*/
46   -
47   - //关闭websocket 连接
48   - gb_sch_websocket.sock().close(1000, '退出线调');
49   - window.location.href = '/pages/control/lineallot_v2/iframe_wrap.html';
50 63 });
51 64  
52 65 //过滤菜单
... ...
src/main/resources/static/real_control_v2/js/stationcf/klyj.js
... ... @@ -3,7 +3,7 @@
3 3 */
4 4 var gb_klyj = (function () {
5 5 var $wrap = $('.multi_plat_msg_pop_zndd');
6   - var max = 3;
  6 + var max = 0;
7 7 var dataMap = new Map();
8 8 var popcf = function (data) {
9 9 dataMap.set(data.uuid,data);
... ...
src/main/resources/static/real_control_v2/js/stationcf/stationcf.js
... ... @@ -27,7 +27,7 @@ var gb_stationcf = (function () {
27 27 $wrap.on('click', '.all', function () {
28 28 var type = $(this).data('ip');
29 29 var calleeId = $(this).data('call')
30   - var pageUrl ="/real_control_v2/js/call/index.html?calleeId="+calleeId;
  30 + var pageUrl ="/real_control_v2/zndd/call/index.html?calleeId="+calleeId;
31 31 //将片段路径写入 localStorage
32 32 window.localStorage.setItem('real_control_form_embed_pageUrl', pageUrl);
33 33 var index = layer.open({
... ...
src/main/resources/static/real_control_v2/js/zndd/data_zndd.js
... ... @@ -88,6 +88,11 @@ var gb_dataZndd = (function (){
88 88 if (closetwo) closetwo = false
89 89 });
90 90  
  91 + var modal_opts = {
  92 + center: false,
  93 + bgclose: false
  94 + }
  95 +
91 96  
92 97 //1078路,1135路,南临专线,临港4路,浦东111路,浦东74路,临港13路,申港3路,浦东29路,新芦专线
93 98 function ycsf_sx(line){
... ... @@ -110,6 +115,23 @@ var gb_dataZndd = (function (){
110 115 }
111 116 return false;
112 117 }
  118 + //发车信息微调
  119 + $pop.on('click', '.fcxxwts', function () {
  120 + if (close) close = false
  121 + var that = $(this);
  122 + debugger
  123 + var folder = '/real_control_v2/fragments/line_schedule/context_menu';
  124 + var id = that.data('id')
  125 +
  126 + $.post('/logZndd/thissch/'+id, function(res) {
  127 + open_modal(folder + '/fcxxwt.html?r=' + Math.random(), {
  128 + sch: res
  129 + }, modal_opts);
  130 +
  131 + });
  132 +
  133 + });
  134 +
113 135  
114 136  
115 137 //撤销实发
... ...
src/main/resources/static/real_control_v2/js/zndd/dkl_yanshi.js 0 → 100644
  1 +var dkl_yanshi = (function (){
  2 +
  3 +
  4 +
  5 +
  6 + $('#dkl_yanshi').on('click',function(){
  7 + //1096路水华路枢纽站
  8 + var list = { lineCode : "80301",stationCode: "126934"};
  9 + var cc = [];
  10 + cc.push(list);
  11 +
  12 + var datas = {
  13 + stations :cc,
  14 + num : 20,
  15 + token : 1,
  16 +
  17 + }
  18 +
  19 + $.ajax({
  20 + type: "POST",
  21 + cache: false,
  22 + url: '/out/klyj',
  23 + contentType:"application/json;charset=utf-8",
  24 + data:JSON.stringify(datas),
  25 + success: function (res) {
  26 + notify_succ('检测大客流!');
  27 + }
  28 + })
  29 +
  30 +
  31 +
  32 + });
  33 +
  34 +})();
0 35 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/js/zndd/recorder/recorder.js
... ... @@ -212,7 +212,13 @@
212 212 }
213 213 else if(responseText[1]=="2"){//新增出场班次
214 214 if(schId==''){
215   - notify_err("请选择班次");
  215 + var sch ={
  216 + xlBm : lineCode
  217 + }
  218 + var fun =gb_schedule_context_menu.add_temp_sch_v2;
  219 + fun(sch, function () {
  220 + confirmBtn.trigger('click');
  221 + });
216 222 return;
217 223 }
218 224 var sch = gb_schedule_table.findScheduleByLine(lineCode)[schId];
... ... @@ -229,7 +235,13 @@
229 235 }
230 236 else if(responseText[1]=="3"){//新增班次
231 237 if(schId==''){
232   - notify_err("请选择班次");
  238 + var sch ={
  239 + xlBm : lineCode
  240 + }
  241 + var fun =gb_schedule_context_menu.add_temp_sch_v2;
  242 + fun(sch, function () {
  243 + confirmBtn.trigger('click');
  244 + });
233 245 return;
234 246 }
235 247 var sch = gb_schedule_table.findScheduleByLine(lineCode)[schId];
... ...
src/main/resources/static/real_control_v2/main.html
... ... @@ -52,6 +52,9 @@
52 52 <!-- main style -->
53 53 <link rel="stylesheet" href="/real_control_v2/css/microphone.css" />
54 54  
  55 + <!--//演示使用-->
  56 + <link href="/real_control_v2/zndd/yanshi/static/css/sjz.css" type="text/css" rel="stylesheet">
  57 +
55 58 </head>
56 59  
57 60 <body>
... ... @@ -236,7 +239,8 @@
236 239 <script src="/real_control_v2/js/forms/form_embed.js" merge="custom_js"></script>
237 240 <!-- 模态框扩展 -->
238 241 <script src="/real_control_v2/js/modal_extend.js" merge="custom_js"></script>
239   -<script src="/real_control_v2/call/assets/js/index.js" merge="custom_js"></script>
  242 +
  243 +<script src="/real_control_v2/zndd/call/assets/js/index.js"></script>
240 244 <!-- #### 安全驾驶 start ### -->
241 245 <div class="multi_plat_msg_pop_wrap" ></div>
242 246 <script id="sd_plat_msg_template" type="text/html">
... ... @@ -301,6 +305,11 @@
301 305 <div class="popup-msg-contents" style="display:{{type == 'YCSF'?'':'none'}}">
302 306 <button class="uk-button uk-button-primary colsebc" data-fcsj="{{fcsj}}" data-clzbh="{{clzbh}}" data-id="{{id}}">取消实发</button>
303 307 </div>
  308 +
  309 + <div class="popup-msg-contents" style="display:{{type == 'WD'?'':'none'}}">
  310 + <button class="uk-button uk-button-primary fcxxwts" data-fcsj="{{fcsj}}" data-clzbh="{{clzbh}}" data-id="{{id}}">发车信息微调</button>
  311 + </div>
  312 +
304 313 <div class="centerSpace msg-title">
305 314 <div></div>
306 315 <div class="msg-date-infos" style="display:{{type == 'SFTZ_1'?'':'none'}}" >
... ... @@ -346,7 +355,6 @@
346 355 <span class="title">{{datarq}} ----</span>
347 356 <span class="title">{{types}}</span>
348 357 <div> 点击查看预案</div>
349   -
350 358 </div>
351 359 </div>
352 360  
... ... @@ -360,6 +368,9 @@
360 368 <script src="/real_control_v2/js/stationcf/stationcf.js" merge="custom_js"></script>
361 369 <!--智能调度-->
362 370 <script src="/real_control_v2/js/zndd/data_zndd.js" merge="custom_js"></script>
  371 +<script src="/real_control_v2/js/zndd/dkl_yanshi.js" merge="custom_js"></script>
  372 +
  373 +
363 374 <!--站点催发-->
364 375 <script src="/real_control_v2/js/stationcf/klyj.js" merge="custom_js"></script>
365 376 <!--语音图标-->
... ...
src/main/resources/static/real_control_v2/js/call/assets/css/bootstrap.min.css renamed to src/main/resources/static/real_control_v2/zndd/call/assets/css/bootstrap.min.css
src/main/resources/static/real_control_v2/js/call/assets/css/index.css renamed to src/main/resources/static/real_control_v2/zndd/call/assets/css/index.css
src/main/resources/static/real_control_v2/js/call/assets/font/iconfont.css renamed to src/main/resources/static/real_control_v2/zndd/call/assets/font/iconfont.css
src/main/resources/static/real_control_v2/js/call/assets/font/iconfont.eot renamed to src/main/resources/static/real_control_v2/zndd/call/assets/font/iconfont.eot
No preview for this file type
src/main/resources/static/real_control_v2/js/call/assets/font/iconfont.svg renamed to src/main/resources/static/real_control_v2/zndd/call/assets/font/iconfont.svg
src/main/resources/static/real_control_v2/js/call/assets/font/iconfont.ttf renamed to src/main/resources/static/real_control_v2/zndd/call/assets/font/iconfont.ttf
No preview for this file type
src/main/resources/static/real_control_v2/js/call/assets/font/iconfont.woff renamed to src/main/resources/static/real_control_v2/zndd/call/assets/font/iconfont.woff
No preview for this file type
src/main/resources/static/real_control_v2/js/call/assets/font/iconfont.woff2 renamed to src/main/resources/static/real_control_v2/zndd/call/assets/font/iconfont.woff2
No preview for this file type
src/main/resources/static/real_control_v2/js/call/assets/images/BG.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/BG.png

87 KB

src/main/resources/static/real_control_v2/js/call/assets/images/Dcall.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/Dcall.png

3.09 KB

src/main/resources/static/real_control_v2/js/call/assets/images/Mcalls.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/Mcalls.png

2.55 KB

src/main/resources/static/real_control_v2/js/call/assets/images/answer.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/answer.png

4.07 KB

src/main/resources/static/real_control_v2/js/call/assets/images/audio_bg.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/audio_bg.png

101 KB

src/main/resources/static/real_control_v2/js/call/assets/images/call_bg.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/call_bg.png

82.3 KB

src/main/resources/static/real_control_v2/js/call/assets/images/changaudio-hover.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/changaudio-hover.png

4.07 KB

src/main/resources/static/real_control_v2/js/call/assets/images/chart.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/chart.png

6.5 KB

src/main/resources/static/real_control_v2/js/call/assets/images/favicon.ico renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/favicon.ico
No preview for this file type
src/main/resources/static/real_control_v2/js/call/assets/images/hangup.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/hangup.png

3.87 KB

src/main/resources/static/real_control_v2/js/call/assets/images/head.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/head.png

9.69 KB

src/main/resources/static/real_control_v2/js/call/assets/images/logo_big.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/logo_big.png

6.14 KB

src/main/resources/static/real_control_v2/js/call/assets/images/logo_title.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/logo_title.png

2.37 KB

src/main/resources/static/real_control_v2/js/call/assets/images/video.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/video.png

2.33 KB

src/main/resources/static/real_control_v2/js/call/assets/images/video_close.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/video_close.png

2.76 KB

src/main/resources/static/real_control_v2/js/call/assets/images/video_hangup.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/video_hangup.png

2.59 KB

src/main/resources/static/real_control_v2/js/call/assets/images/voice.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/voice.png

2.57 KB

src/main/resources/static/real_control_v2/js/call/assets/images/voice_close.png renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/voice_close.png

2.89 KB

src/main/resources/static/real_control_v2/js/call/assets/images/yimg.jpg renamed to src/main/resources/static/real_control_v2/zndd/call/assets/images/yimg.jpg

60.9 KB

src/main/resources/static/real_control_v2/js/call/assets/js/ArRTM@latest.js renamed to src/main/resources/static/real_control_v2/zndd/call/assets/js/ArRTM@latest.js
src/main/resources/static/real_control_v2/js/call/assets/js/bootstrap.min.js renamed to src/main/resources/static/real_control_v2/zndd/call/assets/js/bootstrap.min.js
src/main/resources/static/real_control_v2/js/call/assets/js/index.js renamed to src/main/resources/static/real_control_v2/zndd/call/assets/js/index.js
src/main/resources/static/real_control_v2/js/call/assets/js/jquery-3.5.1.min.js renamed to src/main/resources/static/real_control_v2/zndd/call/assets/js/jquery-3.5.1.min.js
src/main/resources/static/real_control_v2/js/call/assets/js/latest.js renamed to src/main/resources/static/real_control_v2/zndd/call/assets/js/latest.js
src/main/resources/static/real_control_v2/js/call/index.html renamed to src/main/resources/static/real_control_v2/zndd/call/index.html
... ... @@ -6,19 +6,19 @@
6 6 <meta name="google" content="notranslate" />
7 7 <title>anyrtc 呼叫邀请DEMO - anyRTC</title>
8 8 <!-- icon -->
9   - <link rel="icon" href="/real_control_v2/js/call/assets/images/favicon.ico" />
  9 + <link rel="icon" href="/real_control_v2/zndd/call/assets/images/favicon.ico" />
10 10 <!-- CSS only -->
11   - <link rel="stylesheet" href="/real_control_v2/js/call/assets/css/bootstrap.min.css"/>
12   - <link rel="stylesheet" type="text/css" href="/real_control_v2/js/call/assets/font/iconfont.css" />
  11 + <link rel="stylesheet" href="/real_control_v2/zndd/call/assets/css/bootstrap.min.css"/>
  12 + <link rel="stylesheet" type="text/css" href="/real_control_v2/zndd/call/assets/font/iconfont.css" />
13 13 <!-- JS, Popper.js, and jQuery -->
14   - <script src="/real_control_v2/js/call/assets/js/jquery-3.5.1.min.js"></script>
15   - <script src="/real_control_v2/js/call/assets/js/bootstrap.min.js"></script>
  14 + <script src="/real_control_v2/zndd/call/assets/js/jquery-3.5.1.min.js"></script>
  15 + <script src="/real_control_v2/zndd/call/assets/js/bootstrap.min.js"></script>
16 16 <!-- JS, RTC and RTM -->
17   - <script src="/real_control_v2/js/call/assets/js/latest.js"></script>
18   - <script src="/real_control_v2/js/call/assets/js/ArRTM@latest.js"></script>
  17 + <script src="/real_control_v2/zndd/call/assets/js/latest.js"></script>
  18 + <script src="/real_control_v2/zndd/call/assets/js/ArRTM@latest.js"></script>
19 19  
20 20 <!-- 覆盖bootstrap样式 -->
21   - <link rel="stylesheet" href="/real_control_v2/js/call/assets/css/index.css" />
  21 + <link rel="stylesheet" href="/real_control_v2/zndd/call/assets/css/index.css" />
22 22 </head>
23 23  
24 24 <body class="notranslate">
... ... @@ -28,7 +28,7 @@
28 28 <!-- 首页 -->
29 29 <div
30 30 class="page d-flex flex-col justify-content-center align-items-center"
31   - id="homePage" style="background-image:url('/real_control_v2/js/call/assets/images/yimg.jpg')"
  31 + id="homePage" style="background-image:url('/real_control_v2/zndd/call/assets/images/yimg.jpg')"
32 32  
33 33 >
34 34 <!-- -->
... ... @@ -133,7 +133,7 @@
133 133 <img
134 134 draggable="false"
135 135 class="img-responsive setting-video_preview_bg"
136   - src="/real_control_v2/js/call/assets/images/chart.png"
  136 + src="/real_control_v2/zndd/call/assets/images/chart.png"
137 137 />
138 138 <div
139 139 id="settingVideoPreview"
... ... @@ -332,7 +332,7 @@
332 332 <div class="invitation bd-highlight">
333 333 <div class="d-flex justify-content-center">
334 334 <div class="head_portrait">
335   - <img draggable="false" src="/real_control_v2/js/call/assets/images/head.png" />
  335 + <img draggable="false" src="/real_control_v2/zndd/call/assets/images/head.png" />
336 336 </div>
337 337 </div>
338 338 <div
... ... @@ -357,7 +357,7 @@
357 357 draggable="false"
358 358 class="img-responsive"
359 359 style="cursor: pointer"
360   - src="/real_control_v2/js/call/assets/images/hangup.png"
  360 + src="/real_control_v2/zndd/call/assets/images/hangup.png"
361 361 id="cancelCallBtn"
362 362 />
363 363 <!-- <button type="button" class="btn btn-danger" >取消</button> -->
... ... @@ -372,7 +372,7 @@
372 372 <div class="invitation bd-highlight">
373 373 <div class="d-flex justify-content-center">
374 374 <div class="head_portrait">
375   - <img draggable="false" src="/real_control_v2/js/call/assets/images/head.png" />
  375 + <img draggable="false" src="/real_control_v2/zndd/call/assets/images/head.png" />
376 376 </div>
377 377 </div>
378 378 <div
... ... @@ -398,21 +398,21 @@
398 398 draggable="false"
399 399 class="img-responsive"
400 400 style="cursor: pointer"
401   - src="/real_control_v2/js/call/assets/images/changaudio-hover.png"
  401 + src="/real_control_v2/zndd/call/assets/images/changaudio-hover.png"
402 402 id="changAudioBtn"
403 403 />
404 404 <img
405 405 draggable="false"
406 406 class="img-responsive"
407 407 style="cursor: pointer"
408   - src="/real_control_v2/js/call/assets/images/answer.png"
  408 + src="/real_control_v2/zndd/call/assets/images/answer.png"
409 409 id="acceptCallBtn"
410 410 />
411 411 <img
412 412 draggable="false"
413 413 class="img-responsive"
414 414 style="cursor: pointer"
415   - src="/real_control_v2/js/call/assets/images/hangup.png"
  415 + src="/real_control_v2/zndd/call/assets/images/hangup.png"
416 416 id="refuseCallBtn"
417 417 />
418 418 <!-- 多人 -->
... ... @@ -437,7 +437,7 @@
437 437 <img
438 438 draggable="false"
439 439 class="img-responsive"
440   - src="/real_control_v2/js/call/assets/images/head.png"
  440 + src="/real_control_v2/zndd/call/assets/images/head.png"
441 441 />
442 442 </div>
443 443 <div class="">
... ... @@ -469,7 +469,7 @@
469 469 draggable="false"
470 470 style="width: 100%"
471 471 class="img-responsive"
472   - src="/real_control_v2/js/call/assets/images/audio_bg.png"
  472 + src="/real_control_v2/zndd/call/assets/images/audio_bg.png"
473 473 />
474 474 </div>
475 475 </div>
... ... @@ -492,7 +492,7 @@
492 492 draggable="false"
493 493 style="position: absolute; width: 50%"
494 494 class="img-responsive"
495   - src="/real_control_v2/js/call/assets/images/logo_title.png"
  495 + src="/real_control_v2/zndd/call/assets/images/logo_title.png"
496 496 />
497 497 </div>
498 498 <div class="prompt_little d-flex">
... ... @@ -515,7 +515,7 @@
515 515 draggable="false"
516 516 style="position: absolute; width: 40%"
517 517 class="img-responsive"
518   - src="/real_control_v2/js/call/assets/images/logo_big.png"
  518 + src="/real_control_v2/zndd/call/assets/images/logo_big.png"
519 519 />
520 520 </div>
521 521 <div class="prompt_big meet-control_icon m-3" id="videoDuration">
... ... @@ -587,7 +587,7 @@
587 587 <img
588 588 draggable="false"
589 589 class="img-responsive"
590   - src="/real_control_v2/js/call/assets/images/logo_big.png"
  590 + src="/real_control_v2/zndd/call/assets/images/logo_big.png"
591 591 />
592 592 </div>
593 593  
... ... @@ -724,7 +724,7 @@
724 724 </div>
725 725 <!-- /.modal -->
726 726 </div>
727   - <script src="/real_control_v2/js/call/assets/js/index.js"></script>
  727 + <script src="/real_control_v2/zndd/call/assets/js/index.js"></script>
728 728 </body>
729 729 <script>
730 730 (function() {
... ...
src/main/resources/static/real_control_v2/zndd/type/dkl.html
... ... @@ -427,9 +427,14 @@
427 427 data.fgsBm = line.brancheCompany;
428 428 }
429 429  
  430 + data.img=sch.image;
  431 + data.operationType=1;
430 432 gb_common.$post('/realSchedule', data, function (rs) {
431 433 notify_succ('新增临加班次成功');
432 434 cb && cb(rs);
  435 + /*var folder = '/real_control_v2/zndd/yanshi';
  436 + open_modal(folder + '/yanshi.html', {
  437 + }, {center: true, bgclose: false, modal: true});*/
433 438 }, err);
434 439 }
435 440  
... ...
src/main/resources/static/real_control_v2/zndd/type/fcjg.html
... ... @@ -2,7 +2,7 @@
2 2 <div class="uk-modal-dialog" style="width: 920px;">
3 3 <a href="" class="uk-modal-close uk-close"></a>
4 4 <div class="uk-modal-header">
5   - <h2>新增临加班次</h2></div>
  5 + <h2>发车间隔</h2></div>
6 6 <div class="uk-grid uk-width-3-5" style="float: left">
7 7 <div class="uk-width-5-5">
8 8 <form class="uk-form uk-form-horizontal"> </form>
... ...
src/main/resources/static/real_control_v2/zndd/type/mz.html
... ... @@ -448,7 +448,7 @@
448 448  
449 449 <div class="uk-width-1-1">
450 450 <div class="uk-form-row">
451   - <label class="uk-form-label">车内视频:</label>
  451 + <label class="uk-form-label">车内情况:</label>
452 452 </div>
453 453 </div>
454 454 </div>
... ...
src/main/resources/static/real_control_v2/zndd/video/k1.png 0 → 100644

1.43 MB

src/main/resources/static/real_control_v2/zndd/video/k2.png 0 → 100644

1.65 MB

src/main/resources/static/real_control_v2/zndd/yanshi/static/css/sjz.css 0 → 100644
  1 +
  2 +.demo {
  3 + width:960px;
  4 + margin:60px auto 0 auto;
  5 +}
  6 +/*history*/
  7 +.history {
  8 + background:url(../image/line04.gif) repeat-y 187px 0;
  9 + overflow:hidden;
  10 + position:relative;
  11 +}
  12 +.history-date {
  13 + overflow:hidden;
  14 + position:relative;
  15 +}
  16 +.history-date h2 {
  17 + background:#fff url(../image/icon06.gif) no-repeat 158px 0;
  18 + height:59px;
  19 + font-size:25px;
  20 + font-family:微软雅黑;
  21 + font-weight:normal;
  22 + padding-left:45px;
  23 + margin-bottom:74px;
  24 +}
  25 +.history-date h2.first {
  26 + position:absolute;
  27 + left:0;
  28 + top:0;
  29 + width:500px;
  30 + z-index:99;
  31 +}
  32 +.history-date h2 a {
  33 + color:#00bbff;
  34 + display:inline-block;
  35 +*display:inline;
  36 + zoom:1;
  37 + background:url(../image/icon08.gif) no-repeat right 50%;
  38 + padding-right:17px;
  39 + margin:21px 97px 0 0;
  40 +}
  41 +.history-date h2 a:hover {
  42 + text-decoration:none;
  43 +}
  44 +.history-date h2 img {
  45 + vertical-align:-5px;
  46 +}
  47 +.history-date h2.date02 {
  48 + background:none;
  49 +}
  50 +.history-date ul li {
  51 + background:url(../image/yes.png) no-repeat 180px 0;
  52 + background-size: 15px 15px;
  53 + padding-bottom:50px;
  54 + zoom:1;
  55 +}
  56 +.history-date ul li.last {
  57 + padding-bottom:0;
  58 +}
  59 +.history-date ul li:after {
  60 + content:" ";
  61 + display:block;
  62 + height:0;
  63 + clear:both;
  64 + visibility:hidden;
  65 +}
  66 +.history-date ul li h3 {
  67 + float:left;
  68 + width:20%;
  69 + text-align:right;
  70 + padding-right:19px;
  71 + color:#c3c3c3;
  72 + font:normal 18px/16px Arial;
  73 +}
  74 +.history-date ul li h3 span {
  75 + display:block;
  76 + color:#d0d0d0;
  77 + font-size:12px;
  78 +}
  79 +.history-date ul li dl {
  80 + width: 70%;
  81 + float:left;
  82 + padding-left:41px;
  83 + margin-top:-5px;
  84 + font-family:微软雅黑;
  85 +}
  86 +.history-date ul li dl dt {
  87 + font:20px/22px 微软雅黑;
  88 + color:#737373;
  89 +}
  90 +.history-date ul li dl dt span {
  91 + display:block;
  92 + color:#787878;
  93 + font-size:12px;
  94 +}
  95 +.history-date ul li.green h3 {
  96 + color:#1db702;
  97 +}
  98 +.history-date ul li.green h3 span {
  99 + color:#a8dda3;
  100 +}
  101 +.history-date ul li.green dl {
  102 + margin-top:-8px;
  103 +}
  104 +.history-date ul li.green dl dt {
  105 + font-size:30px;
  106 + line-height:28px;
  107 +}
  108 +.history-date ul li.green dl dt a {
  109 + display:inline-block;
  110 +*display:inline;
  111 + zoom:1;
  112 + overflow:hidden;
  113 + vertical-align:middle;
  114 + margin-left:12px;
  115 +}
  116 +.history-date ul li.green dl dd {
  117 + padding-top:20px;
  118 + display:none;
  119 +}
  120 +.history-date ul li.green dl dd img {
  121 + float:left;
  122 +}
  123 +.history-date ul li.green dl dd p {
  124 + overflow:hidden;
  125 + zoom:1;
  126 + line-height:21px;
  127 + color:#787878;
  128 +}
  129 +.history-date h2.first .more-history {
  130 + font-size:16px;
  131 + background:transparent;
  132 + margin-left:30px;
  133 +}
  134 +.history-date h2.first .more-history:hover {
  135 + text-decoration:underline;
  136 +}
  137 +*body .history-date ul li dl dt {
  138 + _font-size:12px!important;
  139 + _font-weight:bold;
  140 +}
  141 +*body .history-date ul li dl dt span {
  142 + _font-weight:normal!important;
  143 +}
  144 +*body .history-date ul li.green dl dt a {
  145 + _background:transparent!important;
  146 +*background:transparent!important;
  147 +*font-size:12px!important;
  148 + _font-weight:normal!important;
  149 +}
  150 +.timerssn{
  151 + text-align: center;
  152 + font-size: 20px;
  153 + color: red;
  154 + position: absolute;
  155 + width: 15%;
  156 +}
0 157 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/zndd/yanshi/static/image/icon06.gif 0 → 100644

1.65 KB

src/main/resources/static/real_control_v2/zndd/yanshi/static/image/icon07.gif 0 → 100644

366 Bytes

src/main/resources/static/real_control_v2/zndd/yanshi/static/image/icon08.gif 0 → 100644

49 Bytes

src/main/resources/static/real_control_v2/zndd/yanshi/static/image/line04.gif 0 → 100644

43 Bytes

src/main/resources/static/real_control_v2/zndd/yanshi/static/image/yes.png 0 → 100644

6.34 KB

src/main/resources/static/real_control_v2/zndd/yanshi/static/js/jquery-1.10.2.js 0 → 100644
  1 +/*-防止各大cdn公共库加载地址失效问题,此地址我们会时时监控,及调整以保障正常访问-www.jq22.com为您服务*/
  2 +/*当前为字节跳动cdn公共库提供的jQuery-1.10.2*/
  3 +document.write("<script src='https://s1.pstatp.com/cdn/expire-1-M/jquery/1.10.2/jquery.min.js'><\/script>");
0 4 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/zndd/yanshi/yanshi.html 0 → 100644
  1 +<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-dklyanshi-modal">
  2 + <div class="uk-modal-dialog" style="width: 800px;">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>大客流預案场景演示</h2></div>
  6 +
  7 + <head>
  8 + <meta charset="utf-8">
  9 + <title>jQuery疫情防控时间轴</title>
  10 + <link href="/real_control_v2/zndd/yanshi/static/css/sjz.css" type="text/css" rel="stylesheet">
  11 + </head>
  12 + <div class="timerssn"></div>
  13 + <div class="history" style="margin-top:50px;height: 400px;overflow-y: scroll" >
  14 +
  15 + <div class="history-date" STYLE="padding-top:10px;">
  16 + <ul>
  17 + <li>
  18 + <h3>10:00<span>10月31日</span></h3>
  19 + <dl>
  20 + <dt>驾驶收到通知 </dt>
  21 + </dl>
  22 + </li>
  23 + </ul>
  24 + <ul>
  25 + <li>
  26 + <h3>10:05<span>10月31日</span></h3>
  27 + <dl>
  28 + <dt>驾驶员抵达车辆、车辆收到行驶班次</dt>
  29 + </dl>
  30 + </li>
  31 + </ul>
  32 + <ul>
  33 + <li>
  34 + <h3>10:06<span>10月31日</span></h3>
  35 + <dl>
  36 + <dt>车辆行驶出发点</dt>
  37 + </dl>
  38 + </li>
  39 + </ul>
  40 + <ul>
  41 + <li>
  42 + <h3>10:06<span>10月31日</span></h3>
  43 + <dl>
  44 + <div id="drawer_right_map" style="height: 300px;width: 100%"></div>
  45 + </dl>
  46 + </li>
  47 + </ul>
  48 + <ul>
  49 + <li>
  50 + <h3>10:10<span>10月31日</span></h3>
  51 + <dl>
  52 + <dt>车辆抵达发车点</dt>
  53 + </dl>
  54 + </li>
  55 + </ul>
  56 +
  57 + <ul>
  58 + <li>
  59 + <h3>10:20<span>10月31日</span></h3>
  60 + <dl>
  61 + <dt>车辆运送乘客,继续监控站点是否还有大客流</dt>
  62 + </dl>
  63 + </li>
  64 + </ul>
  65 + <ul>
  66 + <li>
  67 + <h3>11:00<span>10月31日</span></h3>
  68 + <dl>
  69 + <dt>车辆送达乘客</dt>
  70 + </dl>
  71 + </li>
  72 + </ul>
  73 + <ul>
  74 + <li>
  75 + <h3>11:00<span>10月31日</span></h3>
  76 + <dl>
  77 + <dt>任务结束</dt>
  78 + </dl>
  79 + </li>
  80 + </ul>
  81 + </div>
  82 + </div>
  83 + </div>
  84 +
  85 +
  86 + <script>
  87 +
  88 + $(function(){
  89 + systole();
  90 + var nt = 0;
  91 + function systole(){
  92 + $(".history-date ul").css({display: 'none'});
  93 + //驾驶员收到通知
  94 +
  95 +
  96 + var cctime = setInterval(function (){
  97 + time();
  98 + timent = timent - 1;
  99 + }, 1000);
  100 +
  101 + // 设置一个每2000毫秒执行一次的定时器
  102 + var intervalId = setInterval(function() {
  103 + var divs = $(".history-date ul");
  104 + divs.each(function(index,element) {
  105 + if(nt == index){
  106 + $(this).css({display: ''});
  107 +
  108 + if(index == 3){
  109 + play();
  110 + }
  111 + if(nt == divs.length - 1){
  112 + nt = 0;
  113 + clearInterval(intervalId)
  114 + clearInterval(cctime);
  115 + $(".timerssn").html("");//清空倒计时
  116 + }
  117 + nt ++;
  118 + timent = 5;
  119 + return false;
  120 + }
  121 +
  122 + });
  123 + }, 5000);
  124 +
  125 + }
  126 + let date ={
  127 + "list": [{"bd_lon":121.90467819574694,"bd_lat":30.900545629815696,"lon":121.89413,"lat":30.896774,"deviceId":"77W1S014","ts":1730264742000,"timestamp":1730264742000,"stopNo":"126930","direction":272.0,"lineId":"80301","speed":33.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184989","section_name":"方竹路(白薇路-沪城环路)","version":6},{"bd_lon":121.89989041589938,"bd_lat":30.900580233328572,"lon":121.88931,"lat":30.896894,"deviceId":"77W1S014","ts":1730264850000,"timestamp":1730264850000,"stopNo":"128063","direction":277.0,"lineId":"80301","speed":35.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.90069454903107,"bd_lat":30.900535838211702,"lon":121.89012,"lat":30.896835,"deviceId":"77W1S014","ts":1730264821000,"timestamp":1730264821000,"stopNo":"128063","direction":276.0,"lineId":"80301","speed":0.0,"inout_stop_info":{"deviceId":"77W1S014","stopName":"方竹路卓卉路","ts":1730264821000,"lineCode":"80301","upDown":0,"stopNo":"128063","inOut":0,"createDate":1730264825690,"enable":false,"weeksYear":44,"tcc":false,"correct":false,"flag":0,"outTcc":false,"id":"77W1S014_1730264821000"},"inout_stop":0,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.89525655752936,"bd_lat":30.90044660702875,"lon":121.88465,"lat":30.896847,"deviceId":"77W1S014","ts":1730264956000,"timestamp":1730264956000,"stopNo":"126932","direction":268.0,"lineId":"80301","speed":24.0,"inout_stop_info":{"deviceId":"77W1S014","stopName":"方竹路水华路","ts":1730264956000,"lineCode":"80301","upDown":0,"stopNo":"126932","inOut":0,"createDate":1730264961637,"enable":false,"weeksYear":44,"tcc":false,"correct":false,"flag":0,"outTcc":false,"id":"77W1S014_1730264956000"},"inout_stop":0,"state":0,"upDown":0,"section_code":"184991","section_name":"方竹路(叶菊路-水华路)","version":6},{"bd_lon":121.90203740623024,"bd_lat":30.900512501387293,"lon":121.89147,"lat":30.896788,"deviceId":"77W1S014","ts":1730264781000,"timestamp":1730264781000,"stopNo":"126930","direction":269.0,"lineId":"80301","speed":0.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.89599210807043,"bd_lat":30.90049839119409,"lon":121.88539,"lat":30.896885,"deviceId":"77W1S014","ts":1730264917000,"timestamp":1730264917000,"stopNo":"126931","direction":262.0,"lineId":"80301","speed":0.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.90650763313731,"bd_lat":30.900574422731786,"lon":121.895966,"lat":30.896772,"deviceId":"77W1S014","ts":1730264701000,"timestamp":1730264701000,"stopNo":"126930","direction":268.0,"lineId":"80301","speed":18.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184989","section_name":"方竹路(白薇路-沪城环路)","version":6},{"bd_lon":121.89599210466311,"bd_lat":30.90050220719686,"lon":121.88539,"lat":30.896889,"deviceId":"77W1S014","ts":1730264943000,"timestamp":1730264943000,"stopNo":"126931","direction":262.0,"lineId":"80301","speed":3.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.89796373453942,"bd_lat":30.900714383979444,"lon":121.887375,"lat":30.897064,"deviceId":"77W1S014","ts":1730264889000,"timestamp":1730264889000,"stopNo":"126931","direction":270.0,"lineId":"80301","speed":38.0,"inout_stop_info":{"deviceId":"77W1S014","stopName":"方竹路建桥学院北门","ts":1730264889000,"lineCode":"80301","upDown":0,"stopNo":"126931","inOut":1,"createDate":1730264893416,"enable":false,"weeksYear":44,"tcc":false,"correct":false,"flag":0,"outTcc":false,"id":"77W1S014_1730264889000"},"inout_stop":1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.9022270878919,"bd_lat":30.900514001354395,"lon":121.89166,"lat":30.896786,"deviceId":"77W1S014","ts":1730264768000,"timestamp":1730264768000,"stopNo":"126930","direction":270.0,"lineId":"80301","speed":18.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.89600727155313,"bd_lat":30.90050248856405,"lon":121.88541,"lat":30.896889,"deviceId":"77W1S014","ts":1730264913000,"timestamp":1730264913000,"stopNo":"126931","direction":261.0,"lineId":"80301","speed":3.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.89901801919352,"bd_lat":30.900690056246688,"lon":121.888435,"lat":30.89702,"deviceId":"77W1S014","ts":1730264876000,"timestamp":1730264876000,"stopNo":"126931","direction":268.0,"lineId":"80301","speed":9.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.9056877508437,"bd_lat":30.900541759662353,"lon":121.89514,"lat":30.896753,"deviceId":"77W1S014","ts":1730264729000,"timestamp":1730264729000,"stopNo":"126930","direction":268.0,"lineId":"80301","speed":22.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184989","section_name":"方竹路(白薇路-沪城环路)","version":6},{"bd_lon":121.9016656375683,"bd_lat":30.900515336243583,"lon":121.8911,"lat":30.896797,"deviceId":"77W1S014","ts":1730264805000,"timestamp":1730264805000,"stopNo":"126930","direction":269.0,"lineId":"80301","speed":16.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.89440728696924,"bd_lat":30.900379432991862,"lon":121.8838,"lat":30.896795,"deviceId":"77W1S014","ts":1730264981000,"timestamp":1730264981000,"stopNo":"126932","direction":267.0,"lineId":"80301","speed":12.0,"inout_stop_info":{"deviceId":"77W1S014","stopName":"方竹路水华路","ts":1730264981000,"lineCode":"80301","upDown":0,"stopNo":"126932","inOut":1,"createDate":1730264986077,"enable":false,"weeksYear":44,"tcc":false,"correct":false,"flag":0,"outTcc":false,"id":"77W1S014_1730264981000"},"inout_stop":1,"state":0,"upDown":0,"section_code":"184991","section_name":"方竹路(叶菊路-水华路)","version":6},{"bd_lon":121.90067937710931,"bd_lat":30.90053556084185,"lon":121.89011,"lat":30.896835,"deviceId":"77W1S014","ts":1730264835000,"timestamp":1730264835000,"stopNo":"128063","direction":276.0,"lineId":"80301","speed":0.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.89907870115947,"bd_lat":30.900687363266552,"lon":121.8885,"lat":30.897017,"deviceId":"77W1S014","ts":1730264863000,"timestamp":1730264863000,"stopNo":"126931","direction":274.0,"lineId":"80301","speed":0.0,"inout_stop_info":{"deviceId":"77W1S014","stopName":"方竹路建桥学院北门","ts":1730264863000,"lineCode":"80301","upDown":0,"stopNo":"126931","inOut":0,"createDate":1730264867085,"enable":false,"weeksYear":44,"tcc":false,"correct":false,"flag":0,"outTcc":false,"id":"77W1S014_1730264863000"},"inout_stop":0,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.89967800540734,"bd_lat":30.900601124403273,"lon":121.8891,"lat":30.89692,"deviceId":"77W1S014","ts":1730264852000,"timestamp":1730264852000,"stopNo":"128063","direction":278.0,"lineId":"80301","speed":35.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.89784238925144,"bd_lat":30.900710221128048,"lon":121.88725,"lat":30.897062,"deviceId":"77W1S014","ts":1730264890000,"timestamp":1730264890000,"stopNo":"126931","direction":268.0,"lineId":"80301","speed":40.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.89428597247607,"bd_lat":30.900360032264537,"lon":121.883675,"lat":30.896778,"deviceId":"77W1S014","ts":1730264997000,"timestamp":1730264997000,"stopNo":"126932","direction":270.0,"lineId":"80301","speed":0.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184991","section_name":"方竹路(叶菊路-水华路)","version":6},{"bd_lon":121.90626469804877,"bd_lat":30.900558981481137,"lon":121.89572,"lat":30.89676,"deviceId":"77W1S014","ts":1730264705000,"timestamp":1730264705000,"stopNo":"126930","direction":269.0,"lineId":"80301","speed":18.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184989","section_name":"方竹路(白薇路-沪城环路)","version":6},{"bd_lon":121.90008765951121,"bd_lat":30.900559057215247,"lon":121.88951,"lat":30.89687,"deviceId":"77W1S014","ts":1730264848000,"timestamp":1730264848000,"stopNo":"128063","direction":279.0,"lineId":"80301","speed":33.0,"inout_stop_info":{"deviceId":"77W1S014","stopName":"方竹路卓卉路","ts":1730264848000,"lineCode":"80301","upDown":0,"stopNo":"128063","inOut":1,"createDate":1730264851942,"enable":false,"weeksYear":44,"tcc":false,"correct":false,"flag":0,"outTcc":false,"id":"77W1S014_1730264848000"},"inout_stop":1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.89502148743209,"bd_lat":30.900430816053387,"lon":121.884415,"lat":30.896835,"deviceId":"77W1S014","ts":1730264970000,"timestamp":1730264970000,"stopNo":"126932","direction":264.0,"lineId":"80301","speed":11.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184991","section_name":"方竹路(叶菊路-水华路)","version":6},{"bd_lon":121.90595344115236,"bd_lat":30.90055191818359,"lon":121.89541,"lat":30.896759,"deviceId":"77W1S014","ts":1730264715000,"timestamp":1730264715000,"stopNo":"126930","direction":269.0,"lineId":"80301","speed":3.0,"inout_stop_info":{"deviceId":"77W1S014","stopName":"方竹路沪城环路","ts":1730264715000,"lineCode":"80301","upDown":0,"stopNo":"126930","inOut":1,"createDate":1730264719617,"enable":false,"weeksYear":44,"tcc":false,"correct":false,"flag":0,"outTcc":false,"id":"77W1S014_1730264715000"},"inout_stop":1,"state":0,"upDown":0,"section_code":"184989","section_name":"方竹路(白薇路-沪城环路)","version":6},{"bd_lon":121.89431629470351,"bd_lat":30.900372037240512,"lon":121.883705,"lat":30.89679,"deviceId":"77W1S014","ts":1730264984000,"timestamp":1730264984000,"stopNo":"126932","direction":270.0,"lineId":"80301","speed":5.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184991","section_name":"方竹路(叶菊路-水华路)","version":6},{"bd_lon":121.89599210466311,"bd_lat":30.90050220719686,"lon":121.88539,"lat":30.896889,"deviceId":"77W1S014","ts":1730264930000,"timestamp":1730264930000,"stopNo":"126931","direction":262.0,"lineId":"80301","speed":0.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.901483555169,"bd_lat":30.900513948386312,"lon":121.890915,"lat":30.8968,"deviceId":"77W1S014","ts":1730264808000,"timestamp":1730264808000,"stopNo":"126930","direction":271.0,"lineId":"80301","speed":25.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.90333491241968,"bd_lat":30.900531799908887,"lon":121.89278,"lat":30.896784,"deviceId":"77W1S014","ts":1730264755000,"timestamp":1730264755000,"stopNo":"126930","direction":269.0,"lineId":"80301","speed":31.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.90202981742063,"bd_lat":30.90051427288283,"lon":121.891464,"lat":30.89679,"deviceId":"77W1S014","ts":1730264794000,"timestamp":1730264794000,"stopNo":"126930","direction":269.0,"lineId":"80301","speed":1.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6},{"bd_lon":121.8964015764253,"bd_lat":30.900551784995276,"lon":121.8858,"lat":30.89693,"deviceId":"77W1S014","ts":1730264903000,"timestamp":1730264903000,"stopNo":"126931","direction":262.0,"lineId":"80301","speed":27.0,"inout_stop":-1,"state":0,"upDown":0,"section_code":"184990","section_name":"方竹路(沪城环路-叶菊路)","version":6}]
  128 + }
  129 +
  130 + date.list.sort(function (a, b) {
  131 + return parseInt((a.ts - b.ts) + '' + (a.stop_no - b.stop_no));
  132 + });
  133 + var map = '';
  134 + // 地图的中心点和缩放级别
  135 + map = new BMap.Map("drawer_right_map");
  136 + var point = new BMap.Point(121.89413, 30.896774);
  137 + map.centerAndZoom(point,16);
  138 + var marker = new BMap.Marker(date.list[0]);
  139 + map.addOverlay(marker);
  140 + // 地图的轨迹回放路径
  141 + var path = [];
  142 + var passdate = date.list;
  143 + for (var c in passdate){
  144 + path.push(new BMap.Point(passdate[c].bd_lon, passdate[c].bd_lat))
  145 + }
  146 + var carIcon = '/assets/img/bus1.png';
  147 + // 创建一个图标,用于表示轨迹回放的位置
  148 + var marker = new BMap.Marker(path[0]);
  149 + icon = new BMap.Icon(carIcon, new BMap.Size(25, 25));
  150 + marker.setIcon(icon);
  151 + marker.setRotation(270);
  152 + marker.setTop(true);
  153 + map.addOverlay(marker);
  154 + var polyline = new BMap.Polyline(path, {strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5});
  155 + map.addOverlay(polyline);
  156 +
  157 + // 开始轨迹回放
  158 + var i = 0;
  159 + function play() {
  160 + if (i < path.length) {
  161 + // 设置当前位置
  162 + marker.setPosition(path[i]);
  163 + // 移动地图视角
  164 + map.panTo(path[i]);
  165 +
  166 + // 延迟1秒继续回放下一个位置
  167 + setTimeout(play, 200);
  168 + i++;
  169 + }
  170 + }
  171 + });
  172 +
  173 +
  174 +
  175 +
  176 + var timent = 5;
  177 + function time(){
  178 + $(".timerssn").html(timent);
  179 + }
  180 +
  181 +
  182 +
  183 +
  184 + </script>
  185 +
  186 +</div>
... ...