Commit 773d6448e1886a2320314e95cde22d6003e1688f
Merge branch 'pudong' of http://192.168.168.201:8888/panzhaov5/bsth_control.git into pudong
Showing
17 changed files
with
693 additions
and
28 deletions
pom.xml
| ... | ... | @@ -295,6 +295,13 @@ |
| 295 | 295 | <artifactId>jpinyin</artifactId> |
| 296 | 296 | <version>1.1.8</version> |
| 297 | 297 | </dependency> |
| 298 | + | |
| 299 | + <!-- plan common工程依赖 --> | |
| 300 | + <dependency> | |
| 301 | + <groupId>com.bsth.control_v2</groupId> | |
| 302 | + <artifactId>plan_module-common</artifactId> | |
| 303 | + <version>1.0-SNAPSHOT</version> | |
| 304 | + </dependency> | |
| 298 | 305 | </dependencies> |
| 299 | 306 | |
| 300 | 307 | <dependencyManagement> | ... | ... |
src/main/java/com/bsth/entity/schedule/log/ModuleOperatorLog.java
0 → 100644
| 1 | +package com.bsth.entity.schedule.log; | |
| 2 | + | |
| 3 | +import com.bsth.control_v2.plan_module.common.enums.log.ModuleOperatorType; | |
| 4 | +import com.bsth.control_v2.plan_module.common.enums.log.ModuleType; | |
| 5 | +import com.bsth.control_v2.plan_module.common.enums.log.OperatorType; | |
| 6 | +import com.bsth.entity.schedule.log.convert.ModuleOperatorTypeConverter; | |
| 7 | +import com.bsth.entity.schedule.log.convert.ModuleTypeConverter; | |
| 8 | +import com.bsth.entity.schedule.log.convert.OperatorTypeConverter; | |
| 9 | + | |
| 10 | +import javax.persistence.*; | |
| 11 | +import java.io.Serializable; | |
| 12 | +import java.util.Date; | |
| 13 | + | |
| 14 | +/** | |
| 15 | + * 模块业务操作日志。 | |
| 16 | + */ | |
| 17 | +@Entity | |
| 18 | +@Table(name = "bsth_c_s_op_log") | |
| 19 | +public class ModuleOperatorLog implements Serializable { | |
| 20 | + | |
| 21 | + /** 主键Id */ | |
| 22 | + @Id | |
| 23 | + @GeneratedValue | |
| 24 | + private Long id; | |
| 25 | + | |
| 26 | + /** 日志插入时间 */ | |
| 27 | + @Column(nullable = false) | |
| 28 | + private Long timestmp; | |
| 29 | + | |
| 30 | + /** 模块类型 */ | |
| 31 | + @Column(nullable = false) | |
| 32 | + @Convert(converter = ModuleTypeConverter.class) | |
| 33 | + private ModuleType moduleType; | |
| 34 | + | |
| 35 | + @Column(nullable = false) | |
| 36 | + @Convert(converter = OperatorTypeConverter.class) | |
| 37 | + private OperatorType operatorType; | |
| 38 | + | |
| 39 | + /** 模块操作类型 */ | |
| 40 | + @Column(nullable = false) | |
| 41 | + @Convert(converter = ModuleOperatorTypeConverter.class) | |
| 42 | + private ModuleOperatorType moduleOperatorType; | |
| 43 | + | |
| 44 | + /** 日志描述 */ | |
| 45 | + @Column(nullable = false) | |
| 46 | + private String message; | |
| 47 | + | |
| 48 | + /** 日志级别 */ | |
| 49 | + @Column(nullable = false) | |
| 50 | + private String levelName; | |
| 51 | + /** 模块业务操作开始时间 */ | |
| 52 | + @Column(nullable = false) | |
| 53 | + private Date opStartTime; | |
| 54 | + /** 模块业务操作结束时间 */ | |
| 55 | + @Column(nullable = false) | |
| 56 | + private Date opEndTime; | |
| 57 | + /** 模块业务操作人姓名 */ | |
| 58 | + @Column(nullable = false) | |
| 59 | + private String opUserName; | |
| 60 | + /** 模块业务操作人工号 */ | |
| 61 | + @Column(nullable = false) | |
| 62 | + private String opUserCode; | |
| 63 | + /** 关联的实体class名 */ | |
| 64 | + @Column(nullable = false) | |
| 65 | + private String opEntityClass; | |
| 66 | + /** 操作前的实体json */ | |
| 67 | + @Column(nullable = false) | |
| 68 | + private String opBeforeJson; | |
| 69 | + /** 操作后的实体json */ | |
| 70 | + @Column(nullable = false) | |
| 71 | + private String opAfterJson; | |
| 72 | + | |
| 73 | + /** 备用-可选参数1 */ | |
| 74 | + private String optArg1; | |
| 75 | + /** 备用-可选参数2 */ | |
| 76 | + private String optArg2; | |
| 77 | + /** 备用-可选参数3 */ | |
| 78 | + private String optArg3; | |
| 79 | + | |
| 80 | + //------------- 客户端信息 -------------// | |
| 81 | + /** 客户端Ip */ | |
| 82 | + private String clientIp; | |
| 83 | + /** 客户端游览器 */ | |
| 84 | + private String clientBowser; | |
| 85 | + /** 客户端主机信息 */ | |
| 86 | + private String clientSystem; | |
| 87 | + /** 获取mac地址 */ | |
| 88 | + private String clientMacAddress; | |
| 89 | + | |
| 90 | + public Long getId() { | |
| 91 | + return id; | |
| 92 | + } | |
| 93 | + | |
| 94 | + public void setId(Long id) { | |
| 95 | + this.id = id; | |
| 96 | + } | |
| 97 | + | |
| 98 | + public Long getTimestmp() { | |
| 99 | + return timestmp; | |
| 100 | + } | |
| 101 | + | |
| 102 | + public void setTimestmp(Long timestmp) { | |
| 103 | + this.timestmp = timestmp; | |
| 104 | + } | |
| 105 | + | |
| 106 | + public ModuleType getModuleType() { | |
| 107 | + return moduleType; | |
| 108 | + } | |
| 109 | + | |
| 110 | + public void setModuleType(ModuleType moduleType) { | |
| 111 | + this.moduleType = moduleType; | |
| 112 | + } | |
| 113 | + | |
| 114 | + public OperatorType getOperatorType() { | |
| 115 | + return operatorType; | |
| 116 | + } | |
| 117 | + | |
| 118 | + public void setOperatorType(OperatorType operatorType) { | |
| 119 | + this.operatorType = operatorType; | |
| 120 | + } | |
| 121 | + | |
| 122 | + public ModuleOperatorType getModuleOperatorType() { | |
| 123 | + return moduleOperatorType; | |
| 124 | + } | |
| 125 | + | |
| 126 | + public void setModuleOperatorType(ModuleOperatorType moduleOperatorType) { | |
| 127 | + this.moduleOperatorType = moduleOperatorType; | |
| 128 | + } | |
| 129 | + | |
| 130 | + public String getMessage() { | |
| 131 | + return message; | |
| 132 | + } | |
| 133 | + | |
| 134 | + public void setMessage(String message) { | |
| 135 | + this.message = message; | |
| 136 | + } | |
| 137 | + | |
| 138 | + public String getLevelName() { | |
| 139 | + return levelName; | |
| 140 | + } | |
| 141 | + | |
| 142 | + public void setLevelName(String levelName) { | |
| 143 | + this.levelName = levelName; | |
| 144 | + } | |
| 145 | + | |
| 146 | + public Date getOpStartTime() { | |
| 147 | + return opStartTime; | |
| 148 | + } | |
| 149 | + | |
| 150 | + public void setOpStartTime(Date opStartTime) { | |
| 151 | + this.opStartTime = opStartTime; | |
| 152 | + } | |
| 153 | + | |
| 154 | + public Date getOpEndTime() { | |
| 155 | + return opEndTime; | |
| 156 | + } | |
| 157 | + | |
| 158 | + public void setOpEndTime(Date opEndTime) { | |
| 159 | + this.opEndTime = opEndTime; | |
| 160 | + } | |
| 161 | + | |
| 162 | + public String getOpUserName() { | |
| 163 | + return opUserName; | |
| 164 | + } | |
| 165 | + | |
| 166 | + public void setOpUserName(String opUserName) { | |
| 167 | + this.opUserName = opUserName; | |
| 168 | + } | |
| 169 | + | |
| 170 | + public String getOpUserCode() { | |
| 171 | + return opUserCode; | |
| 172 | + } | |
| 173 | + | |
| 174 | + public void setOpUserCode(String opUserCode) { | |
| 175 | + this.opUserCode = opUserCode; | |
| 176 | + } | |
| 177 | + | |
| 178 | + public String getOpEntityClass() { | |
| 179 | + return opEntityClass; | |
| 180 | + } | |
| 181 | + | |
| 182 | + public void setOpEntityClass(String opEntityClass) { | |
| 183 | + this.opEntityClass = opEntityClass; | |
| 184 | + } | |
| 185 | + | |
| 186 | + public String getOpBeforeJson() { | |
| 187 | + return opBeforeJson; | |
| 188 | + } | |
| 189 | + | |
| 190 | + public void setOpBeforeJson(String opBeforeJson) { | |
| 191 | + this.opBeforeJson = opBeforeJson; | |
| 192 | + } | |
| 193 | + | |
| 194 | + public String getOpAfterJson() { | |
| 195 | + return opAfterJson; | |
| 196 | + } | |
| 197 | + | |
| 198 | + public void setOpAfterJson(String opAfterJson) { | |
| 199 | + this.opAfterJson = opAfterJson; | |
| 200 | + } | |
| 201 | + | |
| 202 | + public String getOptArg1() { | |
| 203 | + return optArg1; | |
| 204 | + } | |
| 205 | + | |
| 206 | + public void setOptArg1(String optArg1) { | |
| 207 | + this.optArg1 = optArg1; | |
| 208 | + } | |
| 209 | + | |
| 210 | + public String getOptArg2() { | |
| 211 | + return optArg2; | |
| 212 | + } | |
| 213 | + | |
| 214 | + public void setOptArg2(String optArg2) { | |
| 215 | + this.optArg2 = optArg2; | |
| 216 | + } | |
| 217 | + | |
| 218 | + public String getOptArg3() { | |
| 219 | + return optArg3; | |
| 220 | + } | |
| 221 | + | |
| 222 | + public void setOptArg3(String optArg3) { | |
| 223 | + this.optArg3 = optArg3; | |
| 224 | + } | |
| 225 | + | |
| 226 | + public String getClientIp() { | |
| 227 | + return clientIp; | |
| 228 | + } | |
| 229 | + | |
| 230 | + public void setClientIp(String clientIp) { | |
| 231 | + this.clientIp = clientIp; | |
| 232 | + } | |
| 233 | + | |
| 234 | + public String getClientBowser() { | |
| 235 | + return clientBowser; | |
| 236 | + } | |
| 237 | + | |
| 238 | + public void setClientBowser(String clientBowser) { | |
| 239 | + this.clientBowser = clientBowser; | |
| 240 | + } | |
| 241 | + | |
| 242 | + public String getClientSystem() { | |
| 243 | + return clientSystem; | |
| 244 | + } | |
| 245 | + | |
| 246 | + public void setClientSystem(String clientSystem) { | |
| 247 | + this.clientSystem = clientSystem; | |
| 248 | + } | |
| 249 | + | |
| 250 | + public String getClientMacAddress() { | |
| 251 | + return clientMacAddress; | |
| 252 | + } | |
| 253 | + | |
| 254 | + public void setClientMacAddress(String clientMacAddress) { | |
| 255 | + this.clientMacAddress = clientMacAddress; | |
| 256 | + } | |
| 257 | +} | ... | ... |
src/main/java/com/bsth/entity/schedule/log/convert/ModuleOperatorTypeConverter.java
0 → 100644
| 1 | +package com.bsth.entity.schedule.log.convert; | |
| 2 | + | |
| 3 | +import com.bsth.control_v2.plan_module.common.enums.log.ModuleOperatorType; | |
| 4 | + | |
| 5 | +import javax.persistence.AttributeConverter; | |
| 6 | +import javax.persistence.Convert; | |
| 7 | + | |
| 8 | +@Convert | |
| 9 | +public class ModuleOperatorTypeConverter implements AttributeConverter<ModuleOperatorType, String> { | |
| 10 | + @Override | |
| 11 | + public String convertToDatabaseColumn(ModuleOperatorType attribute) { | |
| 12 | + return attribute.getDicDesc(); | |
| 13 | + } | |
| 14 | + | |
| 15 | + @Override | |
| 16 | + public ModuleOperatorType convertToEntityAttribute(String dbData) { | |
| 17 | + return ModuleOperatorType.fromDicDesc(dbData); | |
| 18 | + } | |
| 19 | +} | ... | ... |
src/main/java/com/bsth/entity/schedule/log/convert/ModuleTypeConverter.java
0 → 100644
| 1 | +package com.bsth.entity.schedule.log.convert; | |
| 2 | + | |
| 3 | +import com.bsth.control_v2.plan_module.common.enums.log.ModuleType; | |
| 4 | + | |
| 5 | +import javax.persistence.AttributeConverter; | |
| 6 | +import javax.persistence.Convert; | |
| 7 | + | |
| 8 | +@Convert | |
| 9 | +public class ModuleTypeConverter implements AttributeConverter<ModuleType, String> { | |
| 10 | + @Override | |
| 11 | + public String convertToDatabaseColumn(ModuleType attribute) { | |
| 12 | + return attribute.getDicDesc(); | |
| 13 | + } | |
| 14 | + | |
| 15 | + @Override | |
| 16 | + public ModuleType convertToEntityAttribute(String dbData) { | |
| 17 | + return ModuleType.fromDicDesc(dbData); | |
| 18 | + } | |
| 19 | +} | ... | ... |
src/main/java/com/bsth/entity/schedule/log/convert/OperatorTypeConverter.java
0 → 100644
| 1 | +package com.bsth.entity.schedule.log.convert; | |
| 2 | + | |
| 3 | +import com.bsth.control_v2.plan_module.common.enums.log.OperatorType; | |
| 4 | + | |
| 5 | +import javax.persistence.AttributeConverter; | |
| 6 | +import javax.persistence.Convert; | |
| 7 | + | |
| 8 | +@Convert | |
| 9 | +public class OperatorTypeConverter implements AttributeConverter<OperatorType, String> { | |
| 10 | + @Override | |
| 11 | + public String convertToDatabaseColumn(OperatorType attribute) { | |
| 12 | + return attribute.getDicDesc(); | |
| 13 | + } | |
| 14 | + | |
| 15 | + @Override | |
| 16 | + public OperatorType convertToEntityAttribute(String dbData) { | |
| 17 | + return OperatorType.fromDicDesc(dbData); | |
| 18 | + } | |
| 19 | +} | ... | ... |
src/main/java/com/bsth/service/schedule/datatools/TTInfoDetailDataToolsImpl.java
| ... | ... | @@ -454,6 +454,19 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail |
| 454 | 454 | |
| 455 | 455 | StationRoute station1 = stationRouteService.findById(lpObjList.get(0).getStationRouteId1()); |
| 456 | 456 | StationRoute station2 = stationRouteService.findById(lpObjList.get(1).getStationRouteId2()); |
| 457 | + | |
| 458 | + // TODO | |
| 459 | + Map<String, Object> param = new HashMap<>(); | |
| 460 | + param.put("station.id_eq", null); | |
| 461 | + if (station1 == null) { | |
| 462 | + param.put("station.id_eq", lpObjList.get(0).getStationRouteId1()); | |
| 463 | + station1 = ((List<StationRoute>) stationRouteService.list(param)).get(0); | |
| 464 | + } | |
| 465 | + if (station2 == null) { | |
| 466 | + param.put("station.id_eq", lpObjList.get(0).getStationRouteId2()); | |
| 467 | + station2 = ((List<StationRoute>) stationRouteService.list(param)).get(0); | |
| 468 | + } | |
| 469 | + | |
| 457 | 470 | for (int i = 0; i < groupCount; i++) { |
| 458 | 471 | excelPoiOperator.createStringCell(wb, lpHeadRow, (short) (i * 2 + 1), station1.getStationName(), new Color(0x96b9d7)); |
| 459 | 472 | excelPoiOperator.createStringCell(wb, lpHeadRow, (short) (i * 2 + 2), station2.getStationName(), new Color(0x96b9d7)); |
| ... | ... | @@ -566,6 +579,19 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail |
| 566 | 579 | |
| 567 | 580 | StationRoute station1 = stationRouteService.findById(lpObjList.get(0).getStationRouteId1()); |
| 568 | 581 | StationRoute station2 = stationRouteService.findById(lpObjList.get(1).getStationRouteId2()); |
| 582 | + | |
| 583 | + // TODO | |
| 584 | + Map<String, Object> param = new HashMap<>(); | |
| 585 | + param.put("station.id_eq", null); | |
| 586 | + if (station1 == null) { | |
| 587 | + param.put("station.id_eq", lpObjList.get(0).getStationRouteId1()); | |
| 588 | + station1 = ((List<StationRoute>) stationRouteService.list(param)).get(0); | |
| 589 | + } | |
| 590 | + if (station2 == null) { | |
| 591 | + param.put("station.id_eq", lpObjList.get(0).getStationRouteId2()); | |
| 592 | + station2 = ((List<StationRoute>) stationRouteService.list(param)).get(0); | |
| 593 | + } | |
| 594 | + | |
| 569 | 595 | for (int i = 1; i <= groupCount; i++) { |
| 570 | 596 | excelPoiOperator.createStringCell(wb, lpHeadRow, (short) (i * 2 + 1), station1.getStationName(), new Color(0x96b9d7)); |
| 571 | 597 | excelPoiOperator.createStringCell(wb, lpHeadRow, (short) (i * 2 + 2), station2.getStationName(), new Color(0x96b9d7)); |
| ... | ... | @@ -644,7 +670,9 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail |
| 644 | 670 | cell.setCellValue(bcObj.getFcsj() + "X"); |
| 645 | 671 | } else { // 一个车次链 |
| 646 | 672 | cell = lpRow.getCell((short) (bcObj.getGroupNo() * 2 + bcObj.getGroupBcNo() + 3)); |
| 647 | - cell.setCellValue(bcObj.getFcsj() + "X"); | |
| 673 | + if (cell != null) { | |
| 674 | + cell.setCellValue(bcObj.getFcsj() + "X"); | |
| 675 | + } | |
| 648 | 676 | } |
| 649 | 677 | break; |
| 650 | 678 | case LC: | ... | ... |
src/main/java/com/bsth/service/schedule/log/ModuleOperatorDbAppender.java
0 → 100644
| 1 | +package com.bsth.service.schedule.log; | |
| 2 | + | |
| 3 | +import ch.qos.logback.classic.spi.ILoggingEvent; | |
| 4 | +import ch.qos.logback.core.db.DBAppenderBase; | |
| 5 | +import ch.qos.logback.core.db.DBHelper; | |
| 6 | +import com.bsth.control_v2.plan_module.common.exception.PlanModuleException; | |
| 7 | +import com.bsth.entity.schedule.log.ModuleOperatorLog; | |
| 8 | + | |
| 9 | +import java.lang.reflect.Method; | |
| 10 | +import java.sql.Connection; | |
| 11 | +import java.sql.Date; | |
| 12 | +import java.sql.PreparedStatement; | |
| 13 | + | |
| 14 | +/** | |
| 15 | + * 自定义模块业务操作日志logback自定义appender。 | |
| 16 | + */ | |
| 17 | +public class ModuleOperatorDbAppender extends DBAppenderBase<ILoggingEvent> { | |
| 18 | + /** JDBC3.0中的绑定表自增的主键值,获取result需要此方法 */ | |
| 19 | + protected static final Method GET_GENERATED_KEYS_METHOD; | |
| 20 | + /** 插入日志sql */ | |
| 21 | + protected static final String INSERT_SQL; | |
| 22 | + | |
| 23 | + @Override | |
| 24 | + public void start() { | |
| 25 | + super.start(); | |
| 26 | + } | |
| 27 | + | |
| 28 | + @Override | |
| 29 | + protected Method getGeneratedKeysMethod() { | |
| 30 | + return GET_GENERATED_KEYS_METHOD; | |
| 31 | + } | |
| 32 | + | |
| 33 | + @Override | |
| 34 | + protected String getInsertSQL() { | |
| 35 | + return INSERT_SQL; | |
| 36 | + } | |
| 37 | + | |
| 38 | + @Override | |
| 39 | + protected void subAppend(ILoggingEvent iLoggingEvent, Connection connection, PreparedStatement insertStatement) throws Throwable { | |
| 40 | + // 参数判定,第一个参数必须是ModuleOperatorLog,后续的参数最多取3个 | |
| 41 | + if (iLoggingEvent.getArgumentArray().length == 0) { | |
| 42 | + throw new PlanModuleException(iLoggingEvent.getLoggerName() + "日志参数必须大于1"); | |
| 43 | + } else { | |
| 44 | + Object arg1 = iLoggingEvent.getArgumentArray()[0]; | |
| 45 | + if (!(arg1 instanceof ModuleOperatorLog)) { | |
| 46 | + throw new PlanModuleException(iLoggingEvent.getLoggerName() + "日志第一个参数必须是ModuleOperatorLog类型"); | |
| 47 | + } else { | |
| 48 | + ModuleOperatorLog arg1_log = (ModuleOperatorLog) arg1; | |
| 49 | + // insertStatement设定ModuleOperatorLog关联数据 | |
| 50 | + insertStatement.setLong(1, iLoggingEvent.getTimeStamp()); | |
| 51 | + insertStatement.setString(2, arg1_log.getModuleType().getDicDesc()); | |
| 52 | + insertStatement.setString(3, arg1_log.getOperatorType().getDicDesc()); | |
| 53 | + insertStatement.setString(4, arg1_log.getModuleOperatorType().getDicDesc()); | |
| 54 | + insertStatement.setString(5, arg1_log.getMessage()); | |
| 55 | + insertStatement.setString(6, iLoggingEvent.getLevel().levelStr); | |
| 56 | + insertStatement.setDate(7, new Date(arg1_log.getOpStartTime().getTime())); | |
| 57 | + insertStatement.setDate(8, new Date(arg1_log.getOpEndTime().getTime())); | |
| 58 | + insertStatement.setString(9, arg1_log.getOpUserName()); | |
| 59 | + insertStatement.setString(10, arg1_log.getOpUserCode()); | |
| 60 | + insertStatement.setString(11, arg1_log.getOpEntityClass()); | |
| 61 | + insertStatement.setString(12, arg1_log.getOpBeforeJson()); | |
| 62 | + insertStatement.setString(13, arg1_log.getOpAfterJson()); | |
| 63 | + insertStatement.setString(14, ""); | |
| 64 | + insertStatement.setString(15, ""); | |
| 65 | + insertStatement.setString(16, ""); | |
| 66 | + | |
| 67 | + for (int i = 1; i < iLoggingEvent.getArgumentArray().length; i++) { | |
| 68 | + if (i == 1) { | |
| 69 | + insertStatement.setString(14, iLoggingEvent.getArgumentArray()[i].toString()); | |
| 70 | + } else if (i == 2) { | |
| 71 | + insertStatement.setString(15, iLoggingEvent.getArgumentArray()[i].toString()); | |
| 72 | + } else if (i == 3) { | |
| 73 | + insertStatement.setString(16, iLoggingEvent.getArgumentArray()[i].toString()); | |
| 74 | + } else { | |
| 75 | + break; | |
| 76 | + } | |
| 77 | + } | |
| 78 | + | |
| 79 | + int updateCount = insertStatement.executeUpdate(); | |
| 80 | + if (updateCount != 1) { | |
| 81 | + addWarn("Failed to insert loggingEvent"); | |
| 82 | + } | |
| 83 | + } | |
| 84 | + } | |
| 85 | + | |
| 86 | + } | |
| 87 | + | |
| 88 | + @Override | |
| 89 | + protected void secondarySubAppend(ILoggingEvent iLoggingEvent, Connection connection, long l) throws Throwable { | |
| 90 | + // TODO: | |
| 91 | + } | |
| 92 | + | |
| 93 | + @Override | |
| 94 | + public void append(ILoggingEvent eventObject) { | |
| 95 | + Connection connection = null; | |
| 96 | + PreparedStatement insertStatement = null; | |
| 97 | + try { | |
| 98 | + connection = this.connectionSource.getConnection(); | |
| 99 | + connection.setAutoCommit(false); | |
| 100 | + insertStatement = connection.prepareStatement(INSERT_SQL); | |
| 101 | + synchronized (this) { | |
| 102 | + subAppend(eventObject, connection, insertStatement); | |
| 103 | + } | |
| 104 | + // TODO:可能以后需要secondarySubAppend | |
| 105 | + | |
| 106 | + connection.commit(); | |
| 107 | + } catch (Throwable exp) { | |
| 108 | + exp.printStackTrace(); | |
| 109 | + this.addError("problem appending event", exp); | |
| 110 | + } finally { | |
| 111 | + DBHelper.closeStatement(insertStatement); | |
| 112 | + DBHelper.closeConnection(connection); | |
| 113 | + } | |
| 114 | + } | |
| 115 | + | |
| 116 | + static { | |
| 117 | + StringBuilder sql = new StringBuilder(); | |
| 118 | + sql.append("insert into bsth_c_s_op_log ("); | |
| 119 | + sql.append("timestmp, "); | |
| 120 | + sql.append("module_type, "); | |
| 121 | + sql.append("operator_type, "); | |
| 122 | + sql.append("module_operator_type, "); | |
| 123 | + sql.append("message, "); | |
| 124 | + sql.append("level_name, "); | |
| 125 | + sql.append("op_start_time, "); | |
| 126 | + sql.append("op_end_time, "); | |
| 127 | + sql.append("op_user_name, "); | |
| 128 | + sql.append("op_user_code, "); | |
| 129 | + sql.append("op_entity_class, "); | |
| 130 | + sql.append("op_before_json, "); | |
| 131 | + sql.append("op_after_json, "); | |
| 132 | + sql.append("opt_arg1, "); | |
| 133 | + sql.append("opt_arg2, "); | |
| 134 | + sql.append("opt_arg3) "); | |
| 135 | + sql.append(" values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); | |
| 136 | + INSERT_SQL = sql.toString(); | |
| 137 | + | |
| 138 | + Method getGeneratedKeysMethod; | |
| 139 | + try { | |
| 140 | + getGeneratedKeysMethod = PreparedStatement.class.getMethod("getGeneratedKeys", (Class[])null); | |
| 141 | + } catch (Exception exp) { | |
| 142 | + getGeneratedKeysMethod = null; | |
| 143 | + } | |
| 144 | + | |
| 145 | + GET_GENERATED_KEYS_METHOD = getGeneratedKeysMethod; | |
| 146 | + } | |
| 147 | +} | ... | ... |
src/main/java/com/bsth/service/schedule/log/PlanLogger.java
0 → 100644
| 1 | +package com.bsth.service.schedule.log; | |
| 2 | + | |
| 3 | +import com.bsth.control_v2.plan_module.common.dto.schedule.PlanInfoDto; | |
| 4 | +import com.bsth.control_v2.plan_module.common.enums.log.ModuleOperatorType; | |
| 5 | +import com.bsth.control_v2.plan_module.common.enums.log.ModuleType; | |
| 6 | +import com.bsth.control_v2.plan_module.common.enums.log.OperatorType; | |
| 7 | +import com.bsth.entity.schedule.SchedulePlan; | |
| 8 | +import com.bsth.entity.schedule.log.ModuleOperatorLog; | |
| 9 | +import org.slf4j.Logger; | |
| 10 | +import org.slf4j.LoggerFactory; | |
| 11 | +import org.springframework.stereotype.Service; | |
| 12 | + | |
| 13 | +import java.util.Date; | |
| 14 | + | |
| 15 | +/** | |
| 16 | + * 排班计划日志。 | |
| 17 | + */ | |
| 18 | +@Service | |
| 19 | +public class PlanLogger { | |
| 20 | + /** 日志记录器 */ | |
| 21 | + private static final Logger LOGGER = LoggerFactory.getLogger(PlanLogger.class); | |
| 22 | + | |
| 23 | + /** | |
| 24 | + * 生成排班计划日志。 | |
| 25 | + * @param startTime 操作开始时间 | |
| 26 | + * @param endTime 操作结束时间 | |
| 27 | + */ | |
| 28 | + public void createLog(Date startTime, Date endTime) { | |
| 29 | + ModuleOperatorLog moduleOperatorLog = new ModuleOperatorLog(); | |
| 30 | + moduleOperatorLog.setMessage("排班生成!"); | |
| 31 | + moduleOperatorLog.setModuleType(ModuleType.SCHEDULE); | |
| 32 | + moduleOperatorLog.setOperatorType(OperatorType.NEW); | |
| 33 | + moduleOperatorLog.setModuleOperatorType(ModuleOperatorType.SCHEDULE_NEW); | |
| 34 | + moduleOperatorLog.setOpStartTime(startTime); | |
| 35 | + moduleOperatorLog.setOpEndTime(endTime); | |
| 36 | + moduleOperatorLog.setOpUserName("root"); | |
| 37 | + moduleOperatorLog.setOpUserCode("root"); | |
| 38 | + moduleOperatorLog.setOpEntityClass(SchedulePlan.class.getName()); | |
| 39 | + moduleOperatorLog.setOpBeforeJson("{}"); | |
| 40 | + moduleOperatorLog.setOpAfterJson("{}"); | |
| 41 | + | |
| 42 | + // 如果需要opArg1,opArg2,opArg3,从第2个参数加起,如:LOGGER.info("", {moduleOperatorLog}, {opArg1}, {opArg2}) | |
| 43 | + LOGGER.info("排班计划生成日志:{}", moduleOperatorLog); | |
| 44 | + } | |
| 45 | + | |
| 46 | + /** | |
| 47 | + * 修改排班计划明细日志。 | |
| 48 | + * @param startTime 操作开始时间 | |
| 49 | + * @param beforeData 修改前数据 | |
| 50 | + * @param endTime 操作结束时间 | |
| 51 | + * @param afterData 修改后数据 | |
| 52 | + */ | |
| 53 | + public void modifyInfoLog(Date startTime, PlanInfoDto beforeData, Date endTime, PlanInfoDto afterData) { | |
| 54 | + // TODO: | |
| 55 | + } | |
| 56 | +} | ... | ... |
src/main/java/com/bsth/service/schedule/log/TimetableLogger.java
0 → 100644
| 1 | +package com.bsth.service.schedule.log; | |
| 2 | + | |
| 3 | +import com.bsth.control_v2.plan_module.common.dto.schedule.timetable.TTInfoDetailDto; | |
| 4 | +import com.bsth.control_v2.plan_module.common.dto.schedule.timetable.TTInfoDto; | |
| 5 | +import org.slf4j.Logger; | |
| 6 | +import org.slf4j.LoggerFactory; | |
| 7 | +import org.springframework.stereotype.Service; | |
| 8 | + | |
| 9 | +import java.util.Date; | |
| 10 | + | |
| 11 | +/** | |
| 12 | + * 时刻表日志。 | |
| 13 | + */ | |
| 14 | +@Service | |
| 15 | +public class TimetableLogger { | |
| 16 | + /** 日志记录器 */ | |
| 17 | + private static final Logger LOGGER = LoggerFactory.getLogger(TimetableLogger.class); | |
| 18 | + | |
| 19 | + /** | |
| 20 | + * 生成时刻表模版日志。 | |
| 21 | + * @param startTime 操作开始时间 | |
| 22 | + * @param endTime 操作结束时间 | |
| 23 | + */ | |
| 24 | + public void createTTLog(Date startTime, Date endTime) { | |
| 25 | + // TODO: | |
| 26 | + } | |
| 27 | + | |
| 28 | + /** | |
| 29 | + * 修改时刻表模版日志。 | |
| 30 | + * @param startTime 操作开始时间 | |
| 31 | + * @param beforeData 修改前数据 | |
| 32 | + * @param endTime 操作结束时间 | |
| 33 | + * @param afterData 修改后数据 | |
| 34 | + */ | |
| 35 | + public void modifyTTLog(Date startTime, TTInfoDto beforeData, Date endTime, TTInfoDto afterData) { | |
| 36 | + // TODO: | |
| 37 | + } | |
| 38 | + | |
| 39 | + /** | |
| 40 | + * 导入时刻表明细日志。 | |
| 41 | + * @param startTime 操作开始时间 | |
| 42 | + * @param endTime 操作结束时间 | |
| 43 | + */ | |
| 44 | + public void importTTDLog(Date startTime, Date endTime) { | |
| 45 | + // TODO:导入前备份一次,导入后备份一次,备份前后的id放入before和after中 | |
| 46 | + } | |
| 47 | + | |
| 48 | + /** | |
| 49 | + * 修改时刻表明细日志。 | |
| 50 | + * @param startTime 操作开始时间 | |
| 51 | + * @param beforeData 修改前数据 | |
| 52 | + * @param endTime 操作结束时间 | |
| 53 | + * @param afterData 修改后数据 | |
| 54 | + */ | |
| 55 | + public void modifyTTDLog(Date startTime, TTInfoDetailDto beforeData, Date endTime, TTInfoDetailDto afterData) { | |
| 56 | + // TODO: | |
| 57 | + } | |
| 58 | +} | ... | ... |
src/main/resources/fatso/start.js
| ... | ... | @@ -16,7 +16,7 @@ var platform = process.platform; |
| 16 | 16 | var iswin = platform == 'win32'; |
| 17 | 17 | var sp = platform == 'win32' ? '\\' : '/'; |
| 18 | 18 | //不参与的目录 |
| 19 | -var excludes = ['scheduleApp', 'trafficManage', 'control', 'permission' + sp + 'authorize_all', 'summary', 'history_sch', 'report' + sp + 'oil', 'base' + sp + 'geo_data_edit', 'base' + sp + 'carpark', 'forms', 'mforms', 'report', 'punctual', 'base' + sp + 'timesmodel'] | |
| 19 | +var excludes = ['scheduleApp', 'trafficManage', 'control', 'permission' + sp + 'authorize_all','permission' + sp + 'user', 'summary', 'history_sch', 'report' + sp + 'oil', 'base' + sp + 'geo_data_edit', 'base' + sp + 'carpark', 'forms', 'mforms', 'report', 'punctual', 'base' + sp + 'timesmodel'] | |
| 20 | 20 | , ep = new EventProxy() |
| 21 | 21 | , pName = 'bsth_control' |
| 22 | 22 | , path = process.cwd() | ... | ... |
src/main/resources/logback.xml
| ... | ... | @@ -160,6 +160,46 @@ |
| 160 | 160 | </logger> |
| 161 | 161 | |
| 162 | 162 | |
| 163 | + <!-- 时刻表,排班计划业务修改日志 --> | |
| 164 | + <!--<springProfile name="dev">--> | |
| 165 | + <!--<appender name="MYDB" class="com.bsth.service.schedule.log.ModuleOperatorDbAppender">--> | |
| 166 | + <!--<connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">--> | |
| 167 | + <!--<dataSource class="org.apache.commons.dbcp.BasicDataSource">--> | |
| 168 | + <!--<driverClassName>com.mysql.jdbc.Driver</driverClassName>--> | |
| 169 | + <!--<url>--> | |
| 170 | + <!--<![CDATA[--> | |
| 171 | + <!--jdbc:mysql://127.0.0.1/test_control?useUnicode=true&characterEncoding=utf-8&useSSL=false--> | |
| 172 | + <!--]]>--> | |
| 173 | + <!--</url>--> | |
| 174 | + <!--<username>root</username>--> | |
| 175 | + <!--<password></password>--> | |
| 176 | + <!--<testOnBorrow>true</testOnBorrow>--> | |
| 177 | + <!--<validationQuery>--> | |
| 178 | + <!--<![CDATA[--> | |
| 179 | + <!--SELECT 1--> | |
| 180 | + <!--]]>--> | |
| 181 | + <!--</validationQuery>--> | |
| 182 | + <!--</dataSource>--> | |
| 183 | + <!--</connectionSource>--> | |
| 184 | + <!--</appender>--> | |
| 185 | + <!--</springProfile>--> | |
| 186 | + | |
| 187 | + <!--<appender name="ASYNC_MYDB" class="ch.qos.logback.classic.AsyncAppender">--> | |
| 188 | + <!--<!– 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 –>--> | |
| 189 | + <!--<discardingThreshold >0</discardingThreshold>--> | |
| 190 | + <!--<!– 更改默认的队列的深度,该值会影响性能.默认值为256 –>--> | |
| 191 | + <!--<queueSize>512</queueSize>--> | |
| 192 | + <!--<!– 添加附加的appender,最多只能添加一个 –>--> | |
| 193 | + <!--<appender-ref ref ="MYDB"/>--> | |
| 194 | + <!--</appender>--> | |
| 195 | + | |
| 196 | + <!--<logger name="com.bsth.service.schedule.log.PlanLogger"--> | |
| 197 | + <!--level="INFO" additivity="false">--> | |
| 198 | + <!--<appender-ref ref="ASYNC_MYDB" />--> | |
| 199 | + <!--</logger>--> | |
| 200 | + | |
| 201 | + <!-- TODO --> | |
| 202 | + | |
| 163 | 203 | <!-- gps --> |
| 164 | 204 | <appender name="GPS_COUNT" |
| 165 | 205 | class="ch.qos.logback.core.rolling.RollingFileAppender"> | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/add-form-reload.js
src/main/resources/static/pages/base/timesmodel/js/gantt.js
| ... | ... | @@ -66,6 +66,8 @@ |
| 66 | 66 | CSMap = getMaxCarAndStopSpace0(map,seMap); |
| 67 | 67 | // 发车间隙 |
| 68 | 68 | map.fcjx = CSMap.fcjx; |
| 69 | + map.stt = "1"; | |
| 70 | + _paramObj = Main_v2.getFactory().createParameterObj(map, dataMap); | |
| 69 | 71 | }else if(map.baseRes== '1') { |
| 70 | 72 | CSMap = getMaxCarAndStopSpace1(map); |
| 71 | 73 | // 发车间隙 |
| ... | ... | @@ -144,7 +146,7 @@ |
| 144 | 146 | // // 初始化右键菜单. |
| 145 | 147 | // contextInit(graph); |
| 146 | 148 | |
| 147 | - if (map.baseRes == '3' || map.baseRes == '1') { | |
| 149 | + if (map.baseRes == '3' || map.baseRes == '1' || map.baseRes == '0') { | |
| 148 | 150 | // 导入导出设置 |
| 149 | 151 | // Main_v2_2.exportExcelConfig($_GlobalGraph.getDataArray); |
| 150 | 152 | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/v2_2/Main_v2_2_ExcelObj.js
| ... | ... | @@ -581,10 +581,10 @@ var Main_v2_2_ExcelObj = (function() { |
| 581 | 581 | "zdzid": oGanttBc.zdz, // 终点站id |
| 582 | 582 | |
| 583 | 583 | "isUp": bIsUp, // 是否上行 |
| 584 | - "isFb": null, // 是否分班(_resetBdOutInLcBcGroup方法修正) | |
| 584 | + "isFb": false, // 是否分班(_resetBdOutInLcBcGroup方法修正) | |
| 585 | 585 | |
| 586 | 586 | "bcType": oGanttBc.bcType, // 班次类型(bc、out、in、lc) |
| 587 | - "fcsj": oGanttBc.fcsj, // 发车时间描述 | |
| 587 | + "fcsj": (oGanttBc.fcsj == null ? "" : oGanttBc.fcsj), // 发车时间描述 | |
| 588 | 588 | |
| 589 | 589 | "groupNo": -99, // 第几圈(_resetBdOutInLcBcGroup方法修正) |
| 590 | 590 | "groupBcNo": -99, // 圈里第几个班次(_resetBdOutInLcBcGroup方法修正) | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/v2_2/main_v2_2.js
| ... | ... | @@ -43,7 +43,7 @@ var Main_v2_2 = function() { |
| 43 | 43 | schedule.fnAdjustHeadway(); |
| 44 | 44 | // 4、计算吃饭班次 |
| 45 | 45 | schedule.fnCalcuEatBc(); |
| 46 | - // // 6、计算末班车 | |
| 46 | + // // 6、计算末班车(TODO:这里家里末班车,貌似导出Excel会报错,待修正) | |
| 47 | 47 | // schedule.fnCalcuLastBc(); |
| 48 | 48 | // 7、重新设置停站时间 |
| 49 | 49 | schedule.fnReSetLayoverTime(); |
| ... | ... | @@ -64,8 +64,8 @@ var Main_v2_2 = function() { |
| 64 | 64 | * 导出时刻表配置。 |
| 65 | 65 | * @param fnGetGanttBc 获取gantt班次方法 |
| 66 | 66 | */ |
| 67 | - exportExcelConfig: function(fnGetGanttBc) { | |
| 68 | - var oExcel = new Main_v2_2_ExcelObj(_paramObj, fnGetGanttBc); | |
| 67 | + exportExcelConfig: function(paramobj, fnGetGanttBc) { | |
| 68 | + var oExcel = new Main_v2_2_ExcelObj(paramobj, fnGetGanttBc); | |
| 69 | 69 | |
| 70 | 70 | $('.exportAddXls').off('click'); |
| 71 | 71 | $('.exportAddXlsx').off('click'); | ... | ... |
src/main/resources/static/pages/home.html
| ... | ... | @@ -59,26 +59,40 @@ |
| 59 | 59 | } |
| 60 | 60 | </style> |
| 61 | 61 | <div class="system_change_log"> |
| 62 | - <h2 style="text-indent: 35px;margin: 10px 0 5px;">2018-08-23 更新说明 Changelog</h2> | |
| 62 | + <h2 style="text-indent: 35px;margin: 10px 0 5px;">2019-04-11 更新说明 Changelog</h2> | |
| 63 | 63 | <br><br> |
| 64 | 64 | <ul > |
| 65 | + <li class="sub_title"><h6>权限管理</h6></li> | |
| 66 | + <li><span class="label s_c_change">修复</span>1、编辑某一个员工,用户、角色和授权管理设置在同一界面。</li> | |
| 67 | + <li><span class="label s_c_change">新增</span>2、用户增加一项状态,显示主调、监控和作废。</li> | |
| 68 | + <li class="sub_title"><h6>线调</h6></li> | |
| 69 | + <li><span class="label s_c_change">新增</span>1、少量班次对换完成用颜色标记为已换。</li> | |
| 70 | + <li><span class="label s_c_change">新增</span>2、子任务可最小化。</li> | |
| 71 | + <li><span class="label s_c_change">修复</span>3、修正子任务一个备注栏原因选择后其他子任务都会同步备注此原因。</li> | |
| 72 | + <li><span class="label s_c_change">修复</span>4、轨迹回放只显示当前一段时间内的gps走向,已轨迹回放的走向自动不显示(只显示当前上下行的gps走向)。</li> | |
| 73 | + <li><span class="label s_c_change">修复</span>5、轨迹回放播放速度添加更多倍速播放可选。</li> | |
| 74 | + <li><span class="label s_c_change">新增</span>6、"线路配置"分割成"线路配置"、"翻班与自动执行",可独立授权。</li> | |
| 75 | + <li><span class="label s_c_change">新增</span>7、添加设置,选择是否显示应到实到误差时间。</li> | |
| 76 | + <li><span class="label s_c_change">修复</span>8、无发有到时间 为紫色完成状态,改为显眼颜色区分,用橙色区分。</li> | |
| 77 | + <li><span class="label s_c_change">修复</span>9、轨迹回放中根据时间点切换线路版本信息。</li> | |
| 78 | + <li><span class="label s_c_change">修复</span>10、路牌对调连续请求造成数据不一致,翻班时无法清楚前日的排班数据。</li> | |
| 65 | 79 | <li class="sub_title"><h6>计划调度</h6></li> |
| 66 | - <li><span class="label s_c_change">修复</span>1、添加新的排班验证规则,如果当天的时刻表有的路牌在排班数据中没有,提示错误。</li> | |
| 67 | - <li><span class="label s_c_change">修复</span>2、修改车辆(或人员)时,判定是否属于当前用户所属分公司中,不属于提示错误,允许继续保存。</li> | |
| 68 | - <li><span class="label s_c_change">修复</span>3、修改车辆时(或人员)时,判定是否属于当前用户所属公司中,不属于显示警告信息,不能保存。</li> | |
| 69 | - <li class="sub_title"><h6>运管处平台</h6></li> | |
| 70 | - <li><span class="label s_c_change">修复</span>1、上传时刻表时,记录时刻表对应的版本号以及该版本对应的历史站点路由信息。</li> | |
| 71 | - <li><span class="label s_c_change">修复</span>2、上传时刻表时,针对线路编码、时刻表执行时间、首末站点名称,首末站点序号这几个要素做出判断,不符合要求的要素做出相应的提示。</li> | |
| 80 | + <li><span class="label s_c_change">修复</span>1、车辆报废,释放设备编号后在设备管理里添加一条设备替换记录。</li> | |
| 81 | + <li><span class="label s_c_change">修复</span>2、线路值勤日报,修改班次时,跨线路修改班次车提示报警。</li> | |
| 82 | + <li><span class="label s_c_change">修复</span>3、增加公司,分公司查询条件,公司,分公司,线路都是跟登录用户权限的,导出的数据和查询条件一致。</li> | |
| 83 | + <li><span class="label s_c_change">修复</span>4、排班时,页面添加规则逻辑判定。</li> | |
| 84 | + <li><span class="label s_c_change">修复</span>5、车辆导出修正,导出内容和权限匹配,和搜索条件匹配。</li> | |
| 85 | + <li><span class="label s_c_change">新增</span>6、所有的页面搜索添加排序选项功能。</li> | |
| 86 | + <li><span class="label s_c_change">新增</span>7、新增计划排班预览功能。</li> | |
| 72 | 87 | <li class="sub_title"><h6>统计报表</h6></li> |
| 73 | - <li><span class="label s_c_change">修复</span>1、对集群调度系统“报表管理”中各类统计报表(只提供单线汇总统计的报表除外),增设线路性质区分统计功能选项,按“全部线路”、“营运线路”、“非营运线路”进行区分,且默认选项为“营运线路”)。</li> | |
| 74 | - <li><span class="label s_c_change">修复</span>2、对集群调度系统“报表管理”中各类统计报表(只提供单线汇总统计的报表除外),增设四家直属公司统计选项。</li> | |
| 75 | - <li><span class="label s_c_change">修复</span>3、在“营运线路出车率统计表”中,增加早高峰出车率统计项,计算公式:早高峰实际出车数/线路计划配车数。</li> | |
| 76 | - <li><span class="label s_c_change">修复</span>4、发车准点率中加入到站准点率,统计班次为首站发车为起点站的班次。</li> | |
| 77 | - <li><span class="label s_c_change">修复</span>5、统计日报调度日报烂班详细统计标准以“调度日报”为准。</li> | |
| 78 | - <li class="sub_title"><h6>线调</h6></li> | |
| 79 | - <li><span class="label s_c_change">修复</span>1、修正一个线调bug,这个bug导致部分套跑班车的车辆,一定几率会出现车载线路无法正常切换问题。</li> | |
| 88 | + <li><span class="label s_c_change">新增</span>1、新增早高峰出车报表。</li> | |
| 89 | + <li><span class="label s_c_change">新增</span>2、新增调度日报(待发对比) 报表。</li> | |
| 90 | + <li><span class="label s_c_change">新增</span>3、新增路单数据统计报表。</li> | |
| 91 | + <li><span class="label s_c_change">修复</span>4、修正班次车辆人员日报表中的售票员统计。</li> | |
| 80 | 92 | <li class="sub_title"><h6>基础信息</h6></li> |
| 81 | - <li><span class="label s_c_change">修复</span>1、车辆设备管理,只有新增,没有修改、作废,启用日期使用保存的时间。</li> | |
| 82 | - <li><span class="label s_c_change">修复</span>2、线路相关问题优化(站点缓冲区修改多边形中心点可拖动,可以修改为圆形、修改后定位、线路文件上传可填写版本)。</li> | |
| 93 | + <li><span class="label s_c_change">修复</span>1、线路版本:待更新状态增加删除功能,历史版本取消修改功能。</li> | |
| 94 | + <li><span class="label s_c_change">修复</span>2、线路信息-站点详情列-详情页面-站点修改功能:站点修改多边形功能修改,站点中心点可以移动。</li> | |
| 95 | + <li class="sub_title"><h6>用油管理</h6></li> | |
| 96 | + <li><span class="label s_c_change">修复</span>1、修正加油人员不符保存后不在显示。</li> | |
| 83 | 97 | </ul> |
| 84 | 98 | </div> | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lp_change.html
| ... | ... | @@ -389,21 +389,20 @@ |
| 389 | 389 | rightIdx = rightIdx.substr(0, rightIdx.length - 1); |
| 390 | 390 | |
| 391 | 391 | var type = $(this).data('type'); |
| 392 | + reLoadCurrPageData(); | |
| 392 | 393 | gb_common.$post('/realSchedule/lpChangeMulti', {leftIdx: leftIdx, rightIdx: rightIdx, type: type}, function (rs) { |
| 393 | 394 | console.log('rs', rs); |
| 394 | - debugger | |
| 395 | 395 | notify_succ("操作成功!!"); |
| 396 | 396 | if(rs.ts) |
| 397 | 397 | gb_schedule_table.updateSchedule(rs.ts); |
| 398 | 398 | |
| 399 | - reLoadCurrPageData(); | |
| 399 | + | |
| 400 | 400 | |
| 401 | 401 | }); |
| 402 | 402 | }); |
| 403 | 403 | |
| 404 | 404 | |
| 405 | 405 | function reLoadCurrPageData(){ |
| 406 | - debugger | |
| 407 | 406 | $('[name=lineSelect]', modal).each(function () { |
| 408 | 407 | var array = gb_common.get_vals(gb_schedule_table.findScheduleByLine($(this).val())).sort(gb_schedule_table.schedule_sort); |
| 409 | 408 | //按路牌分组 | ... | ... |