Commit b6d025514b61ed151a1c77dd1deca2a2fc852c79

Authored by 潘钊
2 parents 1c67c679 269f7238

Merge branch 'minhang' of http://222.66.0.204:8090/panzhaov5/bsth_control into minhang

# Conflicts:
#	src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/main.html
Showing 37 changed files with 7704 additions and 998 deletions
.gitignore
@@ -10,7 +10,8 @@ test_coverage/ @@ -10,7 +10,8 @@ test_coverage/
10 .DS_Store 10 .DS_Store
11 *.iml 11 *.iml
12 tmp 12 tmp
  13 +E:/
13 14
14 # git忽略空文件夹,按照惯例,空文件夹下放置.gitkeep文件避免文件夹被忽略不上传。 15 # git忽略空文件夹,按照惯例,空文件夹下放置.gitkeep文件避免文件夹被忽略不上传。
15 -!.gitkeep  
16 -/target/ 16 +!.gitkeep
  17 +/target/
src/main/java/com/bsth/controller/gps/GpsController.java
@@ -3,8 +3,10 @@ package com.bsth.controller.gps; @@ -3,8 +3,10 @@ package com.bsth.controller.gps;
3 import com.bsth.data.BasicData; 3 import com.bsth.data.BasicData;
4 import com.bsth.data.gpsdata.GpsEntity; 4 import com.bsth.data.gpsdata.GpsEntity;
5 import com.bsth.data.gpsdata.GpsRealData; 5 import com.bsth.data.gpsdata.GpsRealData;
  6 +import com.bsth.entity.excep.Speeding;
6 import com.bsth.service.gps.GpsService; 7 import com.bsth.service.gps.GpsService;
7 import com.bsth.service.gps.entity.GpsSpeed; 8 import com.bsth.service.gps.entity.GpsSpeed;
  9 +import com.bsth.util.PageObject;
8 import com.google.common.base.Splitter; 10 import com.google.common.base.Splitter;
9 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.web.bind.annotation.*; 12 import org.springframework.web.bind.annotation.*;
@@ -192,4 +194,13 @@ public class GpsController { @@ -192,4 +194,13 @@ public class GpsController {
192 return listGpsSpeed; 194 return listGpsSpeed;
193 } 195 }
194 196
  197 + @RequestMapping(value = "/pagequery",method = RequestMethod.GET)
  198 + public PageObject<GpsSpeed> pagequery(@RequestParam Map<String, Object> map){
  199 + PageObject<GpsSpeed> pageObject = null;
  200 + map.put("curPage", map.get("page").toString());
  201 + map.put("pageData","10");
  202 + pageObject=gpsService.Pagequery(map);
  203 + return pageObject;
  204 + }
  205 +
195 } 206 }
src/main/java/com/bsth/controller/schedule/core/TTInfoController.java
@@ -6,10 +6,7 @@ import com.bsth.entity.schedule.TTInfo; @@ -6,10 +6,7 @@ import com.bsth.entity.schedule.TTInfo;
6 import com.bsth.service.schedule.TTInfoService; 6 import com.bsth.service.schedule.TTInfoService;
7 import com.bsth.service.schedule.exception.ScheduleException; 7 import com.bsth.service.schedule.exception.ScheduleException;
8 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
9 -import org.springframework.web.bind.annotation.RequestMapping;  
10 -import org.springframework.web.bind.annotation.RequestMethod;  
11 -import org.springframework.web.bind.annotation.RequestParam;  
12 -import org.springframework.web.bind.annotation.RestController; 9 +import org.springframework.web.bind.annotation.*;
13 10
14 import java.util.HashMap; 11 import java.util.HashMap;
15 import java.util.Map; 12 import java.util.Map;
@@ -87,4 +84,18 @@ public class TTInfoController extends BController&lt;TTInfo, Long&gt; { @@ -87,4 +84,18 @@ public class TTInfoController extends BController&lt;TTInfo, Long&gt; {
87 return rtn; 84 return rtn;
88 } 85 }
89 86
  87 + @RequestMapping(value = "/backup/{ttinfo}", method = RequestMethod.GET)
  88 + public Map<String, Object> backup(@PathVariable(value = "ttinfo") Long ttInfoId) {
  89 + Map<String, Object> rtn = new HashMap<>();
  90 + try {
  91 + // 备份时刻表
  92 + this.ttInfoService.backUp(ttInfoId);
  93 + } catch (ScheduleException exp) {
  94 + rtn.put("status", ResponseCode.ERROR);
  95 + rtn.put("msg", exp.getMessage());
  96 + }
  97 +
  98 + return rtn;
  99 + }
  100 +
90 } 101 }
91 \ No newline at end of file 102 \ No newline at end of file
src/main/java/com/bsth/entity/schedule/TTInfo.java
1 package com.bsth.entity.schedule; 1 package com.bsth.entity.schedule;
2 2
3 import com.bsth.entity.Line; 3 import com.bsth.entity.Line;
  4 +import com.bsth.service.schedule.utils.TimeTableProto;
4 import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 5 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
5 6
6 import javax.persistence.*; 7 import javax.persistence.*;
@@ -63,6 +64,9 @@ public class TTInfo extends BEntity { @@ -63,6 +64,9 @@ public class TTInfo extends BEntity {
63 /** 特殊有效日期(格式:2001-01-01,多个用逗号隔开) */ 64 /** 特殊有效日期(格式:2001-01-01,多个用逗号隔开) */
64 private String special_days; 65 private String special_days;
65 66
  67 + /** 最近备份日期 */
  68 + private Date lastBackUpDate;
  69 +
66 public TTInfo() {} 70 public TTInfo() {}
67 public TTInfo(Object id, Object xlid, Object name, Object nds, Object sds) { 71 public TTInfo(Object id, Object xlid, Object name, Object nds, Object sds) {
68 if (id != null) { 72 if (id != null) {
@@ -83,6 +87,32 @@ public class TTInfo extends BEntity { @@ -83,6 +87,32 @@ public class TTInfo extends BEntity {
83 } 87 }
84 } 88 }
85 89
  90 + /**
  91 + * 输出proto生成的builder
  92 + * @return
  93 + */
  94 + public TimeTableProto.TTInfo.Builder toProtoBuilder() {
  95 + // 注意部份空值处理,必须覆默认值,否则报nullexceptio
  96 + return TimeTableProto.TTInfo.newBuilder()
  97 + .setId(id)
  98 + .setName(name)
  99 + .setXl(xl.getId())
  100 + .setXlName(xl.getName())
  101 + .setXlDir(xlDir)
  102 + .setQyrq(qyrq.getTime())
  103 + .setIsEnableDisTemplate(isEnableDisTemplate)
  104 + .setIsCancel(isCancel)
  105 + .setRuleDays(rule_days)
  106 + .setSpecialDays(special_days)
  107 + .setCreateUser(getCreateBy() == null ? 0 : getCreateBy().getId())
  108 + .setCreateUserName(getCreateBy() == null ? "" : getCreateBy().getUserName())
  109 + .setUpdateUser(getUpdateBy() == null ? 0 : getUpdateBy().getId())
  110 + .setUpdateUserName(getUpdateBy() == null ? "" : getUpdateBy().getUserName())
  111 + .setCreateDate(getCreateDate() == null ? 0l : getCreateDate().getTime())
  112 + .setUpdateDate(getUpdateDate() == null ? 0l : getUpdateDate().getTime());
  113 +
  114 + }
  115 +
86 public Long getId() { 116 public Long getId() {
87 return id; 117 return id;
88 } 118 }
@@ -178,4 +208,12 @@ public class TTInfo extends BEntity { @@ -178,4 +208,12 @@ public class TTInfo extends BEntity {
178 public void setIsCancel(Boolean isCancel) { 208 public void setIsCancel(Boolean isCancel) {
179 this.isCancel = isCancel; 209 this.isCancel = isCancel;
180 } 210 }
  211 +
  212 + public Date getLastBackUpDate() {
  213 + return lastBackUpDate;
  214 + }
  215 +
  216 + public void setLastBackUpDate(Date lastBackUpDate) {
  217 + this.lastBackUpDate = lastBackUpDate;
  218 + }
181 } 219 }
src/main/java/com/bsth/entity/schedule/TTInfoBackup.java 0 → 100644
  1 +package com.bsth.entity.schedule;
  2 +
  3 +import javax.persistence.*;
  4 +import java.util.Date;
  5 +
  6 +/**
  7 + * 时刻表信息备份。
  8 + * --不做关联信息,保存相应的关联id
  9 + */
  10 +@Entity
  11 +@Table(name="bsth_c_s_ttinfo_bak")
  12 +public class TTInfoBackup {
  13 +
  14 + /** 主键Id */
  15 + @Id
  16 + @GeneratedValue
  17 + private Long id;
  18 +
  19 + /** 关联 bsth_c_line 主键,不做mapping */
  20 + @Column(nullable = false)
  21 + private Integer xl;
  22 + /** 线路名称 */
  23 + @Column(nullable = false)
  24 + private String xlName;
  25 +
  26 + /** 关联 bsth_c_s_ttinfo 主键,不做mapping */
  27 + @Column(nullable = false)
  28 + private Long ttInfo;
  29 + /** 关联的时刻表名字 */
  30 + private String ttInfoName;
  31 +
  32 + /** 备份日期 */
  33 + @Column(nullable = false)
  34 + private Date backUpDate;
  35 + /** 备份的二进制内容(google protobuf格式) */
  36 + @Lob
  37 + private byte[] backUpInfo;
  38 +
  39 + public Long getId() {
  40 + return id;
  41 + }
  42 +
  43 + public void setId(Long id) {
  44 + this.id = id;
  45 + }
  46 +
  47 + public Integer getXl() {
  48 + return xl;
  49 + }
  50 +
  51 + public void setXl(Integer xl) {
  52 + this.xl = xl;
  53 + }
  54 +
  55 + public String getXlName() {
  56 + return xlName;
  57 + }
  58 +
  59 + public void setXlName(String xlName) {
  60 + this.xlName = xlName;
  61 + }
  62 +
  63 + public Long getTtInfo() {
  64 + return ttInfo;
  65 + }
  66 +
  67 + public void setTtInfo(Long ttInfo) {
  68 + this.ttInfo = ttInfo;
  69 + }
  70 +
  71 + public String getTtInfoName() {
  72 + return ttInfoName;
  73 + }
  74 +
  75 + public void setTtInfoName(String ttInfoName) {
  76 + this.ttInfoName = ttInfoName;
  77 + }
  78 +
  79 + public Date getBackUpDate() {
  80 + return backUpDate;
  81 + }
  82 +
  83 + public void setBackUpDate(Date backUpDate) {
  84 + this.backUpDate = backUpDate;
  85 + }
  86 +
  87 + public byte[] getBackUpInfo() {
  88 + return backUpInfo;
  89 + }
  90 +
  91 + public void setBackUpInfo(byte[] backUpInfo) {
  92 + this.backUpInfo = backUpInfo;
  93 + }
  94 +}
src/main/java/com/bsth/entity/schedule/TTInfoDetail.java
@@ -3,6 +3,7 @@ package com.bsth.entity.schedule; @@ -3,6 +3,7 @@ package com.bsth.entity.schedule;
3 import com.bsth.entity.CarPark; 3 import com.bsth.entity.CarPark;
4 import com.bsth.entity.Line; 4 import com.bsth.entity.Line;
5 import com.bsth.entity.Station; 5 import com.bsth.entity.Station;
  6 +import com.bsth.service.schedule.utils.TimeTableProto;
6 import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 7 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
7 8
8 import javax.persistence.*; 9 import javax.persistence.*;
@@ -99,6 +100,35 @@ public class TTInfoDetail extends BEntity { @@ -99,6 +100,35 @@ public class TTInfoDetail extends BEntity {
99 /** 备注 */ 100 /** 备注 */
100 private String remark; 101 private String remark;
101 102
  103 + /**
  104 + * 输出proto生成的builder
  105 + * @return
  106 + */
  107 + public TimeTableProto.TTInfoDetail.Builder toProtoBuilder() {
  108 + // 注意部份空值处理,必须覆默认值,否则报nullexception
  109 + return TimeTableProto.TTInfoDetail.newBuilder()
  110 + .setId(id)
  111 + .setXl(xl.getId())
  112 + .setXlName(xl.getName())
  113 + .setLp(lp.getId())
  114 + .setLpName(lp.getLpName())
  115 + .setFcno(fcno)
  116 + .setXlDir(xlDir)
  117 + .setQdzCode(qdzCode)
  118 + .setQdzName(qdzName)
  119 + .setZdzCode(zdzCode)
  120 + .setZdzName(zdzName)
  121 + .setFcsj(fcsj)
  122 + .setBcs(bcs)
  123 + .setJhlc(jhlc)
  124 + .setBcsj(bcsj)
  125 + .setBcType(bcType)
  126 + .setIsFB(isFB == null ? false : isFB)
  127 + .setIsTS(isTS == null ? false : isTS)
  128 + .setRemark(remark == null ? "" : remark)
  129 + ;
  130 + }
  131 +
102 public Long getId() { 132 public Long getId() {
103 return id; 133 return id;
104 } 134 }
src/main/java/com/bsth/repository/schedule/TTInfoBackupRepository.java 0 → 100644
  1 +package com.bsth.repository.schedule;
  2 +
  3 +import com.bsth.entity.schedule.TTInfoBackup;
  4 +import com.bsth.repository.BaseRepository;
  5 +import org.springframework.stereotype.Repository;
  6 +
  7 +/**
  8 + * Created by xu on 17/7/13.
  9 + */
  10 +@Repository
  11 +public interface TTInfoBackupRepository extends BaseRepository<TTInfoBackup, Long> {
  12 +}
src/main/java/com/bsth/service/excep/impl/SpeedingServiceImpl.java
@@ -14,13 +14,11 @@ import java.util.List; @@ -14,13 +14,11 @@ import java.util.List;
14 import java.util.Map; 14 import java.util.Map;
15 15
16 import org.springframework.jdbc.core.JdbcTemplate; 16 import org.springframework.jdbc.core.JdbcTemplate;
17 -import org.springframework.jdbc.core.RowMapper;  
18 import org.springframework.stereotype.Service; 17 import org.springframework.stereotype.Service;
19 import org.springframework.beans.factory.annotation.Autowired; 18 import org.springframework.beans.factory.annotation.Autowired;
20 19
21 import com.bsth.data.BasicData; 20 import com.bsth.data.BasicData;
22 import com.bsth.entity.excep.Speeding; 21 import com.bsth.entity.excep.Speeding;
23 -import com.bsth.entity.realcontrol.ScheduleRealInfo;  
24 import com.bsth.service.excep.SpeedingService; 22 import com.bsth.service.excep.SpeedingService;
25 import com.bsth.util.EchartConver; 23 import com.bsth.util.EchartConver;
26 import com.bsth.util.PageHelper; 24 import com.bsth.util.PageHelper;
@@ -42,7 +40,7 @@ public class SpeedingServiceImpl implements SpeedingService { @@ -42,7 +40,7 @@ public class SpeedingServiceImpl implements SpeedingService {
42 ResultSet rs = null; 40 ResultSet rs = null;
43 int page=Integer.parseInt(map.get("page").toString()); 41 int page=Integer.parseInt(map.get("page").toString());
44 List<Speeding> list=new ArrayList<Speeding>(); 42 List<Speeding> list=new ArrayList<Speeding>();
45 - String sql="select * from bsth_c_speeding where speed > 60 "; 43 + String sql="select * from bsth_c_speeding where 1=1 ";
46 Object line=map.get("line"); 44 Object line=map.get("line");
47 Object nbbm=map.get("nbbm"); 45 Object nbbm=map.get("nbbm");
48 Object updown=map.get("updown"); 46 Object updown=map.get("updown");
@@ -204,22 +202,40 @@ public class SpeedingServiceImpl implements SpeedingService { @@ -204,22 +202,40 @@ public class SpeedingServiceImpl implements SpeedingService {
204 int totalPage;//总页数 202 int totalPage;//总页数
205 int totalData = 0; 203 int totalData = 0;
206 if(list.size()>1){ 204 if(list.size()>1){
207 - Speeding speedingNow;//下标为i的车  
208 - Speeding speedingLast;//下标为i-1的车 205 + Speeding speedingNow;//下标为i的车辆行驶记录
  206 + Speeding speedingLast;//下标为i-1的车辆行驶记录
  207 + Speeding spped = null;//整合后的车辆行驶记录
209 String strNow; 208 String strNow;
210 String strLast; 209 String strLast;
  210 + boolean Flag = false;//判断是否有连续超速记录,默认没有
211 for(int i = 1;i<list.size();i++){ 211 for(int i = 1;i<list.size();i++){
212 speedingNow = list.get(i); 212 speedingNow = list.get(i);
213 speedingLast = list.get(i-1); 213 speedingLast = list.get(i-1);
214 - strNow = speedingNow.getVehicle()+speedingNow.getLine()+speedingNow.getUpDown();//同一车辆同一线路同一方向 214 + strNow = speedingNow.getVehicle()+speedingNow.getLine()+speedingNow.getUpDown();
215 strLast = speedingLast.getVehicle()+speedingLast.getLine()+speedingLast.getUpDown(); 215 strLast = speedingLast.getVehicle()+speedingLast.getLine()+speedingLast.getUpDown();
216 - //同一车辆同一线路同一方向并且该记录的超速的开始时间减去上一条超速记录的结束时间小于等于10s,证明该车超速。//PS:祛除数据库中的重复发送数据  
217 - if(strNow.equals(strLast) && Math.abs(speedingNow.getTimestamp()-speedingLast.getTimestamp())<=10*1000 && (speedingNow.getTimestamp()-speedingLast.getTimestamp()!=0)){  
218 - speedingLast.setEndtimestamp(speedingNow.getTimestamp());//设置结束时间时间戳  
219 - speedingLast.setEndtimestampDate(sdf.format(new Date(speedingNow.getTimestamp())));//设置结束时间  
220 - speedingLast.setEndlon(speedingNow.getLon());//设置结束时的经度  
221 - speedingLast.setEndlat(speedingNow.getLat());//设置结束时的纬度  
222 - listResult.add(speedingLast); 216 + if(speedingNow.getSpeed()>60 && speedingLast.getSpeed()>60 && strNow.equals(strLast)){//如果两条连续的记录都是超速且属于同一辆车。
  217 + if(Flag==false){//
  218 + spped = new Speeding();
  219 + spped.setId(speedingLast.getId());//设置连续超速记录Id
  220 + spped.setLine(speedingLast.getLine());//设置连续超速记录线路
  221 + spped.setLineName(speedingLast.getLineName());//设置连续超速记录线路名称
  222 + spped.setVehicle(speedingLast.getVehicle());//设置连续超速记录的车辆编号
  223 + spped.setUpDown(speedingLast.getUpDown());//设置上下行
  224 + spped.setLon(speedingLast.getLon());//设置开始时经度
  225 + spped.setLat(speedingLast.getLat());//设置开始时纬度
  226 + spped.setTimestamp(speedingLast.getTimestamp());//设置连续超速记录的开始时间
  227 + spped.setTimestampDate(speedingLast.getTimestampDate());//设置连续超速记录的开始时间戳
  228 + }
  229 + spped.setEndtimestamp(speedingNow.getTimestamp());//设置结束时间戳
  230 + spped.setEndtimestampDate(sdf.format(new Date(speedingNow.getTimestamp())));//设置结束时间
  231 + spped.setEndlon(speedingNow.getLon());//设置结束时的经度
  232 + spped.setEndlat(speedingNow.getLat());//设置结束时的纬度
  233 + Flag = true;
  234 + }else{
  235 + if(Flag){//如果上一条记录超速。
  236 + listResult.add(spped);
  237 + Flag = false;
  238 + }
223 } 239 }
224 } 240 }
225 Iterator<Speeding> speedIt = listResult.iterator(); 241 Iterator<Speeding> speedIt = listResult.iterator();
src/main/java/com/bsth/service/forms/impl/FormsServiceImpl.java
@@ -1020,19 +1020,19 @@ public class FormsServiceImpl implements FormsService { @@ -1020,19 +1020,19 @@ public class FormsServiceImpl implements FormsService {
1020 } 1020 }
1021 1021
1022 }); 1022 });
1023 - sql = "select name from bsth_c_line where sfyy = 0"; 1023 + sql = "select line_code from bsth_c_line where sfyy = 0";
1024 List<String> strList = new ArrayList<>(); 1024 List<String> strList = new ArrayList<>();
1025 strList = jdbcTemplate.query(sql, 1025 strList = jdbcTemplate.query(sql,
1026 new RowMapper<String>(){ 1026 new RowMapper<String>(){
1027 @Override 1027 @Override
1028 public String mapRow(ResultSet rs, int rowNum) throws SQLException { 1028 public String mapRow(ResultSet rs, int rowNum) throws SQLException {
1029 - return rs.getString("name"); 1029 + return rs.getString("line_code");
1030 } 1030 }
1031 }); 1031 });
1032 lineSet.addAll(strList); 1032 lineSet.addAll(strList);
1033 1033
1034 for(Line line1 : lineList){ 1034 for(Line line1 : lineList){
1035 - if(lineSet.contains(line1.getName())){ 1035 + if(lineSet.contains(line1.getLineCode())){
1036 continue; 1036 continue;
1037 } 1037 }
1038 if(line.trim().length() == 0 || line1.getLineCode().equals(line)){ 1038 if(line.trim().length() == 0 || line1.getLineCode().equals(line)){
src/main/java/com/bsth/service/gps/GpsService.java
@@ -4,6 +4,7 @@ import com.bsth.data.gpsdata.GpsEntity; @@ -4,6 +4,7 @@ import com.bsth.data.gpsdata.GpsEntity;
4 import com.bsth.service.gps.entity.GpsOutbound_DTO; 4 import com.bsth.service.gps.entity.GpsOutbound_DTO;
5 import com.bsth.service.gps.entity.GpsSpeed; 5 import com.bsth.service.gps.entity.GpsSpeed;
6 import com.bsth.service.gps.entity.GpsSpeed_DTO; 6 import com.bsth.service.gps.entity.GpsSpeed_DTO;
  7 +import com.bsth.util.PageObject;
7 8
8 import javax.servlet.http.HttpServletResponse; 9 import javax.servlet.http.HttpServletResponse;
9 10
@@ -45,4 +46,6 @@ public interface GpsService { @@ -45,4 +46,6 @@ public interface GpsService {
45 46
46 List<GpsSpeed> findPosition(String deviceid, String startdate, 47 List<GpsSpeed> findPosition(String deviceid, String startdate,
47 String enddate) throws ParseException; 48 String enddate) throws ParseException;
  49 +
  50 + PageObject<GpsSpeed> Pagequery(Map<String, Object> map);
48 } 51 }
src/main/java/com/bsth/service/gps/GpsServiceImpl.java
@@ -16,6 +16,8 @@ import com.bsth.repository.StationRepository; @@ -16,6 +16,8 @@ import com.bsth.repository.StationRepository;
16 import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; 16 import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
17 import com.bsth.service.gps.entity.*; 17 import com.bsth.service.gps.entity.*;
18 import com.bsth.util.DateUtils; 18 import com.bsth.util.DateUtils;
  19 +import com.bsth.util.PageHelper;
  20 +import com.bsth.util.PageObject;
19 import com.bsth.util.TransGPS; 21 import com.bsth.util.TransGPS;
20 import com.bsth.util.TransGPS.Location; 22 import com.bsth.util.TransGPS.Location;
21 import com.bsth.util.db.DBUtils_MS; 23 import com.bsth.util.db.DBUtils_MS;
@@ -44,6 +46,7 @@ import java.net.URLEncoder; @@ -44,6 +46,7 @@ import java.net.URLEncoder;
44 import java.sql.Connection; 46 import java.sql.Connection;
45 import java.sql.PreparedStatement; 47 import java.sql.PreparedStatement;
46 import java.sql.ResultSet; 48 import java.sql.ResultSet;
  49 +import java.sql.SQLException;
47 import java.text.DecimalFormat; 50 import java.text.DecimalFormat;
48 import java.text.ParseException; 51 import java.text.ParseException;
49 import java.text.SimpleDateFormat; 52 import java.text.SimpleDateFormat;
@@ -818,7 +821,7 @@ public class GpsServiceImpl implements GpsService { @@ -818,7 +821,7 @@ public class GpsServiceImpl implements GpsService {
818 @Override 821 @Override
819 public List<GpsSpeed_DTO> speeds(String nbbm, long st, long et) { 822 public List<GpsSpeed_DTO> speeds(String nbbm, long st, long et) {
820 String deviceId = BasicData.deviceId2NbbmMap.inverse().get(nbbm); 823 String deviceId = BasicData.deviceId2NbbmMap.inverse().get(nbbm);
821 - String sql = "select vehicle, line, up_down, lon, lat, speed,timestamp from bsth_c_speeding where vehicle=? and timestamp>? and timestamp<?"; 824 + String sql = "select vehicle, line, up_down, lon, lat, speed,timestamp from bsth_c_GpsSpeed where vehicle=? and timestamp>? and timestamp<?";
822 825
823 return GpsSpeed_DTO.create(new JdbcTemplate(DBUtils_MS.getDataSource()).queryForList(sql, deviceId, st * 1000, et * 1000)); 826 return GpsSpeed_DTO.create(new JdbcTemplate(DBUtils_MS.getDataSource()).queryForList(sql, deviceId, st * 1000, et * 1000));
824 } 827 }
@@ -1048,4 +1051,182 @@ public class GpsServiceImpl implements GpsService { @@ -1048,4 +1051,182 @@ public class GpsServiceImpl implements GpsService {
1048 return listResult; 1051 return listResult;
1049 1052
1050 } 1053 }
  1054 +
  1055 + @Override
  1056 + public PageObject<GpsSpeed> Pagequery(Map<String, Object> map) {
  1057 +
  1058 + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1059 + List<GpsSpeed> list=findAll(map);
  1060 + List<GpsSpeed> listResult = new ArrayList<GpsSpeed>();
  1061 + int curPage;//页码
  1062 + int pageData;//每页的记录条数
  1063 + int start;//起始数据下标
  1064 + int totalPage;//总页数
  1065 + int totalData = 0;
  1066 + if(list.size()>1){
  1067 + GpsSpeed GpsSpeedNow;//下标为i的车辆行驶记录
  1068 + GpsSpeed GpsSpeedLast;//下标为i-1的车辆行驶记录
  1069 + GpsSpeed spped = null;//整合后的车辆行驶记录
  1070 + String strNow;
  1071 + String strLast;
  1072 + boolean Flag = false;//判断是否有连续超速记录,默认没有
  1073 + for(int i = 1;i<list.size();i++){
  1074 + GpsSpeedNow = list.get(i);
  1075 + GpsSpeedLast = list.get(i-1);
  1076 + strNow = GpsSpeedNow.getVehicle()+GpsSpeedNow.getLine()+GpsSpeedNow.getUp_down();
  1077 + strLast = GpsSpeedLast.getVehicle()+GpsSpeedLast.getLine()+GpsSpeedLast.getUp_down();
  1078 + if(GpsSpeedNow.getSpeed()>60 && GpsSpeedLast.getSpeed()>60 && strNow.equals(strLast)){//如果两条连续的记录都是超速且属于同一辆车。
  1079 + if(Flag==false){//
  1080 + spped = new GpsSpeed();
  1081 + spped.setLine(GpsSpeedLast.getLine());//设置连续超速记录线路
  1082 + spped.setLineName(GpsSpeedLast.getLineName());//设置连续超速记录线路名称
  1083 + spped.setVehicle(GpsSpeedLast.getVehicle());//设置连续超速记录的车辆编号
  1084 + spped.setUp_down(GpsSpeedLast.getUp_down());//设置上下行
  1085 + spped.setLon(GpsSpeedLast.getLon());//设置开始时经度
  1086 + spped.setLat(GpsSpeedLast.getLat());//设置开始时纬度
  1087 + spped.setTimestamp(GpsSpeedLast.getTimestamp());//设置连续超速记录的开始时间
  1088 + spped.setTimestampDate(GpsSpeedLast.getTimestampDate());//设置连续超速记录的开始时间戳
  1089 + }
  1090 + spped.setEndtimestamp(GpsSpeedNow.getTimestamp());//设置结束时间戳
  1091 + spped.setEndtimestampDate(sdf.format(new Date(GpsSpeedNow.getTimestamp())));//设置结束时间
  1092 + spped.setEndlon(GpsSpeedNow.getLon());//设置结束时的经度
  1093 + spped.setEndlat(GpsSpeedNow.getLat());//设置结束时的纬度
  1094 + Flag = true;
  1095 + }else{
  1096 + if(Flag){//如果上一条记录超速。
  1097 + listResult.add(spped);
  1098 + Flag = false;
  1099 + }
  1100 + }
  1101 + }
  1102 + Iterator<GpsSpeed> speedIt = listResult.iterator();
  1103 + while(speedIt.hasNext()){
  1104 + GpsSpeed GpsSpeed = speedIt.next();
  1105 + if(GpsSpeed.getEndtimestamp()-GpsSpeed.getTimestamp()<=1000){
  1106 + speedIt.remove();
  1107 + }
  1108 + }
  1109 +
  1110 + totalData = listResult.size();//总记录条数。
  1111 + if(map.get("curPage") == null || map.get("curPage").equals("0")){
  1112 + curPage = 0;
  1113 + }else{
  1114 + curPage = Integer.parseInt((String) map.get("curPage"));
  1115 + }
  1116 + pageData = Integer.parseInt((String) map.get("pageData"));//每页的记录条数
  1117 + start = (curPage - 0) * pageData; //起始记录下标。
  1118 + totalPage = totalData % pageData == 0 ? totalData / pageData : totalData / pageData +1;//总页数
  1119 + if(curPage == totalPage-1){//如果当前页等于总页数。
  1120 + listResult = listResult.subList(start, totalData);
  1121 + }else{
  1122 + listResult = listResult.subList(start, start+pageData);
  1123 + }
  1124 + }else{
  1125 + curPage = 1;
  1126 + pageData = Integer.parseInt((String) map.get("pageData"));//每页的记录条数
  1127 + totalPage =1;
  1128 + }
  1129 + Map<String,Object> paramMap = new HashMap<String,Object>();
  1130 + paramMap.put("totalPage", totalPage);
  1131 + paramMap.put("curPage", curPage);
  1132 + paramMap.put("pageData", pageData);
  1133 + PageHelper pageHelper = new PageHelper(totalData, paramMap);
  1134 + pageHelper.getMap();
  1135 + PageObject<GpsSpeed> pageObject = pageHelper.getPageObject();
  1136 + pageObject.setDataList(listResult);
  1137 + return pageObject;
  1138 + }
  1139 +
  1140 + static List<GpsSpeed> findAll(Map<String, Object> map) {
  1141 + Connection conn = null;
  1142 + PreparedStatement ps = null;
  1143 + ResultSet rs = null;
  1144 + int page=Integer.parseInt(map.get("page").toString());
  1145 + List<GpsSpeed> list=new ArrayList<GpsSpeed>();
  1146 + String sql="select * from bsth_c_gps_info where 1=1 ";
  1147 + Object line=map.get("line");
  1148 + Object nbbm=map.get("nbbm");
  1149 + Object updown=map.get("updown");
  1150 + Object startDate=map.get("startDate");
  1151 + Object endDate=map.get("endDate");
  1152 +
  1153 + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1154 + if(line!=null){
  1155 + sql +=" and line_id like'%"+line.toString().trim()+"%'";
  1156 + }
  1157 +
  1158 + if(nbbm!=null){
  1159 + nbbm=BasicData.deviceId2NbbmMap.inverse().get(nbbm);
  1160 + if(nbbm!=null)
  1161 + sql +=" and vehicle like '%"+nbbm.toString()+"%'";
  1162 + }
  1163 +
  1164 + if(updown!=null){
  1165 + sql +="and industry_code like '%"+updown.toString()+"%'";
  1166 + }
  1167 + if(startDate!=null){
  1168 + if (startDate.toString().length()>0) {
  1169 + try {
  1170 + Long t1=sdf.parse(startDate.toString()+" 00:00:00").getTime();
  1171 + sql += " and ts >="+t1;
  1172 + } catch (ParseException e) {
  1173 + e.printStackTrace();
  1174 + }
  1175 + }
  1176 +
  1177 + }
  1178 + if(endDate!=null){
  1179 + if (endDate.toString().length()>0) {
  1180 + try {
  1181 + Long t2=sdf.parse(endDate.toString()+" 23:59:59").getTime();
  1182 + sql += " and ts <="+t2;
  1183 + } catch (ParseException e) {
  1184 + e.printStackTrace();
  1185 + }
  1186 + }
  1187 +
  1188 + }
  1189 +
  1190 + try {
  1191 + conn = DBUtils_MS.getConnection();
  1192 + ps = conn.prepareStatement(sql);
  1193 + rs = ps.executeQuery();
  1194 + list = resultSet2Set(rs);
  1195 + } catch (SQLException e) {
  1196 + e.printStackTrace();
  1197 + }finally {
  1198 + DBUtils_MS.close(rs, ps, conn);
  1199 + }
  1200 +
  1201 + return list;
  1202 + }
  1203 +
  1204 + static List<GpsSpeed> resultSet2Set(ResultSet rs) throws SQLException{
  1205 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1206 + List<GpsSpeed> list=new ArrayList<GpsSpeed>();
  1207 + GpsSpeed GpsSpeed;
  1208 + Float lon, lat;
  1209 + Location location;
  1210 + while(rs.next()){
  1211 + lon = rs.getFloat("lon");
  1212 + lat = rs.getFloat("lat");
  1213 + location = TransGPS.LocationMake(lon, lat);
  1214 + location = TransGPS.bd_encrypt(TransGPS.transformFromWGSToGCJ(location));
  1215 + GpsSpeed=new GpsSpeed();
  1216 + GpsSpeed.setLon((float)location.getLng());
  1217 + GpsSpeed.setLat((float)location.getLat());
  1218 + GpsSpeed.setLine(rs.getObject("line_id").toString());
  1219 + //run 时注解
  1220 + GpsSpeed.setLineName(BasicData.lineCode2NameMap.get(GpsSpeed.getLine().toString()));
  1221 + GpsSpeed.setSpeed(Float.valueOf(rs.getObject("speed_gps").toString()));
  1222 + GpsSpeed.setTimestamp((Long.valueOf(rs.getObject("ts").toString())));
  1223 + GpsSpeed.setTimestampDate(sdf.format(new Date(GpsSpeed.getTimestamp())));
  1224 + GpsSpeed.setUp_down(((Integer.valueOf(rs.getObject("service_state").toString())) & 0x10000000)==0?0:1);
  1225 + GpsSpeed.setVehicle(BasicData.deviceId2NbbmMap.get(rs.getObject("device_id").toString()));
  1226 + list.add(GpsSpeed);
  1227 + }
  1228 + return list;
  1229 + }
  1230 +
1051 } 1231 }
  1232 +
src/main/java/com/bsth/service/gps/entity/GpsSpeed.java
1 package com.bsth.service.gps.entity; 1 package com.bsth.service.gps.entity;
2 2
  3 +import javax.persistence.Transient;
  4 +
3 /** 5 /**
4 * 超速异常 -ms数据库格式 6 * 超速异常 -ms数据库格式
5 * Created by panzhao on 2017/4/7. 7 * Created by panzhao on 2017/4/7.
@@ -15,11 +17,59 @@ public class GpsSpeed { @@ -15,11 +17,59 @@ public class GpsSpeed {
15 private float lon; 17 private float lon;
16 18
17 private float lat; 19 private float lat;
  20 +
  21 + private String lineName;
  22 +
  23 + /**
  24 + * 超速结束时的纬度
  25 + */
  26 + @Transient
  27 + private Float endlat;
  28 +
  29 + /**
  30 + * 超速结束时的经度
  31 + */
  32 + @Transient
  33 + private Float endlon;
18 34
19 private float speed; 35 private float speed;
20 - 36 +
21 private long timestamp; 37 private long timestamp;
22 - 38 +
  39 + @Transient
  40 + private String timestampDate;
  41 +
  42 + public String getTimestampDate() {
  43 + return timestampDate;
  44 + }
  45 +
  46 + public void setTimestampDate(String timestampDate) {
  47 + this.timestampDate = timestampDate;
  48 + }
  49 +
  50 + public Long getEndtimestamp() {
  51 + return endtimestamp;
  52 + }
  53 +
  54 + public void setEndtimestamp(Long endtimestamp) {
  55 + this.endtimestamp = endtimestamp;
  56 + }
  57 +
  58 + public String getEndtimestampDate() {
  59 + return endtimestampDate;
  60 + }
  61 +
  62 + public void setEndtimestampDate(String endtimestampDate) {
  63 + this.endtimestampDate = endtimestampDate;
  64 + }
  65 +
  66 + //结束时间,单位:秒/s
  67 + @Transient
  68 + private Long endtimestamp;
  69 +
  70 + @Transient
  71 + private String endtimestampDate;
  72 +
23 public String getVehicle() { 73 public String getVehicle() {
24 return vehicle; 74 return vehicle;
25 } 75 }
@@ -75,4 +125,28 @@ public class GpsSpeed { @@ -75,4 +125,28 @@ public class GpsSpeed {
75 public void setTimestamp(long timestamp) { 125 public void setTimestamp(long timestamp) {
76 this.timestamp = timestamp; 126 this.timestamp = timestamp;
77 } 127 }
  128 +
  129 + public Float getEndlon() {
  130 + return endlon;
  131 + }
  132 +
  133 + public void setEndlon(Float endlon) {
  134 + this.endlon = endlon;
  135 + }
  136 +
  137 + public Float getEndlat() {
  138 + return endlat;
  139 + }
  140 +
  141 + public void setEndlat(Float endlat) {
  142 + this.endlat = endlat;
  143 + }
  144 +
  145 + public String getLineName() {
  146 + return lineName;
  147 + }
  148 +
  149 + public void setLineName(String lineName) {
  150 + this.lineName = lineName;
  151 + }
78 } 152 }
src/main/java/com/bsth/service/report/impl/CulateMileageServiceImpl.java
@@ -738,6 +738,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -738,6 +738,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{
738 // TODO Auto-generated method stub 738 // TODO Auto-generated method stub
739 double ljjcc=0.0; 739 double ljjcc=0.0;
740 double ljyy=0.0; 740 double ljyy=0.0;
  741 + double ljkfks=0.0;
741 for (int i = 0; i < lists.size(); i++) { 742 for (int i = 0; i < lists.size(); i++) {
742 ScheduleRealInfo t=lists.get(i); 743 ScheduleRealInfo t=lists.get(i);
743 if(t.isSflj()){ 744 if(t.isSflj()){
@@ -760,6 +761,24 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -760,6 +761,24 @@ public class CulateMileageServiceImpl implements CulateMileageService{
760 }*/ 761 }*/
761 } 762 }
762 763
  764 + if(t.getBcType().equals("ldks")){
  765 + Set<ChildTaskPlan> childTaskPlans = t.getcTasks();
  766 + if(childTaskPlans.isEmpty()){
  767 + if(!t.isDestroy()){
  768 + ljkfks =Arith.add(ljkfks, t.getJhlc());
  769 + }
  770 +
  771 + }
  772 + /*else{
  773 + //临加进出场子任务 待统计
  774 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  775 + double zrwlc=0.0;
  776 + boolean fage=false;
  777 + while (it.hasNext()) {
  778 + ChildTaskPlan childTaskPlan = it.next();
  779 + }
  780 + }*/
  781 + }
763 if(!isInOut(t)){ 782 if(!isInOut(t)){
764 Set<ChildTaskPlan> childTaskPlans = t.getcTasks(); 783 Set<ChildTaskPlan> childTaskPlans = t.getcTasks();
765 if(childTaskPlans.isEmpty()){ 784 if(childTaskPlans.isEmpty()){
@@ -774,6 +793,14 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -774,6 +793,14 @@ public class CulateMileageServiceImpl implements CulateMileageService{
774 if(childTaskPlan.getMileageType().equals("service")){ 793 if(childTaskPlan.getMileageType().equals("service")){
775 ljyy =Arith.add(ljyy,childTaskPlan.getMileage()); 794 ljyy =Arith.add(ljyy,childTaskPlan.getMileage());
776 } 795 }
  796 + if(childTaskPlan.getMileageType().equals("empty")){
  797 + if(childTaskPlan.getType2().equals("2")||childTaskPlan.getType2().equals("3")){
  798 + ljjcc =Arith.add(ljjcc, childTaskPlan.getMileage());
  799 + }
  800 + if(childTaskPlan.getType2().equals("1")){
  801 + ljkfks =Arith.add(ljkfks, childTaskPlan.getMileage());
  802 + }
  803 + }
777 } 804 }
778 } 805 }
779 } 806 }
@@ -784,6 +811,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -784,6 +811,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{
784 Map<String, Double> map=new HashMap<String,Double>(); 811 Map<String, Double> map=new HashMap<String,Double>();
785 map.put("ljjcc", ljjcc); 812 map.put("ljjcc", ljjcc);
786 map.put("ljyy", ljyy); 813 map.put("ljyy", ljyy);
  814 + map.put("ljkfks", ljkfks);
787 return map; 815 return map;
788 } 816 }
789 817
@@ -858,20 +886,32 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -858,20 +886,32 @@ public class CulateMileageServiceImpl implements CulateMileageService{
858 double zrwjcclc=0.0; 886 double zrwjcclc=0.0;
859 for (int i = 0; i < lists.size(); i++) { 887 for (int i = 0; i < lists.size(); i++) {
860 ScheduleRealInfo t=lists.get(i); 888 ScheduleRealInfo t=lists.get(i);
861 - if(!isInOut(t)){  
862 - Set<ChildTaskPlan> childTaskPlans = t.getcTasks();  
863 - if(!childTaskPlans.isEmpty()){  
864 - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();  
865 - while (it.hasNext()) {  
866 - ChildTaskPlan childTaskPlan = it.next();  
867 - if(childTaskPlan.getType2().equals("2")||childTaskPlan.getType2().equals("3")){  
868 - if (childTaskPlan.isDestroy()) {  
869 - if(childTaskPlan.getReason().equals(item)){  
870 - zrwjcclc=Arith.add(zrwjcclc,childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage());  
871 - }  
872 - }  
873 - }  
874 - } 889 + if(!t.isSflj()){
  890 + if(!isInOut(t)){
  891 + Set<ChildTaskPlan> childTaskPlans = t.getcTasks();
  892 + if(!childTaskPlans.isEmpty()){
  893 + Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
  894 + while (it.hasNext()) {
  895 + ChildTaskPlan childTaskPlan = it.next();
  896 + if(item.equals("空放")){
  897 + if(childTaskPlan.getType2().equals("1")){
  898 + if (!childTaskPlan.isDestroy()) {
  899 + if(childTaskPlan.getReason().equals(item)){
  900 + zrwjcclc=Arith.add(zrwjcclc,childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage());
  901 + }
  902 + }
  903 + }
  904 + }else{
  905 + if(childTaskPlan.getType2().equals("2")||childTaskPlan.getType2().equals("3")){
  906 + if (!childTaskPlan.isDestroy()) {
  907 + if(childTaskPlan.getReason().equals(item)){
  908 + zrwjcclc=Arith.add(zrwjcclc,childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage());
  909 + }
  910 + }
  911 + }
  912 + }
  913 + }
  914 + }
875 } 915 }
876 } 916 }
877 } 917 }
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
@@ -37,6 +37,10 @@ import java.util.*; @@ -37,6 +37,10 @@ import java.util.*;
37 @Service 37 @Service
38 public class ReportServiceImpl implements ReportService{ 38 public class ReportServiceImpl implements ReportService{
39 39
  40 + private static long zgf1 = 6 * 60 + 31,
  41 + zgf2 = 8 * 60 + 30,
  42 + wgf1 = 16 * 60 + 1,
  43 + wgf2 = 18 * 60;
40 44
41 private Logger logger = LoggerFactory.getLogger(this.getClass()); 45 private Logger logger = LoggerFactory.getLogger(this.getClass());
42 46
@@ -466,38 +470,35 @@ public class ReportServiceImpl implements ReportService{ @@ -466,38 +470,35 @@ public class ReportServiceImpl implements ReportService{
466 System.out.println(609360/60); 470 System.out.println(609360/60);
467 System.out.println(609360%60); 471 System.out.println(609360%60);
468 } 472 }
469 - @Override 473 +/* @Override
470 public List<Map<String, Object>> tbodyTime3(String line, String ttinfo) { 474 public List<Map<String, Object>> tbodyTime3(String line, String ttinfo) {
471 // TODO Auto-generated method stub 475 // TODO Auto-generated method stub
472 List<Map<String, Object>> list=new ArrayList<Map<String,Object>>(); 476 List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
473 477
474 478
475 479
476 - String sqlZd=" select t.*,x.station_name as qdz_name from ("  
477 - + " select qdz,count(lp) as cls,lx from ( select qdz,lp, 'zqc' as lx "  
478 - + " from bsth_c_s_ttinfo_detail where "  
479 - + " bc_type='normal' and ttinfo ='"+ttinfo+"' "  
480 - + " and fcsj>'06:31' and fcsj<'08:00' group by qdz,lp) t1"  
481 - + " group by qdz " 480 + String sqlZd="select a.qdz_name,COUNT(a.cl_zbh) as cls,'zqc' AS lx from ("
  481 + + " select cl_zbh,qdz_name from bsth_c_s_sp_info where tt_info ='"+ttinfo+"' "
  482 + + " and bc_type ='normal'"
  483 + + " and ((fcsj >'06:31' and fcsj<'08:30') or ( fcsj>'6:31' and fcsj<'8:30'))"
  484 + + " group by cl_zbh,qdz_name) a group by a.qdz_name"
482 + " union " 485 + " union "
483 - + " select qdz,count(lp) as cls,lx from ( select qdz,lp, 'wqc' as lx "  
484 - + " from bsth_c_s_ttinfo_detail where "  
485 - + " bc_type='normal' and ttinfo ='"+ttinfo+"' "  
486 - + " and fcsj>'16:01' and fcsj<'18:00' group by qdz,lp) t2"  
487 - + " group by qdz " 486 + + " select a.qdz_name,COUNT(a.cl_zbh) as cls,'wqc' AS lx from ("
  487 + + " select cl_zbh,qdz_name from bsth_c_s_sp_info where tt_info ='"+ttinfo+"'"
  488 + + " and bc_type ='normal' "
  489 + + " and fcsj >'16:01' and fcsj<'18:00' group by cl_zbh,qdz_name "
  490 + + " ) a group by a.qdz_name "
488 + " union " 491 + " union "
489 - + " select qdz,count(lp) as cls,lx from ( select qdz,lp, 'zqj' as lx "  
490 - + " from bsth_c_s_ttinfo_detail where "  
491 - + " bc_type='region' and ttinfo ='"+ttinfo+"' "  
492 - + " and fcsj>'06:31' and fcsj<'08:00' group by qdz,lp) t3"  
493 - + " group by qdz " 492 + + " select a.qdz_name,COUNT(a.cl_zbh) as cls,'zqj' AS lx from ("
  493 + + " select cl_zbh,qdz_name from bsth_c_s_sp_info where tt_info ='"+ttinfo+"'"
  494 + + " and bc_type ='region' "
  495 + + " and ((fcsj >'06:31' and fcsj<'08:30') or ( fcsj>'6:31' and fcsj<'8:30'))"
  496 + + " group by cl_zbh,qdz_name) a group by a.qdz_name"
494 + " union " 497 + " union "
495 - + " select qdz,count(lp) as cls,lx from ( select qdz,lp, 'wqj' as lx "  
496 - + " from bsth_c_s_ttinfo_detail where "  
497 - + " bc_type='region' and ttinfo ='"+ttinfo+"' "  
498 - + " and fcsj>'16:01' and fcsj<'18:00' group by qdz,lp) t4"  
499 - + " group by qdz ) t left join bsth_c_station x on t.qdz=x.id";  
500 - 498 + + " select a.qdz_name,COUNT(a.cl_zbh) as cls,'wqj' AS lx from ("
  499 + + " select cl_zbh,qdz_name from bsth_c_s_sp_info where tt_info ='"+ttinfo+"'"
  500 + + " and bc_type ='region' and fcsj >'16:01' and fcsj<'18:00'"
  501 + + " group by cl_zbh,qdz_name) a group by a.qdz_name";
501 List<Map<String, Object>> lists= jdbcTemplate.query(sqlZd, 502 List<Map<String, Object>> lists= jdbcTemplate.query(sqlZd,
502 new RowMapper<Map<String, Object>>(){ 503 new RowMapper<Map<String, Object>>(){
503 @Override 504 @Override
@@ -556,6 +557,208 @@ public class ReportServiceImpl implements ReportService{ @@ -556,6 +557,208 @@ public class ReportServiceImpl implements ReportService{
556 557
557 } 558 }
558 return list; 559 return list;
  560 + }*/
  561 + @Override
  562 + public List<Map<String, Object>> tbodyTime3(String line, String ttinfo) {
  563 + // TODO Auto-generated method stub
  564 + List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
  565 + List<Map<String, Object>> list_s=new ArrayList<Map<String,Object>>();
  566 +
  567 +
  568 + /*String sqlZd="select a.qdz_name,COUNT(a.cl_zbh) as cls,'zqc' AS lx from ("
  569 + + " select cl_zbh,qdz_name from bsth_c_s_sp_info where tt_info ='"+ttinfo+"' "
  570 + + " and bc_type ='normal'"
  571 + + " and ((fcsj >'06:31' and fcsj<'08:30') or ( fcsj>'6:31' and fcsj<'8:30'))"
  572 + + " group by cl_zbh,qdz_name) a group by a.qdz_name"
  573 + + " union "
  574 + + " select a.qdz_name,COUNT(a.cl_zbh) as cls,'wqc' AS lx from ("
  575 + + " select cl_zbh,qdz_name from bsth_c_s_sp_info where tt_info ='"+ttinfo+"'"
  576 + + " and bc_type ='normal' "
  577 + + " and fcsj >'16:01' and fcsj<'18:00' group by cl_zbh,qdz_name "
  578 + + " ) a group by a.qdz_name "
  579 + + " union "
  580 + + " select a.qdz_name,COUNT(a.cl_zbh) as cls,'zqj' AS lx from ("
  581 + + " select cl_zbh,qdz_name from bsth_c_s_sp_info where tt_info ='"+ttinfo+"'"
  582 + + " and bc_type ='region' "
  583 + + " and ((fcsj >'06:31' and fcsj<'08:30') or ( fcsj>'6:31' and fcsj<'8:30'))"
  584 + + " group by cl_zbh,qdz_name) a group by a.qdz_name"
  585 + + " union "
  586 + + " select a.qdz_name,COUNT(a.cl_zbh) as cls,'wqj' AS lx from ("
  587 + + " select cl_zbh,qdz_name from bsth_c_s_sp_info where tt_info ='"+ttinfo+"'"
  588 + + " and bc_type ='region' and fcsj >'16:01' and fcsj<'18:00'"
  589 + + " group by cl_zbh,qdz_name) a group by a.qdz_name";*/
  590 +
  591 + String sqlCl="SELECT cl_zbh,qdz_name,bc_type,fcsj,bcsj FROM"
  592 + + " bsth_c_s_sp_info WHERE tt_info = '"+ttinfo+"' "
  593 + + " AND bc_type = 'normal' order by qdz_name";
  594 +
  595 + List<Map<String, Object>> listj= jdbcTemplate.query(sqlCl,
  596 + new RowMapper<Map<String, Object>>(){
  597 + @Override
  598 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  599 + Map<String, Object> m=new HashMap<String,Object>();
  600 + m.put("cl_zbh", rs.getString("cl_zbh"));
  601 + m.put("qdz_name", rs.getString("qdz_name"));
  602 + m.put("bcType", rs.getString("bc_type"));
  603 + m.put("fcsj", rs.getString("fcsj"));
  604 + m.put("bcsj", rs.getString("bcsj"));
  605 + return m;
  606 + }
  607 + });
  608 +
  609 + String sqlZd="select qdz_name ,bc_type from bsth_c_s_sp_info WHERE tt_info = '"+ttinfo+"' "
  610 + + " AND (bc_type = 'normal' or bc_type='region') group by qdz_name ,bc_type "
  611 + + " order by qdz_name";
  612 + List<Map<String, Object>> lists= jdbcTemplate.query(sqlZd,
  613 + new RowMapper<Map<String, Object>>(){
  614 + @Override
  615 + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
  616 + Map<String, Object> m=new HashMap<String,Object>();
  617 + m.put("zdm", rs.getString("qdz_name"));
  618 + m.put("bcType", rs.getString("bc_type"));
  619 + return m;
  620 + }
  621 + });
  622 +
  623 + for (int i = 0; i < lists.size(); i++) {
  624 + Map<String, Object> z=new HashMap<String,Object>();
  625 + Map<String, Object> w=new HashMap<String,Object>();
  626 + Map<String, Object> p=lists.get(i);
  627 + int zbcs=0;
  628 + int wbcs=0;
  629 + if(p.get("bcType").toString().equals("normal")){
  630 + for (int j = 0; j < listj.size(); j++) {
  631 + if(listj.get(j).get("qdz_name").toString().equals(p.get("zdm").toString()) &&
  632 + listj.get(j).get("bcType").toString().equals("normal")){
  633 + String time=listj.get(j).get("fcsj").toString();
  634 + long bcsj= Long.parseLong(listj.get(j).get("bcsj").toString());
  635 + String clZbh=listj.get(j).get("cl_zbh").toString();
  636 + String[] fcsjStr = time.split(":");
  637 + long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
  638 + long ddsj=fcsj+bcsj;
  639 + if((fcsj>=zgf1 && fcsj<=zgf2) || (ddsj>=zgf1&&ddsj<=zgf2)
  640 + || (fcsj<zgf1&&ddsj>zgf2)){
  641 + if(p.get("z"+clZbh)==null){
  642 + zbcs++;
  643 + p.put("z"+clZbh, clZbh);
  644 + }
  645 + }
  646 +
  647 + if((fcsj>=wgf1 && fcsj<=wgf2) || (ddsj>=wgf1&&ddsj<=wgf2)
  648 + || (fcsj<wgf1&&ddsj>wgf2)){
  649 + if(p.get("w"+clZbh)==null){
  650 + wbcs++;
  651 + p.put("w"+clZbh, clZbh);
  652 + }
  653 + }
  654 + }
  655 +
  656 + }
  657 + if(zbcs>0){
  658 + z.put("zdm", p.get("zdm"));
  659 + z.put("cls", zbcs);
  660 + z.put("lx", "zqc");
  661 + list_s.add(z);
  662 + }
  663 + if(wbcs>0){
  664 + w.put("zdm", p.get("zdm"));
  665 + w.put("cls", zbcs);
  666 + w.put("lx", "wqc");
  667 + list_s.add(w);
  668 + }
  669 +
  670 + }
  671 +
  672 + if(p.get("bcType").equals("region")){
  673 + for (int j = 0; j < listj.size(); j++) {
  674 + if(listj.get(j).get("qdz_name").toString().equals(p.get("zdm").toString()) &&
  675 + listj.get(j).get("bcType").toString().equals("region")){
  676 + String time=listj.get(j).get("fcsj").toString();
  677 + long bcsj= Long.parseLong(listj.get(j).get("bcsj").toString());
  678 + String clZbh=listj.get(j).get("cl_zbh").toString();
  679 + String[] fcsjStr = time.split(":");
  680 + long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
  681 + long ddsj=fcsj+bcsj;
  682 + if((fcsj>=zgf1 && fcsj<=zgf2) || (ddsj>=zgf1&&ddsj<=zgf2)
  683 + || (fcsj<zgf1&&ddsj>zgf2)){
  684 + if(p.get("z"+clZbh)==null){
  685 + zbcs++;
  686 + p.put("z"+clZbh, clZbh);
  687 + }
  688 + }
  689 +
  690 + if((fcsj>=wgf1 && fcsj<=wgf2) || (ddsj>=wgf1&&ddsj<=wgf2)
  691 + || (fcsj<wgf1&&ddsj>wgf2)){
  692 + if(p.get("w"+clZbh)==null){
  693 + wbcs++;
  694 + p.put("w"+clZbh, clZbh);
  695 + }
  696 + }
  697 + }
  698 +
  699 + }
  700 + if(zbcs>0){
  701 + z.put("zdm", p.get("zdm"));
  702 + z.put("cls", zbcs);
  703 + z.put("lx", "zqj");
  704 + list_s.add(z);
  705 + }
  706 + if(wbcs>0){
  707 + w.put("zdm", p.get("zdm"));
  708 + w.put("cls", zbcs);
  709 + w.put("lx", "wqj");
  710 + list_s.add(w);
  711 + }
  712 + }
  713 +
  714 + }
  715 + int a=0;
  716 + int b=0;
  717 + int c=0;
  718 + int d=0;
  719 + for(int i=0;i<list_s.size();i++){
  720 + boolean fage=true;
  721 + Map<String, Object> newMap= new HashMap<String, Object>();
  722 + list.add(newMap);
  723 + Map<String, Object> maps=list_s.get(i);
  724 + if(maps.get("lx").equals("zqc")){
  725 + list.get(a).put("zqcZm", maps.get("zdm"));
  726 + list.get(a).put("zqcCls", maps.get("cls"));
  727 + a++;
  728 + fage=false;
  729 + }else if(maps.get("lx").equals("wqc")){
  730 + list.get(b).put("wqcZm", maps.get("zdm"));
  731 + list.get(b).put("wqcCls", maps.get("cls"));
  732 + b++;
  733 + fage=false;
  734 + }else if(maps.get("lx").equals("zqj")){
  735 + list.get(c).put("zqjZm", maps.get("zdm"));
  736 + list.get(c).put("zqjCls", maps.get("cls"));
  737 + c++;
  738 + fage=false;
  739 + }else if(maps.get("lx").equals("wqj")){
  740 + list.get(d).put("wqjZm", maps.get("zdm"));
  741 + list.get(d).put("wqjCls", maps.get("cls"));
  742 + d++;
  743 + fage=false;
  744 + }
  745 + if(fage){
  746 + break;
  747 + }
  748 + }
  749 + boolean status=true;
  750 + while (status) {
  751 + for (int i = 0; i < list.size(); i++) {
  752 + if(list.get(i).isEmpty()){
  753 + list.remove(i);
  754 + status=true;
  755 + }else{
  756 + status=false;
  757 + }
  758 + }
  759 +
  760 + }
  761 + return list;
559 } 762 }
560 763
561 @Override 764 @Override
@@ -1501,11 +1704,18 @@ public class ReportServiceImpl implements ReportService{ @@ -1501,11 +1704,18 @@ public class ReportServiceImpl implements ReportService{
1501 Map<String, Object> m = new HashMap<String, Object>(); 1704 Map<String, Object> m = new HashMap<String, Object>();
1502 m.put("date", date); 1705 m.put("date", date);
1503 m.put("date1", date2); 1706 m.put("date1", date2);
  1707 + String by=map.get("by").toString();
  1708 + String xls="";
  1709 + if(by.equals("sj")){
  1710 + xls="countByLine.xls";
  1711 + }else{
  1712 + xls="countByLines.xls";
  1713 + }
1504 ReportUtils ee = new ReportUtils(); 1714 ReportUtils ee = new ReportUtils();
1505 try { 1715 try {
1506 listI.add(lMap.iterator()); 1716 listI.add(lMap.iterator());
1507 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; 1717 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
1508 - ee.excelReplace(listI, new Object[]{m}, path + "mould/countByLine.xls", 1718 + ee.excelReplace(listI, new Object[]{m}, path + "mould/"+xls,
1509 path + "export/线路公里统计表.xls"); 1719 path + "export/线路公里统计表.xls");
1510 } catch (Exception e) { 1720 } catch (Exception e) {
1511 // TODO: handle exception 1721 // TODO: handle exception
@@ -1572,9 +1782,12 @@ public class ReportServiceImpl implements ReportService{ @@ -1572,9 +1782,12 @@ public class ReportServiceImpl implements ReportService{
1572 Map<String, Double> culateLjMile=culateService.culateLjMile(lists); 1782 Map<String, Double> culateLjMile=culateService.culateLjMile(lists);
1573 double ljyy=culateLjMile.get("ljyy"); 1783 double ljyy=culateLjMile.get("ljyy");
1574 double ljjcc=culateLjMile.get("ljjcc"); 1784 double ljjcc=culateLjMile.get("ljjcc");
  1785 + double ljkfks=culateLjMile.get("ljkfks");
1575 map.put("ljyy", ljyy); 1786 map.put("ljyy", ljyy);
1576 map.put("ljjcc", ljjcc); 1787 map.put("ljjcc", ljjcc);
1577 - double ljlc=Arith.add(ljyy, ljjcc); 1788 + map.put("ljkfks", ljkfks);
  1789 +
  1790 + double ljlc=Arith.add(Arith.add(ljyy, ljjcc),ljkfks);
1578 1791
1579 double lbss=culateService.culateSsMile(list);//烂班少驶 1792 double lbss=culateService.culateSsMile(list);//烂班少驶
1580 map.put("lbss", lbss); 1793 map.put("lbss", lbss);
@@ -1594,18 +1807,18 @@ public class ReportServiceImpl implements ReportService{ @@ -1594,18 +1807,18 @@ public class ReportServiceImpl implements ReportService{
1594 double zrwjcclc=culateService.culateZrwJccLc(list, "故障"); 1807 double zrwjcclc=culateService.culateZrwJccLc(list, "故障");
1595 double zrwjcclc1=culateService.culateZrwJccLc(list, "肇事"); 1808 double zrwjcclc1=culateService.culateZrwJccLc(list, "肇事");
1596 double zrwjcclc2=culateService.culateZrwJccLc(list, "纠纷"); 1809 double zrwjcclc2=culateService.culateZrwJccLc(list, "纠纷");
  1810 + double zrwjcclcqt=culateService.culateZrwJccLc(list, "其他");
  1811 + map.put("jhwjcclc_z", Arith.add(jhwjcclc,zrwjcclcqt));
1597 map.put("zrwjcclc", zrwjcclc); 1812 map.put("zrwjcclc", zrwjcclc);
1598 map.put("zrwjcclc1", zrwjcclc1); 1813 map.put("zrwjcclc1", zrwjcclc1);
1599 map.put("zrwjcclc2", zrwjcclc2); 1814 map.put("zrwjcclc2", zrwjcclc2);
1600 - double zrwjcc=Arith.add(Arith.add(zrwjcclc, zrwjcclc1), zrwjcclc2);  
1601 - double kfks=culateService.culateKfksLc(lists); 1815 + map.put("zrwjcclcqt", zrwjcclcqt);
  1816 + double zrwjcc=Arith.add(Arith.add(Arith.add(zrwjcclc, zrwjcclc1), zrwjcclc2),zrwjcclcqt);
  1817 + double kfks=Arith.add(culateService.culateKfksLc(lists),culateService.culateZrwJccLc(list, "空放"));
1602 map.put("kfks", kfks); 1818 map.put("kfks", kfks);
1603 double zlc=Arith.add(Arith.add(Arith.add(zrwjcc, ljlc), 1819 double zlc=Arith.add(Arith.add(Arith.add(zrwjcc, ljlc),
1604 Arith.add(zjcclc, zyylc)),kfks); 1820 Arith.add(zjcclc, zyylc)),kfks);
1605 -  
1606 -  
1607 map.put("zlc", zlc); 1821 map.put("zlc", zlc);
1608 -  
1609 } 1822 }
1610 return map; 1823 return map;
1611 } 1824 }
@@ -1830,10 +2043,22 @@ public class ReportServiceImpl implements ReportService{ @@ -1830,10 +2043,22 @@ public class ReportServiceImpl implements ReportService{
1830 m.put("date", date); 2043 m.put("date", date);
1831 m.put("date1", date2); 2044 m.put("date1", date2);
1832 String xls=""; 2045 String xls="";
  2046 + String by=map.get("by").toString();
  2047 +
  2048 +
1833 if(zt.equals("zbh")){ 2049 if(zt.equals("zbh")){
1834 - xls="countByBus1.xls"; 2050 + if(by.equals("sj")){
  2051 + xls="countByBus1.xls";
  2052 + }else{
  2053 + xls="countByBus1s.xls";
  2054 + }
1835 }else{ 2055 }else{
1836 - xls="countByBus2.xls"; 2056 +
  2057 + if(by.equals("sj")){
  2058 + xls="countByBus2.xls";
  2059 + }else{
  2060 + xls="countByBus2s.xls";
  2061 + }
1837 } 2062 }
1838 ReportUtils ee = new ReportUtils(); 2063 ReportUtils ee = new ReportUtils();
1839 try { 2064 try {
@@ -1896,7 +2121,8 @@ public class ReportServiceImpl implements ReportService{ @@ -1896,7 +2121,8 @@ public class ReportServiceImpl implements ReportService{
1896 String jGh= m.get("jGh")==null?"":m.get("jGh").toString(); 2121 String jGh= m.get("jGh")==null?"":m.get("jGh").toString();
1897 String sGh= m.get("sGh")==null?"":m.get("sGh").toString(); 2122 String sGh= m.get("sGh")==null?"":m.get("sGh").toString();
1898 double jhzlc = 0.0,jhlc= 0.0,jcclc= 0.0,zlc= 0.0,jhnlc= 0.0,jhwlc= 0.0, 2123 double jhzlc = 0.0,jhlc= 0.0,jcclc= 0.0,zlc= 0.0,jhnlc= 0.0,jhwlc= 0.0,
1899 - jhnjcclc= 0.0,jhwjcclc= 0.0,zrwjcclc= 0.0,lbss= 0.0,ssgl_lz= 0.0, 2124 + jhnjcclc= 0.0,jhwjcclc= 0.0,jhwjcclc_z=0.0,zrwjcclc= 0.0,zrwjcclc1= 0.0,zrwjcclc2= 0.0,
  2125 + zrwjcclcqt=0.0,lbss= 0.0,ssgl_lz= 0.0,
1900 ssgl_dm= 0.0,ssgl_gz= 0.0,ssgl_jf= 0.0,ssgl_zs= 0.0,ssgl_qr= 0.0,ssgl_qc= 0.0, 2126 ssgl_dm= 0.0,ssgl_gz= 0.0,ssgl_jf= 0.0,ssgl_zs= 0.0,ssgl_qr= 0.0,ssgl_qc= 0.0,
1901 ssgl_kx= 0.0,ssgl_qh= 0.0,ssgl_yw= 0.0,ssgl_other= 0.0,ljyy=0.0,ljjcc=0.0, 2127 ssgl_kx= 0.0,ssgl_qh= 0.0,ssgl_yw= 0.0,ssgl_other= 0.0,ljyy=0.0,ljjcc=0.0,
1902 kfks=0.0,yhl=0.0,jzl=0.0,hyl=0.0,dhl=0.0,cdl=0.0; 2128 kfks=0.0,yhl=0.0,jzl=0.0,hyl=0.0,dhl=0.0,cdl=0.0;
@@ -1915,7 +2141,11 @@ public class ReportServiceImpl implements ReportService{ @@ -1915,7 +2141,11 @@ public class ReportServiceImpl implements ReportService{
1915 jhwlc=Arith.add(jhwlc, map.get("jhwlc")); 2141 jhwlc=Arith.add(jhwlc, map.get("jhwlc"));
1916 jhnjcclc=Arith.add(jhnjcclc, map.get("jhnjcclc")); 2142 jhnjcclc=Arith.add(jhnjcclc, map.get("jhnjcclc"));
1917 jhwjcclc=Arith.add(jhwjcclc, map.get("jhwjcclc")); 2143 jhwjcclc=Arith.add(jhwjcclc, map.get("jhwjcclc"));
  2144 + jhwjcclc_z=Arith.add(jhwjcclc_z, map.get("jhwjcclc_z"));
1918 zrwjcclc=Arith.add(zrwjcclc, map.get("zrwjcclc")); 2145 zrwjcclc=Arith.add(zrwjcclc, map.get("zrwjcclc"));
  2146 + zrwjcclc1=Arith.add(zrwjcclc1, map.get("zrwjcclc1"));
  2147 + zrwjcclc2=Arith.add(zrwjcclc2, map.get("zrwjcclc2"));
  2148 + zrwjcclcqt=Arith.add(zrwjcclcqt, map.get("zrwjcclcqt"));
1919 lbss=Arith.add(lbss, map.get("lbss")); 2149 lbss=Arith.add(lbss, map.get("lbss"));
1920 ssgl_lz=Arith.add(ssgl_lz, map.get("ssgl_lz")); 2150 ssgl_lz=Arith.add(ssgl_lz, map.get("ssgl_lz"));
1921 ssgl_dm=Arith.add(ssgl_dm, map.get("ssgl_dm")); 2151 ssgl_dm=Arith.add(ssgl_dm, map.get("ssgl_dm"));
@@ -1962,7 +2192,11 @@ public class ReportServiceImpl implements ReportService{ @@ -1962,7 +2192,11 @@ public class ReportServiceImpl implements ReportService{
1962 newMap.put("jhwlc", jhwlc); 2192 newMap.put("jhwlc", jhwlc);
1963 newMap.put("jhnjcclc", jhnjcclc); 2193 newMap.put("jhnjcclc", jhnjcclc);
1964 newMap.put("jhwjcclc", jhwjcclc); 2194 newMap.put("jhwjcclc", jhwjcclc);
  2195 + newMap.put("jhwjcclc_z", jhwjcclc_z);
1965 newMap.put("zrwjcclc", zrwjcclc); 2196 newMap.put("zrwjcclc", zrwjcclc);
  2197 + newMap.put("zrwjcclc1", zrwjcclc1);
  2198 + newMap.put("zrwjcclc2", zrwjcclc2);
  2199 + newMap.put("zrwjcclcqt", zrwjcclcqt);
1966 newMap.put("lbss", lbss); 2200 newMap.put("lbss", lbss);
1967 newMap.put("ssgl_lz", ssgl_lz); 2201 newMap.put("ssgl_lz", ssgl_lz);
1968 newMap.put("ssgl_dm",ssgl_dm); 2202 newMap.put("ssgl_dm",ssgl_dm);
src/main/java/com/bsth/service/schedule/TTInfoService.java
@@ -12,4 +12,6 @@ public interface TTInfoService extends BService&lt;TTInfo, Long&gt; { @@ -12,4 +12,6 @@ public interface TTInfoService extends BService&lt;TTInfo, Long&gt; {
12 void validate_s_d(TTInfo ttInfo) throws ScheduleException; 12 void validate_s_d(TTInfo ttInfo) throws ScheduleException;
13 void toggleCancel(Long id) throws ScheduleException; 13 void toggleCancel(Long id) throws ScheduleException;
14 14
  15 + void backUp(Long ttInfoId) throws ScheduleException;
  16 +
15 } 17 }
src/main/java/com/bsth/service/schedule/impl/TTInfoServiceImpl.java
1 package com.bsth.service.schedule.impl; 1 package com.bsth.service.schedule.impl;
2 2
3 import com.bsth.entity.schedule.TTInfo; 3 import com.bsth.entity.schedule.TTInfo;
4 -import com.bsth.service.schedule.exception.ScheduleException; 4 +import com.bsth.entity.schedule.TTInfoBackup;
  5 +import com.bsth.entity.schedule.TTInfoDetail;
  6 +import com.bsth.repository.schedule.TTInfoBackupRepository;
  7 +import com.bsth.repository.schedule.TTInfoDetailRepository;
  8 +import com.bsth.repository.schedule.TTInfoRepository;
5 import com.bsth.service.schedule.TTInfoService; 9 import com.bsth.service.schedule.TTInfoService;
  10 +import com.bsth.service.schedule.exception.ScheduleException;
  11 +import com.bsth.service.schedule.utils.TimeTableProto;
6 import org.apache.commons.lang3.StringUtils; 12 import org.apache.commons.lang3.StringUtils;
  13 +import org.slf4j.Logger;
  14 +import org.slf4j.LoggerFactory;
  15 +import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Service; 16 import org.springframework.stereotype.Service;
  17 +import org.springframework.transaction.annotation.Isolation;
  18 +import org.springframework.transaction.annotation.Propagation;
8 import org.springframework.transaction.annotation.Transactional; 19 import org.springframework.transaction.annotation.Transactional;
9 import org.springframework.util.CollectionUtils; 20 import org.springframework.util.CollectionUtils;
10 21
  22 +import java.io.PrintWriter;
  23 +import java.io.StringWriter;
  24 +import java.util.Date;
11 import java.util.HashMap; 25 import java.util.HashMap;
12 import java.util.List; 26 import java.util.List;
13 import java.util.Map; 27 import java.util.Map;
@@ -17,6 +31,15 @@ import java.util.Map; @@ -17,6 +31,15 @@ import java.util.Map;
17 */ 31 */
18 @Service 32 @Service
19 public class TTInfoServiceImpl extends BServiceImpl<TTInfo, Long> implements TTInfoService { 33 public class TTInfoServiceImpl extends BServiceImpl<TTInfo, Long> implements TTInfoService {
  34 + /** 日志记录器 */
  35 + private static final Logger LOG = LoggerFactory.getLogger(TTInfoServiceImpl.class);
  36 +
  37 + @Autowired
  38 + private TTInfoRepository ttInfoRepository;
  39 + @Autowired
  40 + private TTInfoDetailRepository ttInfoDetailRepository;
  41 + @Autowired
  42 + private TTInfoBackupRepository ttInfoBackupRepository;
20 43
21 @Override 44 @Override
22 public void validate_name(TTInfo ttInfo) throws ScheduleException { 45 public void validate_name(TTInfo ttInfo) throws ScheduleException {
@@ -112,4 +135,60 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI @@ -112,4 +135,60 @@ public class TTInfoServiceImpl extends BServiceImpl&lt;TTInfo, Long&gt; implements TTI
112 ttInfo.setIsCancel(true); 135 ttInfo.setIsCancel(true);
113 } 136 }
114 } 137 }
  138 +
  139 + @Override
  140 + @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
  141 + public void backUp(Long ttInfoId) throws ScheduleException {
  142 + LOG.info(">>>>>>开始备份时刻表<<<<<<");
  143 +
  144 + try {
  145 + // 获取原始数据
  146 + TTInfo ttInfo = ttInfoRepository.findOne(ttInfoId);
  147 + List<TTInfoDetail> ttInfoDetails = ttInfoDetailRepository.findByTtinfoId(ttInfoId);
  148 +
  149 + // protobuf序列化成二进制数据
  150 + TimeTableProto.TTInfo.Builder tb = ttInfo.toProtoBuilder();
  151 + for (TTInfoDetail ttInfoDetail : ttInfoDetails) {
  152 + tb.addBcInfo(ttInfoDetail.toProtoBuilder());
  153 + }
  154 + byte[] backupbytes = tb.build().toByteArray();
  155 + LOG.info("......时刻表={}", ttInfo.getName());
  156 + LOG.info("......时刻表protoBuf字节数={}", backupbytes.length);
  157 +
  158 + // 更新备份日期
  159 + Date backupdate = new Date();
  160 + ttInfo.setLastBackUpDate(backupdate);
  161 +
  162 + // 保存备份数据
  163 + TTInfoBackup ttInfoBackup = new TTInfoBackup();
  164 + ttInfoBackup.setXl(ttInfo.getXl().getId());
  165 + ttInfoBackup.setXlName(ttInfo.getXl().getName());
  166 + ttInfoBackup.setTtInfo(ttInfoId);
  167 + ttInfoBackup.setTtInfoName(ttInfo.getName());
  168 + ttInfoBackup.setBackUpDate(backupdate);
  169 + ttInfoBackup.setBackUpInfo(backupbytes);
  170 +
  171 + ttInfoBackupRepository.save(ttInfoBackup);
  172 +// System.out.println(backupbytes.length);
  173 +// try {
  174 +//
  175 +// TimeTableProto.TTInfo tt1 = TimeTableProto.TTInfo.parseFrom(backupbytes);
  176 +// System.out.println(tt1.getName());
  177 +// System.out.println(tt1.getBcInfoCount());
  178 +// } catch (Exception exp) {
  179 +// exp.printStackTrace();
  180 +// }
  181 +
  182 + LOG.info(">>>>>>备份时刻表success<<<<<<");
  183 + } catch (Exception exp) {
  184 + StringWriter stringWriter = new StringWriter();
  185 + PrintWriter printWriter = new PrintWriter(stringWriter);
  186 + exp.printStackTrace(printWriter);
  187 + LOG.info("......异常stack->{}", stringWriter.toString());
  188 + LOG.info(">>>>>>备份时刻表failed<<<<<<");
  189 + throw new ScheduleException(exp);
  190 + }
  191 +
  192 +
  193 + }
115 } 194 }
src/main/java/com/bsth/service/schedule/utils/TimeTableProto.java 0 → 100644
  1 +// Generated by the protocol buffer compiler. DO NOT EDIT!
  2 +// source: timetable.proto
  3 +
  4 +package com.bsth.service.schedule.utils;
  5 +
  6 +public final class TimeTableProto {
  7 + private TimeTableProto() {}
  8 + public static void registerAllExtensions(
  9 + com.google.protobuf.ExtensionRegistryLite registry) {
  10 + }
  11 +
  12 + public static void registerAllExtensions(
  13 + com.google.protobuf.ExtensionRegistry registry) {
  14 + registerAllExtensions(
  15 + (com.google.protobuf.ExtensionRegistryLite) registry);
  16 + }
  17 + public interface TTInfoOrBuilder extends
  18 + // @@protoc_insertion_point(interface_extends:timetable.TTInfo)
  19 + com.google.protobuf.MessageOrBuilder {
  20 +
  21 + /**
  22 + * <pre>
  23 + * 时刻表id
  24 + * </pre>
  25 + *
  26 + * <code>uint64 id = 1;</code>
  27 + */
  28 + long getId();
  29 +
  30 + /**
  31 + * <pre>
  32 + * 时刻表名字
  33 + * </pre>
  34 + *
  35 + * <code>string name = 2;</code>
  36 + */
  37 + java.lang.String getName();
  38 + /**
  39 + * <pre>
  40 + * 时刻表名字
  41 + * </pre>
  42 + *
  43 + * <code>string name = 2;</code>
  44 + */
  45 + com.google.protobuf.ByteString
  46 + getNameBytes();
  47 +
  48 + /**
  49 + * <pre>
  50 + * 线路id
  51 + * </pre>
  52 + *
  53 + * <code>uint32 xl = 3;</code>
  54 + */
  55 + int getXl();
  56 +
  57 + /**
  58 + * <pre>
  59 + * 线路名称
  60 + * </pre>
  61 + *
  62 + * <code>string xlName = 4;</code>
  63 + */
  64 + java.lang.String getXlName();
  65 + /**
  66 + * <pre>
  67 + * 线路名称
  68 + * </pre>
  69 + *
  70 + * <code>string xlName = 4;</code>
  71 + */
  72 + com.google.protobuf.ByteString
  73 + getXlNameBytes();
  74 +
  75 + /**
  76 + * <pre>
  77 + * 线路上下行
  78 + * </pre>
  79 + *
  80 + * <code>string xlDir = 5;</code>
  81 + */
  82 + java.lang.String getXlDir();
  83 + /**
  84 + * <pre>
  85 + * 线路上下行
  86 + * </pre>
  87 + *
  88 + * <code>string xlDir = 5;</code>
  89 + */
  90 + com.google.protobuf.ByteString
  91 + getXlDirBytes();
  92 +
  93 + /**
  94 + * <pre>
  95 + * 启用日期
  96 + * </pre>
  97 + *
  98 + * <code>uint64 qyrq = 6;</code>
  99 + */
  100 + long getQyrq();
  101 +
  102 + /**
  103 + * <pre>
  104 + * 是否启用调度模版
  105 + * </pre>
  106 + *
  107 + * <code>bool isEnableDisTemplate = 7;</code>
  108 + */
  109 + boolean getIsEnableDisTemplate();
  110 +
  111 + /**
  112 + * <pre>
  113 + * 是否删除(标记)
  114 + * </pre>
  115 + *
  116 + * <code>bool isCancel = 8;</code>
  117 + */
  118 + boolean getIsCancel();
  119 +
  120 + /**
  121 + * <pre>
  122 + * 常规有效日(1-7表示星期一到星期日,多个用逗号隔开)
  123 + * </pre>
  124 + *
  125 + * <code>string ruleDays = 9;</code>
  126 + */
  127 + java.lang.String getRuleDays();
  128 + /**
  129 + * <pre>
  130 + * 常规有效日(1-7表示星期一到星期日,多个用逗号隔开)
  131 + * </pre>
  132 + *
  133 + * <code>string ruleDays = 9;</code>
  134 + */
  135 + com.google.protobuf.ByteString
  136 + getRuleDaysBytes();
  137 +
  138 + /**
  139 + * <pre>
  140 + * 特殊有效日期(格式:2001-01-01,多个用逗号隔开)
  141 + * </pre>
  142 + *
  143 + * <code>string specialDays = 10;</code>
  144 + */
  145 + java.lang.String getSpecialDays();
  146 + /**
  147 + * <pre>
  148 + * 特殊有效日期(格式:2001-01-01,多个用逗号隔开)
  149 + * </pre>
  150 + *
  151 + * <code>string specialDays = 10;</code>
  152 + */
  153 + com.google.protobuf.ByteString
  154 + getSpecialDaysBytes();
  155 +
  156 + /**
  157 + * <pre>
  158 + * 创建用户id
  159 + * </pre>
  160 + *
  161 + * <code>uint32 createUser = 11;</code>
  162 + */
  163 + int getCreateUser();
  164 +
  165 + /**
  166 + * <pre>
  167 + * 创建用户姓名
  168 + * </pre>
  169 + *
  170 + * <code>string createUserName = 12;</code>
  171 + */
  172 + java.lang.String getCreateUserName();
  173 + /**
  174 + * <pre>
  175 + * 创建用户姓名
  176 + * </pre>
  177 + *
  178 + * <code>string createUserName = 12;</code>
  179 + */
  180 + com.google.protobuf.ByteString
  181 + getCreateUserNameBytes();
  182 +
  183 + /**
  184 + * <pre>
  185 + * 更新用户id
  186 + * </pre>
  187 + *
  188 + * <code>uint32 updateUser = 13;</code>
  189 + */
  190 + int getUpdateUser();
  191 +
  192 + /**
  193 + * <pre>
  194 + * 更新用户姓名
  195 + * </pre>
  196 + *
  197 + * <code>string updateUserName = 14;</code>
  198 + */
  199 + java.lang.String getUpdateUserName();
  200 + /**
  201 + * <pre>
  202 + * 更新用户姓名
  203 + * </pre>
  204 + *
  205 + * <code>string updateUserName = 14;</code>
  206 + */
  207 + com.google.protobuf.ByteString
  208 + getUpdateUserNameBytes();
  209 +
  210 + /**
  211 + * <pre>
  212 + * 创建日期
  213 + * </pre>
  214 + *
  215 + * <code>uint64 createDate = 15;</code>
  216 + */
  217 + long getCreateDate();
  218 +
  219 + /**
  220 + * <pre>
  221 + * 更新日期
  222 + * </pre>
  223 + *
  224 + * <code>uint64 updateDate = 16;</code>
  225 + */
  226 + long getUpdateDate();
  227 +
  228 + /**
  229 + * <pre>
  230 + * list
  231 + * </pre>
  232 + *
  233 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  234 + */
  235 + java.util.List<com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail>
  236 + getBcInfoList();
  237 + /**
  238 + * <pre>
  239 + * list
  240 + * </pre>
  241 + *
  242 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  243 + */
  244 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail getBcInfo(int index);
  245 + /**
  246 + * <pre>
  247 + * list
  248 + * </pre>
  249 + *
  250 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  251 + */
  252 + int getBcInfoCount();
  253 + /**
  254 + * <pre>
  255 + * list
  256 + * </pre>
  257 + *
  258 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  259 + */
  260 + java.util.List<? extends com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetailOrBuilder>
  261 + getBcInfoOrBuilderList();
  262 + /**
  263 + * <pre>
  264 + * list
  265 + * </pre>
  266 + *
  267 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  268 + */
  269 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetailOrBuilder getBcInfoOrBuilder(
  270 + int index);
  271 + }
  272 + /**
  273 + * Protobuf type {@code timetable.TTInfo}
  274 + */
  275 + public static final class TTInfo extends
  276 + com.google.protobuf.GeneratedMessageV3 implements
  277 + // @@protoc_insertion_point(message_implements:timetable.TTInfo)
  278 + TTInfoOrBuilder {
  279 + // Use TTInfo.newBuilder() to construct.
  280 + private TTInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
  281 + super(builder);
  282 + }
  283 + private TTInfo() {
  284 + id_ = 0L;
  285 + name_ = "";
  286 + xl_ = 0;
  287 + xlName_ = "";
  288 + xlDir_ = "";
  289 + qyrq_ = 0L;
  290 + isEnableDisTemplate_ = false;
  291 + isCancel_ = false;
  292 + ruleDays_ = "";
  293 + specialDays_ = "";
  294 + createUser_ = 0;
  295 + createUserName_ = "";
  296 + updateUser_ = 0;
  297 + updateUserName_ = "";
  298 + createDate_ = 0L;
  299 + updateDate_ = 0L;
  300 + bcInfo_ = java.util.Collections.emptyList();
  301 + }
  302 +
  303 + @java.lang.Override
  304 + public final com.google.protobuf.UnknownFieldSet
  305 + getUnknownFields() {
  306 + return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
  307 + }
  308 + private TTInfo(
  309 + com.google.protobuf.CodedInputStream input,
  310 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  311 + throws com.google.protobuf.InvalidProtocolBufferException {
  312 + this();
  313 + int mutable_bitField0_ = 0;
  314 + try {
  315 + boolean done = false;
  316 + while (!done) {
  317 + int tag = input.readTag();
  318 + switch (tag) {
  319 + case 0:
  320 + done = true;
  321 + break;
  322 + default: {
  323 + if (!input.skipField(tag)) {
  324 + done = true;
  325 + }
  326 + break;
  327 + }
  328 + case 8: {
  329 +
  330 + id_ = input.readUInt64();
  331 + break;
  332 + }
  333 + case 18: {
  334 + java.lang.String s = input.readStringRequireUtf8();
  335 +
  336 + name_ = s;
  337 + break;
  338 + }
  339 + case 24: {
  340 +
  341 + xl_ = input.readUInt32();
  342 + break;
  343 + }
  344 + case 34: {
  345 + java.lang.String s = input.readStringRequireUtf8();
  346 +
  347 + xlName_ = s;
  348 + break;
  349 + }
  350 + case 42: {
  351 + java.lang.String s = input.readStringRequireUtf8();
  352 +
  353 + xlDir_ = s;
  354 + break;
  355 + }
  356 + case 48: {
  357 +
  358 + qyrq_ = input.readUInt64();
  359 + break;
  360 + }
  361 + case 56: {
  362 +
  363 + isEnableDisTemplate_ = input.readBool();
  364 + break;
  365 + }
  366 + case 64: {
  367 +
  368 + isCancel_ = input.readBool();
  369 + break;
  370 + }
  371 + case 74: {
  372 + java.lang.String s = input.readStringRequireUtf8();
  373 +
  374 + ruleDays_ = s;
  375 + break;
  376 + }
  377 + case 82: {
  378 + java.lang.String s = input.readStringRequireUtf8();
  379 +
  380 + specialDays_ = s;
  381 + break;
  382 + }
  383 + case 88: {
  384 +
  385 + createUser_ = input.readUInt32();
  386 + break;
  387 + }
  388 + case 98: {
  389 + java.lang.String s = input.readStringRequireUtf8();
  390 +
  391 + createUserName_ = s;
  392 + break;
  393 + }
  394 + case 104: {
  395 +
  396 + updateUser_ = input.readUInt32();
  397 + break;
  398 + }
  399 + case 114: {
  400 + java.lang.String s = input.readStringRequireUtf8();
  401 +
  402 + updateUserName_ = s;
  403 + break;
  404 + }
  405 + case 120: {
  406 +
  407 + createDate_ = input.readUInt64();
  408 + break;
  409 + }
  410 + case 128: {
  411 +
  412 + updateDate_ = input.readUInt64();
  413 + break;
  414 + }
  415 + case 138: {
  416 + if (!((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
  417 + bcInfo_ = new java.util.ArrayList<com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail>();
  418 + mutable_bitField0_ |= 0x00010000;
  419 + }
  420 + bcInfo_.add(
  421 + input.readMessage(com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.parser(), extensionRegistry));
  422 + break;
  423 + }
  424 + }
  425 + }
  426 + } catch (com.google.protobuf.InvalidProtocolBufferException e) {
  427 + throw e.setUnfinishedMessage(this);
  428 + } catch (java.io.IOException e) {
  429 + throw new com.google.protobuf.InvalidProtocolBufferException(
  430 + e).setUnfinishedMessage(this);
  431 + } finally {
  432 + if (((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
  433 + bcInfo_ = java.util.Collections.unmodifiableList(bcInfo_);
  434 + }
  435 + makeExtensionsImmutable();
  436 + }
  437 + }
  438 + public static final com.google.protobuf.Descriptors.Descriptor
  439 + getDescriptor() {
  440 + return com.bsth.service.schedule.utils.TimeTableProto.internal_static_timetable_TTInfo_descriptor;
  441 + }
  442 +
  443 + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
  444 + internalGetFieldAccessorTable() {
  445 + return com.bsth.service.schedule.utils.TimeTableProto.internal_static_timetable_TTInfo_fieldAccessorTable
  446 + .ensureFieldAccessorsInitialized(
  447 + com.bsth.service.schedule.utils.TimeTableProto.TTInfo.class, com.bsth.service.schedule.utils.TimeTableProto.TTInfo.Builder.class);
  448 + }
  449 +
  450 + private int bitField0_;
  451 + public static final int ID_FIELD_NUMBER = 1;
  452 + private long id_;
  453 + /**
  454 + * <pre>
  455 + * 时刻表id
  456 + * </pre>
  457 + *
  458 + * <code>uint64 id = 1;</code>
  459 + */
  460 + public long getId() {
  461 + return id_;
  462 + }
  463 +
  464 + public static final int NAME_FIELD_NUMBER = 2;
  465 + private volatile java.lang.Object name_;
  466 + /**
  467 + * <pre>
  468 + * 时刻表名字
  469 + * </pre>
  470 + *
  471 + * <code>string name = 2;</code>
  472 + */
  473 + public java.lang.String getName() {
  474 + java.lang.Object ref = name_;
  475 + if (ref instanceof java.lang.String) {
  476 + return (java.lang.String) ref;
  477 + } else {
  478 + com.google.protobuf.ByteString bs =
  479 + (com.google.protobuf.ByteString) ref;
  480 + java.lang.String s = bs.toStringUtf8();
  481 + name_ = s;
  482 + return s;
  483 + }
  484 + }
  485 + /**
  486 + * <pre>
  487 + * 时刻表名字
  488 + * </pre>
  489 + *
  490 + * <code>string name = 2;</code>
  491 + */
  492 + public com.google.protobuf.ByteString
  493 + getNameBytes() {
  494 + java.lang.Object ref = name_;
  495 + if (ref instanceof java.lang.String) {
  496 + com.google.protobuf.ByteString b =
  497 + com.google.protobuf.ByteString.copyFromUtf8(
  498 + (java.lang.String) ref);
  499 + name_ = b;
  500 + return b;
  501 + } else {
  502 + return (com.google.protobuf.ByteString) ref;
  503 + }
  504 + }
  505 +
  506 + public static final int XL_FIELD_NUMBER = 3;
  507 + private int xl_;
  508 + /**
  509 + * <pre>
  510 + * 线路id
  511 + * </pre>
  512 + *
  513 + * <code>uint32 xl = 3;</code>
  514 + */
  515 + public int getXl() {
  516 + return xl_;
  517 + }
  518 +
  519 + public static final int XLNAME_FIELD_NUMBER = 4;
  520 + private volatile java.lang.Object xlName_;
  521 + /**
  522 + * <pre>
  523 + * 线路名称
  524 + * </pre>
  525 + *
  526 + * <code>string xlName = 4;</code>
  527 + */
  528 + public java.lang.String getXlName() {
  529 + java.lang.Object ref = xlName_;
  530 + if (ref instanceof java.lang.String) {
  531 + return (java.lang.String) ref;
  532 + } else {
  533 + com.google.protobuf.ByteString bs =
  534 + (com.google.protobuf.ByteString) ref;
  535 + java.lang.String s = bs.toStringUtf8();
  536 + xlName_ = s;
  537 + return s;
  538 + }
  539 + }
  540 + /**
  541 + * <pre>
  542 + * 线路名称
  543 + * </pre>
  544 + *
  545 + * <code>string xlName = 4;</code>
  546 + */
  547 + public com.google.protobuf.ByteString
  548 + getXlNameBytes() {
  549 + java.lang.Object ref = xlName_;
  550 + if (ref instanceof java.lang.String) {
  551 + com.google.protobuf.ByteString b =
  552 + com.google.protobuf.ByteString.copyFromUtf8(
  553 + (java.lang.String) ref);
  554 + xlName_ = b;
  555 + return b;
  556 + } else {
  557 + return (com.google.protobuf.ByteString) ref;
  558 + }
  559 + }
  560 +
  561 + public static final int XLDIR_FIELD_NUMBER = 5;
  562 + private volatile java.lang.Object xlDir_;
  563 + /**
  564 + * <pre>
  565 + * 线路上下行
  566 + * </pre>
  567 + *
  568 + * <code>string xlDir = 5;</code>
  569 + */
  570 + public java.lang.String getXlDir() {
  571 + java.lang.Object ref = xlDir_;
  572 + if (ref instanceof java.lang.String) {
  573 + return (java.lang.String) ref;
  574 + } else {
  575 + com.google.protobuf.ByteString bs =
  576 + (com.google.protobuf.ByteString) ref;
  577 + java.lang.String s = bs.toStringUtf8();
  578 + xlDir_ = s;
  579 + return s;
  580 + }
  581 + }
  582 + /**
  583 + * <pre>
  584 + * 线路上下行
  585 + * </pre>
  586 + *
  587 + * <code>string xlDir = 5;</code>
  588 + */
  589 + public com.google.protobuf.ByteString
  590 + getXlDirBytes() {
  591 + java.lang.Object ref = xlDir_;
  592 + if (ref instanceof java.lang.String) {
  593 + com.google.protobuf.ByteString b =
  594 + com.google.protobuf.ByteString.copyFromUtf8(
  595 + (java.lang.String) ref);
  596 + xlDir_ = b;
  597 + return b;
  598 + } else {
  599 + return (com.google.protobuf.ByteString) ref;
  600 + }
  601 + }
  602 +
  603 + public static final int QYRQ_FIELD_NUMBER = 6;
  604 + private long qyrq_;
  605 + /**
  606 + * <pre>
  607 + * 启用日期
  608 + * </pre>
  609 + *
  610 + * <code>uint64 qyrq = 6;</code>
  611 + */
  612 + public long getQyrq() {
  613 + return qyrq_;
  614 + }
  615 +
  616 + public static final int ISENABLEDISTEMPLATE_FIELD_NUMBER = 7;
  617 + private boolean isEnableDisTemplate_;
  618 + /**
  619 + * <pre>
  620 + * 是否启用调度模版
  621 + * </pre>
  622 + *
  623 + * <code>bool isEnableDisTemplate = 7;</code>
  624 + */
  625 + public boolean getIsEnableDisTemplate() {
  626 + return isEnableDisTemplate_;
  627 + }
  628 +
  629 + public static final int ISCANCEL_FIELD_NUMBER = 8;
  630 + private boolean isCancel_;
  631 + /**
  632 + * <pre>
  633 + * 是否删除(标记)
  634 + * </pre>
  635 + *
  636 + * <code>bool isCancel = 8;</code>
  637 + */
  638 + public boolean getIsCancel() {
  639 + return isCancel_;
  640 + }
  641 +
  642 + public static final int RULEDAYS_FIELD_NUMBER = 9;
  643 + private volatile java.lang.Object ruleDays_;
  644 + /**
  645 + * <pre>
  646 + * 常规有效日(1-7表示星期一到星期日,多个用逗号隔开)
  647 + * </pre>
  648 + *
  649 + * <code>string ruleDays = 9;</code>
  650 + */
  651 + public java.lang.String getRuleDays() {
  652 + java.lang.Object ref = ruleDays_;
  653 + if (ref instanceof java.lang.String) {
  654 + return (java.lang.String) ref;
  655 + } else {
  656 + com.google.protobuf.ByteString bs =
  657 + (com.google.protobuf.ByteString) ref;
  658 + java.lang.String s = bs.toStringUtf8();
  659 + ruleDays_ = s;
  660 + return s;
  661 + }
  662 + }
  663 + /**
  664 + * <pre>
  665 + * 常规有效日(1-7表示星期一到星期日,多个用逗号隔开)
  666 + * </pre>
  667 + *
  668 + * <code>string ruleDays = 9;</code>
  669 + */
  670 + public com.google.protobuf.ByteString
  671 + getRuleDaysBytes() {
  672 + java.lang.Object ref = ruleDays_;
  673 + if (ref instanceof java.lang.String) {
  674 + com.google.protobuf.ByteString b =
  675 + com.google.protobuf.ByteString.copyFromUtf8(
  676 + (java.lang.String) ref);
  677 + ruleDays_ = b;
  678 + return b;
  679 + } else {
  680 + return (com.google.protobuf.ByteString) ref;
  681 + }
  682 + }
  683 +
  684 + public static final int SPECIALDAYS_FIELD_NUMBER = 10;
  685 + private volatile java.lang.Object specialDays_;
  686 + /**
  687 + * <pre>
  688 + * 特殊有效日期(格式:2001-01-01,多个用逗号隔开)
  689 + * </pre>
  690 + *
  691 + * <code>string specialDays = 10;</code>
  692 + */
  693 + public java.lang.String getSpecialDays() {
  694 + java.lang.Object ref = specialDays_;
  695 + if (ref instanceof java.lang.String) {
  696 + return (java.lang.String) ref;
  697 + } else {
  698 + com.google.protobuf.ByteString bs =
  699 + (com.google.protobuf.ByteString) ref;
  700 + java.lang.String s = bs.toStringUtf8();
  701 + specialDays_ = s;
  702 + return s;
  703 + }
  704 + }
  705 + /**
  706 + * <pre>
  707 + * 特殊有效日期(格式:2001-01-01,多个用逗号隔开)
  708 + * </pre>
  709 + *
  710 + * <code>string specialDays = 10;</code>
  711 + */
  712 + public com.google.protobuf.ByteString
  713 + getSpecialDaysBytes() {
  714 + java.lang.Object ref = specialDays_;
  715 + if (ref instanceof java.lang.String) {
  716 + com.google.protobuf.ByteString b =
  717 + com.google.protobuf.ByteString.copyFromUtf8(
  718 + (java.lang.String) ref);
  719 + specialDays_ = b;
  720 + return b;
  721 + } else {
  722 + return (com.google.protobuf.ByteString) ref;
  723 + }
  724 + }
  725 +
  726 + public static final int CREATEUSER_FIELD_NUMBER = 11;
  727 + private int createUser_;
  728 + /**
  729 + * <pre>
  730 + * 创建用户id
  731 + * </pre>
  732 + *
  733 + * <code>uint32 createUser = 11;</code>
  734 + */
  735 + public int getCreateUser() {
  736 + return createUser_;
  737 + }
  738 +
  739 + public static final int CREATEUSERNAME_FIELD_NUMBER = 12;
  740 + private volatile java.lang.Object createUserName_;
  741 + /**
  742 + * <pre>
  743 + * 创建用户姓名
  744 + * </pre>
  745 + *
  746 + * <code>string createUserName = 12;</code>
  747 + */
  748 + public java.lang.String getCreateUserName() {
  749 + java.lang.Object ref = createUserName_;
  750 + if (ref instanceof java.lang.String) {
  751 + return (java.lang.String) ref;
  752 + } else {
  753 + com.google.protobuf.ByteString bs =
  754 + (com.google.protobuf.ByteString) ref;
  755 + java.lang.String s = bs.toStringUtf8();
  756 + createUserName_ = s;
  757 + return s;
  758 + }
  759 + }
  760 + /**
  761 + * <pre>
  762 + * 创建用户姓名
  763 + * </pre>
  764 + *
  765 + * <code>string createUserName = 12;</code>
  766 + */
  767 + public com.google.protobuf.ByteString
  768 + getCreateUserNameBytes() {
  769 + java.lang.Object ref = createUserName_;
  770 + if (ref instanceof java.lang.String) {
  771 + com.google.protobuf.ByteString b =
  772 + com.google.protobuf.ByteString.copyFromUtf8(
  773 + (java.lang.String) ref);
  774 + createUserName_ = b;
  775 + return b;
  776 + } else {
  777 + return (com.google.protobuf.ByteString) ref;
  778 + }
  779 + }
  780 +
  781 + public static final int UPDATEUSER_FIELD_NUMBER = 13;
  782 + private int updateUser_;
  783 + /**
  784 + * <pre>
  785 + * 更新用户id
  786 + * </pre>
  787 + *
  788 + * <code>uint32 updateUser = 13;</code>
  789 + */
  790 + public int getUpdateUser() {
  791 + return updateUser_;
  792 + }
  793 +
  794 + public static final int UPDATEUSERNAME_FIELD_NUMBER = 14;
  795 + private volatile java.lang.Object updateUserName_;
  796 + /**
  797 + * <pre>
  798 + * 更新用户姓名
  799 + * </pre>
  800 + *
  801 + * <code>string updateUserName = 14;</code>
  802 + */
  803 + public java.lang.String getUpdateUserName() {
  804 + java.lang.Object ref = updateUserName_;
  805 + if (ref instanceof java.lang.String) {
  806 + return (java.lang.String) ref;
  807 + } else {
  808 + com.google.protobuf.ByteString bs =
  809 + (com.google.protobuf.ByteString) ref;
  810 + java.lang.String s = bs.toStringUtf8();
  811 + updateUserName_ = s;
  812 + return s;
  813 + }
  814 + }
  815 + /**
  816 + * <pre>
  817 + * 更新用户姓名
  818 + * </pre>
  819 + *
  820 + * <code>string updateUserName = 14;</code>
  821 + */
  822 + public com.google.protobuf.ByteString
  823 + getUpdateUserNameBytes() {
  824 + java.lang.Object ref = updateUserName_;
  825 + if (ref instanceof java.lang.String) {
  826 + com.google.protobuf.ByteString b =
  827 + com.google.protobuf.ByteString.copyFromUtf8(
  828 + (java.lang.String) ref);
  829 + updateUserName_ = b;
  830 + return b;
  831 + } else {
  832 + return (com.google.protobuf.ByteString) ref;
  833 + }
  834 + }
  835 +
  836 + public static final int CREATEDATE_FIELD_NUMBER = 15;
  837 + private long createDate_;
  838 + /**
  839 + * <pre>
  840 + * 创建日期
  841 + * </pre>
  842 + *
  843 + * <code>uint64 createDate = 15;</code>
  844 + */
  845 + public long getCreateDate() {
  846 + return createDate_;
  847 + }
  848 +
  849 + public static final int UPDATEDATE_FIELD_NUMBER = 16;
  850 + private long updateDate_;
  851 + /**
  852 + * <pre>
  853 + * 更新日期
  854 + * </pre>
  855 + *
  856 + * <code>uint64 updateDate = 16;</code>
  857 + */
  858 + public long getUpdateDate() {
  859 + return updateDate_;
  860 + }
  861 +
  862 + public static final int BCINFO_FIELD_NUMBER = 17;
  863 + private java.util.List<com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail> bcInfo_;
  864 + /**
  865 + * <pre>
  866 + * list
  867 + * </pre>
  868 + *
  869 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  870 + */
  871 + public java.util.List<com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail> getBcInfoList() {
  872 + return bcInfo_;
  873 + }
  874 + /**
  875 + * <pre>
  876 + * list
  877 + * </pre>
  878 + *
  879 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  880 + */
  881 + public java.util.List<? extends com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetailOrBuilder>
  882 + getBcInfoOrBuilderList() {
  883 + return bcInfo_;
  884 + }
  885 + /**
  886 + * <pre>
  887 + * list
  888 + * </pre>
  889 + *
  890 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  891 + */
  892 + public int getBcInfoCount() {
  893 + return bcInfo_.size();
  894 + }
  895 + /**
  896 + * <pre>
  897 + * list
  898 + * </pre>
  899 + *
  900 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  901 + */
  902 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail getBcInfo(int index) {
  903 + return bcInfo_.get(index);
  904 + }
  905 + /**
  906 + * <pre>
  907 + * list
  908 + * </pre>
  909 + *
  910 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  911 + */
  912 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetailOrBuilder getBcInfoOrBuilder(
  913 + int index) {
  914 + return bcInfo_.get(index);
  915 + }
  916 +
  917 + private byte memoizedIsInitialized = -1;
  918 + public final boolean isInitialized() {
  919 + byte isInitialized = memoizedIsInitialized;
  920 + if (isInitialized == 1) return true;
  921 + if (isInitialized == 0) return false;
  922 +
  923 + memoizedIsInitialized = 1;
  924 + return true;
  925 + }
  926 +
  927 + public void writeTo(com.google.protobuf.CodedOutputStream output)
  928 + throws java.io.IOException {
  929 + if (id_ != 0L) {
  930 + output.writeUInt64(1, id_);
  931 + }
  932 + if (!getNameBytes().isEmpty()) {
  933 + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
  934 + }
  935 + if (xl_ != 0) {
  936 + output.writeUInt32(3, xl_);
  937 + }
  938 + if (!getXlNameBytes().isEmpty()) {
  939 + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, xlName_);
  940 + }
  941 + if (!getXlDirBytes().isEmpty()) {
  942 + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, xlDir_);
  943 + }
  944 + if (qyrq_ != 0L) {
  945 + output.writeUInt64(6, qyrq_);
  946 + }
  947 + if (isEnableDisTemplate_ != false) {
  948 + output.writeBool(7, isEnableDisTemplate_);
  949 + }
  950 + if (isCancel_ != false) {
  951 + output.writeBool(8, isCancel_);
  952 + }
  953 + if (!getRuleDaysBytes().isEmpty()) {
  954 + com.google.protobuf.GeneratedMessageV3.writeString(output, 9, ruleDays_);
  955 + }
  956 + if (!getSpecialDaysBytes().isEmpty()) {
  957 + com.google.protobuf.GeneratedMessageV3.writeString(output, 10, specialDays_);
  958 + }
  959 + if (createUser_ != 0) {
  960 + output.writeUInt32(11, createUser_);
  961 + }
  962 + if (!getCreateUserNameBytes().isEmpty()) {
  963 + com.google.protobuf.GeneratedMessageV3.writeString(output, 12, createUserName_);
  964 + }
  965 + if (updateUser_ != 0) {
  966 + output.writeUInt32(13, updateUser_);
  967 + }
  968 + if (!getUpdateUserNameBytes().isEmpty()) {
  969 + com.google.protobuf.GeneratedMessageV3.writeString(output, 14, updateUserName_);
  970 + }
  971 + if (createDate_ != 0L) {
  972 + output.writeUInt64(15, createDate_);
  973 + }
  974 + if (updateDate_ != 0L) {
  975 + output.writeUInt64(16, updateDate_);
  976 + }
  977 + for (int i = 0; i < bcInfo_.size(); i++) {
  978 + output.writeMessage(17, bcInfo_.get(i));
  979 + }
  980 + }
  981 +
  982 + public int getSerializedSize() {
  983 + int size = memoizedSize;
  984 + if (size != -1) return size;
  985 +
  986 + size = 0;
  987 + if (id_ != 0L) {
  988 + size += com.google.protobuf.CodedOutputStream
  989 + .computeUInt64Size(1, id_);
  990 + }
  991 + if (!getNameBytes().isEmpty()) {
  992 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
  993 + }
  994 + if (xl_ != 0) {
  995 + size += com.google.protobuf.CodedOutputStream
  996 + .computeUInt32Size(3, xl_);
  997 + }
  998 + if (!getXlNameBytes().isEmpty()) {
  999 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, xlName_);
  1000 + }
  1001 + if (!getXlDirBytes().isEmpty()) {
  1002 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, xlDir_);
  1003 + }
  1004 + if (qyrq_ != 0L) {
  1005 + size += com.google.protobuf.CodedOutputStream
  1006 + .computeUInt64Size(6, qyrq_);
  1007 + }
  1008 + if (isEnableDisTemplate_ != false) {
  1009 + size += com.google.protobuf.CodedOutputStream
  1010 + .computeBoolSize(7, isEnableDisTemplate_);
  1011 + }
  1012 + if (isCancel_ != false) {
  1013 + size += com.google.protobuf.CodedOutputStream
  1014 + .computeBoolSize(8, isCancel_);
  1015 + }
  1016 + if (!getRuleDaysBytes().isEmpty()) {
  1017 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, ruleDays_);
  1018 + }
  1019 + if (!getSpecialDaysBytes().isEmpty()) {
  1020 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, specialDays_);
  1021 + }
  1022 + if (createUser_ != 0) {
  1023 + size += com.google.protobuf.CodedOutputStream
  1024 + .computeUInt32Size(11, createUser_);
  1025 + }
  1026 + if (!getCreateUserNameBytes().isEmpty()) {
  1027 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, createUserName_);
  1028 + }
  1029 + if (updateUser_ != 0) {
  1030 + size += com.google.protobuf.CodedOutputStream
  1031 + .computeUInt32Size(13, updateUser_);
  1032 + }
  1033 + if (!getUpdateUserNameBytes().isEmpty()) {
  1034 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, updateUserName_);
  1035 + }
  1036 + if (createDate_ != 0L) {
  1037 + size += com.google.protobuf.CodedOutputStream
  1038 + .computeUInt64Size(15, createDate_);
  1039 + }
  1040 + if (updateDate_ != 0L) {
  1041 + size += com.google.protobuf.CodedOutputStream
  1042 + .computeUInt64Size(16, updateDate_);
  1043 + }
  1044 + for (int i = 0; i < bcInfo_.size(); i++) {
  1045 + size += com.google.protobuf.CodedOutputStream
  1046 + .computeMessageSize(17, bcInfo_.get(i));
  1047 + }
  1048 + memoizedSize = size;
  1049 + return size;
  1050 + }
  1051 +
  1052 + private static final long serialVersionUID = 0L;
  1053 + @java.lang.Override
  1054 + public boolean equals(final java.lang.Object obj) {
  1055 + if (obj == this) {
  1056 + return true;
  1057 + }
  1058 + if (!(obj instanceof com.bsth.service.schedule.utils.TimeTableProto.TTInfo)) {
  1059 + return super.equals(obj);
  1060 + }
  1061 + com.bsth.service.schedule.utils.TimeTableProto.TTInfo other = (com.bsth.service.schedule.utils.TimeTableProto.TTInfo) obj;
  1062 +
  1063 + boolean result = true;
  1064 + result = result && (getId()
  1065 + == other.getId());
  1066 + result = result && getName()
  1067 + .equals(other.getName());
  1068 + result = result && (getXl()
  1069 + == other.getXl());
  1070 + result = result && getXlName()
  1071 + .equals(other.getXlName());
  1072 + result = result && getXlDir()
  1073 + .equals(other.getXlDir());
  1074 + result = result && (getQyrq()
  1075 + == other.getQyrq());
  1076 + result = result && (getIsEnableDisTemplate()
  1077 + == other.getIsEnableDisTemplate());
  1078 + result = result && (getIsCancel()
  1079 + == other.getIsCancel());
  1080 + result = result && getRuleDays()
  1081 + .equals(other.getRuleDays());
  1082 + result = result && getSpecialDays()
  1083 + .equals(other.getSpecialDays());
  1084 + result = result && (getCreateUser()
  1085 + == other.getCreateUser());
  1086 + result = result && getCreateUserName()
  1087 + .equals(other.getCreateUserName());
  1088 + result = result && (getUpdateUser()
  1089 + == other.getUpdateUser());
  1090 + result = result && getUpdateUserName()
  1091 + .equals(other.getUpdateUserName());
  1092 + result = result && (getCreateDate()
  1093 + == other.getCreateDate());
  1094 + result = result && (getUpdateDate()
  1095 + == other.getUpdateDate());
  1096 + result = result && getBcInfoList()
  1097 + .equals(other.getBcInfoList());
  1098 + return result;
  1099 + }
  1100 +
  1101 + @java.lang.Override
  1102 + public int hashCode() {
  1103 + if (memoizedHashCode != 0) {
  1104 + return memoizedHashCode;
  1105 + }
  1106 + int hash = 41;
  1107 + hash = (19 * hash) + getDescriptor().hashCode();
  1108 + hash = (37 * hash) + ID_FIELD_NUMBER;
  1109 + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
  1110 + getId());
  1111 + hash = (37 * hash) + NAME_FIELD_NUMBER;
  1112 + hash = (53 * hash) + getName().hashCode();
  1113 + hash = (37 * hash) + XL_FIELD_NUMBER;
  1114 + hash = (53 * hash) + getXl();
  1115 + hash = (37 * hash) + XLNAME_FIELD_NUMBER;
  1116 + hash = (53 * hash) + getXlName().hashCode();
  1117 + hash = (37 * hash) + XLDIR_FIELD_NUMBER;
  1118 + hash = (53 * hash) + getXlDir().hashCode();
  1119 + hash = (37 * hash) + QYRQ_FIELD_NUMBER;
  1120 + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
  1121 + getQyrq());
  1122 + hash = (37 * hash) + ISENABLEDISTEMPLATE_FIELD_NUMBER;
  1123 + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
  1124 + getIsEnableDisTemplate());
  1125 + hash = (37 * hash) + ISCANCEL_FIELD_NUMBER;
  1126 + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
  1127 + getIsCancel());
  1128 + hash = (37 * hash) + RULEDAYS_FIELD_NUMBER;
  1129 + hash = (53 * hash) + getRuleDays().hashCode();
  1130 + hash = (37 * hash) + SPECIALDAYS_FIELD_NUMBER;
  1131 + hash = (53 * hash) + getSpecialDays().hashCode();
  1132 + hash = (37 * hash) + CREATEUSER_FIELD_NUMBER;
  1133 + hash = (53 * hash) + getCreateUser();
  1134 + hash = (37 * hash) + CREATEUSERNAME_FIELD_NUMBER;
  1135 + hash = (53 * hash) + getCreateUserName().hashCode();
  1136 + hash = (37 * hash) + UPDATEUSER_FIELD_NUMBER;
  1137 + hash = (53 * hash) + getUpdateUser();
  1138 + hash = (37 * hash) + UPDATEUSERNAME_FIELD_NUMBER;
  1139 + hash = (53 * hash) + getUpdateUserName().hashCode();
  1140 + hash = (37 * hash) + CREATEDATE_FIELD_NUMBER;
  1141 + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
  1142 + getCreateDate());
  1143 + hash = (37 * hash) + UPDATEDATE_FIELD_NUMBER;
  1144 + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
  1145 + getUpdateDate());
  1146 + if (getBcInfoCount() > 0) {
  1147 + hash = (37 * hash) + BCINFO_FIELD_NUMBER;
  1148 + hash = (53 * hash) + getBcInfoList().hashCode();
  1149 + }
  1150 + hash = (29 * hash) + unknownFields.hashCode();
  1151 + memoizedHashCode = hash;
  1152 + return hash;
  1153 + }
  1154 +
  1155 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfo parseFrom(
  1156 + java.nio.ByteBuffer data)
  1157 + throws com.google.protobuf.InvalidProtocolBufferException {
  1158 + return PARSER.parseFrom(data);
  1159 + }
  1160 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfo parseFrom(
  1161 + java.nio.ByteBuffer data,
  1162 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  1163 + throws com.google.protobuf.InvalidProtocolBufferException {
  1164 + return PARSER.parseFrom(data, extensionRegistry);
  1165 + }
  1166 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfo parseFrom(
  1167 + com.google.protobuf.ByteString data)
  1168 + throws com.google.protobuf.InvalidProtocolBufferException {
  1169 + return PARSER.parseFrom(data);
  1170 + }
  1171 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfo parseFrom(
  1172 + com.google.protobuf.ByteString data,
  1173 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  1174 + throws com.google.protobuf.InvalidProtocolBufferException {
  1175 + return PARSER.parseFrom(data, extensionRegistry);
  1176 + }
  1177 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfo parseFrom(byte[] data)
  1178 + throws com.google.protobuf.InvalidProtocolBufferException {
  1179 + return PARSER.parseFrom(data);
  1180 + }
  1181 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfo parseFrom(
  1182 + byte[] data,
  1183 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  1184 + throws com.google.protobuf.InvalidProtocolBufferException {
  1185 + return PARSER.parseFrom(data, extensionRegistry);
  1186 + }
  1187 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfo parseFrom(java.io.InputStream input)
  1188 + throws java.io.IOException {
  1189 + return com.google.protobuf.GeneratedMessageV3
  1190 + .parseWithIOException(PARSER, input);
  1191 + }
  1192 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfo parseFrom(
  1193 + java.io.InputStream input,
  1194 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  1195 + throws java.io.IOException {
  1196 + return com.google.protobuf.GeneratedMessageV3
  1197 + .parseWithIOException(PARSER, input, extensionRegistry);
  1198 + }
  1199 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfo parseDelimitedFrom(java.io.InputStream input)
  1200 + throws java.io.IOException {
  1201 + return com.google.protobuf.GeneratedMessageV3
  1202 + .parseDelimitedWithIOException(PARSER, input);
  1203 + }
  1204 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfo parseDelimitedFrom(
  1205 + java.io.InputStream input,
  1206 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  1207 + throws java.io.IOException {
  1208 + return com.google.protobuf.GeneratedMessageV3
  1209 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
  1210 + }
  1211 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfo parseFrom(
  1212 + com.google.protobuf.CodedInputStream input)
  1213 + throws java.io.IOException {
  1214 + return com.google.protobuf.GeneratedMessageV3
  1215 + .parseWithIOException(PARSER, input);
  1216 + }
  1217 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfo parseFrom(
  1218 + com.google.protobuf.CodedInputStream input,
  1219 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  1220 + throws java.io.IOException {
  1221 + return com.google.protobuf.GeneratedMessageV3
  1222 + .parseWithIOException(PARSER, input, extensionRegistry);
  1223 + }
  1224 +
  1225 + public Builder newBuilderForType() { return newBuilder(); }
  1226 + public static Builder newBuilder() {
  1227 + return DEFAULT_INSTANCE.toBuilder();
  1228 + }
  1229 + public static Builder newBuilder(com.bsth.service.schedule.utils.TimeTableProto.TTInfo prototype) {
  1230 + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  1231 + }
  1232 + public Builder toBuilder() {
  1233 + return this == DEFAULT_INSTANCE
  1234 + ? new Builder() : new Builder().mergeFrom(this);
  1235 + }
  1236 +
  1237 + @java.lang.Override
  1238 + protected Builder newBuilderForType(
  1239 + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
  1240 + Builder builder = new Builder(parent);
  1241 + return builder;
  1242 + }
  1243 + /**
  1244 + * Protobuf type {@code timetable.TTInfo}
  1245 + */
  1246 + public static final class Builder extends
  1247 + com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
  1248 + // @@protoc_insertion_point(builder_implements:timetable.TTInfo)
  1249 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoOrBuilder {
  1250 + public static final com.google.protobuf.Descriptors.Descriptor
  1251 + getDescriptor() {
  1252 + return com.bsth.service.schedule.utils.TimeTableProto.internal_static_timetable_TTInfo_descriptor;
  1253 + }
  1254 +
  1255 + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
  1256 + internalGetFieldAccessorTable() {
  1257 + return com.bsth.service.schedule.utils.TimeTableProto.internal_static_timetable_TTInfo_fieldAccessorTable
  1258 + .ensureFieldAccessorsInitialized(
  1259 + com.bsth.service.schedule.utils.TimeTableProto.TTInfo.class, com.bsth.service.schedule.utils.TimeTableProto.TTInfo.Builder.class);
  1260 + }
  1261 +
  1262 + // Construct using com.bsth.service.schedule.utils.TimeTableProto.TTInfo.newBuilder()
  1263 + private Builder() {
  1264 + maybeForceBuilderInitialization();
  1265 + }
  1266 +
  1267 + private Builder(
  1268 + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
  1269 + super(parent);
  1270 + maybeForceBuilderInitialization();
  1271 + }
  1272 + private void maybeForceBuilderInitialization() {
  1273 + if (com.google.protobuf.GeneratedMessageV3
  1274 + .alwaysUseFieldBuilders) {
  1275 + getBcInfoFieldBuilder();
  1276 + }
  1277 + }
  1278 + public Builder clear() {
  1279 + super.clear();
  1280 + id_ = 0L;
  1281 +
  1282 + name_ = "";
  1283 +
  1284 + xl_ = 0;
  1285 +
  1286 + xlName_ = "";
  1287 +
  1288 + xlDir_ = "";
  1289 +
  1290 + qyrq_ = 0L;
  1291 +
  1292 + isEnableDisTemplate_ = false;
  1293 +
  1294 + isCancel_ = false;
  1295 +
  1296 + ruleDays_ = "";
  1297 +
  1298 + specialDays_ = "";
  1299 +
  1300 + createUser_ = 0;
  1301 +
  1302 + createUserName_ = "";
  1303 +
  1304 + updateUser_ = 0;
  1305 +
  1306 + updateUserName_ = "";
  1307 +
  1308 + createDate_ = 0L;
  1309 +
  1310 + updateDate_ = 0L;
  1311 +
  1312 + if (bcInfoBuilder_ == null) {
  1313 + bcInfo_ = java.util.Collections.emptyList();
  1314 + bitField0_ = (bitField0_ & ~0x00010000);
  1315 + } else {
  1316 + bcInfoBuilder_.clear();
  1317 + }
  1318 + return this;
  1319 + }
  1320 +
  1321 + public com.google.protobuf.Descriptors.Descriptor
  1322 + getDescriptorForType() {
  1323 + return com.bsth.service.schedule.utils.TimeTableProto.internal_static_timetable_TTInfo_descriptor;
  1324 + }
  1325 +
  1326 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfo getDefaultInstanceForType() {
  1327 + return com.bsth.service.schedule.utils.TimeTableProto.TTInfo.getDefaultInstance();
  1328 + }
  1329 +
  1330 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfo build() {
  1331 + com.bsth.service.schedule.utils.TimeTableProto.TTInfo result = buildPartial();
  1332 + if (!result.isInitialized()) {
  1333 + throw newUninitializedMessageException(result);
  1334 + }
  1335 + return result;
  1336 + }
  1337 +
  1338 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfo buildPartial() {
  1339 + com.bsth.service.schedule.utils.TimeTableProto.TTInfo result = new com.bsth.service.schedule.utils.TimeTableProto.TTInfo(this);
  1340 + int from_bitField0_ = bitField0_;
  1341 + int to_bitField0_ = 0;
  1342 + result.id_ = id_;
  1343 + result.name_ = name_;
  1344 + result.xl_ = xl_;
  1345 + result.xlName_ = xlName_;
  1346 + result.xlDir_ = xlDir_;
  1347 + result.qyrq_ = qyrq_;
  1348 + result.isEnableDisTemplate_ = isEnableDisTemplate_;
  1349 + result.isCancel_ = isCancel_;
  1350 + result.ruleDays_ = ruleDays_;
  1351 + result.specialDays_ = specialDays_;
  1352 + result.createUser_ = createUser_;
  1353 + result.createUserName_ = createUserName_;
  1354 + result.updateUser_ = updateUser_;
  1355 + result.updateUserName_ = updateUserName_;
  1356 + result.createDate_ = createDate_;
  1357 + result.updateDate_ = updateDate_;
  1358 + if (bcInfoBuilder_ == null) {
  1359 + if (((bitField0_ & 0x00010000) == 0x00010000)) {
  1360 + bcInfo_ = java.util.Collections.unmodifiableList(bcInfo_);
  1361 + bitField0_ = (bitField0_ & ~0x00010000);
  1362 + }
  1363 + result.bcInfo_ = bcInfo_;
  1364 + } else {
  1365 + result.bcInfo_ = bcInfoBuilder_.build();
  1366 + }
  1367 + result.bitField0_ = to_bitField0_;
  1368 + onBuilt();
  1369 + return result;
  1370 + }
  1371 +
  1372 + public Builder clone() {
  1373 + return (Builder) super.clone();
  1374 + }
  1375 + public Builder setField(
  1376 + com.google.protobuf.Descriptors.FieldDescriptor field,
  1377 + Object value) {
  1378 + return (Builder) super.setField(field, value);
  1379 + }
  1380 + public Builder clearField(
  1381 + com.google.protobuf.Descriptors.FieldDescriptor field) {
  1382 + return (Builder) super.clearField(field);
  1383 + }
  1384 + public Builder clearOneof(
  1385 + com.google.protobuf.Descriptors.OneofDescriptor oneof) {
  1386 + return (Builder) super.clearOneof(oneof);
  1387 + }
  1388 + public Builder setRepeatedField(
  1389 + com.google.protobuf.Descriptors.FieldDescriptor field,
  1390 + int index, Object value) {
  1391 + return (Builder) super.setRepeatedField(field, index, value);
  1392 + }
  1393 + public Builder addRepeatedField(
  1394 + com.google.protobuf.Descriptors.FieldDescriptor field,
  1395 + Object value) {
  1396 + return (Builder) super.addRepeatedField(field, value);
  1397 + }
  1398 + public Builder mergeFrom(com.google.protobuf.Message other) {
  1399 + if (other instanceof com.bsth.service.schedule.utils.TimeTableProto.TTInfo) {
  1400 + return mergeFrom((com.bsth.service.schedule.utils.TimeTableProto.TTInfo)other);
  1401 + } else {
  1402 + super.mergeFrom(other);
  1403 + return this;
  1404 + }
  1405 + }
  1406 +
  1407 + public Builder mergeFrom(com.bsth.service.schedule.utils.TimeTableProto.TTInfo other) {
  1408 + if (other == com.bsth.service.schedule.utils.TimeTableProto.TTInfo.getDefaultInstance()) return this;
  1409 + if (other.getId() != 0L) {
  1410 + setId(other.getId());
  1411 + }
  1412 + if (!other.getName().isEmpty()) {
  1413 + name_ = other.name_;
  1414 + onChanged();
  1415 + }
  1416 + if (other.getXl() != 0) {
  1417 + setXl(other.getXl());
  1418 + }
  1419 + if (!other.getXlName().isEmpty()) {
  1420 + xlName_ = other.xlName_;
  1421 + onChanged();
  1422 + }
  1423 + if (!other.getXlDir().isEmpty()) {
  1424 + xlDir_ = other.xlDir_;
  1425 + onChanged();
  1426 + }
  1427 + if (other.getQyrq() != 0L) {
  1428 + setQyrq(other.getQyrq());
  1429 + }
  1430 + if (other.getIsEnableDisTemplate() != false) {
  1431 + setIsEnableDisTemplate(other.getIsEnableDisTemplate());
  1432 + }
  1433 + if (other.getIsCancel() != false) {
  1434 + setIsCancel(other.getIsCancel());
  1435 + }
  1436 + if (!other.getRuleDays().isEmpty()) {
  1437 + ruleDays_ = other.ruleDays_;
  1438 + onChanged();
  1439 + }
  1440 + if (!other.getSpecialDays().isEmpty()) {
  1441 + specialDays_ = other.specialDays_;
  1442 + onChanged();
  1443 + }
  1444 + if (other.getCreateUser() != 0) {
  1445 + setCreateUser(other.getCreateUser());
  1446 + }
  1447 + if (!other.getCreateUserName().isEmpty()) {
  1448 + createUserName_ = other.createUserName_;
  1449 + onChanged();
  1450 + }
  1451 + if (other.getUpdateUser() != 0) {
  1452 + setUpdateUser(other.getUpdateUser());
  1453 + }
  1454 + if (!other.getUpdateUserName().isEmpty()) {
  1455 + updateUserName_ = other.updateUserName_;
  1456 + onChanged();
  1457 + }
  1458 + if (other.getCreateDate() != 0L) {
  1459 + setCreateDate(other.getCreateDate());
  1460 + }
  1461 + if (other.getUpdateDate() != 0L) {
  1462 + setUpdateDate(other.getUpdateDate());
  1463 + }
  1464 + if (bcInfoBuilder_ == null) {
  1465 + if (!other.bcInfo_.isEmpty()) {
  1466 + if (bcInfo_.isEmpty()) {
  1467 + bcInfo_ = other.bcInfo_;
  1468 + bitField0_ = (bitField0_ & ~0x00010000);
  1469 + } else {
  1470 + ensureBcInfoIsMutable();
  1471 + bcInfo_.addAll(other.bcInfo_);
  1472 + }
  1473 + onChanged();
  1474 + }
  1475 + } else {
  1476 + if (!other.bcInfo_.isEmpty()) {
  1477 + if (bcInfoBuilder_.isEmpty()) {
  1478 + bcInfoBuilder_.dispose();
  1479 + bcInfoBuilder_ = null;
  1480 + bcInfo_ = other.bcInfo_;
  1481 + bitField0_ = (bitField0_ & ~0x00010000);
  1482 + bcInfoBuilder_ =
  1483 + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
  1484 + getBcInfoFieldBuilder() : null;
  1485 + } else {
  1486 + bcInfoBuilder_.addAllMessages(other.bcInfo_);
  1487 + }
  1488 + }
  1489 + }
  1490 + onChanged();
  1491 + return this;
  1492 + }
  1493 +
  1494 + public final boolean isInitialized() {
  1495 + return true;
  1496 + }
  1497 +
  1498 + public Builder mergeFrom(
  1499 + com.google.protobuf.CodedInputStream input,
  1500 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  1501 + throws java.io.IOException {
  1502 + com.bsth.service.schedule.utils.TimeTableProto.TTInfo parsedMessage = null;
  1503 + try {
  1504 + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
  1505 + } catch (com.google.protobuf.InvalidProtocolBufferException e) {
  1506 + parsedMessage = (com.bsth.service.schedule.utils.TimeTableProto.TTInfo) e.getUnfinishedMessage();
  1507 + throw e.unwrapIOException();
  1508 + } finally {
  1509 + if (parsedMessage != null) {
  1510 + mergeFrom(parsedMessage);
  1511 + }
  1512 + }
  1513 + return this;
  1514 + }
  1515 + private int bitField0_;
  1516 +
  1517 + private long id_ ;
  1518 + /**
  1519 + * <pre>
  1520 + * 时刻表id
  1521 + * </pre>
  1522 + *
  1523 + * <code>uint64 id = 1;</code>
  1524 + */
  1525 + public long getId() {
  1526 + return id_;
  1527 + }
  1528 + /**
  1529 + * <pre>
  1530 + * 时刻表id
  1531 + * </pre>
  1532 + *
  1533 + * <code>uint64 id = 1;</code>
  1534 + */
  1535 + public Builder setId(long value) {
  1536 +
  1537 + id_ = value;
  1538 + onChanged();
  1539 + return this;
  1540 + }
  1541 + /**
  1542 + * <pre>
  1543 + * 时刻表id
  1544 + * </pre>
  1545 + *
  1546 + * <code>uint64 id = 1;</code>
  1547 + */
  1548 + public Builder clearId() {
  1549 +
  1550 + id_ = 0L;
  1551 + onChanged();
  1552 + return this;
  1553 + }
  1554 +
  1555 + private java.lang.Object name_ = "";
  1556 + /**
  1557 + * <pre>
  1558 + * 时刻表名字
  1559 + * </pre>
  1560 + *
  1561 + * <code>string name = 2;</code>
  1562 + */
  1563 + public java.lang.String getName() {
  1564 + java.lang.Object ref = name_;
  1565 + if (!(ref instanceof java.lang.String)) {
  1566 + com.google.protobuf.ByteString bs =
  1567 + (com.google.protobuf.ByteString) ref;
  1568 + java.lang.String s = bs.toStringUtf8();
  1569 + name_ = s;
  1570 + return s;
  1571 + } else {
  1572 + return (java.lang.String) ref;
  1573 + }
  1574 + }
  1575 + /**
  1576 + * <pre>
  1577 + * 时刻表名字
  1578 + * </pre>
  1579 + *
  1580 + * <code>string name = 2;</code>
  1581 + */
  1582 + public com.google.protobuf.ByteString
  1583 + getNameBytes() {
  1584 + java.lang.Object ref = name_;
  1585 + if (ref instanceof String) {
  1586 + com.google.protobuf.ByteString b =
  1587 + com.google.protobuf.ByteString.copyFromUtf8(
  1588 + (java.lang.String) ref);
  1589 + name_ = b;
  1590 + return b;
  1591 + } else {
  1592 + return (com.google.protobuf.ByteString) ref;
  1593 + }
  1594 + }
  1595 + /**
  1596 + * <pre>
  1597 + * 时刻表名字
  1598 + * </pre>
  1599 + *
  1600 + * <code>string name = 2;</code>
  1601 + */
  1602 + public Builder setName(
  1603 + java.lang.String value) {
  1604 + if (value == null) {
  1605 + throw new NullPointerException();
  1606 + }
  1607 +
  1608 + name_ = value;
  1609 + onChanged();
  1610 + return this;
  1611 + }
  1612 + /**
  1613 + * <pre>
  1614 + * 时刻表名字
  1615 + * </pre>
  1616 + *
  1617 + * <code>string name = 2;</code>
  1618 + */
  1619 + public Builder clearName() {
  1620 +
  1621 + name_ = getDefaultInstance().getName();
  1622 + onChanged();
  1623 + return this;
  1624 + }
  1625 + /**
  1626 + * <pre>
  1627 + * 时刻表名字
  1628 + * </pre>
  1629 + *
  1630 + * <code>string name = 2;</code>
  1631 + */
  1632 + public Builder setNameBytes(
  1633 + com.google.protobuf.ByteString value) {
  1634 + if (value == null) {
  1635 + throw new NullPointerException();
  1636 + }
  1637 + checkByteStringIsUtf8(value);
  1638 +
  1639 + name_ = value;
  1640 + onChanged();
  1641 + return this;
  1642 + }
  1643 +
  1644 + private int xl_ ;
  1645 + /**
  1646 + * <pre>
  1647 + * 线路id
  1648 + * </pre>
  1649 + *
  1650 + * <code>uint32 xl = 3;</code>
  1651 + */
  1652 + public int getXl() {
  1653 + return xl_;
  1654 + }
  1655 + /**
  1656 + * <pre>
  1657 + * 线路id
  1658 + * </pre>
  1659 + *
  1660 + * <code>uint32 xl = 3;</code>
  1661 + */
  1662 + public Builder setXl(int value) {
  1663 +
  1664 + xl_ = value;
  1665 + onChanged();
  1666 + return this;
  1667 + }
  1668 + /**
  1669 + * <pre>
  1670 + * 线路id
  1671 + * </pre>
  1672 + *
  1673 + * <code>uint32 xl = 3;</code>
  1674 + */
  1675 + public Builder clearXl() {
  1676 +
  1677 + xl_ = 0;
  1678 + onChanged();
  1679 + return this;
  1680 + }
  1681 +
  1682 + private java.lang.Object xlName_ = "";
  1683 + /**
  1684 + * <pre>
  1685 + * 线路名称
  1686 + * </pre>
  1687 + *
  1688 + * <code>string xlName = 4;</code>
  1689 + */
  1690 + public java.lang.String getXlName() {
  1691 + java.lang.Object ref = xlName_;
  1692 + if (!(ref instanceof java.lang.String)) {
  1693 + com.google.protobuf.ByteString bs =
  1694 + (com.google.protobuf.ByteString) ref;
  1695 + java.lang.String s = bs.toStringUtf8();
  1696 + xlName_ = s;
  1697 + return s;
  1698 + } else {
  1699 + return (java.lang.String) ref;
  1700 + }
  1701 + }
  1702 + /**
  1703 + * <pre>
  1704 + * 线路名称
  1705 + * </pre>
  1706 + *
  1707 + * <code>string xlName = 4;</code>
  1708 + */
  1709 + public com.google.protobuf.ByteString
  1710 + getXlNameBytes() {
  1711 + java.lang.Object ref = xlName_;
  1712 + if (ref instanceof String) {
  1713 + com.google.protobuf.ByteString b =
  1714 + com.google.protobuf.ByteString.copyFromUtf8(
  1715 + (java.lang.String) ref);
  1716 + xlName_ = b;
  1717 + return b;
  1718 + } else {
  1719 + return (com.google.protobuf.ByteString) ref;
  1720 + }
  1721 + }
  1722 + /**
  1723 + * <pre>
  1724 + * 线路名称
  1725 + * </pre>
  1726 + *
  1727 + * <code>string xlName = 4;</code>
  1728 + */
  1729 + public Builder setXlName(
  1730 + java.lang.String value) {
  1731 + if (value == null) {
  1732 + throw new NullPointerException();
  1733 + }
  1734 +
  1735 + xlName_ = value;
  1736 + onChanged();
  1737 + return this;
  1738 + }
  1739 + /**
  1740 + * <pre>
  1741 + * 线路名称
  1742 + * </pre>
  1743 + *
  1744 + * <code>string xlName = 4;</code>
  1745 + */
  1746 + public Builder clearXlName() {
  1747 +
  1748 + xlName_ = getDefaultInstance().getXlName();
  1749 + onChanged();
  1750 + return this;
  1751 + }
  1752 + /**
  1753 + * <pre>
  1754 + * 线路名称
  1755 + * </pre>
  1756 + *
  1757 + * <code>string xlName = 4;</code>
  1758 + */
  1759 + public Builder setXlNameBytes(
  1760 + com.google.protobuf.ByteString value) {
  1761 + if (value == null) {
  1762 + throw new NullPointerException();
  1763 + }
  1764 + checkByteStringIsUtf8(value);
  1765 +
  1766 + xlName_ = value;
  1767 + onChanged();
  1768 + return this;
  1769 + }
  1770 +
  1771 + private java.lang.Object xlDir_ = "";
  1772 + /**
  1773 + * <pre>
  1774 + * 线路上下行
  1775 + * </pre>
  1776 + *
  1777 + * <code>string xlDir = 5;</code>
  1778 + */
  1779 + public java.lang.String getXlDir() {
  1780 + java.lang.Object ref = xlDir_;
  1781 + if (!(ref instanceof java.lang.String)) {
  1782 + com.google.protobuf.ByteString bs =
  1783 + (com.google.protobuf.ByteString) ref;
  1784 + java.lang.String s = bs.toStringUtf8();
  1785 + xlDir_ = s;
  1786 + return s;
  1787 + } else {
  1788 + return (java.lang.String) ref;
  1789 + }
  1790 + }
  1791 + /**
  1792 + * <pre>
  1793 + * 线路上下行
  1794 + * </pre>
  1795 + *
  1796 + * <code>string xlDir = 5;</code>
  1797 + */
  1798 + public com.google.protobuf.ByteString
  1799 + getXlDirBytes() {
  1800 + java.lang.Object ref = xlDir_;
  1801 + if (ref instanceof String) {
  1802 + com.google.protobuf.ByteString b =
  1803 + com.google.protobuf.ByteString.copyFromUtf8(
  1804 + (java.lang.String) ref);
  1805 + xlDir_ = b;
  1806 + return b;
  1807 + } else {
  1808 + return (com.google.protobuf.ByteString) ref;
  1809 + }
  1810 + }
  1811 + /**
  1812 + * <pre>
  1813 + * 线路上下行
  1814 + * </pre>
  1815 + *
  1816 + * <code>string xlDir = 5;</code>
  1817 + */
  1818 + public Builder setXlDir(
  1819 + java.lang.String value) {
  1820 + if (value == null) {
  1821 + throw new NullPointerException();
  1822 + }
  1823 +
  1824 + xlDir_ = value;
  1825 + onChanged();
  1826 + return this;
  1827 + }
  1828 + /**
  1829 + * <pre>
  1830 + * 线路上下行
  1831 + * </pre>
  1832 + *
  1833 + * <code>string xlDir = 5;</code>
  1834 + */
  1835 + public Builder clearXlDir() {
  1836 +
  1837 + xlDir_ = getDefaultInstance().getXlDir();
  1838 + onChanged();
  1839 + return this;
  1840 + }
  1841 + /**
  1842 + * <pre>
  1843 + * 线路上下行
  1844 + * </pre>
  1845 + *
  1846 + * <code>string xlDir = 5;</code>
  1847 + */
  1848 + public Builder setXlDirBytes(
  1849 + com.google.protobuf.ByteString value) {
  1850 + if (value == null) {
  1851 + throw new NullPointerException();
  1852 + }
  1853 + checkByteStringIsUtf8(value);
  1854 +
  1855 + xlDir_ = value;
  1856 + onChanged();
  1857 + return this;
  1858 + }
  1859 +
  1860 + private long qyrq_ ;
  1861 + /**
  1862 + * <pre>
  1863 + * 启用日期
  1864 + * </pre>
  1865 + *
  1866 + * <code>uint64 qyrq = 6;</code>
  1867 + */
  1868 + public long getQyrq() {
  1869 + return qyrq_;
  1870 + }
  1871 + /**
  1872 + * <pre>
  1873 + * 启用日期
  1874 + * </pre>
  1875 + *
  1876 + * <code>uint64 qyrq = 6;</code>
  1877 + */
  1878 + public Builder setQyrq(long value) {
  1879 +
  1880 + qyrq_ = value;
  1881 + onChanged();
  1882 + return this;
  1883 + }
  1884 + /**
  1885 + * <pre>
  1886 + * 启用日期
  1887 + * </pre>
  1888 + *
  1889 + * <code>uint64 qyrq = 6;</code>
  1890 + */
  1891 + public Builder clearQyrq() {
  1892 +
  1893 + qyrq_ = 0L;
  1894 + onChanged();
  1895 + return this;
  1896 + }
  1897 +
  1898 + private boolean isEnableDisTemplate_ ;
  1899 + /**
  1900 + * <pre>
  1901 + * 是否启用调度模版
  1902 + * </pre>
  1903 + *
  1904 + * <code>bool isEnableDisTemplate = 7;</code>
  1905 + */
  1906 + public boolean getIsEnableDisTemplate() {
  1907 + return isEnableDisTemplate_;
  1908 + }
  1909 + /**
  1910 + * <pre>
  1911 + * 是否启用调度模版
  1912 + * </pre>
  1913 + *
  1914 + * <code>bool isEnableDisTemplate = 7;</code>
  1915 + */
  1916 + public Builder setIsEnableDisTemplate(boolean value) {
  1917 +
  1918 + isEnableDisTemplate_ = value;
  1919 + onChanged();
  1920 + return this;
  1921 + }
  1922 + /**
  1923 + * <pre>
  1924 + * 是否启用调度模版
  1925 + * </pre>
  1926 + *
  1927 + * <code>bool isEnableDisTemplate = 7;</code>
  1928 + */
  1929 + public Builder clearIsEnableDisTemplate() {
  1930 +
  1931 + isEnableDisTemplate_ = false;
  1932 + onChanged();
  1933 + return this;
  1934 + }
  1935 +
  1936 + private boolean isCancel_ ;
  1937 + /**
  1938 + * <pre>
  1939 + * 是否删除(标记)
  1940 + * </pre>
  1941 + *
  1942 + * <code>bool isCancel = 8;</code>
  1943 + */
  1944 + public boolean getIsCancel() {
  1945 + return isCancel_;
  1946 + }
  1947 + /**
  1948 + * <pre>
  1949 + * 是否删除(标记)
  1950 + * </pre>
  1951 + *
  1952 + * <code>bool isCancel = 8;</code>
  1953 + */
  1954 + public Builder setIsCancel(boolean value) {
  1955 +
  1956 + isCancel_ = value;
  1957 + onChanged();
  1958 + return this;
  1959 + }
  1960 + /**
  1961 + * <pre>
  1962 + * 是否删除(标记)
  1963 + * </pre>
  1964 + *
  1965 + * <code>bool isCancel = 8;</code>
  1966 + */
  1967 + public Builder clearIsCancel() {
  1968 +
  1969 + isCancel_ = false;
  1970 + onChanged();
  1971 + return this;
  1972 + }
  1973 +
  1974 + private java.lang.Object ruleDays_ = "";
  1975 + /**
  1976 + * <pre>
  1977 + * 常规有效日(1-7表示星期一到星期日,多个用逗号隔开)
  1978 + * </pre>
  1979 + *
  1980 + * <code>string ruleDays = 9;</code>
  1981 + */
  1982 + public java.lang.String getRuleDays() {
  1983 + java.lang.Object ref = ruleDays_;
  1984 + if (!(ref instanceof java.lang.String)) {
  1985 + com.google.protobuf.ByteString bs =
  1986 + (com.google.protobuf.ByteString) ref;
  1987 + java.lang.String s = bs.toStringUtf8();
  1988 + ruleDays_ = s;
  1989 + return s;
  1990 + } else {
  1991 + return (java.lang.String) ref;
  1992 + }
  1993 + }
  1994 + /**
  1995 + * <pre>
  1996 + * 常规有效日(1-7表示星期一到星期日,多个用逗号隔开)
  1997 + * </pre>
  1998 + *
  1999 + * <code>string ruleDays = 9;</code>
  2000 + */
  2001 + public com.google.protobuf.ByteString
  2002 + getRuleDaysBytes() {
  2003 + java.lang.Object ref = ruleDays_;
  2004 + if (ref instanceof String) {
  2005 + com.google.protobuf.ByteString b =
  2006 + com.google.protobuf.ByteString.copyFromUtf8(
  2007 + (java.lang.String) ref);
  2008 + ruleDays_ = b;
  2009 + return b;
  2010 + } else {
  2011 + return (com.google.protobuf.ByteString) ref;
  2012 + }
  2013 + }
  2014 + /**
  2015 + * <pre>
  2016 + * 常规有效日(1-7表示星期一到星期日,多个用逗号隔开)
  2017 + * </pre>
  2018 + *
  2019 + * <code>string ruleDays = 9;</code>
  2020 + */
  2021 + public Builder setRuleDays(
  2022 + java.lang.String value) {
  2023 + if (value == null) {
  2024 + throw new NullPointerException();
  2025 + }
  2026 +
  2027 + ruleDays_ = value;
  2028 + onChanged();
  2029 + return this;
  2030 + }
  2031 + /**
  2032 + * <pre>
  2033 + * 常规有效日(1-7表示星期一到星期日,多个用逗号隔开)
  2034 + * </pre>
  2035 + *
  2036 + * <code>string ruleDays = 9;</code>
  2037 + */
  2038 + public Builder clearRuleDays() {
  2039 +
  2040 + ruleDays_ = getDefaultInstance().getRuleDays();
  2041 + onChanged();
  2042 + return this;
  2043 + }
  2044 + /**
  2045 + * <pre>
  2046 + * 常规有效日(1-7表示星期一到星期日,多个用逗号隔开)
  2047 + * </pre>
  2048 + *
  2049 + * <code>string ruleDays = 9;</code>
  2050 + */
  2051 + public Builder setRuleDaysBytes(
  2052 + com.google.protobuf.ByteString value) {
  2053 + if (value == null) {
  2054 + throw new NullPointerException();
  2055 + }
  2056 + checkByteStringIsUtf8(value);
  2057 +
  2058 + ruleDays_ = value;
  2059 + onChanged();
  2060 + return this;
  2061 + }
  2062 +
  2063 + private java.lang.Object specialDays_ = "";
  2064 + /**
  2065 + * <pre>
  2066 + * 特殊有效日期(格式:2001-01-01,多个用逗号隔开)
  2067 + * </pre>
  2068 + *
  2069 + * <code>string specialDays = 10;</code>
  2070 + */
  2071 + public java.lang.String getSpecialDays() {
  2072 + java.lang.Object ref = specialDays_;
  2073 + if (!(ref instanceof java.lang.String)) {
  2074 + com.google.protobuf.ByteString bs =
  2075 + (com.google.protobuf.ByteString) ref;
  2076 + java.lang.String s = bs.toStringUtf8();
  2077 + specialDays_ = s;
  2078 + return s;
  2079 + } else {
  2080 + return (java.lang.String) ref;
  2081 + }
  2082 + }
  2083 + /**
  2084 + * <pre>
  2085 + * 特殊有效日期(格式:2001-01-01,多个用逗号隔开)
  2086 + * </pre>
  2087 + *
  2088 + * <code>string specialDays = 10;</code>
  2089 + */
  2090 + public com.google.protobuf.ByteString
  2091 + getSpecialDaysBytes() {
  2092 + java.lang.Object ref = specialDays_;
  2093 + if (ref instanceof String) {
  2094 + com.google.protobuf.ByteString b =
  2095 + com.google.protobuf.ByteString.copyFromUtf8(
  2096 + (java.lang.String) ref);
  2097 + specialDays_ = b;
  2098 + return b;
  2099 + } else {
  2100 + return (com.google.protobuf.ByteString) ref;
  2101 + }
  2102 + }
  2103 + /**
  2104 + * <pre>
  2105 + * 特殊有效日期(格式:2001-01-01,多个用逗号隔开)
  2106 + * </pre>
  2107 + *
  2108 + * <code>string specialDays = 10;</code>
  2109 + */
  2110 + public Builder setSpecialDays(
  2111 + java.lang.String value) {
  2112 + if (value == null) {
  2113 + throw new NullPointerException();
  2114 + }
  2115 +
  2116 + specialDays_ = value;
  2117 + onChanged();
  2118 + return this;
  2119 + }
  2120 + /**
  2121 + * <pre>
  2122 + * 特殊有效日期(格式:2001-01-01,多个用逗号隔开)
  2123 + * </pre>
  2124 + *
  2125 + * <code>string specialDays = 10;</code>
  2126 + */
  2127 + public Builder clearSpecialDays() {
  2128 +
  2129 + specialDays_ = getDefaultInstance().getSpecialDays();
  2130 + onChanged();
  2131 + return this;
  2132 + }
  2133 + /**
  2134 + * <pre>
  2135 + * 特殊有效日期(格式:2001-01-01,多个用逗号隔开)
  2136 + * </pre>
  2137 + *
  2138 + * <code>string specialDays = 10;</code>
  2139 + */
  2140 + public Builder setSpecialDaysBytes(
  2141 + com.google.protobuf.ByteString value) {
  2142 + if (value == null) {
  2143 + throw new NullPointerException();
  2144 + }
  2145 + checkByteStringIsUtf8(value);
  2146 +
  2147 + specialDays_ = value;
  2148 + onChanged();
  2149 + return this;
  2150 + }
  2151 +
  2152 + private int createUser_ ;
  2153 + /**
  2154 + * <pre>
  2155 + * 创建用户id
  2156 + * </pre>
  2157 + *
  2158 + * <code>uint32 createUser = 11;</code>
  2159 + */
  2160 + public int getCreateUser() {
  2161 + return createUser_;
  2162 + }
  2163 + /**
  2164 + * <pre>
  2165 + * 创建用户id
  2166 + * </pre>
  2167 + *
  2168 + * <code>uint32 createUser = 11;</code>
  2169 + */
  2170 + public Builder setCreateUser(int value) {
  2171 +
  2172 + createUser_ = value;
  2173 + onChanged();
  2174 + return this;
  2175 + }
  2176 + /**
  2177 + * <pre>
  2178 + * 创建用户id
  2179 + * </pre>
  2180 + *
  2181 + * <code>uint32 createUser = 11;</code>
  2182 + */
  2183 + public Builder clearCreateUser() {
  2184 +
  2185 + createUser_ = 0;
  2186 + onChanged();
  2187 + return this;
  2188 + }
  2189 +
  2190 + private java.lang.Object createUserName_ = "";
  2191 + /**
  2192 + * <pre>
  2193 + * 创建用户姓名
  2194 + * </pre>
  2195 + *
  2196 + * <code>string createUserName = 12;</code>
  2197 + */
  2198 + public java.lang.String getCreateUserName() {
  2199 + java.lang.Object ref = createUserName_;
  2200 + if (!(ref instanceof java.lang.String)) {
  2201 + com.google.protobuf.ByteString bs =
  2202 + (com.google.protobuf.ByteString) ref;
  2203 + java.lang.String s = bs.toStringUtf8();
  2204 + createUserName_ = s;
  2205 + return s;
  2206 + } else {
  2207 + return (java.lang.String) ref;
  2208 + }
  2209 + }
  2210 + /**
  2211 + * <pre>
  2212 + * 创建用户姓名
  2213 + * </pre>
  2214 + *
  2215 + * <code>string createUserName = 12;</code>
  2216 + */
  2217 + public com.google.protobuf.ByteString
  2218 + getCreateUserNameBytes() {
  2219 + java.lang.Object ref = createUserName_;
  2220 + if (ref instanceof String) {
  2221 + com.google.protobuf.ByteString b =
  2222 + com.google.protobuf.ByteString.copyFromUtf8(
  2223 + (java.lang.String) ref);
  2224 + createUserName_ = b;
  2225 + return b;
  2226 + } else {
  2227 + return (com.google.protobuf.ByteString) ref;
  2228 + }
  2229 + }
  2230 + /**
  2231 + * <pre>
  2232 + * 创建用户姓名
  2233 + * </pre>
  2234 + *
  2235 + * <code>string createUserName = 12;</code>
  2236 + */
  2237 + public Builder setCreateUserName(
  2238 + java.lang.String value) {
  2239 + if (value == null) {
  2240 + throw new NullPointerException();
  2241 + }
  2242 +
  2243 + createUserName_ = value;
  2244 + onChanged();
  2245 + return this;
  2246 + }
  2247 + /**
  2248 + * <pre>
  2249 + * 创建用户姓名
  2250 + * </pre>
  2251 + *
  2252 + * <code>string createUserName = 12;</code>
  2253 + */
  2254 + public Builder clearCreateUserName() {
  2255 +
  2256 + createUserName_ = getDefaultInstance().getCreateUserName();
  2257 + onChanged();
  2258 + return this;
  2259 + }
  2260 + /**
  2261 + * <pre>
  2262 + * 创建用户姓名
  2263 + * </pre>
  2264 + *
  2265 + * <code>string createUserName = 12;</code>
  2266 + */
  2267 + public Builder setCreateUserNameBytes(
  2268 + com.google.protobuf.ByteString value) {
  2269 + if (value == null) {
  2270 + throw new NullPointerException();
  2271 + }
  2272 + checkByteStringIsUtf8(value);
  2273 +
  2274 + createUserName_ = value;
  2275 + onChanged();
  2276 + return this;
  2277 + }
  2278 +
  2279 + private int updateUser_ ;
  2280 + /**
  2281 + * <pre>
  2282 + * 更新用户id
  2283 + * </pre>
  2284 + *
  2285 + * <code>uint32 updateUser = 13;</code>
  2286 + */
  2287 + public int getUpdateUser() {
  2288 + return updateUser_;
  2289 + }
  2290 + /**
  2291 + * <pre>
  2292 + * 更新用户id
  2293 + * </pre>
  2294 + *
  2295 + * <code>uint32 updateUser = 13;</code>
  2296 + */
  2297 + public Builder setUpdateUser(int value) {
  2298 +
  2299 + updateUser_ = value;
  2300 + onChanged();
  2301 + return this;
  2302 + }
  2303 + /**
  2304 + * <pre>
  2305 + * 更新用户id
  2306 + * </pre>
  2307 + *
  2308 + * <code>uint32 updateUser = 13;</code>
  2309 + */
  2310 + public Builder clearUpdateUser() {
  2311 +
  2312 + updateUser_ = 0;
  2313 + onChanged();
  2314 + return this;
  2315 + }
  2316 +
  2317 + private java.lang.Object updateUserName_ = "";
  2318 + /**
  2319 + * <pre>
  2320 + * 更新用户姓名
  2321 + * </pre>
  2322 + *
  2323 + * <code>string updateUserName = 14;</code>
  2324 + */
  2325 + public java.lang.String getUpdateUserName() {
  2326 + java.lang.Object ref = updateUserName_;
  2327 + if (!(ref instanceof java.lang.String)) {
  2328 + com.google.protobuf.ByteString bs =
  2329 + (com.google.protobuf.ByteString) ref;
  2330 + java.lang.String s = bs.toStringUtf8();
  2331 + updateUserName_ = s;
  2332 + return s;
  2333 + } else {
  2334 + return (java.lang.String) ref;
  2335 + }
  2336 + }
  2337 + /**
  2338 + * <pre>
  2339 + * 更新用户姓名
  2340 + * </pre>
  2341 + *
  2342 + * <code>string updateUserName = 14;</code>
  2343 + */
  2344 + public com.google.protobuf.ByteString
  2345 + getUpdateUserNameBytes() {
  2346 + java.lang.Object ref = updateUserName_;
  2347 + if (ref instanceof String) {
  2348 + com.google.protobuf.ByteString b =
  2349 + com.google.protobuf.ByteString.copyFromUtf8(
  2350 + (java.lang.String) ref);
  2351 + updateUserName_ = b;
  2352 + return b;
  2353 + } else {
  2354 + return (com.google.protobuf.ByteString) ref;
  2355 + }
  2356 + }
  2357 + /**
  2358 + * <pre>
  2359 + * 更新用户姓名
  2360 + * </pre>
  2361 + *
  2362 + * <code>string updateUserName = 14;</code>
  2363 + */
  2364 + public Builder setUpdateUserName(
  2365 + java.lang.String value) {
  2366 + if (value == null) {
  2367 + throw new NullPointerException();
  2368 + }
  2369 +
  2370 + updateUserName_ = value;
  2371 + onChanged();
  2372 + return this;
  2373 + }
  2374 + /**
  2375 + * <pre>
  2376 + * 更新用户姓名
  2377 + * </pre>
  2378 + *
  2379 + * <code>string updateUserName = 14;</code>
  2380 + */
  2381 + public Builder clearUpdateUserName() {
  2382 +
  2383 + updateUserName_ = getDefaultInstance().getUpdateUserName();
  2384 + onChanged();
  2385 + return this;
  2386 + }
  2387 + /**
  2388 + * <pre>
  2389 + * 更新用户姓名
  2390 + * </pre>
  2391 + *
  2392 + * <code>string updateUserName = 14;</code>
  2393 + */
  2394 + public Builder setUpdateUserNameBytes(
  2395 + com.google.protobuf.ByteString value) {
  2396 + if (value == null) {
  2397 + throw new NullPointerException();
  2398 + }
  2399 + checkByteStringIsUtf8(value);
  2400 +
  2401 + updateUserName_ = value;
  2402 + onChanged();
  2403 + return this;
  2404 + }
  2405 +
  2406 + private long createDate_ ;
  2407 + /**
  2408 + * <pre>
  2409 + * 创建日期
  2410 + * </pre>
  2411 + *
  2412 + * <code>uint64 createDate = 15;</code>
  2413 + */
  2414 + public long getCreateDate() {
  2415 + return createDate_;
  2416 + }
  2417 + /**
  2418 + * <pre>
  2419 + * 创建日期
  2420 + * </pre>
  2421 + *
  2422 + * <code>uint64 createDate = 15;</code>
  2423 + */
  2424 + public Builder setCreateDate(long value) {
  2425 +
  2426 + createDate_ = value;
  2427 + onChanged();
  2428 + return this;
  2429 + }
  2430 + /**
  2431 + * <pre>
  2432 + * 创建日期
  2433 + * </pre>
  2434 + *
  2435 + * <code>uint64 createDate = 15;</code>
  2436 + */
  2437 + public Builder clearCreateDate() {
  2438 +
  2439 + createDate_ = 0L;
  2440 + onChanged();
  2441 + return this;
  2442 + }
  2443 +
  2444 + private long updateDate_ ;
  2445 + /**
  2446 + * <pre>
  2447 + * 更新日期
  2448 + * </pre>
  2449 + *
  2450 + * <code>uint64 updateDate = 16;</code>
  2451 + */
  2452 + public long getUpdateDate() {
  2453 + return updateDate_;
  2454 + }
  2455 + /**
  2456 + * <pre>
  2457 + * 更新日期
  2458 + * </pre>
  2459 + *
  2460 + * <code>uint64 updateDate = 16;</code>
  2461 + */
  2462 + public Builder setUpdateDate(long value) {
  2463 +
  2464 + updateDate_ = value;
  2465 + onChanged();
  2466 + return this;
  2467 + }
  2468 + /**
  2469 + * <pre>
  2470 + * 更新日期
  2471 + * </pre>
  2472 + *
  2473 + * <code>uint64 updateDate = 16;</code>
  2474 + */
  2475 + public Builder clearUpdateDate() {
  2476 +
  2477 + updateDate_ = 0L;
  2478 + onChanged();
  2479 + return this;
  2480 + }
  2481 +
  2482 + private java.util.List<com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail> bcInfo_ =
  2483 + java.util.Collections.emptyList();
  2484 + private void ensureBcInfoIsMutable() {
  2485 + if (!((bitField0_ & 0x00010000) == 0x00010000)) {
  2486 + bcInfo_ = new java.util.ArrayList<com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail>(bcInfo_);
  2487 + bitField0_ |= 0x00010000;
  2488 + }
  2489 + }
  2490 +
  2491 + private com.google.protobuf.RepeatedFieldBuilderV3<
  2492 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail, com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.Builder, com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetailOrBuilder> bcInfoBuilder_;
  2493 +
  2494 + /**
  2495 + * <pre>
  2496 + * list
  2497 + * </pre>
  2498 + *
  2499 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2500 + */
  2501 + public java.util.List<com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail> getBcInfoList() {
  2502 + if (bcInfoBuilder_ == null) {
  2503 + return java.util.Collections.unmodifiableList(bcInfo_);
  2504 + } else {
  2505 + return bcInfoBuilder_.getMessageList();
  2506 + }
  2507 + }
  2508 + /**
  2509 + * <pre>
  2510 + * list
  2511 + * </pre>
  2512 + *
  2513 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2514 + */
  2515 + public int getBcInfoCount() {
  2516 + if (bcInfoBuilder_ == null) {
  2517 + return bcInfo_.size();
  2518 + } else {
  2519 + return bcInfoBuilder_.getCount();
  2520 + }
  2521 + }
  2522 + /**
  2523 + * <pre>
  2524 + * list
  2525 + * </pre>
  2526 + *
  2527 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2528 + */
  2529 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail getBcInfo(int index) {
  2530 + if (bcInfoBuilder_ == null) {
  2531 + return bcInfo_.get(index);
  2532 + } else {
  2533 + return bcInfoBuilder_.getMessage(index);
  2534 + }
  2535 + }
  2536 + /**
  2537 + * <pre>
  2538 + * list
  2539 + * </pre>
  2540 + *
  2541 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2542 + */
  2543 + public Builder setBcInfo(
  2544 + int index, com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail value) {
  2545 + if (bcInfoBuilder_ == null) {
  2546 + if (value == null) {
  2547 + throw new NullPointerException();
  2548 + }
  2549 + ensureBcInfoIsMutable();
  2550 + bcInfo_.set(index, value);
  2551 + onChanged();
  2552 + } else {
  2553 + bcInfoBuilder_.setMessage(index, value);
  2554 + }
  2555 + return this;
  2556 + }
  2557 + /**
  2558 + * <pre>
  2559 + * list
  2560 + * </pre>
  2561 + *
  2562 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2563 + */
  2564 + public Builder setBcInfo(
  2565 + int index, com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.Builder builderForValue) {
  2566 + if (bcInfoBuilder_ == null) {
  2567 + ensureBcInfoIsMutable();
  2568 + bcInfo_.set(index, builderForValue.build());
  2569 + onChanged();
  2570 + } else {
  2571 + bcInfoBuilder_.setMessage(index, builderForValue.build());
  2572 + }
  2573 + return this;
  2574 + }
  2575 + /**
  2576 + * <pre>
  2577 + * list
  2578 + * </pre>
  2579 + *
  2580 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2581 + */
  2582 + public Builder addBcInfo(com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail value) {
  2583 + if (bcInfoBuilder_ == null) {
  2584 + if (value == null) {
  2585 + throw new NullPointerException();
  2586 + }
  2587 + ensureBcInfoIsMutable();
  2588 + bcInfo_.add(value);
  2589 + onChanged();
  2590 + } else {
  2591 + bcInfoBuilder_.addMessage(value);
  2592 + }
  2593 + return this;
  2594 + }
  2595 + /**
  2596 + * <pre>
  2597 + * list
  2598 + * </pre>
  2599 + *
  2600 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2601 + */
  2602 + public Builder addBcInfo(
  2603 + int index, com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail value) {
  2604 + if (bcInfoBuilder_ == null) {
  2605 + if (value == null) {
  2606 + throw new NullPointerException();
  2607 + }
  2608 + ensureBcInfoIsMutable();
  2609 + bcInfo_.add(index, value);
  2610 + onChanged();
  2611 + } else {
  2612 + bcInfoBuilder_.addMessage(index, value);
  2613 + }
  2614 + return this;
  2615 + }
  2616 + /**
  2617 + * <pre>
  2618 + * list
  2619 + * </pre>
  2620 + *
  2621 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2622 + */
  2623 + public Builder addBcInfo(
  2624 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.Builder builderForValue) {
  2625 + if (bcInfoBuilder_ == null) {
  2626 + ensureBcInfoIsMutable();
  2627 + bcInfo_.add(builderForValue.build());
  2628 + onChanged();
  2629 + } else {
  2630 + bcInfoBuilder_.addMessage(builderForValue.build());
  2631 + }
  2632 + return this;
  2633 + }
  2634 + /**
  2635 + * <pre>
  2636 + * list
  2637 + * </pre>
  2638 + *
  2639 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2640 + */
  2641 + public Builder addBcInfo(
  2642 + int index, com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.Builder builderForValue) {
  2643 + if (bcInfoBuilder_ == null) {
  2644 + ensureBcInfoIsMutable();
  2645 + bcInfo_.add(index, builderForValue.build());
  2646 + onChanged();
  2647 + } else {
  2648 + bcInfoBuilder_.addMessage(index, builderForValue.build());
  2649 + }
  2650 + return this;
  2651 + }
  2652 + /**
  2653 + * <pre>
  2654 + * list
  2655 + * </pre>
  2656 + *
  2657 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2658 + */
  2659 + public Builder addAllBcInfo(
  2660 + java.lang.Iterable<? extends com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail> values) {
  2661 + if (bcInfoBuilder_ == null) {
  2662 + ensureBcInfoIsMutable();
  2663 + com.google.protobuf.AbstractMessageLite.Builder.addAll(
  2664 + values, bcInfo_);
  2665 + onChanged();
  2666 + } else {
  2667 + bcInfoBuilder_.addAllMessages(values);
  2668 + }
  2669 + return this;
  2670 + }
  2671 + /**
  2672 + * <pre>
  2673 + * list
  2674 + * </pre>
  2675 + *
  2676 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2677 + */
  2678 + public Builder clearBcInfo() {
  2679 + if (bcInfoBuilder_ == null) {
  2680 + bcInfo_ = java.util.Collections.emptyList();
  2681 + bitField0_ = (bitField0_ & ~0x00010000);
  2682 + onChanged();
  2683 + } else {
  2684 + bcInfoBuilder_.clear();
  2685 + }
  2686 + return this;
  2687 + }
  2688 + /**
  2689 + * <pre>
  2690 + * list
  2691 + * </pre>
  2692 + *
  2693 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2694 + */
  2695 + public Builder removeBcInfo(int index) {
  2696 + if (bcInfoBuilder_ == null) {
  2697 + ensureBcInfoIsMutable();
  2698 + bcInfo_.remove(index);
  2699 + onChanged();
  2700 + } else {
  2701 + bcInfoBuilder_.remove(index);
  2702 + }
  2703 + return this;
  2704 + }
  2705 + /**
  2706 + * <pre>
  2707 + * list
  2708 + * </pre>
  2709 + *
  2710 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2711 + */
  2712 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.Builder getBcInfoBuilder(
  2713 + int index) {
  2714 + return getBcInfoFieldBuilder().getBuilder(index);
  2715 + }
  2716 + /**
  2717 + * <pre>
  2718 + * list
  2719 + * </pre>
  2720 + *
  2721 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2722 + */
  2723 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetailOrBuilder getBcInfoOrBuilder(
  2724 + int index) {
  2725 + if (bcInfoBuilder_ == null) {
  2726 + return bcInfo_.get(index); } else {
  2727 + return bcInfoBuilder_.getMessageOrBuilder(index);
  2728 + }
  2729 + }
  2730 + /**
  2731 + * <pre>
  2732 + * list
  2733 + * </pre>
  2734 + *
  2735 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2736 + */
  2737 + public java.util.List<? extends com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetailOrBuilder>
  2738 + getBcInfoOrBuilderList() {
  2739 + if (bcInfoBuilder_ != null) {
  2740 + return bcInfoBuilder_.getMessageOrBuilderList();
  2741 + } else {
  2742 + return java.util.Collections.unmodifiableList(bcInfo_);
  2743 + }
  2744 + }
  2745 + /**
  2746 + * <pre>
  2747 + * list
  2748 + * </pre>
  2749 + *
  2750 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2751 + */
  2752 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.Builder addBcInfoBuilder() {
  2753 + return getBcInfoFieldBuilder().addBuilder(
  2754 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.getDefaultInstance());
  2755 + }
  2756 + /**
  2757 + * <pre>
  2758 + * list
  2759 + * </pre>
  2760 + *
  2761 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2762 + */
  2763 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.Builder addBcInfoBuilder(
  2764 + int index) {
  2765 + return getBcInfoFieldBuilder().addBuilder(
  2766 + index, com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.getDefaultInstance());
  2767 + }
  2768 + /**
  2769 + * <pre>
  2770 + * list
  2771 + * </pre>
  2772 + *
  2773 + * <code>repeated .timetable.TTInfoDetail bcInfo = 17;</code>
  2774 + */
  2775 + public java.util.List<com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.Builder>
  2776 + getBcInfoBuilderList() {
  2777 + return getBcInfoFieldBuilder().getBuilderList();
  2778 + }
  2779 + private com.google.protobuf.RepeatedFieldBuilderV3<
  2780 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail, com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.Builder, com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetailOrBuilder>
  2781 + getBcInfoFieldBuilder() {
  2782 + if (bcInfoBuilder_ == null) {
  2783 + bcInfoBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
  2784 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail, com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.Builder, com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetailOrBuilder>(
  2785 + bcInfo_,
  2786 + ((bitField0_ & 0x00010000) == 0x00010000),
  2787 + getParentForChildren(),
  2788 + isClean());
  2789 + bcInfo_ = null;
  2790 + }
  2791 + return bcInfoBuilder_;
  2792 + }
  2793 + public final Builder setUnknownFields(
  2794 + final com.google.protobuf.UnknownFieldSet unknownFields) {
  2795 + return this;
  2796 + }
  2797 +
  2798 + public final Builder mergeUnknownFields(
  2799 + final com.google.protobuf.UnknownFieldSet unknownFields) {
  2800 + return this;
  2801 + }
  2802 +
  2803 +
  2804 + // @@protoc_insertion_point(builder_scope:timetable.TTInfo)
  2805 + }
  2806 +
  2807 + // @@protoc_insertion_point(class_scope:timetable.TTInfo)
  2808 + private static final com.bsth.service.schedule.utils.TimeTableProto.TTInfo DEFAULT_INSTANCE;
  2809 + static {
  2810 + DEFAULT_INSTANCE = new com.bsth.service.schedule.utils.TimeTableProto.TTInfo();
  2811 + }
  2812 +
  2813 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfo getDefaultInstance() {
  2814 + return DEFAULT_INSTANCE;
  2815 + }
  2816 +
  2817 + private static final com.google.protobuf.Parser<TTInfo>
  2818 + PARSER = new com.google.protobuf.AbstractParser<TTInfo>() {
  2819 + public TTInfo parsePartialFrom(
  2820 + com.google.protobuf.CodedInputStream input,
  2821 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  2822 + throws com.google.protobuf.InvalidProtocolBufferException {
  2823 + return new TTInfo(input, extensionRegistry);
  2824 + }
  2825 + };
  2826 +
  2827 + public static com.google.protobuf.Parser<TTInfo> parser() {
  2828 + return PARSER;
  2829 + }
  2830 +
  2831 + @java.lang.Override
  2832 + public com.google.protobuf.Parser<TTInfo> getParserForType() {
  2833 + return PARSER;
  2834 + }
  2835 +
  2836 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfo getDefaultInstanceForType() {
  2837 + return DEFAULT_INSTANCE;
  2838 + }
  2839 +
  2840 + }
  2841 +
  2842 + public interface TTInfoDetailOrBuilder extends
  2843 + // @@protoc_insertion_point(interface_extends:timetable.TTInfoDetail)
  2844 + com.google.protobuf.MessageOrBuilder {
  2845 +
  2846 + /**
  2847 + * <pre>
  2848 + * 班次明细id
  2849 + * </pre>
  2850 + *
  2851 + * <code>uint64 id = 1;</code>
  2852 + */
  2853 + long getId();
  2854 +
  2855 + /**
  2856 + * <pre>
  2857 + * TODO:时刻表主对象关联
  2858 + * </pre>
  2859 + *
  2860 + * <code>uint32 xl = 2;</code>
  2861 + */
  2862 + int getXl();
  2863 +
  2864 + /**
  2865 + * <pre>
  2866 + * 线路名字
  2867 + * </pre>
  2868 + *
  2869 + * <code>string xlName = 3;</code>
  2870 + */
  2871 + java.lang.String getXlName();
  2872 + /**
  2873 + * <pre>
  2874 + * 线路名字
  2875 + * </pre>
  2876 + *
  2877 + * <code>string xlName = 3;</code>
  2878 + */
  2879 + com.google.protobuf.ByteString
  2880 + getXlNameBytes();
  2881 +
  2882 + /**
  2883 + * <pre>
  2884 + * 路牌id
  2885 + * </pre>
  2886 + *
  2887 + * <code>uint64 lp = 4;</code>
  2888 + */
  2889 + long getLp();
  2890 +
  2891 + /**
  2892 + * <pre>
  2893 + * 路牌名字
  2894 + * </pre>
  2895 + *
  2896 + * <code>string lpName = 5;</code>
  2897 + */
  2898 + java.lang.String getLpName();
  2899 + /**
  2900 + * <pre>
  2901 + * 路牌名字
  2902 + * </pre>
  2903 + *
  2904 + * <code>string lpName = 5;</code>
  2905 + */
  2906 + com.google.protobuf.ByteString
  2907 + getLpNameBytes();
  2908 +
  2909 + /**
  2910 + * <pre>
  2911 + * 发车顺序号
  2912 + * </pre>
  2913 + *
  2914 + * <code>uint32 fcno = 6;</code>
  2915 + */
  2916 + int getFcno();
  2917 +
  2918 + /**
  2919 + * <pre>
  2920 + * 线路方向
  2921 + * </pre>
  2922 + *
  2923 + * <code>string xlDir = 7;</code>
  2924 + */
  2925 + java.lang.String getXlDir();
  2926 + /**
  2927 + * <pre>
  2928 + * 线路方向
  2929 + * </pre>
  2930 + *
  2931 + * <code>string xlDir = 7;</code>
  2932 + */
  2933 + com.google.protobuf.ByteString
  2934 + getXlDirBytes();
  2935 +
  2936 + /**
  2937 + * <pre>
  2938 + * 起站点代码(bsth_c_station,bsth_c_car_park 里的编码)
  2939 + * </pre>
  2940 + *
  2941 + * <code>string qdzCode = 8;</code>
  2942 + */
  2943 + java.lang.String getQdzCode();
  2944 + /**
  2945 + * <pre>
  2946 + * 起站点代码(bsth_c_station,bsth_c_car_park 里的编码)
  2947 + * </pre>
  2948 + *
  2949 + * <code>string qdzCode = 8;</code>
  2950 + */
  2951 + com.google.protobuf.ByteString
  2952 + getQdzCodeBytes();
  2953 +
  2954 + /**
  2955 + * <pre>
  2956 + * 起站点名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  2957 + * </pre>
  2958 + *
  2959 + * <code>string qdzName = 9;</code>
  2960 + */
  2961 + java.lang.String getQdzName();
  2962 + /**
  2963 + * <pre>
  2964 + * 起站点名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  2965 + * </pre>
  2966 + *
  2967 + * <code>string qdzName = 9;</code>
  2968 + */
  2969 + com.google.protobuf.ByteString
  2970 + getQdzNameBytes();
  2971 +
  2972 + /**
  2973 + * <pre>
  2974 + * 终点站代码(bsth_c_station,bsth_c_car_park 里的编码)
  2975 + * </pre>
  2976 + *
  2977 + * <code>string zdzCode = 10;</code>
  2978 + */
  2979 + java.lang.String getZdzCode();
  2980 + /**
  2981 + * <pre>
  2982 + * 终点站代码(bsth_c_station,bsth_c_car_park 里的编码)
  2983 + * </pre>
  2984 + *
  2985 + * <code>string zdzCode = 10;</code>
  2986 + */
  2987 + com.google.protobuf.ByteString
  2988 + getZdzCodeBytes();
  2989 +
  2990 + /**
  2991 + * <pre>
  2992 + * 终点站名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  2993 + * </pre>
  2994 + *
  2995 + * <code>string zdzName = 11;</code>
  2996 + */
  2997 + java.lang.String getZdzName();
  2998 + /**
  2999 + * <pre>
  3000 + * 终点站名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  3001 + * </pre>
  3002 + *
  3003 + * <code>string zdzName = 11;</code>
  3004 + */
  3005 + com.google.protobuf.ByteString
  3006 + getZdzNameBytes();
  3007 +
  3008 + /**
  3009 + * <pre>
  3010 + * 发车时间(格式 HH:mm)
  3011 + * </pre>
  3012 + *
  3013 + * <code>string fcsj = 12;</code>
  3014 + */
  3015 + java.lang.String getFcsj();
  3016 + /**
  3017 + * <pre>
  3018 + * 发车时间(格式 HH:mm)
  3019 + * </pre>
  3020 + *
  3021 + * <code>string fcsj = 12;</code>
  3022 + */
  3023 + com.google.protobuf.ByteString
  3024 + getFcsjBytes();
  3025 +
  3026 + /**
  3027 + * <pre>
  3028 + * 对应班次数
  3029 + * </pre>
  3030 + *
  3031 + * <code>uint32 bcs = 13;</code>
  3032 + */
  3033 + int getBcs();
  3034 +
  3035 + /**
  3036 + * <pre>
  3037 + * 计划里程
  3038 + * </pre>
  3039 + *
  3040 + * <code>double jhlc = 14;</code>
  3041 + */
  3042 + double getJhlc();
  3043 +
  3044 + /**
  3045 + * <pre>
  3046 + * 班次历时
  3047 + * </pre>
  3048 + *
  3049 + * <code>uint32 bcsj = 15;</code>
  3050 + */
  3051 + int getBcsj();
  3052 +
  3053 + /**
  3054 + * <pre>
  3055 + * 班次类型 字典type=ScheduleType
  3056 + * </pre>
  3057 + *
  3058 + * <code>string bcType = 16;</code>
  3059 + */
  3060 + java.lang.String getBcType();
  3061 + /**
  3062 + * <pre>
  3063 + * 班次类型 字典type=ScheduleType
  3064 + * </pre>
  3065 + *
  3066 + * <code>string bcType = 16;</code>
  3067 + */
  3068 + com.google.protobuf.ByteString
  3069 + getBcTypeBytes();
  3070 +
  3071 + /**
  3072 + * <pre>
  3073 + * 是否分班(表示这个班次是否是晚班班次,就是换另外一个驾驶员开)
  3074 + * </pre>
  3075 + *
  3076 + * <code>bool isFB = 17;</code>
  3077 + */
  3078 + boolean getIsFB();
  3079 +
  3080 + /**
  3081 + * <pre>
  3082 + * 是否停驶(表示此班次执行完成,停在终点站,不进场)
  3083 + * </pre>
  3084 + *
  3085 + * <code>bool isTS = 18;</code>
  3086 + */
  3087 + boolean getIsTS();
  3088 +
  3089 + /**
  3090 + * <pre>
  3091 + * 备注
  3092 + * </pre>
  3093 + *
  3094 + * <code>string remark = 19;</code>
  3095 + */
  3096 + java.lang.String getRemark();
  3097 + /**
  3098 + * <pre>
  3099 + * 备注
  3100 + * </pre>
  3101 + *
  3102 + * <code>string remark = 19;</code>
  3103 + */
  3104 + com.google.protobuf.ByteString
  3105 + getRemarkBytes();
  3106 + }
  3107 + /**
  3108 + * Protobuf type {@code timetable.TTInfoDetail}
  3109 + */
  3110 + public static final class TTInfoDetail extends
  3111 + com.google.protobuf.GeneratedMessageV3 implements
  3112 + // @@protoc_insertion_point(message_implements:timetable.TTInfoDetail)
  3113 + TTInfoDetailOrBuilder {
  3114 + // Use TTInfoDetail.newBuilder() to construct.
  3115 + private TTInfoDetail(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
  3116 + super(builder);
  3117 + }
  3118 + private TTInfoDetail() {
  3119 + id_ = 0L;
  3120 + xl_ = 0;
  3121 + xlName_ = "";
  3122 + lp_ = 0L;
  3123 + lpName_ = "";
  3124 + fcno_ = 0;
  3125 + xlDir_ = "";
  3126 + qdzCode_ = "";
  3127 + qdzName_ = "";
  3128 + zdzCode_ = "";
  3129 + zdzName_ = "";
  3130 + fcsj_ = "";
  3131 + bcs_ = 0;
  3132 + jhlc_ = 0D;
  3133 + bcsj_ = 0;
  3134 + bcType_ = "";
  3135 + isFB_ = false;
  3136 + isTS_ = false;
  3137 + remark_ = "";
  3138 + }
  3139 +
  3140 + @java.lang.Override
  3141 + public final com.google.protobuf.UnknownFieldSet
  3142 + getUnknownFields() {
  3143 + return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
  3144 + }
  3145 + private TTInfoDetail(
  3146 + com.google.protobuf.CodedInputStream input,
  3147 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  3148 + throws com.google.protobuf.InvalidProtocolBufferException {
  3149 + this();
  3150 + int mutable_bitField0_ = 0;
  3151 + try {
  3152 + boolean done = false;
  3153 + while (!done) {
  3154 + int tag = input.readTag();
  3155 + switch (tag) {
  3156 + case 0:
  3157 + done = true;
  3158 + break;
  3159 + default: {
  3160 + if (!input.skipField(tag)) {
  3161 + done = true;
  3162 + }
  3163 + break;
  3164 + }
  3165 + case 8: {
  3166 +
  3167 + id_ = input.readUInt64();
  3168 + break;
  3169 + }
  3170 + case 16: {
  3171 +
  3172 + xl_ = input.readUInt32();
  3173 + break;
  3174 + }
  3175 + case 26: {
  3176 + java.lang.String s = input.readStringRequireUtf8();
  3177 +
  3178 + xlName_ = s;
  3179 + break;
  3180 + }
  3181 + case 32: {
  3182 +
  3183 + lp_ = input.readUInt64();
  3184 + break;
  3185 + }
  3186 + case 42: {
  3187 + java.lang.String s = input.readStringRequireUtf8();
  3188 +
  3189 + lpName_ = s;
  3190 + break;
  3191 + }
  3192 + case 48: {
  3193 +
  3194 + fcno_ = input.readUInt32();
  3195 + break;
  3196 + }
  3197 + case 58: {
  3198 + java.lang.String s = input.readStringRequireUtf8();
  3199 +
  3200 + xlDir_ = s;
  3201 + break;
  3202 + }
  3203 + case 66: {
  3204 + java.lang.String s = input.readStringRequireUtf8();
  3205 +
  3206 + qdzCode_ = s;
  3207 + break;
  3208 + }
  3209 + case 74: {
  3210 + java.lang.String s = input.readStringRequireUtf8();
  3211 +
  3212 + qdzName_ = s;
  3213 + break;
  3214 + }
  3215 + case 82: {
  3216 + java.lang.String s = input.readStringRequireUtf8();
  3217 +
  3218 + zdzCode_ = s;
  3219 + break;
  3220 + }
  3221 + case 90: {
  3222 + java.lang.String s = input.readStringRequireUtf8();
  3223 +
  3224 + zdzName_ = s;
  3225 + break;
  3226 + }
  3227 + case 98: {
  3228 + java.lang.String s = input.readStringRequireUtf8();
  3229 +
  3230 + fcsj_ = s;
  3231 + break;
  3232 + }
  3233 + case 104: {
  3234 +
  3235 + bcs_ = input.readUInt32();
  3236 + break;
  3237 + }
  3238 + case 113: {
  3239 +
  3240 + jhlc_ = input.readDouble();
  3241 + break;
  3242 + }
  3243 + case 120: {
  3244 +
  3245 + bcsj_ = input.readUInt32();
  3246 + break;
  3247 + }
  3248 + case 130: {
  3249 + java.lang.String s = input.readStringRequireUtf8();
  3250 +
  3251 + bcType_ = s;
  3252 + break;
  3253 + }
  3254 + case 136: {
  3255 +
  3256 + isFB_ = input.readBool();
  3257 + break;
  3258 + }
  3259 + case 144: {
  3260 +
  3261 + isTS_ = input.readBool();
  3262 + break;
  3263 + }
  3264 + case 154: {
  3265 + java.lang.String s = input.readStringRequireUtf8();
  3266 +
  3267 + remark_ = s;
  3268 + break;
  3269 + }
  3270 + }
  3271 + }
  3272 + } catch (com.google.protobuf.InvalidProtocolBufferException e) {
  3273 + throw e.setUnfinishedMessage(this);
  3274 + } catch (java.io.IOException e) {
  3275 + throw new com.google.protobuf.InvalidProtocolBufferException(
  3276 + e).setUnfinishedMessage(this);
  3277 + } finally {
  3278 + makeExtensionsImmutable();
  3279 + }
  3280 + }
  3281 + public static final com.google.protobuf.Descriptors.Descriptor
  3282 + getDescriptor() {
  3283 + return com.bsth.service.schedule.utils.TimeTableProto.internal_static_timetable_TTInfoDetail_descriptor;
  3284 + }
  3285 +
  3286 + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
  3287 + internalGetFieldAccessorTable() {
  3288 + return com.bsth.service.schedule.utils.TimeTableProto.internal_static_timetable_TTInfoDetail_fieldAccessorTable
  3289 + .ensureFieldAccessorsInitialized(
  3290 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.class, com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.Builder.class);
  3291 + }
  3292 +
  3293 + public static final int ID_FIELD_NUMBER = 1;
  3294 + private long id_;
  3295 + /**
  3296 + * <pre>
  3297 + * 班次明细id
  3298 + * </pre>
  3299 + *
  3300 + * <code>uint64 id = 1;</code>
  3301 + */
  3302 + public long getId() {
  3303 + return id_;
  3304 + }
  3305 +
  3306 + public static final int XL_FIELD_NUMBER = 2;
  3307 + private int xl_;
  3308 + /**
  3309 + * <pre>
  3310 + * TODO:时刻表主对象关联
  3311 + * </pre>
  3312 + *
  3313 + * <code>uint32 xl = 2;</code>
  3314 + */
  3315 + public int getXl() {
  3316 + return xl_;
  3317 + }
  3318 +
  3319 + public static final int XLNAME_FIELD_NUMBER = 3;
  3320 + private volatile java.lang.Object xlName_;
  3321 + /**
  3322 + * <pre>
  3323 + * 线路名字
  3324 + * </pre>
  3325 + *
  3326 + * <code>string xlName = 3;</code>
  3327 + */
  3328 + public java.lang.String getXlName() {
  3329 + java.lang.Object ref = xlName_;
  3330 + if (ref instanceof java.lang.String) {
  3331 + return (java.lang.String) ref;
  3332 + } else {
  3333 + com.google.protobuf.ByteString bs =
  3334 + (com.google.protobuf.ByteString) ref;
  3335 + java.lang.String s = bs.toStringUtf8();
  3336 + xlName_ = s;
  3337 + return s;
  3338 + }
  3339 + }
  3340 + /**
  3341 + * <pre>
  3342 + * 线路名字
  3343 + * </pre>
  3344 + *
  3345 + * <code>string xlName = 3;</code>
  3346 + */
  3347 + public com.google.protobuf.ByteString
  3348 + getXlNameBytes() {
  3349 + java.lang.Object ref = xlName_;
  3350 + if (ref instanceof java.lang.String) {
  3351 + com.google.protobuf.ByteString b =
  3352 + com.google.protobuf.ByteString.copyFromUtf8(
  3353 + (java.lang.String) ref);
  3354 + xlName_ = b;
  3355 + return b;
  3356 + } else {
  3357 + return (com.google.protobuf.ByteString) ref;
  3358 + }
  3359 + }
  3360 +
  3361 + public static final int LP_FIELD_NUMBER = 4;
  3362 + private long lp_;
  3363 + /**
  3364 + * <pre>
  3365 + * 路牌id
  3366 + * </pre>
  3367 + *
  3368 + * <code>uint64 lp = 4;</code>
  3369 + */
  3370 + public long getLp() {
  3371 + return lp_;
  3372 + }
  3373 +
  3374 + public static final int LPNAME_FIELD_NUMBER = 5;
  3375 + private volatile java.lang.Object lpName_;
  3376 + /**
  3377 + * <pre>
  3378 + * 路牌名字
  3379 + * </pre>
  3380 + *
  3381 + * <code>string lpName = 5;</code>
  3382 + */
  3383 + public java.lang.String getLpName() {
  3384 + java.lang.Object ref = lpName_;
  3385 + if (ref instanceof java.lang.String) {
  3386 + return (java.lang.String) ref;
  3387 + } else {
  3388 + com.google.protobuf.ByteString bs =
  3389 + (com.google.protobuf.ByteString) ref;
  3390 + java.lang.String s = bs.toStringUtf8();
  3391 + lpName_ = s;
  3392 + return s;
  3393 + }
  3394 + }
  3395 + /**
  3396 + * <pre>
  3397 + * 路牌名字
  3398 + * </pre>
  3399 + *
  3400 + * <code>string lpName = 5;</code>
  3401 + */
  3402 + public com.google.protobuf.ByteString
  3403 + getLpNameBytes() {
  3404 + java.lang.Object ref = lpName_;
  3405 + if (ref instanceof java.lang.String) {
  3406 + com.google.protobuf.ByteString b =
  3407 + com.google.protobuf.ByteString.copyFromUtf8(
  3408 + (java.lang.String) ref);
  3409 + lpName_ = b;
  3410 + return b;
  3411 + } else {
  3412 + return (com.google.protobuf.ByteString) ref;
  3413 + }
  3414 + }
  3415 +
  3416 + public static final int FCNO_FIELD_NUMBER = 6;
  3417 + private int fcno_;
  3418 + /**
  3419 + * <pre>
  3420 + * 发车顺序号
  3421 + * </pre>
  3422 + *
  3423 + * <code>uint32 fcno = 6;</code>
  3424 + */
  3425 + public int getFcno() {
  3426 + return fcno_;
  3427 + }
  3428 +
  3429 + public static final int XLDIR_FIELD_NUMBER = 7;
  3430 + private volatile java.lang.Object xlDir_;
  3431 + /**
  3432 + * <pre>
  3433 + * 线路方向
  3434 + * </pre>
  3435 + *
  3436 + * <code>string xlDir = 7;</code>
  3437 + */
  3438 + public java.lang.String getXlDir() {
  3439 + java.lang.Object ref = xlDir_;
  3440 + if (ref instanceof java.lang.String) {
  3441 + return (java.lang.String) ref;
  3442 + } else {
  3443 + com.google.protobuf.ByteString bs =
  3444 + (com.google.protobuf.ByteString) ref;
  3445 + java.lang.String s = bs.toStringUtf8();
  3446 + xlDir_ = s;
  3447 + return s;
  3448 + }
  3449 + }
  3450 + /**
  3451 + * <pre>
  3452 + * 线路方向
  3453 + * </pre>
  3454 + *
  3455 + * <code>string xlDir = 7;</code>
  3456 + */
  3457 + public com.google.protobuf.ByteString
  3458 + getXlDirBytes() {
  3459 + java.lang.Object ref = xlDir_;
  3460 + if (ref instanceof java.lang.String) {
  3461 + com.google.protobuf.ByteString b =
  3462 + com.google.protobuf.ByteString.copyFromUtf8(
  3463 + (java.lang.String) ref);
  3464 + xlDir_ = b;
  3465 + return b;
  3466 + } else {
  3467 + return (com.google.protobuf.ByteString) ref;
  3468 + }
  3469 + }
  3470 +
  3471 + public static final int QDZCODE_FIELD_NUMBER = 8;
  3472 + private volatile java.lang.Object qdzCode_;
  3473 + /**
  3474 + * <pre>
  3475 + * 起站点代码(bsth_c_station,bsth_c_car_park 里的编码)
  3476 + * </pre>
  3477 + *
  3478 + * <code>string qdzCode = 8;</code>
  3479 + */
  3480 + public java.lang.String getQdzCode() {
  3481 + java.lang.Object ref = qdzCode_;
  3482 + if (ref instanceof java.lang.String) {
  3483 + return (java.lang.String) ref;
  3484 + } else {
  3485 + com.google.protobuf.ByteString bs =
  3486 + (com.google.protobuf.ByteString) ref;
  3487 + java.lang.String s = bs.toStringUtf8();
  3488 + qdzCode_ = s;
  3489 + return s;
  3490 + }
  3491 + }
  3492 + /**
  3493 + * <pre>
  3494 + * 起站点代码(bsth_c_station,bsth_c_car_park 里的编码)
  3495 + * </pre>
  3496 + *
  3497 + * <code>string qdzCode = 8;</code>
  3498 + */
  3499 + public com.google.protobuf.ByteString
  3500 + getQdzCodeBytes() {
  3501 + java.lang.Object ref = qdzCode_;
  3502 + if (ref instanceof java.lang.String) {
  3503 + com.google.protobuf.ByteString b =
  3504 + com.google.protobuf.ByteString.copyFromUtf8(
  3505 + (java.lang.String) ref);
  3506 + qdzCode_ = b;
  3507 + return b;
  3508 + } else {
  3509 + return (com.google.protobuf.ByteString) ref;
  3510 + }
  3511 + }
  3512 +
  3513 + public static final int QDZNAME_FIELD_NUMBER = 9;
  3514 + private volatile java.lang.Object qdzName_;
  3515 + /**
  3516 + * <pre>
  3517 + * 起站点名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  3518 + * </pre>
  3519 + *
  3520 + * <code>string qdzName = 9;</code>
  3521 + */
  3522 + public java.lang.String getQdzName() {
  3523 + java.lang.Object ref = qdzName_;
  3524 + if (ref instanceof java.lang.String) {
  3525 + return (java.lang.String) ref;
  3526 + } else {
  3527 + com.google.protobuf.ByteString bs =
  3528 + (com.google.protobuf.ByteString) ref;
  3529 + java.lang.String s = bs.toStringUtf8();
  3530 + qdzName_ = s;
  3531 + return s;
  3532 + }
  3533 + }
  3534 + /**
  3535 + * <pre>
  3536 + * 起站点名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  3537 + * </pre>
  3538 + *
  3539 + * <code>string qdzName = 9;</code>
  3540 + */
  3541 + public com.google.protobuf.ByteString
  3542 + getQdzNameBytes() {
  3543 + java.lang.Object ref = qdzName_;
  3544 + if (ref instanceof java.lang.String) {
  3545 + com.google.protobuf.ByteString b =
  3546 + com.google.protobuf.ByteString.copyFromUtf8(
  3547 + (java.lang.String) ref);
  3548 + qdzName_ = b;
  3549 + return b;
  3550 + } else {
  3551 + return (com.google.protobuf.ByteString) ref;
  3552 + }
  3553 + }
  3554 +
  3555 + public static final int ZDZCODE_FIELD_NUMBER = 10;
  3556 + private volatile java.lang.Object zdzCode_;
  3557 + /**
  3558 + * <pre>
  3559 + * 终点站代码(bsth_c_station,bsth_c_car_park 里的编码)
  3560 + * </pre>
  3561 + *
  3562 + * <code>string zdzCode = 10;</code>
  3563 + */
  3564 + public java.lang.String getZdzCode() {
  3565 + java.lang.Object ref = zdzCode_;
  3566 + if (ref instanceof java.lang.String) {
  3567 + return (java.lang.String) ref;
  3568 + } else {
  3569 + com.google.protobuf.ByteString bs =
  3570 + (com.google.protobuf.ByteString) ref;
  3571 + java.lang.String s = bs.toStringUtf8();
  3572 + zdzCode_ = s;
  3573 + return s;
  3574 + }
  3575 + }
  3576 + /**
  3577 + * <pre>
  3578 + * 终点站代码(bsth_c_station,bsth_c_car_park 里的编码)
  3579 + * </pre>
  3580 + *
  3581 + * <code>string zdzCode = 10;</code>
  3582 + */
  3583 + public com.google.protobuf.ByteString
  3584 + getZdzCodeBytes() {
  3585 + java.lang.Object ref = zdzCode_;
  3586 + if (ref instanceof java.lang.String) {
  3587 + com.google.protobuf.ByteString b =
  3588 + com.google.protobuf.ByteString.copyFromUtf8(
  3589 + (java.lang.String) ref);
  3590 + zdzCode_ = b;
  3591 + return b;
  3592 + } else {
  3593 + return (com.google.protobuf.ByteString) ref;
  3594 + }
  3595 + }
  3596 +
  3597 + public static final int ZDZNAME_FIELD_NUMBER = 11;
  3598 + private volatile java.lang.Object zdzName_;
  3599 + /**
  3600 + * <pre>
  3601 + * 终点站名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  3602 + * </pre>
  3603 + *
  3604 + * <code>string zdzName = 11;</code>
  3605 + */
  3606 + public java.lang.String getZdzName() {
  3607 + java.lang.Object ref = zdzName_;
  3608 + if (ref instanceof java.lang.String) {
  3609 + return (java.lang.String) ref;
  3610 + } else {
  3611 + com.google.protobuf.ByteString bs =
  3612 + (com.google.protobuf.ByteString) ref;
  3613 + java.lang.String s = bs.toStringUtf8();
  3614 + zdzName_ = s;
  3615 + return s;
  3616 + }
  3617 + }
  3618 + /**
  3619 + * <pre>
  3620 + * 终点站名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  3621 + * </pre>
  3622 + *
  3623 + * <code>string zdzName = 11;</code>
  3624 + */
  3625 + public com.google.protobuf.ByteString
  3626 + getZdzNameBytes() {
  3627 + java.lang.Object ref = zdzName_;
  3628 + if (ref instanceof java.lang.String) {
  3629 + com.google.protobuf.ByteString b =
  3630 + com.google.protobuf.ByteString.copyFromUtf8(
  3631 + (java.lang.String) ref);
  3632 + zdzName_ = b;
  3633 + return b;
  3634 + } else {
  3635 + return (com.google.protobuf.ByteString) ref;
  3636 + }
  3637 + }
  3638 +
  3639 + public static final int FCSJ_FIELD_NUMBER = 12;
  3640 + private volatile java.lang.Object fcsj_;
  3641 + /**
  3642 + * <pre>
  3643 + * 发车时间(格式 HH:mm)
  3644 + * </pre>
  3645 + *
  3646 + * <code>string fcsj = 12;</code>
  3647 + */
  3648 + public java.lang.String getFcsj() {
  3649 + java.lang.Object ref = fcsj_;
  3650 + if (ref instanceof java.lang.String) {
  3651 + return (java.lang.String) ref;
  3652 + } else {
  3653 + com.google.protobuf.ByteString bs =
  3654 + (com.google.protobuf.ByteString) ref;
  3655 + java.lang.String s = bs.toStringUtf8();
  3656 + fcsj_ = s;
  3657 + return s;
  3658 + }
  3659 + }
  3660 + /**
  3661 + * <pre>
  3662 + * 发车时间(格式 HH:mm)
  3663 + * </pre>
  3664 + *
  3665 + * <code>string fcsj = 12;</code>
  3666 + */
  3667 + public com.google.protobuf.ByteString
  3668 + getFcsjBytes() {
  3669 + java.lang.Object ref = fcsj_;
  3670 + if (ref instanceof java.lang.String) {
  3671 + com.google.protobuf.ByteString b =
  3672 + com.google.protobuf.ByteString.copyFromUtf8(
  3673 + (java.lang.String) ref);
  3674 + fcsj_ = b;
  3675 + return b;
  3676 + } else {
  3677 + return (com.google.protobuf.ByteString) ref;
  3678 + }
  3679 + }
  3680 +
  3681 + public static final int BCS_FIELD_NUMBER = 13;
  3682 + private int bcs_;
  3683 + /**
  3684 + * <pre>
  3685 + * 对应班次数
  3686 + * </pre>
  3687 + *
  3688 + * <code>uint32 bcs = 13;</code>
  3689 + */
  3690 + public int getBcs() {
  3691 + return bcs_;
  3692 + }
  3693 +
  3694 + public static final int JHLC_FIELD_NUMBER = 14;
  3695 + private double jhlc_;
  3696 + /**
  3697 + * <pre>
  3698 + * 计划里程
  3699 + * </pre>
  3700 + *
  3701 + * <code>double jhlc = 14;</code>
  3702 + */
  3703 + public double getJhlc() {
  3704 + return jhlc_;
  3705 + }
  3706 +
  3707 + public static final int BCSJ_FIELD_NUMBER = 15;
  3708 + private int bcsj_;
  3709 + /**
  3710 + * <pre>
  3711 + * 班次历时
  3712 + * </pre>
  3713 + *
  3714 + * <code>uint32 bcsj = 15;</code>
  3715 + */
  3716 + public int getBcsj() {
  3717 + return bcsj_;
  3718 + }
  3719 +
  3720 + public static final int BCTYPE_FIELD_NUMBER = 16;
  3721 + private volatile java.lang.Object bcType_;
  3722 + /**
  3723 + * <pre>
  3724 + * 班次类型 字典type=ScheduleType
  3725 + * </pre>
  3726 + *
  3727 + * <code>string bcType = 16;</code>
  3728 + */
  3729 + public java.lang.String getBcType() {
  3730 + java.lang.Object ref = bcType_;
  3731 + if (ref instanceof java.lang.String) {
  3732 + return (java.lang.String) ref;
  3733 + } else {
  3734 + com.google.protobuf.ByteString bs =
  3735 + (com.google.protobuf.ByteString) ref;
  3736 + java.lang.String s = bs.toStringUtf8();
  3737 + bcType_ = s;
  3738 + return s;
  3739 + }
  3740 + }
  3741 + /**
  3742 + * <pre>
  3743 + * 班次类型 字典type=ScheduleType
  3744 + * </pre>
  3745 + *
  3746 + * <code>string bcType = 16;</code>
  3747 + */
  3748 + public com.google.protobuf.ByteString
  3749 + getBcTypeBytes() {
  3750 + java.lang.Object ref = bcType_;
  3751 + if (ref instanceof java.lang.String) {
  3752 + com.google.protobuf.ByteString b =
  3753 + com.google.protobuf.ByteString.copyFromUtf8(
  3754 + (java.lang.String) ref);
  3755 + bcType_ = b;
  3756 + return b;
  3757 + } else {
  3758 + return (com.google.protobuf.ByteString) ref;
  3759 + }
  3760 + }
  3761 +
  3762 + public static final int ISFB_FIELD_NUMBER = 17;
  3763 + private boolean isFB_;
  3764 + /**
  3765 + * <pre>
  3766 + * 是否分班(表示这个班次是否是晚班班次,就是换另外一个驾驶员开)
  3767 + * </pre>
  3768 + *
  3769 + * <code>bool isFB = 17;</code>
  3770 + */
  3771 + public boolean getIsFB() {
  3772 + return isFB_;
  3773 + }
  3774 +
  3775 + public static final int ISTS_FIELD_NUMBER = 18;
  3776 + private boolean isTS_;
  3777 + /**
  3778 + * <pre>
  3779 + * 是否停驶(表示此班次执行完成,停在终点站,不进场)
  3780 + * </pre>
  3781 + *
  3782 + * <code>bool isTS = 18;</code>
  3783 + */
  3784 + public boolean getIsTS() {
  3785 + return isTS_;
  3786 + }
  3787 +
  3788 + public static final int REMARK_FIELD_NUMBER = 19;
  3789 + private volatile java.lang.Object remark_;
  3790 + /**
  3791 + * <pre>
  3792 + * 备注
  3793 + * </pre>
  3794 + *
  3795 + * <code>string remark = 19;</code>
  3796 + */
  3797 + public java.lang.String getRemark() {
  3798 + java.lang.Object ref = remark_;
  3799 + if (ref instanceof java.lang.String) {
  3800 + return (java.lang.String) ref;
  3801 + } else {
  3802 + com.google.protobuf.ByteString bs =
  3803 + (com.google.protobuf.ByteString) ref;
  3804 + java.lang.String s = bs.toStringUtf8();
  3805 + remark_ = s;
  3806 + return s;
  3807 + }
  3808 + }
  3809 + /**
  3810 + * <pre>
  3811 + * 备注
  3812 + * </pre>
  3813 + *
  3814 + * <code>string remark = 19;</code>
  3815 + */
  3816 + public com.google.protobuf.ByteString
  3817 + getRemarkBytes() {
  3818 + java.lang.Object ref = remark_;
  3819 + if (ref instanceof java.lang.String) {
  3820 + com.google.protobuf.ByteString b =
  3821 + com.google.protobuf.ByteString.copyFromUtf8(
  3822 + (java.lang.String) ref);
  3823 + remark_ = b;
  3824 + return b;
  3825 + } else {
  3826 + return (com.google.protobuf.ByteString) ref;
  3827 + }
  3828 + }
  3829 +
  3830 + private byte memoizedIsInitialized = -1;
  3831 + public final boolean isInitialized() {
  3832 + byte isInitialized = memoizedIsInitialized;
  3833 + if (isInitialized == 1) return true;
  3834 + if (isInitialized == 0) return false;
  3835 +
  3836 + memoizedIsInitialized = 1;
  3837 + return true;
  3838 + }
  3839 +
  3840 + public void writeTo(com.google.protobuf.CodedOutputStream output)
  3841 + throws java.io.IOException {
  3842 + if (id_ != 0L) {
  3843 + output.writeUInt64(1, id_);
  3844 + }
  3845 + if (xl_ != 0) {
  3846 + output.writeUInt32(2, xl_);
  3847 + }
  3848 + if (!getXlNameBytes().isEmpty()) {
  3849 + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, xlName_);
  3850 + }
  3851 + if (lp_ != 0L) {
  3852 + output.writeUInt64(4, lp_);
  3853 + }
  3854 + if (!getLpNameBytes().isEmpty()) {
  3855 + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, lpName_);
  3856 + }
  3857 + if (fcno_ != 0) {
  3858 + output.writeUInt32(6, fcno_);
  3859 + }
  3860 + if (!getXlDirBytes().isEmpty()) {
  3861 + com.google.protobuf.GeneratedMessageV3.writeString(output, 7, xlDir_);
  3862 + }
  3863 + if (!getQdzCodeBytes().isEmpty()) {
  3864 + com.google.protobuf.GeneratedMessageV3.writeString(output, 8, qdzCode_);
  3865 + }
  3866 + if (!getQdzNameBytes().isEmpty()) {
  3867 + com.google.protobuf.GeneratedMessageV3.writeString(output, 9, qdzName_);
  3868 + }
  3869 + if (!getZdzCodeBytes().isEmpty()) {
  3870 + com.google.protobuf.GeneratedMessageV3.writeString(output, 10, zdzCode_);
  3871 + }
  3872 + if (!getZdzNameBytes().isEmpty()) {
  3873 + com.google.protobuf.GeneratedMessageV3.writeString(output, 11, zdzName_);
  3874 + }
  3875 + if (!getFcsjBytes().isEmpty()) {
  3876 + com.google.protobuf.GeneratedMessageV3.writeString(output, 12, fcsj_);
  3877 + }
  3878 + if (bcs_ != 0) {
  3879 + output.writeUInt32(13, bcs_);
  3880 + }
  3881 + if (jhlc_ != 0D) {
  3882 + output.writeDouble(14, jhlc_);
  3883 + }
  3884 + if (bcsj_ != 0) {
  3885 + output.writeUInt32(15, bcsj_);
  3886 + }
  3887 + if (!getBcTypeBytes().isEmpty()) {
  3888 + com.google.protobuf.GeneratedMessageV3.writeString(output, 16, bcType_);
  3889 + }
  3890 + if (isFB_ != false) {
  3891 + output.writeBool(17, isFB_);
  3892 + }
  3893 + if (isTS_ != false) {
  3894 + output.writeBool(18, isTS_);
  3895 + }
  3896 + if (!getRemarkBytes().isEmpty()) {
  3897 + com.google.protobuf.GeneratedMessageV3.writeString(output, 19, remark_);
  3898 + }
  3899 + }
  3900 +
  3901 + public int getSerializedSize() {
  3902 + int size = memoizedSize;
  3903 + if (size != -1) return size;
  3904 +
  3905 + size = 0;
  3906 + if (id_ != 0L) {
  3907 + size += com.google.protobuf.CodedOutputStream
  3908 + .computeUInt64Size(1, id_);
  3909 + }
  3910 + if (xl_ != 0) {
  3911 + size += com.google.protobuf.CodedOutputStream
  3912 + .computeUInt32Size(2, xl_);
  3913 + }
  3914 + if (!getXlNameBytes().isEmpty()) {
  3915 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, xlName_);
  3916 + }
  3917 + if (lp_ != 0L) {
  3918 + size += com.google.protobuf.CodedOutputStream
  3919 + .computeUInt64Size(4, lp_);
  3920 + }
  3921 + if (!getLpNameBytes().isEmpty()) {
  3922 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, lpName_);
  3923 + }
  3924 + if (fcno_ != 0) {
  3925 + size += com.google.protobuf.CodedOutputStream
  3926 + .computeUInt32Size(6, fcno_);
  3927 + }
  3928 + if (!getXlDirBytes().isEmpty()) {
  3929 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, xlDir_);
  3930 + }
  3931 + if (!getQdzCodeBytes().isEmpty()) {
  3932 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, qdzCode_);
  3933 + }
  3934 + if (!getQdzNameBytes().isEmpty()) {
  3935 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, qdzName_);
  3936 + }
  3937 + if (!getZdzCodeBytes().isEmpty()) {
  3938 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, zdzCode_);
  3939 + }
  3940 + if (!getZdzNameBytes().isEmpty()) {
  3941 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, zdzName_);
  3942 + }
  3943 + if (!getFcsjBytes().isEmpty()) {
  3944 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, fcsj_);
  3945 + }
  3946 + if (bcs_ != 0) {
  3947 + size += com.google.protobuf.CodedOutputStream
  3948 + .computeUInt32Size(13, bcs_);
  3949 + }
  3950 + if (jhlc_ != 0D) {
  3951 + size += com.google.protobuf.CodedOutputStream
  3952 + .computeDoubleSize(14, jhlc_);
  3953 + }
  3954 + if (bcsj_ != 0) {
  3955 + size += com.google.protobuf.CodedOutputStream
  3956 + .computeUInt32Size(15, bcsj_);
  3957 + }
  3958 + if (!getBcTypeBytes().isEmpty()) {
  3959 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, bcType_);
  3960 + }
  3961 + if (isFB_ != false) {
  3962 + size += com.google.protobuf.CodedOutputStream
  3963 + .computeBoolSize(17, isFB_);
  3964 + }
  3965 + if (isTS_ != false) {
  3966 + size += com.google.protobuf.CodedOutputStream
  3967 + .computeBoolSize(18, isTS_);
  3968 + }
  3969 + if (!getRemarkBytes().isEmpty()) {
  3970 + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(19, remark_);
  3971 + }
  3972 + memoizedSize = size;
  3973 + return size;
  3974 + }
  3975 +
  3976 + private static final long serialVersionUID = 0L;
  3977 + @java.lang.Override
  3978 + public boolean equals(final java.lang.Object obj) {
  3979 + if (obj == this) {
  3980 + return true;
  3981 + }
  3982 + if (!(obj instanceof com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail)) {
  3983 + return super.equals(obj);
  3984 + }
  3985 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail other = (com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail) obj;
  3986 +
  3987 + boolean result = true;
  3988 + result = result && (getId()
  3989 + == other.getId());
  3990 + result = result && (getXl()
  3991 + == other.getXl());
  3992 + result = result && getXlName()
  3993 + .equals(other.getXlName());
  3994 + result = result && (getLp()
  3995 + == other.getLp());
  3996 + result = result && getLpName()
  3997 + .equals(other.getLpName());
  3998 + result = result && (getFcno()
  3999 + == other.getFcno());
  4000 + result = result && getXlDir()
  4001 + .equals(other.getXlDir());
  4002 + result = result && getQdzCode()
  4003 + .equals(other.getQdzCode());
  4004 + result = result && getQdzName()
  4005 + .equals(other.getQdzName());
  4006 + result = result && getZdzCode()
  4007 + .equals(other.getZdzCode());
  4008 + result = result && getZdzName()
  4009 + .equals(other.getZdzName());
  4010 + result = result && getFcsj()
  4011 + .equals(other.getFcsj());
  4012 + result = result && (getBcs()
  4013 + == other.getBcs());
  4014 + result = result && (
  4015 + java.lang.Double.doubleToLongBits(getJhlc())
  4016 + == java.lang.Double.doubleToLongBits(
  4017 + other.getJhlc()));
  4018 + result = result && (getBcsj()
  4019 + == other.getBcsj());
  4020 + result = result && getBcType()
  4021 + .equals(other.getBcType());
  4022 + result = result && (getIsFB()
  4023 + == other.getIsFB());
  4024 + result = result && (getIsTS()
  4025 + == other.getIsTS());
  4026 + result = result && getRemark()
  4027 + .equals(other.getRemark());
  4028 + return result;
  4029 + }
  4030 +
  4031 + @java.lang.Override
  4032 + public int hashCode() {
  4033 + if (memoizedHashCode != 0) {
  4034 + return memoizedHashCode;
  4035 + }
  4036 + int hash = 41;
  4037 + hash = (19 * hash) + getDescriptor().hashCode();
  4038 + hash = (37 * hash) + ID_FIELD_NUMBER;
  4039 + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
  4040 + getId());
  4041 + hash = (37 * hash) + XL_FIELD_NUMBER;
  4042 + hash = (53 * hash) + getXl();
  4043 + hash = (37 * hash) + XLNAME_FIELD_NUMBER;
  4044 + hash = (53 * hash) + getXlName().hashCode();
  4045 + hash = (37 * hash) + LP_FIELD_NUMBER;
  4046 + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
  4047 + getLp());
  4048 + hash = (37 * hash) + LPNAME_FIELD_NUMBER;
  4049 + hash = (53 * hash) + getLpName().hashCode();
  4050 + hash = (37 * hash) + FCNO_FIELD_NUMBER;
  4051 + hash = (53 * hash) + getFcno();
  4052 + hash = (37 * hash) + XLDIR_FIELD_NUMBER;
  4053 + hash = (53 * hash) + getXlDir().hashCode();
  4054 + hash = (37 * hash) + QDZCODE_FIELD_NUMBER;
  4055 + hash = (53 * hash) + getQdzCode().hashCode();
  4056 + hash = (37 * hash) + QDZNAME_FIELD_NUMBER;
  4057 + hash = (53 * hash) + getQdzName().hashCode();
  4058 + hash = (37 * hash) + ZDZCODE_FIELD_NUMBER;
  4059 + hash = (53 * hash) + getZdzCode().hashCode();
  4060 + hash = (37 * hash) + ZDZNAME_FIELD_NUMBER;
  4061 + hash = (53 * hash) + getZdzName().hashCode();
  4062 + hash = (37 * hash) + FCSJ_FIELD_NUMBER;
  4063 + hash = (53 * hash) + getFcsj().hashCode();
  4064 + hash = (37 * hash) + BCS_FIELD_NUMBER;
  4065 + hash = (53 * hash) + getBcs();
  4066 + hash = (37 * hash) + JHLC_FIELD_NUMBER;
  4067 + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
  4068 + java.lang.Double.doubleToLongBits(getJhlc()));
  4069 + hash = (37 * hash) + BCSJ_FIELD_NUMBER;
  4070 + hash = (53 * hash) + getBcsj();
  4071 + hash = (37 * hash) + BCTYPE_FIELD_NUMBER;
  4072 + hash = (53 * hash) + getBcType().hashCode();
  4073 + hash = (37 * hash) + ISFB_FIELD_NUMBER;
  4074 + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
  4075 + getIsFB());
  4076 + hash = (37 * hash) + ISTS_FIELD_NUMBER;
  4077 + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
  4078 + getIsTS());
  4079 + hash = (37 * hash) + REMARK_FIELD_NUMBER;
  4080 + hash = (53 * hash) + getRemark().hashCode();
  4081 + hash = (29 * hash) + unknownFields.hashCode();
  4082 + memoizedHashCode = hash;
  4083 + return hash;
  4084 + }
  4085 +
  4086 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail parseFrom(
  4087 + java.nio.ByteBuffer data)
  4088 + throws com.google.protobuf.InvalidProtocolBufferException {
  4089 + return PARSER.parseFrom(data);
  4090 + }
  4091 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail parseFrom(
  4092 + java.nio.ByteBuffer data,
  4093 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  4094 + throws com.google.protobuf.InvalidProtocolBufferException {
  4095 + return PARSER.parseFrom(data, extensionRegistry);
  4096 + }
  4097 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail parseFrom(
  4098 + com.google.protobuf.ByteString data)
  4099 + throws com.google.protobuf.InvalidProtocolBufferException {
  4100 + return PARSER.parseFrom(data);
  4101 + }
  4102 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail parseFrom(
  4103 + com.google.protobuf.ByteString data,
  4104 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  4105 + throws com.google.protobuf.InvalidProtocolBufferException {
  4106 + return PARSER.parseFrom(data, extensionRegistry);
  4107 + }
  4108 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail parseFrom(byte[] data)
  4109 + throws com.google.protobuf.InvalidProtocolBufferException {
  4110 + return PARSER.parseFrom(data);
  4111 + }
  4112 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail parseFrom(
  4113 + byte[] data,
  4114 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  4115 + throws com.google.protobuf.InvalidProtocolBufferException {
  4116 + return PARSER.parseFrom(data, extensionRegistry);
  4117 + }
  4118 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail parseFrom(java.io.InputStream input)
  4119 + throws java.io.IOException {
  4120 + return com.google.protobuf.GeneratedMessageV3
  4121 + .parseWithIOException(PARSER, input);
  4122 + }
  4123 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail parseFrom(
  4124 + java.io.InputStream input,
  4125 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  4126 + throws java.io.IOException {
  4127 + return com.google.protobuf.GeneratedMessageV3
  4128 + .parseWithIOException(PARSER, input, extensionRegistry);
  4129 + }
  4130 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail parseDelimitedFrom(java.io.InputStream input)
  4131 + throws java.io.IOException {
  4132 + return com.google.protobuf.GeneratedMessageV3
  4133 + .parseDelimitedWithIOException(PARSER, input);
  4134 + }
  4135 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail parseDelimitedFrom(
  4136 + java.io.InputStream input,
  4137 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  4138 + throws java.io.IOException {
  4139 + return com.google.protobuf.GeneratedMessageV3
  4140 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
  4141 + }
  4142 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail parseFrom(
  4143 + com.google.protobuf.CodedInputStream input)
  4144 + throws java.io.IOException {
  4145 + return com.google.protobuf.GeneratedMessageV3
  4146 + .parseWithIOException(PARSER, input);
  4147 + }
  4148 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail parseFrom(
  4149 + com.google.protobuf.CodedInputStream input,
  4150 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  4151 + throws java.io.IOException {
  4152 + return com.google.protobuf.GeneratedMessageV3
  4153 + .parseWithIOException(PARSER, input, extensionRegistry);
  4154 + }
  4155 +
  4156 + public Builder newBuilderForType() { return newBuilder(); }
  4157 + public static Builder newBuilder() {
  4158 + return DEFAULT_INSTANCE.toBuilder();
  4159 + }
  4160 + public static Builder newBuilder(com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail prototype) {
  4161 + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  4162 + }
  4163 + public Builder toBuilder() {
  4164 + return this == DEFAULT_INSTANCE
  4165 + ? new Builder() : new Builder().mergeFrom(this);
  4166 + }
  4167 +
  4168 + @java.lang.Override
  4169 + protected Builder newBuilderForType(
  4170 + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
  4171 + Builder builder = new Builder(parent);
  4172 + return builder;
  4173 + }
  4174 + /**
  4175 + * Protobuf type {@code timetable.TTInfoDetail}
  4176 + */
  4177 + public static final class Builder extends
  4178 + com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
  4179 + // @@protoc_insertion_point(builder_implements:timetable.TTInfoDetail)
  4180 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetailOrBuilder {
  4181 + public static final com.google.protobuf.Descriptors.Descriptor
  4182 + getDescriptor() {
  4183 + return com.bsth.service.schedule.utils.TimeTableProto.internal_static_timetable_TTInfoDetail_descriptor;
  4184 + }
  4185 +
  4186 + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
  4187 + internalGetFieldAccessorTable() {
  4188 + return com.bsth.service.schedule.utils.TimeTableProto.internal_static_timetable_TTInfoDetail_fieldAccessorTable
  4189 + .ensureFieldAccessorsInitialized(
  4190 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.class, com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.Builder.class);
  4191 + }
  4192 +
  4193 + // Construct using com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.newBuilder()
  4194 + private Builder() {
  4195 + maybeForceBuilderInitialization();
  4196 + }
  4197 +
  4198 + private Builder(
  4199 + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
  4200 + super(parent);
  4201 + maybeForceBuilderInitialization();
  4202 + }
  4203 + private void maybeForceBuilderInitialization() {
  4204 + if (com.google.protobuf.GeneratedMessageV3
  4205 + .alwaysUseFieldBuilders) {
  4206 + }
  4207 + }
  4208 + public Builder clear() {
  4209 + super.clear();
  4210 + id_ = 0L;
  4211 +
  4212 + xl_ = 0;
  4213 +
  4214 + xlName_ = "";
  4215 +
  4216 + lp_ = 0L;
  4217 +
  4218 + lpName_ = "";
  4219 +
  4220 + fcno_ = 0;
  4221 +
  4222 + xlDir_ = "";
  4223 +
  4224 + qdzCode_ = "";
  4225 +
  4226 + qdzName_ = "";
  4227 +
  4228 + zdzCode_ = "";
  4229 +
  4230 + zdzName_ = "";
  4231 +
  4232 + fcsj_ = "";
  4233 +
  4234 + bcs_ = 0;
  4235 +
  4236 + jhlc_ = 0D;
  4237 +
  4238 + bcsj_ = 0;
  4239 +
  4240 + bcType_ = "";
  4241 +
  4242 + isFB_ = false;
  4243 +
  4244 + isTS_ = false;
  4245 +
  4246 + remark_ = "";
  4247 +
  4248 + return this;
  4249 + }
  4250 +
  4251 + public com.google.protobuf.Descriptors.Descriptor
  4252 + getDescriptorForType() {
  4253 + return com.bsth.service.schedule.utils.TimeTableProto.internal_static_timetable_TTInfoDetail_descriptor;
  4254 + }
  4255 +
  4256 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail getDefaultInstanceForType() {
  4257 + return com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.getDefaultInstance();
  4258 + }
  4259 +
  4260 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail build() {
  4261 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail result = buildPartial();
  4262 + if (!result.isInitialized()) {
  4263 + throw newUninitializedMessageException(result);
  4264 + }
  4265 + return result;
  4266 + }
  4267 +
  4268 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail buildPartial() {
  4269 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail result = new com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail(this);
  4270 + result.id_ = id_;
  4271 + result.xl_ = xl_;
  4272 + result.xlName_ = xlName_;
  4273 + result.lp_ = lp_;
  4274 + result.lpName_ = lpName_;
  4275 + result.fcno_ = fcno_;
  4276 + result.xlDir_ = xlDir_;
  4277 + result.qdzCode_ = qdzCode_;
  4278 + result.qdzName_ = qdzName_;
  4279 + result.zdzCode_ = zdzCode_;
  4280 + result.zdzName_ = zdzName_;
  4281 + result.fcsj_ = fcsj_;
  4282 + result.bcs_ = bcs_;
  4283 + result.jhlc_ = jhlc_;
  4284 + result.bcsj_ = bcsj_;
  4285 + result.bcType_ = bcType_;
  4286 + result.isFB_ = isFB_;
  4287 + result.isTS_ = isTS_;
  4288 + result.remark_ = remark_;
  4289 + onBuilt();
  4290 + return result;
  4291 + }
  4292 +
  4293 + public Builder clone() {
  4294 + return (Builder) super.clone();
  4295 + }
  4296 + public Builder setField(
  4297 + com.google.protobuf.Descriptors.FieldDescriptor field,
  4298 + Object value) {
  4299 + return (Builder) super.setField(field, value);
  4300 + }
  4301 + public Builder clearField(
  4302 + com.google.protobuf.Descriptors.FieldDescriptor field) {
  4303 + return (Builder) super.clearField(field);
  4304 + }
  4305 + public Builder clearOneof(
  4306 + com.google.protobuf.Descriptors.OneofDescriptor oneof) {
  4307 + return (Builder) super.clearOneof(oneof);
  4308 + }
  4309 + public Builder setRepeatedField(
  4310 + com.google.protobuf.Descriptors.FieldDescriptor field,
  4311 + int index, Object value) {
  4312 + return (Builder) super.setRepeatedField(field, index, value);
  4313 + }
  4314 + public Builder addRepeatedField(
  4315 + com.google.protobuf.Descriptors.FieldDescriptor field,
  4316 + Object value) {
  4317 + return (Builder) super.addRepeatedField(field, value);
  4318 + }
  4319 + public Builder mergeFrom(com.google.protobuf.Message other) {
  4320 + if (other instanceof com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail) {
  4321 + return mergeFrom((com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail)other);
  4322 + } else {
  4323 + super.mergeFrom(other);
  4324 + return this;
  4325 + }
  4326 + }
  4327 +
  4328 + public Builder mergeFrom(com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail other) {
  4329 + if (other == com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail.getDefaultInstance()) return this;
  4330 + if (other.getId() != 0L) {
  4331 + setId(other.getId());
  4332 + }
  4333 + if (other.getXl() != 0) {
  4334 + setXl(other.getXl());
  4335 + }
  4336 + if (!other.getXlName().isEmpty()) {
  4337 + xlName_ = other.xlName_;
  4338 + onChanged();
  4339 + }
  4340 + if (other.getLp() != 0L) {
  4341 + setLp(other.getLp());
  4342 + }
  4343 + if (!other.getLpName().isEmpty()) {
  4344 + lpName_ = other.lpName_;
  4345 + onChanged();
  4346 + }
  4347 + if (other.getFcno() != 0) {
  4348 + setFcno(other.getFcno());
  4349 + }
  4350 + if (!other.getXlDir().isEmpty()) {
  4351 + xlDir_ = other.xlDir_;
  4352 + onChanged();
  4353 + }
  4354 + if (!other.getQdzCode().isEmpty()) {
  4355 + qdzCode_ = other.qdzCode_;
  4356 + onChanged();
  4357 + }
  4358 + if (!other.getQdzName().isEmpty()) {
  4359 + qdzName_ = other.qdzName_;
  4360 + onChanged();
  4361 + }
  4362 + if (!other.getZdzCode().isEmpty()) {
  4363 + zdzCode_ = other.zdzCode_;
  4364 + onChanged();
  4365 + }
  4366 + if (!other.getZdzName().isEmpty()) {
  4367 + zdzName_ = other.zdzName_;
  4368 + onChanged();
  4369 + }
  4370 + if (!other.getFcsj().isEmpty()) {
  4371 + fcsj_ = other.fcsj_;
  4372 + onChanged();
  4373 + }
  4374 + if (other.getBcs() != 0) {
  4375 + setBcs(other.getBcs());
  4376 + }
  4377 + if (other.getJhlc() != 0D) {
  4378 + setJhlc(other.getJhlc());
  4379 + }
  4380 + if (other.getBcsj() != 0) {
  4381 + setBcsj(other.getBcsj());
  4382 + }
  4383 + if (!other.getBcType().isEmpty()) {
  4384 + bcType_ = other.bcType_;
  4385 + onChanged();
  4386 + }
  4387 + if (other.getIsFB() != false) {
  4388 + setIsFB(other.getIsFB());
  4389 + }
  4390 + if (other.getIsTS() != false) {
  4391 + setIsTS(other.getIsTS());
  4392 + }
  4393 + if (!other.getRemark().isEmpty()) {
  4394 + remark_ = other.remark_;
  4395 + onChanged();
  4396 + }
  4397 + onChanged();
  4398 + return this;
  4399 + }
  4400 +
  4401 + public final boolean isInitialized() {
  4402 + return true;
  4403 + }
  4404 +
  4405 + public Builder mergeFrom(
  4406 + com.google.protobuf.CodedInputStream input,
  4407 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  4408 + throws java.io.IOException {
  4409 + com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail parsedMessage = null;
  4410 + try {
  4411 + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
  4412 + } catch (com.google.protobuf.InvalidProtocolBufferException e) {
  4413 + parsedMessage = (com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail) e.getUnfinishedMessage();
  4414 + throw e.unwrapIOException();
  4415 + } finally {
  4416 + if (parsedMessage != null) {
  4417 + mergeFrom(parsedMessage);
  4418 + }
  4419 + }
  4420 + return this;
  4421 + }
  4422 +
  4423 + private long id_ ;
  4424 + /**
  4425 + * <pre>
  4426 + * 班次明细id
  4427 + * </pre>
  4428 + *
  4429 + * <code>uint64 id = 1;</code>
  4430 + */
  4431 + public long getId() {
  4432 + return id_;
  4433 + }
  4434 + /**
  4435 + * <pre>
  4436 + * 班次明细id
  4437 + * </pre>
  4438 + *
  4439 + * <code>uint64 id = 1;</code>
  4440 + */
  4441 + public Builder setId(long value) {
  4442 +
  4443 + id_ = value;
  4444 + onChanged();
  4445 + return this;
  4446 + }
  4447 + /**
  4448 + * <pre>
  4449 + * 班次明细id
  4450 + * </pre>
  4451 + *
  4452 + * <code>uint64 id = 1;</code>
  4453 + */
  4454 + public Builder clearId() {
  4455 +
  4456 + id_ = 0L;
  4457 + onChanged();
  4458 + return this;
  4459 + }
  4460 +
  4461 + private int xl_ ;
  4462 + /**
  4463 + * <pre>
  4464 + * TODO:时刻表主对象关联
  4465 + * </pre>
  4466 + *
  4467 + * <code>uint32 xl = 2;</code>
  4468 + */
  4469 + public int getXl() {
  4470 + return xl_;
  4471 + }
  4472 + /**
  4473 + * <pre>
  4474 + * TODO:时刻表主对象关联
  4475 + * </pre>
  4476 + *
  4477 + * <code>uint32 xl = 2;</code>
  4478 + */
  4479 + public Builder setXl(int value) {
  4480 +
  4481 + xl_ = value;
  4482 + onChanged();
  4483 + return this;
  4484 + }
  4485 + /**
  4486 + * <pre>
  4487 + * TODO:时刻表主对象关联
  4488 + * </pre>
  4489 + *
  4490 + * <code>uint32 xl = 2;</code>
  4491 + */
  4492 + public Builder clearXl() {
  4493 +
  4494 + xl_ = 0;
  4495 + onChanged();
  4496 + return this;
  4497 + }
  4498 +
  4499 + private java.lang.Object xlName_ = "";
  4500 + /**
  4501 + * <pre>
  4502 + * 线路名字
  4503 + * </pre>
  4504 + *
  4505 + * <code>string xlName = 3;</code>
  4506 + */
  4507 + public java.lang.String getXlName() {
  4508 + java.lang.Object ref = xlName_;
  4509 + if (!(ref instanceof java.lang.String)) {
  4510 + com.google.protobuf.ByteString bs =
  4511 + (com.google.protobuf.ByteString) ref;
  4512 + java.lang.String s = bs.toStringUtf8();
  4513 + xlName_ = s;
  4514 + return s;
  4515 + } else {
  4516 + return (java.lang.String) ref;
  4517 + }
  4518 + }
  4519 + /**
  4520 + * <pre>
  4521 + * 线路名字
  4522 + * </pre>
  4523 + *
  4524 + * <code>string xlName = 3;</code>
  4525 + */
  4526 + public com.google.protobuf.ByteString
  4527 + getXlNameBytes() {
  4528 + java.lang.Object ref = xlName_;
  4529 + if (ref instanceof String) {
  4530 + com.google.protobuf.ByteString b =
  4531 + com.google.protobuf.ByteString.copyFromUtf8(
  4532 + (java.lang.String) ref);
  4533 + xlName_ = b;
  4534 + return b;
  4535 + } else {
  4536 + return (com.google.protobuf.ByteString) ref;
  4537 + }
  4538 + }
  4539 + /**
  4540 + * <pre>
  4541 + * 线路名字
  4542 + * </pre>
  4543 + *
  4544 + * <code>string xlName = 3;</code>
  4545 + */
  4546 + public Builder setXlName(
  4547 + java.lang.String value) {
  4548 + if (value == null) {
  4549 + throw new NullPointerException();
  4550 + }
  4551 +
  4552 + xlName_ = value;
  4553 + onChanged();
  4554 + return this;
  4555 + }
  4556 + /**
  4557 + * <pre>
  4558 + * 线路名字
  4559 + * </pre>
  4560 + *
  4561 + * <code>string xlName = 3;</code>
  4562 + */
  4563 + public Builder clearXlName() {
  4564 +
  4565 + xlName_ = getDefaultInstance().getXlName();
  4566 + onChanged();
  4567 + return this;
  4568 + }
  4569 + /**
  4570 + * <pre>
  4571 + * 线路名字
  4572 + * </pre>
  4573 + *
  4574 + * <code>string xlName = 3;</code>
  4575 + */
  4576 + public Builder setXlNameBytes(
  4577 + com.google.protobuf.ByteString value) {
  4578 + if (value == null) {
  4579 + throw new NullPointerException();
  4580 + }
  4581 + checkByteStringIsUtf8(value);
  4582 +
  4583 + xlName_ = value;
  4584 + onChanged();
  4585 + return this;
  4586 + }
  4587 +
  4588 + private long lp_ ;
  4589 + /**
  4590 + * <pre>
  4591 + * 路牌id
  4592 + * </pre>
  4593 + *
  4594 + * <code>uint64 lp = 4;</code>
  4595 + */
  4596 + public long getLp() {
  4597 + return lp_;
  4598 + }
  4599 + /**
  4600 + * <pre>
  4601 + * 路牌id
  4602 + * </pre>
  4603 + *
  4604 + * <code>uint64 lp = 4;</code>
  4605 + */
  4606 + public Builder setLp(long value) {
  4607 +
  4608 + lp_ = value;
  4609 + onChanged();
  4610 + return this;
  4611 + }
  4612 + /**
  4613 + * <pre>
  4614 + * 路牌id
  4615 + * </pre>
  4616 + *
  4617 + * <code>uint64 lp = 4;</code>
  4618 + */
  4619 + public Builder clearLp() {
  4620 +
  4621 + lp_ = 0L;
  4622 + onChanged();
  4623 + return this;
  4624 + }
  4625 +
  4626 + private java.lang.Object lpName_ = "";
  4627 + /**
  4628 + * <pre>
  4629 + * 路牌名字
  4630 + * </pre>
  4631 + *
  4632 + * <code>string lpName = 5;</code>
  4633 + */
  4634 + public java.lang.String getLpName() {
  4635 + java.lang.Object ref = lpName_;
  4636 + if (!(ref instanceof java.lang.String)) {
  4637 + com.google.protobuf.ByteString bs =
  4638 + (com.google.protobuf.ByteString) ref;
  4639 + java.lang.String s = bs.toStringUtf8();
  4640 + lpName_ = s;
  4641 + return s;
  4642 + } else {
  4643 + return (java.lang.String) ref;
  4644 + }
  4645 + }
  4646 + /**
  4647 + * <pre>
  4648 + * 路牌名字
  4649 + * </pre>
  4650 + *
  4651 + * <code>string lpName = 5;</code>
  4652 + */
  4653 + public com.google.protobuf.ByteString
  4654 + getLpNameBytes() {
  4655 + java.lang.Object ref = lpName_;
  4656 + if (ref instanceof String) {
  4657 + com.google.protobuf.ByteString b =
  4658 + com.google.protobuf.ByteString.copyFromUtf8(
  4659 + (java.lang.String) ref);
  4660 + lpName_ = b;
  4661 + return b;
  4662 + } else {
  4663 + return (com.google.protobuf.ByteString) ref;
  4664 + }
  4665 + }
  4666 + /**
  4667 + * <pre>
  4668 + * 路牌名字
  4669 + * </pre>
  4670 + *
  4671 + * <code>string lpName = 5;</code>
  4672 + */
  4673 + public Builder setLpName(
  4674 + java.lang.String value) {
  4675 + if (value == null) {
  4676 + throw new NullPointerException();
  4677 + }
  4678 +
  4679 + lpName_ = value;
  4680 + onChanged();
  4681 + return this;
  4682 + }
  4683 + /**
  4684 + * <pre>
  4685 + * 路牌名字
  4686 + * </pre>
  4687 + *
  4688 + * <code>string lpName = 5;</code>
  4689 + */
  4690 + public Builder clearLpName() {
  4691 +
  4692 + lpName_ = getDefaultInstance().getLpName();
  4693 + onChanged();
  4694 + return this;
  4695 + }
  4696 + /**
  4697 + * <pre>
  4698 + * 路牌名字
  4699 + * </pre>
  4700 + *
  4701 + * <code>string lpName = 5;</code>
  4702 + */
  4703 + public Builder setLpNameBytes(
  4704 + com.google.protobuf.ByteString value) {
  4705 + if (value == null) {
  4706 + throw new NullPointerException();
  4707 + }
  4708 + checkByteStringIsUtf8(value);
  4709 +
  4710 + lpName_ = value;
  4711 + onChanged();
  4712 + return this;
  4713 + }
  4714 +
  4715 + private int fcno_ ;
  4716 + /**
  4717 + * <pre>
  4718 + * 发车顺序号
  4719 + * </pre>
  4720 + *
  4721 + * <code>uint32 fcno = 6;</code>
  4722 + */
  4723 + public int getFcno() {
  4724 + return fcno_;
  4725 + }
  4726 + /**
  4727 + * <pre>
  4728 + * 发车顺序号
  4729 + * </pre>
  4730 + *
  4731 + * <code>uint32 fcno = 6;</code>
  4732 + */
  4733 + public Builder setFcno(int value) {
  4734 +
  4735 + fcno_ = value;
  4736 + onChanged();
  4737 + return this;
  4738 + }
  4739 + /**
  4740 + * <pre>
  4741 + * 发车顺序号
  4742 + * </pre>
  4743 + *
  4744 + * <code>uint32 fcno = 6;</code>
  4745 + */
  4746 + public Builder clearFcno() {
  4747 +
  4748 + fcno_ = 0;
  4749 + onChanged();
  4750 + return this;
  4751 + }
  4752 +
  4753 + private java.lang.Object xlDir_ = "";
  4754 + /**
  4755 + * <pre>
  4756 + * 线路方向
  4757 + * </pre>
  4758 + *
  4759 + * <code>string xlDir = 7;</code>
  4760 + */
  4761 + public java.lang.String getXlDir() {
  4762 + java.lang.Object ref = xlDir_;
  4763 + if (!(ref instanceof java.lang.String)) {
  4764 + com.google.protobuf.ByteString bs =
  4765 + (com.google.protobuf.ByteString) ref;
  4766 + java.lang.String s = bs.toStringUtf8();
  4767 + xlDir_ = s;
  4768 + return s;
  4769 + } else {
  4770 + return (java.lang.String) ref;
  4771 + }
  4772 + }
  4773 + /**
  4774 + * <pre>
  4775 + * 线路方向
  4776 + * </pre>
  4777 + *
  4778 + * <code>string xlDir = 7;</code>
  4779 + */
  4780 + public com.google.protobuf.ByteString
  4781 + getXlDirBytes() {
  4782 + java.lang.Object ref = xlDir_;
  4783 + if (ref instanceof String) {
  4784 + com.google.protobuf.ByteString b =
  4785 + com.google.protobuf.ByteString.copyFromUtf8(
  4786 + (java.lang.String) ref);
  4787 + xlDir_ = b;
  4788 + return b;
  4789 + } else {
  4790 + return (com.google.protobuf.ByteString) ref;
  4791 + }
  4792 + }
  4793 + /**
  4794 + * <pre>
  4795 + * 线路方向
  4796 + * </pre>
  4797 + *
  4798 + * <code>string xlDir = 7;</code>
  4799 + */
  4800 + public Builder setXlDir(
  4801 + java.lang.String value) {
  4802 + if (value == null) {
  4803 + throw new NullPointerException();
  4804 + }
  4805 +
  4806 + xlDir_ = value;
  4807 + onChanged();
  4808 + return this;
  4809 + }
  4810 + /**
  4811 + * <pre>
  4812 + * 线路方向
  4813 + * </pre>
  4814 + *
  4815 + * <code>string xlDir = 7;</code>
  4816 + */
  4817 + public Builder clearXlDir() {
  4818 +
  4819 + xlDir_ = getDefaultInstance().getXlDir();
  4820 + onChanged();
  4821 + return this;
  4822 + }
  4823 + /**
  4824 + * <pre>
  4825 + * 线路方向
  4826 + * </pre>
  4827 + *
  4828 + * <code>string xlDir = 7;</code>
  4829 + */
  4830 + public Builder setXlDirBytes(
  4831 + com.google.protobuf.ByteString value) {
  4832 + if (value == null) {
  4833 + throw new NullPointerException();
  4834 + }
  4835 + checkByteStringIsUtf8(value);
  4836 +
  4837 + xlDir_ = value;
  4838 + onChanged();
  4839 + return this;
  4840 + }
  4841 +
  4842 + private java.lang.Object qdzCode_ = "";
  4843 + /**
  4844 + * <pre>
  4845 + * 起站点代码(bsth_c_station,bsth_c_car_park 里的编码)
  4846 + * </pre>
  4847 + *
  4848 + * <code>string qdzCode = 8;</code>
  4849 + */
  4850 + public java.lang.String getQdzCode() {
  4851 + java.lang.Object ref = qdzCode_;
  4852 + if (!(ref instanceof java.lang.String)) {
  4853 + com.google.protobuf.ByteString bs =
  4854 + (com.google.protobuf.ByteString) ref;
  4855 + java.lang.String s = bs.toStringUtf8();
  4856 + qdzCode_ = s;
  4857 + return s;
  4858 + } else {
  4859 + return (java.lang.String) ref;
  4860 + }
  4861 + }
  4862 + /**
  4863 + * <pre>
  4864 + * 起站点代码(bsth_c_station,bsth_c_car_park 里的编码)
  4865 + * </pre>
  4866 + *
  4867 + * <code>string qdzCode = 8;</code>
  4868 + */
  4869 + public com.google.protobuf.ByteString
  4870 + getQdzCodeBytes() {
  4871 + java.lang.Object ref = qdzCode_;
  4872 + if (ref instanceof String) {
  4873 + com.google.protobuf.ByteString b =
  4874 + com.google.protobuf.ByteString.copyFromUtf8(
  4875 + (java.lang.String) ref);
  4876 + qdzCode_ = b;
  4877 + return b;
  4878 + } else {
  4879 + return (com.google.protobuf.ByteString) ref;
  4880 + }
  4881 + }
  4882 + /**
  4883 + * <pre>
  4884 + * 起站点代码(bsth_c_station,bsth_c_car_park 里的编码)
  4885 + * </pre>
  4886 + *
  4887 + * <code>string qdzCode = 8;</code>
  4888 + */
  4889 + public Builder setQdzCode(
  4890 + java.lang.String value) {
  4891 + if (value == null) {
  4892 + throw new NullPointerException();
  4893 + }
  4894 +
  4895 + qdzCode_ = value;
  4896 + onChanged();
  4897 + return this;
  4898 + }
  4899 + /**
  4900 + * <pre>
  4901 + * 起站点代码(bsth_c_station,bsth_c_car_park 里的编码)
  4902 + * </pre>
  4903 + *
  4904 + * <code>string qdzCode = 8;</code>
  4905 + */
  4906 + public Builder clearQdzCode() {
  4907 +
  4908 + qdzCode_ = getDefaultInstance().getQdzCode();
  4909 + onChanged();
  4910 + return this;
  4911 + }
  4912 + /**
  4913 + * <pre>
  4914 + * 起站点代码(bsth_c_station,bsth_c_car_park 里的编码)
  4915 + * </pre>
  4916 + *
  4917 + * <code>string qdzCode = 8;</code>
  4918 + */
  4919 + public Builder setQdzCodeBytes(
  4920 + com.google.protobuf.ByteString value) {
  4921 + if (value == null) {
  4922 + throw new NullPointerException();
  4923 + }
  4924 + checkByteStringIsUtf8(value);
  4925 +
  4926 + qdzCode_ = value;
  4927 + onChanged();
  4928 + return this;
  4929 + }
  4930 +
  4931 + private java.lang.Object qdzName_ = "";
  4932 + /**
  4933 + * <pre>
  4934 + * 起站点名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  4935 + * </pre>
  4936 + *
  4937 + * <code>string qdzName = 9;</code>
  4938 + */
  4939 + public java.lang.String getQdzName() {
  4940 + java.lang.Object ref = qdzName_;
  4941 + if (!(ref instanceof java.lang.String)) {
  4942 + com.google.protobuf.ByteString bs =
  4943 + (com.google.protobuf.ByteString) ref;
  4944 + java.lang.String s = bs.toStringUtf8();
  4945 + qdzName_ = s;
  4946 + return s;
  4947 + } else {
  4948 + return (java.lang.String) ref;
  4949 + }
  4950 + }
  4951 + /**
  4952 + * <pre>
  4953 + * 起站点名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  4954 + * </pre>
  4955 + *
  4956 + * <code>string qdzName = 9;</code>
  4957 + */
  4958 + public com.google.protobuf.ByteString
  4959 + getQdzNameBytes() {
  4960 + java.lang.Object ref = qdzName_;
  4961 + if (ref instanceof String) {
  4962 + com.google.protobuf.ByteString b =
  4963 + com.google.protobuf.ByteString.copyFromUtf8(
  4964 + (java.lang.String) ref);
  4965 + qdzName_ = b;
  4966 + return b;
  4967 + } else {
  4968 + return (com.google.protobuf.ByteString) ref;
  4969 + }
  4970 + }
  4971 + /**
  4972 + * <pre>
  4973 + * 起站点名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  4974 + * </pre>
  4975 + *
  4976 + * <code>string qdzName = 9;</code>
  4977 + */
  4978 + public Builder setQdzName(
  4979 + java.lang.String value) {
  4980 + if (value == null) {
  4981 + throw new NullPointerException();
  4982 + }
  4983 +
  4984 + qdzName_ = value;
  4985 + onChanged();
  4986 + return this;
  4987 + }
  4988 + /**
  4989 + * <pre>
  4990 + * 起站点名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  4991 + * </pre>
  4992 + *
  4993 + * <code>string qdzName = 9;</code>
  4994 + */
  4995 + public Builder clearQdzName() {
  4996 +
  4997 + qdzName_ = getDefaultInstance().getQdzName();
  4998 + onChanged();
  4999 + return this;
  5000 + }
  5001 + /**
  5002 + * <pre>
  5003 + * 起站点名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  5004 + * </pre>
  5005 + *
  5006 + * <code>string qdzName = 9;</code>
  5007 + */
  5008 + public Builder setQdzNameBytes(
  5009 + com.google.protobuf.ByteString value) {
  5010 + if (value == null) {
  5011 + throw new NullPointerException();
  5012 + }
  5013 + checkByteStringIsUtf8(value);
  5014 +
  5015 + qdzName_ = value;
  5016 + onChanged();
  5017 + return this;
  5018 + }
  5019 +
  5020 + private java.lang.Object zdzCode_ = "";
  5021 + /**
  5022 + * <pre>
  5023 + * 终点站代码(bsth_c_station,bsth_c_car_park 里的编码)
  5024 + * </pre>
  5025 + *
  5026 + * <code>string zdzCode = 10;</code>
  5027 + */
  5028 + public java.lang.String getZdzCode() {
  5029 + java.lang.Object ref = zdzCode_;
  5030 + if (!(ref instanceof java.lang.String)) {
  5031 + com.google.protobuf.ByteString bs =
  5032 + (com.google.protobuf.ByteString) ref;
  5033 + java.lang.String s = bs.toStringUtf8();
  5034 + zdzCode_ = s;
  5035 + return s;
  5036 + } else {
  5037 + return (java.lang.String) ref;
  5038 + }
  5039 + }
  5040 + /**
  5041 + * <pre>
  5042 + * 终点站代码(bsth_c_station,bsth_c_car_park 里的编码)
  5043 + * </pre>
  5044 + *
  5045 + * <code>string zdzCode = 10;</code>
  5046 + */
  5047 + public com.google.protobuf.ByteString
  5048 + getZdzCodeBytes() {
  5049 + java.lang.Object ref = zdzCode_;
  5050 + if (ref instanceof String) {
  5051 + com.google.protobuf.ByteString b =
  5052 + com.google.protobuf.ByteString.copyFromUtf8(
  5053 + (java.lang.String) ref);
  5054 + zdzCode_ = b;
  5055 + return b;
  5056 + } else {
  5057 + return (com.google.protobuf.ByteString) ref;
  5058 + }
  5059 + }
  5060 + /**
  5061 + * <pre>
  5062 + * 终点站代码(bsth_c_station,bsth_c_car_park 里的编码)
  5063 + * </pre>
  5064 + *
  5065 + * <code>string zdzCode = 10;</code>
  5066 + */
  5067 + public Builder setZdzCode(
  5068 + java.lang.String value) {
  5069 + if (value == null) {
  5070 + throw new NullPointerException();
  5071 + }
  5072 +
  5073 + zdzCode_ = value;
  5074 + onChanged();
  5075 + return this;
  5076 + }
  5077 + /**
  5078 + * <pre>
  5079 + * 终点站代码(bsth_c_station,bsth_c_car_park 里的编码)
  5080 + * </pre>
  5081 + *
  5082 + * <code>string zdzCode = 10;</code>
  5083 + */
  5084 + public Builder clearZdzCode() {
  5085 +
  5086 + zdzCode_ = getDefaultInstance().getZdzCode();
  5087 + onChanged();
  5088 + return this;
  5089 + }
  5090 + /**
  5091 + * <pre>
  5092 + * 终点站代码(bsth_c_station,bsth_c_car_park 里的编码)
  5093 + * </pre>
  5094 + *
  5095 + * <code>string zdzCode = 10;</code>
  5096 + */
  5097 + public Builder setZdzCodeBytes(
  5098 + com.google.protobuf.ByteString value) {
  5099 + if (value == null) {
  5100 + throw new NullPointerException();
  5101 + }
  5102 + checkByteStringIsUtf8(value);
  5103 +
  5104 + zdzCode_ = value;
  5105 + onChanged();
  5106 + return this;
  5107 + }
  5108 +
  5109 + private java.lang.Object zdzName_ = "";
  5110 + /**
  5111 + * <pre>
  5112 + * 终点站名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  5113 + * </pre>
  5114 + *
  5115 + * <code>string zdzName = 11;</code>
  5116 + */
  5117 + public java.lang.String getZdzName() {
  5118 + java.lang.Object ref = zdzName_;
  5119 + if (!(ref instanceof java.lang.String)) {
  5120 + com.google.protobuf.ByteString bs =
  5121 + (com.google.protobuf.ByteString) ref;
  5122 + java.lang.String s = bs.toStringUtf8();
  5123 + zdzName_ = s;
  5124 + return s;
  5125 + } else {
  5126 + return (java.lang.String) ref;
  5127 + }
  5128 + }
  5129 + /**
  5130 + * <pre>
  5131 + * 终点站名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  5132 + * </pre>
  5133 + *
  5134 + * <code>string zdzName = 11;</code>
  5135 + */
  5136 + public com.google.protobuf.ByteString
  5137 + getZdzNameBytes() {
  5138 + java.lang.Object ref = zdzName_;
  5139 + if (ref instanceof String) {
  5140 + com.google.protobuf.ByteString b =
  5141 + com.google.protobuf.ByteString.copyFromUtf8(
  5142 + (java.lang.String) ref);
  5143 + zdzName_ = b;
  5144 + return b;
  5145 + } else {
  5146 + return (com.google.protobuf.ByteString) ref;
  5147 + }
  5148 + }
  5149 + /**
  5150 + * <pre>
  5151 + * 终点站名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  5152 + * </pre>
  5153 + *
  5154 + * <code>string zdzName = 11;</code>
  5155 + */
  5156 + public Builder setZdzName(
  5157 + java.lang.String value) {
  5158 + if (value == null) {
  5159 + throw new NullPointerException();
  5160 + }
  5161 +
  5162 + zdzName_ = value;
  5163 + onChanged();
  5164 + return this;
  5165 + }
  5166 + /**
  5167 + * <pre>
  5168 + * 终点站名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  5169 + * </pre>
  5170 + *
  5171 + * <code>string zdzName = 11;</code>
  5172 + */
  5173 + public Builder clearZdzName() {
  5174 +
  5175 + zdzName_ = getDefaultInstance().getZdzName();
  5176 + onChanged();
  5177 + return this;
  5178 + }
  5179 + /**
  5180 + * <pre>
  5181 + * 终点站名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  5182 + * </pre>
  5183 + *
  5184 + * <code>string zdzName = 11;</code>
  5185 + */
  5186 + public Builder setZdzNameBytes(
  5187 + com.google.protobuf.ByteString value) {
  5188 + if (value == null) {
  5189 + throw new NullPointerException();
  5190 + }
  5191 + checkByteStringIsUtf8(value);
  5192 +
  5193 + zdzName_ = value;
  5194 + onChanged();
  5195 + return this;
  5196 + }
  5197 +
  5198 + private java.lang.Object fcsj_ = "";
  5199 + /**
  5200 + * <pre>
  5201 + * 发车时间(格式 HH:mm)
  5202 + * </pre>
  5203 + *
  5204 + * <code>string fcsj = 12;</code>
  5205 + */
  5206 + public java.lang.String getFcsj() {
  5207 + java.lang.Object ref = fcsj_;
  5208 + if (!(ref instanceof java.lang.String)) {
  5209 + com.google.protobuf.ByteString bs =
  5210 + (com.google.protobuf.ByteString) ref;
  5211 + java.lang.String s = bs.toStringUtf8();
  5212 + fcsj_ = s;
  5213 + return s;
  5214 + } else {
  5215 + return (java.lang.String) ref;
  5216 + }
  5217 + }
  5218 + /**
  5219 + * <pre>
  5220 + * 发车时间(格式 HH:mm)
  5221 + * </pre>
  5222 + *
  5223 + * <code>string fcsj = 12;</code>
  5224 + */
  5225 + public com.google.protobuf.ByteString
  5226 + getFcsjBytes() {
  5227 + java.lang.Object ref = fcsj_;
  5228 + if (ref instanceof String) {
  5229 + com.google.protobuf.ByteString b =
  5230 + com.google.protobuf.ByteString.copyFromUtf8(
  5231 + (java.lang.String) ref);
  5232 + fcsj_ = b;
  5233 + return b;
  5234 + } else {
  5235 + return (com.google.protobuf.ByteString) ref;
  5236 + }
  5237 + }
  5238 + /**
  5239 + * <pre>
  5240 + * 发车时间(格式 HH:mm)
  5241 + * </pre>
  5242 + *
  5243 + * <code>string fcsj = 12;</code>
  5244 + */
  5245 + public Builder setFcsj(
  5246 + java.lang.String value) {
  5247 + if (value == null) {
  5248 + throw new NullPointerException();
  5249 + }
  5250 +
  5251 + fcsj_ = value;
  5252 + onChanged();
  5253 + return this;
  5254 + }
  5255 + /**
  5256 + * <pre>
  5257 + * 发车时间(格式 HH:mm)
  5258 + * </pre>
  5259 + *
  5260 + * <code>string fcsj = 12;</code>
  5261 + */
  5262 + public Builder clearFcsj() {
  5263 +
  5264 + fcsj_ = getDefaultInstance().getFcsj();
  5265 + onChanged();
  5266 + return this;
  5267 + }
  5268 + /**
  5269 + * <pre>
  5270 + * 发车时间(格式 HH:mm)
  5271 + * </pre>
  5272 + *
  5273 + * <code>string fcsj = 12;</code>
  5274 + */
  5275 + public Builder setFcsjBytes(
  5276 + com.google.protobuf.ByteString value) {
  5277 + if (value == null) {
  5278 + throw new NullPointerException();
  5279 + }
  5280 + checkByteStringIsUtf8(value);
  5281 +
  5282 + fcsj_ = value;
  5283 + onChanged();
  5284 + return this;
  5285 + }
  5286 +
  5287 + private int bcs_ ;
  5288 + /**
  5289 + * <pre>
  5290 + * 对应班次数
  5291 + * </pre>
  5292 + *
  5293 + * <code>uint32 bcs = 13;</code>
  5294 + */
  5295 + public int getBcs() {
  5296 + return bcs_;
  5297 + }
  5298 + /**
  5299 + * <pre>
  5300 + * 对应班次数
  5301 + * </pre>
  5302 + *
  5303 + * <code>uint32 bcs = 13;</code>
  5304 + */
  5305 + public Builder setBcs(int value) {
  5306 +
  5307 + bcs_ = value;
  5308 + onChanged();
  5309 + return this;
  5310 + }
  5311 + /**
  5312 + * <pre>
  5313 + * 对应班次数
  5314 + * </pre>
  5315 + *
  5316 + * <code>uint32 bcs = 13;</code>
  5317 + */
  5318 + public Builder clearBcs() {
  5319 +
  5320 + bcs_ = 0;
  5321 + onChanged();
  5322 + return this;
  5323 + }
  5324 +
  5325 + private double jhlc_ ;
  5326 + /**
  5327 + * <pre>
  5328 + * 计划里程
  5329 + * </pre>
  5330 + *
  5331 + * <code>double jhlc = 14;</code>
  5332 + */
  5333 + public double getJhlc() {
  5334 + return jhlc_;
  5335 + }
  5336 + /**
  5337 + * <pre>
  5338 + * 计划里程
  5339 + * </pre>
  5340 + *
  5341 + * <code>double jhlc = 14;</code>
  5342 + */
  5343 + public Builder setJhlc(double value) {
  5344 +
  5345 + jhlc_ = value;
  5346 + onChanged();
  5347 + return this;
  5348 + }
  5349 + /**
  5350 + * <pre>
  5351 + * 计划里程
  5352 + * </pre>
  5353 + *
  5354 + * <code>double jhlc = 14;</code>
  5355 + */
  5356 + public Builder clearJhlc() {
  5357 +
  5358 + jhlc_ = 0D;
  5359 + onChanged();
  5360 + return this;
  5361 + }
  5362 +
  5363 + private int bcsj_ ;
  5364 + /**
  5365 + * <pre>
  5366 + * 班次历时
  5367 + * </pre>
  5368 + *
  5369 + * <code>uint32 bcsj = 15;</code>
  5370 + */
  5371 + public int getBcsj() {
  5372 + return bcsj_;
  5373 + }
  5374 + /**
  5375 + * <pre>
  5376 + * 班次历时
  5377 + * </pre>
  5378 + *
  5379 + * <code>uint32 bcsj = 15;</code>
  5380 + */
  5381 + public Builder setBcsj(int value) {
  5382 +
  5383 + bcsj_ = value;
  5384 + onChanged();
  5385 + return this;
  5386 + }
  5387 + /**
  5388 + * <pre>
  5389 + * 班次历时
  5390 + * </pre>
  5391 + *
  5392 + * <code>uint32 bcsj = 15;</code>
  5393 + */
  5394 + public Builder clearBcsj() {
  5395 +
  5396 + bcsj_ = 0;
  5397 + onChanged();
  5398 + return this;
  5399 + }
  5400 +
  5401 + private java.lang.Object bcType_ = "";
  5402 + /**
  5403 + * <pre>
  5404 + * 班次类型 字典type=ScheduleType
  5405 + * </pre>
  5406 + *
  5407 + * <code>string bcType = 16;</code>
  5408 + */
  5409 + public java.lang.String getBcType() {
  5410 + java.lang.Object ref = bcType_;
  5411 + if (!(ref instanceof java.lang.String)) {
  5412 + com.google.protobuf.ByteString bs =
  5413 + (com.google.protobuf.ByteString) ref;
  5414 + java.lang.String s = bs.toStringUtf8();
  5415 + bcType_ = s;
  5416 + return s;
  5417 + } else {
  5418 + return (java.lang.String) ref;
  5419 + }
  5420 + }
  5421 + /**
  5422 + * <pre>
  5423 + * 班次类型 字典type=ScheduleType
  5424 + * </pre>
  5425 + *
  5426 + * <code>string bcType = 16;</code>
  5427 + */
  5428 + public com.google.protobuf.ByteString
  5429 + getBcTypeBytes() {
  5430 + java.lang.Object ref = bcType_;
  5431 + if (ref instanceof String) {
  5432 + com.google.protobuf.ByteString b =
  5433 + com.google.protobuf.ByteString.copyFromUtf8(
  5434 + (java.lang.String) ref);
  5435 + bcType_ = b;
  5436 + return b;
  5437 + } else {
  5438 + return (com.google.protobuf.ByteString) ref;
  5439 + }
  5440 + }
  5441 + /**
  5442 + * <pre>
  5443 + * 班次类型 字典type=ScheduleType
  5444 + * </pre>
  5445 + *
  5446 + * <code>string bcType = 16;</code>
  5447 + */
  5448 + public Builder setBcType(
  5449 + java.lang.String value) {
  5450 + if (value == null) {
  5451 + throw new NullPointerException();
  5452 + }
  5453 +
  5454 + bcType_ = value;
  5455 + onChanged();
  5456 + return this;
  5457 + }
  5458 + /**
  5459 + * <pre>
  5460 + * 班次类型 字典type=ScheduleType
  5461 + * </pre>
  5462 + *
  5463 + * <code>string bcType = 16;</code>
  5464 + */
  5465 + public Builder clearBcType() {
  5466 +
  5467 + bcType_ = getDefaultInstance().getBcType();
  5468 + onChanged();
  5469 + return this;
  5470 + }
  5471 + /**
  5472 + * <pre>
  5473 + * 班次类型 字典type=ScheduleType
  5474 + * </pre>
  5475 + *
  5476 + * <code>string bcType = 16;</code>
  5477 + */
  5478 + public Builder setBcTypeBytes(
  5479 + com.google.protobuf.ByteString value) {
  5480 + if (value == null) {
  5481 + throw new NullPointerException();
  5482 + }
  5483 + checkByteStringIsUtf8(value);
  5484 +
  5485 + bcType_ = value;
  5486 + onChanged();
  5487 + return this;
  5488 + }
  5489 +
  5490 + private boolean isFB_ ;
  5491 + /**
  5492 + * <pre>
  5493 + * 是否分班(表示这个班次是否是晚班班次,就是换另外一个驾驶员开)
  5494 + * </pre>
  5495 + *
  5496 + * <code>bool isFB = 17;</code>
  5497 + */
  5498 + public boolean getIsFB() {
  5499 + return isFB_;
  5500 + }
  5501 + /**
  5502 + * <pre>
  5503 + * 是否分班(表示这个班次是否是晚班班次,就是换另外一个驾驶员开)
  5504 + * </pre>
  5505 + *
  5506 + * <code>bool isFB = 17;</code>
  5507 + */
  5508 + public Builder setIsFB(boolean value) {
  5509 +
  5510 + isFB_ = value;
  5511 + onChanged();
  5512 + return this;
  5513 + }
  5514 + /**
  5515 + * <pre>
  5516 + * 是否分班(表示这个班次是否是晚班班次,就是换另外一个驾驶员开)
  5517 + * </pre>
  5518 + *
  5519 + * <code>bool isFB = 17;</code>
  5520 + */
  5521 + public Builder clearIsFB() {
  5522 +
  5523 + isFB_ = false;
  5524 + onChanged();
  5525 + return this;
  5526 + }
  5527 +
  5528 + private boolean isTS_ ;
  5529 + /**
  5530 + * <pre>
  5531 + * 是否停驶(表示此班次执行完成,停在终点站,不进场)
  5532 + * </pre>
  5533 + *
  5534 + * <code>bool isTS = 18;</code>
  5535 + */
  5536 + public boolean getIsTS() {
  5537 + return isTS_;
  5538 + }
  5539 + /**
  5540 + * <pre>
  5541 + * 是否停驶(表示此班次执行完成,停在终点站,不进场)
  5542 + * </pre>
  5543 + *
  5544 + * <code>bool isTS = 18;</code>
  5545 + */
  5546 + public Builder setIsTS(boolean value) {
  5547 +
  5548 + isTS_ = value;
  5549 + onChanged();
  5550 + return this;
  5551 + }
  5552 + /**
  5553 + * <pre>
  5554 + * 是否停驶(表示此班次执行完成,停在终点站,不进场)
  5555 + * </pre>
  5556 + *
  5557 + * <code>bool isTS = 18;</code>
  5558 + */
  5559 + public Builder clearIsTS() {
  5560 +
  5561 + isTS_ = false;
  5562 + onChanged();
  5563 + return this;
  5564 + }
  5565 +
  5566 + private java.lang.Object remark_ = "";
  5567 + /**
  5568 + * <pre>
  5569 + * 备注
  5570 + * </pre>
  5571 + *
  5572 + * <code>string remark = 19;</code>
  5573 + */
  5574 + public java.lang.String getRemark() {
  5575 + java.lang.Object ref = remark_;
  5576 + if (!(ref instanceof java.lang.String)) {
  5577 + com.google.protobuf.ByteString bs =
  5578 + (com.google.protobuf.ByteString) ref;
  5579 + java.lang.String s = bs.toStringUtf8();
  5580 + remark_ = s;
  5581 + return s;
  5582 + } else {
  5583 + return (java.lang.String) ref;
  5584 + }
  5585 + }
  5586 + /**
  5587 + * <pre>
  5588 + * 备注
  5589 + * </pre>
  5590 + *
  5591 + * <code>string remark = 19;</code>
  5592 + */
  5593 + public com.google.protobuf.ByteString
  5594 + getRemarkBytes() {
  5595 + java.lang.Object ref = remark_;
  5596 + if (ref instanceof String) {
  5597 + com.google.protobuf.ByteString b =
  5598 + com.google.protobuf.ByteString.copyFromUtf8(
  5599 + (java.lang.String) ref);
  5600 + remark_ = b;
  5601 + return b;
  5602 + } else {
  5603 + return (com.google.protobuf.ByteString) ref;
  5604 + }
  5605 + }
  5606 + /**
  5607 + * <pre>
  5608 + * 备注
  5609 + * </pre>
  5610 + *
  5611 + * <code>string remark = 19;</code>
  5612 + */
  5613 + public Builder setRemark(
  5614 + java.lang.String value) {
  5615 + if (value == null) {
  5616 + throw new NullPointerException();
  5617 + }
  5618 +
  5619 + remark_ = value;
  5620 + onChanged();
  5621 + return this;
  5622 + }
  5623 + /**
  5624 + * <pre>
  5625 + * 备注
  5626 + * </pre>
  5627 + *
  5628 + * <code>string remark = 19;</code>
  5629 + */
  5630 + public Builder clearRemark() {
  5631 +
  5632 + remark_ = getDefaultInstance().getRemark();
  5633 + onChanged();
  5634 + return this;
  5635 + }
  5636 + /**
  5637 + * <pre>
  5638 + * 备注
  5639 + * </pre>
  5640 + *
  5641 + * <code>string remark = 19;</code>
  5642 + */
  5643 + public Builder setRemarkBytes(
  5644 + com.google.protobuf.ByteString value) {
  5645 + if (value == null) {
  5646 + throw new NullPointerException();
  5647 + }
  5648 + checkByteStringIsUtf8(value);
  5649 +
  5650 + remark_ = value;
  5651 + onChanged();
  5652 + return this;
  5653 + }
  5654 + public final Builder setUnknownFields(
  5655 + final com.google.protobuf.UnknownFieldSet unknownFields) {
  5656 + return this;
  5657 + }
  5658 +
  5659 + public final Builder mergeUnknownFields(
  5660 + final com.google.protobuf.UnknownFieldSet unknownFields) {
  5661 + return this;
  5662 + }
  5663 +
  5664 +
  5665 + // @@protoc_insertion_point(builder_scope:timetable.TTInfoDetail)
  5666 + }
  5667 +
  5668 + // @@protoc_insertion_point(class_scope:timetable.TTInfoDetail)
  5669 + private static final com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail DEFAULT_INSTANCE;
  5670 + static {
  5671 + DEFAULT_INSTANCE = new com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail();
  5672 + }
  5673 +
  5674 + public static com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail getDefaultInstance() {
  5675 + return DEFAULT_INSTANCE;
  5676 + }
  5677 +
  5678 + private static final com.google.protobuf.Parser<TTInfoDetail>
  5679 + PARSER = new com.google.protobuf.AbstractParser<TTInfoDetail>() {
  5680 + public TTInfoDetail parsePartialFrom(
  5681 + com.google.protobuf.CodedInputStream input,
  5682 + com.google.protobuf.ExtensionRegistryLite extensionRegistry)
  5683 + throws com.google.protobuf.InvalidProtocolBufferException {
  5684 + return new TTInfoDetail(input, extensionRegistry);
  5685 + }
  5686 + };
  5687 +
  5688 + public static com.google.protobuf.Parser<TTInfoDetail> parser() {
  5689 + return PARSER;
  5690 + }
  5691 +
  5692 + @java.lang.Override
  5693 + public com.google.protobuf.Parser<TTInfoDetail> getParserForType() {
  5694 + return PARSER;
  5695 + }
  5696 +
  5697 + public com.bsth.service.schedule.utils.TimeTableProto.TTInfoDetail getDefaultInstanceForType() {
  5698 + return DEFAULT_INSTANCE;
  5699 + }
  5700 +
  5701 + }
  5702 +
  5703 + private static final com.google.protobuf.Descriptors.Descriptor
  5704 + internal_static_timetable_TTInfo_descriptor;
  5705 + private static final
  5706 + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
  5707 + internal_static_timetable_TTInfo_fieldAccessorTable;
  5708 + private static final com.google.protobuf.Descriptors.Descriptor
  5709 + internal_static_timetable_TTInfoDetail_descriptor;
  5710 + private static final
  5711 + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
  5712 + internal_static_timetable_TTInfoDetail_fieldAccessorTable;
  5713 +
  5714 + public static com.google.protobuf.Descriptors.FileDescriptor
  5715 + getDescriptor() {
  5716 + return descriptor;
  5717 + }
  5718 + private static com.google.protobuf.Descriptors.FileDescriptor
  5719 + descriptor;
  5720 + static {
  5721 + java.lang.String[] descriptorData = {
  5722 + "\n\017timetable.proto\022\ttimetable\"\332\002\n\006TTInfo\022" +
  5723 + "\n\n\002id\030\001 \001(\004\022\014\n\004name\030\002 \001(\t\022\n\n\002xl\030\003 \001(\r\022\016\n" +
  5724 + "\006xlName\030\004 \001(\t\022\r\n\005xlDir\030\005 \001(\t\022\014\n\004qyrq\030\006 \001" +
  5725 + "(\004\022\033\n\023isEnableDisTemplate\030\007 \001(\010\022\020\n\010isCan" +
  5726 + "cel\030\010 \001(\010\022\020\n\010ruleDays\030\t \001(\t\022\023\n\013specialDa" +
  5727 + "ys\030\n \001(\t\022\022\n\ncreateUser\030\013 \001(\r\022\026\n\016createUs" +
  5728 + "erName\030\014 \001(\t\022\022\n\nupdateUser\030\r \001(\r\022\026\n\016upda" +
  5729 + "teUserName\030\016 \001(\t\022\022\n\ncreateDate\030\017 \001(\004\022\022\n\n" +
  5730 + "updateDate\030\020 \001(\004\022\'\n\006bcInfo\030\021 \003(\0132\027.timet" +
  5731 + "able.TTInfoDetail\"\246\002\n\014TTInfoDetail\022\n\n\002id",
  5732 + "\030\001 \001(\004\022\n\n\002xl\030\002 \001(\r\022\016\n\006xlName\030\003 \001(\t\022\n\n\002lp" +
  5733 + "\030\004 \001(\004\022\016\n\006lpName\030\005 \001(\t\022\014\n\004fcno\030\006 \001(\r\022\r\n\005" +
  5734 + "xlDir\030\007 \001(\t\022\017\n\007qdzCode\030\010 \001(\t\022\017\n\007qdzName\030" +
  5735 + "\t \001(\t\022\017\n\007zdzCode\030\n \001(\t\022\017\n\007zdzName\030\013 \001(\t\022" +
  5736 + "\014\n\004fcsj\030\014 \001(\t\022\013\n\003bcs\030\r \001(\r\022\014\n\004jhlc\030\016 \001(\001" +
  5737 + "\022\014\n\004bcsj\030\017 \001(\r\022\016\n\006bcType\030\020 \001(\t\022\014\n\004isFB\030\021" +
  5738 + " \001(\010\022\014\n\004isTS\030\022 \001(\010\022\016\n\006remark\030\023 \001(\tB1\n\037co" +
  5739 + "m.bsth.service.schedule.utilsB\016TimeTable" +
  5740 + "Protob\006proto3"
  5741 + };
  5742 + com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
  5743 + new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
  5744 + public com.google.protobuf.ExtensionRegistry assignDescriptors(
  5745 + com.google.protobuf.Descriptors.FileDescriptor root) {
  5746 + descriptor = root;
  5747 + return null;
  5748 + }
  5749 + };
  5750 + com.google.protobuf.Descriptors.FileDescriptor
  5751 + .internalBuildGeneratedFileFrom(descriptorData,
  5752 + new com.google.protobuf.Descriptors.FileDescriptor[] {
  5753 + }, assigner);
  5754 + internal_static_timetable_TTInfo_descriptor =
  5755 + getDescriptor().getMessageTypes().get(0);
  5756 + internal_static_timetable_TTInfo_fieldAccessorTable = new
  5757 + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
  5758 + internal_static_timetable_TTInfo_descriptor,
  5759 + new java.lang.String[] { "Id", "Name", "Xl", "XlName", "XlDir", "Qyrq", "IsEnableDisTemplate", "IsCancel", "RuleDays", "SpecialDays", "CreateUser", "CreateUserName", "UpdateUser", "UpdateUserName", "CreateDate", "UpdateDate", "BcInfo", });
  5760 + internal_static_timetable_TTInfoDetail_descriptor =
  5761 + getDescriptor().getMessageTypes().get(1);
  5762 + internal_static_timetable_TTInfoDetail_fieldAccessorTable = new
  5763 + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
  5764 + internal_static_timetable_TTInfoDetail_descriptor,
  5765 + new java.lang.String[] { "Id", "Xl", "XlName", "Lp", "LpName", "Fcno", "XlDir", "QdzCode", "QdzName", "ZdzCode", "ZdzName", "Fcsj", "Bcs", "Jhlc", "Bcsj", "BcType", "IsFB", "IsTS", "Remark", });
  5766 + }
  5767 +
  5768 + // @@protoc_insertion_point(outer_class_scope)
  5769 +}
0 \ No newline at end of file 5770 \ No newline at end of file
src/main/resources/logback.xml
@@ -145,6 +145,10 @@ @@ -145,6 +145,10 @@
145 </pattern> 145 </pattern>
146 </layout> 146 </layout>
147 </appender> 147 </appender>
  148 + <logger name="com.bsth.service.schedule.impl.TTInfoServiceImpl"
  149 + level="INFO" additivity="false">
  150 + <appender-ref ref="TIMETABLE" />
  151 + </logger>
148 <logger name="com.bsth.service.schedule.impl.TTInfoDetailServiceImpl" 152 <logger name="com.bsth.service.schedule.impl.TTInfoDetailServiceImpl"
149 level="INFO" additivity="false"> 153 level="INFO" additivity="false">
150 <appender-ref ref="TIMETABLE" /> 154 <appender-ref ref="TIMETABLE" />
src/main/resources/ms-jdbc.properties
@@ -4,6 +4,6 @@ @@ -4,6 +4,6 @@
4 #ms.mysql.password= 123456 4 #ms.mysql.password= 123456
5 5
6 ms.mysql.driver= com.mysql.jdbc.Driver 6 ms.mysql.driver= com.mysql.jdbc.Driver
7 -ms.mysql.url= jdbc:mysql://192.168.168.171:3306/ms?useUnicode=true&characterEncoding=utf-8  
8 -ms.mysql.username= root  
9 -ms.mysql.password= root2jsp  
10 \ No newline at end of file 7 \ No newline at end of file
  8 +ms.mysql.url= jdbc:mysql://localhost:3306/ms?useUnicode=true&characterEncoding=utf-8&useSSL=false
  9 +ms.mysql.username=root
  10 +ms.mysql.password=zhoubing
11 \ No newline at end of file 11 \ No newline at end of file
src/main/resources/static/pages/excep/speedingListmh.html
@@ -128,9 +128,9 @@ @@ -128,9 +128,9 @@
128 {{obj.vehicle}} 128 {{obj.vehicle}}
129 </td> 129 </td>
130 <td> 130 <td>
131 - {{if obj.upDown==0}} 131 + {{if obj.up_down==0}}
132 上行 132 上行
133 - {{else if obj.upDown==1}} 133 + {{else if obj.up_down==1}}
134 下行 134 下行
135 {{else}} 135 {{else}}
136 无效 136 无效
@@ -249,7 +249,7 @@ $(function(){ @@ -249,7 +249,7 @@ $(function(){
249 params['order'] = 'lastLoginDate'; 249 params['order'] = 'lastLoginDate';
250 params['page'] = page; 250 params['page'] = page;
251 var i = layer.load(2); 251 var i = layer.load(2);
252 - $get('/speeding/pagequery' ,params, function(data){ 252 + $get('/gps/pagequery' ,params, function(data){
253 var bodyHtm = template('speeding_list_temp', {list: data.dataList}); 253 var bodyHtm = template('speeding_list_temp', {list: data.dataList});
254 $('#datatable_speeding tbody').html(bodyHtm) 254 $('#datatable_speeding tbody').html(bodyHtm)
255 .find('.icheck').iCheck(icheckOptions) 255 .find('.icheck').iCheck(icheckOptions)
src/main/resources/static/pages/excep/speedingMap.html
@@ -19,7 +19,6 @@ @@ -19,7 +19,6 @@
19 overflow: hidden; 19 overflow: hidden;
20 } 20 }
21 </style> 21 </style>
22 -<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"></script>  
23 <script type="text/javascript" src="/pages/excep/js/speeding-map.js"></script> 22 <script type="text/javascript" src="/pages/excep/js/speeding-map.js"></script>
24 <script type="text/javascript"> 23 <script type="text/javascript">
25 $(function(){ 24 $(function(){
@@ -31,55 +30,71 @@ $(function(){ @@ -31,55 +30,71 @@ $(function(){
31 var lat = dataArr[4];//起点纬度 30 var lat = dataArr[4];//起点纬度
32 var endLon = dataArr[5];//终点经度 31 var endLon = dataArr[5];//终点经度
33 var endLat = dataArr[6];//终点纬度 32 var endLat = dataArr[6];//终点纬度
34 - var Points = []; 33 + var pointObj;//坐标和速度组成的对象
  34 + var Points = [];//坐标和速度对象的集合
  35 + var coordinateArr = [];//坐标点数组
35 $.ajax({ 36 $.ajax({
36 type: "GET", 37 type: "GET",
37 async:false, 38 async:false,
38 url: '/gps/findPosition', 39 url: '/gps/findPosition',
39 data: {vehicle:vehicle,startdate:startdate,enddate:enddate}, 40 data: {vehicle:vehicle,startdate:startdate,enddate:enddate},
40 success: function(data){ 41 success: function(data){
41 - console.log("123"+data);  
42 $.each(data,function(i,item){ 42 $.each(data,function(i,item){
43 - console.log(item);  
44 if(item.lon>1 && item.lat>1){ 43 if(item.lon>1 && item.lat>1){
45 - var point = new BMap.Point(item.lon,item.lat);  
46 - Points.push(point); 44 + pointObj = new Object();
  45 + pointObj.coordinate = new BMap.Point(item.lon,item.lat);
  46 + pointObj.speed = item.speed;
  47 + Points.push(pointObj);
47 } 48 }
48 }); 49 });
49 } 50 }
50 - }); 51 + });
51 setTimeout(function(){ 52 setTimeout(function(){
52 var map = SpeedingMap.init();//创建地图 53 var map = SpeedingMap.init();//创建地图
53 var myP1 = new BMap.Point(lon,lat); //起点 54 var myP1 = new BMap.Point(lon,lat); //起点
54 var myP2 = new BMap.Point(endLon,endLat); //终点 55 var myP2 = new BMap.Point(endLon,endLat); //终点
55 - map.centerAndZoom(myP1,18);//地图中心点坐标  
56 - console.log(Points);  
57 - var polyline = new BMap.Polyline(Points, {strokeColor:"blue", strokeWeight:5, strokeOpacity:0.5}); //创建折线 56 + var centerLon = (parseFloat(lon)+parseFloat(endLon))/2;
  57 + var centerLat = (parseFloat(lat)+parseFloat(endLat))/2;
  58 + map.centerAndZoom(new BMap.Point(centerLon,centerLat),18);//地图中心点坐标
  59 +
  60 + for(i in Points){
  61 + coordinateArr.push(Points[i].coordinate);
  62 + }
  63 + var polyline = new BMap.Polyline(coordinateArr, {strokeColor:"blue", strokeWeight:5, strokeOpacity:0.5});//创建折线
58 var myIcon = new BMap.Icon("/pages/excep/img/bus.png", new BMap.Size(32, 70), {//小车图片 64 var myIcon = new BMap.Icon("/pages/excep/img/bus.png", new BMap.Size(32, 70), {//小车图片
59 imageOffset: new BMap.Size(5,20) //图片的偏移量。为了是图片底部中心对准坐标点。 65 imageOffset: new BMap.Size(5,20) //图片的偏移量。为了是图片底部中心对准坐标点。
60 }); 66 });
  67 +
61 $(document).on('click', '#run', function() { 68 $(document).on('click', '#run', function() {
62 map.clearOverlays();//清空上一次的轨迹 69 map.clearOverlays();//清空上一次的轨迹
63 map.addOverlay(polyline);//增加折线 70 map.addOverlay(polyline);//增加折线
64 - var paths = Points.length;//获得有几个点  
65 - var carMk = new BMap.Marker(Points[0],{icon:myIcon}); 71 + var paths = coordinateArr.length;//获得有几个点
  72 + var carMk = new BMap.Marker(coordinateArr[0],{icon:myIcon});
66 map.addOverlay(carMk); 73 map.addOverlay(carMk);
  74 + var sContent ="车辆即时速度:"+Points[0].speed;
  75 + var infoWindow = new BMap.InfoWindow(sContent);// 创建信息窗口对象
  76 + map.openInfoWindow(infoWindow,coordinateArr[0]); //开启信息窗口
67 i=0; 77 i=0;
68 - function resetMkPoint(i){  
69 - carMk.setPosition(Points[i]);  
70 - if(i < paths){  
71 - setTimeout(function(){  
72 - i++;  
73 - resetMkPoint(i);  
74 - },100);  
75 - } 78 +
  79 + setTimeout(function(){
  80 + resetMkPoint(0);
  81 + },500);
  82 +
  83 + function resetMkPoint(i){
  84 + carMk.setPosition(coordinateArr[i]);
  85 + sContent ="车辆即时速度是:"+Points[i].speed;
  86 + infoWindow = new BMap.InfoWindow(sContent);// 创建信息窗口对象
  87 + map.openInfoWindow(infoWindow,coordinateArr[i]); //开启信息窗口
  88 + if(i < paths-1){
  89 + setTimeout(function(){
  90 + i++;
  91 + resetMkPoint(i);
  92 + },500);
76 } 93 }
77 - setTimeout(function(){  
78 - resetMkPoint(0);  
79 - },100)  
80 - }); 94 + };
81 }); 95 });
82 -}, 100); 96 +}, 500);
  97 + });
83 </script> 98 </script>
84 99
85 100
src/main/resources/static/pages/forms/mould/countByBus1.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/countByBus2.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/countByLine.xls
No preview for this file type
src/main/resources/static/pages/forms/statement/correctStatis.html
@@ -48,17 +48,17 @@ @@ -48,17 +48,17 @@
48 <span class="item-label" style="width: 80px;">结束时间: </span> 48 <span class="item-label" style="width: 80px;">结束时间: </span>
49 <input class="form-control" type="text" id="endDate" style="width: 140px;"/> 49 <input class="form-control" type="text" id="endDate" style="width: 140px;"/>
50 </div> 50 </div>
51 - <div style="display: inline-block; margin-left: 10px;"> 51 + <div style="display: inline-block; margin-left: 10px;display: none;">
52 <select class="form-control" name="sfqr" id="sfqr" style="width: 75px;"> 52 <select class="form-control" name="sfqr" id="sfqr" style="width: 75px;">
53 <option value="0">全日</option> 53 <option value="0">全日</option>
54 <option value="1">时段</option> 54 <option value="1">时段</option>
55 </select> 55 </select>
56 </div> 56 </div>
57 - <div style="display: inline-block;margin-left: 12px;"> 57 + <div style="display: inline-block;margin-left: 12px;display: none;" >
58 <span class="item-label" style="width: 80px;"> </span> 58 <span class="item-label" style="width: 80px;"> </span>
59 <input class="form-control" type="text" id="times1" style="width: 60px;"/> 59 <input class="form-control" type="text" id="times1" style="width: 60px;"/>
60 </div> 60 </div>
61 - <div style="display: inline-block;"> 61 + <div style="display: inline-block;display: none;">
62 <span class="item-label" style="width: 80px;"> - </span> 62 <span class="item-label" style="width: 80px;"> - </span>
63 <input class="form-control" type="text" id="times2" style="width: 60px;"/> 63 <input class="form-control" type="text" id="times2" style="width: 60px;"/>
64 </div> 64 </div>
@@ -427,7 +427,7 @@ @@ -427,7 +427,7 @@
427 {{/each}} 427 {{/each}}
428 {{if list.length == 0}} 428 {{if list.length == 0}}
429 <tr> 429 <tr>
430 - <td colspan="14"><h6 class="muted">没有找到相关数据</h6></td> 430 + <td colspan="15"><h6 class="muted">没有找到相关数据</h6></td>
431 </tr> 431 </tr>
432 {{/if}} 432 {{/if}}
433 </tbody> 433 </tbody>
src/main/resources/static/pages/mforms/changetochanges/changetochange.html
@@ -100,7 +100,7 @@ @@ -100,7 +100,7 @@
100 <td rowspan="3" style="padding-top: 50px;">分公司</td> 100 <td rowspan="3" style="padding-top: 50px;">分公司</td>
101 <td rowspan="3" style="padding-top: 50px;">线路</td> 101 <td rowspan="3" style="padding-top: 50px;">线路</td>
102 <td rowspan="3" style="padding-top: 50px;">路牌</td> 102 <td rowspan="3" style="padding-top: 50px;">路牌</td>
103 - <td rowspan="3" style="padding-top: 50px;">发时间</td> 103 + <td rowspan="3" style="padding-top: 50px;">发时间</td>
104 <td rowspan="3" style="padding-top: 50px;">修改时间</td> 104 <td rowspan="3" style="padding-top: 50px;">修改时间</td>
105 <td colspan="2">配车</td> 105 <td colspan="2">配车</td>
106 <td colspan="4">人员</td> 106 <td colspan="4">人员</td>
src/main/resources/static/pages/report/countMileage/countBus/countBusMileage.html
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 28
29 <div class="page-head"> 29 <div class="page-head">
30 <div class="page-title"> 30 <div class="page-title">
31 - <h1>路单数据统计表</h1> 31 + <h1>路单数据统计表(审计)</h1>
32 </div> 32 </div>
33 </div> 33 </div>
34 34
@@ -230,8 +230,9 @@ @@ -230,8 +230,9 @@
230 params['zt']=zt; 230 params['zt']=zt;
231 params['type'] = "query"; 231 params['type'] = "query";
232 var tbodyHtml = template('countBusDaily',{list:""}); 232 var tbodyHtml = template('countBusDaily',{list:""});
  233 + var i = layer.load(2);
233 $get('/report/countBusMileage',params,function(result){ 234 $get('/report/countBusMileage',params,function(result){
234 - console.log(result); 235 + layer.close(i);
235 // 把数据填充到模版中 236 // 把数据填充到模版中
236 var tbodyHtml = template('countBusDaily',{list:result,zt:zt}); 237 var tbodyHtml = template('countBusDaily',{list:result,zt:zt});
237 // 把渲染好的模版html文本追加到表格中 238 // 把渲染好的模版html文本追加到表格中
@@ -256,6 +257,7 @@ @@ -256,6 +257,7 @@
256 params['xlName'] = xlName; 257 params['xlName'] = xlName;
257 params['zt']=zt; 258 params['zt']=zt;
258 params['type'] = "export"; 259 params['type'] = "export";
  260 + params['by']='sj';
259 $get('/report/countBusMileage',params,function(result){ 261 $get('/report/countBusMileage',params,function(result){
260 window.open("/downloadFile/download?fileName=路单数据统计表"); 262 window.open("/downloadFile/download?fileName=路单数据统计表");
261 }); 263 });
@@ -266,7 +268,7 @@ @@ -266,7 +268,7 @@
266 <script type="text/html" id="countBusDaily"> 268 <script type="text/html" id="countBusDaily">
267 <thead> 269 <thead>
268 <tr> 270 <tr>
269 - <th colspan="26">路单数据统计表</th> 271 + <th colspan="31">路单数据统计表</th>
270 </tr> 272 </tr>
271 <tr> 273 <tr>
272 <td>序号</td> 274 <td>序号</td>
@@ -291,6 +293,7 @@ @@ -291,6 +293,7 @@
291 <td><label>纠纷</label><label>进出场</label><label>空驶</label></td> 293 <td><label>纠纷</label><label>进出场</label><label>空驶</label></td>
292 <td>临加营运公里</td> 294 <td>临加营运公里</td>
293 <td>临加进出场空驶</td> 295 <td>临加进出场空驶</td>
  296 + <td>临加空放空驶</td>
294 <td>电耗量</td> 297 <td>电耗量</td>
295 <td>加电量</td> 298 <td>加电量</td>
296 <td>耗油量</td> 299 <td>耗油量</td>
@@ -317,18 +320,19 @@ @@ -317,18 +320,19 @@
317 <td>{{obj.jhnlc}}</td> 320 <td>{{obj.jhnlc}}</td>
318 <td>{{obj.jhwlc}}</td> 321 <td>{{obj.jhwlc}}</td>
319 <td>{{obj.jhnjcclc}}</td> 322 <td>{{obj.jhnjcclc}}</td>
320 - <td>{{obj.jhwjcclc}}</td> 323 + <td>{{obj.jhwjcclc_z}}</td>
321 <td>{{obj.kfks}}</td> 324 <td>{{obj.kfks}}</td>
322 <td>{{obj.zrwjcclc}}</td> 325 <td>{{obj.zrwjcclc}}</td>
323 <td>{{obj.zrwjcclc1}}</td> 326 <td>{{obj.zrwjcclc1}}</td>
324 <td>{{obj.zrwjcclc2}}</td> 327 <td>{{obj.zrwjcclc2}}</td>
325 <td>{{obj.ljyy}}</td> 328 <td>{{obj.ljyy}}</td>
326 <td>{{obj.ljjcc}}</td> 329 <td>{{obj.ljjcc}}</td>
327 - <td>{{obj.yhl}}</td>  
328 - <td>{{obj.jzl}}</td>  
329 - <td>{{obj.hyl}}</td> 330 + <td>{{obj.ljkfks}}</td>
330 <td>{{obj.dhl}}</td> 331 <td>{{obj.dhl}}</td>
331 <td>{{obj.cdl}}</td> 332 <td>{{obj.cdl}}</td>
  333 + <td>{{obj.yhl}}</td>
  334 + <td>{{obj.hyl}}</td>
  335 + <td>{{obj.jzl}}</td>
332 <td>{{obj.jhzlc}}</td> 336 <td>{{obj.jhzlc}}</td>
333 </tr> 337 </tr>
334 {{/each}} 338 {{/each}}
src/main/resources/static/pages/report/countMileage/countLine/countLineMileage.html
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 28
29 <div class="page-head"> 29 <div class="page-head">
30 <div class="page-title"> 30 <div class="page-title">
31 - <h1>线路公里统计表</h1> 31 + <h1>线路公里统计表(审计)</h1>
32 </div> 32 </div>
33 </div> 33 </div>
34 34
@@ -69,7 +69,7 @@ @@ -69,7 +69,7 @@
69 <table class="table table-bordered table-hover table-checkable" id="forms"> 69 <table class="table table-bordered table-hover table-checkable" id="forms">
70 <thead> 70 <thead>
71 <tr> 71 <tr>
72 - <th colspan="28"><label id="datetodate"></label>线路公里统计表</th> 72 + <th colspan="30"><label id="datetodate"></label>线路公里统计表</th>
73 </tr> 73 </tr>
74 <tr> 74 <tr>
75 <td rowspan="2"><span>公司</span></td> 75 <td rowspan="2"><span>公司</span></td>
@@ -80,10 +80,10 @@ @@ -80,10 +80,10 @@
80 <td rowspan="2"><label>计划空</label><label>驶公里</label></td> 80 <td rowspan="2"><label>计划空</label><label>驶公里</label></td>
81 <td rowspan="2"><label>实际</label><label>总公里</label></td> 81 <td rowspan="2"><label>实际</label><label>总公里</label></td>
82 <td colspan="2"><label>实际营</label><label>运公里</label></td> 82 <td colspan="2"><label>实际营</label><label>运公里</label></td>
83 - <td colspan="5"><label>实际空</label><label>驶公里</label></td> 83 + <td colspan="6"><label>实际空</label><label>驶公里</label></td>
84 <td rowspan="2"><label>少驶营</label><label>运里程</label></td> 84 <td rowspan="2"><label>少驶营</label><label>运里程</label></td>
85 <td colspan="11">少驶原因(公里)</td> 85 <td colspan="11">少驶原因(公里)</td>
86 - <td colspan="2">临加公里</td> 86 + <td colspan="3">临加公里</td>
87 </tr> 87 </tr>
88 <tr> 88 <tr>
89 <td><label>计划内</label><label>营运</label><label>里程</label></td> 89 <td><label>计划内</label><label>营运</label><label>里程</label></td>
@@ -93,6 +93,7 @@ @@ -93,6 +93,7 @@
93 <td><label>故障</label><label>进出场</label><label>空驶</label></td> 93 <td><label>故障</label><label>进出场</label><label>空驶</label></td>
94 <td><label>肇事</label><label>进出场</label><label>空驶</label></td> 94 <td><label>肇事</label><label>进出场</label><label>空驶</label></td>
95 <td><label>纠纷</label><label>进出场</label><label>空驶</label></td> 95 <td><label>纠纷</label><label>进出场</label><label>空驶</label></td>
  96 + <td><label>空放 </label><label>空驶</label></td>
96 <td><span>路阻</span></td> 97 <td><span>路阻</span></td>
97 <td><span>吊慢</span></td> 98 <td><span>吊慢</span></td>
98 <td><span>故障</span></td> 99 <td><span>故障</span></td>
@@ -106,6 +107,7 @@ @@ -106,6 +107,7 @@
106 <td><span>其他</span></td> 107 <td><span>其他</span></td>
107 <td><label>临加营</label><label>运公里</label></td> 108 <td><label>临加营</label><label>运公里</label></td>
108 <td><label>临加进出</label><label>场空驶</label></td> 109 <td><label>临加进出</label><label>场空驶</label></td>
  110 + <td><label>临加</label><label>空放</label><label>空驶</label></td>
109 </tr> 111 </tr>
110 112
111 </thead> 113 </thead>
@@ -260,8 +262,10 @@ @@ -260,8 +262,10 @@
260 params['date2'] = date2; 262 params['date2'] = date2;
261 params['xlName'] = xlName; 263 params['xlName'] = xlName;
262 params['type'] = "query"; 264 params['type'] = "query";
  265 + var i = layer.load(2);
263 $get('/report/countLineMileage',params,function(result){ 266 $get('/report/countLineMileage',params,function(result){
264 $("#datetodate").html(date+"至"+date2); 267 $("#datetodate").html(date+"至"+date2);
  268 + layer.close(i);
265 // 把数据填充到模版中 269 // 把数据填充到模版中
266 var tbodyHtml = template('countLineList',{list:result}); 270 var tbodyHtml = template('countLineList',{list:result});
267 // 把渲染好的模版html文本追加到表格中 271 // 把渲染好的模版html文本追加到表格中
@@ -285,6 +289,7 @@ @@ -285,6 +289,7 @@
285 params['date2'] = date2; 289 params['date2'] = date2;
286 params['xlName'] = xlName; 290 params['xlName'] = xlName;
287 params['type'] = "export"; 291 params['type'] = "export";
  292 + params['by']='sj';
288 $get('/report/countLineMileage',params,function(result){ 293 $get('/report/countLineMileage',params,function(result){
289 window.open("/downloadFile/download?fileName=线路公里统计表"); 294 window.open("/downloadFile/download?fileName=线路公里统计表");
290 }); 295 });
@@ -304,10 +309,11 @@ @@ -304,10 +309,11 @@
304 <td>{{obj.jhnlc}}</td> 309 <td>{{obj.jhnlc}}</td>
305 <td>{{obj.jhwlc}}</td> 310 <td>{{obj.jhwlc}}</td>
306 <td>{{obj.jhnjcclc}}</td> 311 <td>{{obj.jhnjcclc}}</td>
307 - <td>{{obj.jhwjcclc}}</td> 312 + <td>{{obj.jhwjcclc_z}}</td>
308 <td>{{obj.zrwjcclc}}</td> 313 <td>{{obj.zrwjcclc}}</td>
309 <td>{{obj.zrwjcclc1}}</td> 314 <td>{{obj.zrwjcclc1}}</td>
310 <td>{{obj.zrwjcclc2}}</td> 315 <td>{{obj.zrwjcclc2}}</td>
  316 + <td>{{obj.kfks}}</td>
311 <td>{{obj.lbss}}</td> 317 <td>{{obj.lbss}}</td>
312 <td>{{obj.ssgl_lz}}</td> 318 <td>{{obj.ssgl_lz}}</td>
313 <td>{{obj.ssgl_dm}}</td> 319 <td>{{obj.ssgl_dm}}</td>
@@ -322,11 +328,12 @@ @@ -322,11 +328,12 @@
322 <td>{{obj.ssgl_other}}</td> 328 <td>{{obj.ssgl_other}}</td>
323 <td>{{obj.ljyy}}</td> 329 <td>{{obj.ljyy}}</td>
324 <td>{{obj.ljjcc}}</td> 330 <td>{{obj.ljjcc}}</td>
  331 + <td>{{obj.ljkfks}}</td>
325 </tr> 332 </tr>
326 {{/each}} 333 {{/each}}
327 {{if list.length == 0}} 334 {{if list.length == 0}}
328 <tr> 335 <tr>
329 - <td colspan="28"><h6 class="muted">没有找到相关数据</h6></td> 336 + <td colspan="30"><h6 class="muted">没有找到相关数据</h6></td>
330 </tr> 337 </tr>
331 {{/if}} 338 {{/if}}
332 </script> 339 </script>
333 \ No newline at end of file 340 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
@@ -699,7 +699,25 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -699,7 +699,25 @@ angular.module(&#39;ScheduleApp&#39;).factory(
699 return dst; 699 return dst;
700 } 700 }
701 } 701 }
702 - }, 702 + }
  703 + }
  704 + ),
  705 +
  706 + backup: $resource(
  707 + '/tic_ec/backup/:ttinfoid',
  708 + {},
  709 + {
  710 + do: {
  711 + method: 'GET',
  712 + transformResponse: function(rs) {
  713 + var dst = angular.fromJson(rs);
  714 + if (dst.status == 'SUCCESS') {
  715 + return dst.data;
  716 + } else {
  717 + return dst; // 业务错误留给控制器处理
  718 + }
  719 + }
  720 + }
703 } 721 }
704 ) 722 )
705 }; 723 };
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/list.html
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 <th style="width: 180px;">时刻表名称</th> 9 <th style="width: 180px;">时刻表名称</th>
10 <th style="width: 80px">上下行</th> 10 <th style="width: 80px">上下行</th>
11 <th style="width: 50px;">启用</th> 11 <th style="width: 50px;">启用</th>
12 - <th style="width: 120px">启用日期</th> 12 + <th style="width: 120px">启用/备份日期</th>
13 <th style="width: 80px">状态</th> 13 <th style="width: 80px">状态</th>
14 <th style="width: 60%">时刻表明细</th> 14 <th style="width: 60%">时刻表明细</th>
15 <th style="width: 40%">操作</th> 15 <th style="width: 40%">操作</th>
@@ -76,7 +76,24 @@ @@ -76,7 +76,24 @@
76 <span ng-bind="info.isEnableDisTemplate | dict:'truefalseType':'未知' "></span> 76 <span ng-bind="info.isEnableDisTemplate | dict:'truefalseType':'未知' "></span>
77 </td> 77 </td>
78 <td> 78 <td>
79 - <span ng-bind="info.qyrq | date: 'yyyy-MM-dd'"></span> 79 + <div>
  80 + <a href="#">
  81 + <span ng-bind="info.qyrq | date: 'yyyy-MM-dd'"></span>
  82 + </a>
  83 + </div>
  84 + <div>
  85 + <a href="#"
  86 + tooltip-animation="false"
  87 + tooltip-placement="top"
  88 + uib-tooltip="备份时间:{{info.lastBackUpDate | date: 'yyyy-MM-dd HH:mm:ss' }}"
  89 + tooltip-class="headClass">
  90 +
  91 + <i class="fa fa-hdd-o" aria-hidden="true"></i>
  92 + <span ng-bind="info.lastBackUpDate | date: 'yyyy-MM-dd'"></span>
  93 + </a>
  94 +
  95 + </div>
  96 +
80 </td> 97 </td>
81 <td> 98 <td>
82 <span class="glyphicon glyphicon-ok" ng-if="info.isCancel == '0'"></span> 99 <span class="glyphicon glyphicon-ok" ng-if="info.isCancel == '0'"></span>
@@ -94,6 +111,10 @@ @@ -94,6 +111,10 @@
94 <a ui-sref="ttInfoDetailManage_form({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name})" 111 <a ui-sref="ttInfoDetailManage_form({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name})"
95 class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 导入 </a> 112 class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 导入 </a>
96 <a href="javascript:" class="btn btn-info btn-sm" ng-click="ctrl.exportData(info.id)"> 导出 </a> 113 <a href="javascript:" class="btn btn-info btn-sm" ng-click="ctrl.exportData(info.id)"> 导出 </a>
  114 + <a sweetalert
  115 + sweet-options="{title: '是否备份时刻表?',text: '时刻表名称:' + info.name + '</br>TODO:已备份信息!', html: true,type: 'warning',showCancelButton: true,confirmButtonColor: '#DD6B55',confirmButtonText: '是',cancelButtonText: '取消'}"
  116 + sweet-on-confirm="ctrl.backupinfo(info.id)"
  117 + class="btn btn-danger btn-sm">备份</a>
97 </td> 118 </td>
98 <td> 119 <td>
99 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>--> 120 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/module.js
@@ -60,6 +60,16 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -60,6 +60,16 @@ angular.module(&#39;ScheduleApp&#39;).factory(
60 param.type = 'exportFile'; 60 param.type = 'exportFile';
61 param.ttinfoid = ttinfoid; 61 param.ttinfoid = ttinfoid;
62 return dservice.dataTools.dataExport(param).$promise; 62 return dservice.dataTools.dataExport(param).$promise;
  63 + },
  64 +
  65 + /**
  66 + * 备份。
  67 + * @returns {*|Function|promise|n}
  68 + */
  69 + backupinfo: function(ttinfoid) {
  70 + var param = {};
  71 + param.ttinfoid = ttinfoid;
  72 + return service.backup.do(param).$promise;
63 } 73 }
64 74
65 75
@@ -136,6 +146,19 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -136,6 +146,19 @@ angular.module(&#39;ScheduleApp&#39;).controller(
136 ); 146 );
137 }; 147 };
138 148
  149 + // 备份信息
  150 + self.backupinfo = function(ttinfoid) {
  151 + service.backupinfo(ttinfoid).then(
  152 + function(result) {
  153 + self.doPage();
  154 + console.log("备份成功!");
  155 + },
  156 + function(result) {
  157 + console.log("备份失败:" + result);
  158 + }
  159 + );
  160 + };
  161 +
139 self.doPage(); 162 self.doPage();
140 163
141 // 自动生成时刻表 164 // 自动生成时刻表
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/service.js
@@ -33,7 +33,25 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -33,7 +33,25 @@ angular.module(&#39;ScheduleApp&#39;).factory(
33 return dst; 33 return dst;
34 } 34 }
35 } 35 }
36 - }, 36 + }
  37 + }
  38 + ),
  39 +
  40 + backup: $resource(
  41 + '/tic_ec/backup/:ttinfoid',
  42 + {},
  43 + {
  44 + do: {
  45 + method: 'GET',
  46 + transformResponse: function(rs) {
  47 + var dst = angular.fromJson(rs);
  48 + if (dst.status == 'SUCCESS') {
  49 + return dst.data;
  50 + } else {
  51 + return dst; // 业务错误留给控制器处理
  52 + }
  53 + }
  54 + }
37 } 55 }
38 ) 56 )
39 }; 57 };
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/add_normal.html
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">  
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">  
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">  
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=222 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 - });  
155 - $('.ct_line_lp_badge', nf).html(sch.xlName + ',&nbsp;'+sch.lpName);  
156 - });  
157 -  
158 - function addForm() {  
159 - var htmlStr = template('add_normal_sch-form-temp', sch);  
160 - var f = $(htmlStr);  
161 - $(wrap).append(f);  
162 - //字典转换  
163 - dictionaryUtils.transformDom($('.nt-dictionary', f));  
164 - //validation  
165 - f.formValidation({framework: 'uikit', locale: 'zh_CN'});  
166 - //autocomp  
167 - f.trigger('init-autoCom');  
168 -  
169 - $f('bcType', f).trigger('change');  
170 - return f;  
171 - }  
172 -  
173 - function $f(name, f) {  
174 - return $('[name=' + name + ']', f);  
175 - }  
176 - })(); 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">
  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">
  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">
  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=222 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 + });
  155 + $('.ct_line_lp_badge', nf).html(sch.xlName + ',&nbsp;'+sch.lpName);
  156 + });
  157 +
  158 + function addForm() {
  159 + var htmlStr = template('add_normal_sch-form-temp', sch);
  160 + var f = $(htmlStr);
  161 + $(wrap).append(f);
  162 + //字典转换
  163 + dictionaryUtils.transformDom($('.nt-dictionary', f));
  164 + //validation
  165 + f.formValidation({framework: 'uikit', locale: 'zh_CN'});
  166 + //autocomp
  167 + f.trigger('init-autoCom');
  168 +
  169 + $f('bcType', f).trigger('change');
  170 + return f;
  171 + }
  172 +
  173 + function $f(name, f) {
  174 + return $('[name=' + name + ']', f);
  175 + }
  176 + })();
177 </script> 177 </script>
178 \ No newline at end of file 178 \ No newline at end of file
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/add_park_to_park.html
1 -<!-- 临加场到场班次form -->  
2 -<script id="add_park_to_park_sch-form-temp" type="text/html">  
3 - <form class="uk-form uk-form-horizontal">  
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" name="bcType">  
10 - <option value="in">进场</option>  
11 - </select>  
12 - </div>  
13 - </div>  
14 - </div>  
15 - <div class="uk-width-1-2">  
16 - <div class="uk-form-row">  
17 - <label class="uk-form-label">上下行</label>  
18 - <div class="uk-form-controls">  
19 - <select name="xlDir">  
20 - <option value="0">上行</option>  
21 - <option value="1">下行</option>  
22 - </select>  
23 - </div>  
24 - </div>  
25 - </div>  
26 - </div>  
27 - <div class="uk-grid">  
28 - <div class="uk-width-1-2">  
29 - <div class="uk-form-row">  
30 - <label class="uk-form-label">起点站</label>  
31 - <div class="uk-form-controls">  
32 - <select name="qdzCode">  
33 - </select>  
34 - </div>  
35 - </div>  
36 - </div>  
37 - <div class="uk-width-1-2">  
38 - <div class="uk-form-row">  
39 - <label class="uk-form-label">终点站</label>  
40 - <div class="uk-form-controls">  
41 - <select name="zdzCode">  
42 - </select>  
43 - </div>  
44 - </div>  
45 - </div>  
46 - </div>  
47 - <div class="uk-grid">  
48 - <div class="uk-width-1-2">  
49 - <div class="uk-form-row">  
50 - <label class="uk-form-label">开始时间</label>  
51 - <div class="uk-form-controls">  
52 - <input type="time" value="{{zdsjActual==null?zdsj:zdsjActual}}" name="fcsj" required>  
53 - </div>  
54 - </div>  
55 - </div>  
56 - <div class="uk-width-1-2">  
57 - <div class="uk-form-row">  
58 - <label class="uk-form-label">结束时间</label>  
59 - <div class="uk-form-controls">  
60 - <input type="time" name="zdsj" required>  
61 - </div>  
62 - </div>  
63 - </div>  
64 - </div>  
65 - <div class="uk-grid">  
66 - <div class="uk-width-1-2">  
67 - <div class="uk-form-row">  
68 - <label class="uk-form-label">车辆</label>  
69 - <div class="uk-form-controls">  
70 - <div class="uk-autocomplete uk-form car-autocom">  
71 - <input type="text" value="{{clZbh}}" name="clZbh" required>  
72 - </div>  
73 - </div>  
74 - </div>  
75 - </div>  
76 - <div class="uk-width-1-2">  
77 - <div class="uk-form-row">  
78 - <label class="uk-form-label">里程</label>  
79 - <div class="uk-form-controls">  
80 - <input type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false"  
81 - required>  
82 - </div>  
83 - </div>  
84 - </div>  
85 - </div>  
86 - <div class="uk-grid">  
87 - <div class="uk-width-1-2">  
88 - <div class="uk-form-row">  
89 - <label class="uk-form-label">驾驶员</label>  
90 - <div class="uk-form-controls">  
91 - <div class="uk-autocomplete uk-form jsy-autocom">  
92 - <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>  
93 - </div>  
94 - </div>  
95 - </div>  
96 - </div>  
97 - <div class="uk-width-1-2">  
98 - <div class="uk-form-row">  
99 - <label class="uk-form-label">售票员</label>  
100 - <div class="uk-form-controls">  
101 - <div class="uk-autocomplete uk-form spy-autocom">  
102 - <input type="text" name="spy" value="{{sGh}}/{{sName}}">  
103 - </div>  
104 - </div>  
105 - </div>  
106 - </div>  
107 - </div>  
108 - <div class="uk-grid">  
109 - <div class="uk-width-1-1">  
110 - <div class="uk-form-row">  
111 - <label class="uk-form-label">备注</label>  
112 - <div class="uk-form-controls">  
113 - <div class="uk-autocomplete uk-form remarks-autocom">  
114 - <input type="text" name="remarks">  
115 - </div>  
116 - </div>  
117 - </div>  
118 - </div>  
119 - </div>  
120 - <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">  
121 - <span class="ct_line_lp_badge"></span>  
122 - <button type="button" class="uk-button uk-modal-close">取消</button>  
123 - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存  
124 - </button>  
125 - </div>  
126 - </form>  
127 -</script>  
128 -  
129 -<script>  
130 - (function () {  
131 - var wrap = '#schedule-addsch-modal .parkToParkCont', sch, nf, submitFun,parks,carsArray;  
132 -  
133 - $(wrap).on('init', function (e, data) {  
134 - e.stopPropagation();  
135 - sch = data.sch;  
136 - submitFun = data.submitFun;  
137 - parks = data.parks;  
138 - carsArray = data.carsArray;  
139 -  
140 - nf = addForm();  
141 - //提交  
142 - nf.on('success.form.fv', function (e) {  
143 - e.preventDefault();  
144 -  
145 - disabled_submit_btn(nf);  
146 - var data = nf.serializeJSON();  
147 - submitFun(data, function (rs) {  
148 - //前端数据更新  
149 - gb_schedule_table.insertSchedule(rs.t, rs.ts);  
150 - $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t});  
151 - try {  
152 - if(rs.t.bcType=='in' || rs.t.bcType=='out')  
153 - gb_data_basic.reload_stat_park_data();  
154 - }catch (e){  
155 - console.log(e);}  
156 - UIkit.modal('#schedule-addsch-modal').hide();  
157 - });  
158 - });  
159 - $('.ct_line_lp_badge', nf).html(sch.xlName + ',&nbsp;'+sch.lpName);  
160 - $f('zdzCode',nf).trigger('change');  
161 - });  
162 -  
163 - function addForm() {  
164 - var htmlStr = template('add_park_to_park_sch-form-temp', sch);  
165 - var f = $(htmlStr);  
166 - $(wrap).append(f);  
167 - //字典转换  
168 - dictionaryUtils.transformDom($('.nt-dictionary', f));  
169 - //validation  
170 - f.formValidation({framework: 'uikit', locale: 'zh_CN'});  
171 - //autocomp  
172 - initAutoComp(f);  
173 -  
174 - //起终点都是停车场  
175 - var park_opts;  
176 - for(var i=0,p;p=parks[i++];)  
177 - park_opts += '<option value="' + p.code + '">' + p.name + '</option>';  
178 - $f('qdzCode', f).html(park_opts);  
179 - $f('zdzCode', f).html(park_opts);  
180 -  
181 - if(sch.bcType=='in'){  
182 - $f('qdzCode', f).val(sch.zdzCode);  
183 - //选中的也是场到场班次  
184 - if(gb_data_basic.getCarparkByCode(sch.qdzCode) != null){  
185 - //默认做返程  
186 - $f('zdzCode', f).val(sch.qdzCode);  
187 - $f('remarks', f).val(sch.remarks);  
188 - $f('jhlc', f).val(sch.jhlc);  
189 - //时间  
190 - var zdsj = moment(sch.zdsj, 'HH:mm').add('minutes', sch.bcsj).format('HH:mm');  
191 - $f('zdsj', f).val(zdsj);  
192 - }  
193 - }  
194 - return f;  
195 - }  
196 -  
197 - function $f(name, f) {  
198 - return $('[name=' + name + ']', f);  
199 - }  
200 -  
201 - function initAutoComp(f) {  
202 - //车辆  
203 - if(carsArray)  
204 - gb_common.carAutocomplete($('.car-autocom', f), carsArray);  
205 - //驾驶员  
206 - gb_common.personAutocomplete($('.jsy-autocom', f));  
207 - //售票员  
208 - gb_common.personAutocomplete($('.spy-autocom', f));  
209 - //备注补全  
210 - gb_common.remarksAutocomplete($('.remarks-autocom', f));  
211 - }  
212 -  
213 - })(); 1 +<!-- 临加场到场班次form -->
  2 +<script id="add_park_to_park_sch-form-temp" type="text/html">
  3 + <form class="uk-form uk-form-horizontal">
  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" name="bcType">
  10 + <option value="in">进场</option>
  11 + </select>
  12 + </div>
  13 + </div>
  14 + </div>
  15 + <div class="uk-width-1-2">
  16 + <div class="uk-form-row">
  17 + <label class="uk-form-label">上下行</label>
  18 + <div class="uk-form-controls">
  19 + <select name="xlDir">
  20 + <option value="0">上行</option>
  21 + <option value="1">下行</option>
  22 + </select>
  23 + </div>
  24 + </div>
  25 + </div>
  26 + </div>
  27 + <div class="uk-grid">
  28 + <div class="uk-width-1-2">
  29 + <div class="uk-form-row">
  30 + <label class="uk-form-label">起点站</label>
  31 + <div class="uk-form-controls">
  32 + <select name="qdzCode">
  33 + </select>
  34 + </div>
  35 + </div>
  36 + </div>
  37 + <div class="uk-width-1-2">
  38 + <div class="uk-form-row">
  39 + <label class="uk-form-label">终点站</label>
  40 + <div class="uk-form-controls">
  41 + <select name="zdzCode">
  42 + </select>
  43 + </div>
  44 + </div>
  45 + </div>
  46 + </div>
  47 + <div class="uk-grid">
  48 + <div class="uk-width-1-2">
  49 + <div class="uk-form-row">
  50 + <label class="uk-form-label">开始时间</label>
  51 + <div class="uk-form-controls">
  52 + <input type="time" value="{{zdsjActual==null?zdsj:zdsjActual}}" name="fcsj" required>
  53 + </div>
  54 + </div>
  55 + </div>
  56 + <div class="uk-width-1-2">
  57 + <div class="uk-form-row">
  58 + <label class="uk-form-label">结束时间</label>
  59 + <div class="uk-form-controls">
  60 + <input type="time" name="zdsj" required>
  61 + </div>
  62 + </div>
  63 + </div>
  64 + </div>
  65 + <div class="uk-grid">
  66 + <div class="uk-width-1-2">
  67 + <div class="uk-form-row">
  68 + <label class="uk-form-label">车辆</label>
  69 + <div class="uk-form-controls">
  70 + <div class="uk-autocomplete uk-form car-autocom">
  71 + <input type="text" value="{{clZbh}}" name="clZbh" required>
  72 + </div>
  73 + </div>
  74 + </div>
  75 + </div>
  76 + <div class="uk-width-1-2">
  77 + <div class="uk-form-row">
  78 + <label class="uk-form-label">里程</label>
  79 + <div class="uk-form-controls">
  80 + <input type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false"
  81 + required>
  82 + </div>
  83 + </div>
  84 + </div>
  85 + </div>
  86 + <div class="uk-grid">
  87 + <div class="uk-width-1-2">
  88 + <div class="uk-form-row">
  89 + <label class="uk-form-label">驾驶员</label>
  90 + <div class="uk-form-controls">
  91 + <div class="uk-autocomplete uk-form jsy-autocom">
  92 + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>
  93 + </div>
  94 + </div>
  95 + </div>
  96 + </div>
  97 + <div class="uk-width-1-2">
  98 + <div class="uk-form-row">
  99 + <label class="uk-form-label">售票员</label>
  100 + <div class="uk-form-controls">
  101 + <div class="uk-autocomplete uk-form spy-autocom">
  102 + <input type="text" name="spy" value="{{sGh}}/{{sName}}">
  103 + </div>
  104 + </div>
  105 + </div>
  106 + </div>
  107 + </div>
  108 + <div class="uk-grid">
  109 + <div class="uk-width-1-1">
  110 + <div class="uk-form-row">
  111 + <label class="uk-form-label">备注</label>
  112 + <div class="uk-form-controls">
  113 + <div class="uk-autocomplete uk-form remarks-autocom">
  114 + <input type="text" name="remarks">
  115 + </div>
  116 + </div>
  117 + </div>
  118 + </div>
  119 + </div>
  120 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  121 + <span class="ct_line_lp_badge"></span>
  122 + <button type="button" class="uk-button uk-modal-close">取消</button>
  123 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存
  124 + </button>
  125 + </div>
  126 + </form>
  127 +</script>
  128 +
  129 +<script>
  130 + (function () {
  131 + var wrap = '#schedule-addsch-modal .parkToParkCont', sch, nf, submitFun,parks,carsArray;
  132 +
  133 + $(wrap).on('init', function (e, data) {
  134 + e.stopPropagation();
  135 + sch = data.sch;
  136 + submitFun = data.submitFun;
  137 + parks = data.parks;
  138 + carsArray = data.carsArray;
  139 +
  140 + nf = addForm();
  141 + //提交
  142 + nf.on('success.form.fv', function (e) {
  143 + e.preventDefault();
  144 +
  145 + disabled_submit_btn(nf);
  146 + var data = nf.serializeJSON();
  147 + submitFun(data, function (rs) {
  148 + //前端数据更新
  149 + gb_schedule_table.insertSchedule(rs.t, rs.ts);
  150 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t});
  151 + try {
  152 + if(rs.t.bcType=='in' || rs.t.bcType=='out')
  153 + gb_data_basic.reload_stat_park_data();
  154 + }catch (e){
  155 + console.log(e);}
  156 + UIkit.modal('#schedule-addsch-modal').hide();
  157 + });
  158 + });
  159 + $('.ct_line_lp_badge', nf).html(sch.xlName + ',&nbsp;'+sch.lpName);
  160 + $f('zdzCode',nf).trigger('change');
  161 + });
  162 +
  163 + function addForm() {
  164 + var htmlStr = template('add_park_to_park_sch-form-temp', sch);
  165 + var f = $(htmlStr);
  166 + $(wrap).append(f);
  167 + //字典转换
  168 + dictionaryUtils.transformDom($('.nt-dictionary', f));
  169 + //validation
  170 + f.formValidation({framework: 'uikit', locale: 'zh_CN'});
  171 + //autocomp
  172 + initAutoComp(f);
  173 +
  174 + //起终点都是停车场
  175 + var park_opts;
  176 + for(var i=0,p;p=parks[i++];)
  177 + park_opts += '<option value="' + p.code + '">' + p.name + '</option>';
  178 + $f('qdzCode', f).html(park_opts);
  179 + $f('zdzCode', f).html(park_opts);
  180 +
  181 + if(sch.bcType=='in'){
  182 + $f('qdzCode', f).val(sch.zdzCode);
  183 + //选中的也是场到场班次
  184 + if(gb_data_basic.getCarparkByCode(sch.qdzCode) != null){
  185 + //默认做返程
  186 + $f('zdzCode', f).val(sch.qdzCode);
  187 + $f('remarks', f).val(sch.remarks);
  188 + $f('jhlc', f).val(sch.jhlc);
  189 + //时间
  190 + var zdsj = moment(sch.zdsj, 'HH:mm').add('minutes', sch.bcsj).format('HH:mm');
  191 + $f('zdsj', f).val(zdsj);
  192 + }
  193 + }
  194 + return f;
  195 + }
  196 +
  197 + function $f(name, f) {
  198 + return $('[name=' + name + ']', f);
  199 + }
  200 +
  201 + function initAutoComp(f) {
  202 + //车辆
  203 + if(carsArray)
  204 + gb_common.carAutocomplete($('.car-autocom', f), carsArray);
  205 + //驾驶员
  206 + gb_common.personAutocomplete($('.jsy-autocom', f));
  207 + //售票员
  208 + gb_common.personAutocomplete($('.spy-autocom', f));
  209 + //备注补全
  210 + gb_common.remarksAutocomplete($('.remarks-autocom', f));
  211 + }
  212 +
  213 + })();
214 </script> 214 </script>
215 \ No newline at end of file 215 \ No newline at end of file
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/add_two_way.html
1 -<!-- 线路上往返临加班次 -->  
2 -<script id="add_toAndFro_sch-form-temp" type="text/html">  
3 - <form class="uk-form uk-form-horizontal add-sch-form one_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">  
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" >  
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" >  
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="{{zdsj}}" 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=222 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 - </form>  
120 - <hr style="margin-top: 35px;">  
121 - <form class="uk-form uk-form-horizontal add-sch-form two_form">  
122 - <div class="uk-grid">  
123 - <div class="uk-width-1-2">  
124 - <div class="uk-form-row">  
125 - <label class="uk-form-label">班次类型</label>  
126 - <div class="uk-form-controls">  
127 - <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}"  
128 - data-group=ScheduleType></select>  
129 - </div>  
130 - </div>  
131 - </div>  
132 - <div class="uk-width-1-2">  
133 - <div class="uk-form-row">  
134 - <label class="uk-form-label">上下行</label>  
135 - <div class="uk-form-controls">  
136 - <select name="xlDir">  
137 - <option value="0">上行</option>  
138 - <option value="1">下行</option>  
139 - </select>  
140 - </div>  
141 - </div>  
142 - </div>  
143 - </div>  
144 - <div class="uk-grid">  
145 - <div class="uk-width-1-2">  
146 - <div class="uk-form-row">  
147 - <label class="uk-form-label">起点站</label>  
148 - <div class="uk-form-controls">  
149 - <select name="qdzCode" >  
150 - </select>  
151 - </div>  
152 - </div>  
153 - </div>  
154 - <div class="uk-width-1-2">  
155 - <div class="uk-form-row">  
156 - <label class="uk-form-label">终点站</label>  
157 - <div class="uk-form-controls">  
158 - <select name="zdzCode" >  
159 - </select>  
160 - </div>  
161 - </div>  
162 - </div>  
163 - </div>  
164 - <div class="uk-grid">  
165 - <div class="uk-width-1-2">  
166 - <div class="uk-form-row">  
167 - <label class="uk-form-label">开始时间</label>  
168 - <div class="uk-form-controls">  
169 - <input type="time" value="{{zdsj}}" name="fcsj" required>  
170 - </div>  
171 - </div>  
172 - </div>  
173 - <div class="uk-width-1-2">  
174 - <div class="uk-form-row">  
175 - <label class="uk-form-label">结束时间</label>  
176 - <div class="uk-form-controls">  
177 - <input type="time" name="zdsj" required>  
178 - </div>  
179 - </div>  
180 - </div>  
181 - </div>  
182 - <div class="uk-grid">  
183 - <div class="uk-width-1-2">  
184 - <div class="uk-form-row">  
185 - <label class="uk-form-label">车辆</label>  
186 - <div class="uk-form-controls">  
187 - <div class="uk-autocomplete uk-form car-autocom">  
188 - <input type="text" value="{{clZbh}}" name="clZbh" required>  
189 - </div>  
190 - </div>  
191 - </div>  
192 - </div>  
193 - <div class="uk-width-1-2">  
194 - <div class="uk-form-row">  
195 - <label class="uk-form-label">里程</label>  
196 - <div class="uk-form-controls">  
197 - <input type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false"  
198 - required>  
199 - </div>  
200 - </div>  
201 - </div>  
202 - </div>  
203 - <div class="uk-grid">  
204 - <div class="uk-width-1-2">  
205 - <div class="uk-form-row">  
206 - <label class="uk-form-label">驾驶员</label>  
207 - <div class="uk-form-controls">  
208 - <div class="uk-autocomplete uk-form jsy-autocom">  
209 - <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>  
210 - </div>  
211 - </div>  
212 - </div>  
213 - </div>  
214 - <div class="uk-width-1-2">  
215 - <div class="uk-form-row">  
216 - <label class="uk-form-label">售票员</label>  
217 - <div class="uk-form-controls">  
218 - <div class="uk-autocomplete uk-form spy-autocom">  
219 - <input type="text" name="spy" value="{{sGh}}/{{sName}}">  
220 - </div>  
221 - </div>  
222 - </div>  
223 - </div>  
224 - </div>  
225 - <div class="uk-grid">  
226 - <div class="uk-width-1-1">  
227 - <div class="uk-form-row">  
228 - <label class="uk-form-label">备注</label>  
229 - <div class="uk-form-controls">  
230 - <div class="uk-autocomplete uk-form remarks-autocom">  
231 - <input type="text" name="remarks">  
232 - </div>  
233 - </div>  
234 - </div>  
235 - </div>  
236 - </div>  
237 - </form>  
238 -  
239 - <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">  
240 - <span class="ct_line_lp_badge" ></span>  
241 - <button type="button" class="uk-button uk-modal-close">取消</button>  
242 - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>  
243 - </div>  
244 -</script>  
245 -  
246 -<script>  
247 - (function () {  
248 - var wrap = '#schedule-addsch-modal .toAndFroCont', sch, f1, f2, submitFun, stationRoutes;  
249 -  
250 - $(wrap).on('init', function (e, data) {  
251 - e.stopPropagation();  
252 - sch = data.sch;  
253 - submitFun = data.submitFun;  
254 - stationRoutes = data.stationRoutes;  
255 -  
256 - var htmlStr = template('add_toAndFro_sch-form-temp', sch);  
257 - $(wrap).append(htmlStr);  
258 - //字典转换  
259 - dictionaryUtils.transformDom($('.nt-dictionary', wrap));  
260 - //validation  
261 - $('.add-sch-form', wrap).formValidation({framework: 'uikit', locale: 'zh_CN'}).trigger('init-autoCom');  
262 - $('.add-sch-form [name=bcType]', wrap).trigger('change');  
263 -  
264 - f1 = $('.add-sch-form.one_form', wrap);  
265 - f2 = $('.add-sch-form.two_form', wrap);  
266 -  
267 - //默认1备注同步到2  
268 - $f('remarks', f1).on('input', function () {  
269 - $f('remarks', f2).val($(this).val());  
270 - });  
271 - //默认1备注同步到2  
272 - $('.remarks-autocom', f1).on('selectitem.uk.autocomplete', function (e, data, acobject) {  
273 - $f('remarks', f2).val(data.value);  
274 - });  
275 - //表单同步  
276 - $(f1).on('ct_callback', synchroFormData).trigger('ct_callback');  
277 - //修改1结束时间  
278 - $f('zdsj',f1).on('input', synchroFormData);  
279 - $('.ct_line_lp_badge', wrap).html(sch.xlName + ',&nbsp;'+sch.lpName);  
280 -  
281 - //表单校验提交相关  
282 - var dataArray;  
283 - var fs = $('.add-sch-form', wrap);  
284 - fs.on('success.form.fv', function (e) {  
285 - e.preventDefault();  
286 - dataArray.push($(this).serializeJSON());  
287 - $(this).data('valid', true);  
288 - if (allValidSuccess()) {  
289 - //开始post  
290 - var i = 0;  
291 - var inArr = [];  
292 - var upArr = [];  
293 - (function () {  
294 - var f = arguments.callee;  
295 - if (i >= dataArray.length) {  
296 - //前端数据更新  
297 - var last = inArr.pop();  
298 - gb_schedule_table.insertSchedule(last, upArr);  
299 - $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: last});  
300 -  
301 - try {  
302 - if(last.bcType=='in' || last.bcType=='out')  
303 - gb_data_basic.reload_stat_park_data();  
304 - }catch (e){  
305 - console.log(e);}  
306 - UIkit.modal('#schedule-addsch-modal').hide();  
307 - return;  
308 - }  
309 - submitFun(dataArray[i], function (rs) {  
310 - inArr.push(rs.t);  
311 - upArr = upArr.concat(rs.ts);  
312 - upArr.push(rs.t);  
313 - i++;  
314 - f();  
315 - });  
316 - })();  
317 - }  
318 - });  
319 - //提交  
320 - $('[type=submit]', wrap).on('click', function () {  
321 - $(this).addClass('disabled').attr('disabled', 'disabled');  
322 - dataArray = [];  
323 - fs.data('valid', false);  
324 - fs.formValidation('validate');  
325 - });  
326 - });  
327 -  
328 - function $f(name, f) {  
329 - return $('[name=' + name + ']', f);  
330 - }  
331 -  
332 - function allValidSuccess() {  
333 - var flag = true;  
334 - $('form.add-sch-form:visible', wrap).each(function (i, f) {  
335 - if (!$(f).data('valid')) {  
336 - flag = false;  
337 - return false;  
338 - }  
339 - });  
340 - return flag;  
341 - }  
342 -  
343 - /**  
344 - * 同步2个表单的数据  
345 - */  
346 - var bcTypes = {'normal': 'normal', 'region': 'region', 'out': 'in', 'in': 'out'};  
347 - var synchroFormData = function () {  
348 - //同步班次类型  
349 - var type = $f('bcType', f1).val();  
350 - if (bcTypes[type])  
351 - $f('bcType', f2).val(bcTypes[type]).trigger('change');  
352 - var updown = $f('xlDir', f1).val();  
353 -  
354 - //1 结束时间 = 2 开始时间  
355 - $f('fcsj', f2).val($f('zdsj', f1).val());  
356 - if (type != 'out' && type != 'in') {  
357 - //走向  
358 - $f('xlDir', f2).val(updown == 0 ? 1 : 0).trigger('change');  
359 -  
360 - //第一个表单终点 = 第二个起点  
361 - var oneZdName = $('[name=zdzCode] option:selected', f1).text();  
362 - $f('qdzCode', f2).val(searchParallelStation(oneZdName, updown == 0 ? 1 : 0));  
363 - //第一个表单起点 = 第二个终点  
364 - var oneQdName = $('[name=qdzCode] option:selected', f1).text();  
365 - $f('zdzCode', f2).val(searchParallelStation(oneQdName, updown == 0 ? 1 : 0)).trigger('change');  
366 - }  
367 - else {  
368 - //进出场走向相同  
369 - $f('xlDir', f2).val(updown).trigger('change');  
370 - //第一个表单终点 = 第二个起点  
371 - $f('qdzCode', f2).val($f('zdzCode', f1).val());  
372 - //第一个表单起点 = 第二个终点  
373 - $f('zdzCode', f2).val($f('qdzCode', f1).val()).trigger('change');  
374 - }  
375 - };  
376 -  
377 -  
378 - //返回另一个走向对应的站点  
379 - function searchParallelStation(stationName, updown) {  
380 - var routes = stationRoutes[updown]  
381 - , len = routes.length;  
382 -  
383 - for (var i = 0; i < len; i++) {  
384 - if (routes[i].stationName == stationName)  
385 - return routes[i].stationCode;  
386 - }  
387 - }  
388 - })(); 1 +<!-- 线路上往返临加班次 -->
  2 +<script id="add_toAndFro_sch-form-temp" type="text/html">
  3 + <form class="uk-form uk-form-horizontal add-sch-form one_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">
  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" >
  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" >
  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="{{zdsj}}" 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=222 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 + </form>
  120 + <hr style="margin-top: 35px;">
  121 + <form class="uk-form uk-form-horizontal add-sch-form two_form">
  122 + <div class="uk-grid">
  123 + <div class="uk-width-1-2">
  124 + <div class="uk-form-row">
  125 + <label class="uk-form-label">班次类型</label>
  126 + <div class="uk-form-controls">
  127 + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}"
  128 + data-group=ScheduleType></select>
  129 + </div>
  130 + </div>
  131 + </div>
  132 + <div class="uk-width-1-2">
  133 + <div class="uk-form-row">
  134 + <label class="uk-form-label">上下行</label>
  135 + <div class="uk-form-controls">
  136 + <select name="xlDir">
  137 + <option value="0">上行</option>
  138 + <option value="1">下行</option>
  139 + </select>
  140 + </div>
  141 + </div>
  142 + </div>
  143 + </div>
  144 + <div class="uk-grid">
  145 + <div class="uk-width-1-2">
  146 + <div class="uk-form-row">
  147 + <label class="uk-form-label">起点站</label>
  148 + <div class="uk-form-controls">
  149 + <select name="qdzCode" >
  150 + </select>
  151 + </div>
  152 + </div>
  153 + </div>
  154 + <div class="uk-width-1-2">
  155 + <div class="uk-form-row">
  156 + <label class="uk-form-label">终点站</label>
  157 + <div class="uk-form-controls">
  158 + <select name="zdzCode" >
  159 + </select>
  160 + </div>
  161 + </div>
  162 + </div>
  163 + </div>
  164 + <div class="uk-grid">
  165 + <div class="uk-width-1-2">
  166 + <div class="uk-form-row">
  167 + <label class="uk-form-label">开始时间</label>
  168 + <div class="uk-form-controls">
  169 + <input type="time" value="{{zdsj}}" name="fcsj" required>
  170 + </div>
  171 + </div>
  172 + </div>
  173 + <div class="uk-width-1-2">
  174 + <div class="uk-form-row">
  175 + <label class="uk-form-label">结束时间</label>
  176 + <div class="uk-form-controls">
  177 + <input type="time" name="zdsj" required>
  178 + </div>
  179 + </div>
  180 + </div>
  181 + </div>
  182 + <div class="uk-grid">
  183 + <div class="uk-width-1-2">
  184 + <div class="uk-form-row">
  185 + <label class="uk-form-label">车辆</label>
  186 + <div class="uk-form-controls">
  187 + <div class="uk-autocomplete uk-form car-autocom">
  188 + <input type="text" value="{{clZbh}}" name="clZbh" required>
  189 + </div>
  190 + </div>
  191 + </div>
  192 + </div>
  193 + <div class="uk-width-1-2">
  194 + <div class="uk-form-row">
  195 + <label class="uk-form-label">里程</label>
  196 + <div class="uk-form-controls">
  197 + <input type="text" name="jhlc" value="{{jhlc}}" max=222 data-fv-lessthan-inclusive="false"
  198 + required>
  199 + </div>
  200 + </div>
  201 + </div>
  202 + </div>
  203 + <div class="uk-grid">
  204 + <div class="uk-width-1-2">
  205 + <div class="uk-form-row">
  206 + <label class="uk-form-label">驾驶员</label>
  207 + <div class="uk-form-controls">
  208 + <div class="uk-autocomplete uk-form jsy-autocom">
  209 + <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>
  210 + </div>
  211 + </div>
  212 + </div>
  213 + </div>
  214 + <div class="uk-width-1-2">
  215 + <div class="uk-form-row">
  216 + <label class="uk-form-label">售票员</label>
  217 + <div class="uk-form-controls">
  218 + <div class="uk-autocomplete uk-form spy-autocom">
  219 + <input type="text" name="spy" value="{{sGh}}/{{sName}}">
  220 + </div>
  221 + </div>
  222 + </div>
  223 + </div>
  224 + </div>
  225 + <div class="uk-grid">
  226 + <div class="uk-width-1-1">
  227 + <div class="uk-form-row">
  228 + <label class="uk-form-label">备注</label>
  229 + <div class="uk-form-controls">
  230 + <div class="uk-autocomplete uk-form remarks-autocom">
  231 + <input type="text" name="remarks">
  232 + </div>
  233 + </div>
  234 + </div>
  235 + </div>
  236 + </div>
  237 + </form>
  238 +
  239 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  240 + <span class="ct_line_lp_badge" ></span>
  241 + <button type="button" class="uk-button uk-modal-close">取消</button>
  242 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
  243 + </div>
  244 +</script>
  245 +
  246 +<script>
  247 + (function () {
  248 + var wrap = '#schedule-addsch-modal .toAndFroCont', sch, f1, f2, submitFun, stationRoutes;
  249 +
  250 + $(wrap).on('init', function (e, data) {
  251 + e.stopPropagation();
  252 + sch = data.sch;
  253 + submitFun = data.submitFun;
  254 + stationRoutes = data.stationRoutes;
  255 +
  256 + var htmlStr = template('add_toAndFro_sch-form-temp', sch);
  257 + $(wrap).append(htmlStr);
  258 + //字典转换
  259 + dictionaryUtils.transformDom($('.nt-dictionary', wrap));
  260 + //validation
  261 + $('.add-sch-form', wrap).formValidation({framework: 'uikit', locale: 'zh_CN'}).trigger('init-autoCom');
  262 + $('.add-sch-form [name=bcType]', wrap).trigger('change');
  263 +
  264 + f1 = $('.add-sch-form.one_form', wrap);
  265 + f2 = $('.add-sch-form.two_form', wrap);
  266 +
  267 + //默认1备注同步到2
  268 + $f('remarks', f1).on('input', function () {
  269 + $f('remarks', f2).val($(this).val());
  270 + });
  271 + //默认1备注同步到2
  272 + $('.remarks-autocom', f1).on('selectitem.uk.autocomplete', function (e, data, acobject) {
  273 + $f('remarks', f2).val(data.value);
  274 + });
  275 + //表单同步
  276 + $(f1).on('ct_callback', synchroFormData).trigger('ct_callback');
  277 + //修改1结束时间
  278 + $f('zdsj',f1).on('input', synchroFormData);
  279 + $('.ct_line_lp_badge', wrap).html(sch.xlName + ',&nbsp;'+sch.lpName);
  280 +
  281 + //表单校验提交相关
  282 + var dataArray;
  283 + var fs = $('.add-sch-form', wrap);
  284 + fs.on('success.form.fv', function (e) {
  285 + e.preventDefault();
  286 + dataArray.push($(this).serializeJSON());
  287 + $(this).data('valid', true);
  288 + if (allValidSuccess()) {
  289 + //开始post
  290 + var i = 0;
  291 + var inArr = [];
  292 + var upArr = [];
  293 + (function () {
  294 + var f = arguments.callee;
  295 + if (i >= dataArray.length) {
  296 + //前端数据更新
  297 + var last = inArr.pop();
  298 + gb_schedule_table.insertSchedule(last, upArr);
  299 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: last});
  300 +
  301 + try {
  302 + if(last.bcType=='in' || last.bcType=='out')
  303 + gb_data_basic.reload_stat_park_data();
  304 + }catch (e){
  305 + console.log(e);}
  306 + UIkit.modal('#schedule-addsch-modal').hide();
  307 + return;
  308 + }
  309 + submitFun(dataArray[i], function (rs) {
  310 + inArr.push(rs.t);
  311 + upArr = upArr.concat(rs.ts);
  312 + upArr.push(rs.t);
  313 + i++;
  314 + f();
  315 + });
  316 + })();
  317 + }
  318 + });
  319 + //提交
  320 + $('[type=submit]', wrap).on('click', function () {
  321 + $(this).addClass('disabled').attr('disabled', 'disabled');
  322 + dataArray = [];
  323 + fs.data('valid', false);
  324 + fs.formValidation('validate');
  325 + });
  326 + });
  327 +
  328 + function $f(name, f) {
  329 + return $('[name=' + name + ']', f);
  330 + }
  331 +
  332 + function allValidSuccess() {
  333 + var flag = true;
  334 + $('form.add-sch-form:visible', wrap).each(function (i, f) {
  335 + if (!$(f).data('valid')) {
  336 + flag = false;
  337 + return false;
  338 + }
  339 + });
  340 + return flag;
  341 + }
  342 +
  343 + /**
  344 + * 同步2个表单的数据
  345 + */
  346 + var bcTypes = {'normal': 'normal', 'region': 'region', 'out': 'in', 'in': 'out'};
  347 + var synchroFormData = function () {
  348 + //同步班次类型
  349 + var type = $f('bcType', f1).val();
  350 + if (bcTypes[type])
  351 + $f('bcType', f2).val(bcTypes[type]).trigger('change');
  352 + var updown = $f('xlDir', f1).val();
  353 +
  354 + //1 结束时间 = 2 开始时间
  355 + $f('fcsj', f2).val($f('zdsj', f1).val());
  356 + if (type != 'out' && type != 'in') {
  357 + //走向
  358 + $f('xlDir', f2).val(updown == 0 ? 1 : 0).trigger('change');
  359 +
  360 + //第一个表单终点 = 第二个起点
  361 + var oneZdName = $('[name=zdzCode] option:selected', f1).text();
  362 + $f('qdzCode', f2).val(searchParallelStation(oneZdName, updown == 0 ? 1 : 0));
  363 + //第一个表单起点 = 第二个终点
  364 + var oneQdName = $('[name=qdzCode] option:selected', f1).text();
  365 + $f('zdzCode', f2).val(searchParallelStation(oneQdName, updown == 0 ? 1 : 0)).trigger('change');
  366 + }
  367 + else {
  368 + //进出场走向相同
  369 + $f('xlDir', f2).val(updown).trigger('change');
  370 + //第一个表单终点 = 第二个起点
  371 + $f('qdzCode', f2).val($f('zdzCode', f1).val());
  372 + //第一个表单起点 = 第二个终点
  373 + $f('zdzCode', f2).val($f('qdzCode', f1).val()).trigger('change');
  374 + }
  375 + };
  376 +
  377 +
  378 + //返回另一个走向对应的站点
  379 + function searchParallelStation(stationName, updown) {
  380 + var routes = stationRoutes[updown]
  381 + , len = routes.length;
  382 +
  383 + for (var i = 0; i < len; i++) {
  384 + if (routes[i].stationName == stationName)
  385 + return routes[i].stationCode;
  386 + }
  387 + }
  388 + })();
389 </script> 389 </script>
390 \ No newline at end of file 390 \ No newline at end of file
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/main.html
@@ -115,7 +115,7 @@ @@ -115,7 +115,7 @@
115 zdz.trigger('change'); 115 zdz.trigger('change');
116 f.trigger('ct_callback'); 116 f.trigger('ct_callback');
117 } 117 }
118 - 118 +
119 function reCalcInputs_station() { 119 function reCalcInputs_station() {
120 var f = $(this).parents('form'), 120 var f = $(this).parents('form'),
121 bcType = $('[name=bcType]', f).val(), 121 bcType = $('[name=bcType]', f).val(),
@@ -173,7 +173,7 @@ @@ -173,7 +173,7 @@
173 f.trigger('ct_callback'); 173 f.trigger('ct_callback');
174 } 174 }
175 175
176 - 176 +
177 function reCalcEndTime() { 177 function reCalcEndTime() {
178 var f = $(this).parents('.add-sch-form') 178 var f = $(this).parents('.add-sch-form')
179 , startDate = $f('fcsj', f).val()//开始时间 179 , startDate = $f('fcsj', f).val()//开始时间
@@ -198,7 +198,7 @@ @@ -198,7 +198,7 @@
198 var qc_time=upDown==0?information.upTravelTime:information.downTravelTime, 198 var qc_time=upDown==0?information.upTravelTime:information.downTravelTime,
199 qc_mileage=upDown==0?information.upMileage:information.downMileage; 199 qc_mileage=upDown==0?information.upMileage:information.downMileage;
200 200
201 - time = gb_common.mul(gb_common.accDiv(qc_time, qc_mileage), mileage); 201 + time = gb_common.mul(gb_common.accDiv(qc_time, qc_mileage), mileage);
202 } 202 }
203 } 203 }
204 204
@@ -340,4 +340,4 @@ @@ -340,4 +340,4 @@
340 } 340 }
341 })(); 341 })();
342 </script> 342 </script>
343 -</div> 343 -</div>
  344 +</div>
344 \ No newline at end of file 345 \ No newline at end of file
src/main/resources/timetable.proto
1 -syntax = "proto3";  
2 -  
3 -package timetable;  
4 -  
5 -option java_package = "com.bsth.service.schedule.utils";  
6 -option java_outer_classname = "TimeTableProto";  
7 -  
8 -  
9 -// 描述时刻表的google的二进制protobuf描述  
10 -// 目前用在备份时刻表的信息  
11 -// 备份的时刻表表(TODO:)  
12 -  
13 -message TTInfo {  
14 - uint64 id = 1; // 时刻表id  
15 - string name = 2; // 时刻表名字  
16 -  
17 - uint32 xl = 3; // 线路id  
18 - string xlName = 4; // 线路名称  
19 - string xlDir = 5; // 线路上下行  
20 -  
21 - uint64 qyrq = 6; // 启用日期  
22 - bool isEnableDisTemplate = 7; // 是否启用调度模版  
23 - bool isCancel = 8; // 是否删除(标记)  
24 -  
25 - string ruleDays = 9; // 常规有效日(1-7表示星期一到星期日,多个用逗号隔开)  
26 - string specialDays = 10; // 特殊有效日期(格式:2001-01-01,多个用逗号隔开)  
27 -  
28 - uint32 createUser = 11; // 创建用户id  
29 - string createUserName = 12; // 创建用户姓名  
30 - uint32 updateUser = 13; // 更新用户id  
31 - string updateUserName = 14; // 更新用户姓名  
32 - uint64 createDate = 15; // 创建日期  
33 - uint64 updateDate = 16; // 更新日期  
34 -  
35 - // list  
36 - repeated TTInfoDetail bcInfo = 17;  
37 -}  
38 -  
39 -message TTInfoDetail {  
40 - uint64 id = 1; // 班次明细id  
41 - // TODO:时刻表主对象关联  
42 - uint32 xl = 2; // 线路id  
43 - string xlName = 3; // 线路名字  
44 -  
45 - uint64 lp = 4; // 路牌id  
46 - string lpName = 5; // 路牌名字  
47 -  
48 - uint32 fcno = 6; // 发车顺序号  
49 - string xlDir = 7; // 线路方向  
50 -  
51 - string qdzCode = 8; // 起站点代码(bsth_c_station,bsth_c_car_park 里的编码)  
52 - string qdzName = 9; // 起站点名字(bsth_c_stationroute,bsth_c_car_park里的名字)  
53 - string zdzCode = 10; // 终点站代码(bsth_c_station,bsth_c_car_park 里的编码)  
54 - string zdzName = 11; // 终点站名字(bsth_c_stationroute,bsth_c_car_park里的名字)  
55 -  
56 - string fcsj = 12; // 发车时间(格式 HH:mm)  
57 - uint32 bcs = 13; // 对应班次数  
58 - double jhlc = 14; // 计划里程  
59 - uint32 bcsj = 15; // 班次历时  
60 -  
61 - string bcType = 16; // 班次类型 字典type=ScheduleType  
62 -  
63 - bool isFB = 17; // 是否分班(表示这个班次是否是晚班班次,就是换另外一个驾驶员开)  
64 - bool isTS = 18; // 是否停驶(表示此班次执行完成,停在终点站,不进场)  
65 - string remark = 19; // 备注  
66 -  
67 -}  
68 -  
69 -  
70 -  
71 -  
72 -  
73 -  
74 -  
75 -  
76 -  
77 -  
78 -  
79 -  
80 -  
81 -  
82 -  
83 -  
84 -  
85 -  
86 -  
87 -  
88 -  
89 -  
90 -  
91 -  
92 - 1 +syntax = "proto3";
  2 +
  3 +package timetable;
  4 +
  5 +option java_package = "com.bsth.service.schedule.utils";
  6 +option java_outer_classname = "TimeTableProto";
  7 +
  8 +
  9 +// 描述时刻表的google的二进制protobuf描述
  10 +// 目前用在备份时刻表的信息
  11 +// 备份的时刻表表(TODO:)
  12 +
  13 +message TTInfo {
  14 + uint64 id = 1; // 时刻表id
  15 + string name = 2; // 时刻表名字
  16 +
  17 + uint32 xl = 3; // 线路id
  18 + string xlName = 4; // 线路名称
  19 + string xlDir = 5; // 线路上下行
  20 +
  21 + uint64 qyrq = 6; // 启用日期
  22 + bool isEnableDisTemplate = 7; // 是否启用调度模版
  23 + bool isCancel = 8; // 是否删除(标记)
  24 +
  25 + string ruleDays = 9; // 常规有效日(1-7表示星期一到星期日,多个用逗号隔开)
  26 + string specialDays = 10; // 特殊有效日期(格式:2001-01-01,多个用逗号隔开)
  27 +
  28 + uint32 createUser = 11; // 创建用户id
  29 + string createUserName = 12; // 创建用户姓名
  30 + uint32 updateUser = 13; // 更新用户id
  31 + string updateUserName = 14; // 更新用户姓名
  32 + uint64 createDate = 15; // 创建日期
  33 + uint64 updateDate = 16; // 更新日期
  34 +
  35 + // list
  36 + repeated TTInfoDetail bcInfo = 17;
  37 +}
  38 +
  39 +message TTInfoDetail {
  40 + uint64 id = 1; // 班次明细id
  41 + // TODO:时刻表主对象关联
  42 + uint32 xl = 2; // 线路id
  43 + string xlName = 3; // 线路名字
  44 +
  45 + uint64 lp = 4; // 路牌id
  46 + string lpName = 5; // 路牌名字
  47 +
  48 + uint32 fcno = 6; // 发车顺序号
  49 + string xlDir = 7; // 线路方向
  50 +
  51 + string qdzCode = 8; // 起站点代码(bsth_c_station,bsth_c_car_park 里的编码)
  52 + string qdzName = 9; // 起站点名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  53 + string zdzCode = 10; // 终点站代码(bsth_c_station,bsth_c_car_park 里的编码)
  54 + string zdzName = 11; // 终点站名字(bsth_c_stationroute,bsth_c_car_park里的名字)
  55 +
  56 + string fcsj = 12; // 发车时间(格式 HH:mm)
  57 + uint32 bcs = 13; // 对应班次数
  58 + double jhlc = 14; // 计划里程
  59 + uint32 bcsj = 15; // 班次历时
  60 +
  61 + string bcType = 16; // 班次类型 字典type=ScheduleType
  62 +
  63 + bool isFB = 17; // 是否分班(表示这个班次是否是晚班班次,就是换另外一个驾驶员开)
  64 + bool isTS = 18; // 是否停驶(表示此班次执行完成,停在终点站,不进场)
  65 + string remark = 19; // 备注
  66 +
  67 +}
  68 +
  69 +
  70 +
  71 +
  72 +
  73 +
  74 +
  75 +
  76 +
  77 +
  78 +
  79 +
  80 +
  81 +
  82 +
  83 +
  84 +
  85 +
  86 +
  87 +
  88 +
  89 +
  90 +
  91 +
  92 +