Commit d17111233379484c9d4b0b73378c765f54ab4a05

Authored by 廖磊
2 parents d531ff0f 3c109706

Merge branch 'minhang' of

http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
src/main/java/com/bsth/data/schedule/thread/SubmitToTrafficManage.java
1 1 package com.bsth.data.schedule.thread;
2 2  
3 3 import com.bsth.service.TrafficManageService;
  4 +import com.bsth.service.traffic.YgcBasicDataService;
4 5 import org.slf4j.Logger;
5 6 import org.slf4j.LoggerFactory;
6 7 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -18,6 +19,9 @@ public class SubmitToTrafficManage extends Thread{
18 19 @Autowired
19 20 TrafficManageService trafficManageService;
20 21  
  22 + @Autowired
  23 + YgcBasicDataService ygcBasicDataService;
  24 +
21 25 @Override
22 26 public void run() {
23 27 logger.info("开始提交数据到运管处...");
... ... @@ -46,6 +50,12 @@ public class SubmitToTrafficManage extends Thread{
46 50 } catch (Exception e) {
47 51 logger.error("提交线路计划班次表到运管处失败", e);
48 52 }
  53 + try {
  54 + // 运管处基础数据更新
  55 + ygcBasicDataService.updateYgcBasicData();
  56 + } catch (Exception e) {
  57 + logger.error("运管处基础数据更新失败", e);
  58 + }
49 59 logger.info("提交数据到运管处结束!");
50 60 }
51 61 }
... ...
src/main/java/com/bsth/service/forms/impl/FormsServiceImpl.java
... ... @@ -977,9 +977,11 @@ public class FormsServiceImpl implements FormsService {
977 977  
978 978 List<ScheduleRealInfo> list = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, startDate, endDate, company, subCompany);
979 979 List<Line> lineList = lineRepository.findLineBygsBm(company, subCompany, line.length()==0?"%"+line+"%":line);
980   -
981   - String sql = "select * from bsth_c_s_sp_info where gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"' "
982   - + "and DATE_FORMAT(schedule_date,'%Y-%m-%d') BETWEEN '"+startDate+"' and '"+endDate+"' ";
  980 +
  981 + String sql = "select gs_name, fgs_name, cl_zbh, fcsj, bc_type, xl_bm, xl_name, schedule_date"
  982 + + " from bsth_c_s_sp_info where gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"' "
  983 + + "and DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"' "
  984 + + "and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"' ";
983 985 if(line.trim().length() != 0){
984 986 sql += "and xl_bm = '"+line+"' ";
985 987 }
... ...
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
... ... @@ -720,36 +720,40 @@ public class ReportServiceImpl implements ReportService{
720 720 Map<String, Object> tempMap = new HashMap<String, Object>();
721 721 List<Map<String, Object>> list2 = keyMap.get(key);
722 722 List<Integer> cjs = new ArrayList<Integer>();
723   - int sxsj = 0, xxsj = 0, zcj = 0, tssj = 0;
724   - int sxbc = 0, xxbc = 0;
725   - int temp = 24*60+1;
  723 + int sxsj = 0, xxsj = 0, sxtssj = 0, xxtssj = 0;
  724 + int sxbc = 0, xxbc = 0, sxtsbc = 0, xxtsbc = 0;
  725 + int temp = 24*60+1, zcj = 0;
726 726 boolean ists = false;
727 727 for(Map<String, Object> m : list2){
728 728 String[] split = m.get("fcsj").toString().split(":");
729 729 int fcsj = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);
730 730 int xlDir = Integer.valueOf(m.get("dir").toString());
731 731 int bcsj = Integer.valueOf(m.get("bcsj").toString());
  732 + if(temp >= fcsj){
  733 + temp = fcsj;
  734 + ists = false;
  735 + }
732 736 if(xlDir == 0){
733 737 sxsj += bcsj;
734 738 sxbc ++;
  739 + if(ists){
  740 + sxtssj += fcsj - temp;
  741 + sxtsbc++;
  742 + }
735 743 } else {
736 744 xxsj += bcsj;
737 745 xxbc ++;
738   - }
739   - if(temp >= fcsj){
740   - temp = fcsj;
741   - ists = false;
742   - } else {
743 746 if(ists){
744   - tssj += fcsj - temp;
745   - ists = false;
746   - } else {
747   - cjs.add(fcsj - temp);
  747 + xxtssj += fcsj - temp;
  748 + xxtsbc++;
748 749 }
  750 + }
  751 + if(temp < fcsj){
  752 + cjs.add(fcsj - temp);
749 753 temp = fcsj;
750   - if(m.get("ists").equals("1")){
751   - ists = true;
752   - }
  754 + }
  755 + if(m.get("ists").toString().trim().equals("1")){
  756 + ists = true;
753 757 }
754 758 }
755 759 Collections.sort(cjs);
... ... @@ -757,12 +761,14 @@ public class ReportServiceImpl implements ReportService{
757 761 zcj += i;
758 762 }
759 763 tempMap.put("sjd", key);
760   - tempMap.put("sxsj", sxsj / sxbc);
761   - tempMap.put("xxsj", xxsj / xxbc);
762   - tempMap.put("fqsj", (sxsj + xxsj) / list2.size());
  764 + tempMap.put("sxsj", sxbc != 0 ? sxsj / sxbc : "0");
  765 + tempMap.put("xxsj", xxbc != 0 ? xxsj / xxbc : "0");
  766 + tempMap.put("sxtssj", sxtsbc != 0 ? sxtssj / sxtsbc : "0");
  767 + tempMap.put("xxtssj", xxtsbc != 0 ? xxtssj / xxtsbc : "0");
  768 + tempMap.put("fqsj", Integer.valueOf(tempMap.get("sxsj").toString()) + Integer.valueOf(tempMap.get("xxsj").toString())
  769 + + Integer.valueOf(tempMap.get("sxtssj").toString()) + Integer.valueOf(tempMap.get("xxtssj").toString()));
