Commit f7875d7c5926232c2863db2ec4c974f50c0533dc

Authored by 徐烜
1 parent 9f6fce8d

update

Showing 33 changed files with 788 additions and 364 deletions
src/main/java/com/bsth/controller/schedule/SchedulePlanController.java
... ... @@ -2,6 +2,8 @@ package com.bsth.controller.schedule;
2 2  
3 3 import com.bsth.controller.BaseController;
4 4 import com.bsth.entity.schedule.SchedulePlan;
  5 +import com.bsth.service.schedule.SchedulePlanService;
  6 +import org.springframework.beans.factory.annotation.Autowired;
5 7 import org.springframework.web.bind.annotation.RequestBody;
6 8 import org.springframework.web.bind.annotation.RequestMapping;
7 9 import org.springframework.web.bind.annotation.RequestMethod;
... ... @@ -15,6 +17,8 @@ import java.util.Map;
15 17 @RestController
16 18 @RequestMapping("spc")
17 19 public class SchedulePlanController extends BaseController<SchedulePlan, Long> {
  20 + @Autowired
  21 + private SchedulePlanService schedulePlanService;
18 22  
19 23 /**
20 24 * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
... ... @@ -31,4 +35,5 @@ public class SchedulePlanController extends BaseController&lt;SchedulePlan, Long&gt; {
31 35 return baseService.save(t);
32 36 }
33 37  
  38 +
34 39 }
... ...
src/main/java/com/bsth/controller/schedule/SchedulePlanInfoController.java
... ... @@ -11,4 +11,5 @@ import org.springframework.web.bind.annotation.RestController;
11 11 @RestController
12 12 @RequestMapping("spic")
13 13 public class SchedulePlanInfoController extends BaseController<SchedulePlanInfo, Long> {
  14 +
14 15 }
... ...
src/main/java/com/bsth/controller/schedule/ScheduleRule1FlatController.java
... ... @@ -4,7 +4,7 @@ import com.bsth.controller.BaseController;
4 4 import com.bsth.entity.schedule.EmployeeConfigInfo;
5 5 import com.bsth.entity.schedule.GuideboardInfo;
6 6 import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
7   -import com.bsth.repository.ScheduleRule1FlatRepository;
  7 +import com.bsth.repository.schedule.ScheduleRule1FlatRepository;
8 8 import com.bsth.service.schedule.EmployeeConfigInfoService;
9 9 import com.bsth.service.schedule.GuideboardInfoService;
10 10 import org.apache.commons.lang3.StringUtils;
... ... @@ -71,7 +71,7 @@ public class ScheduleRule1FlatController extends BaseController&lt;ScheduleRule1Fla
71 71 Iterable<EmployeeConfigInfo> employeeConfigInfos = employeeConfigInfoService.list(param2);
72 72 ryIds[j] = employeeConfigInfos.iterator().next().getId().toString();
73 73 }
74   - t.setRyIds(StringUtils.join(ryIds, ","));
  74 + t.setRyConfigIds(StringUtils.join(ryIds, ","));
75 75  
76 76 return baseService.save(t);
77 77 }
... ...
src/main/java/com/bsth/entity/schedule/SchedulePlan.java
... ... @@ -3,8 +3,10 @@ package com.bsth.entity.schedule;
3 3 import com.bsth.entity.Line;
4 4 import com.bsth.entity.schedule.rule.ScheduleRule1;
5 5 import com.bsth.entity.sys.SysUser;
  6 +import com.fasterxml.jackson.annotation.JsonIgnore;
6 7  
7 8 import javax.persistence.*;
  9 +import java.util.ArrayList;
8 10 import java.util.Date;
9 11 import java.util.List;
10 12  
... ... @@ -43,14 +45,10 @@ public class SchedulePlan {
43 45 @Column(nullable = false)
44 46 private Date scheduleToTime;
45 47  
  48 + @JsonIgnore
46 49 /** 使用中间表的一对多关联 明细信息 */
47   - @OneToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
48   - @JoinTable(
49   - name = "bsth_c_s_sp_r_info",
50   - joinColumns = @JoinColumn(name = "sp_id"),
51   - inverseJoinColumns = @JoinColumn(name = "sp_info_id")
52   - )
53   - private List<SchedulePlanInfo> schedulePlanInfoList;
  50 + @OneToMany(mappedBy = "schedulePlan", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
  51 + private List<SchedulePlanInfo> schedulePlanInfoList = new ArrayList<>();
54 52  
55 53 /** 创建人 */
56 54 @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
... ...
src/main/java/com/bsth/entity/schedule/SchedulePlanInfo.java
1 1 package com.bsth.entity.schedule;
2 2  
  3 +import com.bsth.entity.Line;
3 4 import com.bsth.entity.sys.SysUser;
  5 +import com.bsth.service.schedule.rules.shiftloop.ScheduleResult_output;
4 6  
5 7 import javax.persistence.*;
6 8 import java.util.Date;
... ... @@ -63,7 +65,7 @@ public class SchedulePlanInfo {
63 65 private String bdTime;
64 66 /** 出场时间(格式 HH:mm) */
65 67 private String ccTime;
66   - /** 关联 bsth_c_personnel 主键,不做mapping */
  68 + /** 关联的驾驶员 bsth_c_personnel 主键,不做mapping */
67 69 @Column(nullable = false)
68 70 private Integer j;
69 71 /** 驾驶员工号 */
... ... @@ -72,6 +74,8 @@ public class SchedulePlanInfo {
72 74 /** 驾驶员名字 */
73 75 @Column(nullable = false)
74 76 private String jName;
  77 + /** 关联的售票员 bsth_c_personnel 主键,不做mapping */
  78 + private Integer s;
75 79 /** 售票员工号 */
76 80 private String sGh;
77 81 /** 售票员名字 */
... ... @@ -112,11 +116,7 @@ public class SchedulePlanInfo {
112 116 /** 班次历时 */
113 117 private Integer bcsj;
114 118  
115   - /**
116   - * 班次类型
117   - * TODO:正常班次、出场、进场、加油、临加班次、区间班次、放空班次、放大站班次、两点间空驶
118   - * TODO:这个以后用枚举还是字典再议,现在先用文字
119   - */
  119 + /** 班次类型 字典type=ScheduleType */
120 120 @Column(nullable = false)
121 121 private String bcType;
122 122  
... ... @@ -133,6 +133,98 @@ public class SchedulePlanInfo {
133 133 @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
134 134 private Date updateDate;
135 135  
  136 +
  137 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  138 + @JoinTable(
  139 + name = "bsth_c_s_sp_r_info",
  140 + joinColumns = @JoinColumn(name = "sp_info_id"),
  141 + inverseJoinColumns = @JoinColumn(name = "sp_id")
  142 + )
  143 + private SchedulePlan schedulePlan;
  144 +
  145 + public SchedulePlanInfo() {}
  146 +
  147 + public SchedulePlanInfo(
  148 + Line xl,
  149 + ScheduleResult_output scheduleResult_output,
  150 + TTInfoDetail ttInfoDetail,
  151 + CarConfigInfo carConfigInfo,
  152 + EmployeeConfigInfo employeeConfigInfo,
  153 + SchedulePlan schedulePlan) {
  154 +
  155 + this.schedulePlan = schedulePlan;
  156 +
  157 + // 排班计划时间
  158 + this.scheduleDate = scheduleResult_output.getSd().toDate();
  159 +
  160 + // 关联的线路信息
  161 + this.xl = xl.getId(); // 线路id
  162 + this.xlBm = xl.getLineCode(); // 线路编码
  163 + this.xlName = xl.getName(); // 线路名称
  164 +
  165 + // 关联的路牌
  166 + this.lp = ttInfoDetail.getLp().getId();
  167 + this.lpName = ttInfoDetail.getLp().getLpName();
  168 +
  169 + // 关联的车辆信息
  170 + this.cl = carConfigInfo.getCl().getId(); // 车辆id
  171 + this.clZbh = carConfigInfo.getCl().getInsideCode(); // 自编号/内部编号
  172 +
  173 + // TODO:报道时间,出场时间没有
  174 + // 关联的驾驶员
  175 + this.j = employeeConfigInfo.getJsy().getId();
  176 + this.jGh = employeeConfigInfo.getJsy().getJobCode();
  177 + this.jName = employeeConfigInfo.getJsy().getPersonnelName();
  178 + // 关联的售票员
  179 + this.s = employeeConfigInfo.getSpy().getId();
  180 + this.sGh = employeeConfigInfo.getSpy().getJobCode();
  181 + this.sName = employeeConfigInfo.getSpy().getPersonnelName();
  182 +
  183 + // 时刻明细数据
  184 + this.xlDir = ttInfoDetail.getXlDir(); // 线路上下行
  185 + this.bcType = ttInfoDetail.getBcType(); // 班次类型
  186 + if ("out".equals(this.bcType)) { // 出场班次
  187 + this.qdz = ttInfoDetail.getTcc().getId(); // 起点站-停车场id
  188 + this.qdzCode = ttInfoDetail.getTcc().getParkCode(); // 起点站-停车场code
  189 + this.qdzName = ttInfoDetail.getTcc().getParkName(); // 起点站-停车场name
  190 + this.zdz = ttInfoDetail.getZdz().getId(); // 终点站id
  191 + this.zdzCode = ttInfoDetail.getZdz().getStationCod(); // 终点站code
  192 + this.zdzName = ttInfoDetail.getZdz().getStationName(); // 终点站name
  193 + } else if ("in".equals(this.bcType)) { // 进场班次
  194 + this.qdz = ttInfoDetail.getQdz().getId(); // 起点站id
  195 + this.qdzCode = ttInfoDetail.getQdz().getStationCod(); // 起点站code
  196 + this.qdzName = ttInfoDetail.getQdz().getStationName(); // 起点站name
  197 + this.zdz = ttInfoDetail.getTcc().getId(); // 终点站-停车场id
  198 + this.zdzCode = ttInfoDetail.getTcc().getParkCode(); // 终点站-停车场code
  199 + this.zdzName = ttInfoDetail.getTcc().getParkName(); // 终点站-停车场name
  200 + } else if ("normal".equals(this.bcType)) { // 正常班次
  201 + this.qdz = ttInfoDetail.getQdz().getId(); // 起点站id
  202 + this.qdzCode = ttInfoDetail.getQdz().getStationCod(); // 起点站code
  203 + this.qdzName = ttInfoDetail.getQdz().getStationName(); // 起点站name
  204 + this.zdz = ttInfoDetail.getZdz().getId(); // 终点站id
  205 + this.zdzCode = ttInfoDetail.getZdz().getStationCod(); // 终点站code
  206 + this.zdzName = ttInfoDetail.getZdz().getStationName(); // 终点站name
  207 + } else {
  208 + throw new RuntimeException("排班计划数据,未知班次类型:" + this.bcType);
  209 + }
  210 +
  211 + this.fcsj = ttInfoDetail.getFcsj(); // 发车时间
  212 + this.fcno = ttInfoDetail.getFcno(); // 发车顺序号
  213 + this.bcs = ttInfoDetail.getBcs(); // 班次数
  214 + this.jhlc = ttInfoDetail.getJhlc(); // 计划里程
  215 + this.bcsj = ttInfoDetail.getBcsj(); // 班次时间
  216 +
  217 + }
  218 +
  219 +
  220 + public Integer getS() {
  221 + return s;
  222 + }
  223 +
  224 + public void setS(Integer s) {
  225 + this.s = s;
  226 + }
  227 +
136 228 public Long getId() {
137 229 return id;
138 230 }
... ... @@ -436,4 +528,12 @@ public class SchedulePlanInfo {
436 528 public void setCcno(Integer ccno) {
437 529 this.ccno = ccno;
438 530 }
  531 +
  532 + public SchedulePlan getSchedulePlan() {
  533 + return schedulePlan;
  534 + }
  535 +
  536 + public void setSchedulePlan(SchedulePlan schedulePlan) {
  537 + this.schedulePlan = schedulePlan;
  538 + }
439 539 }
... ...
src/main/java/com/bsth/entity/schedule/TTInfo.java
... ... @@ -40,6 +40,9 @@ public class TTInfo {
40 40 private String templateType;
41 41 /** 是否启用调度模版 */
42 42 private Boolean isEnableDisTemplate;
  43 +
  44 + // TODO:还有很多判定条件,这里先不放
  45 +
43 46 /** 路牌数 */
44 47 private int lpCount;
45 48 /** 圈数 */
... ... @@ -199,4 +202,5 @@ public class TTInfo {
199 202 public void setUpdateDate(Date updateDate) {
200 203 this.updateDate = updateDate;
201 204 }
  205 +
202 206 }
... ...
src/main/java/com/bsth/entity/schedule/TTInfoDetail.java
... ... @@ -13,6 +13,15 @@ import java.util.Date;
13 13 */
14 14 @Entity
15 15 @Table(name = "bsth_c_s_ttinfo_detail")
  16 +@NamedEntityGraphs({
  17 + @NamedEntityGraph(name = "tTInfoDetail_xl_lp_qdz_zdz_tcc", attributeNodes = {
  18 + @NamedAttributeNode("xl"),
  19 + @NamedAttributeNode("lp"),
  20 + @NamedAttributeNode("qdz"),
  21 + @NamedAttributeNode("zdz"),
  22 + @NamedAttributeNode("tcc")
  23 + })
  24 +})
16 25 public class TTInfoDetail {
17 26  
18 27 /** 主健Id */
... ... @@ -22,13 +31,13 @@ public class TTInfoDetail {
22 31  
23 32  
24 33 /** 关联线路 */
25   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  34 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
26 35 private Line xl;
27 36 /** 时刻表主对象关联 */
28   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  37 + @ManyToOne(optional = false, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
29 38 private TTInfo ttinfo;
30 39 /** 关联的路牌 */
31   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  40 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
32 41 private GuideboardInfo lp;
33 42  
34 43 /** 发车顺序号 */
... ... @@ -38,13 +47,13 @@ public class TTInfoDetail {
38 47 @Column(nullable = false)
39 48 private String xlDir;
40 49 /** 起点站关联 */
41   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  50 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
42 51 private Station qdz;
43 52 /** 终点站关联 */
44   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  53 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
45 54 private Station zdz;
46 55 /** 停车场关联(出场,进场班次会关联停车场) */
47   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  56 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
48 57 private CarPark tcc;
49 58  
50 59 /** 发车时间(格式 HH:mm) */
... ... @@ -58,11 +67,7 @@ public class TTInfoDetail {
58 67 /** 班次历时 */
59 68 private Integer bcsj;
60 69  
61   - /**
62   - * 班次类型
63   - * TODO:正常班次、出场、进场、加油、临加班次、区间班次、放空班次、放大站班次、两点间空驶
64   - * TODO:这个以后用枚举还是字典再议,现在先用文字
65   - */
  70 + /** 班次类型 字典type=ScheduleType */
66 71 @Column(nullable = false)
67 72 private String bcType;
68 73  
... ...
src/main/java/com/bsth/entity/schedule/rule/ScheduleRule1Flat.java
1 1 package com.bsth.entity.schedule.rule;
2 2  
3   -import com.bsth.entity.Cars;
4 3 import com.bsth.entity.Line;
  4 +import com.bsth.entity.schedule.CarConfigInfo;
5 5 import com.bsth.entity.sys.SysUser;
6 6  
7 7 import javax.persistence.*;
... ... @@ -18,10 +18,22 @@ import java.util.Date;
18 18 @Entity
19 19 @Table(name = "bsth_c_s_sr1_flat")
20 20 @NamedEntityGraphs({
21   - @NamedEntityGraph(name = "scheduleRule1Flat_xl_cl", attributeNodes = {
  21 + @NamedEntityGraph(
  22 + name = "scheduleRule1Flat_xl_carconfig",
  23 + attributeNodes = {
22 24 @NamedAttributeNode("xl"),
23   - @NamedAttributeNode("cl")
24   - })
  25 + @NamedAttributeNode(value = "carConfigInfo", subgraph = "carConfigInfo_cl")
  26 + },
  27 + subgraphs = {
  28 + @NamedSubgraph(
  29 + name = "carConfigInfo_cl",
  30 + attributeNodes = {
  31 + @NamedAttributeNode("cl")
  32 + }
  33 + )
  34 + }
  35 +
  36 + )
25 37 })
26 38 public class ScheduleRule1Flat {
27 39 /** 主键Id */
... ... @@ -32,9 +44,10 @@ public class ScheduleRule1Flat {
32 44 /** 关联线路 */
33 45 @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
34 46 private Line xl;
35   - /** 关联车辆 */
  47 + /** 关联车辆配置id */
36 48 @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
37   - private Cars cl;
  49 + private CarConfigInfo carConfigInfo;
  50 +
38 51 /** 启用日期 */
39 52 @NotNull
40 53 private Date qyrq;
... ... @@ -53,7 +66,7 @@ public class ScheduleRule1Flat {
53 66 private String ryDbbms;
54 67 /** 对应的人员配置ids(用逗号隔开) */
55 68 @NotNull
56   - private String ryIds;
  69 + private String ryConfigIds;
57 70 /** 起始人员(从0开始) */
58 71 @NotNull
59 72 private Integer ryStart;
... ... @@ -90,12 +103,12 @@ public class ScheduleRule1Flat {
90 103 this.xl = xl;
91 104 }
92 105  
93   - public Cars getCl() {
94   - return cl;
  106 + public CarConfigInfo getCarConfigInfo() {
  107 + return carConfigInfo;
95 108 }
96 109  
97   - public void setCl(Cars cl) {
98   - this.cl = cl;
  110 + public void setCarConfigInfo(CarConfigInfo carConfigInfo) {
  111 + this.carConfigInfo = carConfigInfo;
99 112 }
100 113  
101 114 public Date getQyrq() {
... ... @@ -138,12 +151,12 @@ public class ScheduleRule1Flat {
138 151 this.ryDbbms = ryDbbms;
139 152 }
140 153  
141   - public String getRyIds() {
142   - return ryIds;
  154 + public String getRyConfigIds() {
  155 + return ryConfigIds;
143 156 }
144 157  
145   - public void setRyIds(String ryIds) {
146   - this.ryIds = ryIds;
  158 + public void setRyConfigIds(String ryConfigIds) {
  159 + this.ryConfigIds = ryConfigIds;
147 160 }
148 161  
149 162 public Integer getRyStart() {
... ...
src/main/java/com/bsth/repository/schedule/CarConfigInfoRepository.java
... ... @@ -21,7 +21,11 @@ public interface CarConfigInfoRepository extends BaseRepository&lt;CarConfigInfo, L
21 21 @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
22 22 @Override
23 23 Page<CarConfigInfo> findAll(Specification<CarConfigInfo> spec, Pageable pageable);
24   -
  24 +
  25 + @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  26 + @Override
  27 + List<CarConfigInfo> findAll(Specification<CarConfigInfo> spec);
  28 +
25 29 @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
26 30 @Override
27 31 List<CarConfigInfo> findAll();
... ...
src/main/java/com/bsth/repository/schedule/EmployeeConfigInfoRepository.java
... ... @@ -28,6 +28,10 @@ public interface EmployeeConfigInfoRepository extends BaseRepository&lt;EmployeeCon
28 28 Page<EmployeeConfigInfo> findAll(Specification<EmployeeConfigInfo> spec, Pageable pageable);
29 29  
30 30 @EntityGraph(value = "employeeConfigInfo_jsy_spy_xl", type = EntityGraph.EntityGraphType.FETCH)
  31 + @Override
  32 + List<EmployeeConfigInfo> findAll(Specification<EmployeeConfigInfo> spec);
  33 +
  34 + @EntityGraph(value = "employeeConfigInfo_jsy_spy_xl", type = EntityGraph.EntityGraphType.FETCH)
31 35 @Query("select cc from EmployeeConfigInfo cc where cc.id=?1")
32 36 EmployeeConfigInfo findOneExtend(Long aLong);
33 37 }
... ...
src/main/java/com/bsth/repository/schedule/SchedulePlanInfoRepository.java
... ... @@ -5,6 +5,9 @@ import com.bsth.repository.BaseRepository;
5 5  
6 6 import java.util.List;
7 7  
  8 +import org.springframework.data.domain.Page;
  9 +import org.springframework.data.domain.Pageable;
  10 +import org.springframework.data.jpa.domain.Specification;
8 11 import org.springframework.data.jpa.repository.Query;
9 12 import org.springframework.stereotype.Repository;
10 13  
... ... @@ -16,4 +19,5 @@ public interface SchedulePlanInfoRepository extends BaseRepository&lt;SchedulePlanI
16 19  
17 20 @Query(value = "select * from bsth_c_s_sp_info where DATE_FORMAT(schedule_date, '%Y-%m-%d')=?1", nativeQuery = true)
18 21 List<SchedulePlanInfo> findByDate(String dateformat);
  22 +
19 23 }
... ...
src/main/java/com/bsth/repository/schedule/SchedulePlanRepository.java
... ... @@ -16,4 +16,5 @@ public interface SchedulePlanRepository extends BaseRepository&lt;SchedulePlan, Lon
16 16 @EntityGraph(value = "schedulePlan_xl_ttinfo", type = EntityGraph.EntityGraphType.FETCH)
17 17 @Override
18 18 Page<SchedulePlan> findAll(Specification<SchedulePlan> spec, Pageable pageable);
  19 +
19 20 }
... ...
src/main/java/com/bsth/repository/ScheduleRule1FlatRepository.java renamed to src/main/java/com/bsth/repository/schedule/ScheduleRule1FlatRepository.java
1   -package com.bsth.repository;
  1 +package com.bsth.repository.schedule;
2 2  
3 3 import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  4 +import com.bsth.repository.BaseRepository;
4 5 import org.springframework.data.domain.Page;
5 6 import org.springframework.data.domain.Pageable;
6 7 import org.springframework.data.jpa.domain.Specification;
... ... @@ -14,11 +15,11 @@ import org.springframework.stereotype.Repository;
14 15 @Repository
15 16 public interface ScheduleRule1FlatRepository extends BaseRepository<ScheduleRule1Flat, Long> {
16 17  
17   - @EntityGraph(value = "scheduleRule1Flat_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  18 + @EntityGraph(value = "scheduleRule1Flat_xl_carconfig", type = EntityGraph.EntityGraphType.FETCH)
18 19 @Override
19 20 Page<ScheduleRule1Flat> findAll(Specification<ScheduleRule1Flat> spec, Pageable pageable);
20 21  
21   - @EntityGraph(value = "scheduleRule1Flat_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  22 + @EntityGraph(value = "scheduleRule1Flat_xl_carconfig", type = EntityGraph.EntityGraphType.FETCH)
22 23 @Query("select cc from ScheduleRule1Flat cc where cc.id=?1")
23 24 ScheduleRule1Flat findOneExtend(Long aLong);
24 25 }
... ...
src/main/java/com/bsth/repository/schedule/TTInfoDetailRepository.java
... ... @@ -2,11 +2,25 @@ package com.bsth.repository.schedule;
2 2  
3 3 import com.bsth.entity.schedule.TTInfoDetail;
4 4 import com.bsth.repository.BaseRepository;
  5 +import org.springframework.data.domain.Page;
  6 +import org.springframework.data.domain.Pageable;
  7 +import org.springframework.data.jpa.domain.Specification;
  8 +import org.springframework.data.jpa.repository.EntityGraph;
5 9 import org.springframework.stereotype.Repository;
6 10  
  11 +import java.util.List;
  12 +
7 13 /**
8 14 * Created by xu on 16/7/2.
9 15 */
10 16 @Repository
11 17 public interface TTInfoDetailRepository extends BaseRepository<TTInfoDetail, Long> {
  18 +
  19 + @EntityGraph(value = "tTInfoDetail_xl_lp_qdz_zdz_tcc", type = EntityGraph.EntityGraphType.FETCH)
  20 + @Override
  21 + Page<TTInfoDetail> findAll(Specification<TTInfoDetail> spec, Pageable pageable);
  22 +
  23 + @EntityGraph(value = "tTInfoDetail_xl_lp_qdz_zdz_tcc", type = EntityGraph.EntityGraphType.FETCH)
  24 + @Override
  25 + List<TTInfoDetail> findAll(Specification<TTInfoDetail> spec);
12 26 }
... ...
src/main/java/com/bsth/service/schedule/SchedulePlanServiceImpl.java
1 1 package com.bsth.service.schedule;
2 2  
3   -import com.bsth.entity.schedule.SchedulePlan;
  3 +import com.bsth.entity.Line;
  4 +import com.bsth.entity.schedule.*;
4 5 import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  6 +import com.bsth.repository.schedule.SchedulePlanRepository;
  7 +import com.bsth.service.LineService;
5 8 import com.bsth.service.impl.BaseServiceImpl;
6 9 import com.bsth.service.schedule.rules.shiftloop.ScheduleCalcuParam_input;
  10 +import com.bsth.service.schedule.rules.shiftloop.ScheduleResult_output;
7 11 import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output;
8 12 import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_input;
  13 +import com.bsth.service.schedule.rules.strategy.IStrategy;
  14 +import com.google.common.collect.Multimap;
9 15 import org.kie.api.KieBase;
10 16 import org.kie.api.runtime.KieSession;
11 17 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -25,6 +31,12 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt;
25 31 private KieBase kieBase;
26 32 @Autowired
27 33 private ScheduleRule1FlatService scheduleRule1FlatService;
  34 + @Autowired
  35 + private LineService lineService;
  36 + @Autowired
  37 + private IStrategy strategy;
  38 + @Autowired
  39 + private SchedulePlanRepository schedulePlanRepository;
28 40  
29 41 @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
30 42 @Override
... ... @@ -33,11 +45,14 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt;
33 45 Map<String, Object> param = new HashMap<>();
34 46  
35 47 // 1、查出指定线路的所有规则
  48 + Line xl = lineService.findById(schedulePlan.getXl().getId()); // 查找线路具体信息
36 49 param.clear();
37   - param.put("xl.id_eq", schedulePlan.getXl().getId());
  50 + param.put("xl.id_eq", xl.getId());
38 51 Iterable<ScheduleRule1Flat> scheduleRule1FlatIterable = scheduleRule1FlatService.list(param);
39 52 if (!scheduleRule1FlatIterable.iterator().hasNext())
40   - throw new RuntimeException("线路:" + schedulePlan.getXl().getName() + " 没有配置规则!");
  53 + throw new RuntimeException("线路:" + xl.getName() + " 没有配置规则!");
  54 + TTInfo ttInfo = strategy.getTTInfo(xl.getId()); // 时刻表id
  55 + schedulePlan.setTtInfo(ttInfo); // 关联的时刻表
41 56  
42 57 // 2-1、构造drools规则输入数据,输出数据
43 58 // 全局计算参数
... ... @@ -69,13 +84,39 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl&lt;SchedulePlan, Long&gt;
69 84 // 执行完毕销毁,有日志的也要关闭
70 85 session.dispose();
71 86  
72   -
73   - // TODO:
74   -
75 87 System.out.println(scheduleResults_output.showGuideboardDesc1());
76 88  
77   - return null;
  89 + // 3、根据规则返回,组合最后的输出数据
  90 + // 3-1、根据注入的策略服务,获取原始数据
  91 + Multimap<Long, TTInfoDetail> gbdTTinfoMaps = strategy.getGuideboardXlTTInfoDetailMaps(xl.getId()); // 路牌对应时刻明细
  92 + Map<Long, CarConfigInfo> carConfigMaps = strategy.getCarConfigMaps(xl.getId()); // 车辆配置对应车辆信息
  93 + Map<Long, EmployeeConfigInfo> employeeConfigMaps = strategy.getEmployeeConfigMaps(xl.getId()); // 人员配置对应的人员信息
78 94  
79   -// return super.save(schedulePlan);
  95 + // 3-2、循环规则输出
  96 + List<SchedulePlanInfo> schedulePlanInfos = new ArrayList<>();
  97 + for (ScheduleResult_output scheduleResult_output : scheduleResults_output.getResults()) {
  98 + // 车辆配置对应的车辆
  99 + CarConfigInfo configInfo = carConfigMaps.get(scheduleResult_output.getCarConfigId());
  100 + // 人员配置对应的人员
  101 + EmployeeConfigInfo employeeConfigInfo = employeeConfigMaps.get(scheduleResult_output.getEmployeeConfigId());
  102 + // 排班明细(这个要迭代的)
  103 + Collection<TTInfoDetail> ttInfoDetails = gbdTTinfoMaps.get(scheduleResult_output.getGuideboardId());
  104 + for (TTInfoDetail ttInfoDetail : ttInfoDetails) {
  105 + SchedulePlanInfo schedulePlanInfo = new SchedulePlanInfo(
  106 + xl,
  107 + scheduleResult_output,
  108 + ttInfoDetail,
  109 + configInfo,
  110 + employeeConfigInfo,
  111 + schedulePlan);
  112 + schedulePlanInfos.add(schedulePlanInfo);
  113 + }
  114 + }
  115 +
  116 + // 3-2、保存生成的排班和明细
  117 + schedulePlan.getSchedulePlanInfoList().addAll(schedulePlanInfos); // 关联的排班明细信息
  118 + return super.save(schedulePlan);
80 119 }
  120 +
  121 +
81 122 }
... ...
src/main/java/com/bsth/service/schedule/rules/shiftloop/ScheduleRule_input.java
... ... @@ -41,12 +41,12 @@ public class ScheduleRule_input {
41 41 this.guideboardIds.add(Long.parseLong(lpId));
42 42 }
43 43 this.startGbdIndex = scheduleRule1Flat.getLpStart();
44   - List<String> ryCids = Splitter.on(",").splitToList(scheduleRule1Flat.getRyIds());
  44 + List<String> ryCids = Splitter.on(",").splitToList(scheduleRule1Flat.getRyConfigIds());
45 45 for (String ryCid : ryCids) {
46 46 this.employeeConfigIds.add(Long.parseLong(ryCid));
47 47 }
48 48 this.startEIndex = scheduleRule1Flat.getRyStart();
49   - this.carConfigId = new Long(scheduleRule1Flat.getCl().getId());
  49 + this.carConfigId = scheduleRule1Flat.getCarConfigInfo().getId();
50 50 }
51 51  
52 52  
... ...
src/main/java/com/bsth/service/schedule/rules/strategy/IStrategy.java 0 → 100644
  1 +package com.bsth.service.schedule.rules.strategy;
  2 +
  3 +import com.bsth.entity.schedule.CarConfigInfo;
  4 +import com.bsth.entity.schedule.EmployeeConfigInfo;
  5 +import com.bsth.entity.schedule.TTInfo;
  6 +import com.bsth.entity.schedule.TTInfoDetail;
  7 +import com.google.common.collect.Multimap;
  8 +
  9 +import java.util.Map;
  10 +
  11 +/**
  12 + * 获取数据的策略。
  13 + */
  14 +public interface IStrategy {
  15 +
  16 + /**
  17 + * 查找指定线路下,可用的时刻表;
  18 + * @param xlId 线路id
  19 + * @return 时刻表
  20 + */
  21 + TTInfo getTTInfo(Integer xlId);
  22 +
  23 + /**
  24 + * 查找指定线路下,路牌与时刻明细对应的Map。
  25 + * @param xlId 线路id
  26 + * @return 路牌id为key,时刻明细 Collection<TTInfoDetail> 为value
  27 + */
  28 + Multimap<Long, TTInfoDetail> getGuideboardXlTTInfoDetailMaps(Integer xlId);
  29 +
  30 + /**
  31 + * 查找指定线路下,车辆配置与车辆信息对应的Map。
  32 + * @param xlId 线路id
  33 + * @return 车辆配置id为key,具体车辆配置信息为value。
  34 + */
  35 + Map<Long, CarConfigInfo> getCarConfigMaps(Integer xlId);
  36 +
  37 + /**
  38 + * 查找指定线路下,人员配置与人员对应的Map。
  39 + * @param xlId 线路id
  40 + * @return 人员配置id为key,具体人员配置信息为value。
  41 + */
  42 + Map<Long, EmployeeConfigInfo> getEmployeeConfigMaps(Integer xlId);
  43 +}
... ...
src/main/java/com/bsth/service/schedule/rules/strategy/IStrategyImpl.java 0 → 100644
  1 +package com.bsth.service.schedule.rules.strategy;
  2 +
  3 +import com.bsth.entity.schedule.CarConfigInfo;
  4 +import com.bsth.entity.schedule.EmployeeConfigInfo;
  5 +import com.bsth.entity.schedule.TTInfo;
  6 +import com.bsth.entity.schedule.TTInfoDetail;
  7 +import com.bsth.service.schedule.CarConfigInfoService;
  8 +import com.bsth.service.schedule.EmployeeConfigInfoService;
  9 +import com.bsth.service.schedule.TTInfoDetailService;
  10 +import com.bsth.service.schedule.TTInfoService;
  11 +import com.google.common.collect.ArrayListMultimap;
  12 +import com.google.common.collect.Multimap;
  13 +import org.springframework.beans.factory.annotation.Autowired;
  14 +import org.springframework.stereotype.Service;
  15 +
  16 +import java.util.HashMap;
  17 +import java.util.Iterator;
  18 +import java.util.Map;
  19 +
  20 +/**
  21 + * Created by xu on 16/7/10.
  22 + */
  23 +@Service
  24 +public class IStrategyImpl implements IStrategy {
  25 + @Autowired
  26 + private TTInfoService ttInfoService;
  27 + @Autowired
  28 + private CarConfigInfoService carConfigInfoService;
  29 + @Autowired
  30 + private EmployeeConfigInfoService employeeConfigInfoService;
  31 + @Autowired
  32 + private TTInfoDetailService ttInfoDetailService;
  33 +
  34 + @Override
  35 + public TTInfo getTTInfo(Integer xlId) {
  36 + // TODO:本来要使用规则判定到底使用哪张时刻表,这里选用第一张
  37 + // 查询参数
  38 + Map<String, Object> param = new HashMap<>();
  39 + param.put("xl.id_eq", xlId);
  40 + Iterable<TTInfo> ttInfoIterable = ttInfoService.list(param);
  41 + Iterator<TTInfo> ttInfoIterator = ttInfoIterable.iterator();
  42 + if (!ttInfoIterator.hasNext())
  43 + throw new RuntimeException("线路id=" + xlId + ",下没有任何时刻表数据!");
  44 + return ttInfoIterator.next();
  45 + }
  46 +
  47 + @Override
  48 + public Multimap<Long, TTInfoDetail> getGuideboardXlTTInfoDetailMaps(Integer xlId) {
  49 + TTInfo ttInfo = getTTInfo(xlId);
  50 + // 查询参数
  51 + Map<String, Object> param = new HashMap<>();
  52 + param.put("ttinfo.id_eq", ttInfo.getId());
  53 + Iterable<TTInfoDetail> ttInfoDetailIterable = ttInfoDetailService.list(param);
  54 + Iterator<TTInfoDetail> ttInfoDetailIterator = ttInfoDetailIterable.iterator();
  55 + if (!ttInfoDetailIterator.hasNext())
  56 + throw new RuntimeException("时刻表id=" + ttInfo.getId() + ",下没有明细数据!");
  57 +
  58 + Multimap<Long, TTInfoDetail> gtmaps = ArrayListMultimap.create();
  59 + while (ttInfoDetailIterator.hasNext()) {
  60 + TTInfoDetail ttInfoDetail = ttInfoDetailIterator.next();
  61 + gtmaps.put(ttInfoDetail.getLp().getId(), ttInfoDetail);
  62 + }
  63 +
  64 + return gtmaps;
  65 + }
  66 +
  67 + @Override
  68 + public Map<Long, CarConfigInfo> getCarConfigMaps(Integer xlId) {
  69 + // 查询参数
  70 + Map<String, Object> param = new HashMap<>();
  71 + param.put("xl.id_eq", xlId);
  72 + Iterable<CarConfigInfo> carConfigInfoIterable = carConfigInfoService.list(param);
  73 + Iterator<CarConfigInfo> carConfigInfoIterator = carConfigInfoIterable.iterator();
  74 + if (!carConfigInfoIterator.hasNext())
  75 + throw new RuntimeException("线路id=" + xlId + ",下没有车辆配置信息!");
  76 +
  77 + Map<Long, CarConfigInfo> carConfigInfoMap = new HashMap<>();
  78 + while (carConfigInfoIterator.hasNext()) {
  79 + CarConfigInfo carConfigInfo = carConfigInfoIterator.next();
  80 + carConfigInfoMap.put(carConfigInfo.getId(), carConfigInfo);
  81 + }
  82 + return carConfigInfoMap;
  83 + }
  84 +
  85 + @Override
  86 + public Map<Long, EmployeeConfigInfo> getEmployeeConfigMaps(Integer xlId) {
  87 + // 查询参数
  88 + Map<String, Object> param = new HashMap<>();
  89 + param.put("xl.id_eq", xlId);
  90 + Iterable<EmployeeConfigInfo> employeeConfigInfoIterable = employeeConfigInfoService.list(param);
  91 + Iterator<EmployeeConfigInfo> employeeConfigInfoIterator = employeeConfigInfoIterable.iterator();
  92 + if (!employeeConfigInfoIterator.hasNext())
  93 + throw new RuntimeException("线路id=" + xlId + ",下没有人员配置信息!");
  94 +
  95 + Map<Long, EmployeeConfigInfo> employeeConfigInfoMap = new HashMap<>();
  96 + while (employeeConfigInfoIterator.hasNext()) {
  97 + EmployeeConfigInfo employeeConfigInfo = employeeConfigInfoIterator.next();
  98 + employeeConfigInfoMap.put(employeeConfigInfo.getId(), employeeConfigInfo);
  99 + }
  100 + return employeeConfigInfoMap;
  101 + }
  102 +}
... ...
src/main/java/com/bsth/service/schedule/utils/DataImportExportServiceImpl.java
1 1 package com.bsth.service.schedule.utils;
2 2  
3 3 import com.google.common.io.Files;
  4 +import org.pentaho.di.core.KettleEnvironment;
  5 +import org.pentaho.di.core.util.EnvUtil;
4 6 import org.pentaho.di.trans.Trans;
5 7 import org.pentaho.di.trans.TransMeta;
6 8 import org.springframework.beans.factory.InitializingBean;
... ... @@ -10,6 +12,9 @@ import org.springframework.stereotype.Service;
10 12 import org.springframework.web.multipart.MultipartFile;
11 13  
12 14 import java.io.File;
  15 +import java.util.HashMap;
  16 +import java.util.Map;
  17 +import java.util.Properties;
13 18  
14 19 /**
15 20 * Created by xu on 16/6/23.
... ... @@ -21,18 +26,49 @@ public class DataImportExportServiceImpl implements DataImportExportService, Ini
21 26 @Autowired
22 27 private DataToolsProperties dataToolsProperties;
23 28  
  29 + /**
  30 + * 自定义kettle环境初始化定义。
  31 + */
  32 + private void ktrEnvironmentInit() throws Exception {
  33 + // 由于kettle.properties可能没有(没有安装过kettle),
  34 + // 导致 EnvUtil.environmentInit() 报找不到kettle.properties文件
  35 + // 所以这里重写 EnvUtil.environmentInit() 方法
  36 +
  37 + if(Thread.currentThread().getContextClassLoader() == null) {
  38 + Thread.currentThread().setContextClassLoader(ClassLoader.getSystemClassLoader());
  39 + }
  40 +
  41 + // 获取配置文件
  42 + File file = new File(getClass().getResource(dataToolsProperties.getKettleProperties()).toURI());
  43 + Properties kettleProperties = EnvUtil.readProperties(file.getAbsolutePath());
  44 + EnvUtil.applyKettleProperties(kettleProperties);
  45 + System.getProperties().put("Internal.Cluster.Size", "1");
  46 + System.getProperties().put("Internal.Slave.Transformation.Number", "0");
  47 + System.getProperties().put("Internal.Slave.Server.Name", "slave-trans-name");
  48 + System.getProperties().put("Internal.Step.CopyNr", "0");
  49 + System.getProperties().put("Internal.Step.Name", "step-name");
  50 + System.getProperties().put("Internal.Step.Partition.ID", "partition-id");
  51 + System.getProperties().put("Internal.Step.Partition.Number", "0");
  52 + System.getProperties().put("Internal.Step.Unique.Count", "1");
  53 + System.getProperties().put("Internal.Step.Unique.Number", "0");
  54 + if(!kettleProperties.containsKey("vfs.sftp.org.apache.commons.vfs2.provider.sftp.SftpFileSystemConfigBuilder.USER_DIR_IS_ROOT")) {
  55 + System.getProperties().put("vfs.sftp.org.apache.commons.vfs2.provider.sftp.SftpFileSystemConfigBuilder.USER_DIR_IS_ROOT", "false");
  56 + }
  57 +
  58 + }
  59 +
24 60 @Override
25 61 public void afterPropertiesSet() throws Exception {
26   - // TODO:有可能会报错,待会儿再改
27   -// // 初始化kettle环境
28   -// EnvUtil.environmentInit();
29   -// // 添加全局ktr变量,并覆盖原来的设置
30   -// Map<String, String> kvars = new HashMap<>();
31   -// kvars.put("v_db_ip", dataToolsProperties.getKvarsDbip());
32   -// kvars.put("v_db_uname", dataToolsProperties.getKvarsDbuname());
33   -// kvars.put("v_db_pwd", dataToolsProperties.getKvarsDbpwd());
34   -// EnvUtil.applyKettleProperties(kvars, true);
35   -// KettleEnvironment.init();
  62 + // 初始化kettle环境(自定义)
  63 + ktrEnvironmentInit();
  64 +
  65 + // 添加全局ktr变量,并覆盖原来的设置
  66 + Map<String, String> kvars = new HashMap<>();
  67 + kvars.put("v_db_ip", dataToolsProperties.getKvarsDbip());
  68 + kvars.put("v_db_uname", dataToolsProperties.getKvarsDbuname());
  69 + kvars.put("v_db_pwd", dataToolsProperties.getKvarsDbpwd());
  70 + EnvUtil.applyKettleProperties(kvars, true);
  71 + KettleEnvironment.init();
36 72 }
37 73  
38 74 @Override
... ...
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
... ... @@ -22,6 +22,10 @@ public class DataToolsProperties {
22 22 @NotNull
23 23 private String transErrordir;
24 24  
  25 + /** kettle配置文件路径 */
  26 + @NotNull
  27 + private String kettleProperties;
  28 +
25 29 /** ktr通用变量-数据库ip地址 */
26 30 @NotNull
27 31 private String kvarsDbip;
... ... @@ -173,4 +177,12 @@ public class DataToolsProperties {
173 177 public void setTtinfodetailDatainputktr(String ttinfodetailDatainputktr) {
174 178 this.ttinfodetailDatainputktr = ttinfodetailDatainputktr;
175 179 }
  180 +
  181 + public String getKettleProperties() {
  182 + return kettleProperties;
  183 + }
  184 +
  185 + public void setKettleProperties(String kettleProperties) {
  186 + this.kettleProperties = kettleProperties;
  187 + }
176 188 }
... ...
src/main/resources/datatools/config.properties
... ... @@ -5,6 +5,9 @@ datatools.fileupload_dir=/Users/xu/resource/project/bsth_control_u_d_files
5 5 # ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
6 6 datatools.trans_errordir=/Users/xu/resource/project/bsth_control_u_d_files/erroroutput
7 7  
  8 +#------------------- ktr主配置文件路径(类路径) ------------------
  9 +datatools.kettle_properties=/datatools/kettle.properties
  10 +
8 11 ##------------------ ktr通用变量 ------------------
9 12 #数据库ip地址
10 13 datatools.kvars_dbip=localhost
... ...
src/main/resources/datatools/kettle.properties 0 → 100644
  1 +# kettle的配置文件
  2 +
  3 +KETTLE_COMPATIBILITY_IMPORT_PATH_ADDITION_ON_VARIABLES=N
  4 +KETTLE_REDIRECT_STDERR=N
  5 +KETTLE_SHARED_OBJECTS=
  6 +KETTLE_METRICS_LOG_DB=
  7 +KETTLE_DEFAULT_DATE_FORMAT=
  8 +KETTLE_JOB_LOG_SCHEMA=
  9 +KETTLE_DEFAULT_INTEGER_FORMAT=
  10 +KETTLE_AGGREGATION_MIN_NULL_IS_VALUED=N
  11 +KETTLE_PLUGIN_CLASSES=
  12 +KETTLE_LOG_MARK_MAPPINGS=N
  13 +KETTLE_CORE_JOBENTRIES_FILE=
  14 +KETTLE_ROWSET_GET_TIMEOUT=50
  15 +KETTLE_METRICS_LOG_SCHEMA=
  16 +KETTLE_PLUGIN_PACKAGES=
  17 +KETTLE_TRANS_LOG_DB=
  18 +KETTLE_CHANNEL_LOG_DB=
  19 +KETTLE_MAX_LOG_TIMEOUT_IN_MINUTES=1440
  20 +KETTLE_JOB_LOG_DB=
  21 +KETTLE_JOB_LOG_TABLE=
  22 +KETTLE_DISABLE_CONSOLE_LOGGING=N
  23 +KETTLE_TRANS_PAN_JVM_EXIT_CODE=
  24 +KETTLE_COMPATIBILITY_PUR_OLD_NAMING_MODE=N
  25 +KETTLE_DEFAULT_TIMESTAMP_FORMAT=
  26 +KETTLE_TRANS_PERFORMANCE_LOG_TABLE=
  27 +KETTLE_STEP_LOG_SCHEMA=
  28 +KETTLE_ROWSET_PUT_TIMEOUT=50
  29 +KETTLE_MAX_JOB_ENTRIES_LOGGED=5000
  30 +KETTLE_COMPATIBILITY_DB_IGNORE_TIMEZONE=N
  31 +KETTLE_JOBENTRY_LOG_TABLE=
  32 +KETTLE_MAX_LOGGING_REGISTRY_SIZE=10000
  33 +KETTLE_TRANS_LOG_SCHEMA=
  34 +KETTLE_JNDI_ROOT=
  35 +vfs.sftp.org.apache.commons.vfs2.provider.sftp.SftpFileSystemConfigBuilder.USER_DIR_IS_ROOT=false
  36 +KETTLE_COMPATIBILITY_MERGE_ROWS_USE_REFERENCE_STREAM_WHEN_IDENTICAL=N
  37 +KETTLE_HIDE_DEVELOPMENT_VERSION_WARNING=N
  38 +KETTLE_LENIENT_STRING_TO_NUMBER_CONVERSION=N
  39 +KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=N
  40 +KETTLE_TRANS_PERFORMANCE_LOG_DB=
  41 +KETTLE_STEP_PERFORMANCE_SNAPSHOT_LIMIT=0
  42 +KETTLE_FAIL_ON_LOGGING_ERROR=N
  43 +KETTLE_MAX_JOB_TRACKER_SIZE=5000
  44 +KETTLE_JOBENTRY_LOG_SCHEMA=
  45 +KETTLE_BATCHING_ROWSET=N
  46 +KETTLE_STEP_LOG_TABLE=
  47 +KETTLE_CARTE_OBJECT_TIMEOUT_MINUTES=1440
  48 +KETTLE_CHANNEL_LOG_SCHEMA=
  49 +KETTLE_JOBENTRY_LOG_DB=
  50 +KETTLE_CARTE_JETTY_RES_MAX_IDLE_TIME=
  51 +KETTLE_CARTE_JETTY_ACCEPT_QUEUE_SIZE=
  52 +PENTAHO_METASTORE_FOLDER=
  53 +KETTLE_STEP_LOG_DB=
  54 +KETTLE_CARTE_JETTY_ACCEPTORS=
  55 +KETTLE_DEFAULT_NUMBER_FORMAT=
  56 +KETTLE_PASSWORD_ENCODER_PLUGIN=Kettle
  57 +KETTLE_LOG_SIZE_LIMIT=0
  58 +KETTLE_REDIRECT_STDOUT=N
  59 +KETTLE_MAX_LOG_SIZE_IN_LINES=5000
  60 +KETTLE_CORE_STEPS_FILE=
  61 +KETTLE_DEFAULT_SERVLET_ENCODING=
  62 +KETTLE_SYSTEM_HOSTNAME=
  63 +KETTLE_CHANNEL_LOG_TABLE=
  64 +KETTLE_DEFAULT_BIGNUMBER_FORMAT=
  65 +KETTLE_TRANS_LOG_TABLE=
  66 +KETTLE_METRICS_LOG_TABLE=
  67 +KETTLE_AGGREGATION_ALL_NULLS_ARE_ZERO=N
  68 +KETTLE_TRANS_PERFORMANCE_LOG_SCHEMA=
  69 +KETTLE_COMPATIBILITY_TEXT_FILE_OUTPUT_APPEND_NO_HEADER=N
  70 +
  71 +v_db_uname=root
  72 +v_db_pwd=
  73 +v_db_ip=localhost
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/busInfoManage/dataImport.html
... ... @@ -68,5 +68,5 @@
68 68 </div>
69 69  
70 70 <div class="modal-footer">
71   - <button class="btn btn-primary" ng-click="ctrl.close()">关闭</button>
  71 + <button class="btn btn-primary" ng-click="ctrl.close()" ng-disabled="item.isUploading">关闭</button>
72 72 </div>
73 73 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/busInfoManage/list.html
... ... @@ -4,15 +4,15 @@
4 4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column">
5 5 <thead>
6 6 <tr role="row" class="heading">
7   - <th class="mixTd" style="width: 50pt;">序号</th>
8   - <th class="mixTd">车辆编号</th>
9   - <th class="mixTd">内部编号</th>
10   - <th class="mixTd">设备编号</th>
11   - <th class="mixTd">车牌号</th>
12   - <th class="mixTd" style="width: 150pt;">所在公司</th>
13   - <th class="mixTd">所在分公司</th>
14   - <th class="mixTd" style="width: 80pt;">是否电车</th>
15   - <th class="mixTd" style="width: 120pt">操作</th>
  7 + <th style="width: 40pt;">序号</th>
  8 + <th >车辆编号</th>
  9 + <th >内部编号</th>
  10 + <th >设备编号</th>
  11 + <th >车牌号</th>
  12 + <th style="width: 105pt;">所在公司</th>
  13 + <th >所在分公司</th>
  14 + <th style="width: 60pt">是否电车</th>
  15 + <th style="width: 115pt">操作</th>
16 16 </tr>
17 17 <tr role="row" class="filter">
18 18 <td></td>
... ... @@ -58,31 +58,31 @@
58 58 </thead>
59 59 <tbody>
60 60 <tr ng-repeat="info in ctrl.pageInfo.infos" class="odd gradeX">
61   - <td class="mixTd">
  61 + <td>
62 62 <span ng-bind="$index + 1"></span>
63 63 </td>
64   - <td class="mixTd">
  64 + <td>
65 65 <span ng-bind="info.carCode"></span>
66 66 </td>
67   - <td class="mixTd">
  67 + <td>
68 68 <span ng-bind="info.insideCode"></span>
69 69 </td>
70   - <td class="mixTd">
  70 + <td>
71 71 <span ng-bind="info.equipmentCode"></span>
72 72 </td>
73   - <td class="mixTd">
  73 + <td>
74 74 <span ng-bind="info.carPlate"></span>
75 75 </td>
76   - <td class="mixTd">
  76 + <td>
77 77 <span ng-bind="info.company"></span>
78 78 </td>
79   - <td class="mixTd">
  79 + <td>
80 80 <span ng-bind="info.brancheCompany"></span>
81 81 </td>
82   - <td class="mixTd">
  82 + <td>
83 83 <span ng-bind="info.sfdc | dict:'truefalseType':'未知' "></span>
84 84 </td>
85   - <td class="mixTd">
  85 + <td>
86 86 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
87 87 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->
88 88 <a ui-sref="busInfoManage_detail({id: info.id})" class="btn default blue-stripe btn-sm"> 详细 </a>
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/deviceInfoManage/list.html
1 1 <!-- ui-route deviceInfoManage.list -->
2 2 <div ng-controller="DeviceInfoManageListCtrl as ctrl">
3   - <table class="table table-striped table-bordered table-hover table-checkable order-column">
4   - <thead>
5   - <tr role="row" class="heading">
6   - <th>
7   - <input type="checkbox" class="group-checkable"/>
8   - </th>
9   - <th>序号</th>
10   - <th>线路名称</th>
11   - <th>内部编号</th>
12   - <th>创建时间</th>
13   - <th>旧设备编号</th>
14   - <th>新设备编号</th>
15   - <th>旧SIM卡</th>
16   - <th>新SIM卡</th>
17   - <th>操作时间</th>
18   - <th width="14%">操作</th>
19   - </tr>
20   - <tr role="row" class="filter">
21   - <td></td>
22   - <td></td>
23   - <td>
24   - <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().xlName_like"/>
25   - </td>
26   - <td>
27   - <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().clZbh_like"/>
28   - </td>
29   - <td></td>
30   - <td>
31   - <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().oldDeviceNo_like"/>
32   - </td>
33   - <td>
34   - <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().newDeviceNo_like"/>
35   - </td>
36   - <td>
37   - <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().oldSimNo_like"/>
38   - </td>
39   - <td>
40   - <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().newSimNo_like"/>
41   - </td>
42   - <td></td>
43   - <td>
44   - <button class="btn btn-sm green btn-outline filter-submit margin-bottom"
45   - ng-click="ctrl.pageChanaged()">
46   - <i class="fa fa-search"></i> 搜索</button>
  3 + <div style="width: 100%; height: 100%; overflow: auto">
  4 + <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column">
  5 + <thead>
  6 + <tr role="row" class="heading">
  7 + <th style="width: 40pt;">序号</th>
  8 + <th >线路名称</th>
  9 + <th>内部编号</th>
  10 + <th>创建时间</th>
  11 + <th>旧设备编号</th>
  12 + <th>新设备编号</th>
  13 + <th>旧SIM卡</th>
  14 + <th>新SIM卡</th>
  15 + <th>操作时间</th>
  16 + <th style="width: 115pt;">操作</th>
  17 + </tr>
  18 + <tr role="row" class="filter">
  19 + <td></td>
  20 + <td>
  21 + <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().xlName_like"/>
  22 + </td>
  23 + <td>
  24 + <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().clZbh_like"/>
  25 + </td>
  26 + <td></td>
  27 + <td>
  28 + <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().oldDeviceNo_like"/>
  29 + </td>
  30 + <td>
  31 + <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().newDeviceNo_like"/>
  32 + </td>
  33 + <td>
  34 + <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().oldSimNo_like"/>
  35 + </td>
  36 + <td>
  37 + <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().newSimNo_like"/>
  38 + </td>
  39 + <td></td>
  40 + <td>
  41 + <button class="btn btn-sm green btn-outline filter-submit margin-bottom"
  42 + ng-click="ctrl.pageChanaged()">
  43 + <i class="fa fa-search"></i> 搜索</button>
47 44  
48   - <button class="btn btn-sm red btn-outline filter-cancel"
49   - ng-click="ctrl.resetSearchCondition()">
50   - <i class="fa fa-times"></i> 重置</button>
51   - </td>
  45 + <button class="btn btn-sm red btn-outline filter-cancel"
  46 + ng-click="ctrl.resetSearchCondition()">
  47 + <i class="fa fa-times"></i> 重置</button>
  48 + </td>
52 49  
53   - </tr>
54   - </thead>
55   - <tbody>
56   - <tr ng-repeat="info in ctrl.pageInfo.infos" class="odd gradeX">
57   - <td>
58   - <input type="checkbox"/>
59   - </td>
60   - <td>
61   - <span ng-bind="$index + 1"></span>
62   - </td>
63   - <td>
64   - <span ng-bind="info.xlName"></span>
65   - </td>
66   - <td>
67   - <span ng-bind="info.clZbh"></span>
68   - </td>
69   - <td>
70   - <span ng-bind="info.createDate | date:'yyyy-MM-dd HH:mm:ss'"></span>
71   - </td>
72   - <td>
73   - <span ng-bind="info.oldDeviceNo"></span>
74   - </td>
75   - <td>
76   - <span ng-bind="info.newDeviceNo"></span>
77   - </td>
78   - <td>
79   - <span ng-bind="info.oldSimNo"></span>
80   - </td>
81   - <td>
82   - <span ng-bind="info.newSimNo"></span>
83   - </td>
84   - <td>
85   - <span ng-bind="info.updateDate | date:'yyyy-MM-dd HH:mm:ss'"></span>
86   - </td>
87   - <td>
88   - <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
89   - <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->
90   - <a ui-sref="deviceInfoManage_detail({id: info.id})" class="btn default blue-stripe btn-sm"> 详细 </a>
91   - <a ui-sref="deviceInfoManage_edit({id: info.id})" class="btn default blue-stripe btn-sm"> 修改 </a>
92   - </td>
93   - </tr>
94   - </tbody>
  50 + </tr>
  51 + </thead>
  52 + <tbody>
  53 + <tr ng-repeat="info in ctrl.pageInfo.infos" class="odd gradeX">
  54 + <td>
  55 + <span ng-bind="$index + 1"></span>
  56 + </td>
  57 + <td>
  58 + <span ng-bind="info.xlName"></span>
  59 + </td>
  60 + <td>
  61 + <span ng-bind="info.clZbh"></span>
  62 + </td>
  63 + <td>
  64 + <span ng-bind="info.createDate | date:'yyyy-MM-dd HH:mm:ss'"></span>
  65 + </td>
  66 + <td>
  67 + <span ng-bind="info.oldDeviceNo"></span>
  68 + </td>
  69 + <td>
  70 + <span ng-bind="info.newDeviceNo"></span>
  71 + </td>
  72 + <td>
  73 + <span ng-bind="info.oldSimNo"></span>
  74 + </td>
  75 + <td>
  76 + <span ng-bind="info.newSimNo"></span>
  77 + </td>
  78 + <td>
  79 + <span ng-bind="info.updateDate | date:'yyyy-MM-dd HH:mm:ss'"></span>
  80 + </td>
  81 + <td>
  82 + <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
  83 + <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->
  84 + <a ui-sref="deviceInfoManage_detail({id: info.id})" class="btn default blue-stripe btn-sm"> 详细 </a>
  85 + <a ui-sref="deviceInfoManage_edit({id: info.id})" class="btn default blue-stripe btn-sm"> 修改 </a>
  86 + </td>
  87 + </tr>
  88 + </tbody>
95 89  
96   - </table>
  90 + </table>
  91 + </div>
97 92  
98 93 <div style="text-align: right;">
99 94 <uib-pagination total-items="ctrl.pageInfo.totalItems"
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/employeeInfoManage/list.html
... ... @@ -4,14 +4,14 @@
4 4 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column">
5 5 <thead>
6 6 <tr role="row" class="heading">
7   - <th class="mixTd" width="50px">序号</th>
8   - <th class="mixTd" width="80px">姓名</th>
9   - <th class="mixTd" width="80px">工号</th>
10   - <th class="mixTd" width="50px">性别</th>
11   - <th class="mixTd" width="150px">所在公司</th>
12   - <th class="mixTd">分公司</th>
13   - <th class="mixTd" width="150px">工种</th>
14   - <th class="mixTd" width="150px">操作</th>
  7 + <th style="width: 40pt;">序号</th>
  8 + <th >姓名</th>
  9 + <th >工号</th>
  10 + <th style="width: 60pt;">性别</th>
  11 + <th style="width: 120pt;">所在公司</th>
  12 + <th >分公司</th>
  13 + <th style="width: 150pt;">工种</th>
  14 + <th style="width: 115pt;">操作</th>
15 15 </tr>
16 16 <tr role="row" class="filter">
17 17 <td>
... ... @@ -64,25 +64,25 @@
64 64 </thead>
65 65 <tbody>
66 66 <tr ng-repeat="info in ctrl.pageInfo.infos" class="odd gradeX">
67   - <td class="mixTd">
  67 + <td>
68 68 <span ng-bind="$index + 1"></span>
69 69 </td>
70   - <td class="mixTd">
  70 + <td>
71 71 <span ng-bind="info.personnelName"></span>
72 72 </td>
73   - <td class="mixTd">
  73 + <td>
74 74 <span ng-bind="info.jobCode"></span>
75 75 </td>
76   - <td class="mixTd">
  76 + <td>
77 77 <span ng-bind="info.personnelType | dict:'sexType':'未知'"></span>
78 78 </td>
79   - <td class="mixTd">
  79 + <td>
80 80 <span ng-bind="info.company"></span>
81 81 </td>
82   - <td class="mixTd">
  82 + <td>
83 83 <span ng-bind="info.brancheCompany"></span>
84 84 </td>
85   - <td class="mixTd">
  85 + <td>
86 86 <span ng-bind="info.posts | dict:'gzType':'未知'"></span>
87 87 </td>
88 88 <td>
... ...
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/form.html
... ... @@ -58,25 +58,6 @@
58 58 线路必须选择
59 59 </div>
60 60 </div>
61   - <div class="form-group has-success has-feedback">
62   - <label class="col-md-2 control-label">时刻表*:</label>
63   - <div class="col-md-3">
64   - <sa-Select2 model="ctrl.schedulePlanManageForSave"
65   - name="ttInfo"
66   - required="true"
67   - type="ttInfo"
68   - modelcolname1="ttInfo_id"
69   - datacolname1="id"
70   - showcolname="name"
71   - placeholder="请输拼音...">
72   - </sa-Select2>
73   - </div>
74   - <!-- 隐藏块,显示验证信息 -->
75   - <div class="alert alert-danger well-sm" ng-show="myForm.ttInfo.$error.required">
76   - 时刻表必须选择
77   - </div>
78   - </div>
79   -
80 61 <div class="form-group">
81 62 <label class="col-md-2 control-label">开始日期*:</label>
82 63 <div class="col-md-3">
... ... @@ -131,11 +112,10 @@
131 112 <div class="col-md-offset-3 col-md-4">
132 113 <button type="submit" class="btn green"
133 114 ng-disabled="myForm.xl.$error.required ||
134   - myForm.ttInfo.$error.required ||
135 115 myForm.scheduleFromTime.$error.required ||
136 116 myForm.scheduleToTime.$error.required"
137 117 ><i class="fa fa-check"></i> 提交</button>
138   - <a type="button" class="btn default" ui-sref="busConfig" ><i class="fa fa-times"></i> 取消</a>
  118 + <a type="button" class="btn default" ui-sref="schedulePlanManage" ><i class="fa fa-times"></i> 取消</a>
139 119 </div>
140 120 </div>
141 121 </div>
... ...
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/index.html
... ... @@ -31,29 +31,6 @@
31 31 <i class="fa fa-plus"></i>
32 32 生成计划
33 33 </a>
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 class="divider"></li>
49   - <li>
50   - <a href="javascript:" class="tool-action">
51   - <i class="fa fa-refresh"></i>
52   - 刷行数据
53   - </a>
54   - </li>
55   - </ul>
56   - </div>
57 34 </div>
58 35 </div>
59 36  
... ...
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/list.html
1 1 <!-- ui-route employeeInfoManage.list -->
2 2 <div ng-controller="SchedulePlanManageListCtrl as ctrl">
3   - <table class="table table-striped table-bordered table-hover table-checkable order-column">
  3 + <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column">
4 4 <thead>
5 5 <tr role="row" class="heading">
6   - <th>序号</th>
7   - <th>线路</th>
8   - <th>时刻表</th>
  6 + <th style="width: 40pt;">序号</th>
  7 + <th style="width: 115pt;">线路</th>
  8 + <th style="width: 200pt;">时刻表</th>
9 9 <th>排班开始时间</th>
10 10 <th>排班结束时间</th>
11 11 <th>修改人</th>
12 12 <th>修改时间</th>
13   - <th width="14%">操作</th>
  13 + <th style="width: 115pt;">操作</th>
14 14 </tr>
15 15 <tr role="row" class="filter">
16 16 <td></td>
17 17 <td>
18   - <div style="width: 150px">
19   - <sa-Select2 model="ctrl.searchCondition()"
20   - type="xl"
21   - modelcolname1="xl.id_eq"
22   - datacolname1="id"
23   - showcolname="name"
24   - placeholder="请输拼音...">
25   - </sa-Select2>
26   - </div>
  18 + <sa-Select2 model="ctrl.searchCondition()"
  19 + type="xl"
  20 + modelcolname1="xl.id_eq"
  21 + datacolname1="id"
  22 + showcolname="name"
  23 + placeholder="请输拼音...">
  24 + </sa-Select2>
27 25 </td>
28 26 <td></td>
29 27 <td></td>
... ... @@ -68,7 +66,7 @@
68 66 <td>
69 67 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
70 68 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->
71   - <a ui-sref="schedulePlanInfoManage" class="btn default blue-stripe btn-sm"> 排班明细 </a>
  69 + <a ui-sref="schedulePlanInfoManage({spid : info.id})" class="btn default blue-stripe btn-sm"> 排班明细 </a>
72 70 </td>
73 71 </tr>
74 72 </tbody>
... ...
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/list_info.html
1 1 <!-- ui-route busInfoManage.list -->
2 2 <div ng-controller="SchedulePlanInfoManageListCtrl as ctrl">
3   - <table class="table table-striped table-bordered table-hover table-checkable order-column">
4   - <thead>
5   - <tr role="row" class="heading">
6   - <th>
7   - <input type="checkbox" class="group-checkable"/>
8   - </th>
9   - <th width="50">序号</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>
21   - <th>班次类型</th>
22   - <th>发车时间</th>
  3 + <div style="width: 100%; height: 100%; overflow: auto">
  4 + <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column">
  5 + <thead>
  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>
23 21  
24   - <!-- TODO:还有其他的 -->
  22 + <!-- TODO:还有其他的 -->
25 23  
26   - <th width="14%">操作</th>
27   - </tr>
28   - <tr role="row" class="filter">
29   - <td></td>
30   - <td></td>
31   - <td></td>
32   - <td></td>
33   - <td></td>
34   - <td></td>
35   - <td></td>
36   - <td></td>
37   - <td></td>
38   - <td></td>
39   - <td></td>
40   - <td></td>
41   - <td></td>
42   - <td></td>
43   - <td></td>
  24 + <th style="width: 115pt;">操作</th>
  25 + </tr>
  26 + <tr role="row" class="filter">
  27 + <td></td>
  28 + <td></td>
  29 + <td></td>
  30 + <td></td>
  31 + <td></td>
  32 + <td></td>
  33 + <td></td>
  34 + <td></td>
  35 + <td></td>
  36 + <td></td>
  37 + <td></td>
  38 + <td></td>
  39 + <td></td>
  40 + <td></td>
44 41  
45   - <td>
46   - <button class="btn btn-sm green btn-outline filter-submit margin-bottom"
47   - ng-click="ctrl.pageChanaged()">
48   - <i class="fa fa-search"></i> 搜索</button>
  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>
49 46  
50   - <button class="btn btn-sm red btn-outline filter-cancel"
51   - ng-click="ctrl.resetSearchCondition()">
52   - <i class="fa fa-times"></i> 重置</button>
53   - </td>
  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>
54 51  
55   - </tr>
56   - </thead>
57   - <tbody>
58   - <tr ng-repeat="info in ctrl.pageInfo.infos" class="odd gradeX">
59   - <td>
60   - <input type="checkbox"/>
61   - </td>
62   - <td>
63   - <span ng-bind="$index + 1"></span>
64   - </td>
  52 + </tr>
  53 + </thead>
  54 + <tbody>
  55 + <tr ng-repeat="info in ctrl.pageInfo.infos" class="odd gradeX">
  56 + <td>
  57 + <span ng-bind="$index + 1"></span>
  58 + </td>
65 59  
66   - <td>
67   - <span ng-bind="info.xlName"></span>
68   - </td>
69   - <td>
70   - <span ng-bind="info.scheduleDate | date: 'yyyy-MM-dd'"></span>
71   - </td>
72   - <td>
73   - <span ng-bind="info.lpName"></span>
74   - </td>
75   - <td>
76   - <span ng-bind="info.clZbh"></span>
77   - </td>
78   - <td></td>
79   - <td>
80   - <span ng-bind="info.bdTime"></span>
81   - </td>
82   - <td>
83   - <span ng-bind="info.ccTime"></span>
84   - </td>
85   - <td>
86   - <span ng-bind="info.jName"></span>
87   - </td>
88   - <td>
89   - <span ng-bind="info.jGh"></span>
90   - </td>
91   - <td>
92   - <span ng-bind="info.sName"></span>
93   - </td>
94   - <td>
95   - <span ng-bind="info.sGh"></span>
96   - </td>
97   - <td>
98   - <span ng-bind="info.bcType"></span>
99   - </td>
100   - <td>
101   - <span ng-bind="info.fcsj"></span>
102   - </td>
103   -
104   - <td>
105   - <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
106   - <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->
107   - <a ui-sref="#" class="btn default blue-stripe btn-sm"> 详细 </a>
108   - <a ui-sref="#" class="btn default blue-stripe btn-sm"> 修改 </a>
109   - </td>
110   - </tr>
111   - </tbody>
  60 + <td>
  61 + <span ng-bind="info.xlName"></span>
  62 + </td>
  63 + <td>
  64 + <span ng-bind="info.scheduleDate | date: 'yyyy-MM-dd'"></span>
  65 + </td>
  66 + <td>
  67 + <span ng-bind="info.lpName"></span>
  68 + </td>
  69 + <td>
  70 + <span ng-bind="info.clZbh"></span>
  71 + </td>
  72 + <td></td>
  73 + <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>
  87 + </td>
  88 + <td>
  89 + <span ng-bind="info.sGh"></span>
  90 + </td>
  91 + <td>
  92 + <span ng-bind="info.bcType | dict:'ScheduleType':'未知' "></span>
  93 + </td>
  94 + <td>
  95 + <span ng-bind="info.fcsj"></span>
  96 + </td>
112 97  
113   - </table>
  98 + <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>
  103 + </td>
  104 + </tr>
  105 + </tbody>
  106 +
  107 + </table>
  108 + </div>
114 109  
115 110 <div style="text-align: right;">
116 111 <uib-pagination total-items="ctrl.pageInfo.totalItems"
... ...
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/schedulePlanInfoManage.js
... ... @@ -35,9 +35,10 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;SchedulePlanInfoManageService&#39;, [&#39;Schedul
35 35 * @param params 查询参数
36 36 * @return 返回一个 promise
37 37 */
38   - getPage: function() {
  38 + getPage: function(spid) {
39 39 var params = currentSearchCondition; // 查询条件
40 40 params.page = currentPageNo - 1; // 服务端页码从0开始
  41 + params["schedulePlan.id_eq"] = spid; // 排班id
41 42 return service.rest.list(params).$promise;
42 43 }
43 44  
... ... @@ -45,8 +46,10 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;SchedulePlanInfoManageService&#39;, [&#39;Schedul
45 46  
46 47 }]);
47 48  
48   -angular.module('ScheduleApp').controller('SchedulePlanInfoManageCtrl', ['SchedulePlanInfoManageService', '$state', function(schedulePlanInfoManageService, $state) {
  49 +angular.module('ScheduleApp').controller('SchedulePlanInfoManageCtrl', ['SchedulePlanInfoManageService', '$state', '$stateParams', '$scope', function(schedulePlanInfoManageService, $state, $stateParams, $scope) {
49 50 var self = this;
  51 + var spid = $stateParams.spid; // 排班规则id
  52 + $scope.spid = spid;
50 53  
51 54 // 切换到form状态
52 55 self.goForm = function() {
... ... @@ -55,7 +58,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;SchedulePlanInfoManageCtrl&#39;, [&#39;Schedul
55 58 }
56 59 }]);
57 60  
58   -angular.module('ScheduleApp').controller('SchedulePlanInfoManageListCtrl', ['SchedulePlanInfoManageService', function(schedulePlanInfoManageService) {
  61 +angular.module('ScheduleApp').controller('SchedulePlanInfoManageListCtrl', ['SchedulePlanInfoManageService', '$scope', function(schedulePlanInfoManageService, $scope) {
59 62 var self = this;
60 63 self.pageInfo = {
61 64 totalItems : 0,
... ... @@ -63,8 +66,10 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;SchedulePlanInfoManageListCtrl&#39;, [&#39;Sch
63 66 infos: []
64 67 };
65 68  
  69 + var spid = $scope.spid;
  70 +
66 71 // 初始创建的时候,获取一次列表数据
67   - schedulePlanInfoManageService.getPage().then(
  72 + schedulePlanInfoManageService.getPage(spid).then(
68 73 function(result) {
69 74 self.pageInfo.totalItems = result.totalElements;
70 75 self.pageInfo.currentPage = result.number + 1;
... ... @@ -83,7 +88,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;SchedulePlanInfoManageListCtrl&#39;, [&#39;Sch
83 88 // 翻页的时候调用
84 89 self.pageChanaged = function() {
85 90 schedulePlanInfoManageService.setCurrentPageNo(self.pageInfo.currentPage);
86   - schedulePlanInfoManageService.getPage().then(
  91 + schedulePlanInfoManageService.getPage(spid).then(
87 92 function(result) {
88 93 self.pageInfo.totalItems = result.totalElements;
89 94 self.pageInfo.currentPage = result.number + 1;
... ...
src/main/resources/static/pages/scheduleApp/module/main.css
... ... @@ -29,11 +29,21 @@ form input.ng-valid.ng-dirty.ng-valid-required {
29 29 margin-left: -10%;
30 30 }
31 31  
32   -.mixTd {
  32 +/* 固定表格,防止内容撑出表格 */
  33 +.fixTable {
  34 + table-layout: fixed;
  35 +}
  36 +
  37 +/** 内容不换行,多余的用...表示 */
  38 +.fixTable thead th {
  39 + white-space: nowrap;
  40 + overflow: hidden;
  41 + text-overflow: ellipsis;
  42 +}
  43 +
  44 +/** 内容不换行,多余的用...表示 */
  45 +.fixTable tbody td {
33 46 white-space: nowrap;
34 47 overflow: hidden;
35 48 text-overflow: ellipsis;
36 49 }
37   -.fixTable {
38   - table-layout: fixed;
39   -}
40 50 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/main.js
... ... @@ -733,7 +733,7 @@ ScheduleApp.config([&#39;$stateProvider&#39;, &#39;$urlRouterProvider&#39;, function($stateProvi
733 733  
734 734 // 排班计划明细管理模块
735 735 .state("schedulePlanInfoManage", {
736   - url: '/schedulePlanInfoManage',
  736 + url: '/schedulePlanInfoManage/:spid',
737 737 views: {
738 738 "": {
739 739 templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/index_info.html'
... ... @@ -1043,7 +1043,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;SchedulePlanInfoManageService_g&#39;, [&#39;$reso
1043 1043 return {
1044 1044 rest : $resource(
1045 1045 '/spic/:id',
1046   - {order: 'createDate', direction: 'DESC', id: '@id_route'},
  1046 + {order: 'scheduleDate', direction: 'ASC', id: '@id_route'},
1047 1047 {
1048 1048 list: {
1049 1049 method: 'GET',
... ...