Commit 60d9da6bada4ceae9e34e8100e30f4d42997970b

Authored by 廖磊
2 parents c980ab0c 1b849a09

Merge branch 'minhang' of 192.168.168.201:panzhaov5/bsth_control into

minhang
Showing 72 changed files with 1374 additions and 796 deletions
src/main/java/com/bsth/controller/realcontrol/RealChartsController.java
@@ -3,6 +3,7 @@ package com.bsth.controller.realcontrol; @@ -3,6 +3,7 @@ package com.bsth.controller.realcontrol;
3 import com.bsth.service.realcontrol.RealChartsService; 3 import com.bsth.service.realcontrol.RealChartsService;
4 import com.bsth.service.realcontrol.dto.CarOutRate; 4 import com.bsth.service.realcontrol.dto.CarOutRate;
5 import com.bsth.service.realcontrol.dto.DeviceOnlineRate; 5 import com.bsth.service.realcontrol.dto.DeviceOnlineRate;
  6 +import com.bsth.service.realcontrol.dto.ScheduleExecRate;
6 import com.bsth.service.realcontrol.dto.StratEndPunctualityRate; 7 import com.bsth.service.realcontrol.dto.StratEndPunctualityRate;
7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.web.bind.annotation.RequestMapping; 9 import org.springframework.web.bind.annotation.RequestMapping;
@@ -32,13 +33,18 @@ public class RealChartsController { @@ -32,13 +33,18 @@ public class RealChartsController {
32 return realChartsService.carOutRate(month, idx); 33 return realChartsService.carOutRate(month, idx);
33 } 34 }
34 35
35 - @RequestMapping("stratEndPunctualityRate") 36 +/* @RequestMapping("stratEndPunctualityRate")
36 public List<StratEndPunctualityRate> stratEndPunctualityRate(@RequestParam String idx, @RequestParam String month){ 37 public List<StratEndPunctualityRate> stratEndPunctualityRate(@RequestParam String idx, @RequestParam String month){
37 return realChartsService.stratEndPunctualityRate(month, idx); 38 return realChartsService.stratEndPunctualityRate(month, idx);
38 - } 39 + }*/
39 40
40 @RequestMapping("sePunctualityRateLine") 41 @RequestMapping("sePunctualityRateLine")
41 public List<StratEndPunctualityRate> sePunctualityRateLine(@RequestParam String idx, @RequestParam String month){ 42 public List<StratEndPunctualityRate> sePunctualityRateLine(@RequestParam String idx, @RequestParam String month){
42 return realChartsService.sePunctualityRateLine(month, idx); 43 return realChartsService.sePunctualityRateLine(month, idx);
43 } 44 }
  45 +
  46 + @RequestMapping("scheduleExecRates")
  47 + public List<ScheduleExecRate> scheduleExecRates(@RequestParam String idx, @RequestParam String date){
  48 + return realChartsService.scheduleExecRates(date, idx);
  49 + }
