Commit 269f72383a889baa4bab974dea1aa0d9d2586839

Authored by 廖磊
2 parents 57014855 04e27efb

Merge branch 'minhang' of

http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
Showing 49 changed files with 8449 additions and 251 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/
@@ -292,6 +292,13 @@ @@ -292,6 +292,13 @@
292 <artifactId>mina-core</artifactId> 292 <artifactId>mina-core</artifactId>
293 <version>2.0.13</version> 293 <version>2.0.13</version>
294 </dependency> 294 </dependency>
  295 +
  296 + <dependency>
  297 + <groupId>com.google.protobuf</groupId>
  298 + <artifactId>protobuf-java</artifactId>
  299 + <version>3.3.0</version>
  300 + </dependency>
  301 +
295 </dependencies> 302 </dependencies>
296 303
297 <dependencyManagement> 304 <dependencyManagement>
src/main/java/com/bsth/Application.java
@@ -10,6 +10,8 @@ import org.springframework.context.annotation.Bean; @@ -10,6 +10,8 @@ import org.springframework.context.annotation.Bean;
10 import org.springframework.context.annotation.Primary; 10 import org.springframework.context.annotation.Primary;
11 import org.springframework.transaction.annotation.EnableTransactionManagement; 11 import org.springframework.transaction.annotation.EnableTransactionManagement;
12 12
  13 +import java.util.Calendar;
  14 +import java.util.Date;
13 import java.util.concurrent.Executors; 15 import java.util.concurrent.Executors;
14 import java.util.concurrent.ScheduledExecutorService; 16 import java.util.concurrent.ScheduledExecutorService;
15 17
src/main/java/com/bsth/controller/gps/GpsController.java
@@ -3,12 +3,18 @@ package com.bsth.controller.gps; @@ -3,12 +3,18 @@ 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;
  8 +import com.bsth.service.gps.entity.GpsSpeed;
  9 +import com.bsth.util.PageObject;
7 import com.google.common.base.Splitter; 10 import com.google.common.base.Splitter;
8 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.web.bind.annotation.*; 12 import org.springframework.web.bind.annotation.*;
10 13
11 import javax.servlet.http.HttpServletResponse; 14 import javax.servlet.http.HttpServletResponse;
  15 +
  16 +import java.text.ParseException;
  17 +import java.util.ArrayList;
12 import java.util.List; 18 import java.util.List;
13 import java.util.Map; 19 import java.util.Map;
14 20
@@ -179,4 +185,22 @@ public class GpsController { @@ -179,4 +185,22 @@ public class GpsController {
179 @RequestParam(defaultValue = "DESC") String direction){ 185 @RequestParam(defaultValue = "DESC") String direction){
180 return gpsService.safeDrivList(map , page, size, order, direction); 186 return gpsService.safeDrivList(map , page, size, order, direction);
181 } 187 }
  188 +
  189 + @RequestMapping(value = "/findPosition", method = RequestMethod.GET)
  190 + public List<GpsSpeed> findPosition(@RequestParam String vehicle,@RequestParam String startdate,@RequestParam String enddate) throws ParseException {
  191 + String deviceid = BasicData.deviceId2NbbmMap.inverse().get(vehicle);
  192 + List<GpsSpeed> listGpsSpeed = new ArrayList<GpsSpeed>();
  193 + listGpsSpeed = gpsService.findPosition(deviceid,startdate,enddate);
  194 + return listGpsSpeed;
  195 + }
  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 +
182 } 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/controller/sys/IntervalController.java 0 → 100644
  1 +package com.bsth.controller.sys;
  2 +
  3 +import java.util.Map;
  4 +
  5 +import org.springframework.beans.factory.annotation.Autowired;
  6 +import org.springframework.web.bind.annotation.RequestMapping;
  7 +import org.springframework.web.bind.annotation.RequestMethod;
  8 +import org.springframework.web.bind.annotation.RequestParam;
  9 +import org.springframework.web.bind.annotation.RestController;
  10 +
  11 +import com.alibaba.fastjson.JSON;
  12 +import com.bsth.entity.sys.Interval;
  13 +import com.bsth.service.sys.IntervalService;
  14 +
  15 +@RestController
  16 +@RequestMapping("interval")
  17 +public class IntervalController {
  18 +
  19 + @Autowired
  20 + IntervalService intervalService;
  21 +
  22 + @RequestMapping(value = "/save", method = RequestMethod.POST)
  23 + public Map<String, Object> save(@RequestParam String array){
  24 + return intervalService.saveList(JSON.parseArray(array, Interval.class));
  25 + }
  26 +}
src/main/java/com/bsth/data/Station2ParkBuffer.java
@@ -2,6 +2,7 @@ package com.bsth.data; @@ -2,6 +2,7 @@ package com.bsth.data;
2 2
3 import com.bsth.common.ResponseCode; 3 import com.bsth.common.ResponseCode;
4 import com.bsth.entity.realcontrol.ChildTaskPlan; 4 import com.bsth.entity.realcontrol.ChildTaskPlan;
  5 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
