Commit f7875d7c5926232c2863db2ec4c974f50c0533dc
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,6 +2,8 @@ package com.bsth.controller.schedule; | ||
| 2 | 2 | ||
| 3 | import com.bsth.controller.BaseController; | 3 | import com.bsth.controller.BaseController; |
| 4 | import com.bsth.entity.schedule.SchedulePlan; | 4 | import com.bsth.entity.schedule.SchedulePlan; |
| 5 | +import com.bsth.service.schedule.SchedulePlanService; | ||
| 6 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 5 | import org.springframework.web.bind.annotation.RequestBody; | 7 | import org.springframework.web.bind.annotation.RequestBody; |
| 6 | import org.springframework.web.bind.annotation.RequestMapping; | 8 | import org.springframework.web.bind.annotation.RequestMapping; |
| 7 | import org.springframework.web.bind.annotation.RequestMethod; | 9 | import org.springframework.web.bind.annotation.RequestMethod; |
| @@ -15,6 +17,8 @@ import java.util.Map; | @@ -15,6 +17,8 @@ import java.util.Map; | ||
| 15 | @RestController | 17 | @RestController |
| 16 | @RequestMapping("spc") | 18 | @RequestMapping("spc") |
| 17 | public class SchedulePlanController extends BaseController<SchedulePlan, Long> { | 19 | public class SchedulePlanController extends BaseController<SchedulePlan, Long> { |
| 20 | + @Autowired | ||
| 21 | + private SchedulePlanService schedulePlanService; | ||
| 18 | 22 | ||
| 19 | /** | 23 | /** |
| 20 | * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody | 24 | * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody |
| @@ -31,4 +35,5 @@ public class SchedulePlanController extends BaseController<SchedulePlan, Long> { | @@ -31,4 +35,5 @@ public class SchedulePlanController extends BaseController<SchedulePlan, Long> { | ||
| 31 | return baseService.save(t); | 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,4 +11,5 @@ import org.springframework.web.bind.annotation.RestController; | ||
| 11 | @RestController | 11 | @RestController |
| 12 | @RequestMapping("spic") | 12 | @RequestMapping("spic") |
| 13 | public class SchedulePlanInfoController extends BaseController<SchedulePlanInfo, Long> { | 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,7 +4,7 @@ import com.bsth.controller.BaseController; | ||
| 4 | import com.bsth.entity.schedule.EmployeeConfigInfo; | 4 | import com.bsth.entity.schedule.EmployeeConfigInfo; |
| 5 | import com.bsth.entity.schedule.GuideboardInfo; | 5 | import com.bsth.entity.schedule.GuideboardInfo; |
| 6 | import com.bsth.entity.schedule.rule.ScheduleRule1Flat; | 6 | import com.bsth.entity.schedule.rule.ScheduleRule1Flat; |
| 7 | -import com.bsth.repository.ScheduleRule1FlatRepository; | 7 | +import com.bsth.repository.schedule.ScheduleRule1FlatRepository; |
| 8 | import com.bsth.service.schedule.EmployeeConfigInfoService; | 8 | import com.bsth.service.schedule.EmployeeConfigInfoService; |
| 9 | import com.bsth.service.schedule.GuideboardInfoService; | 9 | import com.bsth.service.schedule.GuideboardInfoService; |
| 10 | import org.apache.commons.lang3.StringUtils; | 10 | import org.apache.commons.lang3.StringUtils; |
| @@ -71,7 +71,7 @@ public class ScheduleRule1FlatController extends BaseController<ScheduleRule1Fla | @@ -71,7 +71,7 @@ public class ScheduleRule1FlatController extends BaseController<ScheduleRule1Fla | ||
| 71 | Iterable<EmployeeConfigInfo> employeeConfigInfos = employeeConfigInfoService.list(param2); | 71 | Iterable<EmployeeConfigInfo> employeeConfigInfos = employeeConfigInfoService.list(param2); |
| 72 | ryIds[j] = employeeConfigInfos.iterator().next().getId().toString(); | 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 | return baseService.save(t); | 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,8 +3,10 @@ package com.bsth.entity.schedule; | ||
| 3 | import com.bsth.entity.Line; | 3 | import com.bsth.entity.Line; |
| 4 | import com.bsth.entity.schedule.rule.ScheduleRule1; | 4 | import com.bsth.entity.schedule.rule.ScheduleRule1; |
| 5 | import com.bsth.entity.sys.SysUser; | 5 | import com.bsth.entity.sys.SysUser; |
| 6 | +import com.fasterxml.jackson.annotation.JsonIgnore; | ||
| 6 | 7 | ||
| 7 | import javax.persistence.*; | 8 | import javax.persistence.*; |
| 9 | +import java.util.ArrayList; | ||
| 8 | import java.util.Date; | 10 | import java.util.Date; |
| 9 | import java.util.List; | 11 | import java.util.List; |
| 10 | 12 | ||
| @@ -43,14 +45,10 @@ public class SchedulePlan { | @@ -43,14 +45,10 @@ public class SchedulePlan { | ||
| 43 | @Column(nullable = false) | 45 | @Column(nullable = false) |
| 44 | private Date scheduleToTime; | 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 | @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) | 54 | @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) |
src/main/java/com/bsth/entity/schedule/SchedulePlanInfo.java
| 1 | package com.bsth.entity.schedule; | 1 | package com.bsth.entity.schedule; |
| 2 | 2 | ||
| 3 | +import com.bsth.entity.Line; | ||
| 3 | import com.bsth.entity.sys.SysUser; | 4 | import com.bsth.entity.sys.SysUser; |
| 5 | +import com.bsth.service.schedule.rules.shiftloop.ScheduleResult_output; | ||
| 4 | 6 | ||
| 5 | import javax.persistence.*; | 7 | import javax.persistence.*; |
| 6 | import java.util.Date; | 8 | import java.util.Date; |
| @@ -63,7 +65,7 @@ public class SchedulePlanInfo { | @@ -63,7 +65,7 @@ public class SchedulePlanInfo { | ||
| 63 | private String bdTime; | 65 | private String bdTime; |
| 64 | /** 出场时间(格式 HH:mm) */ | 66 | /** 出场时间(格式 HH:mm) */ |
| 65 | private String ccTime; | 67 | private String ccTime; |
| 66 | - /** 关联 bsth_c_personnel 主键,不做mapping */ | 68 | + /** 关联的驾驶员 bsth_c_personnel 主键,不做mapping */ |
| 67 | @Column(nullable = false) | 69 | @Column(nullable = false) |
| 68 | private Integer j; | 70 | private Integer j; |
| 69 | /** 驾驶员工号 */ | 71 | /** 驾驶员工号 */ |
| @@ -72,6 +74,8 @@ public class SchedulePlanInfo { | @@ -72,6 +74,8 @@ public class SchedulePlanInfo { | ||
| 72 | /** 驾驶员名字 */ | 74 | /** 驾驶员名字 */ |
| 73 | @Column(nullable = false) | 75 | @Column(nullable = false) |
| 74 | private String jName; | 76 | private String jName; |
| 77 | + /** 关联的售票员 bsth_c_personnel 主键,不做mapping */ | ||
| 78 | + private Integer s; | ||
| 75 | /** 售票员工号 */ | 79 | /** 售票员工号 */ |
| 76 | private String sGh; | 80 | private String sGh; |
| 77 | /** 售票员名字 */ | 81 | /** 售票员名字 */ |
| @@ -112,11 +116,7 @@ public class SchedulePlanInfo { | @@ -112,11 +116,7 @@ public class SchedulePlanInfo { | ||
| 112 | /** 班次历时 */ | 116 | /** 班次历时 */ |
| 113 | private Integer bcsj; | 117 | private Integer bcsj; |
| 114 | 118 | ||
| 115 | - /** | ||
| 116 | - * 班次类型 | ||
| 117 | - * TODO:正常班次、出场、进场、加油、临加班次、区间班次、放空班次、放大站班次、两点间空驶 | ||
| 118 | - * TODO:这个以后用枚举还是字典再议,现在先用文字 | ||
| 119 | - */ | 119 | + /** 班次类型 字典type=ScheduleType */ |
| 120 | @Column(nullable = false) | 120 | @Column(nullable = false) |
| 121 | private String bcType; | 121 | private String bcType; |
| 122 | 122 | ||
| @@ -133,6 +133,98 @@ public class SchedulePlanInfo { | @@ -133,6 +133,98 @@ public class SchedulePlanInfo { | ||
| 133 | @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") | 133 | @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") |
| 134 | private Date updateDate; | 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 | public Long getId() { | 228 | public Long getId() { |
| 137 | return id; | 229 | return id; |
| 138 | } | 230 | } |
| @@ -436,4 +528,12 @@ public class SchedulePlanInfo { | @@ -436,4 +528,12 @@ public class SchedulePlanInfo { | ||
| 436 | public void setCcno(Integer ccno) { | 528 | public void setCcno(Integer ccno) { |
| 437 | this.ccno = ccno; | 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,6 +40,9 @@ public class TTInfo { | ||
| 40 | private String templateType; | 40 | private String templateType; |
| 41 | /** 是否启用调度模版 */ | 41 | /** 是否启用调度模版 */ |
| 42 | private Boolean isEnableDisTemplate; | 42 | private Boolean isEnableDisTemplate; |
| 43 | + | ||
| 44 | + // TODO:还有很多判定条件,这里先不放 | ||
| 45 | + | ||
| 43 | /** 路牌数 */ | 46 | /** 路牌数 */ |
| 44 | private int lpCount; | 47 | private int lpCount; |
| 45 | /** 圈数 */ | 48 | /** 圈数 */ |
| @@ -199,4 +202,5 @@ public class TTInfo { | @@ -199,4 +202,5 @@ public class TTInfo { | ||
| 199 | public void setUpdateDate(Date updateDate) { | 202 | public void setUpdateDate(Date updateDate) { |
| 200 | this.updateDate = updateDate; | 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,6 +13,15 @@ import java.util.Date; | ||
| 13 | */ | 13 | */ |
| 14 | @Entity | 14 | @Entity |
| 15 | @Table(name = "bsth_c_s_ttinfo_detail") | 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 | public class TTInfoDetail { | 25 | public class TTInfoDetail { |
| 17 | 26 | ||
| 18 | /** 主健Id */ | 27 | /** 主健Id */ |
| @@ -22,13 +31,13 @@ public class TTInfoDetail { | @@ -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 | private Line xl; | 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 | private TTInfo ttinfo; | 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 | private GuideboardInfo lp; | 41 | private GuideboardInfo lp; |
| 33 | 42 | ||
| 34 | /** 发车顺序号 */ | 43 | /** 发车顺序号 */ |
| @@ -38,13 +47,13 @@ public class TTInfoDetail { | @@ -38,13 +47,13 @@ public class TTInfoDetail { | ||
| 38 | @Column(nullable = false) | 47 | @Column(nullable = false) |
| 39 | private String xlDir; | 48 | private String xlDir; |
| 40 | /** 起点站关联 */ | 49 | /** 起点站关联 */ |
| 41 | - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) | 50 | + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY) |
| 42 | private Station qdz; | 51 | private Station qdz; |
| 43 | /** 终点站关联 */ | 52 | /** 终点站关联 */ |
| 44 | - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) | 53 | + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY) |
| 45 | private Station zdz; | 54 | private Station zdz; |
| 46 | /** 停车场关联(出场,进场班次会关联停车场) */ | 55 | /** 停车场关联(出场,进场班次会关联停车场) */ |
| 47 | - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) | 56 | + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY) |
| 48 | private CarPark tcc; | 57 | private CarPark tcc; |
| 49 | 58 | ||
| 50 | /** 发车时间(格式 HH:mm) */ | 59 | /** 发车时间(格式 HH:mm) */ |
| @@ -58,11 +67,7 @@ public class TTInfoDetail { | @@ -58,11 +67,7 @@ public class TTInfoDetail { | ||
| 58 | /** 班次历时 */ | 67 | /** 班次历时 */ |
| 59 | private Integer bcsj; | 68 | private Integer bcsj; |
| 60 | 69 | ||
| 61 | - /** | ||
| 62 | - * 班次类型 | ||
| 63 | - * TODO:正常班次、出场、进场、加油、临加班次、区间班次、放空班次、放大站班次、两点间空驶 | ||
| 64 | - * TODO:这个以后用枚举还是字典再议,现在先用文字 | ||
| 65 | - */ | 70 | + /** 班次类型 字典type=ScheduleType */ |
| 66 | @Column(nullable = false) | 71 | @Column(nullable = false) |
| 67 | private String bcType; | 72 | private String bcType; |
| 68 | 73 |
src/main/java/com/bsth/entity/schedule/rule/ScheduleRule1Flat.java
| 1 | package com.bsth.entity.schedule.rule; | 1 | package com.bsth.entity.schedule.rule; |
| 2 | 2 | ||
| 3 | -import com.bsth.entity.Cars; | ||
| 4 | import com.bsth.entity.Line; | 3 | import com.bsth.entity.Line; |
| 4 | +import com.bsth.entity.schedule.CarConfigInfo; | ||
| 5 | import com.bsth.entity.sys.SysUser; | 5 | import com.bsth.entity.sys.SysUser; |
| 6 | 6 | ||
| 7 | import javax.persistence.*; | 7 | import javax.persistence.*; |
| @@ -18,10 +18,22 @@ import java.util.Date; | @@ -18,10 +18,22 @@ import java.util.Date; | ||
| 18 | @Entity | 18 | @Entity |
| 19 | @Table(name = "bsth_c_s_sr1_flat") | 19 | @Table(name = "bsth_c_s_sr1_flat") |
| 20 | @NamedEntityGraphs({ | 20 | @NamedEntityGraphs({ |
| 21 | - @NamedEntityGraph(name = "scheduleRule1Flat_xl_cl", attributeNodes = { | 21 | + @NamedEntityGraph( |
| 22 | + name = "scheduleRule1Flat_xl_carconfig", | ||
| 23 | + attributeNodes = { | ||
| 22 | @NamedAttributeNode("xl"), | 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 | public class ScheduleRule1Flat { | 38 | public class ScheduleRule1Flat { |
| 27 | /** 主键Id */ | 39 | /** 主键Id */ |
| @@ -32,9 +44,10 @@ public class ScheduleRule1Flat { | @@ -32,9 +44,10 @@ public class ScheduleRule1Flat { | ||
| 32 | /** 关联线路 */ | 44 | /** 关联线路 */ |
| 33 | @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY) | 45 | @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY) |
| 34 | private Line xl; | 46 | private Line xl; |
| 35 | - /** 关联车辆 */ | 47 | + /** 关联车辆配置id */ |
| 36 | @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY) | 48 | @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY) |
| 37 | - private Cars cl; | 49 | + private CarConfigInfo carConfigInfo; |
| 50 | + | ||
| 38 | /** 启用日期 */ | 51 | /** 启用日期 */ |
| 39 | @NotNull | 52 | @NotNull |
| 40 | private Date qyrq; | 53 | private Date qyrq; |
| @@ -53,7 +66,7 @@ public class ScheduleRule1Flat { | @@ -53,7 +66,7 @@ public class ScheduleRule1Flat { | ||
| 53 | private String ryDbbms; | 66 | private String ryDbbms; |
| 54 | /** 对应的人员配置ids(用逗号隔开) */ | 67 | /** 对应的人员配置ids(用逗号隔开) */ |
| 55 | @NotNull | 68 | @NotNull |
| 56 | - private String ryIds; | 69 | + private String ryConfigIds; |
| 57 | /** 起始人员(从0开始) */ | 70 | /** 起始人员(从0开始) */ |
| 58 | @NotNull | 71 | @NotNull |
| 59 | private Integer ryStart; | 72 | private Integer ryStart; |
| @@ -90,12 +103,12 @@ public class ScheduleRule1Flat { | @@ -90,12 +103,12 @@ public class ScheduleRule1Flat { | ||
| 90 | this.xl = xl; | 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 | public Date getQyrq() { | 114 | public Date getQyrq() { |
| @@ -138,12 +151,12 @@ public class ScheduleRule1Flat { | @@ -138,12 +151,12 @@ public class ScheduleRule1Flat { | ||
| 138 | this.ryDbbms = ryDbbms; | 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 | public Integer getRyStart() { | 162 | public Integer getRyStart() { |
src/main/java/com/bsth/repository/schedule/CarConfigInfoRepository.java
| @@ -21,7 +21,11 @@ public interface CarConfigInfoRepository extends BaseRepository<CarConfigInfo, L | @@ -21,7 +21,11 @@ public interface CarConfigInfoRepository extends BaseRepository<CarConfigInfo, L | ||
| 21 | @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH) | 21 | @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH) |
| 22 | @Override | 22 | @Override |
| 23 | Page<CarConfigInfo> findAll(Specification<CarConfigInfo> spec, Pageable pageable); | 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 | @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH) | 29 | @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH) |
| 26 | @Override | 30 | @Override |
| 27 | List<CarConfigInfo> findAll(); | 31 | List<CarConfigInfo> findAll(); |
src/main/java/com/bsth/repository/schedule/EmployeeConfigInfoRepository.java
| @@ -28,6 +28,10 @@ public interface EmployeeConfigInfoRepository extends BaseRepository<EmployeeCon | @@ -28,6 +28,10 @@ public interface EmployeeConfigInfoRepository extends BaseRepository<EmployeeCon | ||
| 28 | Page<EmployeeConfigInfo> findAll(Specification<EmployeeConfigInfo> spec, Pageable pageable); | 28 | Page<EmployeeConfigInfo> findAll(Specification<EmployeeConfigInfo> spec, Pageable pageable); |
| 29 | 29 | ||
| 30 | @EntityGraph(value = "employeeConfigInfo_jsy_spy_xl", type = EntityGraph.EntityGraphType.FETCH) | 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 | @Query("select cc from EmployeeConfigInfo cc where cc.id=?1") | 35 | @Query("select cc from EmployeeConfigInfo cc where cc.id=?1") |
| 32 | EmployeeConfigInfo findOneExtend(Long aLong); | 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,6 +5,9 @@ import com.bsth.repository.BaseRepository; | ||
| 5 | 5 | ||
| 6 | import java.util.List; | 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 | import org.springframework.data.jpa.repository.Query; | 11 | import org.springframework.data.jpa.repository.Query; |
| 9 | import org.springframework.stereotype.Repository; | 12 | import org.springframework.stereotype.Repository; |
| 10 | 13 | ||
| @@ -16,4 +19,5 @@ public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanI | @@ -16,4 +19,5 @@ public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanI | ||
| 16 | 19 | ||
| 17 | @Query(value = "select * from bsth_c_s_sp_info where DATE_FORMAT(schedule_date, '%Y-%m-%d')=?1", nativeQuery = true) | 20 | @Query(value = "select * from bsth_c_s_sp_info where DATE_FORMAT(schedule_date, '%Y-%m-%d')=?1", nativeQuery = true) |
| 18 | List<SchedulePlanInfo> findByDate(String dateformat); | 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<SchedulePlan, Lon | @@ -16,4 +16,5 @@ public interface SchedulePlanRepository extends BaseRepository<SchedulePlan, Lon | ||
| 16 | @EntityGraph(value = "schedulePlan_xl_ttinfo", type = EntityGraph.EntityGraphType.FETCH) | 16 | @EntityGraph(value = "schedulePlan_xl_ttinfo", type = EntityGraph.EntityGraphType.FETCH) |
| 17 | @Override | 17 | @Override |
| 18 | Page<SchedulePlan> findAll(Specification<SchedulePlan> spec, Pageable pageable); | 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 | import com.bsth.entity.schedule.rule.ScheduleRule1Flat; | 3 | import com.bsth.entity.schedule.rule.ScheduleRule1Flat; |
| 4 | +import com.bsth.repository.BaseRepository; | ||
| 4 | import org.springframework.data.domain.Page; | 5 | import org.springframework.data.domain.Page; |
| 5 | import org.springframework.data.domain.Pageable; | 6 | import org.springframework.data.domain.Pageable; |
| 6 | import org.springframework.data.jpa.domain.Specification; | 7 | import org.springframework.data.jpa.domain.Specification; |
| @@ -14,11 +15,11 @@ import org.springframework.stereotype.Repository; | @@ -14,11 +15,11 @@ import org.springframework.stereotype.Repository; | ||
| 14 | @Repository | 15 | @Repository |
| 15 | public interface ScheduleRule1FlatRepository extends BaseRepository<ScheduleRule1Flat, Long> { | 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 | @Override | 19 | @Override |
| 19 | Page<ScheduleRule1Flat> findAll(Specification<ScheduleRule1Flat> spec, Pageable pageable); | 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 | @Query("select cc from ScheduleRule1Flat cc where cc.id=?1") | 23 | @Query("select cc from ScheduleRule1Flat cc where cc.id=?1") |
| 23 | ScheduleRule1Flat findOneExtend(Long aLong); | 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,11 +2,25 @@ package com.bsth.repository.schedule; | ||
| 2 | 2 | ||
| 3 | import com.bsth.entity.schedule.TTInfoDetail; | 3 | import com.bsth.entity.schedule.TTInfoDetail; |
| 4 | import com.bsth.repository.BaseRepository; | 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 | import org.springframework.stereotype.Repository; | 9 | import org.springframework.stereotype.Repository; |
| 6 | 10 | ||
| 11 | +import java.util.List; | ||
| 12 | + | ||
| 7 | /** | 13 | /** |
| 8 | * Created by xu on 16/7/2. | 14 | * Created by xu on 16/7/2. |
| 9 | */ | 15 | */ |
| 10 | @Repository | 16 | @Repository |
| 11 | public interface TTInfoDetailRepository extends BaseRepository<TTInfoDetail, Long> { | 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 | package com.bsth.service.schedule; | 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 | import com.bsth.entity.schedule.rule.ScheduleRule1Flat; | 5 | import com.bsth.entity.schedule.rule.ScheduleRule1Flat; |
| 6 | +import com.bsth.repository.schedule.SchedulePlanRepository; | ||
| 7 | +import com.bsth.service.LineService; | ||
| 5 | import com.bsth.service.impl.BaseServiceImpl; | 8 | import com.bsth.service.impl.BaseServiceImpl; |
| 6 | import com.bsth.service.schedule.rules.shiftloop.ScheduleCalcuParam_input; | 9 | import com.bsth.service.schedule.rules.shiftloop.ScheduleCalcuParam_input; |
| 10 | +import com.bsth.service.schedule.rules.shiftloop.ScheduleResult_output; | ||
| 7 | import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output; | 11 | import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output; |
| 8 | 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; | ||
| 14 | +import com.google.common.collect.Multimap; | ||
| 9 | import org.kie.api.KieBase; | 15 | import org.kie.api.KieBase; |
| 10 | import org.kie.api.runtime.KieSession; | 16 | import org.kie.api.runtime.KieSession; |
| 11 | import org.springframework.beans.factory.annotation.Autowired; | 17 | import org.springframework.beans.factory.annotation.Autowired; |
| @@ -25,6 +31,12 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl<SchedulePlan, Long> | @@ -25,6 +31,12 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl<SchedulePlan, Long> | ||
| 25 | private KieBase kieBase; | 31 | private KieBase kieBase; |
| 26 | @Autowired | 32 | @Autowired |
| 27 | private ScheduleRule1FlatService scheduleRule1FlatService; | 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 | @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) | 41 | @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) |
| 30 | @Override | 42 | @Override |
| @@ -33,11 +45,14 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl<SchedulePlan, Long> | @@ -33,11 +45,14 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl<SchedulePlan, Long> | ||
| 33 | Map<String, Object> param = new HashMap<>(); | 45 | Map<String, Object> param = new HashMap<>(); |
| 34 | 46 | ||
| 35 | // 1、查出指定线路的所有规则 | 47 | // 1、查出指定线路的所有规则 |
| 48 | + Line xl = lineService.findById(schedulePlan.getXl().getId()); // 查找线路具体信息 | ||
| 36 | param.clear(); | 49 | param.clear(); |
| 37 | - param.put("xl.id_eq", schedulePlan.getXl().getId()); | 50 | + param.put("xl.id_eq", xl.getId()); |
| 38 | Iterable<ScheduleRule1Flat> scheduleRule1FlatIterable = scheduleRule1FlatService.list(param); | 51 | Iterable<ScheduleRule1Flat> scheduleRule1FlatIterable = scheduleRule1FlatService.list(param); |
| 39 | if (!scheduleRule1FlatIterable.iterator().hasNext()) | 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 | // 2-1、构造drools规则输入数据,输出数据 | 57 | // 2-1、构造drools规则输入数据,输出数据 |
| 43 | // 全局计算参数 | 58 | // 全局计算参数 |
| @@ -69,13 +84,39 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl<SchedulePlan, Long> | @@ -69,13 +84,39 @@ public class SchedulePlanServiceImpl extends BaseServiceImpl<SchedulePlan, Long> | ||
| 69 | // 执行完毕销毁,有日志的也要关闭 | 84 | // 执行完毕销毁,有日志的也要关闭 |
| 70 | session.dispose(); | 85 | session.dispose(); |
| 71 | 86 | ||
| 72 | - | ||
| 73 | - // TODO: | ||
| 74 | - | ||
| 75 | System.out.println(scheduleResults_output.showGuideboardDesc1()); | 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,12 +41,12 @@ public class ScheduleRule_input { | ||
| 41 | this.guideboardIds.add(Long.parseLong(lpId)); | 41 | this.guideboardIds.add(Long.parseLong(lpId)); |
| 42 | } | 42 | } |
| 43 | this.startGbdIndex = scheduleRule1Flat.getLpStart(); | 43 | this.startGbdIndex = scheduleRule1Flat.getLpStart(); |
| 44 | - List<String> ryCids = Splitter.on(",").splitToList(scheduleRule1Flat.getRyIds()); | 44 | + List<String> ryCids = Splitter.on(",").splitToList(scheduleRule1Flat.getRyConfigIds()); |
| 45 | for (String ryCid : ryCids) { | 45 | for (String ryCid : ryCids) { |
| 46 | this.employeeConfigIds.add(Long.parseLong(ryCid)); | 46 | this.employeeConfigIds.add(Long.parseLong(ryCid)); |
| 47 | } | 47 | } |
| 48 | this.startEIndex = scheduleRule1Flat.getRyStart(); | 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 | package com.bsth.service.schedule.utils; | 1 | package com.bsth.service.schedule.utils; |
| 2 | 2 | ||
| 3 | import com.google.common.io.Files; | 3 | import com.google.common.io.Files; |
| 4 | +import org.pentaho.di.core.KettleEnvironment; | ||
| 5 | +import org.pentaho.di.core.util.EnvUtil; | ||
| 4 | import org.pentaho.di.trans.Trans; | 6 | import org.pentaho.di.trans.Trans; |
| 5 | import org.pentaho.di.trans.TransMeta; | 7 | import org.pentaho.di.trans.TransMeta; |
| 6 | import org.springframework.beans.factory.InitializingBean; | 8 | import org.springframework.beans.factory.InitializingBean; |
| @@ -10,6 +12,9 @@ import org.springframework.stereotype.Service; | @@ -10,6 +12,9 @@ import org.springframework.stereotype.Service; | ||
| 10 | import org.springframework.web.multipart.MultipartFile; | 12 | import org.springframework.web.multipart.MultipartFile; |
| 11 | 13 | ||
| 12 | import java.io.File; | 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 | * Created by xu on 16/6/23. | 20 | * Created by xu on 16/6/23. |
| @@ -21,18 +26,49 @@ public class DataImportExportServiceImpl implements DataImportExportService, Ini | @@ -21,18 +26,49 @@ public class DataImportExportServiceImpl implements DataImportExportService, Ini | ||
| 21 | @Autowired | 26 | @Autowired |
| 22 | private DataToolsProperties dataToolsProperties; | 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 | @Override | 60 | @Override |
| 25 | public void afterPropertiesSet() throws Exception { | 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 | @Override | 74 | @Override |
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
| @@ -22,6 +22,10 @@ public class DataToolsProperties { | @@ -22,6 +22,10 @@ public class DataToolsProperties { | ||
| 22 | @NotNull | 22 | @NotNull |
| 23 | private String transErrordir; | 23 | private String transErrordir; |
| 24 | 24 | ||
| 25 | + /** kettle配置文件路径 */ | ||
| 26 | + @NotNull | ||
| 27 | + private String kettleProperties; | ||
| 28 | + | ||
| 25 | /** ktr通用变量-数据库ip地址 */ | 29 | /** ktr通用变量-数据库ip地址 */ |
| 26 | @NotNull | 30 | @NotNull |
| 27 | private String kvarsDbip; | 31 | private String kvarsDbip; |
| @@ -173,4 +177,12 @@ public class DataToolsProperties { | @@ -173,4 +177,12 @@ public class DataToolsProperties { | ||
| 173 | public void setTtinfodetailDatainputktr(String ttinfodetailDatainputktr) { | 177 | public void setTtinfodetailDatainputktr(String ttinfodetailDatainputktr) { |
| 174 | this.ttinfodetailDatainputktr = ttinfodetailDatainputktr; | 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,6 +5,9 @@ datatools.fileupload_dir=/Users/xu/resource/project/bsth_control_u_d_files | ||
| 5 | # ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正) | 5 | # ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正) |
| 6 | datatools.trans_errordir=/Users/xu/resource/project/bsth_control_u_d_files/erroroutput | 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 | ##------------------ ktr通用变量 ------------------ | 11 | ##------------------ ktr通用变量 ------------------ |
| 9 | #数据库ip地址 | 12 | #数据库ip地址 |
| 10 | datatools.kvars_dbip=localhost | 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,5 +68,5 @@ | ||
| 68 | </div> | 68 | </div> |
| 69 | 69 | ||
| 70 | <div class="modal-footer"> | 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 | </div> | 72 | </div> |
| 73 | \ No newline at end of file | 73 | \ No newline at end of file |
src/main/resources/static/pages/scheduleApp/module/basicInfo/busInfoManage/list.html
| @@ -4,15 +4,15 @@ | @@ -4,15 +4,15 @@ | ||
| 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 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 | </tr> | 16 | </tr> |
| 17 | <tr role="row" class="filter"> | 17 | <tr role="row" class="filter"> |
| 18 | <td></td> | 18 | <td></td> |
| @@ -58,31 +58,31 @@ | @@ -58,31 +58,31 @@ | ||
| 58 | </thead> | 58 | </thead> |
| 59 | <tbody> | 59 | <tbody> |
| 60 | <tr ng-repeat="info in ctrl.pageInfo.infos" class="odd gradeX"> | 60 | <tr ng-repeat="info in ctrl.pageInfo.infos" class="odd gradeX"> |
| 61 | - <td class="mixTd"> | 61 | + <td> |
| 62 | <span ng-bind="$index + 1"></span> | 62 | <span ng-bind="$index + 1"></span> |
| 63 | </td> | 63 | </td> |
| 64 | - <td class="mixTd"> | 64 | + <td> |
| 65 | <span ng-bind="info.carCode"></span> | 65 | <span ng-bind="info.carCode"></span> |
| 66 | </td> | 66 | </td> |
| 67 | - <td class="mixTd"> | 67 | + <td> |
| 68 | <span ng-bind="info.insideCode"></span> | 68 | <span ng-bind="info.insideCode"></span> |
| 69 | </td> | 69 | </td> |
| 70 | - <td class="mixTd"> | 70 | + <td> |
| 71 | <span ng-bind="info.equipmentCode"></span> | 71 | <span ng-bind="info.equipmentCode"></span> |
| 72 | </td> | 72 | </td> |
| 73 | - <td class="mixTd"> | 73 | + <td> |
| 74 | <span ng-bind="info.carPlate"></span> | 74 | <span ng-bind="info.carPlate"></span> |
| 75 | </td> | 75 | </td> |
| 76 | - <td class="mixTd"> | 76 | + <td> |
| 77 | <span ng-bind="info.company"></span> | 77 | <span ng-bind="info.company"></span> |
| 78 | </td> | 78 | </td> |
| 79 | - <td class="mixTd"> | 79 | + <td> |
| 80 | <span ng-bind="info.brancheCompany"></span> | 80 | <span ng-bind="info.brancheCompany"></span> |
| 81 | </td> | 81 | </td> |
| 82 | - <td class="mixTd"> | 82 | + <td> |
| 83 | <span ng-bind="info.sfdc | dict:'truefalseType':'未知' "></span> | 83 | <span ng-bind="info.sfdc | dict:'truefalseType':'未知' "></span> |
| 84 | </td> | 84 | </td> |
| 85 | - <td class="mixTd"> | 85 | + <td> |
| 86 | <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>--> | 86 | <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>--> |
| 87 | <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>--> | 87 | <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>--> |
| 88 | <a ui-sref="busInfoManage_detail({id: info.id})" class="btn default blue-stripe btn-sm"> 详细 </a> | 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 | <!-- ui-route deviceInfoManage.list --> | 1 | <!-- ui-route deviceInfoManage.list --> |
| 2 | <div ng-controller="DeviceInfoManageListCtrl as ctrl"> | 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 | <div style="text-align: right;"> | 93 | <div style="text-align: right;"> |
| 99 | <uib-pagination total-items="ctrl.pageInfo.totalItems" | 94 | <uib-pagination total-items="ctrl.pageInfo.totalItems" |
src/main/resources/static/pages/scheduleApp/module/basicInfo/employeeInfoManage/list.html
| @@ -4,14 +4,14 @@ | @@ -4,14 +4,14 @@ | ||
| 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 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 | </tr> | 15 | </tr> |
| 16 | <tr role="row" class="filter"> | 16 | <tr role="row" class="filter"> |
| 17 | <td> | 17 | <td> |
| @@ -64,25 +64,25 @@ | @@ -64,25 +64,25 @@ | ||
| 64 | </thead> | 64 | </thead> |
| 65 | <tbody> | 65 | <tbody> |
| 66 | <tr ng-repeat="info in ctrl.pageInfo.infos" class="odd gradeX"> | 66 | <tr ng-repeat="info in ctrl.pageInfo.infos" class="odd gradeX"> |
| 67 | - <td class="mixTd"> | 67 | + <td> |
| 68 | <span ng-bind="$index + 1"></span> | 68 | <span ng-bind="$index + 1"></span> |
| 69 | </td> | 69 | </td> |
| 70 | - <td class="mixTd"> | 70 | + <td> |
| 71 | <span ng-bind="info.personnelName"></span> | 71 | <span ng-bind="info.personnelName"></span> |
| 72 | </td> | 72 | </td> |
| 73 | - <td class="mixTd"> | 73 | + <td> |
| 74 | <span ng-bind="info.jobCode"></span> | 74 | <span ng-bind="info.jobCode"></span> |
| 75 | </td> | 75 | </td> |
| 76 | - <td class="mixTd"> | 76 | + <td> |
| 77 | <span ng-bind="info.personnelType | dict:'sexType':'未知'"></span> | 77 | <span ng-bind="info.personnelType | dict:'sexType':'未知'"></span> |
| 78 | </td> | 78 | </td> |
| 79 | - <td class="mixTd"> | 79 | + <td> |
| 80 | <span ng-bind="info.company"></span> | 80 | <span ng-bind="info.company"></span> |
| 81 | </td> | 81 | </td> |
| 82 | - <td class="mixTd"> | 82 | + <td> |
| 83 | <span ng-bind="info.brancheCompany"></span> | 83 | <span ng-bind="info.brancheCompany"></span> |
| 84 | </td> | 84 | </td> |
| 85 | - <td class="mixTd"> | 85 | + <td> |
| 86 | <span ng-bind="info.posts | dict:'gzType':'未知'"></span> | 86 | <span ng-bind="info.posts | dict:'gzType':'未知'"></span> |
| 87 | </td> | 87 | </td> |
| 88 | <td> | 88 | <td> |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/form.html
| @@ -58,25 +58,6 @@ | @@ -58,25 +58,6 @@ | ||
| 58 | 线路必须选择 | 58 | 线路必须选择 |
| 59 | </div> | 59 | </div> |
| 60 | </div> | 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 | <div class="form-group"> | 61 | <div class="form-group"> |
| 81 | <label class="col-md-2 control-label">开始日期*:</label> | 62 | <label class="col-md-2 control-label">开始日期*:</label> |
| 82 | <div class="col-md-3"> | 63 | <div class="col-md-3"> |
| @@ -131,11 +112,10 @@ | @@ -131,11 +112,10 @@ | ||
| 131 | <div class="col-md-offset-3 col-md-4"> | 112 | <div class="col-md-offset-3 col-md-4"> |
| 132 | <button type="submit" class="btn green" | 113 | <button type="submit" class="btn green" |
| 133 | ng-disabled="myForm.xl.$error.required || | 114 | ng-disabled="myForm.xl.$error.required || |
| 134 | - myForm.ttInfo.$error.required || | ||
| 135 | myForm.scheduleFromTime.$error.required || | 115 | myForm.scheduleFromTime.$error.required || |
| 136 | myForm.scheduleToTime.$error.required" | 116 | myForm.scheduleToTime.$error.required" |
| 137 | ><i class="fa fa-check"></i> 提交</button> | 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 | </div> | 119 | </div> |
| 140 | </div> | 120 | </div> |
| 141 | </div> | 121 | </div> |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/index.html
| @@ -31,29 +31,6 @@ | @@ -31,29 +31,6 @@ | ||
| 31 | <i class="fa fa-plus"></i> | 31 | <i class="fa fa-plus"></i> |
| 32 | 生成计划 | 32 | 生成计划 |
| 33 | </a> | 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 | </div> | 34 | </div> |
| 58 | </div> | 35 | </div> |
| 59 | 36 |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/list.html
| 1 | <!-- ui-route employeeInfoManage.list --> | 1 | <!-- ui-route employeeInfoManage.list --> |
| 2 | <div ng-controller="SchedulePlanManageListCtrl as ctrl"> | 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 | <thead> | 4 | <thead> |
| 5 | <tr role="row" class="heading"> | 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 | <th>排班开始时间</th> | 9 | <th>排班开始时间</th> |
| 10 | <th>排班结束时间</th> | 10 | <th>排班结束时间</th> |
| 11 | <th>修改人</th> | 11 | <th>修改人</th> |
| 12 | <th>修改时间</th> | 12 | <th>修改时间</th> |
| 13 | - <th width="14%">操作</th> | 13 | + <th style="width: 115pt;">操作</th> |
| 14 | </tr> | 14 | </tr> |
| 15 | <tr role="row" class="filter"> | 15 | <tr role="row" class="filter"> |
| 16 | <td></td> | 16 | <td></td> |
| 17 | <td> | 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 | </td> | 25 | </td> |
| 28 | <td></td> | 26 | <td></td> |
| 29 | <td></td> | 27 | <td></td> |
| @@ -68,7 +66,7 @@ | @@ -68,7 +66,7 @@ | ||
| 68 | <td> | 66 | <td> |
| 69 | <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>--> | 67 | <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>--> |
| 70 | <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>--> | 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 | </td> | 70 | </td> |
| 73 | </tr> | 71 | </tr> |
| 74 | </tbody> | 72 | </tbody> |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/list_info.html
| 1 | <!-- ui-route busInfoManage.list --> | 1 | <!-- ui-route busInfoManage.list --> |
| 2 | <div ng-controller="SchedulePlanInfoManageListCtrl as ctrl"> | 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 | <div style="text-align: right;"> | 110 | <div style="text-align: right;"> |
| 116 | <uib-pagination total-items="ctrl.pageInfo.totalItems" | 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('ScheduleApp').factory('SchedulePlanInfoManageService', ['Schedul | @@ -35,9 +35,10 @@ angular.module('ScheduleApp').factory('SchedulePlanInfoManageService', ['Schedul | ||
| 35 | * @param params 查询参数 | 35 | * @param params 查询参数 |
| 36 | * @return 返回一个 promise | 36 | * @return 返回一个 promise |
| 37 | */ | 37 | */ |
| 38 | - getPage: function() { | 38 | + getPage: function(spid) { |
| 39 | var params = currentSearchCondition; // 查询条件 | 39 | var params = currentSearchCondition; // 查询条件 |
| 40 | params.page = currentPageNo - 1; // 服务端页码从0开始 | 40 | params.page = currentPageNo - 1; // 服务端页码从0开始 |
| 41 | + params["schedulePlan.id_eq"] = spid; // 排班id | ||
| 41 | return service.rest.list(params).$promise; | 42 | return service.rest.list(params).$promise; |
| 42 | } | 43 | } |
| 43 | 44 | ||
| @@ -45,8 +46,10 @@ angular.module('ScheduleApp').factory('SchedulePlanInfoManageService', ['Schedul | @@ -45,8 +46,10 @@ angular.module('ScheduleApp').factory('SchedulePlanInfoManageService', ['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 | var self = this; | 50 | var self = this; |
| 51 | + var spid = $stateParams.spid; // 排班规则id | ||
| 52 | + $scope.spid = spid; | ||
| 50 | 53 | ||
| 51 | // 切换到form状态 | 54 | // 切换到form状态 |
| 52 | self.goForm = function() { | 55 | self.goForm = function() { |
| @@ -55,7 +58,7 @@ angular.module('ScheduleApp').controller('SchedulePlanInfoManageCtrl', ['Schedul | @@ -55,7 +58,7 @@ angular.module('ScheduleApp').controller('SchedulePlanInfoManageCtrl', ['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 | var self = this; | 62 | var self = this; |
| 60 | self.pageInfo = { | 63 | self.pageInfo = { |
| 61 | totalItems : 0, | 64 | totalItems : 0, |
| @@ -63,8 +66,10 @@ angular.module('ScheduleApp').controller('SchedulePlanInfoManageListCtrl', ['Sch | @@ -63,8 +66,10 @@ angular.module('ScheduleApp').controller('SchedulePlanInfoManageListCtrl', ['Sch | ||
| 63 | infos: [] | 66 | infos: [] |
| 64 | }; | 67 | }; |
| 65 | 68 | ||
| 69 | + var spid = $scope.spid; | ||
| 70 | + | ||
| 66 | // 初始创建的时候,获取一次列表数据 | 71 | // 初始创建的时候,获取一次列表数据 |
| 67 | - schedulePlanInfoManageService.getPage().then( | 72 | + schedulePlanInfoManageService.getPage(spid).then( |
| 68 | function(result) { | 73 | function(result) { |
| 69 | self.pageInfo.totalItems = result.totalElements; | 74 | self.pageInfo.totalItems = result.totalElements; |
| 70 | self.pageInfo.currentPage = result.number + 1; | 75 | self.pageInfo.currentPage = result.number + 1; |
| @@ -83,7 +88,7 @@ angular.module('ScheduleApp').controller('SchedulePlanInfoManageListCtrl', ['Sch | @@ -83,7 +88,7 @@ angular.module('ScheduleApp').controller('SchedulePlanInfoManageListCtrl', ['Sch | ||
| 83 | // 翻页的时候调用 | 88 | // 翻页的时候调用 |
| 84 | self.pageChanaged = function() { | 89 | self.pageChanaged = function() { |
| 85 | schedulePlanInfoManageService.setCurrentPageNo(self.pageInfo.currentPage); | 90 | schedulePlanInfoManageService.setCurrentPageNo(self.pageInfo.currentPage); |
| 86 | - schedulePlanInfoManageService.getPage().then( | 91 | + schedulePlanInfoManageService.getPage(spid).then( |
| 87 | function(result) { | 92 | function(result) { |
| 88 | self.pageInfo.totalItems = result.totalElements; | 93 | self.pageInfo.totalItems = result.totalElements; |
| 89 | self.pageInfo.currentPage = result.number + 1; | 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,11 +29,21 @@ form input.ng-valid.ng-dirty.ng-valid-required { | ||
| 29 | margin-left: -10%; | 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 | white-space: nowrap; | 46 | white-space: nowrap; |
| 34 | overflow: hidden; | 47 | overflow: hidden; |
| 35 | text-overflow: ellipsis; | 48 | text-overflow: ellipsis; |
| 36 | } | 49 | } |
| 37 | -.fixTable { | ||
| 38 | - table-layout: fixed; | ||
| 39 | -} | ||
| 40 | \ No newline at end of file | 50 | \ No newline at end of file |
src/main/resources/static/pages/scheduleApp/module/main.js
| @@ -733,7 +733,7 @@ ScheduleApp.config(['$stateProvider', '$urlRouterProvider', function($stateProvi | @@ -733,7 +733,7 @@ ScheduleApp.config(['$stateProvider', '$urlRouterProvider', function($stateProvi | ||
| 733 | 733 | ||
| 734 | // 排班计划明细管理模块 | 734 | // 排班计划明细管理模块 |
| 735 | .state("schedulePlanInfoManage", { | 735 | .state("schedulePlanInfoManage", { |
| 736 | - url: '/schedulePlanInfoManage', | 736 | + url: '/schedulePlanInfoManage/:spid', |
| 737 | views: { | 737 | views: { |
| 738 | "": { | 738 | "": { |
| 739 | templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/index_info.html' | 739 | templateUrl: 'pages/scheduleApp/module/core/schedulePlanManage/index_info.html' |
| @@ -1043,7 +1043,7 @@ angular.module('ScheduleApp').factory('SchedulePlanInfoManageService_g', ['$reso | @@ -1043,7 +1043,7 @@ angular.module('ScheduleApp').factory('SchedulePlanInfoManageService_g', ['$reso | ||
| 1043 | return { | 1043 | return { |
| 1044 | rest : $resource( | 1044 | rest : $resource( |
| 1045 | '/spic/:id', | 1045 | '/spic/:id', |
| 1046 | - {order: 'createDate', direction: 'DESC', id: '@id_route'}, | 1046 | + {order: 'scheduleDate', direction: 'ASC', id: '@id_route'}, |
| 1047 | { | 1047 | { |
| 1048 | list: { | 1048 | list: { |
| 1049 | method: 'GET', | 1049 | method: 'GET', |