44 } 50 }
src/main/java/com/bsth/controller/schedule/TTInfoDetailController.java
@@ -116,6 +116,7 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; { @@ -116,6 +116,7 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; {
116 if (sheet.getRows() == 0 || sheet.getColumns() == 0) { // 工作区是否为空 116 if (sheet.getRows() == 0 || sheet.getColumns() == 0) { // 工作区是否为空
117 rtn.put("status", ResponseCode.ERROR); 117 rtn.put("status", ResponseCode.ERROR);
118 rtn.put("msg", String.format("%s 工作区没有数据!", sheetname)); 118 rtn.put("msg", String.format("%s 工作区没有数据!", sheetname));
  119 + return rtn;
119 } else { 120 } else {
120 if (sheet.getRows() <= 1 || sheet.getColumns() <= 1) { 121 if (sheet.getRows() <= 1 || sheet.getColumns() <= 1) {
121 rtn.put("status", ResponseCode.ERROR); 122 rtn.put("status", ResponseCode.ERROR);
@@ -147,11 +148,11 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; { @@ -147,11 +148,11 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; {
147 List<StationRoute> stationRouteList = (List<StationRoute>) stationRouteService.list(p1); 148 List<StationRoute> stationRouteList = (List<StationRoute>) stationRouteService.list(p1);
148 if (CollectionUtils.isEmpty(stationRouteList)) { 149 if (CollectionUtils.isEmpty(stationRouteList)) {
149 rtn.put("status", ResponseCode.ERROR); 150 rtn.put("status", ResponseCode.ERROR);
150 - rtn.put("msg", String.format("第1行,第%d列数据在%s站点路由中不是起点站", i + 1, linename)); 151 + rtn.put("msg", String.format("第1行,第%d列数据%s在%s站点路由中不是起点站", i + 1, cell_con.trim(), linename));
151 return rtn; 152 return rtn;
152 } else if (stationRouteList.size() > 1) { 153 } else if (stationRouteList.size() > 1) {
153 rtn.put("status", ResponseCode.ERROR); 154 rtn.put("status", ResponseCode.ERROR);
154 - rtn.put("msg", String.format("第1行,第%d列数据在%s站点路由中上下行都是起点站", i + 1, linename)); 155 + rtn.put("msg", String.format("第1行,第%d列数据%s在%s站点路由中上下行都是起点站", i + 1, cell_con.trim(), linename));
155 return rtn; 156 return rtn;
156 } 157 }
157 } 158 }
@@ -363,6 +364,7 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; { @@ -363,6 +364,7 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; {
363 364
364 ttInfoDetailService.fileDataImport( 365 ttInfoDetailService.fileDataImport(
365 new File(filename + "_temp.xls"), 366 new File(filename + "_temp.xls"),
  367 + (String) form.get("sheetname"),
366 (String) form.get("xlname"), 368 (String) form.get("xlname"),
367 (String) form.get("ttname"), 369 (String) form.get("ttname"),
368 tccname 370 tccname
src/main/java/com/bsth/data/arrival/ArrivalData_GPS.java
@@ -50,8 +50,8 @@ public class ArrivalData_GPS implements CommandLineRunner{ @@ -50,8 +50,8 @@ public class ArrivalData_GPS implements CommandLineRunner{
50 50
51 @Override 51 @Override
52 public void run(String... arg0) throws Exception { 52 public void run(String... arg0) throws Exception {
53 - logger.info("ArrivalData_GPS,50,10 @11-11");  
54 - //Application.mainServices.scheduleWithFixedDelay(dataLoaderThread, 50, 10, TimeUnit.SECONDS); 53 + logger.info("ArrivalData_GPS,30,10");
  54 + //Application.mainServices.scheduleWithFixedDelay(dataLoaderThread, 40, 10, TimeUnit.SECONDS);
55 } 55 }
56 56
57 @Component 57 @Component
src/main/java/com/bsth/data/schedule/SchAttrCalculator.java
@@ -51,7 +51,7 @@ public class SchAttrCalculator { @@ -51,7 +51,7 @@ public class SchAttrCalculator {
51 51
52 52
53 if(sch.getFcsj().compareTo(conf.getStartOpt()) < 0){ 53 if(sch.getFcsj().compareTo(conf.getStartOpt()) < 0){
54 - sch.setFcsjAll(sch.getFcsjT() + DAY_TIME); 54 + sch.setFcsjAll(fmtyyyyMMddHHmm.parseMillis(sch.getScheduleDateStr()+sch.getFcsj()) + DAY_TIME);
55 } 55 }
56 56
57 sch.setRealExecDate(fmtyyyyMMdd.print(sch.getFcsjT())); 57 sch.setRealExecDate(fmtyyyyMMdd.print(sch.getFcsjT()));
src/main/java/com/bsth/entity/schedule/SchedulePlan.java
@@ -32,12 +32,22 @@ public class SchedulePlan { @@ -32,12 +32,22 @@ public class SchedulePlan {
32 @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY) 32 @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
33 private Line xl; 33 private Line xl;
34 /** 关联的时刻表/模版 */ 34 /** 关联的时刻表/模版 */
  35 + // TODO:这个字段之后就不用了
35 @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY) 36 @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
36 private TTInfo ttInfo; 37 private TTInfo ttInfo;
37 /** TODO:关联的排班规则(这里暂时改成可以不关联规则,直接生成排班) */ 38 /** TODO:关联的排班规则(这里暂时改成可以不关联规则,直接生成排班) */
38 @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) 39 @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
39 private ScheduleRule1 scheduleRule1; 40 private ScheduleRule1 scheduleRule1;
40 41
  42 + // TODO: 新字段,测试完后删除旧的字段
  43 +
  44 + /** 使用的时刻表名字列表(用逗号连接) */
  45 + private String ttInfoNames;
  46 + /** 使用的时刻表id列表(用逗号连接) */
  47 + private String ttInfoId;
  48 + /** 使用的规则1列表(用逗号连接) */
  49 + private String rule1Ids;
  50 +
41 /** 排班计划的开始时间 */ 51 /** 排班计划的开始时间 */
42 @Column(nullable = false) 52 @Column(nullable = false)
43 private Date scheduleFromTime; 53 private Date scheduleFromTime;
@@ -150,4 +160,28 @@ public class SchedulePlan { @@ -150,4 +160,28 @@ public class SchedulePlan {
150 public void setUpdateDate(Date updateDate) { 160 public void setUpdateDate(Date updateDate) {
151 this.updateDate = updateDate; 161 this.updateDate = updateDate;
152 } 162 }
  163 +
  164 + public String getTtInfoNames() {
  165 + return ttInfoNames;
  166 + }
  167 +
  168 + public void setTtInfoNames(String ttInfoNames) {
  169 + this.ttInfoNames = ttInfoNames;
  170 + }
  171 +
  172 + public String getTtInfoId() {
  173 + return ttInfoId;
  174 + }
  175 +
  176 + public void setTtInfoId(String ttInfoId) {
  177 + this.ttInfoId = ttInfoId;
  178 + }
  179 +
  180 + public String getRule1Ids() {
  181 + return rule1Ids;
  182 + }
  183 +
  184 + public void setRule1Ids(String rule1Ids) {
  185 + this.rule1Ids = rule1Ids;
  186 + }
153 } 187 }
src/main/java/com/bsth/entity/schedule/SchedulePlanInfo.java
@@ -121,6 +121,13 @@ public class SchedulePlanInfo { @@ -121,6 +121,13 @@ public class SchedulePlanInfo {
121 @Column(nullable = false) 121 @Column(nullable = false)
122 private String bcType; 122 private String bcType;
123 123
  124 + // 重要的新增字段
  125 + /** 关联的时刻表id */
  126 + private Long ttInfo;
  127 + /** 关联的时刻表名字 */
  128 + private String ttInfoName;
  129 +
  130 +
124 /** 创建人 */ 131 /** 创建人 */
125 @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) 132 @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
126 private SysUser createBy; 133 private SysUser createBy;
@@ -233,6 +240,11 @@ public class SchedulePlanInfo { @@ -233,6 +240,11 @@ public class SchedulePlanInfo {
233 this.jhlc = ttInfoDetail.getJhlc(); // 计划里程 240 this.jhlc = ttInfoDetail.getJhlc(); // 计划里程
234 this.bcsj = ttInfoDetail.getBcsj(); // 班次时间 241 this.bcsj = ttInfoDetail.getBcsj(); // 班次时间
235 242
  243 + // 使用的时刻表id
  244 + this.ttInfo = ttInfoDetail.getTtinfo().getId();
  245 + // 使用的时刻表名字
  246 + this.ttInfoName = ttInfoDetail.getTtinfo().getName();
  247 +
236 } 248 }
237 249
238 250
@@ -555,4 +567,20 @@ public class SchedulePlanInfo { @@ -555,4 +567,20 @@ public class SchedulePlanInfo {
555 public void setSchedulePlan(SchedulePlan schedulePlan) { 567 public void setSchedulePlan(SchedulePlan schedulePlan) {
556 this.schedulePlan = schedulePlan; 568 this.schedulePlan = schedulePlan;
557 } 569 }
  570 +
  571 + public Long getTtInfo() {
  572 + return ttInfo;
  573 + }
  574 +
  575 + public void setTtInfo(Long ttInfo) {
  576 + this.ttInfo = ttInfo;
  577 + }
  578 +
  579 + public String getTtInfoName() {
  580 + return ttInfoName;
  581 + }
  582 +
  583 + public void setTtInfoName(String ttInfoName) {
  584 + this.ttInfoName = ttInfoName;
  585 + }
558 } 586 }
src/main/java/com/bsth/entity/search/PredicatesBuilder.java
1 package com.bsth.entity.search; 1 package com.bsth.entity.search;
2 2
  3 +import org.joda.time.DateTime;
  4 +
3 import javax.persistence.criteria.CriteriaBuilder; 5 import javax.persistence.criteria.CriteriaBuilder;
4 import javax.persistence.criteria.Path; 6 import javax.persistence.criteria.Path;
5 import javax.persistence.criteria.Predicate; 7 import javax.persistence.criteria.Predicate;
@@ -27,7 +29,29 @@ public class PredicatesBuilder { @@ -27,7 +29,29 @@ public class PredicatesBuilder {
27 } 29 }
28 30
29 public static Predicate eq(CriteriaBuilder cb,Path<?> expression, Object object){ 31 public static Predicate eq(CriteriaBuilder cb,Path<?> expression, Object object){
30 - return cb.equal(expression, object); 32 + Class<?> leftType = expression.getJavaType();
  33 + Class<?> rightType = object.getClass();
  34 +
  35 + if (Number.class.isAssignableFrom(leftType) &&
  36 + (Number.class.isAssignableFrom(rightType) || String.class.isAssignableFrom(rightType))) { // Number == Number/String
  37 + return cb.equal(expression, object);
  38 + } else if (String.class.isAssignableFrom(leftType) &&
  39 + (String.class.isAssignableFrom(rightType) || Number.class.isAssignableFrom(rightType))) { // String == String/Number
  40 + return cb.equal(expression, object);
  41 + } else if (Boolean.class.isAssignableFrom(leftType) &&
  42 + Boolean.class.isAssignableFrom(rightType)) {
  43 + return cb.equal(expression, object);
  44 + } else if (Date.class.isAssignableFrom(leftType) &&
  45 + Date.class.isAssignableFrom(rightType)) { // Date == Date
  46 + return cb.equal(expression, object);
  47 + } else if (Date.class.isAssignableFrom(leftType) &&
  48 + String.class.isAssignableFrom(rightType)) { // Date == String
  49 + DateTime dateTime = new DateTime(object);
  50 + return cb.equal(expression, dateTime.toDate());
  51 + } else {
  52 + throw new RuntimeException("eq 不支持类型组合:" + expression.getJavaType() + "==" + object.getClass());
  53 + }
  54 +
31 } 55 }
32 56
33 public static Predicate ne(CriteriaBuilder cb,Path<?> expression, Object object){ 57 public static Predicate ne(CriteriaBuilder cb,Path<?> expression, Object object){
@@ -47,15 +71,19 @@ public class PredicatesBuilder { @@ -47,15 +71,19 @@ public class PredicatesBuilder {
47 Class<?> leftType = expression.getJavaType(); 71 Class<?> leftType = expression.getJavaType();
48 Class<?> rightType = object.getClass(); 72 Class<?> rightType = object.getClass();
49 73
50 - if (leftType.isAssignableFrom(Number.class) &&  
51 - rightType.isAssignableFrom(Number.class)) { // 判定是否是Number类型的子类 74 + if (Number.class.isAssignableFrom(leftType) &&
  75 + (Number.class.isAssignableFrom(rightType) || String.class.isAssignableFrom(rightType))) { // Number >= Number/String
52 return cb.ge((Path<Number>) expression, (Number) object); 76 return cb.ge((Path<Number>) expression, (Number) object);
53 - } else if (leftType.isAssignableFrom(String.class) &&  
54 - rightType.isAssignableFrom(String.class)) { // 判定是否是String类型的子类 77 + } else if (String.class.isAssignableFrom(leftType) &&
  78 + (String.class.isAssignableFrom(rightType) || Number.class.isAssignableFrom(rightType))) { // String >= String/Number
55 return cb.greaterThanOrEqualTo((Path<String>) expression, (String) object); 79 return cb.greaterThanOrEqualTo((Path<String>) expression, (String) object);
56 - } else if (leftType.isAssignableFrom(Date.class) &&  
57 - rightType.isAssignableFrom(Date.class)) { // 判定是否是Date类型的子类 80 + } else if (Date.class.isAssignableFrom(leftType) &&
  81 + Date.class.isAssignableFrom(rightType)) { // Date >= Date
58 return cb.greaterThanOrEqualTo((Path<Date>) expression, (Date) object); 82 return cb.greaterThanOrEqualTo((Path<Date>) expression, (Date) object);
  83 + } else if (Date.class.isAssignableFrom(leftType) &&
  84 + String.class.isAssignableFrom(rightType)) { // Date >= String
  85 + DateTime dateTime = new DateTime(object);
  86 + return cb.greaterThanOrEqualTo((Path<Date>) expression, dateTime.toDate());
59 } else { 87 } else {
60 throw new RuntimeException("ge 不支持类型组合:" + expression.getJavaType() + ">=" + object.getClass()); 88 throw new RuntimeException("ge 不支持类型组合:" + expression.getJavaType() + ">=" + object.getClass());
61 } 89 }
@@ -74,17 +102,22 @@ public class PredicatesBuilder { @@ -74,17 +102,22 @@ public class PredicatesBuilder {
74 Class<?> leftType = expression.getJavaType(); 102 Class<?> leftType = expression.getJavaType();
75 Class<?> rightType = object.getClass(); 103 Class<?> rightType = object.getClass();
76 104
77 - if (leftType.isAssignableFrom(Number.class) &&  
78 - rightType.isAssignableFrom(Number.class)) { // 判定是否是Number类型的子类 105 +
  106 + if (Number.class.isAssignableFrom(leftType) &&
  107 + (Number.class.isAssignableFrom(rightType) || String.class.isAssignableFrom(rightType))) { // Number <= Number/String
79 return cb.le((Path<Number>) expression, (Number) object); 108 return cb.le((Path<Number>) expression, (Number) object);
80 - } else if (leftType.isAssignableFrom(String.class) &&  
81 - rightType.isAssignableFrom(String.class)) { // 判定是否是String类型的子类 109 + } else if (String.class.isAssignableFrom(leftType) &&
  110 + (String.class.isAssignableFrom(rightType) || Number.class.isAssignableFrom(rightType))) { // String <= String/Number
82 return cb.lessThanOrEqualTo((Path<String>) expression, (String) object); 111 return cb.lessThanOrEqualTo((Path<String>) expression, (String) object);
83 - } else if (leftType.isAssignableFrom(Date.class) &&  
84 - rightType.isAssignableFrom(Date.class)) { // 判定是否是Date类型的子类 112 + } else if (Date.class.isAssignableFrom(leftType) &&
  113 + Date.class.isAssignableFrom(rightType)) { // Date <= Date
85 return cb.lessThanOrEqualTo((Path<Date>) expression, (Date) object); 114 return cb.lessThanOrEqualTo((Path<Date>) expression, (Date) object);
  115 + } else if (Date.class.isAssignableFrom(leftType) &&
  116 + String.class.isAssignableFrom(rightType)) { // Date <= String
  117 + DateTime dateTime = new DateTime(object);
  118 + return cb.lessThanOrEqualTo((Path<Date>) expression, dateTime.toDate());
86 } else { 119 } else {
87 - throw new RuntimeException("ge 不支持类型组合:" + expression.getJavaType() + ">=" + object.getClass()); 120 + throw new RuntimeException("le 不支持类型组合:" + expression.getJavaType() + "<=" + object.getClass());
88 } 121 }
89 } 122 }
90 123
src/main/java/com/bsth/service/realcontrol/RealChartsService.java
@@ -2,6 +2,7 @@ package com.bsth.service.realcontrol; @@ -2,6 +2,7 @@ package com.bsth.service.realcontrol;
2 2
3 import com.bsth.service.realcontrol.dto.CarOutRate; 3 import com.bsth.service.realcontrol.dto.CarOutRate;
4 import com.bsth.service.realcontrol.dto.DeviceOnlineRate; 4 import com.bsth.service.realcontrol.dto.DeviceOnlineRate;
  5 +import com.bsth.service.realcontrol.dto.ScheduleExecRate;
5 import com.bsth.service.realcontrol.dto.StratEndPunctualityRate; 6 import com.bsth.service.realcontrol.dto.StratEndPunctualityRate;
6 7
7 import java.util.List; 8 import java.util.List;
@@ -15,7 +16,9 @@ public interface RealChartsService { @@ -15,7 +16,9 @@ public interface RealChartsService {
15 16
16 List<CarOutRate> carOutRate(String month, String idx); 17 List<CarOutRate> carOutRate(String month, String idx);
17 18
18 - List<StratEndPunctualityRate> stratEndPunctualityRate(String month, String idx); 19 + /*List<StratEndPunctualityRate> stratEndPunctualityRate(String month, String idx);*/
19 20
20 List<StratEndPunctualityRate> sePunctualityRateLine(String month, String idx); 21 List<StratEndPunctualityRate> sePunctualityRateLine(String month, String idx);
  22 +
  23 + List<ScheduleExecRate> scheduleExecRates(String date, String idx);
21 } 24 }
src/main/java/com/bsth/service/realcontrol/dto/ScheduleExecRate.java 0 → 100644
  1 +package com.bsth.service.realcontrol.dto;
  2 +
  3 +/**
  4 + * 班次执行率DTO
  5 + * Created by panzhao on 2016/11/14.
  6 + */
  7 +public class ScheduleExecRate {
  8 +
  9 + private long id;
  10 + private String dfsj;
  11 + private String fcsjActual;
  12 + private String zdsj;
  13 + private String zdsjActual;
  14 + private int status;
  15 + private String lineCode;
  16 +
  17 + public long getId() {
  18 + return id;
  19 + }
  20 +
  21 + public void setId(long id) {
  22 + this.id = id;
  23 + }
  24 +
  25 + public String getDfsj() {
  26 + return dfsj;
  27 + }
  28 +
  29 + public void setDfsj(String dfsj) {
  30 + this.dfsj = dfsj;
  31 + }
  32 +
  33 + public String getFcsjActual() {
  34 + return fcsjActual;
  35 + }
  36 +
  37 + public void setFcsjActual(String fcsjActual) {
  38 + this.fcsjActual = fcsjActual;
  39 + }
  40 +
  41 + public String getZdsj() {
  42 + return zdsj;
  43 + }
  44 +
  45 + public void setZdsj(String zdsj) {
  46 + this.zdsj = zdsj;
  47 + }
  48 +
  49 + public String getZdsjActual() {
  50 + return zdsjActual;
  51 + }
  52 +
  53 + public void setZdsjActual(String zdsjActual) {
  54 + this.zdsjActual = zdsjActual;
  55 + }
  56 +
  57 + public int getStatus() {
  58 + return status;
  59 + }
  60 +
  61 + public void setStatus(int status) {
  62 + this.status = status;
  63 + }
  64 +
  65 + public String getLineCode() {
  66 + return lineCode;
  67 + }
  68 +
  69 + public void setLineCode(String lineCode) {
  70 + this.lineCode = lineCode;
  71 + }
  72 +}
src/main/java/com/bsth/service/realcontrol/dto/StratEndPunctualityRate.java
@@ -10,17 +10,17 @@ public class StratEndPunctualityRate { @@ -10,17 +10,17 @@ public class StratEndPunctualityRate {
10 10
11 private String lineCode; 11 private String lineCode;
12 12
13 - private String nbbm;  
14 -  
15 //首班时间 06:00/06:01 13 //首班时间 06:00/06:01
16 private String startTime; 14 private String startTime;
17 15
18 //末班时间 20:30/20:31 16 //末班时间 20:30/20:31
19 private String endTime; 17 private String endTime;
20 18
21 - //末班真实执行日期  
22 - private String etRealExecDate; 19 + //上下行
  20 + private int updown;
23 21
  22 + //真实执行日期
  23 + private String etRealExecDate;
24 24
25 public String getDateStr() { 25 public String getDateStr() {
26 return dateStr; 26 return dateStr;
@@ -38,14 +38,6 @@ public class StratEndPunctualityRate { @@ -38,14 +38,6 @@ public class StratEndPunctualityRate {
38 this.lineCode = lineCode; 38 this.lineCode = lineCode;
39 } 39 }
40 40
41 - public String getNbbm() {  
42 - return nbbm;  
43 - }  
44 -  
45 - public void setNbbm(String nbbm) {  
46 - this.nbbm = nbbm;  
47 - }  
48 -  
49 public String getStartTime() { 41 public String getStartTime() {
50 return startTime; 42 return startTime;
51 } 43 }
@@ -62,6 +54,14 @@ public class StratEndPunctualityRate { @@ -62,6 +54,14 @@ public class StratEndPunctualityRate {
62 this.endTime = endTime; 54 this.endTime = endTime;
63 } 55 }
64 56
  57 + public int getUpdown() {
  58 + return updown;
  59 + }
  60 +
  61 + public void setUpdown(int updown) {
  62 + this.updown = updown;
  63 + }
  64 +
65 public String getEtRealExecDate() { 65 public String getEtRealExecDate() {
66 return etRealExecDate; 66 return etRealExecDate;
67 } 67 }
src/main/java/com/bsth/service/realcontrol/impl/RealChartsServiceImpl.java
@@ -4,10 +4,7 @@ import com.bsth.data.BasicData; @@ -4,10 +4,7 @@ import com.bsth.data.BasicData;
4 import com.bsth.data.LineConfigData; 4 import com.bsth.data.LineConfigData;
5 import com.bsth.entity.realcontrol.LineConfig; 5 import com.bsth.entity.realcontrol.LineConfig;
6 import com.bsth.service.realcontrol.RealChartsService; 6 import com.bsth.service.realcontrol.RealChartsService;
7 -import com.bsth.service.realcontrol.dto.CarOutRate;  
8 -import com.bsth.service.realcontrol.dto.DeviceOnlineRate;  
9 -import com.bsth.service.realcontrol.dto.RealOnline;  
10 -import com.bsth.service.realcontrol.dto.StratEndPunctualityRate; 7 +import com.bsth.service.realcontrol.dto.*;
11 import com.bsth.util.db.DBUtils_MS; 8 import com.bsth.util.db.DBUtils_MS;
12 import com.google.common.base.Splitter; 9 import com.google.common.base.Splitter;
13 import org.apache.commons.lang3.StringUtils; 10 import org.apache.commons.lang3.StringUtils;
@@ -37,7 +34,8 @@ public class RealChartsServiceImpl implements RealChartsService { @@ -37,7 +34,8 @@ public class RealChartsServiceImpl implements RealChartsService {
37 LineConfigData lineConfigData; 34 LineConfigData lineConfigData;
38 35
39 36
40 - private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd"); 37 + private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd")
  38 + ,fmtyyyyMMddHHmm = DateTimeFormat.forPattern("yyyy-MM-ddHH:mm");
41 39
42 private final static long DAY_TIME = 1000 * 60 * 60 * 24L; 40 private final static long DAY_TIME = 1000 * 60 * 60 * 24L;
43 /** 41 /**
@@ -164,7 +162,7 @@ public class RealChartsServiceImpl implements RealChartsService { @@ -164,7 +162,7 @@ public class RealChartsServiceImpl implements RealChartsService {
164 * @param idx 162 * @param idx
165 * @return 163 * @return
166 */ 164 */
167 - @Override 165 +/* @Override
168 public List<StratEndPunctualityRate> stratEndPunctualityRate(String month, String idx) { 166 public List<StratEndPunctualityRate> stratEndPunctualityRate(String month, String idx) {
169 List<String> idArray = Splitter.on(",").splitToList(idx); 167 List<String> idArray = Splitter.on(",").splitToList(idx);
170 //拼接in语句 168 //拼接in语句
@@ -208,7 +206,7 @@ public class RealChartsServiceImpl implements RealChartsService { @@ -208,7 +206,7 @@ public class RealChartsServiceImpl implements RealChartsService {
208 } 206 }
209 }); 207 });
210 return list; 208 return list;
211 - } 209 + }*/
212 210
213 @Override 211 @Override
214 public List<StratEndPunctualityRate> sePunctualityRateLine(String month, String idx) { 212 public List<StratEndPunctualityRate> sePunctualityRateLine(String month, String idx) {
@@ -220,10 +218,7 @@ public class RealChartsServiceImpl implements RealChartsService { @@ -220,10 +218,7 @@ public class RealChartsServiceImpl implements RealChartsService {
220 } 218 }
221 inStr = " (" + inStr.substring(1) + ")"; 219 inStr = " (" + inStr.substring(1) + ")";
222 220
223 - String sql = "select SCHEDULE_DATE_STR,XL_BM, min(sj) as STARTDATE, max(sj) as ENDDATE " +  
224 - "from (select SCHEDULE_DATE_STR,dfsj, concat_ws('/',dfsj, fcsj_actual) as sj,XL_BM from bsth_c_s_sp_info_real " +  
225 - "where schedule_date_str like :month and bc_type='normal' and dfsj is not null and xl_bm in "+inStr+") t group by SCHEDULE_DATE_STR,XL_BM";  
226 - 221 + String sql = "select min(DFSJ) as STARTDATE,max(DFSJ) as ENDDATE,SCHEDULE_DATE_STR,XL_BM,XL_DIR,REAL_EXEC_DATE from (SELECT SCHEDULE_DATE_STR,concat_ws('_',concat_ws('/', dfsj, fcsj_actual),fcno) AS DFSJ,XL_BM,XL_DIR,REAL_EXEC_DATE FROM bsth_c_s_sp_info_real WHERE schedule_date_str LIKE :month AND bc_type = 'normal' AND dfsj IS NOT NULL AND xl_bm IN "+inStr+") t group by SCHEDULE_DATE_STR,XL_BM,XL_DIR,REAL_EXEC_DATE";
227 MapSqlParameterSource parameters = new MapSqlParameterSource(); 222 MapSqlParameterSource parameters = new MapSqlParameterSource();
228 parameters.addValue("month", month+"-%"); 223 parameters.addValue("month", month+"-%");
229 224
@@ -235,10 +230,11 @@ public class RealChartsServiceImpl implements RealChartsService { @@ -235,10 +230,11 @@ public class RealChartsServiceImpl implements RealChartsService {
235 obj.setDateStr(rs.getString("SCHEDULE_DATE_STR")); 230 obj.setDateStr(rs.getString("SCHEDULE_DATE_STR"));
236 obj.setStartTime(rs.getString("STARTDATE")); 231 obj.setStartTime(rs.getString("STARTDATE"));
237 obj.setEndTime(rs.getString("ENDDATE")); 232 obj.setEndTime(rs.getString("ENDDATE"));
238 - obj.setEtRealExecDate(obj.getDateStr()); 233 + obj.setUpdown(rs.getInt("XL_DIR"));
  234 + obj.setEtRealExecDate(rs.getString("REAL_EXEC_DATE"));
239 235
240 - if(obj.getEndTime().length() == 11){  
241 - //末班真实执行日期 236 + if(obj.getEndTime().length() >= 11){
  237 + //末班真实执行日期,末班可能跨过12点。
242 LineConfig conf =lineConfigData.get(obj.getLineCode()); 238 LineConfig conf =lineConfigData.get(obj.getLineCode());
243 String fcsjActual=obj.getEndTime().split("/")[1]; 239 String fcsjActual=obj.getEndTime().split("/")[1];
244 240
@@ -247,7 +243,40 @@ public class RealChartsServiceImpl implements RealChartsService { @@ -247,7 +243,40 @@ public class RealChartsServiceImpl implements RealChartsService {
247 obj.setEtRealExecDate(fmtyyyyMMdd.print(fmtyyyyMMdd.parseMillis(obj.getEtRealExecDate()) + DAY_TIME)); 243 obj.setEtRealExecDate(fmtyyyyMMdd.print(fmtyyyyMMdd.parseMillis(obj.getEtRealExecDate()) + DAY_TIME));
248 } 244 }
249 } 245 }
  246 + return obj;
  247 + }
  248 + });
  249 + return list;
  250 + }
  251 +
  252 + @Override
  253 + public List<ScheduleExecRate> scheduleExecRates(String date, String idx) {
  254 + List<String> idArray = Splitter.on(",").splitToList(idx);
  255 + //拼接in语句
  256 + String inStr = "";
  257 + for (String code : idArray) {
  258 + inStr += (",'" + code+"'");
  259 + }
  260 + inStr = " (" + inStr.substring(1) + ")";
250 261
  262 + String sql = "SELECT ID,DFSJ,FCSJ_ACTUAL,ZDSJ,ZDSJ_ACTUAL,`STATUS`,XL_BM FROM bsth_c_s_sp_info_real WHERE schedule_date_str=:date AND concat_ws('', real_exec_date, dfsj)<:cdate and xl_bm in "+inStr+" ORDER BY dfsj";
  263 +
  264 + MapSqlParameterSource parameters = new MapSqlParameterSource();
  265 + parameters.addValue("date", date);
  266 + parameters.addValue("cdate", fmtyyyyMMddHHmm.print(new Date().getTime()));
  267 +
  268 +
  269 + List<ScheduleExecRate> list = jdbcTemplate.query(sql, parameters, new RowMapper<ScheduleExecRate>() {
  270 + @Override
  271 + public ScheduleExecRate mapRow(ResultSet rs, int rowNum) throws SQLException {
  272 + ScheduleExecRate obj = new ScheduleExecRate();
  273 + obj.setId(rs.getLong("ID"));
  274 + obj.setDfsj(rs.getString("DFSJ"));
  275 + obj.setFcsjActual(rs.getString("FCSJ_ACTUAL"));
  276 + obj.setZdsj(rs.getString("ZDSJ"));
  277 + obj.setZdsjActual(rs.getString("ZDSJ_ACTUAL"));
  278 + obj.setStatus(rs.getInt("STATUS"));
  279 + obj.setLineCode(rs.getString("XL_BM"));
251 return obj; 280 return obj;
252 } 281 }
253 }); 282 });
src/main/java/com/bsth/service/schedule/SchedulePlanServiceImpl.java
@@ -12,6 +12,7 @@ import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output; @@ -12,6 +12,7 @@ import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output;
12 import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_input; 12 import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_input;
13 import com.bsth.service.schedule.rules.strategy.IStrategy; 13 import com.bsth.service.schedule.rules.strategy.IStrategy;
14 import com.google.common.collect.Multimap; 14 import com.google.common.collect.Multimap;
  15 +import org.apache.commons.lang3.StringUtils;
15 import org.joda.time.DateTime; 16 import org.joda.time.DateTime;
16 import org.kie.api.KieBase; 17 import org.kie.api.KieBase;
17 import org.kie.api.runtime.KieSession; 18 import org.kie.api.runtime.KieSession;
@@ -65,6 +66,7 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt; @@ -65,6 +66,7 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt;
65 KieSession session = kieBase.newKieSession(); 66 KieSession session = kieBase.newKieSession();
66 // 设置gloable对象,在drl中通过别名使用 67 // 设置gloable对象,在drl中通过别名使用
67 session.setGlobal("scheduleResult", scheduleResults_output); 68 session.setGlobal("scheduleResult", scheduleResults_output);
  69 +
68 // 载入数据 70 // 载入数据
69 session.insert(scheduleCalcuParam_input); 71 session.insert(scheduleCalcuParam_input);
70 for (ScheduleRule_input scheduleRule_input : scheduleRule_inputs) { 72 for (ScheduleRule_input scheduleRule_input : scheduleRule_inputs) {
@@ -92,6 +94,7 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt; @@ -92,6 +94,7 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt;
92 Map<Long, EmployeeConfigInfo> employeeConfigMaps = strategy.getEmployeeConfigMaps(xl.getId()); // 人员配置对应的人员信息 94 Map<Long, EmployeeConfigInfo> employeeConfigMaps = strategy.getEmployeeConfigMaps(xl.getId()); // 人员配置对应的人员信息
93 95
94 // 3-2、循环规则输出 96 // 3-2、循环规则输出
  97 + Map<Long, String> ttInfoMap = new HashMap<>(); // 时刻表映射,id和名字
95 List<SchedulePlanInfo> schedulePlanInfos = new ArrayList<>(); 98 List<SchedulePlanInfo> schedulePlanInfos = new ArrayList<>();
96 for (ScheduleResult_output scheduleResult_output : scheduleResults_output.getResults()) { 99 for (ScheduleResult_output scheduleResult_output : scheduleResults_output.getResults()) {
97 // 车辆配置对应的车辆 100 // 车辆配置对应的车辆
@@ -114,9 +117,13 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt; @@ -114,9 +117,13 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt;
114 employeeConfigInfoList, 117 employeeConfigInfoList,
115 schedulePlan); 118 schedulePlan);
116 schedulePlanInfos.add(schedulePlanInfo); 119 schedulePlanInfos.add(schedulePlanInfo);
  120 + ttInfoMap.put(ttInfoDetail.getTtinfo().getId(), ttInfoDetail.getTtinfo().getName());
117 } 121 }
118 } 122 }
119 123
  124 + schedulePlan.setTtInfoId(StringUtils.join(ttInfoMap.keySet(), ","));
  125 + schedulePlan.setTtInfoNames(StringUtils.join(ttInfoMap.values(), ","));
  126 +
120 // 3-2、保存生成的排班和明细 127 // 3-2、保存生成的排班和明细
121 schedulePlan.getSchedulePlanInfoList().addAll(schedulePlanInfos); // 关联的排班明细信息 128 schedulePlan.getSchedulePlanInfoList().addAll(schedulePlanInfos); // 关联的排班明细信息
122 return super.save(schedulePlan); 129 return super.save(schedulePlan);
src/main/java/com/bsth/service/schedule/TTInfoDetailService.java
@@ -136,7 +136,7 @@ public interface TTInfoDetailService extends BaseService&lt;TTInfoDetail, Long&gt; { @@ -136,7 +136,7 @@ public interface TTInfoDetailService extends BaseService&lt;TTInfoDetail, Long&gt; {
136 String ttinfoname, 136 String ttinfoname,
137 String tccname) throws Exception; 137 String tccname) throws Exception;
138 138
139 - void fileDataImport(File file, String xlmc, String ttinfoname, String tccname) throws Exception; 139 + void fileDataImport(File file, String sheetname, String xlmc, String ttinfoname, String tccname) throws Exception;
140 140
141 141
142 } 142 }
src/main/java/com/bsth/service/schedule/TTInfoDetailServiceImpl.java
@@ -114,6 +114,7 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt; @@ -114,6 +114,7 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt;
114 return editInfo; 114 return editInfo;
115 } 115 }
116 116
  117 + @Override
117 /** 118 /**
118 * 上传并导入数据,和DataImportExportService的同名方法有差别。 119 * 上传并导入数据,和DataImportExportService的同名方法有差别。
119 * @param datafile form上传文件 120 * @param datafile form上传文件
@@ -128,12 +129,12 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt; @@ -128,12 +129,12 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt;
128 String tccname) throws Exception { 129 String tccname) throws Exception {
129 // 上传数据文件 130 // 上传数据文件
130 File uploadFile = dataImportExportService.uploadFile(datafile); 131 File uploadFile = dataImportExportService.uploadFile(datafile);
131 - fileDataImport(uploadFile, xlmc, ttinfoname, tccname); 132 + fileDataImport(uploadFile, "工作表1", xlmc, ttinfoname, tccname);
132 133
133 } 134 }
134 135
135 @Override 136 @Override
136 - public void fileDataImport(File uploadFile, String xlmc, String ttinfoname, String tccname) throws Exception { 137 + public void fileDataImport(File uploadFile, String sheetname, String xlmc, String ttinfoname, String tccname) throws Exception {
137 // 1、上传数据文件 138 // 1、上传数据文件
138 System.out.println("线路名称:" + xlmc); 139 System.out.println("线路名称:" + xlmc);
139 System.out.println("时刻表名称:" + ttinfoname); 140 System.out.println("时刻表名称:" + ttinfoname);
@@ -162,6 +163,7 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt; @@ -162,6 +163,7 @@ public class TTInfoDetailServiceImpl extends BaseServiceImpl&lt;TTInfoDetail, Long&gt;
162 // 2.3、设定命名参数,用于指定数据文件,注意每个ktr必须都有以下指定的命名参数 163 // 2.3、设定命名参数,用于指定数据文件,注意每个ktr必须都有以下指定的命名参数
163 trans.setParameterValue("injectktrfile", ktrFile2.getAbsolutePath()); // 注入元数据的ktr文件 164 trans.setParameterValue("injectktrfile", ktrFile2.getAbsolutePath()); // 注入元数据的ktr文件
164 trans.setParameterValue("filepath", uploadFile.getAbsolutePath()); // 指定导入数据文件的位置 165 trans.setParameterValue("filepath", uploadFile.getAbsolutePath()); // 指定导入数据文件的位置
  166 + trans.setParameterValue("sheetname", sheetname); // sheet工作区的名字
165 trans.setParameterValue("erroroutputdir", dataToolsProperties.getTransErrordir()); // ktr转换错误输出目录 167 trans.setParameterValue("erroroutputdir", dataToolsProperties.getTransErrordir()); // ktr转换错误输出目录
166 trans.setParameterValue("xlname", xlmc); // 线路名称 168 trans.setParameterValue("xlname", xlmc); // 线路名称
167 trans.setParameterValue("ttinfoname", ttinfoname); // 时刻表名称 169 trans.setParameterValue("ttinfoname", ttinfoname); // 时刻表名称
src/main/java/com/bsth/service/schedule/rules/strategy/IStrategyImpl.java
@@ -21,6 +21,7 @@ import org.slf4j.Logger; @@ -21,6 +21,7 @@ import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory; 21 import org.slf4j.LoggerFactory;
22 import org.springframework.beans.factory.annotation.Autowired; 22 import org.springframework.beans.factory.annotation.Autowired;
23 import org.springframework.stereotype.Service; 23 import org.springframework.stereotype.Service;
  24 +import org.springframework.util.CollectionUtils;
24 25
25 import java.util.*; 26 import java.util.*;
26 27
@@ -50,8 +51,14 @@ public class IStrategyImpl implements IStrategy { @@ -50,8 +51,14 @@ public class IStrategyImpl implements IStrategy {
50 51
51 @Override 52 @Override
52 public Line getLine(Integer xlId) { 53 public Line getLine(Integer xlId) {
53 - Line xl = lineService.findById(xlId); // 查找线路具体信息  
54 - return xl; 54 + Map<String, Object> param = new HashMap<>();
  55 + param.put("id_eq", xlId);
  56 + param.put("destroy_eq", 0); // 未撤销
  57 + List<Line> lines = (List<Line>) lineService.list(param);
  58 + if (CollectionUtils.isEmpty(lines)) {
  59 + throw new RuntimeException("线路找不到,可能已经撤销!");
  60 + }
  61 + return lines.get(0);
55 } 62 }
56 63
57 @Override 64 @Override
src/main/resources/application-prod.properties
@@ -6,7 +6,7 @@ spring.jpa.hibernate.ddl-auto= update @@ -6,7 +6,7 @@ spring.jpa.hibernate.ddl-auto= update
6 spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy 6 spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
7 #DATABASE 7 #DATABASE
8 spring.jpa.database= MYSQL 8 spring.jpa.database= MYSQL
9 -spring.jpa.show-sql= true 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://192.168.168.171:3306/control?useUnicode=true&characterEncoding=utf-8&useSSL=false 11 spring.datasource.url= jdbc:mysql://192.168.168.171:3306/control?useUnicode=true&characterEncoding=utf-8&useSSL=false
12 spring.datasource.username= root 12 spring.datasource.username= root
src/main/resources/datatools/ktrs/ttinfodetailDataInput.ktr
@@ -554,6 +554,78 @@ @@ -554,6 +554,78 @@
554 </step> 554 </step>
555 555
556 <step> 556 <step>
  557 + <name>&#x5339;&#x914d;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  558 + <type>ScriptValueMod</type>
  559 + <description/>
  560 + <distribute>Y</distribute>
  561 + <custom_distribution/>
  562 + <copies>1</copies>
  563 + <partitioning>
  564 + <method>none</method>
  565 + <schema_name/>
  566 + </partitioning>
  567 + <compatible>N</compatible>
  568 + <optimizationLevel>9</optimizationLevel>
  569 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  570 + <jsScript_name>Script 1</jsScript_name>
  571 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var out_mileage&#x3b; &#x2f;&#x2f; &#x51fa;&#x573a;&#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var out_time&#x3b; &#x2f;&#x2f; &#x51fa;&#x573a;&#x8ba1;&#x5212;&#x65f6;&#x95f4;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; out_mileage &#x3d; up_out_mileage&#x3b;&#xa; out_time &#x3d; up_out_timer&#x3b;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; out_mileage &#x3d; down_out_mileage&#x3b;&#xa; out_time &#x3d; down_out_timer&#x3b;&#xa;&#x7d;&#xa;&#xa;&#xa;&#xa;</jsScript_script>
  572 + </jsScript> </jsScripts> <fields> <field> <name>out_mileage</name>
  573 + <rename>out_mileage</rename>
  574 + <type>String</type>
  575 + <length>-1</length>
  576 + <precision>-1</precision>
  577 + <replace>N</replace>
  578 + </field> <field> <name>out_time</name>
  579 + <rename>out_time</rename>
  580 + <type>String</type>
  581 + <length>-1</length>
  582 + <precision>-1</precision>
  583 + <replace>N</replace>
  584 + </field> </fields> <cluster_schema/>
  585 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  586 + <xloc>336</xloc>
  587 + <yloc>862</yloc>
  588 + <draw>Y</draw>
  589 + </GUI>
  590 + </step>
  591 +
  592 + <step>
  593 + <name>&#x5339;&#x914d;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  594 + <type>ScriptValueMod</type>
  595 + <description/>
  596 + <distribute>Y</distribute>
  597 + <custom_distribution/>
  598 + <copies>1</copies>
  599 + <partitioning>
  600 + <method>none</method>
  601 + <schema_name/>
  602 + </partitioning>
  603 + <compatible>N</compatible>
  604 + <optimizationLevel>9</optimizationLevel>
  605 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  606 + <jsScript_name>Script 1</jsScript_name>
  607 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var parade_mileage&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var parade_time&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x8ba1;&#x5212;&#x65f6;&#x95f4;&#xa;&#xa;if &#x28;sxx2 &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; parade_mileage &#x3d; up_in_mileage&#x3b;&#xa; parade_time &#x3d; up_in_timer&#x3b;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; parade_mileage &#x3d; down_in_mileage&#x3b;&#xa; parade_time &#x3d; down_in_timer&#x3b;&#xa;&#x7d;&#xa;&#xa;&#xa;&#xa;</jsScript_script>
  608 + </jsScript> </jsScripts> <fields> <field> <name>parade_mileage</name>
  609 + <rename>parade_mileage</rename>
  610 + <type>String</type>
  611 + <length>-1</length>
  612 + <precision>-1</precision>
  613 + <replace>N</replace>
  614 + </field> <field> <name>parade_time</name>
  615 + <rename>parade_time</rename>
  616 + <type>String</type>
  617 + <length>-1</length>
  618 + <precision>-1</precision>
  619 + <replace>N</replace>
  620 + </field> </fields> <cluster_schema/>
  621 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  622 + <xloc>726</xloc>
  623 + <yloc>1005</yloc>
  624 + <draw>Y</draw>
  625 + </GUI>
  626 + </step>
  627 +
  628 + <step>
557 <name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</name> 629 <name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</name>
558 <type>DataGrid</type> 630 <type>DataGrid</type>
559 <description/> 631 <description/>
@@ -1115,7 +1187,7 @@ @@ -1115,7 +1187,7 @@
1115 </fields> 1187 </fields>
1116 <sheets> 1188 <sheets>
1117 <sheet> 1189 <sheet>
1118 - <name>&#x5de5;&#x4f5c;&#x8868;1</name> 1190 + <name/>
1119 <startrow>0</startrow> 1191 <startrow>0</startrow>
1120 <startcol>0</startcol> 1192 <startcol>0</startcol>
1121 </sheet> 1193 </sheet>
@@ -1843,6 +1915,66 @@ @@ -1843,6 +1915,66 @@
1843 </step> 1915 </step>
1844 1916
1845 <step> 1917 <step>
  1918 + <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
  1919 + <type>DBLookup</type>
  1920 + <description/>
  1921 + <distribute>Y</distribute>
  1922 + <custom_distribution/>
  1923 + <copies>1</copies>
  1924 + <partitioning>
  1925 + <method>none</method>
  1926 + <schema_name/>
  1927 + </partitioning>
  1928 + <connection>bus_control_variable</connection>
  1929 + <cache>N</cache>
  1930 + <cache_load_all>N</cache_load_all>
  1931 + <cache_size>0</cache_size>
  1932 + <lookup>
  1933 + <schema/>
  1934 + <table>bsth_c_stationroute</table>
  1935 + <orderby/>
  1936 + <fail_on_multiple>N</fail_on_multiple>
  1937 + <eat_row_on_failure>N</eat_row_on_failure>
  1938 + <key>
  1939 + <name>xlid</name>
  1940 + <field>line</field>
  1941 + <condition>&#x3d;</condition>
  1942 + <name2/>
  1943 + </key>
  1944 + <key>
  1945 + <name>zdzname_calcu</name>
  1946 + <field>station_name</field>
  1947 + <condition>&#x3d;</condition>
  1948 + <name2/>
  1949 + </key>
  1950 + <key>
  1951 + <name>startZdtype_calcu</name>
  1952 + <field>station_mark</field>
  1953 + <condition>&#x3d;</condition>
  1954 + <name2/>
  1955 + </key>
  1956 + <value>
  1957 + <name>directions</name>
  1958 + <rename>sxx2</rename>
  1959 + <default/>
  1960 + <type>Integer</type>
  1961 + </value>
  1962 + <value>
  1963 + <name>station</name>
  1964 + <rename>qdzid</rename>
  1965 + <default/>
  1966 + <type>Integer</type>
  1967 + </value>
  1968 + </lookup>
  1969 + <cluster_schema/>
  1970 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1971 + <xloc>551</xloc>
  1972 + <yloc>782</yloc>
  1973 + <draw>Y</draw>
  1974 + </GUI>
  1975 + </step>
  1976 +
  1977 + <step>
1846 <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</name> 1978 <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</name>
1847 <type>ScriptValueMod</type> 1979 <type>ScriptValueMod</type>
1848 <description/> 1980 <description/>
@@ -2201,6 +2333,106 @@ @@ -2201,6 +2333,106 @@
2201 </step> 2333 </step>
2202 2334
2203 <step> 2335 <step>
  2336 + <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 2</name>
  2337 + <type>SelectValues</type>
  2338 + <description/>
  2339 + <distribute>Y</distribute>
  2340 + <custom_distribution/>
  2341 + <copies>1</copies>
  2342 + <partitioning>
  2343 + <method>none</method>
  2344 + <schema_name/>
  2345 + </partitioning>
  2346 + <fields> <select_unspecified>N</select_unspecified>
  2347 + <meta> <name>out_mileage</name>
  2348 + <rename>out_mileage</rename>
  2349 + <type>Number</type>
  2350 + <length>-2</length>
  2351 + <precision>-2</precision>
  2352 + <conversion_mask/>
  2353 + <date_format_lenient>false</date_format_lenient>
  2354 + <date_format_locale/>
  2355 + <date_format_timezone/>
  2356 + <lenient_string_to_number>false</lenient_string_to_number>
  2357 + <encoding/>
  2358 + <decimal_symbol/>
  2359 + <grouping_symbol/>
  2360 + <currency_symbol/>
  2361 + <storage_type/>
  2362 + </meta> <meta> <name>out_time</name>
  2363 + <rename>out_time</rename>
  2364 + <type>Integer</type>
  2365 + <length>-2</length>
  2366 + <precision>-2</precision>
  2367 + <conversion_mask/>
  2368 + <date_format_lenient>false</date_format_lenient>
  2369 + <date_format_locale/>
  2370 + <date_format_timezone/>
  2371 + <lenient_string_to_number>false</lenient_string_to_number>
  2372 + <encoding/>
  2373 + <decimal_symbol/>
  2374 + <grouping_symbol/>
  2375 + <currency_symbol/>
  2376 + <storage_type/>
  2377 + </meta> </fields> <cluster_schema/>
  2378 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2379 + <xloc>338</xloc>
  2380 + <yloc>949</yloc>
  2381 + <draw>Y</draw>
  2382 + </GUI>
  2383 + </step>
  2384 +
  2385 + <step>
  2386 + <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 3</name>
  2387 + <type>SelectValues</type>
  2388 + <description/>
  2389 + <distribute>Y</distribute>
  2390 + <custom_distribution/>
  2391 + <copies>1</copies>
  2392 + <partitioning>
  2393 + <method>none</method>
  2394 + <schema_name/>
  2395 + </partitioning>
  2396 + <fields> <select_unspecified>N</select_unspecified>
  2397 + <meta> <name>parade_mileage</name>
  2398 + <rename>parade_mileage</rename>
  2399 + <type>Number</type>
  2400 + <length>-2</length>
  2401 + <precision>-2</precision>
  2402 + <conversion_mask/>
  2403 + <date_format_lenient>false</date_format_lenient>
  2404 + <date_format_locale/>
  2405 + <date_format_timezone/>
  2406 + <lenient_string_to_number>false</lenient_string_to_number>
  2407 + <encoding/>
  2408 + <decimal_symbol/>
  2409 + <grouping_symbol/>
  2410 + <currency_symbol/>
  2411 + <storage_type/>
  2412 + </meta> <meta> <name>parade_time</name>
  2413 + <rename>parade_time</rename>
  2414 + <type>Integer</type>
  2415 + <length>-2</length>
  2416 + <precision>-2</precision>
  2417 + <conversion_mask/>
  2418 + <date_format_lenient>false</date_format_lenient>
  2419 + <date_format_locale/>
  2420 + <date_format_timezone/>
  2421 + <lenient_string_to_number>false</lenient_string_to_number>
  2422 + <encoding/>
  2423 + <decimal_symbol/>
  2424 + <grouping_symbol/>
  2425 + <currency_symbol/>
  2426 + <storage_type/>
  2427 + </meta> </fields> <cluster_schema/>
  2428 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2429 + <xloc>875</xloc>
  2430 + <yloc>1001</yloc>
  2431 + <draw>Y</draw>
  2432 + </GUI>
  2433 + </step>
  2434 +
  2435 + <step>
2204 <name>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</name> 2436 <name>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</name>
2205 <type>ValueMapper</type> 2437 <type>ValueMapper</type>
2206 <description/> 2438 <description/>
@@ -2353,242 +2585,10 @@ @@ -2353,242 +2585,10 @@
2353 </GUI> 2585 </GUI>
2354 </step> 2586 </step>
2355 2587
2356 - <step>  
2357 - <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>  
2358 - <type>DBLookup</type>  
2359 - <description/>  
2360 - <distribute>Y</distribute>  
2361 - <custom_distribution/>  
2362 - <copies>1</copies>  
2363 - <partitioning>  
2364 - <method>none</method>  
2365 - <schema_name/>  
2366 - </partitioning>  
2367 - <connection>bus_control_variable</connection>  
2368 - <cache>N</cache>  
2369 - <cache_load_all>N</cache_load_all>  
2370 - <cache_size>0</cache_size>  
2371 - <lookup>  
2372 - <schema/>  
2373 - <table>bsth_c_stationroute</table>  
2374 - <orderby/>  
2375 - <fail_on_multiple>N</fail_on_multiple>  
2376 - <eat_row_on_failure>N</eat_row_on_failure>  
2377 - <key>  
2378 - <name>xlid</name>  
2379 - <field>line</field>  
2380 - <condition>&#x3d;</condition>  
2381 - <name2/>  
2382 - </key>  
2383 - <key>  
2384 - <name>zdzname_calcu</name>  
2385 - <field>station_name</field>  
2386 - <condition>&#x3d;</condition>  
2387 - <name2/>  
2388 - </key>  
2389 - <key>  
2390 - <name>startZdtype_calcu</name>  
2391 - <field>station_mark</field>  
2392 - <condition>&#x3d;</condition>  
2393 - <name2/>  
2394 - </key>  
2395 - <value>  
2396 - <name>directions</name>  
2397 - <rename>sxx2</rename>  
2398 - <default/>  
2399 - <type>Integer</type>  
2400 - </value>  
2401 - <value>  
2402 - <name>station</name>  
2403 - <rename>qdzid</rename>  
2404 - <default/>  
2405 - <type>Integer</type>  
2406 - </value>  
2407 - </lookup>  
2408 - <cluster_schema/>  
2409 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
2410 - <xloc>551</xloc>  
2411 - <yloc>782</yloc>  
2412 - <draw>Y</draw>  
2413 - </GUI>  
2414 - </step>  
2415 -  
2416 - <step>  
2417 - <name>&#x5339;&#x914d;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>  
2418 - <type>ScriptValueMod</type>  
2419 - <description/>  
2420 - <distribute>Y</distribute>  
2421 - <custom_distribution/>  
2422 - <copies>1</copies>  
2423 - <partitioning>  
2424 - <method>none</method>  
2425 - <schema_name/>  
2426 - </partitioning>  
2427 - <compatible>N</compatible>  
2428 - <optimizationLevel>9</optimizationLevel>  
2429 - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>  
2430 - <jsScript_name>Script 1</jsScript_name>  
2431 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var out_mileage&#x3b; &#x2f;&#x2f; &#x51fa;&#x573a;&#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var out_time&#x3b; &#x2f;&#x2f; &#x51fa;&#x573a;&#x8ba1;&#x5212;&#x65f6;&#x95f4;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; out_mileage &#x3d; up_out_mileage&#x3b;&#xa; out_time &#x3d; up_out_timer&#x3b;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; out_mileage &#x3d; down_out_mileage&#x3b;&#xa; out_time &#x3d; down_out_timer&#x3b;&#xa;&#x7d;&#xa;&#xa;&#xa;&#xa;</jsScript_script>  
2432 - </jsScript> </jsScripts> <fields> <field> <name>out_mileage</name>  
2433 - <rename>out_mileage</rename>  
2434 - <type>String</type>  
2435 - <length>-1</length>  
2436 - <precision>-1</precision>  
2437 - <replace>N</replace>  
2438 - </field> <field> <name>out_time</name>  
2439 - <rename>out_time</rename>  
2440 - <type>String</type>  
2441 - <length>-1</length>  
2442 - <precision>-1</precision>  
2443 - <replace>N</replace>  
2444 - </field> </fields> <cluster_schema/>  
2445 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
2446 - <xloc>336</xloc>  
2447 - <yloc>862</yloc>  
2448 - <draw>Y</draw>  
2449 - </GUI>  
2450 - </step>  
2451 -  
2452 - <step>  
2453 - <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 2</name>  
2454 - <type>SelectValues</type>  
2455 - <description/>  
2456 - <distribute>Y</distribute>  
2457 - <custom_distribution/>  
2458 - <copies>1</copies>  
2459 - <partitioning>  
2460 - <method>none</method>  
2461 - <schema_name/>  
2462 - </partitioning>  
2463 - <fields> <select_unspecified>N</select_unspecified>  
2464 - <meta> <name>out_mileage</name>  
2465 - <rename>out_mileage</rename>  
2466 - <type>Number</type>  
2467 - <length>-2</length>  
2468 - <precision>-2</precision>  
2469 - <conversion_mask/>  
2470 - <date_format_lenient>false</date_format_lenient>  
2471 - <date_format_locale/>  
2472 - <date_format_timezone/>  
2473 - <lenient_string_to_number>false</lenient_string_to_number>  
2474 - <encoding/>  
2475 - <decimal_symbol/>  
2476 - <grouping_symbol/>  
2477 - <currency_symbol/>  
2478 - <storage_type/>  
2479 - </meta> <meta> <name>out_time</name>  
2480 - <rename>out_time</rename>  
2481 - <type>Integer</type>  
2482 - <length>-2</length>  
2483 - <precision>-2</precision>  
2484 - <conversion_mask/>  
2485 - <date_format_lenient>false</date_format_lenient>  
2486 - <date_format_locale/>  
2487 - <date_format_timezone/>  
2488 - <lenient_string_to_number>false</lenient_string_to_number>  
2489 - <encoding/>  
2490 - <decimal_symbol/>  
2491 - <grouping_symbol/>  
2492 - <currency_symbol/>  
2493 - <storage_type/>  
2494 - </meta> </fields> <cluster_schema/>  
2495 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
2496 - <xloc>338</xloc>  
2497 - <yloc>949</yloc>  
2498 - <draw>Y</draw>  
2499 - </GUI>  
2500 - </step>  
2501 -  
2502 - <step>  
2503 - <name>&#x5339;&#x914d;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>  
2504 - <type>ScriptValueMod</type>  
2505 - <description/>  
2506 - <distribute>Y</distribute>  
2507 - <custom_distribution/>  
2508 - <copies>1</copies>  
2509 - <partitioning>  
2510 - <method>none</method>  
2511 - <schema_name/>  
2512 - </partitioning>  
2513 - <compatible>N</compatible>  
2514 - <optimizationLevel>9</optimizationLevel>  
2515 - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>  
2516 - <jsScript_name>Script 1</jsScript_name>  
2517 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var parade_mileage&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var parade_time&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x8ba1;&#x5212;&#x65f6;&#x95f4;&#xa;&#xa;if &#x28;sxx2 &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; parade_mileage &#x3d; up_in_mileage&#x3b;&#xa; parade_time &#x3d; up_in_timer&#x3b;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; parade_mileage &#x3d; down_in_mileage&#x3b;&#xa; parade_time &#x3d; down_in_timer&#x3b;&#xa;&#x7d;&#xa;&#xa;&#xa;&#xa;</jsScript_script>  
2518 - </jsScript> </jsScripts> <fields> <field> <name>parade_mileage</name>  
2519 - <rename>parade_mileage</rename>  
2520 - <type>String</type>  
2521 - <length>-1</length>  
2522 - <precision>-1</precision>  
2523 - <replace>N</replace>  
2524 - </field> <field> <name>parade_time</name>  
2525 - <rename>parade_time</rename>  
2526 - <type>String</type>  
2527 - <length>-1</length>  
2528 - <precision>-1</precision>  
2529 - <replace>N</replace>  
2530 - </field> </fields> <cluster_schema/>  
2531 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
2532 - <xloc>726</xloc>  
2533 - <yloc>1005</yloc>  
2534 - <draw>Y</draw>  
2535 - </GUI>  
2536 - </step>  
2537 -  
2538 - <step>  
2539 - <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 3</name>  
2540 - <type>SelectValues</type>  
2541 - <description/>  
2542 - <distribute>Y</distribute>  
2543 - <custom_distribution/>  
2544 - <copies>1</copies>  
2545 - <partitioning>  
2546 - <method>none</method>  
2547 - <schema_name/>  
2548 - </partitioning>  
2549 - <fields> <select_unspecified>N</select_unspecified>  
2550 - <meta> <name>parade_mileage</name>  
2551 - <rename>parade_mileage</rename>  
2552 - <type>Number</type>  
2553 - <length>-2</length>  
2554 - <precision>-2</precision>  
2555 - <conversion_mask/>  
2556 - <date_format_lenient>false</date_format_lenient>  
2557 - <date_format_locale/>  
2558 - <date_format_timezone/>  
2559 - <lenient_string_to_number>false</lenient_string_to_number>  
2560 - <encoding/>  
2561 - <decimal_symbol/>  
2562 - <grouping_symbol/>  
2563 - <currency_symbol/>  
2564 - <storage_type/>  
2565 - </meta> <meta> <name>parade_time</name>  
2566 - <rename>parade_time</rename>  
2567 - <type>Integer</type>  
2568 - <length>-2</length>  
2569 - <precision>-2</precision>  
2570 - <conversion_mask/>  
2571 - <date_format_lenient>false</date_format_lenient>  
2572 - <date_format_locale/>  
2573 - <date_format_timezone/>  
2574 - <lenient_string_to_number>false</lenient_string_to_number>  
2575 - <encoding/>  
2576 - <decimal_symbol/>  
2577 - <grouping_symbol/>  
2578 - <currency_symbol/>  
2579 - <storage_type/>  
2580 - </meta> </fields> <cluster_schema/>  
2581 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
2582 - <xloc>875</xloc>  
2583 - <yloc>1001</yloc>  
2584 - <draw>Y</draw>  
2585 - </GUI>  
2586 - </step>  
2587 -  
2588 <step_error_handling> 2588 <step_error_handling>
2589 </step_error_handling> 2589 </step_error_handling>
2590 <slave-step-copy-partition-distribution> 2590 <slave-step-copy-partition-distribution>
2591 </slave-step-copy-partition-distribution> 2591 </slave-step-copy-partition-distribution>
2592 <slave_transformation>N</slave_transformation> 2592 <slave_transformation>N</slave_transformation>
2593 2593
2594 -</transformation>  
2595 \ No newline at end of file 2594 \ No newline at end of file
  2595 +</transformation>
src/main/resources/datatools/ktrs/ttinfodetailMetaData.ktr
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 <parameters> 11 <parameters>
12 <parameter> 12 <parameter>
13 <name>erroroutputdir</name> 13 <name>erroroutputdir</name>
14 - <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project&#x2f;bsth_control_u_d_files&#x2f;erroroutput</default_value> 14 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;runtime_temp&#x2f;bsth_control_u_d_files&#x2f;erroroutput</default_value>
15 <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description> 15 <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
16 </parameter> 16 </parameter>
17 <parameter> 17 <parameter>
@@ -21,12 +21,12 @@ @@ -21,12 +21,12 @@
21 </parameter> 21 </parameter>
22 <parameter> 22 <parameter>
23 <name>filepath</name> 23 <name>filepath</name>
24 - <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project&#x2f;bsth_control_etl&#x2f;&#x95f5;&#x884c;&#x516c;&#x4ea4;&#x2f;&#x95f5;&#x884c;26&#x8def;&#x65f6;&#x523b;&#x8868;160630&#x65f6;&#x523b;&#x8868;.xls</default_value> 24 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_etl&#x2f;&#x95f5;&#x884c;&#x516c;&#x4ea4;&#x2f;&#x95f5;&#x884c;26&#x8def;&#x65f6;&#x523b;&#x8868;160630&#x65f6;&#x523b;&#x8868;.xls</default_value>
25 <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description> 25 <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
26 </parameter> 26 </parameter>
27 <parameter> 27 <parameter>
28 <name>injectktrfile</name> 28 <name>injectktrfile</name>
29 - <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project&#x2f;bsth_control&#x2f;src&#x2f;main&#x2f;resources&#x2f;datatools&#x2f;ktrs&#x2f;ttinfodetailDataInput.ktr</default_value> 29 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control&#x2f;src&#x2f;main&#x2f;resources&#x2f;datatools&#x2f;ktrs&#x2f;ttinfodetailDataInput.ktr</default_value>
30 <description>&#x6ce8;&#x5165;&#x5143;&#x6570;&#x636e;&#x7684;ktr&#x6587;&#x4ef6;</description> 30 <description>&#x6ce8;&#x5165;&#x5143;&#x6570;&#x636e;&#x7684;ktr&#x6587;&#x4ef6;</description>
31 </parameter> 31 </parameter>
32 <parameter> 32 <parameter>
@@ -35,6 +35,11 @@ @@ -35,6 +35,11 @@
35 <description>&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description> 35 <description>&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description>
36 </parameter> 36 </parameter>
37 <parameter> 37 <parameter>
  38 + <name>sheetname</name>
  39 + <default_value>&#x5de5;&#x4f5c;&#x8868;1</default_value>
  40 + <description/>
  41 + </parameter>
  42 + <parameter>
38 <name>tccname</name> 43 <name>tccname</name>
39 <default_value>&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;&#x505c;&#x8f66;&#x573a;</default_value> 44 <default_value>&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;&#x505c;&#x8f66;&#x573a;</default_value>
40 <description>&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</description> 45 <description>&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</description>
@@ -338,6 +343,56 @@ @@ -338,6 +343,56 @@
338 <target_detail>Y</target_detail> 343 <target_detail>Y</target_detail>
339 <source_step>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</source_step> 344 <source_step>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</source_step>
340 <source_field>filepath_</source_field> 345 <source_field>filepath_</source_field>
  346 + </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
  347 + <target_attribute_key>NAME</target_attribute_key>
  348 + <target_detail>Y</target_detail>
  349 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
  350 + <source_field>fieldName</source_field>
  351 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  352 + <target_attribute_key>NAME</target_attribute_key>
  353 + <target_detail>Y</target_detail>
  354 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  355 + <source_field>fieldname</source_field>
  356 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  357 + <target_attribute_key>SHEET_NAME</target_attribute_key>
  358 + <target_detail>Y</target_detail>
  359 + <source_step>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</source_step>
  360 + <source_field>sheetname_</source_field>
  361 + </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>
  362 + <target_attribute_key>NAME</target_attribute_key>
  363 + <target_detail>Y</target_detail>
  364 + <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>
  365 + <source_field>col_name</source_field>
  366 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  367 + <target_attribute_key>NAME</target_attribute_key>
  368 + <target_detail>Y</target_detail>
  369 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  370 + <source_field>fieldName</source_field>
  371 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  372 + <target_attribute_key>TRIM_TYPE</target_attribute_key>
  373 + <target_detail>Y</target_detail>
  374 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  375 + <source_field>trim_type</source_field>
  376 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  377 + <target_attribute_key>REPEAT</target_attribute_key>
  378 + <target_detail>Y</target_detail>
  379 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  380 + <source_field>repeat</source_field>
  381 + </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
  382 + <target_attribute_key>NORMALISED</target_attribute_key>
  383 + <target_detail>Y</target_detail>
  384 + <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
  385 + <source_field>valuefield</source_field>
  386 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  387 + <target_attribute_key>FORMAT</target_attribute_key>
  388 + <target_detail>Y</target_detail>
  389 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  390 + <source_field>format</source_field>
  391 + </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
  392 + <target_attribute_key>VALUE</target_attribute_key>
  393 + <target_detail>Y</target_detail>
  394 + <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
  395 + <source_field>nfieldname</source_field>
341 </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name> 396 </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
342 <target_attribute_key>PRECISION</target_attribute_key> 397 <target_attribute_key>PRECISION</target_attribute_key>
343 <target_detail>Y</target_detail> 398 <target_detail>Y</target_detail>
@@ -363,16 +418,6 @@ @@ -363,16 +418,6 @@
363 <target_detail>Y</target_detail> 418 <target_detail>Y</target_detail>
364 <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step> 419 <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>
365 <source_field>col_type</source_field> 420 <source_field>col_type</source_field>
366 - </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>  
367 - <target_attribute_key>NAME</target_attribute_key>  
368 - <target_detail>Y</target_detail>  
369 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>  
370 - <source_field>fieldName</source_field>  
371 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
372 - <target_attribute_key>NAME</target_attribute_key>  
373 - <target_detail>Y</target_detail>  
374 - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>  
375 - <source_field>fieldname</source_field>  
376 </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name> 421 </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
377 <target_attribute_key>NAME</target_attribute_key> 422 <target_attribute_key>NAME</target_attribute_key>
378 <target_detail>Y</target_detail> 423 <target_detail>Y</target_detail>
@@ -383,56 +428,21 @@ @@ -383,56 +428,21 @@
383 <target_detail>Y</target_detail> 428 <target_detail>Y</target_detail>
384 <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step> 429 <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
385 <source_field>length</source_field> 430 <source_field>length</source_field>
386 - </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>  
387 - <target_attribute_key>NAME</target_attribute_key>  
388 - <target_detail>Y</target_detail>  
389 - <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>  
390 - <source_field>col_name</source_field>  
391 </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name> 431 </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
392 <target_attribute_key>TYPE</target_attribute_key> 432 <target_attribute_key>TYPE</target_attribute_key>
393 <target_detail>Y</target_detail> 433 <target_detail>Y</target_detail>
394 <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step> 434 <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
395 <source_field>fieldtype</source_field> 435 <source_field>fieldtype</source_field>
396 - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>  
397 - <target_attribute_key>NAME</target_attribute_key>  
398 - <target_detail>Y</target_detail>  
399 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>  
400 - <source_field>fieldName</source_field>  
401 </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name> 436 </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
402 <target_attribute_key>VALUE</target_attribute_key> 437 <target_attribute_key>VALUE</target_attribute_key>
403 <target_detail>Y</target_detail> 438 <target_detail>Y</target_detail>
404 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step> 439 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
405 <source_field>fieldName</source_field> 440 <source_field>fieldName</source_field>
406 - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>  
407 - <target_attribute_key>TRIM_TYPE</target_attribute_key>  
408 - <target_detail>Y</target_detail>  
409 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>  
410 - <source_field>trim_type</source_field>  
411 </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name> 441 </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
412 <target_attribute_key>NORMALISED</target_attribute_key> 442 <target_attribute_key>NORMALISED</target_attribute_key>
413 <target_detail>Y</target_detail> 443 <target_detail>Y</target_detail>
414 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step> 444 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
415 <source_field>value</source_field> 445 <source_field>value</source_field>
416 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
417 - <target_attribute_key>REPEAT</target_attribute_key>  
418 - <target_detail>Y</target_detail>  
419 - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>  
420 - <source_field>repeat</source_field>  
421 - </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>  
422 - <target_attribute_key>NORMALISED</target_attribute_key>  
423 - <target_detail>Y</target_detail>  
424 - <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>  
425 - <source_field>valuefield</source_field>  
426 - </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>  
427 - <target_attribute_key>VALUE</target_attribute_key>  
428 - <target_detail>Y</target_detail>  
429 - <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>  
430 - <source_field>nfieldname</source_field>  
431 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
432 - <target_attribute_key>FORMAT</target_attribute_key>  
433 - <target_detail>Y</target_detail>  
434 - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>  
435 - <source_field>format</source_field>  
436 </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name> 446 </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
437 <target_attribute_key>PRECISION</target_attribute_key> 447 <target_attribute_key>PRECISION</target_attribute_key>
438 <target_detail>Y</target_detail> 448 <target_detail>Y</target_detail>
@@ -1002,10 +1012,22 @@ @@ -1002,10 +1012,22 @@
1002 <precision>-1</precision> 1012 <precision>-1</precision>
1003 <trim_type>none</trim_type> 1013 <trim_type>none</trim_type>
1004 </field> 1014 </field>
  1015 + <field>
  1016 + <name>sheetname_</name>
  1017 + <variable>&#x24;&#x7b;sheetname&#x7d;</variable>
  1018 + <type>String</type>
  1019 + <format/>
  1020 + <currency/>
  1021 + <decimal/>
  1022 + <group/>
  1023 + <length>-1</length>
  1024 + <precision>-1</precision>
  1025 + <trim_type>none</trim_type>
  1026 + </field>
1005 </fields> 1027 </fields>
1006 <cluster_schema/> 1028 <cluster_schema/>
1007 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1029 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1008 - <xloc>73</xloc> 1030 + <xloc>120</xloc>
1009 <yloc>62</yloc> 1031 <yloc>62</yloc>
1010 <draw>Y</draw> 1032 <draw>Y</draw>
1011 </GUI> 1033 </GUI>
src/main/resources/ms-jdbc.properties
@@ -6,4 +6,4 @@ ms.mysql.password= 123456 @@ -6,4 +6,4 @@ ms.mysql.password= 123456
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 7 #ms.mysql.url= jdbc:mysql://192.168.168.171:3306/ms?useUnicode=true&characterEncoding=utf-8
8 #ms.mysql.username= root 8 #ms.mysql.username= root
9 -#ms.mysql.password= root2jsp 9 +#ms.mysql.password= root2jsp
10 \ No newline at end of file 10 \ No newline at end of file
src/main/resources/static/pages/control/lineallot/allot.html
@@ -163,8 +163,8 @@ @@ -163,8 +163,8 @@
163 <a href="javascript:;" class="btn btn-lg blue gotoControl red" data-status=1> 163 <a href="javascript:;" class="btn btn-lg blue gotoControl red" data-status=1>
164 <i class="fa fa-power-off"></i> 主调模式 </a> 164 <i class="fa fa-power-off"></i> 主调模式 </a>
165 165
166 - <!-- <a href="javascript:;" id="monitor" class="btn btn-lg grey gotoControl" data-status=0>  
167 - <i class="fa fa-tv"></i> 监控模式 </a> --> 166 + <a href="javascript:;" id="monitor" class="btn btn-lg grey gotoControl" data-status=0>
  167 + <i class="fa fa-tv"></i> 监控模式 </a>
168 &nbsp; 168 &nbsp;
169 <a href="javascript:;" id="resetBtn" style="left: 120px;color: #3598DC;"> 169 <a href="javascript:;" id="resetBtn" style="left: 120px;color: #3598DC;">
170 <i class="fa fa-history"></i> 重置</a> 170 <i class="fa fa-history"></i> 重置</a>
src/main/resources/static/pages/scheduleApp/module/basicInfo/busInfoManage/list.html
@@ -4,9 +4,9 @@ @@ -4,9 +4,9 @@
4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column"> 4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column">
5 <thead> 5 <thead>
6 <tr role="row" class="heading"> 6 <tr role="row" class="heading">
7 - <th style="width: 5%;">序号</th>  
8 - <th >车辆编号</th>  
9 - <th >内部编号</th> 7 + <th style="width: 50px;">序号</th>
  8 + <th style="width: 130px;">车辆编号</th>
  9 + <th style="width: 130px;">内部编号</th>
10 <th >设备编号</th> 10 <th >设备编号</th>
11 <th >车牌号</th> 11 <th >车牌号</th>
12 <th style="width: 15%;">所在公司</th> 12 <th style="width: 15%;">所在公司</th>
@@ -17,16 +17,14 @@ @@ -17,16 +17,14 @@
17 <tr role="row" class="filter"> 17 <tr role="row" class="filter">
18 <td></td> 18 <td></td>
19 <td> 19 <td>
20 - <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition().carCode_like"/> 20 + <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition().carCode_like" placeholder="输入车辆编号..."/>
21 </td> 21 </td>
22 <td> 22 <td>
23 - <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition().insideCode_like"/> 23 + <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition().insideCode_like" placeholder="输入内部编号..."/>
24 </td> 24 </td>
25 <td> 25 <td>
26 - <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition().equipmentCode_like"/>  
27 </td> 26 </td>
28 <td> 27 <td>
29 - <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition().carPlate_like"/>  
30 </td> 28 </td>
31 <td> 29 <td>
32 <div> 30 <div>
src/main/resources/static/pages/scheduleApp/module/basicInfo/deviceInfoManage/edit.html
@@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
42 cmaps="{'xl': 'id', 'xlName': 'name', 'xlBm': 'lineCode'}" 42 cmaps="{'xl': 'id', 'xlName': 'name', 'xlBm': 'lineCode'}"
43 dcname="xl" 43 dcname="xl"
44 icname="id" 44 icname="id"
45 - dsparams="{{ {type: 'ajax', param:{type: 'all'}, atype:'xl' } | json }}" 45 + dsparams="{{ {type: 'ajax', param:{type: 'all', 'destroy_eq': 0}, atype:'xl' } | json }}"
46 iterobjname="item" 46 iterobjname="item"
47 iterobjexp="item.name" 47 iterobjexp="item.name"
48 searchph="请输拼音..." 48 searchph="请输拼音..."
@@ -147,7 +147,7 @@ @@ -147,7 +147,7 @@
147 ng-model="ctrl.deviceInfoForSave.qyrq" readonly 147 ng-model="ctrl.deviceInfoForSave.qyrq" readonly
148 remote-Validation 148 remote-Validation
149 remotevtype="cde1" 149 remotevtype="cde1"
150 - remotevparam="{{ {'qyrq': ctrl.deviceInfoForSave.qyrq} | json}}"/> 150 + remotevparam="{{ {'qyrq': ctrl.deviceInfoForSave.qyrq, 'xl': ctrl.deviceInfoForSave.xl, 'cl': ctrl.deviceInfoForSave.cl} | json}}"/>
151 <span class="input-group-btn"> 151 <span class="input-group-btn">
152 <button type="button" class="btn btn-default" ng-click="ctrl.qyrq_open()"> 152 <button type="button" class="btn btn-default" ng-click="ctrl.qyrq_open()">
153 <i class="glyphicon glyphicon-calendar"></i> 153 <i class="glyphicon glyphicon-calendar"></i>
@@ -159,6 +159,9 @@ @@ -159,6 +159,9 @@
159 <div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.required"> 159 <div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.required">
160 启用日期必须选择 160 启用日期必须选择
161 </div> 161 </div>
  162 + <div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.remote">
  163 + 启用日期必须比历史的启用日期大
  164 + </div>
162 </div> 165 </div>
163 166
164 <!-- 其他form-group --> 167 <!-- 其他form-group -->
src/main/resources/static/pages/scheduleApp/module/basicInfo/deviceInfoManage/form.html
@@ -42,7 +42,7 @@ @@ -42,7 +42,7 @@
42 cmaps="{'xl': 'id', 'xlName': 'name', 'xlBm': 'lineCode'}" 42 cmaps="{'xl': 'id', 'xlName': 'name', 'xlBm': 'lineCode'}"
43 dcname="xl" 43 dcname="xl"
44 icname="id" 44 icname="id"
45 - dsparams="{{ {type: 'ajax', param:{type: 'all'}, atype:'xl' } | json }}" 45 + dsparams="{{ {type: 'ajax', param:{type: 'all', 'destroy_eq': 0}, atype:'xl' } | json }}"
46 iterobjname="item" 46 iterobjname="item"
47 iterobjexp="item.name" 47 iterobjexp="item.name"
48 searchph="请输拼音..." 48 searchph="请输拼音..."
src/main/resources/static/pages/scheduleApp/module/basicInfo/deviceInfoManage/index.html
@@ -32,21 +32,21 @@ @@ -32,21 +32,21 @@
32 添加设备信息 32 添加设备信息
33 </a> 33 </a>
34 34
35 - <div class="btn-group">  
36 - <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown">  
37 - <i class="fa fa-share"></i>  
38 - <span>数据工具</span>  
39 - <i class="fa fa-angle-down"></i>  
40 - </a>  
41 - <ul class="dropdown-menu pull-right">  
42 - <li>  
43 - <a href="javascript:" class="tool-action">  
44 - <i class="fa fa-file-excel-o"></i>  
45 - 导出excel  
46 - </a>  
47 - </li>  
48 - </ul>  
49 - </div> 35 + <!--<div class="btn-group">-->
  36 + <!--<a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown">-->
  37 + <!--<i class="fa fa-share"></i>-->
  38 + <!--<span>数据工具</span>-->
  39 + <!--<i class="fa fa-angle-down"></i>-->
  40 + <!--</a>-->
  41 + <!--<ul class="dropdown-menu pull-right">-->
  42 + <!--<li>-->
  43 + <!--<a href="javascript:" class="tool-action">-->
  44 + <!--<i class="fa fa-file-excel-o"></i>-->
  45 + <!--导出excel-->
  46 + <!--</a>-->
  47 + <!--</li>-->
  48 + <!--</ul>-->
  49 + <!--</div>-->
50 </div> 50 </div>
51 </div> 51 </div>
52 52
src/main/resources/static/pages/scheduleApp/module/basicInfo/employeeInfoManage/list.html
@@ -4,9 +4,9 @@ @@ -4,9 +4,9 @@
4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column"> 4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column">
5 <thead> 5 <thead>
6 <tr role="row" class="heading"> 6 <tr role="row" class="heading">
7 - <th style="width: 5%;">序号</th>  
8 - <th >姓名</th>  
9 - <th >工号</th> 7 + <th style="width: 50px;">序号</th>
  8 + <th style="width: 130px;">姓名</th>
  9 + <th style="width: 130px;">工号</th>
10 <th style="width: 5%;">性别</th> 10 <th style="width: 5%;">性别</th>
11 <th style="width: 15%;">所在公司</th> 11 <th style="width: 15%;">所在公司</th>
12 <th >分公司</th> 12 <th >分公司</th>
@@ -17,10 +17,10 @@ @@ -17,10 +17,10 @@
17 <td> 17 <td>
18 </td> 18 </td>
19 <td> 19 <td>
20 - <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().personnelName_like"/> 20 + <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().personnelName_like" placeholder="输入姓名..."/>
21 </td> 21 </td>
22 <td> 22 <td>
23 - <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().jobCode_like"/> 23 + <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().jobCode_like" placeholder="输入工号..."/>
24 </td> 24 </td>
25 <td> 25 <td>
26 </td> 26 </td>
src/main/resources/static/pages/scheduleApp/module/common/main.js
@@ -63,27 +63,60 @@ ScheduleApp.factory(&#39;requestNotificationChannel&#39;, [&#39;$rootScope&#39;, function($rootS @@ -63,27 +63,60 @@ ScheduleApp.factory(&#39;requestNotificationChannel&#39;, [&#39;$rootScope&#39;, function($rootS
63 }]); 63 }]);
64 64
65 // http 拦截器 65 // http 拦截器
66 -ScheduleApp.factory('myInterceptor', ['requestNotificationChannel', function(requestNotificationChannel) {  
67 - return {  
68 - request: function(config) {  
69 - requestNotificationChannel.requestStarted();  
70 - return config;  
71 - },  
72 - requestError: function(rejection) {  
73 - requestNotificationChannel.requestEnded();  
74 - return rejection;  
75 - },  
76 - response: function(response) {  
77 - requestNotificationChannel.requestEnded();  
78 - return response;  
79 - },  
80 - responseError: function(rejection) {  
81 - requestNotificationChannel.requestEnded();  
82 - return rejection;  
83 - }  
84 - }; 66 +ScheduleApp.factory(
  67 + 'myInterceptor',
  68 + [
  69 + 'requestNotificationChannel',
  70 + '$q',
  71 + function(requestNotificationChannel, $q) {
  72 + return {
  73 + request: function(config) {
  74 + requestNotificationChannel.requestStarted();
  75 + return config;
  76 + },
  77 + requestError: function(rejection) {
  78 + requestNotificationChannel.requestEnded();
  79 + alert("服务端无响应");
  80 + return rejection;
  81 + },
  82 + response: function(response) {
  83 + requestNotificationChannel.requestEnded();
85 84
86 -}]); 85 + return response;
  86 + },
  87 + responseError: function(rejection) {
  88 + requestNotificationChannel.requestEnded();
  89 +
  90 + // 处理错误,springboot会包装返回的错误数据
  91 + // 如:{"timestamp":1478674739246,"status":500,"error":"Internal Server Error","exception":"java.lang.ClassCastException","message":"java.lang.String cannot be cast to java.lang.Long","path":"/tidc/importfile"}
  92 +
  93 + var status = rejection.status;
  94 + var path = rejection.data.path;
  95 + var message = rejection.data.message;
  96 + var output = [];
  97 + output.push("状态编码:" + status);
  98 + output.push("访问路径:" + path);
  99 + output.push("错误消息:" + message);
  100 + if (status) {
  101 + if (status == 500) {
  102 + alert("服务端错误:" + "\n" + output.join("\n"));
  103 + } else if (status == 407) {
  104 + alert("请重新登录:" + "\n" + output.join("\n"));
  105 + } else if (status == -1) {
  106 + alert("貌似服务端连接不上");
  107 + } else {
  108 + alert("其他错误:" + "\n" + output.join("\n"));
  109 + }
  110 + } else {
  111 + alert("我擦,后台返回连个状态码都没返回,见鬼了!");
  112 + }
  113 +
  114 + return $q.reject(rejection);
  115 + }
  116 + };
  117 + }
  118 + ]
  119 +);
87 120
88 ScheduleApp.config(['$httpProvider', function($httpProvider) { 121 ScheduleApp.config(['$httpProvider', function($httpProvider) {
89 $httpProvider.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest"; 122 $httpProvider.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest";
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
@@ -416,7 +416,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;SchedulePlanManageService_g&#39;, [&#39;$resource @@ -416,7 +416,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;SchedulePlanManageService_g&#39;, [&#39;$resource
416 return { 416 return {
417 rest : $resource( 417 rest : $resource(
418 '/spc/:id', 418 '/spc/:id',
419 - {order: 'createDate', direction: 'DESC', id: '@id_route'}, 419 + {order: 'xl.id,createDate', direction: 'DESC,DESC', id: '@id_route'},
420 { 420 {
421 list: { 421 list: {
422 method: 'GET', 422 method: 'GET',
@@ -452,7 +452,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;SchedulePlanInfoManageService_g&#39;, [&#39;$reso @@ -452,7 +452,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;SchedulePlanInfoManageService_g&#39;, [&#39;$reso
452 return { 452 return {
453 rest : $resource( 453 rest : $resource(
454 '/spic/:id', 454 '/spic/:id',
455 - {order: 'scheduleDate,lp,fcno', direction: 'ASC', id: '@id_route'}, 455 + {order: 'scheduleDate,lp,fcno', direction: 'ASC,ASC,ASC', id: '@id_route'},
456 { 456 {
457 list: { 457 list: {
458 method: 'GET', 458 method: 'GET',
src/main/resources/static/pages/scheduleApp/module/core/busConfig/edit.html
@@ -43,17 +43,18 @@ @@ -43,17 +43,18 @@
43 <div class="form-group has-success has-feedback"> 43 <div class="form-group has-success has-feedback">
44 <label class="col-md-2 control-label">线路*:</label> 44 <label class="col-md-2 control-label">线路*:</label>
45 <div class="col-md-3"> 45 <div class="col-md-3">
46 - <sa-Select3 model="ctrl.busConfigForSave"  
47 - name="xl"  
48 - placeholder="请输拼音..."  
49 - dcvalue="{{ctrl.busConfigForSave.xl.id}}" 46 + <sa-Select5 name="xl"
  47 + model="ctrl.busConfigForSave"
  48 + cmaps="{'xl.id': 'id'}"
50 dcname="xl.id" 49 dcname="xl.id"
51 icname="id" 50 icname="id"
52 - icnames="name"  
53 - datatype="xl"  
54 - mlp="true" 51 + dsparams="{{ {type: 'ajax', param:{type: 'all', 'destroy_eq': 0}, atype:'xl' } | json }}"
  52 + iterobjname="item"
  53 + iterobjexp="item.name"
  54 + searchph="请输拼音..."
  55 + searchexp="this.name"
55 required > 56 required >
56 - </sa-Select3> 57 + </sa-Select5>
57 </div> 58 </div>
58 <!-- 隐藏块,显示验证信息 --> 59 <!-- 隐藏块,显示验证信息 -->
59 <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required"> 60 <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required">
src/main/resources/static/pages/scheduleApp/module/core/busConfig/form.html
@@ -43,19 +43,18 @@ @@ -43,19 +43,18 @@
43 <div class="form-group has-success has-feedback"> 43 <div class="form-group has-success has-feedback">
44 <label class="col-md-2 control-label">线路*:</label> 44 <label class="col-md-2 control-label">线路*:</label>
45 <div class="col-md-3"> 45 <div class="col-md-3">
46 - <sa-Select3 model="ctrl.busConfigForSave"  
47 - name="xl"  
48 - placeholder="请输拼音..."  
49 - dcvalue="{{ctrl.busConfigForSave.xl.id}}" 46 + <sa-Select5 name="xl"
  47 + model="ctrl.busConfigForSave"
  48 + cmaps="{'xl.id': 'id'}"
50 dcname="xl.id" 49 dcname="xl.id"
51 icname="id" 50 icname="id"
52 - dcname2="xl.company"  
53 - icname2="company"  
54 - icnames="name"  
55 - datatype="xl"  
56 - mlp="true" 51 + dsparams="{{ {type: 'ajax', param:{type: 'all', 'destroy_eq': 0}, atype:'xl' } | json }}"
  52 + iterobjname="item"
  53 + iterobjexp="item.name"
  54 + searchph="请输拼音..."
  55 + searchexp="this.name"
57 required > 56 required >
58 - </sa-Select3> 57 + </sa-Select5>
59 </div> 58 </div>
60 <!-- 隐藏块,显示验证信息 --> 59 <!-- 隐藏块,显示验证信息 -->
61 <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required"> 60 <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required">
src/main/resources/static/pages/scheduleApp/module/core/busConfig/index.html
@@ -45,19 +45,19 @@ @@ -45,19 +45,19 @@
45 导入excel 45 导入excel
46 </a> 46 </a>
47 </li> 47 </li>
48 - <li>  
49 - <a href="javascript:" class="tool-action">  
50 - <i class="fa fa-file-excel-o"></i>  
51 - 导出excel  
52 - </a>  
53 - </li>  
54 - <li class="divider"></li>  
55 - <li>  
56 - <a href="javascript:" class="tool-action">  
57 - <i class="fa fa-download"></i>  
58 - excel模版  
59 - </a>  
60 - </li> 48 + <!--<li>-->
  49 + <!--<a href="javascript:" class="tool-action">-->
  50 + <!--<i class="fa fa-file-excel-o"></i>-->
  51 + <!--导出excel-->
  52 + <!--</a>-->
  53 + <!--</li>-->
  54 + <!--<li class="divider"></li>-->
  55 + <!--<li>-->
  56 + <!--<a href="javascript:" class="tool-action">-->
  57 + <!--<i class="fa fa-download"></i>-->
  58 + <!--excel模版-->
  59 + <!--</a>-->
  60 + <!--</li>-->
61 </ul> 61 </ul>
62 </div> 62 </div>
63 </div> 63 </div>
src/main/resources/static/pages/scheduleApp/module/core/busConfig/list.html
@@ -4,11 +4,11 @@ @@ -4,11 +4,11 @@
4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column"> 4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column">
5 <thead> 5 <thead>
6 <tr role="row" class="heading"> 6 <tr role="row" class="heading">
7 - <th style="width: 5%;">序号</th>  
8 - <th style="width: 15%;">线路</th>  
9 - <th >内部编号</th>  
10 - <th >启用日期</th>  
11 - <th >终止日期</th> 7 + <th style="width: 50px;">序号</th>
  8 + <th style="width: 150px;">线路</th>
  9 + <th style="width: 150px;">内部编号</th>
  10 + <th style="width: 150px;">启用日期</th>
  11 + <th style="width: 150px;">终止日期</th>
12 <th >停车点</th> 12 <th >停车点</th>
13 <th style="width: 21%">操作</th> 13 <th style="width: 21%">操作</th>
14 </tr> 14 </tr>
@@ -58,10 +58,10 @@ @@ -58,10 +58,10 @@
58 <span ng-bind="info.cl.insideCode"></span> 58 <span ng-bind="info.cl.insideCode"></span>
59 </td> 59 </td>
60 <td> 60 <td>
61 - <span ng-bind="info.qyrq | date: 'yyyy-MM-dd HH:mm:ss'"></span> 61 + <span ng-bind="info.qyrq | date: 'yyyy-MM-dd'"></span>
62 </td> 62 </td>
63 <td> 63 <td>
64 - <span ng-bind="info.zzrq | date: 'yyyy-MM-dd HH:mm:ss'"></span> 64 + <span ng-bind="info.zzrq | date: 'yyyy-MM-dd'"></span>
65 </td> 65 </td>
66 <td> 66 <td>
67 <span ng-bind="info.tcd"></span> 67 <span ng-bind="info.tcd"></span>
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/edit.html
@@ -43,17 +43,18 @@ @@ -43,17 +43,18 @@
43 <div class="form-group has-success has-feedback"> 43 <div class="form-group has-success has-feedback">
44 <label class="col-md-2 control-label">线路*:</label> 44 <label class="col-md-2 control-label">线路*:</label>
45 <div class="col-md-3"> 45 <div class="col-md-3">
46 - <sa-Select3 model="ctrl.employeeConfigForSave"  
47 - name="xl"  
48 - placeholder="请输拼音..."  
49 - dcvalue="{{ctrl.employeeConfigForSave.xl.id}}" 46 + <sa-Select5 name="xl"
  47 + model="ctrl.employeeConfigForSave"
  48 + cmaps="{'xl.id' : 'id'}"
50 dcname="xl.id" 49 dcname="xl.id"
51 icname="id" 50 icname="id"
52 - icnames="name"  
53 - datatype="xl"  
54 - mlp="true" 51 + dsparams="{{ {type: 'ajax', param:{'type': 'all', 'destroy_eq': 0}, atype:'xl' } | json }}"
  52 + iterobjname="item"
  53 + iterobjexp="item.name"
  54 + searchph="请输拼音..."
  55 + searchexp="this.name"
55 required > 56 required >
56 - </sa-Select3> 57 + </sa-Select5>
57 </div> 58 </div>
58 <!-- 隐藏块,显示验证信息 --> 59 <!-- 隐藏块,显示验证信息 -->
59 <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required"> 60 <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required">
@@ -76,19 +77,18 @@ @@ -76,19 +77,18 @@
76 <div class="form-group has-success has-feedback"> 77 <div class="form-group has-success has-feedback">
77 <label class="col-md-2 control-label">驾驶员*:</label> 78 <label class="col-md-2 control-label">驾驶员*:</label>
78 <div class="col-md-3"> 79 <div class="col-md-3">
79 - <sa-Select3 model="ctrl.employeeConfigForSave"  
80 - name="jsy"  
81 - placeholder="请输拼音..."  
82 - dcvalue="{{ctrl.employeeConfigForSave.jsy.id}}" 80 + <sa-Select5 name="jsy"
  81 + model="ctrl.employeeConfigForSave"
  82 + cmaps="{'jsy.id' : 'id'}"
83 dcname="jsy.id" 83 dcname="jsy.id"
84 icname="id" 84 icname="id"
85 - icnames="personnelName"  
86 - datatype="ry"  
87 - dataassociate="true"  
88 - dataparam="{{ {'companyCode_eq': ctrl.employeeConfigForSave.xl.company} | json }}"  
89 - mlp="true" 85 + dsparams="{{ {type: 'ajax', param:{'type': 'all'}, atype:'ry' } | json }}"
  86 + iterobjname="item"
  87 + iterobjexp="item.personnelName + '<' + item.jobCode + '>'"
  88 + searchph="请输拼音..."
  89 + searchexp="this.personnelName + '<' + this.jobCode + '>'"
90 required > 90 required >
91 - </sa-Select3> 91 + </sa-Select5>
92 </div> 92 </div>
93 <!-- 隐藏块,显示验证信息 --> 93 <!-- 隐藏块,显示验证信息 -->
94 <div class="alert alert-danger well-sm" ng-show="myForm.jsy.$error.required"> 94 <div class="alert alert-danger well-sm" ng-show="myForm.jsy.$error.required">
@@ -99,18 +99,18 @@ @@ -99,18 +99,18 @@
99 <div class="form-group"> 99 <div class="form-group">
100 <label class="col-md-2 control-label">售票员:</label> 100 <label class="col-md-2 control-label">售票员:</label>
101 <div class="col-md-3"> 101 <div class="col-md-3">
102 - <sa-Select3 model="ctrl.employeeConfigForSave"  
103 - name="spy"  
104 - placeholder="请输拼音..."  
105 - dcvalue="{{ctrl.employeeConfigForSave.spy.id}}" 102 + <sa-Select5 name="spy"
  103 + model="ctrl.employeeConfigForSave"
  104 + cmaps="{'spy.id' : 'id'}"
106 dcname="spy.id" 105 dcname="spy.id"
107 icname="id" 106 icname="id"
108 - icnames="personnelName"  
109 - datatype="ry"  
110 - dataassociate="true"  
111 - dataparam="{{ {'companyCode_eq': ctrl.employeeConfigForSave.xl.company} | json }}"  
112 - mlp="true" >  
113 - </sa-Select3> 107 + dsparams="{{ {type: 'ajax', param:{'type': 'all'}, atype:'ry' } | json }}"
  108 + iterobjname="item"
  109 + iterobjexp="item.personnelName + '<' + item.jobCode + '>'"
  110 + searchph="请输拼音..."
  111 + searchexp="this.personnelName + '<' + this.jobCode + '>'"
  112 + >
  113 + </sa-Select5>
114 </div> 114 </div>
115 </div> 115 </div>
116 116
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/employeeConfig.js
@@ -279,6 +279,10 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;EmployeeConfigFormCtrl&#39;, [&#39;EmployeeCon @@ -279,6 +279,10 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;EmployeeConfigFormCtrl&#39;, [&#39;EmployeeCon
279 self.employeeConfigForSave[key] = result[key]; 279 self.employeeConfigForSave[key] = result[key];
280 } 280 }
281 281
  282 + if (!self.employeeConfigForSave.spy) {
  283 + self.employeeConfigForSave.spy = {};
  284 + }
  285 +
282 }, 286 },
283 function(result) { 287 function(result) {
284 alert("出错啦!"); 288 alert("出错啦!");
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/form.html
@@ -43,19 +43,18 @@ @@ -43,19 +43,18 @@
43 <div class="form-group has-success has-feedback"> 43 <div class="form-group has-success has-feedback">
44 <label class="col-md-2 control-label">线路*:</label> 44 <label class="col-md-2 control-label">线路*:</label>
45 <div class="col-md-3"> 45 <div class="col-md-3">
46 - <sa-Select3 model="ctrl.employeeConfigForSave"  
47 - name="xl"  
48 - placeholder="请输拼音..."  
49 - dcvalue="{{ctrl.employeeConfigForSave.xl.id}}" 46 + <sa-Select5 name="xl"
  47 + model="ctrl.employeeConfigForSave"
  48 + cmaps="{'xl.id' : 'id'}"
50 dcname="xl.id" 49 dcname="xl.id"
51 icname="id" 50 icname="id"
52 - dcname2="xl.company"  
53 - icname2="company"  
54 - icnames="name"  
55 - datatype="xl"  
56 - mlp="true" 51 + dsparams="{{ {type: 'ajax', param:{'type': 'all', 'destroy_eq': 0}, atype:'xl' } | json }}"
  52 + iterobjname="item"
  53 + iterobjexp="item.name"
  54 + searchph="请输拼音..."
  55 + searchexp="this.name"
57 required > 56 required >
58 - </sa-Select3> 57 + </sa-Select5>
59 </div> 58 </div>
60 <!-- 隐藏块,显示验证信息 --> 59 <!-- 隐藏块,显示验证信息 -->
61 <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required"> 60 <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required">
@@ -78,19 +77,18 @@ @@ -78,19 +77,18 @@
78 <div class="form-group has-success has-feedback"> 77 <div class="form-group has-success has-feedback">
79 <label class="col-md-2 control-label">驾驶员*:</label> 78 <label class="col-md-2 control-label">驾驶员*:</label>
80 <div class="col-md-3"> 79 <div class="col-md-3">
81 - <sa-Select3 model="ctrl.employeeConfigForSave"  
82 - name="jsy"  
83 - placeholder="请输拼音..."  
84 - dcvalue="{{ctrl.employeeConfigForSave.jsy.id}}" 80 + <sa-Select5 name="jsy"
  81 + model="ctrl.employeeConfigForSave"
  82 + cmaps="{'jsy.id' : 'id'}"
85 dcname="jsy.id" 83 dcname="jsy.id"
86 icname="id" 84 icname="id"
87 - icnames="personnelName"  
88 - datatype="ry"  
89 - dataassociate="true"  
90 - dataparam="{{ {'companyCode_eq': ctrl.employeeConfigForSave.xl.company} | json }}"  
91 - mlp="true" 85 + dsparams="{{ {type: 'ajax', param:{'type': 'all'}, atype:'ry' } | json }}"
  86 + iterobjname="item"
  87 + iterobjexp="item.personnelName + '<' + item.jobCode + '>'"
  88 + searchph="请输拼音..."
  89 + searchexp="this.personnelName + '<' + this.jobCode + '>'"
92 required > 90 required >
93 - </sa-Select3> 91 + </sa-Select5>
94 </div> 92 </div>
95 <!-- 隐藏块,显示验证信息 --> 93 <!-- 隐藏块,显示验证信息 -->
96 <div class="alert alert-danger well-sm" ng-show="myForm.jsy.$error.required"> 94 <div class="alert alert-danger well-sm" ng-show="myForm.jsy.$error.required">
@@ -101,18 +99,18 @@ @@ -101,18 +99,18 @@
101 <div class="form-group"> 99 <div class="form-group">
102 <label class="col-md-2 control-label">售票员:</label> 100 <label class="col-md-2 control-label">售票员:</label>
103 <div class="col-md-3"> 101 <div class="col-md-3">
104 - <sa-Select3 model="ctrl.employeeConfigForSave"  
105 - name="spy"  
106 - placeholder="请输拼音..."  
107 - dcvalue="{{ctrl.employeeConfigForSave.spy.id}}" 102 + <sa-Select5 name="spy"
  103 + model="ctrl.employeeConfigForSave"
  104 + cmaps="{'spy.id' : 'id'}"
108 dcname="spy.id" 105 dcname="spy.id"
109 icname="id" 106 icname="id"
110 - icnames="personnelName"  
111 - datatype="ry"  
112 - dataassociate="true"  
113 - dataparam="{{ {'companyCode_eq': ctrl.employeeConfigForSave.xl.company} | json }}"  
114 - mlp="true" >  
115 - </sa-Select3> 107 + dsparams="{{ {type: 'ajax', param:{'type': 'all'}, atype:'ry' } | json }}"
  108 + iterobjname="item"
  109 + iterobjexp="item.personnelName + '<' + item.jobCode + '>'"
  110 + searchph="请输拼音..."
  111 + searchexp="this.personnelName + '<' + this.jobCode + '>'"
  112 + >
  113 + </sa-Select5>
116 </div> 114 </div>
117 </div> 115 </div>
118 116
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/index.html
@@ -45,19 +45,19 @@ @@ -45,19 +45,19 @@
45 导入excel 45 导入excel
46 </a> 46 </a>
47 </li> 47 </li>
48 - <li>  
49 - <a href="javascript:" class="tool-action">  
50 - <i class="fa fa-file-excel-o"></i>  
51 - 导出excel  
52 - </a>  
53 - </li>  
54 - <li class="divider"></li>  
55 - <li>  
56 - <a href="javascript:" class="tool-action">  
57 - <i class="fa fa-download"></i>  
58 - excel模版  
59 - </a>  
60 - </li> 48 + <!--<li>-->
  49 + <!--<a href="javascript:" class="tool-action">-->
  50 + <!--<i class="fa fa-file-excel-o"></i>-->
  51 + <!--导出excel-->
  52 + <!--</a>-->
  53 + <!--</li>-->
  54 + <!--<li class="divider"></li>-->
  55 + <!--<li>-->
  56 + <!--<a href="javascript:" class="tool-action">-->
  57 + <!--<i class="fa fa-download"></i>-->
  58 + <!--excel模版-->
  59 + <!--</a>-->
  60 + <!--</li>-->
61 </ul> 61 </ul>
62 </div> 62 </div>
63 </div> 63 </div>
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/list.html
@@ -4,9 +4,9 @@ @@ -4,9 +4,9 @@
4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column"> 4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column">
5 <thead> 5 <thead>
6 <tr role="row" class="heading"> 6 <tr role="row" class="heading">
7 - <th style="width: 5%;">序号</th>  
8 - <th style="width: 15%;">线路</th>  
9 - <th style="width: 10%;">搭班编码</th> 7 + <th style="width: 50px;">序号</th>
  8 + <th style="width: 150px;">线路</th>
  9 + <th style="width: 80px;">搭班编码</th>
10 <th >驾驶员工号</th> 10 <th >驾驶员工号</th>
11 <th style="width: 15%;">驾驶员</th> 11 <th style="width: 15%;">驾驶员</th>
12 <th >售票员工号</th> 12 <th >售票员工号</th>
src/main/resources/static/pages/scheduleApp/module/core/guideboardManage/index.html
@@ -45,19 +45,19 @@ @@ -45,19 +45,19 @@
45 导入excel 45 导入excel
46 </a> 46 </a>
47 </li> 47 </li>
48 - <li>  
49 - <a href="javascript:" class="tool-action">  
50 - <i class="fa fa-file-excel-o"></i>  
51 - 导出excel  
52 - </a>  
53 - </li>  
54 - <li class="divider"></li>  
55 - <li>  
56 - <a href="javascript:" class="tool-action">  
57 - <i class="fa fa-download"></i>  
58 - excel模版  
59 - </a>  
60 - </li> 48 + <!--<li>-->
  49 + <!--<a href="javascript:" class="tool-action">-->
  50 + <!--<i class="fa fa-file-excel-o"></i>-->
  51 + <!--导出excel-->
  52 + <!--</a>-->
  53 + <!--</li>-->
  54 + <!--<li class="divider"></li>-->
  55 + <!--<li>-->
  56 + <!--<a href="javascript:" class="tool-action">-->
  57 + <!--<i class="fa fa-download"></i>-->
  58 + <!--excel模版-->
  59 + <!--</a>-->
  60 + <!--</li>-->
61 </ul> 61 </ul>
62 </div> 62 </div>
63 </div> 63 </div>
src/main/resources/static/pages/scheduleApp/module/core/guideboardManage/list.html
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 <td> 60 <td>
61 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>--> 61 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
62 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>--> 62 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->
63 - <a ui-sref="guideboardManage_detail({id : info.id})" class="btn default blue-stripe btn-sm"> 详细 </a> 63 + <a ui-sref="guideboardManage_detail({id : info.id})" class="btn btn-info btn-sm"> 详细 </a>
64 <!--<a ui-sref="#" class="btn default blue-stripe btn-sm"> 修改 </a>--> 64 <!--<a ui-sref="#" class="btn default blue-stripe btn-sm"> 修改 </a>-->
65 </td> 65 </td>
66 </tr> 66 </tr>
src/main/resources/static/pages/scheduleApp/module/core/rerunManage/edit.html
@@ -48,7 +48,7 @@ @@ -48,7 +48,7 @@
48 cmaps="{'rerunXl.id' : 'id'}" 48 cmaps="{'rerunXl.id' : 'id'}"
49 dcname="rerunXl.id" 49 dcname="rerunXl.id"
50 icname="id" 50 icname="id"
51 - dsparams="{{ {type: 'ajax', param:{type: 'all'}, atype:'xl' } | json }}" 51 + dsparams="{{ {type: 'ajax', param:{type: 'all', 'destroy_eq': 0}, atype:'xl' } | json }}"
52 iterobjname="item" 52 iterobjname="item"
53 iterobjexp="item.name" 53 iterobjexp="item.name"
54 searchph="请输拼音..." 54 searchph="请输拼音..."
src/main/resources/static/pages/scheduleApp/module/core/rerunManage/form.html
@@ -48,7 +48,7 @@ @@ -48,7 +48,7 @@
48 cmaps="{'rerunXl.id' : 'id'}" 48 cmaps="{'rerunXl.id' : 'id'}"
49 dcname="rerunXl.id" 49 dcname="rerunXl.id"
50 icname="id" 50 icname="id"
51 - dsparams="{{ {type: 'ajax', param:{type: 'all'}, atype:'xl' } | json }}" 51 + dsparams="{{ {type: 'ajax', param:{type: 'all', 'destroy_eq': 0}, atype:'xl' } | json }}"
52 iterobjname="item" 52 iterobjname="item"
53 iterobjexp="item.name" 53 iterobjexp="item.name"
54 searchph="请输拼音..." 54 searchph="请输拼音..."
src/main/resources/static/pages/scheduleApp/module/core/rerunManage/index.html
@@ -32,34 +32,34 @@ @@ -32,34 +32,34 @@
32 添加套跑 32 添加套跑
33 </a> 33 </a>
34 34
35 - <div class="btn-group">  
36 - <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown">  
37 - <i class="fa fa-share"></i>  
38 - <span>数据工具</span>  
39 - <i class="fa fa-angle-down"></i>  
40 - </a>  
41 - <ul class="dropdown-menu pull-right">  
42 - <li>  
43 - <a href="javascript:" class="tool-action">  
44 - <i class="fa fa-file-excel-o"></i>  
45 - 导入excel  
46 - </a>  
47 - </li>  
48 - <li>  
49 - <a href="javascript:" class="tool-action">  
50 - <i class="fa fa-file-excel-o"></i>  
51 - 导出excel  
52 - </a>  
53 - </li>  
54 - <li class="divider"></li>  
55 - <li>  
56 - <a href="javascript:" class="tool-action">  
57 - <i class="fa fa-refresh"></i>  
58 - 刷行数据  
59 - </a>  
60 - </li>  
61 - </ul>  
62 - </div> 35 + <!--<div class="btn-group">-->
  36 + <!--<a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown">-->
  37 + <!--<i class="fa fa-share"></i>-->
  38 + <!--<span>数据工具</span>-->
  39 + <!--<i class="fa fa-angle-down"></i>-->
  40 + <!--</a>-->
  41 + <!--<ul class="dropdown-menu pull-right">-->
  42 + <!--<li>-->
  43 + <!--<a href="javascript:" class="tool-action">-->
  44 + <!--<i class="fa fa-file-excel-o"></i>-->
  45 + <!--导入excel-->
  46 + <!--</a>-->
  47 + <!--</li>-->
  48 + <!--<li>-->
  49 + <!--<a href="javascript:" class="tool-action">-->
  50 + <!--<i class="fa fa-file-excel-o"></i>-->
  51 + <!--导出excel-->
  52 + <!--</a>-->
  53 + <!--</li>-->
  54 + <!--<li class="divider"></li>-->
  55 + <!--<li>-->
  56 + <!--<a href="javascript:" class="tool-action">-->
  57 + <!--<i class="fa fa-refresh"></i>-->
  58 + <!--刷行数据-->
  59 + <!--</a>-->
  60 + <!--</li>-->
  61 + <!--</ul>-->
  62 + <!--</div>-->
63 </div> 63 </div>
64 </div> 64 </div>
65 65
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/index_info.html
@@ -34,35 +34,35 @@ @@ -34,35 +34,35 @@
34 <span ng-bind="etime | date: 'yyyy-MM-dd ' + '排班明细列表'"></span> 34 <span ng-bind="etime | date: 'yyyy-MM-dd ' + '排班明细列表'"></span>
35 </span> 35 </span>
36 </div> 36 </div>
37 - <div class="actions">  
38 - <a href="javascirpt:" class="btn btn-circle blue" >  
39 - <i class="fa fa-plus"></i>  
40 - 添加  
41 - </a> 37 + <!--<div class="actions">-->
  38 + <!--<a href="javascirpt:" class="btn btn-circle blue" >-->
  39 + <!--<i class="fa fa-plus"></i>-->
  40 + <!--添加-->
  41 + <!--</a>-->
42 42
43 - <div class="btn-group">  
44 - <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown">  
45 - <i class="fa fa-share"></i>  
46 - <span>数据工具</span>  
47 - <i class="fa fa-angle-down"></i>  
48 - </a>  
49 - <ul class="dropdown-menu pull-right">  
50 - <li>  
51 - <a href="javascript:" class="tool-action">  
52 - <i class="fa fa-file-excel-o"></i>  
53 - 导出excel  
54 - </a>  
55 - </li>  
56 - <li class="divider"></li>  
57 - <li>  
58 - <a href="javascript:" class="tool-action">  
59 - <i class="fa fa-refresh"></i>  
60 - 刷行数据  
61 - </a>  
62 - </li>  
63 - </ul>  
64 - </div>  
65 - </div> 43 + <!--<div class="btn-group">-->
  44 + <!--<a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown">-->
  45 + <!--<i class="fa fa-share"></i>-->
  46 + <!--<span>数据工具</span>-->
  47 + <!--<i class="fa fa-angle-down"></i>-->
  48 + <!--</a>-->
  49 + <!--<ul class="dropdown-menu pull-right">-->
  50 + <!--<li>-->
  51 + <!--<a href="javascript:" class="tool-action">-->
  52 + <!--<i class="fa fa-file-excel-o"></i>-->
  53 + <!--导出excel-->
  54 + <!--</a>-->
  55 + <!--</li>-->
  56 + <!--<li class="divider"></li>-->
  57 + <!--<li>-->
  58 + <!--<a href="javascript:" class="tool-action">-->
  59 + <!--<i class="fa fa-refresh"></i>-->
  60 + <!--刷行数据-->
  61 + <!--</a>-->
  62 + <!--</li>-->
  63 + <!--</ul>-->
  64 + <!--</div>-->
  65 + <!--</div>-->
66 </div> 66 </div>
67 67
68 <div class="portlet-body"> 68 <div class="portlet-body">
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/index_report.html
@@ -26,30 +26,30 @@ @@ -26,30 +26,30 @@
26 <i class="fa fa-database font-dark"></i> 26 <i class="fa fa-database font-dark"></i>
27 <span class="caption-subject bold uppercase">排班计划</span> 27 <span class="caption-subject bold uppercase">排班计划</span>
28 </div> 28 </div>
29 - <div class="actions">  
30 - <div class="btn-group">  
31 - <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown">  
32 - <i class="fa fa-share"></i>  
33 - <span>数据工具</span>  
34 - <i class="fa fa-angle-down"></i>  
35 - </a>  
36 - <ul class="dropdown-menu pull-right">  
37 - <li>  
38 - <a href="javascript:" class="tool-action">  
39 - <i class="fa fa-file-excel-o"></i>  
40 - 导出excel  
41 - </a>  
42 - </li>  
43 - <li class="divider"></li>  
44 - <li>  
45 - <a href="javascript:" class="tool-action">  
46 - <i class="fa fa-refresh"></i>  
47 - 刷行数据  
48 - </a>  
49 - </li>  
50 - </ul>  
51 - </div>  
52 - </div> 29 + <!--<div class="actions">-->
  30 + <!--<div class="btn-group">-->
  31 + <!--<a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown">-->
  32 + <!--<i class="fa fa-share"></i>-->
  33 + <!--<span>数据工具</span>-->
  34 + <!--<i class="fa fa-angle-down"></i>-->
  35 + <!--</a>-->
  36 + <!--<ul class="dropdown-menu pull-right">-->
  37 + <!--<li>-->
  38 + <!--<a href="javascript:" class="tool-action">-->
  39 + <!--<i class="fa fa-file-excel-o"></i>-->
  40 + <!--导出excel-->
  41 + <!--</a>-->
  42 + <!--</li>-->
  43 + <!--<li class="divider"></li>-->
  44 + <!--<li>-->
  45 + <!--<a href="javascript:" class="tool-action">-->
  46 + <!--<i class="fa fa-refresh"></i>-->
  47 + <!--刷行数据-->
  48 + <!--</a>-->
  49 + <!--</li>-->
  50 + <!--</ul>-->
  51 + <!--</div>-->
  52 + <!--</div>-->
53 </div> 53 </div>
54 54
55 <div class="portlet-body"> 55 <div class="portlet-body">
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/list.html
@@ -4,13 +4,13 @@ @@ -4,13 +4,13 @@
4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column"> 4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column">
5 <thead> 5 <thead>
6 <tr role="row" class="heading"> 6 <tr role="row" class="heading">
7 - <th style="width: 5%;">序号</th>  
8 - <th style="width: 15%;">线路</th>  
9 - <th style="width: 20%;">时刻表</th>  
10 - <th>排班开始时间</th>  
11 - <th>排班结束时间</th>  
12 - <th>修改时间</th>  
13 - <th style="width: 21%">操作</th> 7 + <th style="width: 50px;">序号</th>
  8 + <th style="width: 150px;">线路</th>
  9 + <th style="width: 100%;">关联时刻表</th>
  10 + <th style="width: 150px;">排班开始日期</th>
  11 + <th style="width: 150px;">排班结束日期</th>
  12 + <th style="width: 180px;">排班操作时间</th>
  13 + <th style="width: 180px;">操作</th>
14 </tr> 14 </tr>
15 <tr role="row" class="filter"> 15 <tr role="row" class="filter">
16 <td></td> 16 <td></td>
@@ -25,9 +25,37 @@ @@ -25,9 +25,37 @@
25 datatype="xl"> 25 datatype="xl">
26 </sa-Select3> 26 </sa-Select3>
27 </td> 27 </td>
28 - <td></td>  
29 - <td></td>  
30 - <td></td> 28 + <td>
  29 + <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition().name_like" placeholder="输入时刻表名称..."/>
  30 + </td>
  31 + <td>
  32 + <div class="input-group">
  33 + <input type="text" class="form-control input-sm"
  34 + name="scheduleFromTime" placeholder="选择日期..."
  35 + uib-datepicker-popup="yyyy-MM-dd"
  36 + is-open="ctrl.scheduleFromTime"
  37 + ng-model="ctrl.searchCondition()['scheduleFromTime_ge']" readonly/>
  38 + <span class="input-group-btn">
  39 + <button type="button" class="btn btn-default btn-sm" ng-click="ctrl.scheduleFromTime_open()">
  40 + <i class="glyphicon glyphicon-calendar"></i>
  41 + </button>
  42 + </span>
  43 + </div>
  44 + </td>
  45 + <td>
  46 + <div class="input-group">
  47 + <input type="text" class="form-control input-sm"
  48 + name="scheduleToTime" placeholder="选择日期..."
  49 + uib-datepicker-popup="yyyy-MM-dd"
  50 + is-open="ctrl.scheduleToTime"
  51 + ng-model="ctrl.searchCondition()['scheduleToTime_le']" readonly/>
  52 + <span class="input-group-btn">
  53 + <button type="button" class="btn btn-default btn-sm" ng-click="ctrl.scheduleToTime_open()">
  54 + <i class="glyphicon glyphicon-calendar"></i>
  55 + </button>
  56 + </span>
  57 + </div>
  58 + </td>
31 <td></td> 59 <td></td>
32 <td> 60 <td>
33 <button class="btn btn-sm green btn-outline filter-submit margin-bottom" 61 <button class="btn btn-sm green btn-outline filter-submit margin-bottom"
@@ -50,7 +78,7 @@ @@ -50,7 +78,7 @@
50 <span ng-bind="info.xl.name"></span> 78 <span ng-bind="info.xl.name"></span>
51 </td> 79 </td>
52 <td> 80 <td>
53 - <span ng-bind="info.ttInfo.name"></span> 81 + <span ng-bind="info.ttInfoNames"></span>
54 </td> 82 </td>
55 <td> 83 <td>
56 <span ng-bind="info.scheduleFromTime | date: 'yyyy-MM-dd '"></span> 84 <span ng-bind="info.scheduleFromTime | date: 'yyyy-MM-dd '"></span>
@@ -64,10 +92,10 @@ @@ -64,10 +92,10 @@
64 <td> 92 <td>
65 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>--> 93 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
66 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>--> 94 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->
67 - <a ui-sref="schedulePlanInfoManage({spid : info.id, xlname : info.xl.name, ttname : info.ttInfo.name, stime : info.scheduleFromTime, etime : info.scheduleToTime})"  
68 - class="btn default blue-stripe btn-sm"> 排班明细 </a> 95 + <a ui-sref="schedulePlanInfoManage({spid : info.id, xlname : info.xl.name, ttname : info.ttInfoNames, stime : info.scheduleFromTime, etime : info.scheduleToTime})"
  96 + class="btn btn-info btn-sm"> 明细 </a>
69 <a ng-click="ctrl.deletePlan(info.id)" 97 <a ng-click="ctrl.deletePlan(info.id)"
70 - class="btn default blue-stripe btn-sm"> 删除 </a> 98 + class="btn btn-danger btn-sm"> 删除 </a>
71 </td> 99 </td>
72 </tr> 100 </tr>
73 </tbody> 101 </tbody>
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/list_info.html
@@ -4,28 +4,37 @@ @@ -4,28 +4,37 @@
4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column"> 4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column">
5 <thead> 5 <thead>
6 <tr role="row" class="heading"> 6 <tr role="row" class="heading">
7 - <th style="width: 40pt;">序号</th>  
8 - <th>线路</th>  
9 - <th style="width: 80pt;">日期</th>  
10 - <th>路牌</th>  
11 - <th>车辆</th>  
12 - <th>备注</th>  
13 - <th>报道时间</th>  
14 - <th>出场时间</th>  
15 - <th>驾驶员</th>  
16 - <th>工号</th>  
17 - <th>售票员</th>  
18 - <th>工号</th>  
19 - <th>班次类型</th>  
20 - <th>发车时间</th> 7 + <th style="width: 50px;">序号</th>
  8 + <th style="width: 100px;">线路</th>
  9 + <th style="width: 150px;">日期</th>
  10 + <th style="width: 60px;">路牌</th>
  11 + <th style="width: 150px;">车辆</th>
  12 + <th style="width: 150px;">驾驶员(工号)</th>
  13 + <th style="width: 150px;">售票员(工号)</th>
  14 + <th style="width: 80px;">班次类型</th>
  15 + <th style="width: 80px;">发车时间</th>
  16 + <th style="width: 100%">时刻表</th>
21 17
22 <!-- TODO:还有其他的 --> 18 <!-- TODO:还有其他的 -->
23 19
24 - <th style="width: 115pt;">操作</th>  
25 </tr> 20 </tr>
26 <tr role="row" class="filter"> 21 <tr role="row" class="filter">
27 <td></td> 22 <td></td>
28 <td></td> 23 <td></td>
  24 + <td>
  25 + <div class="input-group">
  26 + <input type="text" class="form-control input-sm"
  27 + name="scheduleDate" placeholder="选择日期..."
  28 + uib-datepicker-popup="yyyy-MM-dd"
  29 + is-open="ctrl.scheduleDate"
  30 + ng-model="ctrl.searchCondition()['scheduleDate_eq']" readonly/>
  31 + <span class="input-group-btn">
  32 + <button type="button" class="btn btn-default btn-sm" ng-click="ctrl.scheduleDate_open()">
  33 + <i class="glyphicon glyphicon-calendar"></i>
  34 + </button>
  35 + </span>
  36 + </div>
  37 + </td>
29 <td></td> 38 <td></td>
30 <td></td> 39 <td></td>
31 <td></td> 40 <td></td>
@@ -33,21 +42,6 @@ @@ -33,21 +42,6 @@
33 <td></td> 42 <td></td>
34 <td></td> 43 <td></td>
35 <td></td> 44 <td></td>
36 - <td></td>  
37 - <td></td>  
38 - <td></td>  
39 - <td></td>  
40 - <td></td>  
41 -  
42 - <td>  
43 - <button class="btn btn-sm green btn-outline filter-submit margin-bottom"  
44 - ng-click="ctrl.pageChanaged()">  
45 - <i class="fa fa-search"></i> 搜索</button>  
46 -  
47 - <button class="btn btn-sm red btn-outline filter-cancel"  
48 - ng-click="ctrl.resetSearchCondition()">  
49 - <i class="fa fa-times"></i> 重置</button>  
50 - </td>  
51 45
52 </tr> 46 </tr>
53 </thead> 47 </thead>
@@ -69,24 +63,12 @@ @@ -69,24 +63,12 @@
69 <td> 63 <td>
70 <span ng-bind="info.clZbh"></span> 64 <span ng-bind="info.clZbh"></span>
71 </td> 65 </td>
72 - <td></td>  
73 <td> 66 <td>
74 - <span ng-bind="info.bdTime"></span>  
75 - </td>  
76 - <td>  
77 - <span ng-bind="info.ccTime"></span>  
78 - </td>  
79 - <td>  
80 - <span ng-bind="info.jName"></span>  
81 - </td>  
82 - <td>  
83 - <span ng-bind="info.jGh"></span>  
84 - </td>  
85 - <td>  
86 - <span ng-bind="info.sName"></span> 67 + <span>{{info.jName ? info.jName + '(' + info.jGh + ')' : ''}}</span>
  68 +
87 </td> 69 </td>
88 <td> 70 <td>
89 - <span ng-bind="info.sGh"></span> 71 + <span>{{info.sGh ? info.sName + '(' + info.sGh + ')' : ''}}</span>
90 </td> 72 </td>
91 <td> 73 <td>
92 <span ng-bind="info.bcType | dict:'ScheduleType':'未知' "></span> 74 <span ng-bind="info.bcType | dict:'ScheduleType':'未知' "></span>
@@ -94,13 +76,10 @@ @@ -94,13 +76,10 @@
94 <td> 76 <td>
95 <span ng-bind="info.fcsj"></span> 77 <span ng-bind="info.fcsj"></span>
96 </td> 78 </td>
97 -  
98 <td> 79 <td>
99 - <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->  
100 - <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->  
101 - <a ui-sref="#" class="btn default blue-stripe btn-sm"> 详细 </a>  
102 - <a ui-sref="#" class="btn default blue-stripe btn-sm"> 修改 </a> 80 + <abbr title="info.ttInfoName">{{info.ttInfoName}}</abbr>
103 </td> 81 </td>
  82 +
104 </tr> 83 </tr>
105 </tbody> 84 </tbody>
106 85
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/schedulePlanInfoManage.js
@@ -75,6 +75,12 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;SchedulePlanInfoManageListCtrl&#39;, [&#39;Sch @@ -75,6 +75,12 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;SchedulePlanInfoManageListCtrl&#39;, [&#39;Sch
75 infos: [] 75 infos: []
76 }; 76 };
77 77
  78 + // 日期 日期控件开关
  79 + self.scheduleDate = false;
  80 + self.scheduleDate_open = function() {
  81 + self.scheduleDate = true;
  82 + };
  83 +
78 var spid = $scope.spid; 84 var spid = $scope.spid;
79 85
80 // 初始创建的时候,获取一次列表数据 86 // 初始创建的时候,获取一次列表数据
@@ -118,6 +124,18 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;SchedulePlanInfoManageListCtrl&#39;, [&#39;Sch @@ -118,6 +124,18 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;SchedulePlanInfoManageListCtrl&#39;, [&#39;Sch
118 return schedulePlanInfoManageService.resetSearchCondition(); 124 return schedulePlanInfoManageService.resetSearchCondition();
119 }; 125 };
120 126
  127 + $scope.$watch(
  128 + function() {
  129 + return self.searchCondition()['scheduleDate_eq'];
  130 + },
  131 + function(newValue, oldValue) {
  132 + if (newValue == undefined && oldValue == undefined) {
  133 +
  134 + } else {
  135 + self.pageChanaged();
  136 + }
  137 + });
  138 +
121 }]); 139 }]);
122 140
123 141
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/schedulePlanManage.js
@@ -78,6 +78,16 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;SchedulePlanManageListCtrl&#39;, [&#39;Schedul @@ -78,6 +78,16 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;SchedulePlanManageListCtrl&#39;, [&#39;Schedul
78 infos: [] 78 infos: []
79 }; 79 };
80 80
  81 + // 日期 日期控件开关
  82 + self.scheduleFromTime = false;
  83 + self.scheduleFromTime_open = function() {
  84 + self.scheduleFromTime = true;
  85 + };
  86 + self.scheduleToTime = false;
  87 + self.scheduleToTime_open = function() {
  88 + self.scheduleToTime = true;
  89 + };
  90 +
81 // 初始创建的时候,获取一次列表数据 91 // 初始创建的时候,获取一次列表数据
82 schedulePlanManageService.getPage().then( 92 schedulePlanManageService.getPage().then(
83 function(result) { 93 function(result) {
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/edit.html
@@ -43,17 +43,18 @@ @@ -43,17 +43,18 @@
43 <div class="form-group has-success has-feedback"> 43 <div class="form-group has-success has-feedback">
44 <label class="col-md-2 control-label">线路*:</label> 44 <label class="col-md-2 control-label">线路*:</label>
45 <div class="col-md-3"> 45 <div class="col-md-3">
46 - <sa-Select3 model="ctrl.scheduleRuleManageForSave"  
47 - name="xl"  
48 - placeholder="请输拼音..."  
49 - dcvalue="{{ctrl.scheduleRuleManageForSave.xl.id}}" 46 + <sa-Select5 name="xl"
  47 + model="ctrl.scheduleRuleManageForSave"
  48 + cmaps="{'xl.id' : 'id'}"
50 dcname="xl.id" 49 dcname="xl.id"
51 icname="id" 50 icname="id"
52 - icnames="name"  
53 - datatype="xl"  
54 - mlp="true" 51 + dsparams="{{ {type: 'ajax', param:{type: 'all', 'destroy_eq': 0}, atype:'xl' } | json }}"
  52 + iterobjname="item"
  53 + iterobjexp="item.name"
  54 + searchph="请输拼音..."
  55 + searchexp="this.name"
55 required > 56 required >
56 - </sa-Select3> 57 + </sa-Select5>
57 </div> 58 </div>
58 <!-- 隐藏块,显示验证信息 --> 59 <!-- 隐藏块,显示验证信息 -->
59 <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required"> 60 <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required">
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/form.html
@@ -43,17 +43,18 @@ @@ -43,17 +43,18 @@
43 <div class="form-group has-success has-feedback"> 43 <div class="form-group has-success has-feedback">
44 <label class="col-md-2 control-label">线路*:</label> 44 <label class="col-md-2 control-label">线路*:</label>
45 <div class="col-md-3"> 45 <div class="col-md-3">
46 - <sa-Select3 model="ctrl.scheduleRuleManageForSave"  
47 - name="xl"  
48 - placeholder="请输拼音..."  
49 - dcvalue="{{ctrl.scheduleRuleManageForSave.xl.id}}" 46 + <sa-Select5 name="xl"
  47 + model="ctrl.scheduleRuleManageForSave"
  48 + cmaps="{'xl.id' : 'id'}"
50 dcname="xl.id" 49 dcname="xl.id"
51 icname="id" 50 icname="id"
52 - icnames="name"  
53 - datatype="xl"  
54 - mlp="true" 51 + dsparams="{{ {type: 'ajax', param:{type: 'all', 'destroy_eq': 0}, atype:'xl' } | json }}"
  52 + iterobjname="item"
  53 + iterobjexp="item.name"
  54 + searchph="请输拼音..."
  55 + searchexp="this.name"
55 required > 56 required >
56 - </sa-Select3> 57 + </sa-Select5>
57 </div> 58 </div>
58 <!-- 隐藏块,显示验证信息 --> 59 <!-- 隐藏块,显示验证信息 -->
59 <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required"> 60 <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required">
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/index.html
@@ -32,34 +32,34 @@ @@ -32,34 +32,34 @@
32 添加规则 32 添加规则
33 </a> 33 </a>
34 34
35 - <div class="btn-group">  
36 - <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown">  
37 - <i class="fa fa-share"></i>  
38 - <span>数据工具</span>  
39 - <i class="fa fa-angle-down"></i>  
40 - </a>  
41 - <ul class="dropdown-menu pull-right">  
42 - <li>  
43 - <a href="javascript:" class="tool-action">  
44 - <i class="fa fa-file-excel-o"></i>  
45 - 规则类型  
46 - </a>  
47 - </li>  
48 - <li>  
49 - <a href="javascript:" class="tool-action">  
50 - <i class="fa fa-file-excel-o"></i>  
51 - 导出excel  
52 - </a>  
53 - </li>  
54 - <li class="divider"></li>  
55 - <li>  
56 - <a href="javascript:" class="tool-action">  
57 - <i class="fa fa-refresh"></i>  
58 - 刷行数据  
59 - </a>  
60 - </li>  
61 - </ul>  
62 - </div> 35 + <!--<div class="btn-group">-->
  36 + <!--<a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown">-->
  37 + <!--<i class="fa fa-share"></i>-->
  38 + <!--<span>数据工具</span>-->
  39 + <!--<i class="fa fa-angle-down"></i>-->
  40 + <!--</a>-->
  41 + <!--<ul class="dropdown-menu pull-right">-->
  42 + <!--<li>-->
  43 + <!--<a href="javascript:" class="tool-action">-->
  44 + <!--<i class="fa fa-file-excel-o"></i>-->
  45 + <!--规则类型-->
  46 + <!--</a>-->
  47 + <!--</li>-->
  48 + <!--<li>-->
  49 + <!--<a href="javascript:" class="tool-action">-->
  50 + <!--<i class="fa fa-file-excel-o"></i>-->
  51 + <!--导出excel-->
  52 + <!--</a>-->
  53 + <!--</li>-->
  54 + <!--<li class="divider"></li>-->
  55 + <!--<li>-->
  56 + <!--<a href="javascript:" class="tool-action">-->
  57 + <!--<i class="fa fa-refresh"></i>-->
  58 + <!--刷行数据-->
  59 + <!--</a>-->
  60 + <!--</li>-->
  61 + <!--</ul>-->
  62 + <!--</div>-->
63 </div> 63 </div>
64 </div> 64 </div>
65 65
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/list.html
@@ -83,9 +83,9 @@ @@ -83,9 +83,9 @@
83 <td> 83 <td>
84 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>--> 84 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
85 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>--> 85 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->
86 - <a ui-sref="scheduleRuleManage_detail({id : info.id})" class="btn default blue-stripe btn-sm"> 详细 </a>  
87 - <a ui-sref="scheduleRuleManage_edit({id : info.id})" class="btn default blue-stripe btn-sm"> 修改 </a>  
88 - <a ng-click="ctrl.deleteRule(info.id)" class="btn default blue-stripe btn-sm"> 删除 </a> 86 + <a ui-sref="scheduleRuleManage_detail({id : info.id})" class="btn btn-info btn-sm"> 详细 </a>
  87 + <a ui-sref="scheduleRuleManage_edit({id : info.id})" class="btn btn-info btn-sm"> 修改 </a>
  88 + <a ng-click="ctrl.deleteRule(info.id)" class="btn btn-danger btn-sm"> 删除 </a>
89 </td> 89 </td>
90 </tr> 90 </tr>
91 </tbody> 91 </tbody>
src/main/resources/static/pages/scheduleApp/module/core/ttInfoDetailManage/edit-detail.html
1 <div ng-controller="TimeTableDetailManageFormCtrl_old as ctrl"> 1 <div ng-controller="TimeTableDetailManageFormCtrl_old as ctrl">
2 <div class="page-head"> 2 <div class="page-head">
3 <div class="page-title"> 3 <div class="page-title">
4 - <h1>修改班次信息2</h1> 4 + <h1>修改班次信息</h1>
5 </div> 5 </div>
6 </div> 6 </div>
7 7
src/main/resources/static/pages/scheduleApp/module/core/ttInfoDetailManage/edit.html
1 <div class="page-head"> 1 <div class="page-head">
2 <div class="page-title"> 2 <div class="page-title">
3 - <h1>时刻表管理2</h1> 3 + <h1>时刻表管理</h1>
4 </div> 4 </div>
5 </div> 5 </div>
6 6
src/main/resources/static/pages/scheduleApp/module/core/ttInfoDetailManage/form.html
1 <div class="page-head"> 1 <div class="page-head">
2 <div class="page-title"> 2 <div class="page-title">
3 - <h1>时刻表管理2</h1> 3 + <h1>时刻表管理</h1>
4 </div> 4 </div>
5 </div> 5 </div>
6 6
@@ -89,7 +89,7 @@ @@ -89,7 +89,7 @@
89 ng-disabled="!item.isUploading"> 89 ng-disabled="!item.isUploading">
90 <span class="glyphicon glyphicon-ban-circle"></span> 取消 90 <span class="glyphicon glyphicon-ban-circle"></span> 取消
91 </button> 91 </button>
92 - <button type="button" class="btn btn-danger btn-xs" ng-click="item.remove()"> 92 + <button type="button" class="btn btn-danger btn-xs" ng-click="ctrl.removeItem(item)">
93 <span class="glyphicon glyphicon-trash"></span> 删除 93 <span class="glyphicon glyphicon-trash"></span> 删除
94 </button> 94 </button>
95 </td> 95 </td>
src/main/resources/static/pages/scheduleApp/module/core/ttInfoDetailManage/main.js
@@ -61,6 +61,11 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -61,6 +61,11 @@ angular.module(&#39;ScheduleApp&#39;).controller(
61 self.clearInputFile = function() { 61 self.clearInputFile = function() {
62 angular.element("input[type='file']").val(null); 62 angular.element("input[type='file']").val(null);
63 }; 63 };
  64 + self.removeItem = function(item) {
  65 + item.remove();
  66 + self.ttInfoDetailManageForForm.sheetname = undefined;
  67 + self.sheetnames = [];
  68 + };
64 69
65 // 上传文件组件 70 // 上传文件组件
66 self.uploader = new FileUploader({ 71 self.uploader = new FileUploader({
@@ -79,6 +84,8 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -79,6 +84,8 @@ angular.module(&#39;ScheduleApp&#39;).controller(
79 console.log(self.uploader.queue.length); 84 console.log(self.uploader.queue.length);
80 if (self.uploader.queue.length > 1) 85 if (self.uploader.queue.length > 1)
81 self.uploader.removeFromQueue(0); 86 self.uploader.removeFromQueue(0);
  87 + self.ttInfoDetailManageForForm.sheetname = undefined;
  88 + self.sheetnames = [];
82 }; 89 };
83 self.uploader.onSuccessItem = function(fileItem, response, status, headers) 90 self.uploader.onSuccessItem = function(fileItem, response, status, headers)
84 { 91 {
@@ -109,7 +116,7 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -109,7 +116,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(
109 116
110 // TODO:edit操作暂时使用旧版本的js文件 117 // TODO:edit操作暂时使用旧版本的js文件
111 118
112 - // {"timestamp":1478674739246,"status":500,"error":"Internal Server Error","exception":"java.lang.ClassCastException","message":"java.lang.String cannot be cast to java.lang.Long","path":"/tidc/importfile"} 119 +
113 } 120 }
114 ] 121 ]
115 ); 122 );
116 \ No newline at end of file 123 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detail.html
1 <div class="page-head"> 1 <div class="page-head">
2 <div class="page-title"> 2 <div class="page-title">
3 - <h1>时刻表管理2</h1> 3 + <h1>时刻表管理</h1>
4 </div> 4 </div>
5 </div> 5 </div>
6 6
@@ -175,4 +175,5 @@ @@ -175,4 +175,5 @@
175 </div> 175 </div>
176 176
177 177
  178 +>>>>>>> PSM-12
178 </div> 179 </div>
179 \ No newline at end of file 180 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/edit.html
1 <div class="page-head"> 1 <div class="page-head">
2 <div class="page-title"> 2 <div class="page-title">
3 - <h1>时刻表管理2</h1> 3 + <h1>时刻表管理</h1>
4 </div> 4 </div>
5 </div> 5 </div>
6 6
@@ -48,7 +48,7 @@ @@ -48,7 +48,7 @@
48 cmaps="{'xl.id' : 'id'}" 48 cmaps="{'xl.id' : 'id'}"
49 dcname="xl.id" 49 dcname="xl.id"
50 icname="id" 50 icname="id"
51 - dsparams="{{ {type: 'ajax', param:{type: 'all'}, atype:'xl' } | json }}" 51 + dsparams="{{ {type: 'ajax', param:{type: 'all', 'destroy_eq': 0}, atype:'xl' } | json }}"
52 iterobjname="item" 52 iterobjname="item"
53 iterobjexp="item.name" 53 iterobjexp="item.name"
54 searchph="请输拼音..." 54 searchph="请输拼音..."
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/form.html
1 <div class="page-head"> 1 <div class="page-head">
2 <div class="page-title"> 2 <div class="page-title">
3 - <h1>时刻表管理2</h1> 3 + <h1>时刻表管理</h1>
4 </div> 4 </div>
5 </div> 5 </div>
6 6
@@ -48,7 +48,7 @@ @@ -48,7 +48,7 @@
48 cmaps="{'xl.id' : 'id'}" 48 cmaps="{'xl.id' : 'id'}"
49 dcname="xl.id" 49 dcname="xl.id"
50 icname="id" 50 icname="id"
51 - dsparams="{{ {type: 'ajax', param:{type: 'all'}, atype:'xl' } | json }}" 51 + dsparams="{{ {type: 'ajax', param:{type: 'all', 'destroy_eq': 0}, atype:'xl' } | json }}"
52 iterobjname="item" 52 iterobjname="item"
53 iterobjexp="item.name" 53 iterobjexp="item.name"
54 searchph="请输拼音..." 54 searchph="请输拼音..."
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/index.html
1 <div class="page-head"> 1 <div class="page-head">
2 <div class="page-title"> 2 <div class="page-title">
3 - <h1>时刻表管理2</h1> 3 + <h1>时刻表管理</h1>
4 </div> 4 </div>
5 </div> 5 </div>
6 6
src/main/resources/static/real_control_v2/css/main.css
@@ -302,4 +302,4 @@ canvas.crosshair-layer { @@ -302,4 +302,4 @@ canvas.crosshair-layer {
302 li.map-panel{ 302 li.map-panel{
303 height: 100%; 303 height: 100%;
304 position: relative; 304 position: relative;
305 -} 305 +}
306 \ No newline at end of file 306 \ No newline at end of file
src/main/resources/static/real_control_v2/css/north.css
1 .north { 1 .north {
2 - background: linear-gradient(to right, #082F4A, #125688, #0a3f64); 2 + background: linear-gradient(to right ,#595959, #7b7b7b,#595959);
3 height: 120px; 3 height: 120px;
4 position: relative; 4 position: relative;
  5 + transition: all .3s ease;
  6 +}
  7 +
  8 +.north.main {
  9 + background: linear-gradient(to right, #082F4A, #125688, #0a3f64);
  10 +}
  11 +
  12 +.north.scok-colse {
  13 + background: linear-gradient(to right, #924040, #ce6262, #924040) !important;
  14 +}
  15 +
  16 +.north.scok-colse:before {
  17 + content: "长连接被断开,你将无法收到服务器推送的发车、到站信息。请刷新页面以重建连接!";
  18 + position: absolute;
  19 + padding: 5px 10px 5px 14px;
  20 + background: #414141;
  21 + color: #f9f9f9;
  22 + border-radius: 20px 0 0 20px;
  23 + z-index: 5;
  24 + left: 270px;
  25 + box-shadow: 0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);
  26 + border: 1px solid #caaaaa;
  27 + font-size: 13px;
5 } 28 }
6 29
7 .north .north-logo { 30 .north .north-logo {
src/main/resources/static/real_control_v2/fragments/line_schedule/sch_table.html
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 <div class="uk-autocomplete sch-search-autocom"> 13 <div class="uk-autocomplete sch-search-autocom">
14 <div class="uk-form-icon"> 14 <div class="uk-form-icon">
15 <i class="uk-icon-search"></i> 15 <i class="uk-icon-search"></i>
16 - <input type="text" placeholder="search"> 16 + <input type="text" placeholder="搜索">
17 <i class="cancel uk-icon-times-circle" data-uk-tooltip="{pos:'right'}" title="取消过滤"></i> 17 <i class="cancel uk-icon-times-circle" data-uk-tooltip="{pos:'right'}" title="取消过滤"></i>
18 </div> 18 </div>
19 </div> 19 </div>
@@ -111,8 +111,8 @@ @@ -111,8 +111,8 @@
111 </dd> 111 </dd>
112 </script> 112 </script>
113 113
114 - <script id="line-schedule-sfsj-temp" type="text/html">  
115 - <dd class=" 114 +<script id="line-schedule-sfsj-temp" type="text/html">
  115 +<dd class="
116 {{if status==-1}} 116 {{if status==-1}}
117 tl-qrlb 117 tl-qrlb
118 {{else if status==2}} 118 {{else if status==2}}
src/main/resources/static/real_control_v2/fragments/north/nav/charts/s_e_punctuality_rate_line.html
@@ -61,56 +61,46 @@ @@ -61,56 +61,46 @@
61 //实发准点率 -dfsj 待发时间戳(秒),sfsj 实发时间戳(秒) 61 //实发准点率 -dfsj 待发时间戳(秒),sfsj 实发时间戳(秒)
62 function calcPunctuality(dfsj, sfsj){ 62 function calcPunctuality(dfsj, sfsj){
63 var diff=(dfsj-sfsj)/60; 63 var diff=(dfsj-sfsj)/60;
64 - var rs=0;  
65 if(diff > 0){ 64 if(diff > 0){
66 if(diff <= 1) 65 if(diff <= 1)
67 - rs=1;  
68 - else  
69 - rs=(10 - (diff - 1)) / 10; 66 + return true;
70 } 67 }
71 else{ 68 else{
72 - if(Math.abs(diff) < 3)  
73 - rs=1;  
74 - else  
75 - rs=(10 - (Math.abs(diff) - 3)) / 10; 69 + if(Math.abs(diff) <= 3)
  70 + return true;
76 } 71 }
77 72
78 - return rs<0?0:rs; 73 + return false;
79 } 74 }
80 75
81 //计算准点率 76 //计算准点率
82 function calcPunctualityRate(data){ 77 function calcPunctualityRate(data){
83 - var line2Reate={}, seff, eeff, fs="YYYY-MM-DDHH:mm"; 78 + var line2Reate={}, eff, fs="YYYY-MM-DDHH:mm";
84 for(var lineCode in data){ 79 for(var lineCode in data){
85 - seff=0;  
86 - eeff=0; 80 + eff=0;
87 $.each(data[lineCode], function(){ 81 $.each(data[lineCode], function(){
88 //首班时间 82 //首班时间
89 - if(this.startTime.length == 11){ 83 + if(this.startTime.length >= 11){
90 var arr=this.startTime.split('/'); 84 var arr=this.startTime.split('/');
91 - var sDfsj=moment(this.etRealExecDate+arr[0], fs).format('X'),  
92 - sSfsj=moment(this.etRealExecDate+arr[1], fs).format('X'); 85 + var dfsj=moment(this.etRealExecDate+arr[0], fs).format('X'),
  86 + sfsj=moment(this.etRealExecDate+arr[1], fs).format('X');
93 87
94 - seff=calcPunctuality(sDfsj, sSfsj); 88 + if(calcPunctuality(dfsj, sfsj))
  89 + eff+=25;
95 } 90 }
96 - else  
97 - this.s_isPunctuality=-1; 91 +
98 //末班时间 92 //末班时间
99 - if(this.endTime.length == 11){ 93 + if(this.endTime.length >= 11){
100 var arr=this.endTime.split('/'); 94 var arr=this.endTime.split('/');
101 - var eDfsj=moment(this.etRealExecDate+arr[0], fs).format('X'),  
102 - eSfsj=moment(this.etRealExecDate+arr[1], fs).format('X'); 95 + var dfsj=moment(this.etRealExecDate+arr[0], fs).format('X'),
  96 + sfsj=moment(this.etRealExecDate+arr[1], fs).format('X');
103 97
104 - eeff=calcPunctuality(eDfsj, eSfsj); 98 + if(calcPunctuality(dfsj, sfsj))
  99 + eff+=25;
105 } 100 }
106 - else  
107 - this.e_isPunctuality=-1;  
108 }); 101 });
109 102
110 - line2Reate[lineCode]={  
111 - seff: (seff*100).toFixed(2),  
112 - eeff: (eeff*100).toFixed(2)  
113 - }; 103 + line2Reate[lineCode]={eff: eff};
114 } 104 }
115 105
116 return line2Reate; 106 return line2Reate;
@@ -165,26 +155,17 @@ @@ -165,26 +155,17 @@
165 //lineCode再次分组,计算准点率 155 //lineCode再次分组,计算准点率
166 var line2Reate=calcPunctualityRate(gb_common.groupBy(groupList[date],'lineCode')); 156 var line2Reate=calcPunctualityRate(gb_common.groupBy(groupList[date],'lineCode'));
167 157
168 - sData=[], eData=[]; 158 + sData=[];
169 //subData=[]; 159 //subData=[];
170 $.each(lineCodeArr, function(i, code){ 160 $.each(lineCodeArr, function(i, code){
171 sData.push({ 161 sData.push({
172 - value: line2Reate[code]?line2Reate[code].seff:0,  
173 - date:date,  
174 - lineCode: code  
175 - });  
176 -  
177 - eData.push({  
178 - value: line2Reate[code]?line2Reate[code].eeff:0, 162 + value: line2Reate[code]?line2Reate[code].eff:0,
179 date:date, 163 date:date,
180 lineCode: code 164 lineCode: code
181 }); 165 });
182 }); 166 });
183 167
184 data.push({ 168 data.push({
185 - legend: {  
186 - data: ['首班', '末班']  
187 - },  
188 grid: {x: 30, x2: 5, height: 390, y: 94, y2: 50}, 169 grid: {x: 30, x2: 5, height: 390, y: 94, y2: 50},
189 tooltip: { 170 tooltip: {
190 'trigger': 'axis', 171 'trigger': 'axis',
@@ -206,21 +187,16 @@ @@ -206,21 +187,16 @@
206 }, 187 },
207 title: { 188 title: {
208 text: date + '首末班次准点率', 189 text: date + '首末班次准点率',
209 - subtext: '线路首末班发车数据(快1慢3准点,差值每分钟降10点)' 190 + subtext: '线路上下行首末班,4个班次,每个班次25%(快1慢3准点)'
210 }, 191 },
211 - text: date + '发车率',  
212 series: [{ 192 series: [{
213 - name: '首班', 193 + name: '准点率',
214 type: 'bar', 194 type: 'bar',
215 data: sData 195 data: sData
216 - },  
217 - {  
218 - name: '末班',  
219 - type: 'bar',  
220 - data: eData  
221 - }] 196 + }]
222 }); 197 });
223 } 198 }
  199 + console.log(data);
224 200
225 $('.load-panel', modal).hide(); 201 $('.load-panel', modal).hide();
226 $('#countBtn', modal).removeAttr('disabled'); 202 $('#countBtn', modal).removeAttr('disabled');
src/main/resources/static/real_control_v2/fragments/north/nav/charts/sch_exec_rate.html 0 → 100644
  1 +<div class="uk-modal" id="sch-exec-rate-modal">
  2 + <div class="uk-modal-dialog" style="width: 1200px;">
  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-panel uk-panel-box uk-panel-box-primary" style="margin-bottom: 10px;">
  8 + <form class="uk-form search-form">
  9 + <fieldset data-uk-margin>
  10 + <div class="uk-form-icon">
  11 + <i class="uk-icon-calendar"></i>
  12 + <input type="date" id="dateInput">
  13 + </div>
  14 + <button class="uk-button" id="countBtn">统计</button>
  15 + </fieldset>
  16 + </form>
  17 + </div>
  18 +
  19 + <div class="chart-wrap" style="height: 570px;">
  20 +
  21 + </div>
  22 +
  23 + <div class="load-panel">
  24 + <i class="uk-icon-spinner uk-icon-spin"></i>
  25 + 正在汇总数据
  26 + </div>
  27 + </div>
  28 +
  29 + <script>
  30 + (function () {
  31 +
  32 + var modal = '#sch-exec-rate-modal';
  33 + var chartObj;
  34 +
  35 + var option = {
  36 + color: ['#3398DB'],
  37 + tooltip: {
  38 + trigger: 'axis',
  39 + axisPointer: {
  40 + type: 'shadow'
  41 + }
  42 + },
  43 + grid: {
  44 + left: '3%',
  45 + right: '4%',
  46 + bottom: '3%',
  47 + containLabel: true
  48 + },
  49 + xAxis: [
  50 + {
  51 + type: 'category',
  52 + axisTick: {
  53 + alignWithLabel: true
  54 + }
  55 + }
  56 + ],
  57 + yAxis: [
  58 + {
  59 + type: 'value',
  60 + min: 0,
  61 + max: 100,
  62 + name: '执行率'
  63 + }
  64 + ],
  65 + series: [
  66 + {
  67 + name: '班次执行率',
  68 + type: 'bar',
  69 + barWidth: '60%'
  70 + }
  71 + ]
  72 + };
  73 +
  74 +
  75 + $(modal).on('init', function (e, data) {
  76 + //默认当天
  77 + var m = moment().format('YYYY-MM-DD');
  78 + $('#dateInput', modal).val(m);
  79 +
  80 + chartObj = echarts.init($('.chart-wrap', modal)[0]);
  81 + chartObj.on('click', chartObjClickHandler);
  82 + renderChart();
  83 +
  84 + });
  85 +
  86 +
  87 + $('#countBtn', modal).on('click', function () {
  88 + try {
  89 + renderChart();
  90 + } catch (e) {
  91 + console.log(e);
  92 + }
  93 + return false;
  94 + });
  95 +
  96 + //计算执行率
  97 + function calcSchExecRate(list) {
  98 + if (!list)
  99 + return 0;
  100 + var eff = 0;
  101 + $.each(list, function () {
  102 + if (this.status >= 1)
  103 + eff++;
  104 + });
  105 + return (eff / list.length * 100).toFixed(2);
  106 + }
  107 +
  108 + var renderData;
  109 +
  110 + function renderChart() {
  111 + //xAxis data
  112 + var xAxisData = [], lineCodeArr = [];
  113 + $.each(gb_data_basic.activeLines, function () {
  114 + xAxisData.push(this.name);
  115 + lineCodeArr.push(this.lineCode);
  116 + });
  117 + option.xAxis[0].data = xAxisData;
  118 +
  119 + $.get('/realCharts/scheduleExecRates', {
  120 + idx: gb_data_basic.line_idx,
  121 + date: $('#dateInput', modal).val()
  122 + }, function (rs) {
  123 + //console.log(rs);
  124 + //按线路分组
  125 + var groupData = gb_common.groupBy(rs, 'lineCode');
  126 +
  127 + renderData = groupData;
  128 + var data = [];
  129 +
  130 + for (var i = 0, code; code = lineCodeArr[i++];) {
  131 + //计算执行率
  132 + var eff = calcSchExecRate(groupData[code]);
  133 + data.push({value: eff, lineCode: code});
  134 + }
  135 +
  136 + option.series[0].data = data;
  137 + chartObj.setOption(option);
  138 + });
  139 + }
  140 +
  141 + function chartObjClickHandler(obj) {
  142 + if (obj.componentType != 'series' || obj.componentSubType != 'bar')
  143 + return;
  144 +
  145 + var list = renderData[obj.data.lineCode];
  146 + list = list.filter(function (obj) {
  147 + if(obj.status<1)
  148 + return 1;
  149 + else
  150 + return 0;
  151 + });
  152 +
  153 + $.get('/real_control_v2/fragments/north/nav/charts/sch_exec_rate_detail.html', function (htmlStr) {
  154 + $(document.body).append(htmlStr);
  155 + var detailModal = '#sch-exec-rate-detail-modal';
  156 + var elem = UIkit.modal(detailModal, {bgclose: true, modal: false}).show();
  157 + $(detailModal).trigger('init', {list: list});
  158 + })
  159 + }
  160 + })();
  161 + </script>
  162 +</div>
src/main/resources/static/real_control_v2/fragments/north/nav/charts/sch_exec_rate_detail.html 0 → 100644
  1 +<div class="uk-modal" id="sch-exec-rate-detail-modal">
  2 + <div class="uk-modal-dialog" style="width: 350px;">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div style="margin:5px 0 -18px;">
  5 + <table class="ct-fixed-table uk-table uk-table-hover">
  6 + <thead>
  7 + <tr>
  8 + <th style="width: 40%;">线路</th>
  9 + <th style="width: 30%;">待发</th>
  10 + <th style="width: 30%;">状态</th>
  11 + </tr>
  12 + </thead>
  13 + <tbody>
  14 + </tbody>
  15 + </table>
  16 + </div>
  17 + </div>
  18 +
  19 + <script id="sch-exec-rate-detail-table-temp" type="text/html">
  20 + {{each list as obj i}}
  21 + <tr>
  22 + <td>{{obj.lineName}}</td>
  23 + <td>{{obj.dfsj}}</td>
  24 + <td>
  25 + {{if obj.status==-1}}
  26 + <span style="color: red;">烂班</span>
  27 + {{else if obj.status==1}}
  28 + 正在执行
  29 + {{else if obj.status==2}}
  30 + 已执行
  31 + {{/if}}
  32 + </td>
  33 + </tr>
  34 + {{/each}}
  35 + </script>
  36 +
  37 + <script>
  38 + (function() {
  39 + var modal = '#sch-exec-rate-detail-modal';
  40 +
  41 + $(modal).on('init', function(e, data) {
  42 + var code2Name = gb_data_basic.lineCode2NameAll();
  43 + $.each(data.list, function(){
  44 + this.lineName=code2Name[this.lineCode];
  45 + });
  46 +
  47 + var tbodys=template('sch-exec-rate-detail-table-temp', {list: data.list});
  48 + $('table tbody', modal).html(tbodys);
  49 + });
  50 + })();
  51 + </script>
  52 +</div>
src/main/resources/static/real_control_v2/fragments/north/nav/charts/strat_end_punctuality_rate_dateil.html
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 <tr> 7 <tr>
8 <th style="width: 14%;">日期</th> 8 <th style="width: 14%;">日期</th>
9 <th style="width: 14%;">线路</th> 9 <th style="width: 14%;">线路</th>
10 - <th style="width: 14%;">车辆</th> 10 + <th style="width: 14%;">上下行</th>
11 <th style="width: 23%;">首班</th> 11 <th style="width: 23%;">首班</th>
12 <th style="width: 23%;">末班</th> 12 <th style="width: 23%;">末班</th>
13 </tr> 13 </tr>
@@ -23,7 +23,13 @@ @@ -23,7 +23,13 @@
23 <tr> 23 <tr>
24 <td>{{obj.dateStr}}</td> 24 <td>{{obj.dateStr}}</td>
25 <td>{{obj.lineName}}</td> 25 <td>{{obj.lineName}}</td>
26 - <td>{{obj.nbbm}}</td> 26 + <td>
  27 + {{if obj.updown==0}}
  28 + 上行
  29 + {{else if obj.updown==1}}
  30 + 下行
  31 + {{/if}}
  32 + </td>
27 <td> 33 <td>
28 {{obj.startTime}} 34 {{obj.startTime}}
29 </td> 35 </td>
@@ -44,15 +50,13 @@ @@ -44,15 +50,13 @@
44 var code2Name = gb_data_basic.lineCode2NameAll(); 50 var code2Name = gb_data_basic.lineCode2NameAll();
45 $.each(data.list, function(){ 51 $.each(data.list, function(){
46 this.lineName=code2Name[this.lineCode]; 52 this.lineName=code2Name[this.lineCode];
  53 + if(this.startTime.indexOf('_'))
  54 + this.startTime=this.startTime.split('_')[0];
  55 + if(this.endTime.indexOf('_'))
  56 + this.endTime=this.endTime.split('_')[0];
47 }); 57 });
48 58
49 - /*data.list.sort(function(a, b){  
50 - if(!a.firstOut)  
51 - return -1;  
52 - if(!b.firstOut)  
53 - return 1;  
54 - return a.firstOut.localeCompare(b.firstOut);  
55 - });*/ 59 +
56 60
57 var tbodys=template('s-e-punctuality-rate-dateil-table-temp', {list: data.list}); 61 var tbodys=template('s-e-punctuality-rate-dateil-table-temp', {list: data.list});
58 $('table tbody', modal).html(tbodys); 62 $('table tbody', modal).html(tbodys);
src/main/resources/static/real_control_v2/fragments/north/nav/history_sch_maintain.html
@@ -87,7 +87,12 @@ @@ -87,7 +87,12 @@
87 {{if sch.cTasks.length > 0}} 87 {{if sch.cTasks.length > 0}}
88 <span class="uk-badge uk-badge-notification">{{sch.cTasks.length}}</span> 88 <span class="uk-badge uk-badge-notification">{{sch.cTasks.length}}</span>
89 {{/if}}</dd> 89 {{/if}}</dd>
90 - <dd>{{sch.dfsj}}</dd> 90 + <dd>
  91 + {{sch.dfsj}}
  92 + {{if sch.status==-1}}
  93 + <span class="uk-badge uk-badge-danger">烂班</span>
  94 + {{/if}}
  95 + </dd>
91 <dd>{{sch.fcsjActual}}</dd> 96 <dd>{{sch.fcsjActual}}</dd>
92 <dd>{{sch.zdsjActual}}</dd> 97 <dd>{{sch.zdsjActual}}</dd>
93 <dd title="{{sch.remarks}}">{{sch.remarks}}</dd> 98 <dd title="{{sch.remarks}}">{{sch.remarks}}</dd>
@@ -274,4 +279,4 @@ @@ -274,4 +279,4 @@
274 }); 279 });
275 })(); 280 })();
276 </script> 281 </script>
277 -</div> 282 +</div>
278 \ No newline at end of file 283 \ No newline at end of file
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
@@ -195,7 +195,7 @@ var gb_schedule_table = (function() { @@ -195,7 +195,7 @@ var gb_schedule_table = (function() {
195 }).on('mouseup', function() { 195 }).on('mouseup', function() {
196 drag_strat = null; 196 drag_strat = null;
197 }).on('mouseover', seq_nos, function() { 197 }).on('mouseover', seq_nos, function() {
198 - if (drag_strat) { 198 + if (drag_strat != null) {
199 var e = parseInt($(this).text()), 199 var e = parseInt($(this).text()),
200 dls = $(this).parents('.ct_table_body').find('dl'); 200 dls = $(this).parents('.ct_table_body').find('dl');
201 201
@@ -276,6 +276,8 @@ var gb_schedule_table = (function() { @@ -276,6 +276,8 @@ var gb_schedule_table = (function() {
276 cont.animate({ 276 cont.animate({
277 scrollTop: dl.offset().top - cont.offset().top + cont.scrollTop() - diff 277 scrollTop: dl.offset().top - cont.offset().top + cont.scrollTop() - diff
278 }, 500); 278 }, 500);
  279 +
  280 + return dl;
279 } 281 }
280 282
281 var reset_drag_active_all = function(dd) { 283 var reset_drag_active_all = function(dd) {
@@ -322,6 +324,8 @@ var gb_schedule_table = (function() { @@ -322,6 +324,8 @@ var gb_schedule_table = (function() {
322 insertSchedule: insertSchedule, 324 insertSchedule: insertSchedule,
323 schedule_sort: schedule_sort, 325 schedule_sort: schedule_sort,
324 calc_yfwf_num: calc_yfwf_num, 326 calc_yfwf_num: calc_yfwf_num,
325 - car_yfwf_map: function(lineCode){return car_yfwf_map[lineCode];} 327 + car_yfwf_map: function(lineCode){return car_yfwf_map[lineCode];},
  328 + scroToDl: scroToDl,
  329 + reset_drag_active_all: reset_drag_active_all
326 }; 330 };
327 })(); 331 })();
src/main/resources/static/real_control_v2/js/main.js
  1 +//主调和监控模式
  2 +var operationMode = window.localStorage.getItem('operationMode');
  3 +if(operationMode == 0){
  4 + $('body>.north').addClass('monitor');
  5 + $(document).on('ajaxSend', interceptPOST);
  6 +}
  7 +else
  8 + $('body>.north').addClass('main');
  9 +
  10 +//拦截POST请求
  11 +function interceptPOST(e, xhr, t){
  12 + if(t && (t.method == 'POST' || t.type == 'POST')){
  13 + console.log(e, xhr, t);
  14 + xhr.abort();
  15 + notify_err('监控模式!');
  16 + }
  17 +}
  18 +
1 /* main js */ 19 /* main js */
2 var gb_main_ep = new EventProxy(), 20 var gb_main_ep = new EventProxy(),
3 res_load_ep = EventProxy.create('load_data_basic', 'load_tab', 'load_home_layout', 'load_home_line_panel', function() { 21 res_load_ep = EventProxy.create('load_data_basic', 'load_tab', 'load_home_layout', 'load_home_line_panel', function() {
@@ -159,4 +177,4 @@ var open_modal = function(pageUrl, data, opt) { @@ -159,4 +177,4 @@ var open_modal = function(pageUrl, data, opt) {
159 if (data) 177 if (data)
160 $(id).trigger('init', data); 178 $(id).trigger('init', data);
161 }); 179 });
162 -} 180 +};
src/main/resources/static/real_control_v2/js/north/toolbar.js
@@ -65,6 +65,9 @@ var gb_northToolbar = (function() { @@ -65,6 +65,9 @@ var gb_northToolbar = (function() {
65 }, 65 },
66 history_sch_maintain: function () { 66 history_sch_maintain: function () {
67 open_modal('/real_control_v2/fragments/north/nav/history_sch_maintain.html', {}, {center: false,bgclose: false}); 67 open_modal('/real_control_v2/fragments/north/nav/history_sch_maintain.html', {}, {center: false,bgclose: false});
  68 + },
  69 + sch_exec_rate: function () {
  70 + open_modal('/real_control_v2/fragments/north/nav/charts/sch_exec_rate.html', {}, modal_opts);
68 } 71 }
69 } 72 }
70 })(); 73 })();
src/main/resources/static/real_control_v2/js/websocket/sch_websocket.js
@@ -33,10 +33,9 @@ var gb_sch_websocket = (function () { @@ -33,10 +33,9 @@ var gb_sch_websocket = (function () {
33 33
34 //断开 34 //断开
35 schSock.onclose = function (e) { 35 schSock.onclose = function (e) {
36 - alert('和服务器连接断开....');  
37 - console.log('和服务器连接断开....');  
38 - regListen();  
39 - 36 + //alert('和服务器连接断开, code:' + e.code);
  37 + console.log('和服务器连接断开....', e);
  38 + $('body>.north').addClass('scok-colse');
40 }; 39 };
41 40
42 41
@@ -175,7 +174,13 @@ var gb_sch_websocket = (function () { @@ -175,7 +174,13 @@ var gb_sch_websocket = (function () {
175 174
176 //42消息点击 175 //42消息点击
177 $(document).on('click', '.sys-mailbox .sys-note-42', function () { 176 $(document).on('click', '.sys-mailbox .sys-note-42', function () {
178 - alert($(this).data('id')); 177 + var lineCode=$(this).parents('li.line_schedule').data('id')
  178 + ,id=$(this).data('id');
  179 + var sch = gb_schedule_table.findScheduleByLine(lineCode)[id];
  180 + var dl = gb_schedule_table.scroToDl(sch);
  181 + //高亮
  182 + gb_schedule_table.reset_drag_active_all(dl);
  183 + dl.addClass('relevance-active intimity');
179 }); 184 });
180 185
181 //80同意 186 //80同意
src/test/java/com/bsth/service/schedule/rules/DroolsRulesTest.java
@@ -58,7 +58,7 @@ public class DroolsRulesTest { @@ -58,7 +58,7 @@ public class DroolsRulesTest {
58 session.dispose(); 58 session.dispose();
59 } 59 }
60 60
61 - @Test 61 +// @Test
62 public void ttinfoDrlTest() throws Exception { 62 public void ttinfoDrlTest() throws Exception {
63 logger.info("------------ttinfoDrlTest 测试---------------"); 63 logger.info("------------ttinfoDrlTest 测试---------------");
64 64
@@ -133,7 +133,7 @@ public class DroolsRulesTest { @@ -133,7 +133,7 @@ public class DroolsRulesTest {
133 133
134 } 134 }
135 135
136 -// @Test 136 + @Test
137 public void shiftloopDrlTest() throws Exception { 137 public void shiftloopDrlTest() throws Exception {
138 // 1、创建session,内部配置的是stateful 138 // 1、创建session,内部配置的是stateful
139 KieSession session = kieBase.newKieSession(); 139 KieSession session = kieBase.newKieSession();