5 import com.bsth.entity.realcontrol.StationToPark; 6 import com.bsth.entity.realcontrol.StationToPark;
6 import com.bsth.repository.realcontrol.StationToParkRepository; 7 import com.bsth.repository.realcontrol.StationToParkRepository;
7 import com.bsth.util.Arith; 8 import com.bsth.util.Arith;
@@ -28,14 +29,13 @@ public class Station2ParkBuffer implements CommandLineRunner { @@ -28,14 +29,13 @@ public class Station2ParkBuffer implements CommandLineRunner {
28 29
29 private static ArrayListMultimap listMultimap; 30 private static ArrayListMultimap listMultimap;
30 31
31 - private static Set<StationToPark> pstBuff; 32 + private static Set<StationToPark> pstBuff = new HashSet<>();
32 33
33 static Logger log = LoggerFactory.getLogger(Station2ParkBuffer.class); 34 static Logger log = LoggerFactory.getLogger(Station2ParkBuffer.class);
34 35
35 @Override 36 @Override
36 public void run(String... strings) throws Exception { 37 public void run(String... strings) throws Exception {
37 listMultimap = ArrayListMultimap.create(); 38 listMultimap = ArrayListMultimap.create();
38 - pstBuff = new HashSet<>();  
39 Iterator<StationToPark> iterator = stationToParkRepository.findAll().iterator(); 39 Iterator<StationToPark> iterator = stationToParkRepository.findAll().iterator();
40 StationToPark stp; 40 StationToPark stp;
41 while (iterator.hasNext()) { 41 while (iterator.hasNext()) {
@@ -102,6 +102,47 @@ public class Station2ParkBuffer implements CommandLineRunner { @@ -102,6 +102,47 @@ public class Station2ParkBuffer implements CommandLineRunner {
102 } 102 }
103 } 103 }
104 104
  105 + public static void put(ScheduleRealInfo sch){
  106 + try{
  107 + String type = sch.getBcType();
  108 + String lineCode = sch.getXlBm(), sName, eName;
  109 +
  110 + if (type.equals("in")) {
  111 + sName = sch.getQdzName();
  112 + eName = sch.getZdzName();
  113 + } else if (type.equals("out")) {
  114 + eName = sch.getQdzName();
  115 + sName = sch.getZdzName();
  116 + } else
  117 + return;
  118 +
  119 + long dt = sch.getZdsjT() - sch.getDfsjT();
  120 + Float time = Float.parseFloat(String.valueOf(Arith.div(Arith.div(dt, 1000), 60)));
  121 + Float mileage = Float.parseFloat(sch.getJhlc().toString());
  122 +
  123 + StationToPark stp = get(lineCode, sName, eName);
  124 + if (stp == null) {
  125 + stp = new StationToPark();
  126 + stp.setLineCode(lineCode);
  127 + stp.setStationName(sName);
  128 + stp.setParkName(eName);
  129 + listMultimap.put(lineCode, stp);
  130 + }
  131 +
  132 + if (type.equals("in")) {
  133 + stp.setTime1(time);
  134 + stp.setMileage1(mileage);
  135 + } else {
  136 + stp.setTime2(time);
  137 + stp.setMileage2(mileage);
  138 + }
  139 +
  140 + pstBuff.add(stp);
  141 + }catch (Exception e){
  142 + log.error("", e);
  143 + }
  144 + }
  145 +
105 public static Float calcMinute(ChildTaskPlan ctask) { 146 public static Float calcMinute(ChildTaskPlan ctask) {
106 long t = 0; 147 long t = 0;
107 148
src/main/java/com/bsth/data/pilot80/PilotReport.java
@@ -189,7 +189,7 @@ public class PilotReport { @@ -189,7 +189,7 @@ public class PilotReport {
189 } 189 }
190 190
191 public boolean isEmpty(Double v) { 191 public boolean isEmpty(Double v) {
192 - return v == null || v.equals(0); 192 + return v == null || v.equals(0.0);
193 } 193 }
194 194
195 public void defaultReply(String nbbm, short requestCode, boolean agree) { 195 public void defaultReply(String nbbm, short requestCode, boolean agree) {
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -944,8 +944,11 @@ public class DayOfSchedule { @@ -944,8 +944,11 @@ public class DayOfSchedule {
944 ScheduleRealInfo sch = schAttrCalculator.calcCurrentExecSch(list); 944 ScheduleRealInfo sch = schAttrCalculator.calcCurrentExecSch(list);
945 carExecutePlanMap.put(nbbm, sch); 945 carExecutePlanMap.put(nbbm, sch);
946 946
947 - if(sch==null) 947 + if(sch==null){
  948 + logger.info("车辆" + nbbm + "无可执行任务,切换至非营运状态");
  949 + DirectivePushQueue.put6003(nbbm, 1, Integer.parseInt(sch.getXlDir()), null, "系统");
948 return; 950 return;
  951 + }
949 try { 952 try {
950 GpsEntity gps = gpsRealData.get(BasicData.deviceId2NbbmMap.inverse().get(nbbm)); 953 GpsEntity gps = gpsRealData.get(BasicData.deviceId2NbbmMap.inverse().get(nbbm));
951 if(gps != null && gps.isOnline()){ 954 if(gps != null && gps.isOnline()){
src/main/java/com/bsth/entity/excep/Speeding.java
@@ -52,6 +52,33 @@ public class Speeding { @@ -52,6 +52,33 @@ public class Speeding {
52 private Float lat; 52 private Float lat;
53 53
54 /** 54 /**
  55 + * 超速结束时的经度
  56 + */
  57 + private Float endlon;
  58 +
  59 + public Float getEndlon() {
  60 + return endlon;
  61 + }
  62 +
  63 + public void setEndlon(Float endlon) {
  64 + this.endlon = endlon;
  65 + }
  66 +
  67 + public Float getEndlat() {
  68 + return endlat;
  69 + }
  70 +
  71 + public void setEndlat(Float endlat) {
  72 + this.endlat = endlat;
  73 + }
  74 +
  75 + /**
  76 + * 超速结束时的纬度
  77 + */
  78 + private Float endlat;
  79 +
  80 +
  81 + /**
55 * 速度 82 * 速度
56 */ 83 */
57 private Float speed; 84 private Float speed;
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/entity/sys/Interval.java 0 → 100644
  1 +package com.bsth.entity.sys;
  2 +
  3 +import java.util.Date;
  4 +
  5 +import javax.persistence.Column;
  6 +import javax.persistence.Entity;
  7 +import javax.persistence.GeneratedValue;
  8 +import javax.persistence.GenerationType;
  9 +import javax.persistence.Id;
  10 +import javax.persistence.Table;
  11 +
  12 +
  13 +@Entity
  14 +@Table(name = "bsth_c_interval")
  15 +public class Interval {
  16 +
  17 + @Id
  18 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  19 + private Integer id;
  20 +
  21 + /** 大间隔等级 */
  22 + private String level;
  23 + /** 高峰*/
  24 + private Integer peak;
  25 + public Integer getPeak() {
  26 + return peak;
  27 + }
  28 +
  29 + public void setPeak(Integer peak) {
  30 + this.peak = peak;
  31 + }
  32 +
  33 + public Integer getTrough() {
  34 + return trough;
  35 + }
  36 +
  37 + public void setTrough(Integer trough) {
  38 + this.trough = trough;
  39 + }
  40 +
  41 +
  42 + public Integer getCreateBy() {
  43 + return createBy;
  44 + }
  45 +
  46 + public void setCreateBy(Integer createBy) {
  47 + this.createBy = createBy;
  48 + }
  49 +
  50 + public Date getCreateDate() {
  51 + return createDate;
  52 + }
  53 +
  54 + public void setCreateDate(Date createDate) {
  55 + this.createDate = createDate;
  56 + }
  57 +
  58 + public Integer getUpdateBy() {
  59 + return updateBy;
  60 + }
  61 +
  62 + public void setUpdateBy(Integer updateBy) {
  63 + this.updateBy = updateBy;
  64 + }
  65 +
  66 + public Date getUpdateDate() {
  67 + return updateDate;
  68 + }
  69 +
  70 + public void setUpdateDate(Date updateDate) {
  71 + this.updateDate = updateDate;
  72 + }
  73 +
  74 + /** 低谷 */
  75 + private Integer trough;
  76 +
  77 + @Column(name = "create_by")
  78 + private Integer createBy;
  79 +
  80 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  81 + private Date createDate;
  82 +
  83 + @Column(name = "update_by")
  84 + private Integer updateBy;
  85 +
  86 + @Column(name = "update_date", columnDefinition = "timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
  87 + private Date updateDate;
  88 +
  89 + public Integer getId() {
  90 + return id;
  91 + }
  92 +
  93 + public void setId(Integer id) {
  94 + this.id = id;
  95 + }
  96 +
  97 + public String getLevel() {
  98 + return level;
  99 + }
  100 +
  101 + public void setLevel(String level) {
  102 + this.level = level;
  103 + }
  104 +
  105 +}
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/repository/sys/IntervalRepository.java 0 → 100644
  1 +package com.bsth.repository.sys;
  2 +
  3 +
  4 +import org.springframework.stereotype.Repository;
  5 +import com.bsth.entity.sys.Interval;
  6 +import com.bsth.repository.BaseRepository;
  7 +
  8 +@Repository
  9 +public interface IntervalRepository extends BaseRepository<Interval, Integer> {
  10 +
  11 +}
src/main/java/com/bsth/service/excep/impl/SpeedingServiceImpl.java
@@ -9,21 +9,22 @@ import java.text.SimpleDateFormat; @@ -9,21 +9,22 @@ import java.text.SimpleDateFormat;
9 import java.util.ArrayList; 9 import java.util.ArrayList;
10 import java.util.Date; 10 import java.util.Date;
11 import java.util.HashMap; 11 import java.util.HashMap;
  12 +import java.util.Iterator;
12 import java.util.List; 13 import java.util.List;
13 import java.util.Map; 14 import java.util.Map;
14 15
15 import org.springframework.jdbc.core.JdbcTemplate; 16 import org.springframework.jdbc.core.JdbcTemplate;
16 -import org.springframework.jdbc.core.RowMapper;  
17 import org.springframework.stereotype.Service; 17 import org.springframework.stereotype.Service;
18 import org.springframework.beans.factory.annotation.Autowired; 18 import org.springframework.beans.factory.annotation.Autowired;
19 19
20 import com.bsth.data.BasicData; 20 import com.bsth.data.BasicData;
21 import com.bsth.entity.excep.Speeding; 21 import com.bsth.entity.excep.Speeding;
22 -import com.bsth.entity.realcontrol.ScheduleRealInfo;  
23 import com.bsth.service.excep.SpeedingService; 22 import com.bsth.service.excep.SpeedingService;
24 import com.bsth.util.EchartConver; 23 import com.bsth.util.EchartConver;
25 import com.bsth.util.PageHelper; 24 import com.bsth.util.PageHelper;
26 import com.bsth.util.PageObject; 25 import com.bsth.util.PageObject;
  26 +import com.bsth.util.TransGPS;
  27 +import com.bsth.util.TransGPS.Location;
27 import com.bsth.util.db.DBUtils_MS; 28 import com.bsth.util.db.DBUtils_MS;
28 import com.github.abel533.echarts.Option; 29 import com.github.abel533.echarts.Option;
29 import com.google.gson.Gson; 30 import com.google.gson.Gson;
@@ -83,7 +84,6 @@ public class SpeedingServiceImpl implements SpeedingService { @@ -83,7 +84,6 @@ public class SpeedingServiceImpl implements SpeedingService {
83 84
84 } 85 }
85 86
86 -  
87 /*sql +=" order by id limit ?,?";*/ 87 /*sql +=" order by id limit ?,?";*/
88 88
89 89
@@ -104,17 +104,23 @@ public class SpeedingServiceImpl implements SpeedingService { @@ -104,17 +104,23 @@ public class SpeedingServiceImpl implements SpeedingService {
104 } 104 }
105 105
106 static List<Speeding> resultSet2Set(ResultSet rs) throws SQLException{ 106 static List<Speeding> resultSet2Set(ResultSet rs) throws SQLException{
107 - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 107 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
108 List<Speeding> list=new ArrayList<Speeding>(); 108 List<Speeding> list=new ArrayList<Speeding>();
109 Speeding speeding; 109 Speeding speeding;
  110 + Float lon, lat;
  111 + Location location;
110 while(rs.next()){ 112 while(rs.next()){
  113 + lon = rs.getFloat("lon");
  114 + lat = rs.getFloat("lat");
  115 + location = TransGPS.LocationMake(lon, lat);
  116 + location = TransGPS.bd_encrypt(TransGPS.transformFromWGSToGCJ(location));
111 speeding=new Speeding(); 117 speeding=new Speeding();
112 speeding.setId(Integer.valueOf(rs.getObject("id").toString())); 118 speeding.setId(Integer.valueOf(rs.getObject("id").toString()));
113 - speeding.setLat(Float.valueOf(rs.getObject("lat").toString())); 119 + speeding.setLon((float)location.getLng());
  120 + speeding.setLat((float)location.getLat());
114 speeding.setLine(Integer.valueOf(rs.getObject("line").toString())); 121 speeding.setLine(Integer.valueOf(rs.getObject("line").toString()));
115 //run 时注解 122 //run 时注解
116 speeding.setLineName(BasicData.lineCode2NameMap.get(speeding.getLine().toString())); 123 speeding.setLineName(BasicData.lineCode2NameMap.get(speeding.getLine().toString()));
117 - speeding.setLon(Float.valueOf(rs.getObject("lon").toString()));  
118 speeding.setSpeed(Float.valueOf(rs.getObject("speed").toString())); 124 speeding.setSpeed(Float.valueOf(rs.getObject("speed").toString()));
119 speeding.setTimestamp((Long.valueOf(rs.getObject("timestamp").toString()))); 125 speeding.setTimestamp((Long.valueOf(rs.getObject("timestamp").toString())));
120 speeding.setTimestampDate(sdf.format(new Date(speeding.getTimestamp()))); 126 speeding.setTimestampDate(sdf.format(new Date(speeding.getTimestamp())));
@@ -127,14 +133,12 @@ public class SpeedingServiceImpl implements SpeedingService { @@ -127,14 +133,12 @@ public class SpeedingServiceImpl implements SpeedingService {
127 133
128 @Override 134 @Override
129 public PageObject<Speeding> Pagequery(Map<String, Object> map) { 135 public PageObject<Speeding> Pagequery(Map<String, Object> map) {
130 - String sql="select count(*) record from bsth_c_speeding where 1=1 "; 136 +/* String sql="select count(*) record from bsth_c_speeding where 1=1 ";
131 Object line=map.get("line"); 137 Object line=map.get("line");
132 Object nbbm=map.get("nbbm"); 138 Object nbbm=map.get("nbbm");
133 Object updown=map.get("updown"); 139 Object updown=map.get("updown");
134 Object startDate=map.get("startDate"); 140 Object startDate=map.get("startDate");
135 Object endDate=map.get("endDate"); 141 Object endDate=map.get("endDate");
136 - //时间转换  
137 - SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
138 142
139 if(line!=null){ 143 if(line!=null){
140 sql +=" and line like'%"+line.toString().trim()+"%'"; 144 sql +=" and line like'%"+line.toString().trim()+"%'";
@@ -186,31 +190,61 @@ public class SpeedingServiceImpl implements SpeedingService { @@ -186,31 +190,61 @@ public class SpeedingServiceImpl implements SpeedingService {
186 e.printStackTrace(); 190 e.printStackTrace();
187 }finally { 191 }finally {
188 DBUtils_MS.close(rs, ps, conn); 192 DBUtils_MS.close(rs, ps, conn);
189 - } 193 + }*/
190 194
  195 + //时间转换
  196 + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
191 List<Speeding> list=findAll(map); 197 List<Speeding> list=findAll(map);
192 List<Speeding> listResult = new ArrayList<Speeding>(); 198 List<Speeding> listResult = new ArrayList<Speeding>();
193 int curPage;//页码 199 int curPage;//页码
194 int pageData;//每页的记录条数 200 int pageData;//每页的记录条数
195 int start;//起始数据下标 201 int start;//起始数据下标
196 int totalPage;//总页数 202 int totalPage;//总页数
  203 + int totalData = 0;
197 if(list.size()>1){ 204 if(list.size()>1){
198 - Speeding speedingNow;//下标为i的车  
199 - Speeding speedingLast;//下标为i-1的车 205 + Speeding speedingNow;//下标为i的车辆行驶记录
  206 + Speeding speedingLast;//下标为i-1的车辆行驶记录
  207 + Speeding spped = null;//整合后的车辆行驶记录
200 String strNow; 208 String strNow;
201 String strLast; 209 String strLast;
  210 + boolean Flag = false;//判断是否有连续超速记录,默认没有
202 for(int i = 1;i<list.size();i++){ 211 for(int i = 1;i<list.size();i++){
203 speedingNow = list.get(i); 212 speedingNow = list.get(i);
204 speedingLast = list.get(i-1); 213 speedingLast = list.get(i-1);
205 - strNow = speedingNow.getVehicle()+speedingNow.getLine()+speedingNow.getUpDown();//同一车辆同一线路同一方向 214 + strNow = speedingNow.getVehicle()+speedingNow.getLine()+speedingNow.getUpDown();
206 strLast = speedingLast.getVehicle()+speedingLast.getLine()+speedingLast.getUpDown(); 215 strLast = speedingLast.getVehicle()+speedingLast.getLine()+speedingLast.getUpDown();
207 - //同一车辆同一线路同一方向并且该记录的超速的开始时间减去上一条超速记录的结束时间小于等于10s,证明该车超速。//PS:祛除数据库中的重复发送数据  
208 - if(strNow.equals(strLast) && Math.abs(speedingNow.getTimestamp()-speedingLast.getTimestamp())<=10*1000 && (speedingNow.getTimestamp()-speedingLast.getTimestamp()!=0)){  
209 - speedingLast.setEndtimestamp(speedingNow.getTimestamp());  
210 - speedingLast.setEndtimestampDate(sdf.format(new Date(speedingNow.getTimestamp())));//设置结束时间  
211 - 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 + }
212 } 239 }
213 } 240 }
  241 + Iterator<Speeding> speedIt = listResult.iterator();
  242 + while(speedIt.hasNext()){
  243 + Speeding speeding = speedIt.next();
  244 + if(speeding.getEndtimestamp()-speeding.getTimestamp()<=1000){
  245 + speedIt.remove();
  246 + }
  247 + }
214 248
215 totalData = listResult.size();//总记录条数。 249 totalData = listResult.size();//总记录条数。
216 if(map.get("curPage") == null || map.get("curPage").equals("0")){ 250 if(map.get("curPage") == null || map.get("curPage").equals("0")){
src/main/java/com/bsth/service/gps/GpsService.java
1 package com.bsth.service.gps; 1 package com.bsth.service.gps;
2 2
  3 +import com.bsth.data.gpsdata.GpsEntity;
3 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;
4 import com.bsth.service.gps.entity.GpsSpeed_DTO; 6 import com.bsth.service.gps.entity.GpsSpeed_DTO;
  7 +import com.bsth.util.PageObject;
5 8
6 import javax.servlet.http.HttpServletResponse; 9 import javax.servlet.http.HttpServletResponse;
  10 +
  11 +import java.text.ParseException;
7 import java.util.List; 12 import java.util.List;
8 import java.util.Map; 13 import java.util.Map;
9 14
@@ -38,4 +43,9 @@ public interface GpsService { @@ -38,4 +43,9 @@ public interface GpsService {
38 void abnormalExcel(String nbbm, long st, long et, HttpServletResponse resp); 43 void abnormalExcel(String nbbm, long st, long et, HttpServletResponse resp);
39 44
40 void arrivalExcel(String nbbm, long st, long et, HttpServletResponse resp); 45 void arrivalExcel(String nbbm, long st, long et, HttpServletResponse resp);
  46 +
  47 + List<GpsSpeed> findPosition(String deviceid, String startdate,
  48 + String enddate) throws ParseException;
  49 +
  50 + PageObject<GpsSpeed> Pagequery(Map<String, Object> map);
41 } 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,7 +46,10 @@ import java.net.URLEncoder; @@ -44,7 +46,10 @@ 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;
  51 +import java.text.ParseException;
  52 +import java.text.SimpleDateFormat;
48 import java.util.*; 53 import java.util.*;
49 54
50 @Service 55 @Service
@@ -804,7 +809,7 @@ public class GpsServiceImpl implements GpsService { @@ -804,7 +809,7 @@ public class GpsServiceImpl implements GpsService {
804 @Override 809 @Override
805 public List<GpsSpeed_DTO> speeds(String nbbm, long st, long et) { 810 public List<GpsSpeed_DTO> speeds(String nbbm, long st, long et) {
806 String deviceId = BasicData.deviceId2NbbmMap.inverse().get(nbbm); 811 String deviceId = BasicData.deviceId2NbbmMap.inverse().get(nbbm);
807 - String sql = "select vehicle, line, up_down, lon, lat, speed,timestamp from bsth_c_speeding where vehicle=? and timestamp>? and timestamp<?"; 812 + String sql = "select vehicle, line, up_down, lon, lat, speed,timestamp from bsth_c_GpsSpeed where vehicle=? and timestamp>? and timestamp<?";
808 813
809 return GpsSpeed_DTO.create(new JdbcTemplate(DBUtils_MS.getDataSource()).queryForList(sql, deviceId, st * 1000, et * 1000)); 814 return GpsSpeed_DTO.create(new JdbcTemplate(DBUtils_MS.getDataSource()).queryForList(sql, deviceId, st * 1000, et * 1000));
810 } 815 }
@@ -981,4 +986,235 @@ public class GpsServiceImpl implements GpsService { @@ -981,4 +986,235 @@ public class GpsServiceImpl implements GpsService {
981 } 986 }
982 return true; 987 return true;
983 } 988 }
  989 +
  990 + @Override
  991 + public List<GpsSpeed> findPosition(String deviceid, String startdate,
  992 + String enddate) throws ParseException{
  993 + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  994 + Calendar c = Calendar.getInstance();
  995 + Date date = sdf.parse(startdate);
  996 + c.setTime(date);
  997 + int daysYear = c.get(Calendar.DAY_OF_YEAR);//获取当前是今年的第几天。
  998 +
  999 + long startTime = sdf.parse(startdate).getTime();
  1000 + long endTime = sdf.parse(enddate).getTime();
  1001 +
  1002 + String sql = "select DEVICE_ID,LON,LAT,TS,INOUT_STOP,SERVICE_STATE ,speed_gps from bsth_c_gps_info where days_year=? and device_id=? and ts >= ? and ts <= ?" +
  1003 + " ORDER BY TS ";
  1004 + Connection conn = null;
  1005 + PreparedStatement ps = null;
  1006 + ResultSet rs = null;
  1007 + List<GpsSpeed> listResult = new ArrayList<GpsSpeed>();
  1008 + GpsSpeed gpsSpeed = null;
  1009 + try {
  1010 + conn = DBUtils_MS.getConnection();
  1011 + ps = conn.prepareStatement(sql);
  1012 + ps.setInt(1, daysYear);
  1013 + ps.setString(2, deviceid);
  1014 + ps.setLong(3,startTime);
  1015 + ps.setLong(4,endTime);
  1016 + rs = ps.executeQuery();
  1017 + Float lon, lat;
  1018 + Location location;
  1019 + while (rs.next()) {
  1020 + gpsSpeed = new GpsSpeed();
  1021 + // to 百度坐标
  1022 + lon = rs.getFloat("LON");
  1023 + lat = rs.getFloat("LAT");
  1024 + location = TransGPS.LocationMake(lon, lat);
  1025 + location = TransGPS.bd_encrypt(TransGPS.transformFromWGSToGCJ(location));
  1026 + gpsSpeed.setVehicle(rs.getString("device_id"));
  1027 + gpsSpeed.setLon((float)location.getLng());
  1028 + gpsSpeed.setLat((float)location.getLat());
  1029 + gpsSpeed.setSpeed(rs.getFloat("speed_gps"));
  1030 + gpsSpeed.setTimestamp(rs.getLong("TS"));
  1031 + // 上下行
  1032 + listResult.add(gpsSpeed);
  1033 + }
  1034 + } catch (Exception e) {
  1035 + e.printStackTrace();
  1036 + } finally {
  1037 + DBUtils_MS.close(rs, ps, conn);
  1038 + }
  1039 + return listResult;
  1040 +
  1041 + }
  1042 +
  1043 + @Override
  1044 + public PageObject<GpsSpeed> Pagequery(Map<String, Object> map) {
  1045 +
  1046 + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1047 + List<GpsSpeed> list=findAll(map);
  1048 + List<GpsSpeed> listResult = new ArrayList<GpsSpeed>();
  1049 + int curPage;//页码
  1050 + int pageData;//每页的记录条数
  1051 + int start;//起始数据下标
  1052 + int totalPage;//总页数
  1053 + int totalData = 0;
  1054 + if(list.size()>1){
  1055 + GpsSpeed GpsSpeedNow;//下标为i的车辆行驶记录
  1056 + GpsSpeed GpsSpeedLast;//下标为i-1的车辆行驶记录
  1057 + GpsSpeed spped = null;//整合后的车辆行驶记录
  1058 + String strNow;
  1059 + String strLast;
  1060 + boolean Flag = false;//判断是否有连续超速记录,默认没有
  1061 + for(int i = 1;i<list.size();i++){
  1062 + GpsSpeedNow = list.get(i);
  1063 + GpsSpeedLast = list.get(i-1);
  1064 + strNow = GpsSpeedNow.getVehicle()+GpsSpeedNow.getLine()+GpsSpeedNow.getUp_down();
  1065 + strLast = GpsSpeedLast.getVehicle()+GpsSpeedLast.getLine()+GpsSpeedLast.getUp_down();
  1066 + if(GpsSpeedNow.getSpeed()>60 && GpsSpeedLast.getSpeed()>60 && strNow.equals(strLast)){//如果两条连续的记录都是超速且属于同一辆车。
  1067 + if(Flag==false){//
  1068 + spped = new GpsSpeed();
  1069 + spped.setLine(GpsSpeedLast.getLine());//设置连续超速记录线路
  1070 + spped.setLineName(GpsSpeedLast.getLineName());//设置连续超速记录线路名称
  1071 + spped.setVehicle(GpsSpeedLast.getVehicle());//设置连续超速记录的车辆编号
  1072 + spped.setUp_down(GpsSpeedLast.getUp_down());//设置上下行
  1073 + spped.setLon(GpsSpeedLast.getLon());//设置开始时经度
  1074 + spped.setLat(GpsSpeedLast.getLat());//设置开始时纬度
  1075 + spped.setTimestamp(GpsSpeedLast.getTimestamp());//设置连续超速记录的开始时间
  1076 + spped.setTimestampDate(GpsSpeedLast.getTimestampDate());//设置连续超速记录的开始时间戳
  1077 + }
  1078 + spped.setEndtimestamp(GpsSpeedNow.getTimestamp());//设置结束时间戳
  1079 + spped.setEndtimestampDate(sdf.format(new Date(GpsSpeedNow.getTimestamp())));//设置结束时间
  1080 + spped.setEndlon(GpsSpeedNow.getLon());//设置结束时的经度
  1081 + spped.setEndlat(GpsSpeedNow.getLat());//设置结束时的纬度
  1082 + Flag = true;
  1083 + }else{
  1084 + if(Flag){//如果上一条记录超速。
  1085 + listResult.add(spped);
  1086 + Flag = false;
  1087 + }
  1088 + }
  1089 + }
  1090 + Iterator<GpsSpeed> speedIt = listResult.iterator();
  1091 + while(speedIt.hasNext()){
  1092 + GpsSpeed GpsSpeed = speedIt.next();
  1093 + if(GpsSpeed.getEndtimestamp()-GpsSpeed.getTimestamp()<=1000){
  1094 + speedIt.remove();
  1095 + }
  1096 + }
  1097 +
  1098 + totalData = listResult.size();//总记录条数。
  1099 + if(map.get("curPage") == null || map.get("curPage").equals("0")){
  1100 + curPage = 0;
  1101 + }else{
  1102 + curPage = Integer.parseInt((String) map.get("curPage"));
  1103 + }
  1104 + pageData = Integer.parseInt((String) map.get("pageData"));//每页的记录条数
  1105 + start = (curPage - 0) * pageData; //起始记录下标。
  1106 + totalPage = totalData % pageData == 0 ? totalData / pageData : totalData / pageData +1;//总页数
  1107 + if(curPage == totalPage-1){//如果当前页等于总页数。
  1108 + listResult = listResult.subList(start, totalData);
  1109 + }else{
  1110 + listResult = listResult.subList(start, start+pageData);
  1111 + }
  1112 + }else{
  1113 + curPage = 1;
  1114 + pageData = Integer.parseInt((String) map.get("pageData"));//每页的记录条数
  1115 + totalPage =1;
  1116 + }
  1117 + Map<String,Object> paramMap = new HashMap<String,Object>();
  1118 + paramMap.put("totalPage", totalPage);
  1119 + paramMap.put("curPage", curPage);
  1120 + paramMap.put("pageData", pageData);
  1121 + PageHelper pageHelper = new PageHelper(totalData, paramMap);
  1122 + pageHelper.getMap();
  1123 + PageObject<GpsSpeed> pageObject = pageHelper.getPageObject();
  1124 + pageObject.setDataList(listResult);
  1125 + return pageObject;
  1126 + }
  1127 +
  1128 + static List<GpsSpeed> findAll(Map<String, Object> map) {
  1129 + Connection conn = null;
  1130 + PreparedStatement ps = null;
  1131 + ResultSet rs = null;
  1132 + int page=Integer.parseInt(map.get("page").toString());
  1133 + List<GpsSpeed> list=new ArrayList<GpsSpeed>();
  1134 + String sql="select * from bsth_c_gps_info where 1=1 ";
  1135 + Object line=map.get("line");
  1136 + Object nbbm=map.get("nbbm");
  1137 + Object updown=map.get("updown");
  1138 + Object startDate=map.get("startDate");
  1139 + Object endDate=map.get("endDate");
  1140 +
  1141 + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1142 + if(line!=null){
  1143 + sql +=" and line_id like'%"+line.toString().trim()+"%'";
  1144 + }
  1145 +
  1146 + if(nbbm!=null){
  1147 + nbbm=BasicData.deviceId2NbbmMap.inverse().get(nbbm);
  1148 + if(nbbm!=null)
  1149 + sql +=" and vehicle like '%"+nbbm.toString()+"%'";
  1150 + }
  1151 +
  1152 + if(updown!=null){
  1153 + sql +="and industry_code like '%"+updown.toString()+"%'";
  1154 + }
  1155 + if(startDate!=null){
  1156 + if (startDate.toString().length()>0) {
  1157 + try {
  1158 + Long t1=sdf.parse(startDate.toString()+" 00:00:00").getTime();
  1159 + sql += " and ts >="+t1;
  1160 + } catch (ParseException e) {
  1161 + e.printStackTrace();
  1162 + }
  1163 + }
  1164 +
  1165 + }
  1166 + if(endDate!=null){
  1167 + if (endDate.toString().length()>0) {
  1168 + try {
  1169 + Long t2=sdf.parse(endDate.toString()+" 23:59:59").getTime();
  1170 + sql += " and ts <="+t2;
  1171 + } catch (ParseException e) {
  1172 + e.printStackTrace();
  1173 + }
  1174 + }
  1175 +
  1176 + }
  1177 +
  1178 + try {
  1179 + conn = DBUtils_MS.getConnection();
  1180 + ps = conn.prepareStatement(sql);
  1181 + rs = ps.executeQuery();
  1182 + list = resultSet2Set(rs);
  1183 + } catch (SQLException e) {
  1184 + e.printStackTrace();
  1185 + }finally {
  1186 + DBUtils_MS.close(rs, ps, conn);
  1187 + }
  1188 +
  1189 + return list;
  1190 + }
  1191 +
  1192 + static List<GpsSpeed> resultSet2Set(ResultSet rs) throws SQLException{
  1193 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1194 + List<GpsSpeed> list=new ArrayList<GpsSpeed>();
  1195 + GpsSpeed GpsSpeed;
  1196 + Float lon, lat;
  1197 + Location location;
  1198 + while(rs.next()){
  1199 + lon = rs.getFloat("lon");
  1200 + lat = rs.getFloat("lat");
  1201 + location = TransGPS.LocationMake(lon, lat);
  1202 + location = TransGPS.bd_encrypt(TransGPS.transformFromWGSToGCJ(location));
  1203 + GpsSpeed=new GpsSpeed();
  1204 + GpsSpeed.setLon((float)location.getLng());
  1205 + GpsSpeed.setLat((float)location.getLat());
  1206 + GpsSpeed.setLine(rs.getObject("line_id").toString());
  1207 + //run 时注解
  1208 + GpsSpeed.setLineName(BasicData.lineCode2NameMap.get(GpsSpeed.getLine().toString()));
  1209 + GpsSpeed.setSpeed(Float.valueOf(rs.getObject("speed_gps").toString()));
  1210 + GpsSpeed.setTimestamp((Long.valueOf(rs.getObject("ts").toString())));
  1211 + GpsSpeed.setTimestampDate(sdf.format(new Date(GpsSpeed.getTimestamp())));
  1212 + GpsSpeed.setUp_down(((Integer.valueOf(rs.getObject("service_state").toString())) & 0x10000000)==0?0:1);
  1213 + GpsSpeed.setVehicle(BasicData.deviceId2NbbmMap.get(rs.getObject("device_id").toString()));
  1214 + list.add(GpsSpeed);
  1215 + }
  1216 + return list;
  1217 + }
  1218 +
984 } 1219 }
  1220 +
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/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -10,6 +10,7 @@ import com.bsth.controller.realcontrol.dto.DfsjChange; @@ -10,6 +10,7 @@ import com.bsth.controller.realcontrol.dto.DfsjChange;
10 import com.bsth.controller.realcontrol.dto.LpData; 10 import com.bsth.controller.realcontrol.dto.LpData;
11 import com.bsth.data.BasicData; 11 import com.bsth.data.BasicData;
12 import com.bsth.data.LineConfigData; 12 import com.bsth.data.LineConfigData;
  13 +import com.bsth.data.Station2ParkBuffer;
13 import com.bsth.data.schedule.DayOfSchedule; 14 import com.bsth.data.schedule.DayOfSchedule;
14 import com.bsth.data.schedule.SchAttrCalculator; 15 import com.bsth.data.schedule.SchAttrCalculator;
15 import com.bsth.data.schedule.ScheduleComparator; 16 import com.bsth.data.schedule.ScheduleComparator;
@@ -590,6 +591,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -590,6 +591,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
590 //重新计算车辆当前执行班次 591 //重新计算车辆当前执行班次
591 dayOfSchedule.reCalcExecPlan(t.getClZbh()); 592 dayOfSchedule.reCalcExecPlan(t.getClZbh());
592 593
  594 + //记录站到场历时数据
  595 + Station2ParkBuffer.put(t);
593 596
594 rs.put("ts", ts); 597 rs.put("ts", ts);
595 rs.put("t", t); 598 rs.put("t", t);
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/TTInfoDetailServiceImpl.java
@@ -157,7 +157,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -157,7 +157,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
157 } else { 157 } else {
158 Cell[] cells = sheet.getRow(0); // 获取第一行数据列 158 Cell[] cells = sheet.getRow(0); // 获取第一行数据列
159 for (int i = 0; i < cells.length; i++) { 159 for (int i = 0; i < cells.length; i++) {
160 - String cell_con = cells[i].getContents(); 160 + String cell_con = StringUtils.trimToEmpty(cells[i].getContents()); // trimToEmpty
161 161
162 if (StringUtils.isEmpty(cell_con)) { 162 if (StringUtils.isEmpty(cell_con)) {
163 throw new Exception(String.format("第1行,第%d列数据不能为空", i + 1)); 163 throw new Exception(String.format("第1行,第%d列数据不能为空", i + 1));
@@ -199,7 +199,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -199,7 +199,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
199 Map<String, Integer> gbindexmap = new HashMap<>(); // 记录每个路牌在第几行 199 Map<String, Integer> gbindexmap = new HashMap<>(); // 记录每个路牌在第几行
200 for (int i = 1; i < sheet.getRows(); i++) { // 从第2行开始验证数据 200 for (int i = 1; i < sheet.getRows(); i++) { // 从第2行开始验证数据
201 Cell bcell = sheet.getRow(i)[0]; // 获取第1列 201 Cell bcell = sheet.getRow(i)[0]; // 获取第1列
202 - String bcell_con = bcell.getContents(); 202 + String bcell_con = StringUtils.trimToEmpty(bcell.getContents()); // trimToEmpty
203 if (StringUtils.isEmpty(bcell_con)) { 203 if (StringUtils.isEmpty(bcell_con)) {
204 throw new Exception(String.format("第%d行,第1列路牌无数据", i + 1)); 204 throw new Exception(String.format("第%d行,第1列路牌无数据", i + 1));
205 } else if (gbindexmap.get(bcell_con.trim()) != null) { 205 } else if (gbindexmap.get(bcell_con.trim()) != null) {
@@ -233,7 +233,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -233,7 +233,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
233 for (int i = 1; i < sheet.getRows(); i++) { // 从第2行开始验证数据 233 for (int i = 1; i < sheet.getRows(); i++) { // 从第2行开始验证数据
234 Cell[] bcells = sheet.getRow(i); 234 Cell[] bcells = sheet.getRow(i);
235 for (int j = 1; j < bcells.length; j++) { // 从第2列开始 235 for (int j = 1; j < bcells.length; j++) { // 从第2列开始
236 - String bcell_con = bcells[j].getContents(); 236 + String bcell_con = StringUtils.trimToEmpty(bcells[j].getContents()); // trimToEmpty
237 if (StringUtils.isNotEmpty(bcell_con)) { 237 if (StringUtils.isNotEmpty(bcell_con)) {
238 Matcher m1 = p1.matcher(bcell_con.trim()); 238 Matcher m1 = p1.matcher(bcell_con.trim());
239 Matcher m2 = p2.matcher(bcell_con.trim()); 239 Matcher m2 = p2.matcher(bcell_con.trim());
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/java/com/bsth/service/sys/IntervalService.java 0 → 100644
  1 +package com.bsth.service.sys;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +import com.bsth.entity.sys.Interval;
  7 +import com.bsth.service.BaseService;
  8 +
  9 +public interface IntervalService extends BaseService<Interval, Integer> {
  10 +
  11 + Map<String, Object> saveList(List<Interval> parseArray);
  12 +
  13 +}
src/main/java/com/bsth/service/sys/impl/IntervalServiceImpl.java 0 → 100644
  1 +package com.bsth.service.sys.impl;
  2 +
  3 +import java.util.HashMap;
  4 +import java.util.List;
  5 +import java.util.Map;
  6 +
  7 +import org.slf4j.Logger;
  8 +import org.slf4j.LoggerFactory;
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.stereotype.Service;
  11 +
  12 +import com.bsth.common.ResponseCode;
  13 +import com.bsth.entity.sys.Interval;
  14 +import com.bsth.repository.sys.IntervalRepository;
  15 +import com.bsth.service.impl.BaseServiceImpl;
  16 +import com.bsth.service.sys.IntervalService;
  17 +
  18 +@Service
  19 +public class IntervalServiceImpl extends BaseServiceImpl<Interval, Integer> implements IntervalService {
  20 +
  21 + @Autowired
  22 + IntervalRepository intervalRepository;
  23 +
  24 + Logger logger = LoggerFactory.getLogger(this.getClass());
  25 +
  26 + @Override
  27 + public Map<String, Object> saveList(List<Interval> parseArray) {
  28 + Map<String, Object> map = new HashMap<>();
  29 + try{
  30 + intervalRepository.save(parseArray);
  31 + map.put("status", ResponseCode.SUCCESS);
  32 + }catch(Exception e){
  33 + map.put("status", ResponseCode.ERROR);
  34 + logger.error("", e);
  35 + }
  36 + return map;
  37 + }
  38 +
  39 +}
src/main/resources/application-dev.properties
@@ -8,9 +8,9 @@ spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy @@ -8,9 +8,9 @@ spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
8 spring.jpa.database= MYSQL 8 spring.jpa.database= MYSQL
9 spring.jpa.show-sql= false 9 spring.jpa.show-sql= false
10 spring.datasource.driver-class-name= com.mysql.jdbc.Driver 10 spring.datasource.driver-class-name= com.mysql.jdbc.Driver
11 -spring.datasource.url= jdbc:mysql://127.0.0.1/control?useUnicode=true&characterEncoding=utf-8&useSSL=false 11 +spring.datasource.url= jdbc:mysql://localhost:3306/mhcontrol?useUnicode=true&characterEncoding=utf-8&useSSL=false
12 spring.datasource.username= root 12 spring.datasource.username= root
13 -spring.datasource.password= 13 +spring.datasource.password= zhoubing
14 #spring.datasource.url= jdbc:mysql://192.168.168.117/pd_control?useUnicode=true&characterEncoding=utf-8&useSSL=false 14 #spring.datasource.url= jdbc:mysql://192.168.168.117/pd_control?useUnicode=true&characterEncoding=utf-8&useSSL=false
15 #spring.datasource.username= root 15 #spring.datasource.username= root
16 #spring.datasource.password= root 16 #spring.datasource.password= root
@@ -32,4 +32,4 @@ spring.datasource.validation-query=select 1 @@ -32,4 +32,4 @@ spring.datasource.validation-query=select 1
32 http.gps.real.url= http://114.80.178.12:18080/transport_server/rtgps/ 32 http.gps.real.url= http://114.80.178.12:18080/transport_server/rtgps/
33 #http.gps.real.url= http://27.115.69.123:8800/transport_server/rtgps/ 33 #http.gps.real.url= http://27.115.69.123:8800/transport_server/rtgps/
34 ##\u6D88\u606F\u4E0B\u53D1 34 ##\u6D88\u606F\u4E0B\u53D1
35 -http.send.directive = http://192.168.168.201:9090/transport_server/message/  
36 \ No newline at end of file 35 \ No newline at end of file
  36 +http.send.directive =http\://192.168.168.201\:9090/transport_server/message/
37 \ No newline at end of file 37 \ 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/base/interval/list.html 0 → 100644
  1 +<!-- <link href="/pages/base/line/css/animate.css" rel="stylesheet" type="text/css" />
  2 +<link href="/pages/base/line/css/tipso.css" rel="stylesheet" type="text/css" /> -->
  3 +<!-- 片段标题 START -->
  4 +<div class="page-head">
  5 + <div class="page-title">
  6 + <h1>大间隔信息</h1>
  7 + </div>
  8 +</div>
  9 +<!-- 片段标题 END -->
  10 +
  11 +<!-- 线路信息导航栏组件 START -->
  12 +<ul class="page-breadcrumb breadcrumb">
  13 + <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>
  14 + <li><span class="active">基础信息</span> <i class="fa fa-circle"></i></li>
  15 + <li><span class="active">大间隔信息</span></li>
  16 +</ul>
  17 +<!-- 线路信息导航栏组件 END -->
  18 +
  19 +<div class="row">
  20 + <div class="col-md-12">
  21 + <div class="portlet light porttlet-fit bordered">
  22 + <div class="portlet-title">
  23 + <div class="tipso-animation">
  24 + </div>
  25 + <div class="caption">
  26 + <i class="fa fa-info-circle font-dark"></i>
  27 + <span class="caption-subject font-dark sbold uppercase">线路信息</span>
  28 + </div>
  29 + <div class="actions">
  30 + <div class="btn-group btn-group-devided" data-toggle="buttons">
  31 + <a class="btn btn-circle blue" href="add.html" data-pjax><i class="fa fa-plus"></i> 添加线路</a>
  32 + </div>
  33 + </div>
  34 + </div>
  35 + <div class="portlet-body">
  36 + <div class="table-container" style="margin-top: 10px">
  37 + <table class="table table-striped table-bordered table-hover table-checkable" id="datatable_line">
  38 + <thead>
  39 + <tr role="row" class="heading">
  40 + <th >#</th>
  41 + <th >序号</th>
  42 + <th >大间隔ID</th>
  43 + <th >大间隔等级</th>
  44 + <th >高峰间隔时间</th>
  45 + <th >低谷间隔时间</th>
  46 + <th >操作</th>
  47 + </tr>
  48 + <tr role="row" class="filter">
  49 + <td>#</td>
  50 + <td></td>
  51 + <td></td>
  52 + <td></td>
  53 + <td></td>
  54 + <td></td>
  55 + <td>
  56 + <button class="btn btn-sm green btn-outline filter-submit margin-bottom" >
  57 + <i class="fa fa-search"></i> 搜索
  58 + </button>
  59 +
  60 + <button class="btn btn-sm red btn-outline filter-cancel" id="notification-trigger">
  61 + <i class="fa fa-times"></i> 重置
  62 + </button>
  63 + </td>
  64 + </tr>
  65 + </thead>
  66 + <tbody></tbody>
  67 + </table>
  68 + <div style="text-align: right;">
  69 + <ul id="pagination" class="pagination"></ul>
  70 + </div>
  71 + </div>
  72 + </div>
  73 + </div>
  74 + </div>
  75 +</div>
  76 +<script type="text/html" id="line_list_temp">
  77 + {{each list as obj i }}
  78 + <tr>
  79 + <td style="vertical-align: middle;">
  80 + <input type="checkbox" class="group-checkable icheck" value="{{obj.name}}" id="{{obj.id}}" data-id="{{obj.id}}" data-lineName="{{obj.name}}">
  81 + </td>
  82 + <td style="vertical-align: middle;">
  83 + {{(list.page*10)+(i+1)}}
  84 + </td>
  85 + <td>
  86 + {{obj.lineCode}}
  87 + </td>
  88 + <td>
  89 + {{obj.name}}
  90 + </td>
  91 + <td>
  92 + {{if obj.nature == 'lj'}}
  93 + 路救
  94 + {{else if obj.nature == 'bc'}}
  95 + 备车
  96 + {{else if obj.nature == 'dbc'}}
  97 + 定班车
  98 + {{else if obj.nature == 'yxl'}}
  99 + 夜宵路
  100 + {{else if obj.nature == 'cgxl'}}
  101 + 常规线路
  102 + {{else if obj.nature == 'gjxl'}}
  103 + 过江线路
  104 + {{else if obj.nature == 'csbs'}}
  105 + 穿梭巴士
  106 + {{else if obj.nature == 'tyxl'}}
  107 + 特约线路
  108 + {{else if obj.nature == 'qt'}}
  109 + 其他
  110 + {{else if obj.nature == 'cctxl'}}
  111 + 村村通线路
  112 + {{/if}}
  113 + </td>
  114 + <td>
  115 + {{if obj.level == '1'}}
  116 + 一级线路
  117 + {{else if obj.level == '2'}}
  118 + 二级线路
  119 + {{else if obj.level == '0'}}
  120 + 未知等级
  121 + {{/if}}
  122 + </td>
  123 + <td>
  124 + {{obj.shanghaiLinecode}}
  125 + </td>
  126 + <td>
  127 + {{if obj.destroy == 1}}
  128 + <span style="font-weight: bold; color: red; padding: 5px; background-color: #FFE4E1; margin: 5px; font-size: 9px;border-radius: 4px;">撤销</span>
  129 + {{else if obj.destroy == 0}}
  130 + <span style="font-weight: bold; color: #07824e; padding: 5px; background-color: #FFE4E1; margin: 5px; font-size: 9px;border-radius: 4px;">运营</span>
  131 + {{/if}}
  132 + </td>
  133 + <td>
  134 + <a href="/pages/base/lineinformation/list.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 查看 </a>
  135 + </td>
  136 + <td>
  137 + <a href="/pages/base/stationroute/list.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 查看 </a>
  138 + </td>
  139 + <td>
  140 + <a href="details.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 详细 </a>
  141 + <a href="edit.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 修改 </a>
  142 + </td>
  143 + </tr>
  144 + {{/each}}
  145 + {{if list.length == 0}}
  146 + <tr>
  147 + <td colspan=13><h6 class="muted">没有找到相关数据</h6></td>
  148 + </tr>
  149 + {{/if}}
  150 +</script>
  151 +<!-- <script src="/pages/base/line/js/tipso.js"></script> -->
  152 +<!-- 线路信息片段JS模块 -->
  153 +<script src="/pages/base/line/js/line-list-table.js"></script>
0 \ No newline at end of file 154 \ No newline at end of file
src/main/resources/static/pages/excep/js/outboundmap-load.js
@@ -8,7 +8,6 @@ $(function(){ @@ -8,7 +8,6 @@ $(function(){
8 8
9 // 获取参数线路ID 9 // 获取参数线路ID
10 var no = $.url().param('no'); 10 var no = $.url().param('no');
11 - var up = $.url().param('up');  
12 var paramArr = new Array(); 11 var paramArr = new Array();
13 paramArr = no.split(",");// 在每个逗号(,)处进行分解。 12 paramArr = no.split(",");// 在每个逗号(,)处进行分解。
14 /*paramArr[0]:id 13 /*paramArr[0]:id
src/main/resources/static/pages/excep/js/speeding-map.js 0 → 100644
  1 +/**
  2 + * 百度地图
  3 + *
  4 + * - - - - - -》init:地图初始化
  5 + *
  6 + * - - - - - -》lineInfoPanl:从百度地图抓去站点与路段数据
  7 + *
  8 + * - - - - - -》getDistanceAndDuration:获取距离与时间
  9 + *
  10 + * - - - - - -》pointsPolygon:地图画多边行
  11 + *
  12 + * - - - - - -》pointsCircle:画圆
  13 + *
  14 + * - - - - - -》localSearchFromAdreesToPoint:根据地理名称获取百度经纬度坐标
  15 + *
  16 + * - - - - - -》drawingUpline:在地图上画出上行线路走向
  17 + *
  18 + * - - - - - -》stationsNameToPoints:站点名称获取百度坐标(手动规划)
  19 + *
  20 + * - - - - - -》getDistanceAndTotime:根据坐标点获取两点之间的时间与距离(手动规划)
  21 + *
  22 + * - - - - - -》getSectionListPlonly:根据坐标点获取两点之间的折线路段(手动规划)
  23 + */
  24 +
  25 +var SpeedingMap = function () {
  26 +
  27 + /** WorldsBMap 全局变量定义 mapBValue:地图对象;polygon:多边形;polyUpline:走向折线;circle:圆 *//*
  28 + var mapBValue = '';polygon='',polyUpline='',circle='',iseditStatus = false;*/
  29 +
  30 + var Bmap = {
  31 +
  32 + init : function() {
  33 + // 设置中心点,
  34 + var CENTER_POINT = {lng : 121.528733,lat : 31.237425};
  35 +
  36 + // 百度API Key
  37 + var bdKey = 'IGGrr4UjwIYzatoCRFKEL8sT';
  38 +
  39 + // 初始化百度地图
  40 + mapBValue = new BMap.Map("speedingMap");
  41 +
  42 + //中心点和缩放级别
  43 + mapBValue.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15);
  44 +
  45 + //启用地图拖拽事件,默认启用(可不写)
  46 + mapBValue.enableDragging();
  47 +
  48 + //启用地图滚轮放大缩小
  49 + mapBValue.enableScrollWheelZoom();
  50 +
  51 + //禁用鼠标双击放大
  52 + mapBValue.disableDoubleClickZoom();
  53 +
  54 + //启用键盘上下左右键移动地图
  55 + mapBValue.enableKeyboard();
  56 +
  57 + return mapBValue;
  58 + },
  59 +
  60 + /** 获取地图对象 @return 地图对象map */
  61 + getmapBValue : function() {
  62 +
  63 + return mapBValue;
  64 +
  65 + },
  66 +
  67 + /* drawTravelRoute:function(data){
  68 + var driving = Bmap.DrivingRoute(map, {renderOptions:{map: map}})
  69 +
  70 + }*/
  71 +
  72 + }
  73 +
  74 + return Bmap;
  75 +
  76 +}();
0 \ No newline at end of file 77 \ 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 无效
@@ -146,7 +146,10 @@ @@ -146,7 +146,10 @@
146 {{(obj.endtimestamp-obj.timestamp)/1000}}秒 146 {{(obj.endtimestamp-obj.timestamp)/1000}}秒
147 </td> 147 </td>
148 <td> 148 <td>
149 - <a class="btn default blue-stripe btn-sm lookTrajectory" data-pjax> 149 + <a class="btn default blue-stripe btn-sm lookTrajectory" data-vehicle ="{{obj.vehicle}}"
  150 + data-startdate="{{obj.timestampDate}}" data-enddate="{{obj.endtimestampDate}}"
  151 + data-lon="{{obj.lon}}" data-lat="{{obj.lat}}"
  152 + data-endlon="{{obj.endlon}}" data-endlat="{{obj.endlat}}" >
150 查看轨迹 153 查看轨迹
151 </a> 154 </a>
152 </td> 155 </td>
@@ -162,6 +165,8 @@ @@ -162,6 +165,8 @@
162 {{/if}} 165 {{/if}}
163 </script> 166 </script>
164 167
  168 +<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=IGGrr4UjwIYzatoCRFKEL8sT"></script>
  169 +
165 <script> 170 <script>
166 $(function(){ 171 $(function(){
167 var page = 0, initPagination; 172 var page = 0, initPagination;
@@ -185,7 +190,20 @@ $(function(){ @@ -185,7 +190,20 @@ $(function(){
185 var parameter = new Object(); 190 var parameter = new Object();
186 parameter.endDate = $("input[name='endDate']")[0].value; 191 parameter.endDate = $("input[name='endDate']")[0].value;
187 parameter.startDate = $("input[name='startDate']")[0].value; 192 parameter.startDate = $("input[name='startDate']")[0].value;
188 - jsDoQuery(parameter,true); 193 +
  194 + //搜索线路
  195 + $.get('/basic/lineCode2Name',function(result){
  196 + var data=[];
  197 + data.push({id: " ", text: "全部线路"});
  198 + for(var code in result){
  199 + data.push({id: code, text: result[code]});
  200 + }
  201 + initPinYinSelect2($('#line'),data,function(ldmcSelector) {
  202 + ldmcSelector.select2("val",data[1].id);//因为数据量太大,所以默认一条线路作为查询参数
  203 + });
  204 + parameter.line = data[1].id;
  205 + jsDoQuery(parameter,true);
  206 + });
189 207
190 //时间戳转换为年月日 208 //时间戳转换为年月日
191 function timeToData(time){ 209 function timeToData(time){
@@ -223,7 +241,7 @@ $(function(){ @@ -223,7 +241,7 @@ $(function(){
223 /* 241 /*
224 * 获取数据 p: 要提交的参数, pagination: 是否重新分页 242 * 获取数据 p: 要提交的参数, pagination: 是否重新分页
225 */ 243 */
226 - function jsDoQuery(p, pagination){ 244 + function jsDoQuery(p, pagination){
227 var params = {}; 245 var params = {};
228 if(p) 246 if(p)
229 params = p; 247 params = p;
@@ -231,7 +249,7 @@ $(function(){ @@ -231,7 +249,7 @@ $(function(){
231 params['order'] = 'lastLoginDate'; 249 params['order'] = 'lastLoginDate';
232 params['page'] = page; 250 params['page'] = page;
233 var i = layer.load(2); 251 var i = layer.load(2);
234 - $get('/speeding/pagequery' ,params, function(data){ 252 + $get('/gps/pagequery' ,params, function(data){
235 var bodyHtm = template('speeding_list_temp', {list: data.dataList}); 253 var bodyHtm = template('speeding_list_temp', {list: data.dataList});
236 $('#datatable_speeding tbody').html(bodyHtm) 254 $('#datatable_speeding tbody').html(bodyHtm)
237 .find('.icheck').iCheck(icheckOptions) 255 .find('.icheck').iCheck(icheckOptions)
@@ -243,7 +261,27 @@ $(function(){ @@ -243,7 +261,27 @@ $(function(){
243 } 261 }
244 layer.close(i); 262 layer.close(i);
245 $(".lookTrajectory").click(function(){ 263 $(".lookTrajectory").click(function(){
246 - layer.alert("暂未开放此功能!"); 264 + var vehicle = $(this).data('vehicle');
  265 + var startDate = $(this).data('startdate');
  266 + var endDate = $(this).data('enddate');
  267 + var lon = $(this).data('lon');
  268 + var lat = $(this).data('lat');
  269 + var endLon = $(this).data('endlon');
  270 + var endLat = $(this).data('endlat');
  271 + var storage = window.localStorage;
  272 + storage.setItem("zbhAndDate",vehicle+","+startDate+","+endDate+","+lon+","+lat+","+endLon+","+endLat);
  273 + $.get('/pages/excep/speedingMap.html?',function (result) {
  274 + layer.open({
  275 + type: 1,
  276 + title:'<i class="uk-icon-play-circle"></i>轨迹回放',
  277 + shadeClose: true,
  278 + shade: true,
  279 + scrollbar: false,
  280 + maxmin: false, //开启最大化最小化按钮
  281 + area: ['100%', '100%'],
  282 + content:result,//内容
  283 + });
  284 + });
247 }) 285 })
248 }); 286 });
249 } 287 }
@@ -307,17 +345,6 @@ $(function(){ @@ -307,17 +345,6 @@ $(function(){
307 $('tr.filter .filter-submit').click(); 345 $('tr.filter .filter-submit').click();
308 }); 346 });
309 }); 347 });
310 -  
311 - //搜索线路  
312 - $.get('/basic/lineCode2Name',function(result){  
313 - var data=[];  
314 - data.push({id: " ", text: "全部线路"});  
315 - for(var code in result){  
316 - data.push({id: code, text: result[code]});  
317 - }  
318 - initPinYinSelect2('#line',data,'');  
319 -  
320 - });  
321 348
322 $("#line").on("change",initXl); 349 $("#line").on("change",initXl);
323 function initXl(){ 350 function initXl(){
@@ -334,6 +361,7 @@ $(&#39;#nbbm&#39;).select2({ @@ -334,6 +361,7 @@ $(&#39;#nbbm&#39;).select2({
334 xlbm:$('#line').val()}; 361 xlbm:$('#line').val()};
335 }, 362 },
336 processResults: function (data) { 363 processResults: function (data) {
  364 + console.log(data);
337 return { 365 return {
338 results: data 366 results: data
339 }; 367 };
@@ -370,7 +398,6 @@ $(&#39;#nbbm&#39;).select2({ @@ -370,7 +398,6 @@ $(&#39;#nbbm&#39;).select2({
370 398
371 //改变状态 399 //改变状态
372 function changeEnabled(id,enabled){ 400 function changeEnabled(id,enabled){
373 - debugger  
374 $get('/user/changeEnabled',{id:id,enabled:enabled},function(result){ 401 $get('/user/changeEnabled',{id:id,enabled:enabled},function(result){
375 jsDoQuery(null, true); 402 jsDoQuery(null, true);
376 }) 403 })
src/main/resources/static/pages/excep/speedingMap.html 0 → 100644
  1 +<style>
  2 + .play_back-layer .layui-layer-title{
  3 + height: 36px;
  4 + border-bottom: none;
  5 + }
  6 +</style>
  7 +
  8 +<div id="titleMap">
  9 +<button id="run" style="margin-left:10px" class="btn btn-sm green btn-outline filter-submit margin-bottom">运行</button>
  10 +</div>
  11 +<div id="speedingMap">
  12 +</div>
  13 +<style type="text/css">
  14 +
  15 +#speedingMap{
  16 + width: 100%;
  17 + border: 2px solid #fdfdfd;
  18 + height: calc(100% - 30px);
  19 + overflow: hidden;
  20 +}
  21 +</style>
  22 +<script type="text/javascript" src="/pages/excep/js/speeding-map.js"></script>
  23 +<script type="text/javascript">
  24 +$(function(){
  25 + var dataArr = window.localStorage.zbhAndDate.split(",");//获取页面传递过来的车辆自编号以及超速起始时间和超速结束时间
  26 + var vehicle = dataArr[0];
  27 + var startdate = dataArr[1];
  28 + var enddate = dataArr[2];
  29 + var lon = dataArr[3];//起点经度
  30 + var lat = dataArr[4];//起点纬度
  31 + var endLon = dataArr[5];//终点经度
  32 + var endLat = dataArr[6];//终点纬度
  33 + var pointObj;//坐标和速度组成的对象
  34 + var Points = [];//坐标和速度对象的集合
  35 + var coordinateArr = [];//坐标点数组
  36 + $.ajax({
  37 + type: "GET",
  38 + async:false,
  39 + url: '/gps/findPosition',
  40 + data: {vehicle:vehicle,startdate:startdate,enddate:enddate},
  41 + success: function(data){
  42 + $.each(data,function(i,item){
  43 + if(item.lon>1 && item.lat>1){
  44 + pointObj = new Object();
  45 + pointObj.coordinate = new BMap.Point(item.lon,item.lat);
  46 + pointObj.speed = item.speed;
  47 + Points.push(pointObj);
  48 + }
  49 + });
  50 + }
  51 + });
  52 + setTimeout(function(){
  53 + var map = SpeedingMap.init();//创建地图
  54 + var myP1 = new BMap.Point(lon,lat); //起点
  55 + var myP2 = new BMap.Point(endLon,endLat); //终点
  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});//创建折线
  64 + var myIcon = new BMap.Icon("/pages/excep/img/bus.png", new BMap.Size(32, 70), {//小车图片
  65 + imageOffset: new BMap.Size(5,20) //图片的偏移量。为了是图片底部中心对准坐标点。
  66 + });
  67 +
  68 + $(document).on('click', '#run', function() {
  69 + map.clearOverlays();//清空上一次的轨迹
  70 + map.addOverlay(polyline);//增加折线
  71 + var paths = coordinateArr.length;//获得有几个点
  72 + var carMk = new BMap.Marker(coordinateArr[0],{icon:myIcon});
  73 + map.addOverlay(carMk);
  74 + var sContent ="车辆即时速度:"+Points[0].speed;
  75 + var infoWindow = new BMap.InfoWindow(sContent);// 创建信息窗口对象
  76 + map.openInfoWindow(infoWindow,coordinateArr[0]); //开启信息窗口
  77 + i=0;
  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);
  93 + }
  94 + };
  95 + });
  96 +}, 500);
  97 + });
  98 +</script>
  99 +
  100 +
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/css/main.css
@@ -1572,4 +1572,12 @@ ul.left_tabs_lg li{ @@ -1572,4 +1572,12 @@ ul.left_tabs_lg li{
1572 .ct_describe:before{ 1572 .ct_describe:before{
1573 content: "\f059"; 1573 content: "\f059";
1574 margin-right: 3px; 1574 margin-right: 3px;
  1575 +}
  1576 +
  1577 +#add-sub-task-main-modal abbr{
  1578 + display: inline-block;
  1579 + font-size: 12px;
  1580 + margin-left: 25px;
  1581 + vertical-align: bottom;
  1582 + color: #929292;
1575 } 1583 }
1576 \ No newline at end of file 1584 \ No newline at end of file
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/add_temp_sch.html
@@ -30,7 +30,7 @@ @@ -30,7 +30,7 @@
30 <div class="uk-form-row"> 30 <div class="uk-form-row">
31 <label class="uk-form-label">班次类型</label> 31 <label class="uk-form-label">班次类型</label>
32 <div class="uk-form-controls"> 32 <div class="uk-form-controls">
33 - <select class="form-control nt-dictionary" required name="bcType" data-code="{{bcType}}" 33 + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}"
34 data-group=ScheduleType></select> 34 data-group=ScheduleType></select>
35 </div> 35 </div>
36 </div> 36 </div>
@@ -52,7 +52,7 @@ @@ -52,7 +52,7 @@
52 <div class="uk-form-row"> 52 <div class="uk-form-row">
53 <label class="uk-form-label">起点站</label> 53 <label class="uk-form-label">起点站</label>
54 <div class="uk-form-controls"> 54 <div class="uk-form-controls">
55 - <select name="qdzCode" required> 55 + <select name="qdzCode" >
56 </select> 56 </select>
57 </div> 57 </div>
58 </div> 58 </div>
@@ -61,7 +61,7 @@ @@ -61,7 +61,7 @@
61 <div class="uk-form-row"> 61 <div class="uk-form-row">
62 <label class="uk-form-label">终点站</label> 62 <label class="uk-form-label">终点站</label>
63 <div class="uk-form-controls"> 63 <div class="uk-form-controls">
64 - <select name="zdzCode" required> 64 + <select name="zdzCode" >
65 </select> 65 </select>
66 </div> 66 </div>
67 </div> 67 </div>
@@ -156,7 +156,7 @@ @@ -156,7 +156,7 @@
156 <div class="uk-form-row"> 156 <div class="uk-form-row">
157 <label class="uk-form-label">班次类型</label> 157 <label class="uk-form-label">班次类型</label>
158 <div class="uk-form-controls"> 158 <div class="uk-form-controls">
159 - <select class="form-control nt-dictionary" name="bcType" required data-code="{{bcType}}" 159 + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}"
160 data-group=ScheduleType></select> 160 data-group=ScheduleType></select>
161 </div> 161 </div>
162 </div> 162 </div>
@@ -178,7 +178,7 @@ @@ -178,7 +178,7 @@
178 <div class="uk-form-row"> 178 <div class="uk-form-row">
179 <label class="uk-form-label">起点站</label> 179 <label class="uk-form-label">起点站</label>
180 <div class="uk-form-controls"> 180 <div class="uk-form-controls">
181 - <select name="qdzCode" required> 181 + <select name="qdzCode" >
182 </select> 182 </select>
183 </div> 183 </div>
184 </div> 184 </div>
@@ -187,7 +187,7 @@ @@ -187,7 +187,7 @@
187 <div class="uk-form-row"> 187 <div class="uk-form-row">
188 <label class="uk-form-label">终点站</label> 188 <label class="uk-form-label">终点站</label>
189 <div class="uk-form-controls"> 189 <div class="uk-form-controls">
190 - <select name="zdzCode" required> 190 + <select name="zdzCode" >
191 </select> 191 </select>
192 </div> 192 </div>
193 </div> 193 </div>
@@ -274,7 +274,7 @@ @@ -274,7 +274,7 @@
274 <div class="uk-form-row"> 274 <div class="uk-form-row">
275 <label class="uk-form-label">班次类型</label> 275 <label class="uk-form-label">班次类型</label>
276 <div class="uk-form-controls"> 276 <div class="uk-form-controls">
277 - <select class="form-control nt-dictionary" name="bcType" required data-code="{{bcType}}" 277 + <select class="form-control nt-dictionary" name="bcType" data-code="{{bcType}}"
278 data-group=ScheduleType></select> 278 data-group=ScheduleType></select>
279 </div> 279 </div>
280 </div> 280 </div>
@@ -296,7 +296,7 @@ @@ -296,7 +296,7 @@
296 <div class="uk-form-row"> 296 <div class="uk-form-row">
297 <label class="uk-form-label">起点站</label> 297 <label class="uk-form-label">起点站</label>
298 <div class="uk-form-controls"> 298 <div class="uk-form-controls">
299 - <select name="qdzCode" required> 299 + <select name="qdzCode" >
300 </select> 300 </select>
301 </div> 301 </div>
302 </div> 302 </div>
@@ -305,7 +305,7 @@ @@ -305,7 +305,7 @@
305 <div class="uk-form-row"> 305 <div class="uk-form-row">
306 <label class="uk-form-label">终点站</label> 306 <label class="uk-form-label">终点站</label>
307 <div class="uk-form-controls"> 307 <div class="uk-form-controls">
308 - <select name="zdzCode" required> 308 + <select name="zdzCode" >
309 </select> 309 </select>
310 </div> 310 </div>
311 </div> 311 </div>
@@ -425,7 +425,7 @@ @@ -425,7 +425,7 @@
425 <div class="uk-form-row"> 425 <div class="uk-form-row">
426 <label class="uk-form-label">起点站</label> 426 <label class="uk-form-label">起点站</label>
427 <div class="uk-form-controls"> 427 <div class="uk-form-controls">
428 - <select name="qdzCode" required> 428 + <select name="qdzCode" >
429 </select> 429 </select>
430 </div> 430 </div>
431 </div> 431 </div>
@@ -434,7 +434,7 @@ @@ -434,7 +434,7 @@
434 <div class="uk-form-row"> 434 <div class="uk-form-row">
435 <label class="uk-form-label">终点站</label> 435 <label class="uk-form-label">终点站</label>
436 <div class="uk-form-controls"> 436 <div class="uk-form-controls">
437 - <select name="zdzCode" required> 437 + <select name="zdzCode" >
438 </select> 438 </select>
439 </div> 439 </div>
440 </div> 440 </div>
@@ -524,11 +524,14 @@ @@ -524,11 +524,14 @@
524 <script> 524 <script>
525 (function () { 525 (function () {
526 var modal = '#schedule-addsch-modal', 526 var modal = '#schedule-addsch-modal',
527 - sch, stationRoutes, parks, information,carsArray; 527 + sch, stationRoutes, parks, information,carsArray, st_park_data;
528 528
529 $(modal).on('init', function (e, data) { 529 $(modal).on('init', function (e, data) {
530 e.stopPropagation(); 530 e.stopPropagation();
531 sch = data.sch; 531 sch = data.sch;
  532 +
  533 + //站到场数据
  534 + st_park_data = gb_data_basic.get_stat_park_data()[sch.xlBm];
532 //站点路由 535 //站点路由
533 stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) { 536 stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
534 return a.stationRouteCode - b.stationRouteCode; 537 return a.stationRouteCode - b.stationRouteCode;
@@ -537,6 +540,8 @@ @@ -537,6 +540,8 @@
537 parks = gb_data_basic.simpleParksArray(); 540 parks = gb_data_basic.simpleParksArray();
538 //线路标准 541 //线路标准
539 information = gb_data_basic.getLineInformation(sch.xlBm); 542 information = gb_data_basic.getLineInformation(sch.xlBm);
  543 + //停车场排序,常用的放前面
  544 + parks = sort_parks(parks, information, st_park_data);
540 //车辆信息 545 //车辆信息
541 carsArray = gb_data_basic.carsArray(); 546 carsArray = gb_data_basic.carsArray();
542 547
@@ -579,8 +584,10 @@ @@ -579,8 +584,10 @@
579 opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>' 584 opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'
580 }); 585 });
581 //park options 586 //park options
582 - for (var code in parks)  
583 - park_opts += '<option value="' + code + '">' + parks[code] + '</option>'; 587 + for(var i=0,p;p=parks[i++];)
  588 + park_opts += '<option value="' + p.code + '">' + p.name + '</option>';
  589 + /*for (var code in parks)
  590 + park_opts += '<option value="' + code + '">' + parks[code] + '</option>';*/
584 591
585 var qdz = $('[name=qdzCode]', f), zdz = $('[name=zdzCode]', f); 592 var qdz = $('[name=qdzCode]', f), zdz = $('[name=zdzCode]', f);
586 var time, mileage; 593 var time, mileage;
@@ -922,8 +929,10 @@ @@ -922,8 +929,10 @@
922 929
923 //park options 930 //park options
924 var park_opts; 931 var park_opts;
925 - for (var code in parks)  
926 - park_opts += '<option value="' + code + '">' + parks[code] + '</option>'; 932 + for(var i=0,p;p=parks[i++];)
  933 + park_opts += '<option value="' + p.code + '">' + p.name + '</option>';
  934 + /*for (var code in parks)
  935 + park_opts += '<option value="' + code + '">' + parks[code] + '</option>';*/
927 $('[name=qdzCode]', f).html(park_opts); 936 $('[name=qdzCode]', f).html(park_opts);
928 $('[name=zdzCode]', f).html(park_opts); 937 $('[name=zdzCode]', f).html(park_opts);
929 if(sch.bcType=='in'){ 938 if(sch.bcType=='in'){
@@ -981,6 +990,44 @@ @@ -981,6 +990,44 @@
981 } 990 }
982 } 991 }
983 992
  993 +
  994 + /**
  995 + * 停车场排序
  996 + * @param parks 停车场 code 2 name
  997 + * @param information 线路标准
  998 + * @param st_park_data 站到场
  999 + */
  1000 + function sort_parks(parks, information, st_park_data) {
  1001 + var array = [], names=[];
  1002 + for(var code in parks){
  1003 + array.push({code: code, name: parks[code]});
  1004 + }
  1005 +
  1006 + if(st_park_data && st_park_data.length > 0){
  1007 + $.each(st_park_data, function () {
  1008 + names.push(this.parkName);
  1009 + });
  1010 + }
  1011 +
  1012 + //debugger
  1013 + array.sort(function (a, b) {
  1014 + if(a.code==information.carPark)
  1015 + return -1;
  1016 + if(b.code==information.carPark)
  1017 + return 1;
  1018 +
  1019 + var ai = names.indexOf(a.name),
  1020 + bi = names.indexOf(b.name);
  1021 +
  1022 + if(ai!=-1 && bi==-1)
  1023 + return -1;
  1024 + else if(ai==-1 && bi!=-1)
  1025 + return 1;
  1026 + else
  1027 + return a.name.localeCompare(b.name);
  1028 + });
  1029 + return array;
  1030 + }
984 })(); 1031 })();
985 </script> 1032 </script>
986 </div> 1033 </div>
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lj_zrw.html
@@ -303,10 +303,10 @@ @@ -303,10 +303,10 @@
303 var xlBm = $('[name=lineSelect]', f).val(); 303 var xlBm = $('[name=lineSelect]', f).val();
304 var xlName = $('[name=lineSelect]', f).find("option:selected").text(); 304 var xlName = $('[name=lineSelect]', f).find("option:selected").text();
305 var lpName = $('[name=lpName]', f).val(); 305 var lpName = $('[name=lpName]', f).val();
306 - sch = {xlBm: xlBm,xlName: xlName, lpName: lpName}; 306 + sch = {xlBm: xlBm,xlName: xlName, lpName: lpName, zdsj: moment().format('HH:mm')};
307 } 307 }
308 308
309 - open_modal(folder + '/add_temp_sch.html', { 309 + open_modal(folder + '/temp_sch/main.html', {
310 sch: sch 310 sch: sch
311 }, modal_opts); 311 }, modal_opts);
312 }; 312 };
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/main.html
@@ -33,6 +33,8 @@ @@ -33,6 +33,8 @@
33 <div class="station_to_park_link"> 33 <div class="station_to_park_link">
34 <a>站 <i class="uk-icon-exchange"></i> 场</a> 34 <a>站 <i class="uk-icon-exchange"></i> 场</a>
35 </div> 35 </div>
  36 +
  37 + <abbr title="系统基础信息录入的停车场,必须绘制闭合多边形地理位置,才会纳入选项">缺少停车场选项?</abbr>
36 </div> 38 </div>
37 </div> 39 </div>
38 40
@@ -57,7 +59,7 @@ @@ -57,7 +59,7 @@
57 <div class="uk-form-row"> 59 <div class="uk-form-row">
58 <label class="uk-form-label">起点 </label> 60 <label class="uk-form-label">起点 </label>
59 <div class="uk-form-controls"> 61 <div class="uk-form-controls">
60 - <select name="startStation" required></select> 62 + <select name="startStation" ></select>
61 </div> 63 </div>
62 </div> 64 </div>
63 </div> 65 </div>
@@ -65,7 +67,7 @@ @@ -65,7 +67,7 @@
65 <div class="uk-form-row"> 67 <div class="uk-form-row">
66 <label class="uk-form-label">终点</label> 68 <label class="uk-form-label">终点</label>
67 <div class="uk-form-controls"> 69 <div class="uk-form-controls">
68 - <select name="endStation" required></select> 70 + <select name="endStation" ></select>
69 </div> 71 </div>
70 </div> 72 </div>
71 </div> 73 </div>
@@ -220,6 +222,8 @@ @@ -220,6 +222,8 @@
220 parks = gb_data_basic.simpleParksArray(); 222 parks = gb_data_basic.simpleParksArray();
221 //线路标准 223 //线路标准
222 information = gb_data_basic.getLineInformation(sch.xlBm); 224 information = gb_data_basic.getLineInformation(sch.xlBm);
  225 + //停车场排序,常用的放前面
  226 + parks = sort_parks(parks, information, st_park_data);
223 227
224 var st_doms = gb_schedule_context_menu.get_st_doms(); 228 var st_doms = gb_schedule_context_menu.get_st_doms();
225 //普通 229 //普通
@@ -305,8 +309,10 @@ @@ -305,8 +309,10 @@
305 opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>' 309 opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'
306 }); 310 });
307 //park options 311 //park options
308 - for (var code in parks)  
309 - park_opts += '<option value="' + code + '">' + parks[code] + '</option>'; 312 + for(var i=0,p;p=parks[i++];)
  313 + park_opts += '<option value="' + p.code + '">' + p.name + '</option>';
  314 + /*for (var code in parks)
  315 + park_opts += '<option value="' + code + '">' + parks[code] + '</option>';*/
310 316
311 var qdz = $f('startStation', f), zdz = $f('endStation', f), mType = $f('mileageType', f); 317 var qdz = $f('startStation', f), zdz = $f('endStation', f), mType = $f('mileageType', f);
312 var domainsTemp; 318 var domainsTemp;
@@ -605,6 +611,50 @@ @@ -605,6 +611,50 @@
605 sch: sch 611 sch: sch
606 }, {center: false, bgclose: false, modal: false}); 612 }, {center: false, bgclose: false, modal: false});
607 }); 613 });
  614 +
  615 + /**
  616 + * 停车场排序
  617 + * @param parks 停车场 code 2 name
  618 + * @param information 线路标准
  619 + * @param st_park_data 站到场
  620 + */
  621 + function sort_parks(parks, information, st_park_data) {
  622 + var array = [], names=[];
  623 + for(var code in parks){
  624 + array.push({code: code, name: parks[code]});
  625 + }
  626 +
  627 + if(st_park_data && st_park_data.length > 0){
  628 + $.each(st_park_data, function () {
  629 + names.push(this.parkName);
  630 + });
  631 + }
  632 +
  633 + //debugger
  634 + array.sort(function (a, b) {
  635 + if(a.code==information.carPark)
  636 + return -1;
  637 + if(b.code==information.carPark)
  638 + return 1;
  639 +
  640 + var ai = names.indexOf(a.name),
  641 + bi = names.indexOf(b.name);
  642 +
  643 + if(ai!=-1 && bi==-1)
  644 + return -1;
  645 + else if(ai==-1 && bi!=-1)
  646 + return 1;
  647 + else
  648 + return a.name.localeCompare(b.name);
  649 + });
  650 +
  651 + /*var rs = {};
  652 + $.each(array, function () {
  653 + rs[this.code]=this.name;
  654 + });*/
  655 +
  656 + return array;
  657 + }
608 })(); 658 })();
609 </script> 659 </script>
610 </div> 660 </div>
611 \ No newline at end of file 661 \ No newline at end of file
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/add_temp_sch_old.html renamed to src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch/add_normal.html
1 -<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal">  
2 - <div class="uk-modal-dialog">  
3 - <a href="" class="uk-modal-close uk-close"></a>  
4 - <div class="uk-modal-header">  
5 - <h2>新增临加班次</h2></div>  
6 - <form class="uk-form uk-form-horizontal">  
7 - </form>  
8 - </div>  
9 -  
10 - <script id="schedule-addsch-form-temp" type="text/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">
11 <div class="uk-grid"> 4 <div class="uk-grid">
12 <div class="uk-width-1-2"> 5 <div class="uk-width-1-2">
13 <div class="uk-form-row"> 6 <div class="uk-form-row">
@@ -35,7 +28,7 @@ @@ -35,7 +28,7 @@
35 <div class="uk-form-row"> 28 <div class="uk-form-row">
36 <label class="uk-form-label">起点站</label> 29 <label class="uk-form-label">起点站</label>
37 <div class="uk-form-controls"> 30 <div class="uk-form-controls">
38 - <select name="qdzCode" required> 31 + <select name="qdzCode">
39 </select> 32 </select>
40 </div> 33 </div>
41 </div> 34 </div>
@@ -44,7 +37,7 @@ @@ -44,7 +37,7 @@
44 <div class="uk-form-row"> 37 <div class="uk-form-row">
45 <label class="uk-form-label">终点站</label> 38 <label class="uk-form-label">终点站</label>
46 <div class="uk-form-controls"> 39 <div class="uk-form-controls">
47 - <select name="zdzCode" required> 40 + <select name="zdzCode">
48 </select> 41 </select>
49 </div> 42 </div>
50 </div> 43 </div>
@@ -55,7 +48,7 @@ @@ -55,7 +48,7 @@
55 <div class="uk-form-row"> 48 <div class="uk-form-row">
56 <label class="uk-form-label">开始时间</label> 49 <label class="uk-form-label">开始时间</label>
57 <div class="uk-form-controls"> 50 <div class="uk-form-controls">
58 - <input type="time" value="{{zdsj}}" name="fcsj" required> 51 + <input type="time" value="{{zdsjActual==null?zdsj:zdsjActual}}" name="fcsj" required>
59 </div> 52 </div>
60 </div> 53 </div>
61 </div> 54 </div>
@@ -92,8 +85,7 @@ @@ -92,8 +85,7 @@
92 <div class="uk-grid"> 85 <div class="uk-grid">
93 <div class="uk-width-1-2"> 86 <div class="uk-width-1-2">
94 <div class="uk-form-row"> 87 <div class="uk-form-row">
95 - <label class="uk-form-label">驾驶员  
96 - <!--<i class="uk-icon-question-circle" data-uk-tooltip title="如果有驾驶员未提示,请至后台“基础信息 -人员信息”里纠正该员工的“工种”类别 "></i>--></label> 88 + <label class="uk-form-label">驾驶员</label>
97 <div class="uk-form-controls"> 89 <div class="uk-form-controls">
98 <div class="uk-autocomplete uk-form jsy-autocom"> 90 <div class="uk-autocomplete uk-form jsy-autocom">
99 <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required> 91 <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>
@@ -112,155 +104,74 @@ @@ -112,155 +104,74 @@
112 </div> 104 </div>
113 </div> 105 </div>
114 </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>
115 <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;"> 119 <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  120 + <span class="ct_line_lp_badge"></span>
116 <button type="button" class="uk-button uk-modal-close">取消</button> 121 <button type="button" class="uk-button uk-modal-close">取消</button>
117 - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button> 122 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存
  123 + </button>
118 </div> 124 </div>
119 - </script>  
120 -  
121 - <script>  
122 - (function () {  
123 - var modal = '#schedule-addsch-modal',  
124 - sch, stationRoutes, parks, information;  
125 -  
126 - var normalInfo = [];  
127 - $(modal).on('init', function (e, data) {  
128 - e.stopPropagation();  
129 - sch = data.sch;  
130 - //normal 班次里程和耗时  
131 - var list = gb_common.get_vals(gb_schedule_table.findScheduleByLine(sch.xlBm));  
132 - var upPlan = getNormalSch(list, 0)  
133 - , downPlan = getNormalSch(list, 1);  
134 - normalInfo[0] = {time: upPlan.bcsj, mileage: upPlan.jhlc};  
135 - normalInfo[1] = {time: downPlan.bcsj, mileage: downPlan.jhlc};  
136 -  
137 -  
138 - var formHtml = template('schedule-addsch-form-temp', sch);  
139 - $('form', modal).html(formHtml);  
140 - //字典转换  
141 - dictionaryUtils.transformDom($('.nt-dictionary', modal));  
142 -  
143 - //----------- Autocomplete --------------  
144 - $.get('/basic/cars', function (rs) {  
145 - //车辆  
146 - gb_common.carAutocomplete($('.car-autocom', modal), rs);  
147 - });  
148 - //驾驶员  
149 - gb_common.personAutocomplete($('.jsy-autocom', modal));  
150 -  
151 - //售票员  
152 - gb_common.personAutocomplete($('.spy-autocom', modal));  
153 -  
154 - //站点路由  
155 - stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {  
156 - return a.stationRouteCode - b.stationRouteCode;  
157 - }), 'directions');  
158 - //停车场  
159 - $.get('/basic/parks', function (rs) {  
160 - parks = rs;  
161 - });  
162 - //线路标准  
163 - information = gb_data_basic.getLineInformation(sch.xlBm);  
164 -  
165 - //submit  
166 - var f = $('form', modal).formValidation(gb_form_validation_opts);  
167 - f.on('success.form.fv', function (e) {  
168 - disabled_submit_btn(this);  
169 - e.preventDefault();  
170 - var data = $(this).serializeJSON();  
171 - data.xlBm = sch.xlBm;  
172 - data.xlName = sch.xlName;  
173 - data.lpName = sch.lpName;  
174 - //拆分驾驶员工号和姓名  
175 - data.jGh = data.jsy.split('/')[0];  
176 - data.jName = data.jsy.split('/')[1];  
177 - delete data.jsy;  
178 - //拆分售票员工号和姓名  
179 - if (data.sGh != null) {  
180 - data.sGh = data.spy.split('/')[0];  
181 - data.sName = data.spy.split('/')[1];  
182 - delete data.spy;  
183 - }  
184 -  
185 - //公司信息  
186 - var line = gb_data_basic.findLineByCodes([data.xlBm]);  
187 - if(line && line.length > 0){  
188 - line = line[0];  
189 - data.gsBm = line.company;  
190 - data.fgsBm = line.brancheCompany;  
191 - }  
192 -  
193 - gb_common.$post('/realSchedule', data, function (rs) {  
194 - //插入  
195 - gb_schedule_table.insertSchedule(rs.t, rs.ts);  
196 - $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t});  
197 - UIkit.modal(modal).hide();  
198 - notify_succ('新增临加班次成功');  
199 - }); 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();
200 }); 153 });
201 -  
202 - //班次类型 和 上下行切换  
203 - $('[name=bcType],[name=xlDir]', f).on('change', function () {  
204 - var bcType_e = $('[name=bcType]', f)  
205 - , xlDir_e = $('[name=xlDir]', f);  
206 -  
207 - var routes = stationRoutes[xlDir_e.val()]  
208 - , lastCode = routes[routes.length - 1].stationCode  
209 - , opts = '', park_opts = '';  
210 - //station options  
211 - $.each(routes, function () {  
212 - opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'  
213 - });  
214 - //park options  
215 - for (var code in parks)  
216 - park_opts += '<option value="' + code + '">' + parks[code] + '</option>';  
217 -  
218 - var qdz = $('[name=qdzCode]', f), zdz = $('[name=zdzCode]', f);  
219 - var time, mileage;  
220 - switch (bcType_e.val()) {  
221 - case 'out':  
222 - qdz.html(park_opts).val(information.carPark);  
223 - zdz.html(opts);  
224 - //出场结束时间  
225 - time = xlDir_e.val() == 0 ? information.upOutTimer : information.downOutTimer;  
226 - mileage = xlDir_e.val() == 0 ? information.upOutMileage : information.downOutMileage;  
227 - break;  
228 - case 'in':  
229 - qdz.html(opts);  
230 - zdz.html(park_opts).val(information.carPark);  
231 - //进场结束时间  
232 - time = xlDir_e.val() == 0 ? information.upInTimer : information.downInTimer;  
233 - mileage = xlDir_e.val() == 0 ? information.upInMileage : information.downInMileage;  
234 - break;  
235 - default:  
236 - qdz.html(opts);  
237 - zdz.html(opts).val(lastCode);  
238 - time = xlDir_e.val() == 0?normalInfo[0].time:normalInfo[1].time;  
239 - mileage = xlDir_e.val() == 0?normalInfo[0].mileage:normalInfo[1].mileage;  
240 - }  
241 -  
242 - setEndTime(time);  
243 - $('[name=jhlc]', f).val(mileage);  
244 - }).trigger('change');  
245 -  
246 -  
247 - function setEndTime(diff) {  
248 - var et = moment($('[name=fcsj]', f).val(), 'HH:mm').add(diff, 'minutes').format('HH:mm');  
249 - $('[name=zdsj]', f).val(et);  
250 - }  
251 }); 154 });
252 -  
253 - function getNormalSch(list, updown) {  
254 - var sch;  
255 - $.each(list, function () {  
256 - if (this.bcType == 'normal' && this.xlDir == updown) {  
257 - sch = this;  
258 - return false;  
259 - }  
260 - });  
261 -  
262 - return sch;  
263 - }  
264 - })();  
265 - </script>  
266 -</div> 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>
267 \ 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 0 → 100644
  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>
0 \ 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 0 → 100644
  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>
0 \ 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 0 → 100644
  1 +<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-addsch-modal">
  2 + <div class="uk-modal-dialog" style="width: 800px;">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>新增临加班次</h2></div>
  6 +
  7 + <div class="uk-grid">
  8 + <div class="uk-width-1-4">
  9 + <ul data-uk-switcher="{connect:'#tempScheduleContent'}" class="uk-nav uk-nav-side left_tabs_lg">
  10 + <li data-handle="normal"><a>1、临加班次</a></li>
  11 + <li data-handle="toAndFro"><a>2、往返</a></li>
  12 + <li data-handle="parkToPark"><a>3、场到场</a></li>
  13 + </ul>
  14 + </div>
  15 + <div class="uk-width-3-4">
  16 + <ul id="tempScheduleContent" class="uk-switcher">
  17 + <li class="normalCont"></li>
  18 + <li class="toAndFroCont"></li>
  19 + <li class="parkToParkCont"></li>
  20 + </ul>
  21 + </div>
  22 + </div>
  23 + </div>
  24 +
  25 + <script>
  26 + (function () {
  27 + var modal = '#schedule-addsch-modal',
  28 + sch, stationRoutes, parks, information, carsArray, st_park_data;
  29 +
  30 + $(modal).on('init', function (e, data) {
  31 + e.stopPropagation();
  32 + sch = data.sch;
  33 + //站到场数据
  34 + st_park_data = gb_data_basic.get_stat_park_data()[sch.xlBm];
  35 + //站点路由
  36 + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
  37 + return a.stationRouteCode - b.stationRouteCode;
  38 + }), 'directions');
  39 + //停车场
  40 + parks = gb_data_basic.simpleParksArray();
  41 + //线路标准
  42 + information = gb_data_basic.getLineInformation(sch.xlBm);
  43 + //停车场排序,常用的放前面
  44 + parks = sort_parks(parks, information, st_park_data);
  45 + //车辆信息
  46 + carsArray = gb_data_basic.carsArray();
  47 +
  48 + var st_doms = gb_schedule_context_menu.get_add_sch_doms();
  49 + //normal
  50 + $('.normalCont', modal).html(st_doms.normal_dom)
  51 + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form});
  52 +
  53 + //to and fro
  54 + $('.toAndFroCont', modal).html(st_doms.two_way_dom)
  55 + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form, stationRoutes: stationRoutes});
  56 +
  57 + //park to park
  58 + $('.parkToParkCont', modal).html(st_doms.park_to_park_dom)
  59 + .trigger('init', {sch: sch, submitFun: submit_temp_schedule_form, parks: parks, carsArray: carsArray});
  60 + });
  61 +
  62 + //init-autoCom
  63 + $(modal).on('init-autoCom', '.add-sch-form', function () {
  64 + //车辆
  65 + if(carsArray)
  66 + gb_common.carAutocomplete($('.car-autocom', this), carsArray);
  67 + //驾驶员
  68 + gb_common.personAutocomplete($('.jsy-autocom', this));
  69 + //售票员
  70 + gb_common.personAutocomplete($('.spy-autocom', this));
  71 + //备注补全
  72 + gb_common.remarksAutocomplete($('.remarks-autocom', this));
  73 + });
  74 +
  75 + //班次类型 和 上下行 切换事件
  76 + $(modal).on('change', '.add-sch-form [name=bcType],.add-sch-form [name=xlDir]', reCalcInputs_type);
  77 + //起终点站改变事件
  78 + $(modal).on('change', '[name=qdzCode],[name=zdzCode]', reCalcInputs_station);
  79 + //开始时间和公里改变
  80 + $(modal).on('input', '.add-sch-form [name=fcsj],.add-sch-form [name=jhlc]', reCalcEndTime);
  81 +
  82 +
  83 + function reCalcInputs_type() {
  84 + var f = $(this).parents('.add-sch-form');
  85 + var bcType_e = $('[name=bcType]', f)
  86 + , xlDir_e = $('[name=xlDir]', f);
  87 +
  88 + var routes = stationRoutes[xlDir_e.val()]
  89 + , lastCode = routes[routes.length - 1].stationCode
  90 + , opts = '', park_opts = '';
  91 + //station options
  92 + $.each(routes, function () {
  93 + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'
  94 + });
  95 + //park options
  96 + for(var i=0,p;p=parks[i++];)
  97 + park_opts += '<option value="' + p.code + '">' + p.name + '</option>';
  98 +
  99 + var qdz = $('[name=qdzCode]', f), zdz = $('[name=zdzCode]', f);
  100 + //var time, mileage;
  101 + switch (bcType_e.val()) {
  102 + case 'out':
  103 + qdz.html(park_opts).val(information.carPark);
  104 + zdz.html(opts);
  105 + break;
  106 + case 'in':
  107 + qdz.html(opts);
  108 + zdz.html(park_opts).val(information.carPark);
  109 + break;
  110 + default:
  111 + qdz.html(opts);
  112 + zdz.html(opts).val(lastCode);
  113 + }
  114 +
  115 + zdz.trigger('change');
  116 + f.trigger('ct_callback');
  117 + }
  118 +
  119 + function reCalcInputs_station() {
  120 + var f = $(this).parents('form'),
  121 + bcType = $('[name=bcType]', f).val(),
  122 + qdzCode = $('[name=qdzCode]', f).val(),
  123 + zdzCode =$('[name=zdzCode]', f).val(),
  124 + startDate = $('[name=fcsj]', f).val(),
  125 + upDown = $('[name=xlDir]', f).val(), mileage, time;
  126 +
  127 + //从站到场里获取数据
  128 + var stp = search_st_park(f);
  129 + if(stp){
  130 + mileage=bcType=='in'?stp['mileage1']:stp['mileage2'];
  131 + time=bcType=='in'?stp['time1']:stp['time2'];
  132 + }
  133 + else{
  134 + switch (upDown + '_' + bcType) {
  135 + case '0_out'://上行出场
  136 + mileage = information.upOutMileage;
  137 + time = information.upOutTimer;
  138 + break;
  139 + case '1_out'://下行出场
  140 + mileage = information.downOutMileage;
  141 + time = information.downOutTimer;
  142 + break;
  143 + case '0_in'://上行进场
  144 + mileage = information.upInMileage;
  145 + time = information.upInTimer;
  146 + break;
  147 + case '1_in'://下行进场
  148 + mileage = information.downInMileage;
  149 + time = information.downInTimer;
  150 + break;
  151 + default:
  152 +
  153 + var qc_time=upDown==0?information.upTravelTime:information.downTravelTime,
  154 + qc_mileage=upDown==0?information.upMileage:information.downMileage;
  155 + if(is_normal_sch(f)){
  156 + bcType='normal';
  157 + mileage=qc_mileage;
  158 + }
  159 + else{
  160 + bcType='region';
  161 + mileage = calcMileage(stationRoutes[upDown], qdzCode, zdzCode);
  162 + }
  163 +
  164 + time = gb_common.mul(gb_common.accDiv(qc_time, qc_mileage), mileage);
  165 + $('[name=bcType]', f).val(bcType);
  166 + }
  167 + }
  168 +
  169 + $('[name=jhlc]', f).val(mileage);
  170 + var et = moment(startDate, 'HH:mm').add(time, 'minutes');
  171 + $f('zdsj', f).val(et.format('HH:mm'));
  172 + f.trigger('ct_callback');
  173 + }
  174 +
  175 +
  176 + function reCalcEndTime() {
  177 + var f = $(this).parents('.add-sch-form')
  178 + , startDate = $f('fcsj', f).val()//开始时间
  179 + , mileage = $f('jhlc', f).val()//公里
  180 + , type2 = $f('bcType', f).val(),//班次类型
  181 + upDown = $('[name=xlDir]', f).val();
  182 + if (!startDate || !mileage)
  183 + return;
  184 +
  185 + var time;
  186 + //从站到场里获取数据
  187 + var stp = search_st_park(f);
  188 + if(stp){
  189 + time=type2=='in'?stp['time1']:stp['time2'];
  190 + }
  191 + else{
  192 + if (type2 == 'in')
  193 + time = upDown == 0 ? information.upInTimer : information.downInTimer;
  194 + else if (type2 == 'out')
  195 + time = upDown == 0 ? information.upOutTimer : information.downOutTimer;
  196 + else{
  197 + var qc_time=upDown==0?information.upTravelTime:information.downTravelTime,
  198 + qc_mileage=upDown==0?information.upMileage:information.downMileage;
  199 +
  200 + time = gb_common.mul(gb_common.accDiv(qc_time, qc_mileage), mileage);
  201 + }
  202 + }
  203 +
  204 + var et = moment(startDate, 'HH:mm').add(time, 'minutes');
  205 + $f('zdsj', f).val(et.format('HH:mm'));
  206 + f.trigger('ct_callback');
  207 + }
  208 +
  209 + function is_normal_sch(f) {
  210 + var qdzCode = $('[name=qdzCode]', f).val(),
  211 + zdzCode =$('[name=zdzCode]', f).val(),
  212 + upDown = $('[name=xlDir]', f).val(),
  213 + rts = stationRoutes[upDown];
  214 +
  215 + if(rts[0].stationCode == qdzCode
  216 + && rts[rts.length - 1].stationCode == zdzCode)
  217 + return true;
  218 + else
  219 + return false;
  220 + }
  221 +
  222 + function isInOut(bcType) {
  223 + return bcType=='in' || bcType=='out';
  224 + }
  225 +
  226 + /**
  227 + * 计算线路上站点间公里
  228 + */
  229 + function calcMileage(rts, s, e) {
  230 + var mileage = 0, flag, code;
  231 + $.each(rts, function () {
  232 + code = this['stationCode'];
  233 + if (flag)
  234 + mileage = gb_common.accAdd(mileage, this.distances);
  235 + if (code == s)
  236 + flag = true;
  237 + if (code == e)
  238 + return false;
  239 + });
  240 + return mileage;
  241 + }
  242 +
  243 + function search_st_park(f) {
  244 + if(!st_park_data)
  245 + return;
  246 + var stp;
  247 + var qdSelect=$f('qdzCode', f)[0],zdSelect=$f('zdzCode', f)[0];
  248 +
  249 + var qdzName=qdSelect.options[qdSelect.options.selectedIndex].text,
  250 + zdzName=zdSelect.options[zdSelect.options.selectedIndex].text,
  251 + type2 = $f('bcType', f).val();
  252 +
  253 + if(!isInOut(type2))
  254 + return;
  255 +
  256 + $.each(st_park_data, function () {
  257 + if((type2=='in' && this.stationName==qdzName && this.parkName==zdzName)
  258 + || (type2=='out' && this.stationName==zdzName && this.parkName==qdzName)){
  259 + stp = this;
  260 + return false;
  261 + }
  262 + });
  263 +
  264 + return stp;
  265 + }
  266 +
  267 + /**
  268 + * 停车场排序
  269 + * @param parks 停车场 code 2 name
  270 + * @param information 线路标准
  271 + * @param st_park_data 站到场
  272 + */
  273 + function sort_parks(parks, information, st_park_data) {
  274 + var array = [], names=[];
  275 + for(var code in parks){
  276 + array.push({code: code, name: parks[code]});
  277 + }
  278 +
  279 + if(st_park_data && st_park_data.length > 0){
  280 + $.each(st_park_data, function () {
  281 + names.push(this.parkName);
  282 + });
  283 + }
  284 +
  285 + //debugger
  286 + array.sort(function (a, b) {
  287 + if(a.code==information.carPark)
  288 + return -1;
  289 + if(b.code==information.carPark)
  290 + return 1;
  291 +
  292 + var ai = names.indexOf(a.name),
  293 + bi = names.indexOf(b.name);
  294 +
  295 + if(ai!=-1 && bi==-1)
  296 + return -1;
  297 + else if(ai==-1 && bi!=-1)
  298 + return 1;
  299 + else
  300 + return a.name.localeCompare(b.name);
  301 + });
  302 + return array;
  303 + }
  304 +
  305 + function $f(name, f) {
  306 + return $('[name=' + name + ']', f);
  307 + }
  308 +
  309 + /**
  310 + * 提交表单
  311 + */
  312 + function submit_temp_schedule_form(data, cb) {
  313 + data.xlBm = sch.xlBm;
  314 + data.xlName = sch.xlName;
  315 + data.lpName = sch.lpName;
  316 + //拆分驾驶员工号和姓名
  317 + data.jGh = data.jsy.split('/')[0];
  318 + data.jName = data.jsy.split('/')[1];
  319 + delete data.jsy;
  320 + //拆分售票员工号和姓名
  321 + if (data.spy != '') {
  322 + data.sGh = data.spy.split('/')[0];
  323 + data.sName = data.spy.split('/')[1];
  324 + delete data.spy;
  325 + }
  326 +
  327 + //公司信息
  328 + var line = gb_data_basic.findLineByCodes([data.xlBm]);
  329 + if(line && line.length > 0){
  330 + line = line[0];
  331 + data.gsBm = line.company;
  332 + data.fgsBm = line.brancheCompany;
  333 + }
  334 +
  335 + gb_common.$post('/realSchedule', data, function (rs) {
  336 + notify_succ('新增临加班次成功');
  337 + cb && cb(rs);
  338 + });
  339 + }
  340 + })();
  341 + </script>
  342 +</div>
src/main/resources/static/real_control_v2/js/line_schedule/context_menu.js
@@ -19,10 +19,25 @@ var gb_schedule_context_menu = (function () { @@ -19,10 +19,25 @@ var gb_schedule_context_menu = (function () {
19 $.get(folder + '/sub_task_v2/add_range_turn.html', function (dom) { 19 $.get(folder + '/sub_task_v2/add_range_turn.html', function (dom) {
20 st_doms.range_dom=dom; 20 st_doms.range_dom=dom;
21 }); 21 });
  22 + //提前缓存临加的片段页面
  23 + var add_sch_doms={};
  24 + $.get(folder + '/temp_sch/add_normal.html', function (dom) {
  25 + add_sch_doms.normal_dom=dom;
  26 + });
  27 + $.get(folder + '/temp_sch/add_two_way.html', function (dom) {
  28 + add_sch_doms.two_way_dom=dom;
  29 + });
  30 + $.get(folder + '/temp_sch/add_park_to_park.html', function (dom) {
  31 + add_sch_doms.park_to_park_dom=dom;
  32 + });
  33 +
22 34
23 var callbackHandler = { 35 var callbackHandler = {
24 get_st_doms: function () { 36 get_st_doms: function () {
25 - return st_doms; 37 + return st_doms;
  38 + },
  39 + get_add_sch_doms: function () {
  40 + return add_sch_doms;
26 }, 41 },
27 dftz: function (sch) { 42 dftz: function (sch) {
28 open_modal(folder + '/dftz.html', { 43 open_modal(folder + '/dftz.html', {
@@ -247,7 +262,7 @@ var gb_schedule_context_menu = (function () { @@ -247,7 +262,7 @@ var gb_schedule_context_menu = (function () {
247 }); 262 });
248 }, 263 },
249 add_temp_sch: function (sch) { 264 add_temp_sch: function (sch) {
250 - open_modal(folder + '/add_temp_sch.html', { 265 + open_modal(folder + '/temp_sch/main.html', {
251 sch: sch 266 sch: sch
252 }, modal_opts); 267 }, modal_opts);
253 }, 268 },
src/main/resources/timetable.proto 0 → 100644
  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 +