Commit 6d4822f7ed686e211efa7f30fe0cb5f93565727e
Merge branch 'master' of 192.168.168.201:panzhaov5/bsth_control
Showing
71 changed files
with
1015 additions
and
477 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<SchedulePlan, Long> { |
| 31 | 35 | return baseService.save(t); |
| 32 | 36 | } |
| 33 | 37 | |
| 38 | + | |
| 34 | 39 | } | ... | ... |
src/main/java/com/bsth/controller/schedule/SchedulePlanInfoController.java
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<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<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<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<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<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/impl/StationRouteServiceImpl.java
| ... | ... | @@ -552,9 +552,11 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 552 | 552 | |
| 553 | 553 | String textStr = newTextFileToFTP(objects,lineId); |
| 554 | 554 | |
| 555 | - textStr = line.getName() + " " + "2" + "\r\n" + textStr; | |
| 555 | + /*textStr = line.getName() + "\t" + "2" + "\r\n" + textStr;*/ | |
| 556 | 556 | |
| 557 | - InputStream input = new ByteArrayInputStream(textStr.getBytes("utf-8")); | |
| 557 | + textStr = line.getName() + "\t" + "2" + "\r" + textStr; | |
| 558 | + | |
| 559 | + InputStream input = new ByteArrayInputStream(textStr.getBytes("gbk")); | |
| 558 | 560 | |
| 559 | 561 | /** 生成text文件 */ |
| 560 | 562 | clientUtils.uploadFile(url, port, username, password, remotePath, textFileName, input); |
| ... | ... | @@ -611,37 +613,37 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 611 | 613 | // 纬度 |
| 612 | 614 | String lat = objects.get(i)[1].equals("") ? "" : objects.get(i)[1].toString(); |
| 613 | 615 | |
| 614 | - lat = " " + lat; | |
| 616 | + lat = "\t" + lat; | |
| 615 | 617 | |
| 616 | 618 | // 站点类型 |
| 617 | 619 | String stationMake = objects.get(i)[3].equals("") ? "" : objects.get(i)[3].toString(); |
| 618 | 620 | |
| 619 | 621 | if(stationMake.equals("E")) { |
| 620 | 622 | |
| 621 | - stationMake = " " + "2"; | |
| 623 | + stationMake = "\t" + "2"; | |
| 622 | 624 | |
| 623 | 625 | }else { |
| 624 | 626 | |
| 625 | - stationMake =" " + "1"; | |
| 627 | + stationMake ="\t" + "1"; | |
| 626 | 628 | |
| 627 | 629 | } |
| 628 | 630 | |
| 629 | 631 | // 站点序号 |
| 630 | 632 | String stationNo = objects.get(i)[4].equals("") ? "" : objects.get(i)[4].toString(); |
| 631 | 633 | |
| 632 | - stationNo = " " + stationNo; | |
| 634 | + stationNo = "\t" + stationNo; | |
| 633 | 635 | |
| 634 | 636 | // 站点编码 |
| 635 | 637 | String stationCode = objects.get(i)[5].equals("") ? "" : objects.get(i)[5].toString(); |
| 636 | 638 | |
| 637 | - stationCode = " " +stationCode; | |
| 639 | + stationCode = "\t" +stationCode; | |
| 638 | 640 | |
| 639 | 641 | double dis = objects.get(i)[6]==null ? 0.0 : Double.parseDouble(objects.get(i)[6].toString()); |
| 640 | 642 | |
| 641 | 643 | double tempd = dis*1000; |
| 642 | 644 | |
| 643 | 645 | // 站点距离 |
| 644 | - String staitondistance = " " + String.valueOf((int) tempd); | |
| 646 | + String staitondistance = "\t" + String.valueOf((int) tempd); | |
| 645 | 647 | |
| 646 | 648 | // 站点名称 |
| 647 | 649 | String stationName = objects.get(i)[7].equals("") ? "" : objects.get(i)[7].toString(); |
| ... | ... | @@ -659,7 +661,7 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 659 | 661 | |
| 660 | 662 | sleepStr = sobje.get(0)[2] == null ? "" : sobje.get(0)[2].toString(); |
| 661 | 663 | |
| 662 | - sleepStr = " " + sleepStr; | |
| 664 | + sleepStr = "\t" + sleepStr; | |
| 663 | 665 | |
| 664 | 666 | }else if(sobje.size()>1){ |
| 665 | 667 | |
| ... | ... | @@ -674,7 +676,7 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 674 | 676 | |
| 675 | 677 | sleepStr = sobje.get(j)[2].toString(); |
| 676 | 678 | |
| 677 | - sleepStr = " " + sleepStr; | |
| 679 | + sleepStr = "\t" + sleepStr; | |
| 678 | 680 | |
| 679 | 681 | } |
| 680 | 682 | |
| ... | ... | @@ -697,10 +699,10 @@ public class StationRouteServiceImpl extends BaseServiceImpl<StationRoute, Integ |
| 697 | 699 | } |
| 698 | 700 | |
| 699 | 701 | if(sleepStr.equals("")) |
| 700 | - sleepStr = " " + "60"; | |
| 702 | + sleepStr = "\t" + "60"; | |
| 701 | 703 | |
| 702 | 704 | |
| 703 | - stationName = " " +stationName; | |
| 705 | + stationName = "\t" +stationName; | |
| 704 | 706 | |
| 705 | 707 | stationRStr = stationRStr + lng + lat + stationMake + stationNo + stationCode + staitondistance + sleepStr + stationName + enterStr; |
| 706 | 708 | ... | ... |
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<SchedulePlan, Long> |
| 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<SchedulePlan, Long> |
| 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<SchedulePlan, Long> |
| 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/base/carpark/add.html
| ... | ... | @@ -120,7 +120,7 @@ |
| 120 | 120 | <!-- 站点位置 --> |
| 121 | 121 | <div class="tab-pane" id="tab2"> |
| 122 | 122 | <h3 class="block"> 站点位置 </h3> |
| 123 | - <div id="bmap_basic"></div> | |
| 123 | + <div id="addCarParkbmap_basic"></div> | |
| 124 | 124 | |
| 125 | 125 | <div class="leftUtils"> |
| 126 | 126 | <div class="btn-group" style="left: 100px;"> | ... | ... |
src/main/resources/static/pages/base/carpark/css/carpark-add.css
src/main/resources/static/pages/base/carpark/css/positions.css
src/main/resources/static/pages/base/carpark/edit_select.html
| ... | ... | @@ -143,6 +143,10 @@ $('#editPositions_select_mobal').on('editSelectMobal_show', function(e, map,fun, |
| 143 | 143 | // 隐藏弹出层 |
| 144 | 144 | $('#editPositions_select_mobal').modal('hide'); |
| 145 | 145 | |
| 146 | + $('#eidt').attr("disabled",true); | |
| 147 | + | |
| 148 | + $('#eidt').addClass('btn disabled'); | |
| 149 | + | |
| 146 | 150 | // 表单序列 |
| 147 | 151 | var params = form.serializeJSON(); |
| 148 | 152 | ... | ... |
src/main/resources/static/pages/base/carpark/js/add-form-events.js
| ... | ... | @@ -12,13 +12,13 @@ $(function(){ |
| 12 | 12 | |
| 13 | 13 | $('#oppenDrawingManager').on('click',function() { |
| 14 | 14 | |
| 15 | - VmapWorlds.drawingManagerOpen(); | |
| 15 | + addCarParkVmapWorlds.drawingManagerOpen(); | |
| 16 | 16 | |
| 17 | 17 | }); |
| 18 | 18 | |
| 19 | 19 | $('#closeDrawingManager').on('click',function() { |
| 20 | 20 | |
| 21 | - VmapWorlds.drawingManagerClose(); | |
| 21 | + addCarParkVmapWorlds.drawingManagerClose(); | |
| 22 | 22 | |
| 23 | 23 | }); |
| 24 | 24 | ... | ... |
src/main/resources/static/pages/base/carpark/js/add-form-reload.js
src/main/resources/static/pages/base/carpark/js/add-form-wizard.js
| ... | ... | @@ -266,19 +266,27 @@ var FormWizard = function() { |
| 266 | 266 | // 设置停车场名称 |
| 267 | 267 | $('#parkNameInput').val(stationNameV); |
| 268 | 268 | |
| 269 | - VmapWorlds.localSearchFromAdreesToPoint(stationNameV,function(p) {}); | |
| 270 | - | |
| 271 | 269 | if(baseResValue == 0) { |
| 272 | - | |
| 273 | - $('.leftUtils').hide(); | |
| 274 | - | |
| 275 | - VmapWorlds.pointsCircle(p); | |
| 276 | 270 | |
| 271 | + $('.leftUtils').hide(); | |
| 272 | + | |
| 273 | + addCarParkVmapWorlds.localSearchFromAdreesToPoint(stationNameV,function(p) { | |
| 274 | + | |
| 275 | + if(p) { | |
| 276 | + | |
| 277 | + addCarParkVmapWorlds.pointsCircle(p); | |
| 278 | + | |
| 279 | + } | |
| 280 | + | |
| 281 | + }); | |
| 282 | + | |
| 277 | 283 | }else if(baseResValue ==1) { |
| 278 | 284 | |
| 285 | + addCarParkVmapWorlds.localSearchFromAdreesToPoint(stationNameV,function(p) {}); | |
| 286 | + | |
| 279 | 287 | $('.leftUtils').show(); |
| 280 | 288 | |
| 281 | - VmapWorlds.drawingManagerOpen(); | |
| 289 | + addCarParkVmapWorlds.drawingManagerOpen(); | |
| 282 | 290 | |
| 283 | 291 | } |
| 284 | 292 | } |
| ... | ... | @@ -353,9 +361,9 @@ var FormWizard = function() { |
| 353 | 361 | |
| 354 | 362 | if(index==2) { |
| 355 | 363 | |
| 356 | - VmapWorlds.clearMarkAndOverlays(); | |
| 364 | + addCarParkVmapWorlds.clearMarkAndOverlays(); | |
| 357 | 365 | |
| 358 | - VmapWorlds.drawingManagerClose(); | |
| 366 | + addCarParkVmapWorlds.drawingManagerClose(); | |
| 359 | 367 | |
| 360 | 368 | } |
| 361 | 369 | |
| ... | ... | @@ -372,11 +380,11 @@ var FormWizard = function() { |
| 372 | 380 | |
| 373 | 381 | if(index ==0) { |
| 374 | 382 | |
| 375 | - VmapWorlds.drawingManagerClose(); | |
| 383 | + addCarParkVmapWorlds.drawingManagerClose(); | |
| 376 | 384 | |
| 377 | 385 | } |
| 378 | 386 | |
| 379 | - VmapWorlds.clearMarkAndOverlays(); | |
| 387 | + addCarParkVmapWorlds.clearMarkAndOverlays(); | |
| 380 | 388 | |
| 381 | 389 | handleTitle(tab, navigation, index); |
| 382 | 390 | ... | ... |
src/main/resources/static/pages/base/carpark/js/add-vmap-world.js
| 1 | -var VmapWorlds = function() { | |
| 1 | +var addCarParkVmapWorlds = function() { | |
| 2 | 2 | |
| 3 | 3 | var mapB = '', circle = '', drawingManager = '',circle='',marker=''; |
| 4 | 4 | |
| ... | ... | @@ -13,7 +13,7 @@ var VmapWorlds = function() { |
| 13 | 13 | var bdKey = 'IGGrr4UjwIYzatoCRFKEL8sT'; |
| 14 | 14 | |
| 15 | 15 | // 初始化百度地图 |
| 16 | - mapB = new BMap.Map("bmap_basic"); | |
| 16 | + mapB = new BMap.Map("addCarParkbmap_basic"); | |
| 17 | 17 | |
| 18 | 18 | //中心点和缩放级别 |
| 19 | 19 | mapB.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15); | ... | ... |
src/main/resources/static/pages/base/carpark/js/carpark-positions-events.js
| ... | ... | @@ -16,7 +16,7 @@ $(function(){ |
| 16 | 16 | |
| 17 | 17 | $(pjaxContainer).append(m); |
| 18 | 18 | |
| 19 | - $('#editPositions_select_mobal').trigger('editSelectMobal_show', [WorldsBMap,PublicFunctions,EditCarParkObj,GetAjaxData]); | |
| 19 | + $('#editPositions_select_mobal').trigger('editSelectMobal_show', [CarParkPWorldsBMap,PublicFunctions,EditCarParkObj,GetAjaxData]); | |
| 20 | 20 | |
| 21 | 21 | }); |
| 22 | 22 | ... | ... |
src/main/resources/static/pages/base/carpark/js/carpark-positions-function.js
| ... | ... | @@ -41,10 +41,10 @@ var PublicFunctions = function () { |
| 41 | 41 | var nameV = r[0].carParkName; |
| 42 | 42 | |
| 43 | 43 | /** 根据名称定位 */ |
| 44 | - WorldsBMap.localSearchFromAdreesToPoint(nameV); | |
| 44 | + CarParkPWorldsBMap.localSearchFromAdreesToPoint(nameV); | |
| 45 | 45 | |
| 46 | 46 | // 打开绘制工具 |
| 47 | - WorldsBMap.openDrawingManager(); | |
| 47 | + CarParkPWorldsBMap.openDrawingManager(); | |
| 48 | 48 | |
| 49 | 49 | }); |
| 50 | 50 | |
| ... | ... | @@ -213,12 +213,12 @@ var PublicFunctions = function () { |
| 213 | 213 | if(stationShapesType == 'r') { |
| 214 | 214 | |
| 215 | 215 | /** 画圆 @param:<r:停车场信息;point:中心点;htm:信息窗口html文本;pots:信息窗口参数属性> */ |
| 216 | - WorldsBMap.pointsCircle(r,point,htm,opts); | |
| 216 | + CarParkPWorldsBMap.pointsCircle(r,point,htm,opts); | |
| 217 | 217 | |
| 218 | 218 | }else if(stationShapesType == 'd'){ |
| 219 | 219 | |
| 220 | 220 | /** 画多边形 @param:<r:停车场信息;point:中心点;htm:信息窗口html文本;pots:信息窗口参数属性> */ |
| 221 | - WorldsBMap.pointsPolygon(r,point,htm,opts); | |
| 221 | + CarParkPWorldsBMap.pointsPolygon(r,point,htm,opts); | |
| 222 | 222 | |
| 223 | 223 | } |
| 224 | 224 | } | ... | ... |
src/main/resources/static/pages/base/carpark/js/carpark-positions-map.js
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | * |
| 4 | 4 | */ |
| 5 | 5 | |
| 6 | -var WorldsBMap = function () { | |
| 6 | +var CarParkPWorldsBMap = function () { | |
| 7 | 7 | |
| 8 | 8 | var mapValue='',drawingManager='',marker='',circle='',polygon=''; |
| 9 | 9 | |
| ... | ... | @@ -18,7 +18,7 @@ var WorldsBMap = function () { |
| 18 | 18 | var bdKey = 'IGGrr4UjwIYzatoCRFKEL8sT'; |
| 19 | 19 | |
| 20 | 20 | // 初始化百度地图 |
| 21 | - mapValue = new BMap.Map("bmap_basic"); | |
| 21 | + mapValue = new BMap.Map("carParkbmap_basic"); | |
| 22 | 22 | |
| 23 | 23 | //中心点和缩放级别 |
| 24 | 24 | mapValue.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15); |
| ... | ... | @@ -141,7 +141,7 @@ var WorldsBMap = function () { |
| 141 | 141 | |
| 142 | 142 | $(pjaxContainer).append(m); |
| 143 | 143 | |
| 144 | - $('#editPoitsions_carpark_mobal').trigger('editCarParkMobal_show', [WorldsBMap,PublicFunctions,EditCarParkObj,GetAjaxData]); | |
| 144 | + $('#editPoitsions_carpark_mobal').trigger('editCarParkMobal_show', [CarParkPWorldsBMap,PublicFunctions,EditCarParkObj,GetAjaxData]); | |
| 145 | 145 | |
| 146 | 146 | }); |
| 147 | 147 | |
| ... | ... | @@ -370,7 +370,7 @@ var WorldsBMap = function () { |
| 370 | 370 | |
| 371 | 371 | $(pjaxContainer).append(m); |
| 372 | 372 | |
| 373 | - $('#editPoitsions_carpark_mobal').trigger('editCarParkMobal_show', [WorldsBMap,PublicFunctions,EditCarParkObj,GetAjaxData]); | |
| 373 | + $('#editPoitsions_carpark_mobal').trigger('editCarParkMobal_show', [CarParkPWorldsBMap,PublicFunctions,EditCarParkObj,GetAjaxData]); | |
| 374 | 374 | |
| 375 | 375 | }); |
| 376 | 376 | |
| ... | ... | @@ -428,7 +428,7 @@ var WorldsBMap = function () { |
| 428 | 428 | |
| 429 | 429 | $(pjaxContainer).append(m); |
| 430 | 430 | |
| 431 | - $('#editPoitsions_carpark_mobal').trigger('editCarParkMobal_show', [WorldsBMap,PublicFunctions,EditCarParkObj,GetAjaxData]); | |
| 431 | + $('#editPoitsions_carpark_mobal').trigger('editCarParkMobal_show', [CarParkPWorldsBMap,PublicFunctions,EditCarParkObj,GetAjaxData]); | |
| 432 | 432 | |
| 433 | 433 | }); |
| 434 | 434 | ... | ... |
src/main/resources/static/pages/base/carpark/js/carpark-positions-reload.js
src/main/resources/static/pages/base/carpark/positions.html
src/main/resources/static/pages/base/section/add.html
| 1 | -<link href="/pages/base/station/css/addmap.css" rel="stylesheet" type="text/css" /> | |
| 1 | +<link href="/pages/base/section/css/addmap.css" rel="stylesheet" type="text/css" /> | |
| 2 | 2 | <div class="page-head"> |
| 3 | 3 | <div class="page-title"> |
| 4 | 4 | <h1>添加路段</h1> |
| ... | ... | @@ -131,7 +131,7 @@ |
| 131 | 131 | <!-- 站点位置 --> |
| 132 | 132 | <div class="tab-pane" id="tab2"> |
| 133 | 133 | <h3 class="block"> 路段位置 </h3> |
| 134 | - <div id="bmap_basic"></div> | |
| 134 | + <div id="sectionBmap_basic"></div> | |
| 135 | 135 | </div> |
| 136 | 136 | |
| 137 | 137 | <!-- 站点信息 --> | ... | ... |
src/main/resources/static/pages/base/section/css/addmap.css
0 → 100644
| 1 | +#sectionBmap_basic{ | |
| 2 | + min-width: 100%; | |
| 3 | + width: 100%; | |
| 4 | + margin-top: -28px; | |
| 5 | + border: 2px solid #fdfdfd; | |
| 6 | + min-height: 400px; | |
| 7 | + height:100%; | |
| 8 | + overflow: hidden; | |
| 9 | + top: 15px; | |
| 10 | +} | |
| 11 | + | |
| 12 | + | |
| 13 | +/* 隐藏百度地图logo */ | |
| 14 | +.anchorBL, | |
| 15 | +.anchorBL, | |
| 16 | +.amap-logo, | |
| 17 | +.amap-copyright{ | |
| 18 | + display: none; | |
| 19 | +} | |
| 20 | + | |
| 21 | +.BMap_pop div:nth-child(1) , | |
| 22 | +.BMap_pop div:nth-child(2) , | |
| 23 | +.BMap_pop div:nth-child(3) , | |
| 24 | +.BMap_pop div:nth-child(4) , | |
| 25 | +.BMap_pop div:nth-child(5) , | |
| 26 | +.BMap_pop div:nth-child(6) , | |
| 27 | +.BMap_pop div:nth-child(7) { | |
| 28 | + | |
| 29 | + border:0px solid rgb(255, 255, 255) !important; | |
| 30 | + background-color:#3B3F51 !important; | |
| 31 | + | |
| 32 | +} | |
| 33 | + | |
| 34 | +.BMap_pop div:nth-child(3){ | |
| 35 | + | |
| 36 | + width:23px !important; | |
| 37 | + | |
| 38 | +} | |
| 39 | + | |
| 40 | +.BMap_pop div:nth-child(7) { | |
| 41 | + | |
| 42 | + width:23px !important; | |
| 43 | + | |
| 44 | + height:24px !important; | |
| 45 | + | |
| 46 | +} | |
| 47 | + | |
| 48 | +.BMap_pop div:nth-child(5) { | |
| 49 | + | |
| 50 | + height:24px !important; | |
| 51 | + | |
| 52 | +} | |
| 53 | + | |
| 54 | +/* 图片以后在弄,先隐藏div */ | |
| 55 | +.BMap_pop div:nth-child(8) { | |
| 56 | + | |
| 57 | + height:0px !important; | |
| 58 | + /* background:url('/pages/base/stationroute/css/img/iw3-1.png') no-repeat !important; */ | |
| 59 | + /* background-image:url('/pages/base/stationroute/css/img/windowinfo_b.jpg') !important; */ | |
| 60 | + | |
| 61 | +} | |
| 62 | + | |
| 63 | +.BMap_pop { | |
| 64 | + | |
| 65 | + box-shadow: 0 12px 15px 0 rgba(204, 204, 204, 0.33),0 17px 50px 0 rgba(204, 204, 204, 0.33)!important; | |
| 66 | + | |
| 67 | +} | |
| 0 | 68 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/section/css/positions.css
src/main/resources/static/pages/base/section/js/add-form-events.js
| ... | ... | @@ -12,13 +12,13 @@ $(function(){ |
| 12 | 12 | |
| 13 | 13 | $('#oppenDrawingManager').on('click',function() { |
| 14 | 14 | |
| 15 | - VmapWorlds.drawingManagerOpen(); | |
| 15 | + SectionVmapWorlds.drawingManagerOpen(); | |
| 16 | 16 | |
| 17 | 17 | }); |
| 18 | 18 | |
| 19 | 19 | $('#closeDrawingManager').on('click',function() { |
| 20 | 20 | |
| 21 | - VmapWorlds.drawingManagerClose(); | |
| 21 | + SectionVmapWorlds.drawingManagerClose(); | |
| 22 | 22 | |
| 23 | 23 | }); |
| 24 | 24 | ... | ... |
src/main/resources/static/pages/base/section/js/add-form-reload.js
src/main/resources/static/pages/base/section/js/add-form-wizard.js
| ... | ... | @@ -317,12 +317,12 @@ var FormWizard = function() { |
| 317 | 317 | if(baseResValue == 0) { |
| 318 | 318 | |
| 319 | 319 | // 根据站点名称获取百度坐标 |
| 320 | - VmapWorlds.stationsNameToPoints(paramsStationsArray,function(resultJson) { | |
| 320 | + SectionVmapWorlds.stationsNameToPoints(paramsStationsArray,function(resultJson) { | |
| 321 | 321 | |
| 322 | 322 | // 根据坐标点获取两点之间的时间与距离 |
| 323 | - VmapWorlds.getDistanceAndDuration(resultJson,function(stationdataList) { | |
| 323 | + SectionVmapWorlds.getDistanceAndDuration(resultJson,function(stationdataList) { | |
| 324 | 324 | |
| 325 | - VmapWorlds.getSectionListPlonly(stationdataList,function(sectiondata) { | |
| 325 | + SectionVmapWorlds.getSectionListPlonly(stationdataList,function(sectiondata) { | |
| 326 | 326 | |
| 327 | 327 | $('#bsectionVectorInput').val(JSON.stringify(sectiondata)); |
| 328 | 328 | |
| ... | ... | @@ -333,11 +333,11 @@ var FormWizard = function() { |
| 333 | 333 | |
| 334 | 334 | }else if(baseResValue ==1) { |
| 335 | 335 | |
| 336 | - VmapWorlds.localSearchFromAdreesToPoint(stationStartValue); | |
| 336 | + SectionVmapWorlds.localSearchFromAdreesToPoint(stationStartValue); | |
| 337 | 337 | |
| 338 | - VmapWorlds.localSearchFromAdreesToPoint(stationEndValue); | |
| 338 | + SectionVmapWorlds.localSearchFromAdreesToPoint(stationEndValue); | |
| 339 | 339 | |
| 340 | - VmapWorlds.drawingManagerOpen(); | |
| 340 | + SectionVmapWorlds.drawingManagerOpen(); | |
| 341 | 341 | |
| 342 | 342 | }else if(baseResValue ==2) { |
| 343 | 343 | |
| ... | ... | @@ -416,9 +416,9 @@ var FormWizard = function() { |
| 416 | 416 | |
| 417 | 417 | if(index==2) { |
| 418 | 418 | |
| 419 | - VmapWorlds.drawingManagerClose(); | |
| 419 | + SectionVmapWorlds.drawingManagerClose(); | |
| 420 | 420 | |
| 421 | - VmapWorlds.clearMarkAndOverlays(); | |
| 421 | + SectionVmapWorlds.clearMarkAndOverlays(); | |
| 422 | 422 | |
| 423 | 423 | } |
| 424 | 424 | |
| ... | ... | @@ -432,11 +432,11 @@ var FormWizard = function() { |
| 432 | 432 | |
| 433 | 433 | error.hide(); |
| 434 | 434 | |
| 435 | - VmapWorlds.clearMarkAndOverlays(); | |
| 435 | + SectionVmapWorlds.clearMarkAndOverlays(); | |
| 436 | 436 | |
| 437 | 437 | if(index==0) { |
| 438 | 438 | |
| 439 | - VmapWorlds.drawingManagerClose(); | |
| 439 | + SectionVmapWorlds.drawingManagerClose(); | |
| 440 | 440 | |
| 441 | 441 | } |
| 442 | 442 | ... | ... |
src/main/resources/static/pages/base/section/js/add-vmap-world.js
| 1 | -var VmapWorlds = function() { | |
| 1 | +var SectionVmapWorlds = function() { | |
| 2 | 2 | |
| 3 | 3 | var mapB = '', drawingManager = ''; |
| 4 | 4 | |
| ... | ... | @@ -13,7 +13,7 @@ var VmapWorlds = function() { |
| 13 | 13 | var bdKey = 'IGGrr4UjwIYzatoCRFKEL8sT'; |
| 14 | 14 | |
| 15 | 15 | // 初始化百度地图 |
| 16 | - mapB = new BMap.Map("bmap_basic"); | |
| 16 | + mapB = new BMap.Map("sectionBmap_basic"); | |
| 17 | 17 | |
| 18 | 18 | //中心点和缩放级别 |
| 19 | 19 | mapB.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15); | ... | ... |
src/main/resources/static/pages/base/section/js/section-positions-events.js
| ... | ... | @@ -2,8 +2,8 @@ $(function(){ |
| 2 | 2 | |
| 3 | 3 | $('#backUp').on('click',function() { |
| 4 | 4 | |
| 5 | - // 获取返回元素并修改url地址 | |
| 6 | - $('#backUp').attr('href','list.html?'); | |
| 5 | + // 返回list.html页面 | |
| 6 | + loadPage('/pages/base/section/list.html'); | |
| 7 | 7 | |
| 8 | 8 | }); |
| 9 | 9 | |
| ... | ... | @@ -17,7 +17,7 @@ $(function(){ |
| 17 | 17 | // 弹出添加失败提示消息,2秒关闭(如果不配置,默认是3秒) |
| 18 | 18 | var yindex = layer.msg('编辑完线路走向后,请双击线路走向区域保存',{ offset: '126px',shift: 0,time: 10000}); |
| 19 | 19 | |
| 20 | - WorldsBMap.editPolyUpline(); | |
| 20 | + SectionPWorldsBMap.editPolyUpline(); | |
| 21 | 21 | |
| 22 | 22 | }); |
| 23 | 23 | ... | ... |
src/main/resources/static/pages/base/section/js/section-positions-function.js
src/main/resources/static/pages/base/section/js/section-positions-map.js
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | * |
| 4 | 4 | */ |
| 5 | 5 | |
| 6 | -var WorldsBMap = function () { | |
| 6 | +var SectionPWorldsBMap = function () { | |
| 7 | 7 | |
| 8 | 8 | var mapValue = '',marker='', polyUpline=''; |
| 9 | 9 | |
| ... | ... | @@ -18,7 +18,7 @@ var WorldsBMap = function () { |
| 18 | 18 | var bdKey = 'IGGrr4UjwIYzatoCRFKEL8sT'; |
| 19 | 19 | |
| 20 | 20 | // 初始化百度地图 |
| 21 | - mapValue = new BMap.Map('bmap_basic'); | |
| 21 | + mapValue = new BMap.Map('sectionPbmap_basic'); | |
| 22 | 22 | |
| 23 | 23 | //中心点和缩放级别 |
| 24 | 24 | mapValue.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15); |
| ... | ... | @@ -133,7 +133,7 @@ var WorldsBMap = function () { |
| 133 | 133 | // 禁止覆盖物在map.clearOverlays方法中被清除。(自 1.1 新增) |
| 134 | 134 | polyUpline.disableMassClear(); |
| 135 | 135 | |
| 136 | - WorldsBMap.clearMarkAndOverlays(); | |
| 136 | + SectionPWorldsBMap.clearMarkAndOverlays(); | |
| 137 | 137 | |
| 138 | 138 | // 允许覆盖物在map.clearOverlays方法中被清除。(自 1.1 新增) |
| 139 | 139 | polyUpline.enableMassClear(); |
| ... | ... | @@ -161,7 +161,7 @@ var WorldsBMap = function () { |
| 161 | 161 | |
| 162 | 162 | $(pjaxContainer).append(m); |
| 163 | 163 | |
| 164 | - $('#edit_section_mobal').trigger('editSectionMobal_show', [WorldsBMap,GetAjaxData,EditSectionObj,PositionsPublicFunctions]); | |
| 164 | + $('#edit_section_mobal').trigger('editSectionMobal_show', [SectionPWorldsBMap,GetAjaxData,EditSectionObj,PositionsPublicFunctions]); | |
| 165 | 165 | |
| 166 | 166 | }); |
| 167 | 167 | }); | ... | ... |
src/main/resources/static/pages/base/section/js/section-positions-reload.js
src/main/resources/static/pages/base/section/list.html
| ... | ... | @@ -104,7 +104,11 @@ |
| 104 | 104 | {{obj.line.name}} |
| 105 | 105 | </td> |
| 106 | 106 | <td> |
| 107 | - {{obj.directions}} | |
| 107 | + {{if obj.directions == '0'}} | |
| 108 | + 上行 | |
| 109 | + {{else if obj.directions == '1'}} | |
| 110 | + 下行 | |
| 111 | + {{/if}} | |
| 108 | 112 | </td> |
| 109 | 113 | <td> |
| 110 | 114 | {{obj.section.sectionName}} |
| ... | ... | @@ -119,7 +123,11 @@ |
| 119 | 123 | {{obj.versions}} |
| 120 | 124 | </td> |
| 121 | 125 | <td> |
| 122 | - {{obj.destroy}} | |
| 126 | + {{if obj.destroy == 1}} | |
| 127 | + <span style="font-weight: bold; color: red; padding: 5px; background-color: #FFE4E1; margin: 5px; font-size: 9px;border-radius: 4px;">撤销</span> | |
| 128 | + {{else if obj.destroy == 0}} | |
| 129 | + <span style="font-weight: bold; color: #07824e; padding: 5px; background-color: #FFE4E1; margin: 5px; font-size: 9px;border-radius: 4px;">运营</span> | |
| 130 | + {{/if}} | |
| 123 | 131 | </td> |
| 124 | 132 | <td> |
| 125 | 133 | <a href="positions.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 定位 </a> | ... | ... |
src/main/resources/static/pages/base/section/positions.html
src/main/resources/static/pages/base/station/add.html
| ... | ... | @@ -22,6 +22,12 @@ |
| 22 | 22 | <span class="step-title"> 1 - 4 </span> |
| 23 | 23 | </span> |
| 24 | 24 | </div> |
| 25 | + | |
| 26 | + <div class="actions"> | |
| 27 | + <div class="btn-group btn-group-devided" data-toggle="buttons"> | |
| 28 | + <a class="btn btn-circle default" href="/pages/base/station/list.html" style="float: right;padding: 4px 23px;" data-pjax=""><i class="fa fa-reply"></i> 退出</a> | |
| 29 | + </div> | |
| 30 | + </div> | |
| 25 | 31 | </div> |
| 26 | 32 | <div class="portlet-body form"> |
| 27 | 33 | |
| ... | ... | @@ -120,7 +126,7 @@ |
| 120 | 126 | <!-- 站点位置 --> |
| 121 | 127 | <div class="tab-pane" id="tab2"> |
| 122 | 128 | <h3 class="block"> 站点位置 </h3> |
| 123 | - <div id="bmap_basic"> | |
| 129 | + <div id="stationbmap_basic"> | |
| 124 | 130 | |
| 125 | 131 | <div class="leftUtils"> |
| 126 | 132 | <div class="btn-group" style="left: 100px;"> | ... | ... |
src/main/resources/static/pages/base/station/css/addmap.css
src/main/resources/static/pages/base/station/css/positions.css
src/main/resources/static/pages/base/station/js/add-form-events.js
| ... | ... | @@ -12,13 +12,13 @@ $(function(){ |
| 12 | 12 | |
| 13 | 13 | $('#oppenDrawingManager').on('click',function() { |
| 14 | 14 | |
| 15 | - VmapWorlds.drawingManagerOpen(); | |
| 15 | + StationPVmapWorlds.drawingManagerOpen(); | |
| 16 | 16 | |
| 17 | 17 | }); |
| 18 | 18 | |
| 19 | 19 | $('#closeDrawingManager').on('click',function() { |
| 20 | 20 | |
| 21 | - VmapWorlds.drawingManagerClose(); | |
| 21 | + StationPVmapWorlds.drawingManagerClose(); | |
| 22 | 22 | |
| 23 | 23 | }); |
| 24 | 24 | ... | ... |
src/main/resources/static/pages/base/station/js/add-form-reload.js
src/main/resources/static/pages/base/station/js/add-form-wizard.js
| ... | ... | @@ -178,8 +178,6 @@ var FormWizard = function() { |
| 178 | 178 | // 表单序列化 |
| 179 | 179 | var params = form.serializeJSON(); |
| 180 | 180 | |
| 181 | - console.log(params); | |
| 182 | - | |
| 183 | 181 | //保存站点 |
| 184 | 182 | PublicFunctions.stationSave(params,function(data) { |
| 185 | 183 | |
| ... | ... | @@ -324,26 +322,31 @@ var FormWizard = function() { |
| 324 | 322 | |
| 325 | 323 | $('#stationNameInput').val(stationNameV); |
| 326 | 324 | |
| 327 | - VmapWorlds.localSearchFromAdreesToPoint(stationNameV,function(p) { | |
| 328 | - | |
| 329 | - if(p) { | |
| 330 | - | |
| 331 | - if(baseResValue == 0) { | |
| 332 | - | |
| 333 | - $('.leftUtils').hide(); | |
| 334 | - | |
| 335 | - VmapWorlds.pointsCircle(p); | |
| 336 | - | |
| 337 | - }else if(baseResValue ==1) { | |
| 338 | - | |
| 339 | - $('.leftUtils').show(); | |
| 340 | - | |
| 341 | - VmapWorlds.drawingManagerOpen(); | |
| 342 | - | |
| 343 | - } | |
| 344 | - } | |
| 345 | - | |
| 346 | - }); | |
| 325 | + if(baseResValue == 0) { | |
| 326 | + | |
| 327 | + StationPVmapWorlds.localSearchFromAdreesToPoint(stationNameV,function(p) { | |
| 328 | + | |
| 329 | + if(p) { | |
| 330 | + | |
| 331 | + $('.leftUtils').hide(); | |
| 332 | + | |
| 333 | + StationPVmapWorlds.pointsCircle(p); | |
| 334 | + | |
| 335 | + } | |
| 336 | + | |
| 337 | + }); | |
| 338 | + | |
| 339 | + | |
| 340 | + }else if(baseResValue ==1) { | |
| 341 | + | |
| 342 | + StationPVmapWorlds.localSearchFromAdreesToPoint(stationNameV,function(p) {}); | |
| 343 | + | |
| 344 | + $('.leftUtils').show(); | |
| 345 | + | |
| 346 | + StationPVmapWorlds.drawingManagerOpen(); | |
| 347 | + | |
| 348 | + } | |
| 349 | + | |
| 347 | 350 | } |
| 348 | 351 | |
| 349 | 352 | /** 如果为最后一步显示提交按钮,隐藏下一步按钮,否则隐藏提交按钮,显示下一步按钮 */ |
| ... | ... | @@ -385,6 +388,8 @@ var FormWizard = function() { |
| 385 | 388 | /** 当一个导航标签被点击,返回错误的移动到该选项卡,并显示它的内容. */ |
| 386 | 389 | onTabClick: function (tab, navigation, index, clickedIndex) { |
| 387 | 390 | |
| 391 | + return false; | |
| 392 | + | |
| 388 | 393 | success.hide(); |
| 389 | 394 | |
| 390 | 395 | error.hide(); |
| ... | ... | @@ -414,7 +419,7 @@ var FormWizard = function() { |
| 414 | 419 | |
| 415 | 420 | if(index==2) { |
| 416 | 421 | |
| 417 | - VmapWorlds.clearMarkAndOverlays(); | |
| 422 | + StationPVmapWorlds.clearMarkAndOverlays(); | |
| 418 | 423 | |
| 419 | 424 | } |
| 420 | 425 | |
| ... | ... | @@ -434,7 +439,7 @@ var FormWizard = function() { |
| 434 | 439 | |
| 435 | 440 | error.hide(); |
| 436 | 441 | |
| 437 | - VmapWorlds.clearMarkAndOverlays(); | |
| 442 | + StationPVmapWorlds.clearMarkAndOverlays(); | |
| 438 | 443 | |
| 439 | 444 | /* mapB.clearOverlays(); |
| 440 | 445 | ... | ... |
src/main/resources/static/pages/base/station/js/add-vmap-world.js
| 1 | -var VmapWorlds = function() { | |
| 1 | +var StationPVmapWorlds = function() { | |
| 2 | 2 | |
| 3 | 3 | var mapB = '', circle = '', drawingManager = '',circle='',marker=''; |
| 4 | 4 | |
| ... | ... | @@ -13,7 +13,7 @@ var VmapWorlds = function() { |
| 13 | 13 | var bdKey = 'IGGrr4UjwIYzatoCRFKEL8sT'; |
| 14 | 14 | |
| 15 | 15 | // 初始化百度地图 |
| 16 | - mapB = new BMap.Map("bmap_basic"); | |
| 16 | + mapB = new BMap.Map("stationbmap_basic"); | |
| 17 | 17 | |
| 18 | 18 | //中心点和缩放级别 |
| 19 | 19 | mapB.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15); | ... | ... |
src/main/resources/static/pages/base/station/js/station-positions-events.js
src/main/resources/static/pages/base/station/js/station-positions-map.js
| ... | ... | @@ -25,7 +25,7 @@ var StationPositionsWorldsBMap = function () { |
| 25 | 25 | var bdKey = 'IGGrr4UjwIYzatoCRFKEL8sT'; |
| 26 | 26 | |
| 27 | 27 | // 初始化百度地图 |
| 28 | - mapBValue = new BMap.Map("bmap_basic"); | |
| 28 | + mapBValue = new BMap.Map("positionBmap_basic"); | |
| 29 | 29 | |
| 30 | 30 | //中心点和缩放级别 |
| 31 | 31 | mapBValue.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15); | ... | ... |
src/main/resources/static/pages/base/station/list.html
| ... | ... | @@ -117,7 +117,11 @@ |
| 117 | 117 | {{obj.line.name}} |
| 118 | 118 | </td> |
| 119 | 119 | <td> |
| 120 | - {{obj.directions}} | |
| 120 | + {{if obj.directions == '0'}} | |
| 121 | + 上行 | |
| 122 | + {{else if obj.directions == '1'}} | |
| 123 | + 下行 | |
| 124 | + {{/if}} | |
| 121 | 125 | </td> |
| 122 | 126 | <td> |
| 123 | 127 | {{obj.stationName}} |
| ... | ... | @@ -128,14 +132,24 @@ |
| 128 | 132 | <td> |
| 129 | 133 | {{obj.stationRouteCode}} |
| 130 | 134 | </td> |
| 131 | - <td> | |
| 132 | - {{obj.stationMark}} | |
| 135 | + <td> | |
| 136 | + {{if obj.stationMark == 'B'}} | |
| 137 | + 起始站 | |
| 138 | + {{else if obj.stationMark == 'Z'}} | |
| 139 | + 中途站 | |
| 140 | + {{else if obj.stationMark== 'E'}} | |
| 141 | + 终点站 | |
| 142 | + {{/if}} | |
| 133 | 143 | </td> |
| 134 | 144 | <td> |
| 135 | 145 | {{obj.versions}} |
| 136 | 146 | </td> |
| 137 | 147 | <td> |
| 138 | - {{obj.destroy}} | |
| 148 | + {{if obj.destroy == 1}} | |
| 149 | + <span style="font-weight: bold; color: red; padding: 5px; background-color: #FFE4E1; margin: 5px; font-size: 9px;border-radius: 4px;">撤销</span> | |
| 150 | + {{else if obj.destroy == 0}} | |
| 151 | + <span style="font-weight: bold; color: #07824e; padding: 5px; background-color: #FFE4E1; margin: 5px; font-size: 9px;border-radius: 4px;">运营</span> | |
| 152 | + {{/if}} | |
| 139 | 153 | </td> |
| 140 | 154 | <td> |
| 141 | 155 | <a href="positions.html?no={{obj.id}}" class="btn default blue-stripe btn-sm" data-pjax> 定位 </a> | ... | ... |
src/main/resources/static/pages/base/station/positions.html
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('ScheduleApp').factory('SchedulePlanInfoManageService', ['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('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 | 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('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 | 62 | var self = this; |
| 60 | 63 | self.pageInfo = { |
| 61 | 64 | totalItems : 0, |
| ... | ... | @@ -63,8 +66,10 @@ angular.module('ScheduleApp').controller('SchedulePlanInfoManageListCtrl', ['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('ScheduleApp').controller('SchedulePlanInfoManageListCtrl', ['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(['$stateProvider', '$urlRouterProvider', 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('ScheduleApp').factory('SchedulePlanInfoManageService_g', ['$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', | ... | ... |