763 770 tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——");
764 771 tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/");
765   - tempMap.put("tssj", tssj);
766 772 maps.put(key, tempMap);
767 773 }
768 774 newList.add(maps.get("(首)——6:30"));
... ...
src/main/java/com/bsth/service/schedule/impl/PeopleCarPlanServiceImpl.java
... ... @@ -803,6 +803,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
803 803 String line = map.get("line").toString();
804 804 String startDate = map.get("startDate").toString();
805 805 String endDate = map.get("endDate").toString();
  806 + String bcType = map.get("bcType").toString();
806 807 String nbbm = map.get("nbbm").toString();
807 808 String type = map.get("type").toString();
808 809  
... ... @@ -829,6 +830,11 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
829 830 sql += " and gs_bm like '%"+company+"%' and fgs_bm like '%"+subCompany+"%'";
830 831 // }
831 832 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
  833 + if(bcType.trim().equals("1")){
  834 + sql += " and bc_type != 'region'";
  835 + } else if(bcType.trim().equals("2")){
  836 + sql += " and bc_type = 'region'";
  837 + }
832 838  
833 839 list = jdbcTemplate.query(sql,
834 840 new RowMapper<ScheduleRealInfo>(){
... ...
src/main/java/com/bsth/service/traffic/YgcBasicDataService.java 0 → 100644
  1 +package com.bsth.service.traffic;
  2 +
  3 +/**
  4 + * 运管处基础数据操作接口类
  5 + * Created by zlz on 2017/6/16.
  6 + */
  7 +public interface YgcBasicDataService {
  8 + /**
  9 + * 更新运管处基础数据
  10 + */
  11 + void updateYgcBasicData();
  12 +}
  13 +
... ...
src/main/java/com/bsth/service/traffic/impl/YgcBasicDataServiceImpl.java 0 → 100644
  1 +package com.bsth.service.traffic.impl;
  2 +
  3 +import com.bsth.service.impl.TrafficManageServiceImpl;
  4 +import com.bsth.service.traffic.YgcBasicDataService;
  5 +import com.bsth.util.db.DBUtils_oldSystem;
  6 +import org.apache.axiom.om.*;
  7 +import org.apache.axis2.addressing.EndpointReference;
  8 +import org.apache.axis2.client.Options;
  9 +import org.apache.axis2.client.ServiceClient;
  10 +import org.apache.commons.codec.digest.DigestUtils;
  11 +import org.slf4j.Logger;
  12 +import org.slf4j.LoggerFactory;
  13 +import org.springframework.beans.factory.annotation.Autowired;
  14 +import org.springframework.jdbc.core.BatchPreparedStatementSetter;
  15 +import org.springframework.jdbc.core.JdbcTemplate;
  16 +import org.springframework.stereotype.Service;
  17 +import org.w3c.dom.Document;
  18 +import org.w3c.dom.NodeList;
  19 +
  20 +import javax.activation.DataHandler;
  21 +import javax.xml.parsers.DocumentBuilder;
  22 +import javax.xml.parsers.DocumentBuilderFactory;
  23 +import java.io.*;
  24 +import java.sql.PreparedStatement;
  25 +import java.sql.SQLException;
  26 +import java.util.ArrayList;
  27 +import java.util.HashMap;
  28 +import java.util.List;
  29 +import java.util.zip.ZipEntry;
  30 +import java.util.zip.ZipFile;
  31 +import java.util.zip.ZipInputStream;
  32 +
  33 +/**
  34 + * 运管处基础数据操作类
  35 + * Created by zq on 2017/6/15.
  36 + */
  37 +@Service
  38 +public class YgcBasicDataServiceImpl implements YgcBasicDataService{
  39 + Logger logger = LoggerFactory.getLogger(TrafficManageServiceImpl.class);
  40 +
  41 + @Autowired
  42 + JdbcTemplate jdbcTemplate;
  43 +
  44 + private static String IP = "218.242.195.76:9091";
  45 + private static String targetEndpoint = "http://" + IP +"/ygc.TransManager.Basicdown?wsdl";
  46 + private static String namespace = "http://service.shygc.com";
  47 + private static String userName = "admin";
  48 + private static String passWord = "000000";
  49 + private static EndpointReference targetEPR;
  50 + {
  51 + try {
  52 + targetEPR = new EndpointReference(targetEndpoint);
  53 + } catch (Exception e) {
  54 + e.printStackTrace();
  55 + }
  56 + }
  57 +
  58 + /**
  59 + * 更新运管处基础数据
  60 + */
  61 + public void updateYgcBasicData(){
  62 + String saveFile = "ygcBasicData.zip";
  63 + String flag = "failure";
  64 + try {
  65 + // 调用接口下载基础数据
  66 + if(download(userName, DigestUtils.md5Hex(passWord), saveFile)){
  67 + // 读取基础数据zip
  68 + StringBuffer sb = readZipFile(saveFile);
  69 + // 解析xml
  70 + List<HashMap<String,String>> result = parseXml(sb);
  71 + // 插入数据库
  72 + if(result != null && result.size() > 0){
  73 + insertRecord(result);
  74 + }
  75 + }
  76 + flag = "success";
  77 + }catch (Exception e){
  78 + e.printStackTrace();
  79 + }
  80 + finally {
  81 + // 删除文件
  82 + File fill = new File(saveFile);
  83 + logger.info("updateYgcBasicData:"+fill.getAbsolutePath());
  84 + logger.info("updateYgcBasicData:"+flag);
  85 + if(fill.exists()){
  86 + fill.delete();
  87 + }
  88 + }
  89 + }
  90 + /**
  91 + * 下载基础数据,并生成rar文件
  92 + * @param userName
  93 + * @param password
  94 + * @param saveFile
  95 + * @return
  96 + */
  97 + private boolean download(String userName, String password, String saveFile)
  98 + {
  99 + try
  100 + {
  101 + OMElement data = buildDownloadEnvelope(userName, password);
  102 + ServiceClient sender = new ServiceClient();
  103 + Options options = sender.getOptions();
  104 + options.setProperty("SO_TIMEOUT", Integer.valueOf(1800000));
  105 + options.setTo(targetEPR);
  106 + sender.setOptions(options);
  107 + System.out.println("The data in method download: " + data);
  108 + data.build();
  109 + OMElement ome = sender.sendReceive(data);
  110 +
  111 + OMText binaryNode = (OMText)ome.getFirstOMChild();
  112 + binaryNode.setOptimize(true);
  113 + DataHandler actualDH = (DataHandler)binaryNode.getDataHandler();
  114 + FileOutputStream imageOutStream = new FileOutputStream(saveFile);
  115 + InputStream is = actualDH.getInputStream();
  116 + int read ;
  117 + byte[] buffer = new byte[1024];
  118 + while ((read = is.read(buffer)) != -1) {
  119 + imageOutStream.write(buffer, 0, read);
  120 + }
  121 + return true;
  122 + } catch (Exception e) {
  123 + e.printStackTrace();
  124 + }return false;
  125 + }
  126 +
  127 + /**
  128 + * 构建webservice接口参数
  129 + * @param userName
  130 + * @param password
  131 + * @return
  132 + */
  133 + private OMElement buildDownloadEnvelope(String userName, String password)
  134 + {
  135 + OMFactory fac = OMAbstractFactory.getOMFactory();
  136 + OMNamespace omNs = fac.createOMNamespace(namespace,
  137 + "ser");
  138 + OMElement data = fac.createOMElement("downloadAllDataFile", omNs);
  139 + OMElement _userName = fac.createOMElement("userName", omNs);
  140 + _userName.setText(userName);
  141 + OMElement _passWord = fac.createOMElement("passWord", omNs);
  142 + _passWord.setText(String.valueOf(password));
  143 +
  144 + data.addChild(_userName);
  145 + data.addChild(_passWord);
  146 +
  147 + OMElement soap = fac.createOMElement("downloadAllDataFile", omNs);
  148 + soap.addChild(data);
  149 + return soap;
  150 + }
  151 +
  152 + /**
  153 + * 读取zip文件的内容
  154 + * @param file
  155 + * @return
  156 + * @throws Exception
  157 + */
  158 + public StringBuffer readZipFile(String file) throws Exception {
  159 + ZipFile zf = new ZipFile(file);
  160 + InputStream in = new BufferedInputStream(new FileInputStream(file));
  161 + ZipInputStream zin = new ZipInputStream(in);
  162 + ZipEntry ze;
  163 + StringBuffer sb = new StringBuffer();
  164 + while ((ze = zin.getNextEntry()) != null) {
  165 + System.out.print(ze);
  166 + if (ze.isDirectory()) {
  167 + } else {
  168 + System.err.println("file - " + ze.getName() + " : "
  169 + + ze.getSize() + " bytes");
  170 + long size = ze.getSize();
  171 + if (size > 0) {
  172 + BufferedReader br = new BufferedReader(
  173 + new InputStreamReader(zf.getInputStream(ze),"GBK"));
  174 + String line;
  175 + boolean addFlag = false;
  176 + while ((line = br.readLine()) != null) {
  177 + if(line.indexOf("BusLineList") != -1){
  178 + addFlag = true;
  179 + }
  180 + if(addFlag){
  181 + sb.append(line);
  182 + }
  183 +
  184 + if(line.indexOf("/BusLineList") != -1){
  185 + break;
  186 + }
  187 + }
  188 + br.close();
  189 + }
  190 + }
  191 + }
  192 + zin.closeEntry();
  193 + return sb;
  194 + }
  195 +
  196 + /**
  197 + * 解析xml
  198 + * @param sb
  199 + */
  200 + private List<HashMap<String,String>> parseXml(StringBuffer sb){
  201 + List<HashMap<String,String>> list = new ArrayList<>();
  202 + HashMap<String,String> map;
  203 + try {
  204 + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  205 + DocumentBuilder builder = factory.newDocumentBuilder();
  206 + Document doc = builder.parse(new ByteArrayInputStream(sb.toString().getBytes()));
  207 + NodeList nl = doc.getElementsByTagName("BusLine");
  208 + String lineName; //线路名称
  209 + String lineId; // 线路ID
  210 + String abbreviation ; // 公司名称
  211 + String ddfs ; // 调度方式
  212 + String lineStandardCode; // 上海市线路编码
  213 + String parentUnitName ; // 总公司
  214 + for (int i = 0; i < nl.getLength(); i++) {
  215 + parentUnitName = doc.getElementsByTagName("ParentUnitName").item(i).getFirstChild() == null ?"":
  216 + doc.getElementsByTagName("ParentUnitName").item(i).getFirstChild().getNodeValue();
  217 + if(parentUnitName.indexOf("浦东") != -1){// 只查找浦东的数据
  218 + lineName = doc.getElementsByTagName("LineName").item(i).getFirstChild() == null ?"":
  219 + doc.getElementsByTagName("LineName").item(i).getFirstChild().getNodeValue();
  220 + lineId = doc.getElementsByTagName("LineId").item(i).getFirstChild() == null ?"":
  221 + doc.getElementsByTagName("LineId").item(i).getFirstChild().getNodeValue();
  222 + abbreviation = doc.getElementsByTagName("Abbreviation").item(i).getFirstChild() == null ?"":
  223 + doc.getElementsByTagName("Abbreviation").item(i).getFirstChild().getNodeValue();
  224 + ddfs = doc.getElementsByTagName("DDFS").item(i).getFirstChild() == null ?"":
  225 + doc.getElementsByTagName("DDFS").item(i).getFirstChild().getNodeValue();
  226 + lineStandardCode = doc.getElementsByTagName("LineStandardCode").item(i).getFirstChild() == null ?"":
  227 + doc.getElementsByTagName("LineStandardCode").item(i).getFirstChild().getNodeValue();
  228 + map = new HashMap<>();
  229 + map.put("lineName",lineName);
  230 + map.put("lineId",lineId);
  231 + map.put("abbreviation",abbreviation);
  232 + map.put("ddfs",ddfs);
  233 + map.put("lineStandardCode",lineStandardCode);
  234 + list.add(map);
  235 + }
  236 + }
  237 + }catch (Exception e){
  238 + e.printStackTrace();;
  239 + }
  240 + return list;
  241 + }
  242 +
  243 + /**
  244 + * 批量插入用法
  245 + * @param list
  246 + */
  247 + public boolean insertRecord(List<HashMap<String,String>> list)
  248 + {
  249 + boolean flag = false;
  250 + final List<HashMap<String,String>> tempList=list;
  251 + String sql="INSERT INTO JJWGPS_T_SHSXLFILE(XLID,SHSXLBM,XLMC,GSMC,DDFS,CREATETIME,XLMC_ALL) VALUES (?,?,?,?,?,SYSDATE,?)";
  252 + jdbcTemplate = new JdbcTemplate(DBUtils_oldSystem.getDataSource());
  253 + jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter()
  254 + {
  255 + public void setValues(PreparedStatement ps, int i)throws SQLException
  256 + {
  257 + String lineId =tempList.get(i).get("lineId");
  258 + String lineStandardCode =tempList.get(i).get("lineStandardCode");
  259 + String lineName =tempList.get(i).get("lineName");
  260 + String abbreviation =tempList.get(i).get("abbreviation");
  261 + String ddfs =tempList.get(i).get("ddfs");
  262 + String lineNameAll = lineName;
  263 + if(ddfs.equals("2")){
  264 + lineNameAll = lineName+"区间(走向部分在全程线路之外)";
  265 + }else if(ddfs.equals("7")){
  266 + lineNameAll = lineName+"区间(走向在全程线路之内)";
  267 + }
  268 + ps.setString(1, lineId);
  269 + ps.setString(2, lineStandardCode);
  270 + ps.setString(3, lineName);
  271 + ps.setString(4, abbreviation);
  272 + ps.setString(5, ddfs);
  273 + ps.setString(6, lineNameAll);
  274 + }
  275 + public int getBatchSize()
  276 + {
  277 + return tempList.size();
  278 + }
  279 + });
  280 + flag = true;
  281 + return flag;
  282 + }
  283 +}
... ...
src/main/resources/static/pages/forms/statement/scheduleAnaly_sum.html
... ... @@ -41,6 +41,14 @@
41 41 <span class="item-label" style="width: 80px;">线路: </span>
42 42 <select class="form-control" name="line" id="line" style="width: 160px;"></select>
43 43 </div>
  44 + <div style="display: inline-block;margin-left: 10px;">
  45 + <span class="item-label" style="width: 80px;">班次类型: </span>
  46 + <select class="form-control" name="bcType" id="bcType" style="width: 160px;">
  47 + <option value="0">全部</option>
  48 + <option value="1">全程</option>
  49 + <option value="2">区间</option>
  50 + </select>
  51 + </div>
44 52 <div style="margin-top: 10px"></div>
45 53 <div style="display: inline-block;margin-left: 10px;">
46 54 <span class="item-label" style="width: 80px;">开始时间: </span>
... ... @@ -60,7 +68,7 @@
60 68 <!-- <option value="">请选择...</option> -->
61 69 <!-- </select> -->
62 70 <!-- </div> -->
63   - <div class="form-group">
  71 + <div class="form-group" style="margin-left: 10px">
64 72 <input class="btn btn-default" type="button" id="query" value="筛选"/>
65 73 <input class="btn btn-default" type="button" id="export" value="导出"/>
66 74 </div>
... ... @@ -207,6 +215,7 @@
207 215 var startDate = $("#startDate").val();
208 216 var endDate = $("#endDate").val();
209 217 var model = $("#model").val();
  218 + var bcType = "0";
210 219 var nbbm = "";
211 220 var company = $("#company").val();
212 221 var subCompany = $("#subCompany").val();
... ... @@ -224,6 +233,7 @@
224 233 startDate = $("#startDate").val();
225 234 endDate = $("#endDate").val();
226 235 // model = $("#model").val();
  236 + bcType = $("#bcType").val();
227 237 nbbm = $("#nbbm").val()!=null?$("#nbbm").val():"";
228 238 company = $("#company").val();
229 239 subCompany = $("#subCompany").val();
... ... @@ -231,6 +241,7 @@
231 241 params['line'] = line;
232 242 params['startDate'] = startDate;
233 243 params['endDate'] = endDate;
  244 + params['bcType'] = bcType;
234 245 // params['model'] = model;
235 246 params['company'] = company;
236 247 params['subCompany'] = subCompany;
... ... @@ -265,6 +276,7 @@
265 276 params['line'] = line;
266 277 params['startDate'] = startDate;
267 278 params['endDate'] = endDate;
  279 + params['bcType'] = bcType;
268 280 // params['model'] = model;
269 281 params['company'] = company;
270 282 params['subCompany'] = subCompany;
... ...
src/main/resources/static/pages/report/timetable/timetable.html
... ... @@ -165,19 +165,21 @@
165 165 <div class="col-md-6" >
166 166 <table class="table table-bordered table-checkable" id="formsTime5">
167 167 <tr>
168   - <td colspan="7">全日分组行驶时间(区间除外)</td>
  168 + <td colspan="8">全日分组行驶时间(区间除外)</td>
169 169 </tr>
170 170 <tr>
171 171 <td width="20%" rowspan="2" style="text-align:center;vertical-align:middle;">分组 时间</td>
172   - <td width="23%" colspan="2" style="text-align:center;vertical-align:middle;">计划行驶(分)</td>
173   - <td width="15%" rowspan="2" style="text-align:center;vertical-align:middle;">分圈时间</td>
174   - <td width="15%" rowspan="2" style="text-align:center;vertical-align:middle;">停驶时间</td>
175   - <td width="15%" rowspan="2" style="text-align:center;vertical-align:middle;">车距区间</td>
176   - <td width="12%" rowspan="2" style="text-align:center;vertical-align:middle;">平均车距</td>
  172 + <td width="19%" colspan="2" style="text-align:center;vertical-align:middle;">计划行驶(分)</td>
  173 + <td width="19%" colspan="2" style="text-align:center;vertical-align:middle;">停站时间</td>
  174 + <td width="14%" rowspan="2" style="text-align:center;vertical-align:middle;">周转时间</td>
  175 + <td width="14%" rowspan="2" style="text-align:center;vertical-align:middle;">车距区间</td>
  176 + <td width="14%" rowspan="2" style="text-align:center;vertical-align:middle;">平均车距</td>
177 177 </tr>
178 178 <tr>
179 179 <td>上行</td>
180 180 <td style="text-align:center;">下行</td>
  181 + <td>上行</td>
  182 + <td style="text-align:center;">下行</td>
181 183 </tr>
182 184 <tbody class="tbody_time_5">
183 185  
... ... @@ -405,15 +407,16 @@
405 407 <td align="center">{{result.sjd}}</td>
406 408 <td align="center">{{result.sxsj}}</td>
407 409 <td align="center">{{result.xxsj}}</td>
  410 + <td align="center">{{result.sxtssj}}</td>
  411 + <td align="center">{{result.xxtssj}}</td>
408 412 <td align="center">{{result.fqsj}}</td>
409   - <td align="center">{{result.tssj}}</td>
410 413 <td align="center">{{result.cjqj}}</td>
411 414 <td align="center">{{result.pjcj}}</td>
412 415 </tr>
413 416 {{/each}}
414 417 {{if list.length == 0}}
415 418 <tr>
416   - <td colspan="7"><h6 class="muted">没有找到相关数据</h6></td>
  419 + <td colspan="8"><h6 class="muted">没有找到相关数据</h6></td>
417 420 </tr>
418 421 {{/if}}
419 422 </script>
... ...