Commit 71e29cfe85be96d5b665ca4816047b6ff63a246e

Authored by ljq
1 parent b93c22a4

一件报警加入4中类型、智能调度优化、验收页面的临时加入、语音xx站到xx站新增页面

Showing 31 changed files with 1385 additions and 205 deletions
src/main/java/com/bsth/data/pilot80/PilotReport.java
1 package com.bsth.data.pilot80; 1 package com.bsth.data.pilot80;
2 2
  3 +import com.alibaba.fastjson.JSON;
3 import com.alibaba.fastjson.JSONObject; 4 import com.alibaba.fastjson.JSONObject;
4 import com.bsth.data.BasicData; 5 import com.bsth.data.BasicData;
5 import com.bsth.data.LineConfigData; 6 import com.bsth.data.LineConfigData;
@@ -23,7 +24,10 @@ import org.slf4j.LoggerFactory; @@ -23,7 +24,10 @@ import org.slf4j.LoggerFactory;
23 import org.springframework.beans.factory.annotation.Autowired; 24 import org.springframework.beans.factory.annotation.Autowired;
24 import org.springframework.stereotype.Component; 25 import org.springframework.stereotype.Component;
25 26
26 -import java.util.*; 27 +import java.util.ArrayList;
  28 +import java.util.Collection;
  29 +import java.util.Date;
  30 +import java.util.List;
27 import java.util.concurrent.ConcurrentHashMap; 31 import java.util.concurrent.ConcurrentHashMap;
28 32
29 /** 33 /**
@@ -102,21 +106,11 @@ public class PilotReport { @@ -102,21 +106,11 @@ public class PilotReport {
102 } 106 }
103 break; 107 break;
104 //报警请求 108 //报警请求
105 - case 0x10:  
106 - try {  
107 - String url = systemParamService.getValue("url.yjbj")+"dataDockingApi/accident/saveAccident?";  
108 - url = url + "accidentTime=" + new Date().getTime() + "&nbbm=" + nbbm;  
109 - logger.info("url===="+url);  
110 - String res = HttpClientUtils.get(url).toString();  
111 - JSONObject jsonObject = JSONObject.parseObject(res);  
112 - if ((int) jsonObject.get("code") == 200) {  
113 - logger.info("报警请求成功");  
114 - }else {  
115 - logger.info("报警请求失败");  
116 - }  
117 - }catch (Exception e){  
118 - logger.info("报警请求异常");  
119 - } 109 + case 0x21:
  110 + case 0x22:
  111 + case 0x23:
  112 + case 0x24:
  113 + yjbj(nbbm,d80);
120 break; 114 break;
121 } 115 }
122 116
@@ -132,6 +126,38 @@ public class PilotReport { @@ -132,6 +126,38 @@ public class PilotReport {
132 } 126 }
133 } 127 }
134 128
  129 + public void yjbj(String nbbm,D80 d80){
  130 + try {
  131 + ScheduleRealInfo sch = null;
  132 + if (d80.getSchId() == null){
  133 + return;
  134 + }
  135 + if (d80.getData().getStopNo() != null && !d80.getData().getStopNo().equals("")){
  136 + d80.setStationName(BasicData.stationCode2NameMap.get(d80.getData().getStopNo()));
  137 + }
  138 +
  139 + sch = dayOfSchedule.get(d80.getSchId());
  140 + Long nextschid = dayOfSchedule.nextByLp(sch).getId();
  141 + d80.setNextschId(nextschid);
  142 + String url = systemParamService.getValue("url.yjbj")+"dataDockingApi/accident/saveAccident?";
  143 + url = url + "accidentTime=" + new Date().getTime() + "&nbbm=" + nbbm +"&requestCode=" +d80.getData().getRequestCode()
  144 + +"&lineName=" +sch.getXlName()+"&jsy=" +sch.getjGh()+"&jsName=" +sch.getjName()+"&lon=" +d80.getData().getLon()+"&lat="+d80.getData().getLat();
  145 +
  146 + logger.info("url===="+url);
  147 + StringBuilder sb = HttpClientUtils.get(url);
  148 +
  149 +
  150 + JSONObject jsonObject = JSON.parseObject(sb.toString());
  151 + if ((int) jsonObject.get("code") == 200) {
  152 + logger.info("报警请求成功=" + jsonObject.get("msg"));
  153 + }else {
  154 + logger.info("报警请求失败="+ jsonObject.get("msg"));
  155 + }
  156 + }catch (Exception e){
  157 + logger.info("报警请求异常",e);
  158 + }
  159 + }
  160 +
135 public void report(DC0_A4 c0a4) { 161 public void report(DC0_A4 c0a4) {
136 String deviceId = c0a4.getData().getDeviceId(); 162 String deviceId = c0a4.getData().getDeviceId();
137 if (StringUtils.isNotEmpty(deviceId)) 163 if (StringUtils.isNotEmpty(deviceId))
src/main/java/com/bsth/data/zndd/AutomaticSch.java
@@ -29,8 +29,6 @@ import org.springframework.stereotype.Component; @@ -29,8 +29,6 @@ import org.springframework.stereotype.Component;
29 import java.text.ParseException; 29 import java.text.ParseException;
30 import java.text.SimpleDateFormat; 30 import java.text.SimpleDateFormat;
31 import java.util.*; 31 import java.util.*;
32 -import java.util.concurrent.ConcurrentHashMap;  
33 -import java.util.concurrent.ConcurrentMap;  
34 import java.util.regex.Matcher; 32 import java.util.regex.Matcher;
35 import java.util.regex.Pattern; 33 import java.util.regex.Pattern;
36 34
@@ -62,20 +60,16 @@ public class AutomaticSch { @@ -62,20 +60,16 @@ public class AutomaticSch {
62 @Autowired 60 @Autowired
63 ZnddYuAnService znddYuAnService; 61 ZnddYuAnService znddYuAnService;
64 62
65 - Queue<Map> queue = new LinkedList<>();  
66 -  
67 private static SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH:mm"); 63 private static SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH:mm");
68 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm"); 64 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
69 65
70 private static Comparator<ScheduleRealInfo> cpm = new ScheduleComparator.DFSJ2(); 66 private static Comparator<ScheduleRealInfo> cpm = new ScheduleComparator.DFSJ2();
71 private Map<String,Long> drivreMap =new HashMap<>(); //自动重发map 67 private Map<String,Long> drivreMap =new HashMap<>(); //自动重发map
72 - // 当日60指令缓存  
73 - private ConcurrentMap<Integer, D60> d60Map = new ConcurrentHashMap<>();//d60map  
74 68
75 - String urldkl = "http://10.10.200.202:5580/monitor/api/getMonitorInfoByDay?key=1&solt=1111&t=1&dayStr=2024-10-23"; //大间隔接口 69 + String urldkl = "http://10.10.200.202:5580/monitor/api/getMonitorInfoByDay?key=1&solt=1111&t=1&dayStr=2024-12-04"; //大间隔接口
76 70
77 //http://10.10.200.201:8083/wxk-prod-api/service-api/lggj/schedule/drByInfo 维修接口 71 //http://10.10.200.201:8083/wxk-prod-api/service-api/lggj/schedule/drByInfo 维修接口
78 - 72 + String urldkls = "http://10.10.200.140:13089/bsth_passengerflow/klbus/currentInsideNum.do"; //满载接口
79 private Map<String,Long> SFMAP = new HashMap<>(); 73 private Map<String,Long> SFMAP = new HashMap<>();
80 74
81 //满载 75 //满载
@@ -84,6 +78,9 @@ public class AutomaticSch { @@ -84,6 +78,9 @@ public class AutomaticSch {
84 78
85 List<ScheduleRealInfo> sr = dayOfSchedule.findByBcType("W9G-041","normal"); 79 List<ScheduleRealInfo> sr = dayOfSchedule.findByBcType("W9G-041","normal");
86 ts(addStationPeople(sr.get(5), "MZ", 0L));//第二种 设备未离线 出站时间内未出站 80 ts(addStationPeople(sr.get(5), "MZ", 0L));//第二种 设备未离线 出站时间内未出站
  81 +
  82 + String chartStr = JSON.toJSONString(sr.get(5));
  83 + logger.info("满载--"+chartStr);
87 } 84 }
88 catch (Exception e){ 85 catch (Exception e){
89 logger.error("满载------------------",e); 86 logger.error("满载------------------",e);
@@ -109,10 +106,14 @@ public class AutomaticSch { @@ -109,10 +106,14 @@ public class AutomaticSch {
109 if (k == 0 ){ 106 if (k == 0 ){
110 if(lg.getlGType() == 0){ 107 if(lg.getlGType() == 0){
111 ts(ConvertDJK(lg,sch,"FCJG")); 108 ts(ConvertDJK(lg,sch,"FCJG"));
  109 + String chartStr = JSON.toJSONString(sch);
  110 + logger.info("发车大间隔--"+chartStr);
112 } 111 }
113 }else { 112 }else {
114 if(lg.getlGType() != 0){ 113 if(lg.getlGType() != 0){
115 ts(ConvertDJK(lg,sch,"DJG")); 114 ts(ConvertDJK(lg,sch,"DJG"));
  115 + String chartStr = JSON.toJSONString(sch);
  116 + logger.info("行车大间隔--"+chartStr);
116 } 117 }
117 } 118 }
118 119
@@ -122,28 +123,6 @@ public class AutomaticSch { @@ -122,28 +123,6 @@ public class AutomaticSch {
122 logger.error("大间隔推送失败------------------",e); 123 logger.error("大间隔推送失败------------------",e);
123 } 124 }
124 } 125 }
125 - //发现大客流 -> 大客流情况 ->处置大客流  
126 - public void Dkl(){  
127 - //推送  
128 -  
129 - try{  
130 - Map m = queue.poll();  
131 - if (m != null) {  
132 - if (Integer.valueOf(m.get("num").toString()) > 15) {  
133 - //超过10的时候 判断为大客流  
134 - ts(ConvertDKL(m));  
135 - }  
136 - }  
137 -  
138 - ScheduleRealInfo sr = dayOfSchedule.findByNbbm("W8A-027").get(0);  
139 - ts(addStationPeople(sr, "DKL", 0L));//大客流  
140 -  
141 -  
142 - }catch (Exception e){  
143 - logger.error("大客流推送失败------------------",e);  
144 - }  
145 -  
146 - }  
147 126
148 //实发未发检测 -- 车辆GPS掉线的情况下,车辆该出站了 127 //实发未发检测 -- 车辆GPS掉线的情况下,车辆该出站了
149 /** 128 /**
@@ -336,10 +315,9 @@ public class AutomaticSch { @@ -336,10 +315,9 @@ public class AutomaticSch {
336 for (Map m : dzList){ 315 for (Map m : dzList){
337 if (basicData.nbbmCompanyPlateMap.get(prev.getClZbh()) != null && m.get("terminal").equals(basicData.nbbmCompanyPlateMap.get(prev.getClZbh()).replaceAll("-",""))){ 316 if (basicData.nbbmCompanyPlateMap.get(prev.getClZbh()) != null && m.get("terminal").equals(basicData.nbbmCompanyPlateMap.get(prev.getClZbh()).replaceAll("-",""))){
338 sch.setRemark(m.get("sj").toString()); 317 sch.setRemark(m.get("sj").toString());
339 - Gson gson = new Gson();  
340 - String chartStr = gson.toJsonTree(sch).toString();  
341 - logger.info("误点--"+chartStr);  
342 ts(addStationPeople(sch, "WD", 0L)); 318 ts(addStationPeople(sch, "WD", 0L));
  319 + String chartStr = JSON.toJSONString(sch);
  320 + logger.info("误点--"+chartStr);
343 } 321 }
344 } 322 }
345 } 323 }
src/main/java/com/bsth/data/zndd/OutEntrance.java
@@ -23,17 +23,12 @@ import org.springframework.dao.DataAccessException; @@ -23,17 +23,12 @@ import org.springframework.dao.DataAccessException;
23 import org.springframework.jdbc.core.JdbcTemplate; 23 import org.springframework.jdbc.core.JdbcTemplate;
24 import org.springframework.scheduling.annotation.Scheduled; 24 import org.springframework.scheduling.annotation.Scheduled;
25 import org.springframework.web.bind.annotation.*; 25 import org.springframework.web.bind.annotation.*;
26 -import javax.annotation.PostConstruct; 26 +
27 import java.io.*; 27 import java.io.*;
28 import java.nio.file.Files; 28 import java.nio.file.Files;
29 import java.nio.file.Path; 29 import java.nio.file.Path;
30 import java.nio.file.Paths; 30 import java.nio.file.Paths;
31 import java.nio.file.StandardCopyOption; 31 import java.nio.file.StandardCopyOption;
32 -  
33 -import java.io.ByteArrayInputStream;  
34 -import java.io.File;  
35 -import java.io.FileOutputStream;  
36 -import java.io.InputStream;  
37 import java.text.SimpleDateFormat; 32 import java.text.SimpleDateFormat;
38 import java.time.Duration; 33 import java.time.Duration;
39 import java.time.LocalDateTime; 34 import java.time.LocalDateTime;
@@ -60,9 +55,8 @@ public class OutEntrance { @@ -60,9 +55,8 @@ public class OutEntrance {
60 55
61 @Value("${dc.imgurl}") 56 @Value("${dc.imgurl}")
62 private String imgurl; //存储图片地址 57 private String imgurl; //存储图片地址
63 -  
64 - @Value("${dc.profile}")  
65 - private String profile; //存储图片地址*/ 58 +
  59 + private String profile = "profile"; //存储图片地址*/
66 60
67 @Value("${baidu.ak}") 61 @Value("${baidu.ak}")
68 private String ak; //百度api秘钥*/ 62 private String ak; //百度api秘钥*/
src/main/java/com/bsth/data/zndd/ZnddThread.java
@@ -45,11 +45,8 @@ public class ZnddThread extends Thread{ @@ -45,11 +45,8 @@ public class ZnddThread extends Thread{
45 static Map<String,List> ZNDDTYPEMAP = new HashMap<>(); //已经推送过的检测 45 static Map<String,List> ZNDDTYPEMAP = new HashMap<>(); //已经推送过的检测
46 46
47 47
48 - String url = "https://lgapp.bsth.tech:13089/bsth_passengerflow/klbus/currentInsideNum.do"; //车内客流接口  
49 48
50 49
51 - String urldkl = "http://10.10.200.140:13089/bsth_passengerflow/klbus/currentInsideNum.do"; //大客流接口  
52 -  
53 private static SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH:mm"); 50 private static SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH:mm");
54 private static SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"); 51 private static SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd");
55 private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 52 private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
@@ -64,7 +61,7 @@ public class ZnddThread extends Thread{ @@ -64,7 +61,7 @@ public class ZnddThread extends Thread{
64 //automaticSch.mz(); 61 //automaticSch.mz();
65 //automaticSch.dfTz();//大间隔 62 //automaticSch.dfTz();//大间隔
66 for (znddStatus zs : znddStatusList) { 63 for (znddStatus zs : znddStatusList) {
67 - if (zs.getOpenStatus().equals("0")) { 64 + if (zs.getOpenStatus() != null && zs.getOpenStatus().equals("0")) {
68 //预案5个 65 //预案5个
69 if (zs.getType().equals("fcjg")) { 66 if (zs.getType().equals("fcjg")) {
70 automaticSch.dfTz(0); 67 automaticSch.dfTz(0);
@@ -91,11 +88,6 @@ public class ZnddThread extends Thread{ @@ -91,11 +88,6 @@ public class ZnddThread extends Thread{
91 automaticSch.dfTz(1); 88 automaticSch.dfTz(1);
92 logger.info("行车大间隔执行完毕"); 89 logger.info("行车大间隔执行完毕");
93 } 90 }
94 -  
95 - if (zs.getType().equals("dkl")){  
96 - automaticSch.Dkl();  
97 - logger.info("大客流执行完毕");  
98 - }  
99 if (zs.getType().equals("mz")){ 91 if (zs.getType().equals("mz")){
100 automaticSch.mz(); 92 automaticSch.mz();
101 logger.info("满载执行完毕"); 93 logger.info("满载执行完毕");
src/main/java/com/bsth/entity/directive/D80.java
@@ -6,6 +6,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; @@ -6,6 +6,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
6 import javax.persistence.*; 6 import javax.persistence.*;
7 import java.util.Date; 7 import java.util.Date;
8 8
  9 +import static javax.persistence.FetchType.LAZY;
  10 +
9 /** 11 /**
10 * 12 *
11 * @ClassName: D80 13 * @ClassName: D80
@@ -47,7 +49,7 @@ public class D80 { @@ -47,7 +49,7 @@ public class D80 {
47 /** 49 /**
48 * c0 回复 50 * c0 回复
49 */ 51 */
50 - @OneToOne(cascade = CascadeType.ALL, fetch=FetchType.LAZY) 52 + @OneToOne(cascade = CascadeType.ALL, fetch= LAZY)
51 private DC0 c0; 53 private DC0 c0;
52 54
53 /** 调度员是否确认 */ 55 /** 调度员是否确认 */
@@ -78,6 +80,7 @@ public class D80 { @@ -78,6 +80,7 @@ public class D80 {
78 @JsonIgnore 80 @JsonIgnore
79 private Short requestCode; 81 private Short requestCode;
80 82
  83 +
81 public Long getSchId() { 84 public Long getSchId() {
82 return schId; 85 return schId;
83 } 86 }
@@ -110,6 +113,30 @@ public class D80 { @@ -110,6 +113,30 @@ public class D80 {
110 this.requestCode = requestCode; 113 this.requestCode = requestCode;
111 } 114 }
112 115
  116 + @Transient
  117 + @JsonIgnore
  118 + private String stationName;
  119 + @Transient
  120 + @JsonIgnore
  121 + private Long nextschId;
  122 +
  123 + public Long getNextschId() {
  124 + return nextschId;
  125 + }
  126 +
  127 + public void setNextschId(Long nextschId) {
  128 + this.nextschId = nextschId;
  129 + }
  130 +
  131 + public String getStationName() {
  132 + return stationName;
  133 + }
  134 +
  135 + public void setStationName(String stationName) {
  136 + this.stationName = stationName;
  137 + }
  138 +
  139 +
113 @Embeddable 140 @Embeddable
114 public static class D80Data { 141 public static class D80Data {
115 142
@@ -121,6 +148,9 @@ public class D80 { @@ -121,6 +148,9 @@ public class D80 {
121 /** 148 /**
122 * 请求代码 0xa1 恢复运营 0xa2 申请调档 0xa3 出场请求 0xa5 进场请求 0xa7 加油请求 0x50 车辆故障 0x70 149 * 请求代码 0xa1 恢复运营 0xa2 申请调档 0xa3 出场请求 0xa5 进场请求 0xa7 加油请求 0x50 车辆故障 0x70
123 * 路阻报告 0x60 事故报告 0x11 扣证纠纷 0x12 报警 0x10 S0S 150 * 路阻报告 0x60 事故报告 0x11 扣证纠纷 0x12 报警 0x10 S0S
  151 + * 0x21 单车有人伤 0x22 单车无人伤
  152 + * 0x23 双车有人伤 0x24 双车无人伤
  153 + *
124 */ 154 */
125 private Short requestCode; 155 private Short requestCode;
126 156
@@ -134,7 +164,48 @@ public class D80 { @@ -134,7 +164,48 @@ public class D80 {
134 */ 164 */
135 @Transient 165 @Transient
136 private String nbbm; 166 private String nbbm;
137 - 167 + /**
  168 + * 经度
  169 + */
  170 + @Transient
  171 + @JsonIgnore
  172 + private Float lon;
  173 +
  174 + /**
  175 + * 纬度
  176 + */
  177 + @Transient
  178 + @JsonIgnore
  179 + private Float lat;
  180 + @Transient
  181 + @JsonIgnore
  182 + private String stopNo;
  183 +
  184 +
  185 + public String getStopNo() {
  186 + return stopNo;
  187 + }
  188 +
  189 + public void setStopNo(String stopNo) {
  190 + this.stopNo = stopNo;
  191 + }
  192 +
  193 + public Float getLon() {
  194 + return lon;
  195 + }
  196 +
  197 + public void setLon(Float lon) {
  198 + this.lon = lon;
  199 + }
  200 +
  201 + public Float getLat() {
  202 + return lat;
  203 + }
  204 +
  205 + public void setLat(Float lat) {
  206 + this.lat = lat;
  207 + }
  208 +
138 public Short getOperCode2() { 209 public Short getOperCode2() {
139 return operCode2; 210 return operCode2;
140 } 211 }
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
1 package com.bsth.service.realcontrol.impl; 1 package com.bsth.service.realcontrol.impl;
2 2
3 -import java.io.*;  
4 -import java.lang.reflect.Field;  
5 -import java.math.BigDecimal;  
6 -import java.net.HttpURLConnection;  
7 -import java.net.MalformedURLException;  
8 -import java.net.URL;  
9 -import java.sql.ResultSet;  
10 -import java.sql.SQLException;  
11 -import java.text.DecimalFormat;  
12 -import java.text.ParseException;  
13 -import java.text.SimpleDateFormat;  
14 -import java.time.LocalDate;  
15 -import java.util.ArrayList;  
16 -import java.util.Calendar;  
17 -import java.util.Collection;  
18 -import java.util.Collections;  
19 -import java.util.Comparator;  
20 -import java.util.Date;  
21 -import java.util.GregorianCalendar;  
22 -import java.util.HashMap;  
23 -import java.util.HashSet;  
24 -import java.util.Iterator;  
25 -import java.util.List;  
26 -import java.util.Map;  
27 -import java.util.Queue;  
28 -import java.util.Set;  
29 -import java.util.concurrent.*;  
30 -import java.util.regex.Pattern;  
31 -  
32 -import com.bsth.data.SystemParamCache;  
33 -import com.bsth.data.zndd.OutEntrance;  
34 -import com.bsth.entity.zndd.LoggerZndd;  
35 -import com.bsth.repository.zndd.LoggerZnddRepository;  
36 -import org.apache.commons.io.IOUtils;  
37 -import org.apache.commons.lang3.StringEscapeUtils;  
38 -import org.apache.commons.lang3.StringUtils;  
39 -import org.joda.time.format.DateTimeFormat;  
40 -import org.joda.time.format.DateTimeFormatter;  
41 -import org.slf4j.Logger;  
42 -import org.slf4j.LoggerFactory;  
43 -import org.springframework.beans.factory.DisposableBean;  
44 -import org.springframework.beans.factory.InitializingBean;  
45 -import org.springframework.beans.factory.annotation.Autowired;  
46 -import org.springframework.jdbc.core.BeanPropertyRowMapper;  
47 -import org.springframework.jdbc.core.JdbcTemplate;  
48 -import org.springframework.jdbc.core.RowMapper;  
49 -import org.springframework.stereotype.Service;  
50 -import org.springframework.transaction.annotation.Transactional;  
51 -  
52 import com.alibaba.fastjson.JSON; 3 import com.alibaba.fastjson.JSON;
53 import com.alibaba.fastjson.JSONArray; 4 import com.alibaba.fastjson.JSONArray;
54 import com.alibaba.fastjson.JSONObject; 5 import com.alibaba.fastjson.JSONObject;
@@ -60,6 +11,7 @@ import com.bsth.controller.realcontrol.dto.LpData; @@ -60,6 +11,7 @@ import com.bsth.controller.realcontrol.dto.LpData;
60 import com.bsth.data.BasicData; 11 import com.bsth.data.BasicData;
61 import com.bsth.data.LineConfigData; 12 import com.bsth.data.LineConfigData;
62 import com.bsth.data.Station2ParkBuffer; 13 import com.bsth.data.Station2ParkBuffer;
  14 +import com.bsth.data.SystemParamCache;
63 import com.bsth.data.schedule.DayOfSchedule; 15 import com.bsth.data.schedule.DayOfSchedule;
64 import com.bsth.data.schedule.SchAttrCalculator; 16 import com.bsth.data.schedule.SchAttrCalculator;
65 import com.bsth.data.schedule.ScheduleComparator; 17 import com.bsth.data.schedule.ScheduleComparator;
@@ -70,6 +22,7 @@ import com.bsth.data.schedule.edit_logs.loggers.FcxxwtLogger; @@ -70,6 +22,7 @@ import com.bsth.data.schedule.edit_logs.loggers.FcxxwtLogger;
70 import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto; 22 import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto;
71 import com.bsth.data.schedule.late_adjust.LateAdjustHandle; 23 import com.bsth.data.schedule.late_adjust.LateAdjustHandle;
72 import com.bsth.data.utils.CustomStringUtils; 24 import com.bsth.data.utils.CustomStringUtils;
  25 +import com.bsth.data.zndd.OutEntrance;
73 import com.bsth.entity.CarDevice; 26 import com.bsth.entity.CarDevice;
74 import com.bsth.entity.Cars; 27 import com.bsth.entity.Cars;
75 import com.bsth.entity.Line; 28 import com.bsth.entity.Line;
@@ -94,6 +47,7 @@ import com.bsth.entity.schedule.SchedulePlanInfo; @@ -94,6 +47,7 @@ import com.bsth.entity.schedule.SchedulePlanInfo;
94 import com.bsth.entity.sys.Dictionary; 47 import com.bsth.entity.sys.Dictionary;
95 import com.bsth.entity.sys.DutyEmployee; 48 import com.bsth.entity.sys.DutyEmployee;
96 import com.bsth.entity.sys.SysUser; 49 import com.bsth.entity.sys.SysUser;
  50 +import com.bsth.entity.zndd.LoggerZndd;
97 import com.bsth.repository.CarDeviceRepository; 51 import com.bsth.repository.CarDeviceRepository;
98 import com.bsth.repository.CarsRepository; 52 import com.bsth.repository.CarsRepository;
99 import com.bsth.repository.LineRepository; 53 import com.bsth.repository.LineRepository;
@@ -109,6 +63,7 @@ import com.bsth.repository.realcontrol.SvgAttributeRepository; @@ -109,6 +63,7 @@ import com.bsth.repository.realcontrol.SvgAttributeRepository;
109 import com.bsth.repository.schedule.CarConfigInfoRepository; 63 import com.bsth.repository.schedule.CarConfigInfoRepository;
110 import com.bsth.repository.schedule.EmployeeConfigInfoRepository; 64 import com.bsth.repository.schedule.EmployeeConfigInfoRepository;
111 import com.bsth.repository.schedule.GuideboardInfoRepository; 65 import com.bsth.repository.schedule.GuideboardInfoRepository;
  66 +import com.bsth.repository.zndd.LoggerZnddRepository;
112 import com.bsth.security.util.SecurityUtils; 67 import com.bsth.security.util.SecurityUtils;
113 import com.bsth.service.LineService; 68 import com.bsth.service.LineService;
114 import com.bsth.service.SectionRouteService; 69 import com.bsth.service.SectionRouteService;
@@ -121,15 +76,7 @@ import com.bsth.service.report.ReportService; @@ -121,15 +76,7 @@ import com.bsth.service.report.ReportService;
121 import com.bsth.service.schedule.SchedulePlanInfoService; 76 import com.bsth.service.schedule.SchedulePlanInfoService;
122 import com.bsth.service.sys.DictionaryService; 77 import com.bsth.service.sys.DictionaryService;
123 import com.bsth.service.sys.DutyEmployeeService; 78 import com.bsth.service.sys.DutyEmployeeService;
124 -import com.bsth.util.Arith;  
125 -import com.bsth.util.ComparableChild;  
126 -import com.bsth.util.ComparableLp;  
127 -import com.bsth.util.ComparableReal;  
128 -import com.bsth.util.DateUtils;  
129 -import com.bsth.util.ReportRelatedUtils;  
130 -import com.bsth.util.ReportUtils;  
131 -import com.bsth.util.TimeUtils;  
132 -import com.bsth.util.CoordinateConverter; 79 +import com.bsth.util.*;
133 import com.bsth.websocket.handler.SendUtils; 80 import com.bsth.websocket.handler.SendUtils;
134 import com.fasterxml.jackson.databind.ObjectMapper; 81 import com.fasterxml.jackson.databind.ObjectMapper;
135 import com.github.stuxuhai.jpinyin.PinyinException; 82 import com.github.stuxuhai.jpinyin.PinyinException;
@@ -137,6 +84,40 @@ import com.github.stuxuhai.jpinyin.PinyinFormat; @@ -137,6 +84,40 @@ import com.github.stuxuhai.jpinyin.PinyinFormat;
137 import com.github.stuxuhai.jpinyin.PinyinHelper; 84 import com.github.stuxuhai.jpinyin.PinyinHelper;
138 import com.google.common.base.Splitter; 85 import com.google.common.base.Splitter;
139 import com.google.common.collect.Lists; 86 import com.google.common.collect.Lists;
  87 +import org.apache.commons.io.IOUtils;
  88 +import org.apache.commons.lang3.StringEscapeUtils;
  89 +import org.apache.commons.lang3.StringUtils;
  90 +import org.joda.time.format.DateTimeFormat;
  91 +import org.joda.time.format.DateTimeFormatter;
  92 +import org.slf4j.Logger;
  93 +import org.slf4j.LoggerFactory;
  94 +import org.springframework.beans.factory.DisposableBean;
  95 +import org.springframework.beans.factory.InitializingBean;
  96 +import org.springframework.beans.factory.annotation.Autowired;
  97 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  98 +import org.springframework.jdbc.core.JdbcTemplate;
  99 +import org.springframework.jdbc.core.RowMapper;
  100 +import org.springframework.stereotype.Service;
  101 +import org.springframework.transaction.annotation.Transactional;
  102 +
  103 +import java.io.ByteArrayOutputStream;
  104 +import java.io.File;
  105 +import java.io.IOException;
  106 +import java.io.InputStream;
  107 +import java.lang.reflect.Field;
  108 +import java.math.BigDecimal;
  109 +import java.net.HttpURLConnection;
  110 +import java.net.MalformedURLException;
  111 +import java.net.URL;
  112 +import java.sql.ResultSet;
  113 +import java.sql.SQLException;
  114 +import java.text.DecimalFormat;
  115 +import java.text.ParseException;
  116 +import java.text.SimpleDateFormat;
  117 +import java.time.LocalDate;
  118 +import java.util.*;
  119 +import java.util.concurrent.*;
  120 +import java.util.regex.Pattern;
140 121
141 @Service 122 @Service
142 public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInfo, Long> 123 public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInfo, Long>
@@ -2483,6 +2464,10 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2483,6 +2464,10 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2483 typeMap.put("0x60", "事故报告"); 2464 typeMap.put("0x60", "事故报告");
2484 typeMap.put("0x11", "扣证纠纷"); 2465 typeMap.put("0x11", "扣证纠纷");
2485 typeMap.put("0x12", "报警"); 2466 typeMap.put("0x12", "报警");
  2467 + typeMap.put("0x21", "单车有人伤");
  2468 + typeMap.put("0x22", "单车无人伤");
  2469 + typeMap.put("0x23", "双车有人伤");
  2470 + typeMap.put("0x24", "双车无人伤");
2486 for (Map<String, Object> map1 : listMap) { 2471 for (Map<String, Object> map1 : listMap) {
2487 map1.put("requestText", typeMap.get(map1.get("requestType"))); 2472 map1.put("requestText", typeMap.get(map1.get("requestType")));
2488 } 2473 }
src/main/resources/static/pages/control/line/child_pages/deviceReport.html
@@ -91,7 +91,7 @@ @@ -91,7 +91,7 @@
91 ,$car = $('#deviceReportPanel #carSelect') 91 ,$car = $('#deviceReportPanel #carSelect')
92 ,$table = $('#deviceReportPanel table'); 92 ,$table = $('#deviceReportPanel table');
93 93
94 - var reqCodeMap = {0xA1: '请求恢复运营', 0xA2: '申请调档', 0xA3: '出场请求', 0xA5: '进场请求', 0xA7: '加油请求', 0x50: '车辆故障', 0x70: '路阻报告', 0x60: '事故报告', 0x11: '扣证纠纷', 0x12 : '报警'}; 94 + var reqCodeMap = {0xA1: '请求恢复运营', 0xA2: '申请调档', 0xA3: '出场请求', 0xA5: '进场请求', 0xA7: '加油请求', 0x50: '车辆故障', 0x70: '路阻报告', 0x60: '事故报告', 0x11: '扣证纠纷', 0x12 : '报警', 0x21: '单车有人伤', 0x22: '单车无人伤', 0x23: '双车有人伤', 0x24: '双车无人伤'};
95 95
96 var lineNameMap = JSON.parse(storage.getItem('lineIds')); 96 var lineNameMap = JSON.parse(storage.getItem('lineIds'));
97 //初始加载数据 97 //初始加载数据
src/main/resources/static/pages/control/line/index.html
@@ -281,7 +281,7 @@ $.get(&#39;/user/currentUser&#39;, function(user){ @@ -281,7 +281,7 @@ $.get(&#39;/user/currentUser&#39;, function(user){
281 //打个标记 281 //打个标记
282 storage.setItem('real_control_flag', 1); 282 storage.setItem('real_control_flag', 1);
283 283
284 -var reqCodeMap = {0xA1: '请求恢复运营', 0xA2: '申请调档', 0xA3: '出场请求', 0xA5: '进场请求', 0xA7: '加油请求', 0x50: '车辆故障', 0x70: '路阻报告', 0x60: '事故报告', 0x11: '扣证纠纷', 0x12 : '报警'}; 284 +var reqCodeMap = {0xA1: '请求恢复运营', 0xA2: '申请调档', 0xA3: '出场请求', 0xA5: '进场请求', 0xA7: '加油请求', 0x50: '车辆故障', 0x70: '路阻报告', 0x60: '事故报告', 0x11: '扣证纠纷', 0x12 : '报警', 0x21: '单车有人伤', 0x22: '单车无人伤', 0x23: '双车有人伤', 0x24: '双车无人伤'};
285 285
286 function _fadeOut($that){ 286 function _fadeOut($that){
287 $that.fadeOut('normal', function(){ 287 $that.fadeOut('normal', function(){
src/main/resources/static/pages/forms/statement/account.html
@@ -21,12 +21,12 @@ @@ -21,12 +21,12 @@
21 <h1>驾驶员请求台账</h1> 21 <h1>驾驶员请求台账</h1>
22 </div> 22 </div>
23 </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=""> 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;"> 30 <div style="display: inline-block;">
31 <span class="item-label" style="width: 80px;">线路: </span> 31 <span class="item-label" style="width: 80px;">线路: </span>
32 <select class="form-control" name="line" id="line" style="width: 180px;"></select> 32 <select class="form-control" name="line" id="line" style="width: 180px;"></select>
@@ -45,10 +45,10 @@ @@ -45,10 +45,10 @@
45 45
46 <input class="btn btn-default" type="button" id="query" value="筛选"/> 46 <input class="btn btn-default" type="button" id="query" value="筛选"/>
47 <input class="btn btn-default" type="button" id="export" value="导出"/> 47 <input class="btn btn-default" type="button" id="export" value="导出"/>
48 - </div>  
49 - </form>  
50 - </div>  
51 - <div class="portlet-body"> 48 + </div>
  49 + </form>
  50 + </div>
  51 + <div class="portlet-body">
52 <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px"> 52 <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
53 <table class="table table-bordered table-hover table-checkable" id="forms"> 53 <table class="table table-bordered table-hover table-checkable" id="forms">
54 <thead> 54 <thead>
@@ -65,25 +65,25 @@ @@ -65,25 +65,25 @@
65 65
66 </tbody> 66 </tbody>
67 </table> 67 </table>
68 - </div>  
69 - </div>  
70 - </div>  
71 - </div>  
72 -</div>  
73 -  
74 -<script> 68 + </div>
  69 + </div>
  70 + </div>
  71 + </div>
  72 +</div>
  73 +
  74 +<script>
75 $(function(){ 75 $(function(){
76 $("#export").attr('disabled',"true"); 76 $("#export").attr('disabled',"true");
77 77
78 78
79 - var reqCodeMap = {"0xA1": '请求恢复运营', "0xA2": '申请调档', "0xA3": '出场请求', "0xA5": '进场请求', "0xA7": '加油请求', "0x50": '车辆故障', "0x70": '路阻报告', "0x60": '事故报告', "0x11": '扣证纠纷', "0x12" : '报警'};  
80 - // 关闭左侧栏  
81 - if (!$('body').hasClass('page-sidebar-closed')) 79 + var reqCodeMap = {"0xA1": '请求恢复运营', "0xA2": '申请调档', "0xA3": '出场请求', "0xA5": '进场请求', "0xA7": '加油请求', "0x50": '车辆故障', "0x70": '路阻报告', "0x60": '事故报告', "0x11": '扣证纠纷', "0x12" : '报警', 0x21: '单车有人伤', 0x22: '单车无人伤', 0x23: '双车有人伤', 0x24: '双车无人伤'};
  80 + // 关闭左侧栏
  81 + if (!$('body').hasClass('page-sidebar-closed'))
82 $('.menu-toggler.sidebar-toggler').click(); 82 $('.menu-toggler.sidebar-toggler').click();
83 -  
84 - $("#date").datetimepicker({  
85 - format : 'YYYY-MM-DD',  
86 - locale : 'zh-cn' 83 +
  84 + $("#date").datetimepicker({
  85 + format : 'YYYY-MM-DD',
  86 + locale : 'zh-cn'
87 }); 87 });
88 88
89 /* $.get('/basic/lineCode2Name',function(result){ 89 /* $.get('/basic/lineCode2Name',function(result){
@@ -229,23 +229,23 @@ @@ -229,23 +229,23 @@
229 +"-"+xlName+"-驾驶员请求台账"); 229 +"-"+xlName+"-驾驶员请求台账");
230 }); 230 });
231 }); 231 });
232 -  
233 - });  
234 -</script>  
235 -<script type="text/html" id="list_account">  
236 - {{each list as obj i}}  
237 - <tr> 232 +
  233 + });
  234 +</script>
  235 +<script type="text/html" id="list_account">
  236 + {{each list as obj i}}
  237 + <tr>
238 <td>{{i+1}}</td> 238 <td>{{i+1}}</td>
239 <td>{{obj.xlName}}</td> 239 <td>{{obj.xlName}}</td>
240 <td>{{obj.clZbh}}</td> 240 <td>{{obj.clZbh}}</td>
241 <td>{{obj.company}}</td> 241 <td>{{obj.company}}</td>
242 <td>{{obj.requestType}}</td> 242 <td>{{obj.requestType}}</td>
243 - <td>{{obj.requestTime}}</td>  
244 - </tr> 243 + <td>{{obj.requestTime}}</td>
  244 + </tr>
245 {{/each}} 245 {{/each}}
246 {{if list.length == 0}} 246 {{if list.length == 0}}
247 <tr> 247 <tr>
248 <td colspan="6"><h6 class="muted">没有找到相关数据</h6></td> 248 <td colspan="6"><h6 class="muted">没有找到相关数据</h6></td>
249 </tr> 249 </tr>
250 - {{/if}} 250 + {{/if}}
251 </script> 251 </script>
252 \ No newline at end of file 252 \ No newline at end of file
src/main/resources/static/pages/forms/statement/daily_yanshou.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; margin-left: 33px;" id="gsdmDiv_daily">
  31 + <span class="item-label" style="width: 80px;">公司: </span>
  32 + <select class="form-control" name="company" id="gsdmDaily" style="width: 180px;"></select>
  33 + </div>
  34 + <div style="display: inline-block; margin-left: 24px;" id="fgsdmDiv_daily">
  35 + <span class="item-label" style="width: 80px;">分公司: </span>
  36 + <select class="form-control" name="subCompany" id="fgsdmDaily" style="width: 180px;"></select>
  37 + </div>
  38 + <div style="margin-top: 2px"></div>
  39 + <div style="display: inline-block;margin-left: 33px;">
  40 + <span class="item-label" style="width: 80px;">线路: </span>
  41 + <select class="form-control" name="line" id="line" style="width: 180px;"></select>
  42 + </div>
  43 + <div style="display: inline-block;margin-left: 24px;">
  44 + <span class="item-label" style="width: 80px;">&nbsp;时间: </span>
  45 + <input class="form-control" type="text" id="date" style="width: 180px;"/>
  46 + </div>
  47 + <div class="form-group">
  48 + <input class="btn btn-default" type="button" id="query" value="筛选"/>
  49 + <input class="btn btn-default" type="button" id="export" value="导出"/>
  50 + </div>
  51 + </form>
  52 + </div>
  53 + <div class="portlet-body">
  54 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 906px">
  55 + <table class="table table-bordered table-hover table-checkable" id="forms">
  56 + <thead>
  57 + <tr>
  58 + <th colspan="8">调度班次日报</th>
  59 + </tr>
  60 + <tr>
  61 + <td>路线:</td>
  62 + <td colspan="2"><span id="form_line">&nbsp;</span></td>
  63 + <td>时间:</td>
  64 + <td colspan="4"><span id="form_date">&nbsp;</span></td>
  65 + </tr>
  66 + <tr>
  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 id="tbody">
  78 +
  79 + </tbody>
  80 + <tr>
  81 + <td colspan="3">小计</td>
  82 + <td><span id="total_zgl">&nbsp;</span></td>
  83 + <td><span id="total_ks">&nbsp;</span></td>
  84 + <td><span id="total_yh">&nbsp;</span></td>
  85 + <td><span id="total_bc">&nbsp;</span></td>
  86 + </tr>
  87 + </table>
  88 + </div>
  89 + </div>
  90 + </div>
  91 + </div>
  92 +</div>
  93 +
  94 +<script>
  95 + $(function(){
  96 +
  97 + // 关闭左侧栏
  98 + if (!$('body').hasClass('page-sidebar-closed'))
  99 + $('.menu-toggler.sidebar-toggler').click();
  100 +
  101 + $("#date").datetimepicker({
  102 + format : 'YYYY-MM-DD',
  103 + locale : 'zh-cn'
  104 + });
  105 + var fage=false;
  106 + var xlList;
  107 + var obj = [];
  108 +
  109 +
  110 + $.get('/report/lineList',function(result){
  111 + xlList=result;
  112 + $.get('/user/companyData', function(result){
  113 + obj = result;
  114 + var options = '';
  115 + for(var i = 0; i < obj.length; i++){
  116 + options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>';
  117 + }
  118 +
  119 + if(obj.length ==0){
  120 + $("#gsdmDiv_daily").css('display','none');
  121 + }else if(obj.length ==1){
  122 + $("#gsdmDiv_daily").css('display','none');
  123 + if(obj[0].children.length == 1 || obj[0].children.length ==0)
  124 + $('#fgsdmDiv_daily').css('display','none');
  125 + }
  126 + $('#gsdmDaily').html(options);
  127 + updateCompany();
  128 + });
  129 + })
  130 + $("#gsdmDaily").on("change",updateCompany);
  131 + function updateCompany(){
  132 + var company = $('#gsdmDaily').val();
  133 + var options = '';
  134 + for(var i = 0; i < obj.length; i++){
  135 + if(obj[i].companyCode == company){
  136 + var children = obj[i].children;
  137 + for(var j = 0; j < children.length; j++){
  138 + options += '<option value="'+children[j].code+'">'+children[j].name+'</option>';
  139 + }
  140 + }
  141 + }
  142 + $('#fgsdmDaily').html(options);
  143 + }
  144 +
  145 + var tempData = {};
  146 + $.get('/report/lineList',function(xlList){
  147 + var data = [];
  148 +// data.push({id: " ", text: "全部线路"});
  149 + $.get('/user/companyData', function(result){
  150 + for(var i = 0; i < result.length; i++){
  151 + var companyCode = result[i].companyCode;
  152 + var children = result[i].children;
  153 + for(var j = 0; j < children.length; j++){
  154 + var code = children[j].code;
  155 + for(var k=0;k < xlList.length;k++ ){
  156 + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){
  157 + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]});
  158 + tempData[xlList[k]["xlbm"]] = companyCode+":"+code;
  159 + }
  160 + }
  161 + }
  162 + }
  163 + initPinYinSelect2('#line',data,'');
  164 +
  165 + });
  166 + });
  167 +
  168 + $("#line").on("change", function(){
  169 + if($("#line").val() == " "){
  170 + $("#gsdmDaily").attr("disabled", false);
  171 + $("#fgsdmDaily").attr("disabled", false);
  172 + } else {
  173 + var temp = (tempData[$("#line").val()] ? tempData[$("#line").val()] : " : ").split(":");
  174 + $("#gsdmDaily").val(temp[0]);
  175 + updateCompany();
  176 + $("#fgsdmDaily").val(temp[1]);
  177 + $("#gsdmDaily").attr("disabled", true);
  178 + $("#fgsdmDaily").attr("disabled", true);
  179 + }
  180 + });
  181 +
  182 +
  183 + var line;
  184 + var date;
  185 + var gsdmDaily;
  186 + var fgsdmDaily;
  187 + var lineName=$("#select2-line-container").html();
  188 + $("#query").on("click",function(){
  189 + if($("#date").val() == null || $("#date").val().trim().length == 0){
  190 + layer.msg("请选择时间");
  191 + return;
  192 + }
  193 + line = $("#line").val();
  194 + date = $("#date").val();
  195 + gsdmDaily=$("#gsdmDaily").val();
  196 + fgsdmDaily = $("#fgsdmDaily").val();
  197 + lineName=$("#select2-line-container").html();
  198 + var i = layer.load(2);
  199 + $get('/mcy_forms/daily',{gsdmDaily:gsdmDaily,fgsdmDaily:fgsdmDaily, line:line,date:date,type:'query'},function(result){
  200 + $("#form_line").text(lineName);
  201 + $("#form_date").text(date);
  202 + // 把数据填充到模版中
  203 + var tbodyHtml = template('dailyInfo',{list:result});
  204 + // 把渲染好的模版html文本追加到表格中
  205 + $('#tbody').html(tbodyHtml);
  206 + layer.close(i);
  207 +
  208 + line = $("#line").val();
  209 + startDate = $("#startDate").val();
  210 + endDate = $("#endDate").val();
  211 + $("#sDate").text(startDate);
  212 + $("#eDate").text(endDate);
  213 +
  214 + var total_zgl = 0,total_ks = 0;
  215 + var total_yh = 0,total_bc = 0;
  216 +
  217 + $.each(result, function(i, obj) {
  218 + total_zgl +=Number(obj.zlc*10000);
  219 + total_ks +=Number(obj.jzl1*10000);
  220 + total_yh += Number(obj.yh*10000);
  221 + total_bc += Number(obj.bc);
  222 +
  223 + });
  224 + $("#total_zgl").text((total_zgl/10000).toFixed(3));
  225 + $("#total_ks").text((total_ks/10000).toFixed(3));
  226 + $("#total_yh").text((total_yh/10000).toFixed(2));
  227 + $("#total_bc").text(total_bc.toFixed(0));
  228 +
  229 + var temp = {};
  230 + var today_account = 0;
  231 +
  232 + temp["line"] = $("#line").text();
  233 + $.each(result, function(i, obj) {
  234 + if(moment(obj.schedule_date_str).format("YYYY-MM-DD") == moment(obj.startDate).format("YYYY-MM-DD")){
  235 + today_account++;
  236 + }
  237 + obj.updateDate = moment(obj.startDate).format("YYYY-MM-DD HH:mm:ss");
  238 + });
  239 + })
  240 + });
  241 +
  242 + $("#export").on("click",function(){
  243 + if($("#date").val() == null || $("#date").val().trim().length == 0){
  244 + layer.msg("请选择时间");
  245 + return;
  246 + }
  247 + line = $("#line").val();
  248 + date = $("#date").val();
  249 + gsdmDaily=$("#gsdmDaily").val();
  250 + fgsdmDaily = $("#fgsdmDaily").val();
  251 + lineName=$("#select2-line-container").html();
  252 + var i = layer.load(2);
  253 + $post('/mcy_export/dailyExport',{gsdmDaily:gsdmDaily,fgsdmDaily:fgsdmDaily,line:line,date:date,type:'export',lineName:lineName},function(result){
  254 + window.open("/downloadFile/download?fileName="
  255 + +moment(date).format("YYYYMMDD")+"-"+lineName+"-班次日报表");
  256 + layer.close(i);
  257 + });
  258 + });
  259 +});
  260 +</script>
  261 +<script type="text/html" id="dailyInfo">
  262 + {{each list as obj i}}
  263 + <tr>
  264 + <td>{{obj.zbh}}</td>
  265 + <td>{{obj.jgh}}</td>
  266 + <td>{{obj.jName}}</td>
  267 + <td>{{obj.zlc}}</td>
  268 + <td>{{obj.jzl1}}</td>
  269 + <td>{{obj.yh}}</td>
  270 + <td>{{obj.bc}}</td>
  271 + <td>
  272 +
  273 + {{if obj.bc > 5}}
  274 + {{obj.bc % 5}}
  275 + {{else}}
  276 + 0
  277 + {{/if}}
  278 +
  279 + </td>
  280 + </tr>
  281 + {{/each}}
  282 + {{if list.length == 0}}
  283 + <tr>
  284 + <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td>
  285 + </tr>
  286 + {{/if}}
  287 +</script>
0 \ No newline at end of file 288 \ No newline at end of file
src/main/resources/static/pages/mforms/linepassengerflows/linepassengerflow.html
@@ -72,7 +72,7 @@ @@ -72,7 +72,7 @@
72 72
73 <script> 73 <script>
74 $(function(){ 74 $(function(){
75 - var reqCodeMap = {"0xA1": '请求恢复运营', "0xA2": '申请调档', "0xA3": '出场请求', "0xA5": '进场请求', "0xA7": '加油请求', "0x50": '车辆故障', "0x70": '路阻报告', "0x60": '事故报告', "0x11": '扣证纠纷', "0x12" : '报警'}; 75 + var reqCodeMap = {"0xA1": '请求恢复运营', "0xA2": '申请调档', "0xA3": '出场请求', "0xA5": '进场请求', "0xA7": '加油请求', "0x50": '车辆故障', "0x70": '路阻报告', "0x60": '事故报告', "0x11": '扣证纠纷', "0x12" : '报警', 0x21: '单车有人伤', 0x22: '单车无人伤', 0x23: '双车有人伤', 0x24: '双车无人伤'};
76 // 关闭左侧栏 76 // 关闭左侧栏
77 if (!$('body').hasClass('page-sidebar-closed')) 77 if (!$('body').hasClass('page-sidebar-closed'))
78 $('.menu-toggler.sidebar-toggler').click(); 78 $('.menu-toggler.sidebar-toggler').click();
src/main/resources/static/pages/report/sheet/calcList_yanshou.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" style="margin-left: 20px">
  21 + <button id="exportList">数据导出</button>
  22 + </div>
  23 +</div>
  24 +
  25 +<div class="row" id="calcSheetList">
  26 + <div class="col-md-12">
  27 + <div class="portlet light porttlet-fit bordered">
  28 + <div class="portlet-body">
  29 + <div class="table-container" style="margin-top: 10px;overflow:auto;min-width: 600px">
  30 + <table class="table table-bordered table-hover table-checkable" id="forms_2">
  31 + <thead>
  32 + <tr>
  33 + <td></td>
  34 + <td>日期</td>
  35 + <td>线路</td>
  36 + <td>站点</td>
  37 + <td>计划时间</td>
  38 + <td>实际时间</td>
  39 + <td>是否准点</td>
  40 + <td>备注</td>
  41 + </tr>
  42 + </thead>
  43 +
  44 + <tbody>
  45 +
  46 + </tbody>
  47 + </table>
  48 + </div>
  49 + </div>
  50 + </div>
  51 + </div>
  52 +</div>
  53 +<script src="/pages/mforms/singledatas/jquery.table2excel.min.js"></script>
  54 +<script>
  55 + $(function(){
  56 + // 关闭左侧栏
  57 + if (!$('body').hasClass('page-sidebar-closed'))
  58 + $('.menu-toggler.sidebar-toggler').click();
  59 + var no="";
  60 + var dates="";
  61 + var dir="";
  62 + $("#calcSheetList").on('init', function (e, id) {
  63 + no=id.split(",")[0];
  64 + dates = id.split(",")[1];
  65 + dir =id.split(",")[2];
  66 + var i = layer.load(2);
  67 + $get('/calcSheet/calcSheet',{line:no,date:dates,dir:dir,type:'query'},function(result){
  68 + layer.close(i);
  69 + var calcSheetList_2 = template('calcSheetList_2',{list:result});
  70 + $('#forms_2 tbody').html(calcSheetList_2);
  71 + });
  72 + })
  73 + $("#exportList").on('click',function(){
  74 + var i = layer.load(2);
  75 + var name="";
  76 + if(dir=="1"){
  77 + fileName="发车准点率"+dates;
  78 + }else{
  79 + fileName="到站准点率"+dates;
  80 + }
  81 + $get('/calcSheet/calcSheet',{line:no,date:dates,dir:dir,type:'export'},function(result){
  82 + window.open("/downloadFile/download?fileName="+fileName);
  83 + layer.close(i);
  84 + });
  85 + });
  86 +
  87 +
  88 + });
  89 +</script>
  90 +<script type="text/html" id="calcSheetList_2">
  91 + {{each list as obj i}}
  92 + <tr {{if obj.sfzd!="准点"}}style="color: red" {{/if}}>
  93 + <td>{{i+1}}</td>
  94 + <td>{{obj.date}}</td>
  95 + <td>{{obj.line}}</td>
  96 + <td>{{obj.zdname}}</td>
  97 + <td>{{obj.jhsj}}</td>
  98 + <td>{{obj.sjsj}}</td>
  99 + <td>{{obj.sfzd}}</td>
  100 + <td>{{if i == 6}}自动调度{{/if}}</td>
  101 + </tr>
  102 + {{/each}}
  103 + {{if list.length == 0}}
  104 + <tr>
  105 + <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td>
  106 + </tr>
  107 + {{/if}}
  108 +</script>
0 \ No newline at end of file 109 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/core/guideboardManage/list.html
@@ -34,7 +34,12 @@ @@ -34,7 +34,12 @@
34 <td> 34 <td>
35 <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition()['lpName_like']" placeholder="请输入路牌名字..."/> 35 <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition()['lpName_like']" placeholder="请输入路牌名字..."/>
36 </td> 36 </td>
37 - <td></td> 37 + <td>
  38 + <select class="form-control">
  39 + <option>普通路牌</option>
  40 + <option>特殊路牌</option>
  41 + </select>
  42 + </td>
38 <td> 43 <td>
39 <label class="checkbox-inline"> 44 <label class="checkbox-inline">
40 <input type="checkbox" ng-model="ctrl.searchCondition()['isCancel_eq']"/>已作废 45 <input type="checkbox" ng-model="ctrl.searchCondition()['isCancel_eq']"/>已作废
src/main/resources/static/pages/scheduleApp/module/core/guideboardManage/module.js
@@ -385,7 +385,7 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -385,7 +385,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(
385 385
386 // 当转向到此页面时,就获取明细信息并绑定 386 // 当转向到此页面时,就获取明细信息并绑定
387 Gb.get({id: id}, function(result) { 387 Gb.get({id: id}, function(result) {
388 - self.guideboardForDetail = result.data; 388 + self.guideboardForDetail = result;
389 self.title = "路牌 " + self.guideboardForDetail.lpName + " 详细信息"; 389 self.title = "路牌 " + self.guideboardForDetail.lpName + " 详细信息";
390 }); 390 });
391 } 391 }
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/add_normal_recoder.html 0 → 100644
  1 +<!-- 临加班次form -->
  2 +<script id="add_normal_sch-form-temp" type="text/html">
  3 + <form class="uk-form uk-form-horizontal add-sch-form">
  4 + <div class="uk-grid">
  5 + <div class="uk-width-1-2">
  6 + <div class="uk-form-row">
  7 + <label class="uk-form-label">班次类型</label>
  8 + <div class="uk-form-controls">
  9 + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}"
  10 + data-group=ScheduleType></select>
  11 + </div>
  12 + </div>
  13 + </div>
  14 + <div class="uk-width-1-2">
  15 + <div class="uk-form-row">
  16 + <label class="uk-form-label">上下行</label>
  17 + <div class="uk-form-controls">
  18 + <select name="xlDir" id="xlDir">
  19 + <option value="0">上行</option>
  20 + <option value="1">下行</option>
  21 + </select>
  22 + </div>
  23 + </div>
  24 + </div>
  25 + </div>
  26 + <div class="uk-grid">
  27 + <div class="uk-width-1-2">
  28 + <div class="uk-form-row">
  29 + <label class="uk-form-label">起点站</label>
  30 + <div class="uk-form-controls">
  31 + <select name="qdzCode" id="qdzCode">
  32 + </select>
  33 + </div>
  34 + </div>
  35 + </div>
  36 + <div class="uk-width-1-2">
  37 + <div class="uk-form-row">
  38 + <label class="uk-form-label">终点站</label>
  39 + <div class="uk-form-controls">
  40 + <select name="zdzCode" id="zdzCode">
  41 + </select>
  42 + </div>
  43 + </div>
  44 + </div>
  45 + </div>
  46 + <div class="uk-grid">
  47 + <div class="uk-width-1-2">
  48 + <div class="uk-form-row">
  49 + <label class="uk-form-label">开始时间</label>
  50 + <div class="uk-form-controls">
  51 + <input type="time" value="{{zdsjActual==null?zdsj:zdsjActual}}" name="fcsj" required>
  52 + </div>
  53 + </div>
  54 + </div>
  55 + <div class="uk-width-1-2">
  56 + <div class="uk-form-row">
  57 + <label class="uk-form-label">结束时间</label>
  58 + <div class="uk-form-controls">
  59 + <input type="time" name="zdsj" required>
  60 + </div>
  61 + </div>
  62 + </div>
  63 + </div>
  64 + <div class="uk-grid">
  65 + <div class="uk-width-1-2">
  66 + <div class="uk-form-row">
  67 + <label class="uk-form-label">车辆</label>
  68 + <div class="uk-form-controls">
  69 + <div class="uk-autocomplete uk-form car-autocom">
  70 + <input type="text" value="{{clZbh}}" name="clZbh" required>
  71 + </div>
  72 + </div>
  73 + </div>
  74 + </div>
  75 + <div class="uk-width-1-2">
  76 + <div class="uk-form-row">
  77 + <label class="uk-form-label">里程</label>
  78 + <div class="uk-form-controls">
  79 + <input type="text" name="jhlc" value="{{jhlc}}" max=400 data-fv-lessthan-inclusive="false"
  80 + required>
  81 + </div>
  82 + </div>
  83 + </div>
  84 + </div>
  85 + <div class="uk-grid">
  86 + <div class="uk-width-1-2">
  87 + <div class="uk-form-row">
  88 + <label class="uk-form-label">驾驶员</label>
  89 + <div class="uk-form-controls">
  90 + <div class="uk-autocomplete uk-form jsy-autocom">
  91 + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>
  92 + </div>
  93 + </div>
  94 + </div>
  95 + </div>
  96 + <div class="uk-width-1-2">
  97 + <div class="uk-form-row">
  98 + <label class="uk-form-label">售票员</label>
  99 + <div class="uk-form-controls">
  100 + <div class="uk-autocomplete uk-form spy-autocom">
  101 + <input type="text" name="spy" value="{{sGh}}/{{sName}}">
  102 + </div>
  103 + </div>
  104 + </div>
  105 + </div>
  106 + </div>
  107 + <div class="uk-grid">
  108 + <div class="uk-width-1-1">
  109 + <div class="uk-form-row">
  110 + <label class="uk-form-label">备注</label>
  111 + <div class="uk-form-controls">
  112 + <div class="uk-autocomplete uk-form remarks-autocom">
  113 + <input type="text" name="remarks">
  114 + </div>
  115 + </div>
  116 + </div>
  117 + </div>
  118 + </div>
  119 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  120 + <span class="ct_line_lp_badge"></span>
  121 + <button type="button" class="uk-button uk-modal-close">取消</button>
  122 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存
  123 + </button>
  124 + </div>
  125 + </form>
  126 +</script>
  127 +<script>
  128 + (function () {
  129 + var wrap = '#schedule-addsch-modal .normalCont', sch, nf, submitFun;
  130 +
  131 + $(wrap).on('init', function (e, data) {
  132 + e.stopPropagation();
  133 + sch = data.sch;
  134 + submitFun = data.submitFun;
  135 +
  136 + nf = addForm();
  137 + //提交
  138 + nf.on('success.form.fv', function (e) {
  139 + e.preventDefault();
  140 +
  141 + disabled_submit_btn(nf);
  142 + var data = nf.serializeJSON();
  143 + submitFun(data, function (rs) {
  144 + //前端数据更新
  145 + gb_schedule_table.insertSchedule(rs.t, rs.ts);
  146 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t});
  147 + try {
  148 + if(rs.t.bcType=='in' || rs.t.bcType=='out')
  149 + gb_data_basic.reload_stat_park_data();
  150 + }catch (e){
  151 + console.log(e);}
  152 + UIkit.modal('#schedule-addsch-modal').hide();
  153 + //更新路牌公里统计面板
  154 + gb_schedule_table.showLpMileageTipBySch(rs.t);
  155 + }, function () {
  156 + enable_submit_btn(nf);
  157 + });
  158 + });
  159 + $('.ct_line_lp_badge', nf).html(sch.xlName + ',&nbsp;'+sch.lpName);
  160 + });
  161 +
  162 + function addForm() {
  163 + var htmlStr = template('add_normal_sch-form-temp', sch);
  164 + var f = $(htmlStr);
  165 + $(wrap).append(f);
  166 + //字典转换
  167 + dictionaryUtils.transformDom($('.nt-dictionary', f));
  168 + //validation
  169 + f.formValidation({framework: 'uikit', locale: 'zh_CN'});
  170 + //autocomp
  171 + f.trigger('init-autoCom');
  172 +
  173 + $("#xlDir").val(sch.xlDir);
  174 + $f('bcType', f).trigger('change');
  175 + $("#qdzCode").val(sch.qdzCode);
  176 + $("#zdzCode").val(sch.zdzCode);
  177 + $f('zdzCode', f).trigger('change');
  178 + return f;
  179 + }
  180 +
  181 + function $f(name, f) {
  182 + return $('[name=' + name + ']', f);
  183 + }
  184 + })();
  185 +</script>
0 \ No newline at end of file 186 \ No newline at end of file
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/main_recorder.html 0 → 100644
  1 +<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-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 + <div class="uk-grid">
  8 + <div class="uk-width-1-4">
  9 + <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg">
  10 + <li data-handle="normal"><a>1、临加班次</a></li>
  11 + <li data-handle="toAndFro"><a>2、往返</a></li>
  12 + <li data-handle="parkToPark"><a>3、场到场</a></li>
  13 + </ul>
  14 + </div>
  15 + <div class="uk-width-3-4">
  16 + <ul id="tempScheduleContent" class="uk-switcher">
  17 + <li class="normalCont"></li>
  18 + <li class="toAndFroCont"></li>
  19 + <li class="parkToParkCont"></li>
  20 + </ul>
  21 + </div>
  22 + </div>
  23 + </div>
  24 +
  25 + <script>
  26 + (function () {
  27 + var modal = '#schedule-addsch-modal',
  28 + sch, stationRoutes, parks, information, carsArray, st_park_data;
  29 +
  30 + $(modal).on('init', function (e, data) {
  31 + e.stopPropagation();
  32 + sch = data.sch;
  33 + //站到场数据
  34 + st_park_data = gb_data_basic.get_stat_park_data()[sch.xlBm];
  35 + //站点路由
  36 + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
  37 + return a.stationRouteCode - b.stationRouteCode;
  38 + }), 'directions');
  39 + //停车场
  40 + parks = gb_data_basic.simpleParksArray();
  41 + //线路标准
  42 + information = gb_data_basic.getLineInformation(sch.xlBm);
  43 + //停车场排序,常用的放前面
  44 + parks = sort_parks(parks, information, st_park_data);
  45 + //车辆信息
  46 + carsArray = gb_data_basic.carsArray();
  47 +
  48 + var st_doms = gb_schedule_context_menu.get_add_sch_doms();
  49 + //normal
  50 + $('.normalCont', modal).html(st_doms.normal_recoder_dom)
  51 + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form});
  52 +
  53 + //to and fro
  54 + $('.toAndFroCont', modal).html(st_doms.two_way_recoder_dom)
  55 + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form, stationRoutes: stationRoutes});
  56 +
  57 + //park to park
  58 + $('.parkToParkCont', modal).html(st_doms.park_to_park_dom)
  59 + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form, parks: parks, carsArray: carsArray});
  60 + });
  61 +
  62 + //init-autoCom
  63 + $(modal).on('init-autoCom', '.add-sch-form', function () {
  64 + //车辆
  65 + if(carsArray)
  66 + gb_common.carAutocomplete($('.car-autocom', this), carsArray);
  67 + //驾驶员
  68 + gb_common.personAutocomplete($('.jsy-autocom', this));
  69 + //售票员
  70 + gb_common.personAutocomplete($('.spy-autocom', this));
  71 + //备注补全
  72 + gb_common.remarksAutocomplete($('.remarks-autocom', this));
  73 + });
  74 +
  75 + //班次类型 和 上下行 切换事件
  76 + $(modal).on('change', '.add-sch-form [name=bcType],.add-sch-form [name=xlDir]', reCalcInputs_type);
  77 + //起终点站改变事件
  78 + $(modal).on('change', '[name=qdzCode],[name=zdzCode]', reCalcInputs_station);
  79 + //开始时间和公里改变
  80 + $(modal).on('input', '.add-sch-form [name=fcsj],.add-sch-form [name=jhlc]', reCalcEndTime);
  81 +
  82 +
  83 + function reCalcInputs_type() {
  84 + var f = $(this).parents('.add-sch-form');
  85 + var bcType_e = $('[name=bcType]', f)
  86 + , xlDir_e = $('[name=xlDir]', f);
  87 +
  88 + var routes = stationRoutes[xlDir_e.val()]
  89 + , lastCode = routes[routes.length - 1].stationCode
  90 + , opts = '', park_opts = '';
  91 + //station options
  92 + $.each(routes, function () {
  93 + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'
  94 + });
  95 + //park options
  96 + for(var i=0,p;p=parks[i++];)
  97 + park_opts += '<option value="' + p.code + '">' + p.name + '</option>';
  98 +
  99 + var qdz = $('[name=qdzCode]', f), zdz = $('[name=zdzCode]', f);
  100 + //var time, mileage;
  101 + switch (bcType_e.val()) {
  102 + case 'out':
  103 + qdz.html(park_opts).val(information.carPark);
  104 + zdz.html(opts);
  105 + break;
  106 + case 'in':
  107 + qdz.html(opts);
  108 + zdz.html(park_opts).val(information.carPark);
  109 + break;
  110 + default:
  111 + qdz.html(opts);
  112 + zdz.html(opts).val(lastCode);
  113 + }
  114 +
  115 + zdz.trigger('change');
  116 + f.trigger('ct_callback');
  117 + }
  118 +
  119 + function reCalcInputs_station() {
  120 + var f = $(this).parents('form'),
  121 + bcType = $('[name=bcType]', f).val(),
  122 + qdzCode = $('[name=qdzCode]', f).val(),
  123 + zdzCode =$('[name=zdzCode]', f).val(),
  124 + startDate = $('[name=fcsj]', f).val(),
  125 + upDown = $('[name=xlDir]', f).val(), mileage, time;
  126 +
  127 + //从站到场里获取数据
  128 + var stp = search_st_park(f);
  129 + if(stp){
  130 + mileage=bcType=='in'?stp['mileage1']:stp['mileage2'];
  131 + time=bcType=='in'?stp['time1']:stp['time2'];
  132 + }
  133 + else{
  134 + switch (upDown + '_' + bcType) {
  135 + case '0_out'://上行出场
  136 + mileage = information.upOutMileage;
  137 + time = information.upOutTimer;
  138 + break;
  139 + case '1_out'://下行出场
  140 + mileage = information.downOutMileage;
  141 + time = information.downOutTimer;
  142 + break;
  143 + case '0_in'://上行进场
  144 + mileage = information.upInMileage;
  145 + time = information.upInTimer;
  146 + break;
  147 + case '1_in'://下行进场
  148 + mileage = information.downInMileage;
  149 + time = information.downInTimer;
  150 + break;
  151 + default:
  152 +
  153 + var qc_time=upDown==0?information.upTravelTime:information.downTravelTime,
  154 + qc_mileage=upDown==0?information.upMileage:information.downMileage, _type;
  155 + if(is_normal_sch(f)){
  156 + _type='normal';
  157 + mileage=qc_mileage;
  158 + }
  159 + else{
  160 + _type='region';
  161 + mileage = calcMileage(stationRoutes[upDown], qdzCode, zdzCode);
  162 + }
  163 +
  164 + time = gb_common.mul(gb_common.accDiv(qc_time, qc_mileage), mileage);
  165 + if(bcType!='ldks' && bcType!='major' && bcType!='venting')
  166 + $('[name=bcType]', f).val(_type);
  167 + }
  168 + }
  169 +
  170 + $('[name=jhlc]', f).val(mileage);
  171 + var et = moment(startDate, 'HH:mm').add(time, 'minutes');
  172 + $f('zdsj', f).val(et.format('HH:mm'));
  173 + f.trigger('ct_callback');
  174 + }
  175 +
  176 +
  177 + function reCalcEndTime() {
  178 + var f = $(this).parents('.add-sch-form')
  179 + , startDate = $f('fcsj', f).val()//开始时间
  180 + , mileage = $f('jhlc', f).val()//公里
  181 + , type2 = $f('bcType', f).val(),//班次类型
  182 + upDown = $('[name=xlDir]', f).val();
  183 + if (!startDate || !mileage)
  184 + return;
  185 +
  186 + var time;
  187 + //从站到场里获取数据
  188 + var stp = search_st_park(f);
  189 + if(stp){
  190 + time=type2=='in'?stp['time1']:stp['time2'];
  191 + }
  192 + else{
  193 + if (type2 == 'in')
  194 + time = upDown == 0 ? information.upInTimer : information.downInTimer;
  195 + else if (type2 == 'out')
  196 + time = upDown == 0 ? information.upOutTimer : information.downOutTimer;
  197 + else{
  198 + var qc_time=upDown==0?information.upTravelTime:information.downTravelTime,
  199 + qc_mileage=upDown==0?information.upMileage:information.downMileage;
  200 +
  201 + time = gb_common.mul(gb_common.accDiv(qc_time, qc_mileage), mileage);
  202 + }
  203 + }
  204 +
  205 + var et = moment(startDate, 'HH:mm').add(time, 'minutes');
  206 + $f('zdsj', f).val(et.format('HH:mm'));
  207 + f.trigger('ct_callback');
  208 + }
  209 +
  210 + function is_normal_sch(f) {
  211 + var qdzCode = $('[name=qdzCode]', f).val(),
  212 + zdzCode =$('[name=zdzCode]', f).val(),
  213 + upDown = $('[name=xlDir]', f).val(),
  214 + rts = stationRoutes[upDown];
  215 +
  216 + if(rts[0].stationCode == qdzCode
  217 + && rts[rts.length - 1].stationCode == zdzCode)
  218 + return true;
  219 + else
  220 + return false;
  221 + }
  222 +
  223 + function isInOut(bcType) {
  224 + return bcType=='in' || bcType=='out';
  225 + }
  226 +
  227 + /**
  228 + * 计算线路上站点间公里
  229 + */
  230 + function calcMileage(rts, s, e) {
  231 + var mileage = 0, flag, code;
  232 + $.each(rts, function () {
  233 + code = this['stationCode'];
  234 + if (flag)
  235 + mileage = gb_common.accAdd(mileage, this.distances);
  236 + if (code == s)
  237 + flag = true;
  238 + if (code == e)
  239 + return false;
  240 + });
  241 + return mileage;
  242 + }
  243 +
  244 + function search_st_park(f) {
  245 + if(!st_park_data)
  246 + return;
  247 + var stp;
  248 + var qdSelect=$f('qdzCode', f)[0],zdSelect=$f('zdzCode', f)[0];
  249 +
  250 + if(qdSelect.options.selectedIndex < 0 || zdSelect.options.selectedIndex < 0)
  251 + return;
  252 + var qdzName=qdSelect.options[qdSelect.options.selectedIndex].text,
  253 + zdzName=zdSelect.options[zdSelect.options.selectedIndex].text,
  254 + type2 = $f('bcType', f).val();
  255 +
  256 + if(!isInOut(type2))
  257 + return;
  258 +
  259 + $.each(st_park_data, function () {
  260 + if((type2=='in' && this.stationName==qdzName && this.parkName==zdzName)
  261 + || (type2=='out' && this.stationName==zdzName && this.parkName==qdzName)){
  262 + stp = this;
  263 + return false;
  264 + }
  265 + });
  266 +
  267 + return stp;
  268 + }
  269 +
  270 + /**
  271 + * 停车场排序
  272 + * @param parks 停车场 code 2 name
  273 + * @param information 线路标准
  274 + * @param st_park_data 站到场
  275 + */
  276 + function sort_parks(parks, information, st_park_data) {
  277 + var array = [], names=[];
  278 + for(var code in parks){
  279 + array.push({code: code, name: parks[code]});
  280 + }
  281 +
  282 + if(st_park_data && st_park_data.length > 0){
  283 + $.each(st_park_data, function () {
  284 + names.push(this.parkName);
  285 + });
  286 + }
  287 +
  288 + //debugger
  289 + array.sort(function (a, b) {
  290 + if(a.code==information.carPark)
  291 + return -1;
  292 + if(b.code==information.carPark)
  293 + return 1;
  294 +
  295 + var ai = names.indexOf(a.name),
  296 + bi = names.indexOf(b.name);
  297 +
  298 + if(ai!=-1 && bi==-1)
  299 + return -1;
  300 + else if(ai==-1 && bi!=-1)
  301 + return 1;
  302 + else
  303 + return $.trim(a.name).localeCompare($.trim(b.name), 'zh-CN');
  304 + });
  305 + return array;
  306 + }
  307 +
  308 + function $f(name, f) {
  309 + return $('[name=' + name + ']', f);
  310 + }
  311 +
  312 + /**
  313 + * 提交表单
  314 + */
  315 + function submit_temp_schedule_form(data, cb, err) {
  316 + data.xlBm = sch.xlBm;
  317 + data.xlName = sch.xlName;
  318 + data.lpName = sch.lpName;
  319 + //拆分驾驶员工号和姓名
  320 + data.jGh = data.jsy.split('/')[0];
  321 + data.jName = data.jsy.split('/')[1];
  322 + delete data.jsy;
  323 + //拆分售票员工号和姓名
  324 + if (data.spy != '') {
  325 + data.sGh = data.spy.split('/')[0];
  326 + data.sName = data.spy.split('/')[1];
  327 + delete data.spy;
  328 + }
  329 +
  330 + //公司信息
  331 + var line = gb_data_basic.findLineByCodes([data.xlBm]);
  332 + if(line && line.length > 0){
  333 + line = line[0];
  334 + data.gsBm = line.company;
  335 + data.fgsBm = line.brancheCompany;
  336 + }
  337 +
  338 + gb_common.$post('/realSchedule', data, function (rs) {
  339 + notify_succ('新增临加班次成功');
  340 + cb && cb(rs);
  341 + }, err);
  342 + }
  343 + })();
  344 + </script>
  345 +</div>
0 \ No newline at end of file 346 \ No newline at end of file
src/main/resources/static/real_control_v2/fragments/line_schedule/sys_mailbox.html
@@ -9,6 +9,17 @@ @@ -9,6 +9,17 @@
9 <button class="uk-button uk-button-mini reject">不同意</button> 9 <button class="uk-button uk-button-mini reject">不同意</button>
10 <a class="edit_link" data-id="{{schId}}" data-line="{{data.lineId}}" >编辑</a> 10 <a class="edit_link" data-id="{{schId}}" data-line="{{data.lineId}}" >编辑</a>
11 </div> 11 </div>
  12 + <div style="display:{{isbj == true?'':'none'}}">
  13 + <h6 > 车辆事故最近的站点:{{stationName}}</h6>
  14 + </div>
  15 + <div class="uk-button-group" style="display:{{isbj == true?'':'none'}}">
  16 + <button class="uk-button uk-button-mini qxbc" data-id="{{schId}}" data-line="{{data.lineId}}" data-nextschid="{{nextschId}}">取消班次</button>
  17 + <button class="uk-button uk-button-mini hrhc" data-id="{{schId}}" data-line="{{data.lineId}}" data-nextschid="{{nextschId}}">换人换车</button>
  18 +
  19 + </div>
  20 + <div class="uk-button-group" style="display:{{isbj == true?'':'none'}}">
  21 + <button class="uk-button uk-button-mini zrw" data-id="{{schId}}" data-line="{{data.lineId}}" data-nextschid="{{nextschId}}">临加子任务</button>
  22 + </div>
12 </div> 23 </div>
13 </div> 24 </div>
14 </script> 25 </script>
src/main/resources/static/real_control_v2/js/common.js
@@ -20,6 +20,10 @@ var gb_common = (function () { @@ -20,6 +20,10 @@ var gb_common = (function () {
20 0x11: '扣证纠纷', 20 0x11: '扣证纠纷',
21 0x12: '报警', 21 0x12: '报警',
22 0x10: 'SOS', 22 0x10: 'SOS',
  23 + 0x21: '单车有人伤',
  24 + 0x22: '单车无人伤',
  25 + 0x23: '双车有人伤',
  26 + 0x24: '双车无人伤',
23 }; 27 };
24 28
25 var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '路救抛锚', '无到', '无出', '掉线', '指令故障', '车辆漂移', '其他']; 29 var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '路救抛锚', '无到', '无出', '掉线', '指令故障', '车辆漂移', '其他'];
src/main/resources/static/real_control_v2/js/line_schedule/context_menu.js
@@ -27,6 +27,10 @@ var gb_schedule_context_menu = (function () { @@ -27,6 +27,10 @@ var gb_schedule_context_menu = (function () {
27 $.get(folder + '/temp_sch/add_normal.html', function (dom) { 27 $.get(folder + '/temp_sch/add_normal.html', function (dom) {
28 add_sch_doms.normal_dom=dom; 28 add_sch_doms.normal_dom=dom;
29 }); 29 });
  30 +
  31 + $.get(folder + '/temp_sch/add_normal_recoder.html', function (dom) {
  32 + add_sch_doms.normal_recoder_dom=dom;
  33 + });
30 $.get(folder + '/temp_sch/add_two_way.html', function (dom) { 34 $.get(folder + '/temp_sch/add_two_way.html', function (dom) {
31 add_sch_doms.two_way_dom=dom; 35 add_sch_doms.two_way_dom=dom;
32 }); 36 });
src/main/resources/static/real_control_v2/js/websocket/sch_websocket.js
@@ -86,6 +86,17 @@ var gb_sch_websocket = (function () { @@ -86,6 +86,17 @@ var gb_sch_websocket = (function () {
86 if (!msg.text) 86 if (!msg.text)
87 msg.text = '(未知的请求码 ' + msg.data.requestCode + ')'; 87 msg.text = '(未知的请求码 ' + msg.data.requestCode + ')';
88 88
  89 + debugger
  90 + switch (msg.data.requestCode) {
  91 + //报警请求
  92 + case 0x21:
  93 + case 0x22:
  94 + case 0x23:
  95 + case 0x24:
  96 + msg.isbj = true;
  97 + break;
  98 + }
  99 +
89 var $item = $(temps['sys-note-80-temp'](msg)); 100 var $item = $(temps['sys-note-80-temp'](msg));
90 findMailBox(msg.data.lineId).prepend($item); 101 findMailBox(msg.data.lineId).prepend($item);
91 //tts 102 //tts
@@ -380,6 +391,7 @@ var gb_sch_websocket = (function () { @@ -380,6 +391,7 @@ var gb_sch_websocket = (function () {
380 * 信使 sys-note-80 编辑 391 * 信使 sys-note-80 编辑
381 */ 392 */
382 $(document).on('click', '.sys-note-80 .edit_link', function () { 393 $(document).on('click', '.sys-note-80 .edit_link', function () {
  394 +
383 var id = $(this).data('id'), 395 var id = $(this).data('id'),
384 lineCode = $(this).data('line'); 396 lineCode = $(this).data('line');
385 397
@@ -390,6 +402,58 @@ var gb_sch_websocket = (function () { @@ -390,6 +402,58 @@ var gb_sch_websocket = (function () {
390 gb_schedule_context_menu.fcxxwt(sch); 402 gb_schedule_context_menu.fcxxwt(sch);
391 }); 403 });
392 404
  405 +
  406 +
  407 + /**
  408 + * 信使 sys-note-80 取消班次
  409 + */
  410 + $(document).on('click', '.sys-note-80 .qxbc', function () {
  411 + debugger
  412 + var nextschId = $(this).data('nextschid'),
  413 + lineCode = $(this).data('line');
  414 +
  415 + var sch = gb_schedule_table.findScheduleByLine(lineCode)[nextschId];
  416 + if(!sch)
  417 + return;
  418 +
  419 + var confirmBtn = $(this).parent().find('.uk-button-primary');
  420 + var fun =gb_schedule_context_menu.jhlb;
  421 + fun(sch, function () {
  422 + confirmBtn.trigger('click');
  423 + });
  424 + });
  425 +
  426 +
  427 + /**
  428 + * 信使 sys-note-80 换人换车
  429 + */
  430 + $(document).on('click', '.sys-note-80 .hrhc', function () {
  431 + debugger
  432 + var nextschId = $(this).data('nextschid'),
  433 + lineCode = $(this).data('line');
  434 + var sch = gb_schedule_table.findScheduleByLine(lineCode)[nextschId];
  435 + if(!sch)
  436 + return;
  437 +
  438 + gb_schedule_context_menu.tzrc(sch);
  439 + });
  440 +
  441 +
  442 + /**
  443 + * 信使 sys-note-80 子任务
  444 + */
  445 + $(document).on('click', '.sys-note-80 .zrw', function () {
  446 + debugger
  447 + var id = $(this).data('id'),
  448 + lineCode = $(this).data('line');
  449 +
  450 + var sch = gb_schedule_table.findScheduleByLine(lineCode)[id];
  451 + if(!sch)
  452 + return;
  453 +
  454 + gb_schedule_context_menu.lj_zrw(sch);
  455 + });
  456 +
393 return { 457 return {
394 sock: function () { 458 sock: function () {
395 return schSock; 459 return schSock;
src/main/resources/static/real_control_v2/js/zndd/data_zndd.js
@@ -408,6 +408,7 @@ var gb_dataZndd = (function (){ @@ -408,6 +408,7 @@ var gb_dataZndd = (function (){
408 } 408 }
409 }; 409 };
410 } 410 }
  411 +
411 return { 412 return {
412 sop : sop, 413 sop : sop,
413 snt : snt, 414 snt : snt,
src/main/resources/static/real_control_v2/js/zndd/recorder/recorder.js
@@ -205,7 +205,7 @@ @@ -205,7 +205,7 @@
205 sch.zdzCode = responseText[3]; 205 sch.zdzCode = responseText[3];
206 sch.xlDir = responseText[4]; 206 sch.xlDir = responseText[4];
207 sch.zdsjActual = moment(new Date()).format("HH:mm") 207 sch.zdsjActual = moment(new Date()).format("HH:mm")
208 - open_modal(folder + '/temp_sch/main.html', { 208 + open_modal(folder + '/temp_sch/main_recorder.html', {
209 sch: sch 209 sch: sch
210 }, modal_opts); 210 }, modal_opts);
211 }); 211 });
src/main/resources/static/real_control_v2/main.html
@@ -320,6 +320,46 @@ @@ -320,6 +320,46 @@
320 </div> 320 </div>
321 321
322 </script> 322 </script>
  323 +<script id="sjZ-divs-temp" type="text/html">
  324 +
  325 + <div class="history" style="margin-top:50px;height: 450px;overflow-y: scroll">
  326 + <div class="history-date" STYLE="padding-top:10px;">
  327 + <ul>
  328 + <li>
  329 + <h3>{{rq1}}<span>{{rqStr}}</span></h3>
  330 + <dl>
  331 + <dt>检测到异常情况</dt>
  332 + </dl>
  333 + </li>
  334 + </ul>
  335 + <ul>
  336 + <li>
  337 + <h3>{{rq2}}<span>{{rqStr}}</></h3>
  338 + <dl>
  339 + <dt>推送到线调页面</dt>
  340 + </dl>
  341 + </li>
  342 + </ul>
  343 + <ul>
  344 + <li>
  345 + <h3>{{rq2}}<span>{{rqStr}}</span></h3>
  346 + <dl>
  347 + <dt>生成配置调度工具</dt>
  348 + </dl>
  349 + </li>
  350 + </ul>
  351 + <ul>
  352 + <li>
  353 + <h3>{{rq2}}<span>{{rqStr}}</span></h3>
  354 + <dl>
  355 + <dt>生成最佳处置方式</dt>
  356 + </dl>
  357 + </li>
  358 + </ul>
  359 + </div>
  360 + </div>
  361 +</script>
  362 +
323 <div class="multi_plat_msg_pop_zndd"> 363 <div class="multi_plat_msg_pop_zndd">
324 <!--<div id="timer"></div>--> 364 <!--<div id="timer"></div>-->
325 </div> 365 </div>
src/main/resources/static/real_control_v2/zndd/type/djg1.html
1 <div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal"> 1 <div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal">
2 - <div class="uk-modal-dialog" style="width: 1400px;"> 2 + <div class="uk-modal-dialog" style="width: 1500px;">
3 <a href="" class="uk-modal-close uk-close"></a> 3 <a href="" class="uk-modal-close uk-close"></a>
4 <div class="uk-modal-header"> 4 <div class="uk-modal-header">
5 <h2>新增临加班次</h2></div> 5 <h2>新增临加班次</h2></div>
6 - <div class="uk-grid uk-width-2-5" style="float: left"> 6 +
  7 + <div class="uk-grid uk-width-1-6" style="float: left">
  8 + <div class="uk-width-5-5 sjzlist">
  9 +
  10 + </div>
  11 + </div>
  12 + <div class="uk-grid uk-width-2-6" style="float: left">
7 <div class="uk-width-5-5"> 13 <div class="uk-width-5-5">
8 <form class="uk-form uk-form-horizontal"> </form> 14 <form class="uk-form uk-form-horizontal"> </form>
9 <div> 15 <div>
@@ -12,7 +18,7 @@ @@ -12,7 +18,7 @@
12 </div> 18 </div>
13 </div> 19 </div>
14 </div> 20 </div>
15 - <div class="uk-grid uk-width-3-5 lj_1" > 21 + <div class="uk-grid uk-width-3-6 lj_1" >
16 <div class="uk-width-1-4"> 22 <div class="uk-width-1-4">
17 <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg"> 23 <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg">
18 24
@@ -31,7 +37,7 @@ @@ -31,7 +37,7 @@
31 </div> 37 </div>
32 </div> 38 </div>
33 39
34 - <div class="uk-grid uk-width-3-5 lj_2" style="display: none; padding-left: 100px"> 40 + <div class="uk-grid uk-width-3-6 lj_2" style="display: none; padding-left: 100px">
35 <div class="uk-width-1-1" id ="tempsdsf"></div> 41 <div class="uk-width-1-1" id ="tempsdsf"></div>
36 42
37 </div> 43 </div>
@@ -51,7 +57,10 @@ @@ -51,7 +57,10 @@
51 var formHtml = template('djg-form-temp', sch); 57 var formHtml = template('djg-form-temp', sch);
52 $('form', modal).html(formHtml); 58 $('form', modal).html(formHtml);
53 //切换 59 //切换
54 - 60 + sch.rq1 =moment(new Date().getTime() - (60 *1000)).format("HH:mm");
  61 + sch.rq2 =moment(new Date()).format("HH:mm")
  62 + var formHtmls = template('sjZ-divs-temp', sch);
  63 + $('.sjzlist', modal).html(formHtmls);
55 64
56 65
57 66
src/main/resources/static/real_control_v2/zndd/type/dkl.html
@@ -3,7 +3,12 @@ @@ -3,7 +3,12 @@
3 <a href="" class="uk-modal-close uk-close"></a> 3 <a href="" class="uk-modal-close uk-close"></a>
4 <div class="uk-modal-header"> 4 <div class="uk-modal-header">
5 <h2>新增临加班次<i class="uk-icon-question-circle uk-icon-hover"></i></h2></div> 5 <h2>新增临加班次<i class="uk-icon-question-circle uk-icon-hover"></i></h2></div>
6 - <div class="uk-grid uk-width-2-5" style="float: left"> 6 + <div class="uk-grid uk-width-1-6" style="float: left">
  7 + <div class="uk-width-5-5 sjzlist">
  8 +
  9 + </div>
  10 + </div>
  11 + <div class="uk-grid uk-width-2-6" style="float: left">
7 <div class="uk-width-5-5"> 12 <div class="uk-width-5-5">
8 <form class="uk-form uk-form-horizontal"> </form> 13 <form class="uk-form uk-form-horizontal"> </form>
9 <div> 14 <div>
@@ -12,7 +17,7 @@ @@ -12,7 +17,7 @@
12 </div> 17 </div>
13 </div> 18 </div>
14 </div> 19 </div>
15 - <div class="uk-grid uk-width-3-5 lj_1" > 20 + <div class="uk-grid uk-width-3-6 lj_1" >
16 <div class="uk-width-1-4"> 21 <div class="uk-width-1-4">
17 <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg"> 22 <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg">
18 <li data-handle="toAndFro"><a>1、往返</a></li> 23 <li data-handle="toAndFro"><a>1、往返</a></li>
@@ -29,7 +34,7 @@ @@ -29,7 +34,7 @@
29 </div> 34 </div>
30 </div> 35 </div>
31 36
32 - <div class="uk-grid uk-width-3-5 lj_2" style="display: none; padding-left: 100px"> 37 + <div class="uk-grid uk-width-3-6 lj_2" style="display: none; padding-left: 100px">
33 <div class="uk-width-1-1" id ="tempsdsf"></div> 38 <div class="uk-width-1-1" id ="tempsdsf"></div>
34 39
35 </div> 40 </div>
@@ -48,9 +53,11 @@ @@ -48,9 +53,11 @@
48 53
49 var formHtml = template('djg-form-temp', sch); 54 var formHtml = template('djg-form-temp', sch);
50 $('form', modal).html(formHtml); 55 $('form', modal).html(formHtml);
51 - //切换  
52 -  
53 56
  57 + sch.rq1 =moment(new Date().getTime() - (60 *1000)).format("HH:mm");
  58 + sch.rq2 =moment(new Date()).format("HH:mm")
  59 + var formHtmls = template('sjZ-divs-temp', sch);
  60 + $('.sjzlist', modal).html(formHtmls);
54 61
55 62
56 63
src/main/resources/static/real_control_v2/zndd/type/fcjg.html
1 <div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal"> 1 <div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal">
2 - <div class="uk-modal-dialog" style="width: 920px;"> 2 + <div class="uk-modal-dialog" style="width: 1020px;">
3 <a href="" class="uk-modal-close uk-close"></a> 3 <a href="" class="uk-modal-close uk-close"></a>
4 <div class="uk-modal-header"> 4 <div class="uk-modal-header">
5 <h2>发车间隔</h2></div> 5 <h2>发车间隔</h2></div>
6 - <div class="uk-grid uk-width-3-5" style="float: left"> 6 +
  7 + <div class="uk-grid uk-width-1-6" style="float: left">
  8 + <div class="uk-width-5-5 sjzlist">
  9 +
  10 + </div>
  11 + </div>
  12 + <div class="uk-grid uk-width-3-6" style="float: left">
7 <div class="uk-width-5-5"> 13 <div class="uk-width-5-5">
8 <form class="uk-form uk-form-horizontal"> </form> 14 <form class="uk-form uk-form-horizontal"> </form>
9 <div> 15 <div>
@@ -13,13 +19,13 @@ @@ -13,13 +19,13 @@
13 </div> 19 </div>
14 </div> 20 </div>
15 21
16 - <div class="uk-grid uk-width-2-5 lj_2" style="padding-left: 100px"> 22 + <div class="uk-grid uk-width-2-6 lj_2" style="padding-left: 100px">
17 <div class="uk-width-1-1" id ="tempsdsf"></div> 23 <div class="uk-width-1-1" id ="tempsdsf"></div>
18 24
19 </div> 25 </div>
20 26
21 27
22 - <div class="uk-grid uk-width-2-5 lj_1" style="padding-left: 100px"> 28 + <div class="uk-grid uk-width-2-6 lj_1" style="padding-left: 100px">
23 <div class="uk-width-1-1" id ="tempcjs"></div> 29 <div class="uk-width-1-1" id ="tempcjs"></div>
24 30
25 </div> 31 </div>
@@ -41,7 +47,10 @@ @@ -41,7 +47,10 @@
41 var formHtml = template('djg-form-temp', sch); 47 var formHtml = template('djg-form-temp', sch);
42 $('form', modal).html(formHtml); 48 $('form', modal).html(formHtml);
43 //切换 49 //切换
44 - 50 + sch.rq1 =moment(new Date().getTime() - (60 *1000)).format("HH:mm");
  51 + sch.rq2 =moment(new Date()).format("HH:mm")
  52 + var formHtmls = template('sjZ-divs-temp', sch);
  53 + $('.sjzlist', modal).html(formHtmls);
45 54
46 55
47 $.get('/lineConfig/getByLineCode', {lineCode: sch.lineCode}, function (datan) { 56 $.get('/lineConfig/getByLineCode', {lineCode: sch.lineCode}, function (datan) {
src/main/resources/static/real_control_v2/zndd/type/mz.html
1 <div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal"> 1 <div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal">
2 - <div class="uk-modal-dialog" style="width: 1400px;"> 2 + <div class="uk-modal-dialog" style="width: 1500px;">
3 <a href="" class="uk-modal-close uk-close"></a> 3 <a href="" class="uk-modal-close uk-close"></a>
4 <div class="uk-modal-header"> 4 <div class="uk-modal-header">
5 <h2>满载</h2></div> 5 <h2>满载</h2></div>
6 - <div class="uk-grid uk-width-2-5" style="float: left"> 6 +
  7 + <div class="uk-grid uk-width-1-6" style="float: left">
  8 + <div class="uk-width-5-5 sjzlist">
  9 +
  10 + </div>
  11 + </div>
  12 +
  13 + <div class="uk-grid uk-width-2-6" style="float: left">
7 <div class="uk-width-5-5"> 14 <div class="uk-width-5-5">
8 <form class="uk-form uk-form-horizontal"> </form> 15 <form class="uk-form uk-form-horizontal"> </form>
9 <div> 16 <div>
@@ -12,7 +19,7 @@ @@ -12,7 +19,7 @@
12 </div> 19 </div>
13 </div> 20 </div>
14 </div> 21 </div>
15 - <div class="uk-grid uk-width-3-5 lj_1" > 22 + <div class="uk-grid uk-width-3-6 lj_1" >
16 <div class="uk-width-1-4"> 23 <div class="uk-width-1-4">
17 <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg"> 24 <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg">
18 <li data-handle="toAndFro"><a>1、往返</a></li> 25 <li data-handle="toAndFro"><a>1、往返</a></li>
@@ -53,6 +60,12 @@ @@ -53,6 +60,12 @@
53 sch.stopStation = route[route.length - 1]; 60 sch.stopStation = route[route.length - 1];
54 var formHtml = template('djg-form-temp', sch); 61 var formHtml = template('djg-form-temp', sch);
55 $('form', modal).html(formHtml); 62 $('form', modal).html(formHtml);
  63 +
  64 + sch.rq1 =moment(new Date().getTime() - (60 *1000)).format("HH:mm");
  65 + sch.rq2 =moment(new Date()).format("HH:mm")
  66 + var formHtmls = template('sjZ-divs-temp', sch);
  67 + $('.sjzlist', modal).html(formHtmls);
  68 +
56 //切换 69 //切换
57 $("#destroySelect").on('change',function(){ 70 $("#destroySelect").on('change',function(){
58 let fn = $('#destroySelect').val(); 71 let fn = $('#destroySelect').val();
@@ -384,7 +397,6 @@ @@ -384,7 +397,6 @@
384 })(); 397 })();
385 </script> 398 </script>
386 </div> 399 </div>
387 -  
388 <script id="djg-form-temp" type="text/html"> 400 <script id="djg-form-temp" type="text/html">
389 <input type="hidden" name="id" value=""/> 401 <input type="hidden" name="id" value=""/>
390 402
src/main/resources/static/real_control_v2/zndd/type/sftz_1.html
@@ -3,7 +3,19 @@ @@ -3,7 +3,19 @@
3 <a href="" class="uk-modal-close uk-close"></a> 3 <a href="" class="uk-modal-close uk-close"></a>
4 <div class="uk-modal-header"> 4 <div class="uk-modal-header">
5 <h2>实发未发<i class="uk-icon-question-circle uk-icon-hover"></i></h2></div> 5 <h2>实发未发<i class="uk-icon-question-circle uk-icon-hover"></i></h2></div>
6 - <form class="uk-form uk-form-horizontal"> </form> 6 + <div class="uk-grid uk-width-1-5" style="float: left">
  7 + <div class="uk-width-5-5 sjzlist">
  8 +
  9 + </div>
  10 + </div>
  11 +
  12 + <div class="uk-grid uk-width-4-5" >
  13 + <div class="uk-width-5-5">
  14 + <form class="uk-form uk-form-horizontal"> </form>
  15 + </div>
  16 +
  17 + </div>
  18 +
7 </div> 19 </div>
8 20
9 <script> 21 <script>
@@ -27,12 +39,13 @@ @@ -27,12 +39,13 @@
27 sch.stopStation = route[route.length - 1]; 39 sch.stopStation = route[route.length - 1];
28 var formHtml = template('sftz-form-temp',{sch: sch, reportTypes:reportTypes}); 40 var formHtml = template('sftz-form-temp',{sch: sch, reportTypes:reportTypes});
29 $('form', modal).html(formHtml); 41 $('form', modal).html(formHtml);
30 -  
31 - //frequent_phrases.init(modal);  
32 -  
33 -  
34 -  
35 - 42 +
  43 + sch.rq1 =moment(new Date().getTime() - (60 *1000)).format("HH:mm");
  44 + sch.rq2 =moment(new Date()).format("HH:mm")
  45 + var formHtmls = template('sjZ-divs-temp', sch);
  46 + $('.sjzlist', modal).html(formHtmls);
  47 +
  48 +
36 f.formValidation(gb_form_validation_opts); 49 f.formValidation(gb_form_validation_opts);
37 f.on('success.form.fv', function(e) { 50 f.on('success.form.fv', function(e) {
38 debugger 51 debugger
src/main/resources/static/real_control_v2/zndd/type/wd.html
1 <div class="uk-modal ct-form-modal ct_move_modal" id="wd-addsch-modal"> 1 <div class="uk-modal ct-form-modal ct_move_modal" id="wd-addsch-modal">
2 - <div class="uk-modal-dialog" style="width: 850px;"> 2 + <div class="uk-modal-dialog" style="width: 1050px;">
3 <a href="" class="uk-modal-close uk-close"></a> 3 <a href="" class="uk-modal-close uk-close"></a>
4 <div class="uk-modal-header"> 4 <div class="uk-modal-header">
5 <h2>误点<i class="uk-icon-question-circle uk-icon-hover"></i></h2></div> 5 <h2>误点<i class="uk-icon-question-circle uk-icon-hover"></i></h2></div>
6 6
7 - <div class="uk-grid uk-width-3-5 lj_1" style="float: left"> 7 +
  8 + <div class="uk-grid uk-width-1-6" style="float: left">
  9 + <div class="uk-width-5-5 sjzlist">
  10 +
  11 + </div>
  12 + </div>
  13 +
  14 + <div class="uk-grid uk-width-3-6 lj_1" style="float: left">
8 <form class="uk-form uk-form-horizontal"> </form> 15 <form class="uk-form uk-form-horizontal"> </form>
9 </div> 16 </div>
10 17
11 18
12 19
13 - <div class="uk-grid uk-width-2-5 lj_2" style="padding-left: 100px"> 20 + <div class="uk-grid uk-width-2-6 lj_2" style="padding-left: 100px">
14 <div class="uk-width-1-1" id ="tempsdsf"></div> 21 <div class="uk-width-1-1" id ="tempsdsf"></div>
15 22
16 </div> 23 </div>
@@ -36,6 +43,10 @@ @@ -36,6 +43,10 @@
36 sch.stopStation = route[route.length - 1]; 43 sch.stopStation = route[route.length - 1];
37 var formHtml = template('wd-form-temp', sch); 44 var formHtml = template('wd-form-temp', sch);
38 $('form', modal).html(formHtml); 45 $('form', modal).html(formHtml);
  46 + sch.rq1 =moment(new Date().getTime() - (60 *1000)).format("HH:mm");
  47 + sch.rq2 =moment(new Date()).format("HH:mm")
  48 + var formHtmls = template('sjZ-divs-temp', sch);
  49 + $('.sjzlist', modal).html(formHtmls);
39 //车辆信息 50 //车辆信息
40 carsArray = gb_data_basic.carsArray(); 51 carsArray = gb_data_basic.carsArray();
41 initAutoCom(f); 52 initAutoCom(f);
@@ -60,7 +71,7 @@ @@ -60,7 +71,7 @@
60 e.preventDefault(); 71 e.preventDefault();
61 var data = $(this).serializeJSON(); 72 var data = $(this).serializeJSON();
62 let fn = $('#destroySelect').val(); 73 let fn = $('#destroySelect').val();
63 - debugger 74 +
64 if (fn == "1"){ 75 if (fn == "1"){
65 //调整人员车辆 76 //调整人员车辆
66 let datas = { 77 let datas = {
src/main/resources/static/real_control_v2/zndd/type/ycsf.html
1 <div class="uk-modal ct-form-modal ct_move_modal" id="ycsf-addsch-modal"> 1 <div class="uk-modal ct-form-modal ct_move_modal" id="ycsf-addsch-modal">
  2 +
2 <div class="uk-modal-dialog" style="width: 850px;"> 3 <div class="uk-modal-dialog" style="width: 850px;">
3 <a href="" class="uk-modal-close uk-close"></a> 4 <a href="" class="uk-modal-close uk-close"></a>
4 <div class="uk-modal-header"> 5 <div class="uk-modal-header">
5 <h2>异常实发<i class="uk-icon-question-circle uk-icon-hover"></i></h2></div> 6 <h2>异常实发<i class="uk-icon-question-circle uk-icon-hover"></i></h2></div>
6 - <form class="uk-form uk-form-horizontal"> </form> 7 +
  8 + <div class="uk-grid uk-width-1-5" style="float: left">
  9 + <div class="uk-width-5-5 sjzlist">
  10 +
  11 + </div>
  12 + </div>
  13 + <div class="uk-grid uk-width-4-5" >
  14 +
  15 + <div class="uk-width-5-5">
  16 + <form class="uk-form uk-form-horizontal"> </form>
  17 + </div>
  18 +
  19 + </div>
  20 +
7 </div> 21 </div>
8 22
9 <script> 23 <script>
@@ -26,13 +40,18 @@ @@ -26,13 +40,18 @@
26 sch.stopStation = route[route.length - 1]; 40 sch.stopStation = route[route.length - 1];
27 var formHtml = template('ycsf-form-temp', sch); 41 var formHtml = template('ycsf-form-temp', sch);
28 $('form', modal).html(formHtml); 42 $('form', modal).html(formHtml);
  43 +
  44 +
  45 +
  46 + sch.rq1 =moment(new Date().getTime() - (60 *1000)).format("HH:mm");
  47 + sch.rq2 =moment(new Date()).format("HH:mm")
  48 + var formHtmls = template('sjZ-divs-temp', sch);
  49 + $('.sjzlist', modal).html(formHtmls);
29 50
30 f.formValidation(gb_form_validation_opts); 51 f.formValidation(gb_form_validation_opts);
31 f.on('success.form.fv', function(e) { 52 f.on('success.form.fv', function(e) {
32 - debugger  
33 e.preventDefault(); 53 e.preventDefault();
34 var data = $(this).serializeJSON(); 54 var data = $(this).serializeJSON();
35 - debugger  
36 55
37 gb_common.$post('/realSchedule/revokeRealOutgo_zndd', { 56 gb_common.$post('/realSchedule/revokeRealOutgo_zndd', {
38 id: sch.sch.id, 57 id: sch.sch.id,
src/main/resources/static/real_control_v2/zndd/yanshi/static/css/sjz.css
@@ -50,7 +50,7 @@ @@ -50,7 +50,7 @@
50 .history-date ul li { 50 .history-date ul li {
51 background:url(../image/yes.png) no-repeat 180px 0; 51 background:url(../image/yes.png) no-repeat 180px 0;
52 background-size: 15px 15px; 52 background-size: 15px 15px;
53 - padding-bottom:50px; 53 + padding-bottom:10px;
54 zoom:1; 54 zoom:1;
55 } 55 }
56 .history-date ul li.last { 56 .history-date ul li.last {
@@ -65,8 +65,8 @@ @@ -65,8 +65,8 @@
65 } 65 }
66 .history-date ul li h3 { 66 .history-date ul li h3 {
67 float:left; 67 float:left;
68 - width:20%;  
69 - text-align:right; 68 + /*width:20%;
  69 + text-align:right;*/
70 padding-right:19px; 70 padding-right:19px;
71 color:#c3c3c3; 71 color:#c3c3c3;
72 font:normal 18px/16px Arial; 72 font:normal 18px/16px Arial;
@@ -77,14 +77,14 @@ @@ -77,14 +77,14 @@
77 font-size:12px; 77 font-size:12px;
78 } 78 }
79 .history-date ul li dl { 79 .history-date ul li dl {
80 - width: 70%; 80 + /*width: 70%;*/
81 float:left; 81 float:left;
82 - padding-left:41px; 82 +/* padding-left:41px;*/
83 margin-top:-5px; 83 margin-top:-5px;
84 font-family:微软雅黑; 84 font-family:微软雅黑;
85 } 85 }
86 .history-date ul li dl dt { 86 .history-date ul li dl dt {
87 - font:20px/22px 微软雅黑; 87 + /*font:20px/22px 微软雅黑;*/
88 color:#737373; 88 color:#737373;
89 } 89 }
90 .history-date ul li dl dt span { 90 .history-date ul li dl dt span {